ARM の浮動小数演算命令は再び混沌としてきました。
Tegra2 の Cortex-A9 では NEON 命令が使えないようです。
テストしたのは LuvPad AD100。
Tegra2 搭載でメインプロセッサは Cortex-A9 の Dual Core (MPCore)。
以前作成していた ndk のコードが動かず、build 時の neon option を外すと
動作しました。
その代わり VFP が常識的な速度で走ります。
Cortex-A8 のように極端に遅くなることもなく、Snapdragon 系 CPU や
ARM11 + VFP のように普通に VFP で浮動小数演算を行うことができそうです。
NEON を使わなければ全く速度が出なかった Cortex-A8 の方が特殊だったのかも
しれません。
core VFP NEON -------------------------------------------------------------------- 各種 Cortex-A8 超低速 高速 NEONが必ず搭載されている Snapdragon Scorpion 高速 高速 スカラーだけなら VFP の方が良い Tegra2 Cortex-A9 高速 --- VFP のみ (A9 の neon は option)
VFP が遅いため ARM11 時代のコードは A8 で速度が落ちることがありました。
A9 ではそのような問題は起こらないと思われます。
その代わり A8 向けに NEON 最適化したプログラムは、少なくても Tegra2 では
使えないことになります。
Snapdragon は比較的どちらのコードもそつなく走るだろうと予想できます。
ただし若干特性は違います。
これでどのプラットフォームでも高速に走るバイナリの作成が難しくなりました。
; Cortex-A9 (Tegra2) Processor : ARMv7 Processor rev 0 (v7l) Features : swp half thumb fastmult vfp edsp vfpv3 vfpv3d16
; Snapdragon (QSD8250) Processor : ARMv7 Processor rev 2 (v7l) Features : swp half thumb fastmult vfp edsp thumbee neon
関連エントリ
・Snapdragon と浮動小数演算速度
・ARM Cortex-A8 の NEON と浮動小数演算最適化
・NetWalker PC-Z1 Cortex-A8 の NEON 命令とメモリ速度
・SSE の浮動小数演算速度
・NetWalker PC-Z1 Cortex-A8 浮動小数演算の実行速度
・NetWalker PC-Z1 Atom と速度比較
・Direct3D Mobile と T-01A の Snapdragon