《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 時鐘共享多線程處理器SIMD控制器設計與實現(xiàn)
時鐘共享多線程處理器SIMD控制器設計與實現(xiàn)
2016年電子技術應用第11期
劉 歡1,韓俊剛1,李卯良2,楊 錚1
1.西安郵電大學 計算機學院,陜西 西安710121;2.西安郵電大學 電子工程學院,陜西 西安710121
摘要: 針對圖形圖像處理器中指令與數(shù)據(jù)加載以及數(shù)據(jù)收集的問題,設計和實現(xiàn)了一種時鐘共享多線程處理器中的SIMD控制器,完成相關SIMD指令的發(fā)送、數(shù)據(jù)的加載和數(shù)據(jù)的收集。該控制器以實現(xiàn)高效的數(shù)據(jù)級并行計算為目標,采用有限狀態(tài)機實現(xiàn)了前向處理單元、行控制器和列控制器的設計。實驗結果表明,所設計的專用硬件電路能夠有效提高圖形圖像處理器處理并行數(shù)據(jù)的能力。
中圖分類號: TP302
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.11.006
中文引用格式: 劉歡,韓俊剛,李卯良,等. 時鐘共享多線程處理器SIMD控制器設計與實現(xiàn)[J].電子技術應用,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.
Design and implementation of SIMD controller for a shared-clock multithreading processor
Liu Huan1,Han Jungang1,Li Maoliang2,Yang Zheng1
1.School of Computer Science,Xi′an University of Posts and Telecommunications,Xi′an 710121,China; 2.School of Electronic Engineering,Xi′an University of Posts and Telecommunications,Xi′an 710121,China
Abstract: Aim at the issues that graphic processor loads commands data and collects data,design and implement a shared-clock multithreading processor SIMD controller, to complete SIMD instructions sending,data loading and data collection. In order to achieve efficient data-parallel computing as the goal, we implement forward-processing unit, controllers and controller design with finite-state machine. Experimental results show that, using the design of dedicated hardware can improve the graphics processor's ability to handle parallel data.
Key words : multi-threaded processor;SIMD controller;data-level parallel;state machine

0 引言

    隨著并行計算和集成電路的不斷發(fā)展,如何有效地提高處理器的并行處理性能已經(jīng)成為熱點問題。傳統(tǒng)處理器通過開發(fā)指令級并行(Instruction Level Parallelism,ILP)[1]來提高處理器的性能,但硬件的復雜度及功耗等因素影響了處理器的性能。因此設計者們紛紛把目光投向更高層次的線程級并行(Thread Level Parallelism,TLP)[1-3]技術,時鐘共享多線程處理器就是在這種背景下產(chǎn)生的。多線程這個概念最先由美國加州大學Tullsen等提出的,并提出了SMT[4-5]處理器模型。這種結構通過資源競爭和資源動態(tài)共享的方式使所有的處理單元共同活躍,充分提高了資源利用率。本文根據(jù)時鐘共享多線程處理器的結構,在多核處理器[6-7]的基礎上設計實現(xiàn)了一種SIMD控制器,并且對電路進行了功能驗證和FPGA驗證。

1 整體硬件結構

    時鐘共享多線程處理器是由16個處理單元(PE)互聯(lián)構成的一個4×4二維陣列,它主要包括前向處理單元(FEP)、存儲管理器(mem_man)、調(diào)度器(Sche)和協(xié)處理器(ACCL)。整體結構如圖1所示。

wdz4-t1.gif

    FEP(前向處理單元)模塊:接收外部CPU下發(fā)的配置信息、初始化指令和數(shù)據(jù)、預存數(shù)據(jù)加載到buffer_memory中、回收計算結果、構建整個陣列進行SIMD運算等。

    Sche(調(diào)度器)模塊:由四個行控制器(Row Controller,CRi)組成。每一個行控制器用來實現(xiàn)SIMD運行模式的構建、并將前向單元發(fā)送的初始化指令和數(shù)據(jù)、配置信息,發(fā)送給當前行的各個PE。

    mem_man(存儲管理)模塊:由四個列控制器(Column Controller,CWj)組成。每一個列控制器用來預存數(shù)據(jù)和回收計算結果。

    ACCL(協(xié)處理器)模塊:每四個處理單元之間共享使用一個協(xié)處理器,處理單元可以直接調(diào)用該協(xié)處理器完成特殊函數(shù)運算。

2 時鐘共享多線程處理器SIMD控制器

    SIMD控制器是由一個前向處理單元(FEP)、一個調(diào)度器(Sche)、一個存儲管理(mem_man)構成,其中mem_man模塊由4個列控制器組成,sche模塊由4個行控制器組成,每一列對應一個列控制器,每一行對應一個行控制器。SIMD控制器處于整個時鐘共享多線程處理器結構的最頂層,控制該4×4陣列的運行和調(diào)度處理。SIMD控制器具體實現(xiàn)功能如下:

    (1)執(zhí)行整個時鐘共享多線程處理器的初始化,也就是說對各個基本處理單元的指令存儲和數(shù)據(jù)存儲進行加載;

    (2)為提高整個時鐘共享多線程處理器的運行效率,可對基本處理單元所需數(shù)據(jù)和相關指令進行預存;

    (3)在基本處理單元運算過程中,可進行動態(tài)數(shù)據(jù)加載和讀??;

    (4)對計算結果進行回收,并實時監(jiān)測基本處理單元的運行狀態(tài)。

2.1 SIMD控制器整體結構

    根據(jù)時鐘共享多線程處理器系統(tǒng)整體介紹和該系統(tǒng)具有的基本特征,以及SIMD控制器功能的確定和功能的劃分,可以確定SIMD控制器的整體結構,如圖2所示。

wdz4-t2.gif

    圖2中整個時鐘共享多線程處理器由PC控制發(fā)送數(shù)據(jù)和回收計算結果,通過PC機將按照數(shù)據(jù)包格式將數(shù)據(jù)、指令以及控制信息發(fā)送給FEP,F(xiàn)EP通過解析包頭,產(chǎn)生控制信號,將數(shù)據(jù)或者指令發(fā)給行列控制器進而控制PE陣列。

2.2 前向處理單元的設計與實現(xiàn)

    前向處理單元主要完成整個基本陣列處理單元的控制,具體功能有:初始化FEP存儲、控制整個陣列中PE單元實現(xiàn)SIMD運算、采用廣播的形式初始化行列控制器和配置線程管理器信息、讀取運算結果、查詢PE執(zhí)行的狀態(tài)等。具體結構如圖3所示。

wdz4-t3.gif

    外部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ù)包將相關控制器信息以廣播的形式發(fā)送出去,然后根據(jù)FIFO2的幾乎滿標志信號fifo2_almost_full來判斷是否將回收的數(shù)據(jù)寫入FIFO2中,如果fifo2_almost_full幾乎滿信號為高,則阻塞;否則,將數(shù)據(jù)寫入FIFO2。通過讀控制模塊來檢測FIFO2是否為空,即判斷fifo2_empty信號是否有效,如果無效,則將FIFO2的數(shù)據(jù)讀出,寫入到FIFO3中,供外部PC讀??;否則,阻塞直到讀取操作完成。當外部CPU需要讀取前向處理單元存儲或者行控制器中的SIMD指令時,也發(fā)送相應的指令從前向處理單元存儲中或者從4個行控制器中讀取SIMD指令;如果整個陣列進行SIMD運算,則發(fā)送SIMD請求給前向處理單元,前向處理單元中的接收模塊檢測到該請求后,將前向處理單元存儲中的SIMD指令發(fā)送給下一級的4個行控制器以完成該SIMD運算,最后,發(fā)送一個請求指令來結束SIMD的運算模式。

2.2.1 數(shù)據(jù)接收控制模塊的實現(xiàn)

    數(shù)據(jù)接收模塊的功能是:檢測FIFO0中的空滿信號,如果FIFO0不為空,則讀取該數(shù)據(jù),并對數(shù)據(jù)包包頭進行解析,解析的相關命令可將SIMD指令寫入前向處理單元存儲或者將MIMD指令或者數(shù)據(jù)以及SIMD指令寫入FIFO1中,等待數(shù)據(jù)廣播;當根據(jù)解析的數(shù)據(jù)包信息從FIFO2中讀取相關指令或者數(shù)據(jù),將讀取的數(shù)據(jù)寫入FIFO3以供外部CPU讀?。蝗绻馕鰹榭刂普麄€陣列單元來執(zhí)行SIMD運行模式時,則狀態(tài)跳轉(zhuǎn)到SIMD運行模式狀態(tài),將整個基本陣列單元構建成SIMD運行模式。該前向處理單元的數(shù)據(jù)接收模塊采用狀態(tài)機實現(xiàn),狀態(tài)轉(zhuǎn)移圖如圖4所示。

wdz4-t4.gif

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所示。

wdz4-t5.gif

2.3 行控制器設計與實現(xiàn)

    行控制器總體結構如圖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所示。

wdz4-t6.gif

wdz4-b1.gif

wdz4-t7.gif

    RC_CTRL模塊按照各個功能點歸納狀態(tài)轉(zhuǎn)移圖,主要包括初始化數(shù)據(jù)和數(shù)據(jù)的回收、SIMD運行模式和MIMD運行模式的切換等。初始化數(shù)據(jù)和數(shù)據(jù)回收的狀態(tài)轉(zhuǎn)移圖如圖7所示。

2.4 列控制器設計與實現(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。

    列控制器結構框圖如圖8所示,主要由1個Init_Ctrl(初始化控制器)、1個Dynamic_Ctrl(動態(tài)控制)和一個DMEM(數(shù)據(jù)存儲)3部分組成。Init_Ctrl模塊主要用于對初始化加載數(shù)據(jù)進行控制及完成外部對計算結果數(shù)據(jù)的讀取操作;Dynamic_Ctrl模塊主要用于對來自PE動態(tài)寫入或者讀取列存儲的數(shù)據(jù)進行控制;DMEM模塊為一個寬度為32 bit深度為1 M的RAM。

wdz4-t8.gif

3 仿真與FPGA驗證

    本文采用Xilinx公司的ISE工具進行電路綜合,F(xiàn)PGA選用Xilinx公司的XC7V2000t-2fhg1761,電路的最高頻率可達到316.877 MHz。

    根據(jù)以上SIMD控制器的主要實現(xiàn)功能,設計了測試用例,主要針對SIMD控制器的基本功能的測試,包含一系列的數(shù)據(jù)和指令初始化、SIMD運行模式數(shù)據(jù)結果的回收等。針對SIMD運行模式主要測試了單行的SIMD運行模式,并依次測試了2行、3行以及4行同時執(zhí)行SIMD運行模式。

    該電路資源利用率如圖9所示。

wdz4-t9.gif

    關鍵路徑如圖10所示。

wdz4-t10.gif

4 總結

    本文對時鐘共享多線程處理器結構進行深入研究,采用了有限狀態(tài)機設計并實現(xiàn)了SIMD控制器,并對電路進行了功能驗證和FPGA驗證,工作頻率為316.877 MHz。結果表明,該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] 張駿,樊曉椏,劉松鶴.多核、多線程處理器的低功耗設計技術研究[J].計算機科學,2007,34(10):301-305.

[6] 黃虎才.多態(tài)陣列處理器的并行計算研究[D].西安:西安郵電大學,2014.

[7] 李濤,楊婷,易學淵,等.螢火蟲2:一種多態(tài)并行機的硬件體系結構[J].計算機工程與科學,2014,36(2):191-200.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載。