1. Introduction

    In today’s data-driven world, the efficient processing and management of vast volumes of information is critical for maintaining high performance and responsiveness in computing systems. Traditional storage architectures, which rely on transferring data between storage devices and central processing units (CPU) for processing, often encounter performance bottlenecks and inefficiencies.

    To address these challenges, computational storage leverages embedded processing units within storage devices to perform data processing tasks in-situ, thereby reducing the need for data movement between storage and CPU. This significantly enhances the overall system performance by reducing latency and improving bandwidth efficiency.

    At the forefront of this innovation are computational storage devices (CSD), which embody the principles of computational storage through the incorporation of embedded processors such as CPUs, FPGAs, or ASICs. These devices are designed to execute a range of computational tasks—including data filtering, encryption, compression, and analytics—directly within the storage infrastructure. By supporting specialized command sets and integrating computational resources within the storage subsystem, CSDs offer a scalable and efficient solution to the growing demands of modern data processing applications.

    Features of CSDs

    Subsystem Local Memory

    Subsystem local memory (SLM) is a host accessible memory region within an NVM Express® (NVMe) subsystem that consists of multiple memory namespaces. It finds its use in acting as a dedicated memory for compute namespaces within the same reachability association, allowing for efficient data handling and processing directly within the storage subsystem. It is byte-addressable, which allows for precise and efficient access to data, making it useful for computational tasks requiring fine-grained data manipulation.

    The SLM command set facilitates various operations on this memory, including memory read, write, fill, and copy, allowing it to interact with other namespaces in the subsystem (NVM, KV, ZNS).

    Programs

    These are self-contained code units designed to perform specific tasks on data stored in the storage device. There are two main types of computational programs:

    • Downloadable Programs: These are user-defined programs uploaded by the host to the storage device for specific tasks.
    • Device-Defined Programs: These are pre-installed by the manufacturer and typically optimized for a device’s architecture. A common example is an encryption program built into a storage device.
  2. Download Paper