70 likes | 163 Views
This paper discusses the trade-offs associated with software programmability in video processors, focusing on the impact on performance and efficiency. It explores programmable parameters such as slice types, modes, vectors, and coefficients, and their role in processing video data. Key insights include the implementation of fixed-function state machines, DMA (Direct Memory Access), and enhanced CPU accelerators to optimize video processing tasks such as decoding, prediction, deblocking, and color space conversion. This work aims to provide guidance for designers seeking the right balance between programmability and operational performance.
E N D
The Trade-Offs of Software Programmability in Video Processors Jonah Probell Sorin Cismas Amit Gulati Steve Leibson DesignCon 2005
Jonah Probell • Digital video & microprocessor designer • Entrepreneur • Intellectual property developer http://jonahprobell.com DesignCon 2005
Software Programmable struct parameters { slice_type, modes, vectors, coefficients }; loop { parameters = decode_symbols(bitstream); if(slice_type == intra) prediction = intra_pred(mode); else /* slice_type == inter */ predicted = frame_buffer[pred_frame] [row + row_vec][col + col_vec]; residuals = inverse_dct(coefficients); frame_buffer[frame][row][col] = deblock(prediction + residuals); } CPU DesignCon 2005
Fixed Function State Machine Fixed Function Hardwired display frame buffer memory DMA predicted modes / vectors + deblock filter symbol decode inverse DCT bitstream coefficients residuals DesignCon 2005
Enhanced CPU Accelerators coprocessors ISA extensions frame buffer memory struct parameters { slice_type, modes, vectors, coefficients }; loop { parameters = decode_symbols(bitstream); if(slice_type == intra) prediction = intra_pred(mode); else /* slice_type == inter */ predicted = frame_buffer[pred_frame] [row + row_vec][col + col_vec]; residuals = inverse_dct(coefficients); frame_buffer[frame][row][col] = deblock(prediction + residuals); } DMA deblock filter CPU inverse DCT DesignCon 2005
Multiprocessor display frame buffer memory DMA predicted communicate(); function(); communicate(); modes / vectors + deblock filter CPU bitstream symbol decode CPU inverse DCT CPU residuals coefficients communicate(); function(); communicate(); communicate(); function(); communicate(); DesignCon 2005
Other Video Tasks • Decompression • Symbol decode • Prediction DMA • Inverse DCT • Deblocking filter • Frame scaling • Color space conversion • Stream mixing • Stream synchronization • Overlays • Color correction • Interlacing • Digital audio decode and playback DesignCon 2005