Joh*_*itb 7 assembly gcc arm neon armv7
我的 Zynq-7000 ARM Cortex-A9 处理器同时具有 NEON 和 VFPv3 扩展,Zynq-7000-TRM 表示处理器配置为具有“VFPv3 和高级 SIMD 指令的独立管道”。
到目前为止,我使用 Linaro GCC 6.3-2017.05 和-mfpu=neon选项编译了我的程序,以使用 SIMD 指令。但是在编译器也有非SIMD操作要发出的情况下,使用会有所不同-mfpu=neon-vfpv3吗?GCC 的指令选择和调度程序是否会为两个版本发出指令,以便它可以利用两个管道来提高 CPU 的利用率?
从技术上来说,是的。
现实,没有。
NEON 在 ARMv7 上是可选的。
被许可人可以从以下选择一种配置:
与 NEON 不同,ARMv7 上有不同的 VFP 版本,Cortex-A8 上的 VFP-lite 是最臭名昭著的版本,因为它没有流水线,因此速度非常慢。
因此,通过编译器选项指定 CPU 配置和架构版本在技术上是有意义的,以便编译器可以为该特定架构/配置生成最优化的机器代码。
然而实际上,现在的编译器忽略了大多数这些构建选项,甚至还忽略了指令。
而且,将 VFP 和 NEON 指令分配给不同的管道也没有多大帮助(如果有的话),因为它们都共享寄存器组。
通过利用尽可能多的寄存器来提高 NEON 的性能所带来的效果远比让 VFP 并行运行要好得多。
我很困惑为什么现在有这么多人如此信任免费编译器。
最好的 ARM 编译器无疑是 6000 美元以上的 DS-5 Ultimate Edition 附带的 ARM 编译器。他们的支持非常好,但我不确定这是否证明价格合理。
| 归档时间: |
|
| 查看次数: |
4672 次 |
| 最近记录: |