Memory Controller ECC with Variable Block Coverage

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern memory devices face increasing errors due to smaller device sizes, higher array densities, and increased usage, leading to reduced data reliability and slower operation, as existing error correction codes (ECC) struggle to keep pace with the rising number of errors while maintaining storage space and operational speed.

Innovation Solution

The solution involves decoupling user data structures from ECC data size and algorithm, allowing for variable ECC data block sizes and encoding schemes to increase error coverage and correction capabilities, such as combining multiple sectors under a single ECC code, thereby averaging bit errors over a larger data area without significantly increasing ECC code storage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional per-sector ECC is used, then ECC code storage space is minimized, but error detection and correction capability is insufficient for modern high-density memory devices

Engineering Contradiction:
Improveerror detection and correction capabilityVSAvoidECC code storage space
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent combines multiple sectors (e.g., 4 sectors of 512 bytes each) into a single ECC data block of 2048 bytes, allowing one ECC code to protect multiple sectors. This merging approach increases error detection and correction capability across the combined data block while maintaining efficient use of ECC storage space by eliminating redundant per-sector ECC overhead.

Inventive Principle:
Principle #5Merging (Combining)

2Reliability

If ECC code size is increased to correct more errors, then data reliability improves, but operational speed decreases due to time-consuming error correction algorithms

Engineering Contradiction:
Improvedata reliabilityVSAvoidoperational speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent segments the error correction process by organizing data into variable-sized ECC data blocks (e.g., 2048-byte blocks containing multiple sectors) that can be processed independently. This segmentation allows the system to apply error correction algorithms at an optimized block level, improving operational speed by avoiding unnecessary processing of entire larger memory structures while maintaining reliable error correction within each block.

Inventive Principle:
Principle #1Segmentation

3Adaptability or versatility

If fixed per-sector ECC structure is used, then system complexity is minimized, but adaptability to different error patterns and memory configurations is reduced

Engineering Contradiction:
Improveerror coverage flexibilityVSAvoidECC structure complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent implements dynamic ECC data block sizing where the ECC structure can be configured to cover variable numbers of sectors (e.g., 1, 2, 4, or more sectors per ECC block). This dynamic configuration allows the system to adapt to different error patterns, memory densities, and performance requirements without requiring multiple fixed ECC structures, thereby improving versatility while managing complexity through a unified variable-size framework.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS8627180B2Memory controller ECC
Publication Date: 2014.01.07 MICRON TECHNOLOGY INC
  • US8627180B2 patent drawing
  • US8627180B2 patent drawing
  • US8627180B2 patent drawing

AI summary

Memory controllers having a data buffer coupled to receive and hold data from a memory device, and an Error Correction Code (ECC) generator/checker coupled to the data buffer. The ECC generator/checker is configured to generate ECC codes for the data and to compare the generated ECC codes with ECC codes received with the data. The memory controllers are configured to permit different ECC coverage area sizes and/or different ECC code types for different portions of the memory device.