首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

DSP是什么

DSP是什么















 


Digital Signal Processing 数字信号处理



作为一个案例研究,我们来考虑数字领域里最通常的功能:滤波。简单地说,滤波就是对信号进行处理,以改善其特性。例如,滤波可以从信号里清除噪声或静电干扰,从而改善其信噪比。为什么要用微处理器,而不是模拟器件来对信号做滤波呢?我们来看看其优越性:



  • 模拟滤波器(或者更一般地说,模拟电路)的性能要取决于温度等环境因素。而数字滤波器则基本上不受环境的影响。
  • 数字滤波易于在非常小的宽容度内进行复制,因为其性能并不取决于性能已偏离正常值的器件的组合。
  • 一个模拟滤波器一旦制造出来,其特性(例如通带频率范围)是不容易改变的。使用微处理器来实现数字滤波器,就可以通过对其重新编程来改变滤波的特性。

































信号处理方式的比较


比较因素


模拟方式


数字方式


修改设计的灵活性


修改硬件设计,或调整硬件参数


改变软件设置


精度


元器件精度


A/D 的位数和计算机字长,算法


可靠性和可重复性


受环境温度、湿度、噪声、电磁场等的干扰和影响大


不受这些因素的影响


大规模集成


尽管已有一些模拟集成电路,但品种较少、集成度不高、价格较高


DSP 器件体积小、功能强、功耗小、一致性好、使用方便、性能 / 价格比高


实时性


除开电路引入的延时外,处理是实时的


由计算机的处理速度决定


高频信号的处理


可以处理包括微波毫米波乃至光波信号


按照奈准则的要求,受 S/H 、 A/D 和处理速度的限制



Digital Signal Processor 数字信号处理器




















微处理器( 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

DSP 处理器与通用处理器的比较



考虑一个数字信号处理的实例,比如有限冲击响应滤波器( FIR )。用数学语言来说, FIR 滤波器是做一系列的点积。取一个输入量和一个序数向量,在系数和输入样本的滑动窗口间作乘法,然后将所有的乘积加起来,形成一个输出样本。

类似的运算在数字信号处理过程中大量地重复发生,使得为此设计的器件必须提供专门的支持,促成了了 DSP 器件与通用处理器( GPP )的分流:

1 对密集的乘法运算的支持

GPP 不是设计来做密集乘法任务的,即使是一些现代的 GPP ,也要求多个指令周期来做一次乘法。而 DSP 处理器使用专门的硬件来实现单周期乘法。 DSP 处理器还增加了累加器寄存器来处理多个乘积的和。累加器寄存器通常比其他寄存器宽,增加称为结果 bits 的额外 bits 来避免溢出。
同时,为了充分体现专门的乘法 - 累加硬件的好处,几乎所有的 DSP 的指令集都包含有显式的 MAC 指令。

2 存储器结构

传统上, GPP 使用冯 . 诺依曼存储器结构。这种结构中,只有一个存储器空间通过一组总线(一个地址总线和一个数据总线)连接到处理器核。通常,做一次乘法会发生 4 次存储器访问,用掉至少四个指令周期。

大多数 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 或 C++ 等高级语言。而对于 DSP 的程序员来说,不幸的是主要的 DSP 应用程序都是用汇编语言写的(至少部分是汇编语言优化的)。这里有两个理由:首先,大多数广泛使用的高级语言,例如 C ,并不适合于描述典型的 DSP 算法。其次, DSP 结构的复杂性,如多存储器空间、多总线、不规则的指令集、高度专门化的硬件等,使得难于为其编写高效率的编译器。

即便用编译器将 C 源代码编译成为 DSP 的汇编代码,优化的任务仍然很重。典型的 DSP 应用都具有大量计算的要求,并有严格的开销限制,使得程序的优化必不可少(至少是对程序的最关键部分)。因此,考虑选用 DSP 的一个关键因素是,是否存在足够的能够较好地适应 DSP 处理器指令集的程序员。

8 开发工具的要求

因为 DSP 应用要求高度优化的代码,大多数 DSP 厂商都提供一些开发工具,以帮助程序员完成其优化工作。例如,大多数厂商都提供处理器的仿真工具,以准确地仿真每个指令周期内处理器的活动。无论对于确保实时操作还是代码的优化,这些都是很有用的工具。

GPP 厂商通常并不提供这样的工具,主要是因为 GPP 程序员通常并不需要详细到这一层的信息。 GPP 缺乏精确到指令周期的仿真工具,是 DSP 应用开发者所面临的的大问题:由于几乎不可能预测高性能 GPP 对于给定任务所需要的周期数,从而无法说明如何去改善代码的性能。

返回列表