Coherent block read execution
A coherent memory fabric with target request global ordering enhances data transfer efficiency in multi-node systems by optimizing buffer management and reducing latency, addressing inefficiencies in existing coherency protocols like MOESI.
Patent Information
- Application Number
- JP2024536024
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-12-21
- Filing Date
- 2022-12-14
- Publication Date
- 2025-01-17
- Estimated Expiration
- 2042-12-14
AI Technical Summary
In multi-node computer systems, data transfer between cache subsystems is inefficient due to multiple operations contributing to latency, particularly in systems using the MOESI coherency protocol, which complicates data coherency management.
Implementing a coherent memory fabric with multiple coherent master and slave controllers, utilizing a target request global ordering mechanism to ensure efficient data transfer by guaranteeing a single data response, thereby reducing latency through optimized buffer management and streamlined data handling.
The solution significantly reduces data transfer latency by ensuring efficient data handling and buffer management, allowing for faster data retrieval and processing, particularly in systems with unified memory spaces.
Smart Images

Figure 0007617346000001 
Figure 0007617346000002 
Figure 0007617346000003
Abstract
Description
[Background technology]
[0001] Computer systems utilize various peripheral components for different input / output and communication functions. A system-on-a-chip (SOC) combines a central processing unit (CPU) core and a data processor, such as a graphics processing unit (GPU), with peripheral controllers and memory interfaces on a single integrated circuit chip, and is well suited for portable, battery-powered operation. For example, a SOC may incorporate a display controller, an image signal processor (ISP), and other peripheral controllers on the SOC to allow input and output of information to and from the computer system. In such multi-node SOCs, devices typically transfer data between resources, such as memory, by routing accesses through a large on-chip routing circuit or "data fabric." In some systems, multiple chiplets each contain a processor core, while the data fabric is provided on an input / output (I / O) die that includes the memory controller. The chiplets and I / O die are mounted on a common package substrate connected by a high-speed interconnect, such as the Infinity Fabric™ (IF) interconnect.
[0002] In such multi-node computer systems, a coherency protocol is used to maintain coherency of data used by different processing nodes. For example, when a processor attempts to access data at a memory address, the processor must first determine whether the memory is stored and modified in another cache. To implement this cache coherency protocol, the caches typically include a number of status bits that indicate the status of a cache line to maintain data coherency across the system. One common coherency protocol is known as the "MOESI" protocol. According to the MOESI protocol, each cache line includes status bits that indicate what MOESI state the line is in, including bits that indicate that the cache line is modified (M), that the cache line is exclusive (E) or shared (S), or that the cache line is invalid (I). The owned (O) state indicates that the line is modified in one cache, a shared copy may exist in another cache, and the data in memory is stale. Transferring data between a cache subsystem of a first node and a cache subsystem of a second node typically involves multiple operations, each of which contributes to the latency of the transfer. [Brief description of the drawings]
[0003] [Figure 1] FIG. 1 is a block diagram of a multi-CPU system according to the prior art. [Diagram 2] 1 is a block diagram of a data processor according to some embodiments. [Diagram 3] 1 is a block diagram of a data processing system according to some embodiments. [Figure 4] FIG. 1 illustrates a block diagram of a portion of a data fabric in accordance with some embodiments. [Diagram 5] 5 is a flowchart 500 of a process for operating a memory system according to some embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0004] In the following description, the use of the same reference numerals in different figures indicates similar or identical items. Unless otherwise noted, the word "coupled" and its related verb forms include both direct and indirect electrical connections by means known in the art, and unless otherwise noted, any description of a direct connection also implies an alternative embodiment using an appropriate form of indirect electrical connection.
[0005] The coherent memory fabric includes a plurality of coherent master controllers and a coherent slave controller, each of the plurality of coherent master controllers including a response data buffer. The coherent slave controller is coupled to the plurality of coherent master controllers. The coherent slave controller is operable to send a target request global ordering message to the selected coherent master controller and transmit the response data in response to determining that a selected coherent block read command from the selected coherent master controller is guaranteed to have only one data response.
[0006] The method includes transmitting a coherent block read command from a coherent master controller over a coherent data fabric to a coherent slave controller. At the coherent slave controller, the method includes, in response to determining that the coherent block read command is guaranteed to have only one data response, sending a target request global ordering message to the coherent master controller and transmitting the response data over the coherent data fabric.
[0007] The data processing system includes a plurality of data processors, a volatile memory, and a coherent memory fabric. The coherent memory fabric includes a plurality of coherent master controllers and a coherent slave controller. Each of the plurality of coherent master controllers includes a response data buffer. The coherent slave controller is coupled to the plurality of coherent master controllers via the coherent memory fabric. The coherent slave controller is operable to send a target request global ordering message to the selected coherent master controller and transmit the response data in response to determining that a selected coherent block read command from the selected coherent master controller is guaranteed to have only one data response.
[0008] 1 is a block diagram of a multi-CPU system 100 according to the prior art. System 100 includes multiple CPUs 105A-105N. Each CPU 105A-105N may include any number of cores 108A-108N, respectively, with the number of cores varying according to the embodiment. Each CPU 105A-105N also includes a corresponding cache subsystem 110A-110N. Each cache subsystem 110A-110N may include any number of levels of cache and any type of cache hierarchy.
[0009] Each CPU 105A-105N is connected to a corresponding coherent master 115A-115N. A "coherent master" is an agent that handles the traffic flowing over the interconnect (e.g., bus / fabric 118) and manages coherency for connected client processors. To manage coherency, a coherent master receives and processes coherency-related messages and probes, and generates coherency-related requests and probes.
[0010] Each CPU 105A-105N is coupled to a pair of coherent slaves via a corresponding coherent master 115A-115N and bus / fabric 118. For example, CPU 105A is coupled to coherent slaves 120A-120B via coherent master 115A and bus / fabric 118. Coherent slave (CS) 120A is coupled to memory controller (MC) 130A, and coherent slave 120B is coupled to memory controller 130B. Coherent slave 120A is coupled to probe filter (PF) 125A, which contains entries for memory regions that have cache lines cached within system 100 for memory accessible through memory controller 130A. Probe filter 125A and each of the other probe filters may also be referred to as a "cache directory." Similarly, coherent slave 120B is coupled to probe filter 125B, which contains entries for memory regions having cache lines cached within system 100 for memory accessible via memory controller 130B. Each CPU 105A-105N may be connected to other numbers of memory controllers than two.
[0011] In a configuration similar to that of CPU 105A, CPU 105B is coupled to coherent slaves 135A-135B via coherent master 115B and bus / fabric 118. Coherent slave 135A is coupled to memory via memory controller 150A, and coherent slave 135A is also coupled to probe filter 145A to manage coherency of cache lines corresponding to memory accessible via memory controller 150A. Coherent slave 135B is coupled to probe filter 145B, and coherent slave 135B is coupled to memory via memory controller 165B. CPU 105N is coupled to coherent slaves 155A-155B via coherent master 115N and bus / fabric 118. Coherent slaves 155A-155B are coupled to probe filters 160A-160B, respectively, and coherent slaves 155A-155B are coupled to memory via memory controllers 165A-165B, respectively. A "coherent slave" is an agent that processes received requests and manages coherency by performing probes targeted at the corresponding memory controller. Additionally, a "coherency probe" is a message that is passed from a coherency point to one or more caches in a computer system to determine whether the cache has a copy of a data block and, optionally, indicates the state in which the cache should place the data block.
[0012] When a coherent slave receives a memory request targeted to its corresponding memory controller, the coherent slave performs a parallel lookup into the corresponding early probe cache and the corresponding probe filter. A coherent master may perform the early probe on its behalf. Each early probe cache in system 100 tracks a region of memory, where the region includes multiple cache lines. The size of the tracked region may vary from embodiment to embodiment. A "region" is sometimes referred to as a "page." When a request is received by a coherent slave, the coherent slave determines the region targeted by the request. An early probe cache lookup for this region is then performed in parallel with performing a lookup against the probe filter. A lookup into the early probe cache typically completes multiple cycles before a lookup into the probe filter. If the lookup against the early probe cache results in a hit, the coherent slave sends an early probe to the CPU(s) identified in the hit entry. This facilitates early retrieval of data if the early probe cache identifies the correct target, reducing the latency associated with processing the memory request. It should be noted that there may be other connections from bus / fabric 118 to other components that are not shown in order to avoid obscuring the figure. For example, bus / fabric 118 may include connections to one or more I / O interfaces and one or more I / O devices.
[0013] 2 is a block diagram of a data processor 200 according to some embodiments. The data processing system includes a package substrate 202, an input / output (I / O) die 204, and an eight CPU core combined die (CCD) 206. In this embodiment, the CCD 206 and the I / O die 204 are attached to the package substrate 204 and connected by a high speed Infinity Fabric™ (IF) interconnect. The package substrate 202 is packaged as a multi-chip module (MCM) for insertion into a socket, such as a land grid array (LGA) socket, for interfacing with a printed circuit board (PCB) of a host data processing system.
[0014] In this embodiment, each CCD 206 includes multiple core complexes (CCXs), each of which includes multiple CPU cores and a shared level 3 cache, with each CPU core including level 1 and level 2 caches (not shown). As described further below, a data fabric including a memory controller (not shown) is provided on the I / O die 204. In this embodiment, a data processor constructed as an MCM is shown to illustrate a preferred embodiment of a data fabric coherency protocol, although in other embodiments, features herein may be embodied in a data processor implemented as a SOC.
[0015] Figure 3 is a block diagram of a data processing system 300, according to some embodiments. Data processing system 300 generally includes a data processor constructed as in Figure 2, including multiple CPU core complexes 311, a data fabric 320, multiple memory controllers ("MCs") 331, and multiple memory devices 341. Many other components of an actual data processing system would typically be present, but are not relevant to understanding the present disclosure and are not shown in Figure 3 for ease of illustration.
[0016] Each CPU core complex 311 includes a set of CPU cores, each of which is bidirectionally connected to data fabric 320. Each CPU core may be a single core that shares only a last level cache with the other CPU cores, or may be combined with some but not all of the other cores in a cluster. Although multiple CPU core complexes 311 are shown, other types of processors (not shown) are also typically connected to data fabric 320 as clients, such as GPU cores and display controllers.
[0017] The data fabric 320 includes a set of coherent master controllers 321, each labeled "CM," a set of coherent slave controllers 323, each labeled "CS," interconnected via a fabric transport layer 322, and a number of probe filters 324, each labeled "PF." The probe filters 324 may be any suitable type of probe filter. In some embodiments, an area probe filter is used in which an area of multiple lines is tracked. Other embodiments employ other types of probe filters, such as traditional line-based probe filters and variations thereof. As used herein, a coherent master controller is considered to be a master port because it may be connected to a memory access agent capable of initiating a memory access request, whether the memory access request is a read access or a write access. Similarly, a coherent slave controller is considered to be a slave port because it connects to a memory access responder, such as the memory controller 311, capable of responding to a memory access request, whether the memory access request is a read access or a write access. The fabric transport layer 322 includes a crossbar router or a series of switches for routing memory-mapped access requests and responses between its ports. The data fabric 320 also includes a system memory map, typically defined by a basic input / output system (BIOS), for determining the destination of memory accesses based on the system configuration. The data fabric 320 includes a coherent master controller for each connected memory access agent, such as the CPU core complex 311. Each coherent master controller 321 has a bidirectional upstream port, a bidirectional downstream port, a control input, and its own internal buffering for both accesses received from clients and responses received from coherent slaves via the fabric transport layer 223.Each coherent master controller 321 also has a control interface connected to its upstream port to provide backpressure signaling to the corresponding memory access agent to avoid overrunning its limited buffer space. Data fabric 320 is similarly constructed to have a coherent slave controller 323 for each of memory controllers 331. Each coherent slave controller 323 has buffering that allows memory access requests to be stored before or after being processed through fabric transport layer 322, depending on the direction.
[0018] Each of the memory controllers 331 has an upstream port connected to the data fabric 320 via a corresponding coherent slave controller 323, and a downstream port connected to a corresponding memory device via a physical layer interface (PHY), such as a double data rate 5 (DDR5) PHY. In this embodiment, three of the memory controllers connect to a local memory channel, and one (shown on the right) connects to a non-aggregated memory module, such as a high bandwidth memory (HBM) module, via a peripheral component interface express (PCIe) link. Thus, the first three memory controllers 331 shown are located on the same die as the data fabric, while the fourth memory controller is connected to the data fabric 320 via a CXL PORT and resides on a memory module. The memory devices 341 are preferably dynamic random access memories (DRAMs), such as double data rate 5 (DDR5) DRAMs, or separate memory modules, such as HBM modules.
[0019] Data processing system 300 is a highly integrated, high performance digital data processor that performs many of the functions associated with workstations, servers, and the like. In operation, data processing system 300 implements a unified memory space in which all memories in the system are potentially visible to each memory accessing agent, such as CPU core complex 311. Data fabric 320 is the medium through which accesses initiated by memory access agents are provided to memory access responders and responses from memory access responders are returned to the initiating memory access agent. Data fabric 320 multiplexes accesses and responses between corresponding master and slave controllers based on a system address map using a central fabric transport layer 322. The general operation of a memory accessing agent, such as coherent master controller 321, is conventional and well known in the art and will not be described further. Similarly, the general operation of memory access responders is well known and typically specified by published standards, such as one or more of the Double Data Rate (DDR) Synchronous Dynamic Random Access Memory (SDRAM) and HBM standards published by the Joint Electron Device Engineering Council (JEDEC), and will not be described further except with respect to the features introduced herein.
[0020] FIG. 4 is a block diagram of a portion of a data fabric 400 including a coherent master controller 321 and a coherent slave controller 323 connected to a data fabric, such as the data fabric of FIG. 3, according to some embodiments.
[0021] The coherent master controller 321 includes a controller and picker circuit 402, a response data buffer 404 (RSPQ), a response data buffer counter 406 (RSPQ CNT), an outgoing request queue 408 (REQQ), and a data port labeled "DP" that connects to a client processor, such as a CPU core complex. The coherent master controller 321 may also include other buffers, such as a write data buffer, but are not shown as they are not relevant to the discussion herein. The RSPQ 404 includes a number of entries 405 for holding data in response to memory requests over the data fabric. The RSPQ CNT 406 is a counter that holds the values of the available entries 405. In operation, memory access requests are received from client processors over the data port DP and are held in the REQQ 408 in any of the entries 409 until they are fulfilled by the coherent master controller 321 by accessing the appropriate coherent slave controller over the data fabric 320. Coherent master controller 321 also processes coherency probes for its respective client processors. RSPQ CNT 406 is incremented when a buffer entry 405 becomes available and decremented when a memory access request is picked by picker circuit 402 and the corresponding buffer entry 405 is allocated to receive the data, as described further below.
[0022] The coherent slave controller 323 includes a controller circuit 420, a coherent slave data buffer 424 (CSQ), and a data port labeled "DP" that connects to the memory controller. The coherent slave controller 323 may also include other buffers, such as a write data buffer, but these are not shown as they are not relevant to the discussion herein. The coherent master controller 321 and the coherent slave controller 323 are connected through the data fabric as shown by two logical channels: a command and data channel 410 and a coherent probe channel 412. The CSQ 424 includes a number of entries 425 for holding response data received from the memory controller via the data port DP until the response data is sent to the coherent master controller 321 according to the particular protocol used.
[0023] In operation, the coherent slave controller 323 receives memory access requests from the coherent master controller 321 and executes the memory access requests by accessing the memory controller via its data port DP or by accessing the coherency point via the data fabric for addresses cached at other coherency points. The controller circuit 420 manages the fulfillment of read and write requests, typically in the order in which they are received. In different embodiments, various coherency protocols are used. In this embodiment, a cache coherent non-uniform memory access (ccNUMA) architecture is used, in which the data port connecting the various subsystems to the data fabric is a scalable data port (SDP), and the coherent hypertransport protocol is used with additional features further described below.
[0024] FIG. 5 illustrates a flowchart 500 of a process for operating a memory system, according to some embodiments. The illustrated process is suitable for use with the last level cache and traffic monitor of FIG. 3, or other suitable memory systems including a data fabric having a coherent slave controller and a coherent master controller. The process begins at block 502 with sending a coherent block read command from a coherent master controller (CM) to a coherent slave controller (CS) over the coherent data fabric. The command is not sent until sufficient buffer entries are available in a response data buffer of the coherent master controller, such as RSPQ 404 (FIG. 4). Once the command is sent, the process allocates two or more buffer entries to receive response data for the command. More than one entry is needed because at this point in the process, it is not known how many responses with response data will be provided from various coherency points on the memory system. For example, if the memory locations targeted by the block read command are cached in two or more CPUs, more than one response with response data may be expected.
[0025] At block 504, the coherent slave controller receives the coherent block read command and sends one or more coherency probes over the data fabric to determine where the latest copy of the data for the target address of the command is stored, which may be in main memory or anywhere among the various caches of the system. The coherency probe is of the type of response to source (RspToSrc) indicating that a response is sent to the requesting coherent master. In this embodiment, the coherency protocol supports memory lines in the various level 1, level 2 and level 3 caches of the system CPU and GPU. The coherent slave controller preferably has access to a probe filter, such as PF324 (FIG. 3), to accelerate the performance of the coherency probe. The probe filter returns a set of potential probe targets to which the coherent slave controller then sends coherency probes. In some other embodiments, other probe filter configurations are used, such as a line-based probe filter. In embodiments where a probe filter is not used, the coherent slave probes a predefined set of targets specified for a particular memory address range.
[0026] Once a result is obtained for the coherency probe at block 506, the process determines whether the result indicates that the coherent block read command is guaranteed to have only one data response, or whether multiple coherency point response data for the coherent block read command is possible. If there is only one data response, the process proceeds to block 508, otherwise, the process proceeds to block 530. The coherent slave preferably makes this determination based on the result of the coherency probe. For example, in the system of FIG. 3, a coherency probe from CS 323 to PF 324 may indicate that the target memory line is not cached by any of the CPU core complexes 311. In this case, only the response data from CS 323 (which may be obtained from memory device 341 or from a last level cache between CS 323 and MC 331) is provided to the requesting CM 321. In some scenarios, no coherency probe is sent at all in block 504; for example, if the target memory region is tagged as non-cacheable, no coherency probe is needed to determine that a coherent block read command is guaranteed to have only one data response. In another scenario, the coherency probe indicates that only one cache is expected to return a probe result with data. In this case, the coherent store controller determines that only one coherence point will provide response data, and thus, the coherent block read command is guaranteed to have only one data response.
[0027] Once the coherent slave controller executes the coherent block read commands (typically in the order they were received), it receives the response data from the memory, in block 508. Then, in block 510, the coherent slave controller sends a globally ordered target request (TgtReqGO) over a coherency probe channel of the coherent data fabric to the coherent master controller, and begins transmitting the response data over a data channel of the coherent data fabric.
[0028] As shown in block 512, when the coherent slave controller finishes transmitting the response data (which may occur after some or all of blocks 512-520, depending on the speed of the data channel), the coherent slave deallocates the coherent slave data buffer entry previously allocated for the response data immediately after transmitting the response data, without requiring a source done message from the selected coherent master controller. In this embodiment, the deallocation in block 512 is done in response to determining that a coherent block read command from the selected coherent master controller is guaranteed to have only one data response, as opposed to the legacy behavior shown in blocks 530-546, in which the coherent slave controller must wait for a "SrcDone" message, as described further below.
[0029] In block 514, the coherent master controller receives the TgtReqGO message and begins receiving the response data. The response data is loaded into an allocated entry in the response data buffer of the coherent master controller. Also, in response to receiving the target request global ordering message, the coherent master controller executes blocks 516-520.
[0030] At block 516, the coherent master controller blocks any coherent probes to the address associated with the coherent block read command until the response data is received over the data channel, forwarded to the requesting client, and acknowledged by the requesting client. At block 518, the coherent master controller reduces the allocation in the response data buffer to a single entry since it is known that no further responses will be received. In some embodiments, this is done by incrementing a counter indicating the number of data buffer entries available in the response data buffer, such as, for example, RSPQ buffer counter 406 (FIG. 4). Other embodiments may associate the command directly with the response data buffer entry, in which case the coherent master controller removes the allocation of additional entries and makes them available so that only one entry is allocated to receive the response data. At block 520, the coherent master sends a subsequent memory access command, which may be to the same coherent slave controller to which the coherent block read command was sent or to a different coherent slave controller, depending on the target address associated with the command.
[0031] If, at block 506, the coherent slave controller determines that the coherent block read command is not guaranteed to have only one data response, the process proceeds to block 530, where it receives response data when executing the coherent block read command. At block 532, the coherent slave controller transmits a target done (TgtDone) message over the coherent probe channel to the coherent master controller and begins transmitting response data for the coherent block read command to the coherent master over the data channel.
[0032] At block 534, the coherent master controller receives the TgtDone message and begins receiving response data. At block 536, the coherent master controller finishes receiving the response data and waits for further responses from the coherency probe (the probe sent at block 504). At block 538, the coherent master controller receives one or more additional responses to the coherency probe, which may include the response data or may include an indication that the coherency point does not have the response data. The response may arrive before the response from the coherent slave controller. The incoming response data is loaded into the second allocated entry of the response data buffer. If newer response data is received than that sent by the coherent slave controller, the coherent master controller will overwrite the older entry with the third or subsequent response, if such a response occurs. Once all responses have been received, the coherent master transfers the correct and most recent data to the requesting client, such as a CPU or GPU, as shown in block 540.
[0033] Next, in block 542, when the client acknowledges receipt of the response data, the coherent master controller deallocates the response data buffer entry in which the data was sent and sends a source done (SrcDone) message to the coherent slave controller. In block 544, the coherent slave controller receives the SrcDone message and, in response, deallocates the data buffer entry in which the data was transmitted. Next, in block 546, the coherent master controller sends a subsequent memory access command and allocates an entry for it in the response data buffer.
[0034] Generally, in this embodiment, the coherent HyperTransport protocol implementation of a coherent block read command shown in blocks 530-546 is used only if more than one response to the command is possible. The SrcDone message transmitted from the coherent master controller to the coherent slave controller is to inform the coherent slave controller that the read response has been made visible to the requesting client, which allows the coherent slave to freely proceed to the next address matching transaction. This process avoids contention with coherency probes for newer transactions to the same address. However, the majority of cache block reads are not expected to trigger coherency probes. Thus, requiring a SrcDone message for every cache block read increases the average lifetime of a transaction in the coherent slave beyond that achieved by the process shown. Furthermore, if the coherency protocol resolves the coherency probe using a read response for the cache block read at the coherent master, so that it is generally more efficient for reads, it must address the possibility of two responses with data that may arrive at different times. This possibility adds a burden to the design to reserve multiple data buffer entries in the coherent master for each cache block read sent to a coherent slave.
[0035] The process of blocks 506-520 uses a different message in the probe channel, the globally ordered target request (TgtReqGO), instead of using the slower SrcDone message sequence. In some embodiments, the TgtReqGO message may be implemented as a single bit carried in the legacy HyperTransport protocol's target complete (TgtDone) message. In other embodiments, it may be a packet used in place of the TgtDone message. The TgtReqGO blocks processing of newer probes for the same address until the previous transaction is fully completed. This benefit is best obtained when no coherency probes are issued or when a single known external cache is expected to return a probe response with data. A significant advantage is provided in data buffer management when the TgtReqGO is issued, since the coherent master protocol can release previously reserved data buffer entries to receive additional probe responses with response data. Additionally, data buffer entries in the coherent slave controller are also released more quickly than in legacy scenarios. As can be seen, this allows for smaller data buffer designs for both the response data buffer in the coherent master (e.g., RSPQ 404, FIG. 4) and the data buffer in the coherent slave (e.g., CSQ 424, FIG. 4).
[0036] The data fabric 320 of FIG. 3 or any portion thereof, such as the coherent master controller 321 and the coherent slave controller 323, may be described or represented by a computer accessible data structure in the form of a database or other data structure that can be read by a program and used directly or indirectly to manufacture an integrated circuit. For example, the data structure may be a behavioral level description or a register transfer level (RTL) description of the hardware functionality in a high level design language (HDL) such as Verilog or VHDL. The description may be read by a synthesis tool that can synthesize the description to generate a netlist that includes a list of gates from a synthesis library. The netlist includes a set of gates that also represent the functionality of the hardware that comprises the integrated circuit. The netlist may then be placed and routed to generate a data set that describes the geometric shapes to be applied to a mask. The mask may then be used in various semiconductor manufacturing processes to manufacture the integrated circuit. Alternatively, the database on the computer accessible storage medium may be a netlist (with or without a synthesis library) or a data set, or Graphic Data System (GDS) II data, if desired.
[0037] Although specific embodiments have been described, various modifications to these embodiments will be apparent to those skilled in the art. The various techniques used in conjunction with the low power state retention for probe filters disclosed herein may be used independently or in conjunction with other techniques. Furthermore, different techniques and circuits may be used to detect the condition for entering the low power state retention.
[0038] It is therefore intended by the appended claims to cover all modifications of the disclosed embodiments that fall within the scope of the disclosed embodiments.
Claims
1. 1. A coherent memory fabric comprising: a plurality of coherent master controllers each including a response data buffer; a coherent slave controller coupled to the plurality of coherent master controllers; the coherent slave controller is operable, in response to determining that a selected coherent block read command from a selected coherent master controller is guaranteed to have only one data response, to send a target request global ordering message to the selected coherent master controller and send response data. Coherent memory fabric.
2. the selected coherent master controller updates an allocation in the response data buffer in response to the target request global ordering message such that only one response data buffer entry is reserved for the selected coherent block read command.
10. The coherent memory fabric of claim 1.
3. the selected coherent master controller is operable, in response to receiving the target request global ordering message, to block any coherent probes to an address associated with the selected coherent block read command until receipt of the response data is acknowledged by a requesting client. The coherent memory fabric of claim 2.
4. the selected coherent master controller immediately sends subsequent memory access commands to the coherent slave controller after updating the allocation; The coherent memory fabric of claim 2.
5. the coherent slave controller comprises a coherent slave data buffer; the coherent slave controller, in response to determining that a selected coherent block read command from a selected coherent master controller is guaranteed to have only one data response, deallocates an entry in the coherent slave data buffer previously allocated for the response data immediately after transmitting the response data without requiring a source completion message from the selected coherent master controller.
10. The coherent memory fabric of claim 1.
6. and in response to determining that the second selected coherent block read command is not guaranteed to have only one data response, sending a target completion message to the selected coherent master controller, sending response data to the selected coherent master controller, and deallocating a coherent slave data buffer entry for the response data only after receiving a source completion message from the selected coherent master controller indicating that the response data has been received. The coherent memory fabric of claim 5.
7. the coherent slave controller determines that the selected coherent block read command is guaranteed to have only one data response by performing a probe filter lookup in a probe filter associated with the plurality of coherent master controllers; 10. The coherent memory fabric of claim 1.
8. 1. A method comprising: sending a coherent block read command from a coherent master controller over a coherent data fabric to a coherent slave controller; in response to determining, at the coherent slave controller, that the coherent block read command is guaranteed to have only one data response, sending a target request global ordering message to the coherent master controller and sending response data. method.
9. the coherent master controller updates the allocation in the response data buffer in response to the target request global ordering message such that only one response data buffer entry is reserved for the coherent block read command. The method of claim 8.
10. in response to receiving the target request global ordering message, at the coherent master controller, blocking any coherent probes to an address associated with the coherent block read command until the response data is received.
10. The method of claim 9.
11. the coherent master controller immediately sends subsequent memory access commands to the coherent slave controller after updating the allocation; 10. The method of claim 9.
12. the coherent slave controller, in response to determining that the coherent block read command from a selected coherent master controller is guaranteed to have only one data response, deallocates a coherent slave data buffer entry previously allocated for the response data immediately after transmitting the response data without requiring a source completion message from the selected coherent master controller. The method of claim 8.
13. in response to determining that the second coherent block read command is not guaranteed to have only one data response, sending a target completion message to the coherent master controller, sending second response data to the coherent master controller, and deallocating a data buffer entry for the response data only after receiving a source completion message from the coherent master controller indicating that the second response data has been received. The method of claim 8.
14. the coherent slave controller begins transmitting the response data in parallel with or immediately after transmitting the target request message; The method of claim 8.
15. the coherent slave controller determines that the coherent block read command is guaranteed to have only one data response by performing a probe filter lookup in probe filters associated with multiple coherent master controllers; 9. The method of claim 8.
Citation Information
Patent Citations
Home Agent Based Cache Transfer Acceleration Scheme
JP2021507371A
Accelerating access to private areas in a region-based cache directory scheme
JP2021527283A
Tightly-coupled distributed uncore coherent fabric
US20160188499A1
Light-weight memory expansion in a coherent memory system
US20200226081A1