文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.01.003
中文引用格式: 周佳佳,李濤,黃小康. 多核同時多線程處理器的線程調度器設計[J].電子技術應用,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 引言
隨著并行技術的不斷發展,如何更好地提高處理器的并行處理性能成為處理器設計者們急需解決的熱點問題。傳統處理器通過開發指令級并行(Instruction Level Parallelism,ILP)[1]來提高處理器的性能,但由于應用程序自身的ILP很低、硬件的復雜度及功耗等眾多因素的影響導致處理器的性能不高。因此設計者們把目光紛紛投向更高層次的并行-線程級并行(Thread Level Parallelism,簡稱TLP)[1-2]。
同時多線程最先由美國加州大學的Tullsen等人在1995年開始研究,并提出了基本的SMT[3-4]處理器模型。主要原理是通過資源競爭和資源動態共享的方式使所有的執行單元同時活躍,充分利用TLP和ILP來提高處理器的資源利用率。
目前的商用處理器采用的技術主要是同時多線程和片上多處理器技術,例如Intel的P4處理器[5]的Hyper-thread技術實現同時執行兩個線程,IBM的Power5處理器[6]每個芯片有兩個內核,每個內核可以同時執行兩個線程。SUN的Niagara處理器[7]每個芯片有8個內核,每個內核可以同時執行4個線程。我國的龍芯2號處理器[8]也采用了超標量與同時多線程技術來設計。
本文在多核處理器[9-11]的基礎上提出了一種采用同時多線程技術[3-4]的線程調度器[12]設計。與Niagara處理器相比,本文中的多線程處理器擁有16個核,每個內核一共具有8個線程,最大可以同時執行4個線程,并且可以在高低線程之間快速切換,減少了因為線程中遇到長周期指令所造成的資源浪費,同時也提高了處理器的利用效率。
1 整體硬件結構
時鐘共享多線程處理器是一種適用于圖形和圖像處理的并行陣列機。該陣列機支持MIMD(Multiple Instruction Stream Multiple Data Stream)運行模式、分布式指令并行模式和流處理運行模式這三種工作模式,同時還具有異步執行、核間通信以及線程間通信的機制。
這種結構的陣列機由16個處理單元(Processing Element,PE)互連構成一個4×4的二維陣列,還包括1個前端處理器、4個協處理器、2個調度器及2個存儲管理。系統的整體結構如圖1所示。
2 線程調度器功能描述
線程調度器完成的功能描述如下:
(1)監測預處理模塊,當外部需要給線程加載指令或數據時響應預處理模塊;
(2)當線程發生阻塞時負責切換線程,并產生PE某一個線程的啟動信息,其中包括啟動有效信號、 起始PC值、啟動的線程號;
(3)線程之間的同步處理,負責監視需要同步的線程是否同步結束;
(4)當外部需要重新配置某一個線程的指令或數據時負責停止該線程,產生pe_stop信號;
(5)給外部提供三個8位的寄存器,分別為線程啟動信息寄存器、線程結束信息寄存器、線程斷點信息寄存器。
3 同時多線程設計方案
同時多線程技術最大的優點在于增加很少的面積,就能夠獲得很高的資源利用率,即用較小的成本換取較大的并行性能,充分地挖掘了線程級的并行。
本文基于時鐘共享多線程處理器提出的線程調度器支持八個線程,最多可以同時執行四個線程。這四個線程同時執行各自的程序。每個線程擁有各自獨立的取指單元、譯碼單元、指令存儲和數據存儲。而其他的資源,如各個執行單元和地址流水線,則是八個線程共享。
在每一個時鐘周期的上升沿,每個PE最多有八條流水線在執行,且最多可輸出四條流水線結果,這四條流水線產生的結果屬于不同的線程組,每個線程組都擁有高低兩個線程。因此在某一組中若有一個線程陷入阻塞狀態,則可以切換至組內的另一線程來執行程序,可以有效隱藏線程由于等待過程所造成的延遲,提高處理器整體的工作效率。
4 線程調度器詳細設計
4.1 線程管理器的總體結構
該調度器由信息處理模塊、狀態控制模塊、寄存器模塊、PE控制模塊四大部分構成,各模塊的連接關系如圖2所示。
線程調度器的工作流程為:信息處理模塊接收來自預處理模塊的配置信息、指令、數據及加載結束信號,判斷是否需要啟動該線程。線程啟動之后狀態控制模塊中對應的線程狀態機發生跳轉,同時寄存器模塊實時記錄該線程的PC值。當接收到譯碼模塊的阻塞信息時停止當前運行的線程且切換線程,PE控制模塊負責產生新線程的啟動信息。當線程運行結束后,信息處理模塊負責記錄線程的結束信息。
4.2 線程調度器的工作模式
線程調度器擁有五種工作模式:啟動模式、阻塞工作模式、同步模式、斷點模式和重配置模式。
啟動模式線程接收來自預處理模塊的線程啟動信息配置要啟動的線程,將對應的線程ID號和PC值發送給PE來執行。
阻塞工作模式表示當某一線程遇到阻塞,則切換到其線程組內的另一線程上來執行。若是兩個都阻塞,則先解除阻塞的線程先執行。
同步模式下對需要同步的幾個線程進行等待處理,并判斷是否達到同步。若達到,則解除同步模式,開始正常執行;若沒有達到,則繼續等待。
斷點模式是用來方便處理器進行調試錯誤的一種工作模式。當程序計數器PC遇到斷點時,該線程停止工作,保存工作信息以待調試檢查。
重配置模式是對線程進行重新配置,根據上層的需要對線程要執行的程序內容進行添加或更改。
4.3 線程狀態轉移關系
如圖3所示,為線程調度器中線程的狀態轉移圖。
其中各個狀態說明如下:
(1)IDLE:空閑狀態。當線程啟動信號有效時(th_start=1),則狀態跳轉到RUN運行狀態;
(2)RUN:運行狀態。當線程位于此狀態時,表示線程正在執行,遇到阻塞或等待跳轉到WAIT狀態;
(3)BREAK:斷點狀態。當線程的斷點數據收集結束(th_break_end=1)時,狀態跳轉到RUN運行狀態;
(4)WAIT:等待狀態。當線程發生重配置(th_recfg=1)時,則狀態跳轉到IDLE初始狀態;當線程阻塞解除(th_blk_fns=1)時狀態跳轉到RUN運行狀態;
(5)SYN:同步狀態。線程位于該狀態下,遇到同步解除(th_syn_fns=1)信號,跳轉到READY狀態;
(6)READY:準備狀態。表示線程處于一個隨時可以啟動的狀態,當線程被選中時(th0_hit=1),則狀態跳轉到RUN運行狀態。
5 仿真結果分析和比較
本文采用Xilinx公司的ISE14.4工具對硬件電路進行了綜合,選用Xilinx公司型號為XC7V2000t-2fhg1761的FPGA,設計電路的最高頻率可以到達431.816 MHz。
在完成功能仿真和綜合的同時,本文還進行了簡單的性能分析。測試在8個PE上進行,采用圖像處理中的邊緣檢測算法,分別對32×32、64×64以及128×64的圖像進行測試,最后得到的結果如表1所示。另外根據性能提升計算公式(1)[12]可以得出整體處理器的性能提升百分比如表2所示。
可以看出,對于比較小的圖像,過多的線程會導致整體運算速度變慢。這是因為此時圖像整體運算時間比較短,線程切換所造成的延時會在整體時間中占據比較大的比例。而對于更大的圖像,同時多線程技術則對處理器的性能提升影響比較大。對于多核同時多線程處理器而言,八個線程的線程調度器設計會使處理器得到更高的性能提升,充分體現了同時多線程技術的優點。
6 總結
本文通過對時鐘共享多線程處理器架構的深入研究,采用同時多線程技術設計和實現了處理器的核心部件——線程調度器。通過在處理器的多個線程上運行圖像處理算法,得到處理器的加速比最大為69.25%,充分提高了多核處理器的性能。并對所設計的硬件電路進行了全面仿真驗證,綜合和仿真結果表明電路的功能正確,工作頻率為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] 劉權勝,楊洪斌,吳悅.同時多線程技術[J].計算機工程與設計,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] 張云.解析超線程技術[J].甘肅聯合大學學報,2007,21(4):99-101.
[6] Frank Soltis.Power5對i系列意味著什么[J].中國經濟和信息化,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號處理器的同時多線程設計[J].計算機學報,2009,32(11):2266-2273.
[9] 黃虎才.多態陣列處理器的并行計算研究[D].西安:西安郵電大學,2014.
[10] 李濤,楊婷,易學淵.螢火蟲2:一種多態并行機的硬件體系結構[J].計算機工程與科學,2014,12(2):191-200.
[11] 李濤,肖靈芝.面向圖形和圖像處理的輕核陣列機結構[J].西安郵電學院學報,2012,17(3):41-47.
[12] 錢博文,李濤,韓俊剛,等.多態并行處理器中的線程管理器設計[J].電子技術應用,2014(2):30-32.