NVMe Pre-fetch and Non-completion Commands for RAID Parity Latency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Information handling systems face challenges in optimizing RAID parity calculations, particularly in reducing latency during read-modify-write processes, which affects the quality of service (QoS) performance.

Innovation Solution

The implementation of Non-Volatile Memory Express (NVMe) commands with advisory and non-completion features, including pre-fetch and non-completion commands, to monitor read operations and optimize RAID parity calculations by minimizing latency through advanced notification and controlled interrupt issuance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional RAID parity calculations are performed during read-modify-write processes, then data integrity is maintained, but latency increases and QoS performance deteriorates

Engineering Contradiction:
Improvedata integrityVSAvoidlatency
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by using pre-fetch commands to load parity data into cache memory before it is actually needed during the read-modify-write operation. The controller receives a pre-fetch command from the host, retrieves the parity data from the RAID array, and stores it in cache memory. This preliminary data retrieval eliminates the need for subsequent parity read operations during the actual data modification, significantly reducing latency while maintaining data integrity through proper parity calculation when needed.

Inventive Principle:
Principle #10Preliminary action

2Speed

If interrupt issuance is used to notify read operation completion, then response timeliness is improved, but system complexity increases due to additional interrupt handling requirements

Engineering Contradiction:
Improveresponse timelinessVSAvoidinterrupt handling complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The patent extracts the interrupt issuance functionality from the standard NVMe command completion mechanism by introducing a separate non-completion command. This command allows the host to specifically request that no interrupt be generated for a given read operation, even when data is successfully retrieved. This extraction enables fine-grained control over interrupt behavior, allowing the system to maintain response timeliness through selective interrupt suppression without the complexity of managing interrupt generation for every possible operation outcome.

Inventive Principle:
Principle #2Taking out (Extraction)

3Loss of time

If pre-fetch commands are used to monitor read operations, then QoS performance is improved by reducing latency, but command processing complexity increases

Engineering Contradiction:
ImprovelatencyVSAvoidcommand processing complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The patent applies universality by designing the pre-fetch command to serve multiple functions: it monitors read operations, triggers data retrieval from the RAID array, stores data in cache memory, and controls interrupt generation through the non-completion command. This multi-functional approach consolidates several operations into a single command mechanism, improving QoS performance by reducing latency while managing command processing complexity through a unified control structure rather than separate operations for each function.

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

Data Source

PatentUS10891244B2Method and apparatus for redundant array of independent drives parity quality of service improvements
Publication Date: 2021.01.12 DELL PROD LP
  • US10891244B2 patent drawing
  • US10891244B2 patent drawing
  • US10891244B2 patent drawing

AI summary

An information handling system includes a host configured to write a non-volatile memory express (NVMe) command on a memory submission queue slot. The NVMe command includes a pre-fetch command and a non-completion command. A controller uses the pre-fetch command to monitor read operations, and to place on hold an execution of the monitored read operations and an issuance of an interrupt in response to the non-completion command.