ユーザ用ツール

サイト用ツール


opengl:cpucore

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
opengl:cpucore [2014/04/14 20:37]
oga [Scorpion]
opengl:cpucore [2018/06/08 21:57]
oga [Mobile CPU core]
行 1: 行 1:
- 
 ====== CPU core ====== ====== CPU core ======
  
行 7: 行 6:
  
  
-===== 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 |        |     | 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       |        |     | 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  |        |     |32K/32K| 0-1M |    |  13 stage   | in-order      | in-order              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        |        |     |32K/32K| 0-1M |    |  13 stage    | in-order      | in-order              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    |  (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    |  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             |  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                    | 
-^ 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            |  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          |        | +| 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 | Kryo                       | ARMv8A        |          |                |    |              | out-of-order  | out-of-order |                 |  AArch64 NEON    | A64 NEON |  128bit      8          |        | 
-| 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    |  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       |
  
  
行 49: 行 56:
 ARMv7A 第一世代の Cortex-A8 は Multi Core 非対応なので、採用 SoC はすべて Single Core となります。 ARMv7A 第一世代の Cortex-A8 は Multi Core 非対応なので、採用 SoC はすべて Single Core となります。
 Multi Core 対応は Cortex-A9 以降。 Multi Core 対応は Cortex-A9 以降。
 +
 +ARM11 のおよそ 2倍の実行性能。
  
 NEON を標準搭載しているため、single precision floating-point のピーク演算能力が高いことが特徴。 NEON を標準搭載しているため、single precision floating-point のピーク演算能力が高いことが特徴。
行 72: 行 81:
  
 Multi Core 対応で、Tegra 2 以降急激に採用 SoC が増えました。 Multi Core 対応で、Tegra 2 以降急激に採用 SoC が増えました。
 +Smartphone から Tablet まで非常に幅広く用いられています。
 +
 VFP も pipeline 化されており、Cortex-A8 のような欠点がありません。 VFP も pipeline 化されており、Cortex-A8 のような欠点がありません。
 性能的にはすべての面で Cortex-A8 を上回ります。 性能的にはすべての面で Cortex-A8 を上回ります。
  
 ただし NEON が Option 扱いとなっており、SoC の構成によっては NEON 命令が使えないものがあります。 ただし NEON が Option 扱いとなっており、SoC の構成によっては NEON 命令が使えないものがあります。
-NEON 無しの Cortex-A9 で一番メジャーなのが Tegra 2 です。+NEON 無しの Cortex-A9 で一番有名なのが Tegra 2 です。
  
 Cortex-A8 の VFP が遅いので、浮動小数点演算はすべて NEON を使いたいが、Tegra 2 のために NEON を使えないというジレンマがありました。 Cortex-A8 の VFP が遅いので、浮動小数点演算はすべて NEON を使いたいが、Tegra 2 のために NEON を使えないというジレンマがありました。
行 87: 行 98:
  
 Qualcomm 独自に開発した ARMv7A CPU core で、 Qualcomm 独自に開発した ARMv7A CPU core で、
-ちょうど Cortex-A8/A9 に対する形となります。+ちょうど Cortex-A8/A9 に対する形となります。
  
 性能的には Cortex-A8 より上で、Cortex-A9 同様 MultiCore 対応ながら Cortex-A8 とほぼ同時期に用いられていました。 性能的には Cortex-A8 より上で、Cortex-A9 同様 MultiCore 対応ながら Cortex-A8 とほぼ同時期に用いられていました。
行 95: 行 106:
 ただし pipeline が深く、高クロック動作する反面、実行効率がわずかに劣ります。 ただし 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)             |
  
  
行 110: 行 133:
  
  
 +==== 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 命令もそのまま走ります。
  
  
-===== x86 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 ^ 
-| Intel    | Atom Saltwell    |       2.4 | IA32/Intel64  |  1-2 HT  |     |32K/24K| 0.5M |    |             | in-order      | in-order              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          |          | 
  
 ===== 参考 ===== ===== 参考 =====
行 128: 行 203:
     * [[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]]
 +
  
  
  
  
opengl/cpucore.txt · 最終更新: 2018/06/08 21:57 by oga