一般微处理器、DSP、FFT芯片有什么区别?

信息处理 fft
2022-02-04 02:55:01

我知道通用微处理器需要 18 次运算来执行 FFT 的每个蝶形运算,但我不明白使用 DSP 或 FFT 芯片如何改进 FFT 处理?

有什么想法吗?

3个回答

除了 David 指出的内存差异之外,DSP 芯片还有多个乘法/累加 (MAC) 单元。MAC 是一种非常常见的信号处理操作,它是滤波器和 FFT/iFFT 操作的基础。我过去使用的一些 DSP 芯片有 6 个 MAC 单元,这使它们可以通过两种方式加速 FFT 运算:它们可以一次执行 6 个 MAC 运算,而 MAC 运算本身需要一个时钟周期,而在一般情况下用途微处理器每个 MAC 至少需要两个时钟周期,因为它是一个乘法,然后是一个加法。

我的信息可能有点过时,并且信息可能会因您查看的确切 DSP 芯片而异。DSP 芯片上的存储器架构通常具有多个可同时访问的存储器。以哈佛内存架构为例DSP 芯片上的指令集也高度专业化,以有效利用这种存储器架构。制造商通常会为 FFT 提供库代码,因为典型的开发人员需要花费一些时间来手动优化代码。

GPU 上的内存往往是缓存的层次结构,从快速但小的缓存开始,然后到较慢的主内存。

DSP 芯片通常具有专用于存储 FFT 旋转因子的存储器,即 sin() 和 cos() 因子。在 GPU 上,这些因素可以存储在缓存中,但通常不明确且无法保证。

FFT 的输出通常不是按顺序排列的,即频率分档不显示为分档 1、分档 2、分档 3 ...。相反,它们以位反转的顺序出现。DSP 芯片通常具有显式位反转寻址模式,因此可以有效访问 FFT 输出。在 GPU 上,不使用这种寻址模式,因为它很少使用。

希望有帮助。

此外,DSP 具有专用的硬件循环单元,可将 DSP 从软件循环中解放出来。

软件循环:执行循环内容,递增循环变量,检查条件,如果条件满足则跳回

硬件循环:您告诉硬件您要执行特定地址范围的次数,其余的将由硬件处理。

没有额外的循环开销。

David 提到,有一种反向寻址模式可以更快地读取 FFT 结果,而无需软件中的寻址开销,但还有一种模 N 寻址模式,它能够构建循环缓冲区而无需软件边界检查和倒带。