数字信号处理器(digital signal processor, 简写 DSP)是一种专用于(通常为实时的)数字信号处理的微处理器。
DSP-Grafikchip
数字信号处理器的特点
分开的程序存储器和数据存储器(哈佛结构)。
用于单指令流多数据流(SIMD)作业的特殊指令集。
可进行并行处理,但不支援多任务。
用于宿主环境时可作为直接存储器访问(DMA )设备运作.
从模数转换器(ADC)获得数据,最终输出的是由数模转换器(DAC)转换为模拟信号的数据。
数字信号的处理
数字信号的处理可由通用微处理器完成。可能的优化为:
数据运算指令
使用饱和算法,在这种方式中,会产生溢出的运算将累积至寄存器可容纳的最大(或最小)值,而不是按环绕方式(环绕方式是很多通用CPU采取的方式。在环绕方式中,寄存器的数值到达最大值后再加一则会绕回到最小值;而使用饱和算法时则不会发生这种环绕,运算结果仍将保持为最大值)。有些情况下可使用不同的粘滞位运算模式。
使用乘积累加(MAC)运算,这会提高各种矩阵运算的效率(例如卷积运算、点积运算、乃至矩阵多项式的求值运算;参看Horner scheme和积和熔加运算)。由于在许多DSP中都必然地使用了单周期的MAC部件,因此也自然沿袭了下面所述的许多性质(尤其是哈佛结构和指令流水线(Instruction Streamline))。
在使用同余寻址方式操作循环缓冲器、以及在使用逆位序寻址模式处理快速傅立叶变换交叉参照时,都可使用专门的指令实现。
程序流程
使用深层流水线技术,这种情况下,因错误的预测产生的跳转会造成更大的(效率)成本。
使用通过动态表或硬编码的零开销循环实现的分支预测。为减少执行高频度的内层循环时跳转造成的(效率)影响,有些处理器提供了这个特性。该技术包括两种类型的操作:单指令的重复操作和多指令的循环操作。
预取指令使用指令流水线方式。
流水线作业方式可减少总体的处理时间,增加系统的产出效率。
流水线可以分为若干层级。
历史
1978年,Intel 发布了一种“模拟信号处理器”——2920处理器。它包含一组带有一个内部信号处理器的片上ADC/DAC,但由于它不含硬件乘法器,因此在市场上销售并不成功. 1979年,AMI 发布了 S2811处理器,它被设计成微处理器的周边装置,必须由主处理器初始化后才能工作。 S2811 在市场上也不成功.
1979年,贝尔实验室发表了第一款单芯片 DSP,即 Mac 4 型微处理器。继而于1980年的IEEE国际固态电路会议上出现了第一批独立、完整的DSP,它们是NEC的μPD7720处理器和AT&T的DSP1处理器。这两种处理器都是在公共交换电话网(PSTN)的远程通信研究中受到了启发而产生的。
还有一种早期的DSP,Altamira DX-1,它使用一组带有延迟转移和转移预测机制的四整数组流水线。
事实证明,1983年得克萨斯仪器公司生产的的第一款DSP,TMS32010,是一个更大的成功,时至今日德州仪器已成为通用DSP市场的龙头,并提供有HPI(Host-Post Interface),由外部CPU直接访问。另一款成功的设计是摩托罗拉的56000。
通用CPU中有些技术是受到带有扩展模块的DSP的影响而出现的,例如Intel的IA-32架构指令集(ISA)中的MMX扩展。
大部分DSP使用的是定点算法,这是因为在信号处理的一般实际应用中不需要使用浮点运算比定点运算多提供的那部分额外的精度范围,而使用定点算法牺牲了不需要的精度,却大大提高了速度。另一方面,浮点DSP则常用在科学计算和某些需要高精度的应用中。
DSP芯片通常采用专用集成电路设计,然而亦可使用现场可编程门阵列(FPGA)芯片来实现DSP的功能,FPGA的I/O带宽比DSP带宽大十多倍。