はじめに
SIMDプログラミングをするためには,使っているCPUのアーキテクチャや,どのSIMDに対応するか知る必要があります.ここでは直近10年のCPUについてまとめます.
CPU年表
Intel
Intel CPUの場合,Core iシリーズの第一世代(2008)までは,AVXではなく,SSE4.2までに限定されています.
AVXは第2世代のCore-iシリーズであるSandy Bride(2011)からサポートしており,浮動小数点演算に関してはここからAVX命令が使えます.
AVX2とFMAは,第4世代のCore-iシリーズであるHaswell(2013)からサポートしており,整数演算に対する拡張や,FMA命令による浮動小数点演算の強化がされました.
AVX-512はSkylake-XやSkylake-SP(2017/7)といったハイエンドデスクトップ(HEDT)やサーバー用のXeonで対応しています.
なお,AVX-512がはじめに使用可能になったものは,GPUにとって代わろうとして演算専用ユニットとして登場したXeon Phiです.
コンシューマのメインストリームでは,Rocket Lake(2021)から対応しています.
一方で,モバイル用途のCannon Lake(2018)もAVX512に対応していますが,クロック数が全く上がらなかったため広がっていません.
Ice lake(2019)でこの問題はある程度改善しましたたが,やはりメインを張れるほど広がっていませんでした(MacBook Pro専用1068NG7が最上位).
この改善であるTiger Lake(2020)からメインに使われるCPUにAVX-512が搭載されています.
なお,サーバー向けのCPUであるIce Lake-SPは,現在のIntel CPUの中で最大の性能を持っています.
Alder Lake (2021)から,CPUがハイブリッドコアで構成されています.また,DDR5にはじめて対応します.
高性能コア(Pコア:Golden Cove)と高効率コア(Eコア:Gracemont)によって構成されており,それぞれ性能が違います.
なお,P-CoreはAVX-512が使え,E-CoreがAVX-512に対応しないため,E-Coreを無効化することで,Alder LakeのCPUでもAVX-512を使うことができます.
また,AVX2-VNNI (Vector Neural Network Instructions) に対応したCPUです.これは,AVX-512にあったVNNI命令をAVX2に持ってきたものです.
Intel CPUのCore i7からの年表は以下のようになります.
Xeonは,比較的新しいスケーラブル以外はたくさんありすぎるので記述していません.
一部情報がないため空欄です.お分かりになる方,埋めていただけると幸いです.
Arch. | Type | Code Name | Gen | Year | Process | SIMD | CPU | Core | Base | Boost | All | Memory |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Nehalem | D | Bloomfield | 1 | 200811 | 45nm | SSE4.2 | 965Ext | 4C8T | 3.2 | 3.46 | 3.3 | DDR3 1066x3 |
Nehalem | D | Bloomfield | 1 | 200906 | 45nm | SSE4.2 | 975Ext | 4C8T | 3.33 | 3.6 | 3.46 | DDR3 1066x3 |
Nehalem | D | Lynnfield | 1 | 200908 | 45nm | SSE4.2 | 870 | 4C8T | 2.93 | 3.6 | 3.2 | DDR3 1333x2 |
Nehalem | D | Westmere(Gulftown) | 1 | 201003 | 32nm | SSE4.2 | 980X | 6C12T | 3.33 | 3.6 | 3.46 | DDR3 1066x3 |
Nehalem | D | Westmere(Gulftown) | 1 | 201102 | 32nm | SSE4.2 | 990X | 6C12T | 3.46 | 3.73 | 3.6 | DDR3 1066x3 |
Sandy Bridge | D | Sandy Bridge | 2 | 201101 | 32nm | AVX | 2600K | 4C8T | 3.4 | 3.8 | 3.5 | DDR3 1333x2 |
Sandy Bridge | D | Sandy Bridge | 2 | 201110 | 32nm | AVX | 2700K | 4C8T | 3.5 | 3.9 | 3.6 | DDR3 1333x2 |
Sandy Bridge | H | Sandy Bridge-E | 2 | 201111 | 32nm | AVX | 3960X | 6C12T | 3.3 | 3.9 | 3.6 | DDR3 1600x4 |
Sandy Bridge | D | Ivy Bridge | 3 | 201204 | 22nm | AVX | 3770K | 4C8T | 3.5 | 3.9 | 3.7 | DDR3 1600x2 |
Sandy Bridge | H | Sandy Bridge-E | 2 | 201211 | 32nm | AVX | 3960X | 6C12T | 3.5 | 4.0 | 3.7 | DDR3 1600x4 |
Haswell | D | Haswell | 4 | 201306 | 22nm | AVX2 | 4770K | 4C8T | 3.5 | 3.9 | 3.7 | DDR3 1600x2 |
Sandy Bridge | H | IvyBridge-E | 4 | 201309 | 22nm | AVX | 4960X | 6C12T | 3.6 | 4.0 | 3.7 | DDR3 1866x4 |
Haswell | D | Haswell Refresh | 4 | 201406 | 22nm | AVX2 | 4790K | 4C8T | 3.0 | 4.4 | 4.2 | DDR3 1600x2 |
Haswell | H | Haswell-E | 5 | 201408 | 22nm | AVX2 | 5960X | 8C16T | 3.0 | 3.5 | 3.3 | DDR4 2133x4 |
Haswell | D | Broadwell-C,R | 5 | 201506 | 14nm | AVX2 | 5775C | 4C8T | 3.3 | 3.7 | 3.6 | DDR3 1600x2 |
Skylake | D/M | Skylake-S/H/U/Y | 6 | 201508 | 14nm | AVX2 | 6700K | 4C8T | 4.0 | 4.2 | 4.0 | DDR4 2133x4 |
Haswell | H | Broadwell-E | 6 | 201605 | 14nm | AVX2 | 6950X | 10C20T | 3.0 | 4.0 | 3.4/3.1 | DDR4 2400x4 |
Skylake | D/M | Kaby Lake,-S/H/U/Y | 7 | 201608 | 14nm+ | AVX2 | 7700K | 4C8T | 4.2 | 4.5 | 4.4 | DDR4 2400x2 |
Skylake | H | Kaby Lake-X | 7 | 201704 | 14nm+ | AVX2 | 7740X | 4C8T | 4.3 | 4.5 | 4.5 | DDR4 2666x2 |
Skylake | S | Skylake-SP | SP1 | 201707 | 14nm+ | AVX-512 | 8180 | 28C86T(8) | 2.5 | 3.8 | 3.2/2.8/2.3 | DDR4 2666x6 |
Skylake | H | Skylake-X | 7 | 201710 | 14nm+ | AVX-512 | 7980XE | 18C36T | 2.6 | 4.2-4.4 | 3.4 | DDR4 2666x4 |
Skylake | M | Kaby Lake Refresh-U | 8 | 201708 | 14nm+ | AVX2 | 8650U | 4C8T | 1.9 | 4.2 | DDR4 2400x2 | |
Skylake | D/M | Coffee Lake-S/U/B | 8 | 201711 | 14nm++ | AVX2 | 8700K | 6C8T | 3.7 | 4.7 | 4.3 | DDR4 2666x2 |
Skylake | M | Kaby Lake-G | 8 | 201801 | 14nm+ | AVX2 | 8809G | 4C8T | 3.1 | 4.2 | DDR4 2400x2 | |
Skylake | D/M | Coffee Lake-H | 8 | 201804 | 14nm++ | AVX2 | 8950HK | 6C8T | 2.9 | 4.8 | 4.3 | DDR4 2666x2 |
Plam Cove | M | Cannon Lake | 8 | 201805 | 10nm | AVX-512 | 8121U | 2C4T | 2.2 | 3.2 | DDR4 2400x2 | |
Skylake | M | Amber Lake-Y | 8 | 201808 | 14nm+ | AVX2 | 8500Y | 2C4T | 1.5 | 3.9 | LPDDR4 1866x2 | |
Skylake | M | Whiskey Lake-U | 8 | 201808 | 14nm++ | AVX2 | 8665U | 4C8T | 1.9 | 4.8 | DDR4 2400x2 | |
Skylake | D | Coffee Lake Refresh-S | 9 | 201810 | 14nm++ | AVX2 | 9900K | 8C16T | 3.6 | 5.0 | 4.7 | DDR4 2666x2 |
Skylake | H | Skylake-X Refresh | 9 | 201812 | 14nm++ | AVX-512 | 9980XE | 18C36T | 3.0 | 4.4-4.5 | 3.8/3.3/2.8 | DDR4 2666x4 |
Skylake | S | Cascade Lake-SP | SP2 | 201904 | 14nm++ | AVX-512 | 8280L | 28C85T(8) | 2.7 | 4.0 | 3.3/2.9/2.7 | DDR4 2933x6 |
Skylake | M | Coffee Lake Refresh-H | 9 | 2019xx | 14nm++ | AVX2 | 9980HK | 8C16T | 2.4 | 5.0 | 4.1 | DDR4 2666x2 |
Skylake | H | Cascade Lake-X | 10 | 201911 | 14nm++ | AVX-512 | 10980XE | 18C36T | 3.0 | 4.6-4.8 | 3.8/3.3/2.8 | DDR4 2933x4 |
Sunny Cove | M | Ice Lake-U/Y | 10 | 201905 | 10nm+ | AVX-512 | 1068NG7 | 4C8T | 2.3 | 4.1 | 3.6 | DDR4 3200x2 |
Skylake | D/M | Comet Lake-S/H/U | 10 | 202005 | 14nm++ | AVX2 | 10900K | 10C20T | 3.7 | 5.3 | 4.8 | DDR4 2933x2 |
Skylake | M | Comet Lake-H | 10 | 202005 | 14nm++ | AVX2 | 10980H | 8C16T | 2.4 | 5.1-5.3 | 4.4 | DDR4 2933x2 |
Skylake | S | Cooper Lake | SP3 | 202006 | 14nm++ | AVX-512 | 8380H/HL | 28C85T(8) | 2.9 | 4.3 | 3.8 | DDR4 3200x6 |
Willow Cove | M | Tiger Lake-H/G/B | 11 | 202010 | 10nm+ | AVX-512 | 11980H | 8C16T | 3.3 | 5.0 | 4.5/3.3? | DDR4 2933x2 |
Cypress Cove | D | Rocket Lake-S | 11 | 202103 | 14nm++ | AVX-512 | 11900K | 8C16T | 3.5 | 5.3 | 4.8 | DDR4 3200x2 |
Sunny Cove | S | Ice Lake-SP | SP3 | 202104 | 10nm+ | AVX-512 | 8380 | 40C80T(2) | 2.3 | 3.4 | 3.0 | DDR4 3200x8 |
Golden Cove/ Gracemont |
D | Alder Lake-S | 12 | 202111 | intel7 | AVX2/512 | 12900K | 8+8C/24T | 3.2(2.4) | 5.2(3.9) | 5.0(3.7) | DDR5 4800x2 |
Golden Cove | S | Sapphire Rapids | SP4 | 202299 | intel7 | AVX-512 | ? | ? | ? | ? | ? | ? |
Typeは,どの機種向けのCPUかを示しています.
- D: Desktop
- H: High-end desktop (HEDT)
- S: Server (SPシリーズ以外省略)
- M: Mobile
CPUのコードネームの末尾につくのは,S, B, K, H, U, Y, G で下記を表しています.
- S: デスクトップ(メインストリーム)のCPU
- B: モバイルCPUのデスクトップ向け(モバイルのアーキテクチャの中で最も性能が高い)
- K: 最上位を表す
- H: モバイルのハイパフォーマンス
- U: モバイル(低消費電力)
- Y: モバイル(超低消費電力)
- G: モバイル(AMDのGPUを搭載)
- Broadwellは,Kのデスクトップモデルは投入取りやめてC・Rを投入.Cがデスクトップ向けで,RがBGAでモバイル向け.
メインストリームCPUの型番の末尾につくのは,無印,XE, X, K, F, T で,詳細は下記です.
- X/XE: ワークステーションモデル
- K: メインストリーム最上位.オーバークロック可能
- F: GPU無し
- T: 低消費電力
コアの数値に括弧つきの場合(例えば,28C56T(8))は,サーバー向けCPUにおいて同時に取り付けられるソケット数を表しています.
また,CPUのクロック数は,BaseとBoost(最大)とAll(全コア利用)に分けて書いています.なお,全コアは,公式の資料からの抜粋ではなく,様々なところから集めた情報なため正確ではないかもしれません.
多コアCPUで複数クロック数が書かれているのは(例えば,3.8/3.3/2.8),スカラ計算,AVXを使う計算,AVX-512を使う計算で,クロック数が変わる時です.
AVX-512を使うと発熱するため,特に全コア使うとクロックを下げてCPUを動作させます.最近のCPUだとこの低下が抑えられていますが,SkylakeくらいのAVX-512が出てきたばかりのCPUだとクロック数は大幅に下がります.
全ての情報が書いてあるわけではないため,AVX-512を使用すると書いてある数字よりも下がる場合もあります.
10nm+は,正式には10nm SuperFinと呼ばれてますが,長いので前例に倣って記述しています.
Alderlakeからプロセスルールの呼び方の名前が変わっています.
AMD
会心の勢いを持つAMD CPUのZenシリーズ(2017~)からの年表は以下のようになります.ここでは,Zen以前の黒歴史は封印です.
気が向いた方は,埋めていただけると幸いです.
全てAVX2対応しており,また,全てAVX512 非対応です.Zen4からAVX-512に対応するかもとう噂もあります.
AVX2のパフォーマンスが上がったのはZen2からで,Zen,Zen+は128ビットレジスタを2回呼ぶ形なため,レイテンシはAVXを使えば改善するものの,最大スループットはSSEと変わりません.
なお,Intelと互換性のあるFMA命令が実装されたのはRyzen以降です.
Intelと書かれている欄は,その当時のIntelの対抗馬となるCPUです.
Zen2からメインストリームのCPUではAMDのほうがパフォーマンスが高いですが,Alder lakeによってまた情勢が変わってきました.
AMDのCPUは温度が許せばBoostクロックまで全コアブーストされるはずで,明示的なダウンクロックがないため全コアブーストしてAVX動作させるとIntel CPUよりも高い性能を出すことが多いです.
Arch. | Type | Code Name | Gen | Year | Process | SIMD | CPU | Intel | Socket | Core | Base | Boost | XFR |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Zen | D | Summit Ridge | 1 | 201703 | 14nm | AVX2 | 1800X | 7700K | AM4 | 8C16T | 3.6 | 4 | 4.1 |
Zen | S | Naples | 1 | 201706 | 14nm | AVX2 | 7601 | 8180M | SP3 | 32C64T(2) | 2.2 | 2.7 | 3.2 |
Zen | H | Whitehaven | 1 | 201708 | 14nm | AVX2 | 1950X | 7980XE | TR4 | 16C32T | 3.4 | 4 | 4.2 |
Zen | M | Raven Ridge | 1 | 201710 | 14nm | AVX2 | 2700U | - | - | 4C8T | 2.2 | 3.8 | - |
Zen+ | D | Pinnacle Ridge | 2 | 201804 | 12nm | AVX2 | 2700X | 8700K | AM4 | 8C16T | 3.7 | 4.3 | - |
Zen+ | H | Colfax | 2 | 201808 | 12nm | AVX2 | 2990WX | 9980XE | TR4 | 32C64T | 3 | 4.2 | - |
Zen+ | M | Picasso | 2 | 201901 | 12nm | AVX2 | 3700U | - | - | 4C8T | 2.3 | 4.0 | - |
Zen2 | D | Matisse | 3 | 201907 | 7nm | AVX2 | 3900X | 9900K | AM4 | 12C24T | 3.8 | 4.6 | - |
Zen2 | S | Rome | 3 | 201908 | 7nm | AVX2 | 7742 | 8280 | SP3 | 64C128T(2) | 2.25 | 3.4 | - |
Zen2 | D | Matisse | 3 | 201911 | 7nm | AVX2 | 3950X | 9900K | AM4 | 16C32T | 3.5 | 4.7 | - |
Zen2 | H | Castle Peak | 3 | 201911 | 7nm | AVX2 | 3970X | 10980XE? | sTRX4 | 32C64T | 3.7 | 4.5 | - |
Zen2 | M | Renoir | 3 | 202001 | 7nm | AVX2 | 4800H | - | - | 8C16T | 2.9 | 4.2 | - |
Zen2 | H | Castle Peak | 3 | 202002 | 7nm | AVX2 | 3990X | - | sTRX4 | 64C128T | 2.9 | 4.3 | - |
Zen3 | D | Vermeer | 4 | 202011 | 7nm+ | AVX2 | 5950X | 10900K | AM4 | 16C32T | 3.4 | 4.9 | - |
Zen2 | M | Lucienne | 3 | 202101 | 7nm | AVX2 | 5700U | - | - | 8C16T | 1.8 | 4.3 | - |
Zen3 | M | Cezanne | 4 | 202101 | 7nm+ | AVX2 | 5980HX | - | - | 8C16T | 3.3 | 4.8 | - |
Zen3 | S | Milan | 4 | 202103 | 7nm+ | AVX2 | 7763 | 8380 | SP3 | 64C128T(2) | 2.45 | 3.5 | - |
-
Desktop, Mobile: Ryzen, HEDT: Threadripper, Server: EPYC
-
Zen3のHEDTはまだ出ていません.
-
15hファミリと書かれていたら,Bulldozer, Piledriver, Steamroller, Excavatorのこと.
-
17hファミリと書かれていたらZen, Zen+, Zen2のこと.
-
19hファミリと書かれていたらZen3のこと.