Instruction Cache Pointer Tracking for Thread Execution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current graphics processing systems face inefficiencies in handling instruction execution due to the high cost of storing and updating program counters for multiple threads, leading to increased power consumption and complexity.

Innovation Solution

The use of pointers to the instruction cache instead of program counters for thread execution, allowing for a more efficient instruction fetch and execution process by reducing the need for full program counter updates and cache matches, especially for threads executing within the same cache line.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If program counters are stored and updated for multiple threads to track instruction execution, then thread execution tracking is maintained, but power consumption and system complexity increase

Engineering Contradiction:
Improvethread execution trackingVSAvoidpower consumption
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

The patent merges the program counter functionality into the instruction cache structure by using the instruction cache address tags to implicitly track program counter values. Instead of maintaining separate program counter storage for each thread, the system combines thread identification with instruction cache addressing, so that the cache address itself encodes both the thread identity and the instruction location. This eliminates the need for dedicated program counter storage and reduces power consumption while maintaining execution tracking.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The instruction cache is given multiple functions: it not only stores instruction data but also implicitly tracks program counter values and thread execution state through its address tagging mechanism. The cache address system serves as a universal identifier that combines thread ID and instruction address information, replacing the need for separate program counter units and reducing overall system complexity.

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

2Reliability

If program counters are stored and updated for multiple threads, then instruction execution tracking is maintained, but device complexity increases

Engineering Contradiction:
Improvethread execution trackingVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent merges the program counter functionality into the instruction cache structure by using the instruction cache address tags to implicitly track program counter values. Instead of maintaining separate program counter storage for each thread, the system combines thread identification with instruction cache addressing, so that the cache address itself encodes both the thread identity and the instruction location. This eliminates the need for dedicated program counter storage and reduces power consumption while maintaining execution tracking.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The instruction cache is given multiple functions: it not only stores instruction data but also implicitly tracks program counter values and thread execution state through its address tagging mechanism. The cache address system serves as a universal identifier that combines thread ID and instruction address information, replacing the need for separate program counter units and reducing overall system complexity.

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

3Measurement precision

If full program counter updates and cache matches are performed for each instruction fetch, then instruction accuracy is maintained, but power consumption increases

Engineering Contradiction:
Improveinstruction fetch accuracyVSAvoidpower consumption
Core Design Contradiction:
Measurement precisionVSUse of energy by moving object

Solution Approach 1:

The patent applies partial action by performing cache matches only on the necessary portion of the address (the instruction cache address portion) rather than the full program counter value. When threads are grouped, the system performs cache matching using only the instruction address bits, leaving the thread ID portion unchanged. This partial matching approach maintains instruction fetch accuracy while significantly reducing the power consumption associated with full program counter updates and complete cache tag comparisons.

Inventive Principle:
Principle #16Partial or excessive action

4Productivity

If threads are grouped and executed in lockstep, then instruction fetch efficiency is improved, but handling of program counter divergence becomes more complex

Engineering Contradiction:
Improveinstruction fetch efficiencyVSAvoidprogram counter management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the program counter into two distinct parts: a thread ID portion and an instruction cache address portion. This segmentation allows threads within a group to share the same instruction cache address (improving fetch efficiency) while maintaining individual thread identities. When threads diverge, only the relevant portion of the address needs to be updated, simplifying the management of program counter divergence compared to maintaining complete program counter values for each thread.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9535700B2Data processing systems
Publication Date: 2017.01.03 ARM LTD
  • US9535700B2 patent drawing
  • US9535700B2 patent drawing
  • US9535700B2 patent drawing

AI summary

A data processing system includes an execution pipeline that includes one or more programmable execution stages which execute execution threads to execute instructions to perform data processing operations. Instructions to be executed by a group of execution threads are first fetched into an instruction cache and then read from the instruction cache for execution by the thread group. When an instruction to be executed by a thread group is present in a cache line in the instruction cache, or is to be fetched into an allocated cache line in the instruction cache, a pointer to the location of the instruction in the instruction cache is stored for the thread group. This stored pointer is then used to retrieve the instruction for execution by the thread group from the instruction cache.