WO2024253798A1 - Super-temporal cache replacement - Google Patents
Super-temporal cache replacement Download PDFInfo
- Publication number
- WO2024253798A1 WO2024253798A1 PCT/US2024/028570 US2024028570W WO2024253798A1 WO 2024253798 A1 WO2024253798 A1 WO 2024253798A1 US 2024028570 W US2024028570 W US 2024028570W WO 2024253798 A1 WO2024253798 A1 WO 2024253798A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- cacheline
- cache
- cachelines
- data
- priority value
- Prior art date
- Legal status (The legal status 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 status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
Definitions
- a cache is a hardware or software component that stores data (at least temporarily) so that a future request for the data is served faster than it would be if the data were served from main memory.
- a “cache hit” occurs when requested data can be found in the cache, while a “cache miss” occurs when requested data cannot be found in the cache.
- a cache miss occurs, for example, in scenarios where the requested data has not yet been loaded into the cache or when the requested data was evicted from the cache prior to the request.
- a cache replacement policy defines rules for selecting one of the cachelines of the cache to evict so that the requested data can be loaded into the selected cacheline responsive to a cache miss.
- FIG. 1 is a block diagram of a non-limiting example system having a cache and a controller with a guided cache replacement policy in accordance with one or more implementations .
- FIG. 2 depicts a non-limiting example in which cacheline priority values for protected and unprotected cachelines are updated according to a guided cache replacement policy in accordance with one or more implementations.
- FIG. 3 depicts a procedure in an example implementation of modifying priority values for protected and unprotected cachelines and evicting cachelines based on their priority values in accordance with aspects of the techniques described herein.
- FIG. 4 depicts a non- limiting example in which cacheline priority values are updated relative to default and maximum thresholds for protected and unprotected cachelines in accordance with one or more implementations.
- FIG. 5 depicts a procedure in an example implementation of modifying priority values for protected and unprotected cachelines and evicting cachelines based on their priority values in accordance with aspects of the techniques described herein.
- a cache is a hardware or software component that stores data, such that a future request for the data is served faster than it would be if the data were served from main memory. Because caches can only store a limited amount of data, it is beneficial to maintain data in cache that is continuously accessed, or will be accessed in the future, to perform a computational task. As such, caches improve computational system performance when they store data that is relevant to a computational task being performed.
- a processing device performing (e.g., executing) the computational task is required to retrieve the data from system main memory, which induces latency into performance of the computational task, creates a bottleneck on a communication channel (e.g., data bus) connecting the processing device to the main memory, takes additional time to retrieve, and overall degrades performance of a processing device executing the computational task.
- a communication channel e.g., data bus
- Cache replacement policies decide what data stored in cache should be replaced (e.g., written to main memory or otherwise evicted from the cache without writing to main memory) in situations where new data is needed for performance of a computational task but not currently stored in an already-full cache.
- a cache replacement policy defines rules for selecting one of the cachelines of the cache to evict so that the requested data can be loaded into the selected cacheline (e.g., in response to a cache miss for the requested data).
- Conventional cache replacement policies include least recently used (LRU) algorithms, re-reference interval prediction (RRIP) algorithms, and so forth.
- LRU least recently used
- RRIP re-reference interval prediction
- a LRU algorithm operates by favoring retention of data objects in cache that are most recently used (e.g., returned in response to a request for data) as part of performing a computational task. While LRU algorithms are suitable for a range of computational tasks, they are relatively expensive because they require dedicated hardware (e.g., dedicated bits in cache) to keep track of the age of every single cacheline and update this information as data objects are read from or written into cache.
- the RRIP algorithm shares similar considerations with the LRU algorithm without explicitly keeping track of cacheline age. Rather, the RRIP algorithm predicts different values indicating when data stored in cache might be needed (e.g., values that generally indicate one of soon, later, even later, and much later). This RRIP algorithm avoids the LRU assumption that different data maintained in cache will be accessed again at the same probability of frequency, which enables favoring eviction of cachelines that are not predicted to be used again soon to perform a computational task. However, a significant limitation of the RRIP algorithm is that the RRIP algorithm is not provided with prior information indicating that data will be reused.
- the RRIP algorithm is limited to observing instances where data is reused and subsequently predicting a value indicating when the data might again be needed after observing the data reuse.
- conventional cache replacement policy approaches require significant hardware resources to function properly and are unable to account for input or guidance, prior to runtime, that describe specific instances of data to be reused during performance of a computational task.
- a cache replacement policy that operates on a binary indication as to whether data stored in a cacheline should be protected or unprotected.
- This binary protected/unprotected indication enables a programmer or developer of a given computational task to simply specify whether the computational task will benefit from preserving certain data objects involved in the computational task in cache or preserving in cache data retrieved from memory storage locations where data is read from/written to during performance of the computational task.
- the described cache replacement policy involves designating certain bits of a cacheline to identify a priority value for maintaining the cacheline in cache and at least one bit to identify whether the cacheline is protected or unprotected.
- Cachelines designated as protected are referred to herein as “super-temporal” cachelines, such that they are to be favored for retention in a cache for longer durations of time than unprotected cachelines.
- Guiding logic of the cache replacement policy causes the priority value of a cacheline to be increased or otherwise adjusted towards a maximum priority value in scenarios where the cacheline stores data requested for use in performing the computational task.
- the cache replacement policy guiding logic causes the priority value of each cacheline to be decremented or otherwise adjusted towards a minimum priority value in scenarios where requested data is not stored in any of the cachelines (e.g., in response to a cache miss).
- the cache replacement policy guiding logic favors decrementing of unprotected cacheline priority values before decrementing protected cacheline priority values, such that protected cachelines will be maintained in cache over unprotected cachelines in event of a cache miss.
- priority values describe an order in which cachelines are evicted based on cache misses.
- the cache replacement policy guiding logic ensures that protected cacheline priority values are also decremented when a cacheline is evicted, thus preventing scenarios where cachelines are constantly kept in cache.
- the cache replacement policy defines certain cachelines as super-temporal using only an associated priority value and independent of a separate protected/unprotected indicator. For instance, in some implementations guiding logic of the cache replacement policy defines threshold default and maximum values for protected and unprotected cachelines. As a specific example, a cache replacement policy defines a default unprotected value to be assigned as a cacheline’s priority value upon insertion of unprotected data into a cache. In this specific example, the cache replacement policy also defines a default protected value to be assigned as a cacheline’s priority value upon insertion of protected data into a cache, where the protected default value is different than the unprotected default value.
- the default protected value is greater than a default unprotected value.
- the default protected value is less than the default unprotected value.
- the cache replacement policy further defines respective maximum priority values for protected and unprotected cachelines, which constrains a manner in which cacheline priority values are incremented in response to a cache hit.
- protected cachelines are permitted to have a priority value that satisfies an unprotected maximum threshold (e.g., is greater than or equal to the unprotected maximum threshold) while unprotected cachelines are not.
- an unprotected maximum threshold e.g., is greater than or equal to the unprotected maximum threshold
- satisfying the unprotected maximum threshold means having a priority value that is greater than or equal to the unprotected maximum threshold.
- satisfying the unprotected maximum threshold means having a priority value that is less than or equal the unprotected maximum threshold.
- a cache replacement policy that involves decrementing cacheline priority values towards the eviction threshold value does so until at least one cacheline satisfies (e.g., is associated with) a minimum priority value threshold.
- the minimum priority value threshold indicates that a cacheline is eligible for eviction. Data included in such a cacheline is evicted (e.g., written back to main memory or otherwise cleared from the cache) to open space for inserting different data as a different cacheline in the cache.
- the cache replacement policies described herein selects a cacheline to evict in a manner that favors preservation of data objects identified as important for a given computational task.
- the cache replacement policy is enabled via a binary indication of whether an associated data object or memory storage location is important, which avoids the granular manual input required by some conventional approaches as well as the expensive hardware tracking elements required by other conventional approaches.
- the cache replacement policies described herein represent improvements in time, speed and/or power consumption relative to conventional cache replacement policies.
- the techniques described herein relate to a system including a cache, guiding logic to guide decisions of a cache replacement policy by favoring eviction of unprotected cachelines over eviction of protected cachelines, and a controller to select a cacheline of the cache to evict responsive to a cache miss based on the cache replacement policy and the guiding logic.
- the techniques described herein relate to a system, wherein the controller is further configured to evict previous data stored in the cacheline, and load data into the cacheline, wherein the data loaded into the cacheline is retrieved for a request that caused the cache miss.
- the techniques described herein relate to a system, wherein the guiding logic is generated based on instructions of an application executed by a processor that requests data from the cache.
- the techniques described herein relate to a system, wherein the guiding logic includes information specifying at least one data object and the controller is configured to designate a cacheline that stores the at least one data object as being protected based on the guiding logic.
- the techniques described herein relate to a system, wherein the guiding logic includes information specifying at least one data storage location and the controller is configured to designate a cacheline that stores data retrieved from the at least one data storage location as being protected based on the guiding logic.
- each cacheline of the cache includes a configurable bit that provides a binary indication as to whether the cacheline is protected or unprotected.
- the techniques described herein relate to a system, wherein the controller is further configured to receive a first request for data, identify that the data requested by the first request is stored in a first cacheline of the cache, return the data requested by the first request to a source from which the first request was received, and increment a priority value of the first cacheline.
- the techniques described herein relate to a system, wherein the controller is further configured to receive a second request for data, identify that the data requested by the second request is not stored in the cache and that the second request caused the cache miss, and identify a second cacheline as having a priority value that permits eviction, wherein the second cacheline is selected to evict responsive to the cache miss.
- the techniques described herein relate to a system, wherein responsive to the cache miss, the guiding logic causes the controller to identify, from the cache replacement policy, a priority value threshold that permits eviction, identify that each cacheline of the cache is associated with a priority value that does not satisfy the priority value threshold, and decrement, a priority value associated with an unprotected cacheline until the priority value associated with the unprotected cacheline satisfies the priority value threshold that permits eviction.
- the techniques described herein relate to a system, wherein the controller decrements the priority value associated with the unprotected cacheline independent of modifying a priority value associated with a protected cacheline of the cache.
- the techniques described herein relate to a system, wherein the controller decrements the priority value associated with protected cacheline in response to evicting data responsive to the cache miss.
- the techniques described herein relate to a system, wherein responsive to decrementing the priority value associated with the unprotected cacheline, at least two unprotected cachelines have associated priority values that satisfy the priority value threshold that permits eviction, wherein the guiding logic further causes the controller to select one of the at least two unprotected cachelines for data eviction based on addresses of the at least two unprotected cachelines.
- the techniques described herein relate to a system, wherein the cache replacement policy controls loading data into the cache by causing the controller to assign a default unprotected value to data loaded into the cache responsive to the data being loaded from a data storage location indicated as unprotected by the guiding logic, or assign a default protected to data loaded into the cache responsive to the data being loaded from a data storage location indicated as protected by the guiding logic.
- the techniques described herein relate to a method including receiving a request to access a cache that includes a plurality of cachelines, and updating a priority value of at least one of the plurality of cachelines to favor eviction of unprotected cachelines of the plurality of cachelines based on the request, the priority value describing an order in which the plurality of cachelines are evicted in response to cache misses.
- the techniques described herein relate to a method, further including initializing the plurality of cachelines to include information describing at least some of the plurality cachelines that are protected cachelines based on instructions of a computational task performed by a processor from which the request was received.
- the techniques described herein relate to a method, wherein updating the priority of the at least one of the plurality of cachelines includes incrementing the priority value of the at least one of the plurality of cachelines in response to a cache hit for the request.
- incrementing the priority value of the at least one of the plurality of cachelines includes incrementing the priority value of the at least one of the plurality of cachelines to an unprotected threshold value responsive to the at least one of the plurality of cachelines being an unprotected cacheline, or incrementing the priority value of the at least one of the plurality of cachelines to a protected threshold value responsive to the at least one of the plurality of cachelines being a protected cacheline.
- the techniques described herein relate to a method, wherein updating the priority value of the at least one of the plurality of cachelines includes decrementing the priority value of the at least one of the plurality of cachelines in response to a cache miss for the request.
- the techniques described herein relate to a method, wherein updating the priority value of the at least one of the plurality of cachelines is performed independent of modifying a priority value of a protected cacheline of the plurality of cachelines.
- the techniques described herein relate to a method including receiving a request to access data, identifying that the request results in a cache miss for a cache that includes a plurality of cachelines, adjusting a priority value for at least one unprotected cacheline of the plurality of cachelines towards an eviction threshold value, independent of adjusting a priority value for at least one protected cacheline of the plurality of cachelines, until the priority value for the at least one unprotected cacheline satisfies the eviction threshold value, and evicting data stored in the at least one unprotected cacheline responsive to the at least one unprotected cacheline satisfying the eviction threshold value.
- FIG. 1 is a block diagram of a non-limiting example system 100 having a cache and a controller with a guided cache replacement policy according to some implementations.
- the system includes cache 102, cache client 104, data store 106, and controller 108, which includes cache replacement policy 1 10 that is guided by guiding logic 112.
- the cache 102 the cache client 104, and the data store 106 are coupled to one another via a wired connection, a wireless connection, or combinations thereof.
- Example wired connections include, but are not limited to, buses connecting two or more of the cache 102, the cache client 104, and the data store 106.
- Example wireless connections include radio, cellular, Wi-Fi, Bluetooth, near-field communication (NFC), 5G, and similar data communication pathways connecting two or more of the cache 102, the cache client 104, and the data store 106.
- the cache 102 is a hardware component, software component, or a combination thereof, that stores data (e.g., at least temporarily) so that a future request for the data is served faster from the cache 102 than from the data store 106.
- the cache 102 is at least one of smaller than the data store 106, faster at serving data to the cache client 104 than the data store 106, or more efficient at serving data to the cache client 104 than the data store 106.
- the cache 102 is located closer to the cache client 104 than is the data store 106. In this manner, the cache 102 has additional or different characteristics which make serving at least some data to the cache client 104 from the cache 102 advantageous (e.g., relative to serving the same data from the data store 106).
- the cache 102 is a memory cache, such as a particular level of cache (e.g., LI cache) where the particular level is included in a hierarchy of multiple cache levels (e.g., L0, LI, L2, L3, and L4).
- the cache 102 is a hardware component built into, and used by, the cache client 104.
- the cache 102 is implemented at least partially in software, such as in at least one scenario where the cache client 104 is a web browser or a web server.
- the cache 102 is also implementable in different ways without departing from the spirit or scope of the described techniques.
- the cache client 104 is a component that requests access to data for performing one or more operations in relation to such data.
- Examples of the cache client 104 include, but are not limited to, a central processing unit, a parallel accelerated processor (e.g., a graphics processing unit), a digital signal processor, a hardware accelerator, an operating system, a web browser, a web server, and a lower-level cache (e.g., a lower-level in a cache hierarchy than the cache 102), to name just a few.
- the cache client 104 provides a request 114 for access to data.
- the request 114 is a request for write access to the data or a request for read access to the data.
- the request 114 is received to access the cache to attempt to find the data in the cache 102.
- the request 114 is received by the controller 108. Responsive to the request 114, for instance, the controller 108 searches the cache 102 to determine if the data is stored in the cache 102. If, by searching the cache 102, the controller 108 identifies that the data is stored in the cache 102, then the controller 108 provides access to the data in the cache 102.
- a “cache hit” occurs when the controller 108 identifies that the data (e.g., requested by the request 114) is stored in the cache 102.
- the controller 108 modifies (e.g., updates) the data in the cache 102 that is identified by the request 114.
- the controller 108 retrieves the data in the cache 102 that is identified by the request 114.
- data retrieved from the cache 102 based on the request 114 is depicted as cached data 116.
- the controller 108 provides the cached data 116 to the cache client 104.
- the illustrated example also depicts requested data 1 18.
- the requested data 118 corresponds to the data provided to the cache client 104 responsive to the request 114.
- the requested data 118 corresponds to the cached data 1 16.
- the data identified in the request 114 is served from the data store 106.
- the requested data 118 corresponds to data provided to the cache client 104 from the data store 106.
- a “cache miss” occurs when the controller 108 does not identify the data, identified by the request 114, in the cache 102.
- a cache miss occurs, for example, when the data identified by the request 114 has not yet been loaded into the cache 102 or when the data identified by the request 114 was evicted from the cache 102 prior to the request 114.
- the controller 108 loads the data identified by the request from the data store 106 into the cache 102 responsive to a cache miss.
- data retrieved from the data store 106 and loaded into the cache 102 is depicted as data store data 120.
- the data requested by the request 114 is identified in the data store 106 and is loaded from the data store 106 into one or more “locations” in the cache 102 (e.g., into one or more cachelines of the cache 102). This enables future requests for the data to be served from the cache 102 rather than from the data store 106.
- the controller 108 loads the data from the data store 106 (e.g., the data store data 120) into the cache 102 based on the cache replacement policy 110.
- the data store 106 is a computer- readable storage medium that stores data.
- the data store 106 include, but are not limited to, main memory (e.g., random access memory), a higher-level cache (e.g., L2 cache when the cache 102 is an LI cache), secondary storage (e.g., a mass storage device), and removable media (e.g., flash drives, memory cards, compact discs, and digital video disc), to name just a few.
- main memory e.g., random access memory
- a higher-level cache e.g., L2 cache when the cache 102 is an LI cache
- secondary storage e.g., a mass storage device
- removable media e.g., flash drives, memory cards, compact discs, and digital video disc
- the controller 108 loads data into the cache 102 from the data store 106 (e.g., responsive to a cache miss). Specifically, the controller 108 loads the data according to the cache replacement policy 110.
- the cache replacement policy 110 controls which cachelines of the cache 102 have their previous data evicted and loaded with the data from the data store 106 that corresponds to the request 114.
- the cache replacement policy 110 is or includes a hardware-maintained structure that manages replacement of cachelines according to an underlying algorithm (e.g., guiding logic 112).
- the cache replacement policy 110 is or includes a computer program that manages replacement of the cachelines according to the underlying algorithm (e.g., guiding logic 112).
- the guiding logic 112 guides decisions of an algorithm of the cache replacement policy 110 made in connection with selecting a cacheline for evicting and loading data. For example, the guiding logic 112 assigns priority values to different cachelines of the cache 102 based on data stored in a respective cacheline. In some implementations, the guiding logic 112 is generated or otherwise controlled by instructions of an application or other computational task executed by a processor that requests data from the cache 102 (e.g., the cache client 104).
- the guiding logic 112 includes information specifying that certain data objects and/or certain data locations are indicated as being protected for a given computational task (e.g., information encoded in one or more instructions of a computational task specifying that the certain data objects and locations are important for the computational task).
- the guiding logic assigns data to the cacheline (e.g., one or more bits of the cacheline) indicating that the cacheline is protected and contrasted with unprotected cachelines of the cache 102.
- the guiding logic 112 causes the priority value of a cacheline to be increased or otherwise adjusted towards a maximum priority value in implementations where the request 114 results in a cache hit. Similarly, the guiding logic 112 causes the priority value of cachelines to be decremented or otherwise adjusted towards a minimum priority value in implementations where the request 114 results in a cache miss.
- the guiding logic 112 in some example implementations, causes adjusting priority values of unprotected cachelines towards the minimum priority value independent of (e.g., without) adjusting priority values of protected cachelines. In these example implementations, the guiding logic 112 favors maintaining data stored using protected cachelines in cache 102 over unprotected cachelines (e.g., responsive to the request 114 causing a cache miss).
- the guiding logic 112 is implementable in various ways in accordance with the described techniques.
- the guiding logic 112 is implemented in software, such as by injecting additional code into code which implements the super-temporal eviction algorithm of the cache replacement policy 110.
- the additional code causes priority values for cachelines of the cache 102 to be adjusted based on serving requests.
- the additional code causes priority value for cachelines of a cache 102 to be adjusted differently based on whether the request 114 results in a cache hit or a cache miss.
- the guiding logic 112 is implemented by one or more hardware components.
- the guiding logic 112 is implemented by one or more hardware components (e.g., by one or more integrated circuits) that implements the cache replacement policy 1 10 according to a super-temporal eviction algorithm.
- the cache replacement policy 1 10 is depicted including the guiding logic 112 in the illustrated example, in one or more implementations the guiding logic 112 is not included as part of the cache replacement policy 110 but is accessible by the cache replacement policy 110, such as while identifying a cacheline to select for evicting and loading data.
- the guiding logic 112 is implemented in different ways in one or more implementations without departing from the spirit or scope of the described techniques.
- the guiding logic 112 and the cache replacement policy 110 are collectively representative of a cache retention system that favors preservation of protected cachelines in cache over unprotected cachelines, responsive to a cache miss.
- Example implementations in which the cache replacement policy 110 and guiding logic 112 are configured is described in further detail below with respect to FIGS. 2-5.
- FIG. 2 depicts an example 200 in which cacheline priority values for protected and unprotected cachelines are updated according to a guided cache replacement policy in accordance with one or more implementations.
- cache 102 is depicted in a first state 202 as including cacheline 204, cacheline 206, cacheline 208, and cacheline 210. Although depicted as including four cachelines in the example 200 for simplicity, the cache 102 is representative of a cache having any suitable number of cachelines (e.g., two or more cachelines) in accordance with the techniques described herein and the illustrated example is not limiting. Each cacheline of the cache 102 is depicted as being associated with corresponding one of the priority values 212 and a corresponding one of the protected indicators 214.
- the priority values 212 are configurable in any suitable manner, such as one or more bits of data associated with (e.g., included in, appended to, etc.) the cacheline, and represents information describing a relative priority by which the cacheline should be maintained in the cache 102 (e.g., relative to other cachelines of the cache 102 in an event where eviction of a cacheline is necessary).
- the protected indicators 214 are configurable in any suitable manner, such as a single bit that provides a binary indication (e.g., one or zero) as to whether the cacheline should be treated as more important to maintain in the cache 102 relative to unprotected cachelines.
- cachelines having associated protected indicators 214 that identify the cachelines as being important are referred to as “super-temporal” cachelines, which denotes how the cachelines are intended for preservation in the cache 102 for an extended duration of time.
- cacheline 204 is assigned a priority value of three
- cacheline 206 is assigned a priority value of three
- cacheline 208 is assigned a priority value of three
- cacheline 210 is assigned a priority value of two.
- cacheline 204 has a protected value of zero
- cacheline 206 has a protected value of zero
- cacheline 208 has a protected value of one
- cacheline 210 has a protected value of one.
- the protected indicators 214 thus indicates that cacheline 204 and cacheline 206 are not to be considered as protected, and further indicates that cacheline 208 and cacheline 210 are to be protected (e.g., that cacheline 204 and cacheline 206 are unimportant relative to cacheline 208 and cacheline 210).
- individual cachelines of the cache 102 can be assigned a respective protected value, a respective priority value, or a combination thereof, in a variety of manners.
- individual cachelines are assigned a protected value based on a computational task being executed by a source from which the request 114 is received (e.g., protected values are assigned by application code of a computer application being executed by the cache client 104, where executing the computer application involves processing requested data 118).
- a developer of a computer program or author of code executed as part of performing a computational task is able to predefine (e.g., at compile time or prior to runtime of the computational task) one or more data objects, one or more locations in data store 106, or combinations thereof, that should be treated as protected or important during performance of the computational task.
- one or more cachelines used to store the important data object are configured with a protected indicators 214 that identify this importance (e.g., one or more cachelines used to store the data objects identified as protected are configured to include a “protected value bit” as having a value of one instead of a value of zero).
- the techniques described herein enable a programmer or computational task developer to specify at least one memory region (e.g., one or more storage locations in the data store 106) as being important and thus protected for continued storage in the cache 102. For instance, consider an example scenario where a developer authors executable code for a computational task to store data objects (e.g., data objects that are frequently and/or repeatedly used as part of performing the computational task) in a certain region of memory.
- the techniques described herein enable to developer to provide information (e.g., as part of the guiding logic 112) indicating that the certain region of memory stores important data during performance of the computational task. Such an indication informs the controller 108 that data retrieved from the certain region of memory should be prioritized for continued storage in the cache 102 (e.g., relative to data retrieved from regions in memory other than the certain region of memory indicated as important by the guiding logic 1 12).
- the controller 108 is configured to identify which cachelines of the cache 102 are to be treated as storing important data, assign the corresponding cachelines with protected indicators 214 that represent this importance, and thus prioritize the cachelines for preservation in the cache 102.
- Information describing data objects, data storage locations, or combinations thereof to be prioritized for maintenance in the cache 102 is configurable in a variety of manners.
- important or “protected” data and/or data storage information is included in application code of a computational task performed by the cache client 104.
- protected information is stored in hardware registers of the system 100, via one or more bits in a page table entry that are communicated to the controller 108 along with a request 114, and so forth.
- protected information for cachelines of the cache 102 is included in buffer descriptors (e.g., application or computational task-specific metadata) that are associated with data allocations and loaded into the controller 108 before the system 100 executes instructions involved with buffering data from memory (e.g., the data store 106).
- a determination of whether information is “protected” is made entirely by hardware.
- hardware of the system 100 observes access rates, hit rates, and other historical behavior for certain cacheline addresses or regions of cachelines and designate one or more cachelines as protected (e.g., as super- temporal), independent of any indication provided by software (e.g., an application or computational task being executed by the system 100).
- the illustrated example 200 depicts how the controller 108 enforces the cache replacement policy 110 to evict certain cachelines from the cache 102 (e.g., in response to the request 114 being a cache miss) based on priority values 212 and protected indicators 214 associated with respective cachelines.
- the first state 202 represents an initial state of the cache 102, such as a state of the cache 102 prior to receipt of the request 114 by the controller 108.
- State 216, state 218, state 220, and state 222 represent how the controller 108 follows the guiding logic 1 12 of the cache replacement policy 110 to resolve which cacheline should be evicted (e.g., in response to request 114 being a cache miss where a cacheline needs to be evicted to make room for storage of data store data 120 in the cache 102).
- priority values 212 range from zero to three, where a priority value of zero indicates that a cacheline is eligible for eviction from the cache and a value of three represents a maximum value for prioritizing maintenance (e.g., continued storage) of the cacheline in cache 102. Although illustrated and described with respect to this specific range spanning zero to three, inclusive, the priority values 212 are configurable to span any numerical range in accordance with the techniques described herein. By spanning from zero to three, the example 200 represents an example where each of the priority values 212 can be assigned one of four different integers (e.g., zero, one, two, or three), and thus the priority values 212 are each configurable using two bits per cacheline of the cache 102. Such a two- bit priority value configuration is thus useful in prioritizing different cachelines for preservation in the cache 102 while minimizing an amount of data required to do so.
- a priority value of zero indicates that a cacheline is eligible for eviction from the cache and a value of three represents a maximum value for prioritizing maintenance (
- the cache replacement policy 110 causes the controller 108 to first iteratively decrement priority values 212 for unprotected cachelines until an unprotected cacheline has a minimum priority value (e.g., a priority value of zero indicating that the cacheline is eligible for eviction).
- a minimum priority value e.g., a priority value of zero indicating that the cacheline is eligible for eviction.
- state 216 represents how the priority values 212 of cacheline 204 and cacheline 206 are each decremented by one (e.g., from three to two), while the priority values 212 of cacheline 208 and cacheline 210 are maintained (e.g., at three and two, respectively).
- the cache replacement policy 110 causes the controller 108 to continue decrementing priority values 212 of unprotected cachelines.
- state 218 represents how the priority values 212 of cacheline 204 and cacheline 206 have been decremented from two to one and state 220 represents how the priority values 212 of cacheline 204 and cacheline 206 have been decremented from one to zero.
- the priority values 212 or cacheline 208 and cacheline 210 are maintained from first state 202 through state 216, state 218, and state 220 due to having an associated protected indicator of one (e.g., contrasted with the unprotected value of zero assigned to cacheline 204 and cacheline 206).
- the controller 108 evicts one of the cachelines having a priority value of zero.
- the controller 108 selects which cacheline to evict based on a way index of the cacheline.
- a cache way index refers to a mechanism of the cache 102 to determine the location of data within the cache.
- the controller 108 selects a cacheline having a lowest way index as the cacheline to be evicted. For instance, in the illustrated example of FIG.
- cacheline 204 if cacheline 204 has a lower way index than cacheline 206, then cacheline 204 is selected for eviction due to having a lowest way index among cachelines having a minimum priority value (e.g., a priority value of zero).
- a minimum priority value e.g., a priority value of zero.
- FIG. 3 depicts a procedure 300 for modifying priority values for protected and unprotected cachelines and evicting cachelines based on their priority values.
- a request for data is received (block 302).
- the controller 108 receives request 114 from the cache client 104.
- a determination is made as to whether the request resulted in a cache hit (block 304).
- the controller 108 identifies whether data requested by the cache client 104 is stored in the cache 102.
- a priority value for the hit cacheline is increased (block 306).
- the controller 108 identifies a cacheline storing data requested by the request 114 and increases a respective one of the priority values 212 corresponding to the cacheline that stores the requested data.
- the controller 108 increases the priority value for a hit cacheline to a maximum priority value. For instance, with respect to the illustrated example of FIG. 2, in response to the request 114 being a request for data stored in cacheline 210, the controller 108 increases the priority value of cacheline 210 from two to three.
- the controller 108 increments the priority value for a hit cacheline to a value that is less than a maximum priority value. For instance, the controller 108 increments the priority value for a hit cacheline by a single integer value or by multiple integer values to be less than the maximum priority value.
- the request 114 is received together with an indication as to whether or not the data access request is super-temporal (e.g., via one or more bits appended to the request 114).
- detecting a cache hit at block 304 results in adjusting the priority value for the hit cacheline in any suitable manner, such as by adjusting the priority value to downgrade a cacheline from super-temporal to non-super-temporal or by adjusting the priority value to upgrade a non-super-temporal cacheline to having supertemporal status.
- the controller 108 is caused to increase the priority value for the cacheline at block 306 to a super-temporal priority value.
- the controller 108 is caused to adjust the priority value for the hit cacheline to a non-super-temporal value (e.g., a value at or near an upper limit for a non-super-temporal priority value range.
- block 306 represents functionality of the controller 108 adjusting a priority value for a hit cacheline to any suitable value.
- the controller 108 checks whether a cacheline of cache 102 is associated with a minimum priority value (e.g., a priority value of zero with respect to the example 200).
- the cacheline with the minimum priority value is evicted from the cache (block 310).
- the controller 108 identifies cacheline 204 and cacheline 206 as being associated with a minimum priority value of zero and selects cacheline 204 for eviction, such that data requested by the request 114 (e.g., data store data 120) can be stored in cache 102 in place of data previously occupying cacheline 204.
- a priority value of each unprotected cacheline is decremented until at least one unprotected cacheline has a minimum priority (block 314).
- the controller 108 for instance, identifies that the cache 102 includes at least one cacheline having an associated priority value of zero.
- the controller 108 In response to identifying that at least one cacheline has a minimum associated priority value (e.g., zero), the controller 108 iteratively decrements priority values of all unprotected cachelines as represented by the progression from the first state 202, to the state 216, to the state 218, to the state 220 of FIG. 2, where cacheline 204 and cacheline 206 each have a minimum priority value of zero.
- a minimum associated priority value e.g., zero
- a priority value of each protected cacheline is decremented (block 316).
- the controller 108 decrements a priority value for protected cacheline 208 and protected cacheline 210, as represented by the progression from state 220 to state 222 in FIG. 2.
- the cache replacement policy 110 avoids a scenario where a protected cacheline is maintained in cache 102 forever, and thus avoids buildup of cache plaque or a scenario where a computational task otherwise inadvertently instructs all data to be kept in cache for perpetuity.
- procedure 300 After decrementing a priority value for each protected cacheline, operation of procedure 300 then returns to block 308. This return to block 308 then enables progression to block 310 after decrementing the priority value for at least one unprotected cacheline to a minimum priority value. Alternatively, this also accounts for a scenario where all cachelines of a cache are protected, and operation of procedure 300 continues until at least one cacheline - either protected or unprotected - has a minimum associated priority value, at which point the cacheline is evicted at block 310.
- the procedure 300 is configured to repeat upon receipt of subsequent requests 114, for any number of requests received by the controller 108, as indicated by the dashed arrows returning to block 302 from block 306 and block 310.
- FIG. 4 depicts an example 400 in which cacheline priority values are updated relative to default and maximum thresholds for protected and unprotected cachelines in accordance with one or more implementations.
- priority value key 402 includes information representing how different priority values are assigned to protected and unprotected cachelines in accordance with the cache replacement policy 110. Specifically, priority value key 402 denotes that a priority value of seven represents a maximum priority value eligible for assignment to protected cachelines. Priority value key 402 further indicates that a priority value of three represents a maximum priority value eligible for assignment to unprotected cachelines.
- Priority value key 402 further describes how protected cachelines, upon insertion (e.g., upon being written to cache 102) are assigned a default value of five and how unprotected cachelines are assigned a default value of one upon insertion into the cache. Finally, priority value key 402 indicates that a minimum cacheline priority value of zero represents when cachelines are eligible for eviction (e.g., in response to the request 114 being a cache miss). In this manner, priority value key 402 effectively defines different ranges of priority values for protected cachelines (e.g., super-temporal cachelines) and unprotected cachelines (e.g., non- super temporal cachelines or super-temporal cachelines that have aged out).
- protected cachelines e.g., super-temporal cachelines
- unprotected cachelines e.g., non- super temporal cachelines or super-temporal cachelines that have aged out.
- priority value key 402 defines that cachelines having priority values from four to seven are super- temporal and to be protected or otherwise preserved in the cache 102. Conversely, priority value key 402 defines that cachelines having priority values from zero to three are either not super-temporal cachelines or instances of super-temporal cachelines that have aged to lose their super-temporal status and are to be evicted from cache 102 more favorably relative to super-temporal cachelines.
- state 404 represents an example state of cache 102 where priority values 414 are useable to define a priority by which different cachelines are maintained in the cache 102 while also accounting for whether a certain cacheline should be designated as protected (e.g., as instructed by program code of a computational task that involves request 114).
- state 404 illustrates how the cache 102 includes cacheline 406 having a priority value of one, includes cacheline 408 having a priority value of four, includes cacheline 410 having a priority value of five, and includes cacheline 412 having a priority value of two.
- the cache replacement policy 110 causes the controller 108 to update the respective priority values of cacheline 406, cacheline 408, cacheline 410, and cacheline 412 based on a result of request 114. For instance, in implementations where the request 114 results in a cache hit, the cache replacement policy 110 causes the cache replacement policy 110 to increment a priority value associated with the cacheline that includes data requested by the request 114. In some implementations, the controller 108 increments the cacheline priority value relative to the cacheline’s current priority value.
- the controller 108 is caused to increment the cacheline priority value to the unprotected maximum priority value.
- the controller 108 identifies that cacheline 408 previously had a priority value of four, which is greater than the maximum priority value for unprotected cachelines (e.g., as indicated by state 404 relative to priority value key 402).
- the cache replacement policy 110 causes the controller 108 to increment to the priority value of cacheline 408 to the maximum priority value of seven (e.g., for protected cachelines as specified by priority value key 402), which results in state 416 of cache 102.
- the controller 108 in response to identifying that data requested by request 114 is stored in cacheline 412, the controller 108 identifies that cacheline 412 previously had a priority value of two, which is less than the maximum priority value for unprotected cachelines (e.g., as indicated by state 404 relative to priority value key 402).
- the cache replacement policy 110 causes the controller 108 to increment the priority value of block 312 to the maximum priority value of three (e.g., for unprotected cachelines as specified by priority value key 402), which results in state 418 of cache 102.
- the cache replacement policy 110 in response to identifying that data requested by request 114 is not stored in any cacheline of cache 102 (e.g., a cache miss), the cache replacement policy 110 causes the controller 108 to decrement a priority value of each cacheline until at least one cacheline achieves a minimum priority value and is eligible for eviction.
- state 420 represents a condition of cache 102 resulting from state 404 where request 114 results in a cache miss.
- each of the priority values 414 are decremented, such that cacheline 406 is associated with a minimum priority value of zero, while cacheline 408, cacheline 410, and cacheline 412 each have a decremented priority value (e.g., relative to state 404) that is above the minimum priority value.
- the cache replacement policy 110 causes the controller 108 to evict cacheline 406 to make room in the cache 102 for data requested by the request 114.
- the requested data replacing evicted cacheline 406 is indicated as being protected, the requested data is inserted into cache 102 with a priority value of five.
- the requested data replacing evicted cacheline 406 is not indicated as being protected, the requested data is inserted into cache 102 with a priority value of one.
- Example flows of operations performed by the controller 108 in enforcing the cache replacement policy 110 illustrated with respect to FIG. 4 is described in further detail below with respect to FIG. 5.
- FIG. 5 depicts a procedure 500 for modifying priority values for protected and unprotected cachelines and evicting cachelines based on their priority values.
- a cacheline is inserted into a cache (block 502).
- the controller 108 initializes cache 102 by inserting data into the cache 102 as instructed by program code of a computational task being executed by the cache client 104.
- an application developer instructs a cache to be populated with certain data objects involved in performing the computational task.
- the controller 108 inserts data store data 120 into a cacheline of the cache 102 (e.g., in response to the request 114 being a request for data stored in the data store 106).
- a determination is made as to whether the inserted cacheline is protected (block 504).
- the guiding logic 112 of the cache replacement policy 110 informs the controller 108 as to whether data represented by the inserted cacheline is indicated as being protected for the purposes of a specific computational task performed by the cache client 104 (e.g., based on program code authored by a developer of the computational task, based on a data storage location from which data of the inserted cacheline was retrieved being defined as a protected memory location, or a combination thereof).
- an unprotected default priority value is assigned to the cacheline (block 506).
- the controller 108 assigns the inserted cacheline to have a priority value of three, in accordance with the values of priority value key 402.
- a protected default priority value is assigned to the cacheline (block 508).
- the controller 108 assigns the inserted cacheline to have a priority value of five, in accordance with the values of priority value key 402.
- Operation of procedure 500 then proceeds from either block 506 or block 508 to block 510, where a request for data is received.
- the controller 108 receives request 114 from the cache client 104.
- a determination is made as to whether the request resulted in a cache hit (block 512).
- determining that the request 114 results in a cache hit e.g., a “Yes” determination at block
- the controller 108 compares a priority value of a cacheline used to store data requested by the request 114 to threshold values defined by the cache replacement policy 110 (e.g., the priority values indicated in priority value key 402). In response to determining that the hit cacheline has an associated priority value that is not greater than the maximum priority value for unprotected cachelines (e.g., a “No” determination at block 514), the hit cacheline priority value is set to the unprotected maximum priority value (block 516). The controller 108, for instance, identifies that data requested by request 114 is stored in cacheline 412.
- the controller 108 further identifies that cacheline 412 has an associated priority value of two, which is less than the unprotected maximum priority value of three indicated by priority value key 402 at the time request 1 14 is received. In response to the cache hit, the controller 108 updates the cacheline 412 to have a priority value of three (e.g., the maximum priority value for unprotected cachelines), and transitions cache 102 from state 404 to state 418.
- a priority value of three e.g., the maximum priority value for unprotected cachelines
- the hit cacheline priority value is set to the protected maximum priority value (block 518).
- the controller 108 identifies that data requested by request 114 is stored in cacheline 408.
- the controller 108 further identifies that cacheline 408 has an associated priority value of four, which is greater than the unprotected maximum priority value of three indicated by priority value key 402 at the time request 114 is received.
- the controller 108 updates the cacheline 408 to have a priority value of seven (e.g., the maximum priority value for protected cachelines), and transitions cache 102 from state 404 to state 416, as illustrated in FIG. 4.
- the cache replacement policy 110 causes the controller 108 to increment priority values for hit cachelines to a value that is less than a maximum value for a protected cacheline or a maximum value for an unprotected cacheline.
- the controller 108 is caused to deviate from the illustrated flow of FIG. 5 based on an indication as to whether a request (e.g., the request 114) is supertemporal or non-super temporal. For instance, in an example implementation where a “No” determination at block 514 otherwise causes the controller to proceed to block 516, a request received with an indication that the request is a super-temporal request causes the controller to instead proceed to block 518 and set a priority value for the hit cacheline to indicate a supertemporal priority value (e.g., a protected maximum value).
- a supertemporal priority value e.g., a protected maximum value
- a request received with an indication that the request is a non-super- temporal request causes the controller to instead proceed to block 516 and set a priority value for the hit cacheline to indicate a non-super-temporal priority value (e.g., an unprotected maximum value).
- the cache replacement policy 110 is thus configurable to cause the controller 108 to update priority values for cachelines storing data actively involved in performing a computational task, such that recently used data is promoted for retention in the cache 102. Operation of procedure 500 then optionally returns to service another request, as indicated by the dashed arrows returning to block 512 from block 516 and block 518.
- a determination is made as to whether a cacheline has a minimum priority value (block 520).
- the controller 108 checks whether a cacheline of cache 102 is associated with a minimum priority value (e.g., a priority value of zero with respect to the example 400). In response to identifying that a cacheline is currently associated with a minimum priority value (e.g., a “Yes” determination at block 520), the cacheline with the minimum priority value is evicted from the cache (block 522).
- the controller 108 for instance, identifies cacheline 406 in state 420 of the cache 102 as being associated with a minimum priority value of zero and evicts data stored in cacheline 406 from the cache 102.
- a priority value of each cacheline is decremented (block 524).
- the controller 108 reduces each of the priority values 414 in cache 102 by at least one. Operation then returns to block 520 where the controller 108 again determines whether a cacheline includes a minimum priority value (e.g., resulting from the decrementing performed in block 524). This process of operations represented by block 520 and block 524 continues until at least one cacheline is associated with a minimum priority value, at which point the cacheline with the minimum priority value is evicted from the cache (block 522). Operation of procedure 500 then optionally returns to block 502 where, for instance, data that was requested by the request 114 is inserted as a cacheline into cache 102 in place of the cacheline evicted at block 522.
- guiding logic 112 of the cache replacement policy 110 is configurable in a manner such that individual cachelines can be associated with extended bit information (e.g., data encoded in two or more bits) describing priority for cacheline retention.
- extended bit information e.g., data encoded in two or more bits
- Such extended bit information enables for defining thresholds in a program-specific manner to create a policy that encourages retention of important data - and/or data retrieved from protected memory locations - to curate a tailored cache management policy for a particular computational task, independent of (e.g., without) requiring a separate protected/unprotected indicator.
- each cacheline includes a binary protected bit indicator and three or more bits that represent a priority value for the cacheline.
- each cacheline is configured with information that defines a counter which represents a maximum number of requests (e.g., a maximum number of requests 114) over which a cacheline is permitted to be retained in cache 102 (e.g., independent of an associated priority value for the cacheline).
- prefetched data is inserted into the cache 102 with associated priority values that are defined as a condition of being prefetched.
- data that is prefetched by the system 100 is assigned a priority value indicating that the data is to be treated as protected (e.g., to avoid inadvertent flushing from the cache 102 before the prefetched data is actually used).
- the various functional units illustrated in the figures and/or described herein are implemented in any of a variety of different manners such as hardware circuitry, software or firmware executing on a programmable processor, or any combination of two or more of hardware, software, and firmware.
- the methods provided are implemented in any of a variety of devices, such as a general-purpose computer, a processor, or a processor core.
- Suitable processors include, by way of example, a general purpose processor, a special purpose processor, a conventional processor, a digital signal processor (DSP), a graphics processing unit (GPU), a parallel accelerated processor, a plurality of microprocessors, one or more microprocessors in association with a DSP core, a controller, a microcontroller, Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs) circuits, any other type of integrated circuit (IC), and/or a state machine.
- DSP digital signal processor
- GPU graphics processing unit
- ASICs Application Specific Integrated Circuits
- FPGAs Field Programmable Gate Arrays
- non-transitory computer-readable storage mediums include a read only memory (ROM), a random-access memory (RAM), a register, cache memory, semiconductor memory devices, magnetic media such as internal hard disks and removable disks, magnetooptical media, and optical media such as CD-ROM disks, and digital versatile disks (DVDs).
- ROM read only memory
- RAM random-access memory
- register cache memory
- semiconductor memory devices magnetic media such as internal hard disks and removable disks, magnetooptical media, and optical media such as CD-ROM disks, and digital versatile disks (DVDs).
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
Description
Claims
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202480035793.2A CN121219670A (en) | 2023-06-09 | 2024-05-09 | Super-temporary cache replacement |
| KR1020267000264A KR20260018156A (en) | 2023-06-09 | 2024-05-09 | Super-temporal cache replacement |
| EP24819768.3A EP4724888A1 (en) | 2023-06-09 | 2024-05-09 | Super-temporal cache replacement |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US18/332,112 US12455823B2 (en) | 2023-06-09 | 2023-06-09 | Super-temporal cache replacement policy |
| US18/332,112 | 2023-06-09 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2024253798A1 true WO2024253798A1 (en) | 2024-12-12 |
Family
ID=93744594
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2024/028570 Ceased WO2024253798A1 (en) | 2023-06-09 | 2024-05-09 | Super-temporal cache replacement |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US12455823B2 (en) |
| EP (1) | EP4724888A1 (en) |
| KR (1) | KR20260018156A (en) |
| CN (1) | CN121219670A (en) |
| WO (1) | WO2024253798A1 (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12455823B2 (en) | 2023-06-09 | 2025-10-28 | Advanced Micro Devices, Inc. | Super-temporal cache replacement policy |
| CN120872866A (en) * | 2025-09-28 | 2025-10-31 | 上海壁仞科技股份有限公司 | Priority resetting method for cache line and artificial intelligent chip |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020116584A1 (en) * | 2000-12-20 | 2002-08-22 | Intel Corporation | Runahead allocation protection (rap) |
| US20150186280A1 (en) * | 2013-12-31 | 2015-07-02 | Samsung Electronics Co., Ltd. | Cache replacement policy methods and systems |
| US20160283392A1 (en) * | 2015-03-27 | 2016-09-29 | Intel Corporation | Asymmetric set combined cache |
| US20190034351A1 (en) * | 2017-11-29 | 2019-01-31 | Barak Hermesh | Zero thrash cache queue manager |
| US20210182216A1 (en) * | 2019-12-16 | 2021-06-17 | Advanced Micro Devices, Inc. | Cache management based on access type priority |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7979642B2 (en) * | 2008-09-11 | 2011-07-12 | Arm Limited | Managing the storage of high-priority storage items in storage units in multi-core and multi-threaded systems using history storage and control circuitry |
| US8364898B2 (en) * | 2009-01-23 | 2013-01-29 | International Business Machines Corporation | Optimizing a cache back invalidation policy |
| US9053037B2 (en) * | 2011-04-04 | 2015-06-09 | International Business Machines Corporation | Allocating cache for use as a dedicated local storage |
| US9176885B2 (en) * | 2012-01-23 | 2015-11-03 | International Business Machines Corporation | Combined cache inject and lock operation |
| US8966494B2 (en) * | 2012-03-16 | 2015-02-24 | Arm Limited | Apparatus and method for processing threads requiring resources |
| US9262327B2 (en) * | 2012-06-29 | 2016-02-16 | Intel Corporation | Signature based hit-predicting cache |
| US9218291B2 (en) * | 2013-07-25 | 2015-12-22 | International Business Machines Corporation | Implementing selective cache injection |
| US10216646B2 (en) * | 2015-08-19 | 2019-02-26 | Board Of Regents, The University Of Texas System | Evicting appropriate cache line using a replacement policy utilizing belady's optimal algorithm |
| US11994990B2 (en) * | 2022-01-21 | 2024-05-28 | Micron Technology, Inc. | Memory media row activation-biased caching |
| US12182037B2 (en) * | 2023-02-23 | 2024-12-31 | Apple Inc. | Cache control to preserve register data |
| US12455823B2 (en) | 2023-06-09 | 2025-10-28 | Advanced Micro Devices, Inc. | Super-temporal cache replacement policy |
-
2023
- 2023-06-09 US US18/332,112 patent/US12455823B2/en active Active
-
2024
- 2024-05-09 WO PCT/US2024/028570 patent/WO2024253798A1/en not_active Ceased
- 2024-05-09 KR KR1020267000264A patent/KR20260018156A/en active Pending
- 2024-05-09 EP EP24819768.3A patent/EP4724888A1/en active Pending
- 2024-05-09 CN CN202480035793.2A patent/CN121219670A/en active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020116584A1 (en) * | 2000-12-20 | 2002-08-22 | Intel Corporation | Runahead allocation protection (rap) |
| US20150186280A1 (en) * | 2013-12-31 | 2015-07-02 | Samsung Electronics Co., Ltd. | Cache replacement policy methods and systems |
| US20160283392A1 (en) * | 2015-03-27 | 2016-09-29 | Intel Corporation | Asymmetric set combined cache |
| US20190034351A1 (en) * | 2017-11-29 | 2019-01-31 | Barak Hermesh | Zero thrash cache queue manager |
| US20210182216A1 (en) * | 2019-12-16 | 2021-06-17 | Advanced Micro Devices, Inc. | Cache management based on access type priority |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12455823B2 (en) | 2023-06-09 | 2025-10-28 | Advanced Micro Devices, Inc. | Super-temporal cache replacement policy |
| CN120872866A (en) * | 2025-09-28 | 2025-10-31 | 上海壁仞科技股份有限公司 | Priority resetting method for cache line and artificial intelligent chip |
Also Published As
| Publication number | Publication date |
|---|---|
| US12455823B2 (en) | 2025-10-28 |
| CN121219670A (en) | 2025-12-26 |
| EP4724888A1 (en) | 2026-04-15 |
| KR20260018156A (en) | 2026-02-06 |
| US20240411692A1 (en) | 2024-12-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11086792B2 (en) | Cache replacing method and apparatus, heterogeneous multi-core system and cache managing method | |
| US10831678B2 (en) | Multi-tier cache placement mechanism | |
| US6728837B2 (en) | Adaptive data insertion for caching | |
| US20180300258A1 (en) | Access rank aware cache replacement policy | |
| US7991956B2 (en) | Providing application-level information for use in cache management | |
| US10223278B2 (en) | Selective bypassing of allocation in a cache | |
| EP4724888A1 (en) | Super-temporal cache replacement | |
| US11803484B2 (en) | Dynamic application of software data caching hints based on cache test regions | |
| US8583874B2 (en) | Method and apparatus for caching prefetched data | |
| JP6630449B2 (en) | Replace cache entries based on entry availability in other caches | |
| US8364904B2 (en) | Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer | |
| US20180081811A1 (en) | Dynamic cache partitioning through hill-climbing | |
| CN115495394B (en) | Data prefetching method and data prefetching device | |
| US11836088B2 (en) | Guided cache replacement | |
| CN118550853B (en) | Cache replacement method and device, electronic equipment and readable storage medium | |
| CN119988255A (en) | A method, device, equipment and storage medium for memory access cache management | |
| US20170357596A1 (en) | Dynamically adjustable inclusion bias for inclusive caches | |
| US11599473B1 (en) | Methods and apparatus for training prefetch information | |
| US20120124291A1 (en) | Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data | |
| US8656106B2 (en) | Managing unforced injections of cache lines into a cache utilizing predetermined address ranges | |
| KR20100005539A (en) | Cache memory system and prefetching method thereof | |
| KR20190008245A (en) | Setting the cache entry age based on hints from another cache level | |
| CN113778693B (en) | Cache operation method, cache operation device, electronic equipment and processor | |
| US12339783B2 (en) | Managing a cache using per memory region reuse distance estimation | |
| EP3258383A1 (en) | Dynamically adjustable inclusion bias for inclusive caches |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 24819768 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: CN2024800357932 Country of ref document: CN |
|
| ENP | Entry into the national phase |
Ref document number: 2025570678 Country of ref document: JP Kind code of ref document: A |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2025570678 Country of ref document: JP |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 202517123698 Country of ref document: IN |
|
| WWP | Wipo information: published in national office |
Ref document number: 202517123698 Country of ref document: IN |
|
| ENP | Entry into the national phase |
Ref document number: 1020267000264 Country of ref document: KR Free format text: ST27 STATUS EVENT CODE: A-0-1-A10-A15-NAP-PA0105 (AS PROVIDED BY THE NATIONAL OFFICE) |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 1020267000264 Country of ref document: KR |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2024819768 Country of ref document: EP |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| ENP | Entry into the national phase |
Ref document number: 2024819768 Country of ref document: EP Effective date: 20260109 |
|
| ENP | Entry into the national phase |
Ref document number: 2024819768 Country of ref document: EP Effective date: 20260109 |
|
| ENP | Entry into the national phase |
Ref document number: 2024819768 Country of ref document: EP Effective date: 20260109 |
|
| ENP | Entry into the national phase |
Ref document number: 2024819768 Country of ref document: EP Effective date: 20260109 |
|
| WWP | Wipo information: published in national office |
Ref document number: 1020267000264 Country of ref document: KR |
|
| ENP | Entry into the national phase |
Ref document number: 2024819768 Country of ref document: EP Effective date: 20260109 |
|
| WWP | Wipo information: published in national office |
Ref document number: 2024819768 Country of ref document: EP |