By BDTI, 10/10/2005
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 510
665 1600 or giddings@BDTI.com.
|