Indirect Indexing for Parallel Table Lookups

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing computer systems face performance limitations when performing large numbers of table lookups, particularly in applications like video compression and encryption, as conventional methods struggle to efficiently handle repeated lookups in large lookup tables that do not fit within a single register.

Innovation Solution

The implementation of indirect indexing for general-purpose registers, allowing multiple read ports per functional unit to enable parallel table lookups, thereby increasing the number of register locations that can be accessed per instruction and improving performance by allowing multiple lookups to be performed simultaneously.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If conventional memory-based table lookups are used, then the lookup speed can be very high, but the overall performance is limited when very large numbers of lookups are required

Engineering Contradiction:
Improvelookup throughputVSAvoidtime for repeated lookups
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent segments the table lookup operation into two phases: pre-computation phase where table entries are loaded into register files, and execution phase where indexed registers are read out. This segmentation allows the expensive memory access to be done once during pre-computation, then rapid register reads during execution, resolving the contradiction between high lookup speed and time loss in repeated lookups.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies preliminary action by loading table entries into register files before the actual lookup operations. The index-register file is pre-loaded with indices, and the general-purpose register file is pre-loaded with table data. This preliminary loading eliminates repeated memory accesses during the main computation loop, dramatically improving throughput for repeated lookups.

Inventive Principle:
Principle #10Preliminary action

2Quantity of substance

If lookup tables are held in main memory, then the table size can be very large, but the access speed for repeated lookups is limited

Engineering Contradiction:
Improvetable sizeVSAvoidlookup access speed
Core Design Contradiction:
Quantity of substanceVSSpeed

Solution Approach 1:

The patent introduces register files as intermediary storage between main memory and the functional units. The index-register file and general-purpose register file act as intermediaries that cache table data close to the execution units. This intermediary layer allows fast register reads for repeated lookups while maintaining the ability to hold large tables in memory, resolving the contradiction between table size and access speed.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If multiple read ports are added to enable parallel lookups, then the number of parallel lookups increases, but the device complexity increases

Engineering Contradiction:
Improvenumber of parallel lookupsVSAvoidnumber of read ports
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent makes the register file structure universal by allowing the same register file to serve multiple functional units with multiple read ports each. The index-register file and general-purpose register file can be accessed by any functional unit through any read port, enabling flexible parallel lookups without requiring dedicated hardware paths for each functional unit, thus managing complexity while maximizing productivity.

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

Data Source

PatentUS8452945B2Indirect indexing instructions
Publication Date: 2013.05.28 HEWLETT PACKARD ENTERPRISE DEV LP
  • US8452945B2 patent drawing
  • US8452945B2 patent drawing
  • US8452945B2 patent drawing

AI summary

A data processor includes an instruction decoder, an execution unit, a general-purpose register file, and an index-register file. The instruction set for the data processor includes indirect-indexing instructions to facilitate table lookups. When executing such an instruction, the execution unit reads an index stored at an index-register location specified by the instruction. The index refers to a general-purpose register location, which is then read and copied to a general-purpose register location as specified by the instruction. The disclosed execution unit includes four functional units, each with two read ports and a write port so that eight table lookups can be performed in parallel.