IP Library Granted Patent US 8,521,963
Granted Patent B1
US 8,521,963 · App. 12/886,376 · Granted Aug 27, 2013

Managing cache coherence

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,521,963
App. No.
12/886,376
Granted
Aug 27, 2013
Kind
B1
Abstract

Managing data in a computing system comprising multiple cores includes: assigning a first set of data to caches within cores of a first subset of fewer than all of the cores in the computing system, and assigning a second set of data to caches within cores of a second subset of at least some remaining cores in the computing system not already assigned; and maintaining cache coherence among caches of respective cores in the first subset in response to data stored in at least one of the cores in the first subset being modified, and maintaining cache coherence among caches of respective cores in the second subset in response to data stored in at least one of the cores in the second subset being modified.

Claims (61)

1. A method for managing data in a computing system comprising multiple cores, the method comprising:

assigning a first set of data to caches within cores of a first subset of fewer than all of the cores in the computing system, and assigning a second set of data to caches within cores of a second subset of at least some remaining cores in the computing system not already assigned;

assigning home cache locations of multiple portions of the first set of data to caches of respective cores in the first subset, with cores in the first subset other than a home core in the first subset whose cache includes a home cache location for particular cached data, with the particular cached data being accessed by sending an access request to the home core and with the multiple portions of the first set of data comprising multiple memory lines stored in a memory coupled to at least one core; and

maintaining cache coherence among caches of respective cores in the first subset in response to data stored in at least one of the cores in the first subset being modified, and maintaining cache coherence among caches of respective cores in the second subset in response to data stored in at least one of the cores in the second subset being modified.

2. The method of claim 1 , wherein the at least some remaining cores in the computing system not already assigned is fewer than the remaining cores in the computing system not already assigned, the method further comprising:

assigning a third set of data to caches within cores of a third subset of at least some remaining cores in the computing system not already assigned; and

maintaining cache coherence among caches of respective cores in the third subset in response to data stored in at least one of the cores in the third subset being modified.

3. The method of claim 1 , wherein maintaining cache coherence among caches of respective cores in the first subset in response to data stored in at least one of the cores in the first subset being accessed comprises:

in response to a first core in the first subset modifying data stored in a cache of the first core that has a copy stored in a cache of a second core in the first subset, updating the copy stored in the cache of the second core.

4. The method of claim 3 , wherein updating the copy stored in the cache of the second core comprises: modifying the copy stored in the cache of the second core to match the modified data stored in the cache of the first core.

5. The method of claim 3 , wherein updating the copy stored in the cache of the second core comprises: invalidating the copy stored in the cache of the second core.

6. The method of claim 1 , wherein a memory used as a cache of a particular core in the first subset includes a portion that includes cache lines of a private local cache and a portion that includes cache lines of a shared distributed cache shared among the multiple cores of the first subset.

7. The method of claim 1 , wherein a home cache location of a memory line is assigned to a cache line within a home cache of a home core.

8. The method of claim 7 , wherein each of multiple memory lines in a memory page is assigned to a home cache location in a different home core.

9. The method of claim 8 , wherein each memory line in a memory page is assigned to a home cache location using a hash function.

10. The method of claim 8 , wherein each memory line in a memory page is assigned to a home cache location using round-robin distribution.

11. The method of claim 7 , wherein all of the memory lines in a memory page are assigned home cache locations in the same home core.

12. The method of claim 1 , wherein a home cache location for a given portion of data is indicated as being assigned to a given core by information stored in a translation lookaside buffer for translating an address of the given portion of data in each of multiple cores.

13. The method of claim 1 , wherein a home cache location for a given portion of data is indicated as being assigned to a given core by information stored in a mapping table stored in a register in each of multiple cores.

14. The method of claim 1 , further comprising assigning cores to the first and second subsets based on processes to be executed on cores in the first and second subsets that independently access the first and second sets of data, respectively.

15. The method of claim 1 , wherein maintaining cache coherence among caches of respective cores in the first subset is not responsive to data operations in the cores in the second subset, and maintaining cache coherence among caches of respective cores in the second subset is not responsive to data operations in the cores in the first subset.

16. The method of claim 1 , wherein cache coherence among caches of respective cores in the first subset is maintained independently from cache coherence among caches of respective cores in the second subset.

17. A computer program product tangibly stored on a computer-readable storage device for managing data in a computing system comprising multiple cores, the computer program including instructions for causing the computing system to:

assign a first set of data to caches within cores of a first subset of fewer than all of the cores in the computing system, and assigning a second set of data to caches within cores of a second subset of at least some remaining cores in the computing system not already assigned;

assign home cache locations of multiple portions of the first set of data to caches of respective cores in the first subset, with cores in the first subset other than a home core in the first subset whose cache includes a home cache location for particular cached data, with the particular cached data being accessed by sending an access request to the home core and with the multiple portions of the first set of data comprising multiple memory lines stored in a memory coupled to at least one core; and

maintain cache coherence among caches of respective cores in the first subset in response to data stored in at least one of the cores in the first subset being modified, and maintaining cache coherence among caches of respective cores in the second subset in response to data stored in at least one of the cores in the second subset being modified.

18. The computer program product of claim 17 wherein the at least some remaining cores in the computing system not already assigned is fewer than the remaining cores in the computing system not already assigned, further comprises instructions to:

assign a third set of data to caches within cores of a third subset of at least some remaining cores in the computing system not already assigned; and

maintain cache coherence among caches of respective cores in the third subset in response to data stored in at least one of the cores in the third subset being modified.

19. The computer program product of claim 18 wherein instructions to maintain cache coherence among caches of respective cores in the first subset in response to data stored in at least one of the cores in the first subset being accessed comprise instructions to:

modify data stored in a cache of the first core that has a copy stored in a cache of a second core in the first subset in response to a first core in the first subset updating the copy stored in the cache of the second core.

20. The computer program product of claim 19 wherein instructions that update the copy stored in the cache of the second core modifies the copy stored in the cache of the second core to match the modified data stored in the cache of the first core.

21. The computer program product of claim 19 wherein instructions that update the copy stored in the cache of the second core comprises instructions that invalidate the copy stored in the cache of the second core.

22. The computer program product of claim 17 wherein a memory used as a cache of a particular core in the first subset includes a portion that includes cache lines of a private local cache and a portion that includes cache lines of a shared distributed cache shared among the multiple cores of the first subset.

23. The computer program product claim 17 wherein a home cache location of a memory line is assigned to a cache line within a home cache of a home core.

24. The computer program product of claim 23 wherein each of multiple memory lines in a memory page is assigned to a home cache location in a different home core.

25. The computer program product of claim 24 wherein each memory line in a memory page is assigned to a home cache location using a first one of a hash function and a round-robin distribution.

26. The computer program product of claim 17 wherein a home cache location for a given portion of data is indicated as being assigned to a given core by information stored in a translation lookaside buffer for translating an address of the given portion of data in each of multiple cores.

27. The computer program product of claim 17 wherein a home cache location for a given portion of data is indicated as being assigned to a given core by information stored in a mapping table stored in a register in each of multiple cores.

28. The computer program product of claim 17 wherein cache coherence among caches of respective cores in the first subset is maintained independently from cache coherence among caches of respective cores in the second subset.

29. A computing system, comprising:

multiple cores;

caches within cores of a first subset of fewer than all of the multiple cores in the computing system assigned to a first set of data; and

caches within cores of a second subset of at least some remaining ones of the multiple cores in the computing system not already assigned to a second set of data;

with the computing system configured to:

assign home cache locations of multiple portions of the first set of data to caches of respective cores in the first subset, with cores in the first subset other than a home core in the first subset whose cache includes a home cache location for particular cached data, with the particular cached data being accessed by sending an access request to the home core and with the multiple portions of the first set of data comprising multiple memory lines stored in a memory coupled to at least one core; and

maintain cache coherence among caches of respective cores in the first subset in response to data stored in at least one of the cores in the first subset being modified, and maintain cache coherence among caches of respective cores in the second subset in response to data stored in at least one of the cores in the second subset being modified.

30. The computing system of claim 29 wherein the at least some remaining cores in the computing system not already assigned is fewer than the remaining cores in the computing system not already assigned, further comprises instructions to:

assign a third set of data to caches within cores of a third subset of at least some remaining cores in the computing system not already assigned; and

maintain cache coherence among caches of respective cores in the third subset in response to data stored in at least one of the cores in the third subset being modified.

31. The computing system of claim 30 wherein instructions to maintain cache coherence among caches of respective cores in the first subset in response to data stored in at least one of the cores in the first subset being accessed comprise instructions to:

modify data stored in a cache of the first core that has a copy stored in a cache of a second core in the first subset in response to a first core in the first subset updating the copy stored in the cache of the second core.

32. The computing system of claim 30 wherein instructions that update the copy stored in the cache of the second core modifies the copy stored in the cache of the second core to match the modified data stored in the cache of the first core.

33. The computing system of claim 30 wherein instructions that update the copy stored in the cache of the second core comprises instructions that invalidate the copy stored in the cache of the second core.

34. The computing system of claim 29 wherein a memory used as a cache of a particular core in the first subset includes a portion that includes cache lines of a private local cache and a portion that includes cache lines of a shared distributed cache shared among the multiple cores of the first subset.

35. The computing system of claim 29 wherein a home cache location of a memory line is assigned to a cache line within a home cache of a home core.

36. The computing system of claim 35 wherein each of multiple memory lines in a memory page is assigned to a home cache location in a different home core.

37. The computing system of claim 36 wherein each memory line in a memory page is assigned to a home cache location using a first one of a hash function and a round-robin distribution.

38. The computing system of claim 29 wherein a home cache location for a given portion of data is indicated as being assigned to a given core by information stored in a translation lookaside buffer for translating an address of the given portion of data in each of multiple cores.

39. The computing system of claim 29 wherein a home cache location for a given portion of data is indicated as being assigned to a given core by information stored in a mapping table stored in a register in each of multiple cores.

40. The computing system of claim 29 wherein cache coherence among caches of respective cores in the first subset is maintained independently from cache coherence among caches of respective cores in the second subset.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 42962/0859 Recorded Jul 13, 2018
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MELLANOX TECHNOLOGIES, LTD.; MELLANOX TECHNOLOGIES TLV LTD.; MELLANOX TECHNOLOGIES SILICON PHOTONICS INC.
Reel/Frame 046551/0459 →
SECURITY INTEREST Recorded Jun 23, 2017
From: MELLANOX TECHNOLOGIES, LTD.; MELLANOX TECHNOLOGIES TLV LTD.; MELLANOX TECHNOLOGIES SILICON PHOTONICS INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 042962/0859 →
DIVIDEND DECLARATION FROM EZCHIP SEMICONDUCTOR INC. TO THE STOCKHOLDER OF RECORD ON 6/2/2015 (EZCHIP INC., A DELAWARE CORPORATION) Recorded Feb 16, 2017
From: EZCHIP SEMICONDUCTOR INC.
To: EZCHIP, INC.
Reel/Frame 041736/0013 →
PURCHASE AGREEMENT Recorded Feb 16, 2017
From: EZCHIP, INC.
To: EZCHIP SEMICONDUCTOR LTD.
Reel/Frame 041736/0151 →
MERGER Recorded Feb 16, 2017
From: EZCHIP TECHNOLOGIES LTD.
To: EZCHIP SEMICONDUCTOR LTD.
Reel/Frame 041736/0321 →
MERGER Recorded Feb 16, 2017
From: EZCHIP SEMICONDUCTOR LTD.
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 041870/0455 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 16, 2017
From: EZCHIP SEMICONDUCTOR LTD.
To: EZCHIP TECHNOLOGIES, LTD.
Reel/Frame 041736/0253 →
MERGER Recorded Feb 16, 2017
From: TILERA CORPORATION
To: EZCHIP SEMICONDUCTOR INC.
Reel/Frame 041735/0792 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2010
From: MIAO, CHYI-CHANG; METCALF, CHRISTOPHER D.; BRATT, IAN RUDOLF; RAMEY, CARL G.
To: TILERA CORPORATION
Reel/Frame 025210/0174 →