TWI428746B - 微處理器、預取資料至微處理器之快取記憶體階層的方法、以及相關之電腦程式產品 - Google Patents

微處理器、預取資料至微處理器之快取記憶體階層的方法、以及相關之電腦程式產品 Download PDF

Info

Publication number
TWI428746B
TWI428746B TW100110961A TW100110961A TWI428746B TW I428746 B TWI428746 B TW I428746B TW 100110961 A TW100110961 A TW 100110961A TW 100110961 A TW100110961 A TW 100110961A TW I428746 B TWI428746 B TW I428746B
Authority
TW
Taiwan
Prior art keywords
cache
data
cache memory
recent history
microprocessor
Prior art date
Application number
TW100110961A
Other languages
English (en)
Other versions
TW201137613A (en
Inventor
Rodney E Hooker
Colin Eddy
Original Assignee
Via Tech Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Tech Inc filed Critical Via Tech Inc
Publication of TW201137613A publication Critical patent/TW201137613A/zh
Application granted granted Critical
Publication of TWI428746B publication Critical patent/TWI428746B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Description

微處理器、預取資料至微處理器之快取記憶體階層的方法、以及相關之電腦程式產品
本發明與微處理器(microprocessors)領域有關,且特別有關於微處理器之資料預取(data prefetching)技術。
英特爾Core微處理器架構(microarchitecture)實現一硬體預取技術(hardware prefetcher,相關於資料快取單元預取器/Data Cache Unit Prefetcher),用以預取第一層資料快取記憶體(L1D cache)。藉由識別一快取列(cache line)的內容的圖樣(pattern),資料快取單元預取器預取接續而來下一條快取列至該第一層資料快取記憶體。若每一接續載入乃對應到較每一先前位址低的位址,則預取先前提及的接續快取列。
本發明一種實施方式提供一微處理器。該微處理器包括一第一與一第二快取記憶體,屬於該微處理器一快取記憶體階層的不同層級,其中,上述第二快取記憶體在該快取記憶體階層中的層級低於該第一快取記憶體。該微處理器亦包括一載入單元,用以接收關於一記憶體的載入操作。該微處理器包括一資料預取器,耦接於上述第一與第二快取記憶體。該資料預取器用於監測上述載入操作,並且將關於目前快取列的載入操作記錄為一近來歷史。該資料預取器也用於判斷該近來歷史是否顯示目前快取列的載入操作具有一明確方向。若該近來歷史顯示有上述明確方向存在,該資料預取器預取一條或多條快取列至該第一快取記憶體。若該近來歷史顯示無上述明確方向存在,該資料預取器預取一條或多條快取列至該第二快取記憶體。
本發明另一種實施方式則揭露一種方法,用於預取資料至一微處理器一快取記憶體階層中,其中該快取記憶體階層包括一第一快取記憶體以及一第二快取記憶體,上述第一與第二快取記憶體分屬該快取記憶體階層的不同層級,且該第二快取記憶體的層級低於該第一快取記憶體。該方法包括監測該微處理器的一載入單元所接收之關於一記憶體的載入操作,並且將關於目前快取列之載入操作記錄為一近來歷史。該方法更包括判斷該近來歷史是否顯示目前快取列之載入操作存在有一明確方向。當該近來歷史顯示有上述明確方向時,所揭露之方法包括預取一條或多條快取列至該第一快取記憶體。當該近來歷史沒有顯示上述明確方向時,所揭露之方法包括預取一條或多條快取列至該第二快取記憶體。
本發明更於另一種實施方式提供一電腦程式產品,載於至少一電腦可讀儲存媒體,以應用於電腦裝置中。該電腦程式產品包括電腦可讀程式碼,載於所述電腦可讀儲存媒體,用於操作一微處理器。該電腦可讀程式碼包括一第一程式碼,專為一第一以及一第二快取記憶體而設計。上述第一與第二快取記憶體分別屬於該微處理器一快取記憶體階層的不同層級,且該第二快取記憶體於該快取記憶體階層中的層級低於該第一快取記憶體。該電腦可讀程式碼更包括一第二程式碼,為一載入單元而設計,用於接收關於一記憶體的載入操作。該電腦可讀程式碼亦包括一第三程式碼,用於控制一資料預取器。該資料預取器耦接上述第一與第二快取記憶體,用以監測上述載入操作,並且將關於目前快取列的載入操作記錄為一近來歷史。該資料預取器更用於判斷該近來歷史是否顯示目前快取列之上述載入操作具有一明確方向。該資料預取器更用於在該近來歷史顯示有上述明確方向時預取一條或多條快取列至該第一快取記憶體,且於該近來歷史沒有顯示上述明確方向存在時預取一條或多條快取列至該第二快取記憶體。
本發明敘述一資料預取器,與英特爾的資料快取單元預取器相較,本發明所揭露的資料預取器更提供額外的預取模式。第一,所揭露之資料預取器會考慮是否存在有明確的載入方向(clear load direction);若不確定有明確的載入方向存在,則將資料預取至第二層快取記憶體(L2)而非第一層資料快取記憶體(L1D)。第二,所揭露之資料預取器將判斷同一快取列的載入之時間間距。若間距甚短(例如,於連續時脈週期中發生),資料預取器會預取數量較多的快取列(與其他狀況相較)。第三,所揭露之資料預取器會觀察該些載入的資料量。若資料量相當大,則資料預取器會預取數量較多的快取列(與其他狀況相較)。
參閱第1圖,其中提供一方塊圖,描述依照本發明一種實施方式所揭露之微處理器100,其中具有一資料預取器136。該微處理器100包括一指令快取記憶體(instruction cache)102;該指令快取記憶體102耦接一指令轉譯器(instruction translator)112;該指令轉譯器112耦接一暫存器別名表(register alias table,RAT)116;該暫存器別名表116耦接一保留站(reservation stations)118;且所述保留站118耦接一載入單元(load unit)122。所述保留站118發佈指令至該載入單元122(或至其他執行單元,未顯示於圖中),使之得以跳脫程式順序執行。一引退單元(retire unit,未顯示在圖中)包括一記錄緩衝器(recorder buffer),用以依據程式順序來引退指令。所述載入單元122自一第一層資料快取記憶體(L1D cache)132讀取資料。一第二層快取記憶體(L2 cache)支援該第一層資料快取記憶體132以及該指令快取記憶體102。該第二層快取記憶體134藉由一匯流排介面單元(bus interface unit)126讀、寫系統記憶體(system memory);該匯流排介面單元126為該微處理器100與一匯流排(bus,例如本地匯流排local bus或記憶體匯流排memory bus)的介面。微處理器100更包括一資料預取器136一或稱一預取單元prefetch unit─用以自系統記憶體預取資料至第二層快取記憶體134以及第一層資料快取記憶體132,以下詳細討論其內容。
資料預取器136包括一控制邏輯146。該控制邏輯146耦接且控制一歷史佇列(history queue)142、一快取列計數器(cache line counter)162、一時脈計數器(clock cycle counter)148以及一最新先前時脈暫存器(most recent previous clock cycle register)164。歷史佇列142將歷史記錄細項(entries)144以佇列方式記錄。每一歷史記錄細項144包括一位址欄位(an address field)152、一尺寸欄位(a size field)154、一連續性欄位(a consecutive filed)156、以及一方向性欄位(a direction field)158。位址欄位152儲存所對應之歷史記錄細項144所記載的載入操作(load operation)之載入位址(load address)。尺寸欄位154儲存該載入操作的尺寸(位元組數量)。連續性欄位156則標示被該資料預取器136所接收的該載入操作,是否與先前最近一次發生之載入操作位於連續時脈週期內。方向性欄位158則顯示該載入操作相對於先前最近一次發生之載入操作的方向。
自該資料預取器136開始追蹤目前快取列之存取,快取列計數器162計數該快取列之載入操作的總數量,以下對應第2圖方塊204討論之。時脈計數器148隨微處理器100的時脈增量。因此,在方塊204處理一載入操作的同時,該控制邏輯146對該時脈計數器148的取樣結果,可被用來指示相對於當下其他載入操作之新的該載入操作是在哪一個時脈週期被接收,並且,特別用於判斷該載入操作是否是在前一載入操作接收後的連續時脈週期中被接收,以設定歷史記錄細項144內的連續性欄位156。以下更於第2圖討論時脈計數器148以及最新先前時脈暫存器164的功用。
參閱第2圖,其中以一流程圖描述第1圖微處理器100的操作。該流程始於方塊202。
在方塊202,一個新的載入操作自載入單元122傳遞至第一層資料快取記憶體132。該載入操作明確指示一載入位址,以指示所欲載入之資料於記憶體內的位址,此外,載入操作也明確指示有所欲載入之資料的尺寸,例如,1、2、4、8或16位元組。流程圖接著來到方塊204。
在方塊204中,資料預取器136窺視該第一層資料快取記憶體132,以偵測該次新的載入操作以及其相關資訊。根據偵測結果,資料預取器136在歷史佇列142配置且填入一歷史記錄細項144。特別是,該控制邏輯146在位址欄位152填入上述載入位址,並且在尺寸欄位154填入載入資料的尺寸。此外,控制邏輯146讀取該時脈計數器148以及該最新先前時脈暫存器164的值,並且比較之。若時脈計數器148目前的值較最新先前時脈暫存器164的值多1,控制邏輯146會設定連續性欄位156指示此次新的載入操作為先前一次載入操作的連續時脈週期內發生,否則,控制邏輯146會清除該連續性欄位156的內容,以指示此次新的載入操作並非在先前一次載入操作的連續時脈週期內發生。在另一種實施方式中,控制邏輯146是在時脈計數器148目前的值較最新先前時脈暫存器164的值多N時設定該連續性欄位156指示載入操作為連續時脈週期內發生,其中,N為一預設值;反之,控制邏輯146會清除該連續性欄位156。在一種實施方式中,N值為2。然而,預設值N為一設計參數,可基於多種參數而設定,例如第一層資料快取記憶體132以及/或第二層快取記憶體134的尺寸。在一種實施方式中,該預設值N可經由微處理器100的型號特有暫存器(model specified register,MSR)來設定。在讀取最新先前時脈暫存器164的內容後,控制邏輯146會將其自時脈計數器148所讀取到的值用來更新最新先前時脈暫存器164的內容。此外,控制邏輯146會將此次新的載入操作之載入位址與歷史佇列142所記錄的最新一次先前載入操作之位址欄位152比較,並據以填寫此次新的載入操作之方向性欄位158,以指示此次新的載入操作相對於最新一次先前載入操作的方向。此外,控制邏輯可藉由設定歷史記錄細項144內的一有效位元(valid bit),標示該歷史記錄細項144為有效。此外,控制邏輯146更增量該快取列計數器162。此外,在配置、填寫以及有效化所配置之歷史記錄細項144、以及增量該快取列計數器162之前,控制邏輯146會判斷此次新的載入操作的載入位址的位置是否與歷史佇列142中其他載入操作位於同一快取列;若非,則控制邏輯146使歷史佇列142中的所有歷史記錄細項144為無效,以開始為此次新的載入操作所涉及的新的快取列進行記錄,且清除該快取列計數器162的值。圖2流程則進入下一方塊206。
在方塊206中,資料預取器136辨識此次新的載入操作所涉及的快取列內的一載入存取圖樣(load access pattern)。在一種實施方式中,預取器136於快取列計數器162(於方塊204增量)大於或等於一預設值P時辨識目前快取列中的一載入存取圖樣。在一種實施方式中,P值為4。然而,預設值P為一設計參數,可基於多種變因而決定,例如,第一層資料快取記憶體132以及/或第二層快取記憶體134的尺寸。在一種實施方式中,預設值P可利用微處理器的型號特有暫存器(model specified register,MSR)進行設定。此外,也可以其他方式偵測目前快取列中的一載入存取圖樣。圖2流程接著進入方塊208。
在方塊208,資料預取器136判斷該載入存取圖樣是否具有明確的方向。在一種實施方式中,若最新的至少D次載入操作之歷史記錄細項144的方向性欄位158顯示同樣方向,則資料預取器136會判斷有明確方向存在,其中D為預設值。在一種實施方式中,預設值D為3。然而,預設值D為設計參數,可基於各種變因─例如,第一層資料快取記憶體132以及/或第二層快取記憶體134的尺寸而調整。在一種實施方式中,預設值D可利用微處理器100的一型號特有暫存器(MSR)進行設定。另一種可用的實施方式將於以下第3圖討論,其中採用另外一種方式判斷是否有明確方向存在。若資料預取器136判斷有一明確方向存在,圖2流程圖進入判斷方塊218;反之,則進入另一個判斷方塊212。
在判斷方塊212中,資料預取器136判斷目前快取列的載入操作之資料量是否過大。在一種實施方式中,若有效的歷史記錄細項144的尺寸欄位154之統計結果顯示,相關載入操作共具有至少資料量Y,則資料預取器136會判定該等載入操作為大資料量,其中Y為預設值。在一種實施方式中,預設值Y為8位元組。然而,預設值Y為一設計參數,可基於多種變因─例如,第一層資料快取記憶體132以及/或第二層快取記憶體134的尺寸而決定。在一種實施方式中,預設值Y可利用微處理器100的一型號特有暫存器(MSR)進行設定。在另一種實施方式中,資料預取器136可於該等載入操作中大多數具有至少資料量Y時,判定該等載入操作為大資料量;採用手段為:以兩計數器追蹤大資料量載入操作、與非大資料量載入操作之數量,並比較之;可於方塊204進行之。若該等載入操作為大資料量,則圖2流程進入方塊214;否則,圖2流程進入方塊216。
在方塊214,資料預取器136預取接續在後的兩條快取列至第二層快取記憶體134。由於判斷方塊208不存在有明確方向,資料預取器136乃預取資料至第二層快取記憶體134而非第一層資料快取記憶體132;理由是,預取的資料有較大的機會為非必要,因此,資料預取器136不傾向將潛在可能會用到的資料放置於第一層資料快取記憶體132。圖2流程於方塊214結束。
在方塊216,資料預取器136僅預取接續在後的一條快取列至第二層快取記憶體134。圖2流程於方塊216結束。
在判斷方塊218中,資料預取器136判斷與目前快取列相關之該等載入操作是否是在連續時脈週期內被接收。若載入是在連續時脈週期內被接收,則表示程式正以極快速度掃描記憶體,因此資料預取器136必須預取更多的資料,以領先程式進行的速度,例如,在程式進行請求之前,在第一層資料快取記憶體132中預先準備有後續快取列的資料。在一種實施方式中,若關於目前快取列的最新至少C次載入操作之歷史記錄細項144的連續性欄位156都有被標示,則資料預取器136會視該等載入操作是在連續時脈週期內被接收,其中C為預設值。在一種實施方式中,預設值C為3,然而,預設值C乃一設計參數,可基於各種變因─例如,第一層資料快取記憶體132以及/或第二層快取記憶體134的尺寸─而決定。在一種實施方式中,預設值C可藉微處理器100的一型號特有暫存器(MSR)設定。若載入於連續時脈週期所發生,圖2流程進入判斷方塊232;反之,則流程進入判斷方塊222。
在判斷方塊222中,資料預取器136判斷關於目前快取列的該等載入操作是否為大資料量;詳細技術與上述判斷方塊212類似。若為大資料量,圖2流程進入方塊224;反之,流程進入方塊226。
在方塊224中,資料預取器136循方塊208所判斷之明確方向,預取接續的兩條快取列至第一層資料快取記憶體132。由於判斷方塊208判定有明確方向存在,資料預取器136會將資料預取至第一層資料快取記憶體132而非第二層快取記憶體134;理由是,預取的資料極有可能確實被使用到,預取器136會傾向將有可能用到的資料放置在第一層資料快取記憶體132。圖2流程結束於方塊224。
在方塊226中,資料預取器136會循方塊208所判斷的明確方向預取接續的一條快取列至第一層資料快取記憶體132。圖2流程結束於方塊226。
在判斷方塊232中,資料預取器136會判斷目前快取列的該等載入操作是否為大資料量;詳細內容與前述判斷方塊212內容類似。若載入為大資料量,圖2流程進入方塊234;反之,圖2流程進入方塊236。
在方塊234,資料預取器136會循方塊208所判斷出的明確方向預取接續的三條快取列至第一層資料快取記憶體132。圖2流程結束於方塊234。
在方塊236,資料預取器136會循方塊208所判斷出的明確方向預取接續的兩條快取列至第一層資料快取記憶體132。圖2流程結束於方塊236。
接著討論第3圖技術,其中以方塊圖描述本發明另外一種實施方式所實現的微處理器100,該微處理器100具有一資料預取器136。圖3的資料預取器136與圖1所介紹的資料預取器136相似,且也以類似圖2的方式操作,以下討論兩種實施方式的不同點。關於圖2方塊204所作的歷史記錄更新、以及判斷方塊208所作的明確方向判定,第3圖資料預取器136有作以下調整。在圖3實施例中,歷史佇列142的歷史記錄細項144並不包括方向性欄位158。此外,資料預取器136包括一最低指標暫存器(min pointer register)304、以及一最高指標暫存器(max pointer register)306,由控制邏輯146控制,分別指向目前快取列內自資料預取器136開始追蹤目前快取列之讀取後所發生過的最低與最高位址變量。資料預取器136更包括一最低指標變化計數器308以及一最高指標變化計數器312,用以自資料預取器136開始追蹤目前快取列之讀取後,分別計數上述最低指標暫存器304與最高指標暫存器306之變化次數。以下討論如何以圖3所揭露之實施例實現圖2方塊204所述之資料預取器136操作。藉由判斷上述最低指標變化計數器308以及最高指標變化計數器312之間的差值是否大於一預設值,控制邏輯146判斷是否有一明確方向存在。在一種實施方式中,該預設值為1;然而,該預設值為一設計參數,可基於多種變數─例如,第一層資料快取記憶體132以及/或第二層快取記憶體134的尺寸─而決定。在一種實施方式中,該預設值可利用微處理器100的型號特有暫存器(MSR)進行設定。若該最低指標變化計數器308的值較該最高指標變化計數器312的值高出上述預設值以上,則判定出來的明確方向為向下;若該最高指標變化計數器312的值較該最低指標變化計數器308的值高出上述預設值以上,則判定出來的明確方向為向上;其餘的情況,則判定沒有明確方向。此外,若此次新的載入操作之載入位址不若歷史佇列142所記載其他載入操作指向同樣的快取列,則控制邏輯146清除最高指標變化計數器312以及最低變化指標計數器308。
現在參考第4圖,其中以流程圖描述圖3實施例之資料預取器136如何實現圖2方塊204之動作。圖4流程起於方塊404。
在判斷方塊404,控制邏輯146判斷新的載入位址─特別是指目前快取列之最新載入位址偏量─是否大於最高指標暫存器306的值。若是,則流程進入方塊406;其餘情況,則流程進入判斷方塊408。
在方塊406,控制邏輯146以新的載入位址偏量更新最高指標暫存器306,並且增量該最高指標變化計數器312。在這種情況下,圖4流程結束於方塊406。
在判斷方塊408,控制邏輯146判斷目前快取列之最新載入位址偏量是否少於最低指標暫存器304的值。若是,圖4流程進入方塊412;若為其他狀況,則結束圖4流程。
在方塊412,控制邏輯146以最新的載入位址偏量更新最低指標暫存器304,並且增量該最低指標變化計數器308。圖4流程並於方塊412結束。
縱然以上實施例主要討論載入操作,在其他實施方式中,也可將所揭露之預取技術作適當改良,以應用於儲存操作(store operations)中。
雖然以上敘述本發明多種實施方式,必須聲明的是,上述內容乃本技術的部分應用例子,並非用來限定本發明的範圍。熟知電腦技術領域者可依循本發明特徵,以現有技術另外發展出許多變形。例如,可以軟體方式實現本案所揭露的內容,例如,所揭露之設備或方法之功能、製作、模型化、模擬、說明以及/或測試。上述軟體可採用常見的程式語言(例如,C、C++)、硬體描述語言(hardware description language,HDL)包括Verilog HDL、VHDL…等或其他可用的程式語言。上述軟體可載於現有的任何電腦儲存媒體,例如,磁記錄裝置(magnetic tape)、半導體(semiconductor)、磁碟(magnetic disk)、或光碟(optical disc、如CD-ROM、DVD-ROM等),也可載於網路、有線系統、或其他通訊媒體。本發明所揭露的各種裝置與方法可由一半導體智慧財產權核心─例如一微處理器核心,可由硬體描述語言實現─保護,且可被轉換為硬體型式,以積體電路方式製作。此外,所揭露之裝置與方法也可由硬體與軟體共同設計實現。因此,本發明不應受上述任何實施方式所限定,應當根據申請專利範圍的內容作解讀。特別是,本發明可被實現於一微處理器中,實現一般常用的電腦。本發明技術領域人員有可能基於本發明,以所揭露的概念以及所述之特殊實施方式為基礎,設計或調整其他結構,以在不偏離申請專利範圍所界定之內容的前提下,發展與本發明具有同樣目的的技術。
100...微處理器
102...指令快取記憶體
112...指令轉譯器
116...暫存器別名表
118...保留站
122...載入單元
126...匯流排介面單元
132...第一層資料快取記憶體
134...第二層快取記憶體
136...資料預取器
142...歷史佇列
144...歷史記錄細項
146...控制邏輯
148...時脈計數器
152...位址欄位
154...尺寸欄位
156...連續性欄位
158...方向性欄位
162...快取列計數器
164...最新先前時脈
304...最低指標
306...最高指標
308...最低指標變化計數器
以及
312...最高指標變化計數器
第1圖圖解一方塊圖,描述本發明所揭露的一種微處理器,其中具有一資料預取器;
第2圖為一流程圖,描述圖1微處理器的操作;
第3圖為一方塊圖,描述本發明所揭露的另一種微處理器,其中具有一資料預取器;且
第4圖為一流程圖,描述圖3實施例之資料預取器如何實現圖2步驟204之操作。
100...微處理器
102...指令快取記憶體
112...指令轉譯器
116...暫存器別名表
118...保留站
122...載入單元
126...匯流排介面單元
132...第一層資料快取記憶體
134...第二層快取記憶體
136...資料預取器
142...歷史佇列
144...歷史記錄細項
146...控制邏輯
148...時脈計數器
152...位址欄位
154...尺寸欄位
156...連續性欄位
158...方向性欄位
162...快取列計數器
164...最新先前時脈

Claims (37)

  1. 一種微處理器,包括:一第一快取記憶體以及一第二快取記憶體,分別為該微處理器一快取記憶體階層的不同層級,其中,該第二快取記憶體在該快取記憶體階層中的層級低於該第一快取記憶體;一載入單元,用以接收關於一記憶體的載入操作;以及一資料預取器,耦接上述第一與第二快取記憶體,用以:監控上述載入操作,並且記錄關於目前快取列之上述載入操作的一近來歷史;判斷該近來歷史是否顯示關於目前快取列的上述載入操作具有一明確方向;以及於該近來歷史顯示上述明確方向存在時,預取一或多條快取列至該第一快取記憶體;且於該近來歷史不顯示具有上述明確方向時,預取一或多條快取列至該第二快取記憶體。
  2. 如申請專利範圍第1項所述之微處理器,其中,預取至該第一快取記憶體的上述一或多條快取列為依循該明確方向接續目前快取列的一或多條快取列。
  3. 如申請專利範圍第2項所述之微處理器,其中,預取至該第二快取記憶體的上述一或多條快取列為接續於目前快取列之後的一或多條快取列。
  4. 如申請專利範圍第1項所述之微處理器,其中,若 最近發生的至少D次載入操作為同一方向,上述近來歷史顯示有上述明確方向存在,其中D為大於1的一預設整數。
  5. 如申請專利範圍第4項所述之微處理器,其中D為使用者設定。
  6. 如申請專利範圍第1項所述之微處理器,其中,該近來歷史包括關於目前快取列之上述載入操作的一最低位址偏量以及一最高位址偏量,並且更包括計數上述最低位址偏量之變動的一最低計數、以及計數上述最高位址偏量之變動的一最高計數,所作計數乃隨該資料預取器開始記錄目前快取列之上述載入操作為上述近來歷史開始,其中,當上述最低與最高計數之差距大於一預設值時,上述近來歷史顯示一明確方向存在。
  7. 如申請專利範圍第6項所述之微處理器,其中該預設值為使用者設定。
  8. 如申請專利範圍第1項所述之微處理器,其中,該資料預存器更用於判斷該近來歷史是否顯示上述載入操作為大資料量,其中,若上述載入操作為大資料量,該資料預取器所欲取的快取列數量會較非大資料量時多。
  9. 如申請專利範圍第8項所述之微處理器,其中,若目前快取列所有上述載入操作的資料量至少為Y位元組,該近來歷史顯示上述載入操作為大資料量,其中Y為一預設值。
  10. 如申請專利範圍第9項所述之微處理器,其中該預設值Y為使用者設定參數。
  11. 如申請專利範圍第8項所述之微處理器,其中, 若上述載入操作中大多數的資料量至少為Y位元組,該近來歷史顯示上述載入操作為大資料量,其中Y為一預設值。
  12. 如申請專利範圍第8項所述之微處理器,其中,當該近來歷史沒有顯示該明確方向存在時,若上述載入操作為大資料量,則該資料預取器會預取接續目前快取列之後的兩條快取列至該第二快取記憶體,若上述載入操作非大資料量,則該資料預取器會預取接續目前快取列之後的一條快取列至該第二快取記憶體。
  13. 如申請專利範圍第1項所述之微處理器,其中,於該近來歷史顯示有上述明確方向時,該資料預取器更判斷該近來歷史是否顯示上述載入操作乃於連續時脈週期內所接收,其中,若上述載入操作乃於連續時脈週期內所接收,則由該資料預取器預取至該第一快取記憶體的快取列數量會多於非於連續時脈週期內所接收的狀況。
  14. 如申請專利範圍第13項所述之微處理器,其中,若目前快取列最新的至少C次上述載入操作是於前一次載入操作的連續時脈週期內所接收,該近來歷史顯示目前快取列的所有上述載入操作乃於連續時脈週期中所接收,其中,C為大於1的一預設整數。
  15. 如申請專利範圍第14項所述之微處理器,其中該預設整數C為使用者參數。
  16. 如申請專利範圍第13項所述之微處理器,其中該資料預取器更用於判斷該近來歷史是否顯示上述載入操作為大資料量,其中,在具有明確方向的狀況下,若上述載入操作為大資料量,則預取至該第一快取記憶體的快取列 數量會多於非大資料量的狀況。
  17. 如申請專利範圍第16項所述之微處理器,更包括:在具有明確方向的狀況下,當上述載入操作乃於連續時脈週期中所接收、且為大資料量時,該資料預取器會預取依循該明確方向接續目前快取列的三條快取列至該第一快取記憶體;且在具有明確方向的狀況下,當上述載入操作乃於連續時脈週期中所接收、但非大資料量時,該資料預取器會預取依循該明確方向接續目前快取列的兩條快取列至該第一快取記憶體。
  18. 如申請專利範圍第17項所述之微處理器,更包括:在具有明確方向的狀況下,當上述載入操作並非在連續時脈週期中所接收、但為大資料量時,該資料預取器會預取依循該明確方向接續目前快取列的兩條快取列至該第一快取記憶體;且在具有明確方向的狀況下,當上述載入操作並非在連續時脈週期中所接收、且非大資料量時,該資料預取器會預取依循該明確方向接續目前快取列的一條快取列至該第一快取記憶體。
  19. 如申請專利範圍第1項所述之微處理器,其中該資料預取器會抑制本身預取一條或多條快取列的操作,除非該近來歷史顯示目前快取列之上述載入操作的數量至少有P次,其中P為預設值。
  20. 如申請專利範圍第19項所述之微處理器,其中P為使用者設定參數。
  21. 一種預取資料至一微處理器之快取記憶體階層的方法,其中該快取記憶體階層包括屬於不同階層的一第一快取記憶體以及一第二快取記憶體,其中該第二快取記憶體在該快取記憶體階層的層級低於該第一快取記憶體,該方法包括:監測該微處理器的一載入單元所接收之關於一記憶體的載入操作,並且記錄關於目前快取列之上述載入操作為一近來歷史;判斷該近來歷史是否顯示目前快取列的上述載入操作具有一明確方向;且於該近來歷史顯示有上述明確方向時,預取一條或多條快取列至該第一快取記憶體,並且於該近來歷史無顯示上述明確方向時,預取一條或多條快取列至該第二快取記憶體。
  22. 如申請專利範圍第21項所述之方法,其中,預取至該第一快取記憶體的上述一條或多條快取列乃依循該明確方向接續目前快取列的一條或多條快取列。
  23. 如申請專利範圍第22項所述之方法,其中,預取至該第二快取記憶體的上述一條或多條快取列乃接續在目前快取列之後的一條或多條快取列。
  24. 如申請專利範圍第21項所述之方法,其中,若最新發生的至少D次載入操作為同樣方向,該近來歷史顯示上述明確方向存在,其中,D為大於1的一預設整數。
  25. 如申請專利範圍第21項所述之方法,其中,該近來歷史包括目前快取列上述載入操作的一最低位址偏量以 及一最高位址偏量、且包括計數該最低位址偏量之變化的一最低計數、以及計數該最高位址偏量之變化的一最高計數,所述計數乃自目前快取列上述載入操作被記錄在該近來歷史開始,其中,若上述最低與最高計數的差值大於一預設值,該近來歷史顯示有上述明確方向存在。
  26. 如申請專利範圍第21項所述之方法,更包括:判斷該近來歷史是否顯示上述載入操作為大資料量,其中,若上述載入操作為大資料量,則預取之快取列數量會大於非大資料量的狀況。
  27. 如申請專利範圍第26項所述之方法,其中,若所有上述載入操作的資料量為至少Y位元組,該近來歷史顯示上述載入操作為大資料量,其中Y為一預設值。
  28. 如申請專利範圍第26項所述之方法,其中,若大多數上述載入操作的資料量為至少Y位元組,該近來歷史顯示上述載入操作為大資料量,其中Y為一預設值。
  29. 如申請專利範圍第26項所述之方法,其中,若該近來歷史無顯示有上述明確方向,上述預取一條或多條快取列至該第二快取記憶體的步驟包括於上述載入操作為大資料量時預取接續目前快取列之後的兩條快取列至該第二快取記憶體,並於其他狀況下預取接續目前快取列之後的一條快取列至該第二快取記憶體。
  30. 如申請專利範圍第21項所述之方法,更包括:於該近來歷史顯示有上述明確方向時,判斷該近來歷史是否顯示上述載入操作是在連續時脈週期內所接收,其中,若上述載入操作是於連續時脈週期中所接收,預取至 該第一快取記憶體的快取列數量會多於非於連續時脈週期中所接收的狀況。
  31. 如申請專利範圍第30項所述之方法,其中,若目前快取列最新的至少C次上述載入操作是於前一次載入操作的連續時脈週期內所接收,該近來歷史顯示目前快取列的所有上述載入操作乃於連續時脈週期中所接收,其中,C為大於1的一預設整數。
  32. 如申請專利範圍第30項所述之方法,更包括:判斷該近來歷史是否顯示上述載入操作為大資料量,其中,在具有明確方向的狀況下,若上述載入操作為大資料量,則預取至該第一快取記憶體的快取列數量會多於非大資料量的狀況。
  33. 如申請專利範圍第32項所述之方法,更包括:在具有明確方向的狀況下,於上述載入操作乃於連續時脈週期內所接收、且為大資料量時,預取依循該明確方向接續目前快取列的三條快取列至該第一快取記憶體;在具有明確方向的狀況下,於上述載入操作乃於連續時脈週期內所接收、但非大資料量時,預取依循該明確方向接續目前快取列的兩條快取列至該第一快取記憶體。
  34. 如申請專利範圍第33項所述之方法,更包括:在具有明確方向的狀況下,於上述載入操作非於連續時脈週期內所接收、但為大資料量時,預取依循該明確方向接續目前快取列的兩條快取列至該第一快取記憶體;以及在具有明確方向的狀況下,於上述載入操作非於連續 時脈週期內所接收、且非大資料量時,預取依循該明確方向接續目前快取列的一條快取列至該第一快取記憶體。
  35. 如申請專利範圍第21項所述之方法,更包括:抑制上述預取一條或多條快取列的步驟,除非該近來歷史顯示目前快取列的載入操作之數量為至少P次,其中P為一預設值。
  36. 一種電腦程式產品,載於至少一電腦可讀儲存媒體,應用於一電腦裝置,該電腦程式產品包括:載於上述電腦可讀儲存媒體的電腦可讀程式碼,用以操作一微處理器,該電腦可讀程式碼包括:第一程式碼,用以操作一第一快取記憶體以及一第二快取記憶體,上述第一與第二快取記憶體分屬該微處理器一快取記憶體階層的不同層級,其中該第二快取記憶體在該快取記憶體階層中的層級低於該第一快取記憶體;第二程式碼,用以操作一載入單元,以接收關於一記憶體的載入操作;以及第三程式碼,用以操作一資料預取器,該資料預取器與上述第一與第二快取記憶體耦接,且用於:監測上述載入操作並將關於目前快取列的上述載入操作記錄為一近來歷史;判斷該近來歷史是否顯示目前快取列的上述載入操作存在有一明確方向;以及於該近來歷史顯示該明確方向存在時,預取一條或多條快取列至該第一快取記憶體;且 於該近來歷史無顯示有該明確方向時,預取一條或多條快取列至該第二快取記憶體。
  37. 如申請專利範圍第36項所述之電腦程式產品,其中至少一個上述電腦可讀儲存媒體是由磁碟、磁帶或其他磁性、光學或電子式儲存媒體、以及網路、有線或其他通訊連結之儲存媒體內擇一實現。
TW100110961A 2010-04-27 2011-03-30 微處理器、預取資料至微處理器之快取記憶體階層的方法、以及相關之電腦程式產品 TWI428746B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US32853010P 2010-04-27 2010-04-27
US12/869,386 US8291172B2 (en) 2010-04-27 2010-08-26 Multi-modal data prefetcher

Publications (2)

Publication Number Publication Date
TW201137613A TW201137613A (en) 2011-11-01
TWI428746B true TWI428746B (zh) 2014-03-01

Family

ID=44816765

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100110961A TWI428746B (zh) 2010-04-27 2011-03-30 微處理器、預取資料至微處理器之快取記憶體階層的方法、以及相關之電腦程式產品

Country Status (2)

Country Link
US (1) US8291172B2 (zh)
TW (1) TWI428746B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303604B2 (en) 2015-04-29 2019-05-28 Google Llc Data caching

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US8645631B2 (en) 2010-03-29 2014-02-04 Via Technologies, Inc. Combined L2 cache and L1D cache prefetcher
US8762649B2 (en) 2010-03-29 2014-06-24 Via Technologies, Inc. Bounding box prefetcher
US8719510B2 (en) 2010-03-29 2014-05-06 Via Technologies, Inc. Bounding box prefetcher with reduced warm-up penalty on memory block crossings
US8977819B2 (en) 2010-09-21 2015-03-10 Texas Instruments Incorporated Prefetch stream filter with FIFO allocation and stream direction prediction
US8560778B2 (en) 2011-07-11 2013-10-15 Memory Technologies Llc Accessing data blocks with pre-fetch information
US9442759B2 (en) * 2011-12-09 2016-09-13 Nvidia Corporation Concurrent execution of independent streams in multi-channel time slice groups
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9164804B2 (en) 2012-06-20 2015-10-20 Memory Technologies Llc Virtual memory module
US9116820B2 (en) 2012-08-28 2015-08-25 Memory Technologies Llc Dynamic central cache memory
US9110811B2 (en) 2012-09-18 2015-08-18 Oracle International Corporation Prefetching method and apparatus
US9620181B2 (en) 2013-01-31 2017-04-11 Hewlett Packard Enterprise Development Lp Adaptive granularity row-buffer cache
US9251083B2 (en) 2013-03-11 2016-02-02 Via Technologies, Inc. Communicating prefetchers in a microprocessor
US9483406B2 (en) 2013-03-11 2016-11-01 Via Technologies, Inc. Communicating prefetchers that throttle one another
US10073785B2 (en) * 2016-06-13 2018-09-11 Advanced Micro Devices, Inc. Up/down prefetcher
US10445241B2 (en) * 2018-03-06 2019-10-15 Arm Limited Prefetching using offset data to access a pointer within a current data element for use in prefetching a subsequent data element
GB2588206B (en) * 2019-10-15 2022-03-16 Advanced Risc Mach Ltd Co-scheduled loads in a data processing apparatus

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5003471A (en) 1988-09-01 1991-03-26 Gibson Glenn A Windowed programmable data transferring apparatus which uses a selective number of address offset registers and synchronizes memory access to buffer
US7177985B1 (en) * 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7238218B2 (en) * 2004-04-06 2007-07-03 International Business Machines Corporation Memory prefetch method and system
US8103832B2 (en) 2007-06-26 2012-01-24 International Business Machines Corporation Method and apparatus of prefetching streams of varying prefetch depth
US7890702B2 (en) * 2007-11-26 2011-02-15 Advanced Micro Devices, Inc. Prefetch instruction extensions
US8140768B2 (en) 2008-02-01 2012-03-20 International Business Machines Corporation Jump starting prefetch streams across page boundaries
US7958317B2 (en) * 2008-08-04 2011-06-07 International Business Machines Corporation Cache directed sequential prefetch
US8762649B2 (en) 2010-03-29 2014-06-24 Via Technologies, Inc. Bounding box prefetcher
US8719510B2 (en) 2010-03-29 2014-05-06 Via Technologies, Inc. Bounding box prefetcher with reduced warm-up penalty on memory block crossings
US8645631B2 (en) 2010-03-29 2014-02-04 Via Technologies, Inc. Combined L2 cache and L1D cache prefetcher

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303604B2 (en) 2015-04-29 2019-05-28 Google Llc Data caching
US10884928B2 (en) 2015-04-29 2021-01-05 Google Llc Data caching

Also Published As

Publication number Publication date
TW201137613A (en) 2011-11-01
US8291172B2 (en) 2012-10-16
US20110264860A1 (en) 2011-10-27

Similar Documents

Publication Publication Date Title
TWI428746B (zh) 微處理器、預取資料至微處理器之快取記憶體階層的方法、以及相關之電腦程式產品
US20210397346A1 (en) Dynamic cache management in hard drives
TWI534621B (zh) 預取單元、資料預取方法、電腦程式產品以及微處理器
KR100692342B1 (ko) 캐시 필 버퍼 적중들에 기초하여 사전 인출하기 위한 방법및 장치
JP4067887B2 (ja) プリフェッチを行う演算処理装置、情報処理装置及びそれらの制御方法
KR101973731B1 (ko) 버퍼 충만도에 기초한 캐시에 대한 프리페치
US20140108740A1 (en) Prefetch throttling
US11403525B2 (en) Using reinforcement learning to dynamically tune cache policy parameters
US20070186048A1 (en) Cache memory and control method thereof
US9489203B2 (en) Pre-fetching instructions using predicted branch target addresses
JP2017117179A (ja) 情報処理装置、キャッシュ制御プログラムおよびキャッシュ制御方法
KR20190038835A (ko) 데이터 캐시 영역 프리페처
CN109196487B (zh) 一种在处理系统中预取数据的方法和系统
US8966185B2 (en) Cache memory prefetching
CN107038127A (zh) 应用系统及其缓存控制方法和装置
CN100445944C (zh) 控制电路以及控制方法
JP7038656B2 (ja) キャッシュへのアクセス
CN102156628B (zh) 微处理器、预取数据至微处理器的快取存储器阶层的方法
JP4095152B2 (ja) 画像管理装置およびその方法、画像管理システム、記憶媒体
US20070226382A1 (en) Method for improving direct memory access performance
US7805572B2 (en) Cache pollution avoidance
JP2006172234A (ja) システム性能評価方法およびシステム性能評価装置
JP2010224643A (ja) 磁気記憶装置、磁気記憶装置の処理条件設定方法および磁気記憶装置の処理条件設定プログラム
CN106326146B (zh) 检查高速缓存是否命中的方法
JP2005031829A (ja) ネットワークファイルサーバにおける先読み処理