日別アーカイブ: 2014年10月29日

iPad Air 2 (Apple A8X) の浮動小数点演算能力

iPad Air 2 (A8X) の浮動小数点演算能力を調べてみました。
より詳細なログは下記ページに乗せています。

VFP Benchmark Log

// 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 の弱点が克服されていることになります。

この辺りの演算能力の違いをまとめたのが下記ページの表です。

CPU の浮動小数点演算能力の詳細

関連エントリ
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 関連