用于 FP 的 Cortex A9 会胜过 C6000 DSP

car*_*one 1 arm signal-processing ti-dsp

我目前使用的是没有硬件 FPU 的 OMAP L138 处理器。我们将使用 FP 密集型算法处理光谱数据,因此 ARM 端将不够用。我不是算法人,而是“动态时间扭曲”(我不知道这是什么意思,不)。最初的性能数字是:

Core i7 Laptop@
2.9GHz :1 秒Raspberry Pi ARM1176 @ 700MHz:12 秒
OMAP L138 ARM926 @ 300MHz:193 秒

更糟糕的是,树莓派大约是我使用的电路板价格的 30%!

我确实有一个 TI C674x,它是 OMAP L138 中的另一个处理器。问题是我是否最好花几周时间尝试:

  • 学习 DSPLINK、互操作库和工具链,更不用说为 Code Composer 或
  • 将 L138 扔掉并转移到像 Pandaboard 这样的 Dual Cortex A9,可能会在此过程中遭受功率损失。

(当我查看 A8 上的 FPU 性能时,它并没有比 Rasp Pi 有所改进,但 Cortex A9 似乎有所改进)。

我明白答案是“视情况而定”。这里的其他人说“你解锁了一个令人难以置信的快速 DSP,如果分配正确的工作,它可以轻松地超越 Cortex-A8”但是对于定义的工作集,我是否最好跳到 A9,即使我不得不购买外部DSP 以后?

Nil*_*nck 5

如果不了解 DSP 和 ARM 的时钟速率,就无法回答这个问题。

这是一些背景:

我刚刚检查了 c674x DSP 上浮点乘法的周期:

它每个周期可以发出两次乘法,每次乘法都有三个周期的结果延迟(这意味着您必须等待三个额外的周期才能在目标寄存器中显示结果)。

但是,您可以在每个周期开始两次乘法,因为 DSP 不会等待结果。编译器/汇编器将为您执行所需的调度。

这仅使用了 DSP 的八个可用功能单元中的两个,因此在执行两次乘法时,每个周期还可以执行以下操作:

  • 两个加载/存储(64 位宽)
  • 六个浮点加/减指令(或整数指令)

循环控制和分支是免费的,在 DSP 上不需要任何费用。

这使得每个周期总共有六个浮点运算,具有并行加载/存储和循环控制。

另一方面,ARM-NEON 可以在浮点模式下:

每个周期发出两次乘法。延迟是可比的,并且指令也可以像在 DSP 上一样进行流水线处理。加载/存储和添加/减去东西一样需要额外的时间。循环控制和分支很可能在编写良好的代码中免费使用。

因此,总而言之,DSP 每个周期的工作量是 Cortex-A9 NEON 单元的三倍。

现在,您可以检查 DSP 和 ARM 的时钟速率,看看什么对您的工作来说更快。

哦,有一件事:使用编写良好的 DSP 代码,您几乎不会在加载期间看到缓存未命中,因为您在访问数据之前使用 DMA 将数据从 RAM 移动到缓存。这也为 DSP 提供了令人印象深刻的速度优势。