混淆理解数字信号处理器?
专用DSP处理器的主要处理器指令是乘法累加指令。向量乘法和求和在单个命令获取中执行,它是一种 SIMD(但不完全是)。只有高级 MCU 在其命令集中有此指令。因此,DSP 处理器在典型信号处理操作上优于通用 MCU 的 wrt ALU 性能,即使在其制造过程中使用了类似的技术过程。具有内部 DSP 模块的 FPGA 设备也是如此。简而言之,更少的命令获取周期,更高的性能。
实时意味着有时间限制或时间约束来完成分配的处理。例如:如果您在具有特定符号率的通信系统的接收链中使用 DSP 处理器,那么处理器必须能够在有限的时间约束内处理一个符号值的数据,以便跟上接收到的信号。如果它不能在特定时间限制内完成对符号的处理,则接收到的信号样本将开始堆积等待处理,最终处理器将耗尽它所拥有的有限内存。
通用微处理器无法满足实时要求的原因是它们缺乏可以执行向量MAC(Multiply-Accumulate)操作的专用处理单元。它们缺乏 SIMD(单指令多数据)架构,该架构能够在单个取指周期内使用单条指令处理多个数据。
因此,与通用微处理器相比,DSP 处理器可以用较少的指令对大量数据执行 MAC 操作。
当您的微处理器具有 FPU 硬件时,DSP 算法实现(软件编码)是最简单的,但也可以使用整数(定点)ALU。
这意味着您的微处理器应该有一个专用的 FPU,或者它可以使用(非常低效的)软件仿真来进行 FPU 操作。或者,可以尝试一种更难编程但运行效率更高的定点方法,也可以使用基于整数的算术。
一些传统的微处理器(例如英特尔 80386,80486,摩托罗拉 68010,68020)仅基于整数 ALU,并且它们的 FPU 单元在单独的可选协处理器(80387,80487 或 68881)中出售。
现在大多数(但不是全部)CPU 都内置了一些 32 位(甚至 64 位)的 FPU 硬件。但这还不够。
DSP 算法不仅需要一个功能强大的算术单元,还需要高数据吞吐量,具体取决于应用。语音编码器可以很好地用普通的 CPU 实时实现,而实时视频编码器可能很难实现。
实时意味着您的处理器应该能够完成其工作块,同时将实时数据(与离线数据相反)输入其中,而不会溢出内部存储缓冲区。例如,当您弹奏电子键盘时,就会发生这种情况;当您按下按键时,应立即(小于可检测的延迟阈值)处理并输出它们的声音,然后再按下下一个按键(否则它们将覆盖并跳过先前按下的按键音符)。或者,您想将输入音频录制为 mp3 文件。通过麦克风输入的数据流应该在填充下一个缓冲区之前编码为 MP3 音频格式,这样之前的数据缓冲区就不会被覆盖。
对于高数据速率的实时应用,通用 CPU 可能因其架构而效率低下或不足;所以修改了CPU的架构。应该使用基于 SIMD 的 FPU、更多用于并行处理的内核、优化的缓存和特殊的 RISC 指令集(相对于 CISC)。
这就是所谓的专用 DSP 处理器。