《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 一種多線程輕核機(jī)器中進(jìn)程管理的硬件實(shí)現(xiàn)
一種多線程輕核機(jī)器中進(jìn)程管理的硬件實(shí)現(xiàn)
來(lái)源:電子技術(shù)應(yīng)用2013年第3期
王 維1,李 濤1,韓俊剛2
1.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安710061; 2.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安710061
摘要: 提出了一種多線程輕核處理器的進(jìn)程管理器硬件設(shè)計(jì)。為了得到更好的效果,該進(jìn)程管理器擁有一個(gè)內(nèi)建的事件管理器來(lái)監(jiān)測(cè)等待進(jìn)程的觸發(fā)條件,,進(jìn)程的調(diào)度也采用硬件實(shí)現(xiàn)。所設(shè)計(jì)的并行輕核處理器的任務(wù)管理器由ALU,、存儲(chǔ)系統(tǒng)和內(nèi)置路由器構(gòu)成,,用來(lái)處理進(jìn)程。
中圖分類號(hào): TP302,;TP393
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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

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

1 輕核陣列機(jī)
    本文設(shè)計(jì)了一種新型的多線程輕核處理器,,該輕核并行處理器是一個(gè)陣列機(jī),由多個(gè)處理單元簇(cluster)組成,,每個(gè)簇是由處理單元(PE)組成的一個(gè)二維陣列(2D Array),,是一種較常見(jiàn)的陣列結(jié)構(gòu)。一個(gè)基本簇(base cluster)通常是16個(gè)處理單元組成的4×4陣列,,如圖1所示,。其特點(diǎn)是:采用近鄰連接的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu);采用雙模式的指令集,,高效實(shí)現(xiàn)并行處理所需的線程間通信,;采用專用遠(yuǎn)程數(shù)據(jù)傳輸指令和多播方式及相應(yīng)的路由器,滿足了輸出數(shù)據(jù)的扇出需求和遠(yuǎn)距離線程間的數(shù)據(jù)通信,。

    上述特點(diǎn)需要高性能的線程管理機(jī)制[3]來(lái)提高執(zhí)行速度和效率。使用軟件來(lái)進(jìn)行線程調(diào)度無(wú)法滿足高性能并行計(jì)算的要求,因此設(shè)計(jì)了硬件的管理機(jī)制,。一個(gè)處理單元由一個(gè)ALU,、一個(gè)進(jìn)程控制器(t-control)、一個(gè)路由器(RU),、4個(gè)鄰接共享存儲(chǔ)(MISI),、一個(gè)數(shù)據(jù)存儲(chǔ)(D-men)和一個(gè)指令存儲(chǔ)(I-men)組成,整體結(jié)構(gòu)如圖2所示,。

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

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

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

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

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

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

    (2)然后根據(jù)調(diào)度算法調(diào)度1號(hào)進(jìn)程(cpu_creg為001)。信號(hào)cpu_flag為標(biāo)志信號(hào),,其為1表示寄存器R8或者R31沒(méi)有數(shù)據(jù),,此時(shí)發(fā)生阻塞,則掛起1號(hào)進(jìn)程,,同時(shí)啟用監(jiān)測(cè)模塊對(duì)1號(hào)進(jìn)程沒(méi)有數(shù)據(jù)的寄存器R31進(jìn)行監(jiān)測(cè),。
    (3)在監(jiān)測(cè)的同時(shí)根據(jù)調(diào)度算法調(diào)度2號(hào)進(jìn)程(cpu_
creg為010)。若2號(hào)進(jìn)程也發(fā)生了阻塞(cpu_flag為1),,則掛起2號(hào)進(jìn)程,,同時(shí)進(jìn)行2號(hào)進(jìn)程所需要的數(shù)據(jù)的監(jiān)測(cè);在2號(hào)進(jìn)程的執(zhí)行過(guò)程中1號(hào)進(jìn)程就緒,,這時(shí)2號(hào)進(jìn)程一旦掛起則調(diào)度1號(hào)進(jìn)程(cpu_creg為001)繼續(xù)執(zhí)行,,直到1號(hào)進(jìn)程執(zhí)行完成(t_over為1);重復(fù)以上操作,,處理完所有的進(jìn)程,。
3.2 奇偶排序
    基于奇偶原理和歸并—拆分模式[6-7],在線性陣列上實(shí)現(xiàn)并行排序,,步驟如下:
    (1)將6個(gè)數(shù)據(jù)分別存儲(chǔ)到6個(gè)pe的寄存器R0中,。
    (2)開(kāi)始進(jìn)行第一次偶排序,此時(shí)pe0,、pe2,、pe4分別讀取R30(CPU與右鄰的共享寄存器)的數(shù)據(jù),而pe1,、pe3,、pe5把數(shù)據(jù)從寄存器R0移到R28中,這樣3個(gè)pe并發(fā)地執(zhí)行第一次偶排序,。
    (3)開(kāi)始進(jìn)行第一次奇排序,,此時(shí)pe1、pe3通過(guò)R30讀取右鄰的pe2,、pe4中的數(shù)據(jù),,pe2、pe4在上次的偶排序時(shí)已經(jīng)把數(shù)據(jù)存放到自身寄存器R28中,這樣2個(gè)pe并發(fā)地執(zhí)行第一次奇排序,,pe0和pe5等待下次的偶排序,。
    (4)重復(fù)步驟(2)和步驟(3),最多執(zhí)行6/2=3次即可得到最后的結(jié)果,。
    多線程輕核陣列機(jī)是一個(gè)新提出的概念,,目前所采用的進(jìn)程管理器都是由軟件實(shí)現(xiàn),而對(duì)于輕核陣列機(jī)中的進(jìn)程調(diào)度采用軟件的方式很難實(shí)現(xiàn)高效的上下文轉(zhuǎn)換,,故本文采用硬件實(shí)現(xiàn)進(jìn)程管理,,對(duì)電路進(jìn)行了模塊劃分和詳細(xì)設(shè)計(jì),最后在Xilinx的ISE環(huán)境中完成了輕核陣列機(jī)的功能仿真和綜合,。硬件設(shè)計(jì)使得進(jìn)程的上下文轉(zhuǎn)換和監(jiān)測(cè)不占用處理器的處理時(shí)間,簡(jiǎn)化了進(jìn)程間的通信,,從而明顯地提高了執(zhí)行效率,。
參考文獻(xiàn)
[1] RAU B R,F(xiàn)ISHER J A.Instruction-level parallel processing:history,over view and perspective[J].Journal of Supercomputing,,1993,,7(1):24-31.
[2] 李濤.一種圖形處理器的輕核陣列機(jī)結(jié)構(gòu)[J].西安郵電大學(xué)學(xué)報(bào),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] 祁金才,,張錦雄,,黃毅,等.線性陣列上的奇偶?xì)w拆排序并行算法的MPI實(shí)現(xiàn)[J].廣西大學(xué)學(xué)報(bào)(自然科學(xué)版),,2005(S2):88-89.
[7] 官東.基于并行計(jì)算機(jī)的奇偶交換排序[J].荊門職業(yè)技術(shù)學(xué)院學(xué)報(bào),,1999,14(6):28-29.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。