Case Study: Multi-Tiered Software Optimization
While nearly all signal processing applications require some degree of software optimization, some applications require a sophisticated, multi-tiered optimization approach in order to meet their performance goals.
To obtain the most efficient code, DSP software must be optimized at four distinct levels. First, the software architecture and data flow must be designed to take maximum advantage of the processor’s resources. Second, the appropriate data types must be selected—too big and you’re wasting resources, too small and your system may not work. Third, the software must be optimized at the algorithm level—perhaps by combining multiple algorithms into a single processing step, or by substituting one algorithm for another. And last, the chosen algorithms must be mapped into processor instructions in a way that is clean and efficient, minimizing cycle-wasters like pipeline stalls and cache misses.
Obtaining the maximum possible performance requires expertise at all four levels. It’s painful and time-consuming, for example, to revisit higher levels of optimization after an initial optimization effort has focused on lower-level optimizations, because doing so may require throwing out the initial optimized code. A company may find itself scrambling to fix its software without having the in-house expertise to leverage all four optimization levels—or to know which ones are likely to yield the most benefits. When performance targets are particularly aggressive, engaging the services of specialists can be an efficient way to get software that is thoroughly optimized at every level.
An audio algorithm company recently was faced with the need to quickly obtain a highly optimized implementation of its proprietary algorithm for delivery to a key customer. To accelerate time to market and reduce risk, the company engaged BDTI’s engineering services. BDTI assisted the company at three optimization levels. At the algorithm level, BDTI evaluated whether substituting a different algorithm for a key portion of the application would reduce processing load. At the data type level, BDTI converted a MATLAB representation of the algorithm into fixed-point C code, selecting data types that efficiently utilized the processor’s resources while maintaining desired output quality. And at the code level, BDTI produced highly optimized, hand-crafted assembly code to achieve optimal performance for the most critical portions of the application on a fixed-point DSP processor.
To learn how BDTI can help ensure that your software hits its performance targets the first time, contact Jeremy Giddings at +1 510 451 1800 or giddings@BDTI.com.