明做進一步詳細說明。
[0039] 本發(fā)明是一款可變長的多流出超長指令字結(jié)構(gòu)的高性能通用數(shù)字信號處理器 GPDSP,用于高性能計算,同時也適用于無線通信、視頻和圖像處理等。該GPDSP適用于64 位通用科學計算、同時具有嵌入式數(shù)字信號處理器基本特征的一種新型體系結(jié)構(gòu)的多核處 理器。它的優(yōu)點在于既保持了DSP的基本特征和高性能低功耗的優(yōu)勢,又高效地支持通用 科學計算,能夠克服一般DSP用于科學計算的一般問題,可以同時提供對64位高性能計算 機和嵌入式高精度信號處理的高效支持。
[0040] 如圖1所示,為本發(fā)明支持標向量協(xié)同工作的向量SM)運算結(jié)構(gòu)中內(nèi)核的整體結(jié) 構(gòu)。所述內(nèi)核采用哈佛結(jié)構(gòu),指令和數(shù)據(jù)分開存儲。本發(fā)明的結(jié)構(gòu)包括統(tǒng)一取指和指令派 發(fā)部件、標量處理單元SPU、向量處理單元VPU、向量陣列存儲器AM及DMA單元。其中:
[0041] 統(tǒng)一取指和指令派發(fā)部件,用來同時為標量處理單元SPU、向量處理單元VPU和向 量陣列存儲器AM派發(fā)指令;
[0042] 標量處理單元SPU,用來負責串行任務(wù)的處理,以及對向量處理單元VPU執(zhí)行的 控制;標量處理單元SPE由隊_個MAC單元和NSIEU個定點執(zhí)行單元:[EU組成,這NSI (NSI = Nsmac+Nsieu)條流水線并行執(zhí)行VLIW指令包中的NSI條標量指令,執(zhí)行科學應(yīng)用中的串行運 算;
[0043] 向量處理單元VPU,用來負責計算密集的并行任務(wù)處理;向量處理單元VPU由 NVPE(NVPE為2的冪次方)個同構(gòu)向量運算單元(VPE:VectorProcessingElement)構(gòu)成,在 統(tǒng)一的指令流控制下對不同數(shù)據(jù)執(zhí)行相同的操作;向量運算單元VPE包含NVMA/hMAC單元 和Nviel^定點執(zhí)行單元IEU,這NVI (NVI =NVMM+NVIEU)條流水線并行執(zhí)行VLIW指令包中的NVI 條向量指令,執(zhí)行科學應(yīng)用中的并行運算;
[0044] 向量陣列存儲器AM,用來為并行與多寬度的向量運算提供數(shù)據(jù)及搬移支持;
[0045]DMA單元,用來為標量處理單元SPU、向量處理單元VPU提供指令和數(shù)據(jù)。
[0046] 在具體應(yīng)用實例中,上述內(nèi)核采用可變長的NSI+NVI發(fā)射VLIW指令結(jié)構(gòu)(Very LargeInstructionWord,超長指令字),可同時取指和派發(fā)NSI條標量指令和NVI條向量指 令,這NSI+NVI條指令同時支持條件執(zhí)行、中斷和異常處理。
[0047] 指令Cache(InstructionCache:ICache)設(shè)計為2路組相聯(lián),采用讀分配策略 和最近最少使用的Cache行替換策略。ICache大小為64KB,命中時訪問時間為1個周期。 ICache根據(jù)取指和派發(fā)單元的請求通過EMI接口獲取指令包。
[0048] 在統(tǒng)一取指和指令派發(fā)部件當中,取指部件用來根據(jù)來自中斷處理部件、異常處 理部件、指令流控部件(分支地址)、ET部件發(fā)送的地址,產(chǎn)生新的地址。然后,根據(jù)全局控 制、分支部件的空操作信息以及DP部件的派發(fā)信息,控制取指流水線,進行指令派發(fā)控制。
[0049] 在統(tǒng)一取指和指令派發(fā)部件當中,派發(fā)部件用來接收來自取指部件和ICache的 指令包,對指令包中的指令按照并行標志位和功能單元類型域進行分析,將指令派發(fā)到相 應(yīng)的功能部件。
[0050] -個指令包1024位,一個周期內(nèi)可以并行執(zhí)行的指令構(gòu)成一個執(zhí)行包,一個指令 包可以包含多個執(zhí)行包。本發(fā)明支持80位和40位兩種指令格式,可最大同時取指和派發(fā) NSI條標量指令和NVI條向量指令,其中NSI條標量指令分別為2標量訪存指令和NSMAe+NSIEU條 SPU運算指令,NVI條向量指令分別為2條向量訪存指令和NVMAC+NVIEU條向量VPU運算指令。 這樣執(zhí)行包最大長度為11條,最小為1條,其中,最多有4條80位指令,并且80位指令位 于執(zhí)行包的頭部,40位指令緊隨其后。
[0051] 由于標量處理單元SPU和向量處理單元VPU的指令位于同一執(zhí)行包中,在統(tǒng)一取 值和指令派發(fā)部件控制下,以緊耦合方式共同協(xié)作完成計算任務(wù)。
[0052] 在具體應(yīng)用實例中,標量處理單元SPU的主要功能是完成標量數(shù)據(jù)的訪存、標量 數(shù)據(jù)的運算和流水線的分支跳轉(zhuǎn)以及中斷操作。SPU執(zhí)行應(yīng)用中的串行運算,同時對向量 單元運算進行控制,包括指令流控單元(SBR)、標量運算單元(ScalarProcessElement, SPE)、標量單元控制寄存器(SUCR)和標量訪存單元(SM)。SPE中包含NSIEl/h定點執(zhí)行單元 (IEU)和隊_個乘累加(MAC)運算單元,可同時執(zhí)行;標量訪存單元可以同時執(zhí)行兩條標量 訪存指令,從數(shù)據(jù)Cache中讀取兩個字的數(shù)據(jù)。
[0053] 本發(fā)明在SPU與VPU和AM之間各設(shè)計了一條64位的配置通路,通過MOV指令實 現(xiàn)對VPU和AM中的全局控制配置寄存器的訪問。
[0054] 在具體應(yīng)用實例中,如圖3所示,向量處理單元(VectorProcessUnit,VPU)是一 種可擴展向量運算簇結(jié)構(gòu),主要處理計算密集型的并行任務(wù),由NVPE個同構(gòu)的向量運算單元 (VectorProcessElement,VPE)組成,每個VPE均設(shè)計了NVMAe個向量乘加(MAC)運算單元 和NVIEUf定點算術(shù)單元(IEU),以支持大規(guī)模MAC并行計算。VPU采用向量SM)并行技術(shù)對 不同數(shù)據(jù)執(zhí)行相同的VLIW指令,從而實現(xiàn)應(yīng)用中的向量計算,可同時執(zhí)行Nvpe*(Nvmm+Nvieu) 個向量運算操作。
[0055] a)全局共享寄存器;
[0056] 本發(fā)明中的SPU和VPU之間可以通過全局共享寄存器實現(xiàn)數(shù)據(jù)交互,該交互機制 通過標量M0V指令和向量M0V指令完成。全局共享寄存器由NVPE個64位寄存器組成,VPU 以向量形式對其進行讀寫操作,而SPU是用標量的形式逐個進行讀寫。通過NVPE條標量M0V 指令將標量寄存器文件中的NVPE個數(shù)據(jù)(64位)寫入到SVR中,然后再通過1條向量MOV 指令將這NVPE個數(shù)據(jù)寫入到NVPE個VPE中寄存器文件的同一位置;或者相反,通過1條向量 M0V指令將NVPE個VPE中寄存器文件中的同一位置的NVPE個數(shù)據(jù)讀入到SVR中,然后再通過 NVPE條標量M0V指令將這NVPE個數(shù)據(jù)寫入到標量寄存器文件中。
[0057] b)標向量廣播;
[0058] 進一步,本發(fā)明在標向量協(xié)同工作運算結(jié)構(gòu)中,SPU和VPU之間還有兩條快速的標 量單元到向量單元的數(shù)據(jù)廣播傳遞機制,分別支持單字廣播指令和雙字廣播指令。1)單字 廣播指令:將SPU寄存器文件中的單字(64位)廣播到NVPE個VPE的向量寄存器中同一位 置。執(zhí)行的過程中需要對NVPE個VPE中的寄存器文件進行一次寫操作,完成64*NVPE位數(shù)據(jù) 的傳輸。2)雙字廣播指令:將SPU寄存器文件中的一對數(shù)據(jù)Src_〇:Src_e(雙字:128位) 廣播到NVPE個VPE中的寄存器文件中的Dst_o:Dst_e中,這里寄存器對使用偶數(shù)表示即VR0 代表VR1 :VR0。執(zhí)行的過程中只需要對NVPE個VPE中的寄存器文件進行一次寫操作,完成 128*NVPE位數(shù)據(jù)傳輸。兩條標向量廣播通路并行執(zhí)行雙字廣播操作能夠?qū)崿F(xiàn)256*NVPE位數(shù) 據(jù)的傳輸。
[0059] c)多寬度規(guī)約和混洗網(wǎng)絡(luò);
[0060] 進一步,本發(fā)明在向量運算單元之間設(shè)計了多寬度規(guī)約樹和混洗(Shuffle)網(wǎng)絡(luò) 來實現(xiàn)VPE寄存器文件之間的數(shù)據(jù)交互。規(guī)約樹可以將多個VPE的數(shù)據(jù)全部算術(shù)規(guī)約得 到一個標量結(jié)果,也可以進行分組規(guī)約得到多個標量結(jié)果,多寬度歸約操作將所有的NVPE個 VPE進行分組,每個分組歸約操作并行執(zhí)行,分組只支持平均分組,分組大小為2的整數(shù)次 冪。混洗網(wǎng)絡(luò)用于實現(xiàn)所有VPE上的數(shù)據(jù)重排,從而實現(xiàn)VPE之間的數(shù)據(jù)通信,給向量數(shù) 據(jù)處理帶來極大的靈活性,混洗網(wǎng)絡(luò)可以根據(jù)混洗粒度和混洗模式的不同對VPE之間的數(shù) 據(jù)進行混洗操作,歸約網(wǎng)絡(luò)將多個VPE中的數(shù)據(jù)通過多寬度規(guī)約方式規(guī)約到一個或者多個 VPE中。
[0061] d)向量數(shù)據(jù)訪問單元;
[0062] 進一步,本發(fā)明支持兩條向量load/store指令并行訪問操作,為NVPE個向量處理 單元提供較高的訪存帶寬。與VPU的數(shù)據(jù)帶寬是2*NVPE*8B/cycle。向量數(shù)據(jù)存儲體采用單 端口多存儲體組織結(jié)構(gòu),支持并行訪問;提供NVPE個專用的基址寄存器和地址偏移寄存器, 支持線性尋址和循環(huán)尋址兩種間接尋址模式。
[0063] 在本實施例中,VPU是一種可擴展向量運算簇結(jié)構(gòu)。VPU由NVPE個同構(gòu)向量運算單 元VPE構(gòu)成,這NVPE個VPE采用向量S頂D并行技術(shù)來提升性能。VPU接收派發(fā)部件派發(fā)的 向量運算類指令,譯碼后送到對應(yīng)的功能單元執(zhí)行。每個VPE內(nèi)包含64個64位的局部通 用寄存器R0~R63。
[0064] 如圖2和圖3所示,每個VPE內(nèi)部集成四個子功能部件,分別是化^個乘累加單元 (MAC)和Nviel^定點執(zhí)行單元(IEU),用于支持向量基礎(chǔ)的運算。VPE通過這Nvmm+Nviel^ 子功能部件的VLIW并行執(zhí)行來提升性能,每個部件對應(yīng)執(zhí)行VLIW指令包中的一條向量指 令,即VPE包括NVMM+NVIEU條可并行執(zhí)行的流水線。SPU和VPE中的各條操作執(zhí)行流水線均 采用子字S頂D技術(shù)實現(xiàn)64位和S頂D32位算法,進一步提高32位操作(如單精度浮點) 性能。
[0065] 每個MAC部件都是由定點MAC、浮點MAC和浮點ALU短指令單元三個單元構(gòu)成。其 中浮點MAC和定點MAC復用了一個64x64定點乘法器。浮點MAC單元、定點MAC單元、浮點 ALU短指令單元是擁有相同數(shù)據(jù)通路的獨立單