文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.11.006
中文引用格式: 劉歡,,韓俊剛,李卯良,,等. 時鐘共享多線程處理器SIMD控制器設(shè)計與實現(xiàn)[J].電子技術(shù)應用,,2016,42(11):29-32.
英文引用格式: Liu Huan,,Han Jungang,,Li Maoliang,et al. Design and implementation of SIMD controller for a shared-clock multithreading processor[J].Application of Electronic Technique,,2016,,42(11):29-32.
0 引言
隨著并行計算和集成電路的不斷發(fā)展,,如何有效地提高處理器的并行處理性能已經(jīng)成為熱點問題。傳統(tǒng)處理器通過開發(fā)指令級并行(Instruction Level Parallelism,,ILP)[1]來提高處理器的性能,,但硬件的復雜度及功耗等因素影響了處理器的性能。因此設(shè)計者們紛紛把目光投向更高層次的線程級并行(Thread Level Parallelism,,TLP)[1-3]技術(shù),,時鐘共享多線程處理器就是在這種背景下產(chǎn)生的。多線程這個概念最先由美國加州大學Tullsen等提出的,,并提出了SMT[4-5]處理器模型,。這種結(jié)構(gòu)通過資源競爭和資源動態(tài)共享的方式使所有的處理單元共同活躍,充分提高了資源利用率,。本文根據(jù)時鐘共享多線程處理器的結(jié)構(gòu),,在多核處理器[6-7]的基礎(chǔ)上設(shè)計實現(xiàn)了一種SIMD控制器,并且對電路進行了功能驗證和FPGA驗證,。
1 整體硬件結(jié)構(gòu)
時鐘共享多線程處理器是由16個處理單元(PE)互聯(lián)構(gòu)成的一個4×4二維陣列,,它主要包括前向處理單元(FEP)、存儲管理器(mem_man),、調(diào)度器(Sche)和協(xié)處理器(ACCL),。整體結(jié)構(gòu)如圖1所示。
FEP(前向處理單元)模塊:接收外部CPU下發(fā)的配置信息,、初始化指令和數(shù)據(jù),、預存數(shù)據(jù)加載到buffer_memory中、回收計算結(jié)果,、構(gòu)建整個陣列進行SIMD運算等,。
Sche(調(diào)度器)模塊:由四個行控制器(Row Controller,CRi)組成,。每一個行控制器用來實現(xiàn)SIMD運行模式的構(gòu)建,、并將前向單元發(fā)送的初始化指令和數(shù)據(jù)、配置信息,,發(fā)送給當前行的各個PE,。
mem_man(存儲管理)模塊:由四個列控制器(Column Controller,CWj)組成,。每一個列控制器用來預存數(shù)據(jù)和回收計算結(jié)果,。
ACCL(協(xié)處理器)模塊:每四個處理單元之間共享使用一個協(xié)處理器,處理單元可以直接調(diào)用該協(xié)處理器完成特殊函數(shù)運算,。
2 時鐘共享多線程處理器SIMD控制器
SIMD控制器是由一個前向處理單元(FEP),、一個調(diào)度器(Sche)、一個存儲管理(mem_man)構(gòu)成,,其中mem_man模塊由4個列控制器組成,,sche模塊由4個行控制器組成,,每一列對應一個列控制器,每一行對應一個行控制器,。SIMD控制器處于整個時鐘共享多線程處理器結(jié)構(gòu)的最頂層,,控制該4×4陣列的運行和調(diào)度處理。SIMD控制器具體實現(xiàn)功能如下:
(1)執(zhí)行整個時鐘共享多線程處理器的初始化,,也就是說對各個基本處理單元的指令存儲和數(shù)據(jù)存儲進行加載,;
(2)為提高整個時鐘共享多線程處理器的運行效率,可對基本處理單元所需數(shù)據(jù)和相關(guān)指令進行預存,;
(3)在基本處理單元運算過程中,,可進行動態(tài)數(shù)據(jù)加載和讀取,;
(4)對計算結(jié)果進行回收,,并實時監(jiān)測基本處理單元的運行狀態(tài),。
2.1 SIMD控制器整體結(jié)構(gòu)
根據(jù)時鐘共享多線程處理器系統(tǒng)整體介紹和該系統(tǒng)具有的基本特征,,以及SIMD控制器功能的確定和功能的劃分,可以確定SIMD控制器的整體結(jié)構(gòu),,如圖2所示,。
圖2中整個時鐘共享多線程處理器由PC控制發(fā)送數(shù)據(jù)和回收計算結(jié)果,通過PC機將按照數(shù)據(jù)包格式將數(shù)據(jù),、指令以及控制信息發(fā)送給FEP,,F(xiàn)EP通過解析包頭,產(chǎn)生控制信號,,將數(shù)據(jù)或者指令發(fā)給行列控制器進而控制PE陣列,。
2.2 前向處理單元的設(shè)計與實現(xiàn)
前向處理單元主要完成整個基本陣列處理單元的控制,具體功能有:初始化FEP存儲,、控制整個陣列中PE單元實現(xiàn)SIMD運算,、采用廣播的形式初始化行列控制器和配置線程管理器信息、讀取運算結(jié)果,、查詢PE執(zhí)行的狀態(tài)等,。具體結(jié)構(gòu)如圖3所示。
外部PC將指令和數(shù)據(jù)寫入FIFO0,,接收控制模塊檢測FIFO0的fifo0_empty信號是否有效,。當fifo0_empty無效表示FIFO0不為空,此時接收控制模塊開始讀取FIFO0中的數(shù)據(jù),,將讀取來的數(shù)據(jù)包頭進行解析,,產(chǎn)生相應的控制信號,并將數(shù)據(jù)包頭及之后攜帶的數(shù)據(jù)寫入FIFO1或FEP指令存儲中,。其中寫入到FIFO1時要查看FIFO1的fifo1_almost_full信號是否有效,,也就是FIFO1幾乎滿信號是否為高,,如果為高,則不能寫入數(shù)據(jù),,并反饋此信息讓外部PC停止發(fā)送數(shù)據(jù),;否則,將數(shù)據(jù)寫入FIFO1中,。
當發(fā)送模塊檢測FIFO1不空,,也就是fifo1_empty信號時開始讀取數(shù)據(jù),并將讀出的數(shù)據(jù)廣播給行列控制器,,由行列控制器解析判斷是否接收此數(shù)據(jù),。對于行控制器,數(shù)據(jù)首先廣播給RC0控制器,,如果RC0解析判斷該數(shù)據(jù)不是發(fā)送給該行,,則RC0將數(shù)據(jù)發(fā)送給RC1,以此類推,。
當外部PC發(fā)送的是讀取指令或數(shù)據(jù)命令時,,也是通過數(shù)據(jù)包將相關(guān)控制器信息以廣播的形式發(fā)送出去,然后根據(jù)FIFO2的幾乎滿標志信號fifo2_almost_full來判斷是否將回收的數(shù)據(jù)寫入FIFO2中,,如果fifo2_almost_full幾乎滿信號為高,,則阻塞;否則,,將數(shù)據(jù)寫入FIFO2,。通過讀控制模塊來檢測FIFO2是否為空,即判斷fifo2_empty信號是否有效,,如果無效,,則將FIFO2的數(shù)據(jù)讀出,寫入到FIFO3中,,供外部PC讀?。环駝t,,阻塞直到讀取操作完成,。當外部CPU需要讀取前向處理單元存儲或者行控制器中的SIMD指令時,也發(fā)送相應的指令從前向處理單元存儲中或者從4個行控制器中讀取SIMD指令,;如果整個陣列進行SIMD運算,,則發(fā)送SIMD請求給前向處理單元,前向處理單元中的接收模塊檢測到該請求后,,將前向處理單元存儲中的SIMD指令發(fā)送給下一級的4個行控制器以完成該SIMD運算,,最后,發(fā)送一個請求指令來結(jié)束SIMD的運算模式。
2.2.1 數(shù)據(jù)接收控制模塊的實現(xiàn)
數(shù)據(jù)接收模塊的功能是:檢測FIFO0中的空滿信號,,如果FIFO0不為空,,則讀取該數(shù)據(jù),并對數(shù)據(jù)包包頭進行解析,,解析的相關(guān)命令可將SIMD指令寫入前向處理單元存儲或者將MIMD指令或者數(shù)據(jù)以及SIMD指令寫入FIFO1中,,等待數(shù)據(jù)廣播;當根據(jù)解析的數(shù)據(jù)包信息從FIFO2中讀取相關(guān)指令或者數(shù)據(jù),,將讀取的數(shù)據(jù)寫入FIFO3以供外部CPU讀?。蝗绻馕鰹榭刂普麄€陣列單元來執(zhí)行SIMD運行模式時,,則狀態(tài)跳轉(zhuǎn)到SIMD運行模式狀態(tài),,將整個基本陣列單元構(gòu)建成SIMD運行模式。該前向處理單元的數(shù)據(jù)接收模塊采用狀態(tài)機實現(xiàn),,狀態(tài)轉(zhuǎn)移圖如圖4所示,。
2.2.2 數(shù)據(jù)發(fā)送控制模塊的實現(xiàn)
數(shù)據(jù)發(fā)送模塊將外部PC發(fā)送的初始化數(shù)據(jù)進行下發(fā),其具體實現(xiàn)功能是檢測FIFO1的空信號和幾乎滿信號,,如果FIFO1不空而且行和列控制器處于空閑狀態(tài)時,,則負責將FIFO1中的指令或者數(shù)據(jù)以廣播的形式發(fā)送給4個列控制器和第一個行控制器。狀態(tài)轉(zhuǎn)移如圖5所示,。
2.3 行控制器設(shè)計與實現(xiàn)
行控制器總體結(jié)構(gòu)如圖6所示,,由1個RC_CTRL控制單元,、1個深度為1 K寬度為48 bit的SIMD指令存儲(I-MEM,,為RAM)和1個深度為16寬度為10 bit的索引表組成。組合邏輯電路部分主要負責判斷是否為加載給當前行控制器的指令/數(shù)據(jù),,若不是該行操作,,則將指令/數(shù)據(jù)發(fā)送給下一個行控制器;若是,,則將對應指令/數(shù)據(jù)發(fā)送到RC_CTRL模塊進行相應操作,。索引表(INDEX_MEM)如表1所示,為一個寬度為10深度為16的RAM,,主要用于存儲SIMD指令的基址,,每一個基址都對應一段完整的SIMD指令。行控制器的核心部分為RC_CTRL模塊,,該模塊狀態(tài)轉(zhuǎn)移圖如圖7所示,。
RC_CTRL模塊按照各個功能點歸納狀態(tài)轉(zhuǎn)移圖,主要包括初始化數(shù)據(jù)和數(shù)據(jù)的回收,、SIMD運行模式和MIMD運行模式的切換等,。初始化數(shù)據(jù)和數(shù)據(jù)回收的狀態(tài)轉(zhuǎn)移圖如圖7所示。
2.4 列控制器設(shè)計與實現(xiàn)
列控制器主要完成了整個陣列處理單元共享存儲的數(shù)據(jù)加載、數(shù)據(jù)的動態(tài)加載和數(shù)據(jù)回收,。前向處理單元采用廣播的形式將指令和數(shù)據(jù)廣播給行,、列控制器,當列控制器檢測到是初始化數(shù)據(jù)(包括MIMD數(shù)據(jù)和SIMD數(shù)據(jù))時,,則將數(shù)據(jù)存儲到列存儲中,;當檢測到是對列存儲數(shù)據(jù)的讀取操作時,列控制器則將所需數(shù)據(jù)從列存儲中讀取給前向處理單元,;當列控制器檢測到是給PE動態(tài)讀取數(shù)據(jù)請求時,,則將列存儲中對應的數(shù)據(jù)廣播給PE。
列控制器結(jié)構(gòu)框圖如圖8所示,,主要由1個Init_Ctrl(初始化控制器),、1個Dynamic_Ctrl(動態(tài)控制)和一個DMEM(數(shù)據(jù)存儲)3部分組成。Init_Ctrl模塊主要用于對初始化加載數(shù)據(jù)進行控制及完成外部對計算結(jié)果數(shù)據(jù)的讀取操作,;Dynamic_Ctrl模塊主要用于對來自PE動態(tài)寫入或者讀取列存儲的數(shù)據(jù)進行控制,;DMEM模塊為一個寬度為32 bit深度為1 M的RAM。
3 仿真與FPGA驗證
本文采用Xilinx公司的ISE工具進行電路綜合,,F(xiàn)PGA選用Xilinx公司的XC7V2000t-2fhg1761,,電路的最高頻率可達到316.877 MHz。
根據(jù)以上SIMD控制器的主要實現(xiàn)功能,,設(shè)計了測試用例,,主要針對SIMD控制器的基本功能的測試,包含一系列的數(shù)據(jù)和指令初始化,、SIMD運行模式數(shù)據(jù)結(jié)果的回收等,。針對SIMD運行模式主要測試了單行的SIMD運行模式,并依次測試了2行,、3行以及4行同時執(zhí)行SIMD運行模式,。
該電路資源利用率如圖9所示。
關(guān)鍵路徑如圖10所示,。
4 總結(jié)
本文對時鐘共享多線程處理器結(jié)構(gòu)進行深入研究,,采用了有限狀態(tài)機設(shè)計并實現(xiàn)了SIMD控制器,并對電路進行了功能驗證和FPGA驗證,,工作頻率為316.877 MHz,。結(jié)果表明,該SIMD控制器電路能夠滿足圖形圖像處理中的需求,,電路工作正常并且電路具有良好的可擴展性,,實用性強,能夠滿足時鐘共享多線程處理器的要求,。
參考文獻
[1] UNGERER T,,ROBICB,,SILC J.Multithreaded processors[J].Computer Journal,2002,,45(1):320-348.
[2] BRUNIE N,,COLLANGE S,DIAMOS G.Simultaneous branch and warp interweaving for sustained GPU performance[J].Acm Sigarch Computer Architecture News,,2012,,40(40):49-60.
[3] SANKARALINGAM K,NAGARAJAN R,,LIU H,,et al.Exploiting ILP,TLP,,and DLP with the polymorphous TRIPS architecture[J].IEEE Micro,,2003,31(6):422-433.
[4] EGGERS S J,,EMER J S,,LEVY H M,et al.Simultaneous multithreading:a platform for next-generation processors[J].IEEE Micro,,1997,,17(5):12-19.
[5] 張駿,樊曉椏,,劉松鶴.多核,、多線程處理器的低功耗設(shè)計技術(shù)研究[J].計算機科學,2007,,34(10):301-305.
[6] 黃虎才.多態(tài)陣列處理器的并行計算研究[D].西安:西安郵電大學,,2014.
[7] 李濤,楊婷,,易學淵,,等.螢火蟲2:一種多態(tài)并行機的硬件體系結(jié)構(gòu)[J].計算機工程與科學,2014,,36(2):191-200.