Asynchronous Cache Flushing via Non-Blocking Instructions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In modern computing systems, cache flushing operations can hinder processor performance by requiring the processor to wait until the flushing is complete, leading to inconsistencies and inefficiencies, especially in heterogeneous systems and stacked memory configurations where data migration occurs.

Innovation Solution

Implementing a non-blocking cache flush instruction that allows the processor to continue executing instructions during cache flushing, utilizing proactive and reactive flush operations to ensure data consistency through hardware coherence mechanisms, thereby moving a significant fraction of the flushing operation off the critical path and optimizing performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the processor waits for cache flushing to complete before continuing execution, then data consistency is ensured, but processor performance and execution speed deteriorate

Engineering Contradiction:
Improvedata consistencyVSAvoidprocessor execution speed
Core Design Contradiction:
ReliabilityVSSpeed

Solution Approach 1:

The system initiates cache flushing operations in advance before the processor needs to access the flushed data. By pre-flushing caches during idle periods or before predicted data access patterns, the system ensures data consistency is established beforehand, allowing the processor to continue execution without waiting for flush completion.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

A cache controller intermediary manages the coordination between the processor and cache flushing operations. The controller tracks which caches have been flushed and provides this information to the processor, allowing the processor to make informed decisions about data access without blocking on flush completion. The intermediary also prioritizes memory requests during flushing operations.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If the processor blocks during cache flushing operations, then data coherence is maintained, but system productivity and throughput decrease

Engineering Contradiction:
Improvedata coherenceVSAvoidsystem throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system dynamically adjusts processor blocking behavior based on real-time cache flush status. Rather than always blocking or never blocking, the processor is conditionally blocked only when necessary data coherence cannot be guaranteed. The system monitors flush progression and dynamically determines when it is safe to allow processor execution to continue, optimizing throughput while maintaining coherence.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The processor continues executing useful instructions during cache flushing operations by using visibility information to determine when data access is safe. Instead of idle waiting, the processor maintains continuous productive work by accessing caches that have been flushed or by handling cache misses appropriately, ensuring useful action continues throughout the flushing process.

Inventive Principle:
Principle #20Continuity of useful action

3Reliability

If synchronous cache flushing is used to ensure data validity, then energy efficiency deteriorates due to processor idle waiting

Engineering Contradiction:
Improvedata validityVSAvoidprocessor energy consumption
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

Cache flushing operations are initiated in advance during periods when the processor would otherwise be idle or performing less critical operations. By pre-flushing caches before they are needed, the system ensures data validity is established beforehand, allowing the processor to continue execution without energy-wasting idle waits during critical operations.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system uses visibility mechanisms that allow the processor to self-determine when cache data is valid without requiring synchronous coordination. The processor can independently check flush visibility status and proceed with data access when appropriate, eliminating the need for energy-consuming synchronized waiting and inter-processor coordination overhead.

Inventive Principle:
Principle #25Self-service

4Reliability

If cache flushing operations are performed during data migration in heterogeneous systems, then migration efficiency decreases due to blocking

Engineering Contradiction:
Improvecache coherence during migrationVSAvoiddata migration speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

Cache flushing is performed in advance before data migration begins or during idle migration periods. By pre-flushing source caches and pre-loading destination caches, the system ensures coherence is established before migration completes, allowing migration to proceed without blocking waits while maintaining data validity.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

A migration coordinator intermediary manages cache flushing during data migration operations. The coordinator tracks which caches contain migrated data and coordinates flush operations to occur at optimal times that do not block migration throughput. The intermediary allows migration to continue asynchronously while managing coherence requirements in the background.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS10049044B2Asynchronous cache flushing
Publication Date: 2018.08.14 ADVANCED MICRO DEVICES INC
  • US10049044B2 patent drawing
  • US10049044B2 patent drawing
  • US10049044B2 patent drawing

AI summary

Proactive flush logic in a computing system is configured to perform a proactive flush operation to flush data from a first memory in a first computing device to a second memory in response to execution of a non-blocking flush instruction. Reactive flush logic in the computing system is configured to, in response to a memory request issued prior to completion of the proactive flush operation, interrupt the proactive flush operation and perform a reactive flush operation to flush requested data from the first memory to the second memory.