專利名稱:面向多核處理器的實時線程遷移方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多核硬件體系架構(gòu)上處理器核之間進行線程遷移的方法。
背景技術(shù):
由于處理器時鐘頻率的增長,處理器能耗和溫度的不斷攀升,導(dǎo)致了處理器 廠商在速度競爭上的極限。面臨這種增長的極限,微處理器廠商紛紛投向了多 核處理器技術(shù)的懷抱。多核處理器技術(shù)為處理器性能提升開辟了一個新的前景。 有些公司就聲稱其生產(chǎn)的處理器將會全面使用多核體系架構(gòu)。
多核處理器芯片提供了比單核處理器芯片更好的并發(fā)性,更好的單位瓦特系 統(tǒng)性能。并發(fā)性為控制系統(tǒng),網(wǎng)絡(luò)路由等設(shè)備提供了更高的性能擴展。這些系 統(tǒng)如果充分利用多核處理器芯片提供的并發(fā)性,將能在性能上有很大的提升。 然而,大多數(shù)的軟件設(shè)計者和軟件工程師對于這種并發(fā)編程模式缺少相應(yīng)的經(jīng) 驗和技術(shù)積累,因此這對于利用多核處理器技術(shù)的優(yōu)勢是一個很大的障礙。
這種技術(shù)上的障礙是很明顯的,比如說多核芯片上的共享資源的管理就是一 個很大的技術(shù)挑戰(zhàn)。大多數(shù)情況下,多核芯片中的每個核有一個獨立的一級緩 存和共享的二級緩存,內(nèi)存子系統(tǒng),中斷子系統(tǒng)和外圍設(shè)備。這樣,系統(tǒng)設(shè)計 者就必須確保每個核互斥的訪問某些資源。這種設(shè)計上的考慮就帶來了更高的 設(shè)計復(fù)雜性。比如說,在不同的核上運行的程序如果需要互相協(xié)作,那么就需 要一個可行的進程間通訊機制,共享內(nèi)存機制和保障共享資源的同步原語機制。 操作系統(tǒng)的方方面面都需要針對多核體系進行改造才能充分利用多核技術(shù)帶來 的性能提升。
因此,操作系統(tǒng)對多核的支持能很大程度上減少多核技術(shù)帶來的設(shè)計難度。 一個支持多核的操作系統(tǒng)充分利用多核硬件平臺的優(yōu)勢,關(guān)鍵在于操作系統(tǒng)對 多核的支持。操作系統(tǒng)在線程級別對多核的支持可以帶來更好的性能。
線程遷移在分布式系統(tǒng)中已經(jīng)進行了大量的研究。分布式系統(tǒng)是通過協(xié)同 各個節(jié)點來共同完成計算任務(wù)。通過事先的任務(wù)放置靜態(tài)地分配負載難以達到 負載平衡。在計算過程中,各個節(jié)點的負載會動態(tài)地發(fā)生改變,線程遷移是實 現(xiàn)分布式系統(tǒng)動態(tài)負載平衡的方法之一。線程遷移是將在一個節(jié)點上運行的線 程轉(zhuǎn)移到另外的節(jié)點上運行。它可以保留在源節(jié)點上已經(jīng)執(zhí)行的結(jié)果而不必重 新執(zhí)行該線程。目前已實現(xiàn)的線程遷移機制當(dāng)中,大部分是基于檢查點保存重
3起機制來實現(xiàn)的,即在遷移進程之前,把進程的狀態(tài)數(shù)據(jù)保存到檢査點文件, 然后該檢査點文件轉(zhuǎn)移到另外的節(jié)點上,待目標(biāo)節(jié)點收到整個檢査點文件后, 再根據(jù)檢査點文件重新恢復(fù)遷移線程。分布式系統(tǒng)中各個節(jié)點是不共享本地內(nèi) 存的,每次線程遷移都要傳輸大量的數(shù)據(jù)。
同樣,為了實現(xiàn)多核處理器的動態(tài)負載平衡,或者是為了提高多核處理器的 性能,降低多核處理器的能耗,有必要在處理器核之間進行線程遷移。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種面向多核處理器的實時線程遷移方法。 本發(fā)明解決其技術(shù)問題采用的技術(shù)方案如下
1) 在處理器核之間進行線程遷移,所有的處理器核都有私有的一級cache, 共享的二級cache和內(nèi)存;
2) 硬件支持的線程遷移初始化-
第一步,當(dāng)每一個線程開始運行后,這個線程的所有的遷移點地址都記錄 在操作系統(tǒng)中;
第二步,操作系統(tǒng)把所有的遷移點地址保存到每個線程各自的一個數(shù)據(jù)結(jié) 構(gòu)中,并把每個處理器核上正在運行的線程的遷移點地址寫到核上的調(diào)試寄存 器中,當(dāng)發(fā)生上下文切換時,操作系統(tǒng)就更新調(diào)試寄存器中的數(shù)據(jù);
第三步,當(dāng)操作系統(tǒng)決定遷移一個線程的時候,操作系統(tǒng)就設(shè)置這個線程 所在處理器核上的調(diào)試寄存器中的標(biāo)志位來激活調(diào)試寄存器;
第四步,當(dāng)線程執(zhí)行指令到達線程的遷移點地址時,就會產(chǎn)生一個硬件中 斷并開始線程遷移;
3) 線程遷移方法
當(dāng)開始線程遷移時,操作系統(tǒng)喚醒線程遷移的目標(biāo)處理器核,接著根據(jù)源 處理器核的指令執(zhí)行結(jié)果對目標(biāo)處理器核進行訓(xùn)練;當(dāng)訓(xùn)練過程結(jié)束后,操作 系統(tǒng)首先釋放源處理器核上的線程并清空源處理器核的流水線,接著把源處理 器核的一級cache中的數(shù)據(jù)寫回到二級cache中,然后把源處理器核寄存器中 的數(shù)據(jù)通過總線傳輸給目標(biāo)處理器核。最后目標(biāo)處理器核把接收到數(shù)據(jù)存儲到 寄存器中,然后開始執(zhí)行在目標(biāo)處理器核上產(chǎn)生的線程。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是
(1)高效性。本發(fā)明實現(xiàn)了一種面向多核處理器的實時線程遷移方法,基 于檢査點的線程遷移方法在線程執(zhí)行過程中要不斷地輪詢系統(tǒng)變量來確定是否 要進行線程遷移,而硬件支持的線程遷移初始化方法不需要花任何時間來輪詢
4系統(tǒng)變量,因此明顯提高了線程執(zhí)行時的性能。由于在多核處理器上線程遷移
時的數(shù)據(jù)傳輸過程只需要把一級cache中的數(shù)據(jù)寫回到二級cache中,然后把 源處理器核上的寄存器中的數(shù)據(jù)通過總線傳輸?shù)侥繕?biāo)處理器核上,因此明顯縮 短了線程遷移的時間。
(2) 可靠性。本發(fā)明通過對分布式系統(tǒng)中線程遷移的過程進行仔細的分析, 適當(dāng)?shù)馗牧司€程遷移的過程,仔細地設(shè)計了線程遷移初始化和線程遷移時源 處理器核和目標(biāo)處理器核之間的數(shù)據(jù)傳輸過程,保證了線程能夠在處理器核之 間正常地進行遷移,使線程遷移到目標(biāo)處理器核上后能夠繼續(xù)正常運行。
(3) 實用性。本發(fā)明提出的一種面向多核處理器的實時線程遷移方法,可 以用在各種多核處理器上。
圖1是硬件支持的線程遷移初始化過程的示意圖。 圖2是線程遷移過程的示意圖。
具體實施例方式
1) 在處理器核之間進行線程遷移,所有的處理器核都有私有的一級cache, 共享的二級cache和內(nèi)存
目前大多數(shù)的多核處理器體系架構(gòu)中,處理器核都有私有的一級cache,并 共享二級cache和內(nèi)存。所有的處理器核都共享內(nèi)存,因此線程遷移時不需要 傳輸共享內(nèi)存中的代碼和數(shù)據(jù)。所有的處理器核都共享二級cache,線程遷移時 源處理器核的一級cache中的數(shù)據(jù)只需寫回到二級cache中而不用寫回到內(nèi)存 中。
2) 硬件支持的線程遷移初始化-
大多數(shù)現(xiàn)代處理器都含有一系列的調(diào)試寄存器。PowerPC 405處理器包含4 個32位的指令地址比較寄存器。當(dāng)程序計數(shù)寄存器中的值等于一個被激活的指 令地址比較寄存器中的值時就會產(chǎn)生一個硬件中斷。同樣地,在其它處理器中, 當(dāng)程序計數(shù)寄存器中的值等于一個被激活的調(diào)試寄存器中的值時也會產(chǎn)生一個 硬件中斷。利用這個機制的硬件支持的線程遷移初始化方法使得線程在執(zhí)行過 程中不需要花任何時間來輪詢系統(tǒng)中的變量。硬件支持的線程遷移初始化方法, 如圖1所示,包含以下四個步驟
第一步,當(dāng)一個線程開始運行后,這個線程的所有的遷移點地址都記錄在 操作系統(tǒng)中;
第二步,操作系統(tǒng)把所有的遷移點地址保存到每個線程各自的一個數(shù)據(jù)結(jié)構(gòu)中,并把每個處理器核上正在運行的線程的遷移點地址寫到核上的調(diào)試寄存 器中,當(dāng)發(fā)生上下文切換時,操作系統(tǒng)就會用將要執(zhí)行的線程的遷移點地址來
更新調(diào)試寄存器中的數(shù)據(jù);
第三步,當(dāng)操作系統(tǒng)根據(jù)資源管理器決定遷移一個線程到另外一個處理器 核上的時候,操作系統(tǒng)就設(shè)置這個線程所在處理器核上的調(diào)試寄存器中的標(biāo)志 位來激活調(diào)試寄存器;
第四步,當(dāng)線程執(zhí)行指令到達線程所在處理器核上被激活的調(diào)試寄存器中 的遷移點地址時,就會產(chǎn)生一個硬件中斷并開始線程遷移;
3)線程遷移方法
如圖2所示,當(dāng)開始線程遷移時,如果線程遷移的目標(biāo)處理器核被關(guān)閉了, 操作系統(tǒng)需要喚醒線程遷移的目標(biāo)處理器核,接著根據(jù)源處理器核的指令執(zhí)行 結(jié)果對目標(biāo)處理器核上的cache和預(yù)測器進行訓(xùn)練。當(dāng)訓(xùn)練過程結(jié)束后,操作 系統(tǒng)首先釋放源處理器核上的線程并清空源處理器核的流水線,接著把源處理 器核的一級cache中的數(shù)據(jù)寫回到二級cache中。當(dāng)源處理器核把一級cache 中的數(shù)據(jù)寫回到二級cache中,目標(biāo)處理器核訪問二級cache就可以獲得正確 的數(shù)據(jù)。然后操作系統(tǒng)把源處理器核寄存器中的數(shù)據(jù)通過總線傳輸存儲到共享 內(nèi)存中,這樣目標(biāo)處理器核就能夠訪問這些數(shù)據(jù)。最后,操作系統(tǒng)在線程遷移 的目標(biāo)處理器核上創(chuàng)建一個新的線程,目標(biāo)處理器核通過訪問共享內(nèi)存獲得源 處理器核寄存器中的數(shù)據(jù),并把這些數(shù)據(jù)存儲到自己的寄存器中,接著目標(biāo)處 理器核就開始執(zhí)行新創(chuàng)建的線程。
權(quán)利要求
1. 一種面向多核處理器的實時線程遷移方法,其特征在于1)在處理器核之間進行線程遷移,所有的處理器核都有私有的一級cache,共享的二級cache和內(nèi)存;2)硬件支持的線程遷移初始化第一步,當(dāng)每一個線程開始運行后,這個線程的所有的遷移點地址都記錄在操作系統(tǒng)中;第二步,操作系統(tǒng)把所有的遷移點地址保存到每個線程各自的一個數(shù)據(jù)結(jié)構(gòu)中,并把每個處理器核上正在運行的線程的遷移點地址寫到核上的調(diào)試寄存器中,當(dāng)發(fā)生上下文切換時,操作系統(tǒng)就更新調(diào)試寄存器中的數(shù)據(jù);第三步,當(dāng)操作系統(tǒng)決定遷移一個線程的時候,操作系統(tǒng)就設(shè)置這個線程所在處理器核上的調(diào)試寄存器中的標(biāo)志位來激活調(diào)試寄存器;第四步,當(dāng)線程執(zhí)行指令到達線程的遷移點地址時,就會產(chǎn)生一個硬件中斷并開始線程遷移;3)線程遷移方法當(dāng)開始線程遷移時,操作系統(tǒng)喚醒線程遷移的目標(biāo)處理器核,接著根據(jù)源處理器核的指令執(zhí)行結(jié)果對目標(biāo)處理器核進行訓(xùn)練;當(dāng)訓(xùn)練過程結(jié)束后,操作系統(tǒng)首先釋放源處理器核上的線程并清空源處理器核的流水線,接著把源處理器核的一級cache中的數(shù)據(jù)寫回到二級cache中,然后把源處理器核寄存器中的數(shù)據(jù)通過總線傳輸給目標(biāo)處理器核。最后目標(biāo)處理器核把接收到數(shù)據(jù)存儲到寄存器中,然后開始執(zhí)行在目標(biāo)處理器核上產(chǎn)生的線程。
全文摘要
本發(fā)明公開了一種面向多核處理器的實時線程遷移方法。本發(fā)明是充分利用了共享二級cache和內(nèi)存的多核硬件體系架構(gòu)的特點從而有效地實現(xiàn)了多核處理器上的實時線程遷移方法。本發(fā)明實現(xiàn)了硬件支持的線程遷移初始化和處理器核之間的線程遷移,在線程運行時不需要花任何時間來輪詢系統(tǒng)變量,減少了線程遷移時處理器核之間的數(shù)據(jù)傳輸,明顯提高了線程執(zhí)行時的性能和縮短了線程遷移的時間。本發(fā)明可以用在各種多核處理器上。
文檔編號G06F9/46GK101504618SQ200910095958
公開日2009年8月12日 申請日期2009年2月26日 優(yōu)先權(quán)日2009年2月26日
發(fā)明者馮德貴, 吳斌斌, 施青松, 滿 曹, 超 王, 王勇剛, 威 胡, 度 陳, 陳天洲, 馬建良 申請人:浙江大學(xué)