Microprocessor Non-Architectural Condition Code Flag Register

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Microprocessors with distinct architectural and microarchitectural instruction sets face challenges in efficiently executing conditional instructions that require examining condition code flags without affecting the architectural condition code flags register, as the microcode cannot update the architectural condition code flags register for many instructions in architectures like x86.

Innovation Solution

Introducing a non-architectural condition code flags register (GFLAGS register) and a bit (G bit) in the microinstruction format to specify whether to update or read condition code flags from this register instead of the architectural EFLAGS register, allowing conditional execution without modifying the architectural flags.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If microcode uses the architectural condition code flags register for conditional execution, then conditional instructions can be executed, but the architectural condition code flags register must be saved and restored, increasing execution time and code size

Engineering Contradiction:
Improveconditional execution capabilityVSAvoidexecution time
Core Design Contradiction:
Ease of operationVSLoss of time

Solution Approach 1:

The patent segments the condition code flags register into two separate registers: an architectural condition code flags register (visible to software) and a microarchitectural condition code flags register (used internally by microcode). This segmentation allows microcode to use the microarchitectural register for conditional execution without affecting the architectural register, eliminating the need to save and restore flags and thereby reducing execution time overhead.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The microarchitectural condition code flags register acts as an intermediary between the execution units and the architectural condition code flags register. It allows microcode to examine and update condition codes for conditional microinstructions without directly modifying the architectural register, thus enabling efficient conditional execution while preserving architectural state integrity.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If microcode updates the architectural condition code flags register, then conditional instructions work correctly, but code size increases due to save and restore operations

Engineering Contradiction:
Improveconditional instruction correctnessVSAvoidcode size
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

By segmenting the condition code flags into architectural and microarchitectural registers, the patent eliminates the need for save and restore microcode sequences. The microarchitectural register handles all conditional execution operations, while the architectural register remains unchanged, thereby reducing microcode size and complexity while maintaining correct conditional instruction behavior.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The microarchitectural condition code flags register serves as a copy of the architectural register's condition code portion. This copy allows microcode to perform conditional operations independently without modifying the original architectural register, eliminating the need for save and restore operations and reducing overall code size.

Inventive Principle:
Principle #26Copying

3Productivity

If a single condition code flags register is used for both architectural and microarchitectural purposes, then register count is minimized, but conditional execution efficiency decreases

Engineering Contradiction:
Improveconditional execution efficiencyVSAvoidregister structure
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent divides the condition code flags functionality into two separate registers: an architectural register for software-visible operations and a microarchitectural register for internal microcode operations. This segmentation enables parallel access and independent manipulation of condition codes, significantly improving conditional execution efficiency while the register structure remains straightforward and easy to implement.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS8069339B2Microprocessor with microinstruction-specifiable non-architectural condition code flag register
Publication Date: 2011.11.29 VIA TECH INC
  • US8069339B2 patent drawing
  • US8069339B2 patent drawing
  • US8069339B2 patent drawing

AI summary

A microprocessor includes an architectural register and a non-architectural register, each having a plurality of condition code flags. A first instruction of the microarchitectural instruction set of the microprocessor instructs the microprocessor to update the plurality of condition code flags based on a result of the first instruction. The first instruction includes a field for indicating whether to update the plurality of condition code flags of the architectural or non-architectural register. A second instruction of the microarchitectural instruction set instructs the microprocessor to conditionally perform an operation based on one of the plurality of condition code flags. The second instruction includes a field for indicating whether to use the one of the plurality of condition code flags of the architectural or non-architectural register to determine whether to perform the operation.