68

何か利点があるとしたら...ドキュメントで決定的なものを見つけることができませんでした。

どうやらarmv7はiOSの新しいバージョン用です...それは速いですか?小さい?Xの方がいいですか?

4

5 に答える 5

77

古いiOSデバイス(iPhone、iPhone 3G、第1世代および第2世代のiPod touch)には、armv6命令セットのみをサポートするCPUが搭載されていました。iPhone 3G S(およびiPadと第3世代iPod touch)には、armv7命令セットもサポートする新しいプロセッサが搭載されています。一般に、armv7はこれらの新しいプロセッサでより高速であり、少なくとも今後のアプリケーションにarmv7ビルドを含めることをお勧めします(iPadのみのアプリケーションでは、おそらくarmv7用にビルドできます)。

Jasarienが指摘しているように、命令セット間の最大の違いは浮動小数点演算です。armv6では、アプリケーションは、より小さなバイナリを生成するために縮小されたThumb命令セットを使用して構築される傾向がありましたが、Thumb浮動小数点のパフォーマンスはひどいものでした。したがって、より高速な浮動小数点計算が必要な場合は、Thumbを無効にする必要があります。armv7では、Thumb-2命令セットにこの制限がなくなったため、Appleはほぼ常にそれを使用してコンパイルすることをお勧めします。

Thumbビルド設定を条件付きにして、古いデバイスではオフにし、新しいデバイスではオンにすることができます。これを行うには、Xcodeビルド設定に移動し、[Thumb用にコンパイル]オプションを選択します。画面の左下にあるメニューに移動し、[ビルド設定条件の追加]オプションを選択します。新しいビルド設定条件で、アーキテクチャにARMv6を選択し、Thumbをオフにして、別の条件を追加し、アーキテクチャにARMv7を選択して、Thumbを有効にします。

ここでのStephenCanonの回答によると、armv6のハードウェアでは、単精度と倍精度の両方の浮動小数点演算がサポートされています。このプラットフォームでは、単精度演算のパフォーマンスがわずかに向上することがわかりました。これは、おそらくキャッシュに収まる演算が多いためです。armv7では、NEON SIMD浮動小数点ユニットは単精度演算でのみ機能するため、単精度演算と倍精度演算のパフォーマンスに大きな違いが生じる可能性があります。

この主題に関して興味があるかもしれない他の質問は以下を含みます:

于 2010-07-22T17:26:41.817 に答える
54

大きな違いの1つは、armv6アーキテクチャが倍精度浮動小数点演算のハードウェアサポートを備えているのに対し、armv7は倍精度浮動小数点演算のレガシーソフトウェアサポートのみを提供していることです。

これを補うために、armv7アーキテクチャには、単精度浮動小数点演算の非常に高速なハードウェアサポートを提供する「NEON」ユニットがあります。

これは、単精度または倍精度のどちらで実行する場合でも、浮動小数点演算を含む何かを実行する場合に考慮する必要があることです。倍精度で実行しているが、必ずしもその量の精度は必要ない場合は、代わりに単精度を使用することで、armv7デバイスのパフォーマンスを大幅に向上させることができます。

Appleは、今年のWWDCセッションの1つで、armv6とarmv7の多くの違いと、Accelerateフレームワークの紹介を取り上げました。ビデオは引き続きiTunesで利用できるはずです(2010年7月現在)。

于 2010-07-22T16:17:06.927 に答える
4

私にとって、ARMv7の主な利点は次のとおりです。

  • 親指-2
  • ネオン

NEONは明示的にコーディングする必要があります。単に再コンパイルするだけでは利用できませんが、時間を費やすことができれば、マルチメディア/ゲーム操作を8倍高速化できます。ただし、thumb-2はほとんど無料で削減できます。コードサイズにほとんど欠点はありません(ARMv6のサムとは異なり、フローティングポイントコードはARMモードに比べてはるかに遅くなります)。もちろん、ARMv7に実行可能ファイルの別のバージョンを追加しても、実行可能ファイルのサイズは減少しませんが、メモリやキャッシュなどのコードは減少します。

于 2010-07-22T21:11:13.793 に答える
3

アプリをiPadとすべてのiPhone/iPod tochモデルで実行する場合は、両方をコンパイルする必要があります。古いiOSデバイスはarm6を使用し、新しいデバイスはarm7を使用します。

どちらか一方のためにコンパイルしない唯一の理由は、コンパイルされたバージョンのコードが1つだけ必要なため、アプリのサイズが小さくなることです。ただし、コードベースが非常に大きい場合を除いて、このファイルサイズの違いはごくわずかです。

于 2010-07-22T16:09:35.670 に答える
3

arm7は、iPod Touch(第3世代)およびiPhone3GS以降向けにさらに最適化されています。古いデバイス用にビルドする場合は、「Standard / arm6+arm7」を使用する必要があります。実際には、アプリケーションのパフォーマンスに大きな違いは見られませんでした。

于 2010-07-22T16:11:22.980 に答える