文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2014)02-0030-03
處理器是集成電路發(fā)展的重要產(chǎn)物。處理器首先經(jīng)歷了單核時代,當(dāng)功耗成為單核處理器發(fā)展的瓶頸時提出了多核。進(jìn)入多核時代后,多核處理器雖然在一定程度上解決了功耗問題,但是功耗問題依然存在,隨著集成CPU計(jì)算核心數(shù)目的增多,功耗問題更加明顯。多核還面臨著程序分配的問題,尤其是核心較多時這個問題更加明顯。如何分配程序使各個計(jì)算核心的計(jì)算效率更高,這個問題和功耗問題不謀而合,當(dāng)各個核心的計(jì)算效率變高時,功耗自然會下降。顯然,增加多核處理器的計(jì)算效率來降低功耗是一種綠色計(jì)算。由此提出了多線程的概念來管理多核處理器的計(jì)算。進(jìn)入多線程時代后,處理器迎來了巨大的發(fā)展空間[1-2]。
RMI公司的XLR系列網(wǎng)絡(luò)處理器具有8個核,每個核上具有4個硬件線程,每一個硬件線程在邏輯上可以看作一個虛擬的CPU(vCPU)。核上提供對硬件線程的支持,主要是為了提高CPU的利用率及進(jìn)程上下文切換的能力[3]。
本文在多態(tài)并行處理器的基礎(chǔ)上提出硬件線程管理器。與XLR處理器對比,本文中的多態(tài)處理器具有16個核,每個核具有8個SIMD線程和8個MIMD線程,同時也提高了處理器的利用率和進(jìn)程上下文切換的能力。
1 多態(tài)并行處理器
多態(tài)并行處理器是一種適用于圖形和圖像處理的并行陣列機(jī),這種結(jié)構(gòu)的陣列機(jī)支持SIMD(Single Instruction Multiple Data)和MIMD(Multiple Instruction Stream Multiple Data Stream)兩種工作模式,同時還具有異步執(zhí)行、近鄰?fù)ㄐ乓约斑h(yuǎn)程路由器通信的機(jī)制[4]。
本文的線程管理器就是基于此多態(tài)并行處理器提出的,如圖1所示。16個(4×4的二維陣列)基本處理單元(PE)、路由器(RU,即圖中R)、行控制器RC(Row Controller)、列控制器CC(Column Controller)和簇控制CLC(Cluster Controller)器組成一個基本簇。每個PE都包含上、下、左、右4個通信寄存器,也使得每個簇的PE個數(shù)可以自由定制(例如m×n的PE)[5]。
圖1中的T(即Thread Manager,簡稱TM)就是針對這種靈活高效的處理器結(jié)構(gòu)而提出的專用硬件線程管理器。
2 線程管理器工作流程
在加入線程管理器之前,基本簇中的每個PE工作與否在很大程度上決定于指令寄存器中加載的指令是否通信阻塞以及需要的數(shù)據(jù)是否到來。如果每個PE在工作過程中與相鄰PE進(jìn)行數(shù)據(jù)通信很少,那么多態(tài)并行處理器整體的計(jì)算效率就會比較大。但是當(dāng)PE間數(shù)據(jù)通信較多時,處理器計(jì)算效率就會明顯下降。
本文提出的基于多態(tài)并行處理器的線程管理器解決了處理器計(jì)算效率的問題。該線程管理器包含8個SIMD線程。在執(zhí)行指令的過程中,如果執(zhí)行到近鄰?fù)ㄐ诺闹噶?,則線程管理器會監(jiān)視通信寄存器CR(Communi-
cation Register)的通信狀態(tài);如果遇到遠(yuǎn)程調(diào)度路由指令,則線程管理器會監(jiān)視路由器RU的通信狀態(tài)。當(dāng)遇到近鄰?fù)ㄐ胖噶詈瓦h(yuǎn)程調(diào)度指令時,線程管理器會切換其他的線程以減少等待通信數(shù)據(jù)帶來的延遲,有效地提高處理器的執(zhí)行效率。
3 線程管理器功能描述
線程管理器需要監(jiān)測PE中MIMD模式下8個線程的執(zhí)行狀態(tài),若遇到近鄰?fù)ㄐ胖噶罨蛘呗酚芍噶?,則需要切換線程或者進(jìn)行其他響應(yīng)操作,具體詳見3.2節(jié)。除此之外,線程管理器還需要管理MIMD模式的8個線程的運(yùn)行及切換(注:SIMD模式由SC控制器統(tǒng)一管理控制)。
3.1 線程寄存器
線程寄存器包括2組寄存器、線程配置表寄存器和線程狀態(tài)表寄存器。
線程配置表寄存器共58位,包括5個域,如表1所示。這5個域的意義:quant 表示該線程分配的一次執(zhí)行時間;I-base表示該線程的指令存儲基地址;I-size表示該線程分配的指令存儲大??;M-base表示該線程的數(shù)據(jù)存儲基地址;M-size表示該線程分配的數(shù)據(jù)存儲大小。
線程狀態(tài)表寄存器共38位,包括6個域,如表2所示。這6個域的意義:PC表示該線程當(dāng)前執(zhí)行的指令地址;status表示當(dāng)前線程的狀態(tài);avail表示當(dāng)前線程正在執(zhí)行指令的兩個源操作數(shù)和一個目的操作數(shù)的存在與否;mask表示源操作數(shù)和目的操作數(shù)是否被當(dāng)前執(zhí)行的指令使用;rank表示調(diào)度優(yōu)先權(quán),0表示優(yōu)先權(quán)最高;stamp為時間戳,表示該線程在quant時間內(nèi)的運(yùn)行時間。
3.2 路由指令處理方法
路由指令通信分為兩種,一種是PE執(zhí)行過程中遇到路由指令,另一種是RU傳來路由指令。
3.2.1 PE發(fā)出路由指令
MOVEF:按照調(diào)度算法切換線程,線程調(diào)度算法詳見3.3節(jié)。
MOVET:掛起當(dāng)前線程,停止所有線程的工作,當(dāng)路由器發(fā)來finish后,再啟動當(dāng)前掛起的線程。
此外,CALLR同MOVEF;RETR無操作;MVT、MOVET、MVF、CALLC則同MOVEF。
3.2.2 RU發(fā)出路由指令
MOVET:首先路由器發(fā)來請求信號request,然后掛起正在工作的線程,停止所有線程的工作;停止后給路由器響應(yīng)信號respond,路由器開始傳輸數(shù)據(jù);傳輸結(jié)束后會發(fā)來一拍的結(jié)束信號finish,同時發(fā)來線程號thread_id,然后啟動thread_id線程。
MOVEF:操作與MOVET類似,唯一不同的是最終啟動的是之前掛起的線程。
此外,CALLR、RETR、MVT、RETC均同MOVET。
3.3 線程調(diào)度算法
本文設(shè)計(jì)的調(diào)度算法具體如下[6]:
(1)每次執(zhí)行線程,只執(zhí)行rank值為0線程。
(2)運(yùn)行時間達(dá)到分配的執(zhí)行時間時,該線程停止執(zhí)行,該線程rank值變?yōu)樽畲蟆?br/>
(3)遇到近鄰?fù)ㄐ抛枞麜r,該線程停止執(zhí)行,且rank值變?yōu)樽畲蟆?br/>
(4)遇到路由通信阻塞時,該線程停止執(zhí)行,具體執(zhí)行方法參照3.2節(jié)。
(5)阻塞數(shù)據(jù)到來時,正在執(zhí)行的線程停止執(zhí)行,rank值加1,被喚醒的線程rank值變成0。
下面以0、1、2、6 4個線程為例來描述線程調(diào)度算法,如圖2所示。
(1)idle:空閑狀態(tài),表示該線程沒有指令需要執(zhí)行。當(dāng)該線程加載好指令及數(shù)據(jù)后,線程跳轉(zhuǎn)到ready狀態(tài)。
(2)ready:就緒狀態(tài),表示該線程已經(jīng)具備可執(zhí)行的條件。當(dāng)該線程被選中執(zhí)行時,線程跳到run狀態(tài)。
(3)run:運(yùn)行狀態(tài),表示該線程正在運(yùn)行。當(dāng)該線程運(yùn)行時間值stamp等于一次分配的執(zhí)行時間quant時或者強(qiáng)制停止運(yùn)行時,該線程跳轉(zhuǎn)到ready狀態(tài);當(dāng)該線程運(yùn)行完畢時,該線程跳轉(zhuǎn)到idle狀態(tài);當(dāng)該線程發(fā)生阻塞時,該線程跳轉(zhuǎn)到wait狀態(tài)。
(4)wait:等待狀態(tài),表示該線程正在等待阻塞數(shù)據(jù)的到來。當(dāng)路由或近鄰?fù)ㄐ诺淖枞麛?shù)據(jù)到來時,該線程就會跳轉(zhuǎn)到ready就緒狀態(tài),等待該線程被選中執(zhí)行。
5 仿真及性能分析
本文在ModelSim中完成了功能仿真,編寫了4×4陣列的匯編程序。仿真結(jié)果如圖4所示。由圖可見結(jié)果正確,能夠正常執(zhí)行、切換、停止線程[7]。
在完成功能仿真的同時,本文還進(jìn)行了簡單的性能分析。本文使用了8個不同的16核PE的無線程程序,將第1種程序放在16個PE的0號線程,第2種程序放在16個PE的1號線程,以此類推,8個線程都放入程序。經(jīng)統(tǒng)計(jì),使用線程管理器后,總的程序計(jì)算時鐘數(shù)為3 127;不加入線程管理器時,8個程序的總計(jì)算時鐘數(shù)為3 762。性能提升計(jì)算式:
由式(1)可得,性能提升百分比為16.9%。
本文提出了一種適用于多態(tài)并行處理器的硬件線程管理器,完成了電路設(shè)計(jì)、功能仿真工作,最終在Xilinx V6 550 FPGA上實(shí)現(xiàn)。這種硬件線程管理器能夠管理處理器中MIMD模式下的8個線程,同時能夠配合完成SMID模式操作。線程管理器的提出使得通信數(shù)據(jù)阻塞帶來的等待不復(fù)存在,可以大大提升處理器的執(zhí)行效率,降低處理器的功耗。
今后的研究工作重點(diǎn)是通過完成大量的測試,分析線程管理器的性能,根據(jù)分析結(jié)果改進(jìn)線程管理器調(diào)度算法,以滿足更高的性能需求。
參考文獻(xiàn)
[1] KECKLER S W,DALLY W J,KHAILANY B,et al.GPUS and the future of parallel computing[J].IEEE Computer,2011,44(9):7-17.
[2] MAROWKA A,GAN R.Back to thin-core massively parallel processors[J].IEEE Computer,2011,44(12):49-54.
[3] 劉近光,梁滿貴.多核多線程處理器的發(fā)展及其軟件系統(tǒng)架構(gòu)[J].微處理機(jī),2007(2):1-7.
[4] 李濤,肖靈芝.面向圖形和圖像處理的輕核陣列機(jī)結(jié)構(gòu)[J]. 西安郵電學(xué)院學(xué)報(bào),2012,17(3):43-46.
[5] Fan Dongrui,Zhang Hao,Wang Da,et al.Godson-T:an efficient many-core processor exploring thread-level parallelism[J].IEEE Computer Society,2012,32(10):38-47.
[6] LIU C L,LAYLAND J W.Scheduling algorithms for multiprogramming in a hard-real-time environment[J].Journal of the ACM,1973,20(1):46-61.
[7] TSUEI T F,YAMAMOTO W.Queuing simulation model for multiprocessor stems[J].Computer,2003,36(2):58-64.