Computational Storage Data Transfer for Program Execution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Computational storage devices face challenges in executing applications when data required for execution is distributed across multiple devices, as the first device may not have access to the necessary data stored on other devices, leading to incomplete or failed program execution.

Innovation Solution

A storage system comprising multiple computational storage devices and a host device that offloads programs, transfers data between non-volatile memory and local/shared memory spaces, allowing execution of programs using data from multiple devices, including data transferred between devices via a shared memory space.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If data is distributed and stored in multiple computational storage devices, then data storage capacity and distribution are improved, but data accessibility and program execution completeness deteriorate when the executing device lacks access to required data

Engineering Contradiction:
Improvedata storage capacityVSAvoidprogram execution completeness
Core Design Contradiction:
Quantity of substanceVSReliability

Solution Approach 1:

The patent merges data from multiple computational storage devices into a unified execution environment. When a program requires data from multiple devices, the system automatically retrieves the necessary data from source devices and consolidates it at the executing device, ensuring all required data is available for complete program execution while maintaining the distributed storage architecture.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent introduces a mediator mechanism (the computational storage device executing the program) that facilitates data transfer between distributed storage devices. This mediator coordinates data retrieval from multiple source devices and ensures proper data delivery to the execution environment, enabling reliable program execution across distributed storage without requiring direct peer-to-peer communication between all devices.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If data is transferred between computational storage devices, then data availability for program execution is improved, but system complexity and data movement overhead increase

Engineering Contradiction:
Improvedata availabilityVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent implements self-service mechanisms where computational storage devices autonomously determine and execute data transfer operations. When a program is offloaded to a device that doesn't possess all required data, the executing device automatically identifies missing data, retrieves it from appropriate source devices, and completes the execution without external intervention, reducing the need for complex centralized coordination.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent performs preliminary actions by pre-fetching and caching data that may be needed for program execution. The system anticipates data requirements and proactively transfers data between devices before execution is critically needed, reducing runtime data movement overhead and simplifying the execution process by ensuring data is already available when required.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS20240220150A1Computational storage devices, storage systems including the same, and operating methods thereof
Publication Date: 2024.07.04 SAMSUNG ELECTRONICS CO LTD
  • US20240220150A1 patent drawing
  • US20240220150A1 patent drawing
  • US20240220150A1 patent drawing

AI summary

In a storage system, a first computational storage device may be configured to store first data used to execute a program, and a second computational storage device may be configured to store second data used to execute the program. The second computational storage device may be configured to receive the program offloaded from the host device, bring the first data from the first computational storage device, and execute the program using a plurality of data including the first data and the second data.