Software Development

Jeff Bier’s Impulse Response—Hanging by Threads

Multithreaded programming isn't a new idea, but it's currently experiencing a major upswing in attention. That's because many multi-core chip vendors are currently pushing multithreading as the best way to harness their chips' processing horsepower.  But a recent influential paper by Dr. Edward Lee argues that multi-threaded application programming, as commonly practiced, is a flawed methodology that invites a range of nasty, hard-to-identify bugs. Dr. Lee is a professor of EECS at UC Read more...

Getting Better DSP Code Out of Your Compiler

Compiling digital signal processing application code is not a push-button process—at least, not unless you're willing to settle for inefficient code. Signal processing algorithms (and the processors commonly used to run them) have specialized characteristics, and compilers usually can't generate efficient code for them without some level of programmer intervention. Learning how to coax efficient signal processing object code out of a compiler is an important skill, and can reduce (or eliminate Read more...

PicoChip: Defying the Odds

Editor’s Note: The past year or so has brought a wave of parallel-processor start-ups pursuing digital signal processing applications.  But what about the previous wave?  In the late 1990s and into 2001, a large number of start-ups emerged with unique processor architectures targeting applications like wireless infrastructure.  The vast majority of these, such as Chameleon, Morphics, and Quicksilver, are long gone.  PicoChip, founded in 2000, is an interesting exception.  In this article, Read more...

Implementing SIMD in Software

Many high-performance DSP and general-purpose processors are equipped with SIMD single-instruction, multiple data) hardware and instructions. SIMD enables processors to execute a single instruction (say, an addition) on multiple independent sets of data in parallel, producing multiple independent results. SIMD support has become increasingly common because it improves performance on many types of DSP-oriented applications (which tend to perform the same operations over and over again). But Read more...

Texas Instruments Announces DaVinci Family Extensions

Texas Instruments, Inc. (TI) this week announced four new “DaVinci”-branded processors: the TMS320DM6437, TMS320DM6435, TMS320DM6433 and TMS320DM6431. Priced at $10-23, the media processors target video applications in the car and the home. (All prices in this article are for 10,000 unit quantities.) The new devices are architecturally similar to the first DaVinci chips, the ‘DM6446 and ‘DM6443. These chips and the new ‘DM643x devices both feature a ‘C64x+ core and varying assortments of 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’ 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...

Case Study: Algorithm IP Companies Focus on the Algorithm

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

Creating Embedded-Friendly Reference Code

Say you’ve just developed a new digital signal processing algorithm—a new audio or video codec, for example. The algorithm is intended to be ported to multiple embedded processors, including general-purpose processors (like the ARM9) and digital signal processors (like the Texas Instruments TMS320C55x). Porting an algorithm to an embedded processor is a lot of work, but many of the steps involved are the same regardless of the target processor. Therefore, it makes sense to create a version of Read more...

Case Study: Reducing Product-Development Risk

To stay competitive, technology companies must consistently develop strong new products. This is particularly true for companies offering processors, tools, or systems that incorporate signal processing technology. Unfortunately, developing a major new product is risky. New products require many design decisions, and it is easy to make poor choices. Common design mistakes include: Overlooking promising design options or valuable resources such as off-the-shelf components Read more...