说DSP的硬件结构不得不说起它的CPU结构,世界上的CPU结构从上个世纪四十年代起CPU发展的时候就分为两大种类,一种是冯•••诺依曼结构(Von Neuman);另一种是哈佛结构(Harvard);冯•••诺依曼结构主要用于通用的处理器中,而哈佛结构主要用于DSP处理器中。两个结构的构成见下图(1):
从上图可以显而易见的看出哈佛结构可以做并行处理,可以减少处理时间。
有两中指标可以表示处理器的处理速度:MIPS与MFLOPS。
MIPS--(million instruction per second),每秒百万次运算
MFLOPS――(million floating operation per second),浮点运算多少次每秒
现在市面上32的处理器可以达到90亿次浮点运算/秒(9000MFLOPS)
DSP的处理器可以进行流水作业(pipeline),一个数据从取指到存储需要经过取指,译码,寻址,取数,运算,存储这六个步骤,流水作业可以让他们在单周内完成,怎么讲呢?举个例子就是说DSP处理器进行的是并行的处理,可以在一个周期内同时进行第一条数据的寻址,第二条数据的译码,第三条数据的取指,依次类推理解这个概念就不难了。这里需要理解的是单周期,不说说一个数据可以在一个周期内进行完所有的步骤而是一个相对概念,可以一个周期内同时处理不同数据的不同步骤。
DSP处理器中用两个通用处理器没有的东西,是什么呢?1,独立的硬件乘法器:在卷积,数字滤波,FFT,相关,矩阵运算等算法中都有ΣA(k)B(n-k)一类的运算大量的重复乘法和累加。通用计算机的乘法是用软件实现的,当然需要若干个周期;DSP用硬件乘法器,用MAC指令(取数,乘法,累加)在单周期内完成。2,独立的DMA总线与控制器:当然通用的计算机中也有DMA也不占用CPU资源但它是公用的不是独立的。取数是从总线上取的是从存储器中取的,虽然现在的时钟频率很高,但你要从总线上取数就要占用总线的时间,CPU的数据也是从总线上收发的,总线的时间占用了CPU只能暂时的挂起,等于变相的占用了CPU的资源。运算速度的快满取决于数据的吞吐量,有了硬件乘法器和独立的DMA总线与控制器,可想了DSP的处理速度会加快很多。有一组或多组独立的DMA总线与CPU的程序,数据总线并行处理,在不影响CPU工作的条件下,DMA目前已达到800Mbyte/s。
在CPU方面DSP的CPU与通用的CPU也有着不同的方面,通用的CPU由ALU(算术逻辑单元)与CU(控制逻辑单元)组成,通过软件实现;DSP的CPU设有独立的硬件乘法器,可在单周期内完成乘法运算。
硬件电路图中的MUX是多路器,可以理解为一个选择开关,选取多路中的一个数据输出。
我们在说DSP的硬件结构,关于浮点与定点是不得不说的。DSP分为定点和浮点两种,那种更好无法说,因为看你怎么用,用在什么方面,适合的永远是最好的。浮点格式是用指数形式表示的,其动态范围要比定点的要大的多,定点的DSP经常需要考虑溢出的问题,浮点DSP中基本上可以不考虑这个问题。为了保证底数的精度,假如浮点DSP做成32BIT的那么总线,寄存器,存储器等的宽度也相应的是32BIT的。在处理数据方面浮点的DSP速度更快一些,尤其在做浮点运算的时候,为什么呢?因为它就是为浮点运算所做的,当然了浮点的DSP价格也高一些,开发难度也大一些。
DSP将来发展的趋势,更高的运行速度和信号处理速度,多DSP协同工作,更方便的开发环境,更多的专用DSP,价格更低,性能更高,应用更广泛。