ARM's latest tool release makes it much easier to write DSP code for the ARM architecture. If you haven't considered using an ARM processor before, now may be the time.
A few weeks ago, ARM made announced a small but hugely important upgrade to its tools suite. According to the announcement,
…intrinsics support in the new suite for ARM DSP instruction set extensions, ETSI functions and TI C55x DSPs means that developers no longer need to write their signal processing operations in assembly language, but rather as C intrinsics. The work of register allocation and scheduling is done automatically by the compiler.
Here's why this matters: In the last few years, ARM cores have gotten enough computational power to be highly competitive with DSPs. However, the ARM tools were pretty lousy from a DSP programmer's perspective. For one thing, it was hard to convince the ARM compiler to use DSP instructions—particularly the SIMD instructions on ARM11 and later cores. If you wanted to get decent DSP performance, you were forced to write assembly code. With the latest tools release, you can access the DSP instructions by using intrinsics—a much faster, easier approach. If you stick with ETSI intrinsics, you also end up with highly portable code! (See this article for more on the ESTI intrinsics and on intrinsics in general.)
Even better, the new tools release supports the C55x DSP intrinsics. This makes it (relatively) easy to port code written for the C55x to an ARM processor. The C55x has an enormous established code base, so this is a major plus.
If that isn't enough to catch your attention, check out this second quote from the announcement:
For the first time, users developing for applications processors with the high-performance ARM NEON SIMD signal processing architecture can separately license an add-on vectorizing compiler that complements the RealView Development Suite 3.1.
The NEON extensions give the ARM processors serious DSP capabilities—think 'C64x and you're in the right ballpark. The availability of a vectorizing compiler makes an NEON-powered ARM a pretty attractive option. However, the NEON extensions are only available in processors targeting cellular handsets. So the new compiler is only interesting if you're developing a handset—or at least that's the case for now. It will be interesting to see what happens when ARM puts the NEON extensions in a more general-purpose processor. Who knows—maybe your next DSP will be an ARM!