System and method for offloading application functions to a device

US12265862B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-12265862-B2
Application numberUS-202117552276-A
CountryUS
Kind codeB2
Filing dateDec 15, 2021
Priority dateDec 21, 2018
Publication dateApr 1, 2025
Grant dateApr 1, 2025

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

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.

First claim

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

Assignees

Inventors

Classifications

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US12265862B2 cover?
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.
Who is the assignee on this patent?
Samsung Electronics Co Ltd
What technology area does this patent fall under?
Primary CPC classification G06F9/44594. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Apr 01 2025 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 12 related publications on this page (citations in our corpus or others sharing the same primary CPC).