Claims
- 1. A multi-pass cache memory in a microprocessor, the cache memory comprising:
a tag array, for receiving a snoop query temporally between a query pass and a finish pass of an operation, said operation for transferring a cache line between the cache memory and another cache memory in the microprocessor, said snoop query comprising a snoop address; and control logic, coupled to said tag array, for detecting a collision between said snoop address and an address of said cache line; wherein said control logic allows said finish pass to complete by updating said tag array, rather than canceling said finish pass, in response to detection of said collision.
- 2. The cache memory of claim 1, further comprising:
a data array, coupled to said tag array, for storing a plurality of cache lines, wherein said tag array correspondingly stores cache coherency status for said plurality of cache lines stored in said data array.
- 3. The cache memory of claim 2, wherein said control logic allows said finish pass to complete by selectively writing said cache line to said data array or reading said cache line from said data array, rather than canceling said finish pass, in response to detection of said collision.
- 4. The cache memory of claim 2, wherein said query pass comprises a first pass of said operation, wherein said query pass obtains first cache coherency status from said tag array in response to providing said cache line address thereto.
- 5. The cache memory of claim 4, wherein said snoop query comprises a first pass of a snoop operation, wherein said snoop query obtains second cache coherency status from said tag array in response to providing said snoop address thereto.
- 6. The cache memory of claim 5, wherein said snoop query obtains said second cache coherency status from said tag array subsequent to said query pass obtaining said first cache coherency status from said tag array.
- 7. The cache memory of claim 6, wherein said finish pass comprises a pass of said operation subsequent to said query pass, for selectively reading said cache line from said data array or writing said cache line to said data array based on a type of said operation.
- 8. The cache memory of claim 7, wherein said type of said operation comprises one of a list comprising:
a) a castout of said cache line from said another cache memory to the cache memory; b) a store of one or more bytes of data of said cache line from said another cache memory to the cache memory; and c) a load of said cache line from the cache memory to said another cache memory.
- 9. The cache memory of claim 5, wherein said finish pass updating said tag array comprises updating said tag array with an update cache coherency status subsequent to said snoop query obtaining said second cache coherency status.
- 10. The cache memory of claim 9, wherein said control logic generates a snoop tag status based on said update cache coherency status.
- 11. The cache memory of claim 10, wherein said control logic generates said snoop tag status also based on said second cache coherency status obtained by said snoop query.
- 12. The cache memory of claim 11, wherein said control logic generates a snoop action based on said snoop tag status, wherein said snoop action updates said tag array after said finish pass updates said tag array.
- 13. The cache memory of claim 12, wherein said tag array receives said snoop query from a bus interface unit coupled to the cache memory.
- 14. The cache memory of claim 13, wherein said bus interface unit issues said snoop query to the cache memory in response to snooping a transaction on a bus external to the microprocessor.
- 15. The cache memory of claim 14, wherein said control logic generates a bus action based on said snoop tag status, wherein said control logic provides said bus action to said bus interface unit for response to said external transaction snooped by said bus interface unit.
- 16. The cache memory of claim 1, further comprising:
an arbiter, coupled to said tag array, for selecting one of a plurality of requesting operations to grant access to said tag array.
- 17. The cache memory of claim 16, wherein said arbiter selects snoop queries as highest priority among said plurality of requesting operations.
- 18. The cache memory of claim 17, wherein said arbiter selects finish passes of operations for transferring a cache line between the cache memory and,said another cache memory as next highest priority after said snoop queries among said plurality of requesting operations.
- 19. The cache memory of claim 18, wherein said arbiter selects snoop actions as next highest priority after said finish passes among said plurality of requesting operations.
- 20. The cache memory of claim 19, wherein said arbiter selects query passes of said operations for transferring a cache line between the cache memory and said another cache memory as next highest priority after said snoop actions among said plurality of requesting operations.
- 21. The cache memory of claim 1, further comprising:
a plurality of address comparators, comprised in said control logic, for detecting said collision between said snoop address and said address of said cache line.
- 22. The cache memory of claim 21, wherein said collision comprises a match between a plurality of most significant bits of said snoop address and said address of said cache line.
- 23. A second level (L2) cache memory in a microprocessor for internally handling a snoop operation received in response to a transaction snooped on an external bus of the microprocessor and whose address collides with an in-flight operation transferring a cache line between the L2 cache and another cache in the microprocessor, rather than canceling the in-flight operation, the L2 cache comprising:
snoop collision logic, for generating a snoop tag status based on an in-flight tag status of the in-flight operation and on detection of an address collision between the snoop operation and the in-flight operation; and snoop action logic, coupled to said snoop collision logic, for generating a snoop action based on said snoop tag status, said snoop action for updating a cache coherency status of the cache line after the in-flight operation updates said cache coherency status to said in-flight tag status.
- 24. The L2 cache of claim 23, wherein said snoop action also selectively provides one or more bytes of data of the cache line to the snooped transaction.
- 25. The L2 cache of claim 23, further comprising:
a tag array, coupled to said snoop collision logic, for storing cache coherency status of a plurality of cache lines.
- 26. The L2 cache of claim 25, wherein said in-flight operation updates said cache coherency status of the cache line in said tag array to said in-flight tag status after the snoop operation queries said tag array for said cache coherency status of the cache line.
- 27. The L2 cache of claim 26, wherein said snoop collision logic generates said snoop tag status also based on said cache coherency status of the cache line queried by said snoop operation.
- 28. The L2 cache of claim 23, wherein said cache coherency status substantially conforms to the MESI cache coherency status protocol.
- 29. The L2 cache of claim 23, further comprising:
bus action generation logic, coupled to said snoop collision logic, for generating a bus action based on said snoop tag status.
- 30. The L2 cache of claim 29, further comprising:
a bus interface unit, coupled to said bus action generation logic, for receiving said bus action and responding on the external bus to the snooped transaction based on said bus action.
- 31. A method for a first cache to internally handle a snoop operation implicating a cache line that is in-flight between a second cache and the first cache, rather than the first cache canceling the in-flight operation, comprising:
querying a tag array of the first cache for a first status of the cache line by the in-flight operation; querying said tag array for a second status of the cache line by the snoop operation; updating said tag array with a third status for the cache line by the in-flight operation, after said querying for said second status; generating a fourth status based on said second and third status and based upon detection of an address collision between the snoop operation and the in-flight operation; and updating said tag array with said fourth status for the cache line by the snoop operation, after said updating with said third status, whereby cancellation of the in-flight operation is avoided.
- 32. The method of claim 31, further comprising:
updating a data array of the first cache with the cache line substantially in parallel with said updating said tag array with said third status.
- 33. The method of claim 32, further comprising:
providing data from the cache line to the snoop operation after said updating said data array.
- 34. The method of claim 31, further comprising:
generating a bus action for the snoop operation based on said second and third status and based upon detection of said address collision.
Parent Case Info
[0001] This application claims priority based on U.S. Provisional Application, Serial No. 60/375469, filed Apr. 24, 2002, entitled METHOD FOR HANDLING AFFECTS OF EXTERNAL SNOOPS INTERNALLY TO L2 CACHE.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60375469 |
Apr 2002 |
US |