2D Execution Lane Array for Versatile Image Processing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Traditional image processing technologies face a tradeoff between energy efficiency and versatility, with software-based processors consuming more energy due to finer grained data structures and custom hardware processors being limited in application flexibility.
Innovation Solution
A technology platform featuring a two-dimensional execution lane array and a two-dimensional shift register, enabling a versatile application software development environment that processes larger blocks of data efficiently while allowing for a wide range of image processing tasks, including kernels for convolutions, denoising, and Fourier transformations.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If software-based general purpose processors are used for image processing, then versatility and application software development capability are improved, but energy consumption per unit of data increases
Solution Approach 1:
The processor is segmented into multiple execution lanes (e.g., 16x16 array) that can operate independently and in parallel. Each lane can be configured for different operations, allowing the system to process different data types and operations simultaneously, thus maintaining versatility while improving energy efficiency through parallel specialized processing.
Solution Approach 2:
The execution lanes are dynamically configurable through a programming model that allows runtime reconfiguration of lane behavior. The system can switch between different processing modes (e.g., integer operations, floating point operations, different data types) without hardware changes, maintaining adaptability while optimizing for specific tasks to reduce energy consumption.
2Use of energy by moving object
If custom designed fixed function circuitry is used for image processing, then power consumption per unit of data is reduced, but the set of performable tasks becomes limited
Solution Approach 1:
Each execution lane is designed as a universal processing unit that can perform multiple operations (arithmetic, logical, memory access) depending on configuration. The same hardware structure can be programmed to execute different algorithms and process different data types, providing fixed-function efficiency for each specific task while maintaining overall system versatility.
Solution Approach 2:
The system changes operational parameters (data types, operation modes, lane configurations) through software programming rather than hardware modification. This allows the fixed-function circuitry to be reconfigured for different tasks by changing control parameters, maintaining energy efficiency while expanding the range of performable tasks.
3Use of energy by moving object
If larger blocks of data are processed using custom circuits, then power consumption per unit of data is reduced, but flexibility in processing different data types is lost
Solution Approach 1:
A programming model and control layer act as intermediaries between the software and the execution lanes. This intermediary translates high-level programming instructions into configurations that optimize data block processing, allowing the system to process larger data blocks efficiently while maintaining the ability to handle different data types through software-controlled parameter adjustment.
Data Source
Figure 1
Figure 2a
Figure 2b
AI summary
A method is described that includes, on an image processor having a two dimensional execution lane array and a two dimensional shift register array, doubling a simultaneous shift amount of multiple rows or columns of the two dimensional shift register array with each next iteration. The method also includes executing one or more instructions within respective lanes of the two dimensional execution lane array in between shifts of iterations. Another method is described that includes, on an image processor having a two dimensional execution lane array and a two dimensional shift register array, repeatedly executing one or more instructions within respective lanes of the execution lane array that select between content in different registers of a same array location in between repeated simultaneous shifts of multiple rows or columns of data in the two dimensional shift register array.