# US 2014/0156941 A1 · Tracking Non-Native Content in Caches

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0156941 A1
- Document ID: US20140156941A1
- Status: Published application
- Kind: A1
- Application number: 13/691,375
- Filed: 2012-11-30
- Published: 2014-06-05
- Earliest claimed: 2012-11-30
- Assignees: Advanced Micro Devices, Inc.
- Applicants: Advanced Micro Devices, Inc.
- Inventors: Gabriel H. Loh; Mithuna S. Thottehodi; Yasuko Eckert; James M. O'Connor; Mauricio Breternitz; Bradford M. Beckmann; Nuwan Jayasena
- Web page: https://patentgrep.com/patent/US20140156941A1

## CPC

- G06F 12/0895: of parts of caches, e.g. directory or tag array
- G06F 1/3275: {Power saving in memory, e.g. RAM, cache}
- G06F 12/0846: Cache with multiple tag or data arrays being simultaneously accessible
- G06F 12/0811: with multilevel cache hierarchies
- G06F 12/126: with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F 2212/1016: Performance improvement
- G06F 2212/1028: Power efficiency
- G06F 2212/502: using adaptive policy
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

The described embodiments include a cache with a plurality of banks that includes a cache controller. In these embodiments, the cache controller determines a value representing non-native cache blocks stored in at least one bank in the cache, wherein a cache block is non-native to a bank when a home for the cache block is in a predetermined location relative to the bank. Then, based on the value representing non-native cache blocks stored in the at least one bank, the cache controller determines at least one bank in the cache to be transitioned from a first power mode to a second power mode. Next, the cache controller transitions the determined at least one bank in the cache from the first power mode to the second power mode.

## Claims

### Claim 1

A method for operating a cache with a plurality of banks, comprising:
in a cache controller for a cache, performing operations for:
determining a value representing non-native cache blocks stored in at least one bank in the cache, wherein a cache block is non-native to a bank when a home for the cache block is in a predetermined location relative to the bank;
based on the value representing non-native cache blocks stored in the at least one bank, determining at least one bank in the cache to be transitioned from a first power mode to a second power mode; and
transitioning the determined at least one bank in the cache from the first power mode to the second power mode.

### Claim 2 (depends on 1)

The method of claim 1, wherein each bank in the cache comprises a tracking mechanism for keeping track of non-native cache blocks stored in the bank, and wherein the method further comprises:
when storing a non-native cache block in a bank in the cache, updating the tracking mechanism for the bank to indicate that the non-native cache block was stored in the bank; and
when evicting a non-native cache block from a bank in the cache, updating the tracking mechanism for the bank to indicate that the non-native cache block was evicted from the bank;
wherein determining the value representing non-native cache blocks stored in the at least one bank in the cache comprises acquiring the value from the tracking mechanism for the at least one bank.

### Claim 3 (depends on 2)

The method of claim 2, wherein the tracking mechanism for each bank in the cache comprises a counter, and wherein the method further comprises:
incrementing the counter for a bank as a non-native cache block is stored to the bank and decrementing the counter for a bank as a non-native cache block is evicted from the bank,
wherein the value representing the non-native cache blocks stored in the bank is proportional to a value of the counter for the bank.

### Claim 4 (depends on 2)

The method of claim 2, wherein the tracking mechanism for each bank in the cache comprises an aggregate separation variable, and wherein the method further comprises:
when a cache block is stored to a bank in the cache or a cache block is evicted from a bank in the cache, determining a separation between a home for the cache block and the bank;
computing an update value based on the separation; and
increasing a value of the aggregate separation variable by the update value as a non-native cache block is stored to the bank and decreasing the value of the aggregate separation variable by the update value as a non-native cache block is evicted from the bank,
wherein the value representing the non-native cache blocks stored in the bank is proportional to a value of the aggregate separation variable for the bank.

### Claim 5 (depends on 2)

The method of claim 2, further comprising:
when storing a non-native cache block in a bank in the cache, updating metadata for the cache block to indicate that the cache block is non-native; and
when evicting a cache block from a bank in the cache,
responsive to reading the metadata for the cache block and determining that the evicted cache block is non-native, updating the tracking mechanism for the bank to indicate that the non-native cache block was evicted from the bank.

### Claim 6 (depends on 2)

The method of claim 2, further comprising:
comparing at least one address for the cache block to at least one address that is predetermined to be non-native; and
based on the comparison, determining that the cache block is non-native.

### Claim 7 (depends on 1)

The method of claim 1, wherein the predetermined location relative to the bank comprises another bank in the cache, another cache, or a memory.

### Claim 8 (depends on 1)

The method of claim 1,
wherein the first power mode is a higher-power mode and the second power mode is a lower-power mode; or
wherein the first power mode is the lower-power mode and the second power mode is the higher-power mode.

### Claim 9 (depends on 1)

The method of claim 1,
wherein determining at least one bank in the cache to be transitioned from a first power mode to a second power mode comprises determining an order in which two or more banks are to be transitioned from the first power mode to the second power mode; and
wherein transitioning the determined at least one bank in the cache from the first power mode to the second power mode comprises transitioning the two or more banks in the cache from the first power mode to the second power mode in the determined order.

### Claim 10

An apparatus for operating a cache with a plurality of banks, comprising:
a cache controller configured to:
determine a value representing non-native cache blocks stored in at least one bank in the cache, wherein a cache block is non-native to a bank when a home for the cache block is in a predetermined location relative to the bank;
based on the value representing non-native cache blocks stored in the at least one bank, determine at least one bank in the cache to be transitioned from a first power mode to a second power mode; and
transition the determined at least one bank in the cache from the first power mode to the second power mode.

### Claim 11 (depends on 10)

The apparatus of claim 10, further comprising:
a tracking mechanism in each bank in the cache for keeping track of non-native cache blocks stored in the bank;
wherein, when storing a non-native cache block in a bank in the cache, the cache controller is configured to update the tracking mechanism for the bank to indicate that the non-native cache block was stored in the bank;
wherein, when evicting a non-native cache block from a bank in the cache, the cache controller is configured to update the tracking mechanism for the bank to indicate that the non-native cache block was evicted from the bank; and
wherein, when determining the value representing non-native cache blocks stored in the at least one bank in the cache, the cache controller is configured to acquire the value from the tracking mechanism for the at least one bank.

### Claim 12 (depends on 11)

The apparatus of claim 11, wherein the tracking mechanism for each bank in the cache comprises a counter, and wherein the cache controller is configured to:
increment the counter for a bank as a non-native cache block is stored to the bank and decrement the counter for a bank as a non-native cache block is evicted from the bank,
wherein the value representing the non-native cache blocks stored in the bank is proportional to a value of the counter for the bank.

### Claim 13 (depends on 11)

The apparatus of claim 11, wherein the tracking mechanism for each bank in the cache comprises an aggregate separation variable, and wherein, as a cache block is stored to a bank in the cache or a cache block is evicted from a bank in the cache, the cache controller is configured to:
determine a separation between a home for the cache block and the bank;
compute an update value based on the separation; and
increase a value of the aggregate separation variable by the update value as a non-native cache block is stored to the bank and decrease the value of the aggregate separation variable by the update value as a non-native cache block is evicted from the bank,
wherein the value representing the non-native cache blocks stored in the bank is proportional to a value of the aggregate separation variable for the bank.

### Claim 14 (depends on 11)

The apparatus of claim 11, wherein, when storing a non-native cache block in a bank in the cache, the cache controller is configured to update metadata for the cache block to indicate that the cache block is non-native; and
when evicting a cache block from a bank in the cache, responsive to reading the metadata for the cache block and determining that the evicted cache block is non-native, the cache controller is configured to update the tracking mechanism for the bank to indicate that the non-native cache block was evicted from the bank.

### Claim 15 (depends on 11)

The apparatus of claim 11, wherein the cache controller is configured to:
compare at least one address for the cache block to at least one address that is predetermined to be non-native; and
based on the comparison, determine that the cache block is non-native.

### Claim 16 (depends on 10)

The apparatus of claim 10, wherein the predetermined location relative to the bank comprises another bank in the cache, another cache, or a memory.

### Claim 17 (depends on 10)

The apparatus of claim 10,
wherein the first power mode is a higher-power mode and the second power mode is a lower-power mode; or
wherein the first power mode is the lower-power mode and the second power mode is the higher-power mode.

### Claim 18 (depends on 10)

The apparatus of claim 10,
wherein, when determining at least one bank in the cache to be transitioned from a first power mode to a second power mode, the cache controller is configured to determine an order in which two or more banks are to be transitioned from the first power mode to the second power mode; and
when transitioning the determined at least one bank in the cache from the first power mode to the second power mode, the cache controller is configured to transition the two or more banks in the cache from the first power mode to the second power mode in the determined order.

### Claim 19

A computer-readable storage medium storing instructions that, when executed by a computing device, cause the computing device to perform a method for operating a cache with a plurality of banks, the method comprising:
determining a value representing non-native cache blocks stored in at least one bank in the cache, wherein a cache block is non-native to a bank when a home for the cache block is in a predetermined location relative to the bank;
based on the value representing non-native cache blocks stored in the at least one bank, determining at least one bank in the cache to be transitioned from a first power mode to a second power mode; and
transitioning the determined at least one bank in the cache from the first power mode to the second power mode.

### Claim 20 (depends on 19)

The computer-readable storage medium of claim 19, wherein each bank in the cache comprises a tracking mechanism for keeping track of non-native cache blocks stored in the bank, and wherein the method further comprises:
when storing a non-native cache block in a bank in the cache, updating the tracking mechanism for the bank to indicate that the non-native cache block was stored in the bank; and
when evicting a non-native cache block from a bank in the cache, updating the tracking mechanism for the bank to indicate that the non-native cache block was evicted from the bank;
wherein determining the value representing non-native cache blocks stored in the at least one bank in the cache comprises acquiring the value from the tracking mechanism for the at least one bank.
