Rotate Instructions Without Carry Flag Dependency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing rotate instructions, such as the ROR instruction, require reading the carry flag, which increases execution time and serialization, limiting parallel processing and speculative execution, and also overwrite the source operand, necessitating additional data movement instructions to preserve it.

Innovation Solution

An instruction processing apparatus with an execution unit that executes rotate instructions without reading or writing the carry flag, allowing for faster execution and reduced serialization by completing the operation without relying on arithmetic flags, and explicitly specifying source and destination operands to prevent overwriting.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the ROR instruction reads the carry flag, then the rotation operation can be completed with proper flag handling, but the execution time increases and serialization is increased

Engineering Contradiction:
Improveflag handling correctnessVSAvoidexecution time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent extracts the carry flag reading operation from the rotate instruction execution path. The rotate instruction is modified to perform rotation without reading or writing the carry flag, separating the rotation function from flag dependency. This allows the rotation to complete faster while maintaining reliability through explicit source and destination operand specification.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent segments the rotate instruction into distinct source and destination operands, allowing the instruction to specify different registers for input and output data. This segmentation prevents overwriting issues and allows parallel processing by eliminating implicit dependencies on flag registers.

Inventive Principle:
Principle #1Segmentation

2Reliability

If the ROR instruction reads the carry flag, then arithmetic flag dependencies are maintained, but parallel processing and speculative execution are limited

Engineering Contradiction:
Improvearithmetic flag dependencyVSAvoidparallel processing capability
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent removes the carry flag reading dependency from the rotate instruction, extracting this arithmetic flag interaction from the critical execution path. This enables multiple rotate instructions to execute in parallel without serializing on flag reads, while still maintaining correct rotation functionality through explicit operand specification.

Inventive Principle:
Principle #2Taking out (Extraction)

3Productivity

If the ROR instruction overwrites the source operand, then the destination operand is updated, but additional data movement instructions are needed to preserve the source

Engineering Contradiction:
Improveoperation completionVSAvoiddata movement overhead
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent segments the rotate instruction into explicit source and destination operands that can be different registers. This allows the source operand to be preserved in its original location while the destination receives the rotated value, eliminating the need for additional data movement instructions to preserve intermediate values.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS11900108B2Rotate instructions that complete execution either without writing or reading flags
Publication Date: 2024.02.13 INTEL CORP
  • US11900108B2 patent drawing
  • US11900108B2 patent drawing
  • US11900108B2 patent drawing

AI summary

A method of one aspect may include receiving a rotate instruction. The rotate instruction may indicate a source operand and a rotate amount. A result may be stored in a destination operand indicated by the rotate instruction. The result may have the source operand rotated by the rotate amount. Execution of the rotate instruction may complete without reading a carry flag.