System and method for providing in-storage acceleration (isa) in data storage devices
US-2019107956-A1 · Apr 11, 2019 · US
US12265862B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-12265862-B2 |
| Application number | US-202117552276-A |
| Country | US |
| Kind code | B2 |
| Filing date | Dec 15, 2021 |
| Priority date | Dec 21, 2018 |
| Publication date | Apr 1, 2025 |
| Grant date | Apr 1, 2025 |
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.
A system includes a host device; a storage device including an embedded processor; and a bridge kernel device including a bridge kernel hardware and a bridge kernel firmware, wherein the bridge kernel device is configured to receive a plurality of arguments from the host device and transfer the plurality of arguments to the embedded processor for data processing.
Opening claim text (preview).
What is claimed is: 1. A system comprising: a host device; and a storage device comprising: a processor; a dynamic random-access memory (DRAM), the DRAM comprising one or more data buffers and a handshake region to store arguments received from the host device; and a bridge device, the bridge device being configured to: fetch arguments from a host register interface of the host device; initiate execution, at the processor, of a kernel at the processor based on the arguments, the kernel being selected from a plurality of kernels available in the processor based on determining that a performance metric of the kernel satisfies a threshold and based on a cost function determined based on the arguments and storage or networking parameters received from the host device; transfer the arguments received from the host device to the kernel for data processing; fetch new arguments in the handshake region of the DRAM; and call the kernel in the processor with the new arguments for data processing, wherein the kernel is configured to return the call to the bridge device based on completion of the data processing; and wherein a done flag is polled in the DRAM based on the completion of the data processing. 2. The system of claim 1 , wherein: the kernel of the bridge device comprises hardware kernels and firmware kernels configured to run on the processor; an implementation of the bridge device is transparent to the host device; the bridge device is agnostic to a transport mechanism between the host device and the bridge device; and the transport mechanism is one of a peripheral component interconnect express (PCle) or an Ethernet connection. 3. The system of claim 2 , wherein the storage device is a solid state drive (SSD), and the processor is a field programmable gate array (FPGA) processor or a SSD controller or a discrete co-processor, wherein: the processor further comprises the firmware kernels of the bridge device. 4. The system of claim 3 , wherein the storage device further comprises a first in, first out (FIFO) register, wherein the FIFO register and the DRAM are communicatively coupled to the hardware kernels of the bridge device. 5. The system of claim 4 , wherein the FIFO register is configured to pass the arguments to the processor incorporating the kernels for data processing. 6. The system of claim 4 , wherein the hardware kernels of the bridge device are configured to store the arguments received from the host device into the handshake region of the DRAM. 7. The system of claim 4 , wherein the bridge device is configured to act as a proxy to host applications running on a customer applications module of the host device, wherein the host applications are agnostic to a location and a method of implementation of the kernels. 8. The system of claim 4 , wherein the host device comprises a customer applications module and a computing module, and wherein the host device is configured to establish the PCIe or the Ethernet connection with the storage device. 9. The system of claim 8 , wherein host applications running on the customer applications module of the host device are configured to interface with the firmware kernels and/or the hardware kernels through the computing module. 10. The system of claim 9 , wherein the bridge device is configured to select one or more kernels from among the hardware kernels and the firmware kernels for data processing based on cost functions determined based on the arguments and the storage or networking parameters received from the host device. 11. The system of claim 10 , wherein the storage or networking parameters received from the host device comprise at least one of a Submission Queue Identifier (SQID), a Completion Queue Identifier (CQID), a Stream ID, a host ID, a Logical Block Address (LBA) range, a Network Service ID (NSID), a Media Access Control (MAC) ID, Transmission Control Protocol (TCP)/Internet Protocol (IP) fields, an application type, an application identifier, or a time and a date associated with the host device. 12. The system of claim 11 , wherein the bridge device is configured to select the one or more kernels for data processing using the FIFO register. 13. The system of claim 12 , wherein the firmware kernels of the bridge device are configured to fetch the arguments in the handshake region of the DRAM and call the kernels with the arguments received from the host device. 14. The system of claim 13 , wherein the kernels are configured to use the arguments for data processing. 15. A method comprising: fetching from a host register interface of a host device connected to a storage device, by a bridge device of the storage device, arguments received from the host device in response to receiving a trigger from the host device; setting, by the bridge device, a ready flag in a dynamic random-access memory (DRAM) of the storage device; polling, by the bridge device, a done flag in the DRAM, based on the bridge device determining that processing of a kernel in a processor of the storage device based on the arguments is completed, the kernel being selected from a plurality of kernels available in the processor based on determining that a performance metric of the kernel satisfies a threshold and based on a cost function determined based on the arguments and storage or networking parameters received from the host device; setting, by the bridge device, a ready flag in the host register interface; reading, by the bridge device, error or status from the DRAM based on detecting the done flag in the DRAM; and updating, by the bridge device, an error or a status into the host register interface. 16. The method of claim 15 , further comprising: storing, by the bridge device, the arguments in a handshake region of the DRAM, wherein the ready flag is set in the handshake region of the DRAM; and wherein the done flag is polled in the handshake region of the DRAM. 17. The method of claim 16 , further comprising: polling, by firmware of the bridge device, the ready flag in the DRAM, wherein the bridge device is configured to select the kernel from among the plurality of kernels further based on cost functions of two or more kernels determined based on the arguments received from the host device, fetching, by the firmware of the bridge device, new arguments in the handshake region of the DRAM; calling, by the firmware of the bridge device, the kernel in the processor of the storage device with the new arguments for data processing; returning the call, by the kernel, to the firmware of the bridge device based on completion of the data processing; and setting, by the firmware of the bridge device, the done flag in the handshake region of the DRAM. 18. A system comprising a storage device comprising: a processor; a dynamic random-access memory (DRAM), the DRAM comprising one or more data buffers and a handshake region to store arguments received from a host device connected to the storage device; and a bridge device configured to: 2024 receive one or more arguments from the host device; initiate execution, at the processor, of a kernel at the processor based on the arguments, the kernel being selected from a plurality of kernels available in the processor based on determining that a performance metric of the kernel satisfies a threshold and based on a cost function determined based on the arguments and storage or networking parameters received from the host device; transfer the arguments received from the host device to the kernel for data processing; fetch new arguments in the hands
Task transfer initiation or dispatching · CPC title
Register stacks; shift registers · CPC title
Instruction prefetching · CPC title
Unloading · CPC title
PCI express · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.