Parity Offload for NVMe Storage Devices

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current non-volatile memory systems face performance bottlenecks due to the need for parity computations being performed on hosts or intermediate CPU systems, which slows down high-performance writes in storage systems like solid state drives.

Innovation Solution

Offloading parity computations to non-volatile memory-based data storage systems, such as flash memory-based solid state drives, by identifying a Redundancy Coding stripe and designating a specific data storage device to compute and store parity information, thereby shifting the computational burden from hosts or CPUs to the storage devices.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If parity computations are performed on hosts or intermediate CPU systems, then data integrity can be ensured, but system throughput and write performance deteriorate due to computational bottlenecks

Engineering Contradiction:
Improvedata integrityVSAvoidwrite throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent extracts the parity computation function from the host CPU system and relocates it to the storage device's embedded controller. This separation removes the computational bottleneck from the host system, allowing write operations to proceed at full speed while the storage device independently computes and stores parity information for data integrity.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The storage device is empowered to perform its own parity computations internally without requiring host CPU intervention. The embedded controller within the storage device self-manages the parity calculation and storage operations, making the system self-sufficient for error correction while maintaining high write throughput.

Inventive Principle:
Principle #25Self-service

2Productivity

If parity computations are offloaded to storage devices, then write throughput is improved, but device complexity increases due to additional computational requirements

Engineering Contradiction:
Improvewrite throughputVSAvoidcontroller complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The storage device's embedded controller is designed to perform multiple functions: data reception, parity computation, parity storage, and data integrity verification. By making the controller multi-functional, the patent avoids adding separate dedicated hardware for each function, thereby limiting the increase in overall device complexity while achieving high write throughput.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Reliability

If multiple data storage devices are used in a Redundancy Coding stripe, then data reliability is enhanced, but the time required for parity computation and storage increases

Engineering Contradiction:
Improvedata reliabilityVSAvoidparity computation time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent implements preliminary action by having the storage device receive and buffer incoming data before parity computation is required. The embedded controller prepares the data in advance and performs parity calculations on buffered data rather than in real-time during the write operation, significantly reducing the time penalty associated with multi-device redundancy.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10635529B2Parity offload for multiple data storage devices
Publication Date: 2020.04.28 WESTERN DIGITAL TECHNOLOGIES INC
  • US10635529B2 patent drawing
  • US10635529B2 patent drawing
  • US10635529B2 patent drawing

AI summary

A system and method improve the performance of non-volatile memory storage by offloading parity computations to facilitate high speed data transfers, including direct memory access (DMA) transfers, between a remote host and a non-volatile memory based storage system, such as a flash memory based data storage device (e.g., SSD). In conjunction with writing to non-volatile memory storage, a stripe map is used to target a selected data storage device for parity generation. All data of a stripe is transmitted to the selected data storage device to generate the parity and the generated parity is propagated from the selected data storage device to other data storage devices in the stripe. The data for the stripe may also be propagated from the selected data storage device to the other data storage devices in the stripe.