Implicit Global Pointer Relative Addressing for Memory Access

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing instruction set architectures (ISAs) for memory access are inefficient due to the need for multiple instructions to access global data, particularly when using displacement addressing or constant pool addressing, and limited address ranges in PC-relative and GP-relative addressing modes.

Innovation Solution

The introduction of an ISA with instructions that implicitly identify the Global Pointer (GP) register as an operand, allowing for extended offset ranges and immediate values, thereby reducing the number of instructions required for global memory access and increasing code density.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If displacement addressing or constant pool addressing is used to access global data, then memory access can be performed, but multiple instructions are required which reduces code density and efficiency

Engineering Contradiction:
Improvememory access efficiencyVSAvoidnumber of instructions
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent combines the base register value and offset into a single unified address generation operation. By implicitly using the GP register as the base and allowing the offset field in the instruction to directly combine with GP to form the complete address, the patent merges what would traditionally require separate instructions (loading base register and performing address calculation) into a single memory access instruction.

Inventive Principle:
Principle #5Merging (Combining)

2Device complexity

If PC-relative or GP-relative addressing modes are used, then code density improves, but the address range is limited

Engineering Contradiction:
Improvecode densityVSAvoidaddress range
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The patent extends the address range by effectively adding another dimension to the offset field. By allowing the offset to be combined with the GP register in a way that utilizes the full register width (e.g., combining a 16-bit offset with the upper bits of GP to form a 32-bit address), the patent expands the accessible address space from what would be limited by a simple relative offset to a much larger range while maintaining the single-instruction format.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

3Adaptability or versatility

If explicit base register identification is included in instructions, then flexibility is maintained, but instruction bits are consumed reducing offset size

Engineering Contradiction:
Improveregister selection flexibilityVSAvoidoffset size
Core Design Contradiction:
Adaptability or versatilityVSLength of moving object

Solution Approach 1:

The patent extracts the base register identification from the instruction format by implicitly designating the GP register as the base. This removes the need for explicit base register fields in instructions that use GP-relative addressing, freeing up instruction bits that can then be allocated to extend the offset field size and thereby increase the accessible address range.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS20250130806A1Implicit Global Pointer Relative Addressing for Global Memory Access
Publication Date: 2025.04.24 MIPS TECH INC
  • US20250130806A1 patent drawing
  • US20250130806A1 patent drawing
  • US20250130806A1 patent drawing

AI summary

Instruction set architectures (ISAs) and apparatus and methods related thereto comprise an instruction set that includes one or more instructions which identify the global pointer (GP) register as an operand (e.g., base register or source register) of the instruction. Identification can be implicit. By implicitly identifying the GP register as an operand of the instruction, one or more bits of the instruction that were dedicated to explicitly identifying the operand (e.g., base register or source register) can be used to extend the size of one or more other operands, such as the offset or immediate, to provide longer offsets or immediates.