Case Study: Multi-Tiered Software Optimization

Submitted by BDTI on Wed, 09/27/2006 - 18:00

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.
 
Many signal processing software developers are experienced with only a subset of these four levels of optimizations. For example, an engineer with significant expertise in assembly-level optimizations may not be aware of key algorithmic transformations that would dramatically increase the performance of her code.
 
Unfortunately, if the code has been optimized in assembly language and still fails to meet its required metrics, it’s painful and time-consuming to revisit the higher levels of optimization, because doing so may require throwing out the initial assembly 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, contracting with a specialized services company can be an efficient way to get software that is thoroughly optimized at every level.
 
An algorithm development company recently engaged BDTI’s services to assess whether its proprietary algorithm could be made to run in real-time on a processor that had modest signal processing capabilities. BDTI’s analysis indicated that it could, but only with an aggressive optimization effort. The company then engaged BDTI’s services to create an optimized implementation of the algorithm on the target processor.
 
To meet the required performance targets, BDTI determined that the algorithm would need to be reworked. Based on an in-depth understanding of both the algorithm and the target processor, BDTI’s engineers proposed revisions to the algorithm that resulted in a minimal effect on its end-to-end behavior, but yielded significant savings in the processing load. In addition, BDTI carefully architected the software to make efficient use of the processor’s relatively limited memory bandwidth. Once the design of the algorithm and software architecture were in place, BDTI implemented and hand-optimized the algorithm in assembly language. The final result was an algorithm that ran in real time, and a client that was able to deliver what its customers needed.
 
To learn how BDTI can help ensure that your software hits its performance targets the first time, contact Jeremy Giddings at +1 (925) 954 1411 or giddings@BDTI.com.
 

Add new comment

Log in to post comments