ARMed solutions to the DSP war.

Digital Signal Processing made Easy by ARM Architecture

What does ARM have to do with Digital Signal Processing (DSP)?

But that still doesn't answer the question, why the ARM processor for this job?

How is this co-processor situation with the Piccolo better for DSP?

So, all this builds up to something. What does this type of system look like, you ask?

Well here it is -- the Piccolo Architecture


Shown here at top-left is the set of general-purpose registers all of which are programmer accessible and contains thirty-two 16-bit registers or sixteen 32-bit registers to maximize data storage local to the piccolo processor along with four extended precision 48-bit registers. At the bottom are buffers for input and output to minimize memory accesses as well as stalls due to structural hazards encountered by the ARM co-processor interface.

Other notable hardware is a 32-bit barrel shifter for fast scaling of data, 16 * 16 single cycle multiplier, with built in support for extended precision arithmetic, and a split ALU for single-cycle dual 16-bit arithmetic and logical operations in one instruction word or one 32-bit data item arithmetic or logical operation.

Registers have a re-mapping scheme for code optimization and flexibility and there is four nestable zero-overhead hardware loop constructs for executing DSP algorithms.

Looks rather simple, doesn't it. But, a good question you might ask is how does the ARM co-processor interface work? And wouldn't there be a lot of contention between processors sharing data?

Lets start by describing the co-processor architecture support itself. ARM supports a general-purpose extension of its instruction set by adding hardware co-processors.

Now lets look at the interface.

  1. Cpi (from ARM to all co-processors).

    A signal for "Co-Processor Instruction," which indicates that ARM has identified a coprocessor instruction and wants it executed.

  2. Cpa (from co-processor to ARM).

    A signal for "Co-Processor Absent," which indicates to the ARM that there is no co-processor available to execute the current instruction.

  3. Cpb (from co-processor to ARM).

A signal for "Co-Processor Busy," which tells ARM that the co-processor cannot begin execution of the instruction yet.

What results come from the Hand-shaking? This is the interesting part!

Once the co-processor has received the instruction and it is sitting and waiting for execution there are four possible outcomes based on what hand-shaking occurred.

  1. The ARM may not choose to execute this instruction (does not assert cpi), possibly because it fell within a branch shadow or because of some failed condition test (All ARM instructions are conditionally executed.). Result - all co-processors discard instruction.
  2. ARM decides to execute (asserts cpi), but no co-processor can take it so cpa stays active, ARM will take the undefined instruction trap and use software to recover.
  3. ARM decides to execute and co-processor accepts, but cannot execute yet. Co-processor takes cpa low but leaves cpb high; meanwhile, ARM "busy-waits" until co-processor takes cpb low, stalling instruction stream. However ARM will break off for interrupts.
  4. ARM decides to execute and co-processor accepts for immediate execution. Cpi, cpa and cpb are all taken low and both sides commit to complete the instruction.

Special note: Pre-emptive execution.

A co-processor may begin execution of an instruction as soon as receiving in pipeline as long as it can recover state if hand-shaking does not complete.

After all that what can we say?

In Conclusion, This type of processing in digital signals is not just a trend; It has become a way of life. As anyone sitting in a college course can tell you, it seems as if at least once per lecture a cell phone goes off. People turn the damn thing off for an hour!

Cell phones are everywhere. And, why? Because they are so cheap, and rather handy to have around. But, that is not the end of DSP. Cars, televisions, microwaves, stereos, watches, PDAs -- the list goes on -- all use this technology. ARM's Piccolo and its co-processor ideology are a move in the right direction. It has provided an architecture that has balanced the trade-off between performance, cost, and power consumption. ARM has emerged as the current leader in this category a fleeting achievement in the computer world. But, there is more yet to come.

Main | Top