Software Development

Case Study: Managing Offshore Software Development

Increasingly, processor vendors need to deliver extensive software libraries optimized for their processors. In the realm of signal processing applications, this software may include large libraries of building-block functions (filters, transforms, etc.), application modules (such as audio or video compression algorithms), and complete end-product reference designs. To meet these software needs, many processor vendors are attracted to offshore software development firms due to their low Read more...

Jeff Bier’s Impulse Response—Suboptimal Optimization

Those of us who earn our livelihoods working with embedded signal processing software understand that optimization isn’t just something we do for fun (though often it is quite fun). Optimization is usually done to meet hard real-time constraints, trim product costs, or stretch battery life. We all know that the complexity of the processor core has a significant impact on how difficult it will be to optimize the code. But more and more, it’s critical to also consider the complexity of the Read more...

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 Read more...

Case Study–Benchmarks for Tools, Software Libraries, and More

System developers often rely on processor benchmarks to gauge system performance. However, the processor is just one of many components that determines overall performance. Fully understanding system performance requires careful analysis of many other elements, such as code-generation tools and third-party software libraries. Unfortunately, a host of factors can confound attempts to analyze these components. For example, it is difficult to prevent variations in programmer skill and style from Read more...

Inside DSP on Tools: Languages for Signal Processing Software Development

Alan Kamas contributed to this article. As processors have steadily become faster and less expensive, systems with signal processing algorithms have increasingly been implemented as software running on a processor. One of the first steps in the software development process is choosing the development language. Not too long ago, the choice of language was simple: only assembly language was efficient enough to meet the demands of most signal processing applications. Now that processors are Read more...

Inside DSP on Tools: Tools Make the Difference

Software development tools are much more sophisticated than they used to be. Nowhere is that more true than in the tools used for developing signal processing software. Ten years ago, most engineers choosing a processor for a signal processing application paid scant attention to the quality of the development tools. They were far more interested in processor architecture and key performance metrics like speed, energy consumption, and cost. As long as there was an assembler, linker, debugger, Read more...

Inside DSP on Tools: Software Building Blocks for Signal Processing Applications

System developers are obtaining more and more of their signal processing software from outside sources, making off-the-shelf software building blocks a vitally important element of the software development process. Figure 1 summarizes the types of software building blocks available today for signal processing applications.   Evolving software demands Off-the-shelf software building blocks are increasingly popular for a number of reasons. Perhaps the most important reason is that both signal Read more...

Inside DSP on Tools: Evaluating Software Development Tools

Developing a signal processing-based system—like a cell phone or media player—can be a lot of work. Just how much work is a function of many factors, including the complexity of the application, the complexity of the hardware, and, increasingly, the quality of the development tools. Signal processing applications are getting more complicated, as is the hardware that runs them. Engineers increasingly rely on powerful development tools to help them manage this complexity. These days, “ Read more...

Case Study—Benchmarks for Tools, Software Libraries, and More

System developers often rely on processor benchmarks to gauge system performance. However, the processor is just one of many components that determines overall performance. Fully understanding system performance requires careful analysis of many other elements, such as code-generation tools and third-party software libraries. Unfortunately, a host of factors can confound attempts to analyze these components. For example, it is difficult to prevent variations in programmer skill and style Read more...

Jeff Bier’s Impulse Response—Optimization: It’s Not Just for Compilers

Processor vendors targeting signal processing applications have put a lot of emphasis on compilers over the last few years. Many of the new processor announcements I’ve seen recently stress “compiler friendliness” as one of the main advantages of the new architecture. And vendors like to boast about the enormous amounts of time and money they’ve spent improving their compilers. Even in the era of gigahertz processors, it is hard to meet demanding performance and cost targets without Read more...