專利名稱:數(shù)據(jù)預取器及預取數(shù)據(jù)至高速緩存存儲器的方法
技術(shù)領域:
本發(fā)明涉及微處理器領域,特別是涉及微處理器中的數(shù)據(jù)預取。
背景技術(shù):
微處理器中數(shù)據(jù)預取的概念為眾所皆知。為了避免高速緩存發(fā)生錯誤(miss)時存取系統(tǒng)存儲器需要相當長的延遲時間(latency),微處理器會感測最近一筆存儲器要求的地址,試著預測未來所需要的數(shù)據(jù),并將所預測的數(shù)據(jù)預取至微處理器的高速緩存存儲器中。若存儲器存取的序列單純(以下稱簡易序列模式),則未來所需的數(shù)據(jù)可輕易地加以預測。然而,程序(program)卻以比簡易序列模式更復雜的模式進行數(shù)據(jù)存取。設計數(shù)據(jù)預取器以預測未來復雜的存取模式所需的數(shù)據(jù)會耗費大量電源與時間資源,故對現(xiàn)代微處理器的時鐘循環(huán)(clock cycle lengths)與電源消耗造成負面影響。因此,需要有效率的數(shù)據(jù)預取器以預測復雜的存取模式。
發(fā)明內(nèi)容
本發(fā)明提供一種數(shù)據(jù)預取器。此數(shù)據(jù)預取器包括一序列,包括多個已索引的儲存元件,這些儲存元件用以分別儲存多個已排序的步幅,這些步幅相關(guān)于來自一相同存儲器頁面的多個暫時相鄰的載入要求的一數(shù)據(jù)流。這些步幅的每一個皆為該數(shù)據(jù)流中兩相鄰的載入要求的存儲器地址的高速緩存線偏移之間的差異。此數(shù)據(jù)預取器也包括一邏輯單元。該邏輯單元計算該數(shù)據(jù)流的一現(xiàn)行載入要求與一最新先前載入要求之間的一現(xiàn)行步幅。該現(xiàn)行步幅為該現(xiàn)行載入要求與該最新先前載入要求的存儲器地址的高速緩存線偏移的差異。該邏輯單元比對該現(xiàn)行步幅與該序列中的一步幅M。該邏輯單元比對這些步幅中的一最新先前步幅與已排序的一步幅M+1。其中已排序的該步幅M+1舊于且相鄰于該序列中該步幅M。當該現(xiàn)行步幅配對于該序列中的步幅M且該最新先前步幅配對于已排序的該步幅M+1,則預取一高速緩存線進入該高速緩存存儲器中,其中該高速緩存線在該存儲器頁面中的偏移為該現(xiàn)行載入要求與該步幅M-I的總合。該步幅M-I新于且相鄰于該序列中的該步幅M。本發(fā)明亦提供一種預取數(shù)據(jù)到高速緩存存儲器的方法。此方法包括將多個步幅排序進入具有多個已索引的儲存元件的一序列之中,其中這些步幅相關(guān)于來自一相同存儲器頁面的多個暫時相鄰的載入要求的一數(shù)據(jù)流。這些步幅的每一個為該數(shù)據(jù)流中兩相鄰的載入要求的存儲器地址的高速緩存線偏移之間的差異。此方法也包括計算該數(shù)據(jù)流的一現(xiàn)行載入要求與一最新先前載入要求之間的一現(xiàn)行步幅。該現(xiàn)行步幅為該現(xiàn)行載入要求與該最新先前載入要求的存儲器地址的高速緩存線偏移的差異。此方法包括比對該現(xiàn)行步幅與該序列中的一步幅M,以及比對這些步幅中的一最新先前步幅與已排序的一步幅M+1,其中已排序的該步幅M+1舊于且相鄰于該序列中該步幅M。此方法包括,當該現(xiàn)行步幅配對于該序列中的該步幅M且該最新先前步幅配對于已排序的該步幅M+1,則將一高速緩存線預取進入一高速緩存存儲器中,其中該高速緩存線在該存儲器頁面中的偏移為該現(xiàn)行載入要求與該步幅M-I的總合,其中該步幅M-I新于且相鄰于該序列中的該步幅M。
圖I為依據(jù)本發(fā)明說明微處理器的方塊圖。圖2為說明存儲器地址的實施例的方塊圖。圖3為說明圖I的步幅預測器的方塊圖。圖4為說明圖I的數(shù)據(jù)預取器的操作的流程圖。圖5到圖9為藉由第一、第二、第三、第四、第五實施例說明圖3的步幅預測器的操作的方塊圖。附圖符號說明100 微處理器102 指令高速緩存104 指令解碼器106 RAT寄存器別名表108 保留站112、132 執(zhí)行單元114 汰除單元116、118 高速緩存存儲器122 總線接口單元124 數(shù)據(jù)預取器132 其他執(zhí)行單元134 載入/儲存單元140 步幅預測器302 現(xiàn)行偏移303 序列304 先前偏移305 減法器306 現(xiàn)行步幅307 最新先前步幅310 儲存元件318 簡易步幅預測器320 復雜步幅預測器322,338 多工器324 預測步幅326 簡易預測步幅328 復雜預測步幅332、336 比對單元334、424 配對分析邏輯單元402、404、406、408、412、414、416、418、422、424、426 步驟
具體實施例方式詞匯 步幅(stride)為暫時相鄰的載入要求(temporallyadjacent load requests)的存儲器地址的高速緩存線(cache line)的偏移(offset)值間的差異,暫時相鄰的載入要求是來自數(shù)據(jù)預取器所看見的相同存儲器頁面。步幅可為正值或負值,視暫時相鄰的載入要求的方向而定。高速緩存線的偏移(cache line offset),或簡稱為偏移,為存儲器地址的一部份(例如位的子集合)的值,該存儲器地址定義一存儲器頁面之內(nèi)的一高速緩存線。圖2說明一存儲器地址及其偏移位的實施例。當載入要求的存儲器地址位于高速緩存線的存儲器地址之內(nèi)時,載入要求就會相關(guān)于(implicate) —高速緩存線。舉例來說,12345678H的載入地址相關(guān)于12345640H存儲器地址中的高速緩存線。實施例的描沭參考圖1,圖I用以說明一微處理器100的一實施例。微處理器100包括由多階段(或級)所構(gòu)成的管路(pipeline)系統(tǒng),該管路系統(tǒng)包括各種功能單元。管路系統(tǒng)包括指令高速緩存102、指令解碼器104、寄存器別名表(RAT) 106、保留站108、執(zhí)行單元112以及汰除(retire)單元114,其中指令高速緩存102耦接至指令解碼器104,指令解碼器104耦接至寄存器別名表(RAT) 106,寄存器別名表(RAT) 106耦接至保留站108,保留站108耦接至執(zhí)行單元112,執(zhí)行單元112稱接至汰除(retire)單元114。在實施例中,指令解碼器104可包括指令編譯器,該指令編譯器將巨集指令(例如x86或ARM架構(gòu)的指令)編譯為微處理器100的類RISC微架構(gòu)的微指令組的多個微指令。保留站108發(fā)出指令到執(zhí)行單元112以執(zhí)行程序順序。汰除單元114包括重新排序緩沖器用以依程序排序?qū)χ噶钸M行強制汰除。執(zhí)行單元112包括載入/儲存單元134與其他執(zhí)行單元132,例如積分單元、浮點單元、分支單元或SIMD單元。載入/儲存單元134讀取來自第一層位(level-1 ;L1)的高速緩存存儲器116的數(shù)據(jù),載入/儲存單元134的寫入數(shù)據(jù)到第一層位的高速緩存存儲器116。第二層位(level-2 ;L2)的高速緩存存儲器118支持第一層位的高速緩存存儲器116與指令高速緩存102。第二層位的高速緩存存儲器118藉由總線接口單元122讀取與寫入系統(tǒng)存儲器(未繪示),該總線接口單元122為微處理器100到總線(例如局部總線或存儲器總線)之間的接口。微處理器100也包括數(shù)據(jù)預取器124,耦接至載入/儲存單元134、第一層位的高速緩存存儲器116、第二層位的高速緩存存儲器118與總線接口單元122,如此處的詳細描述,該總線接口單元自系統(tǒng)存儲器預取數(shù)據(jù)至第二層位的高速緩存存儲器118和/或第一層位的高速緩存存儲器116。數(shù)據(jù)預取器124也可從第二層位的高速緩存存儲器118預取數(shù)據(jù)到第一層位的高速緩存存儲器116。數(shù)據(jù)預取器124包括多個步幅預測器140,步幅預測器的數(shù)量依實施例而不同,每一個步幅預測器140用以維護一步幅歷史,而步幅歷史有關(guān)于來自一特定存儲器頁面的載入要求的個別數(shù)據(jù)流。因此而降低了不同存儲器頁面之間、彼此接口之間的數(shù)據(jù)流的能力(可能有不同的步幅模式)。參考圖2,圖2為顯示存儲器地址的實施例。對存儲器的多重頁面的每一個而言,圖I的數(shù)據(jù)預取器124監(jiān)控頁面存取的歷史,以及試著預測未來數(shù)據(jù)會存取的存儲器地址,并自所預測的存儲器地址預取數(shù)據(jù)到圖I的第二層位的高速緩存存儲器118和/或第一層位的高速緩存存儲器116。理想上,微處理器100預取整個數(shù)據(jù)的高速緩存線到高速緩存存儲器118,116。在圖2的實施例中,存儲器頁面的容量是4KB,高速緩存線的容量是64bytes,存儲器地址是36bits,其中該存儲器地址包括頁面數(shù)值(bits 35:15)、頁面之內(nèi)的高速緩存線偏移(bits 11:6)以及高速緩存線內(nèi)的位組索引(bits 5:0)。在其他實施例中,存儲器地址可大于或小于36bits,而頁面、高速緩存線偏移、與位組索引區(qū)也可變動。此外,高速緩存線的容量可能因微處理器100中不同的高速緩存存儲器而改變。
在實施例中,微處理器100取得現(xiàn)行載入要求地址的高速緩存線偏移,并減去最新的先前載入要求地址,以決定兩個存儲器存取之間的步幅。微處理器100執(zhí)行存取存儲器的相同頁面的暫時相鄰存儲器的數(shù)據(jù)流的步幅計算。數(shù)個相連的步幅構(gòu)成一載入步幅模式(load stride pattern)。雖然步幅值可能會變動(例如+2、+4、+1、+3),但發(fā)明人發(fā)現(xiàn)在某些應用中,步幅值會在變化數(shù)個步幅值之后呈現(xiàn)重復的模式。圖I的步幅預測器140檢測載入步幅模式,以預測對應于下一個數(shù)據(jù)載入要求的下一個步幅。數(shù)據(jù)預取器124可接著利用所預測到的下一個步幅來預取數(shù)據(jù)。參考圖3,圖3用以顯示圖I中的步幅預測器140的方塊圖。步幅預測器140包括減法器305用以減去先前偏移304所提供的先前偏移以產(chǎn)生現(xiàn)行步幅306,此先前偏移304可存于寄存器中;儲存元件310所構(gòu)成的序列303用以儲存步幅歷史;簡易步幅預測器318用以接收現(xiàn)行步幅306與最新先前步幅307,最新先前步幅307是儲存于序列303末端的儲存元件310中,例如近來最新被推進序列303的步幅;復雜步幅預測器320耦接至序列303并用以接收現(xiàn)行步幅306 ;以及多工器322用以選擇簡易步幅預測器318產(chǎn)生的簡易預測步幅328或是復雜步幅預測器320產(chǎn)生復雜預測步幅326,并輸出為預測步幅324?,F(xiàn)行步幅306可只作為減法器305的輸出,或亦儲存于儲存元件中?,F(xiàn)行偏移302是現(xiàn)行載入要求的高速緩存線的偏移部分。在實施例中,現(xiàn)行載入要求是由第一層位的高速緩存存儲器116到第二層位的高速緩存存儲器118所形成(亦即,由于高速緩存線包含的數(shù)據(jù)被載入/儲存單元134所要求,但高速緩存線遺失于第一層位的高速緩存存儲器116,故造成現(xiàn)行偏移302),而步幅預測器140會監(jiān)測高速緩存線從第一層位的高速緩存存儲器116到第二層位的高速緩存存儲器118的載入要求。在另一實施例中,步幅預測器140監(jiān)測載入/儲存單元134對第一層位的高速緩存存儲器116所產(chǎn)生的載入要求,并且基于一串相關(guān)的步幅歷史,步幅預測器140從第二層位的高速緩存存儲器118預取高速緩存線至第一層位的高速緩存存儲器116。要注意的是,在實施例中,載入要求可包括暫時相鄰的載入要求,該暫時相鄰的載入要求比高速緩存線的容量小得多,因此可包括對相同高速緩存線的多重載入要求。因此,在實施例中,步幅預測器140可包括過濾機制,以過濾在極短暫時間(in close temporal proximity)中對相同高速緩存線的多重載入要求,并視其為高速緩存線的單一載入要求。在另一個實施例中,載入/儲存單元134可平行地發(fā)出對第一層位的高速緩存存儲器116與第二層位的高速緩存存儲器118的載入要求,且步幅預測器140可監(jiān)測現(xiàn)行載入要求。在另一實施例中,步幅預測器140可監(jiān)測第二層位的高速緩存存儲器118對第三層位(level-3 ;L3)的高速緩存(未顯示)或微處理器100的階層高速緩存存儲器的其他高速緩存所產(chǎn)生的現(xiàn)行載入要求。儲存于先前偏移寄存器的數(shù)值也可參考而作為先前偏移304,其為早先于現(xiàn)行載入要求的最新先前載入要求的偏移。減法器305自現(xiàn)行偏移302減去先前偏移304得到現(xiàn)行步幅306。步幅預測器140在現(xiàn)行偏移302減去先前偏移304后,將現(xiàn)行偏移302儲存于提供先前偏移304的寄存器中。儲存元件310 (例如寄存器或鎖存器)所組成的序列303用以儲存載入要求的資訊流所相關(guān)的步幅歷史,這些載入要求的偏移已在先前被接收作為現(xiàn)行偏移302。圖3的實施例中的序列303包括五個標示為索引I到5的儲存元件310,用以維持五個先前的步幅。每一個儲存元件310也包括有效位(未顯示)用以指示該元件是否正在儲存一有效步幅。每一次當步幅預測器140根據(jù)新的載入要求而產(chǎn)生復雜預測步幅326時,步幅預測器140所計算的現(xiàn)行步幅306推進到序列303的索引I中,并設置其為有效位。序列303的其他儲存元件310及其有效位依序向下被推入序列303,而索引5的步幅被推出序列303。因此,索引I的儲存元件310維持最新的先前步幅307,而索引5的儲存元件310維持最舊的先前步幅。在實施例中,暖機(warming up)時,步幅預測器140沒有序列303中的有效的先
前步幅。舉例來說,對于近來并未被存取的存儲器頁面的第一載入要求,步幅預測器140沒有序列303中的有效的先前步幅。因此,根據(jù)存儲器頁面的第一載入要求,數(shù)據(jù)預取器124分配新的步幅預測器140予該頁面,并使序列303中的所有儲存元件310為無效。此外,在實施例中,當序列303充滿有效步幅但未能與載入要求數(shù)據(jù)流中的步幅模式配對時,步幅預測器140就會使序列303的所有儲存元件310為無效,如下列細節(jié)所描述。在實施例中,為了改善步幅預測,當步幅預測器140推進第一有效步幅到序列303(亦即到索引I的儲存元件)中時,步幅預測器140會置放相同的第一有效步幅到索引2的儲存元件。在實施例中,簡易步幅預測器318用以僅根據(jù)現(xiàn)行步幅306與最新先前步幅307,產(chǎn)生簡易預測步幅328。仔細而言,若現(xiàn)行步幅306配對于最新先前步幅307,簡易步幅318則會接著預測下一個步幅將會是現(xiàn)行步幅306,即此時暫時相鄰的載入要求的數(shù)據(jù)流所相關(guān)的步幅為零。相較之下,復雜步幅預測器320使用現(xiàn)行步幅306與儲存于序列303的步幅歷史以產(chǎn)生復雜預測步幅326,細節(jié)如下所述。最好的情況是,如果復雜步幅預測器320指示其配對了步幅模式且使步幅預測為有效,則多工器322選擇來自復雜步幅預測器320的復雜預測步幅326以提供預測步幅324,否則就選擇從簡易步幅預測器318的簡易預測步幅 328 ο復雜步幅預測器320包括兩個比對單元332與336、配對分析邏輯單元334以及多工器338,比對單元332與336接收來自序列303的步幅,配對分析邏輯單元334耦接比對單元332與336,多工器338耦接至配對分析邏輯單元334并接收序列303的步幅。在實施例中,比對單元332比對現(xiàn)行步幅306與序列303的步幅1_4(亦即索引1_4的儲存元件中的步幅),并將結(jié)果輸出到配對分析邏輯單元334。同樣地,比對單元336比對最新先前步幅307與步幅2-5,并將結(jié)果輸出到配對分析邏輯單元334。配對分析邏輯單元334檢驗結(jié)果以決定現(xiàn)行步幅306是否配對于序列步幅(圖3的實施例中的步幅1-4)中的任一個(通常被視為步幅M(亦即序列303中的索引M的步幅)),并決定最新先如步幅307是否配對于下一個最舊的序列步幅(亦即索引M+1的儲存元件中的步幅)。如果是,步幅預測器140預測下一個最新預測步幅(亦即索引M-I的儲存元件中的步幅),并指示載入數(shù)據(jù)流依序要求從現(xiàn)行偏移302到高速緩存線的步幅。因此,配對分析邏輯單元334控制多工器338,選擇步幅M-I為復雜預測步幅326。這部分亦會描述于圖4中。舉例來說,如果現(xiàn)行步幅306配對于步幅4 (M=4)而最新先前步幅307配對于步幅5 (M+l=5),配對分析邏輯單元334則會控制多工器338,選擇步幅3 (M-1 = 3)作為復雜預測步幅326。在實施例中,如果配對分析邏輯單元334檢測到現(xiàn)行步幅306配對于多個序列步幅,亦即M具有多個數(shù)值,且最新先前步幅307配對于步幅M+1為多個M數(shù)值,則配對邏輯單元分析334會選擇步幅M-I,以最低索引作為預測步幅326 (即使考慮其他實施例)。雖然圖3的實施例說明了儲存于序列303的所有步幅都會提供予多工器338。要注意的是,既然配對分析邏輯單元334不會選擇步幅4與5作為復雜預測步幅326,故步幅4與5可以不需提供予多工器338,使得多工器338得以簡化。進一步來說,可從下列的更多討論中觀察到,序列303具有N個儲存元件310,多個儲存元件預測具有最大模式長度為L的模式,不需提供序列303之中最舊 的L-I步幅,因而能簡化多工器338。此外,在圖3中,除序列303所標示之外,其余構(gòu)件可共同視為一邏輯單元。參考圖4,圖4為說明圖I中數(shù)據(jù)預取器124的操作的一流程圖。流程自步驟402開始。在步驟402中,數(shù)據(jù)預取器124監(jiān)測了具有圖3中現(xiàn)行偏移302的現(xiàn)行載入要求,現(xiàn)行偏移302為現(xiàn)行載入要求的存儲器地址的高速緩存線偏移部分?,F(xiàn)行載入要求的存儲器地址的頁面位定義了包括載入要求的存儲器頁面,并且數(shù)據(jù)預取器124決定哪一個(如果有的話)步幅預測器140被分配用以追蹤此存儲器頁面的步幅歷史。如果步幅預測器140已經(jīng)分配給此存儲器頁面,就驅(qū)動步幅預測器140執(zhí)行圖4的剩下的步驟。然而,如果還沒有已經(jīng)分配步幅預測器140給此存儲器頁面,則數(shù)據(jù)預取器124分配一步幅預測器140給新的存儲器頁面,如果所有步幅預測器140都已被使用,最好在至少最近使用的基礎上,并且使圖3中最新分配步幅預測器140的序列303的所有步幅為無效。在此狀態(tài)中,因為步幅預測器140并未檢測到其他來自存儲器頁面的新載入要求,故不會計算任何步幅,因此步幅預測器140不會試著預測用于預取的下一個步幅。若適當?shù)脑?,?shù)據(jù)預取器124可回復到簡易步幅預測器318的預測步幅328,否則,流程就進行到步驟404。在步驟404中,減法器305從現(xiàn)行偏移302減去圖3的先前偏移304以計算現(xiàn)行步幅306。流程進行到步驟406。在步驟406中,圖3的比對單元332和336以儲存于序列303中的步幅歷史比對現(xiàn)行步幅306與最新先前步幅307,并提供結(jié)果到配對分析邏輯單元334。流程進行到步驟408。在步驟408中,配對分析邏輯單元334決定現(xiàn)行步幅306是否配對于序列303的有效步幅,該有效步幅可視為步幅M。若是,流程進行到步驟412 ;若否,流程進行到步驟424。在步驟412中,配對分析邏輯單元334決定最新先前步幅307是否配對于序列303的有效步幅,該有效步幅舊于(older)并相鄰于步驟408中所配對的步幅(步幅M),該步幅可視為步幅M+1。若是,流程進行到步驟414 ;若否,流程進行到步驟424。在步驟414中,預測下一個步幅M-I且預取現(xiàn)行載入地址之中的高速緩存線加上步幅M-I。配對分析邏輯單元334控制圖3的多工器選擇來自序列303的步幅M-I,以供應圖3的復雜預測步幅。換言之,步幅預測器140預測儲存于序列303中索引M-I的儲存元件的步幅,當該步幅加上現(xiàn)行步幅306時,就會成為即將被載入要求數(shù)據(jù)流所要求的高速緩存線的偏移。相應于此,數(shù)據(jù)預取器124產(chǎn)生對圖I的總線接口單元122的要求,從存儲器頁面預取位于此偏移的高速緩存線到高速緩存存儲器116/高速緩存存儲器118,其中此偏移為現(xiàn)行偏移302和復雜預測步幅326的總合。流程進行到步驟416。在步驟416中,步幅預測器140步驟404中所計算的現(xiàn)行步幅是否為存儲器頁面的第一有效步幅。若是,流程進行到步驟422 ;若否,流程進行到步驟418。在步驟418中,步幅預測器140將步驟404所計算的現(xiàn)行步幅306推進序列303中。流程終止于步驟418。在步驟422中,步幅預測器140將步驟404中所計算的現(xiàn)行步幅306推進到序列303兩次,作為步幅歷史的起始的最佳化處理。流程終止于步驟422。在步驟424中,步幅預測器140決定是否序列303的所有步幅為有效。若是,流程進行到步驟426 ;若否,流程進行到步驟416?!ぴ诓襟E426中,步幅預測器140使序列303的所有步幅為無效,這會藉由防止步幅預測器140產(chǎn)生無益的預取(亦即會染污高速緩存存儲器116/118),而增加步幅預測器的正確性高速緩存存儲器116。流程進行到步驟426。如上所述和以下所進一步說明,所描述的實施例的優(yōu)點是數(shù)據(jù)預取器124可為載入要求的數(shù)據(jù)流執(zhí)行有益的高速緩存線預取,該預取要求數(shù)據(jù)流呈現(xiàn)出相當長的復雜步幅模式,亦即會改變步幅值的步幅序列。更精確地說,如果序列303中的儲存元件310的數(shù)量是N(亦即持有步幅的數(shù)量),步幅預測器140會檢測不同區(qū)間的模式,特別是模式區(qū)間的長度最長為N-I。參考圖5,圖5是用以依據(jù)圖3的步幅預測器140說明圖4的操作方式。在圖5的實施例中,圖3的序列303具有四個儲存元件310 -標示為索引的儲存元件的步幅1、2、3、4 -以儲存一個具有四個步幅的步幅歷史。儲存于序列303且具有對應標不的四個步幅參考為以下的步幅I、步幅2、步幅3和步幅4。此處顯示了暫時相鄰的載入要求的存儲器地址的數(shù)據(jù)流以及載入要求數(shù)據(jù)流所對應的重復載入步幅模式{+1、+2、+3}的實施例。如圖2所示,偏移為存儲器地址的多個位[11:6],而位組[5:0]為位組索引。既然這些載入是存取存儲器的相同頁面(亦即,未顯示的地址的位定義了相同頁面且具有相同數(shù)值),為了簡化之故,因此只顯示了較低的12個位[11:0]而未顯示多個頁面位[35:12]。以下顯示了每一個載入要求的地址,以及載入要求與其前一個載入要求之間的對應步幅,例外的情況為來自頁面的第一載入要求,因為沒有前一個要求以計算步幅。數(shù)據(jù)流所顯示的最后載入要求及其相應的步幅已清楚地顯示出來,用以指示步幅預測器140尚未加以監(jiān)測,但如下所描述之后步幅預測器140將會加以預測。在位于存儲器地址000H的第一載入要求之上,由于沒有先前載入要求,故并無有效的步幅。舉例來說,這可能發(fā)生于來自存儲器地址000H的載入為來自存儲器頁面的第一載入。在來自存儲器地址040H的第二載入之上,偏移的多個位000001b會比具有多個先前偏移位000000b大1,因此依據(jù)圖4的步驟404,計算的步幅為+1,并且依據(jù)圖4的步驟422兩次被推進到序列303。在來自存儲器地址OCOH的第三載入之上,偏移OOOOllb會比先前偏移000001b大2,使得步幅為+2,該步幅依據(jù)圖4的步驟418被推進到序列303。在來自存儲器地址180H的第四載入之上,偏移OOOllOb會比先前偏移OOOOllb大3,使得步幅為+3,該步幅依據(jù)步驟418被推進到序列303。在來自存儲器地址ICOH的第五載入之上,偏移OOOl I Ib會比先前偏移0001 IOb大I,使得步幅為+1,該步幅依據(jù)步驟418被推進到序列303。因此,在來自存儲器地址ICOH的載入要求被步幅預測器140處理完后,前四個步幅的步幅歷史就依據(jù)圖4的操作被序列303所捕捉,使得其內(nèi)容為步幅4為+1,步幅3為+2,步幅2為+3,且步幅I為+1且為最新先前步幅307。載入要求數(shù)據(jù)流包括來自存儲器地址240H的第六載入,該載入為圖5實施例的現(xiàn)行載入。載入要求數(shù)據(jù)流也包括來自存儲器地址300H的第七載入要求,且尚未成為載入/儲存單元134或是高速緩存存儲器116/118,故尚未被步幅預測器140所檢測,因此之故,如上所述對存儲器地址300H的載入要求及其相應步幅并未清楚地顯示。當步幅預測器140檢測到存儲器地址240H之中的載入要求時,偏移OOlOOlb會比先前偏移OOOlllb大2,因此依據(jù)圖4的步驟404,減法器305計算現(xiàn)行步幅306為所顯示的+2。依據(jù)圖4的步驟408,比對單元332會通知配對分析邏輯單元334現(xiàn)行步幅306配對于序列303的步幅3 (M=3),并且依據(jù)圖4的步驟412,比對單元336會通知配對分析邏輯
單元424最新先前步幅307配對于序列303的步幅4 (M+l=4),使得配對分析邏輯單元424依據(jù)圖4的步驟414去控制多工器338選擇序列303中具有數(shù)值+3的步幅2 (M-1 = 2)作為復雜預測步幅326。因此,數(shù)據(jù)預取器124把數(shù)值為+3的復雜預取步幅326 (藉由多工器322的選擇為先前步幅324)加到現(xiàn)行載入要求偏移OOlOOlb (多個240H的位[11:6]),以產(chǎn)生300H的預取地址(在相應步幅預測器140的存儲器頁面之內(nèi))。數(shù)據(jù)預取器124依據(jù)步驟414要求總線接口單元122分配一高速緩存線到高速緩存存儲器116/118。如此一來,步幅預測器140根據(jù)存儲器地址240H中的載入要求預測+3的步幅,以預取存儲器地址300H中的高速緩存線到微處理器100的高速緩存存儲器116/118,該微處理器可在存儲器地址300H的載入要求形成之前將高速緩存線帶入高速緩存,此時載入要求將會命中(hit)高速緩存存儲器116/118。由于高速緩存漏失會導致系統(tǒng)存儲器的存取而花費相當長的延遲時間,造成微處理器100的執(zhí)行單元112的低使用率,故此為本發(fā)明的一種優(yōu)勢。此外,由上可知,序列303包括至少N個已索引的儲存元件310,用于排序至少N個步幅,其中N-I為多個載入要求的數(shù)據(jù)流的步幅模式的一期間,而步幅模式可包括所有不同數(shù)值的多個步幅,其中N至少為四。參考圖6,圖6是用以依據(jù)圖3中步幅預測器140說明圖4的操作方式。圖6實施例中的步幅數(shù)據(jù)流為+1、+2、+3、+7、+1、+2、+3,類似于圖5的實施例,除了圖6的步幅數(shù)據(jù)流包括在步幅模塊{+1、+2、+3}的兩實例(instance)之間的異常步幅+7。因此,現(xiàn)行步幅306沒有配對于任何步幅1-3,最新先前步幅307沒有配對于任何步幅2-4 ;因此,步幅預測器140無法預測下一個步幅。參考圖7,圖7是用以依據(jù)圖3的步幅預測器140說明圖4的操作方式。圖7實施例的步幅數(shù)據(jù)流相同于圖6的步幅數(shù)據(jù)流。然而,圖7的步幅預測器140的另一個實施例中具有序列303,并且序列303具有五個儲存元件310 (亦即包括索引5的第五個元件310)。因此,步幅預測器140能夠預測+3的下一個步幅,即使圖7的步幅數(shù)據(jù)流包括步幅模塊{+1、+2、+3}的兩的實例之間的異常步幅+7。更清楚地說,比對單元332比對步幅1-4而通知配對分析邏輯單元334現(xiàn)行步幅306配對于步幅4 (M=4),并且比對單元336對步幅2-5而通知配對分析邏輯單元424最新先前步幅307配對于步幅5 (M+l=5),使得配對分析邏輯單元424選擇具有數(shù)值+3的步幅3 (M-l=3)作為復雜預測步幅326。
可觀察到的是,圖7具有較長的序列303的實施例的優(yōu)勢為對于模式中的偏差形式或干擾的耐受性。一般而言,對于具有N個步幅的序列303,步幅預測器250能夠檢測到具有N-(P+1)期間的復雜步幅模式,該期間具有來自數(shù)據(jù)流內(nèi)第一模式結(jié)束實例與第二模式開始實例之間的P個模式偏差。從另一角度來說,步幅預測器140能夠檢測到在步幅歷史的開始重復的步輻模式,而該步幅歷史為已被序列303所捕捉的N-I步幅所構(gòu)成,這對于能夠執(zhí)行載入紀錄的微處理器100而言特別有助益,亦即,既然載入要求數(shù)據(jù)流步幅模式的誤差已被揭露,便可在程序順序之外的載入進行排序。參考圖8,圖8是用以說明步幅預測器140的操作方式。圖8實施例中的步幅數(shù)據(jù)流為+1、+2、+3、+4、+1、+2、+3、+4,亦即{+I、+2、+3、+4}步幅I旲式的兩個實例。圖8的步幅預測器140具有序列303,該序列具有六個儲存元件310,且不同于圖5到圖7的實施例,由于有三個步幅的比對而非兩個,所以只有在三個比對都配對才會做出預測。換言之,除了圖3中用以比對現(xiàn)行步幅306的比對單元332,以及圖3中用以比較最新先前步幅307的比對單元336,依據(jù)圖8中的步幅預測器140包括三個比對邏輯單元(未顯示)用以比對第二最新先前步幅以及步幅歷史,以提供比對結(jié)果給比對分析邏輯單元334,其中該第二最 新先前步幅儲存于序列303的索引2的儲存元件310中。該比對分析邏輯單元只有在現(xiàn)行步幅306配對于步幅M,最新先前步幅307配對于步幅M+1,以及第二最新先前步幅配對于步幅M+2時才會預測步幅M-I。更清楚地說,如圖8的實施例所描述的,現(xiàn)行步幅306配對于步幅4(M=4),最新現(xiàn)行步幅307配對于步幅5(M+1=5),以及第二最新先前步幅配對于步幅6 (M+2=6),使得配對分析邏輯單元424選擇具有數(shù)值+4的步幅3 (M-1 = 3)作為復雜預測步幅326。舉例而言,圖8的實施例所包括的額外的步幅比對提供更正確的步幅模式配對,因此減少了會污染高速緩存存儲器116/118的預取步幅模式。然而,也要注意的是,額外的步幅比對使得數(shù)據(jù)預取器124不去預取有益的高速緩存線,特別是在偏差步幅存在的時候。更進一步來說,額外的步幅比對會增加邏輯單元區(qū)域問題并產(chǎn)生時間(timing)問題。參考圖9,圖9是用以說明步幅預測器140的操作方式。圖9實施例中的步幅數(shù)據(jù)流為+1、+2、+3、+7、+1、+2、+3,類似于圖8的實施例,除了圖9的步幅數(shù)據(jù)流包括{+I、+2、+3、+4}步幅模式的兩個實例之間的異常步幅+7。然而,圖9的步幅預測器140具有序列303,該序列具有七個儲存的元件310,因此,步幅預測器140能夠預測下一個步幅+4,即使圖9的步幅數(shù)據(jù)流包括所顯示的{+I、+2、+3、+4}步幅模式的兩個實例之間的異常步幅+7。圖9中的實施例的優(yōu)勢在于包括圖8實施例的額外步幅的比對特性,因而增加復雜步幅模式檢測的正確性,以及對于兩個復雜步幅模式的實例之間的異常步幅的耐受能力,仍能檢測出復雜步幅模式且預測相應于復雜步幅模式用于預取的下一個步幅。也要注意的是,由于數(shù)據(jù)預取器124包括所描述的多種步幅預測器140的實施例,因此即使異常步幅或多個步幅位于模式之內(nèi)而非嚴密地位于模式的重復實例之間,還是能夠至少預取一些有益的高速緩存線,這些高速緩存線有關(guān)于呈現(xiàn)出復雜步幅模塊的載入要求數(shù)據(jù)流,雖然所預取的有益高速緩存線數(shù)量以及所需要的高速緩存線數(shù)量并非由數(shù)據(jù)預取器124所預取,并且會依循著模式期間以及序列303中的儲存元件310的數(shù)量而變動。雖然本發(fā)明的各種實施例已詳細揭示如上,然要理解的是,這些實施例是用于說明非用以限定本發(fā)明。對于計算機相關(guān)所屬領域的技術(shù)人員而言,各種形式與細節(jié)上的更動皆不脫離本發(fā)明的精神和權(quán)利要求。舉例來說,軟件能夠執(zhí)行此處所述裝置與方法的功能、制程、模型、模擬、描述和/或測試。通過一般程序語言(例如C、C++)、硬件描述語言(HDL)包括Verilog HDL、VHDL等或其他可用程序來加以實現(xiàn)。此等軟件可安裝于任何已知的計算機可用媒體例如磁盤、半導體、磁片或光盤片(例如CD-ROM、DVD-ROM等)、網(wǎng)絡、線路、無線或其他通訊媒體。所述的裝置與方法的實施例可能被包含于半導體知識產(chǎn)權(quán)核心,例如微處理器核心(例如HDL中的實施例或說明),并且移轉(zhuǎn)到集成電路生產(chǎn)中的硬件。此外,此處所述的裝置與方法可為結(jié)合硬件與軟件的實施例。因此,本發(fā)明的保護范圍并未局限于說明書內(nèi)所述特定實施例中,而應依據(jù)本發(fā)明的權(quán)利要求及其相關(guān)內(nèi)容。尤其本發(fā)明可能實施于一般計算機目的的微處理器裝置。最后,本領域的技術(shù)人員應了解到所揭示的概念及特定實施例可輕易作為其它結(jié)構(gòu)或制程的變更或設計基礎,以進行相同于本發(fā)明的目的。本領域的技術(shù)人員也可理解與上述等同的結(jié)構(gòu)或制程并未脫離本發(fā)明的精神和保護范圍內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)預取器,包括 一序列,包括多個已索引的儲存元件,這些儲存元件用以分別儲存多個已排序的步幅,這些步幅相關(guān)于來自一相同存儲器頁面的多個暫時相鄰的載入要求的一數(shù)據(jù)流,其中這些步幅的每一個皆為該數(shù)據(jù)流的兩相鄰的載入要求的存儲器地址的高速緩存線偏移間的差異;以及 一邏輯單元,用以 計算該數(shù)據(jù)流的一現(xiàn)行載入要求與一最新先前載入要求之間的一現(xiàn)行步幅,其中該現(xiàn)行步幅為該現(xiàn)行載入要求與該最新先前載入要求的存儲器地址的高速緩存線偏移的差巳升; 比對該現(xiàn)行步幅與該序列中的一步幅M ; 比對這些步幅中的一最新先前步幅與已排序的一步幅M+1,其中已排序的該步幅M+1舊于且相鄰于該序列中該步幅M ;以及 當該現(xiàn)行步幅配對于該序列中的該步幅M,且該最新先前步幅配對于已排序的該步幅M+1,則預取一高速緩存線進入該高速緩存存儲器中,其中該高速緩存線在該存儲器頁面中的偏移為該現(xiàn)行載入要求與該步幅M-I的總合,其中該步幅M-I新于且相鄰于該序列中的該步幅M。
2.如權(quán)利要求I所述的數(shù)據(jù)預取器,還包括多個所述的序列以及所述的邏輯單元,用以同時地預取多個存儲器頁面的多個高速緩存線至該高速緩存存儲器中。
3.如權(quán)利要求I所述的數(shù)據(jù)預取器,其中該序列包括至少N個已索引的儲存元件,用于排序至少N個步幅,其中N-I為這些載入要求的該數(shù)據(jù)流的該步幅模式的一期間,其中該步幅模式可包括所有不同數(shù)值的多個步幅,其中N至少為四。
4.如權(quán)利要求I所述的數(shù)據(jù)預取器,其中該序列包括至少N個已索引的儲存元件,用于儲存至少N個步幅,其中N-(P+1)為這些載入要求的該數(shù)據(jù)流的該步幅模式的一期間,其中該步幅模式可包括所有不同數(shù)值的多個步幅,其中P為異常于該步幅模式的多個步幅的數(shù)量,其中N至少為五。
5.如權(quán)利要求I所述的數(shù)據(jù)預取器,其中該現(xiàn)行步幅會被推進包含這些已索引的儲存元件的該序列中,且這些步幅中的一最舊步幅會被推出該序列。
6.如權(quán)利要求I所述的數(shù)據(jù)預取器,其中該邏輯單元用以將該高速緩存線從一系統(tǒng)存儲器預取到一微處理器之內(nèi)的該高速緩存存儲器中,其中該系統(tǒng)存儲器外部于該微處理器。
7.如權(quán)利要求I所述的數(shù)據(jù)預取器,其中該邏輯單元用以將該高速緩存線從一微處理器內(nèi)的一不同的高速緩存存儲器預取到該微處理器之內(nèi)的該高速緩存存儲器。
8.如權(quán)利要求I所述的數(shù)據(jù)預取器,其中該邏輯單元還用以排除這些暫時相鄰的載入要求的該數(shù)據(jù)流所相關(guān)的多個零數(shù)值步幅。
9.如權(quán)利要求I所述的數(shù)據(jù)預取器,其中該邏輯單元還用以 當判斷出所有這些儲存元件正儲存著多個有效步幅且一既定條件不存在時,將該序列的所有這些儲存元件標示為無效,其中上述既定條件為該現(xiàn)行步幅配對于該序列中的該步幅M且該最新先前步幅配對于已排序的該步幅M+1。
10.如權(quán)利要求9所述的數(shù)據(jù)預取器,其中該邏輯單元還用以在使得該序列的所有這些儲存元件為無效之后,將該現(xiàn)行步幅排序到該序列的前兩個儲存兀件中。
11.如權(quán)利要求I所述的數(shù)據(jù)預取器,其中該邏輯單元還用以 決定該現(xiàn)行載入要求所定義的該存儲器頁面為一新的存儲器頁面,并且對應地將該現(xiàn)行步幅排序到該序列的如兩個儲存兀件中。
12.一種預取數(shù)據(jù)至高速緩存存儲器的方法,包括 將多個步幅排序進入具有多個已索引的儲存元件的一序列之中,其中這些步幅相關(guān)于來自一相同存儲器頁面的多個暫時相鄰的載入要求的一數(shù)據(jù)流,其中這些步幅的每一個為該數(shù)據(jù)流中兩相鄰的載入要求的存儲器地址的高速緩存線偏移之間的差異; 計算該數(shù)據(jù)流的一現(xiàn)行載入要求與一最新先前載入要求之間的一現(xiàn)行步幅,其中該現(xiàn)行步幅為該現(xiàn)行載入要求與該最新先前載入要求的存儲器地址的高速緩存線偏移的一差B1升; 比對該現(xiàn)行步幅與該序列中的一步幅M ; 比對這些步幅中的一最新先前步幅與已排序的一步幅M+1,其中已排序的該步幅M+1舊于且相鄰于該序列中該步幅M ;以及 當該現(xiàn)行步幅配對于該序列中的該步幅M且該最新先前步幅配對于已排序的該步幅M+1,則將一高速緩存線預取進入一高速緩存存儲器中,其中該高速緩存線在該存儲器頁面中的偏移為該現(xiàn)行載入要求與該步幅M-I的總合,其中該步幅M-I新于且相鄰于該序列中的該步幅M。
13.如權(quán)利要求12所述的預取數(shù)據(jù)至高速緩存存儲器的方法,還包括 對多個存儲器頁面同時進行所述的排序、計算、比對與預取的步驟。
14.如權(quán)利要求12所述的預取數(shù)據(jù)至高速緩存存儲器的方法,其中排序這些步幅的步驟包括排序N個步幅,其中N-I為這些載入要求的該數(shù)據(jù)流的該步幅模式的一期間,其中該步幅模式可包括所有不同數(shù)值的多個步幅,其中N至少為四。
15.如權(quán)利要求12所述的預取數(shù)據(jù)至高速緩存存儲器的方法,其中排序這些步幅的步驟包括排序至少N個步幅,其中N-(P+1)為這些載入要求的該數(shù)據(jù)流的該步幅模式的一期間,其中該步幅模式可包括所有不同數(shù)值的多個步幅,其中P為異常于該步幅模式的多個步幅的數(shù)量,其中N至少為五。
16.如權(quán)利要求12所述的預取數(shù)據(jù)至高速緩存存儲器的方法,其中排序這些步幅的步驟包括將該現(xiàn)行步幅推進具有這些已索引的儲存元件的該序列中,且將這些步幅的最舊步幅推出該序列。
17.如權(quán)利要求12所述的預取數(shù)據(jù)至高速緩存存儲器的方法,其中將該高速緩存線預取進入該存儲器的步驟包括將該高速緩存線從一系統(tǒng)存儲器預取到一微處理器之內(nèi)的該高速緩存存儲器,其中該系統(tǒng)存儲器外部于該微處理器。
18.如權(quán)利要求12所述的預取數(shù)據(jù)至高速緩存存儲器的方法,其中將該高速緩存線預取進入該存儲器的步驟包括將該高速緩存線從一微處理器內(nèi)的一不同的高速緩存存儲器預取到該微處理器之內(nèi)的該高速緩存存儲器中。
19.如權(quán)利要求12所述的預取數(shù)據(jù)至高速緩存存儲器的方法,其中排序這些步幅的步驟包括排除這些暫時相鄰的載入要求的該數(shù)據(jù)流所相關(guān)的多個零數(shù)值步幅。
20.如權(quán)利要求12所述的預取數(shù)據(jù)至高速緩存存儲器的方法,還包括 當判斷出所有這些儲存元件正儲存著多個有效步幅且一既定條件不存在時,將該序列的所有這些儲存元件標示為無效,其中上述既定條件為該現(xiàn)行步幅配對于該序列中的該步幅M且該最新先前步幅配對于已排序的該步幅M+1。
21.如權(quán)利要求20所述的預取數(shù)據(jù)至高速緩存存儲器的方法,還包括 在使得該序列的所有這些儲存元件為無效之后,將該現(xiàn)行步幅排序到該序列的前兩個儲存兀件中。
22.如權(quán)利要求12所述的預取數(shù)據(jù)至高速緩存存儲器的方法,還包括 在排序這些步幅的步驟之前,決定該現(xiàn)行載入要求所定義的該存儲器頁面為一新的存儲器頁面;以及 當決定出該存儲器頁面為該新的存儲器頁面時,將該現(xiàn)行步幅排序到該序列的前兩個儲存元件中。
全文摘要
一種數(shù)據(jù)預取器及預取數(shù)據(jù)至高速緩存存儲器的方法。該數(shù)據(jù)預取器,包括具有多已索引的儲存元件的一序列,用以儲存多個已排序的步幅,這些步幅相關(guān)于來自一相同存儲器頁面的多個暫時相鄰的載入要求的一數(shù)據(jù)流;以及一邏輯單元,用以計算該數(shù)據(jù)流的一現(xiàn)行載入要求與一最新先前載入要求之間的一現(xiàn)行步幅。邏輯單元對比現(xiàn)行步幅以及序列中的一步幅M,并對比序列中的最新步幅以及已排序的一步幅M+1。當對比配對時,邏輯單元預取一高速緩存線,而該高速緩存線的偏移為該現(xiàn)行載入要求與該步幅M-1的總合。
文檔編號G06F12/08GK102937937SQ20121047957
公開日2013年2月20日 申請日期2012年11月22日 優(yōu)先權(quán)日2012年6月27日
發(fā)明者密瑞.羅曼尼-奧古斯汀, 約翰.M.吉爾 申請人:威盛電子股份有限公司