中文字幕无码日韩视频无码三区

在內容感知預取器中識別候選虛擬地址的方法和裝置的制作方法

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


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