ARM Cortex-A7 は big.LITTLE で用いられる場合、省電力側の CPU core に相当します。
消費電力が少ない代わりに、高性能側の CPU core より性能は劣ります。
VFP Benchmark の結果を送ってもらいました。
結果を見ると、Cortex-A7 の NEON は 32bit 単位で実行していることがわかります。
演算速度は NEON 無しの CPU と変わらないのですが、Cortex-A15 のペアとして
機能できるよう NEON 命令セットに対応しているものと考えられます。
SIMD (Vector) SIMD4 single fp (32bit x4) CPU mul add mad fma ------------------------------------------------------ ARM Cortex-A7 1 1 2 2 ARM Cortex-A8 2 2 4 – ARM Cortex-A9 2 2 4 – ARM Cortex-A15 4 4 8 8 Qualcomm Scorpion 4 4 8 – Qualcomm Krait 400 4 4 8 8 Apple A6 Swift 4 4 8 8 Apple A7 Cyclone 32 8 12 16 16 Apple A7 Cyclone 64 8 12 – 16 * 数値は 1 cycle あたりの演算数、大きい方が速い
big.LITTLE で用いる場合は、この手の演算は Cortex-A15 の担当なので
おそらく表に出ることは無いでしょう。
単独で用いられている場合は、同じ Quad core CPU と書かれていても
かなり性能差が開いていることを考慮した方が良いかもしれません。
浮動小数点演算速度だけ見てもピーク演算速度で Cortex-A9 の半分、
Krait/Cortex-A15 の 1/4 (同一クロック時) となっています。
以下詳細
Lenovo YOGA TABLET 8 (3G) MediaTek MT8389 1.2GHz Cortex-A7 Quad core SingleT SP max: 2.374 GFLOPS SingleT DP max: 1.165 GFLOPS MultiT SP max: 9.474 GFLOPS MultiT DP max: 4.653 GFLOPS * VFP/NEON (single fp) VFP fmuls (32bit x1) n8 : 3.634 1100.7 1100.7 VFP fadds (32bit x1) n8 : 3.450 1159.3 1159.3 VFP fmacs (32bit x1) n8 : 3.451 2318.1 2318.1 VFP vfma.f32 (32bit x1) n8 : 3.448 2319.9 2319.9 NEON vmul.f32 (32bit x2) n8 : 6.795 1177.3 1177.3 NEON vadd.f32 (32bit x2) n8 : 6.828 1171.7 1171.7 NEON vmla.f32 (32bit x2) n8 : 6.810 2349.6 2349.6 NEON vfma.f32 (32bit x2) n8 : 6.797 2354.1 2354.1 NEON vmul.f32 (32bit x4) n8 : 13.529 1182.7 1182.7 NEON vadd.f32 (32bit x4) n8 : 13.511 1184.2 1184.2 NEON vmla.f32 (32bit x4) n8 : 13.498 2370.7 2370.7 NEON vfma.f32 (32bit x4) n8 : 13.549 2361.8 2361.8
倍精度の場合はさらに差が広がっており、加算は 1 cycle で実行できますが乗算は 4 倍低速です。
さらに fmacd (積和) は乗算と同等の速度で演算しているものの、
vfma (FMA) は並列化されておらず 5倍 (1 add + 4 mul cycle) かかっているようです。
* VFP/NEON (double fp) VFP fmuld (64bit x1) n8 : 13.628 293.5 293.5 VFP faddd (64bit x1) n8 : 3.439 1163.0 1163.0 VFP fmacd (64bit x1) n8 : 13.508 592.2 592.2 VFP vfma.f64 (64bit x1) n8 : 16.895 473.5 473.5 VFP fmuld (64bit x1) ns4 : 13.434 297.8 297.8 VFP faddd (64bit x1) ns4 : 3.435 1164.6 1164.6 VFP fmacd (64bit x1) ns4 : 13.430 595.7 595.7 VFP vfma.f64 (64bit x1) ns4 : 16.823 475.5 475.5 VFP fmuld (64bit x1) n1 : 13.439 297.6 297.6 VFP faddd (64bit x1) n1 : 3.447 1160.6 1160.6 VFP fmacd (64bit x1) n1 : 26.856 297.9 297.9 VFP vfma.f64 (64bit x1) n1 : 26.860 297.8 297.8
関連エントリ
・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 の速度
・benchmark 関連