文獻標識碼: A
文章編號: 0258-7998(2014)02-0030-03
處理器是集成電路發展的重要產物。處理器首先經歷了單核時代,當功耗成為單核處理器發展的瓶頸時提出了多核。進入多核時代后,多核處理器雖然在一定程度上解決了功耗問題,但是功耗問題依然存在,隨著集成CPU計算核心數目的增多,功耗問題更加明顯。多核還面臨著程序分配的問題,尤其是核心較多時這個問題更加明顯。如何分配程序使各個計算核心的計算效率更高,這個問題和功耗問題不謀而合,當各個核心的計算效率變高時,功耗自然會下降。顯然,增加多核處理器的計算效率來降低功耗是一種綠色計算。由此提出了多線程的概念來管理多核處理器的計算。進入多線程時代后,處理器迎來了巨大的發展空間[1-2]。
RMI公司的XLR系列網絡處理器具有8個核,每個核上具有4個硬件線程,每一個硬件線程在邏輯上可以看作一個虛擬的CPU(vCPU)。核上提供對硬件線程的支持,主要是為了提高CPU的利用率及進程上下文切換的能力[3]。
本文在多態并行處理器的基礎上提出硬件線程管理器。與XLR處理器對比,本文中的多態處理器具有16個核,每個核具有8個SIMD線程和8個MIMD線程,同時也提高了處理器的利用率和進程上下文切換的能力。
1 多態并行處理器
多態并行處理器是一種適用于圖形和圖像處理的并行陣列機,這種結構的陣列機支持SIMD(Single Instruction Multiple Data)和MIMD(Multiple Instruction Stream Multiple Data Stream)兩種工作模式,同時還具有異步執行、近鄰通信以及遠程路由器通信的機制[4]。
本文的線程管理器就是基于此多態并行處理器提出的,如圖1所示。16個(4×4的二維陣列)基本處理單元(PE)、路由器(RU,即圖中R)、行控制器RC(Row Controller)、列控制器CC(Column Controller)和簇控制CLC(Cluster Controller)器組成一個基本簇。每個PE都包含上、下、左、右4個通信寄存器,也使得每個簇的PE個數可以自由定制(例如m×n的PE)[5]。
圖1中的T(即Thread Manager,簡稱TM)就是針對這種靈活高效的處理器結構而提出的專用硬件線程管理器。
2 線程管理器工作流程
在加入線程管理器之前,基本簇中的每個PE工作與否在很大程度上決定于指令寄存器中加載的指令是否通信阻塞以及需要的數據是否到來。如果每個PE在工作過程中與相鄰PE進行數據通信很少,那么多態并行處理器整體的計算效率就會比較大。但是當PE間數據通信較多時,處理器計算效率就會明顯下降。
本文提出的基于多態并行處理器的線程管理器解決了處理器計算效率的問題。該線程管理器包含8個SIMD線程。在執行指令的過程中,如果執行到近鄰通信的指令,則線程管理器會監視通信寄存器CR(Communi-
cation Register)的通信狀態;如果遇到遠程調度路由指令,則線程管理器會監視路由器RU的通信狀態。當遇到近鄰通信指令和遠程調度指令時,線程管理器會切換其他的線程以減少等待通信數據帶來的延遲,有效地提高處理器的執行效率。
3 線程管理器功能描述
線程管理器需要監測PE中MIMD模式下8個線程的執行狀態,若遇到近鄰通信指令或者路由指令,則需要切換線程或者進行其他響應操作,具體詳見3.2節。除此之外,線程管理器還需要管理MIMD模式的8個線程的運行及切換(注:SIMD模式由SC控制器統一管理控制)。
3.1 線程寄存器
線程寄存器包括2組寄存器、線程配置表寄存器和線程狀態表寄存器。
線程配置表寄存器共58位,包括5個域,如表1所示。這5個域的意義:quant 表示該線程分配的一次執行時間;I-base表示該線程的指令存儲基地址;I-size表示該線程分配的指令存儲大小;M-base表示該線程的數據存儲基地址;M-size表示該線程分配的數據存儲大小。
線程狀態表寄存器共38位,包括6個域,如表2所示。這6個域的意義:PC表示該線程當前執行的指令地址;status表示當前線程的狀態;avail表示當前線程正在執行指令的兩個源操作數和一個目的操作數的存在與否;mask表示源操作數和目的操作數是否被當前執行的指令使用;rank表示調度優先權,0表示優先權最高;stamp為時間戳,表示該線程在quant時間內的運行時間。
3.2 路由指令處理方法
路由指令通信分為兩種,一種是PE執行過程中遇到路由指令,另一種是RU傳來路由指令。
3.2.1 PE發出路由指令
MOVEF:按照調度算法切換線程,線程調度算法詳見3.3節。
MOVET:掛起當前線程,停止所有線程的工作,當路由器發來finish后,再啟動當前掛起的線程。
此外,CALLR同MOVEF;RETR無操作;MVT、MOVET、MVF、CALLC則同MOVEF。
3.2.2 RU發出路由指令
MOVET:首先路由器發來請求信號request,然后掛起正在工作的線程,停止所有線程的工作;停止后給路由器響應信號respond,路由器開始傳輸數據;傳輸結束后會發來一拍的結束信號finish,同時發來線程號thread_id,然后啟動thread_id線程。
MOVEF:操作與MOVET類似,唯一不同的是最終啟動的是之前掛起的線程。
此外,CALLR、RETR、MVT、RETC均同MOVET。
3.3 線程調度算法
本文設計的調度算法具體如下[6]:
(1)每次執行線程,只執行rank值為0線程。
(2)運行時間達到分配的執行時間時,該線程停止執行,該線程rank值變為最大。
(3)遇到近鄰通信阻塞時,該線程停止執行,且rank值變為最大。
(4)遇到路由通信阻塞時,該線程停止執行,具體執行方法參照3.2節。
(5)阻塞數據到來時,正在執行的線程停止執行,rank值加1,被喚醒的線程rank值變成0。
下面以0、1、2、6 4個線程為例來描述線程調度算法,如圖2所示。
(1)idle:空閑狀態,表示該線程沒有指令需要執行。當該線程加載好指令及數據后,線程跳轉到ready狀態。
(2)ready:就緒狀態,表示該線程已經具備可執行的條件。當該線程被選中執行時,線程跳到run狀態。
(3)run:運行狀態,表示該線程正在運行。當該線程運行時間值stamp等于一次分配的執行時間quant時或者強制停止運行時,該線程跳轉到ready狀態;當該線程運行完畢時,該線程跳轉到idle狀態;當該線程發生阻塞時,該線程跳轉到wait狀態。
(4)wait:等待狀態,表示該線程正在等待阻塞數據的到來。當路由或近鄰通信的阻塞數據到來時,該線程就會跳轉到ready就緒狀態,等待該線程被選中執行。
5 仿真及性能分析
本文在ModelSim中完成了功能仿真,編寫了4×4陣列的匯編程序。仿真結果如圖4所示。由圖可見結果正確,能夠正常執行、切換、停止線程[7]。
在完成功能仿真的同時,本文還進行了簡單的性能分析。本文使用了8個不同的16核PE的無線程程序,將第1種程序放在16個PE的0號線程,第2種程序放在16個PE的1號線程,以此類推,8個線程都放入程序。經統計,使用線程管理器后,總的程序計算時鐘數為3 127;不加入線程管理器時,8個程序的總計算時鐘數為3 762。性能提升計算式:
由式(1)可得,性能提升百分比為16.9%。
本文提出了一種適用于多態并行處理器的硬件線程管理器,完成了電路設計、功能仿真工作,最終在Xilinx V6 550 FPGA上實現。這種硬件線程管理器能夠管理處理器中MIMD模式下的8個線程,同時能夠配合完成SMID模式操作。線程管理器的提出使得通信數據阻塞帶來的等待不復存在,可以大大提升處理器的執行效率,降低處理器的功耗。
今后的研究工作重點是通過完成大量的測試,分析線程管理器的性能,根據分析結果改進線程管理器調度算法,以滿足更高的性能需求。
參考文獻
[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] 劉近光,梁滿貴.多核多線程處理器的發展及其軟件系統架構[J].微處理機,2007(2):1-7.
[4] 李濤,肖靈芝.面向圖形和圖像處理的輕核陣列機結構[J]. 西安郵電學院學報,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.