Table of Contents
DSP Software Optimization Techniques for the Latest Processors
Optimization
Why Optimize?
The Light and Dark Sideof Optimization
Optimization for Modern Processors
Where to Optimize?
Application Profiling
Application Profiling (cont’d)
High-Level Language Optimizations
Compiler Shortcomings
High-Level Language Optimizations
Simplify Complex Statements
Simplify Pointers
Arrange Data in Memory Banks
Help the Compiler
Loop Optimization
A Recipe for Loop Optimization
Profiling an FIR Filter on a DSP
Four Categories of Algorithmic Transformations, With Examples
1. Unrolling Across Outer Loops
Block FIR Filter using "Zipping"
Radix-2 vs Radix-4 FFT Butterfly Structures
2. Combining Loops
LMS Adaptive FIR Filter
3. Moving Operations Outside Loop
Circular Buffering for FIR Filter
Radix-2 FFT
4. Arranging Data in Memory
IIR Filter Biquad Section
Radix-2 FFT
Scheduling Techniques
Scheduling Techniques
Software Pipelining
Software Pipelining
FIR Filter on 'C62xx
FIR Filter on 'C62xx
Loop Unrolling
Vector Addition on TMS320C2700
Dot Product on TigerSHARC
Dot Product on TigerSHARC
FIR Filter on MMX Pentium
FIR on MMX Pentium
Don’t Follow the Rules
Specialized Instructions
Non-Conventional Useof Execution Units
Other Tweaks
If Algorithmic Transformations Don’t Help...
Conclusions
For More Information...
|