IP Library Granted Patent US 8,495,300
Granted Patent B2
US 8,495,300 · App. 12/716,391 · Granted Jul 23, 2013

Cache with reload capability after power restoration

Inventors: Philip Ng (Thornhill, CA); Jimshed B. Mirza (Toronto, CA); Anthony Asaro (Toronto, CA)
Assignee: ATI Technologies ULC
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,495,300
App. No.
12/716,391
Granted
Jul 23, 2013
Kind
B2
Abstract

A method and apparatus for repopulating a cache are disclosed. At least a portion of the contents of the cache are stored in a location separate from the cache. Power is removed from the cache and is restored some time later. After power has been restored to the cache, it is repopulated with the portion of the contents of the cache that were stored separately from the cache.

Claims (81)

1. A method for repopulating a cache, comprising:

storing at least a portion of the contents of the cache in a location separate from the cache, including:

creating restore tags, wherein each restore tag includes some content from the cache, the creating including:

using a history list of prior cache accesses to generate the restore tags; and

removing duplicate, similar, or overlapping entries of the history list of prior cache accesses; and

storing the restore tags in the location separate from the cache;

removing power from the cache;

restoring power to the cache; and

repopulating the cache with the portion of the contents of the cache stored separately from the cache.

2. The method according to claim 1 , wherein the repopulating includes:

reading the restore tags; and

using the restore tags to load data into the cache.

3. The method according to claim 1 , wherein:

the cache includes one or more tag memories and one or more data memories;

the removing includes leaving power on in at least one of the tag memories and powering off the remaining tag memories and all of the data memories; and

the repopulating includes:

reading the tags from the at least one powered on tag memory; and

using the read tags to load data into the cache.

4. The method according to claim 3 , wherein:

the reading includes reading an address from the at least one powered on tag memory; and

the using includes:

fetching data from the address; and

writing the fetched data to the cache.

5. The method according to claim 1 , wherein:

the storing includes:

reading tags from the cache to generate restore tags; and

storing the restore tags in the location separate from the cache;

the repopulating includes:

reading the restore tags; and

using the restore tags to load data into the cache.

6. The method according to claim 5 , wherein the storing further includes:

compressing the restore tags before storing the restore tags in the location separate from the cache.

7. The method according to claim 1 , wherein:

the cache is a multi-level cache including a higher level cache and a plurality of lower level caches; and

the removing includes powering off the higher level cache and retaining power in at least one of the lower level caches.

8. The method according to claim 7 , wherein the repopulating includes:

generating tag and data information in the at least one lower level cache that retained power;

sending the tag and data information to the higher level cache; and

writing the tag and data information to the higher level cache.

9. The method according to claim 8 , wherein the writing includes:

writing hierarchical directory information to the higher level cache.

10. The method according to claim 7 , wherein the repopulating includes:

generating restore tags in the at least one lower level cache that retained power, each restore tag including some content from the lower level caches;

issuing reload commands to the higher level cache according to the restore tags;

requesting data by the higher level cache using the reload commands; and

writing the requested data to the higher level cache.

11. A method for repopulating a cache, comprising:

removing power from the cache;

restoring power to the cache;

signaling a cache client that power was restored to the cache and that the cache has lost state;

issuing a prefetch command from the cache client to the cache, including prefetch commands that had been pending when power was removed from the cache; and

using the prefetch command by the cache to load data into the cache.

12. An apparatus for repopulating a cache, comprising:

a cache configured to store data and tags relating to the data;

a memory located separate from the cache, the memory configured to store tags from the cache when power is removed from the cache;

a memory controller configured to write tags from the cache to the memory when power is restored to the cache;

a tag transfer engine configured to:

generate restore tags based on the tags, including using a history list of prior cache accesses;

remove duplicate, similar, or overlapping entries of the history list of prior cache accesses; and

write the restore tags to the memory; and

a power-on reload engine, configured to:

read the restore tags from the memory; and

use the restore tags to load data into the cache.

13. The apparatus according to claim 12 , wherein

the cache includes one or more tag memories and one or more data memories, with at least one tag memory retaining power while the remaining tag memories and the data memory are powered off; and

the power-on reload engine is further configured to read the tags from the at least one tag memory that retained power.

14. The apparatus according to claim 12 , wherein the tag transfer engine is further configured to compress the restore tags.

15. The apparatus according to claim 12 , wherein:

the cache includes a higher level cache and a plurality of lower level caches;

at least one of the lower level caches retaining power and the higher level cache and the remaining lower level caches are powered off; and

the at least one lower level cache that retained power is configured to send data and tags to the higher level cache.

16. The apparatus according to claim 15 , wherein the at least one lower level cache that retained power is further configured to:

generate restore tags based on its tag information; and

issue reload commands to the higher level cache based on the restore tags.

17. The apparatus according to claim 16 , wherein the power-on reload engine is further configured to use the reload commands to request data.

18. The apparatus according to claim 12 , further comprising:

a cache client, configured to:

generate a prefetch command, the prefetch command including an instruction to load data; and

send the prefetch command to the cache.

19. A non-transitory machine-readable storage medium storing a set of instructions for execution by a general purpose computer to repopulate a cache, the set of instructions comprising: a storing code segment for storing at least a portion of the contents of the cache in a location separate from the cache; a creating code segment for creating restore tags, wherein each restore tag includes some content from the cache, the creating code segment including: a using code segment for using a history list of prior cache accesses to generate restore tags; and a first removing code segment for removing duplicate, similar, or overlapping entries of the history list of prior cache accesses, wherein the storing code segment stores the restore tags in the location separate from the cache; a second removing code segment for removing power from the cache; a restoring code segment for restoring power to the cache; and a repopulating code segment for repopulating the cache with the portion of the contents of the cache stored separately from the cache.

20. The non-transitory machine-readable storage medium according to claim 19 , wherein the set of instructions are hardware description language (HDL) instructions used for the manufacture of a device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2010
From: NG, PHILIP; MIRZA, JIMSHED B.; ASARO, ANTHONY
To: ATI TECHNOLOGIES ULC
Reel/Frame 024020/0162 →
Continuity (1)
Related Publication 20110219190A1 · Sep 8, 2011