US-12619383-B2 - Inline computational storage
Abstract
A computational storage unit is disclosed. The computational storage unit may include a storage for a data and a controller to read the data from the storage. The computational storage unit may also include a computational engine to implement a function to process the data and generate a result. The computational storage unit may receive a command from a host processor and read the data from the storage, execute the function to process the data and generate the result, and return the result to the host processor based at least in part on the command.
Inventors
- Jonghyeon Kim
- Soogil Jeong
Assignees
- SAMSUNG ELECTRONICS CO., LTD.
Dates
- Publication Date
- 20260505
- Application Date
- 20231117
Claims (18)
- 1 . A computational storage unit, comprising: a storage for a data; a controller to read the data from the storage; and a computational engine to implement a function to process the data and generate a result, wherein the computational storage unit is configured to receive a single command from a host processor and to serially read the data from the storage, execute the function to process the data and generate the result, and return the result to the host processor based at least in part on the single command, wherein the single command includes an address for the data, a size for the data, an identifier of the function, and a return address where the result is to be stored to return the result to the host processor.
- 2 . The computational storage unit according to claim 1 , wherein: the controller is configured to read the data from the storage and deliver the data to the computational engine; and the computational engine is configured to execute the function to process the data, generate the result, and return the result to the host processor.
- 3 . The computational storage unit according to claim 2 , wherein: the computational engine includes a buffer; the single command further includes a second identifier of the buffer; and the controller is further configured to read the data from the storage and store the data in the buffer of the computational engine.
- 4 . The computational storage unit according to claim 1 , wherein the single command includes a location in the storage where the data is stored.
- 5 . The computational storage unit according to claim 1 , wherein the single command includes a location to store the result.
- 6 . The computational storage unit according to claim 1 , wherein the computational engine includes a program slot for a downloaded function.
- 7 . The computational storage unit according to claim 1 , wherein: the data includes a first part and a second part; the controller is configured to read the first part of the data and deliver the first part of the data to the computational engine; the computational engine is configured to execute the function on the first part of the data, generate a first part of the result, and return the first part of the result to the host processor; the controller is further configured to read the second part of the data and deliver the second part of the data to the computational engine based at least in part on the computational engine executing the function on the first part of the data; and the computational engine is configured to serially execute the function on the second part of the data, generate a second part of the result, and return the second part of the result to the host processor.
- 8 . A method, comprising: receiving a single command from a host processor at a computational storage unit; reading a data from a storage of the computational storage unit based at least in part on the single command; executing a function on the data by a computational engine of the computational storage unit based at least in part on the single command; and returning a result to the host processor based at least in part on the single command, wherein the single command includes an address for the data, a size for the data, an identifier of the function, and a return address where the result is to be stored to return the result to the host processor.
- 9 . The method according to claim 8 , wherein reading the data from the storage of the computational storage unit based at least in part on the single command includes storing the data in a buffer of the computational engine of the computational storage unit based at least in part on the single command.
- 10 . The method according to claim 8 , wherein executing the function on the data by the computational engine of the computational storage unit based at least in part on the single command includes executing the function identified by the identifier of the function on the data by the computational engine of the computational storage unit based at least in part on the single command.
- 11 . The method according to claim 8 , wherein: the single command includes a location to store the result; and returning the result to the host processor based at least in part on the single command includes storing the result in the location by the computational engine of the computational storage unit based at least in part on the single command.
- 12 . The method according to claim 8 , further comprising downloading a downloaded function to the computational engine of the computational storage unit.
- 13 . The method according to claim 8 , wherein reading the data from the storage of the computational storage unit based at least in part on the single command includes reading the data from the storage of the computational storage unit by a controller of the computational storage unit based at least in part on the single command.
- 14 . The method according to claim 13 , wherein: the data includes a first part and a second part; reading the data from the storage of the computational storage unit by the controller of the computational storage unit based at least in part on the single command includes; reading the first part of the data from the storage of the computational storage unit by the controller of the computational storage unit based at least in part on the single command; and reading the second part of the data from the storage of the computational storage unit by the controller of the computational storage unit based at least in part on the single command based at least in part on executing the function on the first part of the data by the computational engine of the computational storage unit; executing the function on the data by the computational engine of the computational storage unit based at least in part on the single command includes: serially executing the function on the first part of the data by the computational engine of the computational storage unit based at least in part on the single command; and; serially executing the function on the second part of the data by the computational engine of the computational storage unit based at least in part on the single command; returning the result to the host processor based at least in part on the single command includes: returning a first part of the result to the host processor based at least in part on the single command; and returning a second part of the result to the host processor based at least in part on the single command.
- 15 . The method according to claim 8 , wherein: the single command further includes a second identifier of the buffer; reading the data from the storage of the computational storage unit based at least in part on the single command includes storing the data in the buffer identified by the second identifier; and executing the function on the data by the computational engine of the computational storage unit based at least in part on the single command includes executing the function on the data in the buffer identified by the second identifier by the computational engine of the computational storage unit based at least in part on the single command.
- 16 . An article, comprising a non-transitory storage medium, the non-transitory storage medium having stored thereon instructions that, when executed by a machine, result in: receiving a single command from a host processor at a computational storage unit; reading a data from a storage of the computational storage unit based at least in part on the single command; executing a function on the data by a computational engine of the computational storage unit based at least in part on the single command; and returning a result to the host processor based at least in part on the single command, wherein the single command includes an address for the data, a size for the data, an identifier of the function, and a return address where the result is to be stored to return the result to the host processor.
- 17 . The article according to claim 16 , wherein reading the data from the storage of the computational storage unit based at least in part on the single command includes storing the data in a buffer of the computational engine of the computational storage unit based at least in part on the single command.
- 18 . The article according to claim 16 , the non-transitory storage medium having stored thereon further instructions that, when executed by the machine, result in downloading a downloaded function to the computational engine of the computational storage unit.
Description
RELATED APPLICATION DATA This application claims the benefit of U.S. Provisional Patent Application Ser. No. 63/532,669, filed Aug. 14, 2023, which is incorporated by reference herein for all purposes. FIELD The disclosure relates generally to storage devices, and more particularly to processing of data using a storage device. BACKGROUND With the increase in capacity offered by storage devices, applications may process more and more data. Transferring large amounts of data from the storage device to main memory for an application to process may require significant amounts of time. In addition, having the host processor execute the commands to process that data may impose a burden on the host processor. A need remains to support processing data without burdening the host processor. BRIEF DESCRIPTION OF THE DRAWINGS The drawings described below are examples of how embodiments of the disclosure may be implemented, and are not intended to limit embodiments of the disclosure. Individual embodiments of the disclosure may include elements not shown in particular figures and/or may omit elements shown in particular figures. The drawings are intended to provide illustration and may not be to scale. FIG. 1 shows a machine including a computational storage unit to process data using a function, according to embodiments of the disclosure. FIG. 2 shows details of the machine of FIG. 1, according to embodiments of the disclosure. FIG. 3A shows a first example arrangement of the computational storage unit of FIG. 1 that may be associated with the storage device of FIG. 1, according to embodiments of the disclosure. FIG. 3B shows a second example arrangement of the computational storage unit of FIG. 1 that may be associated with the storage device of FIG. 1, according to embodiments of the disclosure. FIG. 3C shows a third example arrangement of the computational storage unit of FIG. 1 that may be associated with the storage device of FIG. 1, according to embodiments of the disclosure. FIG. 3D shows a fourth example arrangement of the computational storage unit of FIG. 1 that may be associated with the storage device of FIG. 1, according to embodiments of the disclosure. FIG. 4 shows details of the storage device of FIG. 1, according to embodiments of the disclosure. FIG. 5 shows the host processor of FIG. 1 and the computational storage unit of FIG. 1 communicating across the fabric of FIG. 1 to execute a function on data, according to embodiments of the disclosure. FIG. 6 shows details of commands and a result that may be exchanged between the host processor of FIG. 1 and the computational storage unit of FIG. 1, according to embodiments of the disclosure. FIG. 7 shows the data broken into parts that may fit in the buffer of FIG. 5, according to embodiments of the disclosure. FIG. 8 shows the result of FIG. 6 broken into parts that may fit in the buffer of FIG. 5, according to embodiments of the disclosure. FIG. 9 shows a flowchart of an example procedure for the computational storage unit of FIG. 1 to receive the command of FIG. 6 from the host processor of FIG. 1 and process data, according to embodiments of the disclosure. FIG. 10 shows a flowchart of an example procedure for the computational storage unit of FIG. 1 to read parts of the data and store the parts in the buffer of FIG. 5, according to embodiments of the disclosure. FIG. 11 shows a flowchart of an example procedure for the computational storage unit of FIG. 1 to store a result of the data processing, according to embodiments of the disclosure. FIG. 12 shows a flowchart of an example procedure for the computational storage unit of FIG. 1 to execute a function on parts of the data of FIG. 7 and return parts of the result of FIG. 6 to the host processor of FIG. 1, according to embodiments of the disclosure. FIG. 13 shows a flowchart of an example procedure for the computational storage unit of FIG. 1 to download a function from the host processor of FIG. 1, according to embodiments of the disclosure. SUMMARY A computational storage unit may include storage, a controller, and a computational engine. The computational storage unit may receive a command from a host processor and read data from the storage, execute a function on the data using the computational engine, and return a result to the host processor. DETAILED DESCRIPTION Reference will now be made in detail to embodiments of the disclosure, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific details are set forth to enable a thorough understanding of the disclosure. It should be understood, however, that persons having ordinary skill in the art may practice the disclosure without these specific details. In other instances, well-known methods, procedures, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure aspects of the embodiments. It will be understood that, although the terms fir