【问题标题】:ARM Cortex-A8: How to make use of both NEON and vfpv3ARM Cortex-A8:如何同时使用 NEON 和 vfpv3
【发布时间】:2011-05-11 22:40:51
【问题描述】:

我使用的是 Cortex-A8 处理器,但我不明白如何使用 -mfpu 标志。

在 Cortex-A8 上,有 vfpv3neon 协处理器。以前我不知道如何使用霓虹灯,所以我只使用了

gcc -marm -mfloat-abi=softfp -mfpu=vfpv3

现在我已经了解了 SIMD 处理器的运行方式,并且我已经使用 NEON 内部函数编写了某些代码。现在要使用 neon 协处理器,我的 -mfpu 标志必须更改为 -mfpu=neon,所以我的编译器命令行如下所示

gcc -marm -mfloat-abi=softfp -mfpu=neon

现在,这是否意味着我的vfpv3 不再使用了?我有很多没有使用 NEON 的代码,这些部分没有使用vfpv3

如果仍然使用 neon 和 vfpv3,那么我没有问题,但如果只使用其中一个,我该如何同时使用?

【问题讨论】:

    标签: arm neon compiler-flags cortex-a8


    【解决方案1】:

    NEON 也意味着拥有传统的 VFP 支持。 VFP 可用于“正常”(非向量)浮点计算。此外,NEON 不支持双精度 FP,因此只能使用 VFP 指令。
    您可以做的是将 -S 添加到 gcc 的命令行并检查程序集。以 V 开头的指令(例如 vld1.32、vmla.f32)为 NEON 指令,以 F 开头的指令(fldd、fmacd)为 VFP。 (虽然 ARM 文档现在更喜欢对 VFP 指令使用 V 前缀,但 GCC 不这样做。)

    【讨论】:

    • Igor 我只有单精度浮点值。确实我看到很多 f 指令(fadds、fsitos),所以我认为编译器仍在发出 vfp 指令。
    • 一个不相关的问题,你知道双发处理器是什么意思吗? Cortex-A8是双发处理器是什么意思?你能指出我的任何链接吗?我的搜索效率不高。
    • Vikram,Coretex A8 是双发无序处理器。这意味着(不同地)它可以执行以下部分或全部操作:1)每个时钟解码和排队以乱序执行两条指令,2)每个时钟执行两条这样的排队指令和/或 3)它可以退休两条这样的指令每个时钟的结果。换句话说,在最佳条件下,它可以持续每个时钟执行两条指令。只有在没有缓存未命中、分支错误预测等情况下才会出现最佳条件。
    • 谢谢 Jan。我获得了一些 TI 网站 (processors.wiki.ti.com/index.php/Cortex-A8_Features) 的 wiki 链接。这是一个很好的链接。
    • 本来要使用 Cortex A9 板的 sabre-lite。我猜 -mfpu=neon 是要走的路,因为它使用了两个协处理器。谢谢。
    猜你喜欢
    • 2011-05-05
    • 2015-04-23
    • 2014-03-03
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多