Atomic Group Write Management for Persistent Memory Power Loss

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In in-memory database systems, unexpected power interruptions can lead to data inconsistencies when only partial updates are committed to persistent memory, causing issues like mismatched records due to incomplete writes.

Innovation Solution

Implementing an atomic group of writes mechanism where a group of cache lines are marked as 'do not flush' until all writes within the group are completed, ensuring that either all or none of the writes are executed, using instructions like BEGIN_GROUP_COMMIT and END_GROUP_COMMIT to manage this process.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If data is stored in volatile memory for in-memory database operations, then query speed and processing performance are improved, but data integrity is compromised during unexpected power interruptions

Engineering Contradiction:
Improvequery speedVSAvoiddata integrity
Core Design Contradiction:
SpeedVSReliability

Solution Approach 1:

The system performs preliminary actions by marking cache lines with a 'do not flush' indicator before writing updated data, and by executing flush operations for marked cache lines before allowing power interruption. This ensures that critical data is already persisted to non-volatile memory before power loss occurs, maintaining data integrity while preserving the performance benefits of volatile memory caching.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If cache lines are flushed to persistent memory immediately upon update, then data consistency is improved, but performance deteriorates due to frequent I/O operations

Engineering Contradiction:
Improvedata consistencyVSAvoidprocessing performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system dynamically adjusts the flushing behavior of cache lines based on their marked status. Cache lines with the 'do not flush' indicator are flushed before power interruption, while unmarked cache lines are not flushed, allowing the system to adaptively manage data persistence based on operational context and power event predictions, thereby balancing consistency and performance.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system maintains continuous data protection by ensuring that marked cache lines are flushed before power interruption while allowing unmarked cache lines to remain in volatile memory for continued high-speed processing. This selective flushing approach ensures data consistency for critical operations while maintaining processing performance for non-critical operations.

Inventive Principle:
Principle #20Continuity of useful action

3Reliability

If all cache lines are marked as 'do not flush' to prevent data loss, then data integrity is improved, but system efficiency deteriorates due to increased memory usage and reduced cache availability

Engineering Contradiction:
Improvedata integrityVSAvoidsystem efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system applies the 'do not flush' marking selectively to specific cache lines based on their importance and the likelihood of power interruption during their update. This localized approach ensures that only critical data receives the protection overhead, while non-critical data can be cached without the marking, thereby maintaining data integrity for essential operations while preserving system efficiency overall.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10885004B2Method and apparatus to manage flush of an atomic group of writes to persistent memory in response to an unexpected power loss
Publication Date: 2021.01.05 INTEL CORP
  • US10885004B2 patent drawing
  • US10885004B2 patent drawing
  • US10885004B2 patent drawing

AI summary

A group of cache lines in cache may be identified as cache lines not to be flushed to persistent memory until all cache line writes for the group of cache lines have been completed.