《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 時(shí)鐘共享多線程處理器SIMD控制器設(shè)計(jì)與實(shí)現(xiàn)
時(shí)鐘共享多線程處理器SIMD控制器設(shè)計(jì)與實(shí)現(xiàn)
2016年電子技術(shù)應(yīng)用第11期
劉 歡1,韓俊剛1,,李卯良2,,楊 錚1
1.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安710121,;2.西安郵電大學(xué) 電子工程學(xué)院,,陜西 西安710121
摘要: 針對(duì)圖形圖像處理器中指令與數(shù)據(jù)加載以及數(shù)據(jù)收集的問(wèn)題,設(shè)計(jì)和實(shí)現(xiàn)了一種時(shí)鐘共享多線程處理器中的SIMD控制器,,完成相關(guān)SIMD指令的發(fā)送,、數(shù)據(jù)的加載和數(shù)據(jù)的收集。該控制器以實(shí)現(xiàn)高效的數(shù)據(jù)級(jí)并行計(jì)算為目標(biāo),,采用有限狀態(tài)機(jī)實(shí)現(xiàn)了前向處理單元,、行控制器和列控制器的設(shè)計(jì)。實(shí)驗(yàn)結(jié)果表明,,所設(shè)計(jì)的專用硬件電路能夠有效提高圖形圖像處理器處理并行數(shù)據(jù)的能力,。
中圖分類號(hào): TP302
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.11.006
中文引用格式: 劉歡,韓俊剛,,李卯良,,等. 時(shí)鐘共享多線程處理器SIMD控制器設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,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 引言

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

1 整體硬件結(jié)構(gòu)

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

wdz4-t1.gif

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

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

    mem_man(存儲(chǔ)管理)模塊:由四個(gè)列控制器(Column Controller,,CWj)組成,。每一個(gè)列控制器用來(lái)預(yù)存數(shù)據(jù)和回收計(jì)算結(jié)果。

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

2 時(shí)鐘共享多線程處理器SIMD控制器

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

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

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

    (3)在基本處理單元運(yùn)算過(guò)程中,,可進(jìn)行動(dòng)態(tài)數(shù)據(jù)加載和讀?。?/p>

    (4)對(duì)計(jì)算結(jié)果進(jìn)行回收,,并實(shí)時(shí)監(jiān)測(cè)基本處理單元的運(yùn)行狀態(tài),。

2.1 SIMD控制器整體結(jié)構(gòu)

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

wdz4-t2.gif

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

2.2 前向處理單元的設(shè)計(jì)與實(shí)現(xiàn)

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

wdz4-t3.gif

    外部PC將指令和數(shù)據(jù)寫入FIFO0,,接收控制模塊檢測(cè)FIFO0的fifo0_empty信號(hào)是否有效,。當(dāng)fifo0_empty無(wú)效表示FIFO0不為空,此時(shí)接收控制模塊開始讀取FIFO0中的數(shù)據(jù),,將讀取來(lái)的數(shù)據(jù)包頭進(jìn)行解析,,產(chǎn)生相應(yīng)的控制信號(hào),并將數(shù)據(jù)包頭及之后攜帶的數(shù)據(jù)寫入FIFO1或FEP指令存儲(chǔ)中,。其中寫入到FIFO1時(shí)要查看FIFO1的fifo1_almost_full信號(hào)是否有效,,也就是FIFO1幾乎滿信號(hào)是否為高,如果為高,,則不能寫入數(shù)據(jù),,并反饋此信息讓外部PC停止發(fā)送數(shù)據(jù);否則,,將數(shù)據(jù)寫入FIFO1中,。

    當(dāng)發(fā)送模塊檢測(cè)FIFO1不空,也就是fifo1_empty信號(hào)時(shí)開始讀取數(shù)據(jù),,并將讀出的數(shù)據(jù)廣播給行列控制器,,由行列控制器解析判斷是否接收此數(shù)據(jù)。對(duì)于行控制器,,數(shù)據(jù)首先廣播給RC0控制器,,如果RC0解析判斷該數(shù)據(jù)不是發(fā)送給該行,則RC0將數(shù)據(jù)發(fā)送給RC1,,以此類推,。

    當(dāng)外部PC發(fā)送的是讀取指令或數(shù)據(jù)命令時(shí),也是通過(guò)數(shù)據(jù)包將相關(guān)控制器信息以廣播的形式發(fā)送出去,,然后根據(jù)FIFO2的幾乎滿標(biāo)志信號(hào)fifo2_almost_full來(lái)判斷是否將回收的數(shù)據(jù)寫入FIFO2中,,如果fifo2_almost_full幾乎滿信號(hào)為高,則阻塞,;否則,將數(shù)據(jù)寫入FIFO2,。通過(guò)讀控制模塊來(lái)檢測(cè)FIFO2是否為空,,即判斷fifo2_empty信號(hào)是否有效,如果無(wú)效,,則將FIFO2的數(shù)據(jù)讀出,,寫入到FIFO3中,,供外部PC讀取,;否則,,阻塞直到讀取操作完成。當(dāng)外部CPU需要讀取前向處理單元存儲(chǔ)或者行控制器中的SIMD指令時(shí),,也發(fā)送相應(yīng)的指令從前向處理單元存儲(chǔ)中或者從4個(gè)行控制器中讀取SIMD指令,;如果整個(gè)陣列進(jìn)行SIMD運(yùn)算,則發(fā)送SIMD請(qǐng)求給前向處理單元,,前向處理單元中的接收模塊檢測(cè)到該請(qǐng)求后,,將前向處理單元存儲(chǔ)中的SIMD指令發(fā)送給下一級(jí)的4個(gè)行控制器以完成該SIMD運(yùn)算,最后,,發(fā)送一個(gè)請(qǐng)求指令來(lái)結(jié)束SIMD的運(yùn)算模式,。

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

    數(shù)據(jù)接收模塊的功能是:檢測(cè)FIFO0中的空滿信號(hào),如果FIFO0不為空,,則讀取該數(shù)據(jù),,并對(duì)數(shù)據(jù)包包頭進(jìn)行解析,解析的相關(guān)命令可將SIMD指令寫入前向處理單元存儲(chǔ)或者將MIMD指令或者數(shù)據(jù)以及SIMD指令寫入FIFO1中,,等待數(shù)據(jù)廣播,;當(dāng)根據(jù)解析的數(shù)據(jù)包信息從FIFO2中讀取相關(guān)指令或者數(shù)據(jù),將讀取的數(shù)據(jù)寫入FIFO3以供外部CPU讀??;如果解析為控制整個(gè)陣列單元來(lái)執(zhí)行SIMD運(yùn)行模式時(shí),則狀態(tài)跳轉(zhuǎn)到SIMD運(yùn)行模式狀態(tài),,將整個(gè)基本陣列單元構(gòu)建成SIMD運(yùn)行模式,。該前向處理單元的數(shù)據(jù)接收模塊采用狀態(tài)機(jī)實(shí)現(xiàn),狀態(tài)轉(zhuǎn)移圖如圖4所示,。

wdz4-t4.gif

2.2.2 數(shù)據(jù)發(fā)送控制模塊的實(shí)現(xiàn)

    數(shù)據(jù)發(fā)送模塊將外部PC發(fā)送的初始化數(shù)據(jù)進(jìn)行下發(fā),,其具體實(shí)現(xiàn)功能是檢測(cè)FIFO1的空信號(hào)和幾乎滿信號(hào),如果FIFO1不空而且行和列控制器處于空閑狀態(tài)時(shí),,則負(fù)責(zé)將FIFO1中的指令或者數(shù)據(jù)以廣播的形式發(fā)送給4個(gè)列控制器和第一個(gè)行控制器,。狀態(tài)轉(zhuǎn)移如圖5所示。

wdz4-t5.gif

2.3 行控制器設(shè)計(jì)與實(shí)現(xiàn)

    行控制器總體結(jié)構(gòu)如圖6所示,,由1個(gè)RC_CTRL控制單元,、1個(gè)深度為1 K寬度為48 bit的SIMD指令存儲(chǔ)(I-MEM,為RAM)和1個(gè)深度為16寬度為10 bit的索引表組成,。組合邏輯電路部分主要負(fù)責(zé)判斷是否為加載給當(dāng)前行控制器的指令/數(shù)據(jù),,若不是該行操作,則將指令/數(shù)據(jù)發(fā)送給下一個(gè)行控制器,;若是,,則將對(duì)應(yīng)指令/數(shù)據(jù)發(fā)送到RC_CTRL模塊進(jìn)行相應(yīng)操作,。索引表(INDEX_MEM)如表1所示,為一個(gè)寬度為10深度為16的RAM,,主要用于存儲(chǔ)SIMD指令的基址,,每一個(gè)基址都對(duì)應(yīng)一段完整的SIMD指令。行控制器的核心部分為RC_CTRL模塊,,該模塊狀態(tài)轉(zhuǎn)移圖如圖7所示,。

wdz4-t6.gif

wdz4-b1.gif

wdz4-t7.gif

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

2.4 列控制器設(shè)計(jì)與實(shí)現(xiàn)

    列控制器主要完成了整個(gè)陣列處理單元共享存儲(chǔ)的數(shù)據(jù)加載,、數(shù)據(jù)的動(dòng)態(tài)加載和數(shù)據(jù)回收,。前向處理單元采用廣播的形式將指令和數(shù)據(jù)廣播給行、列控制器,,當(dāng)列控制器檢測(cè)到是初始化數(shù)據(jù)(包括MIMD數(shù)據(jù)和SIMD數(shù)據(jù))時(shí),,則將數(shù)據(jù)存儲(chǔ)到列存儲(chǔ)中;當(dāng)檢測(cè)到是對(duì)列存儲(chǔ)數(shù)據(jù)的讀取操作時(shí),,列控制器則將所需數(shù)據(jù)從列存儲(chǔ)中讀取給前向處理單元,;當(dāng)列控制器檢測(cè)到是給PE動(dòng)態(tài)讀取數(shù)據(jù)請(qǐng)求時(shí),則將列存儲(chǔ)中對(duì)應(yīng)的數(shù)據(jù)廣播給PE,。

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

wdz4-t8.gif

3 仿真與FPGA驗(yàn)證

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

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

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

wdz4-t9.gif

    關(guān)鍵路徑如圖10所示,。

wdz4-t10.gif

4 總結(jié)

    本文對(duì)時(shí)鐘共享多線程處理器結(jié)構(gòu)進(jìn)行深入研究,采用了有限狀態(tài)機(jī)設(shè)計(jì)并實(shí)現(xiàn)了SIMD控制器,,并對(duì)電路進(jìn)行了功能驗(yàn)證和FPGA驗(yàn)證,,工作頻率為316.877 MHz。結(jié)果表明,,該SIMD控制器電路能夠滿足圖形圖像處理中的需求,,電路工作正常并且電路具有良好的可擴(kuò)展性,實(shí)用性強(qiáng),,能夠滿足時(shí)鐘共享多線程處理器的要求,。

參考文獻(xiàn)

[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è)計(jì)技術(shù)研究[J].計(jì)算機(jī)科學(xué),,2007,34(10):301-305.

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

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

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