Multiprocessing system employing pending tags to maintain cache coherence
First Claim
1. A processing node for connection to a transaction bus in a multiprocessor system, said processing node comprising:
- a transaction pipeline having an input to receive transactions from said transaction bus;
a processor core coupled to receive said transactions output from said transaction pipeline;
a cache memory for storing a plurality of data lines, wherein said cache memory is coupled to said processor core;
a tag array for storing a plurality of tags each comprising address information and a coherence state for one of said plurality of data lines in said cache memory;
a cache controller coupled to said processor core, to said transaction bus, to said cache memory, and to said tag array, wherein said cache controller is configured to manage access to said cache memory and to update said tag array;
a pending tag storage unit coupled to said cache controller and configured to store a plurality of pending tags each indicative of a coherence state for a data line corresponding to a pending transaction within said transaction pipeline, wherein said pending tag storage unit includes a total amount of storage which is less than an amount required to store said plurality of tags contained in said tag array.
2 Assignments
0 Petitions
Accused Products
Abstract
A pending tag system and method to maintain data coherence in a processing node during pending transactions in a transaction pipeline. A pending tag storage unit may be coupled to a cache controller and configured to store pending tags each indicative of a coherence state for a data line corresponding to a pending transaction within the transaction pipeline. The pending tag storage unit includes a total amount of storage which is substantially less than an amount required to store tags contained in the full tag array for the cache memory. When a pending tag exists in the pending tag storage unit, the coherence state of the corresponding data line within the cache memory is dictated by the pending tag for snoop operations. Accordingly, data coherence is maintained during the period when transactions are pending, e.g., not yet presented to a processor and cache. When a pending transaction is completed, the coherence state of the corresponding data line as indicated by the fill tag array may be overwritten by the coherence state as indicated by the pending tag and the pending tag may deleted from the pending tag storage.
51 Citations
31 Claims
-
1. A processing node for connection to a transaction bus in a multiprocessor system, said processing node comprising:
-
a transaction pipeline having an input to receive transactions from said transaction bus;
a processor core coupled to receive said transactions output from said transaction pipeline;
a cache memory for storing a plurality of data lines, wherein said cache memory is coupled to said processor core;
a tag array for storing a plurality of tags each comprising address information and a coherence state for one of said plurality of data lines in said cache memory;
a cache controller coupled to said processor core, to said transaction bus, to said cache memory, and to said tag array, wherein said cache controller is configured to manage access to said cache memory and to update said tag array;
a pending tag storage unit coupled to said cache controller and configured to store a plurality of pending tags each indicative of a coherence state for a data line corresponding to a pending transaction within said transaction pipeline, wherein said pending tag storage unit includes a total amount of storage which is less than an amount required to store said plurality of tags contained in said tag array. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A cache system within a node of a multi-node computer system, wherein a processor is coupled to said cache system and to a bus between nodes, said cache system comprising:
-
a tag array configured to store a tag including an address and a coherence state for each data line in a cache memory;
a pending tag storage unit configured to store a pending tag in response to a transaction being presented on said bus which affects the coherence state for a current cache data line or a transaction pending in the node according to tags in both said tag array and said pending tag storage unit; and
a controller coupled to said tag array and said pending tag storage unit, wherein said controller is configured to snoop transactions on said bus according to tags in both said tag array and said pending tag storage unit. - View Dependent Claims (13, 14, 15, 16)
-
-
17. A computer system comprising:
-
a processor coupled to a bus;
a cache memory; and
a cache controller system coupled to said processor and said cache memory, wherein said cache controller system comprises;
a tag array configured to store a plurality of tags each including an address and a coherence state for a data line in said cache memory, a pending tag storage unit configured to store a pending tag in response to a transaction being presented on said bus which corresponds to a particular data line in said cache memory and which will affect the coherence state for said particular data line when the transaction is completed, and a control unit coupled to said tag array and said pending tag storage unit, wherein said control unit is configured to determine if a tag exists in said tag array having an address corresponding to a transaction present on said bus and to determine if a pending tag exists in said pending tag storage unit having an address corresponding to said transaction present on said bus. - View Dependent Claims (18, 19, 20, 21)
-
-
22. A cache coherence method for a computer system having at least two nodes coupled by a transaction bus for communicating transactions between nodes, wherein a transaction on said transaction bus becomes a pending transaction in a node before completing in the node, wherein at least one node has a processor and cache memory, and wherein said cache memory comprises a plurality of cache lines, the method comprising:
-
storing tags in a tag array, wherein each tag indicates coherence information for a cache line according to completed transactions;
storing pending tags in a pending tag storage unit, wherein each pending tag indicates coherence information for a cache line according to a pending transaction; and
snooping a current transaction on the transaction bus, wherein said snooping comprises;
checking said tags and said pending tags for a tag that corresponds to said current transaction; and
if a corresponding tag or pending tag is found by said checking, updating said pending tags. - View Dependent Claims (23, 24, 25, 26)
-
-
27. A method for snooping bus transactions in a computer system having at least two nodes coupled by a transaction bus, the method comprising:
-
in response to a current transaction on the transaction bus, checking for a tag that corresponds to the current transaction in both a tag array and a pending tag storage unit, wherein said tag array stores tags indicating coherence information for cycles that have completed in a node and said pending tag storage unit stores tags indicating coherence information according to cycles that have not completed in the node;
if a tag corresponding to the current transaction is found at said checking, using coherence information indicated by the corresponding tag to determine if coherence information needs to be updated; and
updating the coherence information in the pending tag storage unit if necessary as determined at said using. - View Dependent Claims (28, 29, 30, 31)
-
Specification