両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン最新のリビジョン両方とも次のリビジョン |
opengl:cpucore [2014/04/14 17:45] – [x86 core] oga | opengl:cpucore [2016/09/10 22:29] – [Mobile CPU core] oga |
---|
| |
====== CPU core ====== | ====== CPU core ====== |
| |
| |
| |
===== ARM core ===== | |
| |
| ===== Mobile CPU core ===== |
| |
^ design ^ core ^ DMIPS/MHz ^ ISA ^ core ^ L0 ^ L1 ^ L2 ^ L3 ^ pipe-depth ^ order (int) ^order(fp/simd)^ dec/issue ^ exec ^ FPU ^ SIMD ^ SIMD width ^ sp fp/clock ^ dp/clock ^ | |
| ARM | ARM9 (ARM926) | 1.1 | ARMv5TE | 1 | | L1 | L2 | | 5 stage | in-order | | single | 1 | | | | 0 | 0 | | ^ design ^ core ^ DMIPS/MHz ^ ISA ^ core ^ L0 ^ L1 ^ L2 ^ L3 ^ pipe-depth ^ order (int) ^order(fp/simd)^ dec/issue ^ exec ^ FPU ^ SIMD ^ SIMD width ^ sp fp/clock ^ dp/clock ^ |
| ARM | ARM11 (ARM1176) | 1.25 | ARMv6 | 1-4 | | L1 | L2 | | 8 stage | in-order | | single | 1 | (VFPv2) | | | 1 | 1 | | | ARM | ARM9 (ARM926) | 1.1 | ARMv5TE | 1 | | L1 | L2 | | 5 stage | in-order | | single | 1 | (VFP9-S) | -- | | 0 | 0 | |
^ design ^ core ^ DMIPS/MHz ^ ISA ^ core ^ L0 ^ L1 ^ L2 ^ L3 ^ pipe-depth ^ order (int) ^order(fp/simd)^ dec/issue ^ exec ^ FPU ^ SIMD ^ SIMD width ^ sp fp/clock ^ dp/clock ^ | | ARM | ARM11 (ARM1176) | 1.25 | ARMv6 | 1-4 | | L1 | L2 | | 8 stage | in-order | | single | 1 | (VFPv2) | (NEON) | | 1 | 1 | |
| ARM | Cortex-A8 | 2.0 | ARMv7A | 1 | |32K/32K| 0-1M | | 13 stage | in-order | in-order | 2 | 2 | VFPv3-D32 (*1) | NEON | 64bit | 4 | 0.1 | | ^ design ^ core ^ DMIPS/MHz ^ ISA ^ core ^ L0 ^ L1 ^ L2 ^ L3 ^ pipe-depth ^ order (int) ^order(fp/simd)^ dec/issue ^ exec ^ FPU ^ SIMD ^ SIMD width ^ sp fp/clock ^ dp/clock ^ |
| ARM | Cortex-A9 | 2.5 | ARMv7A | 1-4 | |16-64K |0.5-8M| | 8 stage | out-of-order | in-order | 2/4? | ? | (VFPv3) | (NEON) | 64bit | 4 | 1 | | | ARM | Cortex-A8 | 2.0 | ARMv7A | 1 | |32K/32K| 0-1M | | 13 stage | in-order | in-order | 2 | 2 | VFPv3 (*1) | NEON | 64bit | 4 | 0.1 | |
| ARM | Cortex-A9 R4 | ? | ARMv7A | 1-4 | |16-64K |0.5-8M| | 8 stage | out-of-order | in-order | 2/4? | ? | (VFPv3) | (NEON) | 64bit | 4 | 1 | | | ARM | Cortex-A9 | 2.5 | ARMv7A | 1-4 | |16-64K |0.5-8M| | 8-11 stage | out-of-order | in-order | 2/2 | ? | (VFPv3) | (NEON) | 64bit | 4 | 1 | |
| ARM | Cortex-A5 | 1.6 | ARMv7A | 1-4 | | L1 | L2 | | 8 stage | in-order | | single | 1 | (VFPv4) | (NEON) | 32bit | 2 | | | | ARM | Cortex-A9 R4 | ? | ARMv7A | 1-4 | |16-64K |0.5-8M| | 8-11 stage | out-of-order | in-order | 2/2 | ? | (VFPv3) | (NEON) | 64bit | 4 | 1 | |
^ design ^ core ^ DMIPS/MHz ^ ISA ^ core ^ L0 ^ L1 ^ L2 ^ L3 ^ pipe-depth ^ order (int) ^order(fp/simd)^ dec/issue ^ exec ^ FPU ^ SIMD ^ SIMD width ^ sp fp/clock ^ dp/clock ^ | | ARM | Cortex-A5 | 1.6 | ARMv7A | 1-4 | | L1 | L2 | | 8 stage | in-order | in-order | single | 1 | (VFPv4) | (NEON) | 32bit | 2 | | |
| ARM | Cortex-A15 | 3.5 | ARMv7A | 1-4X | | L1 | L2 | | 15 stage | out-of-order | out-of-order | 3/8mop | 8mop | VFPv4-D32 | NEON | 64bit x2 | 8 | 1.4 | | ^ design ^ core ^ DMIPS/MHz ^ ISA ^ core ^ L0 ^ L1 ^ L2 ^ L3 ^ pipe-depth ^ order (int) ^order(fp/simd)^ dec/issue ^ exec ^ FPU ^ SIMD ^ SIMD width ^ sp fp/clock ^ dp/clock ^ |
| ARM | Cortex-A7 | 1.9 | ARMv7A | 1-4X | | L1 | L2 | | 8 stage | in-order | in-order | 2 | 2 | (VFPv4) | (NEON) | 32bit | 2 | 1 | | | ARM | Cortex-A15 | 3.5 | ARMv7A | 1-4X | | L1 | L2 | | 15 stage | out-of-order | out-of-order | 3/8mop | 8mop | VFPv4 | NEON | 64bit x2 | 8 | 1.4 | |
| ARM | Cortex-A12 | | ARMv7A | | | | | | | | | | | | | | | | | | ARM | Cortex-A7 | 1.9 | ARMv7A | 1-4X | | L1 | L2 | | 8 stage | in-order | in-order | 2 | 2 | VFPv4 | NEON | 32bit | 2 | 1 | |
| ARM | Cortex-A17 | | ARMv7A | | | | | | | | | | | | | | | | | | ARM | Cortex-A17 | | ARMv7A | | | | | | 11+ stage | out-of-order | out-of-order | | | VFPv4 | NEON | | | | |
| ARM | Cortex-A53 | 2.3 | ARMv8A | 1-4X | |8-64K |0.5-2M| | | in-order | | 2/? | 5 | AArch64 NEON | A64 NEON | | | | | | ARM | Cortex-A53 | 2.3 | ARMv8A | 1-4X | |8-64K |0.5-2M| | 8 stage | in-order | in-order | 2/? | 5 | AArch64 NEON | A64 NEON | 64bit x2 | 8 | 4 | |
| ARM | Cortex-A57 | ? | ARMv8A | 1-4X | |48K/32K|0.5-2M| | | | | 3?/? | 8 | AArch64 NEON | A64 NEON | | | | | | ARM | Cortex-A57 | ? | ARMv8A | 1-4X | |48K/32K|0.5-2M| | | out-of-order | out-of-order | 3?/? | 8 | AArch64 NEON | A64 NEON | 64bit x2 | 8 | 4 | |
^ design ^ core ^ DMIPS/MHz ^ ISA ^ core ^ L0 ^ L1 ^ L2 ^ L3 ^ pipe-depth ^ order (int) ^order(fp/simd)^ dec/issue ^ exec ^ FPU ^ SIMD ^ SIMD width ^ sp fp/clock ^ dp/clock ^ | | ARM | Cortex-A72 | | ARMv8A | 1-4X | | | | | | out-of-order | out-of-order | | | AArch64 NEON | A64 NEON | 64bit x2 | 8 | 4 | |
| Qualcomm | Scorpion | 2.1 | ARMv7A | 1-2 | | L1 | L2 | | | out-of-order | in-order | 2/? | ? | VFPv3-D32 | NEON | 128bit | 8 | 1 | | ^ design ^ core ^ DMIPS/MHz ^ ISA ^ core ^ L0 ^ L1 ^ L2 ^ L3 ^ pipe-depth ^ order (int) ^order(fp/simd)^ dec/issue ^ exec ^ FPU ^ SIMD ^ SIMD width ^ sp fp/clock ^ dp/clock ^ |
| Qualcomm | Krait | 3.3 | ARMv7A | 1-4 |4K/4K|16K/16K| L2 | | | out-of-order | out-of-order | 3/? | ? | VFPv4-D32 | NEON | 128bit | 8 | 2 | | | Qualcomm | Scorpion | 2.1 | ARMv7A | 1-2 | | L1 | L2 | | | out-of-order | in-order | 2/? | ? | VFPv3 | NEON | 128bit | 8 | 1 | |
| Qualcomm | Krait 200 | ? | ARMv7A | ? |4K/4K| L1 | L2 | | | out-of-order | out-of-order | 3/? | ? | VFPv4-D32 | NEON | 128bit | 8 | 2 | | | Qualcomm | Krait | 3.3 | ARMv7A | 1-4 |4K/4K|16K/16K| L2 | | | out-of-order | out-of-order | 3/? | ? | VFPv4 | NEON | 128bit | 8 | 2 | |
| Qualcomm | Krait 300 | ? | ARMv7A | ? |4K/4K| L1 | L2 | | | out-of-order | out-of-order | 3/? | ? | VFPv4-D32 | NEON | 128bit | 8 | 2 | | | Qualcomm | Krait 200 | ? | ARMv7A | ? |4K/4K| L1 | L2 | | | out-of-order | out-of-order | 3/? | ? | VFPv4 | NEON | 128bit | 8 | 2 | |
| Qualcomm | Krait 400 | ? | ARMv7A | ? |4K/4K| L1 | L2 | | | out-of-order | out-of-order | 3/? | ? | VFPv4-D32 | NEON | 128bit | 8 | 2 | | | Qualcomm | Krait 300 | ? | ARMv7A | ? |4K/4K| L1 | L2 | | | out-of-order | out-of-order | 3/? | ? | VFPv4 | NEON | 128bit | 8 | 2 | |
^ design ^ core ^ DMIPS/MHz ^ ISA ^ core ^ L0 ^ L1 ^ L2 ^ L3 ^ pipe-depth ^ order (int) ^order(fp/simd)^ dec/issue ^ exec ^ FPU ^ SIMD ^ SIMD width ^ sp fp/clock ^ dp/clock ^ | | Qualcomm | Krait 400 | ? | ARMv7A | ? |4K/4K| L1 | L2 | | | out-of-order | out-of-order | 3/? | ? | VFPv4 | NEON | 128bit | 8 | 2 | |
| Apple | Swift | ? | ARMv7A | ? | | L1 | L2 | | | out-of-order | out-of-order | 3?/? | ? | VFPv4-D32 | NEON | 128bit | 8 | 1 | | | Qualcomm | Kyro | | ARMv8A | | | | | | | out-of-order | out-of-order | | | AArch64 NEON | A64 NEON | 128bit | 8 | 4 | |
| Apple | Cyclone | ? | ARMv8A | ? | | | | | | out-of-order | out-of-order | | | AArch64 NEON | A64 NEON | 128bit x2 | 16 | 8 | | ^ design ^ core ^ DMIPS/MHz ^ ISA ^ core ^ L0 ^ L1 ^ L2 ^ L3 ^ pipe-depth ^ order (int) ^order(fp/simd)^ dec/issue ^ exec ^ FPU ^ SIMD ^ SIMD width ^ sp fp/clock ^ dp/clock ^ |
^ design ^ core ^ DMIPS/MHz ^ ISA ^ core ^ L0 ^ L1 ^ L2 ^ L3 ^ pipe-depth ^ order (int) ^order(fp/simd)^ dec/issue ^ exec ^ FPU ^ SIMD ^ SIMD width ^ sp fp/clock ^ dp/clock ^ | | Apple | Swift | ? | ARMv7A | ? | | L1 | L2 | | | out-of-order | out-of-order | 3?/? | ? | VFPv4 | NEON | 128bit | 8 | 1 | |
| NVIDIA | Denver | ? | ARMv8A | ? | | | | | | | | | | AArch64 NEON | A64 NEON | | | | | | Apple | Cyclone | ? | ARMv8A | ? | | | | | | out-of-order | out-of-order | | | AArch64 NEON | A64 NEON | 128bit x2 | 16 | 8 | |
| | Apple | Twister | | ARMv8A | | | | | | | out-of-order | out-of-order | | | AArch64 NEON | A64 NEON | 128bit x3 | 24 | 12 | |
| ^ design ^ core ^ DMIPS/MHz ^ ISA ^ core ^ L0 ^ L1 ^ L2 ^ L3 ^ pipe-depth ^ order (int) ^order(fp/simd)^ dec/issue ^ exec ^ FPU ^ SIMD ^ SIMD width ^ sp fp/clock ^ dp/clock ^ |
| | NVIDIA | Denver | ? | ARMv8A | ? | | | | | | | | | | AArch64 NEON | A64 NEON | | | | |
| ^ design ^ core ^ DMIPS/MHz ^ ISA ^ core ^ L0 ^ L1 ^ L2 ^ L3 ^ pipe-depth ^ order (int) ^order(fp/simd)^ dec/issue ^ exec ^ FPU ^ SIMD ^ SIMD width ^ sp fp/clock ^ dp/clock ^ |
| | Intel | Atom Saltwell | 2.4 | IA32/Intel64 | 1-2 HT | |32K/24K| 0.5M | | | in-order | in-order | 2 | 2 | FPU x87 / SSE2 | SSSE3 | | 6 | 0.5 | |
| | Intel | Atom Silvermont | | IA32/Intel64 | | | | | | | out-of-order | | | | FPU x87 / SSE2 | | | | | |
| | AMD | Bobcat | ? | IA32/AMD64 | 1-4 | |32K/32K| 0.5M | | | out-of-order | | 2/? | ? | FPU x87 / SSE2 | SSE4A | 64bit | 4 | | |
| | AMD | Jaguar | ? | IA32/AMD64 | ? | | | | | | out-of-order | | 2/? | ? | FPU x87 / SSE2 | SSE4A | 128bit | 8 | 3 | |
| |
| |
| |
| |
===== x86 core ===== | ==== Group 1 ==== |
| |
| === Cortex-A8 === |
| |
| ARMv7A 第一世代の Cortex-A8 は Multi Core 非対応なので、採用 SoC はすべて Single Core となります。 |
| Multi Core 対応は Cortex-A9 以降。 |
| |
| ARM11 のおよそ 2倍の実行性能。 |
| |
| NEON を標準搭載しているため、single precision floating-point のピーク演算能力が高いことが特徴。 |
| 反面、トレードオフとして VFP が非常に低速です。 |
| |
| VFP の浮動小数点演算が pipeline 化されていないことが原因で、完了するまで次の演算が stall します。 |
| 結果、一世代前の ARM11 にもスコアで 1桁負けるくらいの遅さです。(1/5~1/10 くらいの遅さ) |
| |
| VFP は NEON と違い IEEE754 準拠かつ倍精度対応なので、用途によっては VFP を使わなければなりません。 |
| |
| 動的な型付を持つ Script 系言語では、数値型として倍精度実数 (64bit double) を用いるものが多くあります。 |
| 例えば JavaScript はその代表といえるでしょう。 |
| bit 演算など整数範囲で収まる場合は 32bit integier ですが、32bit を超える値や除算などの演算により double 型に変換されます。 |
| |
| よって Cortex-A8 は Web 系アプリケーションとの相性が極めて悪い CPU であると言えます。 |
| |
| 現役で使われている Cortex-A8 はあまり多くありません。 |
| 最新 OS が動く端末としては Apple A4 の iPhone 4 が最後ではないかと思います。 |
| |
| |
| |
| === Cortex-A9 === |
| |
| Multi Core 対応で、Tegra 2 以降急激に採用 SoC が増えました。 |
| Smartphone から Tablet まで非常に幅広く用いられています。 |
| |
| VFP も pipeline 化されており、Cortex-A8 のような欠点がありません。 |
| 性能的にはすべての面で Cortex-A8 を上回ります。 |
| |
| ただし NEON が Option 扱いとなっており、SoC の構成によっては NEON 命令が使えないものがあります。 |
| NEON 無しの Cortex-A9 で一番有名なのが Tegra 2 です。 |
| |
| Cortex-A8 の VFP が遅いので、浮動小数点演算はすべて NEON を使いたいが、Tegra 2 のために NEON を使えないというジレンマがありました。 |
| Tegra 2 以外では NEON 非対応 Cortex-A9 端末を見たことがないので、今となってはあまり気にする必要がないかもしれません。 |
| |
| NEON 命令は in-order 実行かつ 64bit ALU なので、実行性能で後発 CPU に負けます。 |
| |
| |
| === Scorpion === |
| |
| Qualcomm 独自に開発した ARMv7A CPU core で、 |
| ちょうど Cortex-A8/A9 に対抗する形となります。 |
| |
| 性能的には Cortex-A8 より上で、Cortex-A9 同様 MultiCore 対応ながら Cortex-A8 とほぼ同時期に用いられていました。 |
| |
| NEON も標準搭載で VFP も stall 無し。 |
| NEON は 128bit ALU で、ピーク性能では Cortex-A9 の 2倍になります。 |
| ただし pipeline が深く、高クロック動作する反面、実行効率がわずかに劣ります。 |
| |
| 2010~2011年の Smartphone の大半が Scorpiopn 搭載 Snapdragon で占められていました。 |
| |
| |
| === Cortex-A7 === |
| |
| 実行性能よりも低消費電力優先で作られた ARMv7A CPU。 |
| Cortex-A15 以降と互換の命令セットを持ち、big.LITTLE の little 側として利用できることが特徴。 |
| |
| 実行パイプは in-order の 2本で、Cortex-A8 によく似た構成を持っています。 |
| もちろん Cortex-A8 のように VFP が遅いことはなく Cortex-A9 以降同様に Pipeline 化された当たり前の速度で走ります。 |
| |
| 反面、標準搭載である NEON の実行効率が落ちています。 |
| NEON 命令を実行できるものの SIMD としての価値はなく、32bit ALU でスカラーと同等の速度しか出ません。 |
| |
| Cortex-A7 だけの Multi Core SoC も存在していますが、同じ Quad Core といっても Cortex-A9 と比べると性能が大きく劣る点は注意が必要です。 |
| |
| ^ CPU core ^ 整数pipe ^ VFP(スカラー 浮動小数点 単精度/倍精度) ^ NEON (SIMD 浮動小数点 単精度) ^ |
| | Cortex-A8 | 同等 (2 pipe) | 極めて遅い (非 pipeline、1/5~1/10 ) | 速い (64bit ALU) | |
| | Cortex-A7 | 同等 (2 pipe) | 普通 (2fp/clock , 1dp/clock ) | 遅い (32bit ALU) | |
| |
| |
| |
| |
| |
| |
| |
| |
| ==== Group 2 ==== |
| |
| === Krait === |
| |
| Qualcomm 独自コアの 2世代目で、 |
| VFPv4 対応、演算ユニットの増加、NEON の out-of-order 化など大幅に強化されています。 |
| Cortex-A15 対抗。 |
| Scorpion 同様に他よりも市場投入が速いことが特徴。 |
| Cortex-A9 全盛時にすでに Snapdragon には Krait が用いられていました。 |
| |
| Swifth/Cortex-A15 よりも実行効率は若干劣るものの高クロック動作が特徴で、総合的な性能は非常に高いと言えます。 |
| |
| 2013-2014 現在のハイエンド Smartphone 向け CPU はほとんど全部 Krait が用いられており、 |
| Group 2 で最もメジャーな CPU core となっています。 |
| |
| 反面、64bit 化で遅れており Qualcomm 独自の 64bit core はまだ発表されていません。 |
| |
| |
| |
| === Swift === |
| |
| Apple の独自 CPU core の 1世代目。 |
| 動作クロックを抑えつつ、実行効率の高さでカバーしているある意味 Krait と逆の特性を持っています。 |
| |
| 市場投入後わずか 1年で後継の Cyclone が登場し、ハイエンドの座を明け渡すことに。 |
| 予想外に短命になりそうな CPU core。 |
| 採用端末は iPhone 5, iPhone 5c, iPad 4 のみ。 |
| |
| |
| |
| |
| === Cortex-A15 === |
| |
| 実行パイプライン、演算ユニット等、大幅に改良された ARM core 。 |
| VFP/NEON も統合され、out-of-order で実行効率が大きく向上しています。 |
| |
| 機能的に互換性を持った Cortex-A7 と組み合わせて big.LITTLE 構成できるのも特徴。 |
| |
| 基本性能は高いが SmartPhone 向けは Krait 一色で、採用端末はなかなか増えません。 |
| |
| |
| |
| |
| |
| |
| ==== Group 3 ==== |
| |
| === Cyclone === |
| |
| Apple の独自 CPU core の 2世代目です。 |
| 市場に投入された初の ARM 64bit (ARMv8, AArch64) 対応 CPU core でもあります。 |
| 64bit 化だけでなく性能的にも大きく向上しています。 |
| |
| Swift 同様、低い動作クロックながらも高い IPC が特徴。 |
| 演算ユニットは更に増えて、FP/NEON も実行 2~3pipe 有していることがわかっています。 |
| NEON の single precision fp ピーク性能は他の CPU core の 2倍。 |
| |
| ARMv8 のお陰で倍精度演算も強化されており、倍精度演算は他の ARM CPU core の 4~8倍 (64bit mode のみ)。 |
| 新しい命令セットによるメリットが大きく、ARM の 64bit 化が非常に効果的であることを知らしめてくれた CPU 。 |
| |
| もちろん上位互換性があるので、ARMv7A 32bit 命令もそのまま走ります。 |
| |
| |
^ design ^ core ^ DMIPS/MHz ^ ISA ^ core ^ L0 ^ L1 ^ L2 ^ L3 ^ pipe-depth ^ order (int) ^order(fp/simd)^ dec/issue ^ exec ^ FPU ^ SIMD ^ SIMD width ^ sp fp/clock ^ dp/clock ^ | |
| Intel | Atom Saltwell | 2.4 | IA32/Intel64 | 1-2 HT | |32K/24K| 0.5M | | | in-order | in-order | 2 | 2 | FPU x87 / SSE2 | SSSE3 | | 6 | | | |
| Intel | Atom Silvermont | | IA32/Intel64 | | | | | | | out-of-order | | | | FPU x87 / SSE2 | | | | | | |
| AMD | Bobcat | ? | IA32/AMD64 | 1-4 | |32K/32K| 0.5M | | | out-of-order | | 2/? | ? | FPU x87 / SSE2 | SSE4A | 64bit | 4 | | | |
| AMD | Jaguar | ? | IA32/AMD64 | ? | | | | | | out-of-order | | 2/? | ? | FPU x87 / SSE2 | SSE4A | 128bit | 8 | | | |
| |
===== 参考 ===== | ===== 参考 ===== |
* [[http://pc.watch.impress.co.jp/docs/news/event/20091116_329293.html]] | * [[http://pc.watch.impress.co.jp/docs/news/event/20091116_329293.html]] |
* [[http://www.arm.com/ja/products/processors/cortex-a50/cortex-a53-processor.php]] | * [[http://www.arm.com/ja/products/processors/cortex-a50/cortex-a53-processor.php]] |
| |
| |
| |
| |
| |