Multi-CPU Software Verification via Shared Log Event Reordering

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current software verification mechanisms are inadequate for ensuring reliability and security on multi-CPU machines, particularly in handling data races and instruction reordering across CPUs, which can lead to unpredictable behavior on different memory hardware models.

Innovation Solution

The proposed solution involves reordering and merging CPU events in a shared log to verify software correctness, decomposing software into data race-free and non-data race-free components, and applying permutation conditions to ensure consistent behavior on both sequentially consistent and relaxed memory hardware, while checking register interactions and simulation relations between ideal and real system models.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If software is verified using traditional mechanisms on multi-CPU machines, then verification can be performed, but the verification is inadequate and cannot ensure reliability due to data races and instruction reordering

Engineering Contradiction:
Improvesoftware reliabilityVSAvoidverification accuracy
Core Design Contradiction:
ReliabilityVSLoss of information

Solution Approach 1:

The verification system segments the analysis by separating local CPU events from oracle queries in the shared log, allowing independent analysis and reordering of each type of event. This segmentation enables precise tracking of data dependencies and instruction reordering effects on different memory models.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system changes the parameter of memory consistency by applying permutation conditions that transform the verification approach to work across different memory models (sequentially consistent vs. relaxed memory hardware). This allows the same verification mechanism to adapt to varying memory consistency parameters.

Inventive Principle:
Principle #35Parameter changes

2Speed

If instruction reordering is allowed on relaxed memory hardware, then execution performance is improved, but software behavior becomes unpredictable and may differ from sequentially consistent memory hardware

Engineering Contradiction:
Improveexecution speedVSAvoidsoftware behavior consistency
Core Design Contradiction:
SpeedVSStability of the object's composition

Solution Approach 1:

The system performs preliminary analysis by reordering events in the shared log before verification to determine all possible execution sequences. By pre-computing the effects of instruction reordering and applying permutation conditions, the system can predict whether relaxed memory execution will produce different behavior than sequentially consistent execution, allowing developers to catch issues before deployment.

Inventive Principle:
Principle #10Preliminary action

3Reliability

If verification mechanisms are enhanced to handle data races and instruction reordering, then software correctness can be verified, but the verification process becomes more complex

Engineering Contradiction:
Improvesoftware correctnessVSAvoidverification process complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system introduces an intermediary shared log that records all CPU events and oracle queries in a standardized format. This intermediary structure mediates between the complex multi-CPU execution and the verification process, providing a unified view of all events that can be systematically analyzed for data races and instruction reordering effects.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS20240012728A1Systems, methods, and media for verifying software
Publication Date: 2024.01.11 NIEH JASON
  • US20240012728A1 patent drawing
  • US20240012728A1 patent drawing
  • US20240012728A1 patent drawing

AI summary

Mechanisms for verifying software on a multi-CPU machine are provided, the mechanisms including: using a hardware processor: reordering, in a shared log, a first local CPU event from a local CPU operating on a shared object to be before at least one first prior oracle query corresponding to a prior event from another CPU based on whether the first local CPU event can be reordered with respect to the prior event without changing the multi-CPU machine's behavior with respect to the shared object; merging first consecutive oracle queries including the at least one first prior oracle query in the shared log; and verifying the software based on the merged first consecutive oracle queries.