iPad Air 2 (A8X) の浮動小数点演算能力を調べてみました。
より詳細なログは下記ページに乗せています。
// iPad 2 Air (Apple A8X) ARCH: ARMv8A VFP: AArch64 NEON SingleT SP max: 23.568 GFLOPS SingleT DP max: 11.751 GFLOPS MultiT SP max: 68.591 GFLOPS MultiT DP max: 33.968 GFLOPS CPU core: 3 FMA: Yes NEON: Yes
↑本当に CPU が 3 core でした。
モバイルデバイスではあまり見かけませんが Xbox360 や Wii U など
ゲーム機に多い印象です。
もともと Cyclone は Apple A7 でも浮動小数点演算能力が突出していた CPU
でしたが、A8X でもほぼ同様の傾向が出ています。
浮動小数点演算命令はスカラーベクター共に 2 命令同時に実行可能で、
NEON の 128bit 積和も並列に走ります。
動作クロックは低いものの、3 core になったことで他の ARM Core の
4 core に匹敵する数値となってます。(下記表の (*1) )
Apple A8X Snapdragon 800 Tegra K1 Atom Z3745 Cyclone Krait 400 Cortex-A15 Silvermont 1.5GHz x3 2.2GHz x4 2.2GHz x4 1.83GHz x4 ------------------------------------------------------------------ SingleT SP 23.568 17.128 17.136 8.946 SingleT DP 11.751 4.289 3.431 2.797 MultiT SP(*1) 68.591 67.539 70.174 35.473 MultiT DP 33.968 16.874 14.036 11.060 * 数値は GFLOPS 、値が大きい方が速い * 倍精度 (DP) で大きく差が付いているのは ARMv7A (32bit) に NEON が無いため * ピーク値なので実際のアプリケーション動作速度とは異なります
さらに命令毎のログを詳しく見ていくと、A7 で何故か遅かった
倍精度演算のスカラー積和が改善されていることがわかります。
// iPhone 5s (Apple A7) 倍精度演算 実行時間 演算数 演算数 --------------------------------------------------------------- FPU fmul (64bit x1) n8 : 1.642 2436.1 2436.1 FPU fadd (64bit x1) n8 : 1.045 3827.0 3827.0 FPU fmadd (64bit x1) n8 : 3.915 2043.6 2043.6 --- (A-7) NEON fmul.2d (64bit x2) n8 : 1.567 5105.1 5105.1 NEON fadd.2d (64bit x2) n8 : 1.034 7736.5 7736.5 NEON fmla.2d (64bit x2) n8 : 1.958 8172.1 8172.1 --- (B-7)
↑ Apple A7 では、FPU fmadd の積和 (A-7) だけ 3.915 と実行時間が
余計にかかっていました。
同じ積和でも NEON fmla はそこまでの落ち込みはなく、
(B-7) 見てわかるようにむしろスカラーよりも高速に実行できています。
// iPad Air 2 (Apple A8X) 倍精度演算 実行時間 演算数 演算数 --------------------------------------------------------------- VFP fmul (64bit x1) n8 : 1.442 2773.8 2773.8 VFP fadd (64bit x1) n8 : 0.926 4321.2 4321.2 VFP fmadd (64bit x1) n8 : 1.772 4513.6 4513.6 --- (A-8) NEON fmul.2d (64bit x2) n8 : 1.408 5681.0 5681.0 NEON fadd.2d (64bit x2) n8 : 0.922 8680.2 8680.2 NEON fmla.2d (64bit x2) n8 : 1.744 9175.5 9175.5 --- (B-8)
↑ Apple A8X ではスカラーの倍精度積和 (A-8) も NEON (B-8) と変わらない
速度で実行できており、Apple A7 の弱点が克服されていることになります。
この辺りの演算能力の違いをまとめたのが下記ページの表です。
関連エントリ
・Android x86 Binary Translator を試してみる
・Atom Bay Trail の浮動小数点演算能力
・VFP Benchmark v1.1 浮動小数点演算命令の速度 (NEON/SSE/AVX)
・ARM CPU の VFP Benchmark アプリ 浮動小数点演算速度の計測
・iPhone 5s A7 CPU の浮動小数点演算速度 (2) (arm64/AArch64/64bit)
・iPhone 5s A7 CPU の浮動小数点演算速度 (32bit)
・Nexus 10 CPU Cortex-A15 の速度
・Nexus 10 CPU Cortex-A15 の浮動小数点演算速度
・Qualcomm APQ8064 GPU Adreno 320 の速度
・Qualcomm APQ8064 Krait/A6 swift の浮動小数点演算能力
・ARM Cortex-A8 の NEON と浮動小数演算最適化
・benchmark 関連