Operand Cache with Hint Values for GPU Power Reduction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Graphics processing units (GPUs) face issues with high power consumption and execution delays due to large register files, which are energy intensive and have slower access times, leading to inefficiencies in mobile graphics applications.

Innovation Solution

Implementing an operand cache that is smaller than the register file to store a subset of operands, using hint values to determine which operands to cache, and employing prefetching techniques to reduce bank conflicts and improve access times.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a large register file is used to store operands for multiple threads, then the GPU can support more concurrent threads and have more operands available, but power consumption increases and access time increases

Engineering Contradiction:
Improvethread concurrencyVSAvoidpower consumption
Core Design Contradiction:
Adaptability or versatilityVSUse of energy by moving object

Solution Approach 1:

The register file is segmented into multiple banks, allowing parallel access to different operand groups. The operand cache is also divided into multiple ways (e.g., 4-way set associative), enabling simultaneous access to multiple candidate operands and reducing access time while maintaining support for multiple threads.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

An operand cache is introduced as an intermediary structure between the execution unit and the large register file. This cache holds recently used or frequently accessed operands, providing quick access without requiring reads from the full register file, thus reducing power consumption while maintaining thread concurrency support.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If a large register file is used to store operands for multiple threads, then more operands are available for execution, but access time increases

Engineering Contradiction:
Improveoperand availabilityVSAvoidaccess time
Core Design Contradiction:
Adaptability or versatilityVSSpeed

Solution Approach 1:

The operand cache pre-loads and holds operands that are likely to be needed soon, based on instruction patterns and hints. By having operands ready in the cache before they are needed by the execution unit, access time is reduced while operand availability is maintained.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Instead of accessing the full register file for every operand read, the system copies frequently accessed operands into the smaller, faster operand cache. This copying mechanism allows the execution unit to access operands quickly from the cache while the larger register file remains available for storing operands for multiple threads.

Inventive Principle:
Principle #26Copying

3Loss of energy

If hint values are used to determine which operands to cache, then cache efficiency improves and power consumption decreases, but hardware complexity increases

Engineering Contradiction:
Improvepower consumptionVSAvoidhardware complexity
Core Design Contradiction:
Loss of energyVSDevice complexity

Solution Approach 1:

The system uses software-generated hint values that are already embedded in the instruction stream, eliminating the need for complex hardware analysis. The operand cache controller simply reads these hints and uses them to make caching decisions, providing an elegant solution that reduces power consumption without significantly increasing hardware complexity.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9652233B2Hint values for use with an operand cache
Publication Date: 2017.05.16 APPLE INC
  • US9652233B2 patent drawing
  • US9652233B2 patent drawing
  • US9652233B2 patent drawing

AI summary

Instructions may require one or more operands to be executed, which may be provided from a register file. In the context of a GPU, however, a register file may be a relatively large structure, and reading from the register file may be energy and/or time intensive An operand cache may be used to store a subset of operands, and may use less power and have quicker access times than the register file. Hint values may be used in some embodiments to suggest that a particular operand should be stored in the operand cache (so that is available for current or future use). In one embodiment, a hint value indicates that an operand should be cached whenever possible. Hint values may be determined by software, such as a compiler, in some embodiments. One or more criteria may be used to determine hint values, such as how soon in the future or how frequently an operand will be used again.