IP Library › Granted Patent US 10,884,959
Granted Patent B2
US 10,884,959 · App. 16/518,503 · Granted Jan 5, 2021

Way partitioning for a system-level cache

Inventors: Vinod Chamarty (Sunnyvale, CA); Xiaoyu Ma (Mountain View, CA); Hongil Yoon (San Jose, CA); Keith Robert Pflederer (Mountain View, CA); Weiping Liao (Fremont, CA); Benjamin Dodge (San Jose, CA); Albert Meixner (Mountain View, CA); Allan Douglas Knies (Burlingame, CA); Manu Gulati (Saratoga, CA); Rahul Jagdish Thakur (Santa CLara, CA); Jason Rupert Redgrave (Mountain View, CA)
Assignee: Google LLC
G06F13/1694G06F12/0811G06F12/0815G06F12/0877
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 10,884,959
App. No.
16/518,503
Filed
Jul 22, 2019
Granted
Jan 5, 2021
Kind
B2
Art Unit
2138
USPC
711/154
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for a system-level cache to allocate cache resources by a way-partitioning process. One of the methods includes maintaining a mapping between partitions and priority levels and allocating primary ways to respective enabled partitions in an order corresponding to the respective priority levels assigned to the enabled partitions.

Claims (62)

1. A system comprising:

multiple integrated client devices;

a memory controller configured to read data from a memory device; and

a system-level cache configured to cache data requests through the memory controller for each of the multiple integrated client devices,

wherein the system-level cache comprises a cache memory having multiple ways, each way of the multiple ways being a primary way or a secondary way,

wherein each primary way is dedicated to a single respective partition corresponding to a memory buffer accessed by one or more client devices, and

wherein each secondary way is shared by a group of multiple partitions corresponding to multiple memory buffers accessed by a group of client devices, and

wherein the system-level cache is configured to maintain a mapping between partitions and priority levels and is configured to allocate primary ways to respective enabled partitions in an order corresponding to the respective priority levels assigned to the enabled partitions.

2. The system of claim 1 , wherein the system-level cache is configured to exclusively allocate primary ways to a first partition accessed by one or more first client devices, and is configured to allocate secondary ways to the first partition and to one or more other partitions that are accessed by a group of client devices that also includes the first client device.

3. The system of claim 2 , wherein the system-level cache is configured to maintain a mapping between groups of client devices and secondary priority levels and is configured to allocate secondary ways to respective enabled partitions in an order corresponding to the respective secondary priority levels assigned to the groups of client devices.

4. The system of claim 2 , wherein the system-level cache is configured to allocate secondary ways only for partitions that each have already been allocated respective primary ways.

5. The system of claim 1 , wherein the system-level cache is configured to allocate the primary ways according to a primary partitioning table having multiple entries that each represent a respective partition corresponding to a memory buffer used by one or more respective client devices, wherein each entry includes the respective requested number of primary ways for the corresponding partition.

6. The system of claim 5 , wherein the system-level cache is configured to allocate the primary ways by performing operations comprising:

iterating over enabled entries in the primary partitioning table, wherein each enabled entry represents a partition that uses the system-level cache for a particular execution context, and

for each enabled entry, allocating a number of primary ways to a respective partition corresponding to the enabled entry.

7. The system of claim 6 , wherein allocating a number of primary ways to a respective partition corresponding to the enabled entry comprises:

reusing one or more ways that are currently assigned to the partition;

assigning one or more unassigned ways that are not assigned to any partition; and

assigning one or more unused ways that are currently assigned to a different partition.

8. The system of claim 6 , wherein iterating over the enabled entries in the primary partitioning table comprises iterating over the enabled entries in an order determined by a level of priority assigned to each of the client devices.

9. The system of claim 5 , wherein the system-level cache is configured to allocate the secondary ways by performing operations comprising:

determining a group of related partitions;

computing an aggregate number of ways to assign to the group of related partitions according to requested secondary way counts in a secondary partitioning table of the system-level cache; and

assigning to the group of related partitions the aggregate number of ways computed for the related partitions in the group.

10. The system of claim 9 , wherein computing the aggregate number of ways to assign to the group of related partitions according to the requested secondary way counts comprises computing a max, a min, or a measure of central tendency of the secondary way counts in the secondary partitioning table for partitions in the group.

11. The system of claim 9 , wherein the system-level cache is configured to allocate respective secondary ways to respective groups of partitions such that there is no overlap between groups of partitions.

12. The system of claim 9 , wherein the secondary ways are assigned if and only if unassigned ways remain after processing the primary partitioning table.

13. The system of claim 5 , wherein the system-level cache is configured to reallocate primary ways, secondary ways, or both upon detecting a triggering event.

14. The system of claim 13 , wherein each triggering event changes enabled entries in the primary partitioning table for a different execution context.

15. The system of claim 1 , wherein the system is configured to adjust a power state of the system depending on the allocation of ways to partitions.

16. A method performed by a system comprising:

multiple integrated client devices;

a memory controller configured to read data from a memory device; and

a system-level cache configured to cache data requests through the memory controller for each of the multiple integrated client devices,

wherein the system-level cache comprises a cache memory having multiple ways, each way of the multiple ways being a primary way or a secondary way,

wherein each primary way is dedicated to a single respective partition corresponding to a memory buffer accessed by one or more client devices, and

wherein each secondary way is shared by a group of multiple partitions corresponding to multiple memory buffers accessed by a group of client devices, and

wherein the method comprises:

maintaining a mapping between partitions and priority levels; and

allocating primary ways to respective enabled partitions in an order corresponding to the respective priority levels assigned to the enabled partitions.

17. The method of claim 16 , further comprising:

exclusively allocating primary ways to a first partition accessed by one or more first client devices; and

allocating secondary ways to the first partition and to one or more other partitions that are accessed by a group of client devices that also includes the first client device.

18. The method of claim 17 , further comprising:

maintaining a mapping between groups of client devices and secondary priority levels; and

allocating secondary ways to respective enabled partitions in an order corresponding to the respective secondary priority levels assigned to the groups of client devices.

19. The method of claim 17 , further comprising:

allocating secondary ways only for partitions that each have already been allocated respective primary ways.

20. The method of claim 16 , further comprising:

allocating the primary ways according to a primary partitioning table having multiple entries that each represent a respective partition corresponding to a memory buffer used by one or more respective client devices, wherein each entry includes the respective requested number of primary ways for the corresponding partition.

21. The method of claim 20 , further comprising allocating the primary ways by performing operations comprising:

iterating over enabled entries in the primary partitioning table, wherein each enabled entry represents a partition that uses the system-level cache for a particular execution context; and

for each enabled entry, allocating a number of primary ways to a respective partition corresponding to the enabled entry.

22. The method of claim 21 , wherein allocating a number of primary ways to a respective partition corresponding to the enabled entry comprises:

reusing one or more ways that are currently assigned to the partition;

assigning one or more unassigned ways that are not assigned to any partition; and

assigning one or more unused ways that are currently assigned to a different partition.

23. The method of claim 21 , wherein iterating over the enabled entries in the primary partitioning table comprises iterating over the enabled entries in an order determined by a level of priority assigned to each of the client devices.

24. The method of claim 20 , further comprising allocating the secondary ways by performing operations comprising:

determining a group of related partitions;

computing an aggregate number of ways to assign to the group of related partitions according to requested secondary way counts in a secondary partitioning table of the system-level cache; and

assigning to the group of related partitions the aggregate number of ways computed for the related partitions in the group.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2019
From: CHAMARTY, VINOD; MA, XIAOYU; YOON, HONGIL; PFLEDERER, KEITH ROBERT; LIAO, WEIPING; DODGE, BENJAMIN; MEIXNER, ALBERT; KNIES, ALLAN DOUGLAS; GULATI, MANU; THAKUR, RAHUL JAGDISH; REDGRAVE, JASON RUPERT
To: GOOGLE LLC
Reel/Frame 050087/0505 →
Continuity (2)
Provisional Application 62805080 · Feb 13, 2019
Related Publication 20200257639A1 · Aug 13, 2020