Split Register File for Multi-Width Operand Allocation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The use of larger integer data sizes in processors leads to inefficient use of memory and performance degradation due to increased memory latency, as many applications only require smaller integer sizes, resulting in wasted space in 64-bit registers and unnecessary expansion of data sizes.

Innovation Solution

Implementing a physical register file with multiple widths corresponding to different operand sizes, such as 32-bit and 64-bit widths, and a map unit that allocates registers based on operand size, allowing for efficient use of space and reducing integrated circuit area.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If a 64-bit register file is used to support larger integer data sizes, then the addressable memory space increases, but the integrated circuit area occupied by the register file increases unnecessarily for applications that only require 32-bit integers

Engineering Contradiction:
Improveaddressable memory spaceVSAvoidregister file area
Core Design Contradiction:
Quantity of substanceVSArea of stationary object

Solution Approach 1:

The register file is segmented into multiple sections, each dedicated to a specific operand size (e.g., 32-bit section and 64-bit section). The map unit divides the register allocation task by selecting from appropriate sections based on the instruction's operand size requirement. This segmentation allows the processor to use only the necessary portion of the register file for each operation, reducing the effective area required while maintaining full 64-bit capability when needed.

Inventive Principle:
Principle #1Segmentation

2Reliability

If 64-bit registers are used for all operations, then native support for larger integer ranges is achieved, but memory usage increases and cache efficiency decreases for applications using smaller integers

Engineering Contradiction:
Improvenative support for larger integer rangesVSAvoidmemory latency and cache efficiency
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

The register file system dynamically adapts to the operand size requirements of each instruction through the map unit. Rather than statically allocating all registers as 64-bit, the system dynamically selects 32-bit or 64-bit register sections based on the actual needs of each operation. This dynamic adaptation ensures that memory and cache resources are used efficiently for small integers while maintaining the capability to handle large integers when required, thus reducing unnecessary memory latency and improving cache efficiency.

Inventive Principle:
Principle #15Dynamics

3Area of stationary object

If the register file is implemented with multiple widths for different operand sizes, then the integrated circuit area is reduced, but the device complexity increases due to additional allocation logic

Engineering Contradiction:
Improveregister file areaVSAvoidallocation logic complexity
Core Design Contradiction:
Area of stationary objectVSDevice complexity

Solution Approach 1:

The map unit is designed as a universal allocation device that handles multiple operand sizes (32-bit and 64-bit) through a single unified structure. Rather than implementing separate allocation logic for each operand size, the map unit universally manages both 32-bit and 64-bit register sections, selecting the appropriate section based on the instruction type. This multi-functional design reduces overall device complexity by consolidating allocation logic into a single versatile component rather than requiring multiple specialized allocators.

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

Data Source

PatentUS9639369B2Split register file for operands of different sizes
Publication Date: 2017.05.02 APPLE INC
  • US9639369B2 patent drawing
  • US9639369B2 patent drawing
  • US9639369B2 patent drawing

AI summary

In an embodiment, a processor includes a register file having multiple widths corresponding to different operands sizes of a given data type implemented by the processor. For example, the integer register file may have 32 bit and 64 bit widths for 32 and 64 bit operand sizes. The register file may have a section of registers for each operand size, and the map unit may allocate registers from the appropriate section for each instruction operation based on the operand size of that instruction operation. The register file may consume less integrated circuit area than another register file having the same number of registers, all of which are implemented at the largest operand size. In some embodiments, only the register file and the map unit (specifically the free list management logic in the map unit) are changed to implement the multiple-width register file.