opengl:cpufop
文書の過去の版を表示しています。
CPU の浮動小数点演算能力の詳細
それぞれの演算命令で、1cycle に実行できる演算の数を割り出したものです。
- 実際の計測結果からの推定値 (VFP Benchmark を用いて測定した結果から割り出したものです)
Scalar
Scalar | single float (32bit x1) | double float (64bit x1) | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
CPU | FPU | mul | add | mad | fma | mul | add | mad | fma | |
XBurst JZ4775 | FPU F32 | 0.1 | 0.1 | 0.07 | – | 0.06 | 0.1 | 0.06 | – | ZWatch |
ARM1176JZF-S | VFPv2 | 0.5 | 0.5 | 1 | – | 0.5 | 0.5 | 1 | – | iPhone 3G , Raspberry Pi |
Cortex-A7 | VFPv4 + NEON | 1 | 1 | 2 | 2 | 0.25 | 1 | 0.5 | 0.4 | Raspberry Pi 2 |
Cortex-A8 | VFPv3 + NEON | 0.14 | 0.14 | 0.18 | – | 0.1 | 0.1 | 0.1 | – | iPhone 3GS, Nexus S |
Cortex-A9 | VFPv3 + NEON | 1 | 1 | 2 | – | 0.5 | 1 | 1 | – | Nexus 7 (2012), iPhone 4, Galaxy Nexus |
Cortex-A15 | VFPv4 + NEON | 1 | 1 | 1.4 | 2 | 1 | 1 | 1.4 | 1.4 | Nexus 10 |
Cortex-A53 64 | AArch64 NEON | 2 | 2 | - | 2 | 2 | 2 | – | 2 | Dragonboard 410c |
Cortex-A57 64 | AArch64 NEON | 2 | 2 | - | 2 | 2 | 2 | – | 2 | SHIELD Android TV |
Cortex-A72 64 | AArch64 NEON | 2 | 2 | - | 2.3 | 2 | 2 | – | 2.3 | Fire TV 2015 |
Scorpion | VFPv3 + NEON | 1 | 1 | 2 | – | 0.5 | 1 | 1 | – | Nexus One |
Krait (400) | VFPv4 + NEON | 1 | 1 | 2 | 2 | 1 | 1 | 1.6 | 2 | Nexus 4/5, Nexus 7 (2013) |
A6 Swift | VFPv4 + NEON | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | iPhone 5, iPad 4 |
A7 Cyclone 32 | AArch32 NEON | 1 | 1 | 2 | 2 | 2 | 3 | 3 | 3 | iPhone 5s, iPad Air |
A7 Cyclone 64 | AArch64 NEON | 2 | 3 | – | 4 | 2 | 3 | – | 1.6 | iPhone 5s, iPad Air |
A8X Typhoon 64 | AArch64 NEON | 2 | 3 | – | 4 | 2 | 3 | – | 4 | iPad Air 2 |
A9 Twister 64 | AArch64 NEON | 3 | 3 | – | 6 | 2 | 3 | – | 4 | iPhone SE |
Denver 64 | AArch64 NEON | 1 | 2 | – | 2 | 1 | 2 | – | 2 | Nexus 9 |
Atom Bonnell 32 | SSSE3 | 1 | 1 | (2) | – | 0.5 | 1 | (1.5) | – | |
Atom Silvermont 64 | SSE4.2 | 1 | 1 | ? | – | 0.5 | 1 | ? | – | BayTrail |
AMD Jaguar | SSE4.2/AVX | 1 | 1 | (2) | – | 0.5 | 1 | ? | – | Athlon 5350 (Kabini) |
Core2 Penryn 64 | SSE4.1 | 1 | 1 | (2) | – | 1 | 1 | (2) | – | |
Core i7 Sandy 64 | SSE4.2/AVX | 1 | 1 | (2) | – | 1 | 1 | (2) | – | |
Core i7 Ivy 64 | SSE4.2/AVX | 1 | 1 | (2) | – | 1 | 1 | (2) | – | |
Core i7 Haswell 64 | SSE4.2/AVX2/FMA3 | 2 | 1 | (2) | 4 | 2 | 1 | (2) | 4 | Core i7-4790K |
Celeron Haswell 64 | SSE4.2 | 2 | 1 | (2) | – | 2 | 1 | (2) | – | Celeron 2955U |
- ↑ core あたりの演算能力 (Scalar)
- 数値は 1 cycle で実行できる演算個数。数値が大きい方が高速
- 例: mad/fma は 1命令 = 2fop なので、2 のとき mad/fma 命令を 1cycle で実行できることになります。
- 同じように mad/fma が 4 のとき、2命令同時実行可能であることを意味しています。
- ARM: mad は旧積和命令、fma は Fused multiply add 命令です。fma 対応は VFPv4 以降、AArch64 では fma のみとなっています。
- Intel: mad は単独の積和命令ではなく add, mul の interleave 時の数値となっています。 区別するため括弧がついています。
SIMD sp
SIMD (Vector) sp | SIMD2 single fp (32bit x2) | SIMD4 single fp (32bit x4) | SIMD8 single fp (32bit x8) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CPU | FPU | mul | add | mad | fma | mul | add | mad | fma | mul | add | mad | fma |
Cortex-A7 | VFPv4 + NEON | 1 | 1 | 2 | 2 | 1 | 1 | 2 | 2 | – | – | – | – |
Cortex-A8 | VFPv3 + NEON | 2 | 2 | 4 | – | 2 | 2 | 4 | – | – | – | – | – |
Cortex-A9 | VFPv3 + NEON | 2 | 2 | 4 | – | 2 | 2 | 4 | – | – | – | – | – |
Cortex-A15 | VFPv4 + NEON | 4 | 4 | 8 | 8 | 4 | 4 | 8 | 8 | – | – | – | – |
Cortex-A53 | AArch64 NEON | 4 | 4 | – | 8 | 4 | 4 | – | 8 | – | – | – | – |
Cortex-A57 | AArch64 NEON | 4 | 4 | – | 8 | 4 | 4 | – | 8 | – | – | – | – |
Cortex-A72 | AArch64 NEON | 4 | 4 | – | 8 | 4 | 4 | – | 8 | – | – | – | – |
Scorpion | VFPv3 + NEON | 2 | 2 | 4 | – | 4 | 4 | 8 | – | – | – | – | – |
Krait 400 | VFPv4 + NEON | 2 | 2 | 4 | 4 | 4 | 4 | 8 | 8 | – | – | – | – |
A6 Swift | VFPv4 + NEON | 2 | 2 | 4 | 4 | 4 | 4 | 8 | 8 | – | – | – | – |
A7 Cyclone 32 | AArch32 NEON | 4 | 6 | 8 | 8 | 8 | 12 | 16 | 16 | – | – | – | – |
A7 Cyclone 64 | AArch64 NEON | 4 | 6 | – | 8 | 8 | 12 | – | 16 | – | – | – | – |
A8X Typhoon 64 | AArch64 NEON | 4 | 6 | – | 8 | 8 | 12 | – | 16 | – | – | – | – |
Denver 64 | AArch64 NEON | 2 | 3 | – | 4 | 4 | 6 | – | 8 | – | – | – | – |
Atom Bonnell 32 | SSSE3 | – | – | – | – | 2 | 4 | (6) | – | – | – | – | – |
Atom Silvermont 64 | SSE4.2 | – | – | – | – | 2 | 4 | (6) | – | – | – | – | – |
AMD Jaguar 64 | SSE4.2/AVX | – | – | – | – | 4 | 4 | (8) | – | 4 | 4 | (8) | – |
Core2 Penryn 64 | SSE4.1 | – | – | – | – | 4 | 4 | (8) | – | – | – | – | – |
Core i7 Sandy 64 | SSE4.2/AVX | – | – | – | – | 4 | 4 | (8) | – | 8 | 8 | (16) | – |
Core i7 Ivy 64 | SSE4.2/AVX | – | – | – | – | 4 | 4 | (8) | – | 8 | 8 | (16) | – |
Core i7 Haswell 64 | SSE4.2/AVX2/FMA3 | – | – | – | – | 8 | 4 | (8) | 16 | 16 | 8 | (16) | 32 |
Celeron Haswell 64 | SSE4.2 | – | – | – | – | 8 | 4 | (8) | – | – | – | – | – |
- ↑ core あたりの演算能力 (Vector) sp
- 数値は 1 cycle で実行できる演算数。数値が大きいほうが高速
- 例: SIMD4 add は 1命令 = 4fop なので、4 のとき 1cycle で実行できることになります。
- 例: SIMD4 mad/fma は 1命令 = 8fop なので、8 のとき 1cycle で実行できることになります。
- 括弧は専用の積和命令を持っていないが加算と乗算命令をペアリングなことを意味しています。
SIMD dp
SIMD (Vector) dp | SIMD2 double fp (64bit x2) | SIMD4 double fp (64bit x4) | |||||||
---|---|---|---|---|---|---|---|---|---|
CPU | FPU | mul | add | mad | fma | mul | add | mad | fma |
Cortex-A53 | AArch64 NEON | 2 | 2 | – | 4 | – | – | – | – |
Cortex-A57 | AArch64 NEON | 2 | 2 | – | 4 | – | – | – | – |
Cortex-A72 | AArch64 NEON | 2 | 2 | – | 4 | – | – | – | – |
A7 Cyclone 64 | AArch64 NEON | 4 | 6 | – | 8 | – | – | – | – |
A8 Typhoon 64 | AArch64 NEON | 4 | 6 | – | 8 | – | – | – | – |
Denver 64 | AArch64 NEON | 2 | 3 | – | 4 | – | – | – | – |
Atom Bonnell 32 | SSSE3 | 0.4 | 0.5 | – | – | – | – | – | – |
Atom Silvermont 64 | SSE4.2 | 0.5 | 1 | (1.5) | – | – | – | – | – |
AMD Jaguar | SSE4.2/AVX | 1 | 2 | (3) | – | 1 | 2 | (3) | – |
Core2 Penryn 64 | SSE4.1 | 2 | 2 | (3?) | – | – | – | – | – |
Core i7 Sandy 64 | SSE4.2/AVX | 2 | 2 | (4) | – | 4 | 4 | (8) | – |
Core i7 Ivy 64 | SSE4.2/AVX | 2 | 2 | (4) | – | 4 | 4 | (8) | – |
Core i7 Haswell 64 | SSE4.2/AVX2/FMA3 | 4 | 2 | (4) | 8? | 8 | 4 | (8) | 16? |
Celeron Haswell 64 | SSE4.2 | 4 | 2 | (4) | – | – | – | – | – |
- ↑ core あたりの演算能力 (Vector) dp
- ARM の SIMD2 double fp 対応は ARM64 以降
opengl/cpufop.1460115945.txt.gz · 最終更新: 2016/04/08 20:45 by oga