Compiler Lock Elision for Multiprocessor Cache Coherency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multiprocessor environments, existing techniques for compiler optimizations in critical sections lead to unnecessary cache coherency overhead due to the inclusion of synchronization constructs like locks, which reduce performance efficiency, especially when data is not localized to a single processor.

Innovation Solution

A compiler mechanism that identifies related data and removes or replaces inter-processor locks with intra-processor locks, using annotations to indicate exclusive access, thereby eliminating cache coherency traffic and optimizing code for multiprocessor systems.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If inter-processor locks are used to protect shared data access, then data consistency and correctness are ensured, but cache coherency overhead increases and performance decreases

Engineering Contradiction:
Improvedata consistencyVSAvoidperformance efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent applies local quality by transitioning from global locking (inter-processor locks that affect all processors) to local locking (intra-processor locks that only affect threads on the same processor). This selective approach applies locking only where necessary, reducing unnecessary cache coherency traffic while maintaining data consistency for shared data accessed by multiple threads on the same processor.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent extracts and removes unnecessary inter-processor lock operations from the code generation process. By analyzing the locking hierarchy and identifying locks that only need to protect against intra-processor thread conflicts rather than inter-processor access, the system extracts and eliminates these redundant synchronization operations, reducing cache coherency overhead while maintaining correctness.

Inventive Principle:
Principle #2Taking out (Extraction)

2Productivity

If flow pinning is implemented to associate traffic with a single processor, then data cache affinity improves, but system flexibility and adaptability decrease

Engineering Contradiction:
Improvecache performanceVSAvoidsystem flexibility
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent introduces dynamic adaptability through compiler-generated code that can operate correctly in both flow-pinned and non-flow-pinned environments. The locking mechanism dynamically adjusts its behavior based on the execution context, using intra-processor locks that function effectively regardless of whether flow pinning is active, thus maintaining system flexibility while enabling cache optimization when beneficial.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent creates a universal locking solution that serves multiple purposes: it provides thread synchronization in multithreaded environments, maintains correctness in both flow-pinned and non-flow-pinned configurations, and eliminates unnecessary cache coherency traffic. This multi-functional approach allows the same code to adapt to different system configurations without requiring separate implementations.

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

3Speed

If speculative lock elision is used to assume parallel operations will succeed, then execution speed increases, but correctness and reliability decrease due to potential race conditions

Engineering Contradiction:
Improveexecution speedVSAvoidoperation correctness
Core Design Contradiction:
SpeedVSReliability

Solution Approach 1:

The patent implements a feedback mechanism through the compiler's analysis of locking hierarchies and data access patterns. The compiler generates code that includes appropriate locking based on the actual execution context and data sharing relationships, providing feedback that ensures correctness while maximizing parallel execution opportunities. This feedback-driven approach prevents race conditions while maintaining high performance.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS7788650B2Compiler-based critical section amendment for a multiprocessor environment
Publication Date: 2010.08.31 INTEL CORP
  • US7788650B2 patent drawing
  • US7788650B2 patent drawing
  • US7788650B2 patent drawing

AI summary

Source code includes a directive to indicate data structures of related data to a compiler. The compiler associates the related data to the same one of multiple processors in a multiprocessor environment. The compiler searches the source code for locks associated with the related data, and generates executable code that is modified with respect to locks written in the source code. The compiler may replace or remove locks written in the source code to protect access to the related data, resulting in an executable program that does not include the locks.