Pre-decode Error Handling via Branch Correction in Pipelined Processors

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Pre-decode errors in processor pipelines lead to performance and power management degradation due to pipeline flushing and re-fetching of instructions, which is inefficient and costly in terms of both time and energy.

Innovation Solution

A method is introduced where an incorrectly pre-decoded instruction is corrected by forcing a branch correction procedure, treating the instruction as a mispredicted branch with its target address, allowing it to be re-fetched and re-decoded without flushing the pipeline, thereby eliminating the need for a dedicated path to the next fetch address calculator.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If pre-decode information is stored in cache memory to assist in fully decoding instructions, then decoding efficiency is improved, but pre-decode errors occur leading to pipeline flushing and performance degradation

Engineering Contradiction:
Improvedecoding efficiencyVSAvoidpre-decode accuracy
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The pre-decoder performs preliminary decoding of instructions and stores pre-decode information in the cache memory before full decoding is needed. This preliminary action speeds up the decoding process by having decoding information ready in advance, while the error detection and correction mechanisms ensure reliability is maintained.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system implements feedback mechanisms where pre-decode errors are detected during decode stages, triggering exception handling that flushes the pipeline and re-fetches instructions. This feedback loop identifies and corrects errors, ensuring that the productivity gains from pre-decoding do not compromise overall system reliability.

Inventive Principle:
Principle #23Feedback

2Ease of operation

If pipeline flushing is performed when pre-decode errors are detected, then error handling is simplified, but performance and power consumption are significantly degraded

Engineering Contradiction:
Improveerror handling simplicityVSAvoidprocessor throughput
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The error detection and correction functionality is extracted as a separate module (pre-decode error detector and corrector) that operates independently from the main pipeline. This allows errors to be handled without necessarily flushing the entire pipeline, maintaining productivity while preserving ease of error handling through dedicated error management logic.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The system changes the state parameter of the pipeline by forcing a branch correction procedure with a target address when errors are detected. This parameter change allows the pipeline to continue execution with corrected branch information rather than flushing, thereby maintaining throughput while still handling errors effectively.

Inventive Principle:
Principle #35Parameter changes

3Reliability

If a dedicated path to the next fetch address calculator is added for error correction, then pre-decode error handling is improved, but device complexity increases

Engineering Contradiction:
Improveerror correction capabilityVSAvoidfetch path structure
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The branch correction procedure serves multiple functions: it handles pre-decode errors, manages mispredicted branches, and maintains fetch address calculation. By making the branch correction logic multi-functional, the system improves error correction capability without adding dedicated separate paths, thereby avoiding increased device complexity.

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

Solution Approach 2:

The error correction path is merged with the existing branch prediction and fetch address calculation logic. Instead of creating a separate dedicated path for error correction, the system combines error handling with the universal branch correction mechanism already present in the pipeline, reducing overall device complexity while maintaining reliability.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS7415638B2Pre-decode error handling via branch correction
Publication Date: 2008.08.19 QUALCOMM INC
  • US7415638B2 patent drawing
  • US7415638B2 patent drawing
  • US7415638B2 patent drawing

AI summary

In a pipelined processor where instructions are pre-decoded prior to being stored in a cache, an incorrectly pre-decoded instruction is detected during execution in the pipeline. The corresponding instruction is invalidated in the cache, and the instruction is forced to evaluate as a branch instruction. In particular, the branch instruction is evaluated as “mispredicted not taken” with a branch target address of the incorrectly pre-decoded instruction's address. This, with the invalidated cache line, causes the incorrectly pre-decoded instruction to be re-fetched from memory with a precise address. The re-fetched instruction is then correctly pre-decoded, written to the cache, and executed.