web-dev-qa-db-ja.com

Android ARMv6 / v7およびVFP / NEON

Android電話で使用されるCPUについてもっと理解したいと思います。その理由は、設定できる特定のCPU /数学プロセッサアーキテクチャフラグを持つCライブラリを構築しているためです。

  1. これまでのところ、すべてのAndroidデバイスのCPUはARM設計であり、ARMv6(古いデバイス、ローエンド、Huawei 、ZTE、小型SE)またはARMv7(Honeycombタブレットおよびすべてのより高価なデバイス、ほとんどすべてが解像度WVGA以上)私は約20台のデバイスをチェックし、すべてがそのタイプのプロセッサを搭載しています。それは正しいですか?他に何かありますか?

  2. マルチメディアと数学の演算に関しては、2つの単位が重要だと思います– [〜#〜] vfp [〜#〜]浮動小数点演算とSIMD --[〜 #〜]ネオン[〜#〜]。上記のデバイスのグループをテストした後、VFPのサポートはほとんどすべてのデバイスにありますが、NEONにはないことがわかりました。それに対するコメントはありますか?

  3. ARMv6とARMv7の違い(一般的な速度以外)が正確に何であるかはわかりません。現在、構築用のフラグがいくつかあるマルチメディアCライブラリを構築しています。私の質問は、片側で最大数のデバイスをターゲットにする方法と、より優れたデバイスのユーザーがハードウェアを使用できるようにする方法です。私の提案は、ARMv6/VFP、ARMv7/VFP、ARMv7/VFP/NEONの3つの異なるビルドを準備することです。他の提案?

  4. ARMv6/VFP VFPがないデバイス(古いHTC Wildfireなど)を除くすべての構成で実行する必要があると思いますが、サポートされないままになります。

これは良いアプローチですか?コメントは大歓迎です。

よろしく、STeN

18
STeN
  1. そのとおりです。現在、ARMv6とARMv7の2つのタイプがあります。おそらく近い将来、さらにx86ターゲットが存在するでしょう。最新のNDKはすでにビルドをサポートしています。

  2. VFPはARMv7では必須ですが、ARMv6では必須ではありません。 NEONはオプションであり、すべてのデバイスがNEONをサポートしているわけではありません。最も明確な例はNvidiaTegra 2です。これはほとんどのハイエンドタブレットと電話に導入されていますが、NEONをサポートしていません。 Nvidia Tegra3はNEONをサポートしています。

  3. 浮動小数点エミュレーション、ARMv7 + VFP、ARMv7 + NEONを使用してARMv6に固執する必要があると思います。

  4. 正確に-VFPはすべてのARMv6デバイスでサポートされているわけではありません。したがって、単にそこでは使用しないでください。デフォルトでは、NDKはARMv6デバイスを対象とし、VFPを使用しないarmeabiターゲットを構築します。 armeabi-v7aはARMv7用にビルドされ、VFPを使用します。

13

私はv7に集中します。

V6で出荷される新製品はほとんどなく、ライブラリが本番環境に対応するまでに、v6は発行されなくなります。

ここにいくつかの情報があります:-ネオンは常にVFPを含みます-Coretex A8はネオンを備えているか、または備えていません-A8のネオンのVFPは実際にはVFP-liteであり、かなり低速です。 V6のVFPよりもはるかに遅い。 -Coretex A9以降では、ネオン、VFP、またはなしを使用できます。 --V7には、二重発行機能の他に、数学演算に適した多くの拡張命令があります。 -チップベンダーはネオンやVFPを省略できますが、ARMに関係なく、同じライセンス料を支払います。製造コストをほとんど節約できません。-ネオンは有能な手で非常に強力です。 、しかし倍精度を行うことはできません。-ネオンのないTegraを備えたものを除いて、v7ベースのAndroidネオンを備えていない電話は私には知られていません。(理由は上記です)-Tegra3ネオンはありますか

ほとんどのAndroidデバイスは、次の3つのカテゴリに分類されます。

1)ARMv6

2)ARMv7

3)ARMv7 + NEON

NDKはこれを完全にはサポートしていません。 ARMv6ABIビルドターゲットはありません。NDKでサポートされているビルドターゲットは2つだけですARM:

1)ARMv5(すべてのAndroid ARMデバイス)で実行されます)

2)ARMv7(VFPおよびNEONのオプションの使用法あり)

これによって課せられる制限は、(CまたはASMコードからの)ARMv6命令を使用する場合、NDKでARMv7ABIをターゲットにする必要があることです。

4
BitBank