Coherency Checker for Non-Volatile Memory Collision Management

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern memory subsystems face performance issues due to operation collisions, particularly when read commands are processed before in-flight write commands are completed, leading to potential data errors and reduced performance as the frequency of collisions increases, necessitating effective collision management to maintain data integrity and efficiency.

Innovation Solution

A coherency checker (CC) is implemented to serialize requests using a cache structure, allowing read operations to fulfill data from in-flight write operations without blocking, by locking relevant memory regions and utilizing cache extensions to handle collisions, ensuring data integrity and reducing operation blocking.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If read commands are processed before in-flight write commands are completed, then memory subsystem performance is improved through non-blocking operations, but data integrity deteriorates due to potential operation collisions

Engineering Contradiction:
Improvememory subsystem performanceVSAvoiddata integrity
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

A coherency checker component is introduced as an intermediary between the command processor and memory operations. This coherency checker monitors in-flight write operations and intercepts read commands, comparing them against the write operation log to detect collisions. When a collision is detected, the read command is blocked until the write operation completes, thereby maintaining data integrity while allowing non-blocking processing for non-colliding operations.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If operation collisions are managed by blocking read commands until write operations complete, then data integrity is maintained, but performance deteriorates due to increased operation blocking

Engineering Contradiction:
Improvedata integrityVSAvoidmemory subsystem performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The coherency checker implements a feedback mechanism by continuously monitoring the status of in-flight write operations and using this information to make real-time decisions about read command processing. The checker maintains a log of outstanding write operations and their target addresses, and uses this feedback to determine whether incoming read commands should be blocked or allowed to proceed, thereby dynamically optimizing the balance between data integrity and performance.

Inventive Principle:
Principle #23Feedback

3Reliability

If a coherency checker is implemented to detect and manage operation collisions, then data integrity is improved, but device complexity increases due to additional components and logic

Engineering Contradiction:
Improvedata integrityVSAvoidmemory subsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The coherency checker performs preliminary actions by pre-establishing a log of in-flight write operations and their target addresses before read commands are processed. This preliminary tracking allows the checker to quickly determine potential collisions without requiring complex real-time analysis of memory states. The write operation log is maintained in advance, enabling efficient collision detection and reducing the computational complexity of the overall system.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11513959B2Managing collisions in a non-volatile memory system with a coherency checker
Publication Date: 2022.11.29 MICRON TECHNOLOGY INC
  • US11513959B2 patent drawing
  • US11513959B2 patent drawing
  • US11513959B2 patent drawing

AI summary

A request to read data from a location associated with a memory component is received. The request is assigned a first tag, the first tag having a first identifier of a first buffer to store data read from the location. The request to read data is determined to collide with an earlier request to write data to the location. The earlier request is assigned a second tag, the second tag having a second identifier of a second buffer to store data to write to the location. An attempt to lock the second tag and the second buffer for the request to read data is made. The request to read data is fulfilled from the second buffer in response to a successful attempt to lock the second tag and the second buffer.