Indirect Indexing for Parallel Table Lookups
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
3Productivity
If multiple read ports are added to enable parallel lookups, then the number of parallel lookups increases, but the device complexity increases
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.
Data Source
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.


