TWI417723B - 用於快取線替換之方法 - Google Patents

用於快取線替換之方法 Download PDF

Info

Publication number
TWI417723B
TWI417723B TW096100134A TW96100134A TWI417723B TW I417723 B TWI417723 B TW I417723B TW 096100134 A TW096100134 A TW 096100134A TW 96100134 A TW96100134 A TW 96100134A TW I417723 B TWI417723 B TW I417723B
Authority
TW
Taiwan
Prior art keywords
cache
order
directory
low
line
Prior art date
Application number
TW096100134A
Other languages
English (en)
Other versions
TW200805061A (en
Inventor
John Michael Borkenhagen
Brian T Vanderpool
Original Assignee
Ibm
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 Ibm filed Critical Ibm
Publication of TW200805061A publication Critical patent/TW200805061A/zh
Application granted granted Critical
Publication of TWI417723B publication Critical patent/TWI417723B/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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

用於快取線替換之方法
本發明概言之係關於多階快取。更具體而言,本發明係關於辨識一高階快取中之快取線,在必須將一新快取線載入該高階快取中時,該快取線係該高階快取中一遷出候選者。
現代電腦系統通常使用多階快取。舉例而言,一極快但相對小的第一階快取通常構建於與一處理器相同之半導體晶片上,並在一個或兩個處理器週期內將資料提供至該處理器。通常使用極快但不如較大較慢之記憶體緊密之靜態隨機存取記憶體(SRAM)構建第一階快取(L1快取)。第一階快取亦須相對小以限定控制、位址及信號互連之長度。在現代電腦系統中,一第二階快取(L2快取)通常亦構建於與該處理器相同之半導體晶片上。通常亦使用SRAM記憶體來建構該第二階快取。第二階快取通常在實體面積及所儲存資料量兩者方面皆大於第一階快取。第二階快取通常較第一階快取之存取(讀或寫)為慢。現代電腦系統亦包括一第三階快取(L3快取),第三階快取會保持甚至較第二階快取更多之資料且花費甚至更長之時間來存取。通常,藉助動態隨機存取記憶體(DRAM)構建該第三階快取,儘管SRAM有時亦用於第三階快取設計。
一快取將資料儲存於稱作快取線之區塊中。舉例而言,在各種電腦系統中,一快取線可係64位元組、128位元 組、256位元組等。基於一快取線之位址及耦合至一快取之替換邏輯將該快取線儲存於該快取之一快取線位置中。一耦合至該快取之快取目錄維持儲存於該快取中之每一快取線之狀態資訊及標記資訊。
當一處理器請求一特定位址處之一條資料時,電腦系統檢查該資料是否儲存於第一階快取中。將該特定位址呈現至一第一階快取目錄,由其判定該資料是否儲存於該第一階快取中。若一含有該條資料之快取線存在於第一階快取中,則將自該第一階快取提取該資料以供處理器使用;此稱作第一階快取中之快取命中。若含有該條資料之快取線未保持於第一階快取中,則由第一階快取報告一快取未命中。隨後向一第二階快取提出一請求。若第二階快取保持有該條特定資料,則自該第二階快取提取含有該條特定資料之快取線並將其儲存於第一階快取中。於諸多實施方案中,在將含有該條特定資料之快取線寫入第一階快取之同時,使該條特定資料對處理器可用。若該條特定資料未保持於第二階快取中,則向一第三階快取提出一請求。若該條特定資料係保持於第三階快取中,則自該第三階快取中提取包含該條特定資料之快取線並將其儲存於該第二階快取及第一階快取中,且使其對處理器可用。若在該第三階快取中出現一快取未命中,則向一第四階快取(若一第四階快取存在)或向主記憶體提出進一步之請求。
由於一低階快取保持較一高階快取為少之資料,則高階快取中多個快取線位置會映射至低階快取中較少快取線位 置。於現代電腦系統中,通常將一快取設計成具有相關性。相關性意指一特定快取線映射至一快取中之特定組(列),但支援該快取之替換邏輯可將該特定快取線置於該組中多個類別(快取線位置)之任一者中。一特定組中之特定類別係一快取線位置。舉例而言,對於一四路相關第二階快取,替換邏輯選擇在四個類別之哪一者中儲存一映射至一特定組之特定快取線。
當將一快取線自一高階快取寫入一快取時,必須遷出一快取線(將其寫入一高階快取,或若該快取線中之資料未經修改,則僅將其覆寫)。
於一具有相關性之快取中,一替換演算法選擇替換一組中哪一快取線。舉例而言,若一快取係八路相關,亦即在每組具有八個類別,則必須八個快取線中遷出一者以為具有映射至該組之位址之新快取線騰出空間。
多種替換演算法已實施於各種電腦系統中。最近最少使用之(LRU)演算法已具有廣泛使用,其概念係:較一最近未使用之快取線,更可能再次需要一最近使用之快取線。LRU演算法存在的一問題係出於兩個原因可能似乎不會在一相對長之時期內使用一特定快取線。第一個原因係一處理器不再需要該特定快取線中之資料,且已載入另一快取線來覆寫該特定快取線。第二個原因係一處理器頻繁地使用該特定快取線中之資料且已在一段時間內沒有更新高階快取。若基於一LRU演算法該特定快取線在該高階快取看來係一遷出候選者,但如針對第二個原因所解釋正頻繁地 使用該特定快取線中之資料,則當高階快取將該特定快取線遷出時會發生低效率,此乃因遷出將亦包括自低階快取遷出。由於該特定快取線中之資料正被頻繁使用,處理器將僅必須再次請求該快取線且處理器將不得不等待直至自一高於該高階快取之階中擷取該快取線。
由於上文解釋LRU存在之問題,諸多具有多階快取之電腦系統已在高階快取中實施一偽隨機遷出演算法,從而實際上容許高階快取不知曉該高階快取中之一組內哪一快取線係一較佳遷出候選者,而僅自該組中隨機選取一快取線供遷出。不幸地,該偽隨機遷出演算法通常亦會遷出處理器正頻繁使用之快取線,從而再次導致處理器等待自一較該高階快取為高之階處之記憶體中擷取所遷出之快取線。
因此,需要一種提供一高階快取中改良型遷出方案之方法及裝置。
本發明提供一種藉由提供改良型快取線替換來增加電腦系統效能之方法及裝置。
於一實施例中,將一高階快取中之快取線辨識為不存在於低階快取中。由於不存在於低階快取中之高階快取中之快取線不再需要被儲存於該高階快取中,因而將此類快取線標記為遷出候選者。當高階快取必須替換一具有諸多類別之組中之快取線時,優先遷出一標記為遷出候選者之快取線而非一未標記為遷出候選者之快取線。
於本發明之一實施例中,一具有該高階快取之記憶體控 制器中之巡邏窺察序列器在一高階快取目錄未被另外使用時自該高階快取目錄中讀取目錄條目。由於使用來自該高階快取目錄之資訊,巡邏窺察序列器在未另外使用一處理器記憶體匯流排及一低階快取目錄時對該低階快取進行窺察讀取。若該低階快取目錄針對一特定窺察讀取報告一快取未命中,則該巡邏窺察序列器在該高階快取目錄未被另外使用時更新該高階快取目錄中之狀態資訊以將對應快取線辨識為一遷出候選者。一窺察讀取係自一與一高階快取相關之巡邏窺察序列器發送至一低階快取目錄之任一命令,其可判定該高階快取中一特定快取線是否存在於該低階快取中;該命令不會導致低階快取中之遷出。
記憶體控制器中之巡邏窺察序列器繼續循環遍曆高階快取目錄之條目,從而使用其中高階快取目錄、處理器記憶體匯流排及低階快取目錄皆未另外使用之時間週期查找快取線遷出候選者。記憶體控制器中之替換邏輯在於某些情況下一於高階快取中仍需要之快取線之前,使用遷出候選者資訊遷出在高階快取中不再需要之快取線。
下文將參照附圖對較佳實施例加以詳細說明,該等附圖作為本發明之一部分且其中以圖解方式顯示可實施本發明之具體實施例。應瞭解,可使用其它實施例並可進行結構性改變而不背離本發明之範疇。
本發明提供一種判定一高階快取中之遷出候選者之方法及裝置。於一階層式快取系統(亦即,一具有一高階快取 及一低階快取之快取系統)中,一低階快取中之所有快取線亦存在於一高階快取中。然而,一高階快取中之特定快取線可能不存在於一低階快取中。舉例而言,一處理器可請求必須載入該低階快取內的一第一快取線中之第一資料。該處理器讀取該第一資料。隨後,該處理器可請求必須載入該低階快取內的一第二快取線中之第二資料。該第一快取線未經修改,因此僅將該第二快取線覆寫該第一快取線。先前技術之方法及裝置未通知高階快取該第一快取線不再位於該低階快取中。
本發明之實施例使得該高階快取能夠在快取目錄及匯流排未被使用之時間期間使用高階快取中之快取目錄條目對低階快取進行"窺察讀取"。一窺察讀取係自一與高階快取相關之巡邏窺察序列器發送至一低階快取目錄之任一命令,其可判定該高階快取中存在之特定快取線是否存在於低階快取中;該命令不會導致低階快取中一快取線之遷出。若一窺察讀取在低階快取中產生一快取命中,則由來自該高階快取中之快取目錄條目定址之快取線仍存在於低階快取中。若一窺察讀取在低階快取中產生一快取未命中,則由來自該高階快取中之快取目錄條目定址之快取線不存在於低階快取中,且由該高階快取中之快取目錄條目定址之快取線被標記為一遷出候選者。與該高階快取中一組內未標記為遷出候選者之快取線相比,優先選擇該高階快取中一組內標記為遷出候選者之快取線供進行遷出。某些快取使用包括一"無效"狀態之狀態資訊。一具有無效狀 態之快取線通常係欲遷出之第一快取線。
現轉至圖1,其充分詳細地顯示一電腦系統100以解釋本發明之實施例。應瞭解,該電腦系統進一步包括碟記憶體、網路介面、使用者介面及諸如此類。
電腦系統100包括一個或多個處理器105,其顯示為處理器105A及105B。每一處理器105進一步包括一L2快取110、一相關聯L2快取目錄及替換邏輯109。當需要用一新快取線替換時,替換邏輯109選擇替換(遷出)L2快取110中哪一快取線。處理器105A被顯示為包括L2快取110A、L2快取111A及替換邏輯109A;處理器105B被顯示為包括L2快取110B、L2快取111B及替換邏輯109B。應瞭解,在諸多電腦系統中,一L2快取係由多於一個處理器共享。
處理器105A及105B藉由處理器記憶體匯流排115A及處理器記憶體匯流排115B耦合至記憶體控制器130。應瞭解,某些處理器係如圖所示使用一共用匯流排而非單獨匯流排(115A,115B)耦合至記憶體控制器。一般而言,一處理器記憶體匯流排將被稱作處理器記憶體匯流排115。
記憶體控制器130包括一L3快取132及一L3快取目錄136,該L3快取目錄類似於現有電腦系統中使用之快取目錄。記憶體控制器130進一步包括一巡邏窺察序列器134。記憶體控制器130中之替換邏輯133實施一快取線替換方法,該方法使用由巡邏窺察序列器134儲存於L3快取目錄136中之資訊。如下文將更詳細闡述,巡邏窺察序列器134使用資源(L3快取目錄136、記憶體處理器匯流排115及L2 快取目錄111)空閒(亦即,未被存取)時之時間。窺察序列器134使用彼等資源之此類空閒時間藉由使用L3快取目錄136中之位址來執行窺察讀取。窺察序列器針對快取線(使用該等快取線之位址)循環遍歷L3快取目錄條目以判定L3快取132中哪一快取線不存在於L2快取110A及110B中,並將任何此類快取線標記為L3快取132中之遷出候選者。
記憶體控制器130經由匯流排116耦合至記憶體150。電腦系統100中之記憶體150係電腦系統100之主記憶體。於電腦系統100之另一實施例中,記憶體150可係一階4(L4)快取。
圖2顯示一處理器記憶體匯流排115。應瞭解,存在諸多已經構建以在一處理器105與一記憶體控制器130之間通信之組態。圖中顯示處理器記憶體匯流排115包括一命令/狀態116、一位址117及一資料118。命令/狀態116用於傳遞命令(例如讀取、寫入)及狀態(快取未命中、快取命中及在某些實施例中,窺察讀取)。位址117係用於傳遞位址。舉例而言,當一處理器105需要一特定位址處之資料且彼資料不在L2快取110中時,在位址117上將該特定位址傳輸至記憶體控制器130。在資料118上傳遞資料。舉例而言,將經修改之快取線自L2快取110寫入L3快取132。響應於來自處理器105之請求,將快取線自L3快取132發送至L2快取110。應瞭解,於諸多實施方案中,在一特定處理器記憶體匯流排115上對資訊進行多工。舉例而言,若資料118係八個位元組寬,但一快取線係64個位元組寬,則需要八個 循環來傳遞一快取線。同樣地,在某些電腦系統中,位址117使用與資料118相同之實體線路但經過多工。
圖3A更詳細地顯示L3快取132。出於解釋之目的,L3快取132係八路組相關;亦即,每一組(列)含有八個類別:類別0至類別7(類別0、3及7用箭頭辨識)。圖中顯示L3快取132具有N個組(組0至N-1),其中組0、2及N-1用箭頭辨識。使用快取線位址之一部分將該特定快取線映射至L3快取132中一特定組。記憶體控制器130中之替換邏輯133判定將該特定快取線置於哪一類別中。每次將該特定快取線載入快,取132中時,該特定快取線可被置於該八個類別之任一個中。圖3A中用組及列作參考辨識數個快取線之快取線位置。舉例而言,快取線位置132-00係L3快取132中之組零、類別零。類似地,快取線位置132-03係L3快取132中之組零、類別三。以相似之命名規則顯示快取線位置132-07及132-23。圖3B中顯示,L3快取132中之快取線必須映射至L2快取110。L2快取110小於L3快取132,且通常設計成具有較L3快取132為小之相關性(亦即,較少類別)。出於解釋之目的,L3快取132之子組132A(由圖3A中之箭頭及第一交叉陰影圖案顯示)映射至L2快取110之組1;子組132B(由圖3A之箭頭及第二交叉陰影圖案顯示)映射至L2快取110B之組3。
應瞭解,此映射僅用於實例性目的,且存在諸多方式將一高階快取中之特定快取線位置映射至一低階快取。舉例而言,圖3C顯示一映射之實例。一位址(諸如一處理器105 使用之32位元位址)具有一用於辨識一快取線內之位元的部分。若一快取線含有128個位元組,則圖3C中標題為"快取線中之位元組"之部分將具有七個位元。一標題為"L2索引"之部分含有判定一快取線將映射至L2快取110中哪一組所需之諸多位元。舉例而言,若L2快取110具有1024個組,則圖3C中之L2索引需要十個位元。如將參照圖5A-5C解釋,標題為"L2標記"之部分係必須儲存於一L2快取目錄中標記欄位內之位址之標記部分。L3快取132大於L2快取110,亦即,會保持有更多快取線。保持於L2快取110中之快取線與保持於L3快取132中之快取線有相同之位元組數量,因此該位址之"快取線中之位元組"部分對於L3快取132中之快取線係位址之相同部分。圖3C中所示標題為"L3索引"之位址部分具有較標題為"L2索引"之位址部分為多之位元。舉例而言,若L3快取132具有4096個組,則圖3C中顯示之L3索引需要十二個位元。如下文將闡釋,圖3中顯示之位址部分"L3標記"必須儲存於L3快取目錄中一標記條目中。其他映射技術"弄亂(hash)"該位址之部分。本發明涵蓋任一映射。
圖3B中顯示L2快取110具有M個組(0-M-1),且顯示L2快取110為四路組相關,亦即具有四個類別,類別0至類別3。如上文闡釋顯示子組132A及132B。其顯示快取線位置110-00(L2快取110之組零、類別零)及110-23(L2快取110之組二、類別三)以說明組/類別命名規則,如上文針對L3快取132做。
圖4A及圖4B顯示L3快取132及L2快取110中之特定快取線。如圖4A所示,快取線A、B、C、D、E、F、G及H係儲存於L3快取132之組零中。快取線A儲存於L2快取110中之110-10處(使用上述命名規則);快取線C儲存於L2快取110中之110-12處;及快取線F儲存於110-31處。於圖4A、4B之實例中,快取線B、D、E、G及H不存在於L2快取110中。快取線W、X、Q、R及S保持於L2快取110中且必須亦存在於L3快取132中具有映射至組1(W及X)或組3(Q、R及S)之位址的位置處(未顯示)。應注意,存在於L2快取110中之所有快取線亦存在於L3快取132中。然而,並非L3快取132中之所有快取線皆需要存在於L2快取110中。如先前闡釋,若第一快取線尚未被修改,L2快取110可僅用新近提取之快取線覆寫該第一快取線。L2快取110並不通知L3快取132第一快取線已被覆寫。
圖3A、3B、4A、4B及其上述闡述係集中於L3快取132及L2快取110中之快取線之實體位置。快取目錄111(在圖1中顯示為快取目錄111A及111B)用於追蹤儲存於L2快取110中之快取線位址及儲存於L2快取110中之快取線狀態。快取目錄136(圖1)用於追蹤儲存於L3快取132中之快取線位址及儲存於L3快取132中之快取線狀態。
圖5A中顯示一實例性L2快取目錄111。L2快取目錄111包括一具有四個條目行70之快取目錄陣列112;每一條目行70對應於L2快取110中一個類別(圖3B)。L2快取目錄陣列112具有M個列113,每一列113對應於L2快取111中M個 組中之一個組(圖3B)。一L2快取目錄條目76(一L2快取目錄條目係由交叉陰影、編號"76"及箭頭辨識)係儲存於一列113及一條目行70之每一交叉點處。一L2快取目錄條目係儲存於L2快取111中所儲存之每一快取線之快取目錄陣列112中。應瞭解,L3快取目錄136係以一類似方式建構。
每一L2快取目錄條目76含有一狀態欄位73及一標記欄位72。一狀態欄位73保持關於對應快取線之狀態資訊。於諸多電腦系統中,狀態欄位包括四個位元,以表示對應之快取線係(1)經修改、(2)專用、(3)共享或(4)無效。此類狀態資訊稱作MESI狀態資訊。圖5B中顯示一實例性狀態欄位73。然而,對於本發明之一實施例,圖5C中顯示一具有MESI狀態資訊但亦具有一"X"位元之實例性狀態欄位74。如下文將闡述,狀態欄位74中之"X"位元係用於標記已被辨識為遷出候選者之快取線。標記欄位72保持一快取線位址之標記部分。應瞭解,已使用大量不同之MESI狀態來強制執行快取一致性,且本發明並不限於任一MESI特定實施方案或任何其他一致性協定。
快取目錄111進一步包括一位址暫存器90,其保持一在位址117上發送至L2快取目錄111之位址以查看一具有彼位址之快取線是否在L2快取目錄111中。在位址117上發送至L2快取目錄111之位址可能源自處理器105或可能源自記憶體控制器130。第一位址部分92用於選擇L2快取目錄陣列112之M個列中之一者。將位址暫存器90中位址之標記部分91在信號93上發送至一比較器80。在信號81A、81B、 81C及81D上讀取L2快取目錄陣列112之所選列之標記72並將其與位址之標記部分比較。若在信號81A、81B、81C及81D上發送之標記中之一者等於該位址之標記部分,則在信號82上報告一快取命中。若在信號81A、81B、81C及81D上發送之標記中之任何一個皆不等於該位址之標記部分,則在信號82上報告一快取未命中。通常在與標記72相同之時間L2自快取目錄陣列112讀取每一目錄之狀態資訊。
返回參照圖1,考量上述對L3快取132、L3快取目錄136、L2快取110及L2快取目錄136工作之闡述,現將闡述巡邏窺察序列器134之運作。
巡邏窺察序列器134耦合至L3快取目錄136及每一處理器記憶體匯流排115(圖1中所示之處理器記憶體匯流排115A及115B)。巡邏窺察序列器134初始化一目錄索引以定址L3快取目錄136之第一列。在L3快取目錄136未另外被使用時根據該索引讀取L3快取目錄136。在被存取時,存取L3快取目錄136返回對應於圖3A中L3快取132中所示八個類別之八個條目。巡邏窺察序列器134採取行動以判定L3快取132中哪些快取線(若存在)不再存在於L2快取110中。巡邏窺察序列器134使用L3快取目錄之每一條目中儲存之標記以及該索引形成一巡邏窺察位址。當處理器記憶體匯流排115在其他情況下閒置時,在處理器記憶體匯流排115上將該巡邏窺察位址發送至L2快取目錄111。當L2快取目錄111在其他情況下閒置時,對快取目錄111進行窺察讀取。若 L2快取目錄111在信號82上報告一L2快取未命中,則對應於該巡邏窺察位址之快取線並不存在於L2快取111中。信號82在處理器記憶體匯流排115之命令/狀態116上耦合至巡邏窺察134。巡邏窺察序列器134藉由確認狀態74欄位中之位元"X"來更新L3快取目錄136中之對應條目,從而將快取線辨識為一遷出候選者。若L2快取目錄111在信號82上報告一L2快取命中,則對應之快取線仍在L2快取111中,且巡邏窺察序列器134並不更新L3快取目錄136中之對應條目以將該快取線辨識為一遷出候選者。巡邏窺察序列器134對L3快取目錄136之經索引列中每一條目重複窺察讀取,隨後遞增該索引以存取L3快取目錄136之下一列。當已完成L3快取目錄136之最後一列時,重設該索引以再次存取第一列。由於當L3快取目錄閒置時巡邏窺察序列器僅存取L3快取目錄136,且僅在處理器記憶體匯流排115閒置時在處理器記憶體匯流排115上發送窺察讀取,且僅當L2快取目錄111閒置時進行對L2快取目錄111之存取,因此在本發明實施例中不存在對辨識遷出候選者之效能責罰。
窺察讀取必須不導致自L2快取110遷出快取線。假若一窺察讀取會導致遷出一快取線,則會導致效能降級,此乃因處理器正使用L2快取110中之諸多快取線。為避免窺察讀取導致不合意之遷出,處理器105中之替換邏輯109(圖1)可簡單地藉由下述步驟辨識一窺察讀取:將命令/狀態116上一命令翻譯為一由巡邏窺察序列器134確認之窺察讀取、識別該窺察讀取及抑制任何響應於該窺察讀取命令遷 出低階快取中一快取線之嘗試。
於一實施例中,巡邏窺察序列器134使用狀態74中之資訊根據一來自L3快取目錄136之當前所考量條目判定是否應執行對該當前所考量條目之窺察讀取。若狀態74指示對應於當前條目之快取線係經修改(使用一特定MESI狀態實施方案作為一實例),則將不執行窺察讀取,此乃因對應之快取線存在於L2快取110中。若狀態74指示對應於當前條目之快取線係共享,則執行一窺察讀取,此乃因對應之快取線可能存在或可能不存在於L2快取110中。使用MESI之各種快取一致性之實施方案不同地對待"專用"狀態。舉例而言,某些實施方案可將"專用"定義為意指僅一個處理器具有該快取線但或許尚未修改該快取線;若另一處理器請求該快取線,則將"專用"改變為"共享";在"共享"狀態下,在此種實施方案中此種快取線可能不存在於一低階快取中,且窺察讀取應包括具有一"專用"狀態之快取條目。於MESI之其他實施方案中,"專用"可意指該快取線在使用中,且因此不應係一遷出候選者。若狀態74指示對應於當前條目之快取線無效,則不執行窺察讀取。通常一無效狀態僅發生於電腦系統之啟始期間。若一快取線係無效,則替換邏輯133將替換對應之快取線,且在一狀態欄位指示一快取線係無效時不需要任何窺察讀取。
應瞭解,若一處理器105在一標記為遷出候選者之快取線被遷出之前存取該快取線,則重新標記該快取線以使其不成為遷出候選者(亦即,如圖5C中狀態74中顯示,取消 確認位元"X")。
圖1顯示L3快取132支援兩個處理器105A、105B,其各自具有一L2快取110A。於一實施例中,記憶體控制器130追蹤已將一特定快取線發送至哪一L2快取110,且僅需判定一特定快取線是否存在於該快取線發送至之L2快取110中。於一第二實施例中,記憶體控制器130不追蹤已將一特定快取線發送至哪一L2快取110,且必須經常檢查每一L2快取110以查看該特定快取線是否存在於任一L2快取110中。
應瞭解,儘管本發明已使用L3及L2快取系統圖解說明一高階快取及一低階快取,但本發明並不限於L3及L2階快取。舉例而言,一與L2快取110及L2快取目錄111相關聯之巡邏窺察序列器可對處理器105中之階一快取(未顯示階一快取)執行一類似功能。
本發明實施例亦可表達為方法。圖6顯示一方法300之流程圖。方法300開始於步驟302。於步驟304中,將一高階快取目錄中列之索引初始化至零。於步驟306中,實施檢查以查看該高階快取目錄是否在使用中。若該高階快取目錄在使用中,則控制過程簡單地返回至步驟306。若該高階快取目錄未在使用中,則控制過程前進至步驟308。於步驟308中,讀取該高階快取目錄中一條目並使用索引及該條目中之標記資訊產生一窺察巡邏位址。通常,並行讀出該高階快取目錄中一列內之所有條目。若如此,則一窺察巡邏序列器儲存該等並行讀出之條目並依次處理該列中 之每一條目。舉例而言,圖5A顯示每列具有四個條目之L2快取目錄陣列112。L3快取132被顯示為具有八個類別(圖3A),且因此L3快取目錄136包括一每列具有八個條目之L3快取目錄陣列(未顯示L3快取目錄,但已將L3快取目錄136之設計闡述為類似於L2快取目錄111之設計)。
於步驟310中,在一低階快取目錄未在使用中時,使用步驟308中產生之窺察巡邏位址對該低階快取目錄進行窺察讀取。於步驟312中,若窺察讀取並未報告低階快取中之快取命中,則標記該條目以將對應快取線標識為一遷出候選者。步驟316判定上一窺察讀取中使用之條目是否係高階快取目錄中之最後一個條目。若否,則在步驟318中增加該索引且控制過程返回步驟306。若是,則在步驟320中將該索引重設為零且控制過程返回步驟306。
圖7中顯示之方法350類似於方法300(圖6),但對於一使用MESI狀態規則之實例性快取設計而言包括更多細節。
方法350開始於步驟352。步驟354初始化一索引,該索引對應於高階快取目錄中一特定列。步驟356檢查該高階快取目錄是否在使用中。若是,則步驟356簡單地返回至步驟356,等待一該高階快取目錄不在使用中之時間。
當步驟356判定該高階快取目錄未在使用中時,控制過程前進至步驟381。步驟381讀取該高階快取目錄以獲取該高階快取目錄陣列中一個或多個條目上之狀態資訊。如同先前,一快取目錄通常讀出一由該索引存取之特定列之所有目錄資訊。步驟381將控制傳遞至步驟382。步驟382檢 查以查看步驟381中讀取之任一條目是否具有一無效狀態。無效狀態係稀有;且無效狀態一般僅出現於電腦系統之啟始期間。一條目之無效狀態意指對應快取線不含有處理器105需要之任何資料,且可被覆寫而無需進行任何窺察讀取。若步驟381中讀取之一快取條目無效,則步驟382將控制傳遞至步驟366。若步驟381中讀取之條目非係無效,則步驟382將控制傳遞至步驟384。步驟384檢查是否共享任何狀態。若否,則將對應之快取線用於一低階快取中,且不將對應之高階快取線標記為一遷出候選者,且控制過程前進至步驟366。若一條目具有一共享狀態,則步驟384將控制傳遞至步驟358,在步驟358中使用來自步驟381中讀取之目錄條目之索引及標記資訊形成一位址。在未使用處理器記憶體匯流排115且未使用低階快取目錄時,步驟360對低階快取執行一窺察讀取。若窺察響應係一命中,則對應之快取線存在於低階快取中且非係一遷出候選者。若窺察響應非係一命中(亦即,係一未命中),則控制過程前進至步驟364,步驟364藉由將目錄條目設定在用於創建窺察讀取之狀態資訊中而將該快取線標識為一遷出候選者。如先前解釋,條目中一狀態位元"X"可用於將一快取線標識為一遷出候選者。步驟364隨後將控制傳遞至步驟386,步驟386檢查於步驟381中讀取之條目的當前列中是否還存在具有共享狀態之條目。若有,則控制前進至步驟358,若否,則控制前進至步驟366。
步驟366檢查是否已考量高階快取目錄中之所有條目; 亦即,該索引將定址超出該高階快取目錄陣列中之列數量。若否,則在步驟368處遞增該索引;若是,則在步驟370處將該索引重新初始化為零。步驟368及370將控制返回至步驟356,且該方法繼續:使用未使用之高階快取目錄時間讀取條目、找出具有共享狀態之條目、在資源(高階快取目錄、記憶體處理器匯流排及低階快取目錄)閒置時將窺察讀取請求發送至一低階快取目錄及藉由來自該低階快取目錄之命中或未命中響應判定該共享快取線是否存在於該低階快取中。若該共享快取線不存在於低階快取中,則將該高階快取中之快取線標記為一遷出候選者。
如先前作為方法及裝置所解釋,圖8中顯示之方法400顯示藉由本發明之窺察讀取實施例辨識之遷出候選者如何改良習知替換演算法之替換選擇,該等習知替換演算法包括(例如,但不限於)LRU替換演算法及偽隨機替換演算法。
方法400開始於步驟402。於步驟404中,一高階快取接收對一需要遷出高階快取中一快取線之新快取線中資料之請求。於步驟406中,高階快取判定快取目錄陣列中的一個列,該列含有包含針對該新快取線將被置於其中的類別之狀態及標記資訊。於步驟408中,自該快取目錄陣列讀取於步驟406中判定之列。
於步驟410中,進行檢查以查看所請求快取線是否在該高階快取中。若是,則在步驟412中進行檢查以查看所請求快取線是否已被標記為一遷出候選者。若所請求快取線已被標記為一遷出候選者,則控制過程前進至步驟414, 該步驟不將所請求之快取線標記為遷出候選者。步驟414將控制傳遞至步驟416。若步驟412判定所請求快取線尚未被標記為一遷出候選者,則控制過程前進至步驟416。步驟416將所請求之快取線複製至低階快取。控制過程自步驟416前進至步驟426,並於此處結束該方法。若步驟410判定所請求快取線不在高階快取中,則控制過程前進至步驟420。
於步驟420中,若在步驟408中讀取之列中之任一條目具有無效狀態,則控制過程前進至步驟421,且由步驟420將所請求之快取線寫入該高階快取中對應於無效狀態條目之類別中,藉此遷出(實際上覆寫)無效快取線。步驟421隨後將控制傳遞至步驟426,並於此處結束過程400。若步驟420發現沒有條目具有一指示無效快取線之狀態,則控制過程前進至步驟422。
於步驟422中,檢查於步驟408中讀取之高階快取目錄陣列中各條目之狀態以查看是否將任一條目標記為一遷出候選者。此步驟簡單地依次檢驗每一條目,直至找到一第一遷出候選者。若找到一遷出候選者,則控制過程前進至步驟423,在步驟423中將所請求之快取線寫入被發現係一遷出候選者之快取線中。步驟423將控制傳遞至步驟426,亦即該過程之終點。若步驟422未找到標記為遷出候選者之條目,則控制過程前進至步驟424。步驟424執行各種習知替換演算法之任一者,諸如一LRU演算法或一偽隨機替換演算法。
100‧‧‧電腦系統
105A‧‧‧處理器
105B‧‧‧處理器
109A‧‧‧替換邏輯
109B‧‧‧替換邏輯
110A‧‧‧L2快取
110B‧‧‧L2快取
111A‧‧‧L2快取目錄
111B‧‧‧L2快取目錄
115A‧‧‧處理器記憶體匯流排
115B‧‧‧處理器記憶體匯流排
116‧‧‧命令/狀態
117‧‧‧位址
118‧‧‧資料
130‧‧‧記憶體控制器
132‧‧‧L3快取
133‧‧‧替換邏輯
134‧‧‧巡邏窺察序列器
136‧‧‧L3快取目錄
150‧‧‧記憶體
70‧‧‧條目行
72‧‧‧標記欄位
73‧‧‧狀態欄位
74‧‧‧狀態欄位
76‧‧‧L2快取目錄條目
80‧‧‧比較器
81‧‧‧信號
82‧‧‧信號
90‧‧‧位址暫存器
91‧‧‧標記部分
92‧‧‧第一位址部分
93‧‧‧信號
112‧‧‧快取目錄陣列
113‧‧‧列
圖1係一包括一個或多個處理器、一記憶體控制器及一記憶體之電腦系統之方塊圖。
圖2顯示一顯示於圖1中之處理器記憶體匯流排之額外細節。
圖3A顯示一高階快取之方塊圖。
圖3B顯示一低階快取之方塊圖。
圖3C顯示一具有L2和L3標記部分及L2和L3索引部分以及一用於判定一快取線內之位元組之部分的實例性位址。
圖4A顯示具有儲存於一組中之實例性快取線之高階快取。
圖4B顯示具有儲存於一組中之實例性快取線之低階快取。
圖5A顯示一實例性快取目錄。
圖5B顯示一快取目錄中一條目之實例性狀態欄位。
圖5C顯示一快取目錄中一條目之實例性狀態欄位,該狀態欄位具有一用於指示一遷出候選者之位元。
圖6係一用於判定一高階快取中之遷出候選者之第一方法之流程圖。
圖7係一用於判定一高階快取中之遷出候選者之第二方法之流程圖。
圖8係一使用遷出候選者資訊增加一快取替換演算法之方法之流程圖。

Claims (8)

  1. 一種用於快取線替換之方法,其包括下述步驟:在不引起效能責罰之情況下,辨識不存在於一低階快取中之一高階快取中之一第一快取線,該辨識進一步包含:藉由一巡邏窺察序列器判定一高階快取目錄未被另外使用之一第一時間;在該第一時間之期間,自該高階快取目錄讀取一個或多個快取條目;及使用來自該高階快取目錄之一個或多個快取條目之一標記欄位形成該高階快取中該第一快取線之一位址;使用該第一快取線之該位址經由一處理器記憶體匯流排傳輸一窺察讀取至該低階快取;若未在該低階快取之一快取目錄中發現該第一快取線之該位址,則藉由該低階快取之該快取目錄經由該處理器記憶體匯流排發送一快取未命中信號;及若在該低階快取之該快取目錄中發現該第一快取線之該位址,則藉由該低階快取之該快取目錄經由該處理器記憶體匯流排發送一快取命中信號;及若一快取未命中信號被該高階快取所接收,則更新該高階快取目錄中之一對應條目以將該第一快取線辨識為一遷出候選者,其中該巡邏窺察序列器執行遍曆該高階快取目錄中之 所有快取條目之一循環且隨後重複該循環。
  2. 如請求項1之方法,對該低階快取進行一窺察讀取之步驟進一步包括下述步驟:判定一低階快取目錄未被另外使用之一第二時間;於該第二時間期間使用該高階快取目錄中該快取線之位址存取該低階快取目錄;若於該第二時間期間使用該高階目錄中該快取線之位址該低階快取目錄之該存取在該低階快取目錄中產生一未命中,則將該未命中返回該低階快取中;及若於該第二時間期間使用該高階目錄中該快取線之位址對該低階快取目錄之該存取在該低階快取目錄中產生一命中,則將該命中返回該低階快取中。
  3. 如請求項2之方法,其進一步包括下述步驟:自來自該高階快取目錄之該一個或多個快取條目中讀取狀態資訊;及若來自該高階快取目錄之該一個或多個條目中一特定快取條目之狀態資訊指示對應之快取線無效,則不針對該特定快取條目執行請求項2之步驟。
  4. 如請求項2之方法,其進一步包括下述步驟:自來自該高階快取目錄之該一個或多個快取條目中讀取狀態資訊;及若來自該高階快取目錄之該一個或多個快取條目中一特定快取條目之狀態資訊指示對應之快取線係經修改,則不針對該特定條目執行請求項2之步驟。
  5. 如請求項1之方法,其進一步包括下述步驟:接收該高階快取對資料之一請求;檢查一含有該資料之特定快取線是否存在於該高階快取中;及若該特定快取線存在於該高階快取中,則執行下述步驟:若該特定快取線已被辨識為不存在於該低階快取中,則移除該快取線不存在於該低階快取中之辨識。
  6. 如請求項1之方法,其進一步包括下述步驟:若該高階快取耦合至複數個低階快取,且每一低階快取係位於相同階,則辨識該高階快取中不存在於一低階快取中之該第一快取線之步驟進一步包括下述步驟:確保該第一快取線不存在於該複數個低階快取之任一者中。
  7. 如請求項1之方法,其中該高階快取係一L3快取,且該低階快取係一L2快取。
  8. 如請求項1之方法,其中該高階快取係一L2快取,且該低階快取係一L1快取。
TW096100134A 2006-01-19 2007-01-03 用於快取線替換之方法 TWI417723B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/335,765 US7577793B2 (en) 2006-01-19 2006-01-19 Patrol snooping for higher level cache eviction candidate identification

Publications (2)

Publication Number Publication Date
TW200805061A TW200805061A (en) 2008-01-16
TWI417723B true TWI417723B (zh) 2013-12-01

Family

ID=37955186

Family Applications (1)

Application Number Title Priority Date Filing Date
TW096100134A TWI417723B (zh) 2006-01-19 2007-01-03 用於快取線替換之方法

Country Status (8)

Country Link
US (1) US7577793B2 (zh)
EP (1) EP1977322B1 (zh)
JP (1) JP4563486B2 (zh)
CN (1) CN101361049B (zh)
AT (1) ATE467182T1 (zh)
DE (1) DE602007006277D1 (zh)
TW (1) TWI417723B (zh)
WO (1) WO2007082917A2 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624234B2 (en) * 2006-08-31 2009-11-24 Hewlett-Packard Development Company, L.P. Directory caches, and methods for operation thereof
JP4920378B2 (ja) * 2006-11-17 2012-04-18 株式会社東芝 情報処理装置およびデータ検索方法
US7457920B1 (en) 2008-01-26 2008-11-25 International Business Machines Corporation Method and system for cache eviction
US8271735B2 (en) * 2009-01-13 2012-09-18 Oracle America, Inc. Cache-coherency protocol with held state
JP2011028736A (ja) * 2009-07-02 2011-02-10 Fujitsu Ltd キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法
US8566531B2 (en) * 2009-08-21 2013-10-22 Google Inc. System and method of selectively caching information based on the interarrival time of requests for the same information
AU2010201718B2 (en) * 2010-04-29 2012-08-23 Canon Kabushiki Kaisha Method, system and apparatus for identifying a cache line
US8769209B2 (en) * 2010-12-20 2014-07-01 Intel Corporation Method and apparatus for achieving non-inclusive cache performance with inclusive caches
US9804971B2 (en) * 2012-01-17 2017-10-31 International Business Machines Corporation Cache management of track removal in a cache for storage
WO2016055828A1 (en) * 2014-10-08 2016-04-14 Via Alliance Semiconductor Co., Ltd. Cache system with primary cache and overflow fifo cache
JP6708019B2 (ja) 2016-06-29 2020-06-10 富士通株式会社 演算処理装置、情報処理装置および演算処理装置の制御方法
CN109074320B (zh) * 2017-03-08 2023-11-17 华为技术有限公司 一种缓存替换方法,装置和系统
US20190012259A1 (en) * 2017-07-06 2019-01-10 Futurewei Technologies, Inc. Lba eviction in pcm media
US10915461B2 (en) * 2019-03-05 2021-02-09 International Business Machines Corporation Multilevel cache eviction management
US10997074B2 (en) 2019-04-30 2021-05-04 Hewlett Packard Enterprise Development Lp Management of coherency directory cache entry ejection

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530832A (en) * 1993-10-14 1996-06-25 International Business Machines Corporation System and method for practicing essential inclusion in a multiprocessor and cache hierarchy
US5829038A (en) * 1996-06-20 1998-10-27 Intel Corporation Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure
US6343344B1 (en) * 1999-08-04 2002-01-29 International Business Machines Corporation System bus directory snooping mechanism for read/castout (RCO) address transaction
TW591530B (en) * 2001-07-24 2004-06-11 Advanced Micro Devices Inc Hybrid branch prediction device with two levels of branch prediction cache
TWI246658B (en) * 2003-04-25 2006-01-01 Ip First Llc Microprocessor, apparatus and method for selectively associating store buffer cache line status with response buffer cache line status

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5373927A (en) * 1976-11-10 1978-06-30 Fujitsu Ltd Replacing system of intermediate buffer memory
JPH01199251A (ja) * 1988-02-04 1989-08-10 Fujitsu Ltd キャッシュメモリアクセス制御方式
JPH02188847A (ja) * 1989-01-18 1990-07-24 Agency Of Ind Science & Technol 階層キャッシュメモリにおけるデータ交換方式
JPH05216765A (ja) * 1992-02-06 1993-08-27 Hitachi Ltd 階層バッファ記憶装置
US5850534A (en) * 1995-06-05 1998-12-15 Advanced Micro Devices, Inc. Method and apparatus for reducing cache snooping overhead in a multilevel cache system
JPH10105463A (ja) * 1996-09-27 1998-04-24 Mitsubishi Electric Corp キャッシュシステム及びリプレース判定方法
JPH11102320A (ja) * 1997-09-29 1999-04-13 Mitsubishi Electric Corp キャッシュシステム
US6023747A (en) * 1997-12-17 2000-02-08 International Business Machines Corporation Method and system for handling conflicts between cache operation requests in a data processing system
US6901450B1 (en) * 2000-09-22 2005-05-31 Hitachi, Ltd. Multiprocessor machine and cache control method for providing higher priority to shared cache that is accessed by multiprocessors
US6725337B1 (en) * 2001-05-16 2004-04-20 Advanced Micro Devices, Inc. Method and system for speculatively invalidating lines in a cache
US7143246B2 (en) * 2004-01-16 2006-11-28 International Business Machines Corporation Method for supporting improved burst transfers on a coherent bus
US20070186045A1 (en) * 2004-07-23 2007-08-09 Shannon Christopher J Cache eviction technique for inclusive cache systems
US20060212654A1 (en) * 2005-03-18 2006-09-21 Vinod Balakrishnan Method and apparatus for intelligent instruction caching using application characteristics
US20070073974A1 (en) * 2005-09-29 2007-03-29 International Business Machines Corporation Eviction algorithm for inclusive lower level cache based upon state of higher level cache

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530832A (en) * 1993-10-14 1996-06-25 International Business Machines Corporation System and method for practicing essential inclusion in a multiprocessor and cache hierarchy
US5829038A (en) * 1996-06-20 1998-10-27 Intel Corporation Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure
US6343344B1 (en) * 1999-08-04 2002-01-29 International Business Machines Corporation System bus directory snooping mechanism for read/castout (RCO) address transaction
TW591530B (en) * 2001-07-24 2004-06-11 Advanced Micro Devices Inc Hybrid branch prediction device with two levels of branch prediction cache
TWI246658B (en) * 2003-04-25 2006-01-01 Ip First Llc Microprocessor, apparatus and method for selectively associating store buffer cache line status with response buffer cache line status

Also Published As

Publication number Publication date
DE602007006277D1 (de) 2010-06-17
US20070168617A1 (en) 2007-07-19
CN101361049B (zh) 2011-12-28
TW200805061A (en) 2008-01-16
ATE467182T1 (de) 2010-05-15
WO2007082917A2 (en) 2007-07-26
US7577793B2 (en) 2009-08-18
CN101361049A (zh) 2009-02-04
JP4563486B2 (ja) 2010-10-13
WO2007082917A3 (en) 2007-10-04
EP1977322A2 (en) 2008-10-08
EP1977322B1 (en) 2010-05-05
JP2009524137A (ja) 2009-06-25

Similar Documents

Publication Publication Date Title
TWI417723B (zh) 用於快取線替換之方法
CN109582214B (zh) 数据访问方法以及计算机系统
US5630097A (en) Enhanced cache operation with remapping of pages for optimizing data relocation from addresses causing cache misses
US5787478A (en) Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy
US6658538B2 (en) Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control
JP4447580B2 (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
KR100978156B1 (ko) 스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑 스킴을 위한 방법, 장치, 시스템 및 컴퓨터 판독 가능 기록 매체
US6826651B2 (en) State-based allocation and replacement for improved hit ratio in directory caches
US7711901B2 (en) Method, system, and apparatus for an hierarchical cache line replacement
US20040083341A1 (en) Weighted cache line replacement
EP2926257B1 (en) Memory management using dynamically allocated dirty mask space
EP3411798B1 (en) Cache and method
KR20070104906A (ko) 캐시 메모리를 구비한 시스템 및 엑세스 방법
WO1992022867A1 (en) Improving computer performance by simulated cache associativity
US7117312B1 (en) Mechanism and method employing a plurality of hash functions for cache snoop filtering
US7325102B1 (en) Mechanism and method for cache snoop filtering
JP2007048296A (ja) 複数のアドレス・キャッシュ・エントリーを無効にする方法、装置およびシステム
US11526449B2 (en) Limited propagation of unnecessary memory updates
US6662173B1 (en) Access control of a resource shared between components
JP3929872B2 (ja) キャッシュメモリ、プロセッサ及びキャッシュ制御方法
US6715040B2 (en) Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit
US20190095330A1 (en) Preemptive cache writeback with transaction support
US20040117555A1 (en) Method and system to overlap pointer load cache misses
JP2021506028A (ja) 共通のメモリページからメモリへのキャッシュラインのリンス
US7143239B2 (en) Cache structure and methodology

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees