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