Embodiments of the invention relate to techniques for data management including data ordering. More particularly, embodiments of the invention relate to techniques for ensuring that the most recent data in a multi-node system is updated to memory while multiple conflicting evictions are properly processed in a multi-node system having point-to-point connections between the nodes.
A multi-node system is one in which multiple nodes are interconnected to function as a single system. A node may be any type of data source or sink, for example, a processor or processing core, or a memory controller with associated memory. Because each node may modify and/or provide data to other nodes in the system, data coherency including cache coherency is important. However, as the number of nodes increases, the complexity of the coherency may increase.
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.
a is a block diagram of one embodiment of electronic system having a processor core, a memory controller and a memory that may utilize point-to-point interfaces.
b is a block diagram of one embodiment of electronic system having a processor core, a memory and an I/O controller hub that may utilize point-to-point interfaces.
c is a block diagram of one embodiment of electronic system having an I/O controller hub coupled with two processor cores each having a memory that may utilize point-to-point interfaces.
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.
a through 1c are block diagrams of simple multi-node systems that may utilize the data ordering techniques described herein. However, the data ordering techniques described herein may be applied to multi-node systems of far greater complexity. In general, each node includes a caching agent (e.g., at least one cache memory and cache controller) and a home agent. The caching agent may receive deferred local read and write requests/transactions for memory accesses and also responses from snoops originated on behalf of requests from other caching agents in the system. The home agent may return the requested data while resolving access conflicts and maintaining memory coherence across the multi-node system.
a is a block diagram of one embodiment of electronic system having a processor core, a memory controller and a memory that may utilize point-to-point interfaces. Additional components not illustrated in
Electronic system 100 may include processor core 110 and memory controller 120 that are coupled together with a point-to-point interface. Memory controller 120 may also be coupled with memory 125, which may be any type of memory including, for example, random access memory (RAM) of any type (e.g., DRAM, SRAM, DDRAM).
b is a block diagram of one embodiment of electronic system having a processor core, a memory and an I/O controller hub that may utilize point-to-point interfaces. Additional components not illustrated in
Electronic system 130 may include processor core 150 and I/O controller hub 140 that are coupled together with a point-to-point interface. Processor core 150 may also be coupled with memory 155, which may be any type of memory including, for example, random access memory (RAM) of any type (e.g., DRAM, SRAM, DDRAM).
c is a block diagram of one embodiment of electronic system having an I/O controller hub coupled with two processor cores each having a memory that may utilize point-to-point interfaces. Additional components not illustrated in
Electronic system 160 may include two processor cores 180, 190 and I/O controller hub 170 that are coupled together with point-to-point interfaces. Processor cores 180, 190 may also be coupled with memories 185, 195, which may be any type of memory including, for example, random access memory (RAM) of any type (e.g., DRAM, SRAM, DDRAM).
Under certain conditions handling of writeback operations may leave an exclusive state copy of data in a cache hierarchy, which may require multiple writeback operations to a single location in memory. This may result in an inefficient use of system resources. As described herein, multiple writeback operations to the same memory location may be merged in the caching agent before being sent to memory. In one embodiment, when conflicting write operations are merged both the data and the command packets are merged and the latest data is sent to memory. This merging is made more complex in a system having independent command and data paths.
In a system having independent data and command paths when a data request is outstanding in the caching agent, another data write or response may hit the same address. Ordering of the transactions may be maintained by the caching agent by, for example, the techniques and/or structures described below.
As described herein subsequent data transactions may overwrite preceding data transactions if the preceding data transaction is not out of the caching agent. Otherwise, the later data transaction may wait in the caching agent until the previous write is completed and the subsequent data transaction is issued by the caching agent along with the corresponding data so that the memory location is updated by the latest data and stale data does not overwrite the latest data.
Memory transaction writeback0 may be received by command C0 being stored in ingress buffer 210 and data D0 being stored in ingress data buffer 230. Command C0 may be issued to address comparison agent 240 for comparison against pending memory transactions. In one embodiment, address comparison agent 240 may include a content addressable memory (CAM) that may be used for comparison purposes. Command C0 may also be stored in ingress command buffer 220.
Memory transaction writeback1 may then be received by command C1 being stored in ingress buffer 210 and data D1 being stored in ingress data buffer 230. Command C0 may then be allocated in address comparison agent 240 and sent to memory as a writeback operation. In one embodiment, the writeback operation may cause the state of the associated data to change from modified (M) to exclusive (E). This may be referred to as a “WbMtoE(0) command. Also, data D0 may be moved from ingress data buffer 230 to managed data buffer 260, which may function as a data buffer for address comparison agent 240. The data may be sent to memory in association with the writeback operation. This may be referred to as a “WbEData(0)” operation.
Next, command C1 may be issued from ingress buffer 210 to address comparison agent 240 where it may be merged with command C0. At this point, data D1 may still be in ingress data buffer 230. Command C2 may then be received by ingress buffer 210 by command C2 being stored in ingress buffer 210 and data D2 being stored in ingress data buffer 230.
When received by address comparison agent 240, command C2 may be merged with the previously merged command C0/C1. In one embodiment, data D1 and data D2 may be arbitrated by ingress data buffer 230 to be moved to managed data buffer 260. If, for example, data D2 wins the arbitration, data D2 may be moved to managed data buffer 260 and overwrite data D0. Data D1 may be maintained in ingress data buffer 230 and ready to be moved to managed data buffer 260.
Next, data D1 may win arbitration in ingress data buffer 230 to be moved to managed data buffer 260. However, data D1 may not be written to managed data buffer 260 because the latest data (D2) is already available in managed data buffer 260.
The home agent may then send a completion message (Cmp) for command C0. Then merged command C1/C2 may be sent to memory as a writeback command. This may be referred to as “WbMtoE(1).” Data D2 may go to the caching agent as a “WbEData(1)” command to cause data D1 to be written to memory. The home agent may then receive the latest data that is compatible with the requirement to maintain system coherence.
In one embodiment, a state machine may be utilized to maintain data ordering for conflicting evictions (WbMtoE operations). The following basis may be utilized for the state machine.
Request allocations from ingress buffer 210 to address comparison agent 240 may be performed in order. When a write request is allocated by address comparison agent 240, the allocated entry information may be stored in ingress command buffer 220 and the corresponding data may be stored in ingress data buffer 230. When a request is allocated in address comparison agent 240, control signals may be sent to ingress command buffer 220 and to managed command buffer 250. This control signals may indicate whether command/data is ready to move, whether the command/data should be moved, whether the command/data should be merged, etc.
In one embodiment, ingress command buffer 220 may receive an allocated entry number from address comparison agent 240 for each entry. This entry number may be used to generate a signal to indicate whether the latest data is available in managed data buffer 260 for each entry in managed data buffer 260. This may indicate that the data in managed data buffer 260 for a particular entry is the latest and there is no more recent data in ingress data buffer 230 to be moved to managed data buffer 260.
In one embodiment, ingress command buffer 220 may maintain an index for entries in ingress data buffer 230 that store data corresponding to entries in merged address comparison agent 240. In one embodiment, the state machine may not allow data for merged entries to be moved from ingress data buffer 230 to managed data buffer 260 unless the data is the latest data. This may be communicated via one or more control signals. The state machine may also ensure that the data in the manage data buffer entries are not overwritten with data that is not the latest data. A control signal may be utilized because the data move from ingress data buffer 230 to managed data buffer 260 may be out of order due to, for example, arbitration logic in ingress command buffer 220.
One or more processing cores 310 may be coupled with caching agent 320 via one or more pairs of point-to-point links. As used herein a processing core refers to the processing portion of a processor chip minus cache memory/memories. That is, the processing core includes a control unit and an arithmetic logic unit (ALU) as well as any necessary supporting circuitry. Multiple processing cores may be housed within a single integrated circuit (IC) package. Various configurations of processing cores are known in the art. Any type of point-to-point interface known in the art may be utilized.
In one embodiment, caching agent 320 may include the components described with respect to
In one embodiment, the components of
Caching agent 320 and remote sockets may communicate with coherence controller 340. Coherence controller 340 may implement any cache coherency protocol known in the art. Coherence controller 340 may be coupled with memory controller 350, which may function to control memory 360.
Specifically, the physical layer may provide communication between two ports over a physical interconnect comprising two uni-directional links. Specifically, one uni-directional link 404 from a first transmit port 450 of a first integrated device to a first receiver port 450 of a second integrated device. Likewise, a second uni-directional link 406 from a first transmit port 450 of the second integrated device to a first receiver port 450 of the first integrated device. However, the claimed subject matter is not limited to two uni-directional links.
As described in greater detail above, commands and data corresponding to memory requests may be processed by different components at different times. In one embodiment, memory requests corresponding to the same address in memory may be ordered as described above. These memory requests, 530, may be analyzed and, if necessary, merged, 550.
The data corresponding to the memory request, 540, may be stored and/or processed by different components than the request. In one embodiment, the architecture described with respect to
Returning to the ingress command buffer, if the request is the first request allocation to the address comparison agent, 616, an event ready command having an address comparison agent entry identifier and/or a managed data buffer entry identifier may be generated and sent to the ingress command buffer, 630. In one embodiment, a signal to cause the corresponding entry to be sent to the ingress command buffer may be generated/asserted/transmitted.
If the request is not the first request allocation in the address comparison agent, 616, the request allocation in the address comparison agent is merged with the new request, 632. After the merger, an event ready command having an address comparison agent entry identifier and/or a managed data buffer entry identifier may be generated and sent to the ingress command buffer, 630.
For a data buffer entry in the managed data buffer, the system may check whether the managed data buffer data is ready, the managed command buffer event is ready and/or the data merger in the managed data buffer has been completed, 634. If so, the address comparison agent (or other component) may place a bid for entry to the managed command buffer for arbitration, 636.
If the entry does not win the arbitration, 650, the bid may be retried, 636. If the entry does win the arbitration, 650, the data entry from the managed data buffer is sent to an output buffer that may transmit the entry to, for example, a memory, 652. The managed command buffer data is reset, 654. The entry is retired and deallocated, 656.
Returning to the write request/snoop response in the ingress data buffer, 612, for each data buffer entry, the system may check to determine whether the command entry and corresponding data entry are ready to move to the managed buffers, 618. If so, a bid is placed for entry into the ingress command buffer for arbitration, 624. If not, with for the appropriate control signals to be set, 620, and asserted, 622.
If the entry does not win arbitration, 640, the bid is retried, 624. If the entry does win arbitration, 640, the data entry is moved from the ingress data buffer to the managed data buffer, 642. If the entry corresponds to the latest data, 644, the data is moved to the managed data buffer, 648. If the data is not the latest data, 644, the data is dropped, 646.
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.