《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 一種多線程輕核機器中進程管理的硬件實現
一種多線程輕核機器中進程管理的硬件實現
來源:電子技術應用2013年第3期
王 維1,李 濤1,韓俊剛2
1.西安郵電大學 電子工程學院,陜西 西安710061; 2.西安郵電大學 計算機學院,陜西 西安710061
摘要: 提出了一種多線程輕核處理器的進程管理器硬件設計。為了得到更好的效果,該進程管理器擁有一個內建的事件管理器來監測等待進程的觸發條件,進程的調度也采用硬件實現。所設計的并行輕核處理器的任務管理器由ALU、存儲系統和內置路由器構成,用來處理進程。
中圖分類號: TP302;TP393
文獻標識碼: A
文章編號: 0258-7998(2013)03-0040-04
Design and implementation of a process manager for a multithread thin-core processor
Wang Wei1,Li Tao1,Han Jungang2
1.School of Electronic Engineering,Xi′an University of Posts and Telecommunications, Xi′an 710061,China; 2.School of Computer, Xi′an University of Posts and Telecommunications, Xi′an 710061,China
Abstract: This paper presents the hardware process manager design of a multithread thin-core processor. The process manager has an in-built event manager to monitor the arrival of triggering events for waiting threads. Thread scheduling is done in hardware. The process manager consist of ALU, memory system and built-in router,to form a complete processing element in a parallel thin-core computer.
Key words : thin-core processor;process manager;parallel computing;multi-threading

    在過去數十年中,摩爾定律下的電路集成密度按照指數率增長,目前的大型芯片已經可以集成數十億個晶體管。但是,靠提高芯片主頻來增加處理器能力的方法會帶來日益增長的功耗,致使芯片無法克服散熱問題。研究表明,內存中數據的傳輸和ILP(指令級并行)[1]的復雜控制機制是造成芯片功耗過大的主要原因。而大的片上存儲和輕核處理器才是克服功耗過大的有效辦法,因此引發了新一輪的并行處理熱潮。本設計的處理器采用了特殊的指令集,線程管理器也不同于一般的輕核機器[2]。

1 輕核陣列機
    本文設計了一種新型的多線程輕核處理器,該輕核并行處理器是一個陣列機,由多個處理單元簇(cluster)組成,每個簇是由處理單元(PE)組成的一個二維陣列(2D Array),是一種較常見的陣列結構。一個基本簇(base cluster)通常是16個處理單元組成的4×4陣列,如圖1所示。其特點是:采用近鄰連接的網絡拓撲結構;采用雙模式的指令集,高效實現并行處理所需的線程間通信;采用專用遠程數據傳輸指令和多播方式及相應的路由器,滿足了輸出數據的扇出需求和遠距離線程間的數據通信。

    上述特點需要高性能的線程管理機制[3]來提高執行速度和效率。使用軟件來進行線程調度無法滿足高性能并行計算的要求,因此設計了硬件的管理機制。一個處理單元由一個ALU、一個進程控制器(t-control)、一個路由器(RU)、4個鄰接共享存儲(MISI)、一個數據存儲(D-men)和一個指令存儲(I-men)組成,整體結構如圖2所示。

    鄰居共享存儲M[S]分為4個部分:Me(東)、Mw(西)、Ms(南)和Mn(北),每部分用于與相鄰處理器通信。在設計中分別為寄存器R28、R29、R30、R31。共享存儲器的存取采用阻塞模式(線程間同步),每個共享存儲地址都有一位數據有效位。當讀取數據時,如果數據無效,則當前線程需要等待;如果數據有效,則讀取數據,并將其置為無效。當寫入數據時,數據無效則直接寫入,數據有效則等待。路由器RU負責將數據傳輸到遠程處理器件,指令控制器(ICTL)模塊通過計算把指令寫入指令存儲(I-men)中,方便處理器對所需指令的讀取。
    ALU中的指令讀取單元含有一個程序計數器(PC)和一個進程地址寄存器(Creg)。每個進程都分配一塊數據存儲,其基地址可以放在Creg中。T_control完成進程的調度、每個進程自身的狀態跳轉、每個進程信息的存儲,以及事件檢測(路由器遠程數據傳輸和相鄰的共享存儲器中數據的檢測)。t_control根據進程表實現一步到位的上下文轉換,發送相應的PC和Creg中的當前數值給ALU來調度處理器處理當前進程。
2 進程管理的硬件設計
    總體設計中采用8個進程并發執行。進程管理器由一個控制模塊(t_manager)、一個就緒隊列模塊(ready_list)、8個進程的狀態轉換模塊(t_state)、8個進程的寄存器模塊(regfile)和一個進程信息表模塊(t_table)構成[4],總體設計如圖3所示。各模塊功能如下:

    (1)控制模塊(t_manager):首先創建進程,根據每個進程的狀態(初始態、就緒態、運行態、阻塞態)創建就緒隊列;完成后開始采用輪詢的方法控制每個進程的調度[5];最后輸出ALU的控制信號。
    (2)進程狀態轉換模塊(t_state):主要分為兩部分:其一是進程的自身4個狀態之間的跳轉控制部分;其二是進程阻塞后的檢測部分。一般是實現8個或者16個并發進程,圖3所示為8個進程的設計圖,每個進程需要有自己的t_state模塊,圖中可以看到8個進程狀態控制轉換模塊。
    (3)寄存器模塊(regfile):每個進程擁有自己獨立的32個寄存器,寄存器R0~R27每個進程自己可以讀寫,但是鄰居處理器不可以讀寫;寄存器R28~R31是處理器與鄰居4個處理器共享的寄存器,本設計的Me(東)、Mw(西)、Ms(南)、Mn(北)4個寄存器分別指的是R28、R29、R30和R31。
    (4)進程的相關參數的維護表(t_table):用來記錄每個進程的當前狀態,并且維護進程阻塞和恢復時的數據。整個控制模塊根據這個進程表中的每個進程的當前狀態和處理器的忙閑來實現一步到位的上下文轉換。
2.1 進程的狀態參數表t_table設計
    當創建一個進程時,就為進程建立了一個相應的狀態參數表,圖4所示為一個進程的狀態參數表。設計中為8個進程,需要8組如圖所示的參數表。狀態參數描述如下:

    (1)QT:時間片,是指系統給每個進程所分配的執行時間。一旦時間片用完,當前進程就掛起,等待下次的調度。
    (2)PC:程序計數器,是指進程的程序在內存或者外存中的物理位置。進程掛起或者阻塞時,首先存儲當前程序執行的PC到t_table中,再進行其他操作;進程需要執行時,首先從t_table中讀取PC值,再進行程序的讀取和其他操作。
    (3)STAMP:時間戳。每次從進程開始執行進行計數,如果STAMP==QT,則掛起進程;如果在STAMP!=QT時,進程發生阻塞,則保存當前的STAMP,待下次調度進程時,從保存的STAMP值開始計數并與時間片進行比較。
    (4)STATE:狀態標志。每個進程都有4個狀態,即:IDLE初始狀態:00,READY就緒狀態:01,RUNNING初始狀態:10,WAITING阻塞狀態:11。
    (5)進程現場保護:AVAIL表示3個算子中是否有數據;MASK表示3個算子是否有用;A0,A1,AD表示進程阻塞時候的3個算子的地址。
    (6)ACT:表示進程是否有效。
2.2 控制模塊t_manager設計
    每個進程都有自身4個狀態之間的跳轉控制,設計中8個進程采用輪詢的調度策略來控制進程的上下文轉換,并且產生與處理器之間的接口信號,狀態機如圖5所示。

    狀態跳轉解釋如下:
    (1)INIT:初始狀態。首先創建進程和進程的就緒隊列,就緒隊列完成后跳轉到P1狀態。
    (2)P1:檢測就緒隊列的空滿。如果就緒隊列空,則說明沒有就緒狀態的進程,繼續等待就緒隊列的產生;如果不空則說明有就緒的進程,采用輪詢的調度方法調度進程,即從就緒隊列中讀取第一個進程號碼。
    (3)P2:發送進程id號碼到進程狀態控制模塊t_state,并且發送進程處理信號id_enable為高電平給進程狀態控制模塊t_state,跳轉到P3狀態。
    (4)P3:發送信號cpu_enable(高電平)、cpu_creg(進程id號碼)、pc(進程的程序地址)給處理器,等待處理器的處理。一旦信號t_enbale為高電平,表示當前進程掛起或者執行完成了,則跳轉到P1狀態,cpu_enable置低。
2.3 進程狀態轉換模塊t_state設計
    進程狀態轉換模塊的設計分為兩部分介紹:一是進程自身4個狀態之間的跳轉控制部分的詳細設計;二是每個進程阻塞后的檢測部分的詳細設計。下面主要介紹單個進程的狀態控制。
    每個進程都有4個狀態,跳轉如圖6所示。各狀態說明如下:

    (1)INIT:初始狀態。檢測進程的PCB表的act信息,一旦為高(表示進程是可用的),則跳轉到下一個狀態READY。
    (2)READY:就緒狀態,表示進程已經具備了運行條件,但是處理器不一定是空閑的,如果不空閑,則暫時不能使用,需等待分配處理器。即檢測進程啟動信號id_enable,一旦為高(表示處理器空閑,進程可以執行),則跳轉到RUNNING狀態。
    (3)RUNNING:運行狀態。首先讀取t_table中對應進程號的QT(時間片)、PC(進程的程序的計數器)和STAMP(時間戳);處理器開始執行該進程的程序后,時間戳與時間片相等了,表示該進程的時間片結束了,則跳轉到READY狀態,并且保護現場,把當前的進程號寫入就緒隊列中,等待下次的調度;當處理過程中發生了阻塞,則跳轉到WAIT狀態,把當前的PC(進程的程序的計數器)、STAMP(時間戳)、MASK(3個算子中有用的算子標志)、AVAIL(3個算子中有數據的標志)、A0,A1,AD(3個算子的地址)寫入t_table中,保護現場;當進程的程序處理完時,act置低,跳轉到INIT狀態,不再被調度。
    (4)WAIT:阻塞狀態,即進程在運行過程中,因為等待某一事件(如等待一個輸入/輸出操作完成)而暫時不能運行的狀態。這種狀態下,發送t_enable高電平到進程控制模塊,同時啟動監測模塊進行所需數據的監測,如果t_flag為高電平,則表示監測信號監測到了相應的數據,此時進程恢復READY狀態,并且跳轉到READY狀態,等待下一次進程的啟動。
3 驗證和分析
    電路設計采用Verilog硬件描述語言,在Xinlinx公司的ISE環境下完成功能仿真和綜合。在陣列機的基礎上,采用指令集編寫簡單的算法完成了簡單功能測試。算法如3×3矩陣的加減法、多個數的最大公約數與最小公倍數的求解和奇偶算法。圖7所示是一個簡單的3×3陣列機,采用一個處理器和一個進程控制器組成一個pe,圖中的寄存器是相鄰處理器之間的共享寄存器。

3.1 輕核陣列機的功能測試
    測試激勵為:pe0、pe1、pe2各自包括3個進程,3個進程分別執行不同的3×3矩陣加法。圖7所示的pe之間的寄存器(即共享寄存器)中,R30/R28是pe與左右鄰之間的共享寄存器,R31/R29是pe與上下鄰之間的共享寄存器。
    根據測試激勵,pe0會發生阻塞,pe1和pe3進程都是順序執行。pe0的仿真結果圖如8所示,分析如下:
    (1)首先執行0號進程。從圖中cpu_creg為000(0號進程)的信號可以看出,當執行完成以后沒有發現阻塞,進程0順利執行完成,信號t_over為高。

    (2)然后根據調度算法調度1號進程(cpu_creg為001)。信號cpu_flag為標志信號,其為1表示寄存器R8或者R31沒有數據,此時發生阻塞,則掛起1號進程,同時啟用監測模塊對1號進程沒有數據的寄存器R31進行監測。
    (3)在監測的同時根據調度算法調度2號進程(cpu_
creg為010)。若2號進程也發生了阻塞(cpu_flag為1),則掛起2號進程,同時進行2號進程所需要的數據的監測;在2號進程的執行過程中1號進程就緒,這時2號進程一旦掛起則調度1號進程(cpu_creg為001)繼續執行,直到1號進程執行完成(t_over為1);重復以上操作,處理完所有的進程。
3.2 奇偶排序
    基于奇偶原理和歸并—拆分模式[6-7],在線性陣列上實現并行排序,步驟如下:
    (1)將6個數據分別存儲到6個pe的寄存器R0中。
    (2)開始進行第一次偶排序,此時pe0、pe2、pe4分別讀取R30(CPU與右鄰的共享寄存器)的數據,而pe1、pe3、pe5把數據從寄存器R0移到R28中,這樣3個pe并發地執行第一次偶排序。
    (3)開始進行第一次奇排序,此時pe1、pe3通過R30讀取右鄰的pe2、pe4中的數據,pe2、pe4在上次的偶排序時已經把數據存放到自身寄存器R28中,這樣2個pe并發地執行第一次奇排序,pe0和pe5等待下次的偶排序。
    (4)重復步驟(2)和步驟(3),最多執行6/2=3次即可得到最后的結果。
    多線程輕核陣列機是一個新提出的概念,目前所采用的進程管理器都是由軟件實現,而對于輕核陣列機中的進程調度采用軟件的方式很難實現高效的上下文轉換,故本文采用硬件實現進程管理,對電路進行了模塊劃分和詳細設計,最后在Xilinx的ISE環境中完成了輕核陣列機的功能仿真和綜合。硬件設計使得進程的上下文轉換和監測不占用處理器的處理時間,簡化了進程間的通信,從而明顯地提高了執行效率。
參考文獻
[1] RAU B R,FISHER J A.Instruction-level parallel processing:history,over view and perspective[J].Journal of Supercomputing,1993,7(1):24-31.
[2] 李濤.一種圖形處理器的輕核陣列機結構[J].西安郵電大學學報,2012,17(3):42-46.
[3] MAROWKA A,GAN R.Back to thin-core massively parallel  processors[J].IEEE Computer,2011,44(12):49-54.
[4] STALLINGS W.Operating systems Internals and design principles[M].Seven Edition,Prentice Hall,2012:158-171.
[5] Liu Chunglang,LAYLAND J W.Scheduling algorithms for  multiprogramming in a hard-real-time environment[J].Journal of the ACM,1973,20(1):46-61.
[6] 祁金才,張錦雄,黃毅,等.線性陣列上的奇偶歸拆排序并行算法的MPI實現[J].廣西大學學報(自然科學版),2005(S2):88-89.
[7] 官東.基于并行計算機的奇偶交換排序[J].荊門職業技術學院學報,1999,14(6):28-29.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 成人免费视频在 | 成人视品 | a毛片免费观看完整 | 成年人三级视频 | 精品一区二区三区在线观看l | 天天色天天射天天操 | 日本免费全黄一级裸片视频 | 日本免费视屏 | 欧美日韩在线观看区一二 | 黄色小视频在线播放 | 99视频在线观看精品 | 欧美中文在线 | 午夜免费福利片 | 狠狠色丁香久久婷婷综合_中 | 国产欧美日韩在线观看精品 | 亚洲国产成人久久综合一 | 一级毛片www | 欧美人猛交日本人xxx | 精品在线一区二区三区 | 欧美free性秘书xxxxhd | 美女视频永久黄网站免费观看国产 | 国产精品视频第一区二区三区 | 国产成人免费高清视频 | 日韩一级一片 | 人人添人人麦人人爽夜欢视频 | 免费看黄a级毛片 | 日本欧美高清全视频 | 韩国伦理片在线观看 | 99综合网| 日日干狠狠 | 日韩中文字幕一区 | 黄色片大全在线观看 | 国产自在线拍 | 欧美午夜一艳片欧美精品 | 在线天堂中文在线网 | 黄色肉肉视频 | 最新精品在线视频 | 劲爆欧美精品13页 | 欧美激情一区 | 亚洲精品欧美在线 | 手机看片精品高清国产日韩 |