Android ARMv6/v7和VFP/NEON

STe*_*TeN 18 android arm neon armv7

我想了解更多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野火) -但这些仍然不支持的.

这是一个好方法吗?欢迎任何评论.

此致,STeN

Mār*_*iko 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.


Jak*_*LEE 7

我专注于v7.

v6几乎没有任何新产品出货,当您的磁带库准备好生产时,v6将不会发布.

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