Memory extension system and method
US-9811497-B2 · Nov 7, 2017 · US
US11079958B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-11079958-B2 |
| Application number | US-201916383490-A |
| Country | US |
| Kind code | B2 |
| Filing date | Apr 12, 2019 |
| Priority date | Apr 12, 2019 |
| Publication date | Aug 3, 2021 |
| Grant date | Aug 3, 2021 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Provided are an apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator. The hardware accelerator includes a memory space and control logic to receive, from a host processor, a command descriptor indicating at least one source storage device having transfer data to transfer to at least one destination storage device and a computational task to perform on the transfer data. The control logic sends read commands to the at least one source storage device to read the transfer data to at least one read buffer in the memory space and performs the computational task on the transfer data to produce modified transfer data. The control logic writes the modified transfer data to at least one write buffer in the memory space to cause the modified transfer data to be written to the at least one destination storage device.
Opening claim text (preview).
What is claimed: 1. An apparatus comprising a hardware accelerator connected to a host processor and a plurality of storage devices having storage device controllers, wherein the hardware accelerator comprises: a memory space including read buffers and write buffers for the storage devices, wherein the hardware accelerator is implemented in hardware separate from the storage devices and the storage device controllers of the storage devices; and control logic to: receive, from the host processor, a command descriptor indicating a source storage device having transfer data to transfer to a destination storage device, an operation code indicating a type of data transfer to be performed between the source storage device and the destination storage device, and a computational task to perform on the transfer data; send read commands to the source storage device to read the transfer data to at least one read buffer in the memory space; perform the computational task on the transfer data in the at least one read buffer to process the transfer data and transform to produce modified transfer data; and write the modified transfer data to at least one write buffer in the memory space to cause the modified transfer data to be written to the destination storage device. 2. The apparatus of claim 1 , wherein the command descriptor includes a pointer to information on addresses of the transfer data in the at least one of the source and destination storage devices in a host memory space of the host processor. 3. The apparatus of claim 1 , wherein the command descriptor includes a source pointer to source information in a host memory space of the host processor indicating the transfer data in a plurality of source storage devices and a destination pointer to destination information in the host memory space having locations in a plurality of destination storage devices to which the transfer data is transferred. 4. The apparatus of claim 3 , wherein the source information includes a plurality of source entries for a plurality of source storage devices, wherein each source entry indicates an address range of a source storage device of the plurality of source storage devices having a portion of the transfer data, wherein the destination information includes a plurality of destination entries for a plurality of destination storage devices, corresponding to the source entries, wherein each destination entry indicates destination addresses in a destination storage device of the plurality of destination storage devices to which the portion of the transfer data indicated in a corresponding source entry is transferred. 5. The apparatus of claim 4 , wherein each of the source entries further includes a source queue doorbell address in one of the source storage devices and wherein each of the destination entries includes a destination queue doorbell address in one of the destination storage devices, wherein the control logic is further to: write to a source queue doorbell address indicated in a selected source entry of the source information to cause the source storage device having the source queue doorbell address to transfer a portion of the transfer data indicated in the address range of the selected source entry; and write to a destination queue doorbell address indicated in a selected destination entry of the destination information to cause a destination storage device having the destination queue doorbell address to write the portion of the transfer data to the address range of the destination storage device indicated in the selected destination entry. 6. The apparatus of claim 1 , wherein the control logic is further to receive configuration commands from the host processor to extend the memory space of the host processor, wherein the read and the write buffers are configured in mapped addresses in the memory space, and wherein the mapped addresses in the memory space extend a host memory space. 7. The apparatus of claim 1 , wherein the control logic is further to receive, from the host processor, configuration commands to cause the control logic to: configure read and write buffers in the memory space; and configure submission queues in the memory space, wherein the control logic adds the read commands to the submission queues to cause source storage devices to transfer data to the read buffers and adds write commands to submission queues for the transfer data in the write buffers to cause destination storage devices to write the transfer data in the write buffers to the destination storage devices. 8. The apparatus of claim 7 , wherein the configuration commands are further to cause the control logic to: configure queue doorbell addresses in the memory space that point to addresses in the storage devices, wherein writing to one of the queue doorbell addresses for one of the storage devices causes that storage device to access a read or write request included in a submission queue for the storage device. 9. The apparatus of claim 1 , wherein the control logic is further to: receive, from the host processor, mapped memory addresses in the storage devices, wherein in response to receiving the mapped memory addresses, the control logic is to: configure the read and the write buffers in the memory space; and configure submission and completion queues for the storage devices in the mapped memory addresses in the storage devices, wherein the control logic adds the read commands to at least one submission queue for the source storage device to read the transfer data and adds write commands to at least one submission queue for the destination storage device to transfer the modified transfer data in at least one write buffer to the destination storage device in response to complete returned in at least one of the completion queues to the read commands added to the at least one submission queue. 10. The apparatus of claim 1 , further comprising programmable hardware logic coupled to a bus interface further coupled to the host processor and the storage devices. 11. A system connected to a host processor and a plurality of storage devices having storage device controllers, comprising: a plurality of hardware accelerators configured to operate as a single systolic array to manage read and write operations with respect to a group of the storage devices, wherein the hardware accelerators operate in parallel or serial with respect to the group of the storage devices, and wherein the hardware accelerator is implemented in hardware separate from the storage devices and the storage device controllers of the storage devices, wherein each of the hardware accelerators configured in the single systolic array comprise: a memory space including read buffers and write buffers for the storage devices; and control logic to: receive, from the host processor, a command descriptor indicating a source storage device of the group of the storage devices having transfer data to transfer to a destination storage device of the group of the storage devices, an operation code indicating a type of data transfer to be performed between the source storage device and the destination storage device, and a computational task to perform on the transfer data; send read commands to the source storage device to read the transfer data to at least one read buffer in the memory space; perform the computational task on the transfer data in the at least one read buffer to process the transfer data and transform to produce modified transfer data; and write the modified transfer data to at least one write buffer in the memory space to cause the modified transfer data to be written to the destination storage device. 12. The system of cla
Single storage device · CPC title
Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems · CPC title
Improving or facilitating administration, e.g. storage management · CPC title
Data buffering arrangements · CPC title
Plurality of storage devices · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.