Null Vector Insertion in Streaming Engines for Memory Bandwidth
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Digital signal processors face challenges in managing memory bandwidth and scheduling for real-time data processing, particularly in systems with complex multidimensional loops, which can lead to cache misses and reduced processing efficiency.
Innovation Solution
The implementation of an autonomous streaming engine that inserts null vectors into data streams without accessing system memory, optimizing memory bandwidth and data scheduling by managing multiple data streams with control logic and alignment networks, supporting six levels of nested iteration.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If the processor fetches data from memory for each element in multidimensional loops, then complete data processing can be achieved, but memory bandwidth is consumed and cache misses increase
Solution Approach 1:
The streaming engine performs preliminary actions by pre-fetching and buffering data elements from memory into an internal buffer before the processor needs them. This allows the processor to retrieve data from the buffer without consuming memory bandwidth during critical processing intervals, thereby reducing memory bandwidth consumption while maintaining data processing throughput.
Solution Approach 2:
The streaming engine acts as an intermediary between memory and the processor. It receives data from memory, processes it according to stream parameters (such as transposition, filtering, or formatting), and delivers processed data to the processor. This intermediary role allows data transformation and buffering that reduces direct memory access requirements, thereby reducing memory bandwidth consumption while maintaining productivity.
2Productivity
If the processor manages memory access and loop control for multidimensional arrays, then data processing is complete, but the number of scalar operations increases
Solution Approach 1:
The invention extracts loop control and data management functions from the processor and transfers them to the streaming engine. The streaming engine independently manages loop iteration, data buffering, and stream parameter configuration, freeing the processor from scalar operations related to loop maintenance. This extraction reduces the number of scalar operations while maintaining processing efficiency.
Solution Approach 2:
The streaming engine provides self-service by autonomously managing its own operation based on configuration parameters. It automatically handles loop control, data buffering, and stream processing without requiring continuous processor intervention. This self-service capability reduces the processor's scalar operation burden while maintaining high processing efficiency.
3Loss of energy
If null vectors are inserted into data streams, then memory bandwidth is optimized, but additional processing steps are required
Solution Approach 1:
The streaming engine acts as an intermediary that automatically inserts null vectors into data streams at specified positions without requiring additional processor intervention. This intermediary function handles the complexity of null vector insertion internally, optimizing memory bandwidth usage while keeping the processor's view of the operation simple.
Solution Approach 2:
The invention uses parameter changes to control null vector insertion. By configuring stream parameters (such as valid data indicators or null vector count parameters), the streaming engine automatically adjusts its behavior to insert null vectors where needed. This parameter-driven approach optimizes memory bandwidth usage while managing processing complexity through configuration rather than complex control logic.
Data Source
AI summary
Software instructions are executed on a processor within a computer system to configure a streaming engine with stream parameters to define a multidimensional array. The stream parameters define a size for each dimension of the multidimensional array, a null vector count (N), and a selected dimension. Data is fetched from a memory coupled to the streaming engine responsive to the stream parameters. A stream of vectors is formed for the multidimensional array responsive to the stream parameters from the data fetched from memory. N null stream vectors are inserted into the stream of vectors for the selected dimension without fetching respective null data from the memory.


