A data processing system includes a plurality of snoopers coupled to an interconnect. In response to a memory access request transmitted on an interconnect by one of the snoopers receiving a Retry response, a determination is made whether or not the Retry response was caused by a target snooper that will service the memory access request. If not, the target snooper services the memory access request in spite of the Retry response. In a preferred embodiment in which the memory access request is a write request and the target snooper is a memory controller, stale data cached by at least one snooper in association with the address are also invalidated by a snooper, such as the memory controller, transmitting at least one address-only kill transaction on the interconnect. Advantageously, the address-only kill transaction can be issued concurrently with or following servicing the write request so that the write request does not incur latency by waiting until all stale copies of the data have been invalidated.
Drawings
Claims24
A method of operating a data processing system, said method comprising:
transmitting a memory access request on an interconnect;
snooping said memory access request at a plurality of snoopers including a target snooper;
if the memory access request receives a Retry response caused by the target snooper, reissuing the memory access request;
and
if the memory access request receives a Retry response caused by a snooper among said plurality of snoopers other than the target snooper, servicing the memory access request by the target snooper without reissuing the memory access request.
2 more elements
A data processing system, comprising:
an interconnect;
and
a plurality of snoopers coupled to the interconnect, said plurality of snoopers including a target snooper and a requesting snooper that transmits a memory access request on the interconnect, wherein the requesting snooper reissues the memory access request if the memory access request receives a Retry response caused by the target snooper, and wherein the target snooper servicing the memory access request without the memory access request being reissued if the memory access request receives a Retry response caused by a snooper among said plurality of snoopers other than the target snooper.
A snooper for a data processing system including a plurality of snoopers coupled to an interconnect, said snooper comprising:
means for snooping a memory access request on the interconnect and for providing a response thereto;
and
means for, if the memory access request receives a Retry response caused by another snooper, servicing the memory access request without the memory access request being reissued.
1 Aug 2022Estimated · howhide20 years from earliest known nonprovisional domestic filing plus recorded patent term adjustment, including 589 days of adjustment. Maintenance-fee lapses, terminal disclaimers and statutory extensions have not been checked. The continuity chain may be incomplete; this is not an enforceability determination.
#The present invention relates in general to data processing and, in particular, to memory access in a data processing system. Still more particularly, the present invention relates to a data processing system and method of communication that reduce latency of write transactions subject to retry.
#The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself however, as well as a preferred mode of use, further objects and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
#FIG. 1 depicts an illustrative embodiment of a data processing system with which the method and system of the present invention may advantageously be utilized;
#FIG. 2 illustrates a cache in accordance with an illustrative embodiment of the present invention;
Detailed description2,706 words
#With reference now to the figures and in particular with reference to FIG. 1, there is illustrated a high-level block diagram of a symmetric multiprocessor (SMP) data processing system in accordance with the present invention. As depicted, data processing system 8 includes a number of processing units 10a-10n (e.g., n=64) coupled to a system interconnect 12. Each processing unit 10 is an integrated circuit including one or more processors 14. In addition to the registers, instruction flow logic and execution units utilized to execute program instructions, each of processors 14 also includes an associated level one (L1) cache 16, which temporarily stores data that are likely to be accessed by the associated processor 14. Although L1 caches 16 are illustrated in FIG. 1 as unified caches, those skilled in the art will appreciate that each of L1 caches 16 could alternatively be implemented as bifurcated instruction and data caches.
#As further illustrated in FIG. 1, the memory hierarchy of data processing system 8 also includes one or more system memories 22, which form the lowest level of volatile data storage in the memory hierarchy, and one or more lower levels of cache memory, such as on-chip level two (L2) caches 18, which are utilized to stage data from system memory 22 to processors 14. As understood by those skilled in the art, each succeeding lower level of the memory hierarchy is typically capable of storing a larger amount of data than higher levels, but at higher access latency. For example, in an exemplary embodiment, L1 caches 16 may each have 512 64-byte cache lines for a total storage capacity of 32 kilobytes (kB), all at single cycle latency. L2 caches 18 may each have 2048 128-byte cache lines for a total storage capacity of 256 kB at approximately 10-cycle latency. Finally, each system memory 22 can store hundreds of megabytes or gigabytes of data at an even longer latency, for example, 300-400 cycles.
#Data processing system 8 further includes a memory controller 20 that interfaces system memory 22 to interconnect 12. Memory controller 20 includes one or more queues 21 having one or more individual queue entries 23. Queue entries 23 are utilized by memory controller 20 to buffer transactions (e.g., read, write, etc.) snooped on interconnect 12 until processing of the transactions is completed. As shown, data processing system 8 may also include other snoopers, such as I/O controller 26, which interfaces one or more I/O devices 28 to interconnect 12.