Digital signal processing algorithms are increasingly important in an expanding range of embedded systems. For example, compute-intensive multimedia functions are finding their way into applications from toys to appliances to telephones. As a result, a growing number of system developers face a daunting challenge: delivering implementations of DSP algorithms that are sufficiently optimized to meet demanding MIPS, memory, and cost requirements while also meeting aggressive schedules. DSP algorithms tend to be computationally demanding, so careful optimization is typically required in order to field a competitive system. But few development groups have the skills and time required to perform this specialized optimization work while meeting project schedules.
To obtain the most efficient code, signal processing software typically 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 best result—quickly—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 aggressive, engaging the services of specialists can be an efficient way to obtain software that is thoroughly optimized at every level.
A toy development company recently needed to obtain a highly optimized implementation of a set of image processing algorithms to fit on a low-cost processor. BDTI devised and implemented an optimization strategy that helped the company accelerate time to market and reduce risk. For example, at the software-architecture level, BDTI analyzed the limited capabilities of the processor’s memory system, and designed data flows that minimized associated performance bottlenecks. 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. Leveraging its long experience with such projects, BDTI was able to deliver the needed code ahead of schedule and under budget, enabling the toy company to reduce its overall product development cost and risk.
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