李 濤, 劉應(yīng)天, 喬 虹
(西安郵電大學(xué) 電子工程學(xué)院, 陜西 西安 710121)
多態(tài)并行陣列機(jī)中處理單元的設(shè)計(jì)與實(shí)現(xiàn)
李 濤, 劉應(yīng)天, 喬 虹
(西安郵電大學(xué) 電子工程學(xué)院, 陜西 西安 710121)
針對新型多態(tài)并行陣列機(jī),設(shè)計(jì)一種專用處理單元。該處理單元采用四級流水線的超長指令字結(jié)構(gòu),指令系統(tǒng)采用無寄存器文件的直接尋址方式,加入獨(dú)有的阻塞-非阻塞模式和鄰接共享存儲實(shí)現(xiàn)分布式指令并行和流處理運(yùn)算,使用特殊指令完成PE間通信以及MIMD和SIMD的快速切換。實(shí)驗(yàn)結(jié)果表明,該處理單元能夠?qū)崿F(xiàn)運(yùn)算模式分區(qū)并發(fā)執(zhí)行和切換,工作最大頻率可達(dá)167MHz.。
陣列結(jié)構(gòu);處理單元;超長指令字;阻塞標(biāo)志;數(shù)據(jù)通信
在計(jì)算機(jī)圖形處理器(Graphic Processing Unit,GPU)[1]體系結(jié)構(gòu)發(fā)展的過程中,GPU從單純的通過固定流水線與定制的邏輯功能部件來加速圖形處理轉(zhuǎn)變?yōu)槔每删幊绦訹2],完成通用計(jì)算的陣列系統(tǒng)?,F(xiàn)代圖形處理架構(gòu)大致可以歸類為單指令多線程架構(gòu)(Single Instrution Multiple Threads,SIMT)和單指令多數(shù)據(jù)架構(gòu)(Single Instruction Multiple Data,SIMD)兩種[3]。英偉達(dá)公司采用的SIMT架構(gòu)性能相對較高,編譯器設(shè)計(jì)復(fù)雜度相對較低,但是由于圖形處理指令在執(zhí)行之前需拆分成純標(biāo)量指令,所以其流處理器(Stream Processor)的設(shè)計(jì)相對較復(fù)雜,導(dǎo)致擴(kuò)展性較差;而AMD公司采用的SIMD架構(gòu),性能相對較低,擴(kuò)展性較好[4]。
針對上述問題,一種新型多態(tài)并行陣列眾核處理器(Polymorphic Array Architecture for Graphics and Image Processing,PAAG)[5]被提出。通過自身架構(gòu)下的處理單元(Processing Element, PE)實(shí)現(xiàn)多指令多數(shù)據(jù)(Multiple Instruction Multiple Data,MIMD)操作,通過多個處理單元和控制器聯(lián)合實(shí)現(xiàn)SIMD操作,通過處理單元與相配套的線程管理器(Thread Manager, TM)實(shí)現(xiàn)線程運(yùn)算粒度可控,提高擴(kuò)展性,通過處理單元的通信機(jī)制實(shí)現(xiàn)靜態(tài)和動態(tài)數(shù)據(jù)流計(jì)算,并且嘗試在陣列機(jī)上實(shí)現(xiàn)多種模式分區(qū)并發(fā)和快速轉(zhuǎn)換,同時在性能上盡量接近專用集成電路(Application Specific Integrated Circuit, ASIC)。
本文擬根據(jù)PAAG的體系結(jié)構(gòu)和模式需求,為其設(shè)計(jì)專用的處理單元。該處理單元采用超長指令字結(jié)構(gòu),設(shè)計(jì)特殊指令用于MIMD和SIMD模式的切換,通過硬件線程管理器控制運(yùn)算粒度粗細(xì),使用共享存儲和路由器實(shí)現(xiàn)近鄰和遠(yuǎn)程通信機(jī)制,另外,采用特有的阻塞和非阻塞模式控制數(shù)據(jù)流動。最后,對硬件電路進(jìn)行功能仿真和綜合驗(yàn)證。
PAAG是由多個簇(Cluster)和特定功能單元連接構(gòu)成的。完整的PAAG系統(tǒng)包括1個前端的處理器(FEP)、4個F簇(F Cluster0~3)、4個S簇(S Cluster0~3)、多個專用加速單元、外部存儲器片上互聯(lián)及片上緩存,其中F簇處理浮點(diǎn)運(yùn)算和定點(diǎn)運(yùn)算,S簇處理定點(diǎn)運(yùn)算,系統(tǒng)整體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)整體結(jié)構(gòu)
1個簇(Cluster)是由16個PE互聯(lián)構(gòu)成的4×4二維陣列,既可以平面結(jié)構(gòu)展開,也可以分層次展開。簇中還包含1個簇控制器(Cluster)、4個行控制器(Row Controller, CR)和4個列控制器(Column Controllor, CC)[6]。簇控制器管理整個簇的運(yùn)行,行控制器管理所在行的4個PE的SIMD運(yùn)算,列控制器管理對應(yīng)列存儲,簇的基本結(jié)構(gòu)如圖2所示。
圖2 簇的基本結(jié)構(gòu)
PAAG有4種運(yùn)行模式:MIMD運(yùn)行模式、SIMD運(yùn)行模式、分布式指令并行模式及流處理運(yùn)行模式。
(1) MIMD運(yùn)行模式
MIMD運(yùn)行模式是PAAG的基本運(yùn)行模式。一個程序被劃分成多個基本任務(wù),并分配到不同的PE上分別執(zhí)行。任務(wù)之間如果需要傳遞計(jì)算結(jié)果,可以通過鄰接共享存儲或者路由器傳遞。
(2) SIMD運(yùn)行模式
SIMD運(yùn)行模式適合做數(shù)據(jù)并行計(jì)算。圖形圖像處理的運(yùn)算對象通常為4維向量,用一行PE就可以完成該運(yùn)算,如果需要做4維以上16維以下運(yùn)算,可以用4~16數(shù)量PE做相應(yīng)SIMD運(yùn)算。
(3) 分布式指令級并行計(jì)算模式
分布式指令級并行計(jì)算的基礎(chǔ)是數(shù)據(jù)流計(jì)算。PAAG采用計(jì)算結(jié)果直接鏈接的方法,無需使用寄存器重命名,這與數(shù)據(jù)驅(qū)動數(shù)據(jù)流的形式是一致的。
(4) 流處理運(yùn)行模式
PAAG的流處理模式與典型的流水線類似,每個PE處理的顆粒粗細(xì)程度可以按照性能需求進(jìn)行調(diào)整和配置。每個PE相當(dāng)于一級流水線,重復(fù)執(zhí)行分配的任務(wù),并將結(jié)果通過鄰接共享存儲傳遞到其它PE。
若要支持PAAG實(shí)現(xiàn)上述運(yùn)行模式,PE本身需要能夠執(zhí)行MIMD和SIMD運(yùn)算,各線程指令粒度的粗細(xì)需要可配置并且線程間能夠進(jìn)行快速切換,更需要一個合適的數(shù)據(jù)傳遞機(jī)制[7]進(jìn)行數(shù)據(jù)通信。
每個處理單元配有1個線程管理器(Thread Manager, TM)[8],1個路由器(Router Unit, RU)[9],以及與東(E)/西(W)/南(S)/北(N)4個鄰接PE相連接的鄰接共享存儲(Me, Mw, Ms, Mn)。PE除了負(fù)責(zé)算術(shù)邏輯運(yùn)算外,還要通過線程管理器實(shí)現(xiàn)8個線程的上下文切換,利用路由器和鄰接共享存儲實(shí)現(xiàn)PE間的數(shù)據(jù)通信,結(jié)構(gòu)如圖3所示。
采用超長指令字結(jié)構(gòu)(Very Long Instruction Word, VLIW),每個時鐘取兩條指令進(jìn)行處理,不同的兩條指令進(jìn)入兩個獨(dú)立的執(zhí)行單元,發(fā)揮指令并行的特點(diǎn)。在MIMD模式下,PE執(zhí)行來自本地指令存儲的指令。采用沒有寄存器文件的存儲訪問方式對本地數(shù)據(jù)存儲進(jìn)行訪問,且設(shè)計(jì)有直接尋址的鄰接共享存儲器和片內(nèi)數(shù)據(jù)存儲器兩種存取模式。在SIMD模式下,PE執(zhí)行來自簇控制器和行控制器的SIMD指令,數(shù)據(jù)來自本地存儲或鄰接共享存儲。指令讀寫屏蔽寄存器控制當(dāng)前PE是否執(zhí)行SIMD指令。
圖3 處理單元及周邊結(jié)構(gòu)
一個PE有8個線程,當(dāng)前某個線程暫停時,TM根據(jù)PE所處狀態(tài)控制線程切換,執(zhí)行其他線程指令。若原線程可以繼續(xù)執(zhí)行,線程管理器記錄當(dāng)前所處線程狀態(tài),切換回原線程。PE通過線程管理器的線程切換減少執(zhí)行流水線空閑時間。
數(shù)據(jù)通信機(jī)制分近鄰?fù)ㄐ藕瓦h(yuǎn)程通信兩種。近鄰?fù)ㄐ攀潜镜豍E與東/西/南/北4個鄰接PE通過鄰接共享存儲實(shí)現(xiàn)的數(shù)據(jù)通信方式。每個線程都在鄰接共享存儲中占有一個存儲位置,可以直接尋址進(jìn)行存取。共享存儲存取有兩種模式。
(1) 阻塞模式(線程間同步)
每個共享存儲地址都有一位數(shù)據(jù)有效標(biāo)志。讀數(shù)據(jù)時,如果標(biāo)志無效,則當(dāng)前線程發(fā)生阻塞;如果標(biāo)志有效,則取走數(shù)據(jù),并將有效標(biāo)志置于無效。寫入數(shù)據(jù)時,標(biāo)志無效則直接寫入,標(biāo)志有效則等待其變?yōu)闊o效后再寫入。
(2)非阻塞模式(線程間異步)
在讀取或?qū)懭霐?shù)據(jù)時,忽略有效標(biāo)志狀態(tài),直接進(jìn)行讀寫。
遠(yuǎn)程通信是本地PE與非臨近PE或列存儲之間的數(shù)據(jù)交互方式。本地PE解析路由指令后,將控制信息和數(shù)據(jù)打成包發(fā)送至路由器,路由器根據(jù)包控制信息將數(shù)據(jù)包發(fā)送到目標(biāo)PE。路由器允許數(shù)據(jù)多播,可以實(shí)現(xiàn)數(shù)據(jù)流的多目標(biāo)扇出。路由器處理的信息包括MOVET/MOVEF(PE之間遠(yuǎn)程信息傳遞),MVT/MVF(PE與列控制器之間的遠(yuǎn)程信息傳遞),CALLR/RETR(遠(yuǎn)程函數(shù)調(diào)用)和CALLC/RETC(調(diào)用其他PE實(shí)現(xiàn)SIMD操作)。
3.1 指令集結(jié)構(gòu)
采用指令雙發(fā)射機(jī)制,兩條指令的結(jié)構(gòu)完全相同,單個指令結(jié)構(gòu)如圖4所示。指令采取直接存儲尋址的方式,指令中加入阻塞標(biāo)志,操作數(shù)分為直接尋址操作數(shù)和立即數(shù)兩種,每條指令通常包含3個操作數(shù)。
圖4 指令結(jié)構(gòu)
指令最高位為阻塞標(biāo)志位,操作碼占6位,目的操作數(shù)和源操作數(shù)A各占11位,源操作數(shù)B占16位,可以是操作數(shù)地址,也可以是立即數(shù)。尋址空間在2K范圍內(nèi),對于細(xì)粒度和中等粒度并行計(jì)算,該范圍滿足要求。指令包括以下7種類型。
(1) 定點(diǎn)算數(shù)與邏輯指令:定點(diǎn)算數(shù)包括加、減、乘、除,邏輯指令包括與、或、異或、移位等。這兩類指令的操作數(shù)包括正整數(shù)和帶符號的定點(diǎn)數(shù)兩種。
(2) 定點(diǎn)比較與轉(zhuǎn)移指令:根據(jù)比較后的結(jié)果判斷是否需要轉(zhuǎn)移控制流。
(3) 浮點(diǎn)算數(shù)指令:包括加、減、乘、除,操作數(shù)都是浮點(diǎn)數(shù)。
(4) 浮點(diǎn)比較與轉(zhuǎn)移指令:根據(jù)比較后的結(jié)果判斷是否需要轉(zhuǎn)移控制流。
(5) 跳轉(zhuǎn)與函數(shù)調(diào)用指令:可以實(shí)現(xiàn)無條件跳轉(zhuǎn)、函數(shù)調(diào)用、函數(shù)返回以及遠(yuǎn)程調(diào)用等。
(6) SIMD屏蔽與上下文切換指令:用于SIMD模式的屏蔽操作和上下文堆棧操作。
(7) 遠(yuǎn)程路由指令:用于路由器遠(yuǎn)程傳輸數(shù)據(jù)等操作。
3.2 功能劃分
處理單元在設(shè)計(jì)上包含指令預(yù)取、譯碼訪存、執(zhí)行、回寫4個大的流水級[10]。指令預(yù)取每次可以取出一條超長指令字指令(包含兩條單指令字),再由譯碼進(jìn)行解析并產(chǎn)生訪存控制信號。讀取的數(shù)據(jù)經(jīng)過多路分配邏輯分送到相應(yīng)的執(zhí)行單元進(jìn)行運(yùn)算,最后由地址流水單元控制來自執(zhí)行級運(yùn)算結(jié)果的寫回操作。處理單元內(nèi)部結(jié)構(gòu)如圖5所示,該圖描繪了處理單元所包含的功能模塊和內(nèi)部的數(shù)據(jù)流向。
圖5 處理單元內(nèi)部結(jié)構(gòu)
從功能上看,處理單元分為指令存儲(imem)、指令預(yù)取單元(ifetch)、譯碼單元(decoder)、執(zhí)行管線、地址流水線單元(addrpipeline)、數(shù)據(jù)存儲(dmem)等模塊[11]。
(1) 指令存儲用于存放指令流,8個線程的指令存放在2個指令存儲塊(Bank)中。每個線程指令存儲深度為1K,寬度為90位的雙指令字。不同線程的指令地址通過指令基址加偏移地址區(qū)分。
(2) 指令預(yù)取主要包含取指控制、指令字緩沖(ififo)和指令PC緩沖(pcfifo),控制PC的自加、跳轉(zhuǎn)、清空操作以及指令的讀取。
(3) 譯碼單元對指令操作碼進(jìn)行解析,產(chǎn)生對數(shù)據(jù)流的控制信號;提取指令操作數(shù),產(chǎn)生訪存地址、立即數(shù)和PC值;比較源訪存地址和目的訪存地址,判斷前饋數(shù)據(jù)是否命中;根據(jù)阻塞標(biāo)志和讀寫地址判斷是否出現(xiàn)阻塞狀態(tài)并報告阻塞信息。
(4) 執(zhí)行管線包含定點(diǎn)算術(shù)邏輯單元(Arithmetic Logical Unit, ALU)、定點(diǎn)乘、定點(diǎn)除、浮點(diǎn)ALU、浮點(diǎn)乘、浮點(diǎn)除和浮點(diǎn)前向單元共7個并行執(zhí)行單元。
(5) 地址流水線主要產(chǎn)生和執(zhí)行級數(shù)據(jù)同步的寫地址和使能,控制數(shù)據(jù)向存儲回寫以及數(shù)據(jù)的互連通信。
(6) 數(shù)據(jù)存儲負(fù)責(zé)響應(yīng)譯碼控制單元和地址流水單元對數(shù)據(jù)的讀寫控制,還要處理從頂層互連接口寫入的數(shù)據(jù)。數(shù)據(jù)存儲結(jié)構(gòu)采用分塊(interleaved)結(jié)構(gòu),分為4個Bank,兩條指令可以同時訪問不在同一個Bank的數(shù)據(jù),降低了數(shù)據(jù)存取的地址沖突。每個Bank根據(jù)線程個數(shù)又被分為8個區(qū)域,每個線程的數(shù)據(jù)在數(shù)據(jù)塊中占據(jù)2K存儲空間。
3.3 模塊實(shí)現(xiàn)
指令預(yù)取單元連接指令存儲和譯碼單元,如圖6所示。該單元接收線程啟動信號和初始化程序計(jì)數(shù)器(Program Counter,PC)后,產(chǎn)生讀使能,計(jì)算指令地址并發(fā)送到指令存儲。指令存儲的每個地址存有一條雙指令字,根據(jù)使能信號和地址將對應(yīng)雙指令字壓入指令緩沖。另外,指令預(yù)取響應(yīng)譯碼單元的讀FIFO(First In First Out)請求,并在請求信號的下一個時鐘彈出指令和同步PC值。發(fā)生轉(zhuǎn)移或跳轉(zhuǎn)時,指令預(yù)取要對ififo和pcfifo模塊的內(nèi)容進(jìn)行清空,并將發(fā)送給譯碼單元的FIFO空信號置高,重新接收新的PC值。
圖6 指令預(yù)取
譯碼單元連接指令預(yù)取、數(shù)據(jù)存儲、執(zhí)行單元及地址流水,完成指令彈出、指令解析、訪存控制、阻塞判斷以及數(shù)據(jù)分配等工作。按照職責(zé)的不同進(jìn)行劃分,譯碼單元又細(xì)分為指令解析、PC控制、阻塞處理及輸出控制4個功能模塊,如圖7所示。另外,譯碼單元可在一個時鐘內(nèi)同時對兩條指令進(jìn)行處理。
圖7 譯碼單元
(1)指令解析模塊產(chǎn)生指令彈出和數(shù)據(jù)流的控制信號。對于指令彈出使能信號,由于讀取指令后沒有對指令進(jìn)行一級緩存,而是直接進(jìn)行組合邏輯譯碼,因此,在發(fā)生數(shù)據(jù)阻塞、跳轉(zhuǎn)以及線程終止時,該使能信號都會及時發(fā)生變化,控制下一條指令彈出。讀數(shù)據(jù)使能根據(jù)每條指令的情況作詳細(xì)處理,比如ADD加法操作含有兩個源操作數(shù),則兩個操作數(shù)的讀使能均置為有效。訪問數(shù)據(jù)存儲時,最大可同時進(jìn)行四路數(shù)據(jù)的訪問,兩條單指令字最多含四個不同地址的源操作數(shù)。分配邏輯將待處理的信息分送到不同的執(zhí)行單元,信息包括待分配數(shù)據(jù)和分配控制信號,待分配數(shù)據(jù)來自指令立即數(shù)、訪存數(shù)據(jù)和前饋數(shù)據(jù)。
(2)PC控制模塊通過解析的控制信號對指令流進(jìn)行處理。設(shè)計(jì)的指令集中跳轉(zhuǎn)指令有直接跳轉(zhuǎn)和比較跳轉(zhuǎn)兩種。直接跳轉(zhuǎn)分為絕對跳轉(zhuǎn)指令JMPA和相對跳轉(zhuǎn)指令JMPR,比較跳轉(zhuǎn)指令如整數(shù)比較跳轉(zhuǎn)BEQ,浮點(diǎn)比較跳轉(zhuǎn)EQF等。對于直接跳轉(zhuǎn)指令,譯碼單元直接進(jìn)行解析、計(jì)算,并將跳轉(zhuǎn)有效信號和跳轉(zhuǎn)地址發(fā)送到指令預(yù)取單元;對于比較跳轉(zhuǎn)指令,通過控制信號將讀出的操作數(shù)送入執(zhí)行單元,暫停流水線,等待比較結(jié)果,再根據(jù)比較結(jié)果反饋的跳轉(zhuǎn)信息發(fā)送至指令預(yù)取單元。
(3)阻塞處理模塊專門用于解決指令中遇到的阻塞問題。判斷指令是否發(fā)生阻塞,不僅要看指令的標(biāo)志位是否為高,還要看讀寫地址是否為阻塞通信地址。對PE的每個線程的存儲地址進(jìn)行統(tǒng)一編制,設(shè)定0~7為近鄰?fù)ㄐ诺刂?,該線程指令若發(fā)生阻塞,讀寫地址一定在0~7范圍內(nèi)。
發(fā)生讀阻塞時,指令阻塞標(biāo)志為高,兩個源操作數(shù)中某個操作數(shù)的讀地址為近鄰?fù)ㄐ诺刂罚冶镜氐慕徆蚕泶鎯?yīng)地址沒有被寫入數(shù)據(jù);發(fā)生寫阻塞時,指令阻塞標(biāo)志為高,目的操作數(shù)的寫地址為近鄰?fù)ㄐ诺刂罚夷繕?biāo)近鄰共享存儲對應(yīng)地址已經(jīng)被寫入數(shù)據(jù)。當(dāng)發(fā)生讀阻塞、寫阻塞時,記錄此時PC值、阻塞類型,產(chǎn)生指令字掩碼并提交給線程管理器。
(4)輸出控制模塊負(fù)責(zé)將前面階段處理得出源操作數(shù)和符號標(biāo)志發(fā)送至執(zhí)行管線,將目標(biāo)地址、操作碼和阻塞標(biāo)志發(fā)送至地址流水單元。
地址流水線單元保存了每次發(fā)射的雙指令字中的目的地址,并送入寄存器級聯(lián)流水線中進(jìn)行流水,以此來實(shí)現(xiàn)和運(yùn)算單元的數(shù)據(jù)同步。最后將運(yùn)算單元送來的結(jié)果和目的地址匹配分組并送到數(shù)據(jù)存儲提交。在進(jìn)行通信時,地址流水線需要根據(jù)通信地址將運(yùn)算結(jié)果寫入相應(yīng)的通信接口寄存器。
從圖8地址流水線結(jié)構(gòu)上看,地址流水線的輸入包括兩路目的地址值、兩路操作碼以及執(zhí)行級的七路運(yùn)算結(jié)果。輸出主要包括四路送往數(shù)據(jù)存儲的數(shù)據(jù),它們分別寫進(jìn)存儲中不同的bank。其中操作碼用于產(chǎn)生選擇信號,由選擇信號可以確定運(yùn)算結(jié)果和目的地址之間的對應(yīng)關(guān)系。將選擇出來的結(jié)果和目的地址組合在一起,就可以送往數(shù)據(jù)存儲和前饋邏輯。由于存儲中只含有4個bank,所以每次最多允許四路數(shù)據(jù)同時回寫。對于訪存時可能存在的結(jié)構(gòu)冒險,比如回寫數(shù)據(jù)多于四路,或者多路數(shù)據(jù)同時寫一個bank,需要通過軟件調(diào)度避免此種情況發(fā)生。
圖8 地址流水線
4.1 仿真測試
采用System Verilog語言搭建了包含處理單元、路由器、簇控制器和行列控制器在內(nèi)的整體仿真平臺,使用Modelsim SE 10.1進(jìn)行仿真測試。
(1)PE的MIMD/SIMD指令測試:選擇PE00作為測試目標(biāo),測試內(nèi)容包括基本的MIMD/SIMD指令執(zhí)行、源操作數(shù)讀取、目的操作數(shù)寫入。
從圖9波形中可以看出PE00指令指針跳轉(zhuǎn)正常,讀取指令正確,能夠正確讀取源操作數(shù)和寫入目的操作數(shù),從而能夠正常執(zhí)行MIMD或SIMD指令。
圖9 基本指令測試仿真時序圖
(2)PAAG中PE間的近鄰?fù)ㄐ艤y試:陣列中,設(shè)定PE10為本地PE,北邊接PE06,西邊接PE09,東邊接PE11,南邊接PE14。測試近鄰?fù)ㄐ诺臄?shù)據(jù)通路結(jié)果如圖10所示。
圖10 近鄰?fù)ㄐ欧抡鏁r序圖
從波形中可以看出PE06的vld2south_ch0信號為高有效,PE09的vld2west_ch0信號為高有效,PE11的vld2east_ch0信號為高有效,PE14的vld2north_ch0信號為高有效,這說明與PE10相鄰的四個PE分別向PE10成功發(fā)送數(shù)據(jù)。而且PE10執(zhí)行乘法運(yùn)算,相乘的結(jié)果39和609分別寫回至地址20和22。近鄰?fù)ㄐ殴δ苷_,確保數(shù)據(jù)流可以在PE間通過數(shù)據(jù)驅(qū)動,計(jì)算結(jié)果可鏈接,為分布式并行計(jì)算和流處理計(jì)算提供良好的數(shù)據(jù)通道。
(3)PAAG中PE間遠(yuǎn)程通信測試:陣列中,設(shè)定PE00為本地PE,測試調(diào)用遠(yuǎn)程PE10函數(shù)執(zhí)行指令并將數(shù)據(jù)返回的通路,結(jié)果如圖11所示。
圖11 遠(yuǎn)程通信仿真時序圖
從波形中可以看出本地PE00向遠(yuǎn)程PE10發(fā)送遠(yuǎn)程函數(shù)調(diào)用CALLR請求,當(dāng)PE10執(zhí)行完后,給PE00返回RETR數(shù)據(jù)包,內(nèi)容包含數(shù)據(jù)來源和運(yùn)算結(jié)果。特殊指令測試證明PE解析特殊指令正確,且能夠利用路由器進(jìn)行遠(yuǎn)程數(shù)據(jù)通信。
4.2 性能統(tǒng)計(jì)
使用ISE14.4工具,以Virtex7-2000T芯片為目標(biāo)器件,對處理單元電路進(jìn)行邏輯綜合,綜合報告如表1所示,占用了1%的查找表(Look Up Table, LUT)、1%的片寄存器(Slice Registers)、3%存儲(Memory)和1%數(shù)字信號處理單元(Digital Signal Processor, DSP)。
表1 PE資源利用情況
電路運(yùn)行最大工作頻率為167MHz,資源消耗適中。
設(shè)計(jì)了一種基于PAAG的體系結(jié)構(gòu)的專用處理單元。該處理單元采用四級流水線的雙發(fā)射指令字結(jié)構(gòu),降低設(shè)計(jì)難度;使用片上存儲作為指令和數(shù)據(jù)存儲減少多層次存儲間數(shù)據(jù)流動;加入阻塞-非阻塞模式和鄰接共享存儲實(shí)現(xiàn)分布式指令并行和流處理運(yùn)算;設(shè)置特殊指令完成PE間通信和MIMD到SIMD的快速切換;使用線程管理器配置線程運(yùn)算粒度粗細(xì)。通過仿真驗(yàn)證,所設(shè)計(jì)的處理單元可實(shí)現(xiàn)在陣列機(jī)上實(shí)現(xiàn)分區(qū)并行和快速切換。
[1] 李濤,肖靈芝.面向圖形和圖像處理的輕核陣列機(jī)結(jié)構(gòu)[J].西安郵電學(xué)院學(xué)報,2012,17(3):41-47.
[2] 陳慶奎,王海峰,那麗春,等.圖形處理器通用計(jì)算的研究綜述[J].黑龍江大學(xué)自然科學(xué)學(xué)報,2012,29(5):673.
[3] 韓俊剛,姚靜,李濤,等.多態(tài)并行機(jī)上的3D圖形渲染[J].西安郵電大學(xué)學(xué)報,2015,20(2):1-6.
[4] 黃亮,秦信剛,武玲娟,等.一種面向55nm工藝的可擴(kuò)展統(tǒng)一架構(gòu)圖形處理器設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2014,36(12):2418-2419.
[5] 李濤,楊婷,易學(xué)淵,等.螢火蟲2:一種多態(tài)并行機(jī)的硬件體系結(jié)構(gòu)[J].計(jì)算機(jī)工程與科學(xué),2014,36(2):191-200.
[6] 蒲琳,李濤,易學(xué)淵,等.多態(tài)并行處理器中的SIMD控制器設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2013,39(11):53-59.
[7] 李靜梅,王軍峰,張岐.一種適應(yīng)多核處理器核間通信機(jī)制的設(shè)計(jì)[J].智能計(jì)算機(jī)與應(yīng)用,2011,1(2):26-27.
[8] 錢博文,李濤,韓俊剛,等.多態(tài)并行處理器中的線程管理器設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2014,40(2):30-32.
[9] ?;ⅲ顫?,韓俊剛,等.多態(tài)并行處理器的數(shù)據(jù)通信和路由器的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2014,40(8):38-47.
[10] Hennessy J L, Patterson Da A.計(jì)算機(jī)系統(tǒng)結(jié)構(gòu):量化研究方法[M].4版.白躍彬,譯.北京:電子工業(yè)出版社,2007:109-111.
[11] 劉覽.基于FPGA的32位RISC嵌入式微處理器設(shè)計(jì)[D].南京:南京航空航天大學(xué),2010:12-20.
[責(zé)任編輯:祝劍]
Design and implementation of processing element of polymorphous array architecture for graphics and image processing
LI Tao, LIU Yingtian, QIAO Hong
(School of Electronic Engineering, Xi’an University of Posts and Telecommunications, Xi’an 710121, China)
A customized Processing Element(PE) is designed to support a new polymorphic array. It uses the four-stage pipelined VLIW construction and its ISA takes addressing mode without register files. The particular block-nonblock mode and neighbor shared memory are devoted to finish parallel execution of distributed instructions and dataflow computations. The communications among PEs and quick switch between MIMD and SIMD are implemented through special instruction. Experimental results show that PE can realize divisional parallel excuting and shifting of operating modes and the maximum working frequency of PE can achieve 167 MHz.
array architecture, processing element, VLIW, block flag, data communication
2014-12-01
國家自然科學(xué)基金重大項(xiàng)目(61136002)
李濤 (1954-),男,博士,教授,從事計(jì)算機(jī)體系結(jié)構(gòu),計(jì)算機(jī)圖形學(xué)研究。E-mail:litao@xupt.edu.cn 劉應(yīng)天(1988-),男,碩士研究生,研究方向?yàn)閷S眉呻娐吩O(shè)計(jì)及集成系統(tǒng)。E-mail:dne_kira@sohu.com
10.13682/j.issn.2095-6533.2015.03.003
TN492
A
2095-6533(2015)03-0021-08