Android ARMv6 / v7和VFP / NEON

时间:2012-02-22 14:49:33

标签: android arm neon armv7

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

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

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

    此致 STeN

3 个答案:

答案 0 :(得分: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设备的armeabi目标,并且不使用VFP。 armeabi-v7a为ARMv7构建并使用VFP。

答案 1 :(得分:7)

我专注于v7。

v6几乎没有新产品出货,当您的磁带库准备就绪时,v6将不会发布。

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

答案 2 :(得分:4)

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

1)ARMv6

2)ARMv7

3)ARMv7 + NEON

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

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

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

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