US20090113135A1 - Mechanism for data cache replacement based on region policies - Google Patents

Mechanism for data cache replacement based on region policies Download PDF

Info

Publication number
US20090113135A1
US20090113135A1 US11/929,771 US92977107A US2009113135A1 US 20090113135 A1 US20090113135 A1 US 20090113135A1 US 92977107 A US92977107 A US 92977107A US 2009113135 A1 US2009113135 A1 US 2009113135A1
Authority
US
United States
Prior art keywords
cache
region
block
replacement
blocks
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.)
Granted
Application number
US11/929,771
Other versions
US7793049B2 (en
Inventor
Harold W. Cain
Jong-Deok Choi
Pratak Pattnaik
Mauricio J. Serrano
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to US11/929,771 priority Critical patent/US7793049B2/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CHOI, JONG-DEOK, CAIN, HAROLD WADE, III, PATTNAIK, PRATAK, SERRANO, MAURICIO J.
Publication of US20090113135A1 publication Critical patent/US20090113135A1/en
Application granted granted Critical
Publication of US7793049B2 publication Critical patent/US7793049B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning

Definitions

  • the invention disclosed broadly relates to the field of cache memory and more particularly relates to the field of data cache replacement policies.
  • Modern computer systems employ cache memories in addition to main memory.
  • the access latency of cache memory is significantly less than the access latency of main memory.
  • One type of these cache memories retains recently accessed data, in the presumption that this data will be accessed again in the future.
  • Memory operations performed by a processor will access this cache memory first.
  • the processor In the event that the accessed data is not found in the cache (termed a cache miss), the processor must wait for an extended period of time while that data is loaded into the cache from a slower or more remote memory. Processor stalls caused by this wait period comprise the majority of execution time for many applications.
  • Cache memories are logically organized as multiple sets of cache blocks.
  • the set in which the new block is placed is first examined; if that set is full, room must be created for the new block by evicting one of the currently residing blocks from the set. This block selected for eviction is termed the victim.
  • cache block replacement policies include least-recently used (LRU) and first-in-first out (FIFO). These replacement policies have been designed to minimize the frequency of misses to the cache.
  • Modern languages such as JavaTM or C# employ garbage collection techniques to manage memory allocation for objects.
  • garbage collection techniques segregate allocated objects by regions, with different characteristics. For example, many programs tend to exhibit a high-rate of short-lived object allocations. Typically, only a small percentage of these allocated objects survive subsequent garbage collections. Objects that survive long-enough may be moved to another memory region.
  • a region of memory could be the thread-local-heap memory (TLH), or a temporary allocation used by a thread; thus there could be multiple regions of memory at the same time.
  • TSH thread-local-heap memory
  • a system and method for cache replacement includes: augmenting each cache block in a cache region with a region hint indicating a temporal priority of the cache block; receiving an indication that a cache miss has occurred; and selecting for eviction the cache block comprising the region hint indicating a low temporal priority.
  • FIG. 1 is a flow chart of a method for tracking regions, according to an embodiment of the invention
  • FIG. 2 a is a simplified block diagram illustrating a system according to an embodiment of the invention.
  • FIG. 2 b is a block diagram illustrating optional components of a cache controller according to an embodiment of the present invention.
  • FIG. 3 is a flow chart of a modified cache replacement algorithm, according to an embodiment of the present invention.
  • the software mechanism employs a cache replacement algorithm that uses hints generated by a running program regarding the potential for re-use of a cache block, based on semantics characteristics of the program. This information is tagged to the memory blocks so that the replacement algorithm refers to it when selecting a block for eviction.
  • Cache blocks are grouped logically, not physically. We assume that a runtime system can identify the memory regions with different temporal characteristics. A memory region could be given a low temporal priority if a cache block in this region is not likely to be reused in the near future, i.e. the reuse distance is large. Conversely, a memory region is given a high temporal priority if the reuse distance is small.
  • This region hint (RH) indicating temporal priority may be encoded as a small N-bit integer, allowing 2**N temporal priorities.
  • a software runtime system identifies memory regions by their temporal characteristics.
  • a conventional processor can be augmented with additional hardware to track regions.
  • a processor can have region tables associated with a particular process, each region entry containing information such as the start/end address of the region, and its associated RH priority. These tables are then saved/restored on a context switch.
  • a variant of (a) is for the processor to access the region table only when there is a cache miss (not on every memory operation), and the region's temporal priority is written to the cache with the incoming cache block, as part of the block's metadata.
  • Another variant of (a) is to merge the region hints with address translation tables such as existing ERAT (effective-to-real address table)/TLB (translation look-aside buffer) tables, which would limit regions to the particular granularity of the table.
  • FIG. 1 there is illustrated a flow chart of a method 100 for tracking regions, according to an embodiment of the present invention.
  • the method begins at step 102 where the processor accesses the region tables for every memory read/write.
  • step 104 the processor then broadcasts the region hint to a particular cache level in the case of a cache miss at that level.
  • this hint can be captured in a cache block's information when the block is allocated. Consequently, in step 108 each block in the cache is augmented with a region hint (RH) field that can be used by the cache controller to make subsequent replacement decisions for the cache lines in a set in step.
  • RH region hint
  • a default value is used in step 110 .
  • An example of a default is to set all bits to zero.
  • FIG. 2 a there is illustrated a cache management system 200 configured to operate according to an embodiment of the present invention.
  • the system 200 is illustrated as a simplified information processing system with a processor 202 operatively connected with a cache controller 220 .
  • processor 202 operatively connected with a cache controller 220 .
  • cache controller 220 One can appreciate that other low-level components and connections are required in any practical application of a computer apparatus.
  • Cache memory 210 in this example is a set-associative cache encompassing multiple sets of data blocks 215 .
  • Each data block set has data blocks 215 (Blk 1 , Blk 2 , and Blkn). The number of sets and cache blocks within cache memory may vary by system.
  • Each cache block 215 has a tag 221 identifier and metadata 225 .
  • the metadata 225 in a cache block 215 may contain cache data such as temporal priority RH 234 , and an LRU bit 235 .
  • a cache controller 220 handles access requests to the cache memory 210 .
  • a least recently used (LRU) stack 235 is associated with each set in the cache 210 .
  • the LRU stack 235 contains a register of the blocks 215 within the set, ordered by temporal history. Conventionally, the most recently used blocks are at the “top” of the stack 235 and the least recently used blocks are referenced at the “bottom” of the stack 235 .
  • An algorithm for selecting a block 215 for replacement is executed by the cache controller 220 .
  • the cache controller 220 may include the following components: a) a tracking circuit 222 for tracking regions in the cache 210 ; and b) a region table 226 associated with a process.
  • the region table 226 includes one or more region entries. Each entry contains information such as a start and end address for the region, and its associated temporal priority.
  • each cache line contains a software region hint 234 .
  • the controller 210 Upon receipt of cache miss in step 310 , the controller 210 determines if there is a region hint in step 320 . If it has a prediction of region hint 234 for a cache block 215 , the modified replacement algorithm selects for replacement a block 215 that was least recently touched and whose region hint 234 makes it less likely to be used in step 330 .
  • the replacement algorithm behaves as usual, selecting the least recently touched cache block in step 325 .
  • step 340 that block is replaced.
  • a region hint 234 does not necessarily mean that such blocks should be replaced immediately; doing so may result in an increase of cache misses for the set.
  • the replacement policy considers both the LRU information of the cache line and the RH information for making an intelligent decision.
  • a cache controller 220 may use the region hints as follows:
  • the controller 220 considers only those blocks with lower RH priority (large reuse) and performs a conventional LRU mechanism among these blocks. If there are not blocks for that particular region priority, then the next priority region is considered, until a candidate for replacement is selected.
  • a variant of the previous approach excludes some portion of the LRU 235 stack from this replacement decision, such that the most-recently-used cache blocks are not candidates for replacement. For example, if the cache associativity is eight, then only a portion of the eight potential replacement candidates could be considered for replacement, among the least recently used candidates.
  • a stack threshold because a threshold value is used to determine which portion of the LRU stack 235 should be included in the replacement decision.
  • each cache line contains a number expressing the LRU position in the set and the region hint 234 , expressed as a 1-bit (Yes/No).
  • Lower LRU numbers mean that the cache line is less recently used.
  • the controller 220 may elect to evict line 2 , because it is not very used and has the RH 234 .
  • the controller 220 could make the following decisions:
  • the controller 220 may decide to replace RH blocks only if they are rarely used. For example, it may select RH lines 1 and 2 and decide that they are not old enough because they are not in the 1 ⁇ 4 portion of the least recently used lines. Thus, it may elect to evict line 3 instead.
  • controller's policy is to select lines with only RH replacement, then it could select line 2 because it is the least-recently used among the subset ⁇ 1 , 2 ⁇ .
  • controller's policy is to use lines in the bottom one-half portion of the least recently used stack 235 , it may also select line 2 because of its region hint 234 when compared to line 3 .
  • cache lines that are being used for allocation are mapped in a wrap-around fashion to different congruence sets in a cache 210 , at least in virtual address space.
  • the use of large pages could guarantee that physical locations are mapped sequentially from virtual addresses. For example a 16-MByte large page could guarantee consecutive physical addresses for all cache lines within that page.
  • nursery allocation could be done sequentially. Under this simplified scheme, it is only needed to track the cache line within a set that could potentially contain a line allocated with the region hint 234 . For example, four bits are required for each set in an eight-way associative cache, three of which point to the set containing the RH bit 234 , and the fourth indicating that there is a cache line with the region hint 234 .
  • the controller 220 may elect to take the following actions:
  • the controller 220 may elect to always evict any RH installed line pointed by the four bits (if any), or decide to clear the RH information if the RH line is not old enough.

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

A system and method for cache replacement includes: augmenting each cache block in a cache region with a region hint indicating a temporal priority of the cache block; receiving an indication that a cache miss has occurred; and selecting for eviction the cache block comprising the region hint indicating a low temporal priority.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • None.
  • STATEMENT REGARDING FEDERALLY SPONSORED-RESEARCH OR DEVELOPMENT
  • None.
  • INCORPORATION BY REFERENCE OF MATERIAL SUBMITTED ON A COMPACT DISC
  • None.
  • FIELD OF THE INVENTION
  • The invention disclosed broadly relates to the field of cache memory and more particularly relates to the field of data cache replacement policies.
  • BACKGROUND OF THE INVENTION
  • Modern computer systems employ cache memories in addition to main memory. The access latency of cache memory is significantly less than the access latency of main memory. One type of these cache memories retains recently accessed data, in the presumption that this data will be accessed again in the future. Memory operations performed by a processor will access this cache memory first. In the event that the accessed data is not found in the cache (termed a cache miss), the processor must wait for an extended period of time while that data is loaded into the cache from a slower or more remote memory. Processor stalls caused by this wait period comprise the majority of execution time for many applications.
  • Cache memories are logically organized as multiple sets of cache blocks. When a cache miss occurs, the set in which the new block is placed is first examined; if that set is full, room must be created for the new block by evicting one of the currently residing blocks from the set. This block selected for eviction is termed the victim. There has been much prior work described in the literature on determining the best choice of victim, such that the miss rate to the cache will be minimized. Examples of such cache block replacement policies include least-recently used (LRU) and first-in-first out (FIFO). These replacement policies have been designed to minimize the frequency of misses to the cache.
  • Modern languages such as Java™ or C# employ garbage collection techniques to manage memory allocation for objects. Such memory management techniques segregate allocated objects by regions, with different characteristics. For example, many programs tend to exhibit a high-rate of short-lived object allocations. Typically, only a small percentage of these allocated objects survive subsequent garbage collections. Objects that survive long-enough may be moved to another memory region.
  • Consequently, there are regions in memory which exhibit different reuse characteristics. The probability of reusing a cache line containing long-lived objects is typically higher. This is particularly true of generational garbage collectors, where there are separate regions for the newly allocated objects (nurseries) and long-lived objects (mature space). The concept of memory region can be applied to many other cases. For example, a region of memory could be the thread-local-heap memory (TLH), or a temporary allocation used by a thread; thus there could be multiple regions of memory at the same time.
  • There is a need for a cache replacement method to overcome the shortcomings of the known caches.
  • SUMMARY OF THE INVENTION
  • Briefly, according to an embodiment of the invention, a system and method for cache replacement includes: augmenting each cache block in a cache region with a region hint indicating a temporal priority of the cache block; receiving an indication that a cache miss has occurred; and selecting for eviction the cache block comprising the region hint indicating a low temporal priority.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • To describe the foregoing and other exemplary purposes, aspects, and advantages, we use the following detailed description of an exemplary embodiment of the invention with reference to the drawings, in which:
  • FIG. 1 is a flow chart of a method for tracking regions, according to an embodiment of the invention;
  • FIG. 2 a is a simplified block diagram illustrating a system according to an embodiment of the invention;
  • FIG. 2 b is a block diagram illustrating optional components of a cache controller according to an embodiment of the present invention; and
  • FIG. 3 is a flow chart of a modified cache replacement algorithm, according to an embodiment of the present invention.
  • While the invention as claimed can be modified into alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the scope of the present invention.
  • DETAILED DESCRIPTION
  • We describe a combined software mechanism and hardware cache replacement mechanism that preferentially replaces cache blocks placed in regions less likely to be reused in the future, over those blocks placed in different regions which may be longer lived. This reduces the number of cache misses, resulting in a significant performance improvement. The software mechanism employs a cache replacement algorithm that uses hints generated by a running program regarding the potential for re-use of a cache block, based on semantics characteristics of the program. This information is tagged to the memory blocks so that the replacement algorithm refers to it when selecting a block for eviction.
  • Cache blocks are grouped logically, not physically. We assume that a runtime system can identify the memory regions with different temporal characteristics. A memory region could be given a low temporal priority if a cache block in this region is not likely to be reused in the near future, i.e. the reuse distance is large. Conversely, a memory region is given a high temporal priority if the reuse distance is small. This region hint (RH) indicating temporal priority may be encoded as a small N-bit integer, allowing 2**N temporal priorities.
  • Initially, a software runtime system identifies memory regions by their temporal characteristics. A conventional processor can be augmented with additional hardware to track regions. Several implementations are possible. A processor can have region tables associated with a particular process, each region entry containing information such as the start/end address of the region, and its associated RH priority. These tables are then saved/restored on a context switch.
  • The following embodiments use existing mechanisms for communicating regions from hardware to software:
  • a) applying region-based cache replacement policies to different parts of the heap in garbage collected languages;
  • b) a dynamic mechanism of combining a region-based replacement algorithm with a conventional LRU (least recently used) algorithm, using a stack threshold, which is an improvement on existing mechanisms; and
  • c) a simplified version of (b) for instances where there is only one region block per cache set.
  • Using any of these embodiments, we are able to exploit behavior found in programs such as Java™ where objects created are dynamically classified into long-lived objects and short-lived objects. A variant of (a) is for the processor to access the region table only when there is a cache miss (not on every memory operation), and the region's temporal priority is written to the cache with the incoming cache block, as part of the block's metadata. Another variant of (a) is to merge the region hints with address translation tables such as existing ERAT (effective-to-real address table)/TLB (translation look-aside buffer) tables, which would limit regions to the particular granularity of the table.
  • Referring now in specific detail to the drawings, and particularly FIG. 1, there is illustrated a flow chart of a method 100 for tracking regions, according to an embodiment of the present invention. The method begins at step 102 where the processor accesses the region tables for every memory read/write.
  • In step 104, the processor then broadcasts the region hint to a particular cache level in the case of a cache miss at that level. In step 106 this hint can be captured in a cache block's information when the block is allocated. Consequently, in step 108 each block in the cache is augmented with a region hint (RH) field that can be used by the cache controller to make subsequent replacement decisions for the cache lines in a set in step. In the case that a region hint (RH) hint is not provided, a default value is used in step 110. An example of a default is to set all bits to zero.
  • Referring now to FIG. 2 a, there is illustrated a cache management system 200 configured to operate according to an embodiment of the present invention. The system 200 is illustrated as a simplified information processing system with a processor 202 operatively connected with a cache controller 220. One can appreciate that other low-level components and connections are required in any practical application of a computer apparatus.
  • Cache memory 210 in this example is a set-associative cache encompassing multiple sets of data blocks 215. Each data block set has data blocks 215 (Blk1, Blk2, and Blkn). The number of sets and cache blocks within cache memory may vary by system. Each cache block 215 has a tag 221 identifier and metadata 225. The metadata 225 in a cache block 215 may contain cache data such as temporal priority RH 234, and an LRU bit 235.
  • A cache controller 220 handles access requests to the cache memory 210. A least recently used (LRU) stack 235 is associated with each set in the cache 210. The LRU stack 235 contains a register of the blocks 215 within the set, ordered by temporal history. Conventionally, the most recently used blocks are at the “top” of the stack 235 and the least recently used blocks are referenced at the “bottom” of the stack 235. An algorithm for selecting a block 215 for replacement is executed by the cache controller 220.
  • Referring to FIG. 2 b, the cache controller 220 may include the following components: a) a tracking circuit 222 for tracking regions in the cache 210; and b) a region table 226 associated with a process. The region table 226 includes one or more region entries. Each entry contains information such as a start and end address for the region, and its associated temporal priority.
  • Referring to FIG. 3, we describe the modified cache replacement algorithm, based on a LRU or equivalent policy, although it is not necessarily limited to such a policy. The goal of a replacement policy is to select a victim candidate cache line out of several cache lines possible for a particular congruence set. This victim line will be evicted and new information will be installed in this cache line. As described previously, each cache line contains a software region hint 234.
  • Upon receipt of cache miss in step 310, the controller 210 determines if there is a region hint in step 320. If it has a prediction of region hint 234 for a cache block 215, the modified replacement algorithm selects for replacement a block 215 that was least recently touched and whose region hint 234 makes it less likely to be used in step 330.
  • In the absence of a region hint, the replacement algorithm behaves as usual, selecting the least recently touched cache block in step 325. In step 340 that block is replaced. Notice that a region hint 234 does not necessarily mean that such blocks should be replaced immediately; doing so may result in an increase of cache misses for the set. Instead, the replacement policy considers both the LRU information of the cache line and the RH information for making an intelligent decision. For example, a cache controller 220 may use the region hints as follows:
  • The controller 220 considers only those blocks with lower RH priority (large reuse) and performs a conventional LRU mechanism among these blocks. If there are not blocks for that particular region priority, then the next priority region is considered, until a candidate for replacement is selected.
  • In step 335, a variant of the previous approach excludes some portion of the LRU 235 stack from this replacement decision, such that the most-recently-used cache blocks are not candidates for replacement. For example, if the cache associativity is eight, then only a portion of the eight potential replacement candidates could be considered for replacement, among the least recently used candidates. We call such a mechanism a stack threshold, because a threshold value is used to determine which portion of the LRU stack 235 should be included in the replacement decision.
  • An example of the proposed replacement policy is the following. Suppose that there are eight cache lines in a congruence class; this means that the cache is eight-way associative. Suppose that each cache line contains a number expressing the LRU position in the set and the region hint 234, expressed as a 1-bit (Yes/No). Lower LRU numbers mean that the cache line is less recently used.
  • Cache Line LRU RH
    0 4 No
    1 5 Yes
    2 2 Yes
    3 0 No
    4 3 No
    5 6 No
    6 1 No
    7 7 No
  • Under a pure LRU policy, the next cache line to be evicted is 3, since it is the least recently used (LRU=0). However, when using the RH 234, the controller 220 may elect to evict line 2, because it is not very used and has the RH 234. The controller 220 could make the following decisions:
  • The controller 220 may decide to replace RH blocks only if they are rarely used. For example, it may select RH lines 1 and 2 and decide that they are not old enough because they are not in the ¼ portion of the least recently used lines. Thus, it may elect to evict line 3 instead.
  • If the controller's policy is to select lines with only RH replacement, then it could select line 2 because it is the least-recently used among the subset {1,2}. Alternatively, if the controller's policy is to use lines in the bottom one-half portion of the least recently used stack 235, it may also select line 2 because of its region hint 234 when compared to line 3.
  • An alternative simplified hardware implementation of the proposed replacement policy could be achieved if the probability of having only one RH cache line within a set is very high. This could be enforced by software allocation policies, for example:
  • Assuming that the software is aware of which allocation sites are likely to produce short-lived objects. In this scenario the software could enforce a sequential policy for such sites, such as the next cache line to be used in allocation belongs to the next set, and so on. Therefore, cache lines that are being used for allocation are mapped in a wrap-around fashion to different congruence sets in a cache 210, at least in virtual address space.
  • If the particular cache line is physically indexed, the use of large pages could guarantee that physical locations are mapped sequentially from virtual addresses. For example a 16-MByte large page could guarantee consecutive physical addresses for all cache lines within that page.
  • For generational garbage collectors, nursery allocation could be done sequentially. Under this simplified scheme, it is only needed to track the cache line within a set that could potentially contain a line allocated with the region hint 234. For example, four bits are required for each set in an eight-way associative cache, three of which point to the set containing the RH bit 234, and the fourth indicating that there is a cache line with the region hint 234. The controller 220 may elect to take the following actions:
  • Upon installing a new RH cache line in a set not already containing a RH line, set the four bits to point to the new cache line.
  • Upon installing a new RH cache line in a set already containing an RH line, evict that RH line if its LRU placement is very low (as explained before), or install the new RH line in the least recently position, therefore removing the region hint 234 from the old RH line.
  • Upon a cache miss without any region hint 234 for the new line, the controller 220 may elect to always evict any RH installed line pointed by the four bits (if any), or decide to clear the RH information if the RH line is not old enough.
  • Therefore, while there has been described what is presently considered to be the preferred embodiment, it will understood by those skilled in the art that other modifications can be made within the spirit of the invention. The above descriptions of embodiments are not intended to be exhaustive or limiting in scope. The embodiments, as described, were chosen in order to explain the principles of the invention, show its practical application, and enable those with ordinary skill in the art to understand how to make and use the invention. It should be understood that the invention is not limited to the embodiments described above, but rather should be interpreted within the full meaning and scope of the appended claims.

Claims (20)

1. A cache replacement method for a cache comprising a plurality of regions, each region comprising a plurality of cache blocks, the method comprising:
augmenting each cache block in each cache region with a region hint indicating a temporal priority of the cache block; and
selecting for eviction the cache block comprising the region hint indicating a low temporal priority.
2. The cache replacement method of claim 1 wherein the region hint is generated by a running program at runtime.
3. The cache replacement method of claim 2 further comprising:
initially generating the region hint when the cache block is populated.
4. The cache replacement method of claim 3 further comprising:
generating region tables associated with a particular process, each region table comprising region hints; and
storing the region tables.
5. The cache replacement method of claim 4 wherein each region table further comprises a start and an end address of each region.
6. The cache replacement method of claim 1 further comprising receiving an indication that a cache miss has occurred which triggers access to the region table.
7. The cache replacement method of claim 1 further comprising mapping nursery regions in a generational garbage collector to a lower temporal priority.
8. The cache replacement method of claim 1 further comprising integrating a region-based replacement policy with a least recently used policy.
9. The cache replacement method of claim 1 further comprising considering a position of the cache blocks relative to the least-used cache block.
10. The cache replacement method of claim 3 further comprising merging the region hint with an address translation table.
11. A processor for controlling a cache region, the processor comprising:
a tracking circuit for tracking regions in a cache, wherein each region comprises cache blocks of information; and
a region table associated with a process, wherein the table comprises one or more region entries, and each entry contains information comprising a start and end address of the region, and its associated temporal priority, wherein the region table can be saved and restored when a context event occurs.
12. The processor of claim 11 wherein each block in a cache is augmented with a temporal priority field for use by a cache controller to make its replacement decisions.
13. The processor of claim 12 wherein the processor accesses the region table for every memory read/write and passes the temporal priority to a next cache level in the case of a cache miss.
14. The processor of claim 11 further comprising receiving an indication of a cache miss, said indication of the cache miss triggering access to the region table.
15. A cache controller for controlling a cache comprising a plurality of regions, each region comprising a plurality of cache blocks, the cache controller comprising logic for:
augmenting each cache block in a cache region with a region hint indicating a temporal priority of the cache block; and
selecting for replacement the cache block comprising the region hint indicating a low temporal priority.
16. The cache controller of claim 15 further comprising receiving an indication that a cache miss has occurred, said indication of the cache miss triggering access to a region table.
17. The cache controller of claim 15 wherein the cache block comprising the region hint indicating a low temporal priority has the lowest priority among all blocks.
18. The cache controller of claim 15 wherein when there is a plurality of cache blocks with the same temporal priority a least recently used method is implemented to select which cache block is to be replaced.
19. The cache controller of claim 15 wherein a portion of a least recently used stack is excluded from a replacement decision such that most recently used cache blocks are not candidates for replacement.
20. The cache controller of claim 15 wherein the logic for selecting the cache block for replacement is implemented when there is a high probability that only one cache block has the low temporal priority.
US11/929,771 2007-10-30 2007-10-30 Mechanism for data cache replacement based on region policies Active 2028-11-19 US7793049B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/929,771 US7793049B2 (en) 2007-10-30 2007-10-30 Mechanism for data cache replacement based on region policies

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/929,771 US7793049B2 (en) 2007-10-30 2007-10-30 Mechanism for data cache replacement based on region policies

Publications (2)

Publication Number Publication Date
US20090113135A1 true US20090113135A1 (en) 2009-04-30
US7793049B2 US7793049B2 (en) 2010-09-07

Family

ID=40584389

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/929,771 Active 2028-11-19 US7793049B2 (en) 2007-10-30 2007-10-30 Mechanism for data cache replacement based on region policies

Country Status (1)

Country Link
US (1) US7793049B2 (en)

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100077153A1 (en) * 2008-09-23 2010-03-25 International Business Machines Corporation Optimal Cache Management Scheme
US20100095049A1 (en) * 2008-10-15 2010-04-15 Troy Manning Hot memory block table in a solid state storage device
GB2465474A (en) * 2008-11-21 2010-05-26 Nvidia Corp System for evicting or clearing data from a cache based on the eviction class tag of the data stored in the cache.
US20110153949A1 (en) * 2009-12-22 2011-06-23 International Business Machines Corporation Delayed replacement of cache entries
US8131931B1 (en) 2008-10-22 2012-03-06 Nvidia Corporation Configurable cache occupancy policy
CN103577480A (en) * 2012-08-07 2014-02-12 中国银联股份有限公司 Parameter division system and method, and service processing system and method
US20150095586A1 (en) * 2013-09-30 2015-04-02 Advanced Micro Devices , Inc. Storing non-temporal cache data
US20160034401A1 (en) * 2014-08-01 2016-02-04 Google Inc. Instruction Cache Management Based on Temporal Locality
WO2018017671A1 (en) * 2016-07-20 2018-01-25 Advanced Micro Devices, Inc. Selecting cache transfer policy for prefetched data based on cache test regions
US20190213142A1 (en) * 2016-09-30 2019-07-11 Mitsubishi Electric Corporation Information processing apparatus
US10521230B2 (en) 2015-12-17 2019-12-31 The Charles Stark Draper Laboratory, Inc. Data techniques
US10922235B2 (en) 2019-06-26 2021-02-16 Western Digital Technologies, Inc. Method and system for address table eviction management
US10936713B2 (en) * 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US11150910B2 (en) 2018-02-02 2021-10-19 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
US11182306B2 (en) * 2016-11-23 2021-11-23 Advanced Micro Devices, Inc. Dynamic application of software data caching hints based on cache test regions
US11748457B2 (en) 2018-02-02 2023-09-05 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
US11797398B2 (en) 2018-04-30 2023-10-24 Dover Microsystems, Inc. Systems and methods for checking safety properties
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US11875180B2 (en) 2018-11-06 2024-01-16 Dover Microsystems, Inc. Systems and methods for stalling host processor
US12079197B2 (en) 2019-10-18 2024-09-03 Dover Microsystems, Inc. Systems and methods for updating metadata
US12124566B2 (en) 2018-11-12 2024-10-22 Dover Microsystems, Inc. Systems and methods for metadata encoding
US12124576B2 (en) 2020-12-23 2024-10-22 Dover Microsystems, Inc. Systems and methods for policy violation processing
US12248564B2 (en) 2018-02-02 2025-03-11 Dover Microsystems, Inc. Systems and methods for transforming instructions for metadata processing
US12253944B2 (en) 2020-03-03 2025-03-18 Dover Microsystems, Inc. Systems and methods for caching metadata

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8151077B1 (en) * 2008-06-30 2012-04-03 Emc Corporation Application aware cache management
JP5391422B2 (en) * 2009-09-01 2014-01-15 株式会社日立製作所 Memory management method, computer system, and program
JP5380695B2 (en) * 2010-02-23 2014-01-08 株式会社日立製作所 Memory management method, computer system, and memory management program
US8656109B2 (en) 2010-12-10 2014-02-18 International Business Machines Corporation Systems and methods for background destaging storage tracks
US8661201B2 (en) 2010-12-10 2014-02-25 International Business Machines Corporation Systems and methods for managing destage conflicts
US8639888B2 (en) 2010-12-10 2014-01-28 International Business Machines Corporation Systems and methods for managing cache destage scan times
US8661202B2 (en) 2010-12-10 2014-02-25 International Business Machines Corporation Systems and methods for destaging storage tracks from cache
US8560771B2 (en) 2011-07-22 2013-10-15 International Business Machines Corporation Efficient track destage in secondary storage
WO2013101026A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Multi-level tracking of in-use state of cache lines
KR20220104829A (en) 2019-12-23 2022-07-26 마이크론 테크놀로지, 인크. Effective prevention of line cache failure

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010001873A1 (en) * 1998-07-31 2001-05-24 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory
US20020007441A1 (en) * 1998-03-31 2002-01-17 Salvador Palanca Shared cache structure for temporal and non-temporal instructions
US6681295B1 (en) * 2000-08-31 2004-01-20 Hewlett-Packard Development Company, L.P. Fast lane prefetching
US6748492B1 (en) * 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6766419B1 (en) * 2000-03-31 2004-07-20 Intel Corporation Optimization of cache evictions through software hints
US6772291B2 (en) * 2000-06-30 2004-08-03 Intel Corporation Method and apparatus for cache replacement for a multiple variable-way associative cache
US6829679B2 (en) * 2001-11-09 2004-12-07 International Business Machines Corporation Different caching treatment of memory contents based on memory region
US20050188158A1 (en) * 2004-02-25 2005-08-25 Schubert Richard P. Cache memory with improved replacement policy
US6965962B2 (en) * 2002-12-17 2005-11-15 Intel Corporation Method and system to overlap pointer load cache misses
US20060036811A1 (en) * 2004-08-11 2006-02-16 International Business Machines Corporation Method for software controllable dynamically lockable cache line replacement system
US20060101208A1 (en) * 2004-11-09 2006-05-11 Intel Corporation Method and apparatus for handling non-temporal memory accesses in a cache
US7099998B1 (en) * 2000-03-31 2006-08-29 Intel Corporation Method for reducing an importance level of a cache line
US20060230235A1 (en) * 2005-04-07 2006-10-12 Intel Corporation Low locality-of-reference support in a multi-level cache hierachy
US7133971B2 (en) * 2003-11-21 2006-11-07 International Business Machines Corporation Cache with selective least frequently used or most frequently used cache line replacement
US7552284B2 (en) * 2004-12-28 2009-06-23 Sap Ag Least frequently used eviction implementation

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020007441A1 (en) * 1998-03-31 2002-01-17 Salvador Palanca Shared cache structure for temporal and non-temporal instructions
US20010001873A1 (en) * 1998-07-31 2001-05-24 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory
US7099998B1 (en) * 2000-03-31 2006-08-29 Intel Corporation Method for reducing an importance level of a cache line
US6766419B1 (en) * 2000-03-31 2004-07-20 Intel Corporation Optimization of cache evictions through software hints
US6772291B2 (en) * 2000-06-30 2004-08-03 Intel Corporation Method and apparatus for cache replacement for a multiple variable-way associative cache
US6748492B1 (en) * 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6681295B1 (en) * 2000-08-31 2004-01-20 Hewlett-Packard Development Company, L.P. Fast lane prefetching
US6829679B2 (en) * 2001-11-09 2004-12-07 International Business Machines Corporation Different caching treatment of memory contents based on memory region
US6965962B2 (en) * 2002-12-17 2005-11-15 Intel Corporation Method and system to overlap pointer load cache misses
US7133971B2 (en) * 2003-11-21 2006-11-07 International Business Machines Corporation Cache with selective least frequently used or most frequently used cache line replacement
US20050188158A1 (en) * 2004-02-25 2005-08-25 Schubert Richard P. Cache memory with improved replacement policy
US20060036811A1 (en) * 2004-08-11 2006-02-16 International Business Machines Corporation Method for software controllable dynamically lockable cache line replacement system
US20060101208A1 (en) * 2004-11-09 2006-05-11 Intel Corporation Method and apparatus for handling non-temporal memory accesses in a cache
US7552284B2 (en) * 2004-12-28 2009-06-23 Sap Ag Least frequently used eviction implementation
US20060230235A1 (en) * 2005-04-07 2006-10-12 Intel Corporation Low locality-of-reference support in a multi-level cache hierachy

Cited By (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352684B2 (en) * 2008-09-23 2013-01-08 International Business Machines Corporation Optimal cache replacement scheme using a training operation
US20100077153A1 (en) * 2008-09-23 2010-03-25 International Business Machines Corporation Optimal Cache Management Scheme
US8725927B2 (en) * 2008-10-15 2014-05-13 Micron Technology, Inc. Hot memory block table in a solid state storage device
US9418017B2 (en) 2008-10-15 2016-08-16 Micron Technology, Inc. Hot memory block table in a solid state storage device
US20100095049A1 (en) * 2008-10-15 2010-04-15 Troy Manning Hot memory block table in a solid state storage device
US8131931B1 (en) 2008-10-22 2012-03-06 Nvidia Corporation Configurable cache occupancy policy
GB2465474B (en) * 2008-11-21 2011-08-31 Nvidia Corp Multi-class data cache policies
GB2465474A (en) * 2008-11-21 2010-05-26 Nvidia Corp System for evicting or clearing data from a cache based on the eviction class tag of the data stored in the cache.
US8868838B1 (en) 2008-11-21 2014-10-21 Nvidia Corporation Multi-class data cache policies
US20110153949A1 (en) * 2009-12-22 2011-06-23 International Business Machines Corporation Delayed replacement of cache entries
US8473684B2 (en) 2009-12-22 2013-06-25 International Business Machines Corporation Delayed replacement of cache entries
US8832383B2 (en) 2009-12-22 2014-09-09 International Business Machines Corporation Delayed replacement of TLB entries
CN103577480A (en) * 2012-08-07 2014-02-12 中国银联股份有限公司 Parameter division system and method, and service processing system and method
US20150095586A1 (en) * 2013-09-30 2015-04-02 Advanced Micro Devices , Inc. Storing non-temporal cache data
US10846228B2 (en) * 2014-08-01 2020-11-24 Google Llc Instruction cache management based on temporal locality
US20190155739A1 (en) * 2014-08-01 2019-05-23 Google Llc Instruction Cache Management Based on Temporal Locality
US20160034401A1 (en) * 2014-08-01 2016-02-04 Google Inc. Instruction Cache Management Based on Temporal Locality
US11340902B2 (en) 2015-12-17 2022-05-24 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10936713B2 (en) * 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10521230B2 (en) 2015-12-17 2019-12-31 The Charles Stark Draper Laboratory, Inc. Data techniques
US10545760B2 (en) 2015-12-17 2020-01-28 The Charles Stark Draper Laboratory, Inc. Metadata processing
US10642616B2 (en) 2015-12-17 2020-05-05 The Charles Stark Draper Laboratory, Inc Techniques for metadata processing
US10725778B2 (en) 2015-12-17 2020-07-28 The Charles Stark Draper Laboratory, Inc. Processing metadata, policies, and composite tags
US10754650B2 (en) 2015-12-17 2020-08-25 The Charles Stark Draper Laboratory, Inc. Metadata programmable tags
US11720361B2 (en) 2015-12-17 2023-08-08 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US11635960B2 (en) 2015-12-17 2023-04-25 The Charles Stark Draper Laboratory, Inc. Processing metadata, policies, and composite tags
US11507373B2 (en) 2015-12-17 2022-11-22 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US11182162B2 (en) 2015-12-17 2021-11-23 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US11782714B2 (en) 2015-12-17 2023-10-10 The Charles Stark Draper Laboratory, Inc. Metadata programmable tags
WO2018017671A1 (en) * 2016-07-20 2018-01-25 Advanced Micro Devices, Inc. Selecting cache transfer policy for prefetched data based on cache test regions
US9928176B2 (en) 2016-07-20 2018-03-27 Advanced Micro Devices, Inc. Selecting cache transfer policy for prefetched data based on cache test regions
US10949360B2 (en) * 2016-09-30 2021-03-16 Mitsubishi Electric Corporation Information processing apparatus
US20190213142A1 (en) * 2016-09-30 2019-07-11 Mitsubishi Electric Corporation Information processing apparatus
US11182306B2 (en) * 2016-11-23 2021-11-23 Advanced Micro Devices, Inc. Dynamic application of software data caching hints based on cache test regions
US11709680B2 (en) 2018-02-02 2023-07-25 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
US11977613B2 (en) 2018-02-02 2024-05-07 Dover Microsystems, Inc. System and method for translating mapping policy into code
US11748457B2 (en) 2018-02-02 2023-09-05 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
US11150910B2 (en) 2018-02-02 2021-10-19 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
US12248564B2 (en) 2018-02-02 2025-03-11 Dover Microsystems, Inc. Systems and methods for transforming instructions for metadata processing
US12242575B2 (en) 2018-02-02 2025-03-04 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
US12159143B2 (en) 2018-02-02 2024-12-03 The Charles Stark Draper Laboratory Systems and methods for policy execution processing
US11797398B2 (en) 2018-04-30 2023-10-24 Dover Microsystems, Inc. Systems and methods for checking safety properties
US11875180B2 (en) 2018-11-06 2024-01-16 Dover Microsystems, Inc. Systems and methods for stalling host processor
US12124566B2 (en) 2018-11-12 2024-10-22 Dover Microsystems, Inc. Systems and methods for metadata encoding
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US10922235B2 (en) 2019-06-26 2021-02-16 Western Digital Technologies, Inc. Method and system for address table eviction management
US12079197B2 (en) 2019-10-18 2024-09-03 Dover Microsystems, Inc. Systems and methods for updating metadata
US12253944B2 (en) 2020-03-03 2025-03-18 Dover Microsystems, Inc. Systems and methods for caching metadata
US12124576B2 (en) 2020-12-23 2024-10-22 Dover Microsystems, Inc. Systems and methods for policy violation processing

Also Published As

Publication number Publication date
US7793049B2 (en) 2010-09-07

Similar Documents

Publication Publication Date Title
US7793049B2 (en) Mechanism for data cache replacement based on region policies
US10402331B2 (en) Systems and methods for implementing a tag-less shared cache and a larger backing cache
US8041897B2 (en) Cache management within a data processing apparatus
US5926829A (en) Hybrid NUMA COMA caching system and methods for selecting between the caching modes
US6446188B1 (en) Caching dynamically allocated objects
US5893144A (en) Hybrid NUMA COMA caching system and methods for selecting between the caching modes
US7552286B2 (en) Performance of a cache by detecting cache lines that have been reused
US20170235681A1 (en) Memory system and control method of the same
US20080215816A1 (en) Apparatus and method for filtering unused sub-blocks in cache memories
US20180300258A1 (en) Access rank aware cache replacement policy
US10007614B2 (en) Method and apparatus for determining metric for selective caching
CN108459975B (en) Techniques for efficient use of address translation caches
US10628318B2 (en) Cache sector usage prediction
JPH1196074A (en) Computer system for dynamically selecting exchange algorithm
CN104166634A (en) Management method of mapping table caches in solid-state disk system
JPH06231044A (en) Data processing system provided with cache memory
US20110320720A1 (en) Cache Line Replacement In A Symmetric Multiprocessing Computer
US7721047B2 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation requests
JPH10214226A (en) Method and system for strengthening memory performance of processor by removing old line of second level cache
US8688952B2 (en) Arithmetic processing unit and control method for evicting an entry from a TLB to another TLB
US7007135B2 (en) Multi-level cache system with simplified miss/replacement control
US10747684B2 (en) Semiconductor device managing address mapping of a semiconductor memory device and data storage device including the semiconductor device
JP4713077B2 (en) Semiconductor device
WO2001018653A9 (en) Dynamic memory caching
EP1667027A1 (en) Dynamic memory caching

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CAIN, HAROLD WADE, III;CHOI, JONG-DEOK;PATTNAIK, PRATAK;AND OTHERS;REEL/FRAME:020055/0916;SIGNING DATES FROM 20071026 TO 20071030

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CAIN, HAROLD WADE, III;CHOI, JONG-DEOK;PATTNAIK, PRATAK;AND OTHERS;SIGNING DATES FROM 20071026 TO 20071030;REEL/FRAME:020055/0916

STCF Information on status: patent grant

Free format text: PATENTED CASE

REMI Maintenance fee reminder mailed
FPAY Fee payment

Year of fee payment: 4

SULP Surcharge for late payment
MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552)

Year of fee payment: 8

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12