Case Study: Algorithm IP Companies Focus on the Algorithm

Submitted by BDTI on Wed, 07/19/2006 - 17:00

Companies that focus on DSP algorithm development are often at the cutting edge, delivering the ideas that drive new technologies.  For example, innovative compression, communications, and recognition algorithms have enabled numerous new products in recent years.  Unfortunately, it takes more than a great algorithm to be successful.  An algorithm is only as good as its implementation.  Without a well optimized implementation, even the best algorithm risks extinction in the marketplace.

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 modifying the algorithm. 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.

This process can be very time consuming, particularly for small algorithm development groups whose engineers specialize in algorithm development, not implementation.  Often such groups outsource this critical step to companies such as BDTI with experience in highly optimized software development. 

An algorithm development company recently engaged BDTI's services to create a highly optimized implementation of a proprietary video compression algorithm on a processor with modest signal processing capabilities. First, BDTI's engineers optimized the software architecture to optimize data flows.  Next, BDTI selected appropriate data types, and proposed minor changes to the algorithm to improve performance.  Then BDTI implemented key portions of the code in handcrafted assembly language.  While the processor's DSP capabilities were rather limited, BDTI was able to overcome these limitations with optimizations that utilized the processor in ways not envisioned by the processor designers.  For instance, although the processor did not support SIMD instructions, BDTI's analysis revealed cases where SIMD operations could be performed using combinations of non-SIMD instructions.  The final result was an algorithm implementation that exceeded its performance target.  With this code, BDTI's client was able to deliver what its customers needed without the expense and time delay of hiring its own team of implementation engineers. 

To learn how BDTI can help ensure that your software hits its performance targets the first time, contact Jeremy Giddings at +1 510-451-1000 begin_of_the_skype_highlighting            +1 510-451-1800      end_of_the_skype_highlighting or giddings@BDTI.com.

Add new comment

Log in to post comments