TWI723069B - 用於在多個快取層級之間的共用最近最少使用(lru)策略的設備及方法 - Google Patents

用於在多個快取層級之間的共用最近最少使用(lru)策略的設備及方法 Download PDF

Info

Publication number
TWI723069B
TWI723069B TW105136717A TW105136717A TWI723069B TW I723069 B TWI723069 B TW I723069B TW 105136717 A TW105136717 A TW 105136717A TW 105136717 A TW105136717 A TW 105136717A TW I723069 B TWI723069 B TW I723069B
Authority
TW
Taiwan
Prior art keywords
cache
level cache
level
entries
memory
Prior art date
Application number
TW105136717A
Other languages
English (en)
Other versions
TW201730773A (zh
Inventor
丹尼爾 格林斯潘
布雷希 芬寧
約雅夫 羅辛
艾沙夫 魯賓斯坦
Original Assignee
美商英特爾股份有限公司
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 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW201730773A publication Critical patent/TW201730773A/zh
Application granted granted Critical
Publication of TWI723069B publication Critical patent/TWI723069B/zh

Links

Images

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/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

本發明說明了一種用於快取層級之間的共用LRU策略之方法及設備。例如,本發明之一實施例包含:一N階快取記憶體用以儲存第一複數個條目;一N+1階快取記憶體用以儲存第二複數個條目;該N+1階快取記憶體開始時具有在接收到對來自該N階快取記憶體的對一第一條目的一要求之前執行用於該第一條目的一最近最少使用(LRU)收回策略之責任,而在接收到該要求時,將該條目自該N+1階快取記憶體複製到該N階快取記憶體,該N階快取記憶體然後具有在自該N階快取記憶體收回該第一條目之前執行該LRU策略之責任,其中在被通知已自該N階快取記憶體收回該第一條目之後,該N+1階快取記憶體恢復用於執行與該第一條目有關的該LRU收回策略之責任。

Description

用於在多個快取層級之間的共用最近最少使用(LRU)策略的設備及方法
本發明係大致有關電腦處理器及軟體之領域。更具體而言,本發明係有關一種多個快取層級之間的共用最近最少使用(LRU)策略之設備及方法。
使用階層式快取記憶體的一個理由是能夠將較接近處理器的小容量快取記憶體(例如,一階快取記憶體(Level 1 cache;簡稱L1 cache))用於在比該快取記憶體階層的後續較大階(例如,二階(Level 2;簡稱L2))的速率快之速率下處理要求。因此,將L1快取記憶體中被服務的存取通知L2快取記憶體是不切實際的,這是因為這些存取正在以比L2快取記憶體能夠處理的速率快的速率下發生。概括而言,該原則發生於一快取記憶體階層中之任何兩階之間(例如,將於下文中述及的相鄰快取層級Ln與L(n+1)之間)。
此種情形導致L2快取記憶體的最近最少使用(Least Recently Used;簡稱LRU)機制的困難。L2快取記憶體不知道L1快取記憶體擁有的位址上的資料之處理器存取,且在L1快取記憶體持續地命中某些位址的情況中,L2快取記憶體將無法得知對那些位址的任何要求。因此,最常被該處理器存取的資料實際上最有可能自L2快取記憶體及較低階的快取記憶體被收回。如果後來暫時自L1快取記憶體收回該資料,則隨後任何使用該資料的嘗試都將導致自主記憶體提取的懲罰。
一種解決該問題的常用方式是使L1快取記憶體有些"洩漏",例如,藉由偶爾收回最近最多使用(Most Recently Used;簡稱MRU)的條目,或藉由將一小部分對L1快取記憶體的要求向下傳送到L2快取記憶體(即使在L1快取記憶體已服務那些要求之情形下)。
另一種方法是在"互斥模式"("exclusive mode")的形式下操作該等快取記憶體,例如,自動地自L2快取記憶體移除L1快取記憶體中之所有資料。同樣地,當自L1快取記憶體收回資料(即使是未被修改的資料)時,該資料被送回到L2快取記憶體作為MRU資料。
相同的問題也適用於單一快取記憶體控制器的某些實施例,例如,也適用於下列的實施例:所有的快取資料都被存放在動態隨機存取記憶體(Dynamic Random Access Memory;簡稱DRAM),但是只有一部分的快取元資料(Metadata)(標籤(tag)、有效指示、LRU指示等) 被存放在晶粒內(而其餘的元資料也被存放在DRAM中)。可將此種安排視為與兩階的快取記憶體(例如,具有1:4的容量比及2:1的速度比)相同。問題仍然存在:當自晶粒內置的元資料(亦即,L1)服務各存取時,更新DRAM存放的元資料(亦即,L2)中之LRU細節(例如,將被存取的條目標示為最近最多使用,且老化相同集合(set)的未被存取的條目之LRU)在功率及頻寬方面上是不切實際的。兩個快取層級的接近(例如,1:4)之容量比也將導致一問題;可合理地預期:某些工作負荷將完全合適於晶粒內置的元資料中,因而可能導致其DRAM元資料迅速地到達一最近最少使用狀態(例如,指定該集合中之條目中最高的LRU值,且因而符合被收回的條件)。
100‧‧‧處理器管線
102‧‧‧提取階段
104‧‧‧長度解碼階段
106‧‧‧解碼階段
108‧‧‧分配階段
110‧‧‧重命名階段
112‧‧‧排程階段
114‧‧‧暫存器讀取/記憶體讀取階段
116‧‧‧執行階段
118‧‧‧寫回/記憶體寫入階段
122‧‧‧異常處置階段
124‧‧‧提交階段
130‧‧‧前端單元
150‧‧‧執行引擎單元
170‧‧‧記憶體單元
190‧‧‧處理器核心
132‧‧‧分支預測單元
134‧‧‧指令快取記憶體單元
136‧‧‧指令轉譯後備緩衝區
138‧‧‧指令提取單元
140‧‧‧解碼單元
152‧‧‧重命名/分配器單元
154‧‧‧指令引退單元
156‧‧‧排程器單元
158‧‧‧實體暫存器檔案單元
160‧‧‧執行叢集
162‧‧‧執行單元
164‧‧‧記憶體存取單元
172‧‧‧資料轉譯後備緩衝區單元
174‧‧‧資料快取記憶體單元
176‧‧‧二階快取記憶體單元
200、310、315、415、470、480、800、1300‧‧‧處理器
202A-N‧‧‧核心
210‧‧‧系統代理單元
216‧‧‧匯流排控制器單元
214、472、482‧‧‧整合式記憶體控制器單元
208‧‧‧特殊用途邏輯
206‧‧‧共用快取記憶體單元
212‧‧‧環狀互連單元
300、400、500‧‧‧系統
320‧‧‧控制中心
390‧‧‧圖形記憶體控制中心
350‧‧‧輸入/輸出控制中心
340、432、434‧‧‧記憶體
345、438、620‧‧‧共處理器
360‧‧‧輸入/輸出裝置
395‧‧‧連接
450‧‧‧點對點互連
476、478、486、488、494、498‧‧‧點對點介面電路
452、454‧‧‧點對點介面
490‧‧‧晶片組
439‧‧‧高效能介面
496‧‧‧介面
416‧‧‧第一匯流排
414、514‧‧‧輸入/輸出裝置
418‧‧‧匯流排橋接器
420‧‧‧第二匯流排
422‧‧‧鍵盤及/或滑鼠
427‧‧‧通訊裝置
430‧‧‧程式碼及資料
428‧‧‧儲存單元
424‧‧‧音訊輸入/輸出
472、482‧‧‧整合式記憶體及輸入/輸出控制邏輯
515‧‧‧傳統輸入/輸出裝置
600‧‧‧系統單晶片
602‧‧‧互連單元
610‧‧‧應用處理器
630‧‧‧靜態機存取記憶體單元
632‧‧‧直接記憶體存取單元
640‧‧‧顯示單元
702‧‧‧高階語言
704‧‧‧x86編譯器
714‧‧‧不具有x86指令集核心之處理器
716‧‧‧具有至少一x86指令集核心之處理器
706‧‧‧x86二進制碼
708‧‧‧替代指令集編譯器
710‧‧‧替代指令集二進制碼
712‧‧‧指令轉換器
810、1010‧‧‧一階快取記憶體
820、1020‧‧‧二階快取記憶體
811、821‧‧‧元資料
812、823‧‧‧資料
802‧‧‧要求端
830、1030‧‧‧主記憶體
1015、1025‧‧‧快取記憶體同步電路
1011‧‧‧額外的元資料
1110‧‧‧二階快取記憶體路註釋
1101‧‧‧要求
1310‧‧‧N階快取記憶體
1320‧‧‧N+1階快取記憶體
可參照前文中之實施方式且配合下列圖式而對本發明有更佳的了解,在該等圖式中:第1A圖是根據本發明的實施例的一例示循序管線以及一例示暫存器重命名、亂序發出/執行管線之一方塊圖;第1B圖是將被包含在根據本發明的實施例的一處理器中之一循序架構核心及一例示暫存器重命名、亂序發出/執行架構核心的一實施例之一方塊圖;第2圖是根據本發明的實施例而具有一個以上的核心 且可具有一整合式記憶體控制器及圖形的一單核心處理器及一多核心處理器之一方塊圖;第3圖示出根據本發明的一實施例的一系統之一方塊圖;第4圖示出根據本發明的一實施例的一第二系統之一方塊圖;第5圖示出根據本發明的一實施例的一第三系統之一方塊圖;第6圖示出根據本發明的一實施例的一系統單晶片(System on a Chip;簡稱SoC)之一方塊圖;第7圖示出根據本發明的實施例而使用一軟體指令轉換器將一來源指令集中之二進制指令轉換為一目標指令集中之二進制指令的一對照方塊圖;第8圖示出一處理器架構的一實施例之相關元件;第9A-B圖示出於實施一最近最少使用(LRU)收回策略時在L1及L2快取記憶體中保持的資料;第10圖示出L2與L1間之資料的內部通訊保證不會自該L2收回某些快取列的資料之一實施例;第11圖示出該L2快取記憶體內之某些LRU值被設定為一最小值而保證該資料不會被收回之一實施例;第12圖示出根據本發明的一實施例之一程序;第13圖示出一N階快取記憶體與一N+1階快取記憶體間之資料的內部通訊保證不會自該N+1階快取記憶體收回某些快取列的資料之一實施例。
【發明內容及實施方式】
在下文的說明中,為了解說之目的,述及了許多特定細節,以便提供對下文所述的本發明的實施例之徹底了解。然而,熟悉此項技術者應可了解:可在沒有這些特定細節的情形下實施本發明的該等實施例。在其他的情形中,以方塊圖形式示出習知的結構及裝置,以避免模糊了本發明的該等實施例之基本原理。
例示處理器架構及資料類型
第1A圖是根據本發明的實施例的一例示循序管線(in-order pipeline)以及一例示暫存器重命名(register renaming)、亂序發出/執行管線(out-of-order issue/execution pipeline)之一方塊圖。第1B圖是將被包含在根據本發明的實施例的一處理器中之一循序架構核心及一例示暫存器重命名、亂序發出/執行架構核心的一實施例之一方塊圖。第1A-B圖中之實線框示出循序管線及循序核心,而在可供選擇採用之情形下添加的虛線框示出暫存器重命名、亂序發出/執行管線及核心。假定該循序態樣是該亂序態樣的一子集,則將說明該亂序態樣。
在第1A圖中,一處理器管線100包含一提取階段102、一長度解碼階段104、一解碼階段106、一分配階段108、一重命名階段110、一排程(也被稱為派發或發出)階段112、一暫存器讀取/記憶體讀取階段114、一 執行階段116、一寫回/記憶體寫入階段118、一異常處置階段122、以及一提交階段124。
第1B圖示出包含被耦合到一執行引擎單元150的一前端單元130之處理器核心190,而該前端單元130及該執行引擎單元150都被耦合到一記憶體單元170。該核心190可以是一精簡指令集計算(Reduced Instruction Set Computing;簡稱RISC)核心、一複雜指令集計算(Complex Instruction Set Computing;簡稱CISC)核心、一極長指令字(Very Long Instruction Word;簡稱VLIW)核心、或一混合或替代核心類型。作為又一選項,該核心190可以是諸如網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(General Purpose computing Graphics Processing Unit;簡稱GPGPU)核心、或圖形核心等的特殊用途核心。
前端單元130包含被耦合到一指令快取記憶體單元134之一分支預測單元132,該指令快取記憶體單元134被耦合到一指令轉譯後備緩衝區(Translation Lookaside Buffer;簡稱TLB)136,該指令TLB 136被耦合到一指令提取單元138,該指令提取單元138被耦合到一解碼單元140。解碼單元140(或解碼器)可將指令解碼,且產生自原始指令解碼的、或以其他方式反映原始指令的、或自原始指令衍生的一或多個微操作、微碼入口點(entry point)、微指令、其他指令、或其他控制信號,作為一輸出。可使用各種不同的機制實施解碼單元140。適當的機 制之例子包括但不限於查詢表、硬體實施方式、可程式邏輯陣列(Programmable Logic Array;簡稱PLA)、及微碼唯讀記憶體(Read Only Memory;簡稱ROM)等的機制。在一實施例中,核心190包含一微碼ROM或用於儲存某些巨集指令的微碼之其他媒體(例如,在解碼單元140中或在前端單元130內的其他部分內)。解碼單元140被耦合到執行引擎單元150中之一重命名/分配器單元152。
執行引擎單元150包含被耦合到一指令引退單元154及一組的一或多個排程器單元156之重命名/分配器單元152。該一或多個排程器單元156代表其中包括保留站(reservation station)、中央指令視窗(central instruction window)等的任何數目之不同的排程器。該一或多個排程器單元156被耦合到一或多個實體暫存器檔案單元158。該一或多個實體暫存器檔案單元158中之每一實體暫存器檔案單元代表一或多個實體暫存器檔案,該等實體暫存器檔案中之不同的實體暫存器檔案儲存諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,係為將要被執行的下一指令的位址之指令指標)等的一或多個不同的資料類型。在一實施例中,該一或多個實體暫存器檔案單元158包含一向量暫存器單元、一寫入遮罩(write mask)暫存器單元、以及一純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器(vector mask register)、以及一般用途暫存器。該 一或多個實體暫存器檔案單元158被指令引退單元154重疊,而示出可實施暫存器重命名及亂序執行的各種方式(例如,使用一或多個重排序緩衝器(reorder buffer)以及一或多個引退暫存器檔案;使用一或多個未來檔案(future file)、一或多個歷史緩衝器(history buffer)、以及一或多個引退暫存器檔案;使用一暫存器對照表(register map)以及一集區(pool)的暫存器等的方式)。該引退單元154及該一或多個實體暫存器檔案單元158被耦合到一或多個執行叢集160。該一或多個執行叢集160包含一組的一或多個執行單元162及一組的一或多個記憶體存取單元164。該等執行單元162可執行各種操作(例如,移位、加法、減法、乘法),且可對各種類型的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行操作。雖然某些實施例可包含專用於一些特定功能或一些特定組的功能之一些執行單元,但是其他實施例可以只包含全都被用於執行所有功能的一個執行單元或多個執行單元。所示之排程器單元156、實體暫存器檔案單元158、及執行叢集160可能是複數個,這是因為某些實施例為某些類型的資料/操作創建個別的管線(例如,分別有其自己的排程器單元、實體暫存器檔案單元、及/或執行叢集之一純量整數管線、一純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或一記憶體存取管線;且在一個別的記憶體存取管線之情形中,實施只有該管線的執行叢集具有記憶體存取單元164之某些實 施例)。我們亦應可了解:當使用個別的管線時,這些管線中之一或多個管線可以是亂序發出/執行,且其餘的管線可以是循序執行。
該組記憶體存取單元164被耦合到記憶體單元170,記憶體單元170包含被耦合到一資料快取記憶體單元174之一資料TLB單元172,且該資料快取記憶體單元174被耦合到一個二階(L2)快取記憶體單元176。在一實施例中,該等記憶體存取單元164可包含分別被耦合到記憶體單元170中之資料TLB單元172的一載入單元、一儲存位址單元、及一儲存資料單元。指令快取記憶體單元134被進一步耦合到記憶體單元170中之二階(L2)快取記憶體單元176。L2快取記憶體單元176被耦合到一或多個其他階的快取記憶體,且最後被耦合到一主記憶體。
舉例而言,該例示暫存器重命名、亂序發出/執行核心架構可以下列方式實施管線100:(1)指令提取單元138執行提取及長度解碼階段102及104;(2)解碼單元140執行解碼階段106;(3)重命名/分配器單元152執行分配階段108及重命名階段110;(4)排程器單元156執行排程階段112;(5)實體暫存器檔案單元158及記憶體單元170執行暫存器讀取/記憶體讀取階段114,執行叢集160執行該執行階段116;(6)記憶體單元170及實體暫存器檔案單元158執行寫回/記憶體寫入階段118;(7)各單元可能涉及異常處置階段122;以及(8)指令引退單元154及實體暫存器檔案單元158執行 提交階段124。
核心190可支援其中包括本發明述及的指令之一或多種指令集,例如:x86指令集(且具有在較新版本中被加入的某些延伸);MIPS Technologies(位於Sunnyvale,CA)的MIPS指令集;ARM Holdings(位於Sunnyvale,CA)的ARM指令集(且具有諸如NEON等的一些可供選擇採用的延伸)。在一實施例中,核心190包含用於支援緊縮資料指令集延伸(例如,AVX1、AVX2、及/或將於下文中說明之某些形式的一般向量親和指令格式(U=0及/或U=1))之邏輯,因而可使用緊縮資料執行許多多媒體應用程式使用的操作。
我們應可了解:該核心可支援多緒執行(multithreading)(執行兩個或更多個平行組的操作或執行緒(thread)),且可以其中包括時間切割(time sliced)多緒執行、同時多緒執行(當一單一實體核心將一邏輯核心提供給每一執行緒時,該實體核心是同時多緒執行)、或以上兩者的一組合(例如,諸如在Intel®超執行緒(Hyperthreading)技術中之時間切割式提取及解碼以及後續的同時多緒執行)之各種方式支援多緒執行。
雖然是在亂序執行的情境中說明暫存器重命名,但是我們應可了解:可將暫存器重命名用於循序架構。雖然該處理器的所示實施例也包含個別的指令及資料快取記憶體單元134/174以及一共用的L2快取記憶體單元176,但是替代實施例可具有用於指令及資料之諸如一個一階(L1) 內部快取記憶體等的一單一內部快取記憶體、或多階的內部快取記憶體。在某些實施例中,該系統可包含一內部快取記憶體及在核心及/或處理器外部的一外部快取記憶體之一組合。在替代實施例中,所有該等快取記憶體都可以是在核心及/或處理器的外部。
第2圖是根據本發明的實施例而可具有一個以上的核心且可具有一整合式記憶體控制器且可具有整合式圖形之一處理器200之一方塊圖。第2圖中之實線框示出具有一單一核心202A、一系統代理單元210、及一組的一或多個匯流排控制器單元216之一處理器200,而可選地添加之虛線框示出具有多個核心202A-N、系統代理單元210中之一組的一或多個整合式記憶體控制器單元214、及特殊用途邏輯208之一替代處理器200。
因此,處理器200之不同的實施例可包括:(1)具有係為整合式圖形及/或科學(執行率)邏輯的特殊用途邏輯208(可包括一或多個核心)及係為一或多個一般用途核心的核心202A-N(例如,一般用途循序執行核心、一般用途亂序執行核心、以上兩者的一組合)之一CPU;(2)具有係為主要適用於圖形及/或科學(執行率)的大量特殊用途核心的核心202A-N之一共處理器;以及(3)具有係為大量一般用途循序執行核心的核心202A-N之一共處理器。因此,處理器200可以是一般用途處理器、諸如網路或通訊處理器、壓縮引擎、圖形處理器、通用圖形處理單元(GPGPU)、高執行率的多重整合核心 (Many Integrated Core;簡稱MIC)共處理器(包含30個或更多個核心)等的共處理器或特殊用途處理器、或嵌入式處理器等的處理器。可在一或多個晶片上實施該處理器。處理器200可以是使用諸如雙載子互補金屬氧化物半導體(BiCMOS)、互補金屬氧化物半導體(CMOS)或N型金屬氧化物半導體(NMOS)等的任何數目的製程技術實作之一或多個基材的一部分,且/或可在該一或多個基材上實施處理器200。
記憶體階層包括該等核心內之一或多階的快取記憶體、一組的一或多個共用快取記憶體單元206、以及被耦合到該組的整合式記憶體控制器單元214之外部記憶體(圖中未示出)。該組的共用快取記憶體單元206可包括諸如二階(L2)、三階(L3)、四階(L4)、或其他階的快取記憶體等的一或多個中階快取記憶體、最後一階快取記憶體(Last Level Cache;簡稱LLC)、及/或以上各項之組合。雖然在一實施例中,一環狀互連單元212將整合式圖形邏輯208、該組共用快取記憶體單元206、以及系統代理單元210/整合式記憶體控制器單元214互連,但是替代實施例可將任何數目的習知技術用於將這些單元互連。在一實施例中,於一或多個快取記憶體單元206與核心202A-N之間維持一致性。
顯然在一L2快取記憶體服務多個L1快取記憶體之情況中,可諸如藉由將多個"超MRU"("Super MRU")值指定給該L2快取記憶體,以便指示該條目的LRU正在被一 些特定L1快取記憶體或一些L1快取記憶體的組合追蹤,而延伸該架構。
在某些實施例中,該等核心202A-N中之一或多個核心能夠進行多緒執行。系統代理210包含用於協調及操作核心202A-N的那些組件。系統代理單元210可包含諸如一功率控制單元(Power Control Unit;簡稱PCU)及一顯示單元。該PCU可以是或包括用於管制核心202A-N及整合式圖形邏輯208的電源狀態所需之邏輯及組件。該顯示單元被用於驅動一或多個外部連接的顯示器。
核心202A-N在架構指令集方面可以是同質的或異質的;亦即,核心202A-N中之兩個或更多個核心能夠執行相同的指令集,而其他核心只能夠執行該指令集的一子集、或一不同的指令集。在一實施例中,核心202A-N是異質的,且包括將於下文中述及的"小"核心及"大"核心。
第3-6圖是一些例示電腦架構之方塊圖。在膝上型電腦、桌上型電腦、平板電腦、手持個人電腦(PC)、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(Digital Signal Processor;簡稱DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放器、手持裝置、以及各種其他電子裝置的技術中習知之其他系統設計及組態也是適用的。一般而言,能夠包含本發明述及的處理器及/或其他執行邏輯之極多種的系統或電子裝置也是普遍適用的。
現在請參閱第3圖,圖中示出根據本發明的一實施例的一系統300之一方塊圖。系統300可包含被耦合到一控制中心320之一或多個處理器310、315。在一實施例中,控制中心320包括一圖形記憶體控制中心(Graphics Memory Controller Hub;簡稱GMCH)390及一輸入/輸出控制中心(Input/Output Hub;簡稱IOH)350(該等兩個控制中心可在各別的晶片上);該GMCH 390包括被耦合到記憶體340及一共處理器345之記憶體及圖形控制器;IOH 350將一些輸入/輸出(Input/Output;簡稱I/O)裝置360耦合到GMCH 390。在替代實施例中,一或兩個記憶體及圖形控制器被整合在該處理器內(如本發明所述),記憶體340及共處理器345被直接耦合到處理器310,且控制中心320連同IOH 350是在一單晶片中。
第3圖中以折線表示額外的處理器315之可供選擇採用的本質。每一處理器310、315可包含一或多個本發明述及的處理核心,且可以是處理器200的某一版本。
記憶體340可以是諸如動態隨機存取記憶體(Dynamic Random Access Memory;簡稱DRAM)、相變化記憶體(Phase Change Memory;簡稱PCM)、或以上兩者的組合。對於至少一實施例而言,控制中心320經由諸如一前端匯流排(Front Side Bus;簡稱FSB)等的一多點傳輸匯流排(multi-drop bus)、諸如快速路徑互連(QuickPath Interconnect;簡稱QPI)等的點對點介面、或類似的連接395而與處理器310、315通訊。
在一實施例中,共處理器345是諸如高執行率MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、通用圖形處理單元(GPGPU)、或嵌入式處理器等的一特殊用途處理器。在一實施例中,控制中心320可包括一整合式圖形加速器。
在其中包括架構、微架構、熱特性、及功率消耗特性等的優點衡量項目而言,實體資源310、315可能有各種差異。
在一實施例中,處理器310執行用於控制一般類型的資料處理操作之指令。共處理器指令可被嵌入該等指令內。處理器310將這些共處理器指令辨識為應被附屬的共處理器345執行的類型之指令。因此,處理器310經由一共處理器匯流排或其他互連而將這些共處理器指令(或代表共處理器指令之控制信號)發出到共處理器345。一或多個共處理器345接受且執行該等被接收之共處理器指令。
現在請參閱第4圖,圖中示出根據本發明的一實施例的一第一更特定之例示系統400之一方塊圖。如第4圖所示,多處理器系統400是一點對點互連系統,且包含經由一點對點互連450而被耦合之一第一處理器470及一第二處理器480。處理器470及480中之每一處理器可以是處理器200的某一版本。在本發明的一實施例中,處理器470及480分別是處理器310及315,而共處理器438是共處理器345。在另一實施例中,處理器470及480分別 是處理器310及共處理器345。
處理器470及480被示出分別包含整合式記憶體控制器(Integrated Memory Controller;簡稱IMC)單元472及482。處理器470也包含點對點(Point-to-Point;簡稱P-P)介面476及478作為其匯流排控制器單元的一部分;同樣地,第二處理器480包含P-P介面486及488。處理器470、480可使用P-P介面電路478、488而經由點對點(P-P)介面450交換資訊。如第4圖所示,IMC 472及482將該等處理器耦合到各別的記憶體,亦即,耦合到可以是在本地被連接到該等各別的處理器的主記憶體的一部分之一記憶體432及一記憶體434。
處理器470、480可分別使用點對點介面電路476、494、486、498而經由個別的P-P介面452、454與一晶片組490交換資訊。晶片組490在可供選擇採用之情形下可經由一高效能介面439而與共處理器438交換資訊。在一實施例中,共處理器438是諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、通用圖形處理單元(GPGPU)、或嵌入式處理器等的一特殊用途處理器。
一共用快取記憶體(圖中未示出)可被包含在任一處理器中,或是在兩個處理器之外,但是仍然經由一P-P互連而與該等處理器連接,以致若處理器被置於一低功率模式時,可將任一或兩個處理器的本地快取記憶體資訊儲存在該共用快取記憶體。
晶片組490可經由一介面496而被耦合到一第一匯流排416。在一實施例中,第一匯流排416可以是一週邊組件互連(Peripheral Component Interconnect;簡稱PCI)匯流排、或諸如一週邊組件高速互連(PCI Express)匯流排或另一第三代I/O互連匯流排等的一匯流排,但是本發明之範圍不限於此。
如第4圖所示,各種I/O裝置414以及一匯流排橋接器418可被耦合到第一匯流排416,該匯流排橋接器418將第一匯流排416耦合到一第二匯流排420。在一實施例中,諸如共處理器、高執行率MIC處理器、通用圖形處理單元(GPGPU)、加速器(例如,圖形加速器或數位信號處理(Digital Signal Processing;簡稱DSP)單元)、現場可程式閘陣列、或任何其他處理器等的一或多個額外的處理器415被耦合到第一匯流排416。在一實施例中,第二匯流排420可以是一低接腳數(Low Pin Count;簡稱LPC)匯流排。在一實施例中,其中包括諸如一鍵盤及/或滑鼠422、一些通訊裝置427、諸如磁碟機或可包含指令/程式碼及資料430之其他大量儲存裝置等的儲存單元428之各種裝置可被耦合到第二匯流排420。此外,一音訊I/O 424可被耦合到第二匯流排420。請注意,其他的架構也是可能的。例如,一系統可不實施第4圖所示之點對點架構,而替代地實施多點傳輸匯流排或其他的此類架構。
現在請參閱第5圖,圖中示出根據本發明的一實施例 的一第二更特定之例示系統500之一方塊圖。第4及5圖中之類似元件具有類似的參考編號,且第5圖中已省略了第4圖之某些態樣,以避免模糊了第5圖之其他態樣。
第5圖示出處理器470、480可分別包含整合式記憶體及I/O控制邏輯(Control Logic;簡稱CL)472及482。因此,CL 472、482包含整合式記憶體控制器單元,且包含I/O控制邏輯。第5圖示出:不只是記憶體432、434被耦合到CL 472、482,而且一些I/O裝置514也被耦合到控制邏輯472、482。傳統I/O裝置515被耦合到晶片組490。
現在請參閱第6圖,圖中示出根據本發明的一實施例的一SoC 600之一方塊圖。第2圖中之類似元件具有類似的參考號碼。此外,虛線框是更先進的SoC上的一些可選的特徵。在第6圖中,一互連單元602被耦合到:一應用處理器610,該應用處理器610包含一組的一或多個核心202A-N及一或多個共用快取記憶體單元206;一系統代理單元210;一匯流排控制器單元216;一整合式記憶體控制器單元214;一組或一或多個共處理器620,該等共處理器620可包括整合式圖形邏輯、一影像處理器、一音訊處理器、及一視訊處理器;一靜態隨機存取記憶體(Static Random Access Memory;簡稱SRAM)單元630;一直接記憶體存取(Direct Memory Access;簡稱DMA)單元632;以及用於耦合到一或多個外部顯示器之一顯示單元640。在一實施例中,該一或多個共處理器 620包括諸如網路或通訊處理器、壓縮引擎、通用圖形處理單元(GPGPU)、高執行率MIC處理器、或嵌入式處理器等的一特殊用途處理器。
可施加諸如第4圖所示之程式碼430等的程式碼而輸入用於執行本發明述及的功能且產生輸出資訊之指令。可以習知之方式將該輸出資訊施加到一或多個輸出裝置。為了便於說明本申請案,處理系統包括具有諸如一數位信號處理器(DSP)、一微控制器、一特定應用積體電路(Application Specific Integrated Circuit;簡稱ASIC)、或一微處理器等的一處理器之任何系統。
可以高階程序或物件導向程式語言實施該程式碼,以便與一處理系統通訊。如有需要,亦可以組合語言或機器語言實施該程式碼。事實上,本發明述及的該等機制在範圍方面不限於任何特定程式語言。無論如何,該語言可以是一編譯式或直譯式語言。
可以機器可讀取的媒體中儲存之代表性指令實施至少一實施例之一或多個態樣,該等代表性指令代表處理器內之各種邏輯,且該等代表性指令被一機器讀取時,將使該機器製造用於執行本發明述及的該等技術之邏輯。被稱為"智慧財產權核心"("IP core")之此種表示法可被儲存在一實體之機器可讀取的媒體,且被供應到各客戶或製造設施,以便載入可實際製造出該邏輯或處理器之製造機器。
此種機器可讀取的媒體可包括(但不限於)由機器或裝置製造或形成的非暫態實體物品配置,其中包括諸如硬 碟等的儲存媒體、包括軟碟、光碟、唯讀光碟(Compact Disk Read Only Memory;簡稱CD-ROM)、可複寫式光碟(Compact Disk Rewritable;簡稱CD-RW)、及磁光碟之任何其他類型的磁碟、諸如唯讀記憶體(Read Only Memory;簡稱ROM)、動態隨機存取記憶體(Dynamic Random Access Memory;簡稱DRAM)、靜態隨機存取記憶體(SRAM)等的隨機存取記憶體(Random Access Memory;簡稱RAM)、可抹除可程式唯讀記憶體(Erasable Programmable Read-Only Memory;簡稱EPROM)、快閃記憶體、電氣可抹除可程式唯讀記憶體(Electrically Erasable Programmable ROM;簡稱EEPROM)、相變化記憶體(PCM)等的半導體裝置、磁卡或光學卡、或適於儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例也包括含有指令或含有諸如硬體描述語言(Hardware Description Language;簡稱HDL)等的設計資料之非暫態實體機器可讀取的媒體,其中該HDL界定了本發明述及的結構、電路、設備、處理器、及/或系統特徵。此類實施例亦可被稱為程式產品。
在某些例子中,一指令轉換器可被用於將指令自一來源指令集轉換為一目標指令集。例如,該指令轉換器可(諸如使用靜態二進制轉譯、其中包括動態編譯之動態二進制轉譯、轉譯、仿真、或其他方式轉換)將一指令轉譯為將要被該核心處理的一或多個其他指令。可以軟體、硬體、韌體、或以上各項之一組合實施該指令轉換器。該指 令轉換器可設於處理器中,可設於處理器之外,或可部分地設於處理器中且部分地設於處理器之外。
第7圖是根據本發明的實施例而使用一軟體指令轉換器將一來源指令集中之二進制指令轉換為一目標指令集中之二進制指令的一對照方塊圖。在該所示之實施例中,該指令轉換器是一軟體指令轉換器,但是可替代地以軟體、韌體、硬體、或以上各項的各種組合實施該指令轉換器。第7圖示出:可使用一x86編譯器704編譯以一高階語言702撰寫的一程式,而產生可由具有至少一x86指令集核心之處理器716以原生方式執行之x86二進制碼706。具有至少一x86指令集核心之處理器716代表可以相容之方式執行或以其他方式處理下列項目以便得到與具有至少一x86指令集核心之Intel處理器實質上相同的結果因而實質上執行與具有至少一x86指令集核心之Intel處理器相同的功能之任何處理器:(1)Intel x86指令集核心的指令集之很大一部分;或(2)目標在具有至少一x86指令集核心之Intel處理器上運行的應用程式或其他軟體之目標碼(object code)版本。該x86編譯器704代表可操作而產生可以在具有或不具有額外鏈接處理之情形下在具有至少一x86指令集核心之處理器716上執行的x86二進制碼706(例如,目標碼)之編譯器。同樣地,第7圖示出:可使用一替代指令集編譯器708編譯以該高階語言702撰寫的程式,而產生可由不具有至少一x86指令集核心之處理器714(例如,具有用於執行MIPS Technologies (位於Sunnyvale,CA)的MIPS指令集及/或用於執行ARM Holdings(位於Sunnyvale,CA)的ARM指令集的核心之處理器)以原生方式執行之替代指令集二進制碼710。指令轉換器712被用於將x86二進制碼706轉換為可由不具有x86指令集核心之處理器714以原生方式執行之碼。該被轉換的碼不可能相同於替代指令集二進制碼710,這是因為能夠執行指令轉換的指令轉換器難以轉換出相同的二進制碼;然而,該被轉換的碼將完成一般的操作,且將構成來自該替代指令集之指令。因此,指令轉換器712代表利用仿真、模擬、或任何其他程序而可讓不具有x86指令集處理器或核心之處理器或其他電子裝置可執行x86二進制碼706的軟體、韌體、硬體、或以上各項的組合。
用於在多個快取層級之間的共用最近最少使用(LRU)策略的設備及方法
下文中述及的本發明之實施例去除了不同的快取層級的該等LRU機制間之獨立性,且容許創建一種對處理器要求的改良式最近最少使用(LRU)追蹤。在對將L2資料不當地收回到主記憶體的懲罰是高延遲的某些使用案例中,這些實施例提供了較佳的L2快取記憶體命中率,且避免了應用程式中某些碼被處理器密集且週期性地存取之脆弱效應。
在一實施例中,如果L1快取記憶體根據及其自己的LRU追蹤策略而執行收回,則自該L1快取記憶體收回的 任何條目可在L2快取記憶體中被標示為一最近最多使用(MRU)條目(例如,如下文所述,設定為1的一LRU值)。此外,將不在該L1快取記憶體中分配新的條目,除非該L2快取記憶體提出了此要求。使用這些原則之後,可藉由將該L1快取記憶體中保有的條目視為該L2快取記憶體的"超最近最多使用"條目(例如,如下文所述,設定為0的一LRU值),而管理該L2快取記憶體的LRU所有權。當決定已自該L1快取記憶體收回一條目時,最初可將該條目設定為1的LRU值(亦即,最近最多使用),且開始在該L2快取記憶體中老化。因此,該L2快取記憶體追蹤該處理器"最近最少使用"的真實順序,這是因為自該L1快取記憶體收回各條目且這些條目開始在該L2快取記憶體中老化的順序是該L1快取記憶體的LRU機制之一直接函數(direct function)。
在L1及L2快取記憶體是具有相同數目的集合之集合關聯式快取記憶體(但是L2比L1更為關聯式)之情況中,使該L2快取記憶體持續地得知哪些條目是在該L1快取記憶體中之一種方式是:當該L2快取記憶體將資料傳送到該L1快取記憶體時,由該L2快取記憶體提供(該L2集合之)一L2路編號,且當該L1快取記憶體向該L2快取記憶體要求新資料時,由該L1快取記憶體提供用於指示(該集合之)現在的各L2路的一向量。
本發明的某些實施例利用N路集合關聯式快取記憶體(N-Way Set associative cache),其中每一快取記憶體被 細分為一些集合,且每一集合有N個"路"。在這些實施例中,每一集合係與系統記憶體位址空間的一特定範圍相關聯,因而來自系統記憶體的一特定範圍之快取列(cache line)只可被儲存在該等集合中之一集合。在一N路集合關聯式快取記憶體中,每一集合可儲存N個快取列。
第8圖示出具有一階層內的兩階的快取記憶體(亦即,一L1快取記憶體810及一L2快取記憶體820)的一處理器800之一典型配置。在該例子中,兩個快取層級810、820都是集合關聯式。L1快取記憶體810是小且快速的,被用於在晶粒內儲存元資料811(例如,標籤、有效位元、已更改指示(dirty indication)、LRU指示符等的元資料)以及實際的資料812。L2快取記憶體820是較大且較緩慢的,且只在晶粒內存放元資料821,且實際的資料823被儲存在晶粒外的一記憶體822。然而,請注意,本發明之基本原理不限於該特定實施例。例如,在某些實施例中,兩個快取層級810、820都可在晶粒內儲存資料及元資料。此外,可能有在L1之上或在L2之下的額外階的快取記憶體,這些額外階的快取記憶體可參與或可不參與這些實施例。在該例子中,L1快取記憶體810及L2快取記憶體820有相同數目的集合,且每一集合中有相同大小的條目。然而,L1快取記憶體810的每一集合只能存放四個條目,而L2快取記憶體820的每一集合存放了十個條目。
一要求端802(處理器800執行的一執行緒)使用一 多位元位址產生對特定快取列的要求,而該多位元位址係用於識別該等快取列。該快取記憶體可將該等位址位元的一子集當作集合編號,且該快取記憶體可將該等位址位元的一不同之子集當作一標籤。如果該等快取列被儲存在L1快取記憶體810,則可將該等快取列提供給要求端802。如果在L1中並未發現該等快取列,且如果該等快取列被儲存在L2快取記憶體820,則可將該等快取列提供給L1快取記憶體810以及要求端802。如果並非如此,則如下文所述,可自主記憶體830將該等快取列提供給要求端802,且然後也將該等快取列儲存在該L2及L1快取記憶體。
第8圖也示出用於L1快取記憶體的例示元資料811以及用於L2快取記憶體的元資料821,該等元資料包含標籤(亦即,位址部分)、L1快取記憶體810中之一特定集合的各LRU值、以及L2快取記憶體820中之相同編號的集合(在該例子中被識別為集合n)的各LRU值。第8圖的L2集合中以粗體的視覺指示符之方式將路1、5、6、8標示為這些L2路目前也正在被該L1快取記憶體快取。
在該架構中,LRU數目越小,該條目最近越常被要求。L1快取記憶體810及L2快取記憶體820獨立地處理其LRU。舉例而言,如L1快取記憶體810的LRU所示,處理器800已向該集合要求了一串的位址,且以標籤值307、242、045、378、045總結那些位址(按照順序排列 這些標籤,最近最常被要求的示於最後)。注意,標籤045被要求多次,且所示之LRU是最近被要求次數的結果。
如該L2快取記憶體中之該等LRU值所示,可看出最近經常向該L2要求具有標籤378及045的位址(這是因為該等標籤有L2中之小的LRU數目)。亦可看出:路2及4(標籤624及821)比路6及8(標籤242及307)最近較常被L1向L2要求。然而,標籤624及821並不也在L1快取記憶體810中。可考慮下列的CPU要求序列而解釋此種情況:307、479、242、023、459、307、242、343、821、624、242、307、378、307、045、307、242、045、378、045。
當到了要分配標籤378及045(加底線且粗體的標籤)之L1路的時間時,標籤821及624(加底線的標籤)是最近最少使用的標籤。因而也解釋了:為何標籤242及307常被處理器800使用,而使得自從向該L2快取記憶體要求該等標籤之後,該等標籤就在一段長時間中被保留在該L1快取記憶體中,但是該等標籤242及307在該L2快取記憶體中卻有較大的老化LRU數字。就該L2快取記憶體而言,已在一段長時間中沒有使用這些條目。
第9A-B圖示出本發明的實施例能夠解決之問題,圖中示出:在處理器800現在要求標籤是888(該標籤不在L1快取記憶體中,也不在L2快取記憶體中)的例子中, 兩個快取記憶體810及820的元資料811及821中之標籤及LRU值的之前影像(第9A圖)以及之後影像(第9B圖)。第9A-B圖示出無法使該L2快取記憶體知道實際的處理器位址使用之問題程度。
在一典型架構中,L2快取記憶體820將自主記憶體830提取具有標籤888的位址的資料,將該資料放入L2快取記憶體820,且將該資料傳送到L1快取記憶體810。L2快取記憶體820必須收回一條目,以便為具有標籤888的該條目騰出空間,且在該所示例子中,L2快取記憶體820將選擇收回有最高LRU值9的條目8,而將具有標籤307的該條目逐出該快取記憶體。L2快取記憶體820不知道具有標籤307的位址最近被處理器800使用,這是因為L2快取記憶體820最近沒有自L1快取記憶體810收到對該標籤值的要求。因而有了一條目被存放在L1快取記憶體但是並未被存放在L2快取記憶體的一案例(在該例子中是短暫的案例)。
在該例子中,也自L1快取記憶體810收回具有標籤307的快取列(取決於該標籤在L1中之LRU,在一後續要求中,也可能發生一條目被存放在L1快取記憶體但是並未被存放在L2快取記憶體的一案例之一非短暫的案例)。如果處理器800在短時間之後需要重新存取該位址,則將無法在L1快取記憶體810或L2快取記憶體820中找到具有標籤307的該位址。因此,縱然L2快取記憶體中有存放十個最近最少使用的條目之足夠的路,該系統 的第四最近最少使用的條目仍然無法被存放在任何快取記憶體中。
將以與第10-11圖有關之方式說明解決該問題的本發明之一實施例。尤其如第10圖所示,L2快取記憶體1020的快取記憶體同步電路1025傳送被指定給L1快取記憶體1010的快取列相關聯之L2路,且L1快取記憶體1010的快取記憶體同步電路1015於將一要求傳送到該L2快取記憶體時,也傳送目前也被存放在L1快取記憶體1010的L2快取記憶體的路之細節。為了能夠執行上列的操作,L1快取記憶體1010以第11圖所示之方式被增強為保存額外的元資料1011,該額外的元資料1011儲存被用於每一條目的L2快取記憶體1020中之路,且存放了L1快取記憶體1010中之所有條目的額外的元資料1011(被識別為每一條目之"L2路註釋"1110)。在一實施例中,L2快取記憶體1020的快取記憶體同步電路1025在傳送對一L1快取記憶體要求的一回應時,將該指示提供給L1快取記憶體1010作為額外的元資料,而係自該L2快取記憶體服務或經由對L2快取記憶體1020的一新分配而自主記憶體830服務所有的L1快取記憶體要求。
本實施例的一相關部分是:在L2快取記憶體1020被通知那些路已不在L1快取記憶體1010中之前,L2快取記憶體1020不重新分配該等路。如前文所述,在一實施例中,當向L2快取記憶體1020要求資料時,L1快取記憶體1010的快取記憶體同步電路1015將其正在為該L2 集合存放的該等L2路通知該L2快取記憶體。該等集合編號可以是相同的或密切相關的。這是L1快取記憶體1010之可忽略的額外工作,這是因為L1快取記憶體1010在任何情況下由於要搜尋可能的L1命中而都要存取其整個集合的元資料1011。
如果向L2要求而導致來自主記憶體的一提取,則上述的該原則就足夠該L2快取記憶體避免將任何這些L2路分配給新資料。然而,該原則無法讓L2追蹤整體的"最近最少使用"狀態。因此,如第11圖所示,在一實施例中,L2快取記憶體1020的LRU計算電路(圖中未示出)將也被存放在該L1快取記憶體的所有的路視為"超最近最多使用",且為這些路設定零的LRU值。該原則保證:將不會回應L2快取記憶體1020自主記憶體830擷取一快取列而收回這些路。然而,一旦已自L1快取記憶體1010收回這些快取列中之一快取列之後,該L1快取記憶體的快取記憶體同步電路1015將通知該L2快取記憶體(該L1快取記憶體的快取記憶體同步電路1015將提供將不再包含該快取列的路之該等現有路之一指示)。該L2快取記憶體然後將該LRU值增加到1,且像往常一樣開始老化該快取列(亦即,增加該LRU值)。
以第11圖中之一例子解說該原則,在該例子中,將對標籤888的一要求1101自該L1快取記憶體傳送到該L2快取記憶體。該要求包括目前被儲存在該L1快取記憶體的該等路(亦即,路5、8、6、及1)之一指示。由於 自快取記憶體同步電路1025接收到該資訊,所以該L2快取記憶體中之該LRU計算電路(圖中未示出)將這些路的LRU值設定為0的超最近最多使用值(如圍繞這些路的粗體框所示)。請注意,該L2快取記憶體中之路2最初也有0的LRU值,這可能是因為該路在該L1快取記憶體上次提出要求時是在L1快取記憶體中。自主記憶體1030擷取被標籤888識別的快取列,且以取代有最高的LRU值5的L2路3中之條目之方式將該快取列儲存在該L2快取記憶體。然後如1102所示,將標籤888識別的條目提供給該L1快取記憶體,且該L2快取記憶體的該快取記憶體同步邏輯傳送被用於儲存該條目的路(在該例子中為路3)。該L1快取記憶體執行其自己的LRU策略,而以該新的條目(標籤888)取代L1路1(標籤307)中之現有條目。請注意,在此階段中,該L2快取記憶體可能不知道該L1快取記憶體中之哪一條目被取代(除非該L1快取記憶體將其各LRU值傳送到該L2快取記憶體)。然而,該L1快取記憶體下次提出要求時,該L1快取記憶體將以前文所述之方式將該等L2路註釋提供給該L2快取記憶體,且該L2將以前文所述之方式將這些條目設定為超最近最多使用值。
如第11圖所示,L2中之最高的(亦即,最老的)LRU值現在是路3的值5,而該路3有標籤479,且確實是先前示出的序列(307、479、242、023、459、307、242、343、821、624、242、307、378、307、045、307、 242、045、378、045)中之最近最少使用。
因此,藉由為該L2快取記憶體中之所有這些條目保持"超MRU"指示(例如,0的LRU值),將避免這些條目在該L2快取記憶體中過早老化。因此,消除了快取記憶體收回處理器最近存取的一條目之問題情況。
在一實施例中,L1快取記憶體1010的快取記憶體同步電路1015以一逐位元向量將其存放了哪些L2快取記憶體路之訊息告知該L2快取記憶體,且可經由寬度等於每一L2快取記憶體集合中之路的數目(例如,在所示之例子中為十個位元)的一匯流排傳送該逐位元向量。該L2快取記憶體的快取記憶體同步電路1025然後必須於將資料傳送到該L1快取記憶體時,指示L2中之哪一路目前被用於存放該資料。在一實施例中,使用能夠容納目前被L2使用的路的值之一較小的匯流排執行該指示。例如,在L2快取記憶體1020中有十個路之例子中,可使用一個4位元的匯流排。在任一方向中,都不需要指示被使用的集合編號,這是因為該指示是隱含在自L1快取記憶體1010傳送到L2快取記憶體1020的要求之位址中。
第12圖示出該L1快取記憶體與該L2快取記憶體之間對於一集合中之一單一條目(路)的LRU所有權的改變之一流程圖。在步驟1201中,該L2快取記憶體有LRU值的責任:在每一迭代中,增加未被存取的那些條目之LRU值。一旦該L2快取記憶體將該條目的資料傳送到該L1快取記憶體之後(如粗體箭頭所示),該條目的 LRU在步驟1202中現在被L1"擁有"。該L2快取記憶體將該路之其自己的LRU記錄設定為零(以便提供"超MRU"指示),且該LRU然後被該L1快取記憶體追蹤。在一實施例中,如前文所述,該L2 LRU演算法不遞增任何此種"超MRU"路的LRU。只要該條目保持在該L1快取記憶體中,該狀況將持續下去。
當該條目變成該集合的各L1條目中之最近最少使用而被自L1收回時(例如,當L1的該路被重新分配,或者如果因諸如處理器800使該L1快取記憶體中之該資料無效之一要求等的其他原因而自L1收回該條目時),該L1放棄該LRU的所有權(如虛線箭頭所示),且將不再於被傳送到該L2快取記憶體的任何向量中指示該路。然而,請注意,該虛線箭頭本身並不指示任何此種向量在該時間點被傳送。因此,該L1快取記憶體不再有該LRU的所有權,但是該L2快取記憶體不知道該狀況(且相信L1快取記憶體仍然有所有權),因而可視為該LRU在步驟1203中沒有擁有者。此種狀態通常是一種短期狀態。
在某一時間點,該L1快取記憶體可能使用該集合中之一位址而向該L2快取記憶體要求資料(如果自L1的收回容許重新分配而預期向L2要求該位址的資料,則可能立即發生該狀況)。用於指示該L1快取記憶體中存放的L2快取記憶體的路之一向量可被包含在該要求中,而一起被傳送到該L2快取記憶體,且如前文所述,該要求將不包含該被重新分配的L1條目先前存放的L2路指示。
一旦該L2快取記憶體存取該集合而分配或送回該集合之一不同的條目之後,該L2快取記憶體將一LRU值"1"(亦即,最低的非零值)指定給該L1放棄所有權的條目,且容許每當該集合被存取且該條目未被"命中"時遞增該條目之LRU。請注意,該L2快取記憶體通常永不送回剛剛移到"無擁有者"狀態的條目,這是因為這種情況會導致L1快取記憶體命中該條目,然而,在諸如L1快取記憶體被清空之後等的某些情況中,可能發生送回剛剛移到"無擁有者"狀態的條目。
雖然前文中係在一"L1"快取記憶體及"L2"快取記憶體的情境下說明本發明之實施例,但是本發明之基本原理也適用於任何特定組的快取層級。該等基本原理亦可在遞迴及整體之方式下適用於兩個以上的快取層級。例如,該L1快取記憶體可存放L2路及L3路編號(例如,已被該L2快取記憶體告知該L3路編號)。
第13圖中將一實施例示出為一N階快取記憶體1310及N+1階快取記憶體1320。例如,該N+1階快取記憶體可以是一個三階快取記憶體,且該N階快取記憶體可以是一個二階快取記憶體。或者,該N+1階快取記憶體可以是一系統DRAM,且該N階快取記憶體可以是處理器1300的一內部快取記憶體子系統。換言之,所示之該等兩個快取層級可以是一記憶體或快取記憶體階層中之任何兩個相鄰的層級。
此外,可在利用一個兩級記憶體(Two-Level Memory ;簡稱2LM)子系統的一電腦系統內實施本說明書所述的本發明之實施例。例如,本申請案之受讓人已設計出一種2LM記憶體子系統,其中一非揮發性記憶體(例如,相變化記憶體及開關(Phase Change Memory and Switch;簡稱PCMS))被用來作為一"遠記憶體"("far memory"),且該遠記憶體結合被用來作為一"近記憶體"("near memory")之諸如DRAM等的一揮發性記憶體,以便提高該2LM階層中之效能。該組態中之該"近記憶體"在邏輯上較接近該處理器,且有時被稱為記憶體端快取記憶體(memory Side Cache;簡稱MSC)。在一實施例中,N階快取記憶體1310包含處理器1300內部的任何快取記憶體,且N+1階快取記憶體1320包含被用來作為該記憶體階層內之近記憶體的一DRAM。
在一實施例中,L2快取記憶體集合的數目不同於L1快取記憶體集合的數目。如,L2快取記憶體集合的數目可能是L1快取記憶體集合的數目之一整數倍數或一非整數倍數。該實施例中,該L1快取記憶體的快取記憶體同步電路1015知道該倍數,且只在該向量中標示與將處理該要求的L2快取記憶體集合有關的位元。此種方式下,可自該L1快取記憶體收回條目,且該等條目將不被會在該L1快取記憶體中被來自相同L2集合的條目取代。能在一較長的期間中發生前文中以與第12圖有關之方式述及的該"無擁有者"情況,且多個路可能同時自"無擁有者"1203轉變到"增加L2 LRU"1201。某些情況中,該L2快 取記憶體可能被要求(且送回)這些條目中之一條目。而,在本架構中,並不要求該等L2 LRU值的唯一性,且仍然保持整體的必要行為。
如前文所述,當將一LRU值0指定給該L2快取記憶體中之一條目時,該條目被視為"超最近最多使用",且不預期將被重新分配。然而,在某些情況中(例如,如果所有其他的快取記憶體條目都被視為"已更改的"),儘管該條目具有"超最近最多使用"狀態,仍然可能期望重新分配該條目。在某些實施例中,可提供該L2快取記憶體可要求該L1快取記憶體放棄其條目(例如,這些條目的一指定或未指定之子集)的所有權以便該L2快取記憶體可取得那些條目的LRU之所有權的一種機制。例如,可藉由該L1快取記憶體收回那些條目,而實現該放棄程序。可包括一交握(handshake)程序,因而該L2快取記憶體可在將該條目視為不再是"超最近最多使用"之前,先等候L1放棄的確認。
某些快取記憶體實施例在晶粒內保持某一比例的元資料(例如,每一集合有4個路),且在較緩慢的晶粒外結構保持完整組的元資料(例如,每一集合有十個路)。其他實施例在晶粒內保持某一比例的元資料(例如,每一集合有4個路),且在較緩慢的晶粒外結構保持其餘的元資料(例如,每一集合有另外的六個路)。為了便於說明本發明的實施例,可將任一此類實施例視為相當於主要資料儲存(非元資料)是在一共用結構中的兩層級快取記憶 體。
本發明之實施例可包含前文中已說明的各步驟。可以可被用於使一般用途或特殊用途處理器執行該等步驟之機器可執行的指令實施該等步驟。或者,可以含有用於執行該等步驟的固線式(hardwired)邏輯之特定硬體組件執行這些步驟,或以程控電腦組件及定製硬體組件的任何組合執行這些步驟。
如本發明所述,指令集可參照到被配置成執行某些操作或有被儲存在以一非暫態電腦可讀取的媒體實施的記憶體的一預定功能或軟體指令之諸如特定應用積體電路(ASIC)等的硬體之特定組態。因此,可使用在一或多個電子裝置(例如,一終端站、一網路元件等的電子裝置)上儲存且執行的碼及資料實施該等圖式中示出之技術。這些電子裝置使用諸如非暫態電腦機器可讀取的儲存媒體(例如,磁碟、光碟、隨機存取記憶體、唯讀記憶體、快閃記憶體裝置、相變化記憶體)以及暫態電腦機器可讀取的儲存媒體(例如,電信號、光信號、聲音信號、或其他形式的傳播信號(例如,載波、紅外線信號、數位信號等的信號))等的電腦機器可讀取的儲存媒體儲存碼及資料且傳送碼及資料(在內部傳送碼及資料,且/或經由一網路將碼及資料傳送到其他的電子裝置)。此外,這些電子裝置通常包含被耦合到諸如一或多個儲存裝置(非暫態機器可讀取的儲存媒體)、使用者輸入/輸出裝置(例如,一鍵盤、一觸控式螢幕、及/或一顯示器)、以 及網路連接等的一或多個其他組件之一組的一或多個處理器。該組處理器及其他組件之耦合通常係經由一或多個匯流排及橋接器(也被稱為匯流排控制器)。該儲存裝置及載送網路通訊之信號分別代表一或多個機器可讀取的儲存媒體及機器可讀取的通訊媒體。因此,特定電子裝置之儲存裝置通常儲存用於在該電子裝置的該組之一或多個處理器上執行之碼及/或資料。當然,可使用軟體、韌體、及/或硬體之不同的組合實施本發明的一實施例之一或多個部分。在整個本實施方式中,為了便於解說,述及了許多特定細節,以便提供對本發明的徹底了解。然而,熟悉此項技術者應可了解:可在沒有這些特定細節的情形下實施本發明。在某些情形中,並未詳述習知的結構及功能,以避免模糊了本發明之標的。因此,應根據最後的申請專利範圍判斷本發明之範圍及精神。

Claims (25)

  1. 一種用於在多個快取層級之間的共用最近最少使用(LRU)策略之設備,包含:一N階快取記憶體,用於儲存第一複數個條目;一N+1階快取記憶體,用於儲存第二複數個條目;其中,該N+1階快取記憶體用於在自該N階快取記憶體接收到對一條目的一要求之後,使一第一值與該條目相關聯,此時將該條目自該N+1階快取記憶體複製到該N階快取記憶體,該要求用於指示目前儲存在該N階快取記憶體中的多個N+1階快取記憶體條目,該第一值用於指示該條目將不根據該N+1階快取記憶體執行的一最近最少使用(LRU)策略而被老化,該N+1階快取記憶體用於在該條目被自該N階快取記憶體收回之前保持該第一值,該N+1階快取記憶體用於使該第一值與在該N+1階快取記憶體中多個條目相關聯,該多個條目對應至目前儲存在該N階快取記憶體中的該多個N+1階快取記憶體條目;其中,在被通知該條目已被自該N階快取記憶體收回之後,該N+1階快取記憶體用於使一第二值與該條目相關聯,該第二值用於指示該條目將根據該N+1階快取記憶體執行的該LRU策略而開始老化。
  2. 如申請專利範圍第1項之設備,其中該N階快取記憶體包含一中央處理單元(CPU)快取記憶體,且其中該N+1階快取記憶體包含一記憶體端快取記憶體。
  3. 如申請專利範圍第1項之設備,其中該第一值包含 用於指示該N+1階快取記憶體在被通知該條目已被自該N階快取記憶體收回之前將保持的一第一LRU值。
  4. 如申請專利範圍第3項之設備,其中該第一值包含一超最近最常使用值。
  5. 如申請專利範圍第4項之設備,其中該第二值包含用於指示該條目是該N+1階快取記憶體中除了有超最近最常使用值的任何條目之外的所有其他條目的最近最常使用之一第二LRU值。
  6. 如申請專利範圍第5項之設備,其中該N階快取記憶體以與其自己的條目有關之方式應用其自己的LRU策略,因而根據其自己的LRU策略而老化且收回條目。
  7. 一種用於在多個快取層級之間的共用最近最少使用(LRU)策略之設備,包含:一N階快取記憶體,用於儲存第一複數個條目;一N+1階快取記憶體,用以在複數個N+1階快取記憶體路中儲存第二複數個條目,該N+1階快取記憶體用於在自該N階快取記憶體接收到對一條目的一要求之後將該條目提供給該N階快取記憶體;N+1階快取記憶體同步邏輯,用以將該N+1階快取記憶體中用於儲存被提供給該N階快取記憶體的該條目的一N+1階快取記憶體路之一指示提供給該N階快取記憶體,該N階快取記憶體用於追蹤與每一條目相關聯的該等N+1階快取記憶體路;以及N階快取記憶體同步邏輯,用以將向該N+1階快取記 憶體要求一或多個快取記憶體條目時其目前已儲存了條目的該等N+1階快取記憶體路之一指示提供給該N+1階快取記憶體同步邏輯,該N+1階快取記憶體用於根據該N階快取記憶體提供的該指示而執行條目之收回。
  8. 如申請專利範圍第7項之設備,其中該N階快取記憶體包含一CPU快取記憶體,且其中該N+1階快取記憶體包含一記憶體端快取記憶體。
  9. 如申請專利範圍第7項之設備,其中根據該N階快取記憶體提供的該指示而執行條目之收回,該N+1階快取記憶體將執行一最近最少使用(LRU)策略,其中被指示是被儲存在該N階快取記憶體的條目被指定了用於指示這些條目是超最近最常使用(SMRU)的一值。
  10. 如申請專利範圍第9項之設備,其中該N+1階快取記憶體在該N階快取記憶體同步邏輯提供被指示是在該N階快取記憶體的條目中之一或多個條目不再存在於該N階快取記憶體的一指示之前,避免修改與該等條目相關聯的LRU值。
  11. 如申請專利範圍第10項之設備,其中在接收到這些條目中之一或多個條目不再存在於該N階快取記憶體的該指示之後,該N+1階快取記憶體將開始將該LRU策略應用於這些條目,因而根據該LRU策略而老化且收回條目。
  12. 如申請專利範圍第11項之設備,其中該N階快取記憶體以與其自己的條目有關之方式應用其自己的LRU 策略,因而根據其自己的LRU策略而老化且收回條目。
  13. 如申請專利範圍第7項之設備,其中該N階快取記憶體同步邏輯包含一第一匯流排,該第一匯流排具有等於每一N+1階快取記憶體集合中之路的數目的一寬度,該N階快取記憶體同步邏輯使用該第一匯流排而以經由該第一匯流排傳輸的一位元向量之形式傳送其目前已儲存了條目的該等N+1階快取記憶體路之指示。
  14. 如申請專利範圍第13項之設備,其中該N+1階快取記憶體同步邏輯包含一第二匯流排,該第二匯流排具有一寬度N,其中2N大於或等於該N+1階快取記憶體中之路的數目,該N+1階快取記憶體同步邏輯使用該第二匯流排傳送該N+1階快取記憶體中用於儲存被提供給該N階快取記憶體的條目的N+1階快取記憶體路之指示。
  15. 如申請專利範圍第13項之設備,其中該N+1階快取記憶體被組織為複數個集合,每一集合包含該複數個N+1階快取記憶體路,其中N+1階快取記憶體集合的數目是該N階快取記憶體的集合之一倍數,其中該N階快取記憶體同步邏輯知道該倍數,且只在該位元向量中標示與負責處理每一要求的N+1階快取記憶體集合有關的位元。
  16. 如申請專利範圍第7項之設備,其中該N階快取記憶體包含一元資料成分及一資料成分,該元資料成分及該資料成分都被儲存在一共同半導體晶粒內,且其中該N+1階快取記憶體也包含一元資料成分及一資料成分,其 中該N+1階快取記憶體的該元資料成分中之至少一第一部分被儲存在該共同半導體晶粒內,且其中該資料成分被儲存在該共同半導體晶粒之外。
  17. 如申請專利範圍第16項之設備,其中該N+1階快取記憶體的該元資料成分中之一第二部分被儲存在該共同半導體晶粒之外。
  18. 一種用於在多個快取層級之間的共用最近最少使用(LRU)策略之方法,包含:將第一複數個條目儲存在一N階快取記憶體中;將第二複數個條目儲存在複數個N+1階快取記憶體路內的一N+1階快取記憶體中;在自該N階快取記憶體接收到對該N+1階快取記憶體中之一條目的一要求之後,將該條目提供給該N階快取記憶體;將該N+1階快取記憶體中用於儲存被提供給該N階快取記憶體的該條目的一N+1階快取記憶體路之一指示提供給該N階快取記憶體,該N階快取記憶體將追蹤與每一條目相關聯的該等N+1階快取記憶體路;將向該N+1階快取記憶體要求一或多個快取記憶體條目時該N階快取記憶體目前已儲存了條目的該等N+1階快取記憶體路之一指示提供給該N+1階;以及至少部分地根據該N階快取記憶體提供的該指示而執行該N+1階快取記憶體中之條目之收回。
  19. 如申請專利範圍第18項之方法,其中該N階快取 記憶體包含一個一階(L1)快取記憶體,且其中該N+1階快取記憶體包含一個二階(L2)快取記憶體。
  20. 如申請專利範圍第18項之方法,其中根據該N階快取記憶體提供的該指示而執行條目之收回包含:執行一最近最少使用(LRU)策略,其中被指示是被儲存在該N階快取記憶體的條目被指定了用於指示這些條目是超最近最常使用(SMRU)的一值。
  21. 如申請專利範圍第20項之方法,進一步包含:在該N階快取記憶體的條目中之一或多個條目不再存在於該N階快取記憶體的一指示被提供之前,避免修改與該等條目相關聯的LRU值。
  22. 如申請專利範圍第21項之方法,其中在接收到這些條目中之一或多個條目不再存在於該N階快取記憶體的該指示之後,將該LRU策略應用於這些條目,因而根據該LRU策略而老化且收回條目。
  23. 如申請專利範圍第22項之方法,進一步包含:以與該N階快取記憶體中之條目有關之方式應用一N階快取記憶體LRU策略,因而根據該N階快取記憶體LRU策略而老化且收回條目。
  24. 如申請專利範圍第18項之方法,進一步包含:以經由一第一匯流排而自該N階快取記憶體傳輸到該N+1階快取記憶體的一位元向量之形式傳輸該N階快取記憶體目前已儲存了條目的該等N+1階快取記憶體路之指示,該第一匯流排具有等於每一N+1階快取記憶體集合 中之路的數目的一寬度。
  25. 如申請專利範圍第24項之方法,進一步包含:經由一第二匯流排傳輸該N+1階快取記憶體中用於儲存被提供給該N階快取記憶體的條目的N+1階快取記憶體路之指示,該第二匯流排具有一寬度N,其中2N大於或等於該N+1階快取記憶體中之路的數目。
TW105136717A 2015-12-19 2016-11-10 用於在多個快取層級之間的共用最近最少使用(lru)策略的設備及方法 TWI723069B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/975,752 US10055360B2 (en) 2015-12-19 2015-12-19 Apparatus and method for shared least recently used (LRU) policy between multiple cache levels
US14/975,752 2015-12-19

Publications (2)

Publication Number Publication Date
TW201730773A TW201730773A (zh) 2017-09-01
TWI723069B true TWI723069B (zh) 2021-04-01

Family

ID=59057221

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105136717A TWI723069B (zh) 2015-12-19 2016-11-10 用於在多個快取層級之間的共用最近最少使用(lru)策略的設備及方法

Country Status (3)

Country Link
US (2) US10055360B2 (zh)
TW (1) TWI723069B (zh)
WO (1) WO2017105685A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10423533B1 (en) * 2017-04-28 2019-09-24 EMC IP Holding Company LLC Filtered data cache eviction
US11010306B2 (en) * 2018-10-22 2021-05-18 Arm Limited Apparatus and method for managing a cache hierarchy
US10838659B2 (en) 2019-02-08 2020-11-17 International Business Machines Corporation Controlling write access to a memory structure based on write request priority

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6148372A (en) * 1998-01-21 2000-11-14 Sun Microsystems, Inc. Apparatus and method for detection and recovery from structural stalls in a multi-level non-blocking cache system
US6237064B1 (en) * 1998-02-23 2001-05-22 Intel Corporation Cache memory with reduced latency
US20040083341A1 (en) * 2002-10-24 2004-04-29 Robinson John T. Weighted cache line replacement

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7080207B2 (en) * 2002-04-30 2006-07-18 Lsi Logic Corporation Data storage apparatus, system and method including a cache descriptor having a field defining data in a cache block
US7640399B1 (en) 2006-05-10 2009-12-29 Advanced Micro Devices, Inc. Mostly exclusive shared cache management policies
US7711905B2 (en) 2007-07-16 2010-05-04 International Business Machines Corporation Method and system for using upper cache history information to improve lower cache data replacement
CN104123239B (zh) 2008-01-31 2017-07-21 甲骨文国际公司 用于事务缓存的系统和方法
US8364898B2 (en) 2009-01-23 2013-01-29 International Business Machines Corporation Optimizing a cache back invalidation policy
US8769209B2 (en) * 2010-12-20 2014-07-01 Intel Corporation Method and apparatus for achieving non-inclusive cache performance with inclusive caches
US9779027B2 (en) 2012-10-18 2017-10-03 Oracle International Corporation Apparatus, system and method for managing a level-two cache of a storage appliance
US20160055100A1 (en) * 2014-08-19 2016-02-25 Advanced Micro Devices, Inc. System and method for reverse inclusion in multilevel cache hierarchy

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6148372A (en) * 1998-01-21 2000-11-14 Sun Microsystems, Inc. Apparatus and method for detection and recovery from structural stalls in a multi-level non-blocking cache system
US6237064B1 (en) * 1998-02-23 2001-05-22 Intel Corporation Cache memory with reduced latency
US20040083341A1 (en) * 2002-10-24 2004-04-29 Robinson John T. Weighted cache line replacement

Also Published As

Publication number Publication date
US10657070B2 (en) 2020-05-19
US20170177502A1 (en) 2017-06-22
US10055360B2 (en) 2018-08-21
US20190108138A1 (en) 2019-04-11
WO2017105685A1 (en) 2017-06-22
TW201730773A (zh) 2017-09-01

Similar Documents

Publication Publication Date Title
US9921972B2 (en) Method and apparatus for implementing a heterogeneous memory subsystem
US9727475B2 (en) Method and apparatus for distributed snoop filtering
CN108228094B (zh) 存储器侧高速缓存中通路的伺机增加
CN108885586B (zh) 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令
CN108268385B (zh) 具有集成目录高速缓存的优化的高速缓存代理
US9361233B2 (en) Method and apparatus for shared line unified cache
US10496551B2 (en) Method and system for leveraging non-uniform miss penality in cache replacement policy to improve processor performance and power
TWI489273B (zh) 地址範圍的優先機制
US9471494B2 (en) Method and apparatus for cache line write back operation
US20200104259A1 (en) System, method, and apparatus for snapshot prefetching to improve performance of snapshot operations
US20170185515A1 (en) Cpu remote snoop filtering mechanism for field programmable gate array
US10108548B2 (en) Processors and methods for cache sparing stores
US10437732B2 (en) Multi-level cache with associativity collision compensation
US20140189192A1 (en) Apparatus and method for a multiple page size translation lookaside buffer (tlb)
TWI723069B (zh) 用於在多個快取層級之間的共用最近最少使用(lru)策略的設備及方法
CN111095203A (zh) 实时寄存器值的集群间通信
US9229874B2 (en) Apparatus and method for compressing a memory address
US11954356B2 (en) Apparatus, method, and system for collecting cold pages
US11693780B2 (en) System, method, and apparatus for enhanced pointer identification and prefetching
US20220405209A1 (en) Multi-stage cache tag with first stage tag size reduction