亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

在內(nèi)容感知預(yù)取器中識別候選虛擬地址的方法和裝置的制作方法

文檔序號:6432314閱讀:308來源:國知局
專利名稱:在內(nèi)容感知預(yù)取器中識別候選虛擬地址的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般地涉及處理器,更具體地說,涉及用于內(nèi)容感知預(yù)取的方法和裝置。
背景技術(shù)
傳統(tǒng)處理器一般以比處理器所耦合的主存儲器更快的速度操作。為了克服主存儲器的固有延遲,使用了存儲器層次,其中所述主存儲器通常包括動態(tài)隨機存取存儲器(DRAM)。存儲器層次包括一級或多級高速緩存,每個高速緩存包括被配置來保存處理器最近訪問的或預(yù)期將要訪問的數(shù)據(jù)的相對較快的存儲器設(shè)備或電路。高速緩存的目的是保證處理器所需的大多數(shù)數(shù)據(jù)迅速對處理器可用,而不需訪問主存儲器,因為與處理器的速度或處理器可以訪問高速緩存的速度相比,訪問主存儲器的過程非常慢。
一般,存儲器層次包括多級高速緩存,其中每一級別都比下一較低級別快,并且最接近處理器的級別表現(xiàn)出最高的速度和性能。高速緩存可以位于處理器自身上,即,“片上”高速緩存,或者高速緩存可以包括外部存儲器設(shè)備,即,“片外”高速緩存。例如,處理器可以包括高級別片上高速緩存,它經(jīng)常被稱為“L1”高速緩存,其中處理器與較低級別的片外高速緩存耦合,它經(jīng)常被稱為“L2”高速緩存。或者,處理器可以包括片上L1高速緩存,以及片上L2高速緩存。當(dāng)然,存儲器層次可以包括任何適當(dāng)數(shù)目的高速緩存,各高速緩存位于片上或片外。
如上所述,每個級別的高速緩存可以保存存儲器最近所訪問的數(shù)據(jù),由于時間和空間的局部性原理,這樣的最近被訪問的數(shù)據(jù)很可能不久以后再被處理器需要。但是,通過預(yù)測處理器的需要,系統(tǒng)性能可以進一步加強,并且存儲器延遲降低。如果可以以一定程度的準確性來預(yù)測處理器不久以后所需的數(shù)據(jù),則可以預(yù)先取出或“預(yù)取”該數(shù)據(jù),使得數(shù)據(jù)被高速緩存,并且迅速對處理器可用。通常,利用某種類型的算法來預(yù)測處理器的需要,并且任何預(yù)取方案的價值依賴于這些需求可以被準確地預(yù)測的程度。
一種傳統(tǒng)類型的預(yù)取器通常稱為“跨度(stride)”預(yù)取器??缍阮A(yù)取器通過檢查處理器所請求的數(shù)據(jù)的地址(即,“需求加載(demandload)”)以判斷所請求的地址是否表現(xiàn)出規(guī)則的模式,來預(yù)測處理器的需要。如果處理器(或者執(zhí)行于其上的應(yīng)用程序)使用從地址到地址的恒定偏移量(即,恒定跨度)在存儲器中步進,則跨度預(yù)取器嘗試識別該恒定跨度,并根據(jù)這種可識別模式來預(yù)取數(shù)據(jù)。但是跨度預(yù)取器的確表現(xiàn)出了明顯的缺點。當(dāng)一系列的需求加載的地址模式不規(guī)則時,即,沒有恒定跨度時,跨度預(yù)取器不能良好地發(fā)揮作用,這例如在動態(tài)存儲器分配中可能發(fā)生。
另一種數(shù)據(jù)預(yù)取的方法利用了轉(zhuǎn)換后援緩沖器(translation look-asidebuffer,TLB),它是用于虛擬到物理地址轉(zhuǎn)換的高速緩存。根據(jù)該方法,檢查與需求加載相關(guān)聯(lián)的“填充內(nèi)容”,即,所請求的數(shù)據(jù),并且,如果具有地址大小的數(shù)據(jù)值與包含在TLB中的地址匹配,則該數(shù)據(jù)值很可能對應(yīng)于“指針加載(pointer load)”,即,一種需求加載,其中,所請求的數(shù)據(jù)是指向存儲器位置的地址,并且該數(shù)據(jù)值因而被認為是候選地址。接著,可以發(fā)出對該候選地址的預(yù)取請求。因為所請求的數(shù)據(jù)的內(nèi)容(與其地址相對)被檢查,所以該方法可以稱為基于內(nèi)容的預(yù)取,或者內(nèi)容感知預(yù)取。這樣的引用TLB(或者,更一般地,引用任何外部源或地址索引)的內(nèi)容感知預(yù)取方案具有明顯的限制可能的地址被限制在被高速緩存在TLB中的那些地址,并且這種約束明顯地降低了預(yù)取機會的數(shù)量。并且,這種內(nèi)容感知預(yù)取方案要求大量對TLB的訪問;從而,必須向TLB增加附加的端口來應(yīng)付內(nèi)容預(yù)取器的開銷。


圖1是系統(tǒng)的示例實施例的示意圖,該系統(tǒng)包括具有內(nèi)容預(yù)取器的處理器。
圖2是處理器的示例實施例的示意圖,該處理器包括具有虛擬地址預(yù)測器的內(nèi)容預(yù)取器實施例。
圖3是圖示了內(nèi)容感知預(yù)取方法的實施例的流程圖。
圖4是圖示了內(nèi)容感知預(yù)取方法的另一實施例的流程圖。
圖5是圖示了內(nèi)容感知預(yù)取方法的又一實施例的流程圖。
圖6是圖示了識別候選虛擬地址的方法的實施例的流程圖。
圖7到圖9是示意圖,其中的每一個進一步圖示了圖6所示的方法。
圖10是圖示了用于將高速緩存線中的具有地址大小的字與高速緩存線的有效地址相比較的過程的實施例的示意圖。
圖11是圖示了識別候選虛擬地址的方法的另一實施例的流程圖。
圖12是圖示了用于將高速緩存線中的具有地址大小的字與高速緩存線的有效地址相比較的過程的另一實施例的示意圖。
圖13是圖示了識別候選虛擬地址的方法的又一實施例的流程圖。
具體實施例方式
參照圖1,系統(tǒng)100包括總線110,處理器200與總線110耦合。處理器200可以包括任何適合的處理設(shè)備或電路。如下面將討論的,在一個實施例中,處理器200只包括片上高速緩存。但是,在替代的實施例中,處理器200可以包括與處理器200相耦合的片外高速緩存170,該片外高速緩存170可以被單獨配備或者與片上高速緩存結(jié)合配備。
主存儲器120與總線110耦合,主存儲器120包括例如動態(tài)隨機存取存儲器(DRAM)。主存儲器120可以包含處理器200執(zhí)行應(yīng)用程序時將使用的數(shù)據(jù)和/或指令。只讀存儲器(ROM)130也可以耦合到總線110。ROM 130可以存儲用于在處理器200上執(zhí)行的指令。另外,諸如硬盤驅(qū)動器或其他適合的非易失性存儲器的數(shù)據(jù)存儲設(shè)備140可以與總線110相耦合。
系統(tǒng)100還可以包括一個或多個與總線110耦合的輸出設(shè)備150。普通的輸出設(shè)備150包括視頻監(jiān)視器、打印機和音頻輸出設(shè)備(例如聲卡和/或揚聲器)。系統(tǒng)100還可以包括一個或多個耦合到總線110的輸入設(shè)備160。一般的輸入設(shè)備包括鍵盤、諸如鼠標的點選設(shè)備以及掃描儀和其他數(shù)據(jù)輸入設(shè)備。應(yīng)該理解系統(tǒng)100可以包括圖1所示的那些組件之外的其他組件,包括可拆卸存儲介質(zhì)(例如,軟盤驅(qū)動器、CD-ROM驅(qū)動器)、網(wǎng)絡(luò)接口、與處理器耦合的芯片組以及附加的信號線和總線,為了清楚將它們省略了。
參照圖2,處理器200包括CPU(中央處理單元)核心210。與CPU核心210相耦合的是第一級片上高速緩存,或“L1高速緩存”220。第二級別高速緩存,或“L2高速緩存”230也被放置在處理器200中。這里將被稱為“L2仲裁器”的仲裁器240耦合到L1和L2高速緩存220和230的每一個。這里將被稱為“總線仲裁器”的另一個仲裁器250耦合到L2高速緩存??偩€仲裁器250也耦合到總線接口單元260??偩€接口單元260將處理器200與總線110相耦合,從而使能了處理器200和主存儲器120之間的通信。L1和L2高速緩存220和230可以各自包括任何適當(dāng)類型的存儲器或電路。
L1高速緩存220和L2高速緩存230與主存儲器120相結(jié)合提供了用于CPU核心120的存儲器層次。通常,L1高速緩存220表現(xiàn)出相對于CPU核心210的最高的速度,而主存儲器120表現(xiàn)出最低的相對速度。L2高速緩存230工作得比主存儲器120快得多,但可以比L1高速緩存220慢。數(shù)據(jù)存儲設(shè)備140(見圖1)也可以被認為是存儲器層次的一部分,數(shù)據(jù)存儲裝置140是該層次中最慢的元件。L1和L2高速緩存220和230中的每一個都存儲CPU核心210最近所訪問的或預(yù)期將訪問的數(shù)據(jù)和/或指令。
在操作期間,如果CPU核心210請求數(shù)據(jù),即“需求加載”或“需求請求”,則訪問L1高速緩存220以確定它是否含有所請求的數(shù)據(jù),如果有,則數(shù)據(jù)被提供給CPU核心210。如果L1高速緩存220不含有所請求的數(shù)據(jù),即“高速緩存未命中”,則需求請求被傳遞到L2仲裁器240。L2仲裁器240接著向L2高速緩存230提供需求請求,并且L2高速緩存230被訪問以確定它是否含有所請求的數(shù)據(jù)。如果L2高速緩存230含有所請求的數(shù)據(jù),則所請求的數(shù)據(jù),即“填充內(nèi)容”,被轉(zhuǎn)發(fā)到L1高速緩存220,并繼而到CPU核心210。如果需求加載未被L2高速緩存230滿足,則該加載被傳遞到總線仲裁器250。如果主存儲器120保存有所請求的數(shù)據(jù),則填充內(nèi)容沿著存儲器層次向上被傳遞到CPU核心210。如果主存儲器120不能滿足該需求請求,則可以訪問數(shù)據(jù)存儲設(shè)備140。L2仲裁器和總線仲裁器240、250中的每一個都包括緩沖存儲器,并且如果進行中有多個加載,則L2仲裁器和總線仲裁器240、250可以緩沖需求請求。在存儲器請求仲裁期間,L2仲裁器和總線仲裁器240、250也可以緩沖預(yù)取請求,這將在下面解釋。
在CPU核心210中執(zhí)行的進程可以訪問虛擬地址空間。一般地,這樣的虛擬地址空間由存儲器管理單元或MMU(圖中未示出)來維護。為了訪問虛擬地址的數(shù)據(jù),虛擬地址(或多個虛擬地址)必須被映射到物理地址,即主存儲器120中的真實位置。這樣,應(yīng)該理解,當(dāng)數(shù)據(jù)穿過存儲器層次時,數(shù)據(jù)可以經(jīng)歷虛擬到物理的地址轉(zhuǎn)換。例如,L1高速緩存220可以被虛擬索引,并且L2高速緩存230被物理索引;從而,如果在L1高速緩存220出現(xiàn)高速緩存未命中,則在訪問L2高速緩存230之前,請求虛擬到物理地址轉(zhuǎn)換。
如上面所提出的,可以通過預(yù)測CPU核心210的需要并預(yù)取CPU核心210可能即將請求的任何數(shù)據(jù),來增強系統(tǒng)性能。處理器200可以包括與L2仲裁器240和L2高速緩存230耦合的跨度預(yù)取器270??缍阮A(yù)取器270監(jiān)視L1未命中流通量,即在L1高速緩存220未命中的需求加載,以及L2未命中流通量,即在L2高速緩存230未命中的需求加載,并且嘗試檢測所請求的地址中的恒定跨度。如果檢測到恒定跨度,則基于被檢測到的跨度向L2仲裁器240提供預(yù)取(PF)請求。但是,如上面所提到的,當(dāng)連續(xù)的需求請求的地址模式不規(guī)則并且沒有恒定跨度時(例如,這可以發(fā)生在動態(tài)存儲器分配期間),跨度預(yù)取器270不能充分發(fā)揮作用。
處理器200還包括新型內(nèi)容預(yù)取器290。內(nèi)容預(yù)取器290與L2高速緩存230相耦合,并接收導(dǎo)向L2高速緩存230的所有填充內(nèi)容的拷貝,填充內(nèi)容包括一個或多個高速緩存線。但是,更一般地,內(nèi)容預(yù)取器290可以與處理器的存儲器層次中的任何級別相耦合,并接收導(dǎo)向該級別的所有填充內(nèi)容的拷貝。另外,盡管處理器200的內(nèi)容預(yù)取器290與片上L2高速緩存230相耦合,但是應(yīng)該理解內(nèi)容預(yù)取器290也可以與片外高速緩存相耦合,例如圖1所示的片外高速緩存170。內(nèi)容預(yù)取器290還與L2仲裁器240相耦合。
內(nèi)容預(yù)取器290包括虛擬地址預(yù)測器295。如前面所描述的,內(nèi)容預(yù)取器290接收在L2高速緩存230所收到的每個高速緩存線的拷貝。虛擬地址預(yù)測器295檢查高速緩存線,并將包含在高速緩存線中的候選虛擬地址與其他數(shù)據(jù)值和隨機位組合區(qū)別開,而不用參照任何外部地址源,即TLB,所述外部地址源可能不必要地約束了可能的地址范圍,從而約束了可能預(yù)取機會。虛擬地址預(yù)測器295包含如下的任何適合的電路和/或指令所述電路和/或指令能夠基于高速緩存線自身中所包含的數(shù)據(jù)來識別高速緩存線中的候選虛擬地址,而不用訪問外部地址參考。
參照圖3所示的內(nèi)容感知預(yù)取的方法300,可以更好地理解內(nèi)容預(yù)取器290和虛擬地址預(yù)測器295的操作。參照圖3中的參考標號310,在L2高速緩存230處收到填充內(nèi)容。填充內(nèi)容的拷貝被提供給內(nèi)容預(yù)取器290,如320所表示的。填充內(nèi)容包括高速緩存線(或者替代地,填充內(nèi)容包括兩個或多個高速緩存線)。如參考標號330所示,掃描高速緩存線以尋找候選虛擬地址。如果虛擬地址預(yù)測器295識別出候選虛擬地址,見參考標號340,則內(nèi)容預(yù)取器290生成對應(yīng)于所識別的候選虛擬地址的預(yù)取請求,如參考標號350所示。內(nèi)容預(yù)取器290接著向L2仲裁器240提供預(yù)取請求,見參考標號360,其中L2仲裁器240可以基于存儲器請求仲裁來緩沖預(yù)取請求和/或向主存儲器120發(fā)出預(yù)取請求,這將在下面描述。
上述過程被繼續(xù),直到整個高速緩存線已經(jīng)被掃描。當(dāng)整個高速緩存線已經(jīng)被掃描,見參考標號370,并且高速緩存線中所包含的所有候選虛擬地址都已經(jīng)被識別時,高速緩存線的掃描結(jié)束,如380所示。如下面將更詳細描述的,可以并行地掃描整個高速緩存線或其一部分。
如上所述,被導(dǎo)向L2高速緩存230的所有填充內(nèi)容的拷貝被提供給內(nèi)容預(yù)取器290。這樣,對于CPU核心210所發(fā)出的導(dǎo)致在L2高速緩存230處高速緩存未命中的每個需求請求,或者,更一般地說,導(dǎo)致在與內(nèi)容預(yù)取器290相耦合的高速緩存級別上的高速緩存未命中的每個需求請求,內(nèi)容預(yù)取器290將接收所請求數(shù)據(jù)的拷貝。與已經(jīng)在存儲器層次中的某個級別的高速緩存處未命中的需求請求相關(guān)聯(lián)的填充內(nèi)容可以被稱為“需求參考流”。但是,其他填充內(nèi)容將作為L2仲裁器240(或總線仲裁器250)所發(fā)出的預(yù)取請求的結(jié)果,即“預(yù)取參考流”,而被導(dǎo)向L2高速緩存230,并且與該預(yù)取參考流相關(guān)聯(lián)的填充內(nèi)容的拷貝也被提供給內(nèi)容預(yù)取器290。這樣,通過檢查與需求參考流相關(guān)聯(lián)的填充內(nèi)容以及與預(yù)取參考流相關(guān)聯(lián)的填充內(nèi)容,內(nèi)容預(yù)取器290包括遞歸組件,并且可以基于先前的預(yù)取請求來提供預(yù)取請求。這樣的遞歸組件允許內(nèi)容預(yù)取器290沿著例如“鏈接數(shù)據(jù)結(jié)構(gòu)”(即,一種數(shù)據(jù)結(jié)構(gòu),其中每個元素包含指向該結(jié)構(gòu)的下一個元素的指針)的數(shù)據(jù)結(jié)構(gòu)中的遞歸路徑前進。由內(nèi)容預(yù)取器290基于先前的預(yù)取請求而提供的預(yù)取請求可以被稱為“鏈聯(lián)”預(yù)取請求。
當(dāng)L2仲裁器240從內(nèi)容預(yù)取器290接收預(yù)取請求(對應(yīng)于由虛擬地址預(yù)測器295所識別的候選虛擬地址的預(yù)取請求)時,L2仲裁器240可以緩沖預(yù)取請求并延遲該請求的發(fā)出。因為總線110的低帶寬以及主存儲器120的低訪問速度,所以對L2仲裁器中的預(yù)取請求(以及某些情況下的需求請求)的緩沖可能是(并且,在大多數(shù)情況下是)必須的。因此,L2仲裁器240以及總線仲裁器250可以實現(xiàn)優(yōu)先級劃分方案,來確定被包含在其緩沖器中的多個預(yù)取請求以及多個需求請求中的哪個應(yīng)當(dāng)首先被發(fā)出。這種對存儲器請求進行優(yōu)先級劃分并根據(jù)每個請求的優(yōu)先級來發(fā)出需求或預(yù)取請求的過程可以被稱為存儲器請求仲裁。
因為需求請求對應(yīng)于CPU核心210當(dāng)前所需要的數(shù)據(jù),所以需求請求通常應(yīng)該被給予最高的優(yōu)先級。預(yù)取請求通常被給予低于需求請求的優(yōu)先級;然而,不是預(yù)取請求遞歸鏈中所有的預(yù)取請求都可能表示CPU核心210迫切需要的數(shù)據(jù),即,它們更加具有推測性,因此,它們應(yīng)該被指定不同的優(yōu)先級。內(nèi)容預(yù)取器290提供了遞歸組件,這引出了“請求深度”的概念,所述遞歸組件提供了預(yù)取鏈,其中,鏈中的第一個預(yù)取請求是基于與需求請求相關(guān)聯(lián)的填充內(nèi)容的,鏈中的每個隨后的預(yù)取請求是基于由前一預(yù)取所產(chǎn)生的填充內(nèi)容的。如果需求請求例如被指定了為零(0)的請求深度,則由與需求請求相關(guān)聯(lián)的填充內(nèi)容所產(chǎn)生的預(yù)取請求被指定為一(1)的請求深度,并且每個隨后的鏈聯(lián)的預(yù)取被指定的請求深度比該鏈聯(lián)的預(yù)取請求所基于的預(yù)取請求的請求深度大一(1)。
上述請求深度提供了預(yù)取請求中的置信度(confidence)的測量,并且在仲裁存儲器請求以確定預(yù)取請求的優(yōu)先級期間,L2仲裁器240以及總線仲裁器250可以使用請求深度。具有最低請求深度的存儲器請求可以被指定最高的優(yōu)先級,并且被L2仲裁器240(或者總線仲裁器250)首先發(fā)出。需求請求具有例如為零的請求深度,并被指定最高的優(yōu)先級。由與需求加載相關(guān)聯(lián)的填充內(nèi)容所產(chǎn)生的預(yù)取請求被指定下一個最高優(yōu)先級。鏈聯(lián)的預(yù)取請求被指定與其請求深度相稱的優(yōu)先級,所指定的優(yōu)先級與請求深度成反比。因此,表現(xiàn)出較高請求深度的鏈聯(lián)的預(yù)取請求被指定較低的優(yōu)先級,因為它們可能是更具推測性的。具有大于預(yù)定閾值的請求深度的鏈聯(lián)預(yù)取請求被取消,并且仲裁器不發(fā)出預(yù)取請求,在該閾值,預(yù)取請求的置信度低。相同優(yōu)先級(即,相同請求深度)的預(yù)取請求被調(diào)度以由L2仲裁器240(或總線仲裁器250)按照先到先服務(wù)的方式發(fā)出。
內(nèi)容感知預(yù)取和確定每個預(yù)取請求的優(yōu)先級的方法400示于圖4中。應(yīng)該注意到示于圖4中的方法400包括許多與圖3的方法300相同的元素,并且類似的元素在圖4中保留相同的參考標號。
參照圖4的參考標號310,在L2高速緩存230處收到填充內(nèi)容,并且填充內(nèi)容的拷貝被提供給內(nèi)容預(yù)取器290(見參考標號320)。填充內(nèi)容包括高速緩存線(或者替代地,填充內(nèi)容包括兩個或多個高速緩存線)。如330所表示的,高速緩存線然后被掃描以尋找候選虛擬地址。如果虛擬地址預(yù)測器295識別出候選虛擬地址,見參考標號340,則內(nèi)容預(yù)取器290生成對于該地址的預(yù)取請求,如標號350所示。
現(xiàn)在參照圖4中的參考標號410,如上面所描述的,內(nèi)容預(yù)取器290確定預(yù)取請求的請求深度。如果請求深度大于預(yù)定閾值,見參考標號420,則該預(yù)取請求被取消,如440所表示的。如果請求深度沒有超過預(yù)定閾值,則為該預(yù)取指定優(yōu)先級,見參考標號430,其中如前面所描述的,該優(yōu)先級是基于請求深度的。
一旦為預(yù)取請求被指定了優(yōu)先級,則內(nèi)容預(yù)取器290向L2仲裁器240提供該預(yù)取請求,如360所示。L2仲裁器240基于它的緩沖器中所保存的每個預(yù)取請求的優(yōu)先級,在緩沖存儲器中對等待進行存儲器請求仲裁的預(yù)取請求進行排對。此外,需求請求具有最高的優(yōu)先級,并且由L2仲裁器240(或者總線仲裁器250)首先發(fā)出。優(yōu)先級低于需求請求的預(yù)取請求按照它們各自的優(yōu)先級被L2仲裁器240(或總線仲裁器250)發(fā)出。此外,預(yù)取請求的優(yōu)先級是基于預(yù)取請求的請求深度的。該過程被繼續(xù),直到整個高速緩存線已經(jīng)被掃描,當(dāng)整個高速緩存線已經(jīng)被掃描(見參考標號370)并且高速緩存線中所包含的所有候選虛擬地址都已經(jīng)被識別時,高速緩存線的掃描結(jié)束,如380所示。
內(nèi)容感知預(yù)取另一個實施例的方法500示于圖5中。應(yīng)該注意到示于圖5中的方法500包括許多與圖3的方法300相同的元素,類似的元素在圖5中保留相同的參考標號。并且,內(nèi)容感知預(yù)取的方法500類似于圖3中所示的方法300,對那些前面描述過的元素不再重復(fù)詳細說明。
參照參考標號510,如果候選虛擬地址已經(jīng)被識別出(見參考標號340),則L2仲裁器和總線仲裁器240、250都被輪詢以察看匹配的存儲器請求當(dāng)前是否在進行中(in-flight),即對應(yīng)于候選虛擬地址的存儲器請求已經(jīng)被發(fā)出。如果匹配的存儲器請求在進行中,則預(yù)取請求被取消,如參考標號530所示。在預(yù)取請求由于進行中的存儲器請求而被取消的事件中,高速緩存線的掃描繼續(xù)(見參考標號330、370)。
如前面所描述的,等待進行存儲器請求仲裁的預(yù)取請求在L2仲裁器240(或總線仲裁器250)的緩沖存儲器中被排隊。在某些例子中,L2仲裁器240的緩沖器可能變滿。如果在L2仲裁器240中無緩沖器空間可用,見參考標號520,則預(yù)取請求被取消,如參考標號530所示。在預(yù)取請求由于缺少可用的緩沖器空間而被取消的事件中,因為存儲器空間可以在L2仲裁器240的緩沖器中再次變?yōu)榭捎?,所以高速緩存線的掃描可以繼續(xù),見參考標號330、370。
如上面所提出的,內(nèi)容預(yù)取器290的虛擬地址預(yù)測器295不用參照任何外部地址源,而將候選虛擬地址從被包含在高速緩存線中的隨機位組合和數(shù)據(jù)值中區(qū)分開,所述外部地址源例如是TLB,其可能限制了預(yù)取機會的范圍?,F(xiàn)在公開可以由虛擬地址預(yù)測器295實現(xiàn)的識別候選虛擬地址的方法。應(yīng)該注意到,因為被導(dǎo)向CPU核心210的填充內(nèi)容中所包含的可能的地址是在虛擬地址空間中,所以識別候選虛擬地址的方法“查找”虛擬地址(與物理地址相對),即使在存儲器層次中可能已經(jīng)發(fā)生虛擬到物理地址轉(zhuǎn)換。
識別候選虛擬地址的方法是基于如下假定如果指針加載(即,一種需求加載,其中所請求的數(shù)據(jù)是指向存儲器位置的地址)從存儲器被加載,則有很大的可能性,該指針加載的地址將是未來的需求請求的有效地址。該假定的核心是如下觀念數(shù)據(jù)結(jié)構(gòu)的基址經(jīng)由指針加載被提供,并且共享該基址的該結(jié)構(gòu)中的任何數(shù)據(jù)值可以被認為是指向同一數(shù)據(jù)結(jié)構(gòu)的另一個成員的指針。假設(shè)所有的需求請求潛在地包括指針加載,則響應(yīng)于共享該基址的需求請求而返回的高速緩存線中所包含的任何具有地址大小的字被認為是候選虛擬地址。如果具有地址大小的字的許多高位與高速緩存線的有效地址中的相同數(shù)目的高位相匹配,則這些匹配的高位表明,該具有地址大小的字和高速緩存線的有效地址是從相同的基址計算而來的,從而,該具有地址大小的字可能對應(yīng)于未來的需求加載的有效地址。
識別候選虛擬地址的示例實施例的方法600示于圖6中。參照參考標號610,虛擬地址預(yù)測器295接收高速緩存線。該高速緩存線被包括在內(nèi)容預(yù)取器290處所接收的填充內(nèi)容中(見圖3,項目310和320),在內(nèi)容預(yù)取器290處所接收的填充內(nèi)容包含被導(dǎo)向L2高速緩存230的填充內(nèi)容的拷貝,如上面所提到的。接著,獲取高速緩存線的有效地址,如參考標號620所示。掃描高速緩存線(見圖3,參考標號330),并且從高速緩存線讀取具有地址大小的字,如參考標號630所示。對于一般的處理器,具有地址大小的字對應(yīng)三十二(32)位或者四(4)字節(jié);但是,具有地址大小的字可以是任何適合的長度。
從高速緩存線讀取具有地址大小的字(或多個字)的過程進一步示于圖7到圖9中。參照圖7,示例高速緩存線700包含六十四(64)個字節(jié)705。但是,應(yīng)該理解,高速緩存線可以是任何適合的長度(例如,128字節(jié))。可以從高速緩存線讀取第一個具有地址大小的字710(即,第一個四字節(jié))。可以從高速緩存線讀取第二個具有地址大小的字720,其中第二個具有地址大小的字720的開頭與第一個具有地址大小的字710的開頭相距一(1)個字節(jié)的偏移量708。類似地,可以從高速緩存線讀取第三個具有地址大小的字730,其中第三個具有地址大小的字730與第二個具有地址大小的字720相距一(1)個字節(jié)的偏移量??梢砸灶愃频姆绞綇母咚倬彺婢€讀取其他具有地址大小的字,直到從高速緩存線讀取了最后的具有地址大小的字790。
示于圖8的掃描高速緩存線的過程類似于圖7所示的過程;但是偏移量增加了,從高速緩存線讀取的具有地址大小的字的數(shù)目減少了。高速緩存線800包括例如六十四(64)個字節(jié)805。從高速緩存線800讀取具有地址大小的字810、820、830、...、890,每個具有地址大小的字的開頭與前一個具有地址大小的字相距兩(2)個字節(jié)的偏移量808。這樣,高速緩存線掃描的間隔大小可以通過改變偏移量808、708而變化,從而,改變了將被檢查的具有地址大小的字的數(shù)目。另外,如上所述,高速緩存線800(或700)可以被并行地掃描,其中整個高速緩存線同時被掃描。但是,應(yīng)該理解,當(dāng)可以從高速緩存線讀取的數(shù)據(jù)的數(shù)量受到例如總線帶寬的限制時,高速緩存線可以分部分地被掃描,其中每個部分被并行地掃描。
參照圖9,高速緩存線900包含六十四(64)個字節(jié)905。從高速緩存線900讀取第一個具有地址大小的字910,第一個具有地址大小的字包括高速緩存線900的第一個四字節(jié)。從高速緩存線讀取第二個具有地址大小的字920,其中第二個具有地址大小的字920的開頭對應(yīng)于第一個具有地址大小的字910的結(jié)尾。換句話說,第一個和第二個具有地址大小的字910、920相距四(4)個字節(jié)的偏移量,這也是將從高速緩存線900讀取的每個具有地址大小的字的長度。從高速緩存線900讀取的第三個具有地址大小的字930類似地從前一個具有地址大小的字偏移四字節(jié)。
存儲在存儲器中的數(shù)據(jù)結(jié)構(gòu),其中該數(shù)據(jù)結(jié)構(gòu)的每個元素從字的邊界開始讀取,被稱為是“存儲器對齊”的或“J字節(jié)對齊”的。例如,示于圖9中的高速緩存線900是“4字節(jié)對齊”的,而圖8的高速緩存線800是2字節(jié)對齊的。如下面將解釋的,這種存儲器對齊的數(shù)據(jù)表現(xiàn)出某些特性,虛擬地址預(yù)測器295可以在操作中有益地利用這些特性。
再次參照圖6,一旦具有地址大小的字已經(jīng)從高速緩存線被讀取,則具有地址大小的字的某個數(shù)量的高位與高速緩存線的有效地址中的相同數(shù)目的高位相比較,如640所示。具體地說,具有地址大小的字的N個高位與高速緩存線的有效地址的高N位相比較。該過程參考圖10更好地被圖示。高速緩存線的有效地址1010的高N位與被包含在高速緩存線中的具有地址大小的字1020的高N位相比較。有效地址1010和具有地址大小的字1020中的每一個的高N位都分別被稱為比較位1030。高N位或者比較位1030可以包含任何適合數(shù)目的位。例如,對于32位的具有地址大小的字,N位比較位可以包含8到12之間的位。
位組合可以被認為是指針加載、數(shù)據(jù)值或者簡單的隨機位。如果具有地址大小的字的高N位與高速緩存線的有效地址的高N位相匹配,這表明具有地址大小的字和高速緩存線的有效地址是從相同的基址計算而來的,則具有地址大小的字被認為是指向數(shù)據(jù)結(jié)構(gòu)成員的指針。如果具有地址大小的字的高N位與高速緩存線的有效地址的高N位相匹配,見參考標號650,則該具有地址大小的字被識別為候選虛擬地址,如660所示,并且內(nèi)容預(yù)取器290可以提供對于所識別的候選虛擬地址的預(yù)取請求(見圖3到圖5)。如果高N位不匹配,則該具有地址大小的字被丟棄,如參考標號670所示。在高速緩存線掃描期間,上述過程(見參考標號630、640、650、660、670)被應(yīng)用于從高速緩存線讀取的每個具有地址大小的字。
識別候選虛擬地址的方法的另一個實施例示于圖11中。如前面所描述的,高速緩存線可以是存儲器對齊的。例如,數(shù)據(jù)結(jié)構(gòu)可以是2字節(jié)對齊、4字節(jié)對齊、8字節(jié)對齊、16字節(jié)對齊,或者更一般地,J字節(jié)對齊。如果高速緩存線中的數(shù)據(jù)是J字節(jié)對齊的,則任何候選虛擬地址的某個數(shù)目的最低有效位(見圖10,參考標號1090)將為零(0)。例如,對于2字節(jié)對齊的數(shù)據(jù),最低有效位將為零,對于4字節(jié)對齊的數(shù)據(jù),兩個最低有效位將為零,對于8字節(jié)對齊的數(shù)據(jù),三個最低有效位將為零,對于16字節(jié)對齊的數(shù)據(jù),四個最低有效位將為零。更一般地,對于J字節(jié)對齊的數(shù)據(jù),K個最低有效為將為零。虛擬地址預(yù)測器295可以使用存儲器對齊數(shù)據(jù)的假設(shè)來取消候選虛擬地址的資格。假設(shè)存儲器對齊,如果具有地址大小的字的K個最低有效位的任何一個是非零,則該具有地址大小的字可以被取消作為候選虛擬地址的資格。參照圖11,其示出了基本上類似于圖6所示的方法600的方法1100(所有相似的元素保留相同的參考標號),如果從高速緩存線讀取的具有地址大小的字的K個最低有效位的任何一個是非零,見參考標號1110,則該具有地址大小的字被丟棄,如670所示。
上面所描述的識別候選虛擬地址的方法600(以及方法1100)一般可作用于高速緩存線的有效地址的高位中所包含的任何位組合,但有兩個例外高N位全為0的情況和高N位全為1的情況(在該情況中,負數(shù)可能被錯誤地識別為候選虛擬地址)。但是,與當(dāng)有效地址的比較位全為0或全為1時不進行預(yù)測相比,更好的方法是在比較中使用附加的過濾位來將候選虛擬地址從數(shù)據(jù)值或者隨機位組合區(qū)分開。參照圖12,高速緩存線的有效地址1210的比較位1230或者全是1,或者全是0。如果高速緩存線的具有地址大小的字1220的高N位與有效地址的高N位(其或者全是1,或者全是0)相匹配,則檢查具有地址大小的字的附加過濾位1240。過濾位1240包含高N位或比較位1230之后的下面的M個位。如果比較位1230全是0,并且在具有地址大小的字的過濾位范圍中發(fā)現(xiàn)了非零位,或者,如果比較位1230全是1,并且在具有地址大小的字的過濾位范圍中發(fā)現(xiàn)了非1的位,則該具有地址大小的字被視為候選虛擬地址。
利用過濾位識別候選虛擬地址的方法1300示于圖13中。方法1300類似于參照圖6所描述和示出的識別候選虛擬地址的方法600,并且相似的元素保留相同的參考標號。如參考標號610所示,虛擬地址預(yù)測器295接收高速緩存線。再次,高速緩存線被包括在內(nèi)容預(yù)取器290所接收的填充內(nèi)容的拷貝中。接著,獲取高速緩存線的有效地址,如參考標號620所示。掃描高速緩存線,并從高速緩存線讀取(或以其他方式訪問)具有地址大小的字,如參考標號630所示。參照參考標號640,具有地址大小的字的高N位然后與有效地址的高N位相比較。
如果具有地址大小的字的比較位和高速緩存線的有效地址的比較位相匹配,見參考標號650,并且有效地址的高N位全為0,見參考標號1310,則檢查具有地址大小的字的下M個過濾位。參照參考標號1320,如果具有地址大小的字的下M個過濾位中的任何一個是非零位,則該具有地址大小的字是候選虛擬地址(見參考標號660)。如果在過濾位范圍中沒有發(fā)現(xiàn)非零位,則該具有地址大小的字被丟棄,如670所示。類似地,如果具有地址大小的字的比較位和有效地址的比較位相匹配,參考見標號650,并且有效地址的高N位全是1,見參考標號1330,則具有檢查地址大小的字的下M個過濾位。如參考標號1340所示,如果具有地址大小的字的下M個過濾位中的任何一個是非1位,則該具有地址大小的字是候選虛擬地址(見參考標號660)。如果在過濾位范圍中沒有發(fā)現(xiàn)非1位,則該具有地址大小的字被丟棄,如670所示。
過濾位范圍可以包含任何適合數(shù)目的位。例如,對于32位的具有地址大小的字,認為1到4位的過濾位范圍被認為是適合的。當(dāng)高速緩存線的有效地址的比較位全為0或全為1時,不使用過濾位導(dǎo)致沒有虛擬地址預(yù)測,而增加過濾位的數(shù)目放松了對可能的候選虛擬地址的要求。
這里已經(jīng)描述了具有虛擬地址預(yù)測器295的內(nèi)容預(yù)取器290的實施例以及識別候選虛擬地址的方法600、1100和1300,本領(lǐng)域技術(shù)人員將意識到它們的優(yōu)點。虛擬地址預(yù)測器識別從高速緩存接收到的填充內(nèi)容的拷貝中的候選虛擬地址,而不用求助于外部源或地址索引,例如TLB,從而潛在預(yù)取的范圍沒有被不必要地限制。虛擬地址預(yù)測器可以提供遞歸組件,引起鏈聯(lián)的預(yù)取,并且可以基于預(yù)取的請求深度來為該預(yù)取指定優(yōu)先級。識別候選虛擬地址的方法通過將從高速緩存線讀取的具有地址大小的字的高N位與高速緩存線的有效地址的高N位相比較,來將候選虛擬地址與數(shù)據(jù)值和隨機位組合區(qū)分開。如果比較位相匹配,則具有地址大小的字被識別為候選虛擬地址,并且對于該地址的預(yù)取請求可以被排隊;否則,該具有地址大小的字被丟棄。在另一個實施例中,當(dāng)高速緩存線的有效地址的高N位全為1或全為0時,檢查具有地址大小的字內(nèi)的過濾位范圍,從而最小化錯誤預(yù)測,這例如當(dāng)填充內(nèi)容包括多個負數(shù)時可能發(fā)生。并且,識別候選虛擬地址的方法可以利用存儲器對齊數(shù)據(jù),來容易地排除沒有可能對應(yīng)于虛擬地址的具有地址大小的字。
前面的詳細描述和附圖只是示例性的,而不是限制性的。提供它們主要是為了清楚和全面地理解本發(fā)明,不應(yīng)該將其理解為是不必要的限制。本領(lǐng)域的技術(shù)人員可以設(shè)計許多對于這里所描述的實施例的添加、刪除和修改,以及替換的安排,而不脫離本發(fā)明的精神和所附權(quán)利要求的范圍。
權(quán)利要求
1.一種方法,包括從高速緩存線獲取有效地址;從所述高速緩存線讀取具有地址大小的字;將所述具有地址大小的字的高N位與所述高速緩存線的所述有效地址的高N位相比較;以及如果所述具有地址大小的字的所述高N位與所述有效地址的所述高N位相匹配,則將所述具有地址大小的字識別為候選虛擬地址。
2.如權(quán)利要求1所述的方法,還包括如果所述具有地址大小的字的所述高N位與所述有效地址的所述高N位不匹配,則丟棄所述具有地址大小的字。
3.如權(quán)利要求1所述的方法,其中所述高N位包含從8個到12個位。
4.如權(quán)利要求1所述的方法,其中所述高速緩存線是存儲器對齊的,所述方法還包括如果所述具有地址大小的字的K個最低有效位中的任何一個是非零的,則丟棄所述具有地址大小的字。
5.如權(quán)利要求4所述的方法,其中所述高速緩存線是2字節(jié)對齊、4字節(jié)對齊、8字節(jié)對齊和16字節(jié)對齊中的一種。
6.如權(quán)利要求4所述的方法,其中所述K個最低有效位包含從1個到4個位。
7.如權(quán)利要求1所述的方法,還包括如果所述有效地址的所述高N位的每個都是為零的位,則檢查所述具有地址大小的字的M個過濾位;以及如果所述M個過濾位中的一個是非零的位,則將所述具有地址大小的字識別為候選虛擬地址。
8.如權(quán)利要求7所述的方法,還包括如果所述M個過濾位的每個都是為零的位,則丟棄所述具有地址大小的字。
9.如權(quán)利要求7所述的方法,其中所述M個過濾位包含從1個到4個位。
10.如權(quán)利要求1所述的方法,還包括如果所述有效地址的所述高N位的每個都是為一的位,則檢查所述具有地址大小的字的M個過濾位;以及如果所述M個過濾位中的一個是非一的位,則將所述具有地址大小的字識別為候選虛擬地址。
11.如權(quán)利要求10所述的方法,還包括如果所述M個過濾位的每個都是為一的位,則丟棄所述具有地址大小的字。
12.如權(quán)利要求10所述的方法,其中所述M個過濾位包含從1個到4個位。
13.一種設(shè)備,包括高速緩存存儲器,所述高速緩存存儲器接收包括高速緩存線的填充內(nèi)容;與所述高速緩存存儲器相耦合的內(nèi)容預(yù)取器,所述內(nèi)容預(yù)取器接收所述高速緩存線的拷貝,從所述高速緩存線獲取有效地址,從所述高速緩存線讀取具有地址大小的字,將所述具有地址大小的字的高N位與所述高速緩存線的所述有效地址的高N位相比較,以及如果所述具有地址大小的字的所述高N位與所述有效地址的所述高N位相匹配,則將所述具有地址大小的字識別為候選虛擬地址。
14.如權(quán)利要求13所述的設(shè)備,如果所述具有地址大小的字的所述高N位與所述有效地址的所述高N位不匹配,則所述內(nèi)容預(yù)取器丟棄所述具有地址大小的字。
15.如權(quán)利要求13所述的設(shè)備,其中所述高N位包含從8個到12個位。
16.如權(quán)利要求13所述的設(shè)備,其中所述高速緩存線是存儲器對齊的,如果所述具有地址大小的字的K個最低有效位中的任何一個是非零的,則所述內(nèi)容預(yù)取器丟棄所述具有地址大小的字。
17.如權(quán)利要求16所述的設(shè)備,其中所述高速緩存線是2字節(jié)對齊、4字節(jié)對齊、8字節(jié)對齊和16字節(jié)對齊中的一種。
18.如權(quán)利要求16所述的設(shè)備,其中所述K個最低有效位包含從1個到4個位。
19.如權(quán)利要求13所述的設(shè)備,所述內(nèi)容預(yù)取器如果所述有效地址的所述高N位的每個都是為零的位,則檢查所述具有地址大小的字的M個過濾位;以及如果所述M個過濾位中的一個是非零的位,則將所述具有地址大小的字識別為候選虛擬地址。
20.如權(quán)利要求19所述的設(shè)備,如果所述M個過濾位的每個都是為零的位,則所述內(nèi)容預(yù)取器丟棄所述具有地址大小的字。
21.如權(quán)利要求19所述的設(shè)備,其中所述M個過濾位包含從1個到4個位。
22.如權(quán)利要求13所述的設(shè)備,所述內(nèi)容預(yù)取器如果所述有效地址的所述高N位的每個都是為一的位,則檢查所述具有地址大小的字的M個過濾位;以及如果所述M個過濾位中的一個是非一的位,則將所述具有地址大小的字識別為候選虛擬地址。
23.如權(quán)利要求22所述的設(shè)備,如果所述M個過濾位的每個都是為一的位,則所述內(nèi)容預(yù)取器丟棄所述具有地址大小的字。
24.如權(quán)利要求22所述的方法,其中所述M個過濾位包含從1個到4個位。
25.一種產(chǎn)品,包括提供內(nèi)容的機器可訪問介質(zhì),所述內(nèi)容當(dāng)被機器訪問時,引起所述機器從高速緩存線獲取有效地址;從所述高速緩存線讀取具有地址大小的字;將所述具有地址大小的字的高N位與所述高速緩存線的所述有效地址的高N位相比較;以及如果所述具有地址大小的字的所述高N位與所述有效地址的所述高N位相匹配,則將所述具有地址大小的字識別為候選虛擬地址。
26.如權(quán)利要求25所述的產(chǎn)品,其中所述內(nèi)容當(dāng)被訪問時,還引起所述機器如果所述具有地址大小的字的所述高N位與所述有效地址的所述高N位不匹配,則丟棄所述具有地址大小的字。
27.如權(quán)利要求25所述的產(chǎn)品,其中所述高N位包括從8個到12個位。
28.如權(quán)利要求25所述的產(chǎn)品,其中所述高速緩存線是存儲器對齊的,并且所述內(nèi)容當(dāng)被訪問時,還引起所述機器如果所述具有地址大小的字的K個最低有效位中的任何一個是非零的,則丟棄所述具有地址大小的字。
29.如權(quán)利要求28所述的產(chǎn)品,其中所述高速緩存線是2字節(jié)對齊、4字節(jié)對齊、8字節(jié)對齊和16字節(jié)對齊中的一種。
30.如權(quán)利要求28所述的產(chǎn)品,其中所述K個最低有效位包含從1個到4個位。
31.如權(quán)利要求25所述的產(chǎn)品,其中所述內(nèi)容當(dāng)被訪問時,還引起所述機器如果所述有效地址的所述高N位的每個都是為零的位,則檢查所述具有地址大小的字的M個過濾位;以及如果所述M個過濾位中的一個是非零的位,則將所述具有地址大小的字識別為候選虛擬地址。
32.如權(quán)利要求31所述的產(chǎn)品,其中所述內(nèi)容當(dāng)被訪問時,還引起所述機器如果所述M個過濾位的每個都是為零的位,則丟棄所述具有地址大小的字。
33.如權(quán)利要求31所述的產(chǎn)品,其中所述M個過濾位包含從1個到4個位。
34.如權(quán)利要求25所述的產(chǎn)品,其中所述內(nèi)容當(dāng)被訪問時,還引起所述機器如果所述有效地址的所述高N位的每個都是為一的位,則檢查所述具有地址大小的字的M個過濾位;以及如果所述M個過濾位中的一個是非一的位,則將所述具有地址大小的字識別為候選虛擬地址。
35.如權(quán)利要求34所述的產(chǎn)品,其中所述內(nèi)容當(dāng)被訪問時,還引起所述機器如果所述M個過濾位的每個都是為一的位,則丟棄所述具有地址大小的字。
36.如權(quán)利要求34所述的產(chǎn)品,其中所述M個過濾位包含從1個到4個位。
全文摘要
一種用于在高速緩存線中識別虛擬地址的方法和裝置。為了將候選虛擬地址與數(shù)據(jù)值和隨機位組合區(qū)分開,將高速緩存線中的具有地址大小的字的高位與高速緩存線的有效地址的高位相比較。如果具有地址大小的字的高位與有效地址的高位相匹配,則該具有地址大小的字被識別為候選虛擬地址。
文檔編號G06F12/08GK1636194SQ02823892
公開日2005年7月6日 申請日期2002年12月2日 優(yōu)先權(quán)日2001年11月30日
發(fā)明者羅伯特·庫克西, 斯蒂芬·喬丹 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1