專利名稱:硬件輔助的輔核任務(wù)動態(tài)優(yōu)先級調(diào)度的實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)體系結(jié)構(gòu)設(shè)計領(lǐng)域,涉及操作系統(tǒng)設(shè)計領(lǐng)域,尤其涉及 一種硬件輔助的輔核任務(wù)動態(tài)優(yōu)先級調(diào)度的實現(xiàn)方法。
背景技術(shù):
隨著半導(dǎo)體以及相應(yīng)的集成電路制造工藝的迅猛發(fā)展,集成在芯片上的晶 體管的密度不斷的提高,使得越來越多的元件都可以集成到一塊單一的芯片上。 在單個芯片上把各種不同用途的功能模塊整合在一起,不但可以提升模塊間的 通信速度,提升系統(tǒng)性能,而且還可以減少芯片的面積,從而也降低芯片的能耗。
為了滿足各種各樣的應(yīng)用需求,各種針對特定應(yīng)用而設(shè)計的異構(gòu)多核系統(tǒng) 變得越來越流行。在這種體系中,除了針對特定應(yīng)用優(yōu)化設(shè)計的處理核外,還 有一個負(fù)責(zé)操作系統(tǒng)運行的通用處理核。在這種異構(gòu)多核的體系架構(gòu)中,通常 把運行操作系統(tǒng)的通用的處理核稱為主處理核或者主核。而把針對特定應(yīng)用設(shè)
計的處理核稱為輔助處理核或者輔核,如DSP,還有針對JPEG,MPEG2,MPEG-4
以及HDTV應(yīng)用設(shè)計的處理核都屬于這一類。這些輔助處理核往往只能運行針 對特定應(yīng)用設(shè)計的專用指令集,所以運行在輔助核上的輔助核任務(wù)需要主核的 管理和控制。
在支持異構(gòu)多核體系的軟件系統(tǒng)中,操作系統(tǒng)運行在主核上,而輔助核則 通過各種各樣的方式抽象成軟件接口。例如以驅(qū)動程序,系統(tǒng)調(diào)用,或者虛擬 文件系統(tǒng)等方式抽象出軟件接口供應(yīng)用程序直接使用。在驅(qū)動程序支持輔助核 的方式中,從操作系統(tǒng)的角度來看,輔助核是一個擁有強(qiáng)大計算能力的設(shè)備, 應(yīng)用程序發(fā)揮輔助核強(qiáng)大計算能力的方式就是使用輔助核驅(qū)動程序。采用系統(tǒng) 調(diào)用方式支持輔助核的方式中,支持輔助核的軟件接口被包裝成操作系統(tǒng)內(nèi)核 中的一組系統(tǒng)調(diào)用。而虛擬文件系統(tǒng)則是把輔助核的使用包裝成一個虛擬文件 系統(tǒng),通過對文件系統(tǒng)的操作來實現(xiàn)對輔助核的操作。
但是,無論采用驅(qū)動程序還是虛擬文件系統(tǒng)的方式支持異構(gòu)多核體系,都 是把輔助核硬件抽象成相應(yīng)的軟件接口,在應(yīng)用程序中通過使用這些軟件接口 對輔助核硬件進(jìn)行直接的操作。這種方式用于測試輔助核的功能完整性以及應(yīng) 用在單任務(wù)的系統(tǒng)中是很合適的,實現(xiàn)方式和使用方式都很簡單,但是,當(dāng)有多個應(yīng)用程序使用輔助核硬件的時候,由于這種軟件直接操作硬件的方式,使 得應(yīng)用程序很難發(fā)現(xiàn)某個輔助處理核是否已經(jīng)被其他程序所使用,就會發(fā)生輔 助核資源使用的沖突。
因此,在支持主核和輔核這種體系的操作系統(tǒng)中,如何靈活而有效的調(diào)度 管理應(yīng)用程序任務(wù)在輔助核運行成了一個很大的問題。而且隨著輔核種類和數(shù) 量的增加,如果仍然由主核上運行的調(diào)度器來對眾多的輔核種類和輔核任務(wù)進(jìn) 行調(diào)度,調(diào)度器可能成為系統(tǒng)性能的瓶頸。
發(fā)明內(nèi)容
為了向基于主核和輔核體系的操作系統(tǒng)提供更好的支持,為了提供更加靈 活有效的輔核管理性能,為了提高輔核任務(wù)調(diào)度的吞吐量,提高輔核執(zhí)行的效 率,本發(fā)明的目的在于提供一種硬件輔助的輔核任務(wù)動態(tài)優(yōu)先級調(diào)度的實現(xiàn)方 法。
本發(fā)明解決技術(shù)問題所采用的技術(shù)方案是 一種硬件輔助的輔核任務(wù)動態(tài)優(yōu)先級調(diào)度的實現(xiàn)方法
1) 輔核任務(wù)的三個階段
輔核是為特定應(yīng)用領(lǐng)域的計算設(shè)計的,支持不同于主核的指令集;從操作系 統(tǒng)的角度來看,輔核不能進(jìn)行資源管理,不能運行任何操作系統(tǒng)內(nèi)核態(tài)的代碼, 不具備完全獨立運行進(jìn)程的能力;因此輔核任務(wù)對執(zhí)行可以分為三個階段
① 輔核任務(wù)預(yù)處理階段這一階段由主核負(fù)責(zé),創(chuàng)建輔核上運行的輔核任 務(wù)上下文,包括輔核任務(wù)指令以及待處理數(shù)據(jù);主核上派生輔核任務(wù)的進(jìn)程也
就是該輔核任務(wù)的控制進(jìn)程;
② 輔核任務(wù)運行階段在該階段,輔核從主存載入在第一階段初始化好的 輔核任務(wù)上下文并啟動輔核任務(wù)的執(zhí)行;當(dāng)任務(wù)執(zhí)行完畢后,將執(zhí)行結(jié)果數(shù)據(jù) 寫回內(nèi)存空間;
③ 輔核任務(wù)結(jié)果處理階段這個階段運行在主核上,主要處理第二階段在 輔核上運行的結(jié)果,將輔核任務(wù)結(jié)果整理寫回到目標(biāo)地址;
2) 硬件調(diào)度模塊輔助的輔核任務(wù)調(diào)度過程-輔核任務(wù)的調(diào)度過程如下-
① 主核上運行的操作系統(tǒng)調(diào)用硬件調(diào)度器接口 ,將主核上進(jìn)程派生的輔核 任務(wù)傳送給硬件調(diào)度器;
② 輔核硬件調(diào)度器的調(diào)度單元,將就緒任務(wù)根據(jù)優(yōu)先級組織為三個先進(jìn)先 出硬件隊列,然后依次從隊列中選取任務(wù),并分配到空閑狀態(tài)的輔核上執(zhí)行;③當(dāng)輔核任務(wù)執(zhí)行完畢,硬件調(diào)度單元產(chǎn)生中斷通知主核上的控制進(jìn)程進(jìn)
行后期的數(shù)據(jù)處理;
所述的將就緒任務(wù)根據(jù)優(yōu)先級組織為三個先進(jìn)先出硬件隊列,具體組織方
式如下
① 硬件調(diào)度器根據(jù)優(yōu)先級高低維護(hù)了 3個就緒任務(wù)隊列,分別為高優(yōu)先 級任務(wù)隊列、普通優(yōu)先級任務(wù)隊列和低優(yōu)先級任務(wù)隊列;
② 輔核任務(wù)根據(jù)優(yōu)先級分別被分配到對應(yīng)的3個任務(wù)隊列中;在各任務(wù)隊 列之內(nèi)不再區(qū)分優(yōu)先級高低,按照先到先服務(wù)的方法調(diào)度任務(wù);
③ 硬件調(diào)度器每間隔一段時間把對任務(wù)隊列中的任務(wù)第一個任務(wù)的優(yōu)先級 進(jìn)行提升,也就是說把普通優(yōu)先級任務(wù)隊列中的第一個任務(wù)提升為高優(yōu)先級任 務(wù),把低優(yōu)先級任務(wù)隊列中的第一個任務(wù)提升為普通優(yōu)先級任務(wù)。
本發(fā)明具有的有益效果是-
首先,設(shè)計了硬件調(diào)度器輔助輔核任務(wù)的調(diào)度,由硬件調(diào)度器對輔核進(jìn)行調(diào) 度管理,減輕主核調(diào)度和管理輔核任務(wù)的負(fù)擔(dān),消除了未來可能的性能瓶頸; 其次,在調(diào)度器上提供了基于動態(tài)優(yōu)先級的調(diào)度策略,避免了低優(yōu)先級任務(wù)餓 死的可能;再次,通過硬件調(diào)度器對操作系統(tǒng)調(diào)度的輔助,有效的降低了軟件 系統(tǒng)對嵌入式異構(gòu)多核體系的支持難度;最后,通過設(shè)計和使用硬件調(diào)度器, 明顯提高了輔助核任務(wù)的吞吐量。
附圖是本發(fā)明的流程圖。
具體實施例方式
本發(fā)明通過將輔核任務(wù)的執(zhí)行分為上述的三個階段,在任務(wù)的每個階段, 由硬件調(diào)度器輔助主核上運行的操作系統(tǒng)調(diào)度器對輔核任務(wù)進(jìn)行對應(yīng)的管理和 調(diào)度。下面將就本發(fā)明的實現(xiàn)作詳細(xì)介紹。
1、 一種硬件輔助的輔核任務(wù)動態(tài)優(yōu)先級調(diào)度的實現(xiàn)方法,其特征在于
1)輔核任務(wù)的三個階段 ①輔核任務(wù)預(yù)處理階段
輔核任務(wù)預(yù)處理階段由主核負(fù)責(zé),主核上運行的需要輔核加速的進(jìn)程在這個 階段將會創(chuàng)建一個輔核上運行的輔核任務(wù)來進(jìn)行應(yīng)用程序的加速,主要創(chuàng)建的 是輔核任務(wù)的上下文,即包括輔核任務(wù)指令序列以及待處理的數(shù)據(jù)。主核上派 生出輔核任務(wù)的進(jìn)程也就是該輔核任務(wù)的控制進(jìn)程,該線程在創(chuàng)建輔核任務(wù)之 后將會掛起等待輔核任務(wù)的返回結(jié)果。② 輔核任務(wù)運行階段
輔核任務(wù)運行階段主要由硬件調(diào)度器和輔核共同進(jìn)行,在這個階段,由硬件 調(diào)度器調(diào)度執(zhí)行的輔核任務(wù)被分配到空閑的輔核上,并從系統(tǒng)主存載入在輔核 任務(wù)預(yù)處理階段所創(chuàng)建好的輔核任務(wù)上下文并啟動輔核任務(wù)的執(zhí)行。當(dāng)任務(wù)執(zhí) 行完畢后,將執(zhí)行結(jié)果數(shù)據(jù)寫回內(nèi)存空間。
③ 輔核任務(wù)結(jié)果處理階段
在輔核任務(wù)結(jié)果處理階段,由運行在主核的相應(yīng)輔核任務(wù)的控制進(jìn)程進(jìn)行, 主要對輔核任務(wù)運行階段在輔核上運行的結(jié)果進(jìn)行處理,具體處理過程視將實 際應(yīng)用程序的要求而定,例如將輔核任務(wù)預(yù)處理階段集中準(zhǔn)備由輔核進(jìn)行處理 的數(shù)據(jù)的返回結(jié)果重新分派回原存儲空間等。
2)硬件調(diào)度模塊輔助的輔核任務(wù)調(diào)度過程
輔核任務(wù)的調(diào)度過程如下-
① 在輔核任務(wù)預(yù)處理階段,當(dāng)主核上的控制進(jìn)程完成輔核任務(wù)的創(chuàng)建之后, 將調(diào)用操作系統(tǒng)系統(tǒng)調(diào)用接口,通過硬件調(diào)度器所提供的接口將新創(chuàng)建的輔核 任務(wù)傳送給硬件調(diào)度器。如果硬件調(diào)度器的就緒任務(wù)隊列已滿,則該任務(wù)掛起, 等待下次硬件調(diào)度器產(chǎn)生任務(wù)完成中斷信號之后再重新嘗試發(fā)送。
② 輔核硬件調(diào)度器的調(diào)度單元根據(jù)收到的輔核任務(wù)的優(yōu)先級將符合任務(wù)任 務(wù)組織為三個先進(jìn)先出的就緒任務(wù)隊列。同時硬件調(diào)度器將輪詢輔核的狀態(tài), 一旦有輔核空閑,調(diào)度器將從三個隊列中選擇輔核任務(wù),并分配到空閑狀態(tài)的 輔核上執(zhí)行。具體任務(wù)隊列組織方法和輔核任務(wù)選擇方法如3)所述。
③ 當(dāng)輔核任務(wù)執(zhí)行完畢,硬件調(diào)度單元產(chǎn)生中斷信號,通知主核上的輔核 任務(wù)控制進(jìn)程進(jìn)行后期的數(shù)據(jù)處理。
所述的將就緒任務(wù)根據(jù)優(yōu)先級組織為三個先進(jìn)先出硬件隊列,多個輔核任務(wù) 的執(zhí)行順序即輔核任務(wù)的調(diào)度策略通過對硬件調(diào)度器中的就緒任務(wù)隊列進(jìn)行不 同的組織方式來設(shè)定,三個先進(jìn)先出硬件隊列的具體組織方式如下
① 硬件調(diào)度器根據(jù)優(yōu)先級高低維護(hù)了 3個就緒任務(wù)隊列,分別為高優(yōu)先 級任務(wù)隊列、普通優(yōu)先級任務(wù)隊列和低優(yōu)先級任務(wù)隊列。每個任務(wù)隊列為一個 20個入口的先進(jìn)先出隊列,各隊列是否已滿的狀態(tài)寄存器被映射到系統(tǒng)主存, 主核上的進(jìn)程可以通過操作系統(tǒng)調(diào)用讀取各任務(wù)隊列是否己滿的狀態(tài)。
② 輔核任務(wù)根據(jù)優(yōu)先級分別被分配到對應(yīng)的3個任務(wù)隊列中;輔核任務(wù)的 優(yōu)先級為0到70的一個數(shù)值,硬件調(diào)度器將0 20優(yōu)先級的輔核任務(wù)插入到高 優(yōu)先級任務(wù)隊列,將21 50優(yōu)先級的輔核任務(wù)插入到普通優(yōu)先級任務(wù)隊列,51 70優(yōu)先級的輔核任務(wù)插入到低優(yōu)先級任務(wù)隊列。在各任務(wù)隊列之內(nèi)不再區(qū)分優(yōu)
先級高低,按照先到先服務(wù)的方法調(diào)度任務(wù)。
當(dāng)硬件調(diào)度器輪詢輔核發(fā)現(xiàn)空閑的輔核之后,硬件調(diào)度器的調(diào)度模塊從隊列
中選取任務(wù)進(jìn)行執(zhí)行首先從高優(yōu)先級任務(wù)隊列按照先到先服務(wù)原則選擇先到 的輔核任務(wù)進(jìn)行執(zhí)行,當(dāng)高優(yōu)先級任務(wù)執(zhí)行完畢后再選取普通優(yōu)先級任務(wù)隊列 中的輔核任務(wù),最后選取低優(yōu)先級任務(wù)隊列中的輔核任務(wù)。
③為了防止低優(yōu)先任務(wù)餓死的情況發(fā)生,每完成20個輔核任務(wù),硬件調(diào)度 器將對任務(wù)隊列中的第一個任務(wù)的優(yōu)先級進(jìn)行優(yōu)先級提升,也就是把普通優(yōu)先 級任務(wù)隊列中的第一個任務(wù)提升為高優(yōu)先級任務(wù),把低優(yōu)先級任務(wù)隊列中的第 一個任務(wù)提升為普通優(yōu)先級任務(wù)。
權(quán)利要求
1、一種硬件輔助的輔核任務(wù)動態(tài)優(yōu)先級調(diào)度的實現(xiàn)方法,其特征在于1)輔核任務(wù)的三個階段輔核是為特定應(yīng)用領(lǐng)域的計算設(shè)計的,支持不同于主核的指令集;從操作系統(tǒng)的角度來看,輔核不能進(jìn)行資源管理,不能運行任何操作系統(tǒng)內(nèi)核態(tài)的代碼,不具備完全獨立運行進(jìn)程的能力;因此輔核任務(wù)對執(zhí)行可以分為三個階段①輔核任務(wù)預(yù)處理階段這一階段由主核負(fù)責(zé),創(chuàng)建輔核上運行的輔核任務(wù)上下文,包括輔核任務(wù)指令以及待處理數(shù)據(jù);主核上派生輔核任務(wù)的進(jìn)程也就是該輔核任務(wù)的控制進(jìn)程;②輔核任務(wù)運行階段在該階段,輔核從主存載入在第一階段初始化好的輔核任務(wù)上下文并啟動輔核任務(wù)的執(zhí)行;當(dāng)任務(wù)執(zhí)行完畢后,將執(zhí)行結(jié)果數(shù)據(jù)寫回內(nèi)存空間;③輔核任務(wù)結(jié)果處理階段這個階段運行在主核上,主要處理第二階段在輔核上運行的結(jié)果,將輔核任務(wù)結(jié)果整理寫回到目標(biāo)地址;2)硬件調(diào)度模塊輔助的輔核任務(wù)調(diào)度過程輔核任務(wù)的調(diào)度過程如下①主核上運行的操作系統(tǒng)調(diào)用硬件調(diào)度器接口,將主核上進(jìn)程派生的輔核任務(wù)傳送給硬件調(diào)度器;②輔核硬件調(diào)度器的調(diào)度單元,將就緒任務(wù)根據(jù)優(yōu)先級組織為三個先進(jìn)先出硬件隊列,然后依次從隊列中選取任務(wù),并分配到空閑狀態(tài)的輔核上執(zhí)行;③當(dāng)輔核任務(wù)執(zhí)行完畢,硬件調(diào)度單元產(chǎn)生中斷通知主核上的控制進(jìn)程進(jìn)行后期的數(shù)據(jù)處理;
2、 根據(jù)權(quán)利要求1所述的一種硬件輔助的輔核任務(wù)動態(tài)優(yōu)先級調(diào)度的實現(xiàn) 方法,其特征在于所述的將就緒任務(wù)根據(jù)優(yōu)先級組織為三個先進(jìn)先出硬件隊 列,具體組織方式如下① 硬件調(diào)度器根據(jù)優(yōu)先級高低維護(hù)了 3個就緒任務(wù)隊列,分別為高優(yōu)先 級任務(wù)隊列、普通優(yōu)先級任務(wù)隊列和低優(yōu)先級任務(wù)隊列;② 輔核任務(wù)根據(jù)優(yōu)先級分別被分配到對應(yīng)的3個任務(wù)隊列中;在各任務(wù)隊 列之內(nèi)不再區(qū)分優(yōu)先級高低,按照先到先服務(wù)的方法調(diào)度任務(wù);(D硬件調(diào)度器每間隔一段時間把對任務(wù)隊列中的任務(wù)第一個任務(wù)的優(yōu)先級 進(jìn)行提升,也就是說把普通優(yōu)先級任務(wù)隊列中的第一個任務(wù)提升為高優(yōu)先級任 務(wù),把低優(yōu)先級任務(wù)隊列中的第一個任務(wù)提升為普通優(yōu)先級任務(wù)。
全文摘要
本發(fā)明公開了一種硬件輔助的輔核任務(wù)動態(tài)優(yōu)先級調(diào)度的實現(xiàn)方法。是通過為基于主核加輔核體系的操作系統(tǒng)調(diào)度提供體系結(jié)構(gòu)上的支持,輔助操作系統(tǒng)調(diào)度器對輔核任務(wù)的調(diào)度,硬件調(diào)度器維護(hù)三個就緒任務(wù)的硬件隊列,根據(jù)任務(wù)優(yōu)先級將到達(dá)任務(wù)插入到相應(yīng)的就緒任務(wù)隊列中,并通過周期性的優(yōu)先級提升來避免輔核任務(wù)餓死的情況發(fā)生。這一方法通過體系結(jié)構(gòu)支持有效的降低了軟件系統(tǒng)對嵌入式異構(gòu)多核體系的支持難度,并減輕主核調(diào)度和管理輔核任務(wù)的負(fù)擔(dān),明顯提高了輔助核任務(wù)的吞吐量。特別是在輔核種類多、數(shù)量大、調(diào)度算法復(fù)雜的情況下,更具有明顯的效果。
文檔編號G06F9/46GK101414270SQ20081016290
公開日2009年4月22日 申請日期2008年12月4日 優(yōu)先權(quán)日2008年12月4日
發(fā)明者嚴(yán)力科, 馮德貴, 罡 王, 度 陳, 陳天洲 申請人:浙江大學(xué)