Permute Network for Non-Sequential Vector Data Streaming

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Digital signal processors face challenges in efficiently processing real-time data streams due to limitations in memory bandwidth and scheduling, particularly in applications requiring predictable non-sequential input patterns.

Innovation Solution

The implementation of a streaming engine within the DSP core that manages data streams by generating addresses, performing data formatting, and providing formatted data to the processor, enhancing memory bandwidth and reducing the processor's memory fetch tasks, thereby improving data scheduling and processing efficiency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a traditional memory access approach is used to load data registers, then the processor can execute instructions, but memory bandwidth is limited and cache miss stalls increase

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidcache miss stalls
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The streaming engine performs preliminary actions by pre-fetching and formatting data elements from memory into the data register file before the vector functional units need them. This includes generating addresses, permuting data elements into the required pattern, and making data ready in advance, thereby eliminating cache miss stalls and improving processing efficiency

Inventive Principle:
Principle #10Preliminary action

2Adaptability or versatility

If data is fetched sequentially from memory, then memory access is simple, but non-sequential input patterns required by video encoding cannot be achieved

Engineering Contradiction:
Improvedata pattern flexibilityVSAvoidmemory access complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The streaming engine acts as an intermediary between memory and the vector functional units. It implements a permute network that can arbitrarily permute data elements from sequential memory locations into non-sequential patterns required by video encoding algorithms, thereby providing data pattern flexibility without complicating the memory access interface

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The streaming engine is an autonomous unit that self-manages the complex task of generating addresses, permuting data elements, and formatting data without requiring intervention from the main processor or complex memory control logic. This keeps the memory access interface simple while achieving versatile data patterns

Inventive Principle:
Principle #25Self-service

3Power

If the processor handles all memory fetch tasks, then control is centralized, but bandwidth to functional units is reduced and scalar operations increase

Engineering Contradiction:
Improvebandwidth to functional unitsVSAvoidprocessor task complexity
Core Design Contradiction:
PowerVSDevice complexity

Solution Approach 1:

The system is segmented into distinct functional units: the streaming engine handles memory access, address generation, and data permutation tasks, while the vector functional units focus on data processing. This segmentation increases bandwidth to functional units by dedicating the streaming engine to data preparation and reduces processor complexity by offloading scalar operations

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS11669463B2Method and apparatus for permuting streamed data elements
Publication Date: 2023.06.06 TEXAS INSTRUMENTS INC
  • US11669463B2 patent drawing
  • US11669463B2 patent drawing
  • US11669463B2 patent drawing

AI summary

A method is provided that includes receiving, in a permute network, a plurality of data elements for a vector instruction from a streaming engine, and mapping, by the permute network, the plurality of data elements to vector locations for execution of the vector instruction by a vector functional unit in a vector data path of a processor.