Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line
First Claim
1. A method of maintaining cache coherency in a computer system having a plurality of processing units, each processing unit having at least one cache, comprising the steps of:
- storing a modified value corresponding to a memory block of a system memory device into a first cache line of a first cache of a first processing unit and assigning a first coherency state to the first cache line indicating that the first cache line contains the modified value;
issuing a read request from a second cache of a second processing unit for an address associated with the memory block, wherein said read request includes a programmably controlledflag indicating whether the first cache should deallocate the first cache line upon sourcing the modified value to the second cache;
setting the flag to indicate that the first cache should deallocate the first cache line;
sourcing the modified value from the first cache line to a second cache line of the second cache;
deallocating the first cache line; and
assigning a second coherency state to the second cache line indicating that the second cache line contains the value as modified by another processing unit and that the modified value has not been written to the memory block of the system memory device.
2 Assignments
0 Petitions
Accused Products
Abstract
A novel cache coherency protocol provides a modified-unsolicited (Mu) cache state to indicate that a value held in a cache line has been modified (i.e., is not currently consistent with system memory), but was modified by another processing unit, not by the processing unit associated with the cache that currently contains the value in the Mu state, and that the value is held exclusive of any other horizontally adjacent caches. Because the value is exclusively held, it may be modified in that cache without the necessity of issuing a bus transaction to other horizontal caches in the memory hierarchy. The Mu state may be applied as a result of a snoop response to a read request. The read request can include a flag to indicate that the requesting cache is capable of utilizing the Mu state. Alternatively, a flag may be provided with intervention data to indicate that the requesting cache should utilize the modified-unsolicited state.
96 Citations
16 Claims
-
1. A method of maintaining cache coherency in a computer system having a plurality of processing units, each processing unit having at least one cache, comprising the steps of:
-
storing a modified value corresponding to a memory block of a system memory device into a first cache line of a first cache of a first processing unit and assigning a first coherency state to the first cache line indicating that the first cache line contains the modified value;
issuing a read request from a second cache of a second processing unit for an address associated with the memory block, wherein said read request includes a programmably controlledflag indicating whether the first cache should deallocate the first cache line upon sourcing the modified value to the second cache;
setting the flag to indicate that the first cache should deallocate the first cache line;
sourcing the modified value from the first cache line to a second cache line of the second cache;
deallocating the first cache line; and
assigning a second coherency state to the second cache line indicating that the second cache line contains the value as modified by another processing unit and that the modified value has not been written to the memory block of the system memory device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
issuing a store operation for an address associated with the memory block from the second processing unit, after said sourcing step; and
modifying the value in the second cache line in response to the store operation, wherein said modifying step occurs without issuing any bus transaction from the second cache further in response to a determination that the second cache line contained the value exclusive of caches of other processing units of the computer system.
-
-
4. The method of claim 3 further comprising the step of assigning the first coherency state to the second cache line in response to said modifying step.
-
5. The method of claim 1 wherein the flag is programmably set using software that is visible to an operating system of the computer system.
-
6. The method of claim 1 wherein the flag is programmably set using hardware that dynamically monitors cache usage.
-
7. The method of claim 6 wherein the flag is set by a monitor associated with the second cache.
-
8. The method of claim 6 wherein the flag is set by a system-wide monitor.
-
9. A computer system comprising:
-
a system memory device;
a plurality of processing units each having a cache;
bus means for interconnecting said processing units and said system memory device; and
cache coherency means for (i) assigning a first coherency state to a first cache line of a first cache of a first processing unit indicating that said first cache line contains a modified value, (ii) issuing a read request from a second cache of a second processing unit for an address associated with the value, said read request including a programmably controlled flag indicating whether said first cache should deallocate said first cache line upon sourcing the modified value to said second cache, (iii) setting the flag to indicate that the first cache should deallocate the first cache line, (iv) sourcing the modified value from said first cache line to a second cache line of said second cache, (v) deallocating said first cache line in response to the flag, and (vi) assigning a second coherency state to said second cache line indicating that said second cache line contains the value as modified by another processing unit and that the modified value has not been written to said system memory device. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
Specification