專利名稱:一種前瞻失效線程重啟調度方法
技術領域:
本發明涉及計算機領域,提出了一種前瞻失效線程重啟調度方法。
背景技術:
目前,高性能處理器僅僅提高處理器主頻和復雜的指令流水線技術已經難以顯 著提高其性能,而且這樣做還會導致高功耗和散熱等棘手問題,因此,單片多核處理器 (Chip Multi-Processors, CMP)技術成為提高處理器性能的關鍵技術之一。雖然CMP技 術對并行執行多線程有很好的效果,但現在大多數程序還都是串行程序,如何將這些串 行程序應用于CMP平臺,并讓其高效的運行,這些問題一直阻礙著高性能計算的發展。基于線程級前瞻(Thread-Level Speculative,TLS)的并行技術是解決這些問題的 主要途徑之一。但是前瞻技術推斷得出的結果并不一定總是正確的,這表示有一部分線 程必然會前瞻失效。當出現前瞻失效時,失效線程往往都是在同一時刻請求重啟,但是 由于處理器個數、內存塊、寄存器等多個方面的影響,需要一個好的線程調度方法才能 更好的提高線程重啟的效率,因此前瞻線程重啟調度方法成為串行程序并行化的關鍵技 術之一。
發明內容
本發明的目的在于針對已有技術存在的缺陷,提供一種前瞻失效線程重啟調度 方法,提高線程重啟的效率。為達到上述目的,本發明的構思是根據前瞻線程所占有的資源和相互間的關 系,決定前瞻失效線程重啟的執行順序。通過檢測失效的前瞻線程,計算失效線程的資 源和后繼線程,判斷他們之間的優先執行級別,在對其進行線程重啟。根據上述發明構思,本發明采用下述技術方案—種前瞻失效線程重啟調度方法,其特征在于具體操作步驟如下A、檢測失效的前瞻線程;B、計算每個前瞻失效的線程所占用的資源,記為M(i),i e
, η為所有 失效線程總數;C、計算每個前瞻失效線程的后繼線程數,記為N(i),i e
, η為所有失 效線程總數;D、判斷步驟B中的M(i)之和與現有的空閑資源總數M的大小,有選擇的執行 線程;E、對剩余的線程繼續返回到步驟D,直到所有失效的線程全部重新執行;F、線程調度執行結束。上述步驟D線程的執行順序直接依賴于步驟B、C中的參數,操作步驟如下DU當步驟B中的M(i)之和小于現有的空閑資源總數M,就轉到步驟Dll;當 步驟B中的M(i)之和大于現有的空閑資源總數M,就轉到步驟D21 ;
Dl 1、判斷重啟線程是否互為前驅后繼線程,如果是,先執行前驅線程,轉到步 驟Dll ;否則轉到步驟D12 ;D12、比較重啟線程占用資源M(i),優先執行M(i)小的線程;轉到步驟F;D21、判斷重啟線程是否互為前驅后繼線程,如果是,先執行前驅線程,轉到步 驟D21 ;否則轉到步驟D22 ;D22、對步驟B、C中的參數進行比較當M(i)>M(j),j e
, η為所 有失效線程總數,且N(i) <N(j)時,就優先執行M(j)線程;當M(i) <M(j)且N(i) >N(j)時,就優先執行 M(i)線程;當 M(i) >M(j)且 N(i) >N(j),或者 M(i)<M(j) 且 N(i) <N(j)時,設 Ν/Μ = P,把 P 稱作“執行因子”,N(i)/M(i) = P (i),P 越大,說明執行的優先級別越高。按P從大到小的順序依次執行線程,直到空閑資源M 被利用完,轉到步驟E ;本發明與已有技術相比較,具有如下顯而易見的突出實質性特點和顯著優點 本發明即能夠滿足優先重啟資源需求少的線程,又能夠考慮到該線程是其他線程的前驅 線程和后繼線程的情況,降低前瞻失效時的線程重啟帶價,提高線程重啟的效率。
圖1是本發明中的前瞻失效線程重啟調度方法流程圖。
具體實施例方式本發明的優選實施例結合附圖詳述如下實施例一本前瞻失效線程重啟調度方法,具體操作步驟如下A、檢測失效的前瞻線程;B、計算每個前瞻失效的線程所占用的資源,記為M(i),i e
, η為所有 失效線程總數;C、計算每個前瞻失效線程的后繼線程數,記為N(i),i e
, η為所有失 效線程總數;D、判斷步驟B中的M(i)之和與現有的空閑資源總數M的大小,有選擇的執行 線程;E、對剩余的線程繼續返回到步驟D,直到所有失效的線程全部重新執行;F、線程調度執行結束。實施例二本實施例與實施例一基本相同,特別之處如下所述步驟D線程的執行順序直接依賴于步驟B、C中的參數,操作步驟如下DU當步驟B中的M(i)之和小于現有的空閑資源總數M,就轉到步驟Dll ;當 步驟B中的M(i)之和大于現有的空閑資源總數M,就轉到步驟D21 ;Dl 1、判斷重啟線程是否互為前驅后繼線程,如果是,先執行前驅線程,轉到步 驟Dll ;否則轉到步驟D12 ;D12、比較重啟線程占用資源M(i),優先執行M(i)小的線程;轉到步驟F;D21、判斷重啟線程是否互為前驅后繼線程,如果是,先執行前驅線程,轉到步 驟D21 ;否則轉到步驟D22 ;
D22、對步驟B、C中的參數進行比較當M(i) > M(j) j e
, η為所有 失效線程總數,且N(i) <N(j)時,就優先執行M(j)線程;當M(i) <M(j)且N(i) > N(j)時,就優先執行 M(i)線程;當 M(i) >M(j)且 N(i) >N(j),或者 M(i) < M(j) 且 N(i) <N(j)時,設 Ν/Μ = P,把 P 稱作“執行因子”,N(i)/M(i) = P (i),P 越大,說明執行的優先級別越高。按P從大到小的順序依次執行線程,直到空閑資源M 被利用完,轉到步驟E ;實施例三本實施例所述方案的應用環境是面向多核處理器的前瞻線程并行執 行環境,本實施例不限定所述技術方案應用環境中多核處理器架構和線程調度方式。參照圖1,本前瞻失效線程重啟調度方法的操作步驟如下步驟A(IOl)、檢測失效的前瞻線程。步驟B (102)、計算每個前瞻失效的線程所占用的資源M (i)。步驟C (103)、計算每個前瞻失效線程的后繼線程數N (i)。步驟Dl (104)、判斷M(i)之和是否大于現有空閑資源總數Μ。步驟Dll (105)、判斷重啟線程是否互為前驅后繼線程。步驟Dll (106)、執行前驅線程。步驟D12(107)、比較重啟線程占用資源M(i),按M (i)從小到大的順序執行。步驟D21(108)、判斷重啟線程是否互為前驅后繼線程。步驟D22(109)、設Ν/Μ= P,把 P 稱作“執行因子”,N(i)/M(i) = P (i), P越大,說明執行的優先級別越高,按P從大到小的順序依次執行線程,直到空閑資源 被利用完,剩余的未重啟線程繼續執行下一步操作。以上對本一種前瞻失效線程重啟調度方法,進行了詳細的介紹。本文結合說明 書附圖和具體實施例進行闡述只是用于幫助理解本發明的方法和核心思想;同時,對于 本領域的一般技術人員,依據本發明的方法和思想,在具體實施方式
和應用范圍上均會 有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。
權利要求
1.一種前瞻失效線程重啟調度方法,其特征在于具體操作步驟如下A、檢測失效的前瞻線程;B、計算每個前瞻失效的線程所占用的資源,記為M(i),ie
, η為所有失效 線程總數;C、計算每個前瞻失效線程的后繼線程數,記為N(i),ie
, η為所有失效線 程總數;D、判斷步驟B中的M(i)之和與現有的空閑資源總數M的大小,有選擇的執行線程;Ε、對剩余的線程繼續返回到步驟D,直到所有失效的線程全部重新執行; F、線程調度執行結束。
2.根據權利要求1所述的前瞻失效線程重啟調度方法,其特征在于所述步驟D線程的 執行順序直接依賴于步驟B、C中的參數,操作步驟如下DU當步驟B中的M(i)之和小于現有的空閑資源總數Μ,就轉到步驟Dll;當步 驟B中的M(i)之和大于現有的空閑資源總數M,就轉到步驟D21 ;DlU判斷重啟線程是否互為前驅后繼線程,如果是,先執行前驅線程,轉到步驟 Dll ;否則轉到步驟D12 ;D12、比較重啟線程占用資源M(i),優先執行M(i)小的線程;轉到步驟F; D21、判斷重啟線程是否互為前驅后繼線程,如果是,先執行前驅線程,轉到步驟 D21 ;否則轉到步驟D22 ;D22、對步驟B、C中的參數進行比較當M(i) >M(j) j e
, η為所有失效 線程總數,且N(i) <N(j)時,就優先執行M(j)線程;當M(i) <M(j)且N(i) >N(j) 時,就優先執行M(i)線程;當M(i) >M(j)且N(i) >N(j),或者M(i) <M(j)且N(i) <N(j)時,設Ν/Μ = P,把P稱作“執行因子”,N(i)/M(i) = P (i),P越大,說 明執行的優先級別越高。按P從大到小的順序依次執行線程,直到空閑資源M被利用 完,轉到步驟E。
全文摘要
本發明要解決的技術問題是提供一種前瞻失效線程重啟調度方法。本方法是根據前瞻線程所占用的資源和相互之間的關系,決定前瞻失效線程重啟的執行順序。通過檢測失效的前瞻線程;計算失效線程的資源和后繼線程;判斷他們之間的優先執行級別;再對其進行線程重啟。本發明即能夠滿足優先重啟資源需求少的線程,又能夠考慮到該線程是其他線程的前驅線程和后繼線程的情況,降低前瞻失效時的線程重啟代價,提高了線程重啟的效率。
文檔編號G06F9/48GK102012841SQ20101029118
公開日2011年4月13日 申請日期2010年9月21日 優先權日2010年9月21日
發明者劉清華, 吳悅, 徐振坤, 楊洪斌, 趙文江 申請人:上海大學