【问题标题】:Android ARMv6/v7 and VFP/NEONAndroid ARMv6/v7 和 VFP/NEON
【发布时间】:2012-03-12 21:57:19
【问题描述】:

我想了解更多 Android 手机上使用的 CPU。原因是我们正在构建 C 库,它具有我们可以设置的某些 CPU/数学处理器架构标志。

  1. 到目前为止,我们发现所有 Android 设备的 CPU 都是 ARM 设计的,或者是 ARMv6(旧设备、低端、华为、中兴、小 SE)或 ARMv7(Honeycomb 平板电脑和所有更昂贵的设备,几乎所有设备都具有 WVGA 或更高的分辨率)我检查了大约 20 台设备,并且都有这种类型的处理器。那是对的吗?还有其他的吗?

  2. 现在谈到多媒体和数学运算,我认为有两个单元很重要——浮点运算的 VFP 和 SIMD - NEON。在测试了上面提到的一组设备后,我发现几乎所有设备都支持 VFP,而 NEON 不支持。有什么办法吗?

  3. 我不知道 ARMv6 和 ARMv7 的区别到底是什么(除了一般的速度)。现在我们正在构建一个多媒体 C 库,它有几个用于构建的标志。我的问题是如何在一侧定位最多数量的设备,以及如何让更好设备的用户使用他们的硬件。我的建议是准备 3 个不同的版本:ARMv6/VFP、ARMv7/VFP 和 ARMv7/VFP/NEON。其他建议?

  4. 我认为 ARMv6/VFP 应该在所有配置上运行,但缺少 VFP 的设备除外(例如旧的 HTC Wildfire),但仍不受支持。

这是一个好方法吗?欢迎任何cmets。

问候, 斯滕

【问题讨论】:

    标签: android arm neon armv7


    【解决方案1】:
    1. 没错。目前有两种类型 - ARMv6 和 ARMv7。最有可能在最近的将来会有另外的 x86 目标。最新的 NDK 已经支持构建它。

    2. VFP 在 ARMv7 上是强制性的,但在 ARMv6 上不是。 NEON 是可选的,并非所有设备都支持它。最明显的例子是 Nvidia Tegra 2。它部署在大多数高端平板电脑和手机上,但不支持 NEON。 Nvidia Tegra 3 支持 NEON。

    3. 我认为您应该坚持使用带有浮点仿真的 ARMv6、ARMv7+VFP、ARMv7+NEON。

    4. 完全正确 - 并非所有 ARMv6 设备都支持 VFP。所以根本不要在那里使用它。默认情况下,NDK 构建用于 ARMv6 设备且不使用 VFP 的 armeabi 目标。 armeabi-v7a 为 ARMv7 构建并使用 VFP。

    【讨论】:

      【解决方案2】:

      确实,大多数 Android 设备都属于这三类:

      1) ARMv6

      2) ARMv7

      3) ARMv7 + 霓虹灯

      NDK 不完全支持这一点。没有 ARMv6 ABI 构建目标,NDK 仅支持两个 ARM 构建目标:

      1) ARMv5(将在所有 Android ARM 设备上运行)

      2) ARMv7(可选择使用 VFP 和 NEON)

      由此带来的限制是,如果您想使用 ARMv6 指令(来自 C 或 ASM 代码),您需要在 NDK 中定位 ARMv7 ABI。

      【讨论】:

        【解决方案3】:

        我会专注于 v7。

        几乎没有任何新产品随 v6 一起发布,当您的库准备好生产时,v6 将不再是问题。

        这里有一些信息: - 霓虹灯总是包括 VFP - Coretex A8 可以采用霓虹灯或无霓虹灯 - A8 的 Neon 上的 VFP 实际上是 VFP-lite,速度要慢得多。比 V6 的 VFP 慢得多。 - Coretex A9 及更高版本可以使用 Neon、VFP 或无。 - V7 有许多增强的指令,非常适合数学运算,除了双重问题能力。 - 芯片供应商可以省略 Neon 甚至 VFP,但无论如何他们都会向 ARM 支付相同的许可费。他们只会节省很少的制造成本。 - Neon 在有能力的手中非常强大,但不能做到双精度。 - 除了没有霓虹灯的 Tegra 之外,我不知道基于 v7 的 Android 手机没有霓虹灯。 (原因在上面) - Tegra3 确实有 Neon

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-05-05
          • 2011-11-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-01
          • 1970-01-01
          相关资源
          最近更新 更多