ZHCAEV9 December 2024 AM62D-Q1
快速傅里叶变换 (FFT) 是常见的信号处理算法之一。FFTLIB 库包含许多用于 FFT 的内核,这些内核具有各种批次大小和数据类型。仅在使用 C7x 时才实施这些内核。这些内核尚未使用 MMA。AM62D 的 FREERTOS-SDK 中包括 FFTLIB。该库的文档包含有关构建和运行这些内核的说明。表 2-1 展示了在 C7x 处理器上执行的复杂输入/复杂输出 FFT 的性能数据,数据类型包括 16 位复整数和 32 位浮点复数,且涵盖了不同的向量和批次大小。根据在 C7x 时钟频率为 1.0GHz 时执行 FFT 的 C7x 时钟周期总数以及处理每个批次的持续时间来衡量性能。
FFT 参数 | 16 位整数复数输入和复数输出的性能 [周期] | 32 位浮点复数输入和复数输出的性能 [周期] | |||
|---|---|---|---|---|---|
| FFT 大小 | 批次大小: | 总计 [周期数] | 每批时间 [µs] | 总计 [周期数] | 每批时间 [µs] |
128 | 128 | 12806 | 0.1 | 24221 | 0.18 |
256 | 64 | 13944 | 0.21 | 24850 | 0.38 |
512 | 32 | 13793 | 0.43 | 26826 | 0.83 |
1024 | 16 | 16012 | 1.0 | 29783 | 1.86 |
2048 | 8 | 15981 | 1.99 | 31650 | 3.95 |
4096 | 4 | 17112 | 4.27 | 34834 | 8.70 |
8192 | 2 | 17063 | 8.53 | 36304 | 18.15 |
为了展示使用 C7x DSP 相比于 ARM 的性能提升,将 C7x DSP 上执行 FFT 的时间与在 Arm-Cortex-A53 内核上执行相同类型 FFT 的时间进行比较。Arm 基准测试使用了 Ne10 库,该库利用了 Cortex-A53 的高级 SIMD 或 NEON 加速。此库不包含在 SDK 中,但可以从官方 Ne10 代码库下载。该库需要一个 Linux® 操作系统,因此在 AM62A 上实施该操作系统,AM62A 具有与 AM62D 相同的 Cortex-A53 内核。表 2-2 展示了 Arm-Cortex-A53 和 C7x DSP 上的 1024 点单精度浮点复数 FFT 执行时间。结果显示,Cortex-A53 和 C7x DSP 之间的执行速度约有 11 倍的提升。
| Arm-Cortex-A53 (1.4GHz) 单线程/内核 | 1.0 GHz 时的 C7x | C7x (1.0GHz) 与 A53 (1.4GHz) 相比实现的性能提升 | |
|---|---|---|---|
| 1024 点复数 FFT 执行时间 | 19.4µs | 1.8µs | 约 11 倍 |