IP Library Granted Patent US 7,240,160
Granted Patent B1
US 7,240,160 · App. 11/063,947 · Granted Jul 3, 2007

Multiple-core processor with flexible cache directory scheme

Assignee: Sun Microsystems, Inc.
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 7,240,160
App. No.
11/063,947
Granted
Jul 3, 2007
Kind
B1
Abstract

A multiple-core processor providing a flexible cache directory scheme. In one embodiment, a processor may include a second-level cache including a number of cache banks and a respective number of cache directories corresponding to the cache banks. The processor may further include a number of processor cores configured to access the cache banks, as well as core/bank mapping logic coupled to the second-level cache and the processor cores. Each of the processor cores may include a respective first-level cache. Each of the respective cache directories may be configured to store directory state information associated with portions of respective first-level caches of at least two of the processor cores. If fewer than all of the cache banks are enabled, the core/bank mapping logic may be configured to completely map directory state information associated with each respective first-level cache of enabled processor cores to respective cache directories associated with enabled cache banks.

Claims (36)

1. A processor, comprising:

a second-level cache including a plurality of cache banks and a respective plurality of cache directories corresponding to said plurality of cache banks;

a plurality of processor cores configured to access said plurality of cache banks, wherein each of said plurality of processor cores includes a respective first-level cache; and

core/bank mapping logic coupled to said second-level cache and said plurality of processor cores;

wherein each of said respective cache directories is configured to store directory state information associated with portions of respective first-level caches of at least two of said plurality of processor cores; and

wherein, if fewer than all of said cache banks are enabled, said core/bank mapping logic is configured to completely map directory state information associated with each respective first-level cache of enabled ones of said plurality of processor cores to respective cache directories associated with enabled ones of said cache banks.

2. The processor as recited in claim 1 , wherein each of said respective cache directories is configured to store directory state information associated with portions of respective first-level caches of each of said plurality of processor cores.

3. The processor as recited in claim 1 , wherein each of said respective first-level caches is configured as a first-level data cache, wherein each of said plurality of processor cores further includes a respective first-level instruction cache, wherein said plurality of respective cache directories includes instruction cache directories configured to store directory state information associated with portions of respective first-level instruction caches of at least two of said plurality of processor cores, and wherein said plurality of respective cache directories includes data cache directories configured to store directory state information associated with portions of respective first-level data caches of at least two of said plurality of processor cores.

4. The processor as recited in claim 1 , wherein said core/bank mapping logic completely mapping directory state information to respective cache directories associated with enabled ones of said cache banks includes said core/bank mapping logic mapping respective unique identifiers corresponding to each of said enabled ones of said processor cores to a portion of a unique identifier field.

5. The processor as recited in claim 4 , wherein said core/bank mapping logic completely mapping directory state information to respective cache directories associated with enabled ones of said cache banks further includes said core/bank mapping logic mapping unused portions of a bank select portion of a memory address to an unused portion of said unique identifier field.

6. The processor as recited in claim 1 , wherein said directory state information includes a cache coherence protocol state associated with a particular line of a particular one of said first-level caches.

7. The processor as recited in claim 1 , wherein said directory state information includes information identifying a line within said second-level cache associated with a particular line of a particular one of said first-level caches.

8. A method, comprising:

determining a number of functional ones of a plurality of cache directories, wherein each of said plurality of cache directories is configured to store directory state information associated with portions of respective first-level caches included in at least two of a plurality of processor cores;

determining a number of processor cores to be enabled dependent upon said number of functional cache directories;

completely mapping directory state information associated with each respective first-level cache included in enabled ones of said processor cores to respective functional ones of said cache directories.

9. The method as recited in claim 8 , wherein each of said plurality of cache directories is associated with a respective one of a plurality of cache banks included in a level-two cache, and wherein determining said number of functional cache directories includes determining a number of functional ones of said plurality of cache banks.

10. The method as recited in claim 8 , wherein completely mapping said directory state information includes mapping respective unique identifiers corresponding to each of said enabled ones of said processor cores to a portion of a unique identifier field.

11. The method as recited in claim 10 , wherein completely mapping said directory state information further includes mapping unused portions of a bank select portion of a memory address to an unused portion of said unique identifier field.

12. The method as recited in claim 8 , wherein said directory state information includes a cache coherence protocol state associated with a particular line of a particular one of said first-level caches.

13. The method as recited in claim 8 , wherein said directory state information includes information identifying a line within a second-level cache associated with a particular line of a particular one of said first-level caches.

14. The method as recited in claim 8 , wherein determining said number of processor cores to be enabled includes determining a number of first-level cache lines for which corresponding directory state information can be stored by said number of functional cache directories.

15. A system, comprising:

a system memory; and

a processor coupled to said system memory, wherein the processor includes:

a second-level cache including a plurality of cache banks and a respective plurality of cache directories corresponding to said plurality of cache banks;

a plurality of processor cores configured to access said plurality of cache banks, wherein each of said plurality of processor cores includes a respective first-level cache; and

core/bank mapping logic coupled to said second-level cache and said plurality of processor cores;

wherein each of said respective cache directories is configured to store directory state information associated with portions of respective first-level caches of at least two of said plurality of processor cores; and

wherein, if fewer than all of said cache banks are enabled, said core/bank mapping logic is configured to completely map directory state information associated with each respective first-level cache of enabled ones of said plurality of processor cores to respective cache directories associated with enabled ones of said cache banks.

16. The system as recited in claim 15 , wherein each of said respective cache directories is configured to store directory state information associated with portions of respective first-level caches of each of said plurality of processor cores.

17. The system as recited in claim 15 , wherein each of said respective first-level caches is configured as a first-level data cache, wherein each of said plurality of processor cores further includes a respective first-level instruction cache, wherein said plurality of respective cache directories includes instruction cache directories configured to store directory state information associated with portions of respective first-level instruction caches of at least two of said plurality of processor cores, and wherein said plurality of respective cache directories includes data cache directories configured to store directory state information associated with portions of respective first-level data caches of at least two of said plurality of processor cores.

18. The system as recited in claim 15 , wherein said core/bank mapping logic completely mapping directory state information to respective cache directories associated with enabled ones of said cache banks includes said core/bank mapping logic mapping respective unique identifiers corresponding to each of said enabled ones of said processor cores to a portion of a unique identifier field.

19. The system as recited in claim 18 , wherein said core/bank mapping logic completely mapping directory state information to respective cache directories associated with enabled ones of said cache banks further includes said core/bank mapping logic mapping unused portions of a bank select portion of a memory address to an unused portion of said unique identifier field.

20. The system as recited in claim 15 , wherein said directory state information includes a cache coherence protocol state associated with a particular line of a particular one of said first-level caches.

21. The system as recited in claim 15 , wherein said directory state information includes information identifying a line within said second-level cache associated with a particular line of a particular one of said first-level caches.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037302/0772 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2005
From: HETHERINGTON, RICKY C.; SAHA, BIKRAM
To: SUN MICROSYSTEMS, INC.
Reel/Frame 016322/0757 →
Continuity (1)
Provisional Application 6058406400 · Jun 30, 2004