17

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

  1. 到目前为止,我们发现所有 Android 设备的 CPU 都是 ARM 设计的,或者是ARMv6(旧设备、低端设备、华为、中兴、小型 SE)或ARMv7(蜂窝平板电脑和所有更昂贵的设备,几乎都具有 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)——但这些仍然不受支持。

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

问候, STeN

4

3 回答 3

13
  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。

于 2012-02-22T18:13:22.680 回答
7

我会专注于v7。

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

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

于 2012-02-23T03:52:20.150 回答
4

确实,大多数 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 为目标。

于 2012-02-22T18:56:06.010 回答