ユーザ用ツール

サイト用ツール


opengl:cpucore

CPU 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 (VFP9-S) 0 0
ARM ARM11 (ARM1176) 1.25 ARMv6 1-4 L1 L2 8 stage in-order single 1 (VFPv2) (NEON) 1 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-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 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-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
ARM Cortex-A5 1.6 ARMv7A 1-4 L1 L2 8 stage in-order in-order single 1 (VFPv4) (NEON) 32bit 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
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-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 11+ stage out-of-order out-of-order VFPv4 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/32K0.5-2M out-of-order out-of-order 3?/? 8 AArch64 NEON A64 NEON 64bit x2 8 4
ARM Cortex-A72 ARMv8A 1-4X out-of-order out-of-order 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
Qualcomm Scorpion 2.1 ARMv7A 1-2 L1 L2 out-of-order in-order 2/? ? VFPv3 NEON 128bit 8 1
Qualcomm Krait 3.3 ARMv7A 1-4 4K/4K16K/16K L2 out-of-order out-of-order 3/? ? VFPv4 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 300 ? 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 NEON 128bit 8 2
Qualcomm Kyro ARMv8A out-of-order out-of-order AArch64 NEON A64 NEON 128bit 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
Apple Swift ? ARMv7A ? L1 L2 out-of-order out-of-order 3?/? ? VFPv4 NEON 128bit 8 1
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
  • 括弧付きの VFP/NOEN は Option であることを意味しています。
  • (*1) : Cortex-A8 の VFP は pipeline 化されておらず実行完了まで stall します。他の CPU core と比較してスループットは 1/5~1/10
  • Cortex-A7/A15/A53/A57 は 1クラスタあたり最大 4 core まで。4 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 命令もそのまま走ります。

参考

opengl/cpucore.txt · 最終更新: 2016/09/10 22:29 by oga