# general purpose microprocessor vs DSP(digital signal processor)?

I know that DSPs are specialized processors but i want to know what will happen if DSPs are replaced by general purpose processor in their applications? I know one application,mobile phone,will that work normally if DSP of mobile is replaced by a normal(general purpose microprocessor)

• slower, more expensive, or both. Jul 4 '20 at 20:22
• The problem with DSP chips is most are kinda shitty. It appears most high performance DSP operations are now performed on an FPGA. But soon everything will be done with neural compute hardware. Jul 4 '20 at 23:26
• Someone will have to write different software for the different processor. You can't just desolder the DSP and solder a non-DSP microprocessor and expect it to work. Jul 4 '20 at 23:47
• Old slides - bdti.com/MyBDTI/pubs/050307ESC_MPUs_vs_DSPs.pdf . Jul 5 '20 at 5:37
• By your last line,you mean,dsp processor will lose their worth in near future and will be replaced by general purpose processor in all their applications?
– engr
Jul 5 '20 at 7:08

On a basic level, in my opinion, a DSP chip must, as a minimum requirement, be able to optimally perform the convolution summation used to compute the output of an FIR filter.

$$y[n] = \sum\limits_{k=0}^{K-1} h[k] \, x[n-k]$$

$$y[n]$$ = FIR filter output

$$x[n]$$ = FIR filter input

$$h[k]$$ = impulse response of FIR filter (also FIR coefficients)

To do this in $$K$$ instructions, one must be able to in one instruction:

1. Do a multiplication and addition, implemented as a single multiply-accumulate (MAC) instruction.

2. Fetch both the delayed sample, $$x[n-k]$$ and the FIR coefficient $$h[k]$$ for the next MAC. To do both, this requires at least two data memory spaces: one for coefficient array $$h[k]$$, one for the signal array $$x[n]$$. Both spaces can be accessed in parallel (simultaneously). This is called a "Harvard Architecture".

3. Be able to saturate the results to defined maximum positive or negative values if the result exceeds that range.

4. Besides being able to saturate to the "rails", the Arithmetic Logic Unit (ALU) in the DSP should be able to round to the nearest LSB of the high-order bits (that will be output or saved to memory) based on the low-order bits of the accumulator.

5. To address the delayed samples in memory, the ability to do modulo arithmetic on the pointer to $$x[n-k]$$ is necessary. This implements a "circular queue" or "circular buffer" or "first-in-first-out" (FIFO) buffer which, in the audio DSP world, is just called a "delay line". The DSP programmer should not have to worry about when a pointer increments beyond the boundary of a circular queue requiring the pointer to be adjusted or wrapped around. The DSP chip should make that modulo adjustment to the pointer automatically.

6. In addition, for the FFT, the ability to do bit reversal or bit-reversed addressing is necessary along with some other handy instructions that make for efficient coding of FFT butterflies.

Now, in order to be a "DSP chip", it really should be able to do all of these operations without explicit instructions in the inner loops. They build it into the hardware of the ALU the means to perform those operations without explicit effort from the programmer (nor extra machine instruction cycles). Nothing prevents you from using a normal CPU to do all of these operations, even in a "high-level" language like C/C++ . And the general purpose CPU chip might be running at 5 GHz while the DSP chip is running at 500 MHz, so the 10x instruction speed might more than make up for the cost of all those extra instructions that the algorithm programmer must code.

• Importantly, extended precision accumulators! Jul 5 '20 at 0:11
• I'll admit I copied much of the text above from my comp.dsp post from 24 years ago and that was one of the items. but it's more of an issue with fixed-point and there are DSPs such as SHArCs that kinda half-way extend the precision for floating-point (40-bit float registers). i didn't want to make the answer fixed-point centric. Jul 5 '20 at 2:01
• Good answer overall; I upvoted it! Jul 5 '20 at 2:02
• thank you, Dan. Jul 5 '20 at 2:06
• Concluding from your last paragraph: " There isn't apparently much difference between both cases in terms of performance/speed but in case of normal(general purpose microprocessor) ,extra code lines need to be introduced to balance the hardware benefits of dsp?
– engr
Jul 5 '20 at 7:07