嵌入式CPU和DSP的区别应该只在于一个偏重控制一个偏重运算了。CPU(Central Processing Unit,中央处理器)发展出来三个分枝,一个是DSP(Digital Signal Processing/Processor,数字信号处理),另外两个是MCU(Micro Control Unit,微控制器单元)和MPU(Micro Processor Unit,微处理器单元)。MCU集成了片上外围器件;MPU不带外围器件(例如存储器阵列),是高度集成的通用结构的处理器,是去除了集成外设的MCU;DSP运算能力强,擅长很多的重复数据运算,而MCU则适合不同信息源的多种数据的处理诊断和运算,侧重于控制,速度并不如DSP。单片机偏于一般的控制和事务型处理,而DSP适合数字信号处理的各种运算,FPGA由于其极强的灵活性和适应性,一般用于产品的原型开发,在航天领域有广泛应用。ARM一般嵌入 一些微操作系统,如Windows CE、Linux等,实时性强,提供简单友好的图形界面,便于扩展,有很好的移植性,主要用于复杂控制。从表面上来看,DSP与标准微处理器有许多共同的地方:一个以ALU为核心的处理器、地址和数据总线、RAM、ROM以及I/O端口,从广义上讲,DSP、微处理器和微控制器(单片机)等都属于处理器,可以说DSP是一种CPU。但DSP和一般的CPU又不同:
首先是体系结构:CPU是冯.诺伊曼结构的,而DSP有分开的代码和数据总线即“哈佛结构”,这样在同一个时钟周期内可以进行多次存储器访问——这是因为数据总线也往往有好几组。有了这种体系结构,DSP就可以在单个时钟周期内取出一条指令和一个或者两个(或者更多)的操作数。
标准化和通用性:CPU的标准化和通用性做得很好,支持操作系统,所以以CPU为核心的系统方便人机交互以及和标准接口设备通信,非常方便而且不需要硬件开发了;但这也使得CPU外设接口电路比较复杂,DSP主要还是用来开发嵌入式的信号处理系统了,不强调人机交互,一般不需要很多通信接口,因此结构也较为简单,便于开发。如果只是着眼于嵌入式应用的话,嵌入式CPU和DSP的区别应该只在于一个偏重控制一个偏重运算了。
流水线结构:大多数DSP都拥有流水结构,即每条指令都由片内多个功能单元分别完成取指、译码、取数、执行等步骤,这样可以大大提高系统的执行效率。但流水线的采用也增加了软件设计的难度,要求设计者在程序设计中考虑流水的需要。
快速乘法器:信号处理算法往往大量用到乘加(multiply-accumulate,MAC)运算。DSP有专用的硬件乘法器,它可以在一个时钟周期内完成MAC运算。硬件乘法器占用了DSP芯片面积的很大一部分。(与之相反,通用CPU采用一种较慢的、迭代的乘法技术,它可以在多个时钟周期内完成一次乘法运算,但是占用了较少了硅片资源)。
地址发生器:DSP有专用的硬件地址发生单元,这样它可以支持许多信号处理算法所要求的特定数据地址模式。这包括前(后)增(减)、环状数据缓冲的模地址以及FFT的比特倒置地址。地址发生器单元与主ALU和乘法器并行工作,这就进一步增加了DSP可以在一个时钟周期内可以完成的工作量。
硬件辅助循环:信号处理算法常常需要执行紧密的指令循环。对硬件辅助循环的支持,可以让DSP高效的循环执行代码块而无需让流水线停转或者让软件来测试循环终止条件。
低功耗:DSP的功耗较小,通常在0.5W到4W,采用低功耗的DSP甚至只有0.05W,可用电池供电,很适合嵌入式系统;而CPU的功耗通常在20W以上。
CPU:针对事物,如打开网页、word文档等,范围比较宽广DSP:针对某一领域,如打开一播放器(CPU可以),如用高清模式,则用DSP处理
--------------------------------------------------------------------------------
本文来自:我爱研发网(52RD.com) - R&D大本营
详细出处:http://www.52rd.com/BBS/Archive_Thread.asp?SID=159111&TID=3