DSP

通用处理器(GPP)与DSP处理器的区别

2019-07-13 10:16发布

首先从最明显的差别说起:
GPP是通用的处理器,而DSP是专用处理器,专门处理高密集型重复型数据而设置的。     (1)处理器的架构:
      传统上,GPP采用冯.诺依曼存储器结构,程序与数据共用一个存储器空间,通用一组总线(一个地址总线和一个数据总线)链接到处理器核。虽然现在典型的高性能GPP都包含两个片内高速缓存(一个数据,一个指令)直接连到处理器核,以加快运行时的访问速度。(这种结构有点像哈佛结构了,但还是有很大的区别)。
而DSP采用的是改善的哈佛结构,数据存储器跟程序存储器是分开的(为了能同时访问到更多的信息,片内ROM,RAM分成若干块),而且有多条总线链接到处理器核,允许同时对他们进行访问。     (2)硬件乘法器MAC
       通用的处理器,乘法运算是利用软件实现的,一次乘法往往需要多个机器周期才能完成,效率较低,为了提高DSP处理器的运算速度,主流的DSP都毫不例外的设置了硬件乘累加器(MAC)。     (3)独立的直接存储器访问DMA(direct memory access)
       信号的高速处理,必须有高速的数据访问和传输与之配合,DSP处理器都为DMA单独设置了完全独立的总线和控制器,进行数据传输的时候不影响CPU及其总线的工作,这是与通用CPU很不一样的地方。     (4)多个独立的执行单元:MAC,地址发生器DAG,移位器等
       在通用CPU中,数据地址的产生跟数据的处理都是由算术逻辑单元ALU完成的。而在DSP中往往设置专门的数据地址发生器(DAG),移位器等,甚至设置多个,可以高效的实现复杂的寻址,数据处理。数据地址的产生于CPU是同时工作的,从而节省了CPU的时间,提高了信号处理的速度。     (5)GPP 使用控制逻辑来决定哪些数据和指令字存储在片内的高速缓存里,其程序员并不加以指定(也可能根本不知道)。与此相反,DSP 使用多个片内存储器和多组总线来保证每个指令周期内存储器的多次访问。在使用DSP 时,程序员要明确地控制哪些数据和指令要存储在片内存储器中。程序员在写程序时,必须保证处理器能够有效地使用其双总线。
      此外,DSP 处理器几乎都不具备数据高速缓存。这是因为DSP 的典型数据是数据流。也就是说,DSP 处理器对每个数据样本做计算后,就丢弃了,几乎不再重复使用。     (6)零开销循环:
      DSP算法的一个共同的特点即大多数的处理时间是花在执行较小的循环上,所以大多数的DSP都有专门的硬件,用于零开销循环。所谓零开销循环是指处理器在执行循环时,不用花时间去检查循环计数器的值、条件转移到循环的顶部、将循环计数器减1。
      与此相反,GPP的循环使用软件来实现。某些高性能的GPP使用转移预报硬件,几乎达到与硬件支持的零开销循环同样的效果。