Memory Controller Code Cache for Low-Latency ECC Verification

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing memory technologies face challenges with error correction codes (ECCs) that increase storage costs and affect performance, and memory devices without ECCs lack error detection and correction capabilities, while those with ECCs may not support multiple error detection and correction schemes.

Innovation Solution

Implementing error detection and correction codes in secondary memory and using a code cache on the memory controller to reduce latency and enable flexible error detection and correction schemes, leveraging out-of-order and speculative execution in CPUs.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If error correction codes (ECCs) are stored with data in memory, then error detection and correction capabilities are improved, but storage costs and memory performance are degraded

Engineering Contradiction:
Improveerror detection and correction capabilityVSAvoidmemory performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent separates the ECC code storage from the data storage by using two distinct memory interfaces: a first interface for data access and a second interface for ECC code access. This segmentation allows independent optimization of data access performance and error correction functionality, resolving the contradiction between reliability and productivity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a code cache as an intermediary component that stores ECC codes separately from data. The memory controller acts as a mediator that manages both data and ECC code access through different interfaces, enabling error correction without degrading memory performance.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If ECC information is stored with data, then error correction capability is improved, but additional storage costs are introduced

Engineering Contradiction:
Improveerror correction capabilityVSAvoidstorage capacity
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

By segmenting the storage system into separate data storage and ECC code storage components accessed through different interfaces, the patent enables efficient use of storage resources. The ECC codes are stored in a dedicated space that does not consume data storage capacity, resolving the contradiction between reliability and storage quantity.

Inventive Principle:
Principle #1Segmentation

3Loss of time

If code cache is used to store ECC codes, then read latency is reduced, but device complexity increases

Engineering Contradiction:
Improveread latencyVSAvoidmemory controller complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The code cache pre-stores ECC codes that are frequently accessed, so when data is read, the corresponding ECC code is already available in the cache rather than needing to be fetched from secondary memory. This preliminary action reduces read latency while the modular design keeps the added complexity manageable.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The code cache serves multiple functions: it stores ECC codes for error detection and correction, and it can be implemented as part of the existing memory controller structure. This multi-functionality reduces read latency while minimizing the increase in device complexity by leveraging existing hardware resources.

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

Data Source

PatentUS12585537B2Systems and methods for verifying data in memory
Publication Date: 2026.03.24 SAMSUNG ELECTRONICS CO LTD
  • US12585537B2 patent drawing
  • US12585537B2 patent drawing
  • US12585537B2 patent drawing

AI summary

A system, including: a code cache; and a memory controller connected to the code cache, and configured to: receive a read command to read requested data from a location in primary memory connected to the memory controller over a first interface; read first data stored in the location from the primary memory; read a code corresponding to the requested data associated with the read command from the code cache, or from secondary memory connected to the memory controller over a second interface different from the first interface; perform error detection and/or correction based on the first data and the code; select second data based on a result of the error detection and/or correction; and output the second data for the requested data.