Parallel Software Hardware Block Processing Pipelines
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional block processing methods in video encoding pipelines process blocks sequentially in scan order, leading to inefficiencies due to the lack of parallel processing and dependency on upstream stages for configuration, which can result in latency and reduced processing efficiency.
Innovation Solution
Implementing a parallel block processing pipeline that combines software and hardware components, where the software pipeline runs ahead to configure the hardware pipeline by determining configurations for upcoming blocks based on information from upstream and previously processed blocks, allowing for knight's order processing and caching of neighbor data to reduce latency and improve efficiency.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If blocks are processed sequentially in scan order by a single pipeline, then the processing logic is simple and device complexity is low, but processing speed is slow and productivity is reduced
Solution Approach 1:
The processing pipeline is divided into multiple independent hardware pipelines (first hardware pipeline, second hardware pipeline, etc.) that can process different blocks simultaneously. Each hardware pipeline is further segmented into multiple stages (e.g., motion estimation stage, mode decision stage, transformation stage) that process different aspects of the block in parallel. This segmentation enables concurrent processing of multiple blocks without requiring a single complex monolithic pipeline.
Solution Approach 2:
A software pipeline is introduced that operates in advance of the hardware pipelines to pre-configure them. The software pipeline determines configurations for upcoming blocks before they reach the hardware pipelines, preparing configuration data and parameters ahead of time. This preliminary action allows hardware pipelines to immediately process blocks without waiting for configuration, thereby increasing processing speed without proportionally increasing hardware complexity.
2Adaptability or versatility
If a software pipeline configures hardware pipeline stages for each block, then processing flexibility and adaptability are improved, but latency increases due to sequential configuration
Solution Approach 1:
The software pipeline performs preliminary configuration of hardware pipelines by determining configurations for multiple upcoming blocks in advance. Configuration data for subsequent blocks is prepared and staged before the blocks actually arrive at the hardware pipelines. This advance preparation eliminates waiting time during block processing while maintaining the ability to adapt configurations based on block-specific requirements.
Solution Approach 2:
The system transitions from a single-dimensional sequential configuration model to a multi-dimensional parallel configuration model. Multiple hardware pipelines operate in parallel, each capable of independent configuration. The software pipeline manages configurations across this expanded dimensional space, assigning appropriate configurations to different pipelines based on block characteristics, thereby reducing latency through parallelism while preserving adaptability.
3Productivity
If multiple hardware pipelines process blocks in parallel, then productivity and processing throughput are improved, but device complexity and coordination overhead increase
Solution Approach 1:
Multiple hardware pipelines are designed with identical or similar stage structures (motion estimation, mode decision, transformation, etc.), making them universal and interchangeable. Each pipeline can process any block type with the same processing logic. This universality simplifies coordination because the software pipeline uses the same configuration methods for all hardware pipelines, reducing the complexity of managing diverse pipeline behaviors while maintaining high throughput through parallelism.
Data Source
AI summary
A block processing pipeline that includes a software pipeline and a hardware pipeline that run in parallel. The software pipeline runs at least one block ahead of the hardware pipeline. The stages of the pipeline may each include a hardware pipeline component that performs one or more operations on a current block at the stage. At least one stage of the pipeline may also include a software pipeline component that determines a configuration for the hardware component at the stage of the pipeline for processing a next block while the hardware component is processing the current block. The software pipeline component may determine the configuration according to information related to the next block obtained from an upstream stage of the pipeline. The software pipeline component may also obtain and use information related to a block that was previously processed at the stage.


