文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.01.003
中文引用格式: 周佳佳,,李濤,黃小康. 多核同時多線程處理器的線程調(diào)度器設(shè)計[J].電子技術(shù)應(yīng)用,,2016,,42(1):19-21.
英文引用格式: Zhou Jiajia,Li Tao,,Huang Xiaokang. Design of a thread scheduler in a simultaneous multi-threaded muti-core processor[J].Application of Electronic Technique,,2016,42(1):19-21.
0 引言
隨著并行技術(shù)的不斷發(fā)展,,如何更好地提高處理器的并行處理性能成為處理器設(shè)計者們急需解決的熱點問題。傳統(tǒng)處理器通過開發(fā)指令級并行(Instruction Level Parallelism,,ILP)[1]來提高處理器的性能,,但由于應(yīng)用程序自身的ILP很低、硬件的復(fù)雜度及功耗等眾多因素的影響導(dǎo)致處理器的性能不高,。因此設(shè)計者們把目光紛紛投向更高層次的并行-線程級并行(Thread Level Parallelism,,簡稱TLP)[1-2]。
同時多線程最先由美國加州大學(xué)的Tullsen等人在1995年開始研究,,并提出了基本的SMT[3-4]處理器模型,。主要原理是通過資源競爭和資源動態(tài)共享的方式使所有的執(zhí)行單元同時活躍,充分利用TLP和ILP來提高處理器的資源利用率,。
目前的商用處理器采用的技術(shù)主要是同時多線程和片上多處理器技術(shù),,例如Intel的P4處理器[5]的Hyper-thread技術(shù)實現(xiàn)同時執(zhí)行兩個線程,IBM的Power5處理器[6]每個芯片有兩個內(nèi)核,,每個內(nèi)核可以同時執(zhí)行兩個線程,。SUN的Niagara處理器[7]每個芯片有8個內(nèi)核,每個內(nèi)核可以同時執(zhí)行4個線程。我國的龍芯2號處理器[8]也采用了超標量與同時多線程技術(shù)來設(shè)計,。
本文在多核處理器[9-11]的基礎(chǔ)上提出了一種采用同時多線程技術(shù)[3-4]的線程調(diào)度器[12]設(shè)計,。與Niagara處理器相比,本文中的多線程處理器擁有16個核,,每個內(nèi)核一共具有8個線程,,最大可以同時執(zhí)行4個線程,并且可以在高低線程之間快速切換,,減少了因為線程中遇到長周期指令所造成的資源浪費,,同時也提高了處理器的利用效率。
1 整體硬件結(jié)構(gòu)
時鐘共享多線程處理器是一種適用于圖形和圖像處理的并行陣列機,。該陣列機支持MIMD(Multiple Instruction Stream Multiple Data Stream)運行模式,、分布式指令并行模式和流處理運行模式這三種工作模式,同時還具有異步執(zhí)行,、核間通信以及線程間通信的機制,。
這種結(jié)構(gòu)的陣列機由16個處理單元(Processing Element,PE)互連構(gòu)成一個4×4的二維陣列,,還包括1個前端處理器,、4個協(xié)處理器、2個調(diào)度器及2個存儲管理,。系統(tǒng)的整體結(jié)構(gòu)如圖1所示,。
2 線程調(diào)度器功能描述
線程調(diào)度器完成的功能描述如下:
(1)監(jiān)測預(yù)處理模塊,當外部需要給線程加載指令或數(shù)據(jù)時響應(yīng)預(yù)處理模塊,;
(2)當線程發(fā)生阻塞時負責(zé)切換線程,,并產(chǎn)生PE某一個線程的啟動信息,其中包括啟動有效信號,、 起始PC值,、啟動的線程號;
(3)線程之間的同步處理,,負責(zé)監(jiān)視需要同步的線程是否同步結(jié)束,;
(4)當外部需要重新配置某一個線程的指令或數(shù)據(jù)時負責(zé)停止該線程,產(chǎn)生pe_stop信號,;
(5)給外部提供三個8位的寄存器,,分別為線程啟動信息寄存器、線程結(jié)束信息寄存器,、線程斷點信息寄存器,。
3 同時多線程設(shè)計方案
同時多線程技術(shù)最大的優(yōu)點在于增加很少的面積,就能夠獲得很高的資源利用率,,即用較小的成本換取較大的并行性能,,充分地挖掘了線程級的并行,。
本文基于時鐘共享多線程處理器提出的線程調(diào)度器支持八個線程,最多可以同時執(zhí)行四個線程,。這四個線程同時執(zhí)行各自的程序,。每個線程擁有各自獨立的取指單元、譯碼單元,、指令存儲和數(shù)據(jù)存儲,。而其他的資源,如各個執(zhí)行單元和地址流水線,,則是八個線程共享,。
在每一個時鐘周期的上升沿,每個PE最多有八條流水線在執(zhí)行,,且最多可輸出四條流水線結(jié)果,這四條流水線產(chǎn)生的結(jié)果屬于不同的線程組,,每個線程組都擁有高低兩個線程,。因此在某一組中若有一個線程陷入阻塞狀態(tài),則可以切換至組內(nèi)的另一線程來執(zhí)行程序,,可以有效隱藏線程由于等待過程所造成的延遲,,提高處理器整體的工作效率。
4 線程調(diào)度器詳細設(shè)計
4.1 線程管理器的總體結(jié)構(gòu)
該調(diào)度器由信息處理模塊,、狀態(tài)控制模塊,、寄存器模塊、PE控制模塊四大部分構(gòu)成,,各模塊的連接關(guān)系如圖2所示,。
線程調(diào)度器的工作流程為:信息處理模塊接收來自預(yù)處理模塊的配置信息、指令,、數(shù)據(jù)及加載結(jié)束信號,,判斷是否需要啟動該線程。線程啟動之后狀態(tài)控制模塊中對應(yīng)的線程狀態(tài)機發(fā)生跳轉(zhuǎn),,同時寄存器模塊實時記錄該線程的PC值,。當接收到譯碼模塊的阻塞信息時停止當前運行的線程且切換線程,PE控制模塊負責(zé)產(chǎn)生新線程的啟動信息,。當線程運行結(jié)束后,,信息處理模塊負責(zé)記錄線程的結(jié)束信息。
4.2 線程調(diào)度器的工作模式
線程調(diào)度器擁有五種工作模式:啟動模式,、阻塞工作模式,、同步模式、斷點模式和重配置模式,。
啟動模式線程接收來自預(yù)處理模塊的線程啟動信息配置要啟動的線程,,將對應(yīng)的線程ID號和PC值發(fā)送給PE來執(zhí)行,。
阻塞工作模式表示當某一線程遇到阻塞,則切換到其線程組內(nèi)的另一線程上來執(zhí)行,。若是兩個都阻塞,,則先解除阻塞的線程先執(zhí)行。
同步模式下對需要同步的幾個線程進行等待處理,,并判斷是否達到同步,。若達到,則解除同步模式,,開始正常執(zhí)行,;若沒有達到,則繼續(xù)等待,。
斷點模式是用來方便處理器進行調(diào)試錯誤的一種工作模式,。當程序計數(shù)器PC遇到斷點時,該線程停止工作,,保存工作信息以待調(diào)試檢查,。
重配置模式是對線程進行重新配置,根據(jù)上層的需要對線程要執(zhí)行的程序內(nèi)容進行添加或更改,。
4.3 線程狀態(tài)轉(zhuǎn)移關(guān)系
如圖3所示,,為線程調(diào)度器中線程的狀態(tài)轉(zhuǎn)移圖。
其中各個狀態(tài)說明如下:
(1)IDLE:空閑狀態(tài),。當線程啟動信號有效時(th_start=1),,則狀態(tài)跳轉(zhuǎn)到RUN運行狀態(tài);
(2)RUN:運行狀態(tài),。當線程位于此狀態(tài)時,,表示線程正在執(zhí)行,遇到阻塞或等待跳轉(zhuǎn)到WAIT狀態(tài),;
(3)BREAK:斷點狀態(tài),。當線程的斷點數(shù)據(jù)收集結(jié)束(th_break_end=1)時,狀態(tài)跳轉(zhuǎn)到RUN運行狀態(tài),;
(4)WAIT:等待狀態(tài),。當線程發(fā)生重配置(th_recfg=1)時,則狀態(tài)跳轉(zhuǎn)到IDLE初始狀態(tài),;當線程阻塞解除(th_blk_fns=1)時狀態(tài)跳轉(zhuǎn)到RUN運行狀態(tài),;
(5)SYN:同步狀態(tài)。線程位于該狀態(tài)下,,遇到同步解除(th_syn_fns=1)信號,,跳轉(zhuǎn)到READY狀態(tài);
(6)READY:準備狀態(tài),。表示線程處于一個隨時可以啟動的狀態(tài),,當線程被選中時(th0_hit=1),,則狀態(tài)跳轉(zhuǎn)到RUN運行狀態(tài)。
5 仿真結(jié)果分析和比較
本文采用Xilinx公司的ISE14.4工具對硬件電路進行了綜合,,選用Xilinx公司型號為XC7V2000t-2fhg1761的FPGA,,設(shè)計電路的最高頻率可以到達431.816 MHz。
在完成功能仿真和綜合的同時,,本文還進行了簡單的性能分析,。測試在8個PE上進行,采用圖像處理中的邊緣檢測算法,,分別對32×32,、64×64以及128×64的圖像進行測試,最后得到的結(jié)果如表1所示,。另外根據(jù)性能提升計算公式(1)[12]可以得出整體處理器的性能提升百分比如表2所示,。
可以看出,對于比較小的圖像,,過多的線程會導(dǎo)致整體運算速度變慢,。這是因為此時圖像整體運算時間比較短,線程切換所造成的延時會在整體時間中占據(jù)比較大的比例,。而對于更大的圖像,同時多線程技術(shù)則對處理器的性能提升影響比較大,。對于多核同時多線程處理器而言,,八個線程的線程調(diào)度器設(shè)計會使處理器得到更高的性能提升,充分體現(xiàn)了同時多線程技術(shù)的優(yōu)點,。
6 總結(jié)
本文通過對時鐘共享多線程處理器架構(gòu)的深入研究,,采用同時多線程技術(shù)設(shè)計和實現(xiàn)了處理器的核心部件——線程調(diào)度器。通過在處理器的多個線程上運行圖像處理算法,,得到處理器的加速比最大為69.25%,,充分提高了多核處理器的性能。并對所設(shè)計的硬件電路進行了全面仿真驗證,,綜合和仿真結(jié)果表明電路的功能正確,,工作頻率為431.816 MHz,達到了時鐘共享多線程處理器的需求,。
參考文獻
[1] THEO U,,BORUT R,JURIJ S.Multithreaded processors[J].The Computer Journal,,2002,,45(3):320-348.
[2] BRUNIE N,COLLANGE S,,DIAMOS G.Simultaneous branch and warp interweaving for sustained GPU performance[C].Computer Architecture(ISCA),,2012:49-60.
[3] 劉權(quán)勝,,楊洪斌,吳悅.同時多線程技術(shù)[J].計算機工程與設(shè)計,,2008,,29(4):963-967.
[4] EGGERS S J,EMER J S,,LEVY H M,,et al.Simultaneous multithreading:A platform fornext-generation processors[J].IEEE Micro,1997,,17(5):12-19.
[5] 張云.解析超線程技術(shù)[J].甘肅聯(lián)合大學(xué)學(xué)報,,2007,21(4):99-101.
[6] Frank Soltis.Power5對i系列意味著什么[J].中國經(jīng)濟和信息化,,2004,,20(6):A2-A3.
[7] POONACHA K.Niagara:a 32-way multithreaded sparc processor[J].Mirco,IEEE,,2005,,25(2):21-29.
[8] 李祖松,許先超,,胡偉武,,等.龍芯2號處理器的同時多線程設(shè)計[J].計算機學(xué)報,2009,,32(11):2266-2273.
[9] 黃虎才.多態(tài)陣列處理器的并行計算研究[D].西安:西安郵電大學(xué),,2014.
[10] 李濤,楊婷,,易學(xué)淵.螢火蟲2:一種多態(tài)并行機的硬件體系結(jié)構(gòu)[J].計算機工程與科學(xué),,2014,12(2):191-200.
[11] 李濤,,肖靈芝.面向圖形和圖像處理的輕核陣列機結(jié)構(gòu)[J].西安郵電學(xué)院學(xué)報,,2012,17(3):41-47.
[12] 錢博文,,李濤,,韓俊剛,等.多態(tài)并行處理器中的線程管理器設(shè)計[J].電子技術(shù)應(yīng)用,,2014(2):30-32.