What are DSPs all about and how does one take advantage of them?
    
    
    RISC
 ‐pipelining
 ‐superscalar architectures
 ‐reduced (but powerful) instruction sets
 ‐register based architecture
 ‐single cycle instructions
    
    
     
    
    Multiply and accumulate (MAC)
    
    
     
    
    Vector and parallel operation
 ‐fine grain parallelism: datalog, vector, anticipatory (should these be mentioned at all?)
    
    
     
    
    Bit inversion
 ‐as an addressing optimization for FFT and other radix‐two butterfly computations (Walsh‐Hadamard?)
    
    
     
    
    Modulo and fractional addressing
 ‐for ring buffering and interpolation
    
    
     
    
    Conditional instructions
 ‐both in prefix forms and as embedded in all instructions (or CPU registers)
 ‐as size optimization/simplification over specialized branching instructions/speed optimization
  ‐when
   ‐branches can be avoided, and
   ‐pipelines stay full
    
    
     
    
    Cache pinning, banked memory and Harward architecture
 ‐pinning aka lockdown
 ‐locked instruction caches work as high level microcode
    
    
     
    
    I/O integration
 ‐esp. audio buses like AES/EBU and I2C(?)
    
    
     
    
    Coefficient generation and on‐chip constants
 ‐constant tables and lookup instructions