A computing system with multiple computing devices may transfer data between the computing devices for various reasons. For example, a computing system with multiple computing devices may transfer data between the computing devices for data duplication or data mirroring. In such examples, data mirroring may be performed to assist in providing high availability and reliability for the computing system.
Non-limiting examples of the present disclosure are described in the following description, read with reference to the figures attached hereto and do not limit the scope of the claims. In the figures, identical and similar structures, elements or parts thereof that appear in more than one figure are generally labeled with the same or similar references in the figures in which they appear. Dimensions of components and features illustrated in the figures are chosen primarily for convenience and clarity of presentation and are not necessarily to scale. Referring to the attached figures:
In the following detailed description, reference is made to the accompanying drawings which form a part hereof, and in which is depicted by way of illustration specific examples in which the present disclosure may be practiced. It is to be understood that other examples may be utilized and structural or logical changes may be made without departing from the scope of the present disclosure.
As noted above, a computing system with multiple computing devices may transfer data between the computing devices for various reasons. For example, a computing system with multiple computing devices may transfer data between the computing devices for data duplication or data mirroring. In such examples, data mirroring may be performed to assist in providing high availability and reliability for the computing system. Such data transfers may include a request for acknowledgment from the receiving computing device and commitment to a memory accessible by a processor on the receiving computing device. In some examples, acknowledgment is requested for all data transfers and the computing device may send acknowledgment after the data has been committed to memory accessible by the processor. While waiting for such acknowledgement may improve reliability, it may also introduce latency into the data transfer process.
To address these issues, examples described herein may utilize computing circuitry to, upon full receipt of a series of data and an indication in an end of transfer (EOT) message that an acknowledgment is requested, return an acknowledgment to the sender of a series of data, even when the series of data is not yet committed to memory associated with a processing resource. Such examples may provide a quick and efficient method to acknowledge data transfers. Upon receipt of a request to commit data, the computing circuitry may commit the acknowledged and uncommitted series of data to a memory associated with a processing resource followed by an interrupt, the interrupt indicating to the processing resource that the acknowledged series of data has been committed to the memory associated with the processing resource. Such examples may provide the ability to cause the acknowledged data to be committed to the memory associated with the processing resource. Such examples may also limit requests to commit data to when computing device failure occurs, thus limiting commits to certain circumstances and allowing for an efficient computing system.
For example, a computing device may include computing circuitry. The computing circuitry may comprise logic executable to receive a series of data and an end of transfer (EOT) message. The EOT message may be associated with the series of data. The computing circuitry may determine whether the EOT message includes an indication that an acknowledgment is requested. In response to an indication that an acknowledgment is requested, the computing circuitry may send an acknowledgment to the sender of the series of data upon full receipt of the series of data. The computing circuitry may send the acknowledgment before the series of data is committed to a memory associated with a processing resource, the memory and processing resource being separate from the computing circuitry. The computing circuitry may comprise logic executable to receive a request to commit received data. In response to the request to commit data, the computing circuitry may commit any acknowledged and uncommitted data to the memory associated with the processing resource and then commit an interrupt to the memory. The interrupt indicating to the processing resource that the acknowledged series of data is committed to the memory.
As used herein, a “computing device” may be a storage array, storage device, storage enclosure, server, desktop or laptop computer, switch, router, computer cluster, node, partition, virtual machine, or any other device or equipment including a controller, a processing resource, or the like. In examples described herein, a “processing resource” may include, for example, one processor or multiple processors included in a single computing device or distributed across multiple computing devices. As used herein, a “processor” may be at least one of a central processing unit (CPU), a semiconductor-based microprocessor, a graphics processing unit (GPU), a field-programmable gate array (FPGA) to retrieve and execute instructions, other electronic circuitry suitable for the retrieval and execution instructions stored on a machine-readable storage medium, or a combination thereof.
In examples described herein, computing circuitry 110 may be any suitable hardware or combination of hardware and programming to send acknowledgments and commit data, as described herein. In some examples, a computing resource 102 may comprise computing circuitry 110. In examples described herein, a computing resource 102 may be a computing device 100 or a resource that may be included as a component of a computing device 100. For example, a computing resource 102 herein may comprise an application-specific integrated circuit (ASIC) that comprises computing circuitry 110. In other examples, the computing resource 102 may comprise a field-programmable gate array (FPGA) implementing computing circuitry 110. In other examples, the computing resource 102 may comprise any other suitable implementation of computing circuitry 110. In some examples, the functionalities described herein in relation to logic 111 may be implemented by one or more engines which may be any combination of hardware and programming to implement the functionalities of the engine(s).
In examples described herein, computing circuitry 110 may execute logic 111 to perform the functionalities described herein in relation to computing circuitry 110. In some examples, the logic 111 may be implemented in hardware (e.g., in circuitry of an ASIC). In such examples, the logic 111 may be executed by the hardware to perform the functionalities described herein in relation to computing circuitry 110. In such examples, computing circuitry 110 may include the logic 111 (e.g., the hardware to implement logic 111).
In other examples, computing circuitry 110 may be implemented in any suitable combination of hardware and programming (e.g., in circuitry of an ASIC). In examples described herein, such combinations of hardware and programming may be implemented in a number of different ways. For example, the programming for computing circuitry 110 may be processor executable instructions stored on at least one non-transitory machine-readable storage medium and the hardware for computing circuitry 110 may include processing resource(s) or other electronic circuitry to execute those instructions. In some examples, the hardware may also include other electronic circuitry to at least partially implement computing circuitry 110. In some examples, the at least one machine-readable storage medium may store instructions that, when executed by the at least one processing resource 191, at least partially implement some or all of logic 111. In such examples, a computing resource 102 implementing computing circuitry 110 may include the at least one machine-readable storage medium storing the instructions and the processing resource(s) or other electronic circuitry to execute the instructions. In some examples, computing circuitry 110 may comprise the hardware to execute logic 111, as described above, while logic 111 is stored separate from but accessible to the hardware of computing circuitry 110.
As used herein, a “machine-readable storage medium” may be any electronic, magnetic, optical, or other physical storage apparatus to contain or store information such as executable instructions, data, and the like. For example, any machine-readable storage medium described herein may be any of Random Access Memory (RAM), volatile memory, non-volatile memory, flash memory, a storage drive (e.g., a hard drive), a solid state drive, any type of storage disc (e.g., a compact disc, a DVD, etc.), and the like, or a combination thereof. Any machine-readable storage medium described herein may be non-transitory.
As used herein, “memory associated with a processing resource” may be memory that the processing resource is to utilize as main memory, such as, for example, volatile working memory that the processing resource is to use for data storage and retrieval during execution of instructions stored on and retrieved from the memory for execution. In some examples, the memory associated with the processing resource may be memory that is directly accessible to the processing resource. In some examples, the memory associated with the processing resource may be the volatile memory from which the processing resource directly retrieves and executes instructions of an operating system, program, application, or the like, that is currently being executed by the processing resource. In some examples, the memory associated with the processing resource may be the volatile memory from which any instructions executed by the processing resource are retrieved for execution (after a boot process). For example, the memory may be volatile memory, such as random-access memory (RAM). In some examples, the memory associated with the processing resource may be directly accessible to the processing resource and not directly accessible to any other processing resource. In some examples, the memory associated with the processing resource may be directly coupled to the processing resource and not directly coupled to any other processing resource. In some examples, the memory associated with the processing resource may comprise a cache on a CPU die on which the processing resource is implemented.
In the example of
In
In
In another example, the computing circuitry 110 may comprise logic executable to generate the request 182 to commit received data. In an example, the processing resource 191 may execute machine-readable instructions stored in a machine-readable storage medium. The executed machine-readable instructions may prompt the logic 111 of the computing circuitry 110 to generate the request 182 to commit. In another example, the executed machine-readable instructions may prompt the logic to generate the request 182 to commit data at any time. In another example, the computing circuitry 110 may comprise logic executable to determine that the sender 150 of the series of data 170 failed. In response to the senders 150 failure, the logic 111 may disable the logic 120 and then generate a request 182 to commit the data. In an example, when executing logic to disable logic 120, the computing device 100 may not receive data from a sender 150. In response to the request 182 to commit data, the computing circuitry 110 may process the request 182 to commit the data, as described above. The computing circuitry 110 may first send an acknowledgment 180 for the most recent series of data 170 received, up to the point that the request 182 to commit data is received. In an example, the computing circuitry 110 may not commit data received after the point in time the request 182 to commit data is received.
As described above, a series of data 170 is sent from a sender 150 and the computing device 100 receives the series of data 170. In an example, the sender 150 may send mirrored data. In another example, each series of data is sent in a sequential order. In another example, the series of data is a series of peripheral computer interconnect express (PCIe) transaction layer packets (TLPs). The sender 150 may break the data into the series of data (e.g. a series of PCIe TLPs).
As described above, the logic 135 may commit an interrupt 190 to memory 192. In an example, the logic 135 may select the interrupt 190 from an interrupt table based on the request 182 to commit data. The computing circuitry 110 may include the interrupt table. In another example, the interrupt 190 is a message system interrupt-x (MSI-X) and the interrupt table is a MSI-X vector table. In response to the request 182 to commit data, the logic 135 commits a specific interrupt 190 from the interrupt table, as described above.
In another example, the EOT message 160 may contain other parameters or data. In an example, the predefined bits in the EOT message 160 may include a pointer to a control block queue in the sender 150. The sender 150 may include the pointer of a current XOR control block that the sender 150 is processing. The XOR control block may point to the series of data 170 in the senders 150 memory. Upon receiving an acknowledgment 180, the sender 150 may store the pointer that the acknowledgment 180 returns. The sender 150 may continue to process XOR control blocks regardless of whether the sender 150 receives an acknowledgment 180. In response to a prompt, the sender 150 may transfer the stored pointer or pointers to the senders 150 memory. The pointer or pointers may indicate to the sender 150 that a series of sent data (as well as the data sent before that series of data) is acknowledged.
In
In
In
In the example of
At block 430, the computing circuitry 110 may determine that the EOT message 190 indicates a request for acknowledgment 162. The EOT message 190 may indicate a request for acknowledgment 162 with a predefined bit or series of bits. While one series of data 170 is represented in
At block 440, in response to a determination that the EOT message 190 indicates a request for acknowledgment 162, the computing circuitry 110 sends an acknowledgment 180 to the sender 150 upon full reception of the series of data 170. The computing circuitry 110 may determine that the series of data 170 is fully received upon reception of the EOT message 190. In another example, the computing circuitry 110 may include a buffer and full reception of the series of data 170 may be indicated when the buffer receives the full series of data 170. In another example, the computing circuitry 110 may send an acknowledgment 180 regardless of whether the EOT message 190 indicates a request for acknowledgment 180.
At block 450, the computing circuitry 110 may generate a request to commit data. In an example, the computing circuitry 110 may generate the request to commit data upon failure of sender 150. In another example, the computing circuitry 110 may generate the request at any time. At block 460, in response to the generation of a request to commit data, the computing circuitry 110 may write the acknowledged series of data 170 to memory 192, the memory 192 associated with the processing resource 191 and the memory 192 and processing resource 191 separate from the computing circuitry 110. In an example, the computing circuitry 110 may write the acknowledged series of data 170 in the same sequential order in which the series of data was received 170.
At block 470, the computing circuitry 110 may write an interrupt 190 to the memory 192. In an example, the computing circuitry 110 may write the interrupt 190 to the memory 192 immediately following the computing circuitry 110 writing the acknowledged series of data 170 to the memory 192.
Although the flow diagram of
The present disclosure has been described using non-limiting detailed descriptions of examples thereof and is not intended to limit the scope of the present disclosure. It should be understood that features and/or operations described with respect to one example may be used with other examples and that not all examples of the present disclosure have all of the features and/or operations illustrated in a particular figure or described with respect to one of the examples. Variations of examples described will occur to persons of the art. Furthermore, the terms “comprise,” “include,” “have” and their conjugates, shall mean, when used in the present disclosure and/or claims, “including but not necessarily limited to.”
It is noted that some of the above described examples may include structure, acts or details of structures and acts that may not be essential to the present disclosure and are intended to be examples. Structure and acts described herein are replaceable by equivalents, which perform the same function, even if the structure or acts are different, as known in the art. Therefore, the scope of the present disclosure is limited only by the elements and limitations as used in the claims