一種基于任務申請信號和處理器內核執(zhí)行代價值的任務調度方法
【技術領域】
[0001] 本發(fā)明涉及一種基于任務申請信號和處理器內核執(zhí)行代價值的任務調度方法。
【背景技術】
[0002] 伴隨著大規(guī)模集成電路的發(fā)展,晶體管的速度、功耗和芯片面積等都有了很大改 善,促進了單核處理器性能不斷地提升。當前,單核處理器已經(jīng)幾乎無法憑借工藝手段的改 進來進一步明顯提高處理器的速度。在同一芯片上集成多個處理器內核心的多核處理器 (chip multiprocessors, CMPs)的出現(xiàn)有效地解決了單核處理器發(fā)展的瓶頸。2006年IBM 推出首款商用的同構雙核處理器P0WER4。隨后,一系列芯片廠商陸續(xù)推出系列產品。根據(jù) Amdahl定律,增加同構多核處理器可以提高程序并行執(zhí)行部分的效率,而無法提高串行部 分的執(zhí)行效率。因此,當程序并行執(zhí)行部分效率接近峰值時,增加若干個同構處理器是無法 顯著提高多核處理器的執(zhí)行效率的。同時,不同的程序對計算核心性能要求不同。在這些 因素的推動下,計算機進入到異構多核處理器時代。
[0003] 異構多核處理器從處理器內核之間的聯(lián)系,可以分為兩大類:一種是集中式,一種 是分布式。集中式多核處理器的主處理器(簡稱主核)擁有完整的功能,主要負責向從處 理器(簡稱輔核)上的任務分配,而輔核主要負責各種應用運算。集中式處理器多用于Soc 系統(tǒng),最典型的集中式多核處理器是索尼、東芝和IBM聯(lián)合開發(fā)的Cell be處理器。分布式 多核處理器其各核可以共享緩存或獨自擁有私有緩存,它在結構上的特點是每個處理器之 間的連接方式相同,但地位和性能不全一致,每個處理器內核按照自己特有的控制和運算 功能獨立運行,互不干擾,協(xié)同工作。
[0004] 異構多核處理器的每個處理器負責實現(xiàn)不同的功能,為了發(fā)揮各處理器優(yōu)勢,必 須要實現(xiàn)操作系統(tǒng)的準確調度。也就是說,任務待分配到的處理器內核的計算能力應該與 該任務的計算需求相匹配的。異構多核處理器的任務調度通常分為靜態(tài)和動態(tài)兩種。靜態(tài) 任務調度采用預測技術確定映射方法從而實現(xiàn)任務的分配,所以它是在任務調度之前就已 經(jīng)確定任務調度的全過程。而動態(tài)任務調度則根據(jù)調度規(guī)則、處理器的可用資源以及并行 任務的性質差異動態(tài)地、實時地完成任務調度,并且可以結合負載平衡、最小執(zhí)行時間等指 標進行不同處理器內核間的任務迀移。顯然,動態(tài)任務調度由于實時地根據(jù)任務調度情況 進行調整,因此能更加有效地發(fā)揮異構多核處理器的性能。
[0005] 經(jīng)典動態(tài)任務調度算法是維持一個全局任務調度隊列,隊列的隊頭元素具有最高 的優(yōu)先級。而如果只維持一個全局任務調度隊列,此時某個處理器內核空閑就進行任務調 度。這種按需調度的方式?jīng)]有考慮到處理器內核的性能和任務特點,顯然違背了異構多核 處理器將正確的任務調度到正確的處理器內核這一基本原則,因為隊頭元素調度到空閑核 上未必滿足全部任務執(zhí)行時間最短。
[0006] 為解決這一不足,本發(fā)明方法提出了全局鏈表和處理器內核調度隊列來記錄任 務,按照任務申請信號和處理器內核的執(zhí)行代價值來計算任務調度到處理器內核的概率, 進一步明確任務調度的順序,能夠有效的減少任務開銷,降低任務的執(zhí)行時間,較為準確地 建立任務調度順序隊列。
【發(fā)明內容】
[0007] 本發(fā)明的目的在于提供一種有效減少任務開銷,降低任務的執(zhí)行時間的基于任務 申請信號和處理器內核執(zhí)行代價值的任務調度方法。
[0008] 本發(fā)明的內容是這樣實現(xiàn)的:
[0009] (1)任務申請信號:采用全局鏈表和處理器內核調度隊列來記錄任務,其中全局 鏈表存儲處理器上等待調度的全部任務;同時每個處理器內核獨自擁有一個任務調度隊 列,存儲已調度到該處理器內核上的任務集合;任務申請信號代表任務期望被調度的緊迫 程度,每當一個新任務生成時,將其插入到全局鏈表的尾部,同時向所有處理器內核發(fā)出等 待調度的申請信號;
[0010] (2)處理器內核執(zhí)行代價值:每個處理器內核維持一個執(zhí)行代價值向量,處理器 內核經(jīng)計算得出全局鏈表中每個任務的執(zhí)行代價值,并存入執(zhí)行代價值向量中;
[0011] (3)任務調度概率:處理器內核對任務的執(zhí)行代價值和任務的申請信號來計算任 務從全局鏈表調度到處理器內核調度隊列的概率,明確任務調度的順序。
[0012] 所述任務申請信號采用全局鏈表和處理器內核調度隊列來記錄任務,每一個新任 務生成時,將新任務插入到全局鏈表的尾部;處于全局鏈表上的任務此時尚未分配各種資 源,處于等待狀態(tài);新任務h插入到鏈表的同時會向所有的處理器內核發(fā)出等待調度的申 請信號,申請信號用S1表示,表示公式如下:
[0014] 其中,WTU1)表示任務^進入全局鏈表后的等待時間,PrU1)為任務&的優(yōu)先級, 其值取決于與任務^有依賴關系任務數(shù)目。Predai)表示任務^直接前驅任務。
[0015] 所述處理器內核執(zhí)行代價值采用執(zhí)行代價向量,將處理器內核計算得出的全局鏈 表中每個任務的執(zhí)行代價值存入其中;任務ti的執(zhí)行代價值0 h i由任務ti在處理器內核 Ph上的計算開銷w(v ;,Ph)和與其他處理器內核的通信開銷C(Vi, Vj, Ph, Pk)決定的,表示公 式如下:
[0017] 其中,a、β均表示參數(shù)。
[0018] 所述任務調度概率根據(jù)任務的執(zhí)行代價值和任務的申請信號來計算,再進一步明 確任務調度的順序,記任務t調度到處理器內核P 概率為P (t D Ph),表示公式如下:
[0020] 本發(fā)明方法的有益效果在于:采用全局鏈表和處理器內核調度隊列記錄任務,使 用任務的申請信號的強弱和處理器內核執(zhí)行任務的代價值的大小作為任務調度的準則,可 有效的減少任務迀移過程中產生的開銷,降低任務的執(zhí)行時間,較為準確地建立任務調度 順序隊列。
【附圖說明】
[0021] 圖1是本發(fā)明全局鏈表和處理器內核調度隊列的具體調度過程圖。
【具體實施方式】
[0022] 下面結合附圖對本發(fā)明進行更詳細的描述:
[0023] 本發(fā)明提供的是一種基于任務申請信號和處理器內核執(zhí)行代價值的任務調度方 法,該方法以如何解決調度任務的先后順序為主要思想,結合全局鏈表和處理器內核調度 隊列來記錄任務,按照任務申請信號的強弱和處理器內核的執(zhí)行代價值大小來計算任務調 度到處理器內核的概率。其中,任務申請信號反映任務期望被調度的緊迫程度,每當一個新 任務生成時,將其插入到全局鏈表的尾部,同時向所有處理器內核發(fā)出等待調度的申請信 號。在此基礎上,每個處理器內核都會維持一個執(zhí)行代價值向量,處理器內核根據(jù)任務的 計算開銷和通信開銷得出全局鏈表中每個任務的執(zhí)行代價值,并將其存入執(zhí)行代價值向量 中,處理器內核根據(jù)對任務的執(zhí)行代價值和任務的申請信號來計算任務從全局鏈表調度到 處理器內核調度隊列的概率,進一步明確任務調度的順序。本發(fā)明方法能夠有效的減少任 務開銷,降低任務的執(zhí)行時間,較為準確地建立任務調度順序隊列。
[0024] ( -)任務申請信號
[0025] 首先,本發(fā)明方法采用全局鏈表和處理器內核調度隊列來記錄任務。全局鏈表用 于存儲處理器上等待調度的全部任務,每個處理器內核都有一個調度隊列,用于存儲已調 度到該處理器內核上的任務集合。每當一個新任務生成時,將其插入到全局鏈表的尾部。處 于全局鏈表上的任務此時尚未分配各種資源,處于等待狀態(tài)。新任務插入到鏈表的同時會 向所有的處理器內核發(fā)出等待調度的申請信號,申請信號由申請信號的初始值、任務進入 全局鏈表后的等待時間和任務優(yōu)先級決定,其值反映任務期望被調度的緊迫程度。申請信 號值越大,那么任務需要調度的迫切程度就越高。
[0026](二)處理器內核執(zhí)行代價值
[0027] 每個處理器內核都會維持一個執(zhí)行代價值向量,處理器內核經(jīng)計算得出全局鏈表 中每個任務的執(zhí)行代價值,并將其存入執(zhí)行代價值向量中。任務產生立即進入全局鏈表,此 時會發(fā)出任務調度申請信號,處理器內核計算當前時刻的任務申請信號存入任務的相應字 段中,同時在執(zhí)行代價值向量的末尾處插入任務的執(zhí)行代價值,并置為-1,表示處理器內核 未計算任務的執(zhí)行代價值。任務的執(zhí)行代價值取決于任務的計算開銷和通信開銷。
[0028] 當任務進入全局鏈表時,為避免中斷處理器內核產生的額外開銷,處理器內核并 不立即對任務的執(zhí)行代價值進行計算,而是等到處理器內核調度任務時,處理器內核才掃 描全局鏈表進行任務執(zhí)行代價值的計算計算,對于已經(jīng)已知執(zhí)行代價值的任務不重新計 算。處理器內核依據(jù)調度規(guī)則調度任務,同時喚醒其他處理器內核計算全局鏈表上的任務 執(zhí)行代價值。當任務被調度到處理器內核隊列時,該處理器內核會清除調度后任務的執(zhí)行 代價值,并通知其他處理器內核清除任務的執(zhí)行代價值。
[0029] 值得注意的是,一開始任務進入到全局鏈表時,任務在各處理器內核的執(zhí)行代價 值為-1。如果該任務所依賴的任務尚未調度到處理器內核隊列時,那么該任務在各個處理 器的執(zhí)行代價值仍為-1。當處理器內核的執(zhí)行代價向量中任務的執(zhí)行代價值為-1,表示任 務不可調度,可以避免任務過早地調度到處理器內核,導致等待依賴任務執(zhí)行的情況發(fā)生。
[0030] (三)任務調度概率
[0031] 處理器內核根據(jù)對任務的執(zhí)行代價值和任務的申請信號來調度全局鏈表的任務 進入處理器內核隊列,定量分析任務被調度的概率。當處理器內核需要調度任務時,對于全 局鏈表中滿足調度條件的任務,如果處理器內核對任務執(zhí)行代價值越小,任務的申請信號 越大,則任務被調度到處理器內核的概率就越大。
[0032] 其中:
[0033] ( -)任務申請信號
[0034] 首先,本發(fā)明方法采用全局鏈