IP Library Granted Patent US 9,645,945
Granted Patent B2
US 9,645,945 · App. 14/153,240 · Granted May 9, 2017

Fill partitioning of a shared cache

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 9,645,945
App. No.
14/153,240
Granted
May 9, 2017
Kind
B2
Abstract

Fill partitioning of a shared cache is described. In an embodiment, all threads running in a processor are able to access any data stored in the shared cache; however, in the event of a cache miss, a thread may be restricted such that it can only store data in a portion of the shared cache. The restrictions to storing data may be implemented for all cache miss events or for only a subset of those events. For example, the restrictions may be implemented only when the shared cache is full and/or only for particular threads. The restrictions may also be applied dynamically, for example, based on conditions associated with the cache. Different portions may be defined for different threads (e.g. in a multi-threaded processor) and these different portions may, for example, be separate and non-overlapping. Fill partitioning may be applied to any on-chip cache, for example, a L1 cache.

Claims (29)

1. A method of managing memory in a processor, the method comprising:

allowing unrestricted access to any data stored in a shared cache in the processor;

in response to a cache miss event associated with a thread running in the processor, using a fill partitioning policy to select a location within a defined portion of the shared cache; and storing content of a memory location associated with the cache miss event in the selected location in the shared cache; and

dynamically switching on and off use of the fill partitioning policy to select a location based on one or more of: thread ID and cache conditions,

wherein the size of the defined portion of the shared cache allocated to the thread is adjusted dynamically while operations are in progress.

2. The method according to claim 1 , further comprising using the fill partitioning policy following each cache miss event.

3. The method according to claim 1 , further comprising using the fill partitioning policy to select the location within the defined portion of the shared cache only when the shared cache is full.

4. The method according to claim 1 , wherein using a fill partitioning policy to select a location within a defined portion of the shared cache comprises using a modified replacement algorithm arranged to select a location within the defined portion associated with the thread.

5. The method according to claim 1 , wherein using a fill partitioning policy to select a location within a defined portion of the shared cache comprises:

selecting a mask based on an identifier of the thread, the mask defining a portion of the shared cache.

6. The method according to claim 5 , further comprising, if the shared cache is full, applying the selected mask to a replacement algorithm.

7. The method according to claim 5 , further comprising, if the shared cache is not full, applying the selected mask to filter available locations within the shared cache.

8. The method according to claim 5 , wherein the selecting comprises selecting the mask from a set of stored pre-defined masks.

9. The method according to claim 8 , wherein each mask in the set of stored pre-defined masks defines a different portion of the shared cache.

10. The method according to claim 1 , wherein the cache conditions comprise one of: cache performance, cache load, a rate of cache misses for a thread, a comparison of rates of cache misses for different threads, an amount of data that a thread is storing to a cache, and a number of fills for a thread which evict another thread's data from a cache.

11. The method according to claim 1 , further comprising switching fill partitioning on and off for threads on an individual basis.

12. A processor comprising:

a shared cache; and

memory management logic arranged to manage access to memory including the shared cache and to allow unrestricted access to any data stored in the shared cache, wherein the memory management logic comprises fill partitioning logic arranged, in response to a cache miss event associated with a thread running in the processor, to use a fill partitioning policy to select a location within a defined portion of the shared cache; and to store content of a memory location associated with the cache miss event in the selected location in the shared cache,

wherein the memory management logic is further arranged to dynamically switch on and off use of the fill partitioning logic based on one or more of: thread ID and cache conditions, and

wherein the size of the defined portion of the shared cache allocated to the thread is adjusted dynamically while operations are in progress.

13. The processor according to claim 12 , wherein the fill partitioning policy is used following each cache miss.

14. The processor according to claim 12 , wherein the fill partitioning policy is only used to select the location when the shared cache is full.

15. The processor according to claim 12 , wherein using a fill partitioning policy to select a location within a defined portion of the shared cache comprises using a modified replacement algorithm arranged to select a location within the defined portion associated with the thread.

16. The processor according to claim 12 , wherein using a fill partitioning policy to select a location within a defined portion of the shared cache comprises:

selecting a mask based on an identifier of the thread, the mask defining a portion of the shared cache.

17. The processor according to claim 12 , wherein the processor is a multi-threaded processor.

18. The processor according to claim 12 , further comprising multiple processing cores.

19. The processor according to claim 12 , wherein the shared cache is a L1 cache.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Dec 29, 2022
From: CAPITAL FINANCE ADMINISTRATION, LLC, AS ADMINISTRATIVE AGENT
To: MIPS TECH, LLC; WAVE COMPUTING INC.
Reel/Frame 062251/0251 →
SECURITY INTEREST Recorded Jun 14, 2021
From: MIPS TECH, LLC; WAVE COMPUTING, INC.
To: CAPITAL FINANCE ADMINISTRATION, LLC
Reel/Frame 056558/0903 →
RELEASE OF SECURITY INTEREST Recorded Jun 14, 2021
From: WAVE COMPUTING LIQUIDATING TRUST
To: MIPS TECH, INC.; HELLOSOFT, INC.; WAVE COMPUTING (UK) LIMITED; IMAGINATION TECHNOLOGIES, INC.; CAUSTIC GRAPHICS, INC.; MIPS TECH, LLC; WAVE COMPUTING, INC.
Reel/Frame 056589/0606 →
SECURITY INTEREST Recorded Feb 26, 2021
From: WAVE COMPUTING, INC.; MIPS TECH, LLC; MIPS TECH, INC.; HELLOSOFT, INC.; WAVE COMPUTING (UK) LIMITED; IMAGINATION TECHNOLOGIES, INC.; CAUSTIC GRAPHICS, INC.
To: WAVE COMPUTING LIQUIDATING TRUST
Reel/Frame 055429/0532 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 19, 2018
From: MIPS TECH LIMITED
To: MIPS TECH, LLC
Reel/Frame 045593/0166 →
CHANGE OF NAME Recorded Jan 26, 2018
From: HELLOSOFT LIMITED
To: MIPS TECH LIMITED
Reel/Frame 045168/0922 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 24, 2018
From: IMAGINATION TECHNOLOGIES LIMITED
To: HELLOSOFT LIMITED
Reel/Frame 045136/0975 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 13, 2014
From: MEREDITH, JASON
To: IMAGINATION TECHNOLOGIES, LTD.
Reel/Frame 031949/0857 →