Large Lookup Tables for Image Processors via Memory Segmentation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Image processors face challenges in processing large lookup tables due to memory constraints, where the tables do not fit within local memory banks, leading to compilation issues and reduced performance.
Innovation Solution
A compiler generates code to distribute large lookup tables across multiple local memory banks, allowing each execution lane to access only a portion of the table by using shift-register arrays to read necessary indexes and values from other lanes, enabling access to the entire table through shift and vector access sequences.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Speed
If lookup tables are stored in local memory banks to maximize access speed, then execution speed is improved, but the size of lookup tables is limited by memory bank capacity
Solution Approach 1:
The lookup table is divided into multiple segments or partitions, with each partition stored in a separate local memory bank. Each execution lane is assigned to access a specific partition, allowing the overall lookup table size to exceed the capacity of individual memory banks while maintaining fast local access speeds.
2Productivity
If local memory banks are split into multiple smaller banks for parallel access, then parallel processing capability is improved, but lookup table storage capacity per bank is reduced
Solution Approach 1:
The lookup table is segmented across multiple smaller memory banks, with each bank holding a portion of the overall table. This segmentation enables parallel access by different execution lanes simultaneously, improving productivity while the collective capacity of all banks accommodates the full lookup table size.
3Reliability
If lookup tables are replicated in every local memory bank to ensure accessibility, then access reliability is improved, but memory usage increases significantly
Solution Approach 1:
Instead of uniform replication, each local memory bank stores a different partition of the lookup table tailored to the specific needs of its associated execution lanes. This local optimization ensures that each bank contains the relevant data for its designated lanes, maintaining access reliability for those lanes while avoiding redundant storage across all banks.
Data Source
Figure 1
Figure 2
Figure 3A
AI summary
Methods, systems, and apparatus, including computer programs encoded on computer storage media, for supporting large lookup tables on an image processor. One of the methods includes receiving an input kernel program for an image processor having a two-dimensional array of execution lanes, a shift-register array, and a plurality of memory banks. If the kernel program has an instruction that reads a lookup table value for a lookup table partitioned across the plurality of memory banks, the instruction in the kernel program are replaced with a sequence of instructions that, when executed by an execution lane, causes the execution lane to read a first value from a local memory bank and a second value from the local memory bank on behalf of another execution lane belonging to a different group of execution lanes.