Method and apparatus for a coherence transformer with limited memory for connecting computer system coherence domains
First Claim
1. In a computer system having a computer node which has a common bus, a method for enabling an external device in an external domain that is external to said computer node to share memory blocks having local physical addresses in a memory module at said computer node irrespective whether said external device and said common bus both employ a common protocol and irrespective whether said external device and said common bus both operate at the same speed, each of said memory blocks having an associated Mtag for tracking a global state associated with said each of said memory block, including a global exclusive state for indicating that said each of said memory blocks is exclusive to said computer node, a global shared state for indicating that said each of said memory blocks is shared by said computer node with said external device, and a global invalid state for indicating that said each of said memory blocks is invalid in said computer node, said method comprising:
- receiving through a coherence transformer that is coupled to said common bus, a first memory access request for a first memory block from said external device;
obtaining a first copy of said first memory block, using said coherence transformer, from said common bus, said coherence transformer having a snoop tag array having a plurality of snoop tags, each of said plurality of snoop tags being configured to track an external state of a copy of one of said memory blocks if cached by said external device, said external state including one of an external exclusive state for indicating that said copy of one of said memory blocks is exclusive to said external domain, an external shared state for indicating that said copy of one of said memory blocks is shared by said external domain, and an external invalid state for indicating that said copy of one of said memory blocks is invalid in said external domain;
if at least one tag in said plurality of snoop tags is available for tracking said external state of said first copy of said first memory block, responding to said first memory access request using a snoop-only approach by tracking said external state of said first copy of said first memory block using said at least one tag;
else if at least one tag in said plurality of snoop tags is not available for tracking said external state of said first copy of said first memory block, responding to said first memory access request using an Mtag-only approach by modifying a first Mtag associated with said first memory block in said memory module at said computer node using said coherence transformer to reflect that said external device is caching said first copy of said first memory block; and
sending said first copy of said first memory block from said coherence transformer to said external device.
2 Assignments
0 Petitions
Accused Products
Abstract
A coherence transformer for allowing a computer node and one or more external devices to share memory blocks having local physical addresses at a memory module of the computer node. The coherence transformer includes logic for ascertaining whether a memory access request from the external device for a memory block should be responded to using a snoop-only approach or an Mtag-only approach. The snoop-only approach requires a tag in a snoop tag array of the coherence transformer be available to track the memory block for an entire duration that the memory block is cached by the external device. The Mtag-only approach only temporarily stores the memory block until a global state associated with the memory block can be written back into the memory module of the computer node. The snoop tag array allows the coherence transformer to snoop the bus of the computer node to intervene and respond to memory access requests pertaining to a memory block externally cached and tracked by the snoop tag array.
52 Citations
20 Claims
-
1. In a computer system having a computer node which has a common bus, a method for enabling an external device in an external domain that is external to said computer node to share memory blocks having local physical addresses in a memory module at said computer node irrespective whether said external device and said common bus both employ a common protocol and irrespective whether said external device and said common bus both operate at the same speed, each of said memory blocks having an associated Mtag for tracking a global state associated with said each of said memory block, including a global exclusive state for indicating that said each of said memory blocks is exclusive to said computer node, a global shared state for indicating that said each of said memory blocks is shared by said computer node with said external device, and a global invalid state for indicating that said each of said memory blocks is invalid in said computer node, said method comprising:
-
receiving through a coherence transformer that is coupled to said common bus, a first memory access request for a first memory block from said external device; obtaining a first copy of said first memory block, using said coherence transformer, from said common bus, said coherence transformer having a snoop tag array having a plurality of snoop tags, each of said plurality of snoop tags being configured to track an external state of a copy of one of said memory blocks if cached by said external device, said external state including one of an external exclusive state for indicating that said copy of one of said memory blocks is exclusive to said external domain, an external shared state for indicating that said copy of one of said memory blocks is shared by said external domain, and an external invalid state for indicating that said copy of one of said memory blocks is invalid in said external domain; if at least one tag in said plurality of snoop tags is available for tracking said external state of said first copy of said first memory block, responding to said first memory access request using a snoop-only approach by tracking said external state of said first copy of said first memory block using said at least one tag; else if at least one tag in said plurality of snoop tags is not available for tracking said external state of said first copy of said first memory block, responding to said first memory access request using an Mtag-only approach by modifying a first Mtag associated with said first memory block in said memory module at said computer node using said coherence transformer to reflect that said external device is caching said first copy of said first memory block; and sending said first copy of said first memory block from said coherence transformer to said external device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. In a computer system having a computer node which has a common bus, a method for enabling an external device in an external domain that is external to said computer node to share memory blocks having local physical addresses in a memory module at said computer node through a coherence transformer coupled to a common bus of said computer node irrespective whether said external device and said common bus both employ a common protocol and irrespective whether said external device and said common bus both operate at the same speed, each of said memory blocks having an associated Mtag for tracking a global state associated with said each of said memory block, including a global exclusive state for indicating that said each of said memory blocks is exclusive to said computer node, a global shared state for indicating that said each of said memory blocks is shared by said computer node with said external device, and a global invalid state for indicating that said each of said memory blocks is invalid in said computer node, said method comprising:
-
receiving, at said memory module via said common bus, a first memory access request for a valid copy of a first memory block of said memory blocks from a progenitor of said first memory access request, said progenitor being an entity different from said coherence transformer, said coherence transformer having a snoop tag array having a plurality of snoop tags, each of said plurality of snoop tags being configured to track an external state of a copy of one of said memory blocks if cached by said external device, said external state including one of an external exclusive state for indicating that said copy of one of said memory blocks is exclusive to said external domain, an external shared state for indicating that said copy of one of said memory blocks is shared by said external domain, and an external invalid state for indicating that said copy of one of said memory blocks is invalid in said external domain; and if said first memory block is not tracked in said snoop tag array because said snoop tag array is full, responding to said first memory access request using an Mtag-only approach, including; sending a first copy of said first memory block, along with a first Mtag corresponding to said first memory block, from said memory module to said progenitor of said first memory block, examining, using said progenitor of said first memory block, said first Mtag state, and if said first Mtag state is invalid, issuing a second memory access request pertaining to said first memory block from said progenitor of said first memory access request to request said coherence transformer to service said second memory access request, thereby enabling said progenitor of said first memory access request to obtain said valid copy of said first memory block. - View Dependent Claims (17, 18)
-
-
19. An apparatus for facilitating the sharing of memory blocks between a computer node and an external device, said memory blocks having local physical addresses at said computer node, each of said memory blocks have an associated Mtag for tracking a global state that is associated with said each of said memory blocks including a global exclusive state for indicating that said each of said memory blocks is exclusive to said computer node, a global shared state for indicating that said each of said memory blocks is shared by said computer node with said external device, and a global invalid state for indicating that said each of said memory blocks is invalid in said computer node, said method comprising:
-
snooping logic that is configured to be coupled with a common bus of said computer node, such that said snooping logic monitors memory access requests on said common bus when coupled to said common bus; a snoop tag array coupled to said snooping logic, said snoop tag array having a plurality of snoop tags, each of said plurality of snoop tags a configured to track an external state of a copy of one of said memory blocks if cached by said external device, said external state including one of an external exclusive state for indicating that said copy of one of said memory blocks is exclusive to said external domain, an external shared state for indicating that said copy of one of said memory blocks is shared by said external domain, and an external invalid state for indicating that said copy of one of said memory blocks is invalid in said external domain; and logic for ascertaining whether a first memory access request from said external device for a first memory block of said memory blocks should be responded to using a snoop-only approach or an Mtag-only approach when said snoop tag array is full, said snoop-only approach requires a tag in said snoop tag array to track said first memory block for an entire duration that said first memory block is cached by said external device, said Mtag-only approach only temporarily stores said first memory block until a global state associated with said first memory block can be written back into said memory module. - View Dependent Claims (20)
-
Specification