專利名稱:滿足SystemC的處理器中的分布式動(dòng)態(tài)進(jìn)程生成單元的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種多核處理器,更具體地,本發(fā)明涉及一種在滿足SystemC的處理 器中基于句柄的分布式動(dòng)態(tài)進(jìn)程生成方法與單元。
背景技術(shù):
近年來,多核處理器技術(shù)得到了蓬勃發(fā)展。究其原因,主要有以下幾點(diǎn)第一,設(shè)計(jì) 需求;硅的成本越來越低,集成度越來越高,多核的規(guī)則結(jié)構(gòu)可簡(jiǎn)單有效的利用更多的硅面 積;第二,業(yè)務(wù)需求;多媒體業(yè)務(wù)越來越復(fù)雜,要求平臺(tái)的靈活性和處理性能越來越高,同 時(shí)還要求功耗保持在允許的范圍內(nèi),多核處理器可潛在提供最高性能功耗比,可供更高性 能的計(jì)算和靈活性;第三,上市時(shí)間(Time to market)需求;上市時(shí)間要求越來越短,多核 處理器的集中開發(fā)可以滿足所需上市時(shí)間。 通常,多核有以下兩種發(fā)展模式。第一類多核處理器不改變現(xiàn)有順序執(zhí)行的設(shè)計(jì) 流程和編程模式,只是采用更先進(jìn)的編譯技術(shù)來適應(yīng)多核的架構(gòu)。多核在這里起的作用僅 是代替單核而提供更多的計(jì)算功能。目前多數(shù)的處理器,無(wú)論是單核還是多核,都采用順序 執(zhí)行的編程模型。在這種模型下,為了支持多任務(wù),引入了支持多任務(wù)的操作系統(tǒng)。操作系 統(tǒng)可以為進(jìn)行多任務(wù)編程和并行執(zhí)行代碼提供途徑。但是,在存在操作系統(tǒng)和多個(gè)任務(wù)并 行存在的情況下,整個(gè)嵌入式系統(tǒng)又變得相對(duì)十分復(fù)雜,調(diào)試難度與單核單任務(wù)相比大大 增加;第二類處理器采用并行語(yǔ)言和編程模式,根據(jù)并行語(yǔ)言和編程模式的需要來設(shè)計(jì)處 理器的物理架構(gòu)。采用這種方式設(shè)計(jì)的多核處理器能夠與并行語(yǔ)言緊密配合,并期望克服 第一類處理器調(diào)試?yán)щy和電量浪費(fèi)的缺點(diǎn)。 現(xiàn)有的多核處理器都屬于第一類,而第二類處理器仍然處于發(fā)展初期。SystemC優(yōu) 化的多核處理器屬于第二類,它是一種系統(tǒng)化的多核解決方案。采用并行的SystemC作為 編程語(yǔ)言,專門設(shè)計(jì)了針對(duì)SystemC語(yǔ)法優(yōu)化的處理單元。 多核處理器一般由處理單元、各種外設(shè),以及將處理單元和各種外設(shè)互聯(lián)在一起 的片上網(wǎng)絡(luò)構(gòu)成。片上網(wǎng)絡(luò)進(jìn)一步由交換單元和它們之間的連接線構(gòu)成。
—個(gè)完整的應(yīng)用包括動(dòng)態(tài)進(jìn)程和靜態(tài)進(jìn)程。在設(shè)計(jì)時(shí),由靜態(tài)進(jìn)程映射算法為每 一個(gè)靜態(tài)進(jìn)程分配一個(gè)固定的處理單元,現(xiàn)有文獻(xiàn)公開的靜態(tài)進(jìn)程映射算法比較多。為動(dòng) 態(tài)進(jìn)程分配處理單元的過程稱作動(dòng)態(tài)進(jìn)程映射,對(duì)應(yīng)的算法稱作動(dòng)態(tài)進(jìn)程映射算法。
現(xiàn)有文獻(xiàn)中已經(jīng)公開的動(dòng)態(tài)進(jìn)程映射方法主要包括(l)首先發(fā)現(xiàn)優(yōu)先 (FirstFree),即從處理單元(l,l)開始順序搜索,找到第一個(gè)空閑處理單元;(2)最近鄰 居優(yōu)先(Nearest Neighbor),即圍繞父進(jìn)程所在處理單元,搜索距離最近的一個(gè)空閑鄰居; (3)最小最大鏈路負(fù)載,這是一種力圖減少片上網(wǎng)絡(luò)鏈路擁塞的映射算法,力圖使得片上網(wǎng) 絡(luò)鏈路的最大負(fù)載最小化;(4)最小平均鏈路負(fù)載,與最小最大鏈路負(fù)載映射算法不同的 是這種算法力圖使得片上網(wǎng)絡(luò)鏈路的平均負(fù)載最小化;(5)路徑負(fù)載,這種算法只考慮對(duì) 于即將生成的子進(jìn)程,使得新增路徑總負(fù)載最小。 選定動(dòng)態(tài)進(jìn)程映射算法,進(jìn)程動(dòng)態(tài)生成子進(jìn)程的具體實(shí)現(xiàn)方法一般為在多核處理器中存在一個(gè)專門的處理單元復(fù)雜進(jìn)程生成任務(wù)。當(dāng)一個(gè)進(jìn)程在運(yùn)行時(shí)動(dòng)態(tài)生成子進(jìn)程 時(shí)并不自行搜索可用的空閑處理單元,而是請(qǐng)求中央管理處理單元為其選擇和分配一個(gè)可 用的空閑處理單元,中央管理處理單元將所選擇的空閑處理單元激活并使其運(yùn)行子進(jìn)程所 對(duì)應(yīng)的程序指令和數(shù)據(jù)。 這種集中式的動(dòng)態(tài)生成子進(jìn)程生成方法并不適合SystemC優(yōu)化的多核處理器。根 據(jù)SystemC語(yǔ)法的特點(diǎn),更適合采用分布式方法一個(gè)進(jìn)程根據(jù)運(yùn)行需要?jiǎng)討B(tài)生成子進(jìn)程, 它主動(dòng)搜索可用的空閑處理單元,將其激活并使其運(yùn)行子進(jìn)程所對(duì)應(yīng)的程序指令和數(shù)據(jù), 子進(jìn)程運(yùn)行完成后,釋放所占用的資源,重新將所在的處理單元置為空閑。分布式方法需 要解決的問題包括一、在多個(gè)父進(jìn)程同時(shí)試圖選用某一處理單元作為可用處理單元時(shí)會(huì) 產(chǎn)生競(jìng)爭(zhēng)沖突,采用軟件解決效率較低;二、通過中斷激活選中的可用處理單元運(yùn)行子進(jìn)程 時(shí),運(yùn)行支持的個(gè)數(shù)有限;三、父進(jìn)程通常需要多個(gè)子進(jìn)程全部執(zhí)行完畢后才能繼續(xù),采用 傳統(tǒng)的軟件層同步的方法效率不高。
發(fā)明內(nèi)容
為克服現(xiàn)有基于軟件的分布式動(dòng)態(tài)進(jìn)程生成方法解決競(jìng)爭(zhēng)沖突和子進(jìn)程同步整 體運(yùn)行效率低、允許的最大運(yùn)行子進(jìn)程數(shù)量有限的缺陷,針對(duì)SystemC語(yǔ)言的語(yǔ)法特點(diǎn),本 發(fā)明提出了在支持SystemC的處理器中的一種基于句柄的分布式動(dòng)態(tài)進(jìn)程生成方法與單 元。 根據(jù)本發(fā)明的一個(gè)方面,提供了一種滿足SystemC語(yǔ)法的多核處理器的處理單 元,包括動(dòng)態(tài)進(jìn)程生成單元,用于基于進(jìn)程句柄使用地址重新映射來生成動(dòng)態(tài)進(jìn)程;
所述動(dòng)態(tài)進(jìn)程生成單元包括數(shù)據(jù)接收引擎、數(shù)據(jù)發(fā)送引擎、動(dòng)態(tài)進(jìn)程生成引擎和 SC_SPAWN寄存器組; 其中,所述SC_SPAWN寄存器組用于存儲(chǔ)進(jìn)程句柄、進(jìn)程生成命令和進(jìn)程處理單元 地址;所述動(dòng)態(tài)進(jìn)程生成引擎根據(jù)SC_SPAWN寄存器組中的進(jìn)程句柄和進(jìn)程生成命令并通 過所述進(jìn)程處理單元地址來控制數(shù)據(jù)發(fā)送引擎發(fā)送數(shù)據(jù)包;所述數(shù)據(jù)發(fā)送引擎根據(jù)來自動(dòng) 態(tài)進(jìn)程生成引擎的發(fā)送請(qǐng)求來發(fā)送數(shù)據(jù)包到交換單元適配器;所述數(shù)據(jù)接收引擎接收來自 交換單元適配器的數(shù)據(jù)包,確定所述數(shù)據(jù)包中所包含的內(nèi)容并提交給動(dòng)態(tài)進(jìn)程生成引擎。
其中,所述動(dòng)態(tài)進(jìn)程生成單元通過信號(hào)組連接到處理器核交換單元橋,所述信號(hào) 組用于實(shí)現(xiàn)處理器數(shù)據(jù)和指令總線地址到實(shí)際存儲(chǔ)器地址的轉(zhuǎn)換。 其中,所述信號(hào)組包括存儲(chǔ)器的基地址、存儲(chǔ)器所在的外設(shè)單元的坐標(biāo)和翻譯地 址。 其中,所述動(dòng)態(tài)進(jìn)程生成單元還包括進(jìn)程狀態(tài)寄存器,所述動(dòng)態(tài)進(jìn)程生成引擎維 護(hù)所述進(jìn)程狀態(tài)寄存器當(dāng)本地處理器核運(yùn)行的進(jìn)程為靜態(tài)進(jìn)程,將進(jìn)程狀態(tài)寄存器更新 為"靜態(tài)鎖定";當(dāng)在"空閑"狀態(tài)下接收到來自其他處理器核的子進(jìn)程生成請(qǐng)求,將進(jìn)程狀 態(tài)寄存器更新為"動(dòng)態(tài)鎖定";當(dāng)一個(gè)動(dòng)態(tài)進(jìn)程執(zhí)行完畢,將進(jìn)程狀態(tài)寄存器更新為"空閑"。
其中,當(dāng)需要?jiǎng)討B(tài)生成子進(jìn)程的父進(jìn)程搜索可用的處理單元并發(fā)送子進(jìn)程生成請(qǐng) 求時(shí),所述動(dòng)態(tài)進(jìn)程生成單元將可用的處理單元鎖定為候選處理單元并發(fā)送遠(yuǎn)程存儲(chǔ)器地 址映射信息;所述父進(jìn)程設(shè)定子進(jìn)程的句柄,并向候選處理單元發(fā)送進(jìn)程啟動(dòng)請(qǐng)求并攜帶 進(jìn)程句柄;候選處理單元執(zhí)行進(jìn)程,返回進(jìn)程句柄。
其中,通過讓句柄值等于子進(jìn)程編號(hào)來設(shè)定所述子進(jìn)程的句柄。 其中,所述SC_SPAWN寄存器組包括 子進(jìn)程句柄寄存器,存儲(chǔ)子進(jìn)程的句柄的表示; 動(dòng)態(tài)進(jìn)程生成命令寄存器,本地處理器核向該寄存器寫入命令,數(shù)據(jù)發(fā)送引擎根 據(jù)該寄存器的值執(zhí)行生成命令; 目的子進(jìn)程所在處理單元地址、本子進(jìn)程所在處理單元地址和子進(jìn)程生成命令執(zhí) 行狀態(tài)寄存器。 根據(jù)本發(fā)明的另一個(gè)方面,提供了一種滿足SystemC語(yǔ)法的多核處理器的處理單 元的動(dòng)態(tài)進(jìn)程生成方法,包括 步驟10)、需要?jiǎng)討B(tài)生成子進(jìn)程的父進(jìn)程搜索可用的處理單元并發(fā)送子進(jìn)程生成
請(qǐng)求時(shí),鎖定可用的處理單元為候選處理單元并發(fā)送遠(yuǎn)程存儲(chǔ)器地址映射信息; 步驟20)、所述父進(jìn)程設(shè)定子進(jìn)程的句柄,并向候選處理單元發(fā)送攜帶進(jìn)程句柄的
進(jìn)程啟動(dòng)請(qǐng)求; 步驟30)、候選處理單元執(zhí)行進(jìn)程,返回進(jìn)程句柄。 其中,步驟10)還包括所述父進(jìn)程搜索可用的處理單元前,將處理單元所運(yùn)行進(jìn) 程更新為靜態(tài)進(jìn)程。 其中,步驟10)還包括若當(dāng)前遠(yuǎn)程處理單元的進(jìn)程狀態(tài)寄存器為"空閑",則將進(jìn) 程狀態(tài)寄存器更新為"動(dòng)態(tài)鎖定";向發(fā)送請(qǐng)求的處理單元發(fā)送"動(dòng)態(tài)鎖定成功"應(yīng)答,將當(dāng) 前遠(yuǎn)程處理單元鎖定為候選處理單元。
其中,步驟20)還包括當(dāng)本地處理器核向動(dòng)態(tài)進(jìn)程生成命令寄存器寫入"遠(yuǎn)程更
新存儲(chǔ)器地址映射信息"命令時(shí),通過數(shù)據(jù)發(fā)送引擎向處理器核交換單元橋地址空間轉(zhuǎn)換
遠(yuǎn)程坐標(biāo)地址所指示的遠(yuǎn)程處理單元發(fā)送的所在動(dòng)態(tài)進(jìn)程生成單元的寄存器的值。
其中,步驟20)還包括向遠(yuǎn)程坐標(biāo)地址所指示的遠(yuǎn)程處理單元發(fā)送包含"進(jìn)程啟
動(dòng)請(qǐng)求"命令和句柄信息的遠(yuǎn)程進(jìn)程啟動(dòng)請(qǐng)求數(shù)據(jù)包,接收到該數(shù)據(jù)包的遠(yuǎn)程處理單元存
儲(chǔ)接收到的句柄值并觸發(fā)所在處理單元的處理器核復(fù)位。 其中,步驟30)還包括當(dāng)遠(yuǎn)程處理器核寫入"遠(yuǎn)程進(jìn)程釋放"命令,則向遠(yuǎn)程坐標(biāo) 地址所指示的處理單元發(fā)送攜帶緩存的句柄信息的"遠(yuǎn)程進(jìn)程釋放"應(yīng)答,確定對(duì)應(yīng)的子進(jìn) 程完成執(zhí)行。 根據(jù)本發(fā)明的處理單元支持在多核處理器內(nèi)的分布式的動(dòng)態(tài)進(jìn)程生成過程,可廣 泛應(yīng)用于不同的多核處理器中,尤其是應(yīng)用于SystemC優(yōu)化的多核處理器中。
圖1為SystemC優(yōu)化的多核處理器示意圖; 圖2為SystemC優(yōu)化的多核處理器的處理單元示意圖; 圖3為根據(jù)本發(fā)明實(shí)施例的具有動(dòng)態(tài)進(jìn)程生成單元的SystemC的多核處理器的處 理單元示意圖; 圖4為根據(jù)本發(fā)明實(shí)施例的動(dòng)態(tài)進(jìn)程生成單元的實(shí)施例結(jié)構(gòu)框圖。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明提供的一種滿足SystemC語(yǔ)法的多核處理 器中的分布式動(dòng)態(tài)進(jìn)程生成方法和單元進(jìn)行詳細(xì)描述。 針對(duì)SystemC優(yōu)化的多核處理器希望采用SystemC作為多核的軟件開發(fā)語(yǔ)言。 SystemC是C++的擴(kuò)展庫(kù),1999年,EDA業(yè)界的Cadence、 Synopsys、 ARM等公司共同組織開 發(fā)基于C++的EDA語(yǔ)言,從而誕生了 SystemC。在2006年,SystemC正式成為IEEE標(biāo)準(zhǔn),成 為所有EDA軟件支持的VHDL、 Verilog之后的第三種自然語(yǔ)言。 SystemC能夠提供更高的設(shè)計(jì)效率、更有效的設(shè)計(jì)流程,從而可以幫助解決集成電 路產(chǎn)業(yè)面臨的爆炸性的復(fù)雜度、上市壓力、成本上升等問題。 SystemC語(yǔ)言本身是C++的擴(kuò)展,因此,雖然SystemC目前被廣泛應(yīng)用于集成電 路設(shè)計(jì)中的系統(tǒng)驗(yàn)證,它實(shí)際上也可以用來做多核嵌入式開發(fā)軟件。如果多核處理器支持 SystemC語(yǔ)言中的特定語(yǔ)法,那么基于SystemC的多核嵌入式開發(fā)將有效簡(jiǎn)化嵌入式系統(tǒng) 的開發(fā)難度,增加開發(fā)效率,并實(shí)現(xiàn)更加有效的處理器功耗管理。 圖1是與本申請(qǐng)為同一申請(qǐng)人提出的申請(qǐng)?zhí)枮?00810117019. 1的專利申請(qǐng)中的 一個(gè)滿足SystemC的基于二維陣列的8核處理器的示意圖。在該申請(qǐng)中公開的SystemC優(yōu) 化的多核處理器具有常見的二維陣列結(jié)構(gòu),多個(gè)交換單元B及其連接線C構(gòu)成的片上網(wǎng)絡(luò)。 SystemC優(yōu)化的處理單元H通過交換單元適配器E連接到交換單元S,與其它處理單元或者 多個(gè)外設(shè)A1-A12進(jìn)行通信。處理單元H不通過其具有的本地資源單元與其它處理單元直 接連接。 圖2為SystemC優(yōu)化的多核處理器的處理單元示意圖。處理單元包括一個(gè)處理器 核H0,以及通過本地總線H2與處理器核相連接的可選的定時(shí)器組H3、可選的片上存儲(chǔ)器 H4、可選的處理器核與交換單元適配器橋H5。處理器交換單元適配器橋H5與本地總線H2 和交換單元適配器E相連接,是處理器核Hl直接與外界通信的通道,用于處理器核直接訪 問片上其它處理單元和外設(shè)單元,并用于處理器核指令和數(shù)據(jù)總線接口與交換單元適配器 之間的通信。交換單元適配器E與處理單元內(nèi)的片上存儲(chǔ)器H4相連接,允許外界訪問處理 單元內(nèi)的片上存儲(chǔ)器。 多核處理器的SystemC優(yōu)化的處理單元,還包括一個(gè)由SystemC優(yōu)化的事件處理 單元組H61、SystemC優(yōu)化的先進(jìn)先出隊(duì)列單元組朋2和SystemC優(yōu)化的互斥和信號(hào)量單元 組朋3構(gòu)成的處理器核本地資源單元H6。 SystemC優(yōu)化的事件處理單元組H61、SystemC優(yōu) 化的先進(jìn)先出隊(duì)列單元組朋2和SystemC優(yōu)化的互斥和信號(hào)量單元組朋3分別連接到交換 單元適配器E,用于和外界通信。處理器核本地資源單元H6、片上存儲(chǔ)器H4、定時(shí)器組H3還 分別連接到處理器核運(yùn)行時(shí)控制器H8,并通過信號(hào)H71、H72、H731、H74、H75向處理器核運(yùn) 行時(shí)控制器H8發(fā)送處理器暫停和繼續(xù)執(zhí)行通知。處理器核運(yùn)行時(shí)控制器H8將這些通知合 并后向處理器核輸出運(yùn)行/停止信號(hào)H9。 本地資源單元H6的SystemC優(yōu)化的事件處理單元組H61、 SystemC優(yōu)化的先進(jìn)先 出隊(duì)列單元組H62和SystemC優(yōu)化的互斥和信號(hào)量單元組H63可以不依賴于本地資源單元 內(nèi)的其它子模塊而存在。也就是說,本地資源H6可以包括SystemC優(yōu)化的事件處理單元組 H61、 SystemC優(yōu)化的先進(jìn)先出隊(duì)列單元組H62和SystemC優(yōu)化的互斥和信號(hào)量單元組H63 的其中一個(gè)或者多個(gè)。
定時(shí)器組H3包括多個(gè)定時(shí)器,每個(gè)定時(shí)器向事件處理單元組的對(duì)應(yīng)單元輸出一 個(gè)超時(shí)通知信號(hào),多個(gè)通知信號(hào)構(gòu)成信號(hào)組Ml 。 事件處理單元組按照SystemC語(yǔ)法的sc_event、 sc_event_queue的各種公有函 數(shù)、wait (...)函數(shù)的各種形式以及SC_THREAD和SC_METH0D敏感表實(shí)現(xiàn)邏輯電路,用于發(fā) 送激活和暫停處理器的信號(hào),并允許軟件開發(fā)工具的映射算法將位于不同處理單元的多個(gè) 事件處理單元組進(jìn)行組合,完成多個(gè)sc_event或者sc_event_queue語(yǔ)法單元所定義的功 會(huì)g、 wait (...)函數(shù)的功能、SC_THREAD和SC_METH0D敏感表功能。 同一申請(qǐng)人于2008年7月22日提交的名稱為"一種滿足SystemC語(yǔ)法的多核處理 器"申請(qǐng)?zhí)枮?00810117019. 9、2008年7月22日提交的名稱為"一種滿足SystemC語(yǔ)法的 多核處理器的事件處理單元組"申請(qǐng)?zhí)枮?00810117020. 1、2008年7月22日提交的名稱為 "一種滿足SystemC語(yǔ)法的多核處理器的互斥和信號(hào)量單元組"申請(qǐng)?zhí)枮?00810117018. 4 以及2008年7月22日提交的名稱為"一種滿足SystemC語(yǔ)法的多核處理器的先進(jìn)先出隊(duì) 列單元組"申請(qǐng)?zhí)枮?00810117016. 5的申請(qǐng)中,詳細(xì)描述了上述的滿足SystemC語(yǔ)法的多 核處理器的不同的結(jié)構(gòu),上述申請(qǐng)的全部?jī)?nèi)容通過引用包括在本申請(qǐng)中。
圖3示出根據(jù)本發(fā)明的實(shí)施例的多核處理器的SystemC優(yōu)化的處理單元,它在圖 2的基礎(chǔ)上,添加一個(gè)動(dòng)態(tài)進(jìn)程生成單元Hl。 HI通過信號(hào)Hll連接到處理器核HO,通過信 號(hào)組H12連接到處理器核交換單元橋H5,并且與本地總線H2相連接,還可以連接到交換單 元適配器E。 信號(hào)組H12的作用是實(shí)現(xiàn)處理器數(shù)據(jù)和指令總線地址到實(shí)際存儲(chǔ)器地址的轉(zhuǎn)換, 因?yàn)楫?dāng)運(yùn)行不同的進(jìn)程時(shí),處理器總是從指定的總線地址獲取數(shù)據(jù)和指令,而不同的進(jìn)程 則存儲(chǔ)于不同的存儲(chǔ)器地址中,因此需要?jiǎng)討B(tài)進(jìn)程生成單元H1輸出信號(hào)組H12根據(jù)進(jìn)程的 不同來實(shí)現(xiàn)不同的數(shù)據(jù)和指令總線地址到實(shí)際存儲(chǔ)器地址的轉(zhuǎn)換。 一個(gè)典型的H12信號(hào)組 包括存儲(chǔ)器的基地址RBASE,存儲(chǔ)器所在的外設(shè)單元的坐標(biāo)(X,Y),翻譯地址RTRANS。假設(shè) 處理器輸出地址addr,則對(duì)應(yīng)的存儲(chǔ)器地址為((X, Y)左移32位)加((addr位與RTRANS) 加RBASE)。 HI通過信號(hào)Hll連接到處理器核,通知處理器核產(chǎn)生一般中斷或者復(fù)位中斷,從 中斷對(duì)應(yīng)的數(shù)據(jù)和指令總線地址重新執(zhí)行。 圖4為根據(jù)本發(fā)明的動(dòng)態(tài)進(jìn)程生成單元H1的的一個(gè)示例性結(jié)構(gòu)框圖。如圖4,根 據(jù)本發(fā)明的動(dòng)態(tài)進(jìn)程生成單元H1包括 數(shù)據(jù)接收引擎H10、數(shù)據(jù)接收引擎H12、動(dòng)態(tài)進(jìn)程生成引擎H15、SC SPA麗寄存器組 H13、本地總線接口 H17和進(jìn)程狀態(tài)寄存器H14。其中,所述本地總線接口 H17與處理器核 本地總線H2和SC SPAWN寄存器組H13連接,數(shù)據(jù)接收引擎H12與動(dòng)態(tài)進(jìn)程生成引擎H15 和交換單元適配器E連接,數(shù)據(jù)接收引擎H12與動(dòng)態(tài)進(jìn)程生成引擎H15和交換單元適配器 E連接,動(dòng)態(tài)進(jìn)程生成引擎H12還連接到SC_SPAWN寄存器組H13和進(jìn)程狀態(tài)寄存器H14,并 輸出一個(gè)信號(hào)Hll給所在處理單元的處理器核。SC_SPAWN寄存器組還輸出一組信號(hào)H12給 處理器核交換單元橋H5。 其中,數(shù)據(jù)接收引擎H12接收來自交換單元適配器E的數(shù)據(jù)包,提取所述數(shù)據(jù)包中 包含的凈核并提交給動(dòng)態(tài)進(jìn)程生成引擎H15,凈核的具體內(nèi)容取決于發(fā)送該數(shù)據(jù)包的數(shù)據(jù) 發(fā)送引擎。
數(shù)據(jù)發(fā)送引擎H10根據(jù)來自動(dòng)態(tài)進(jìn)程生成引擎H15的發(fā)送請(qǐng)求,發(fā)送滿足交換單 元適配器E所要求的格式的數(shù)據(jù)包。 動(dòng)態(tài)進(jìn)程生成引擎H15維護(hù)進(jìn)程狀態(tài)寄存器H14的值,根據(jù)本地處理器核HO對(duì)
SC_SPAWN寄存器組H13的操作結(jié)果來控制數(shù)據(jù)發(fā)送引擎H15發(fā)送數(shù)據(jù)包。 —般地,SC_SPAWN寄存器組HI3包括 (1)子進(jìn)程句柄寄存器H130,表示子進(jìn)程的句柄; (2)子進(jìn)程同步等待寄存器H131,父進(jìn)程可以通過寫該寄存器等待需要同時(shí)完成 執(zhí)行子進(jìn)程全部來完成執(zhí)行; (3)動(dòng)態(tài)進(jìn)程生成命令寄存器H132,本地處理器核向該寄存器寫入命令,數(shù)據(jù)發(fā) 送引擎HIO根據(jù)該寄存器的值執(zhí)行相應(yīng)的命令;
(4)目的子進(jìn)程所在處理單元地址H133 ;
(5)本子進(jìn)程所在處理單元地址H134 ;
(6)子進(jìn)程生成命令執(zhí)行狀態(tài)寄存器H138。 動(dòng)態(tài)進(jìn)程生成單元H1輸出信號(hào)組H12根據(jù)進(jìn)程的不同實(shí)現(xiàn)不同的數(shù)據(jù)和指令總 線地址到實(shí)際存儲(chǔ)器地址的轉(zhuǎn)換。 一個(gè)典型的H12信號(hào)組包括存儲(chǔ)器的基地址RBASE,來 自處理器核交換單元橋H5地址空間轉(zhuǎn)換基地址H135 ;存儲(chǔ)器所在的外設(shè)單元的坐標(biāo)(X, Y),來自處理器核交換單元橋H5地址空間轉(zhuǎn)換遠(yuǎn)程坐標(biāo)地址H137 ;翻譯地址RTRANS,來自 處理器核交換單元橋H5地址空間轉(zhuǎn)換翻譯地址H136。 寄存器狀態(tài)寄存器H14的值由動(dòng)態(tài)進(jìn)程生成引擎H15維護(hù)。初始化,進(jìn)程狀態(tài)寄 存器H14的值為"空閑";當(dāng)本地處理器核運(yùn)行的進(jìn)程為靜態(tài)進(jìn)程,則本地處理器核通過動(dòng)態(tài) 進(jìn)程生成命令寄存器H132通知?jiǎng)討B(tài)進(jìn)程生成引擎H15將進(jìn)程狀態(tài)寄存器H14更新為"靜態(tài) 鎖定";當(dāng)接收到來自其他處理器核的子進(jìn)程生成請(qǐng)求,則動(dòng)態(tài)進(jìn)程生成引擎H15將進(jìn)程狀 態(tài)寄存器H14更新為"動(dòng)態(tài)鎖定"。當(dāng)一個(gè)動(dòng)態(tài)進(jìn)程執(zhí)行完畢,本地處理器核通過動(dòng)態(tài)進(jìn)程 生成命令寄存器H132通知?jiǎng)討B(tài)進(jìn)程生成引擎H15將進(jìn)程狀態(tài)寄存器H14更新為"空閑"。
動(dòng)態(tài)進(jìn)程生成命令寄存器H132包括以下的典型命令。 1、本地靜態(tài)鎖定進(jìn)程狀態(tài)寄存器H14加電復(fù)位后初始化為"空閑"。當(dāng)本地處理 單元運(yùn)行了一個(gè)靜態(tài)進(jìn)程時(shí),或者當(dāng)本地處理器核HO向動(dòng)態(tài)進(jìn)程生成命令寄存器H132寫 入"本地靜態(tài)鎖定"命令,則動(dòng)態(tài)進(jìn)程生成引擎H15將本地進(jìn)程狀態(tài)寄存器的值更新為"靜 態(tài)鎖定",代表本處理單元所運(yùn)行進(jìn)程為靜態(tài)進(jìn)程。 2、發(fā)送子進(jìn)程生成請(qǐng)求當(dāng)本地處理單元運(yùn)行了一個(gè)需要?jiǎng)討B(tài)生成子進(jìn)程的父進(jìn) 程并且該父進(jìn)程需要生成子進(jìn)程時(shí),本地處理單元的處理器核首先搜索可用的處理單元, 確定下一個(gè)要搜索的遠(yuǎn)程處理單元后,將該遠(yuǎn)程初始化遠(yuǎn)程處理單元的坐標(biāo)寫入遠(yuǎn)程地址 寄存器H137。當(dāng)本地處理器核HO向動(dòng)態(tài)進(jìn)程生成命令寄存器H132寫入"子進(jìn)程生成請(qǐng)求" 命令,則動(dòng)態(tài)進(jìn)程生成引擎H15通過數(shù)據(jù)發(fā)送引擎H10向遠(yuǎn)程坐標(biāo)地址H137所指示的遠(yuǎn)程 處理單元發(fā)送子進(jìn)程生成請(qǐng)求,此時(shí),數(shù)據(jù)發(fā)送引擎H10發(fā)送的數(shù)據(jù)包的凈核為"子進(jìn)程生 成請(qǐng)求"命令。所述遠(yuǎn)程處理單元的動(dòng)態(tài)進(jìn)程生成引擎H15通過數(shù)據(jù)接收引擎H12接收來 自其他處理單元的"子進(jìn)程生成請(qǐng)求"。若當(dāng)前遠(yuǎn)程處理單元的進(jìn)程狀態(tài)寄存器H14為"空 閑",則遠(yuǎn)程處理單元將進(jìn)程狀態(tài)寄存器H14更新為"動(dòng)態(tài)鎖定",將發(fā)送該數(shù)據(jù)包的處理單 元的地址寫入其遠(yuǎn)程坐標(biāo)地址寄存器H137。并通過數(shù)據(jù)接收引擎HIO向發(fā)送請(qǐng)求的處理單元發(fā)送"動(dòng)態(tài)鎖定成功"應(yīng)答。若狀態(tài)為"動(dòng)態(tài)鎖定",則發(fā)送"重新嘗試鎖定"應(yīng)答,若狀態(tài) 為"靜態(tài)鎖定",則遠(yuǎn)程處理單元的"動(dòng)態(tài)鎖定失敗"應(yīng)答。 3、更新遠(yuǎn)程存儲(chǔ)器地址映射信息如果發(fā)送子進(jìn)程生成請(qǐng)求返回的結(jié)果是"動(dòng)態(tài) 鎖定成功",則當(dāng)前遠(yuǎn)程處理單元被鎖定為候選處理單元,否則當(dāng)前遠(yuǎn)程處理單元不可用, 當(dāng)本地處理器核繼續(xù)搜索可用的處理單元。當(dāng)當(dāng)前遠(yuǎn)程處理單元被鎖定為候選處理單元 時(shí),本地處理器核開始更新遠(yuǎn)程存儲(chǔ)器地址映射信息。當(dāng)本地處理器核HO向動(dòng)態(tài)進(jìn)程生成 命令寄存器H132寫入"遠(yuǎn)程更新存儲(chǔ)器地址映射信息"命令時(shí),動(dòng)態(tài)進(jìn)程生成引擎H15通 過數(shù)據(jù)發(fā)送引擎H10向處理器核交換單元橋H5地址空間轉(zhuǎn)換遠(yuǎn)程坐標(biāo)地址H137所指示的 遠(yuǎn)程處理單元發(fā)送所在動(dòng)態(tài)進(jìn)程生成單元的寄存器H135、H136、H137的值。接收到該信息 的遠(yuǎn)程處理單元所在動(dòng)態(tài)進(jìn)程生成單元將這些值輸出到Hl 1 。 4、啟動(dòng)遠(yuǎn)程進(jìn)程當(dāng)本地處理器核HO向動(dòng)態(tài)進(jìn)程生成命令寄存器H132寫入"遠(yuǎn)程 進(jìn)程啟動(dòng)"命令,則動(dòng)態(tài)進(jìn)程生成引擎H15通過數(shù)據(jù)發(fā)送引擎H10向遠(yuǎn)程坐標(biāo)地址H137所 指示的遠(yuǎn)程處理單元發(fā)送遠(yuǎn)程進(jìn)程啟動(dòng)請(qǐng)求數(shù)據(jù)包,該數(shù)據(jù)包除包含"進(jìn)程啟動(dòng)請(qǐng)求"命令 外,還攜帶句柄信息寄存器H130的值。接收到該請(qǐng)求的遠(yuǎn)程處理單元的動(dòng)態(tài)進(jìn)程生成單元 將存儲(chǔ)接收到的句柄值并輸出復(fù)位脈沖到Hll。該復(fù)位脈沖觸發(fā)所在處理單元的處理器核 復(fù)位。 5、遠(yuǎn)程進(jìn)程釋放當(dāng)遠(yuǎn)程處理器核HO向其動(dòng)態(tài)進(jìn)程生成命令寄存器H132寫入"遠(yuǎn) 程進(jìn)程釋放"命令,則其動(dòng)態(tài)進(jìn)程生成引擎H15通過其數(shù)據(jù)發(fā)送引擎H10向遠(yuǎn)程坐標(biāo)地址 H137所指示的處理單元發(fā)送"遠(yuǎn)程進(jìn)程釋放"應(yīng)答并攜帶緩存的句柄信息。遠(yuǎn)程坐標(biāo)地址 H137所指示的處理單元接收到該信息后,知道對(duì)應(yīng)的子進(jìn)程已經(jīng)完成執(zhí)行。
根據(jù)本發(fā)明的實(shí)施例的動(dòng)態(tài)進(jìn)程生成單元Hl進(jìn)行動(dòng)態(tài)進(jìn)程生成的例子如下
假設(shè)在圖1的8核SystemC優(yōu)化的多核處理器中,靜態(tài)進(jìn)程parent—thread是一 個(gè)父進(jìn)程,運(yùn)行于處理單元PE(l,O)中,其SystemC框架代碼如下
int child—thread(const char氺strx) set_state_to_static();
void parent—thread 0
int rl, r2 j SC—FORK
sc_spawn(&rl, sc_bind(child_thread, 〃 First" ),//thread0 sc_spawn(&r2, sc_bind(child_thread, 〃 second" ),//threadl SC—JOIN
r6turn j
由SC_F0RK. . SCJOIN生成了兩個(gè)進(jìn)程,這兩個(gè)進(jìn)程同時(shí)退出后,SC_F0RK. . SC—JOIN后面的代碼才能執(zhí)行。 對(duì)于進(jìn)程parent_thread,其動(dòng)態(tài)進(jìn)程生成單元的進(jìn)程狀態(tài)寄存器被set_state_ t0_StatiC()函數(shù)設(shè)置為"靜態(tài)鎖定"。 對(duì)于SystemC優(yōu)化的處理器,設(shè)計(jì)工具自動(dòng)地將原始的SystemC代碼翻譯為C形 式的代碼,此時(shí)child_thread (const char*strx)被翻譯為兩份,在翻譯并編譯后,對(duì)應(yīng)的 二進(jìn)制代碼被存儲(chǔ)在主存儲(chǔ)器的兩個(gè)不同空間空間O和空間1。這里假設(shè)A8為主存儲(chǔ)器, 空間0的起始地址為位于(1,3)的存儲(chǔ)器的地址0x10000,假設(shè)空間1的起始地址為位 于(1,3)的存儲(chǔ)器的地址0x20000,進(jìn)一步假設(shè)動(dòng)態(tài)進(jìn)程生成單元HI向處理器核HO發(fā)送的 信號(hào)H12為復(fù)位信號(hào),且處理器核的復(fù)位向量地址為0。當(dāng)進(jìn)程parent—thread執(zhí)行到SC_ FORK. . SCJOIN,則相應(yīng)的翻譯后的代碼的執(zhí)行過程為
生成進(jìn)程threadO: 向處理單元PE(l,O)的H134寫入0x10,向處理單元PE(l,O)的H137寫入0x13, 向處理單元PE(l,O)的H136寫入0xFFFFF,向處理單元PE(1,0)的H135寫入0x10000,向 H130寫入句柄值O。 若采用最近鄰居優(yōu)先搜索算法,則處理單元PE(O,O)最先被搜索,即向處理單元 PE(l,O)的H133寫入0x00,向H132寫入"子進(jìn)程生成請(qǐng)求"命令"。 之后,PE(l,O)的動(dòng)態(tài)進(jìn)程生成引擎H15向PE(O,O)發(fā)送一個(gè)"子進(jìn)程生成請(qǐng)求" 包,此時(shí),PE(O,O)處于空閑狀態(tài),PE(O,O)的動(dòng)態(tài)進(jìn)程生成引擎H15接收到來自PE(1,0)的 "子進(jìn)程生成請(qǐng)求"包后,將進(jìn)程狀態(tài)寄存器H14更新為"動(dòng)態(tài)鎖定",并通過數(shù)據(jù)接收引擎 H10向發(fā)送請(qǐng)求的處理單元PE(l,O)發(fā)送"動(dòng)態(tài)鎖定成功"應(yīng)答。當(dāng)PE(l,O)的H13通過動(dòng) 態(tài)進(jìn)程生成引擎H15接收到"動(dòng)態(tài)鎖定成功"應(yīng)答,則將H138置為"成功"。檢測(cè)到H138置 為"成功"后,處理器核向H132寫入"遠(yuǎn)程更新存儲(chǔ)器地址映射信息",將H135-H137發(fā)送到 PE(O,O)。 PE(O,O)接收到來自PE(O,O)的H135-H137后,通過H11輸出給PE(O,O)的H5。 之后,PE(l,O)向PE(O,O)發(fā)送"遠(yuǎn)程進(jìn)程啟動(dòng)"數(shù)據(jù)包,在該數(shù)據(jù)包中包含子進(jìn)程O的句柄 H130的值。PE(O,O)的動(dòng)態(tài)進(jìn)程生成引擎接收到該數(shù)據(jù)包后存儲(chǔ)接收到的句柄值并輸出復(fù) 位脈沖到Hll,則PE(O,O)的處理器核被重新啟動(dòng),從位于(1,3)的存儲(chǔ)器的地址0x10000 讀取指令和數(shù)據(jù)開始執(zhí)行。當(dāng)PE(O,O)的處理器核執(zhí)行子進(jìn)程O完畢,在退出前,發(fā)送"遠(yuǎn) 程進(jìn)程釋放"數(shù)據(jù)包給PE(l,O),在該數(shù)據(jù)包中包含子進(jìn)程0的句柄。 生成進(jìn)程threadl的生成過程類似。不同的是,此時(shí)PE(1,0)的處理器核向處理單 元PE(l,O)的H135寫入0x20000,向H130寫入句柄值1。由于PE(O,O)已經(jīng)被占用,PE(2, 0)將成為第一個(gè)被搜索的處理單元。 當(dāng)進(jìn)程threadO和進(jìn)程threadl同時(shí)執(zhí)行完畢時(shí),進(jìn)程parent_thread才能執(zhí) 行SC_FORK. . SC_JOIN后面的代碼。因此,在生成完進(jìn)程threadO和進(jìn)程threadl后,進(jìn)程 parent_thread向H131寫入Oxll,表示等待句柄0和句柄1返回。之后讀取寄存器H138。 在句柄0和句柄1返回之前,讀取寄存器H138不能完成,因此進(jìn)程parent—thread被阻塞 在讀取寄存器H138。 進(jìn)程句柄值的獲得方法為讓句柄值等于子進(jìn)程編號(hào)。等待句柄N返回即等待句 柄值對(duì)應(yīng)的子進(jìn)程執(zhí)行完畢。等待句柄N的具體操作為將H131寄存器的比特N寫為1。
根據(jù)本發(fā)明的動(dòng)態(tài)進(jìn)程生成單元和動(dòng)態(tài)進(jìn)程生成方法可廣泛應(yīng)用于不同的多核處理器中,尤其是應(yīng)用于SystemC優(yōu)化的多核處理器中。 本發(fā)明的動(dòng)態(tài)進(jìn)程生成方法與單元針對(duì)SystemC優(yōu)化的處理器設(shè)計(jì),是一個(gè)系統(tǒng) 化的多進(jìn)程生成的方法,與一般的多核處理器的動(dòng)態(tài)任務(wù)生成過程的不同之處在于
(1)對(duì)于任何多核處理器,動(dòng)態(tài)生成子進(jìn)程的第一步基于選定的動(dòng)態(tài)進(jìn)程或者任 務(wù)映射算法搜索可用的處理單元并將其作為候選處理單元。當(dāng)不同的父進(jìn)程同時(shí)進(jìn)行可用 的處理單元的搜索時(shí),會(huì)產(chǎn)生同時(shí)將一個(gè)處理單元作為候選單元的競(jìng)爭(zhēng)沖突,本發(fā)明提出 的SystemC優(yōu)化的多核處理器采用的是一種分布式的動(dòng)態(tài)進(jìn)程生成方法,針對(duì)該競(jìng)爭(zhēng)設(shè)計(jì) 了一種具體的鎖定方法。 (2)第二步是觸發(fā)候選處理單元開始運(yùn)行子進(jìn)程的代碼,一般步驟是將子進(jìn)程的 代碼作為一個(gè)中斷服務(wù)程序。父進(jìn)程觸發(fā)子進(jìn)程所在處理單元的處理器核產(chǎn)生中斷,進(jìn)入 相應(yīng)的中斷服務(wù)程序從而達(dá)到子進(jìn)程運(yùn)行的目的。這樣做的缺點(diǎn)是處理器核中斷向量的數(shù) 量是有限的,因此只能支持少于中斷向量個(gè)數(shù)個(gè)不同子進(jìn)程在該處理單元上運(yùn)行。本發(fā)明 的不同之處在于采用了地址重新映射的方法,從而解決了子進(jìn)程數(shù)量約束。
(3)當(dāng)生成多個(gè)子進(jìn)程時(shí),父進(jìn)程可能需要等待所有的子進(jìn)程都執(zhí)行完畢返回后 才能繼續(xù)執(zhí)行。針對(duì)這種情況,本發(fā)明針對(duì)SystemC語(yǔ)法的特點(diǎn),提出了一種基于句柄的同 步方法。該方法是一種高效且在實(shí)現(xiàn)時(shí)節(jié)省硅面積。 最后應(yīng)說明的是,以上實(shí)施例僅用以描述本發(fā)明的技術(shù)方案而不是對(duì)本技術(shù)方法 進(jìn)行限制,本發(fā)明在應(yīng)用上可以延伸為其它的修改、變化、應(yīng)用和實(shí)施例,并且因此認(rèn)為所 有這樣的修改、變化、應(yīng)用、實(shí)施例都在本發(fā)明的精神和教導(dǎo)范圍內(nèi)。
1權(quán)利要求
一種滿足SystemC語(yǔ)法的多核處理器的處理單元,包括動(dòng)態(tài)進(jìn)程生成單元,與所述處理單元的交換單元適配器和處理器核相連,用于基于進(jìn)程句柄使用地址重新映射來生成動(dòng)態(tài)進(jìn)程;所述動(dòng)態(tài)進(jìn)程生成單元包括數(shù)據(jù)接收引擎、數(shù)據(jù)發(fā)送引擎、動(dòng)態(tài)進(jìn)程生成引擎和SC_SPAWN寄存器組;其中,所述SC_SPAWN寄存器組用于存儲(chǔ)進(jìn)程句柄和進(jìn)程生成命令和進(jìn)程處理單元地址;所述動(dòng)態(tài)進(jìn)程生成引擎根據(jù)SC_SPAWN寄存器組中的進(jìn)程句柄和進(jìn)程生成命令并通過所述進(jìn)程處理單元地址來控制數(shù)據(jù)發(fā)送引擎發(fā)送數(shù)據(jù)包;所述數(shù)據(jù)發(fā)送引擎根據(jù)來自動(dòng)態(tài)進(jìn)程生成引擎的發(fā)送請(qǐng)求來發(fā)送數(shù)據(jù)包到交換單元適配器;所述數(shù)據(jù)接收引擎接收來自交換單元適配器的數(shù)據(jù)包,確定所述數(shù)據(jù)包中所包含的內(nèi)容并提交給動(dòng)態(tài)進(jìn)程生成引擎。
2. 權(quán)利要求l的處理單元,其中,所述動(dòng)態(tài)進(jìn)程生成單元通過信號(hào)組連接到所述處理 單元的處理器核交換單元橋,所述信號(hào)組用于實(shí)現(xiàn)處理器數(shù)據(jù)和指令總線地址到實(shí)際存儲(chǔ) 器地址的轉(zhuǎn)換。
3. 權(quán)利要求2的處理單元,其中,所述信號(hào)組包括存儲(chǔ)器的基地址、存儲(chǔ)器所在的外設(shè) 單元的坐標(biāo)和翻譯地址。
4. 權(quán)利要求l的處理單元,其中,所述動(dòng)態(tài)進(jìn)程生成單元還包括進(jìn)程狀態(tài)寄存器,所述 動(dòng)態(tài)進(jìn)程生成引擎維護(hù)所述進(jìn)程狀態(tài)寄存器當(dāng)本地處理器核運(yùn)行的進(jìn)程為靜態(tài)進(jìn)程,將 進(jìn)程狀態(tài)寄存器更新為"靜態(tài)鎖定";當(dāng)在"空閑"時(shí)接收到來自其他處理器核的子進(jìn)程生成 請(qǐng)求,將進(jìn)程狀態(tài)寄存器更新為"動(dòng)態(tài)鎖定";當(dāng)一個(gè)動(dòng)態(tài)進(jìn)程執(zhí)行完畢,將進(jìn)程狀態(tài)寄存器 更新為"空閑"。
5. 權(quán)利要求l的處理單元,其中,當(dāng)需要?jiǎng)討B(tài)生成子進(jìn)程的父進(jìn)程搜索可用的處理單 元并發(fā)送子進(jìn)程生成請(qǐng)求時(shí),所述動(dòng)態(tài)進(jìn)程生成單元將可用的處理單元鎖定為候選處理單 元并發(fā)送遠(yuǎn)程存儲(chǔ)器地址映射信息;所述父進(jìn)程設(shè)定子進(jìn)程的句柄,并向候選處理單元發(fā) 送進(jìn)程啟動(dòng)請(qǐng)求并攜帶進(jìn)程句柄;候選處理單元執(zhí)行進(jìn)程,返回進(jìn)程句柄。
6. 權(quán)利要求5的處理單元,其中,通過讓句柄值等于子進(jìn)程編號(hào)來設(shè)定所述子進(jìn)程的 句柄。
7. 權(quán)利要求1的處理單元,其中,所述SC_SPAWN寄存器組包括 子進(jìn)程句柄寄存器,存儲(chǔ)子進(jìn)程的句柄的表示;動(dòng)態(tài)進(jìn)程生成命令寄存器,本地處理器核向該寄存器寫入命令,數(shù)據(jù)發(fā)送引擎根據(jù)該 寄存器的值執(zhí)行生成命令;目的子進(jìn)程所在處理單元地址、本子進(jìn)程所在處理單元地址和子進(jìn)程生成命令執(zhí)行狀 態(tài)寄存器。
8. —種滿足SystemC語(yǔ)法的多核處理器的處理單元的動(dòng)態(tài)進(jìn)程生成方法,包括 步驟10)、需要?jiǎng)討B(tài)生成子進(jìn)程的父進(jìn)程搜索可用的處理單元并發(fā)送子進(jìn)程生成請(qǐng)求時(shí),鎖定可用的處理單元為候選處理單元并發(fā)送遠(yuǎn)程存儲(chǔ)器地址映射信息;步驟20)、所述父進(jìn)程設(shè)定子進(jìn)程的句柄,并向候選處理單元發(fā)送攜帶進(jìn)程句柄的進(jìn)程 啟動(dòng)請(qǐng)求;步驟30)、候選處理單元執(zhí)行進(jìn)程,返回進(jìn)程句柄。
9. 權(quán)利要求8的方法,其中,步驟10)還包括所述父進(jìn)程搜索可用的處理單元前,將處理單元所運(yùn)行進(jìn)程更新為靜態(tài)進(jìn)程。
10. 權(quán)利要求8的方法,其中,步驟10)還包括若當(dāng)前遠(yuǎn)程處理單元的進(jìn)程狀態(tài)寄存 器為"空閑",則將進(jìn)程狀態(tài)寄存器更新為"動(dòng)態(tài)鎖定";向發(fā)送請(qǐng)求的處理單元發(fā)送"動(dòng)態(tài)鎖 定成功"應(yīng)答,將當(dāng)前遠(yuǎn)程處理單元鎖定為候選處理單元。
11. 權(quán)利要求8的方法,其中,步驟20)還包括當(dāng)本地處理器核向動(dòng)態(tài)進(jìn)程生成命令 寄存器寫入"遠(yuǎn)程更新存儲(chǔ)器地址映射信息"命令時(shí),通過數(shù)據(jù)發(fā)送引擎向處理器核交換單 元橋地址空間轉(zhuǎn)換遠(yuǎn)程坐標(biāo)地址所指示的遠(yuǎn)程處理單元發(fā)送的所在動(dòng)態(tài)進(jìn)程生成單元的 寄存器的值。
12. 權(quán)利要求8的方法,其中,步驟20)還包括向遠(yuǎn)程坐標(biāo)地址所指示的遠(yuǎn)程處理單 元發(fā)送包含"進(jìn)程啟動(dòng)請(qǐng)求"命令和句柄信息的遠(yuǎn)程進(jìn)程啟動(dòng)請(qǐng)求數(shù)據(jù)包,接收到該數(shù)據(jù)包 的遠(yuǎn)程處理單元存儲(chǔ)接收到的句柄值并觸發(fā)所在處理單元的處理器核復(fù)位。
13. 權(quán)利要求8的方法,其中,步驟30)還包括當(dāng)遠(yuǎn)程處理器核寫入"遠(yuǎn)程進(jìn)程釋放" 命令,則向遠(yuǎn)程坐標(biāo)地址所指示的處理單元發(fā)送攜帶緩存的句柄信息的"遠(yuǎn)程進(jìn)程釋放"應(yīng) 答,確定對(duì)應(yīng)的子進(jìn)程完成執(zhí)行。
全文摘要
本發(fā)明提供一種滿足SystemC語(yǔ)法的多核處理器的處理單元,包括動(dòng)態(tài)進(jìn)程生成單元,用于基于句柄使用地址重新映射來生成動(dòng)態(tài)進(jìn)程;所述動(dòng)態(tài)進(jìn)程生成單元包括SC_SPAWN寄存器組用于存儲(chǔ)進(jìn)程句柄和進(jìn)程生成命令和進(jìn)程處理單元地址;動(dòng)態(tài)進(jìn)程生成引擎根據(jù)SC_SPAWN寄存器組中的進(jìn)程句柄和進(jìn)程生成命令來控制數(shù)據(jù)發(fā)送引擎發(fā)送數(shù)據(jù)包;數(shù)據(jù)發(fā)送引擎根據(jù)來自動(dòng)態(tài)進(jìn)程生成引擎的發(fā)送請(qǐng)求來發(fā)送數(shù)據(jù)包到交換單元適配器;數(shù)據(jù)接收引擎接收來自交換單元適配器的數(shù)據(jù)包,確定所述數(shù)據(jù)包中所包含的內(nèi)容并提交給動(dòng)態(tài)進(jìn)程生成引擎。根據(jù)本發(fā)明的處理單元支持在多核處理器內(nèi)的分布式的動(dòng)態(tài)進(jìn)程生成過程。
文檔編號(hào)G06F9/44GK101770362SQ200910076508
公開日2010年7月7日 申請(qǐng)日期2009年1月6日 優(yōu)先權(quán)日2009年1月6日
發(fā)明者劉玉東, 劉祥, 張金龍, 陳曦, 黃毅 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所