Certain embodiments of the present invention relate generally to memory write management in a computer system.
A computer system, such as a single processor computer system for example, typically has a central processing unit and a system memory. Multi-processor computer systems often have multiple nodes, in which each node of the system has its own system memory and a central processing unit. A central processing unit includes one or more processing cores and may further include an Input/Output (I/O) complex often referred to as a Root complex, which may be integrated with the processing cores in a single integrated circuit device, or may reside in separate integrated circuit devices. The I/O complex includes bridges such as non-transparent bridges (NTBs) and I/O ports often referred to as Root Ports (RPs) which connect a node, for example, to an I/O fabric such as a PCI Express (PCIe) fabric which often includes one or more switches. The nodes or other portions of the computer system can communicate with each other over the I/O fabric, transmitting and receiving messages including data read and data write messages via the I/O complexes.
For example, a system on a chip (SOC) such as a server SOC frequently integrates on a single substrate not only processing cores but also various dedicated hardware and firmware accelerators such as a memory controller and an I/O complex which may include not only root ports (RPs) or Non-Transparent Bridges (NTBs), but also direct memory access (DMA) controllers, Intel Quick Assist Technology (QAT) accelerators, Content Process Management (CPM) accelerators, etc. These dedicated accelerators integrated with the processing cores may handle specific tasks for which dedicated hardware or firmware may provide a significant power improvement or a performance improvement (or both) over implementations in which the tasks are performed by one or more of the programmed processing cores. For example, an integrated DMA controller may accelerate data movement between system memory and PCIe root ports (RPs) or Non-Transparent Bridges (NTBs). An integrated DMA controller may also accelerate Data Integrity Field (DIF) protection information generation, cyclic redundancy check (CRC) generation, and other storage or networking features. A QAT or CPM accelerator may accelerate data compression, encryption, etc.
To promote rapid transfer of write data, the I/O complexes and the interconnecting I/O fabric frequently do not ensure that write data being written by a source such as a local node, into the system memory of a target such as a remote node, is being written in the same order in which the write data was issued by the source. As a consequence, the I/O complex of the target can issue multiple writes to its system memory without waiting for the completion of previous write operations. As a result, achieving bandwidths appropriate for many applications such as storage applications is facilitated. In order to ensure that a particular set of write data is successfully written before additional data is written to the target memory, the source frequently generates a read operation to read the target memory to verify the successful write of a particular set of write data.
Embodiments of the present disclosure 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.
In the description that follows, like components have been given the same reference numerals, regardless of whether they are shown in different embodiments. To illustrate an embodiment(s) of the present disclosure in a clear and concise manner, the drawings may not necessarily be to scale and certain features may be shown in somewhat schematic form. Features that are described and/or illustrated with respect to one embodiment may be used in the same way or in a similar way in one or more other embodiments and/or in combination with or instead of the features of the other embodiments.
Aspects of the present description are directed to memory write management in computer components and computer systems in which a source issues write operations to a target having a memory. The computer systems may be a single processor or a multi-processor system, having a single address space or multiple address spaces which are linked together.
For example, in a single or multi-processor computer system, memory write management is described in which in one embodiment, a flag such as a write fence flag, for example, may be transmitted by logic such as a write fence source logic, for example, issuing memory write operations to a target which may be in the same system or a different one. The write fence flag is recognized by logic such as write fence target logic, for example, of an I/O complex of the target, which takes appropriate action to ensure that memory write operations associated with the write fence flag are completed before memory write or other memory operations subsequent to the written fence flag are completed. As explained in greater detail below, such an arrangement can, in some embodiments, reduce or eliminate read operations for purposes of write fencing or other verifications.
In another example, such as a multi-processor computer system having multiple nodes, each node having an address space which is linked to the address space of other nodes, memory write management is described in which in one embodiment, a flag, such as a write fence flag, for example, may be transmitted by logic such as write fence source logic, for example, of an I/O complex of a local node issuing memory write operations to a target, such as a remote node. The write fence flag is recognized by logic such as write fence target logic, for example, of an I/O complex of the remote node, which takes appropriate action to ensure that memory write operations associated with the write fence flag are completed before memory write or other memory operations subsequent to the written fence flag are completed. As explained in greater detail below, such an arrangement can, in some embodiments, reduce or eliminate read operations for purposes of write fencing or other verifications. Although certain embodiments are described in connection with a write fence flag, it is appreciated that other types of flags may be utilized as well, depending upon the particular application.
Turning to the figures,
An I/O complex of the peripheral components 50 may implement various data transfer protocols and architectures such the Peripheral Component Interconnect Express (PCIe) architecture, for example. It is appreciated that other data transfer protocols and architectures may be utilized, depending upon the particular application.
Storage of the peripheral components 50 may be, for example, non-volatile storage, such as magnetic disk drives, optical disk drives, a tape drive, flash memory, etc.). The storage may comprise an internal storage device or an attached or network accessible storage. Programs in the storage are loaded into the memory and executed by the processor. A network controller or adapter enables communication with a network, such as an Ethernet, a Fiber Channel Arbitrated Loop, etc. Further, the architecture may, in certain embodiments, include a video controller to render information on a display monitor, where the video controller may be embodied on a video card or integrated on integrated circuit components mounted on a motherboard or other substrate. An input device is used to provide user input to the processor, and may include a keyboard, mouse, pen-stylus, microphone, touch sensitive display screen, input pins, sockets, or any other activation or input mechanism known in the art. An output device is capable of rendering information transmitted from the processor, or other component, such as a display monitor, printer, storage, output pins, sockets, etc. One or more of the I/O complex and the network adapter may embodied on a network card, such as a Peripheral Component Interconnect (PCI) card, PCI-express, or some other I/O card, or on integrated circuit components mounted on a motherboard or other substrate, or integrated with the microprocessor 20.
One or more of the components of the device 10 may be omitted, depending upon the particular application. For example, a network router may lack a video controller, for example. Although described herein in connection with an I/O complex of the peripheral components 50, it is appreciated that write fence flag logic as described herein may be incorporated in other components of the system 10. Write fence source logic of one component in accordance with the present description, may issue write operations and a write fence flag to write fence target logic of a component within the same system or within a different system, and over a bus, fabric, network, the Internet or any other suitable communication path.
For example, in many computer systems such as those having multiple nodes, for example, an I/O complex of each node and an interconnecting I/O fabric permits one node (which may be referred to as the local or source node) to write data directly into the system memory of another node (which may be referred to as the remote or target node) frequently with little or no involvement of the processing cores of the CPU of the remote node. To indicate the completion of the write operations to the remote system memory, the local node frequently writes an entry to a data structure often referred to as a write journal in the remote system memory which may be utilized by the CPU of the remote node in the event of a subsequent failure by the local node.
For example, a storage controller is frequently a multi-processor computer system having multiple nodes.
The storage controller 100 typically controls I/O operations reading data from and writing data to storage 114 such as arrays of disk drives, for example. The I/O operations are typically requested over a bus, network, link or other communication path 118 by host computers 120a, 120b . . . 120n which direct the I/O requests to the storage controllers such as controller 100. Upon receipt of a write request from a host, one node of the storage controller 100 (which may be referred to as the local or source node,
In the example of
The CPU 310a, 310b of each node A, B of this example further includes a memory controller 320a, 320b which controls memory operations including memory reads from and memory writes to the memory 300a, 300b of the respective node A, B. An I/O complex 324a, 324b of each CPU 310a, 310b has I/O ports 330a, 330b such as root ports, for example, a direct memory access (DMA) controller 334a, 334b, and a bridge 340a, 340b which may be a nontransparent bridge (NTB) for example. In the illustrated embodiment, the bridge 340a, 340b of each I/O complex 324a, 324b has write fence flag logic in accordance with the present description. Hence, the nontransparent bridge 340a, 340b is referenced as “write fence bridge” 340a, 340b in
When the node A receives a write request from a host computer 120a, 120b . . . 120n (
Similarly when the node B receives a write request from a host computer 120a, 120b . . . 120n (
The local node may assemble a sequence of write descriptors for a sequence of write operations. The sequence of write descriptors are packed as payloads within a sequence of packets which are addressed to an endpoint destination of the remote node, such as a nontransparent bridge (NTB) of the remote node, and transmits the packets to the remote node over the I/O fabric interconnecting the nodes.
The nontransparent bridge of the remote node assembles the packets received from the local node, and unpacks each write descriptor from received packets. The write operation identified by an unpacked write descriptor is then initiated by the remote node. The write operation may be performed by one or more of the components of the I/O complex such as the nontransparent bridge, I/O ports, and DMA controller, and by one or more of the CPU cores and memory controller, of the remote node. For example, the nontransparent bridge of the remote node typically translates the target address or addresses to which the write data is to be written by the write operation, from the memory space of the local node, to the memory space of the remote node.
In the example of
The five write operations, write0-write3 and journalwrite3, of the five write descriptors may be received by the nontransparent bridge 400 of the remote node in the original sequential order as issued by the local node as shown by
The I/O mesh 410 is schematically represented in
For purposes of illustration, data for write operation write0 is depicted as passing through write buffers a1, a2, a3, a4, b4, c4, d4, for example, before the write data is written into memory 414 (
Because each set of data of the five write operations may take a different path through the I/O mesh 410, the write data may be written to the memory 414 in a sequential order which differs from the original sequential order of the write operations issued by the local node. This change in sequential order is depicted in
To avoid such situations, previous multi-processor computers have inserted a read descriptor for a read operation such as read operation read0 (
However, it is appreciated herein that the read operation to verify the successful completion of prior write operations can take a significant amount of time to complete. As a result, performance of the system may be significantly and adversely affected.
In accordance with various embodiments of this disclosure, memory write management is described for a computer system, in which in one embodiment, a write fence flag may be transmitted by write fence flag logic such as the write fence source logic 110a (
In one embodiment, the write fence source logic 110a, and write fence target logic 110b are implemented in a non-transparent bridge 340a, 340b, respectively, of the respective I/O complex 324a, 324b (
In one embodiment, the local or source node A may indicate a write fence flag to the remote or target node B by a special write operation to a designated address within the address space of the target. The write fence target logic of the write fence flag bridge 340b of the target is configured to recognize a write to that designated address as a write fence flag and to take appropriate action to ensure that memory write operations associated with the write fence flag are completed before memory write operations subsequent to the write fence flag are completed.
One function of a nontransparent bridge such as the bridge 340b of the remote node B, is to translate target addresses for read and write operations directed to the remote node B by the local node A, from the address space 700a of the local node A to the address space 700b of the remote node B as represented by the translation function arrows 730, 734, 740 of
In a similar manner, as the write fence (WF) flag write operation WFflagwrite3 is unpacked and initiated, the target address of the write fence (WF) flag write operation WFflagwrite3 is translated by the bridge 340b from the remote node flag address space 720 (
Accordingly, upon detecting a write fence flag as indicated by a write operation from another node directed to a target address within the remote node flag address space 724b, all subsequent write operations are buffered by the remote write fence bridge 340b to delay execution of those buffered write operations until the bridge 340b receives confirmation that the preceding write operations have been successfully completed to the remote system memory.
In this example, the write journal write operation journalwrite3 was received by the remote node B after the four write operations, write0, write1, write2, write3, and the write fence (WF) flag write operation WFflagwrite3, were received by the remote node B as shown in
By buffering the write journal write operation journalwrite3 instead of immediately executing the write journal write operation, the write journal write operation may be delayed until the write operations fenced by the write fence flag are completed. Once the write operations write0-write3 fenced by the write fence flag are completed, the write journal write operation journalwrite3 is permitted to proceed. As a consequence, the accuracy of the write journal entry written by the write journal write operation journalwrite3 is assured. Accordingly the write journal entry written by the write operation journalwrite3 indicating completion of the write operations write0-write3 may be safely relied upon should the need arise.
In order to verify the completion of remote operations such as the write operations write0-write3, the remote node B maintains, in one embodiment, a data structure referred to herein as a remote operation journal such as that indicated at 900 in
The journal 900 may be maintained in the system memory 300b or in memory such as registers of another component of the remote node B such as registers in the remote write fence bridge 340b, for example. As each write operation is initiated by the remote node B, an entry is made recording the Tag ID of that operation in the operation tag ID field of the journal 900. Thus, in embodiments in which the journal 900 is maintained by the remote write fence bridge 340b, the entries into the journal 900 may be made by the remote write fence bridge 340b, for example. In the example of
As set forth above, the write fence target logic of the remote write fence bridge 340b recognizes that the target address for the write fence flag write operation WFflagwrite3 is directed to a target address within the remote node flag address space 724b. Accordingly, the write fence target logic of the remote write fence bridge 340b recognizes the write fence flag write operation WFflagwrite3 as a write fence flag and indicates such in the write fence flag field of the entry for the write fence flag write operation WFflagwrite3 in the remote operation journal 900. As a result, the write fence target logic of the remote write fence bridge 340b commences enforcement of a write fence for the preceding write operations of the journal 900 which in this example are the first four write operations write0-write3.
The particular write operations which are to be fenced by a particular write fence flag may be determined using a variety of techniques, depending upon the particular application. For example, the write operations to be fenced by the write fence flag WFflagwrite3 may be identified as the write operations which were initiated prior to receipt of the write fence flag WFflagwrite3 and after the receipt of the last write fence flag before the write fence flag WFflagwrite3. Other techniques may include identifying the write operations to be fenced in write data accompanying the write fence flag write operation WFflagwrite3. It is appreciated that other techniques may be used, depending upon the particular application.
As shown in
As the data write to memory 300b is completed for each write operation, a component of the remote node B, such as the memory controller 320b, for example, issues an acknowledgement identifying the completed write operation by tag ID. In this example, the remote write fence bridge 340b receives the write acknowledgement and records the tag ID in the acknowledgement tag ID field of the remote operation journal of the entry for the operation identified by that tag ID. Hence, in the example of
In the embodiment depicted in FIGS. 7 and 8A-8D, a local node or other source initiating a sequence of write operations to a remote node or other target may issue a write fence flag to the target in the form of a write operation which writes to a special address such that the target will recognize the write operation to the special address as a write fence flag. Such an embodiment may utilize write descriptors as write fence flags which essentially differ from other write descriptors only in the location of the target address, for example.
It is appreciated that other techniques may be utilized for a source to issue a write fence flag to a target. For example,
It is appreciated herein that a write descriptor may be modified using a number of techniques to indicate that it is also carrying a write fence flag. For example, as shown in
In the embodiment depicted in FIGS. 7 and 8A-8D, a nontransparent bridge was modified to include write fence target logic in accordance with the present description. In the embodiment of
Accordingly, upon detecting a write fence flag as indicated by a write descriptor from another node or from another computer portion, having a header modified to indicate a write fence flag, all subsequently received write operations are buffered by the remote write fence I/O port 330b1 until the I/O port 330b1 receives confirmation that the preceding fenced write operations have been successfully completed to the target memory.
In this example, the write journal write operation journalwrite3 was received by the remote node B after the four write operations, write0, write1, write2, write3, were received by the remote node B as shown in
In this embodiment, when the write fence target logic of the remote write fence I/O port 330b1 recognizes the header portion 1124 of the write descriptor for the write operation write3 as a write fence flag, the write fence target logic of the remote write fence I/O port 330b1 indicates such in the write fence flag field of the entry for the write operation write3 in a remote operation journal 1200 as indicated in
Here too, the particular write operations which are to be fenced by a particular write fence flag may be determined using a variety of techniques, depending upon the particular application. For example, the write operations to be fenced by the write fence flag of the write operation write3 may be identified as the write operation of the write descriptor bearing the write fence flag header, as well as the write operations which were initiated prior to receipt of the write fence flag and after the receipt of the last write fence flag before the write fence flag of the write operation write3. Other techniques may include identifying the write operations to be fenced in the write fence flag header of a write descriptor. It is appreciated that other techniques may be used, depending upon the particular application.
In the example of
If it is determined (block 1314) that there is a write fence flag associated with the received write operation, write fence enforcement is initiated in which the logic waits (block 1328) for all previous write operations to complete. The write fence target logic returns to wait for receipt (block 1300) of another write operation.
Conversely, if it is determined (block 1314) that there is not a write fence flag associated with the received write operation, the received write operation is permitted to issue (block 1330) wherein the write data of the received write operation is written to the memory of the target. The write fence target logic returns to wait for receipt (block 1300) of another write operation.
In the example of
The example of
Again, in the example of
If it is determined (block 1314) that there is a write fence flag associated with the received write operation, write fence enforcement is initiated in which the logic waits (block 1328) for all previous write operations to complete. In addition, the received write operation is permitted to issue (block 1330) wherein the write data of the received write operation is written to the memory of the target. Conversely, if it is determined (block 1314) that there is not a write fence flag associated with the received write operation, write fence enforcement is not initiated and the received write operation is permitted to issue (block 1330) wherein the write data of the received write operation is written to the memory of the target. The write fence target logic returns to wait for receipt (block 1300) of another write operation.
Again, in the example of
It is appreciated that components of the remote node B or other target, such as the remote write fence bridge 340b or the write fence I/O port 330b1 may be configured to have write fence source logic as well as write fence target logic, so that components of the remote node may perform operations of a write fence source logic as well. Conversely, it is appreciated that components of the local node A or other source, such as the write fence bridge 340a or a write fence I/O port 330a may be configured to have write fence target logic as well as write fence source logic, so that components of the local node may perform operations of the write fence target logic as well. It is further appreciated that components of a single processor computer system, such as a bridge or I/O port, for example, may be configured to have one or both of write fence source logic as well as write fence target logic, so that components of the single processor computer may perform operations of one or both of write fence source logic and write fence target logic in accordance with the present description.
In the embodiment of
For example, a final write operation associated with a DMA transfer directed to a designated address may be generated and issued to the target or remote node to indicate a write fence flag. Accordingly, the write fence target logic 110b (
In one embodiment, write data targeting the designated address may be simply discarded since the detection of the write operation itself targeting the designated address provides a write fence flag to the target or remote node B. It is appreciated that in other embodiments, the values of the write data may provide additional features or may be utilized to indicate a write fence flag.
In another embodiment, the write fence DMA controller 1434a of the source node may indicate a write fence flag to the remote or target node B by setting an attribute in a final write operation associated with the final write operation associated with the last DMA descriptor of an I/O request. It is appreciated that other portions of a write operation such as a write descriptor may be modified to indicate a write fence flag. Here too, in one embodiment, the write fence flag attribute is generated by the data transfer accelerator independently of the CPU cores 314a, 314b and the associated software programming the cores.
In one embodiment, an attribute in the last descriptor of an I/O request, may be set by the associated DMA driver, to signal to the target or remote node, a write fence flag. The DMA driver may be employed to configure and operate the write fence DMA controller 1434a. In embodiments employing a modified write operation having an attribute set to designate a write fence flag, the write operation of the final, modified write operation is not issued by the target or remote node to its system memory until all previous writes to system memory since the last write fence flag, are completed. In one embodiment, the local node A and the remote node B of FIG. may be fabricated on a multiple substrates.
As explained below, in this example, the source node also mirrors the write request parameters such as the write data or the write data addresses to the system memory 300b of a target node such as the remote node B (
Accordingly, the write requests (or their parameters) WriteReq0, WriteReq1, WriteReq2, WriteReq3 are read (block 1524,
In this example, a component of the I/O complex 1424a (
The sequence of write descriptors Write0, Write1, Write2, Write3 are packed by a component of the I/O complex 1424a (
A determination (block 1542,
In one embodiment, the write fence source logic 110a of the source or local node A may indicate a write fence flag to the target or remote node B by a special write operation to a designated address within the address space of the target as described above. In this example, the write fence flag is in the form of the write descriptor WFFlagWrite3 which describes a write operation targeting the remote node flag address space 720 (
In another embodiment, the write fence source logic 110a of the write fence mirror logic 1602 (
In addition, a journal write is generated (block 1560,
The write fence mirror logic 1602 can commit (block 1576) the I/O request to host, that is, inform the host that the I/O requests have been completed although they have not yet been written to storage. In one embodiment, the write fence mirror logic 1602 can signal the completion to the CPU cores 314a (
The operations
The write requests (or their parameters) WriteReq0, WriteReq1, WriteReq2, WriteReq3 are read (block 1524,
In this example, a component of the I/O complex 1424a (
The sequence of write descriptors Write0, Write1, Write2, Write3 are packed by a component of the I/O complex 1424a (
A determination (block 1542,
For example, as shown in
Accordingly, in response to detecting an I/O commit flag 1724 in the write request WriteReq3, the DMA generator logic 1608 (
It is appreciated that in this embodiment, the detector logic 1612 of the Write Fence DMA logic 1604 (
In response to detecting (block 1542,
The write fence bridge 1440a of the source node issues (block 1574,
The operations of
The following examples pertain to further embodiments.
Example 1 is an apparatus of a target for use with a source issuing write operations for a memory of the target, comprising: an I/O port; and logic of the target configured to: receive at the I/O port, a first plurality of write operations issued by the source to write data in the memory, a flag issued by the source in association with the issuance of the first plurality of write operations, and a second plurality of write operations issued by the source to write data in the memory; detect the flag issued by the source in association with the issuance of the first plurality of write operations; and in response to detection of the flag, ensure that the first plurality of write operations are completed in the memory prior to completion of any of the write operations of the second plurality of write operations.
In Example 2, the subject matter of Examples 1-10 (excluding the present Example) can optionally include a buffer, and wherein the logic of the target is further configured to buffer the write operations of the second plurality of write operations in the buffer until the first plurality of write operations are completed in the memory.
In Example 3, the subject matter of Examples 1-10 (excluding the present Example) can optionally include wherein the logic of the target is configured to receive a flag write operation having a target address in the target which indicates that the flag write operation is a flag, and wherein the logic of the target is configured to detect the flag by detecting that the target address of the flag write operation indicates that the flag write operation is a flag.
In Example 4, the subject matter of Examples 1-10 (excluding the present Example) can optionally include wherein the logic of the target is configured to receive at the I/O port, a write descriptor issued by the source, which describes a write operation of the first plurality of write operations, wherein the write descriptor includes a header which indicates the flag, and wherein the logic of the target is configured to detect the flag by detecting the flag header of the write descriptor.
In Example 5, the subject matter of Examples 1-10 (excluding the present Example) can optionally include wherein the I/O device is a nontransparent bridge having address translation logic configured to translate target addresses of the write operations issued by the source from an address space of the source to an address space of the target.
In Example 6, the subject matter of Examples 1-10 (excluding the present Example) can optionally include wherein the target includes a microprocessor and the nontransparent bridge is integrated with microprocessor of the target.
In Example 7, the subject matter of Examples 1-10 (excluding the present Example) can optionally include wherein the target has a write completion data structure which indicates completion of write operations to the memory of the target and wherein the second plurality of write operations includes a write completion data structure write operation to the write completion data structure to indicate completion of the first plurality of write instructions and wherein the logic of the target is configured to ensure that, in response to detection of the flag, the first plurality of write operations are completed in the memory prior to completion of the write completion data structure write operation of the second plurality of write operations.
In Example 8, the subject matter of Examples 1-10 (excluding the present Example) can optionally include wherein the write operations issued by the source have a tag identification (ID), wherein the target has a remote operation data structure, and wherein the logic of the target is configured to record the tag ID of received write operations in the remote operation data structure and use the remote operation data structure to identify which write operations received prior to the flag, are to completed in the memory prior to completion of any of the write operations of the second plurality of write operations.
In Example 9, the subject matter of Examples 1-10 (excluding the present Example) can optionally include wherein the target has a memory controller which issues an acknowledgement which includes the tag ID of a write operation completed by the memory controller, and wherein the logic of the target is configured to receive the write operation acknowledgements issued by the memory controller and record in the remote operation data structure, the tag ID of each received write operation acknowledgement in association with the tag ID of the associated write operation, and wherein the logic of the target is configured to use the remote operation data structure to identify which write operations of the first plurality of write operations have been completed.
In Example 10, the subject matter of Examples 1-10 (excluding the present Example) can optionally include wherein the target is a remote node of a multi-processor storage controller for use with a storage and a host, to perform I/O operations with the storage in response to I/O requests of the host.
Example 11 is a computing system for use with a display, comprising: a source having logic configured to issue write operations and a flag; and a target, comprising: a memory; a processor configured to write data in and read data from the memory; a video controller configured to display information represented by data in the memory; an I/O port; and logic of the target configured to: receive at the I/O port, a first plurality of write operations issued by the source to write data in the memory, a flag issued by the source in association with the issuance of the first plurality of write operations, and a second plurality of write operations issued by the source to write data in the memory; detect the flag issued by the source in association with the issuance of the first plurality of write operations; and in response to detection of the flag, ensure that the first plurality of write operations are completed in the memory prior to completion of any of the write operations of the second plurality of write operations.
In Example 12, the subject matter of Examples 11-20 (excluding the present Example) can optionally include wherein the target further comprises a buffer, and wherein the logic of the target is further configured to buffer the write operations of the second plurality of write operations in the buffer until the first plurality of write operations are completed in the memory.
In Example 13, the subject matter of Examples 11-20 (excluding the present Example) can optionally include wherein the logic of the target is configured to receive a flag write operation having a target address in the target which indicates that the flag write operation is a flag, and wherein the logic of the target is configured to detect the flag by detecting that the target address of the flag write operation indicates that the flag write operation is a flag.
In Example 14, the subject matter of Examples 11-20 (excluding the present Example) can optionally include wherein the logic of the target is configured to receive at the I/O port, a write descriptor issued by the source, which describes a write operation of the first plurality of write operations, wherein the write descriptor includes a header which indicates the flag, and wherein the logic of the target is configured to detect the flag by detecting the flag header of the write descriptor.
In Example 15, the subject matter of Examples 11-20 (excluding the present Example) can optionally include wherein the target further comprises a nontransparent bridge having said I/O port, said logic of the target, and address translation logic configured to translate target addresses of the write operations issued by the source from an address space of the source to an address space of the target.
In Example 16, the subject matter of Examples 11-20 (excluding the present Example) can optionally include wherein the target includes a microprocessor having said processor and the nontransparent bridge is integrated with microprocessor of the target.
In Example 17, the subject matter of Examples 11-20 (excluding the present Example) can optionally include wherein the target has a write completion data structure which indicates completion of write operations to the memory of the target and wherein the second plurality of write operations includes a write completion data structure write operation to the write completion data structure to indicate completion of the first plurality of write instructions and wherein the logic of the target is configured to ensure that, in response to detection of the flag, the first plurality of write operations are completed in the memory prior to completion of the write completion data structure write operation of the second plurality of write operations.
In Example 18, the subject matter of Examples 11-20 (excluding the present Example) can optionally include wherein the write operations issued by the source have a tag identification (ID), wherein the target has a remote operation data structure, and wherein the logic of the target is configured to record the tag ID of received write operations in the remote operation data structure and use the remote operation data structure to identify which write operations received prior to the flag, are to completed in the memory prior to completion of any of the write operations of the second plurality of write operations.
In Example 19, the subject matter of Examples 11-20 (excluding the present Example) can optionally include wherein the target has a memory controller which issues an acknowledgement which includes the tag ID of a write operation completed by the memory controller, and wherein the logic of the target is configured to receive the write operation acknowledgements issued by the memory controller and record in the remote operation data structure, the tag ID of each received write operation acknowledgement in association with the tag ID of the associated write operation, and wherein the logic of the target is configured to use the remote operation data structure to identify which write operations of the first plurality of write operations have been completed.
In Example 20, the subject matter of Examples 11-20 (excluding the present Example) can optionally include a multi-processor storage controller for use with a storage and a host, to perform I/O operations with the storage in response to I/O requests of the host, wherein the target is a remote node of the multi-processor storage controller.
Example 21 is a method of managing data write operations, comprising: logic of the target of a target performing operations, the operations comprising: receiving at an I/O port of the target, a first plurality of write operations issued by a source to write data in a memory of the target, a flag issued by the source in association with the issuance of the first plurality of write operations, and a second plurality of write operations issued by the source to write data in the memory; detecting the flag issued by the source in association with the issuance of the first plurality of write operations; and in response to detection of the flag, ensuring that the first plurality of write operations are completed in the memory prior to completion of any of the write operations of the second plurality of write operations.
In Example 22, the subject matter of Examples 21-30 (excluding the present Example) can optionally include wherein the operations performed by the logic of the target, further comprise buffering the write operations of the second plurality of write operations in a buffer of the target until the first plurality of write operations are completed in the memory.
In Example 23, the subject matter of Examples 21-30 (excluding the present Example) can optionally include wherein the operations performed by the logic of the target, further comprise receiving at the I/O port, a flag write operation having a target address in the target which indicates that the flag write operation is a flag, and wherein the operations performed by the logic of the target, further comprise detecting the flag by detecting that the target address of the flag write operation indicates that the flag write operation is a flag.
In Example 24, the subject matter of Examples 21-30 (excluding the present Example) can optionally include wherein the operations performed by the logic of the target, further comprise receiving at the I/O port, a write descriptor issued by the source, which describes a write operation of the first plurality of write operations, wherein the write descriptor includes a header which indicates the flag, and wherein the operations performed by the logic of the target, further comprise detecting the flag by detecting the flag header of the write descriptor.
In Example 25, the subject matter of Examples 21-30 (excluding the present Example) can optionally include wherein the target further comprises a nontransparent bridge having said I/O port, said logic of the target, and address translation logic, the method further comprising the address translation logic translating target addresses of the write operations issued by the source from an address space of the source to an address space of the target.
In Example 26, the subject matter of Examples 21-30 (excluding the present Example) can optionally include wherein the target includes a microprocessor having said processor and the nontransparent bridge is integrated with microprocessor of the target.
In Example 27, the subject matter of Examples 21-30 (excluding the present Example) can optionally include wherein the target has a write completion data structure which indicates completion of write operations to the memory of the target and wherein the second plurality of write operations includes a write completion data structure write operation to the write completion data structure to indicate completion of the first plurality of write instructions and wherein the operations performed by the logic of the target, further comprise ensuring that, in response to detection of the flag, the first plurality of write operations are completed in the memory prior to completion of the write completion data structure write operation of the second plurality of write operations.
In Example 28, the subject matter of Examples 21-30 (excluding the present Example) can optionally include wherein the write operations issued by the source have a tag identification (ID), wherein the target has a remote operation data structure, and wherein the operations performed by the logic of the target, further comprise recording the tag ID of received write operations in the remote operation data structure and using the remote operation data structure to identify which write operations received prior to the flag, are to completed in the memory prior to completion of any of the write operations of the second plurality of write operations.
In Example 29, the subject matter of Examples 21-30 (excluding the present Example) can optionally include wherein the target has a memory controller which issues an acknowledgement which includes the tag ID of a write operation completed by the memory controller, and wherein the operations performed by the logic of the target, further comprise receiving the write operation acknowledgements issued by the memory controller and recording in the remote operation data structure, the tag ID of each received write operation acknowledgement in association with the tag ID of the associated write operation, and using the remote operation data structure to identify which write operations of the first plurality of write operations have been completed.
In Example 30, the subject matter of Examples 21-30 (excluding the present Example) can optionally include a multi-processor storage controller performing I/O operations with a storage in response to I/O requests of a host, wherein the target is a remote node of the multi-processor storage controller.
Example 31 is an apparatus of a source for use with a target receiving write operations for a memory of the target, comprising:
an input/output (I/O) port; and
a data transfer accelerator having source logic of the source configured to:
issue to the I/O port, a first plurality of write operations to write data in the target memory, a write fence flag associated with the first plurality of write operations, and a second plurality of write operations to write data in the target memory;
wherein the write fence flag is configured by the source logic for detection by the target to ensure that the first plurality of write operations are completed by the target in the target memory prior to completion of any of the write operations of the second plurality of write operations.
In Example 32, the subject matter of Examples 31-40 (excluding the present Example) can optionally include wherein the write fence flag is configured by the source logic for detection by the target to be a flag write operation having a target address in the target which target address indicates to the target that the flag write operation is a write fence flag.
In Example 33, the subject matter of Examples 31-40 (excluding the present Example) can optionally include wherein the write fence flag is configured by the source logic for detection by the target to be a flag write descriptor having a header which has an attribute in the flag write descriptor, which header attribute indicates to the target that the flag write descriptor is a write fence flag.
In Example 34, the subject matter of Examples 31-40 (excluding the present Example) can optionally include wherein the data transfer accelerator of the source includes a direct memory access (DMA) controller wherein the source logic is implemented at least partially in the DMA controller.
In Example 35, the subject matter of Examples 31-40 (excluding the present Example) can optionally include wherein the source includes a central processing unit (CPU) and the DMA controller and the I/O port are integrated with CPU of the source.
In Example 36, the subject matter of Examples 31-40 (excluding the present Example) can optionally include being for use with a host, wherein the source logic is further configured to receive write requests from a host and to generate in response to said received write requests, said first plurality of write operations to write data in the target memory.
In Example 37, the subject matter of Examples 31-40 (excluding the present Example) can optionally include wherein a received write request includes an I/O commit flag, and wherein the wherein the source includes a direct memory access (DMA) controller implementing a least a portion of said source logic, said source logic implemented within the DMA controller having a detector configured to detect an I/O commit flag in a received write request, and a generator configured to generate said write fence flag in response to said I/O commit flag detection.
In Example 38, the subject matter of Examples 31-40 (excluding the present Example) can optionally include wherein the target has a write completion data structure which indicates completion of write operations to the memory of the target, and wherein the source logic of the source is further configured to issue to the I/O port after the write fence flag, a write completion data structure write operation to the write completion data structure to indicate completion of the first plurality of write instructions.
In Example 39, the subject matter of Examples 31-40 (excluding the present Example) can optionally include wherein the target has a write completion data structure which indicates completion of write operations to the memory of the target, and wherein said generator of said DMA controller is further configured to generate, in response to said I/O commit flag detection after said write fence flag generation, a write completion data structure write operation to the write completion data structure to indicate completion of the first plurality of write instructions.
In Example 40, the subject matter of Examples 31-40 (excluding the present Example) can optionally include wherein the source is a local node of a multi-processor storage controller and the target is a remote node of the multi-processor storage controller which is for use with a storage and a host, to perform I/O operations with the storage in response to I/O requests of the host.
Example 41 is a computing system for use with a display, comprising:
a target having a target memory and having logic configured to receive write operations and a write fence flag; and
a source, comprising:
a source memory;
a video controller configured to display information represented by data in the source memory;
an input/output (I/O) port; and
a data transfer accelerator having source logic of the source configured to:
issue to the I/O port, a first plurality of write operations to write data in the target memory, a write fence flag associated with the first plurality of write operations, and a second plurality of write operations to write data in the target memory;
wherein the write fence flag is configured by the source logic for detection by the target to ensure that the first plurality of write operations are completed by the target in the target memory prior to completion of any of the write operations of the second plurality of write operations.
In Example 42, the subject matter of Examples 41-50 (excluding the present Example) can optionally include wherein the write fence flag is configured by the source logic for detection by the target to be a flag write operation having a target address in the target which target address indicates to the target that the flag write operation is a write fence flag.
In Example 43, the subject matter of Examples 41-50 (excluding the present Example) can optionally include wherein the write fence flag is configured by the source logic for detection by the target to be a flag write descriptor having a header which has an attribute in the flag write descriptor, which header attribute indicates to the target that the flag write descriptor is a write fence flag.
In Example 44, the subject matter of Examples 41-50 (excluding the present Example) can optionally include wherein the data transfer accelerator of the source includes a direct memory access (DMA) controller wherein the source logic is implemented at least partially in the DMA controller.
In Example 45, the subject matter of Examples 41-50 (excluding the present Example) can optionally include wherein the source includes a central processing unit (CPU) and the DMA controller and the I/O port are integrated with CPU of the source.
In Example 46, the subject matter of Examples 41-50 (excluding the present Example) can optionally include being for use with a host, wherein the source logic is further configured to receive write requests from a host and to generate in response to said received write requests, said first plurality of write operations to write data in the target memory.
In Example 47, the subject matter of Examples 41-50 (excluding the present Example) can optionally include wherein a received write request includes an I/O commit flag, and wherein the wherein the source includes a direct memory access (DMA) controller implementing a least a portion of said source logic, said source logic implemented within the DMA controller having a detector configured to detect an I/O commit flag in a received write request, and a generator configured to generate said write fence flag in response to said I/O commit flag detection.
In Example 48, the subject matter of Examples 41-50 (excluding the present Example) can optionally include wherein the target has a write completion data structure which indicates completion of write operations to the memory of the target, and wherein the source logic of the source is further configured to issue to the I/O port after the write fence flag, a write completion data structure write operation to the write completion data structure to indicate completion of the first plurality of write instructions.
In Example 49, the subject matter of Examples 41-50 (excluding the present Example) can optionally include wherein the target has a write completion data structure which indicates completion of write operations to the memory of the target, and wherein said generator of said DMA controller is further configured to generate, in response to said I/O commit flag detection after said write fence flag generation, a write completion data structure write operation to the write completion data structure to indicate completion of the first plurality of write instructions.
In Example 50, the subject matter of Examples 41-50 (excluding the present Example) can optionally include wherein the source is a local node of a multi-processor storage controller and the target is a remote node of the multi-processor storage controller which is for use with a storage and a host, to perform I/O operations with the storage in response to I/O requests of the host.
Example 51 is a method of managing write operations, comprising:
source logic of a data transfer accelerator performing operations, the operations comprising:
issuing to an I/O port, a first plurality of write operations to write data in a target memory of a target, a write fence flag associated with the first plurality of write operations, and a second plurality of write operations to write data in the target memory;
wherein the write fence flag is configured by the source logic for detection by the target to ensure that the first plurality of write operations are completed by the target in the target memory prior to completion of any of the write operations of the second plurality of write operations.
In Example 52, the subject matter of Examples 51-55 (excluding the present Example) can optionally include wherein the write fence flag is configured by the source logic for detection by the target to be one of a flag write operation having a target address in the target which target address indicates to the target that the flag write operation is a write fence flag, and a flag write descriptor having a header which has an attribute in the flag write descriptor, which header attribute indicates to the target that the flag write descriptor is a write fence flag.
In Example 53, the subject matter of Examples 51-55 (excluding the present Example) can optionally include wherein the data transfer accelerator of the source includes a direct memory access (DMA) controller wherein the source logic is implemented at least partially in the DMA controller, and wherein the source includes a central processing unit (CPU) and the DMA controller and the I/O port are integrated with CPU of the source.
In Example 54, the subject matter of Examples 51-55 (excluding the present Example) can optionally include wherein the source is a local node of a multi-processor storage controller and the target is a remote node of the multi-processor storage controller which is for use with a storage and a host, wherein the operations further comprise performing I/O operations with the storage in response to I/O requests received from the host which include write requests received from the host, and generating in response to said received write requests from the host, said first plurality of write operations to write data in the target memory.
In Example 55, the subject matter of Examples 51-55 (excluding the present Example) can optionally include wherein a received write request from the host includes an I/O commit flag, and wherein the wherein the source includes a direct memory access (DMA) controller implementing a least a portion of said source logic, said source logic implemented within the DMA controller having a detector and a generator, wherein the operations further comprise detecting by the detector, an I/O commit flag in a received write request, and generating by the generator, said write fence flag in response to said I/O commit flag detection;
wherein the target has a write completion data structure which indicates completion of write operations to the memory of the target, and wherein the operations further comprise generating by the generator, after said write fence flag generation, a write completion data structure write operation to the write completion data structure, and issuing to the I/O port after the write fence flag, a write completion data structure write operation to the write completion data structure to indicate completion of the first plurality of write instructions.
Example 56 is directed to an apparatus comprising means to perform a method as described in any preceding Example.
The described operations may be implemented as a method, apparatus or computer program product using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The described operations may be implemented as computer program code maintained in a “computer readable storage medium”, where a processor may read and execute the code from the computer storage readable medium. The computer readable storage medium includes at least one of electronic circuitry, storage materials, inorganic materials, organic materials, biological materials, a casing, a housing, a coating, and hardware. A computer readable storage medium may comprise, but is not limited to, a magnetic storage medium (e.g., hard disk drives, floppy disks, tape, etc.), optical storage (CD-ROMs, DVDs, optical disks, etc.), volatile and non-volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, Flash Memory, firmware, programmable logic, etc.), Solid State Devices (SSD), etc. The code implementing the described operations may further be implemented in hardware logic implemented in a hardware device (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.). Still further, the code implementing the described operations may be implemented in “transmission signals”, where transmission signals may propagate through space or through a transmission media, such as an optical fiber, copper wire, etc. The transmission signals in which the code or logic is encoded may further comprise a wireless signal, satellite transmission, radio waves, infrared signals, Bluetooth, etc. The program code embedded on a computer readable storage medium may be transmitted as transmission signals from a transmitting station or computer to a receiving station or computer. A computer readable storage medium is not comprised solely of transmissions signals. Those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present description, and that the article of manufacture may comprise suitable information bearing medium known in the art. Of course, those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present description, and that the article of manufacture may comprise any tangible information bearing medium known in the art.
In certain applications, a device in accordance with the present description, may be embodied in a computer system including a video controller to render information to display on a monitor or other display coupled to the computer system, a device driver and a network controller, such as a computer system comprising a desktop, workstation, server, mainframe, laptop, handheld computer, etc. Alternatively, the device embodiments may be embodied in a computing device that does not include, for example, a video controller, such as a switch, router, etc., or does not include a network controller, for example.
The illustrated logic of figures may show certain events occurring in a certain order. In alternative embodiments, certain operations may be performed in a different order, modified or removed. Moreover, operations may be added to the above described logic and still conform to the described embodiments. Further, operations described herein may occur sequentially or certain operations may be processed in parallel. Yet further, operations may be performed by a single processing unit or by distributed processing units.
The foregoing description of various embodiments has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit to the precise form disclosed. Many modifications and variations are possible in light of the above teaching.
Number | Date | Country | |
---|---|---|---|
Parent | 14499063 | Sep 2014 | US |
Child | 14839805 | US |