本發(fā)明涉及微處理器,特別涉及微處理器的預(yù)取(prefetch)數(shù)據(jù)的方法。
背景技術(shù):
::現(xiàn)今許多微處理器具有使用虛擬存儲(chǔ)器的能力,特別是能夠運(yùn)用一存儲(chǔ)器分頁機(jī)制(memorypagingmechanism)。本領(lǐng)域技術(shù)人員應(yīng)能理解,操作系統(tǒng)在系統(tǒng)存儲(chǔ)器中所建立的分頁表(pagetables)用來將虛擬地址轉(zhuǎn)譯成物理地址。根據(jù)《IA-32架構(gòu)軟件開發(fā)者手冊,第3A冊:系統(tǒng)程序設(shè)計(jì)導(dǎo)引,第1篇,2006年6月》中所描述的x86架構(gòu)處理器技術(shù)(該參考文獻(xiàn)全文以引用方式并入本文中),分頁表可采取階層方式(hierarchicalfashion)排列。具體說來,分頁表包含多個(gè)分頁表項(xiàng)目(pagetableentries;PTE),各個(gè)分頁表項(xiàng)目存儲(chǔ)一物理存儲(chǔ)器分頁的物理分頁地址與物理存儲(chǔ)器分頁的屬性。所謂的分頁表尋訪(tablewalk)是指提取一虛擬存儲(chǔ)器分頁地址并使用此虛擬存儲(chǔ)器分頁地址來尋訪(traverse)分頁表階層,用以取得與此虛擬存儲(chǔ)器分頁地址對應(yīng)的分頁表項(xiàng)目以便將虛擬地址轉(zhuǎn)譯成物理地址。由于物理存儲(chǔ)器存取的延遲時(shí)間相對較長,加上在分頁表尋訪過程中可能要對物理存儲(chǔ)器進(jìn)行多重存取,因此執(zhí)行分頁表尋訪十分耗時(shí)。為了避免因執(zhí)行分頁表尋訪而造成的時(shí)耗,處理器通常會(huì)包含一轉(zhuǎn)譯查詢緩沖器(TranslationLookasideBuffer;TLB)用以存儲(chǔ)虛擬地址及由虛擬地址轉(zhuǎn)譯成的物理地址。然而,轉(zhuǎn)譯查詢緩沖器的大小有限,并且當(dāng)轉(zhuǎn)譯查詢緩沖器發(fā)生遺失(miss)時(shí)還是需要執(zhí)行分頁表尋訪。因此,我們需要一種能夠縮短分頁表尋訪的執(zhí)行時(shí)間的方法。技術(shù)實(shí)現(xiàn)要素:在一實(shí)施例中,本發(fā)明提供一種微處理器,包括一轉(zhuǎn)譯查詢緩沖器、第一要求、硬件邏輯以及第二要求。第一要求載入一分頁表項(xiàng)目至微處理器,以響應(yīng)未在轉(zhuǎn)譯查詢緩沖器找到一虛擬地址,被要求的分頁表項(xiàng)目被包含于一分頁表,分頁表包括多個(gè)快取線,該等快取線包括一第一快取線,第一快取線包括被要求的分頁表項(xiàng)目。硬件邏輯決定物理接續(xù)第一快取線的一第二快取線是否在分頁表之外。第二要求預(yù)取第二快取線至微處理器,第二要求至少基于硬件邏輯所作的決定而被選擇性產(chǎn)生。在另一實(shí)施例中,本發(fā)明提供一種方法,包括產(chǎn)生一第一要求以載入一分頁表項(xiàng)目至一微處理器,以響應(yīng)未在微處理器之一轉(zhuǎn)譯查詢緩沖器找到一虛擬地址,被要求的分頁表項(xiàng)目被包含于一分頁表,分頁表包括多個(gè)快取線,該等快取線包括一第一快取線,第一快取線包括被要求的分頁表項(xiàng)目;決定物理接續(xù)第一快取線的一第二快取線是否在分頁表之外;以及至少基于決定而選擇性產(chǎn)生一第二要求以預(yù)取第二快取線至微處理器。在另一實(shí)施例中,本發(fā)明提供一種被編碼于至少一非暫態(tài)(non-transitory)計(jì)算機(jī)用介質(zhì)且使用于運(yùn)算裝置的計(jì)算機(jī)程序產(chǎn)品,計(jì)算機(jī)程序產(chǎn)品包括內(nèi)建于介質(zhì)的計(jì)算機(jī)用程序代碼,用以確認(rèn)一微處理器。計(jì)算機(jī)用程序代碼包括一第一程序代碼,用以確認(rèn)一轉(zhuǎn)譯查詢緩沖器;一第二程序代碼,用以確認(rèn)一第一要求以載入一分頁表項(xiàng)目至一微處理器,以響應(yīng)未在微處理器的一轉(zhuǎn)譯查詢緩沖器找到一虛擬地址,被要求的分頁表項(xiàng)目被包含于一分頁表,分頁表包括多個(gè)快取線,該等快取線包括一第一快取線,第一快取線包括被要求的分頁表項(xiàng)目;一第三程序代碼,用以確認(rèn)一硬件邏輯,硬件邏輯決定物理接續(xù)第一快取線的一第二快取線是否在分頁表之外;以及一第四程序代碼,用以確認(rèn)一第二要求以預(yù)取第二快取線至微處理器,第二要求至少基于決定而被選擇性產(chǎn)生。為讓本發(fā)明的上述和其他目的、特征、和優(yōu)點(diǎn)能更明顯易懂,下文特舉出優(yōu)選實(shí)施例,并配合附圖,作詳細(xì)說明如下。附圖說明圖1為本發(fā)明實(shí)施例的微處理器的方塊圖;圖2為圖1中的微處理器的操作流程圖;圖3為本發(fā)明實(shí)施例的微處理器的方塊圖;圖4為圖3中的微處理器的操作流程圖;圖5為分頁表尋訪引擎形成分頁表項(xiàng)目物理地址的方塊圖;圖6為分頁表尋訪引擎形成分頁表項(xiàng)目物理地址的方塊圖;圖7至圖10為決定第二快取線是否在分頁表之外的實(shí)施例的方塊圖;圖11至圖13為依據(jù)其他實(shí)施例的微處理器的方塊圖?!痉栒f明】100~微處理器;102~指令快??;104~指令轉(zhuǎn)譯器;106~指令配送器;108~載入單元;112~數(shù)據(jù)快??;114~總線接口單元;116~轉(zhuǎn)譯查詢緩沖器;118~分頁表尋訪引擎;122~預(yù)取單元;124~第一快取線;126~第二快取線;128~物理存儲(chǔ)器;132~虛擬地址;134~遺失信號;136~分頁表項(xiàng)目載入請求信號;138~確認(rèn)信號;142~預(yù)取請求信號;144~物理地址;396~最后標(biāo)志;396~分頁表項(xiàng)目物理地址;502~分頁表項(xiàng)目地址;504~快取線索引;506~分頁表地址;508~分頁表。具體實(shí)施方式為讓本發(fā)明的目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉出本發(fā)明的具體實(shí)施例,并配合附圖,作詳細(xì)說明如下。目的在于說明本發(fā)明的精神而非用以限定本發(fā)明的保護(hù)范圍,應(yīng)理解下列實(shí)施例可經(jīng)由軟件、硬件、固件、或上述任意組合來實(shí)現(xiàn)。請參考圖1,圖1為本發(fā)明實(shí)施例的微處理器100的方塊圖,此微處理器100為一管線式微處理器(pipelinedmicroprocessor)。微處理器100包括一指令快取102用以提供多個(gè)指令至一指令轉(zhuǎn)譯器104,并且指令轉(zhuǎn)譯器104將所接收的指令轉(zhuǎn)譯并將轉(zhuǎn)譯后的指令提供至一指令配送器(instructiondispatcher)106。指令配送器106將指令提供至一載入單元108,其中上述指令可包括存儲(chǔ)器存取指令(例如載入指令或存儲(chǔ)指令)。載入單元108將一存儲(chǔ)器存取指令所指定的虛擬地址132提供至一轉(zhuǎn)譯查詢緩沖器116,并且轉(zhuǎn)譯查詢緩沖器116對虛擬地址132進(jìn)行查找(lookup)。若虛擬地址132有出現(xiàn)在轉(zhuǎn)譯查詢緩沖器116中,則轉(zhuǎn)譯查詢緩沖器116將虛擬地址132轉(zhuǎn)譯后的物理地址144傳送回載入單元108。若虛擬地址132未出現(xiàn)在轉(zhuǎn)譯查詢緩沖器116中,則轉(zhuǎn)譯查詢緩沖器116產(chǎn)生一遺失信號(misssignal)134并傳送至一分頁表尋訪引擎(tablewalkengine)118。分頁表尋訪引擎118耦接至載入單元108以及轉(zhuǎn)譯查詢緩沖器116。如圖1所示,預(yù)取單元122與數(shù)據(jù)快取112也耦接至載入單元108,并且總線接口單元114耦接至數(shù)據(jù)快取112。總線接口單元114將微處理器100耦接至一處理器總線,上述處理器總線耦接至具有微處理器100的計(jì)算機(jī)系統(tǒng)中的物理存儲(chǔ)器128。具體說來,物理存儲(chǔ)器128存儲(chǔ)多個(gè)分頁表,其中一分頁表包括位于物理地址P的一第一快取線124以及位于物理地址P+64的一第二快取線126,并且第一快取線124與第二快取線126分別存儲(chǔ)八個(gè)分頁表項(xiàng)目。在本實(shí)施例中一條快取線的大小為64字節(jié)(bytes),并且一個(gè)分頁表項(xiàng)目的大小為8字節(jié),因此每條快取線可存儲(chǔ)八個(gè)分頁表項(xiàng)目。請參考圖2,圖2為圖1中的微處理器100的操作流程圖,用以說明如何預(yù)取下一條快取線,其中此快取線與一載入至載入單元的分頁表項(xiàng)目有關(guān)。流程從步驟202開始。在步驟202中,當(dāng)虛擬地址132未出現(xiàn)在轉(zhuǎn)譯查詢緩沖器116中,轉(zhuǎn)譯查詢緩沖器116產(chǎn)生一遺失信號134并傳送至分頁表尋訪引擎118。分頁表尋訪引擎118在接收遺失信號134后即執(zhí)行分頁表尋訪以便取得遺失在轉(zhuǎn)譯查詢緩沖器116中的虛擬地址132所轉(zhuǎn)譯成的物理地址。分頁表尋訪引擎118藉由產(chǎn)生一分頁表項(xiàng)目載入請求信號(PTEloadrequest)136來執(zhí)行分頁表尋訪動(dòng)作,其中分頁表尋訪引擎118將分頁表項(xiàng)目載入請求信號136傳送至載入單元108,用以載入執(zhí)行地址轉(zhuǎn)譯所需的分頁表項(xiàng)目。流程前進(jìn)至步驟204。在步驟204中,載入單元108檢測分頁表項(xiàng)目載入請求信號136并且載入位于物理存儲(chǔ)器128中的分頁表項(xiàng)目。此外,載入單元108通過一確認(rèn)信號138告知預(yù)取單元122已經(jīng)查見(seen)分頁表項(xiàng)目載入請求信號136,并且將第一快取線124的物理地址提供至轉(zhuǎn)譯查詢緩沖器116,在圖1的實(shí)施例中,該物理地址為P,其中此第一快取線124具有載入單元108所載入的分頁表項(xiàng)目。流程前進(jìn)至步驟206。在步驟206中,預(yù)取單元122產(chǎn)生一預(yù)取請求信號142并傳送至載入單元108。預(yù)取請求信號142命令載入單元108將位于物理地址P+64的第二快取線126預(yù)取至數(shù)據(jù)快取112。換句話說,載入單元108將位于第一快取線124(具有載入至載入單元108的分頁表項(xiàng)目)之后的下一條快取線(第二快取線126)預(yù)取至數(shù)據(jù)快取112。流程前進(jìn)至步驟208。在步驟208中,載入單元108根據(jù)預(yù)取請求信號142將下一條快取線(第二快取線126)預(yù)取至數(shù)據(jù)快取112。然而在某些情況下,微處理器100中的載入單元108并不會(huì)執(zhí)行載入第二快取線126的動(dòng)作。舉例而言,上述情況可為一功能性需求(functionalrequirement)情況,例如快取線落在一非快取存儲(chǔ)器區(qū)(non-cacheablememoryregion)。上述情況也可為微處理器100要執(zhí)行非推測性配置(non-speculativeallocations)。若載入單元108決定載入來自物理存儲(chǔ)器128中的第二快取線126,則載入單元108命令總線接口單元114執(zhí)行此載入動(dòng)作。流程結(jié)束于步驟208。雖然本發(fā)明實(shí)施例描述預(yù)取下一條快取線,但在其他實(shí)施例中,預(yù)取單元122會(huì)產(chǎn)生一請求信號用以命令載入單元108預(yù)取上一條快取線,或者是命令載入單元108預(yù)取下一條與上一條快取線。此實(shí)施例適用于程序在存儲(chǔ)器分頁中以另一方向行進(jìn)的情況。此外,雖然本發(fā)明實(shí)施例描述預(yù)取具有分頁表項(xiàng)目的下一條快取線,但在其他實(shí)施例中,預(yù)取單元122會(huì)產(chǎn)生一請求信號用以命令載入單元108預(yù)取具有其他層級(level)的分頁信息階層的下一條快取線,例如分頁描述符項(xiàng)目(PageDescriptorEntries;PDE)。值得注意的是,雖然使用此方法的某些程序的存取樣本(accesspattern)是有助益的,但由于將大量物理存儲(chǔ)器設(shè)置于單一分頁描述符項(xiàng)目下方的情況不常見,并且程序?qū)ぴL存儲(chǔ)器的速度會(huì)變得很慢,因此上述方法不但效率不彰也會(huì)帶來風(fēng)險(xiǎn)。此外,在其他實(shí)施例中,預(yù)取單元122會(huì)產(chǎn)生一請求信號用以命令載入單元108預(yù)取具有另一分頁表階層(不同于上述分頁描述符項(xiàng)目/分頁表項(xiàng)目階層)的下一條快取線。如前文所述,預(yù)取單元122會(huì)產(chǎn)生一請求信號用以命令載入單元108預(yù)取下一條快取線至具有需要完成分頁表尋訪的分頁表項(xiàng)目的快取線。假設(shè)各個(gè)分頁表的大小為4千字節(jié)(KB),各個(gè)分頁表項(xiàng)目的大小為8字節(jié),并且各條快取線的大小為64字節(jié),所以一個(gè)分頁表中會(huì)具有64條分別具有八個(gè)分頁表項(xiàng)目的快取線。因此,在步驟208中所預(yù)取的下一條快取線中具有分頁表中緊鄰的(next)八個(gè)分頁表項(xiàng)目的可能性相當(dāng)高,特別是在操作系統(tǒng)將分頁表配置為物理連續(xù)分頁表的情況下。在使用小型分頁(通常為4千字節(jié))的情況下,程序在最后會(huì)存取存儲(chǔ)器的八個(gè)分頁中的其中幾個(gè),而這些所存取的分頁有很大的可能性超過在步驟202中轉(zhuǎn)譯查詢緩沖器116所存取的分頁。在另一實(shí)施例中可將額外的邏輯電路加入至預(yù)取單元122與載入單元108,使得預(yù)取單元122產(chǎn)生一請求信號用以命令載入單元108預(yù)取八個(gè)分頁表項(xiàng)目,此舉會(huì)大大地減少執(zhí)行一分頁表尋訪用以將八個(gè)存儲(chǔ)器分頁存儲(chǔ)至轉(zhuǎn)譯查詢緩沖器116所需的時(shí)鐘周期,其中這八個(gè)存儲(chǔ)器分頁的物理地址存儲(chǔ)在八個(gè)分頁表項(xiàng)目中。具體說來,當(dāng)分頁表尋訪引擎118必須執(zhí)行分頁表尋訪(包括載入位于第二快取線126的八個(gè)分頁表項(xiàng)目中的任意一個(gè))時(shí),這些所載入的分頁表項(xiàng)目將會(huì)位于數(shù)據(jù)快取112中(除非它們依序從數(shù)據(jù)快取112中移除),此舉會(huì)縮短讀取物理存儲(chǔ)器128用以取得分頁表項(xiàng)目所需的延遲時(shí)間。已知預(yù)取機(jī)制用以檢測程序存儲(chǔ)器存取的存儲(chǔ)器存取樣本(pattern)(即載入指令與存儲(chǔ)指令)。若預(yù)取器所檢測到的程序藉由一樣本來存取存儲(chǔ)器,則預(yù)取器會(huì)預(yù)期之后載入指令或存儲(chǔ)指令的地址,并且從此地址執(zhí)行預(yù)取動(dòng)作。若程序依序地存取存儲(chǔ)器,則預(yù)取器通常會(huì)根據(jù)載入指令或存儲(chǔ)指令的虛擬地址來預(yù)取下一條快取線。在一操作系統(tǒng)執(zhí)行分頁表尋訪的處理器架構(gòu)中,以載入指令或存儲(chǔ)指令為基礎(chǔ)的預(yù)取器(programload/store-basedprefetcher)會(huì)在載入分頁表項(xiàng)目之后預(yù)取下一條快取線。然而,在以硬件方式執(zhí)行分頁表尋訪而不是軟件進(jìn)行載入指令或存儲(chǔ)指令的處理器中,以載入指令或存儲(chǔ)指令為基礎(chǔ)的預(yù)取器并不會(huì)觸發(fā)(triggeroff)分頁表項(xiàng)目的載入動(dòng)作(因?yàn)檫@不是一個(gè)載入指令),也因此不會(huì)在載入分頁表項(xiàng)目之后預(yù)取下一條快取線。相反地,在本發(fā)明的以硬件方式執(zhí)行分頁表尋訪的處理器中,預(yù)取單元122可觸發(fā)一非編程的分頁表項(xiàng)目載入動(dòng)作,也就是藉由分頁表尋訪引擎118所觸發(fā)的物理存儲(chǔ)器存取動(dòng)作。因此,不同于以載入指令或存儲(chǔ)指令為基礎(chǔ)的機(jī)制,本發(fā)明的預(yù)取單元122會(huì)命令載入單元108預(yù)取下一條快取線,并且此快取線可能包含分頁表中的數(shù)個(gè)分頁表項(xiàng)目。選擇性預(yù)取圖1與圖2所述的分頁表項(xiàng)目預(yù)取機(jī)制具有降低分頁表尋訪時(shí)間的優(yōu)點(diǎn)。如上所述,很有可能下一條被預(yù)取的物理快取線包含分頁表中的接下來幾個(gè)分頁表項(xiàng)目。當(dāng)操作系統(tǒng)將分頁表設(shè)置為物理上依序相鄰時(shí),可能性會(huì)特別高。上述做法的優(yōu)點(diǎn)在于,因?yàn)橛邢喈?dāng)高的機(jī)率程序可能存取至少一些存儲(chǔ)器之中超出虛擬存取當(dāng)前頁面的接下來數(shù)個(gè)頁面而導(dǎo)致轉(zhuǎn)譯查詢緩沖器的遺失。然而,如果操作系統(tǒng)沒有將分頁表設(shè)置為物理上依序相鄰、或者至少并非當(dāng)中的一些,則預(yù)取下一條快取線可能導(dǎo)致從快取存儲(chǔ)器階層(hierarchy)逐出(evict)比已預(yù)取快取線更好用的快取線。以下的實(shí)施例關(guān)于此,并且改善快取效率。詞匯分頁表項(xiàng)目(pagetableentry,PTE)存儲(chǔ)物理存儲(chǔ)器的物理頁面地址以及物理存儲(chǔ)器頁面的屬性。分頁表項(xiàng)目包含于微處理器的存儲(chǔ)器分頁機(jī)制的分頁表。分頁表項(xiàng)目的物理存儲(chǔ)器地址本質(zhì)上對應(yīng)為一個(gè)分頁表項(xiàng)目的尺寸。在一些實(shí)施例中分頁表項(xiàng)目為4字節(jié)(bytes),在其他實(shí)例中分頁表項(xiàng)目為8字節(jié),但其他實(shí)施例亦被考慮而運(yùn)用在本發(fā)明中。分頁表(pagetable)是一組物理上連續(xù)的分頁表項(xiàng)目。分頁表的物理記憶地址本質(zhì)上對應(yīng)于地址邊界,而地址邊界為分頁表的尺寸。在一實(shí)施例中,舉例而言,分頁表為4K字節(jié),并且分頁表包括1024個(gè)4位的分頁表項(xiàng)目、或是512個(gè)8位的分頁表項(xiàng)目。然而,其他實(shí)施例考慮了不同尺寸的分頁表。分頁表中的每個(gè)分頁表項(xiàng)目具有索引,該索引決定自要被轉(zhuǎn)譯的虛擬地址的一部分位。舉例而言,在4K字節(jié)分頁表與4字節(jié)分頁表項(xiàng)目的情況中,虛擬地址的位21:12標(biāo)定分頁表項(xiàng)目的項(xiàng)目至分頁表。在另一個(gè)實(shí)施例中,在4K字節(jié)分頁表與8字節(jié)分頁表項(xiàng)目的情況中,虛擬地址的位20:12標(biāo)定分頁表項(xiàng)目的項(xiàng)目至分頁表。分頁表包括了多個(gè)快取線,其物理地址本質(zhì)上對應(yīng)至一快取線的尺寸。在一實(shí)施例中,快取線的尺寸為64字節(jié),但其他實(shí)施例亦被考慮而運(yùn)用在本發(fā)明中。因?yàn)榭烊【€大于分頁表項(xiàng)目,每一快取線包括多個(gè)分頁表項(xiàng)目。分頁表所包括的每一個(gè)快取線具有索引,該索引決定自要被轉(zhuǎn)譯的虛擬地址的一部分位。舉例而言,在4K字節(jié)分頁表與64字節(jié)分頁表項(xiàng)目的情況中,虛擬地址的位21:16標(biāo)定分頁表之中的快取線的索引。分頁表的最后快取線是具有分頁表所包含的快取線中最大索引的快取線。舉例而言,在4K字節(jié)分頁表與64字節(jié)快取線與4字節(jié)分頁表項(xiàng)目的情況中,分頁表的最后快取線的索引(虛擬地址的位21:16)為0x3F(或是二進(jìn)位111111)。在另一個(gè)實(shí)施例中,在4K字節(jié)分頁表與64字節(jié)快取線與8字節(jié)分頁表項(xiàng)目的情況中,分頁表的最后快取線的索引(虛擬地址的位20:15)為0x3F(或是二進(jìn)位111111)?,F(xiàn)在參考圖3所顯示的微處理器100的示意圖。圖3的微處理器100在許多方面類似于圖1的微處理器100。若未特別標(biāo)示,則相似標(biāo)號的元件是類似的。圖1與圖3的差異在于修正了載入單元308、分頁表尋訪引擎318、以及分頁表項(xiàng)目載入要求336(因此,上述修正相較于圖1具有不同的標(biāo)號)。詳細(xì)而言,PTE載入要求336包括除了被要求的分頁表項(xiàng)目地址398(位于物理地址P、快取線之中)之外的最后標(biāo)志(flag)396。此外,分頁表尋訪引擎318接著決定包含分頁表項(xiàng)目的快取線是否為包含分頁表項(xiàng)目并且填寫最后標(biāo)志396的分頁表的最后快取線。最后,載入單元308檢查最后標(biāo)志396以決定是否提供快取線的物理地址138至預(yù)取單元122。圖4至圖8將描述更多細(xì)節(jié)?,F(xiàn)在參考圖4所示的操作圖3的微處理器100的流程圖。流程圖始于步驟402。在步驟402中,當(dāng)未在轉(zhuǎn)譯查詢緩沖器116中找到虛擬地址132時(shí),轉(zhuǎn)譯查詢緩沖器116產(chǎn)生遺失信號134至分頁表尋訪引擎318,分頁表尋訪引擎318對應(yīng)執(zhí)行分頁表尋訪以得到轉(zhuǎn)譯查詢緩沖器116中未找到的虛擬地址132的物理地址轉(zhuǎn)譯。分頁表尋訪包括分頁表尋訪引擎318以決定需要執(zhí)行地址轉(zhuǎn)譯的分頁表項(xiàng)目的物理地址。分頁表尋訪可包括存取微處理器100的分頁機(jī)制的其他結(jié)構(gòu),以決定分頁表項(xiàng)目的物理地址。舉例而言,在x86架構(gòu)的實(shí)施例中,分頁表依據(jù)微處理器100是在32位、PAE或IA-32e頁面模式,以尋訪包括存取PML4項(xiàng)目(PML4E)、PDPT項(xiàng)目(PDPTE)、和/或頁面名冊項(xiàng)目(pagedirectoryentry,PDE)。這些結(jié)構(gòu)中的全部或部分可在具有分頁機(jī)制的微處理器100的快取結(jié)構(gòu)中被快取,例如PML4快取、PDPTE快取或PDE快取,或是在包括數(shù)據(jù)快取112的微處理器100的快取存儲(chǔ)器的各種位階之中。其他實(shí)施例包括具有虛擬記憶能力的其他處理器架構(gòu)、以及在其記憶分頁機(jī)制實(shí)施分頁表尋訪和其他分業(yè)架構(gòu)的其他處理器架構(gòu),例如SPARC架構(gòu)、ARM架構(gòu)、PowerPC架構(gòu)、以及其他已知的處理器架構(gòu),也可運(yùn)用于本發(fā)明中。流程進(jìn)行到步驟404。在步驟404,分頁表尋訪引擎318決定包括步驟402的分頁表項(xiàng)目的快取線(第一快取線)是否為包括該分頁表項(xiàng)目的分頁表中的最后快取線。這表示第二快取線物理上接續(xù)第一快取線(亦即,第二快取線具有相等于第一快取線的物理地址以快取線尺寸而遞增的物理地址)。較好的情況是,分頁表尋訪引擎318檢測步驟402中轉(zhuǎn)譯查詢緩沖器116未找到的虛擬地址132的預(yù)定位來做決定。步驟404的操作細(xì)節(jié)將于圖5、6描述。流程進(jìn)行到?jīng)Q定步驟406。在判斷步驟406中,如果步驟404的決定為真,流程進(jìn)行到步驟408;否則,流程進(jìn)行到步驟412。在判斷408中,分頁表尋訪引擎318設(shè)定步驟414所產(chǎn)生要求336的最后標(biāo)志396為真。流程進(jìn)行到步驟414。在步驟412中,分頁表尋訪引擎318設(shè)定步驟414所產(chǎn)生要求336的最后標(biāo)志396為假。流程進(jìn)行到步驟414。在步驟414中,分頁表尋訪引擎318產(chǎn)生要求336以載入分頁表項(xiàng)目并且傳送要求336至載入單元308,上述分頁表項(xiàng)目的物理地址決定于步驟402。要求336包括步驟408或步驟412所產(chǎn)生的最后標(biāo)志396的數(shù)值。當(dāng)隨后得到分頁表項(xiàng)目時(shí),分頁表尋訪引擎318使用該分頁表項(xiàng)目以轉(zhuǎn)譯虛擬地址132,并以虛擬地址132轉(zhuǎn)譯的物理地址更新轉(zhuǎn)譯查詢緩沖器116來完成分頁表尋訪。流程進(jìn)行到?jīng)Q定步驟416。在判斷步驟416中,載入單元308判斷最后標(biāo)志396是否為真。如果是,則流程進(jìn)行到步驟418;否則,流程進(jìn)行到步驟422。在步驟418,載入單元308并未提供第一快取線的物理地址138至預(yù)取單元122,然后流程結(jié)束。在步驟422,載入單元308提供第一快取線的物理地址138至預(yù)取單元122。流程進(jìn)行到步驟424。在步驟424,預(yù)取單元122以快取線的尺寸(例如64字節(jié))遞增第一快取線138的物理地址,并且傳送要求142至載入單元308以在遞增地址預(yù)取第二快取線。流程進(jìn)行到步驟426。在步驟426,載入單元308使用預(yù)取要求142作為指示,藉以預(yù)取第二快取線到微處理器100。流程結(jié)束于步驟426?,F(xiàn)在參考圖5所示的方塊圖用以說明分頁表尋訪引擎318所形成的分頁表項(xiàng)目地址502。分頁表項(xiàng)目地址502為物理地址。在圖5所述的產(chǎn)生分頁表項(xiàng)目地址502的實(shí)施例中,分頁表項(xiàng)目的尺寸為4字節(jié),分頁表為4K字節(jié)。圖5也顯示分頁表項(xiàng)目地址502的位,并且分頁表項(xiàng)目地址502構(gòu)成包括該分頁表項(xiàng)目的分頁表項(xiàng)目的分頁表508所包含的快取線的索引504。分頁表項(xiàng)目地址401由微處理器100架構(gòu)所形成。分頁表尋訪引擎318從虛擬地址132以及分頁表地址506形成分頁表項(xiàng)目地址502。換句話說,PDE包括指向分頁表508的指針(pointer),亦即如圖所示的分頁表508基底的物理存儲(chǔ)器地址。一般而言,分頁表地址506取得自頁面名冊項(xiàng)目(PDE),然而在一些分頁模式中(例如,只有一階的分頁結(jié)構(gòu)),分頁表項(xiàng)目地址502可以直接得自微處理器100的寄存器(例如x86架構(gòu)中的CR3寄存器)。在圖5所示的實(shí)施例中,因?yàn)榉猪摫眄?xiàng)目為4字節(jié)并且以4字節(jié)為準(zhǔn),較低的兩個(gè)位的數(shù)值被填入0。虛擬地址132的位[21:12]成為分頁表項(xiàng)目地址502的位[11:2],而分頁表地址506的位[N:12]則形成分頁表項(xiàng)目地址502的位[N:12],其中N為分頁表地址506與分頁表項(xiàng)目地址502的最重要位(例如32位物理地址中的31位,36位物理地址中的35位,40位物理地址中的39位)。分頁表項(xiàng)目地址502指向分頁表508中的分頁表項(xiàng)目,如圖所示,其為分頁表項(xiàng)目的物理記憶地址。在圖5的實(shí)施例中,分頁表項(xiàng)目地址502指向16個(gè)分頁表項(xiàng)目的快取線中的分頁表項(xiàng)目13。如圖所示,快取線索引504是分頁表項(xiàng)目地址502的位[11:6],對應(yīng)到虛擬地址132的位[21:16]。因此,快取線索引504可決定自虛擬地址132或已形成的分頁表項(xiàng)目地址502(亦即,藉由圖11的實(shí)施例的載入單元1108)。在圖5的實(shí)施例中,快取線的快取線索引504包含被分頁表項(xiàng)目地址502所指向的分頁表項(xiàng)目,并且快取線索引504的數(shù)值為0x3C。如上所述,因?yàn)榉猪摫?08包含64條快取線(亦即在快取線為64字節(jié)以及分頁表為4K字節(jié)的實(shí)施例中),最大的快取線索引504為0x3F。現(xiàn)在參考圖6所示的方塊圖用以說明分頁表尋訪引擎318所形成的分頁表項(xiàng)目地址502。在一實(shí)施例中,分頁表項(xiàng)目為8字節(jié)(不是圖5所示的4字節(jié))。圖6與圖5相似,除了以下所述之外。首先,由于在實(shí)施例中分頁表項(xiàng)目為8字節(jié)并且以8字節(jié)為準(zhǔn),較低的3個(gè)位的數(shù)值被填入0(而非圖5所示的較低的2個(gè)位)。再者,虛擬地址132的位[20:12]成為分頁表項(xiàng)目地址502的位[11:3](而非圖5所示的虛擬地址132的位[21:12]成為分頁表項(xiàng)目地址502的位[11:2])。在圖6所示的實(shí)施例中,分頁表項(xiàng)目地址502指向8個(gè)分頁表項(xiàng)目的快取線中的分頁表項(xiàng)目5(而非指向圖5所示的16個(gè)分頁表項(xiàng)目的快取線)。如上所述,快取線索引504為分頁表項(xiàng)目地址502的位[11:6],對應(yīng)至圖6實(shí)施例的虛擬地址132的位[20:15](而非圖5的位[21:16])。在圖5的實(shí)施例中,快取線的快取線索引504包含被分頁表項(xiàng)目地址502所指向的分頁表項(xiàng)目,并且快取線索引504的數(shù)值為0x04。現(xiàn)在參考圖7,其方塊圖顯示了決定第二快取線(亦即物理上接續(xù)快取線(第一快取線)的快取線并且包含因應(yīng)于轉(zhuǎn)譯查詢緩沖器未找到的要求的分頁表項(xiàng)目)是否在分頁表508之外的第一實(shí)施例,例如藉由圖4的步驟404的分頁表尋訪引擎318。上述決定藉由檢視第一快取線的快取線索引504,并且比較其是否相等于最大快取線索引504的數(shù)值(例如0x3F),亦即分頁表508所包含的最后快取線的快取線索引504。詳細(xì)而言,如果第一快取線是分頁表508所包含的最后快取線(亦即在分頁表508的最后),則物理上接續(xù)的快取線(第二快取線)在分頁表508之外。如果第一快取線的快取線索引504相等于最大的快取線索引數(shù)值,此決定為真,亦即第二快取線在分頁表508之外。否則,此決定為假。在圖7的實(shí)施例中,虛擬地址132具有數(shù)值0x12345678。結(jié)果,0x34為虛擬地址132的位[21:16],其為分頁表項(xiàng)目地址502的位[11:6],并且其為第一快取線索引504。因此,由于第一快取線索引504的數(shù)值0x34小于最高快取線索引504的數(shù)值0x3F,此決定為假,并且最后標(biāo)志396被設(shè)定為假。如上所述,第二快取線被包含在分頁表508,而不在分頁表508之外。現(xiàn)在參考圖8,其方塊圖顯示了決定第二快取線是否在所述分頁表508之外的第二實(shí)施例。圖8類似于圖7,除了虛擬地址132的數(shù)值不同之外。在圖8的實(shí)施例中,虛擬地址132具有數(shù)值0x123F5678。結(jié)果,0x34為虛擬地址132的位[21:16],其為分頁表項(xiàng)目地址502的位[11:6],并且其為第一快取線索引504。因此,由于第一快取線索引504的數(shù)值0x3F相等于最高快取線索引504的數(shù)值0x3F,此決定為真,并且最后標(biāo)志396被設(shè)定為真。如上所述,第二快取線在分頁表508之外,而不是被包含在分頁表508。結(jié)果,第二快取線可能也可能未包括分頁表項(xiàng)目的快取線。即使包含,也可能不包括分頁表的分頁表項(xiàng)目,上述分頁表是被分頁結(jié)構(gòu)中的下一個(gè)PDE所指向的下一個(gè)分頁表。因此,此處所描述的實(shí)施例選擇性地預(yù)取第二快取線,其優(yōu)點(diǎn)在于降低對上述微處理器100的快取階層架構(gòu)的污染(pollution)。現(xiàn)在參考圖9,其方塊圖顯示了形成決定的第三實(shí)施例。圖9類似于圖7,除了在圖9的實(shí)施例中采用了8字節(jié)的分頁表項(xiàng)目,因此每一條快取線只有包括8個(gè)分頁表項(xiàng)目。如同圖7所示,上述決定藉由檢視第一快取線的快取線索引504,并且比較其是否相等于最大快取線索引504的數(shù)值(例如0x3F),亦即分頁表508所包含的最后快取線的快取線索引504。然而在圖9中,形成決定是藉由檢視虛擬地址132的位[20:15](而非圖7中的虛擬地址132的位[21:16]),其在兩種情況中為分頁表項(xiàng)目地址502的位[11:6]。在圖9的實(shí)施例中,虛擬地址132具有數(shù)值0x12345678。因此,0x28為虛擬地址132的位[20:15],其為分頁表項(xiàng)目地址502的位[11:6],并且其為第一快取線索引504。因此,由于第一快取線索引504的數(shù)值0x28小于最高快取線索引504的數(shù)值0x3F,此決定為假,并且最后標(biāo)志396被設(shè)定為假。如上所述,第二快取線被包含在分頁表508,而不在分頁表508之外?,F(xiàn)在參考圖10,其方塊圖顯示了決定第二快取線是否在所述分頁表508之外的第四實(shí)施例。圖10類似于圖9,除了虛擬地址132的數(shù)值不同之外。在圖10的實(shí)施例中,虛擬地址132具有數(shù)值0x123FD678。于是,0x3F為虛擬地址132的位[20:15],其為分頁表項(xiàng)目地址502的位[11:6],并且其為第一快取線索引504。因此,由于第一快取線索引504的數(shù)值0x3F相等于最高快取線索引504的數(shù)值0x3F,此決定為真,并且最后標(biāo)志396被設(shè)定為真。如上所述,第二快取線在分頁表508之外,而不是被包含在分頁表508。結(jié)果,此處所描述的實(shí)施例選擇性地預(yù)取第二快取線,其優(yōu)點(diǎn)在于降低對上述微處理器100的快取階層架構(gòu)的污染。應(yīng)該理解的是,雖然圖7至圖10描述了關(guān)于圖4的步驟404的實(shí)施例的決定的形成(亦即藉由分頁表尋訪引擎318并設(shè)定最后標(biāo)志396),上述決定也可藉由微處理器100的其他單元來形成(例如,藉由圖11實(shí)施例的載入單元1108),以及在一些實(shí)施例中不使用最后標(biāo)志396(亦即圖11至圖13的實(shí)施例)。較好的情況是,由硬件邏輯來形成決定,例如在相關(guān)單元中的組合邏輯,其中相關(guān)單元例如分頁表尋訪引擎318/1218/1318、或是比較虛擬地址132的適當(dāng)位的載入單元1108、或是具有預(yù)定最高快取線索引數(shù)值的分頁表項(xiàng)目地址502?,F(xiàn)在參考圖11,其方塊圖顯示了另一種實(shí)施方式的微處理器100。圖11的微處理器100在許多方面類似圖1的微處理器100。除非特別標(biāo)示,相似標(biāo)號的元件是類似的。圖11與圖1的差異在于修改了載入單元1108。圖11的載入單元1108被修改為包括用以決定第二快取線是否在分頁表508之外的硬件邏輯。因此,在圖11的實(shí)施例中,分頁表項(xiàng)目載入要求136并未包含最后標(biāo)志396。圖11的微處理器100的操作方式類似于圖4所述,除了分頁表尋訪引擎118并未做決定(例如步驟404),而是由載入單元1108做決定(類似于步驟416的決定,在步驟414所述的分頁表尋訪引擎118傳送分頁表項(xiàng)目要求136之后),并且如果決定為真,則不提供第一快取線的物理地址138至快取單元122?,F(xiàn)在參考圖12,其方塊圖顯示了另一種實(shí)施方式的微處理器100。圖12的微處理器100在許多方面類似圖11的微處理器100。除非特別標(biāo)示,相似標(biāo)號的元件是類似的。圖12與圖11的差異在于修改了分頁表尋訪引擎1218、載入單元1208以及預(yù)取單元1222。圖12的載入單元1208被修改為不提供第一快取線的物理地址138至預(yù)取單元122。如果決定為假,分頁表尋訪引擎1218形成決定并且產(chǎn)生與直接提供第一快取線的物理地址1238至預(yù)取單元1222。圖12的微處理器100的操作方式類似于圖4所述,除了如果步驟406中的決定為真,流程進(jìn)行到步驟418(不執(zhí)行第二快取線的預(yù)取)。如果決定為假,流程進(jìn)行到步驟414,然后直接到修改后的步驟422,分頁表尋訪引擎1218提供第一快取線的物理地址1238至預(yù)取單元1222。現(xiàn)在參考圖13,其方塊圖顯示了另一種實(shí)施方式的微處理器100。圖13的微處理器100在許多方面類似圖12的微處理器100。除非特別標(biāo)示,相似標(biāo)號的元件是類似的。圖13與圖12的差異在于修改了分頁表尋訪引擎1318、以及預(yù)取單元1322。圖13的分頁表尋訪引擎1318遞增第一快取線的物理地址以產(chǎn)生第二快取線的物理地址1338(而非由預(yù)取單元1322來執(zhí)行),并且如果決定為假時(shí)將它提供至預(yù)取單元1322。圖13微處理器100的操作方式類似于圖4所述,除了如果步驟406中的決定為真,流程進(jìn)行到步驟418(不執(zhí)行第二快取線的預(yù)取)。如果決定為假,流程進(jìn)行到步驟414,然后直接到修改后的步驟422,分頁表尋訪引擎1218提供第一快取線的物理地址1338至預(yù)取單元1222。然后在修改后的步驟424,預(yù)取單元1322不需要執(zhí)行遞增,而只要在其送往載入單元1208的要求142中,使用已接收的第二快取線的物理地址1338。在另一個(gè)實(shí)施例中(未顯示),載入單元自分頁表尋訪引擎接收分頁表項(xiàng)目載入要求,計(jì)算第二快取線的物理地址,以及產(chǎn)生用于第二快取線的預(yù)取要求。在此實(shí)施例中,預(yù)取單元可以是不存在的。雖然實(shí)施例已說明存儲(chǔ)器分頁機(jī)制所使用的x86架構(gòu)處理器的通用詞匯,應(yīng)當(dāng)理解上述實(shí)施例包括其他處理器架構(gòu),其包括虛擬存儲(chǔ)器能力并且在記憶頁面機(jī)制中使用分頁表,例如SPARC架構(gòu)、ARM架構(gòu)、PowerPC架構(gòu)、以及其他已知的處理器架構(gòu)。再者,雖然實(shí)施例已經(jīng)描述第二快取線為下一條物理接續(xù)的快取線,并且藉由決定第一快取線是否在分頁表的最后來決定第二快取線是否在分頁表之外,其他實(shí)施例也可為第二快取線是上一條物理接續(xù)的快取線,并且藉由決定第一快取線是否在分頁表的開始來加以決定,其包含了通過多個(gè)存儲(chǔ)器頁面在其他方向執(zhí)行程序。本發(fā)明雖以各種實(shí)施例公開如上,然其僅為范例參考而非用以限定本發(fā)明的范圍,本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可做些許的更動(dòng)與潤飾。舉例而言,可使用軟件來實(shí)現(xiàn)本發(fā)明所述的裝置與方法的功能、構(gòu)造、模塊、模擬、描述和/或測試。此目的可通過使用一般程序語言(例如C、C++)、硬件描述語言(包括Verilog或VHDL硬件描述語言等等)、或其他可用的程序來實(shí)現(xiàn)。該軟件可被設(shè)置在任何計(jì)算機(jī)可用的介質(zhì),例如半導(dǎo)體、磁碟、光盤(例如CD-ROM、DVD-ROM等等)中。本發(fā)明實(shí)施例中所述的裝置與方法可被包括在一半導(dǎo)體知識產(chǎn)權(quán)內(nèi)核(semiconductorintellectualpropertycore),例如以硬件描述語言(HDL)實(shí)現(xiàn)的微處理器內(nèi)核中,并被轉(zhuǎn)換為硬件形態(tài)的集成電路產(chǎn)品。此外,本發(fā)明所描述的裝置與方法可通過結(jié)合硬件與軟件的方式來實(shí)現(xiàn)。因此,本發(fā)明不應(yīng)該被本文中的任一實(shí)施例所限定,而當(dāng)視所附的權(quán)利要求書與其等效物所界定者為準(zhǔn)。特別是,本發(fā)明實(shí)現(xiàn)于一般用途計(jì)算機(jī)的微處理器裝置中。最后,本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許更動(dòng)與潤飾,因此本發(fā)明的保護(hù)范圍當(dāng)視所附權(quán)利要求書界定范圍為準(zhǔn)。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3