專利名稱:改進任務(wù)切換的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)據(jù)處理系統(tǒng),更具體地說,本發(fā)明涉及在數(shù)據(jù)處理系統(tǒng)中處理轉(zhuǎn)換。還具體地說,本法發(fā)明涉及利用轉(zhuǎn)換后援緩沖器(translation lookaside buffer)來改進數(shù)據(jù)處理系統(tǒng)的性能。
背景技術(shù):
通常,現(xiàn)代數(shù)據(jù)處理系統(tǒng)利用虛擬存儲系統(tǒng)來編址超大容量的存儲器,即使系統(tǒng)的主存儲器包含小得多的地址空間。通常,具有較小存儲容量的存儲器(例如,高速緩存)具有較快的訪問時間。相應(yīng)地,具有較大存儲容量的存儲器(例如,硬盤驅(qū)動器)具有較慢的訪問時間。因此,虛擬存儲系統(tǒng)通過把頻繁訪問的數(shù)據(jù)存儲在高速緩存或者主存儲器中來提供一個很大的可用系統(tǒng)存儲器的假象。該虛擬存儲系統(tǒng)把非頻繁訪問的數(shù)據(jù)存儲到硬盤驅(qū)動器中并僅當需要的時候才獲取該數(shù)據(jù)。因此,由于對硬盤驅(qū)動器的訪問因硬盤驅(qū)動器較慢的訪問時間而會導(dǎo)致較大的性能損失,所以把頻繁訪問的數(shù)據(jù)存儲在高速緩存或者主存儲器中的虛擬存儲系統(tǒng)改進了數(shù)據(jù)處理系統(tǒng)的性能。
為了方便數(shù)據(jù)的獲取和訪問,虛擬存儲系統(tǒng)通常定義諸如頁或者段的離散存儲單元,其包括虛擬存儲地址和對應(yīng)的物理存儲地址兩者。實際的物理存儲地址可以指向高速緩存、主存儲器、或者諸如硬盤驅(qū)動器的較慢的備用存儲器中的位置。如果所請求的數(shù)據(jù)的物理地址位于高速緩存或者主存儲器中,那么該數(shù)據(jù)就被容易和快速地訪問和利用。然而,如果該物理地址表明該頁位于諸如硬盤驅(qū)動器的備用存儲器位置,那么該頁必須被轉(zhuǎn)移和“交換”到主存儲器中,然后在這里該數(shù)據(jù)可被訪問。為了釋放足夠的存儲空間來存儲新獲取的數(shù)據(jù),這種轉(zhuǎn)移通常需要把位于高速緩存或者主存儲器中的其他數(shù)據(jù)轉(zhuǎn)換出該高速緩存或者主存儲器而回到該硬盤驅(qū)動器中。該存儲器等級結(jié)構(gòu)的各等級之間的轉(zhuǎn)移通常由一存儲器管理單元控制。
頁處理過程需要一數(shù)據(jù)結(jié)構(gòu),其通常被稱為頁表,該頁表索引由該數(shù)據(jù)處理系統(tǒng)處理的不同頁。典型的頁表通常由虛擬頁號、表的大小、頁的數(shù)量和虛擬地址空間來索引。頁表通常很大并存儲在主存儲器中,并經(jīng)常是分頁的。因此,如果數(shù)據(jù)處理系統(tǒng)中的處理器請求訪問存儲在主存儲器中的數(shù)據(jù),該處理器必須首先查閱位于該存儲器中的頁表來確定所請求的數(shù)據(jù)的物理地址。接著,該處理器必須再次訪問該主存儲器來執(zhí)行實際的數(shù)據(jù)獲取。
本領(lǐng)域技術(shù)人員將知道,一種最小化主存儲器訪問時間的成本的方法是緩存最近訪問的轉(zhuǎn)換,從而如果當前地址引用與最近訪問的地址引用相同的頁,則跳過映射過程。通常,最后的轉(zhuǎn)換被保存在一特定的轉(zhuǎn)換高速緩存中,本領(lǐng)域的技術(shù)人員通常知其為轉(zhuǎn)換后援緩沖器(TLB)。一TLB條目,也被稱為頁表項(PTE),通常包括多個字段,例如虛擬地址、物理頁幀號、保護字段、使用位和一修改或者臟位。
然而,傳統(tǒng)的轉(zhuǎn)換后援緩沖器存儲僅僅對應(yīng)于數(shù)據(jù)處理系統(tǒng)正在執(zhí)行的當前任務(wù)的頁表項。當發(fā)生任務(wù)切換時,整個轉(zhuǎn)換后援緩沖器必須被清空(或者無效),以便存儲用于新任務(wù)的頁表項。在針對新任務(wù)的轉(zhuǎn)換后援緩沖器無效后,為了刷新該轉(zhuǎn)換后援存儲器進行的對頁表的隨后存儲器訪問消耗許多個時鐘周期并對該數(shù)據(jù)處理系統(tǒng)的性能產(chǎn)生負面的影響。因此需要一種在數(shù)據(jù)處理系統(tǒng)中提供對最近訪問的頁表項的訪問并改進任務(wù)切換的性能的系統(tǒng)和方法。
發(fā)明內(nèi)容
公開了一種數(shù)據(jù)處理系統(tǒng)中的改進的任務(wù)切換的系統(tǒng)和方法。首先,第一級高速緩沖存儲器把被無效的頁表項和相關(guān)的第一頁目錄基地址驅(qū)逐到第二級高速緩存。接著,該第二級高速緩沖存儲器確定是否發(fā)生了任務(wù)切換。如果沒有發(fā)生任務(wù)切換,那么第一級高速緩沖存儲器把該被無效的頁表項發(fā)送到一當前運行任務(wù)目錄。如果發(fā)生了任務(wù)切換,那么第一級高速緩沖存儲器從該第二級高速緩存目錄中加載一組與新任務(wù)有關(guān)的頁表項,以能夠進行改進的任務(wù)切換,而無需訪問存儲在主存儲器中的頁表來獲取該組頁表項。
在下面優(yōu)選實施例的詳細說明書中,本發(fā)明的這些和其他特征和優(yōu)點將會得到說明,由于這些說明,它們也會對本領(lǐng)域普通的技術(shù)人員變得清楚。
被認為是本發(fā)明的特點的新穎特征在隨后的權(quán)利要求書中闡明。然而,通過參考連同附圖一起閱讀的以下對示例性實施例的詳細說明,本發(fā)明本身、以及其使用的優(yōu)選方式、其他目標和優(yōu)點將會得到最好的理解,附圖中圖1是描述可在其中實施本發(fā)明的優(yōu)選實施例的一示例性數(shù)據(jù)處理系統(tǒng)的框圖;圖2是示出可在其中實施本發(fā)明的優(yōu)選實施例的一示例性數(shù)據(jù)處理系統(tǒng)中的處理器的詳細框圖;圖3是示出可在其中實施本發(fā)明的優(yōu)選實施例的一示例性數(shù)據(jù)處理系統(tǒng)中的轉(zhuǎn)換后援緩沖器(TLB)的詳細框圖;圖4A是示出根據(jù)本發(fā)明的一優(yōu)選實施例的改進的任務(wù)切換的方法的無效階段和任務(wù)切換確定階段的高層邏輯流程圖;圖4B是示出根據(jù)本發(fā)明的一優(yōu)選實施例的改進的任務(wù)切換的方法的任務(wù)切換階段的高層邏輯流程圖;以及圖4C是示出根據(jù)本發(fā)明的一優(yōu)選實施例的改進的任務(wù)切換的方法的最近最少使用頁表項階段的高層邏輯流程圖。
具體實施例方式
本發(fā)明公開了一種數(shù)據(jù)處理系統(tǒng)中的改進的任務(wù)切換的系統(tǒng)和方法。為了方便使得數(shù)據(jù)處理系統(tǒng)的部件能夠直接訪問存儲器位置的有效地址到物理地址轉(zhuǎn)換,最近訪問頁表項被存儲在本地高速緩存中,該本地高速緩存通常也被稱為轉(zhuǎn)換后援緩沖器(TLB)。在本發(fā)明的一優(yōu)選實施例中,該TLB包括兩部分,第一級TLB和第二級TLB。接著該第二級TLB被進一步地劃分為一任務(wù)切換目錄和一當前運行任務(wù)目錄。
作為所有存儲設(shè)備的特征,該TLB包含有限的存儲容量。當容量被充滿時,該第一級TLB將驅(qū)逐舊的頁表項來為新的頁表項釋放存儲空間。通過一最近最少使用算法或者類似算法可容易實現(xiàn)該驅(qū)逐過程。
當一頁表項被驅(qū)逐時,該第二級TLB必須確定該驅(qū)逐是因為任務(wù)切換還是僅僅因為該TLB變滿。如果該驅(qū)逐是由任務(wù)切換引起的,那么將搜索任務(wù)切換目錄來確定該任務(wù)切換目錄是否包括一頁目錄基地址和對應(yīng)于該新切換的任務(wù)的相關(guān)頁表項。
另外,如果該第二級TLB已經(jīng)確定沒有發(fā)生任務(wù)切換,該被驅(qū)逐的頁表項將僅僅被轉(zhuǎn)移到當前運行任務(wù)目錄。
現(xiàn)在參考附圖,并具體參考圖1,其描述一示例性數(shù)據(jù)處理系統(tǒng)100的框圖,在該系統(tǒng)中可以實施本發(fā)明的優(yōu)選實施例。示例性數(shù)據(jù)處理系統(tǒng)100可以在諸如IBM兼容計算機系列的一個成員的一通用計算機上實現(xiàn),或者在那些當前可購買到的幾種工作站或者圖形計算機設(shè)備中的一個上實現(xiàn)。
如圖所示,示例性數(shù)據(jù)處理系統(tǒng)100包括處理器102,其通過系統(tǒng)總線106連接到系統(tǒng)存儲器104。優(yōu)選地,系統(tǒng)存儲器104可以由一組動態(tài)隨機存取存儲器(DRAM)模塊實現(xiàn)。通常,系統(tǒng)存儲器104包括數(shù)據(jù)、指令和頁幀表(PFT),這將結(jié)合圖3和圖4A-4C進一步更詳細地討論。夾層總線(mezzanine bus)108擔當系統(tǒng)總線106和外圍總線114之間的中介。本領(lǐng)域的技術(shù)人員將知道外圍總線114可以被實現(xiàn)為外設(shè)部件互連(PCI)、加速圖形端口(AGP)或者任何其他外圍總線。連接到外圍總線114上的是硬盤驅(qū)動器110,其由數(shù)據(jù)處理系統(tǒng)100使用作為海量存儲設(shè)備。一組外圍設(shè)備112也連接到外圍總線114上。
本領(lǐng)域的技術(shù)人員將知道,數(shù)據(jù)處理系統(tǒng)100可以包括許多沒有特別在圖1中示出的其他部件。由于這些其他部件對于理解本發(fā)明不是必要的,所以它們在圖1中沒有示出,在這里也不作進一步討論。然而還應(yīng)當理解,由本發(fā)明提供的用來改進任務(wù)切換和頁轉(zhuǎn)換性能的對數(shù)據(jù)處理系統(tǒng)100的增強可以應(yīng)用于任何系統(tǒng)體系結(jié)構(gòu)的數(shù)據(jù)處理系統(tǒng),并且決不會局限于在圖1中示出的一般化的多處理器體系結(jié)構(gòu)或者對稱多處理(SMP)體系結(jié)構(gòu)。
現(xiàn)在參考圖2,它是示出了可在其中實現(xiàn)本發(fā)明的優(yōu)選實施例的一示例性處理器的詳細框圖。如圖所示,處理器102包含一指令流水線,該指令流水線包括一指令定序單元(ISU)200和多個執(zhí)行單元208、212、214、218和220。ISU200利用實地址從一L1指令高速緩存206中取來用于處理的指令,該實地址是通過由指令存儲器管理單元(IMMU)204執(zhí)行的有效地址到實地址轉(zhuǎn)換(ERAT)獲得的。當然,如果所請求的指令高速緩存線(cache line)不在L1指令高速緩存206中,那么ISU200通過指令高速緩存重新加載總線207從L2高速緩存234中請求相關(guān)的指令高速緩沖線,該重載總線也連接到一預(yù)取引擎232上。
在指令被取來和任何預(yù)處理(如果有的話)被執(zhí)行后,ISU200根據(jù)指令的類型通過指令總線209向執(zhí)行單元208、212、214、218和220發(fā)送指令,這種發(fā)送可能是不按次序的。就是說,條件寄存器修改(condition-regoster-modifying)指令和分支指令分別被發(fā)送給條件寄存器單元(CRU)208和分支執(zhí)行單元(BEU)212,定點指令和加載/存儲指令分別被發(fā)送給定點單元(FXU)214和加載-存儲單元(LSU)218,而浮點指令被發(fā)送給浮點單元(FPU)220。
在可能的排隊和緩沖后,由執(zhí)行單元208、212、214、218和220機會式地(opportunistically)執(zhí)行由ISU200發(fā)送的指令。指令“執(zhí)行”在這里被定義為這樣的過程,借此處理器的邏輯電路檢查一指令操作碼(opcode)和相關(guān)操作數(shù)(如果有的話),并作為響應(yīng),在該數(shù)據(jù)處理系統(tǒng)中(例如在系統(tǒng)存儲器位置之間、在寄存器或者緩沖器和存儲器之間,等等)移動數(shù)據(jù)或指令,或者在該數(shù)據(jù)上執(zhí)行邏輯或數(shù)學(xué)操作。對于存儲器訪問(例如加載類型的或者存儲類型的)指令,執(zhí)行通常包括根據(jù)指令操作數(shù)計算一目標有效地址(EA)。
在執(zhí)行單元208、212、214、218和220之一中執(zhí)行期間,指令可以從連接到執(zhí)行單元的寄存器文件中的一個或者多個體系結(jié)構(gòu)(architected)寄存器和/或重命名的(rename)寄存器中接收輸入的操作數(shù)(如果有的話)。指令執(zhí)行的數(shù)據(jù)結(jié)果(即目的操作數(shù)),如果有的話,同樣被執(zhí)行單元208、212、214、218和220寫入到寄存器文件中的指令指定位置。例如,F(xiàn)XU214從一浮點寄存器文件(FPRF)222接收輸入操作數(shù)并把目的操作數(shù)存儲在其中,而LSU218從GPRF216中接收輸入操作數(shù)并使得數(shù)據(jù)在L1數(shù)據(jù)高速緩存230(通過互連217)與GPRF216和FPRF222之間進行轉(zhuǎn)移。類似地,當執(zhí)行條件寄存器修改指令或者條件寄存器依賴(condition-register-dependent)指令時,CRU208和BEU212訪問控制寄存器文件(CRF)210,在一個優(yōu)選實施例中該文件包括條件寄存器、鏈接寄存器、計數(shù)寄存器、和每個寄存器的重命名寄存器。BEU212訪問條件寄存器、鏈接寄存器和計數(shù)寄存器的值來解析條件分支,從而獲得一路徑地址,BEU212把該路徑地址提供給指令定序單元200來啟動沿著指示路徑的指令取。在執(zhí)行單元完成指令的執(zhí)行后,執(zhí)行單元通知指令定序單元200,該指令定序單元計劃安排指令以程序順序完成以及數(shù)據(jù)結(jié)果(如果有的話)到處理單元102的體系結(jié)構(gòu)狀態(tài)的提交。
仍然參照圖2,本發(fā)明的一優(yōu)選實施例優(yōu)選地包括一數(shù)據(jù)存儲器管理單元(DMMU)224。DMMU224把從LSU218接收到的、程序啟動的加載和存儲操作中的有效地址(EA)轉(zhuǎn)換為物理地址(PA),該物理地址在包括L1數(shù)據(jù)高速緩存230、L2高速緩存234和系統(tǒng)存儲器104的易失性存儲等級結(jié)構(gòu)中被使用。DMMU224包括一轉(zhuǎn)換后援緩沖器(TLB)226和一TLB預(yù)取引擎228。
這里結(jié)合圖3和圖4A-4C更詳細地介紹的TLB226緩沖頁表項(PTE)的子集的副本,所述副本被用來把由在處理器102中執(zhí)行的軟件使用的有效地址(EA)轉(zhuǎn)換為物理地址(PA)。如在這里所使用的,有效地址(EA)被定義為標識被映射到虛擬地址的存儲器存儲位置或者其他資源的地址。另一方面,物理地址(PA)在這里被定義為標識實際存儲器位置或者其他實際資源的物理地址空間中的地址。
現(xiàn)在參照圖3,描述了可在其中實現(xiàn)本發(fā)明的一優(yōu)選實施例的示例性轉(zhuǎn)換后援緩沖器(TLB)的詳細框圖。如圖所示,TLB226被進一步地劃分為第一級TLB300和第二級TLB302。第二級TLB302還被劃分為任務(wù)切換目錄(TSD)304和當前運行任務(wù)目錄(CRTD)306。
第一級TLB300保存一標識當前運行任務(wù)的當前頁目錄基地址(PDBA)308a。與當前PDBA308a相關(guān)聯(lián)的是從頁幀表(PFT)116獲取的一組最近訪問頁表項308b。頁幀表116,位于系統(tǒng)存儲器104中,其包括一組頁表項(PTE)。如前面所討論的那樣,頁表項被用來把由在處理器102中執(zhí)行的軟件所使用的有效地址轉(zhuǎn)換為物理地址。因為處理器102利用有效地址尋址存儲器位置,所以處理器102需要頁表項來把有效地址轉(zhuǎn)換為實際包含所請求的數(shù)據(jù)或者指令的物理地址。
因此,第一級TLB300緩存最近所引用的頁表項來方便處理器102的未來訪問。第一級TLB300優(yōu)選地通過利用最近最少使用算法,把最近最少使用的頁表項驅(qū)逐到第二級TLB302的當前運行任務(wù)目錄306中,如果第二級TLB302確定該頁表項不是因為任務(wù)切換被驅(qū)逐的話,這將在后面結(jié)合圖4A-4C更詳細地討論。因此,如果處理器102請求在第一級TLB300中沒有找到的頁表項,那么處理器查閱在第二級TLB302中的當前運行任務(wù)目錄306。再者,如圖所示,當前運行任務(wù)目錄306也包括當前頁目錄基地址314a和相關(guān)的頁表項314b。頁表項314b是那些已經(jīng)通過一最近最少使用算法或者其他算法從第一級TLB300中被驅(qū)逐的頁表項。
如前面所討論的那樣,第二級TLB302還包括一任務(wù)切換目錄(TSD)304。任務(wù)切換目錄304包含一組頁目錄基地址310a和312a以及相關(guān)的頁表項310b和312b。在數(shù)據(jù)處理系統(tǒng)100運行期間,如果第二級TLB302確定已發(fā)生任務(wù)切換,那么第一級TLB300把一頁目錄基地址308a和所有的相關(guān)頁表項308b發(fā)送到任務(wù)切換目錄304。接著,第一級TLB300搜索任務(wù)切換目錄的內(nèi)容來查找對應(yīng)于該新任務(wù)的頁目錄基地址(PDBA)。如果第一級TLB300找到對應(yīng)于該新任務(wù)的頁目錄基地址(PDBA),那么第一級TLB300加載存儲在任務(wù)切換目錄304中對應(yīng)于所找到的頁目錄基地址(PDBA)的所有頁表項(PTE)。
現(xiàn)在參照圖4A,它是示出了根據(jù)本發(fā)明的一優(yōu)選實施例的優(yōu)選的改進的任務(wù)切換方法的無效階段和任務(wù)切換確定階段的高層邏輯流程圖。
無效階段通常,當處理器102需要有效地址到物理地址轉(zhuǎn)換時,處理器102查閱一頁表項來實現(xiàn)該轉(zhuǎn)換。純粹由于頁表項的數(shù)量,頁幀表116在系統(tǒng)存儲器104中存儲所有頁表項。然而,由于訪問系統(tǒng)存儲器104所需要的時間大大超過了一個處理器周期,所以當?shù)却龔奈挥谙到y(tǒng)存儲器104中的頁幀表116中獲取頁表項時,處理器102將拖延(例如不做任何有用工作)多個處理器周期。因此,為了屏蔽這個存儲器訪問等待時間,將最近訪問頁表項存儲在一轉(zhuǎn)換后援緩沖器(TLB)226中以用于處理器的本地訪問。如前面所討論的那樣,TLB226被進一步地劃分為第一級TLB300和第二級TLB302。第一級TLB300存儲對應(yīng)于當前運行任務(wù)的最近訪問頁表項。因為第一級TLB300僅能存儲有限數(shù)量的項,所以如方框400、402、404和406所示的那樣,舊的頁表項被無效并被從第一級TLB300驅(qū)逐到第二級TLB302中。可以利用最近最少使用算法或者任何其他算法來識別、無效和驅(qū)逐舊的頁表項。
任務(wù)切換確定階段任務(wù)切換確定階段包括第二級TLB302確定一頁表項的無效和驅(qū)逐是否是因為任務(wù)切換。舊的頁表項可以由于除了最近最少使用算法計算的結(jié)果外的其他原因而被無效。例如,數(shù)據(jù)處理系統(tǒng)中的任務(wù)通常與某組頁表項相關(guān)。因此,如果處理器102查閱第一級TLB300并且沒有找到所請求的頁表項,這可能是任務(wù)切換的結(jié)果。如方框408所示的那樣,一旦第一級TLB300驅(qū)逐一舊的頁表項,第二級TLB302確定該驅(qū)逐是否是任務(wù)切換的結(jié)果。通常,第二級TLB302查閱與被驅(qū)逐的頁表項相關(guān)的頁目錄基地址,并把它與存儲在一控制寄存器中的頁目錄基地址相比較。如果頁目錄基地址相匹配,那么就沒有發(fā)生任務(wù)切換,并且該過程進行到標號B,該標號連接到在圖4C中所示出的高層邏輯流程圖。另一方面,如果頁目錄基地址不相匹配,那么已經(jīng)發(fā)生任務(wù)切換,并且該過程進行到標號A,該標號連接到在圖4B中所示出的高層邏輯流程圖。
現(xiàn)在參照圖4B,它是示出了根據(jù)本發(fā)明的一優(yōu)選實施例的改進的任務(wù)切換方法的任務(wù)切換階段的高層邏輯流程圖。
任務(wù)切換階段如果第二級TLB302確定已經(jīng)發(fā)生了任務(wù)切換,那么這個確定啟動兩個過程。本領(lǐng)域技術(shù)人員將知道這些過程可以順序或者并行運行。
任務(wù)切換階段-過程1如方框410和412所示,第一個過程包括第一級TLB300搜索任務(wù)切換目錄304來查找對應(yīng)于該新任務(wù)的頁目錄基地址和相關(guān)的頁表項。如果搜索成功,那么如方框418所示,第一級TLB300取消由預(yù)取引擎232執(zhí)行的所請求的預(yù)測加載。該所請求的預(yù)測加載將結(jié)合任務(wù)切換階段-過程2更詳細地討論。另外,如方框414和416所示,第一級TLB300加載相關(guān)的頁表項并開始該新任務(wù)的執(zhí)行。然而如方框420和416所示,如果搜索不成功,那么第一級TLB300將等待所請求的預(yù)測加載的完成,然后開始新任務(wù)的執(zhí)行。接著,該過程繼續(xù)到標號C,表明該過程返回到圖4A的方框402,并以迭代的方式繼續(xù)進行。
任務(wù)切換階段-過程2如方框422所示,第二個過程包括預(yù)取引擎232預(yù)測地從系統(tǒng)存儲器104中的頁幀表116中獲取一組頁表項。如果在過程1中所涉及的對任務(wù)切換目錄304的搜索成功,那么如方框418和414所示,預(yù)取引擎232的預(yù)測加載被取消,并且處理器102接著運行新加載的任務(wù)。然而,如果在第一個過程中所涉及的對任務(wù)切換目錄304的搜索不成功,那么如方框420和416所示,第一級TLB300在接著進行新任務(wù)的處理之前等待預(yù)測加載的完成。接著,如前面所討論的那樣,該過程進行到標號C,并以迭代的方式繼續(xù)進行。
此外,過程2包括把來自第一級TLB300的頁表項和當前運行任務(wù)目錄306合并起來以便存儲在任務(wù)切換目錄304中。首先,如方框423所示,確定任務(wù)切換目錄304是否已滿。接著如果確定任務(wù)切換目錄304已滿,那么如方框424所示,任務(wù)切換目錄304把頁目錄基地址(其對應(yīng)于一任務(wù))和一組相關(guān)的頁表項驅(qū)逐到系統(tǒng)存儲器104中。任務(wù)切換目錄可以使用一最近最少使用算法或者任何其他算法來確定哪個頁目錄基地址應(yīng)該被驅(qū)逐。接著如方框426和428所示,將存儲在第一級TLB300中的所有頁表項與存儲在當前運行任務(wù)目錄306中的頁表項合并,并且將合并后的列表存儲在任務(wù)切換目錄304中。接著如方框416所示,處理器102開始新任務(wù)的處理。然而如果確定任務(wù)切換目錄304未滿,就不需要驅(qū)逐當前所存儲的頁目錄基地址和相關(guān)的頁表項。相反,如方框426和428所示,任務(wù)切換目錄304僅從第一級TLB300中接收剩余的被無效的頁表項并把所述無效的頁表項與位于當前運行任務(wù)目錄306中的頁表項相合并,再把合并后的列表存儲在任務(wù)切換目錄306中。接著,處理器102開始新加載的任務(wù)的執(zhí)行(方框416)并且該過程轉(zhuǎn)到標號C,在這里該過程以迭代的方式繼續(xù)進行。
現(xiàn)在參照圖4C,它是示出了根據(jù)本發(fā)明的一優(yōu)選實施例的優(yōu)選的改進的任務(wù)切換方法的最近最少使用頁表項驅(qū)逐階段的高層邏輯流程圖。
最近最少使用頁表項驅(qū)逐階段如果第二級TLB302確定沒有發(fā)生任務(wù)切換,該確定啟動兩個過程。
本領(lǐng)域技術(shù)人員將知道這些過程可以順序或者并行運行。
最近最少使用頁表項驅(qū)逐階段-過程1如方框432和434所示,第一個過程涉及在第二級TLB302中的當前運行任務(wù)目錄306從第一級TLB300中接收一頁表項請求并確定所請求的頁表項是否存儲在當前運行任務(wù)目錄306中。如方框436所示,如果所請求的頁表項存儲在當前運行任務(wù)目錄306中,那么如方框448所示,第一級TLB300取消由預(yù)取引擎232啟動的預(yù)測加載。該預(yù)測加載將與最近最少使用頁表項驅(qū)逐階段-過程2一起更詳細地討論。接著如方框438所示,第一級TLB300加載所請求的頁表項,并如方框440所示繼續(xù)進行當前任務(wù)的處理。接著該過程轉(zhuǎn)到標號C,并以迭代的方式繼續(xù)進行。
然而,如果所請求的頁表項沒有被存儲在當前運行任務(wù)目錄306中,那么如方框450和438所示,處理器102等待下面將在過程2中說明的預(yù)測加載的完成,并且第一級TLB300加載所請求的頁表項。接著,處理器102繼續(xù)運行該任務(wù)(方框440)。接著該過程轉(zhuǎn)到標號C,并以迭代的方式繼續(xù)進行。
最近最少使用頁表項驅(qū)逐階段-過程2如方框442所示,第二個過程涉及處理器102繼續(xù)進行當前任務(wù)的處理。而且如方框444所示,響應(yīng)于一預(yù)測加載請求,預(yù)取引擎232預(yù)測地從系統(tǒng)存儲器104的頁幀表116中獲取所請求的頁表項。如果在過程1中對當前運行任務(wù)目錄306搜索成功,那么如方框448和438所示,預(yù)取引擎232取消來自當前運行任務(wù)目錄306的預(yù)測加載,并且第一級TLB300加載所請求的頁表項。接著,數(shù)據(jù)處理系統(tǒng)100繼續(xù)進行當前任務(wù)的處理并返回到該過程的開始,如方框440和標號C所示。
然而如果在過程1中涉及的對任務(wù)切換目錄的搜索不成功,那么如方框450、438和440所示,第一級TLB300在把所請求的頁表項加載到第一級TLB300并繼續(xù)進行當前任務(wù)的處理之前等待預(yù)測加載的完成。
另外如方框445所示,必須確定當前運行任務(wù)目錄306的狀態(tài)。如果當前運行任務(wù)目錄304已滿,那么如方框446和449所示,將驅(qū)逐一頁表項來釋放存儲空間以便用來容納來自第一級TLB300的最近被驅(qū)逐的頁表項。接著,該過程進行到標號C并以迭代的方式繼續(xù)進行。然而,如果當前運行任務(wù)目錄304未滿,那么將最近從第一級TLB300驅(qū)逐的頁表項寫入到當前運行任務(wù)目錄304。接著,該過程進行到標號C并以迭代的方式繼續(xù)進行。
盡管圖4中所示出的流程圖指出操作的一特定順序和過程操作的一特定粒度,但是在其他的實施例中所示出的順序可以被改變(例如,過程操作可以另外的順序執(zhí)行或者基本并行地執(zhí)行)并且一個或者多個過程操作可以被合并或分割。同樣,在本發(fā)明其他實施例中,額外的過程操作可以在需要時被添加。
如所公開的,本發(fā)明是一種在數(shù)據(jù)處理系統(tǒng)中的改進的任務(wù)切換和頁轉(zhuǎn)換性能的系統(tǒng)和方法。在第一級轉(zhuǎn)換后援緩沖器(TLB)300無效一頁表項后,第二級TLB確定該頁表項的無效是否是任務(wù)切換的結(jié)果。如果第二級TLB確定該頁表項的無效是任務(wù)切換的結(jié)果,那么該第二級TLB搜索任務(wù)切換目錄來查找對應(yīng)于該新被交換的任務(wù)的頁目錄基地址和相關(guān)的頁表項。如果第二級TLB找到該頁目錄基地址,那么相關(guān)的頁表項被加載到第一級TLB中以用于處理器的本地訪問。因此,處理器將不需要查詢位于系統(tǒng)存儲器中的頁幀表來獲得所請求的頁表項以執(zhí)行有效地址到物理地址轉(zhuǎn)換。如果第二級TLB確定該頁表項的無效不是任務(wù)切換的結(jié)果,那么第一級TLB把該無效頁表項驅(qū)逐到一當前運行任務(wù)目錄中。
盡管本發(fā)明已經(jīng)參照一優(yōu)選實施例被特別示出,但是本領(lǐng)域的技術(shù)人員將知道可以對其做出形式和細節(jié)上的各種變化而不脫離本發(fā)明精神和范圍。指出下面的情況也是重要的,即盡管本發(fā)明已經(jīng)在全功能的計算機系統(tǒng)的情境中被說明,但是本領(lǐng)域的技術(shù)人員將知道本發(fā)明的機制能夠作為多種形式的計算機程序被分發(fā),并且不管用來實際執(zhí)行該分發(fā)的信號承載介質(zhì)的特定類型,本發(fā)明可以同樣地被應(yīng)用。這種信號承載介質(zhì)的例子包括但不局限于諸如軟盤或CD-ROM的可記錄類型的介質(zhì)和諸如模擬和數(shù)字通信鏈路的傳輸類型的介質(zhì)。
權(quán)利要求
1.一種在數(shù)據(jù)處理系統(tǒng)中的改進的任務(wù)切換的方法,包括把被無效的頁表項和相關(guān)的第一頁目錄基地址從第一級高速緩沖存儲器驅(qū)逐到第二級高速緩沖存儲器;響應(yīng)所述驅(qū)逐,確定是否發(fā)生任務(wù)切換;響應(yīng)于確定沒有發(fā)生任務(wù)切換,把所述被無效的頁表項發(fā)送到當前運行任務(wù)目錄;以及響應(yīng)于確定已經(jīng)發(fā)生所述任務(wù)切換,從任務(wù)切換目錄中加載對應(yīng)于新任務(wù)的第一多個頁表項,以能夠進行改進的任務(wù)切換,而無需訪問存儲在主存儲器中的頁表來獲取所述第一多個頁表項。
2.根據(jù)權(quán)利要求1所述的方法,還包括響應(yīng)于確定已經(jīng)發(fā)生所述任務(wù)切換,把至少一個預(yù)測加載請求發(fā)送到系統(tǒng)存儲器來請求與所述新任務(wù)相關(guān)的第二多個頁表項。
3.根據(jù)權(quán)利要求2所述的方法,還包括響應(yīng)于確定已經(jīng)發(fā)生所述任務(wù)切換,解析所述任務(wù)切換目錄來獲取與所述新任務(wù)相關(guān)的第二頁目錄基地址;以及響應(yīng)于確定所述任務(wù)切換目錄不包含所述第二頁目錄基地址,加載與所述新任務(wù)相關(guān)的所述第二多個頁表項。
4.根據(jù)權(quán)利要求1所述的方法,還包括響應(yīng)于所述加載,開始所述新任務(wù)的執(zhí)行。
5.根據(jù)權(quán)利要求1所述的方法,還包括確定所述任務(wù)切換目錄是否已滿;響應(yīng)于確定所述任務(wù)切換目錄已滿,把一頁目錄基地址和多個相關(guān)的頁表項從所述任務(wù)切換目錄中驅(qū)逐;以及把來自所述第一級高速緩沖存儲器的多個頁表項和存儲在所述當前運行任務(wù)目錄中的多個頁表項合并成列表;以及把所述列表存儲到所述任務(wù)切換目錄中。
6.根據(jù)權(quán)利要求1所述的方法,還包括響應(yīng)于確定沒有發(fā)生所述任務(wù)切換,確定所請求的頁表項是否存儲在所述當前運行任務(wù)目錄中。
7.根據(jù)權(quán)利要求1所述的方法,還包括響應(yīng)于確定沒有發(fā)生所述任務(wù)切換,發(fā)送對于所請求的頁表項的預(yù)測加載請求。
8.根據(jù)權(quán)利要求1所述的方法,還包括響應(yīng)于確定沒有發(fā)生所述任務(wù)切換,從所述當前運行任務(wù)目錄中驅(qū)逐頁表項;以及響應(yīng)于所述驅(qū)逐,把所述被無效的頁表項添加到所述當前運行任務(wù)目錄。
9.一種數(shù)據(jù)處理系統(tǒng),包括系統(tǒng)存儲器,其包括頁表;以及處理器,其通過互連連接到所述系統(tǒng)存儲器,其中所述處理器還包括第一級高速緩沖存儲器,用于驅(qū)逐被無效的頁表項和相關(guān)的第一頁目錄基地址;第二級高速緩沖存儲器,其連接到所述第一級高速緩沖存儲器,其中所述第二級高速緩沖存儲器確定是否發(fā)生任務(wù)切換,其中所述第二級高速緩沖存儲器還包括當前運行任務(wù)目錄,用于存儲至少一個被從所述第一級高速緩沖存儲器中驅(qū)逐出的頁表項;任務(wù)切換目錄,用于存儲至少一組與至少一個其他任務(wù)相關(guān)的多個頁表項并發(fā)送與所述新任務(wù)相關(guān)的第一多個頁表項,以能夠進行改進的任務(wù)切換,而無需訪問存儲在所述系統(tǒng)存儲器中的所述頁表來獲取所述第一多個頁表項。
10.根據(jù)權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中響應(yīng)于確定已經(jīng)發(fā)生所述任務(wù)切換,所述第二級高速緩存目錄把至少一個預(yù)測加載請求發(fā)送到所述系統(tǒng)存儲器來請求與所述新任務(wù)相關(guān)的第二多個頁表項。
11.根據(jù)權(quán)利要求10所述的數(shù)據(jù)處理系統(tǒng),其中響應(yīng)于確定已經(jīng)發(fā)生所述任務(wù)切換,所述第二級高速緩存目錄分析所述任務(wù)切換目錄來獲得與所述新任務(wù)相關(guān)的第二頁目錄基地址,以及響應(yīng)于確定所述任務(wù)切換不包含所述第二頁目錄基地址,加載與所述新任務(wù)相關(guān)的第二多個頁表項。
12.根據(jù)權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中響應(yīng)于加載所述第一多個頁表項,所述處理器開始所述新任務(wù)的執(zhí)行。
13.根據(jù)權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中所述第二級高速緩存目錄確定所述任務(wù)切換目錄是否已滿,以及響應(yīng)于確定所述任務(wù)切換目錄已滿,從所述任務(wù)切換目錄中驅(qū)逐頁目錄基地址和多個相關(guān)的頁表項,以及把來自所述第一級高速緩沖存儲器中的多個頁表項和存儲在所述當前運行任務(wù)目錄中的多個頁表項合并成列表,并把所述列表存儲到所述任務(wù)切換目錄中。
14.根據(jù)權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中響應(yīng)于確定沒有發(fā)生所述任務(wù)切換,所述第二級高速緩存目錄確定所請求的頁表項是否存儲在所述當前運行任務(wù)目錄中。
15.根據(jù)權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中響應(yīng)于確定沒有發(fā)生所述任務(wù)切換,所述第二級高速緩存目錄發(fā)送對于所請求的頁表項的預(yù)測加載請求。
16.根據(jù)權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中響應(yīng)于確定沒有發(fā)生所述任務(wù)切換,所述第二級高速緩存目錄從所述當前運行任務(wù)目錄中驅(qū)逐頁表項,以及響應(yīng)于從所述當前運行任務(wù)目錄中驅(qū)逐所述頁表項,把所述被無效的頁表項添加到所述當前運行任務(wù)目錄。
17.一種處理器,包括第一級高速緩沖存儲器,用于驅(qū)逐被無效的頁表項和相關(guān)的第一頁目錄基地址;第二級高速緩沖存儲器,其連接到所述第一級高速緩沖存儲器,其中所述第二級高速緩沖存儲器確定是否發(fā)生任務(wù)切換,其中所述第二級高速緩沖存儲器還包括當前運行任務(wù)目錄,用于存儲至少一個被從所述第一級高速緩沖存儲器中驅(qū)逐出的頁表項;任務(wù)切換目錄,用于存儲至少一組與至少一個其他任務(wù)相關(guān)的多個頁表項并發(fā)送與所述新任務(wù)相關(guān)的第一多個頁表項,以能夠進行改進的任務(wù)切換,而無需訪問存儲在系統(tǒng)存儲器中的頁表來獲取所述第一多個頁表項。
18.根據(jù)權(quán)利要求17所述的處理器,其中響應(yīng)于確定已經(jīng)發(fā)生所述任務(wù)切換,所述第二級高速緩存目錄把至少一個預(yù)測加載請求發(fā)送到所述系統(tǒng)存儲器來請求與所述新任務(wù)相關(guān)的第二多個頁表項。
19.根據(jù)權(quán)利要求18所述的處理器,其中響應(yīng)于確定已經(jīng)發(fā)生所述任務(wù)切換,所述第二級高速緩存目錄分析所述任務(wù)切換目錄來獲得與所述新任務(wù)相關(guān)的第二頁目錄基地址,以及響應(yīng)于確定所述任務(wù)切換不包含所述第二頁目錄基地址,加載與所述新任務(wù)相關(guān)的第二多個頁表項。
20.根據(jù)權(quán)利要求17所述的處理器,其中響應(yīng)于加載所述第一多個頁表項,所述處理器開始所述新任務(wù)的執(zhí)行。
21.根據(jù)權(quán)利要求17所述的處理器,其中所述第二級高速緩存目錄確定所述任務(wù)切換目錄是否已滿,以及響應(yīng)于確定所述任務(wù)切換目錄已滿,從所述任務(wù)切換目錄中驅(qū)逐頁目錄基地址和多個相關(guān)的頁表項,以及把來自所述第一級高速緩沖存儲器中的多個頁表項和存儲在所述當前運行任務(wù)目錄中的多個頁表項合并成列表,并把所述列表存儲到所述任務(wù)切換目錄中。
22.根據(jù)權(quán)利要求17所述的處理器,其中響應(yīng)于確定所述任務(wù)切換沒有發(fā)生,所述第二級高速緩存目錄確定所請求的頁表項是否存儲在所述當前運行任務(wù)目錄中。
23.根據(jù)權(quán)利要求17所述的處理器,其中響應(yīng)于確定沒有發(fā)生所述任務(wù)切換,所述第二級高速緩存目錄發(fā)送對于所請求的頁表項的預(yù)測加載請求。
24.根據(jù)權(quán)利要求17所述的處理器,其中響應(yīng)于確定沒有發(fā)生所述任務(wù)切換,所述第二級高速緩存目錄從所述當前運行任務(wù)目錄中驅(qū)逐頁表項,以及響應(yīng)于從所述當前運行任務(wù)目錄中驅(qū)逐所述頁表項,把所述被無效的頁表項添加到所述當前運行任務(wù)目錄。
25.一種用于數(shù)據(jù)處理系統(tǒng)中的改進的任務(wù)切換的計算機程序產(chǎn)品,包含用于執(zhí)行前面方法權(quán)利要求的任一方法的指令。
全文摘要
一種數(shù)據(jù)處理系統(tǒng)中的改進的任務(wù)切換的方法和系統(tǒng)。首先,第一級高速緩沖存儲器把被無效的頁表項和相關(guān)的第一頁目錄基地址驅(qū)逐到第二級高速緩沖存儲器。接著,該第二級高速緩沖存儲器確定是否發(fā)生了任務(wù)切換。如果沒有發(fā)生任務(wù)切換,第一級高速緩沖存儲器把該被無效的頁表項發(fā)送到當前運行任務(wù)目錄。如果發(fā)生了任務(wù)切換,那么第一級高速緩沖存儲器從第二級高速緩存目錄中加載一組與新任務(wù)有關(guān)的頁表項,以能夠進行改進的任務(wù)切換,而無需訪問存儲在主存儲器中的頁表來獲取該組頁表項。
文檔編號G06F12/12GK1841343SQ20061006614
公開日2006年10月4日 申請日期2006年3月24日 優(yōu)先權(quán)日2005年3月31日
發(fā)明者C·冬布羅夫斯基, M·L·克爾尼蓋, D·M·帕塞 申請人:國際商業(yè)機器公司