Distributed ECC Engine Layout for Parallel Storage Data Paths

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current storage systems using Error Correction Code (ECC) engines face performance bottlenecks due to centralized ECC computation, which can be economically inefficient and require specialized storage media devices, and there is a need for a distributed approach that optimizes ECC computations without affecting system performance.

Innovation Solution

Implementing a distributed ECC system with multiple ECC engines configured to handle ECC computations in parallel for groups of storage media devices, where each engine performs ECC operations independently, eliminating the need for centralized logic and optimizing resource utilization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If a centralized ECC engine is placed in the main storage controller, then ECC computation can be performed in hardware with high speed, but the ECC engine becomes a bottleneck to the data path especially when the storage system employs parallelism and/or controls multiple storage devices

Engineering Contradiction:
ImproveECC computation speedVSAvoiddata path throughput
Core Design Contradiction:
SpeedVSProductivity

Solution Approach 1:

The patent divides the centralized ECC engine into multiple distributed ECC engines, with each engine handling ECC computations for a specific group of storage media devices. This segmentation eliminates the single-point bottleneck by distributing the computation load across multiple parallel data paths, allowing simultaneous ECC operations without interfering with overall data path throughput.

Inventive Principle:
Principle #1Segmentation

2Productivity

If an ECC engine is embedded on each storage device, then the data path bottleneck is eliminated, but the storage device requires added logic and the ECC engine remains unused when the storage device is not being accessed

Engineering Contradiction:
Improvedata path throughputVSAvoidstorage device logic
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent merges the ECC engine functionality into the storage controller rather than embedding it in each storage device. The storage controller groups multiple storage media devices and assigns dedicated ECC engines to handle computations for each group. This approach maintains high data path throughput while avoiding the waste of unused ECC engines, as the controller can dynamically allocate ECC computation resources based on actual access patterns.

Inventive Principle:
Principle #5Merging (Combining)

3Adaptability or versatility

If software or firmware is used for ECC computations, then implementation is flexible, but the computation speed is slower compared to hardware ECC engines

Engineering Contradiction:
Improveimplementation flexibilityVSAvoidECC computation speed
Core Design Contradiction:
Adaptability or versatilityVSSpeed

Solution Approach 1:

The patent replaces software/firmware-based ECC computations with hardware-based ECC engines implemented in the storage controller. This substitution provides the best of both worlds: the speed advantage of hardware computation while maintaining the flexibility of software control through configurable engine allocation and group management. The hardware engines execute ECC algorithms at high speed, eliminating the performance penalty of software implementation.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentUS9043669B1Distributed ECC engine for storage media
Publication Date: 2015.05.26 BITMICRO LLC
  • US9043669B1 patent drawing
  • US9043669B1 patent drawing
  • US9043669B1 patent drawing

AI summary

Embodiments of the present invention relate to an apparatus, method, and/or sequence for a distributed ECC that may be used in a storage system. In another embodiment of the invention, an apparatus for handling distributed error correction code (ECC) operations, includes: a plurality of ECC engines configured to perform ECC operations in parallel on multiple data parts; the plurality of ECC engines distributed in parallel to receive some of the multiple data parts that are read from storage media devices and to receive some of the other multiple data parts that are to be written to the storage media devices; and the plurality of ECC engines configured to use respective ECC bytes corresponding to respective ones of the multiple data parts.