TW202038102A - 快取系統以及將自第一快取逐出的資料分配至第二快取的方法 - Google Patents

快取系統以及將自第一快取逐出的資料分配至第二快取的方法 Download PDF

Info

Publication number
TW202038102A
TW202038102A TW108141028A TW108141028A TW202038102A TW 202038102 A TW202038102 A TW 202038102A TW 108141028 A TW108141028 A TW 108141028A TW 108141028 A TW108141028 A TW 108141028A TW 202038102 A TW202038102 A TW 202038102A
Authority
TW
Taiwan
Prior art keywords
cache
data block
counter
reused
request
Prior art date
Application number
TW108141028A
Other languages
English (en)
Other versions
TWI811484B (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 TW202038102A publication Critical patent/TW202038102A/zh
Application granted granted Critical
Publication of TWI811484B publication Critical patent/TWI811484B/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency 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/60Details of cache memory
    • G06F2212/6032Way prediction in set-associative cache
    • 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

Abstract

一種將資料分配至第一快取的系統及方法進行以下操作:若資料的再用指示符指示資料可能被再用,則對第一計數器進行遞增,且若資料的再用指示符指示資料可能不被再用,則對計數器進行遞減。在自第二快取逐出資料時,對第二計數器進行遞增,第二快取是較第一快取更高等級的快取。若第一計數器的值等於或大於第一預定臨限值或者第二計數器的值等於零,則將資料分配至第一快取,且若第一計數器的值小於第一預定臨限值且第二計數器的值不等於零,則使資料繞過第一快取。

Description

用於互斥末級快取記憶體之旁路預測器
本文中所揭露的標的大體而言是有關於處理系統。更具體而言,本文中所揭露的標的是有關於用於選擇性地繞過將逐出資料塊分配於互斥末級快取(exclusive last-level cache)中的快取系統及方法。
末級快取(Last-level cache,LLC)一般藉由儲存已自上級快取擲出(cast out)的資料來保留更高等級的替換犧牲者(replacement victim)以供將來可能的引用而被設計成互斥快取。並非所有自上級快取擲出的資料均有用於在LLC中進行快取。舉例而言,擲出資料可能包含例如非時間資料及/或死碼及資料等無用的塊(block)。使此種無用的擲出繞過(bypass)LLC並將有用的擲出分配至LLC可節省互連頻寬及功率,且可提高快取效能。然而,繞過互斥末級快取(LLC)可能具有挑戰性,乃因由於高等級的逐出(eviction)不攜帶程式行為資訊,因此當快取存取藉由更高等級的快取而被過濾掉時,LLC不知曉程式行為。此外,互斥快取中缺少位置資訊,乃因被再用的快取行可能被交換回上級快取,而不會留下待跟蹤的最近資訊。
一些互斥快取管理技術可跟蹤互斥LLC中資料的再用距離,且分別在最近最少使用(Least-Recently-Used,LRU)堆疊的不同位置處分配資料。為避免在後續填充至同一快取集中時逐出所述行,堆疊中的插入位置需要高於最低LRU位置,例如為LRU+1或最近最常使用(Most-Recently-Used,MRU)位置。然而,當工作負載包含串流(streaming)或非時間模式時,此種快取管理技術使互斥快取顛簸(thrash)。舉例而言,若所請求的資料塊的再用距離大於上級快取及LLC的容量,則自動態隨機存取記憶體(dynamic random access memory,DRAM)獲得的資料塊將被插入LLC中,並最終在任何再用之前被逐出。若串流資料塊被分配於LLC的LRU+1位置或更高的位置中,則所分配的串流資料將替換其他資料塊,所述其他資料塊若被保存於LLC中則可被重新引用。
示例實施例提供一種將自第一快取逐出的資料分配至第二快取的方法,所述方法可包括:判斷資料塊的再用指示符是否指示在自第一快取逐出所述資料塊時所述資料塊可能被再用,所述第一快取是較所述第二快取更高等級的快取;若所述資料塊的所述再用指示符指示所述資料塊可能被再用,則對第一計數器進行遞增;若所述資料塊的所述再用指示符指示所述資料塊可能不被再用,則對所述第一計數器進行遞減;在自所述第一快取逐出所述資料塊時,對第二計數器進行遞增;將所述第一計數器的值與第一預定臨限值進行比較;判斷所述第二計數器的值是否等於零;若所述第一計數器的所述值等於或大於所述第一預定臨限值或者所述第二計數器的所述值等於零,則將所述資料塊儲存至所述第二快取;以及若所述第一計數器的所述值小於所述第一預定臨限值且所述第二計數器的所述值不等於零,則在繞過所述第二快取的同時將所述資料塊寫入所述系統記憶體。
另一示例性實施例提供一種將自第一快取逐出的資料分配至第二快取的方法,所述方法可包括:判斷資料塊的再用指示符是否指示在自第一快取逐出所述資料塊時所述資料塊可能被再用,所述第一快取是較所述第二快取更高等級的快取;若所述資料塊的所述再用指示符指示所述資料塊可能被再用,則對第一計數器進行遞增;若所述資料塊的所述再用指示符指示所述資料塊可能不被再用,則對所述第一計數器進行遞減;在自所述第二快取逐出所述資料塊時,對第二計數器進行遞增;判斷所述第一計數器的值是否小於第一預定臨限值;判斷所述第二計數器的值是否等於零;若所述第一計數器的所述值等於或大於所述第一預定臨限值或者所述第二計數器的所述值等於零,則將所述資料塊分配至所述第二快取中位於所述第二快取中的最近最少使用位置上方的位置;以及若所述第一計數器的所述值小於所述第一預定臨限值且所述第二計數器的所述值不等於零,則將所述資料塊分配於所述第二快取中的最近最少使用位置中。
又一示例性實施例提供一種快取系統,所述快取系統可包括第一快取、第二快取以及快取控制器。所述第一快取可包括至少一個資料塊,所述至少一個資料塊中的每一資料塊可包括標籤,所述標籤中的每一標籤可包括多個位元,且所述每一標籤的所述多個位元中的至少一個位元可提供所述資料塊將被再用的機率的再用指示符。所述第二快取可為較所述第一快取更低等級的快取。所述快取控制器可耦接至所述第一快取及所述第二快取。所述快取控制器可包括第一計數器及第二計數器。若第一資料塊的所述再用指示符指示所述第一資料塊在自所述第一快取逐出時可能被再用,則所述快取控制器可對所述第一計數器進行遞增,且若所述第一資料塊的所述再用指示符指示所述第一資料塊在自所述第一快取逐出時可能不被再用,則對所述第一計數器進行遞減。在自所述第一快取逐出所述第一資料塊時,所述快取控制器可進一步對第二計數器進行遞增。若所述第一計數器的值等於或大於第一預定臨限值或者所述第二計數器的值等於零,則所述快取控制器可提供將所述第一資料塊分配至所述第二快取的指示,且若所述第一計數器的所述值小於所述第一預定臨限值且所述第二計數器的所述值不等於零,則可提供使所述第一資料塊繞過所述第二快取的指示。
又一實例一種快取系統,所述快取系統可包括第一快取、第二快取以及快取控制器。所述第一快取可包括至少一個資料塊,所述至少一個資料塊中的每一資料塊可包括標籤,所述標籤中的每一標籤可包括多個位元,且所述每一標籤的所述多個位元中的至少一個位元可提供所述資料塊將被再用的機率的再用指示符。所述第二快取可為較所述第一快取更低等級的快取。所述快取控制器可耦接至所述第一快取及所述第二快取。所述快取控制器可包括第一計數器及第二計數器。若第一資料塊的所述再用指示符指示所述第一資料塊在自所述第一快取逐出時可能被再用,則所述快取控制器可對所述第一計數器進行遞增,且若所述第一資料塊的所述再用指示符指示所述第一資料塊在自所述第一快取逐出時可能不被再用,則對所述第一計數器進行遞減。在自所述第一快取逐出所述第一資料塊時,所述快取控制器可進一步對第二計數器進行遞增。若所述第一計數器的值等於或大於第一預定臨限值或者所述第二計數器的值等於零,則所述快取控制器可提供在位於最近最少使用(LRU)位置上方的位置中將所述第一資料塊分配至所述第二快取的指示,且若所述第一計數器的所述值小於所述第一預定臨限值且所述第二計數器的所述值不等於零,則可提供在最近最少使用位置中將所述第一資料塊分配於所述第二快取中的指示。
在以下詳細說明中,闡述了諸多具體細節以提供對本發明的透徹理解。然而,熟習此項技術者將理解,沒有該些具體細節亦可實踐所揭露的態樣。在其他實例中,未詳細闡述眾所習知的方法、程序、組件及電路以避免使本文中所揭露的標的模糊不清。
本說明書通篇中所提及的「一個實施例」或「實施例」意指結合所述實施例所闡述的特定特徵、結構或特性可包括於本文中所揭露的至少一個實施例中。因此,在本說明書通篇中各處出現的片語「在一個實施例中」或「在實施例中」抑或「根據一個實施例」(或具有相似含義的其他片語)可能未必皆指同一實施例。此外,在一或多個實施例中,特定特徵、結構或特性可以任何適當的方式進行組合。鑑於此,本文中所使用的詞「示例性」意指「充當例子、實例或例證」。本文中被闡述為「示例性」的任何實施例並非被視為必定較其他實施例更佳或具有優勢。此外,相依於本文論述的上下文,單數用語可包括對應的複數形式且複數用語可包括對應的單數形式。進一步注意,本文中所示出及論述的各種圖(包括組件圖)僅用於說明目的,且並非按比例繪製。相似地,示出各種波形圖及時序圖僅用於說明目的。舉例而言,為清晰起見,可將一些元件的尺寸相對於其他元件進行誇大。此外,在適宜時在圖中重複使用參考編號來指示對應的及/或類似的元件。
本文中所使用的術語僅用於闡述特定示例性實施例,而並非旨在限制本主張標的。除非上下文中清楚地另外指明,否則本文中所使用的單數形式「一(a/an)」及「所述(the)」旨在亦包含複數形式。將進一步理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。本文中所使用的用語「第一」、「第二」等是作為其後面所跟名詞的標記來使用,且除非明確如此定義,否則並不暗含任何類型的次序(例如,空間的、時間的、邏輯的等)。此外,可在兩個或更多個圖中交叉使用相同的參考編號來指代具有相同或相似功能的部件、組件、塊、電路、單元或模組。然而,此類用法僅是出於說明簡潔及易於論述的目的,而並非暗含此類組件或單元的構造或架構細節在所有實施例中均相同抑或暗含此類具有共用參考編號的部件/模組是實施本文中所揭露的特定實施例的教示內容的唯一途徑。
除非另外定義,否則本文中所使用的全部用語(包括技術及科學用語)的含義均與本標的所屬技術領域中具有通常知識者所通常理解的含義相同。將進一步理解,用語(例如在常用字典中所定義的用語)應被解釋為具有與其在相關技術的上下文中的含義一致的含義,且除非本文中進行明確定義,否則將不被解釋為具有理想化或過於正式的意義。
本文中所使用的用語「模組」是指用以在與模組連接時提供本文中所述功能的軟體、韌體及/或硬體的任意組合。「軟體」可被實施為軟體封裝、碼及/或指令集或指令,且用於本文中所述任意實施方案的用語「硬體」可包括例如單一地或以任意組合形式對由可程式化電路系統執行的指令進行儲存的硬導線電路系統(hardwired circuitry)、可程式化電路系統、狀態機電路系統(state-machine circuitry)及/或韌體。模組可集體地或各別地實施為電路系統,所述電路系統形成更大的系統(例如但不限於積體電路(integrated circuit,IC)、系統晶片(system on-chip,SoC)等)的一部分。
本文中所揭露的標的提供一種快取控制器,所述快取控制器包括用於互斥快取(例如LLC)的旁路預測器,其中旁路預測器包括對互斥LLC中將資料交換回更高等級的快取的資料的引用以及對所述資料的再用資訊的引用。若預測指示不進行繞過(即,高再用機率),則快取控制器可將犧牲者自更高等級的快取擲出至互斥LLC,且若預測指示進行繞過(即,低再用機率),則可捨棄所述犧牲者或對所述犧牲者進行直寫。快取控制器可由一或多個更高等級的快取藉由跟蹤互斥LLC的總體再用模式來驅動,且當此種預測的置信度(confidence)高時使用旁路預測。
本文中所揭露的標的為互斥快取提供協調的快取管理技術。舉例而言,利用本文中所揭露的三級快取層級(一級(Level-1,L1)、L2及LLC),L2快取可跟蹤快取再用,且作為快取控制器一部分的旁路預測器可使用指示LLC中的位置被分配至L2逐出的再用資訊。為跟蹤再用,旁路預測器可動態地檢測工作集是否正在使LLC顛簸。若旁路預測器預測或指示顛簸,則快取控制器可控制LLC在LRU處分配塊,或者作為另一選擇,繞過逐出以保留LLC中可能具有更高再用機率的塊。
本文中所揭露的用於快取控制器的旁路預測器使用最小量的費用(overhead),且可為互斥LLC提供抗顛簸性(thrash resistance)。更高等級的快取可檢測使互斥LLC顛簸的快取行並過濾掉該些快取行,以僅將可再用塊分配至互斥LLC,從而節省快取容量及功率,且提高效能。
在一個實施例中,快取系統可被配置成包括L1快取、包含式L2快取(inclusive L2 cache)及互斥LLC快取的三級快取層級。L2快取的標籤儲存L2快取中的行的LLC命中/未中資訊(LLC元資料)。分配至L2快取的填充資料指示資料來源(即,DRAM或LLC)。快取控制器的旁路預測器基於自L2快取逐出的行的LLC元資料來學習或適應。若LLC元資料指示差的LLC命中率,則旁路預測器預測下一L2擲出為可繞過LLC的擲出(LLC-bypassable cast out)。來自L2快取的已被預測為可繞過LLC的擲出可能為髒的,在所述情形中,擲出資料被直接發送至DRAM,藉此避免LLC溢出及填充的情況。作為另一選擇,來自L2快取的擲出可能為乾淨的,在所述情形中,資料均不被擲出。在一個實施例中,擲出的位址可用於更新下游窺探過濾器(downstream snoop filter)。除使用LLC再用歷史以外,本文中所揭露的旁路預測器可使用L2快取的再用資訊作為預測的基礎的一部分,若所述行既未在L2快取中再用亦未在LLC快取中再用,則L2快取的再用資訊可為預測增加更多的置信度。
本文中所揭露的用於快取控制器的旁路預測器為LLC提供抗顛簸機制。作為所述機制的一部分,旁路預測器可被配置成即使在應用正在使LLC顛簸的情況下亦週期性地向LLC發送擲出。舉例而言,若所有L2逐出均被預測為可繞過LLC,則檢測應用已轉入更易於快取的階段可能並不容易。為克服此種問題,本文中所揭露的旁路預測器即使在極端旁路模式下亦可週期性地指示向LLC發送擲出。旁路預測器可使用對擲出的週期性發送來對LLC命中率進行採樣,以訓練所述預測器或使所述預測器適應。對於大型工作集,採樣使得子集能夠保留於LLC中,並提供抗顛簸性。在一個實施例中,採樣率可被設定為2的冪。舉例而言,對於每32個擲出,將一個擲出分配至LLC。若工作集 ≤ LLC大小*採樣率,則可提供抗顛簸性。
圖1繪示根據本文中所揭露標的,包括旁路預測器101的快取控制器100的示例性實施例的功能方塊圖。快取控制器100可控制包括L1快取102、包含式L2快取103及互斥LLC 104的三級快取層級。快取102至104可連接至一或多個處理器105以及主記憶體106,所述一或多個處理器105中僅有一個處理器被繪示出。快取控制器100被示為囊括L2快取103及LLC 104,以傳達與管理及/或控制犧牲者自L2快取分配或旁路至LLC 104或主記憶體106相關的邏輯及/或功能。圖1中繪示的整個系統可為計算裝置,計算裝置可為電腦、手持裝置、智慧型電話、個人數位助理(personal digital assistant,PDA)、導航裝置、通訊裝置或娛樂裝置的一部分,但並不限於此。此外,圖1中所繪示的整個系統可包括未示出的其他組件或裝置,例如但不限於顯示裝置、輸入裝置、大量儲存裝置(mass storage device)及通訊介面。
應理解,對快取控制器100及旁路預測器101的表示並不旨在作為限制,乃因對於本文中所闡述的功能,可存在任何替代性實施方案。在一個實施例中,快取控制器100及/或旁路預測器101可為被實施為用以提供本文中所述功能的軟體、韌體及/或硬體的任意組合的模組。
旁路預測器101可包括提示位元107及第一計數器108。在一個實施例中,旁路預測器可更包括第二計數器109。儘管下文針對提示位元107、第一計數器108及第二計數器109指示了示例性位元大小,然而應理解,可使用不同於所述示例性大小的位元大小。
提示位元107可為1位元指示符,且在本文中被稱為LLC_reuse_hint位元107。每L2標籤可能存在一個提示位元107。在一個實施例中,若請求在LLC中命中,則可對LLC_reuse_hint位元107進行設定。
第一計數器108可為每L2記憶庫組12位元的飽和計數器,且在本文中被稱為LLC_hit_cnt計數器108或全域LLC_hit_cnt計數器108。LLC_hit_cnt 108可用於跟蹤請求。在初始化時,LLC_hit_cnt計數器108可被設定為0xfff。在L2快取犧牲者上,LLC_hit_cnt計數器基於與犧牲行的標籤相關聯的LLC_reuse_hint位元而遞增或遞減。若LLC_hit_cnt的值小於low_hit_threshold的值,則旁路預測器101指示L2犧牲者繞過LLC 104,否則在LLC 104中對L2犧牲者進行快取。
第二計數器109可為在本文中被稱為LLC_victim_sample_cnt計數器109的飽和5位元計數器。每L2記憶庫組可存在一個LLC_victim_sample_cnt計數器109。對於每L2快取犧牲者(0至31,自31滾動至0),LLC_victim_sample_cnt計數器109可遞增。若LLC_victim_sample_cnt等於0,則無論預測決策如何,犧牲者均被分配至LLC。若預測器處於旁路模式,則此使得訓練能夠繼續進行。
圖2繪示根據本文中所揭露標的,旁路預測器101在於LLC中查找資料塊A時所使用的過程200的示例性實施例的流程圖。在201處,判斷LLC 104中是否存在塊A。若存在命中,則流程繼續進行至202,其中將塊A返送至L2快取103且將LLC_reuse_hint[A]位元設定為1。若在201處存在未中,則流程繼續進行至203,其中自DRAM(記憶體106)獲得塊A。流程繼續進行至204,其中將塊A返送至L2快取103且將LLC_reuse_hint[A]位元設定為0。
圖3繪示根據本文中所揭露標的,旁路預測器101所使用的過程300的示例性實施例的流程圖,過程300可在自L2快取103逐出資料塊B時發生。在301處,判斷LLC_reuse_hint[B]是否等於1。若LLC_reuse_hint[B]等於1,則流程繼續進行至302,其中對全域計數器LLC_hit_cnt進行遞增,以指示在LLC 104中不存在繞過。此外,對LLC_victim_sample_cnt進行遞增。流程繼續進行至303。
若在301處LLC_reuse_hint[B]等於0,則流程繼續進行至304,其中對全域計數器LLC_hit_cnt進行遞減,以指示犧牲塊B欲繞過LLC 104。此外,對LLC_victim_sample_cnt進行遞增。流程繼續進行至303。
在303處,判斷(1)LLC_reuse_hit[B]是否等於0、(2)LLC_hit_cnt是否小於low_hit_threshold且(3)LLC_victim_sample_cnt是否不等於0。若不滿足該三個條件,則流程繼續進行至305,其中預測器指示對於犧牲塊B而言不應繞過LLC 104,且LLC 104為塊B分配空間。
若在303處滿足所有三個條件,則流程繼續進行至306,其中判斷B是否為乾淨資料。若B是乾淨資料,則流程繼續進行至307,其中旁路預測器101指示犧牲塊B應繞過LLC 104,且L2快取103捨棄塊B。
若在306處確定塊B不是乾淨資料,則流程繼續進行至308,其中即使旁路預測器101可能指示塊B可繞過LLC,由於資料是髒的,因此塊B不繞過LLC 104。相反,LLC 104為犧牲塊B分配空間。
LLC_reuse_hint位元可為可基於其他條件進行配置的,以增加旁路預測器101所提供的預測的置信度。舉例而言,若在塊A的L2快取103命中發生時,可對所存取塊A的LLC_reuse_hint位元進行設定,而無論其在LLC 104中是否命中。因此,旁路預測器101可能夠對自無LLC再用(no-LLC-reuse)至LLC再用(LLC-reuse)的程式階段變化快速作出反應。
圖4繪示根據本文中所揭露標的,旁路預測器101所使用的過程400的示例性實施例的流程圖,過程400可在塊A的LLC_reuse_hint位元可基於在L2快取103中對塊A的快取命中進行配置時發生。具體而言,過程400使旁路指示更加保守。在401處,在L2快取103中對塊A快取命中時,在402處將塊A的LLC_reuse_hint[A]位元設定為等於1,以指示不執行繞過。若在401處不存在對塊A的快取命中,則流程繼續進行至403,其中判斷塊A的LLC_reuse_hint[A]位元是否等於1。若塊A的LLC_reuse_hint[A]位元等於1,則流程繼續進行至404,其中使塊A的LLC_reuse_hint[A]位元保持為1。若在403處塊A的LLC_reuse_hint[A]不等於1,則流程繼續進行至405,其中將塊A的LLC_reuse_hint[A]設定為0。因此,若在401處塊A在L2快取中未命中,則403處的決策使LLC_reuse_hint[A]位元的值保持不變。
作為圖3中所繪示示例性過程300的替代性實施例,不再無論預測如何均將髒資料分配於LLC 104中,而是可將被預測為欲繞過的髒塊直接寫回至DRAM(記憶體106),而不分配至LLC 104,藉此節省快取容量及功率。
圖5繪示根據本文中所揭露標的,旁路預測器101所使用的過程500的替代性示例性實施例的流程圖,過程500可在自L2快取103逐出資料塊B時發生。在501處,在自L2快取103逐出資料塊B時,判斷LLC_reuse_hint[B]是否等於1。若LLC_reuse_hint[B]等於1,則流程繼續進行至502,其中對全域計數器LLC_hit_cnt進行遞增,以指示在LLC 104中不存在繞過。此外,對LLC_victim_sample_cnt進行遞增。流程繼續進行至503。
若在501處LLC_reuse_hint[B]等於0,則流程繼續進行至504,其中對全域計數器LLC_hit_cnt進行遞減,以指示犧牲塊B欲繞過LLC 104。此外,對LLC_victim_sample_cnt進行遞增。流程繼續進行至503。
在503處,判斷(1)LLC_reuse_hit[B]是否等於0、(2)LLC_hit_cnt是否小於low_hit_threshold且(3)LLC_victim_sample_cnt是否不等於0。若不滿足該三個條件,則流程繼續進行至505,其中旁路預測器101指示對於犧牲塊B而言不應繞過LLC 104,且LLC 104為塊B分配空間。
若在503處滿足所有三個條件,則流程繼續進行至506,其中判斷B是否為乾淨資料。若B是乾淨資料,則流程繼續進行至507,其中旁路預測器101指示犧牲塊B應繞過LLC 104,且L2快取103捨棄塊B。
若在506處確定塊B不是乾淨資料,則流程繼續進行至508,其中預測資料塊B欲繞過LLC 104。由於資料是髒的,因此L2快取103將資料塊B直接寫入DRAM(記憶體106),藉此繞過LLC 104。
在一個示例性實施例中,在自L2快取103逐出資料塊B時,旁路預測器101可在LLC 104中將資料塊B降級至最近最少使用位置,而非完全繞過LLC 104。
圖6繪示根據本文中所揭露標的,旁路預測器104所使用的過程600的示例性替代性實施例的流程圖,過程600可在自L2快取103逐出資料塊B時發生。在601處,在自L2快取103逐出資料塊B時,判斷LLC_reuse_hint[B]是否等於1。若LLC_reuse_hint[B]等於1,則流程繼續進行至602,其中對全域計數器LLC_hit_cnt進行遞增,以指示在LLC 104中不存在繞過。此外,對LLC_victim_sample_cnt進行遞增。流程繼續進行至603。
若在601處LLC_reuse_hint[B]等於0,則流程繼續進行至604,其中對全域計數器LLC_hit_cnt進行遞減,以指示犧牲塊B欲繞過LLC 104。此外,對LLC_victim_sample_cnt進行遞增。流程繼續進行至603。
在603處,判斷(1)LLC_reuse_hit[B]是否等於0、(2)LLC_hit_cnt是否小於low_hit_threshold且(3)LLC_victim_sample_cnt是否不等於0。若不滿足該三個條件,則流程繼續進行至605,其中旁路預測器101指示資料塊B應被分配至位於LLC 104中的最近最少使用(LRU)位置上方的位置。
若在603處滿足所有三個條件,則流程繼續進行至606,其中預測將資料塊B降級,且LLC 104將資料塊B分配於LLC 104中的LRU位置中。
熟習此項技術者將認識到,可在各種各樣的應用中對本文中所闡述的新穎概念作出潤飾及變化。因此,所主張標的的範圍不應限於以上所論述的具體示例性教示內容中的任一者,而是由以下申請專利範圍所限定。
100:快取控制器 101:旁路預測器 102:快取/L1快取 103:快取/L2快取/包含式L2快取 104:快取/LLC/互斥LLC 105:處理器 106:記憶體/主記憶體 107:提示位元/LLC_reuse_hint位元 108:第一計數器/LLC_hit_cnt計數器/全域LLC_hit_cnt計數器 109:第二計數器/LLC_victim_sample_cnt計數器 200、300、400、500、600:過程 201、202、203、204、301、302、303、304、305、306、307、308、401、402、403、404、405、501、502、503、504、505、506、507、508、601、602、603、604、605、606:步驟 A:塊/資料塊 B:塊/資料塊/犧牲塊 LLC_reuse_hint、LLC_reuse_hint[A]:位元 LLC_hit_cnt:計數器/全域計數器 LLC_victim_sample_cnt:計數器 LRU、LRU+1:位置
在以下部分中,將參照圖中所示的示例性實施例來闡述本文中所揭露標的的態樣,在圖中:
圖1繪示根據本文中所揭露標的,包括旁路預測器(bypass predictor)的快取控制器的示例實施例的功能方塊圖。
圖2繪示根據本文中所揭露標的,旁路預測器在於LLC中查找資料塊A時所使用的過程的示例性實施例的流程圖。
圖3繪示根據本文中所揭露標的,旁路預測器所使用的過程的示例性實施例的流程圖,所述過程可在自二級(Level-2,L2)快取逐出資料塊B時發生。
圖4繪示根據本文中所揭露標的,旁路預測器所使用的過程的示例性實施例的流程圖,所述過程可在塊A的LLC_reuse_hint位元可基於在L2快取中對塊A的快取命中進行配置時發生。
圖5繪示根據本文中所揭露標的,旁路預測器所使用的過程的替代性示例性實施例的流程圖,所述過程可在自L2快取逐出資料塊B時發生。
圖6繪示根據本文中所揭露標的,旁路預測器所使用的過程的示例性替代性實施例的流程圖,所述過程可在自L2快取逐出資料塊B時發生。
100:快取控制器
101:旁路預測器
102:快取/L1快取
103:快取/L2快取/包含式L2快取
104:快取/LLC/互斥LLC
105:處理器
106:記憶體/主記憶體
107:提示位元/LLC_reuse_hint位元
108:第一計數器/LLC_hit_cnt計數器/全域LLC_hit_cnt計數器
109:第二計數器/LLC_victim_sample_cnt計數器
LLC_reuse_hint:位元
LLC_hit_cnt:計數器/全域計數器
LLC_victim_sample_cnt:計數器

Claims (20)

  1. 一種將自第一快取逐出的資料分配至第二快取的方法,所述方法包括: 判斷資料塊的再用指示符是否指示在自第一快取逐出所述資料塊時所述資料塊可能被再用,所述第一快取是較所述第二快取更高等級的快取; 若所述資料塊的所述再用指示符指示所述資料塊可能被再用,則對第一計數器進行遞增; 若所述資料塊的所述再用指示符指示所述資料塊可能不被再用,則對所述第一計數器進行遞減; 在自所述第一快取逐出所述資料塊時,對第二計數器進行遞增; 將所述第一計數器的值與第一預定臨限值進行比較; 判斷所述第二計數器的值是否等於零; 若所述第一計數器的所述值等於或大於所述第一預定臨限值或者所述第二計數器的所述值等於零,則將所述資料塊儲存至所述第二快取;以及 若所述第一計數器的所述值小於所述第一預定臨限值且所述第二計數器的所述值不等於零,則在繞過所述第二快取的同時將所述資料塊寫入系統記憶體。
  2. 如申請專利範圍第1項所述的方法,更包括: 在所述第一快取中接收對所述資料塊的請求; 若對所述資料塊的所述請求在所述第二快取中命中,則在所述第一快取中將所述再用指示符設定為指示所述資料塊可能被再用;以及 若對所述資料塊的所述請求在所述第二快取中未中,則在所述第一快取中將所述再用指示符設定為指示所述資料塊可能不被再用。
  3. 如申請專利範圍第1項所述的方法,更包括: 在所述第一快取中接收對所述資料塊的請求; 若對所述資料塊的所述請求在所述第二快取中命中且所述再用指示符可因應於對所述資料塊的所述請求進行配置,則將所述再用指示符設定為指示所述資料塊可能被再用;以及 若對所述資料塊的所述請求在所述第二快取中未中且所述再用指示符可因應於對所述資料塊的請求進行配置,則將所述再用指示符設定為指示所述資料塊可能不被再用。
  4. 如申請專利範圍第1項所述的方法,其中若所述第一計數器的所述值小於所述第一預定臨限值且所述第二計數器的所述值不等於零,則使所述資料塊繞過所述第二快取更包括: 若所述資料塊是乾淨資料,則使所述資料塊繞過所述第二快取;以及 若所述資料塊是髒資料,則將所述資料塊分配至所述第二快取。
  5. 如申請專利範圍第1項所述的方法,其中若所述第一計數器的所述值小於所述第一預定臨限值且所述第二計數器的所述值不等於零,則使所述資料塊繞過所述第二快取更包括: 若所述資料塊是乾淨資料,則自所述第一快取捨棄所述資料塊;以及 若所述資料塊是髒資料,則將所述資料塊寫入所述系統記憶體。
  6. 如申請專利範圍第1項所述的方法,其中所述第二快取是末級快取。
  7. 一種將自第一快取逐出的資料分配至第二快取的方法,所述方法包括: 判斷資料塊的再用指示符是否指示在自第一快取逐出所述資料塊時所述資料塊可能被再用,所述第一快取是較所述第二快取更高等級的快取; 若所述資料塊的所述再用指示符指示所述資料塊可能被再用,則對第一計數器進行遞增; 若所述資料塊的所述再用指示符指示所述資料塊可能不被再用,則對所述第一計數器進行遞減; 在自所述第二快取逐出所述資料塊時,對第二計數器進行遞增; 判斷所述第一計數器的值是否小於第一預定臨限值; 判斷所述第二計數器的值是否等於零; 若所述第一計數器的所述值等於或大於所述第一預定臨限值或者所述第二計數器的所述值等於零,則將所述資料塊分配至所述第二快取中位於所述第二快取中的最近最少使用位置上方的位置;以及 若所述第一計數器的所述值小於所述第一預定臨限值且所述第二計數器的所述值不等於零,則將所述資料塊分配於所述第二快取中的所述最近最少使用位置中。
  8. 如申請專利範圍第7項所述的方法,更包括: 在所述第一快取中接收對所述資料塊的請求; 若對所述資料塊的所述請求在所述第二快取中命中,則在所述第一快取中將所述再用指示符設定為指示所述資料塊可能被再用;以及 若對所述資料塊的所述請求在所述第二快取中未中,則在所述第一快取中將所述再用指示符設定為指示所述資料塊可能不被再用。
  9. 如申請專利範圍第7項所述的方法,更包括: 在所述第二快取中接收對所述資料塊的請求; 若對所述資料塊的所述請求在所述第二快取中命中且所述再用指示符可因應於對所述資料塊的請求進行配置,則在所述第一快取中將所述再用指示符設定為指示所述資料塊可能被再用;以及 若對所述資料塊的所述請求在所述第二快取中未中且所述再用指示符可因應於對所述資料塊的請求進行配置,則在所述第一快取中將所述再用指示符設定為指示所述資料塊可能不被再用。
  10. 如申請專利範圍第7項所述的方法,其中所述第二快取是末級快取。
  11. 一種快取系統,包括: 第一快取,包括至少一個資料塊,所述至少一個資料塊中的每一資料塊包括標籤,所述標籤中的每一標籤包括多個位元,所述每一標籤的所述多個位元中的至少一個位元提供所述資料塊將被再用的機率的再用指示符; 第二快取,是較所述第一快取更低等級的快取;以及 快取控制器,耦接至所述第一快取及所述第二快取,所述快取控制器包括第一計數器及第二計數器,若第一資料塊的所述再用指示符指示所述第一資料塊在自所述第一快取逐出時可能被再用,則所述快取控制器對所述第一計數器進行遞增,且若所述第一資料塊的所述再用指示符指示所述第一資料塊在自所述第一快取逐出時可能不被再用,則對所述第一計數器進行遞減,在自所述第一快取逐出所述第一資料塊時,所述快取控制器進一步對第二計數器進行遞增,若所述第一計數器的值等於或大於第一預定臨限值或者所述第二計數器的值等於零,則所述快取控制器提供將所述第一資料塊分配至所述第二快取的指示,且若所述第一計數器的所述值小於所述第一預定臨限值且所述第二計數器的所述值不等於零,則提供使所述第一資料塊繞過所述第二快取的指示。
  12. 如申請專利範圍第11項所述的快取系統,其中若對所述第一資料塊的請求在所述第一快取中命中,則所述快取控制器進一步將所述第一資料塊的所述再用指示符設定為指示所述第一資料塊可能被再用,且若對所述第一資料塊的所述請求在所述第一快取中未中,則將所述第一資料塊的所述再用指示符設定為指示所述第一資料塊可能不被再用。
  13. 如申請專利範圍第11項所述的快取系統,其中若對所述資料塊的請求在所述第一快取中命中且所述再用指示符可因應於對所述第一資料塊的所述請求進行配置,則所述快取控制器進一步將所述第一資料塊的所述再用指示符設定為指示所述第一資料塊可能被再用,且若對所述第一資料塊的所述請求在所述第一快取中未中且所述再用指示符可因應於對所述第一資料塊的請求進行配置,則將所述再用指示符設定為指示所述第一資料塊可能不被再用。
  14. 如申請專利範圍第11項所述的快取系統,其中若所述第一資料塊是乾淨資料,則所述快取控制器進一步提供使所述第一資料塊繞過所述第二快取的指示,且若所述資料塊是髒資料,則提供將所述第一資料塊分配於所述第二快取中的指示。
  15. 如申請專利範圍第11項所述的快取系統,其中若所述第一資料塊是乾淨資料,則所述快取控制器進一步提供自所述第一快取捨棄所述第一資料塊的指示,且若所述第一資料塊是髒資料,則提供將所述第一資料塊寫入記憶體的指示。
  16. 如申請專利範圍第11項所述的快取系統,其中所述第二快取是末級快取。
  17. 一種快取系統,包括: 第一快取,包括至少一個資料塊,所述至少一個資料塊中的每一資料塊包括標籤,所述標籤中的每一標籤包括多個位元,所述每一標籤的所述多個位元中的至少一個位元提供所述資料塊將被再用的機率的再用指示符; 第二快取,是較所述第一快取更低等級的快取;以及 快取控制器,耦接至所述第一快取及所述第二快取,所述快取控制器包括第一計數器及第二計數器,若第一資料塊的所述再用指示符指示所述第一資料塊在自所述第一快取逐出時可能被再用,則所述快取控制器對所述第一計數器進行遞增,且若所述第一資料塊的所述再用指示符指示所述第一資料塊在自所述第一快取逐出時可能不被再用,則對所述第一計數器進行遞減,在自所述第一快取逐出所述第一資料塊時,所述快取控制器進一步對第二計數器進行遞增,若所述第一計數器的值等於或大於第一預定臨限值或者所述第二計數器的值等於零,則所述快取控制器提供在位於最近最少使用(LRU)位置上方的位置中將所述第一資料塊分配至所述第二快取的指示,且若所述第一計數器的所述值小於所述第一預定臨限值且所述第二計數器的所述值不等於零,則提供在最近最少使用位置中將所述第一資料塊分配於所述第二快取中的指示。
  18. 如申請專利範圍第17項所述的快取系統,其中若對所述第一資料塊的請求在所述第一快取中命中,則所述快取控制器進一步將所述第一資料塊的所述再用指示符設定為指示所述第一資料塊可能被再用,且若對所述第一資料塊的所述請求在所述第一快取中未中,則將所述第一資料塊的所述再用指示符設定為指示所述第一資料塊可能不被再用。
  19. 如申請專利範圍第17項所述的快取系統,其中若對所述第一資料塊的請求在所述第一快取中命中且所述再用指示符可因應於對所述第一資料塊的請求進行配置,則所述快取控制器進一步將所述再用指示符設定為指示所述第一資料塊可能被再用,且若對所述第一資料塊的所述請求在所述第一快取中未中且所述再用指示符可因應於對所述第一資料塊的請求進行配置,則將所述第一資料塊的所述再用指示符設定為指示所述第一資料塊可能不被再用。
  20. 如申請專利範圍第17項所述的快取系統,其中所述第二快取是末級快取。
TW108141028A 2018-12-26 2019-11-12 快取系統以及將自第一快取逐出的資料分配至第二快取的方法 TWI811484B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862785213P 2018-12-26 2018-12-26
US62/785,213 2018-12-26
US16/289,645 US11113207B2 (en) 2018-12-26 2019-02-28 Bypass predictor for an exclusive last-level cache
US16/289,645 2019-02-28

Publications (2)

Publication Number Publication Date
TW202038102A true TW202038102A (zh) 2020-10-16
TWI811484B TWI811484B (zh) 2023-08-11

Family

ID=71122799

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108141028A TWI811484B (zh) 2018-12-26 2019-11-12 快取系統以及將自第一快取逐出的資料分配至第二快取的方法

Country Status (4)

Country Link
US (1) US11113207B2 (zh)
KR (1) KR20200080142A (zh)
CN (1) CN111382089B (zh)
TW (1) TWI811484B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI793812B (zh) * 2020-12-01 2023-02-21 美商聖圖爾科技公司 微處理器、快取記憶體存儲器系統及其中實現的方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11609858B2 (en) * 2018-12-26 2023-03-21 Samsung Electronics Co., Ltd. Bypass predictor for an exclusive last-level cache
JP7367470B2 (ja) * 2019-11-05 2023-10-24 富士通株式会社 情報処理装置およびキャッシュ制御プログラム
US11372764B2 (en) * 2019-11-14 2022-06-28 International Business Machines Corporation Single-copy cache using heterogeneous memory types
US20220197798A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Single re-use processor cache policy
US11886342B2 (en) * 2021-12-01 2024-01-30 International Business Machines Corporation Augmenting cache replacement operations
CN117389630B (zh) * 2023-12-11 2024-03-05 北京开源芯片研究院 一种数据缓存方法、装置、电子设备及可读存储介质

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06348595A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd キャッシュ装置
US5564035A (en) * 1994-03-23 1996-10-08 Intel Corporation Exclusive and/or partially inclusive extension cache system and method to minimize swapping therein
US5636359A (en) * 1994-06-20 1997-06-03 International Business Machines Corporation Performance enhancement system and method for a hierarchical data cache using a RAID parity scheme
US5533189A (en) * 1994-11-28 1996-07-02 International Business Machines Corporation System and method for error correction code generation
US5915262A (en) * 1996-07-22 1999-06-22 Advanced Micro Devices, Inc. Cache system and method using tagged cache lines for matching cache strategy to I/O application
US6647466B2 (en) * 2001-01-25 2003-11-11 Hewlett-Packard Development Company, L.P. Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy
US7096320B2 (en) * 2001-10-31 2006-08-22 Hewlett-Packard Development Company, Lp. Computer performance improvement by adjusting a time used for preemptive eviction of cache entries
US7467377B2 (en) * 2002-10-22 2008-12-16 Intel Corporation Methods and apparatus for compiler managed first cache bypassing
US7296121B2 (en) * 2002-11-04 2007-11-13 Newisys, Inc. Reducing probe traffic in multiprocessor systems
US6920532B2 (en) * 2002-11-05 2005-07-19 Newisys, Inc. Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems
US6928522B2 (en) * 2003-01-07 2005-08-09 Hewlett-Packard Development Company, L.P. Unbalanced inclusive tags
US7228388B2 (en) * 2004-11-19 2007-06-05 International Business Machines Corporation Enabling and disabling cache bypass using predicted cache line usage
US7380065B2 (en) * 2005-03-30 2008-05-27 International Business Machines Corporation Performance of a cache by detecting cache lines that have been reused
US20070094450A1 (en) * 2005-10-26 2007-04-26 International Business Machines Corporation Multi-level cache architecture having a selective victim cache
US7506119B2 (en) * 2006-05-04 2009-03-17 International Business Machines Corporation Complier assisted victim cache bypassing
US7596662B2 (en) * 2006-08-31 2009-09-29 Intel Corporation Selective storage of data in levels of a cache memory
US7793044B1 (en) * 2007-01-16 2010-09-07 Oracle America, Inc. Efficient caching of stores in scalable chip multi-threaded systems
US7975107B2 (en) * 2007-06-22 2011-07-05 Microsoft Corporation Processor cache management with software input via an intermediary
US8464002B2 (en) * 2009-10-14 2013-06-11 Board Of Regents Of The University Of Texas System Burst-based cache dead block prediction
US8769209B2 (en) * 2010-12-20 2014-07-01 Intel Corporation Method and apparatus for achieving non-inclusive cache performance with inclusive caches
US8667222B2 (en) * 2011-04-01 2014-03-04 Intel Corporation Bypass and insertion algorithms for exclusive last-level caches
US8935485B2 (en) * 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
US10152423B2 (en) * 2011-10-31 2018-12-11 International Business Machines Corporation Selective population of secondary cache employing heat metrics
US8972661B2 (en) * 2011-10-31 2015-03-03 International Business Machines Corporation Dynamically adjusted threshold for population of secondary cache
US20130166846A1 (en) * 2011-12-26 2013-06-27 Jayesh Gaur Hierarchy-aware Replacement Policy
US9479552B2 (en) * 2012-05-30 2016-10-25 Verizon Patent And Licensing, Inc. Recommender system for content delivery networks
US9058269B2 (en) * 2012-06-25 2015-06-16 Advanced Micro Devices, Inc. Method and apparatus including a probe filter for shared caches utilizing inclusion bits and a victim probe bit
US9110718B2 (en) * 2012-09-24 2015-08-18 Oracle International Corporation Supporting targeted stores in a shared-memory multiprocessor system
WO2014143053A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Dead block predictors for cooperative execution in the last level cache
US9317448B2 (en) * 2013-07-30 2016-04-19 Advanced Micro Devices, Inc. Methods and apparatus related to data processors and caches incorporated in data processors
US9418009B2 (en) * 2013-12-27 2016-08-16 Intel Corporation Inclusive and non-inclusive tracking of local cache lines to avoid near memory reads on cache line memory writes into a two level system memory
US9660650B1 (en) * 2014-03-13 2017-05-23 Altera Corporation Integrated circuits with improved register circuitry
US9600442B2 (en) * 2014-07-18 2017-03-21 Intel Corporation No-locality hint vector memory access processors, methods, systems, and instructions
US9501411B2 (en) * 2014-08-29 2016-11-22 International Business Machines Corporation Cache backing store for transactional memory
US9990289B2 (en) * 2014-09-19 2018-06-05 Advanced Micro Devices, Inc. System and method for repurposing dead cache blocks
US10255182B2 (en) 2015-02-11 2019-04-09 Samsung Electronics Co., Ltd. Computing apparatus and method for cache management
CN105988730B (zh) * 2015-03-02 2019-03-08 华为技术有限公司 一种读取缓存数据的方法、旁路装置及缓存系统
US9720773B2 (en) * 2015-03-04 2017-08-01 Cavium, Inc. Managing reuse information in caches
US10169240B2 (en) * 2016-04-08 2019-01-01 Qualcomm Incorporated Reducing memory access bandwidth based on prediction of memory request size
US10223278B2 (en) * 2016-04-08 2019-03-05 Qualcomm Incorporated Selective bypassing of allocation in a cache
KR102589298B1 (ko) * 2016-05-11 2023-10-13 삼성전자주식회사 그래픽스 프로세싱 장치 및, 그래픽스 프로세싱 장치에서 캐시 바이패스를 제어하는 방법
US10037173B2 (en) * 2016-08-12 2018-07-31 Google Llc Hybrid memory management
US10417134B2 (en) 2016-11-10 2019-09-17 Oracle International Corporation Cache memory architecture and policies for accelerating graph algorithms
US10331582B2 (en) * 2017-02-13 2019-06-25 Intel Corporation Write congestion aware bypass for non-volatile memory, last level cache (LLC) dropping from write queue responsive to write queue being full and read queue threshold wherein the threshold is derived from latency of write to LLC and main memory retrieval time
US10360158B2 (en) * 2017-03-27 2019-07-23 Samsung Electronics Co., Ltd. Snoop filter with stored replacement information, method for same, and system including victim exclusive cache and snoop filter shared replacement policies
US20180285268A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Method and apparatus for reducing write congestion in non-volatile memory based last level caches
US20190034354A1 (en) * 2017-07-26 2019-01-31 Qualcomm Incorporated Filtering insertion of evicted cache entries predicted as dead-on-arrival (doa) into a last level cache (llc) memory of a cache memory system
US10268600B2 (en) * 2017-09-12 2019-04-23 Intel Corporation System, apparatus and method for prefetch-aware replacement in a cache memory hierarchy of a processor
US10831678B2 (en) * 2017-11-21 2020-11-10 Arm Limited Multi-tier cache placement mechanism

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI793812B (zh) * 2020-12-01 2023-02-21 美商聖圖爾科技公司 微處理器、快取記憶體存儲器系統及其中實現的方法

Also Published As

Publication number Publication date
CN111382089B (zh) 2024-05-07
US20200210347A1 (en) 2020-07-02
CN111382089A (zh) 2020-07-07
KR20200080142A (ko) 2020-07-06
TWI811484B (zh) 2023-08-11
US11113207B2 (en) 2021-09-07

Similar Documents

Publication Publication Date Title
TWI811484B (zh) 快取系統以及將自第一快取逐出的資料分配至第二快取的方法
US8473689B2 (en) Predictive sequential prefetching for data caching
US7757045B2 (en) Synchronizing recency information in an inclusive cache hierarchy
US10185668B2 (en) Cost-aware cache replacement
JP6267314B2 (ja) キャッシュメモリの利用トレンドに基づく複数セットグループ内のウェイごとの動的パワー供給
US8131938B2 (en) Adaptive mechanisms and methods for supplying volatile data copies in multiprocessor systems
JP6613375B2 (ja) プロファイリングキャッシュ置換
US8140759B2 (en) Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US9298620B2 (en) Selective victimization in a multi-level cache hierarchy
CN111052095B (zh) 使用动态预取深度的多行数据预取
CN110869914B (zh) 硬件预取器的基于利用率的节流
JP6630449B2 (ja) 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換
US10120806B2 (en) Multi-level system memory with near memory scrubbing based on predicted far memory idle time
WO2019022923A1 (en) INSERT FILTERING OF PREVIOUS-DRAFTED COATED MEMORY INPUTS AS INACTIVE AT THE ARRIVAL (DOA) IN A LAST-LEVEL CACHE MEMORY (LLC) OF A CACHE-MEMORY SYSTEM
KR101689094B1 (ko) 스티키 제거 엔진을 구비한 시스템 캐시
US11526449B2 (en) Limited propagation of unnecessary memory updates
US20180052778A1 (en) Increase cache associativity using hot set detection
US11609858B2 (en) Bypass predictor for an exclusive last-level cache
US20090157968A1 (en) Cache Memory with Extended Set-associativity of Partner Sets
US8176254B2 (en) Specifying an access hint for prefetching limited use data in a cache hierarchy
Yoo et al. Ldf-clock: The least-dirty-first clock replacement policy for pcm-based swap devices
CN117222989A (zh) Dram感知高速缓存
Olorode et al. Replacement techniques for improving performance in sub-block caches
TWI585583B (zh) 快取更換策略
TW201741879A (zh) 快取更換策略