本發(fā)明涉及處理器內(nèi)核架構(gòu),具體涉及一種空間陣列式處理器內(nèi)核。
背景技術(shù):
1、運算單元是處理器內(nèi)核執(zhí)行運算的載體,合理組織運算單元是發(fā)揮處理器效能的關(guān)鍵,高算力處理器內(nèi)部集成了大量運算單元,如何讓這些運算單元以更高的頻率、更低的功耗高效運行是處理器內(nèi)核設(shè)計需要關(guān)注的問題。目前,主流的處理器內(nèi)核運算單元的組織形式包括兩類:向量處理器和數(shù)據(jù)流處理器,以下分別對這兩種處理器分析各自的優(yōu)缺點。
2、圖6為向量處理器內(nèi)核運算單元的組織形式示意圖,圖中alu(algorithm?logicalunit)表示算術(shù)邏輯運算單元,每個alu都是獨立的運算單元,源操作數(shù)和目的操作數(shù)都來自集中式寄存器堆,并受控于統(tǒng)一的控制邏輯,alu之間沒有數(shù)據(jù)交互。這種組織形式設(shè)計簡單,當運算單元數(shù)量較少時可以在較高的頻率下運行。這種組織形式的缺點在于運算單元規(guī)模受限,隨著運算單元數(shù)量增加,寄存器文件和控制邏輯規(guī)模線性增加,而寄存器文件是非常占用物理空間的存儲單元,無法線性增加規(guī)模;另一方面,集中式控制邏輯所能控制的運算單元數(shù)量也有限,隨著運算單元數(shù)量增加,控制邏輯的扇出數(shù)也在增加,這會降低處理器的運行頻率。
3、圖7為數(shù)據(jù)流處理器內(nèi)核運算單元的組織形式示意圖,其將集中式寄存器文件和控制邏輯打散,分布到每個alu內(nèi)部,這就解決了寄存器文件和控制邏輯物理規(guī)模受限的問題,相鄰alu之間通過手拉手的方式完成數(shù)據(jù)交互,靠近存儲器的一組alu訪問存儲器層次,并將訪問數(shù)據(jù)或者處理后數(shù)據(jù)向相鄰alu傳輸,實現(xiàn)數(shù)據(jù)流通信。這種組織形式解決了向量處理器集中式存儲與控制的問題,分布式寄存器和控制邏輯具有運算單元規(guī)??蓴U展的優(yōu)勢,但是alu互聯(lián)結(jié)構(gòu)單一,無法滿足靈活的數(shù)據(jù)通信需求,特別是數(shù)據(jù)廣播和匯聚等通信模式,進而降低算法的實際執(zhí)行效率。
技術(shù)實現(xiàn)思路
1、(一)解決的技術(shù)問題
2、針對現(xiàn)有技術(shù)所存在的上述缺點,本發(fā)明提供了一種空間陣列式處理器內(nèi)核,能夠有效克服現(xiàn)有技術(shù)所存在的算力擴展性較差、訪存效率較低的缺陷。
3、(二)技術(shù)方案
4、為實現(xiàn)以上目的,本發(fā)明通過以下技術(shù)方案予以實現(xiàn):
5、一種空間陣列式處理器內(nèi)核,包括運算陣列pe_array、算術(shù)邏輯陣列alu_array、寄存器文件reg、運算宏macro、數(shù)據(jù)存儲器dm和指令存儲器imem;
6、運算陣列pe_array,由運算單元pe按照空間維度進行排列組成的陣列;
7、算術(shù)邏輯陣列alu_array,由算術(shù)邏輯運算單元alu組成的陣列;
8、寄存器文件reg,用于運算陣列pe_array與數(shù)據(jù)存儲器dm,以及算術(shù)邏輯陣列alu_array與數(shù)據(jù)存儲器dm之間的通信;
9、運算宏macro,由運算陣列pe_array、算術(shù)邏輯陣列alu_array和寄存器文件reg組成,運算宏macro之間通過宏間數(shù)據(jù)傳輸通道形成一個環(huán)狀互聯(lián)結(jié)構(gòu);
10、數(shù)據(jù)存儲器dm,為每個運算宏macro私有的數(shù)據(jù)存儲空間;
11、指令存儲器imem,用于存放處理器內(nèi)核的執(zhí)行指令,由程序計數(shù)器驅(qū)動內(nèi)核取指模塊訪問指令存儲器imem,譯碼模塊完成指令譯碼,執(zhí)行模塊根據(jù)指令譯碼結(jié)果完成指令執(zhí)行任務(wù);
12、其中,運算陣列pe_array內(nèi)的運算單元pe之間通過mo廣播總線、mc廣播總線和acc規(guī)約總線進行數(shù)據(jù)通信。
13、優(yōu)選地,所述運算單元pe包括乘法器mul、加法器add、截位器cut、累加寄存器acc和本地緩存mo,所述運算單元pe利用本地緩存mo存儲數(shù)據(jù)或mo廣播總線傳輸過來的mo數(shù)據(jù)即可執(zhí)行運算,運算的中間結(jié)果緩存在累加寄存器acc,或者通過截位器cut截位后寫入本地緩存mo。
14、優(yōu)選地,所述mo廣播總線包括mo行廣播總線和mo列廣播總線,位于同一行的運算單元pe通過mo行廣播總線實現(xiàn)mo數(shù)據(jù)共享,位于同一列的運算單元pe通過mo列廣播總線實現(xiàn)mo數(shù)據(jù)共享;
15、所述mc廣播總線為位于同一行的運算單元pe共享一個系數(shù)存儲器mc,所述系數(shù)存儲器mc將mc數(shù)據(jù)廣播至同一行的運算單元pe;
16、所述acc規(guī)約總線為位于同一列的運算單元pe內(nèi)的累加寄存器acc通過互聯(lián)總線構(gòu)成一個規(guī)約樹,以完成同一列的運算單元pe內(nèi)累加寄存器acc的累加或累減運算。
17、優(yōu)選地,每個所述運算陣列pe_array由16*16,共256個運算單元pe按照空間維度進行排列組成;
18、所述運算宏macro包括第一運算宏x、第二運算宏y、第三運算宏z、第四運算宏t,處理器內(nèi)核包括4*16*16,共1024個運算單元pe;
19、所述數(shù)據(jù)存儲器dm包括第一數(shù)據(jù)存儲器dm1、第二數(shù)據(jù)存儲器dm2、第三數(shù)據(jù)存儲器dm3、第四數(shù)據(jù)存儲器dm4,分別為第一運算宏x、第二運算宏y、第三運算宏z、第四運算宏t私有的數(shù)據(jù)存儲空間。
20、優(yōu)選地,所述mo行廣播總線的位寬取決于同時參與行廣播的運算單元pe數(shù)量,每個所述運算陣列pe_array內(nèi)一行包含16個運算單元pe,同時參與行廣播的運算單元pe數(shù)量為4,每個所述運算單元pe將本地mo數(shù)據(jù)發(fā)送至4條廣播總線,同時從4條廣播總線中選擇1個廣播數(shù)據(jù)作為操作數(shù),因此每個所述運算單元pe在mo行廣播總線上是一個4發(fā)1收的結(jié)構(gòu);
21、所述mo列廣播總線的位寬取決于同時參與列廣播的運算單元pe數(shù)量,每個所述運算陣列pe_array內(nèi)一列包含16個運算單元pe,同時參與列廣播的運算單元pe數(shù)量為4,每個所述運算單元pe將本地mo數(shù)據(jù)發(fā)送至4條廣播總線,同時從這4條廣播總線中選擇1個廣播數(shù)據(jù)作為操作數(shù),因此每個所述運算單元pe在mo列廣播總線上也是一個4發(fā)1收的結(jié)構(gòu)。
22、優(yōu)選地,所述系數(shù)存儲器mc由4塊靜態(tài)隨機存儲單元sram組成,交錯編址;
23、其中,4塊靜態(tài)隨機存儲單元sram分別為mc_0、mc_1、mc_2、mc_3,mc_0內(nèi)部所有存儲地址均為模4為0的地址,mc_1內(nèi)部所有存儲地址均為模4為1的地址,mc_2內(nèi)部所有存儲地址均為模4為2的地址,mc_3內(nèi)部所有存儲地址均為模4為3的地址。
24、優(yōu)選地,所述系數(shù)存儲器mc包括基地址寄存器mb,系數(shù)存儲器mc尋址采用基地址寄存器mb+立即數(shù)方式,對于系數(shù)存儲器mc的訪問僅需指定立即數(shù),便會將基地址寄存器mb+立即數(shù)作為初始訪問地址,并連續(xù)訪問后續(xù)三個地址;
25、其中,基地址寄存器mb的位寬為log2(系數(shù)存儲器mc深度)。
26、優(yōu)選地,所述系數(shù)存儲器mc輸出的mc數(shù)據(jù)通過第一選擇器mux1傳輸至一條mc廣播總線上,同時通過第二選擇器mux2傳輸至另一條mc廣播總線上,同一行的運算單元pe均從這2條廣播總線上得到廣播數(shù)據(jù);
27、其中,第一選擇器mux1和第二選擇器mux2均為4選1數(shù)據(jù)選擇器。
28、優(yōu)選地,同一列的所述運算單元pe對應(yīng)的16個累加寄存器acc組成的規(guī)約樹上下對稱,上方8個累加寄存器acc與下方8個累加寄存器acc鏡像對稱,上方8個累加寄存器acc規(guī)約到的目標累加寄存器acc的序號為偶數(shù),下方8個累加寄存器acc規(guī)約到的目標累加寄存器acc的序號為奇數(shù),上方8個累加寄存器acc、下方8個累加寄存器acc的運算結(jié)果分別向序號最小、序號最大的累加寄存器acc聚集,有利于實現(xiàn)數(shù)據(jù)規(guī)約;
29、其中,規(guī)約樹的高度為log2(累加寄存器acc數(shù)量)。
30、(三)有益效果
31、與現(xiàn)有技術(shù)相比,本發(fā)明所提供的一種空間陣列式處理器內(nèi)核,具有以下有益效果:
32、1)能夠有效節(jié)省運算單元pe的訪存帶寬,各運算單元pe執(zhí)行運算所需的數(shù)據(jù)不再通過集中式寄存器堆,利用本地緩存mo存儲數(shù)據(jù)或mo廣播總線傳輸過來的mo數(shù)據(jù)即可執(zhí)行運算,運算的中間結(jié)果也無需寫回集中式寄存器堆,可以緩存在累加寄存器acc,或者截位后寫入本地緩存mo,在設(shè)計良好的算法中,各運算單元pe無需重復(fù)讀寫外部數(shù)據(jù)存儲器,所有運算均能夠基于片上本地緩存mo完成;
33、2)能夠有效擴展處理器算力,運算單元pe既是獨立運算單元,也能夠通過總線互聯(lián)構(gòu)成陣列結(jié)構(gòu),該陣列結(jié)構(gòu)可以根據(jù)算力需求進行擴展,并且多個運算陣列pe_array還可以通過空間維度進行擴展,構(gòu)成更高算力的處理器計算核心;
34、3)有利于設(shè)計和實現(xiàn),在具體實現(xiàn)過程中,根據(jù)物理實現(xiàn)約束條件,限定每個運算宏macro的設(shè)計規(guī)模,然后將所有運算宏macro按照一個硬核實現(xiàn),由于每個運算宏macro的內(nèi)部結(jié)構(gòu)一致,所以在硬件設(shè)計和物理實現(xiàn)時可以直接復(fù)制多份,形成多宏結(jié)構(gòu)。