Patent Document

RELATED APPLICATIONS 
     The present U.S. patent application is related to the following U.S. patent applications filed concurrently: 
     (1) Application Ser. No. 11/479,179 filed Jun. 30, 2006, entitled “REQUESTER-GENERATED FORWARD OPERATION IN A CACHE COHERENCY PROTOCOL” and 
     (2) Application Ser. No. 11/479,576 filed Jun. 30, 2006, entitled “REPEATED CONFLICT ACKNOWLEDGEMENTS IN A CACHE COHERENCY PROTOCOL.” 
     TECHNICAL FIELD 
     Embodiments of the invention relate to a cache coherency protocol. More particularly, embodiments of the invention relate to resolution of conflicts in a system having multiple caching agents. 
     BACKGROUND 
     When an electronic system includes multiple cache memories, the validity of the data available for use must be maintained. This is typically accomplished by manipulating data according to a cache coherency protocol. As the number of caches and/or processors increases, the complexity of maintaining cache coherency also increases. 
     When multiple components (e.g., a cache memory, a processor) request the same block of data the conflict between the multiple components must be resolved in a manner that maintains the validity of the data. Current cache coherency protocols typically have a single component that is responsible for conflict resolution. However, as the complexity of the system increases, reliance on a single component for conflict resolution can decrease overall system performance. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Embodiments of the invention are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements. 
         FIG. 1  is a block diagram of one embodiment of an apparatus for a physical interconnect. 
         FIG. 2  is a block diagram of a group of nodes interconnected with a home agent. 
         FIGS. 3A-3D  illustrate a technique for resolution of a conflict condition utilizing re-snoops. 
         FIG. 4  is a block diagram of a hierarchical system having multiple home agents. 
     
    
    
     DETAILED DESCRIPTION 
     Techniques for distributed cache coherency conflict resolution in a multi-node system are described. In the following description, numerous specific details are set forth. However, embodiments of the invention may be practiced without these specific details. In other instances, well-known circuits, structures and techniques have not been shown in detail in order not to obscure the understanding of this description. 
     The cache coherency protocol described herein provides a snooping protocol without the limitations of a single, serializing bus. The protocol relies on nodes with cached copies of data to maintain coherency. In one embodiment, nodes are interconnected through point-to-point links between caching agents. In one embodiment, the cache coherency protocol may provide distributed conflict resolution by having nodes identify potential conflicts and involve the Home node in the resolution process. The Home node may participate in every transaction without being on the critical path in order to resolve conflicts. 
     The cache coherency protocol involves broadcasting an initial request to all peer nodes as well as the Home node. A conflict will be detected if each node monitors for conflicts after making a request. Because all nodes must respond to a broadcast request either by supplying the data or indicating they do not have a copy, the response can include an indication of a conflict, so conflicting nodes will detect the conflict. 
     Under certain conditions a requesting node may have received the requested data and acknowledged receipt to the Home node. However, before a completion message is received from the Home node, a conflicting request may be received from a peer node. This may be referred to as a “late conflict” condition. Techniques for resolution of the late conflict condition are described herein. 
       FIG. 1  is a block diagram of one embodiment of an apparatus for a physical interconnect. In one aspect, the apparatus depicts a physical layer for a cache-coherent, link-based interconnect scheme for a processor, chipset, and/or IO bridge components. For example, the physical interconnect may be performed by each physical layer of an integrated device. 
     Specifically, the physical layer may provide communication between two ports over a physical interconnect comprising two uni-directional links. Specifically, one uni-directional link  104  from a first transmit port  150  of a first integrated device to a first receiver port  150  of a second integrated device. Likewise, a second uni-directional link  106  from a first transmit port  150  of the second integrated device to a first receiver port  150  of the first integrated device. However, the claimed subject matter is not limited to two uni-directional links. 
       FIG. 2  is a block diagram of a group of nodes interconnected with a home agent. The example of  FIG. 2  includes nodes and a home agent. However, any number of nodes may be coupled with a home agent. The nodes and home agent may be referred to as a “cluster” that may be a part of a larger system. In one embodiment, one or more of the nodes may have a memory system that may include any type of non-cache memory, for example, dynamic random access memory (DRAM), static random access memory (SRAM), etc. 
     The four nodes ( 220 ,  240 ,  260  and  280 ) may be any type of system component having a cache memory, for example, a processor. In one embodiment, the nodes and home agent may be interconnected via multiple point-to-point links ( 290 ,  291 ,  292 ,  293 ,  294 ,  295 ,  296 ,  297 ,  298 , and  299 ) as described with respect to  FIG. 1 . 
     In one embodiment, node controller  110  may include processing/control agent  114 . Processing/control agent  114  may provide all or a portion of the functionality provided by node controller  110 . Processing/control agent  114  may be implemented as hardware, software, firmware, or any combination thereof. Node controller  110  may also include additional circuits and functionality. In one embodiment, node controller  110  may be a gateway for communication beyond the cluster. Node controller  110  may also operate as a proxy home or caching agent for the home agents of remote clusters, if any. Node controller  110  may also serve as a proxy for the caching agents in the local cluster. 
       FIG. 3A  is a conceptual illustration of a node requesting data in a multi-node system.  FIG. 3A  includes two peer nodes (Node A and Node B) and one Home Agent for reasons of simplicity of description only. A system may have any number of peer nodes and any number of Home Agents. In one embodiment a Home Agent may operate as a proxy for multiple peer nodes when interacting with remote nodes. 
     To request a block of data, Node A may transmit a Data Request (Data Req(A)) message to the Home Agent and a Snoop Request (SnpReq(A)) message to all peer nodes. The requested block of data may be any size block of data, for example, a cache line or a byte of data. 
       FIG. 3B  is a conceptual illustration of a second peer node generating a conflicting request for data. In the illustration of  FIG. 3B , the messages described with respect to  FIG. 3A  are illustrated with dashed lines while the subsequent messages described with respect to  FIG. 3B  are illustrated with solid lines. 
     After sending the Response message, but before Node A has received ownership of the requested data, Node B may request the block of data by sending a Data Request (Data Req(B)) message to the Home Agent and a Snoop Request (SnpReq(B)) message to all peer nodes. 
       FIG. 3C  is a conceptual illustration of the Home Agent completing the second request without forwarding. In response to receiving the Snoop Request message from Node B, Node A may send a Response Conflict (RspCnflt) message to the Home Agent to indicate a conflicting request. In response to the Response Conflict message, the Home Agent may complete the request from Node B by sending a Complete with Data (Cmp Data) message to Node B. 
       FIG. 3D  is a conceptual illustration of a re-snoop in response to a late conflict condition. After completing the request of Node B, the Home Agent may receive a Response Conflict message from Node B corresponding to the request by Node A for the block of data. In response to this request, the Home Agent may send a Snoop Request (SnpReq(A)) message to Node B to cause Node B to respond to Node A in terms of a Snoop Response. This may be referred to as a re-snoop because a Snoop Request with Node A as the destination is reissued to Node B. 
     In response to the Snoop Request message, Node B may send a Response Forward (RspFwd) message to the Home Agent to indicate that the requested data is (or will be) forwarded to Node A. Node B also sends the data to Node A. In response to the Response Forward message, the Home Agent may send a Complete (Cmp) message to Node B to complete the request phases for Node A and Node B with respect to the requested block of data. 
       FIG. 4  is a block diagram of a hierarchical system having multiple home agents.  FIG. 4  illustrates an example architecture of interconnecting four home agents with their corresponding nodes. In one embodiment, the home agents may interact utilizing the same messaging protocol as is used between the nodes. 
     In one embodiment, each cluster ( 410 ,  420 ,  430 ,  440 ) is configured similarly to the cluster of  FIG. 2  where a group of nodes are interconnected via point-to-point links with a home agent. The home agents may also be interconnected via point-to-point links. This allows a home agent to represent a group of nodes to a larger system in a hierarchical manner. The architecture may be further expanded by including a home agent to represent clusters  410 ,  420 ,  430  and  440  to other groups of clusters. 
     Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment. 
     While the invention has been described in terms of several embodiments, those skilled in the art will recognize that the invention is not limited to the embodiments described, but can be practiced with modification and alteration within the spirit and scope of the appended claims. The description is thus to be regarded as illustrative instead of limiting.

Technology Category: g