Computational Storage Data Streaming via Buffer Abstraction
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Data-intensive computing applications face a performance bottleneck due to the movement of data between storage devices and host compute resources, as traditional storage devices have limited processing capabilities and memory, restricting the size of data that can be processed by computational storage programs.
Innovation Solution
A data streaming environment is implemented using a buffer abstraction layer and streaming drivers within a computational storage device, allowing computational storage programs to process arbitrarily large amounts of data by managing data pipelines and memory operations, decoupling the program from underlying data transfers and memory limitations.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Quantity of substance
If traditional storage devices are used with limited processing capabilities and memory, then device complexity is reduced, but data processing capacity is restricted
Solution Approach 1:
The system segments data processing into two distinct phases: data transfer (handled by the storage device) and computational processing (handled by the host system). The computational storage program facilitates this segmentation by managing data streams between storage and computation domains, allowing each component to operate within its optimal capabilities without requiring the storage device to perform complex processing functions.
Solution Approach 2:
The computational storage program acts as an intermediary layer between the storage device and the host compute resource. It manages the data transfer process, coordinates between storage and computation domains, and enables efficient data streaming without requiring the storage device to have complex processing capabilities or large memory capacity.
2Productivity
If data is transferred between storage devices and host compute resources, then computational processing is enabled, but performance bottleneck occurs
Solution Approach 1:
The system enables continuous data streaming from storage to host compute resources through the computational storage program. Data is transferred continuously in streams rather than in discrete batches, maintaining productive action throughout the data movement process. This continuous streaming approach minimizes idle time and ensures that computational resources are continuously fed with data without interruption.
Solution Approach 2:
The computational storage program extracts the data transfer management function from the traditional storage device and relocates it to the host system. By taking out the complexity of data transfer coordination from the storage device, the system enables more efficient data movement and reduces the bottleneck that previously limited processing speed.
3Quantity of substance
If computational storage programs process large amounts of data, then data processing capacity increases, but memory requirements increase
Solution Approach 1:
The system extracts the large data volume handling from the storage device's onboard memory by implementing streaming architecture. Data is processed in continuous streams directly from storage without requiring large amounts of onboard memory to hold the entire dataset. This extraction of memory requirements from the storage device enables processing of arbitrarily large data volumes.
Solution Approach 2:
The system transitions from static memory-based processing to dynamic streaming processing. Instead of loading all data into memory at once, the computational storage program dynamically streams data in continuous flows, processing only the necessary portions at any given time. This dynamic approach eliminates the need for large onboard memory capacity while maintaining high data processing capacity.
Data Source
AI summary
Methods, apparatuses, and computer-readable media for streaming arbitrarily large amounts of data through computational storage programs of a computational storage device. A computational storage device comprises a storage media, a computational storage processor, and a controller. A firmware of the controller comprises a plurality of streaming drivers, each associated with a data source or data destination of the storage device. The firmware further comprises a buffer abstraction layer operable to read data from a data source through an associated ingress streaming driver of the plurality of streaming drivers to provide a source data stream for a computational storage program executing on the computational storage processor. The buffer abstraction layer is further operable to receive a destination data stream from the computational storage program and write data to a data destination through an associated egress streaming driver of the plurality of streaming drivers.


