DSP on General Purpose Processors (con’t)
Programming is considerably tougher
- C/C++ compilers do not generate native signal processing code except Metrowerks CodeWarrior 5 gives MMX code
- Libraries of routines using native signal processing
- Hand code using in-line assembly for best performance
- Pack/unpack data not aligned on SIMD word boundaries
- 50-cycle penalty to switch to MMX; 0 penalty for VIS
- Saturation arithmetic in MMX; not supported in VIS
- Extended-precision accumulation in MMX; none in VIS
Speedup for applications
- Signal and image processing - 1.5:1 to 2:1
- Graphics - 4:1 to 6:1 (no packing/unpacking)