DSP处理器与通用处理器的比较
时间:2023-12-18 14:37:02
DSP与通用处理器的比较
1 支持密集乘法运算
GPP即使是一些现代化的乘法任务也不是设计的GPP,还法还需要多个指令周期。DSP处理器使用专门的硬件来实现单周期乘法。DSP处理器还增加了一个累加器寄存器来处理多个乘积和。累加器寄存器通常比其他寄存器宽,这被称为结果bits的额外bits避免溢出。
同时,为了充分体现特殊乘法积累硬件的好处,几乎所有的乘法DSP指令集包含显式指令集MAC指令。
2 存储器结构
传统上,GPP使用冯.诺依曼存储器结构。在这种结构中,只有一个存储空间通过一组总线(一个地址总线和一个数据总线)连接到处理器核。通常,在乘法过程中,至少有四个指令周期。
大多数DSP采用哈佛结构,将存储空间分为存储程序和数据两部分。它们有两组连接到处理器核的总线,允许同时访问。这种安排加倍了处理器存储器的带宽,更重要的是为处理器核提供数据和指令。在这种布局下,DSP实现单周期MAC指令。
另一个问题是典型的高性能GPP事实上,它包括两部电影中的高速缓存,一部分是数据,另一部分是指令,它们直接连接到处理器核,以加快运行时的访问速度。从物理上讲,这部电影中的双存储器和总线的结构几乎与哈佛大学相同。然而,从逻辑上讲,两者之间仍然存在重要差异。
GPP程序员没有指定哪些数据和指令字存储在电影中的高速缓存中(或者可能根本不知道)。与此相反,DSP使用多片内存储器和多组总线,确保每个指令周期内存储器的多次访问。在使用DSP程序员应该清楚地控制存储在片内存储器中的数据和指令。在编写程序时,程序员必须确保处理器能够有效地使用其双总线。
此外,DSP处理器几乎都不具备数据高速缓存。这是因为DSP典型的数据是数据流。也就是说,DSP计算每个数据样本后,处理器丢弃,几乎不再重复使用。
3 零开销循环
如果了解到DSP算法的一个共同特点是,大部分处理时间都花在执行较小的循环上,这很容易理解为什么大部分都花在了DSP零费用循环有专用硬件。所谓零费用循环,是指处理器在执行循环时,不需要花时间检查循环计数器的值和条件转移到循环顶部,将循环计数器减少1。
与此相反,GPP使用软件实现循环。一些高性能的GPP使用转移预测硬件几乎与硬件支持的零成本循环相同。
4 定点计算
大多数DSP使用定点计算,而不是浮点。DSP应用程序必须非常注意数字的准确性,浮点应该容易得多,但对DSP便宜也很重要。定点机比相应的浮点机便宜(更快)。为了不使用浮点机,保证数字的准确性,DSP在指令集和硬件方面,处理器支持饱和计算、舍入和移位。
5 特殊的寻址方式
DSP处理器通常支持特殊的地址搜索模式,对通常的信号处理操作和算法非常有用。例如,模块(循环)地址搜索(对实现数字滤波器延迟线非常有用)、位倒序地址搜索(对FFT非常有用)。这些非常特殊的寻址模式在GPP它不常用,只能用软件来实现。
6 预测执行时间
大多数的DSP应用(如蜂窝电话和调制解调器)都是严格的实时应用,所有的处理必须在指定的时间内完成。这就要求程序员准确地确定每个样本需要多少处理时间,或者,至少要知道,在最坏的情况下,需要多少时间。
假如打算用低成本的GPP为了完成实时信号处理的任务,预测执行时间可能不会成为问题,应该是低成本的GPP结构相对直接,执行时间更容易预测。然而,大多数实时DSP应用所需的处理能力是低成本的GPP不能提供的。
这时候,DSP对高性能GPP其优点是,即使使用高速缓存DSP,由程序员(而不是处理器)决定放入哪些指令,因此很容易判断指令是从高速缓存还是从存储器中读取。DSP一般不使用动态特性,如转移预测和推理执行。因此,由一段给定的代码来预测所要求的执行时间是完全直截了当的。因此,程序员可以确定芯片的性能限制。
7 定点DSP指令集
定点DSP指令集按两个目标设计:
使处理器能够在每个指令周期内完成多个操作,从而提高每个指令周期的计算效率。
将存贮DSP该程序的存储空间最小化(由于存储器对整个系统的成本影响很大,因此对成本敏感DSP在应用中尤为重要)。
要实现这些目标,DSP处理器的指令集通常允许程序员在一个指令中解释几个并行操作。例如,在一个指令中包含MAC操作,即同时移动一两个数据。在典型的例子中,一个指令包含计算FIR滤波器一节所需的所有操作。这种高效率付出的代价是,其指令集既不直观,也不容易使用(与GPP与指令集相比)。
GPP程序通常不在乎处理器的指令集是否容易使用,因为它们通常使用C或CC 高级语言。而对于DSP对于程序员来说,不幸的是主要的DSP应用程序都是用汇编语言写的(至少部分是汇编语言优化的)。这里有两个原因先,大多数广泛使用的高级语言,如C,不适合典型描述DSP算法。其次,DSP多存储空间、多总线、不规则指令集、高度专业化的硬件等结构的复杂性使得难以为其编写高效的编译器。
即使用编译器编译C源代码DSP优化的任务仍然很重。DSP应用程序有大量的计算要求和严格的费用限制,这使得程序优化至关重要(至少是程序的关键部分)。因此,考虑选择DSP一个关键因素是是否有足够的能够更好地适应DSP程序员处理器指令集。
8 开发工具的要求
因为DSP大多数应用程序需要高度优化的代码DSP制造商提供一些开发工具来帮助程序员完成其优化工作。例如,大多数制造商提供处理器模拟工具,以准确地模拟处理器在每个指令周期内的活动。这些都是确保实时操作和代码优化的有用工具。
GPP厂商通常并不提供这样的工具,主要是因为GPP程序员通常不需要详细说明这一层的信息。GPP模拟工具指令周期缺乏模拟工具DSP应用程序开发能预测高性能,应用程序开发者面临的大问题GPP对于给定任务所需的周期数,无法解释如何提高代码的性能。
微处理器(Microprocessor)的分类
通用处理器(GPP)
采用冯.诺依曼结构,程序和数据的存储空间相结合
8-bit Apple(6502),NEC PC-8000(Z80)
8086/286/386/486/Pentium/Pentium II/ Pentium III
PowerPc 64-bit CPU(SUN Sparc,DEC Alpha, HP)
CISC 计算机指令复杂, RISC 简化计算机指令
提高计算速度、时钟频率、高速总线、多级Cashe,协处理器等
Single Chip Computer/ Micro Controller Unit(MCU)
除开通用CPU所具有的ALU和CU,还有存储器(RAM/ROM)寄存器有寄存器、时钟、计数器、定时器、串/并口A/D,D/A
INTEL MCS/48/51/96(98)
MOTOROLA HCS05/011
DSP
采用哈佛结构,程序和数据分开存储
如对FFT的专门优化
MCU与DSP的简单比较
MCU DSP
低档 高档 低档 高档
指令周期(ns) 600 40 50 5
乘加时间(ns) 1900 80 50 5
US$/MIPS 1.5 0.5 0.15 0.1
数字信号处理器的快速发展
由于超大规模集成电路技术的快速发展,数字信号处理技术,即过去20年DSP(Digital Signal Processor)技术也发展迅速,这一发展趋势将在未来十年内保持下去。根据世界半导体贸易统计组织发布的统计预测报告,2001~2006年可编程DSP市场预期增长率为27.2%。预期2006年DSP市场将达到141.9亿美元,增长率逐年上升,预计2005年增长率为34%。到2010年,DSP芯片的集成度将提高11倍,5亿个晶体管将集成在单个芯片上。目前DSP生产工艺为0.35μm转向0.25μm、0.18μm、0.13μm,2005年可能达到005年.075μm。
集成度的提高进一步缩小了硅片的面积,导致硅片面积的增加DSP芯片成本降低,价格降低。价格下跌促进了需求的上升和应用领域的扩张。DSP在计算机、通信和消费电子产品方面,已经从军用转向民用。C该领域得到了广泛的应用。DSP在通信领域应用最多,占72%,计算机占3%,消费和办公自动化占2%。从趋势来看,工业(尤其是变频电机控制)和消费品的应用份额会增加。
在通信领域,DSP产品涵盖从3G从无线基站到无线局域网的广泛应用,数字电视也离不开DSP。DSP语言处理的应用也是众所周知的,包括语言压缩和解压、语言合成、语言识别等。
使用计算机硬盘驱动器DSP技术可以大大提高访问速度、容量和体积,以便将来可能用于手持电脑。PC机中,DSP可加速图形处理功能。PC机器,也许每台PC不止一个DSP芯片。激光打印机、扫描仪、光盘机等需要大量数据传输的设备可用于计算机外设DSP技术。
DSP技术发展的另一个趋势是速度更快,功耗更低,DSP为了降低系统的噪声,提高系统的抗干扰能力,片外时钟有进一步降低的趋势,即外部使用几兆赫振荡器就足够了,片内采用压控振荡器锁环技术,将片内时钟速度提高到100MHz、200MHz乃至更高,会有更多的DSP电影中的时钟达到1GHz。预计到2010年,同类水平DSP功耗将降至原来的1/3。
DSP与CPU
如果使用普通计算机CPU为了处理算法,乘法和加法应调用相应的乘法和加法函数。如果是浮点数,通常CPU浮点运算需要移交给协处理。虽然协处理器的浮点运算速度可能很快,但加上CPU传输输入参数,然后取回计算结果的时间,会显得很慢;循环时,应有循环变量,判断每次循环变量加1后是否已循环n次,过程相对较慢。
而DSP则在硬件设计上针对这类计算采取了一些独特的设计,以求最快的运算速度,以至于趋于模拟电路的延迟时间。
DSP能在一个时钟周期内完成乘法和加法运算,并能并行地同时将下面运算要用到的两个参数传入相应的运算用寄存器。在乘法及乘加指令的执行方式上,DSP的小数乘法在算法上分定点算法DSP与浮点算法DSP。在定点类DSP中,小数点的位置是固定的,不论定点的DSP还是浮点的DSP,乘法器都是用硬件逻辑完成的,乘法可以在一个指令周期内完成。
在循环方面,DSP有诸如重复n次(Repeat n),或循环n次(DO Loop n)等指令,使DSP能迅速完成n次循环,而不必每次都检查是不是已经循环n次了。这就是DSP在做数字信号处理方面的优势与独到之处。也是DSP区别于CPU的地方。
DSP与CPU在结构方面的另一区别是,DSP往往采用哈佛结构,而传统的CPU多为冯.诺曼结构(Von Neuman)。冯.诺曼结构指的是将程序与数据统一编址,不区分存储器的程序空间和数据空间。而哈佛结构指将程序空间与数据空间分开编址,这样在DSP处理数据空间运算与数据传输的同时可以并行地从程序空间读取下一条指令。采用哈佛结构,将程序空间与数据空间分开编址的好处是速度快,读程序和读写数据可以同时进行。
DSP在内核设计方面还有一个特点是采用多重流水线结构,流水线结构的层次深度可以从3级到6级。程序的执行过程大致可分为读指令、指令译码、指令执行等几个阶段。DSP在第一个时钟周期内读第一条指令,在第二个周期译码第一条指令同时在第二个周期内读入第二条指令,在第三个时钟周期内执行第一条指令,译码第二条指令,同时读入第三条指令,这样虽然执行一条指令仍需要三个周期,可是由于并行的流水线处理,看起来好像每条指令都是在一个周期内完成的,这就是流水线结构。
DSP的特点
DSP在体系结构上与通用微处理器有很大的区别。下面是几个关键的不同点:
单周期指令:大多数DSP都拥有流水结构,它可以在一个时钟周期内执行一条语句。
快速乘法器:信号处理算法往往大量用到乘加(multiply-accumulate,MAC)运算。DSP有专用的硬件乘法器,它可以在一个时钟周期内完成MAC运算。硬件乘法器占用了DSP芯片面积的很大一部分。(与之相反,通用微处理器采用一种较慢的、迭代的乘法技术,它可以在多个时钟周期内完成一次乘法运算,但是占用了较少了硅片资源)。
多总线:DSP有分开的代码和数据总线(一般用术语“哈佛结构”表示),这样在同一个时钟周期内可以进行多次存储器访问——这是因为数据总线也往往有好几组。有了这种体系结构,DSP就可以在单个时钟周期内取出一条指令和一个或者两个(或者更多)的操作数。
地址发生器:DSP有专用的硬件地址发生单元,这样它可以支持许多信号处理算法所要求的特定数据地址模式。这包括前(后)增(减)、环状数据缓冲的模地址以及FFT的比特倒置地址。地址发生器单元与主ALU和乘法器并行工作,这就进一步增加了DSP可以在一个时钟周期内可以完成的工作量。
硬件辅助循环:信号处理算法常常需要执行紧密的指令循环。对硬件辅助循环的支持,可以让DSP高效的循环执行代码块而无需让流水线停转或者让软件来测试循环终止条件。
数据格式:除了标准的整数型格式外,DSP一般支持定点和(或)浮点数。对数据格式和精度的选择取决于应用程序所需,例如:
16位定点DSP可以满足语音信号处理和控制所需
24位和32位定点DSP可以满足高质量音频信号处理所需
32位浮点DSP可以满足图形和图像处理所需
DSP的特点:
DSP处理器采用哈佛结构和改进的哈佛结构。
哈佛结构就是将程序代码和数据的存储空间分开,各有自己的地址和数据总线。之所以采用哈佛结构,是为了并行进行指令和数据处理,从而可以大大地提高运算的速度。为了进一步提高信号处理的效率,在哈佛结构的基础上,又加以改善。使得程序代码和数据存储空间之间可以进行数据的传输,称为改善的哈佛结构。
采用流水技术。
流水技术是将各指令的各个步骤重叠起来执行。DSP处理器所采用的将程序存储空和数据存储空间的地址与数据总线分开的哈佛结构,为采用流水技术提供了很大的方便。
为了提高DSP处理器的运算速度,它们无例外地设置了硬件乘法器,以及MAC(乘并且累加)一类的指令。
DSP处理器都为DMA单独设置了完全独立的总线和控制器,这是和通用的CPU很不相同,其目的是在进行数据传输是完全不影响CPU及其相关总线的工作。
在DSP处理器中,设置了专门的数据地址发生器来产生所需的数据地址。数据地址的产生与CPU的工作是并行的,从而节省CPU的时间,提高信号的处理速度。
DSP处理器为了自身工作的需要和外部环境的协调工作。往往都设置了丰富的外设。如时钟发生器。定时器等。
定点DSP处理器和浮点DSP处理器。定点DSP中经常要考虑溢出问题,在浮点DSP基本上可以不考虑。与定点DSP处理器相比,浮点DSP处理器的速度更快,尤其是作浮点运算。在实时性要求很到的场合。往往考虑浮点DSP处理器。而浮点DSP处理器的价格比较高,开发难度更大。