You are here:  Articles


 
 
 
INSIDE DSP ARTICLES  

Current Articles | Categories | Search

Inside DSP on Tools: Tools Make the Difference
By Jennifer Eyre, 6/15/2005

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, and simulator, that was good enough. Back then, some DSPs did not even have compilers—which was fine, since most engineers expected to work in assembly language anyway.

Times have changed. Today’s signal processing software developers expect—and require—much more help from their tools. The best tools have sophisticated, specialized features tuned specifically for developing signal processing software. Developers are increasingly relying on these features to help them write and optimize their signal processing software more efficiently. As a result, engineers today consider software development tools to be as important—or even more important—than processor architecture.

Complicated Apps and Architectures
Two key changes have caused software development tools to become critical. First, signal processing applications have become much bigger and more complex, making it impractical to write full applications in assembly language. Thus, good compilers and other high-level language tools have become essential.

Second, the processor architectures used in signal processing applications have become much more complicated. Today’s processors often execute multiple instructions per cycle. They have deep pipelines and multi-cycle instruction latencies; complex, multi-level memory architectures that may include dynamic caches; and a range of co-processors and smart peripherals. These processors are much more challenging software targets than the comparatively simple DSPs of a decade ago.

The increasing complexity of processor architectures is significant for signal processing software developers, who tend to work “closer to the metal” than other programmers. Signal processing applications generally have to be highly optimized to meet demanding speed, cost, and energy constraints. As a result, programmers must become intimately familiar with the processor’s architecture in order to develop tight, well-optimized code. The more complicated the architecture, the more complicated the programming and optimization effort. Good tools can make the difference between meeting key application constraints in a timely way and not.

How Applications are Developed
When a new signal processing application is developed, the programmer typically starts off by working in C. (For a discussion of C and other languages used in signal processing software development, see “Languages for Signal Processing Software Development.”)

Then the programmer evaluates the performance of the compiled code, which will almost certainly not be good enough to meet the constraints of the application. At this point the programmer may spend some time on C-level optimizations, trying to help the compiler do a better job. Or she might jump directly into assembly code. In either case, the programmer uses an iterative process of refining the code (whether in C or assembly), debugging it, and profiling it to identify bottlenecks.

The typical flow of signal processing software development is shown in Figure 1 along with the tools commonly used in each step.

Block diagram of typical signal processing software development flow, along with tools commonly used for each step.
Previous Page | Next Page
 
 
biometric
Advertise on InsideDSP
  
HomeAbout Inside DSPArticlesSearch ArticlesArchivesResourcesContact UsSubscribe to Inside DSPAdvertise with Inside DSP
Copyright 2006-2008 by BDTI  |  Terms Of Use  |  Privacy Statement
  |