Intel x86プロセッサについて

x86(プロセッサまたはプロセッサアーキテクチャ)は非常に複雑であり、世の中の英知とカオスを凝縮している。いままでどのような機能が追加されてきたのか、主にデスクトップ向けプロセッサについて簡単にまとめてみた。GitHub上に[表も用意してみた(随時更新)](https://github.com/firewood/cpu/wiki/Intel-x86-CPU)
以下の記事とWikipedia(英語・日本語)をもとにしている。
日付については発表日を表記しているが、一部発売日が混じっているかも。最小線幅は初期ロットのもの。

- [ASCII.jp : ロードマップでわかる！当世プロセッサー事情 - 大原雄介](https://ascii.jp/serialarticles/420986/)
  - [i4004から486世代まで インテルCPUを一気に振り返る](https://ascii.jp/elem/000/000/536/536012/2/)
- [頭脳放談 @IT - Massa POP Izumida](https://www.atmarkit.co.jp/ait/series/685/)
  - [第217回 8086誕生から40年、その歴史を振り返る](https://www.atmarkit.co.jp/ait/articles/1806/28/news035.html)
- [マイクロプロセッサーおよびパーソナルコンピュータの歴史的発達過程と技術戦略 - 佐野正博(明治大学経営学部）](https://www.sanosemi.com/index-history-of-PC.htm)
  - [Intel社が開発したマイクロプロセッサーの技術的スペックの歴史的変遷(簡略版）](https://www.sanosemi.com/history_of_Intel_CPU_techspecs-mini.htm)
- [マイクロプロセッサの２５年 - 嶋 正利](https://www.journal.ieice.org/conts/kaishi_wadainokiji/199910/19991001.html)

### 1978/7 - [Intel 8086](https://en.wikipedia.org/wiki/Intel_8086)

8080を16bitに拡張。8080とはバイナリ互換性は全くないが、アセンブリソースコードレベルでは比較的容易に移行できるようにニーモニックが選ばれた。
アドレスバスは20bitで1MBの物理メモリに対応。上位の16bitをセグメントレジスタで選ぶ。
最初の製品は5MHz。外部データバスを8bitにした8088も発売された。
3µmプロセス。

### 1982/6 - [Intel 80186](https://en.wikipedia.org/wiki/Intel_80186)

発表自体は80286の方が先。
組み込み用途にいくつかの周辺ICをまとめた8086。ENTERやPUSHA命令などが追加された。
変更が地味なので、8086 -> 80286 -> 80386 -> 80486のように、プロセッサの世代表に載らないことがある。外部データバスを8bitにした80188も発売された。
3µmプロセス。

### 1982/2 - [Intel 80286](https://en.wikipedia.org/wiki/Intel_80286)

汎用レジスタは16bitのまま、プロテクトモードが追加され、仮想メモリ空間が1GBに拡張された。物理メモリは最大16MB。ring 0から3までの特権レベルができた。
80186の命令に加えて、プロテクトモードを操作するたくさんの命令や機構が追加された。8086に互換性のある動作状態をリアルモードとした。意図しない仕様により、リアルモードであっても、1MB+64KBのメモリが使用可能になった(HMA)。
命令を4段パイプラインで処理するようになり、命令のプリフェッチキューも追加された。同クロックの8086より2倍以上高速になった。実際に出荷されたのは1984年になってから。
1.5µmプロセス。

### 1985/10 - [Intel 80386](https://en.wikipedia.org/wiki/Intel_80386)

80286を32bitに拡張。CPUモードに16bitモードと32bitモードが存在するようになった。仮想86モードが追加され、複数の独立した仮想16bit環境を持つことができるようになった。32bitモードでは汎用レジスタが全て32bitになり、メモリ空間が4GBに。セグメントレジスタのFSとGSが追加。32bitモードでもプリフィックスをつけてレジスタの下位部分だけを操作することもできる。
どうやら4段パイプラインらしい。(https://kei-sakaki.jp/2013/09/19/oohara-386-pipeline-in-nikkei-winpc-2013-october/)
同クロックの80286とほぼ同じ速度で動作する。
1.5µmプロセス。

### 1989/4 - [Intel 80486](https://en.wikipedia.org/wiki/Intel_80486)

CPUIDやBSWAP命令が追加された。80486DXでは浮動小数点プロセッサが内蔵されるようになった。
基本的な命令を1クロックで実行できるようになった。5段パイプライン。ライトスルーの1次キャッシュメモリを搭載。
同クロックの80386のほぼ倍速になった。内部クロックを2〜3倍で動作させる派生品も発売。途中からi486にリブランドされた。
1µmプロセス。PC互換機がノースブリッジとサウスブリッジという構成で設計されるようになった。

### 1993/3 - [Intel Pentium](https://en.wikipedia.org/wiki/P5_(microarchitecture))

スーパースカラ(複数命令同時実行機構)が搭載され、素朴な命令なら1クロックで2個同時に実行できるようになった。2命令同時デコード、5段パイプライン。通称P5アーキテクチャ。
命令とデータそれぞれの1次キャッシュが用意され、ライトバックキャッシュになった。
最初の世代は除算命令(FDIV)のバグで全数リコールになった。
0.8μmプロセス。チップセットがPCIバスに対応するようになった。

### 1995/11 - [Intel Pentium Pro](https://en.wikipedia.org/wiki/P6_(microarchitecture))

SMPに対応。同一パッケージ内に2次キャッシュのチップが追加された。PAEにより物理メモリ64GBまで対応。
2命令同時デコード、3つの実行ユニット、6段パイプライン。命令を複数の単純なマイクロコード(μOPs)に分割して実行する。レジスタリネーミングや投機的実行、分岐予測機構が追加され、アウトオブオーダー実行(依存関係のない命令の実行順序の入れ替え)も可能になった。通称P6アーキテクチャ。
リコール対策として、出荷後にもマイクロコードの挙動を変更できる仕組みが導入された。
0.5μmプロセス。

### 1996/10 - [MMX Pentium](https://en.wikipedia.org/wiki/P5_(microarchitecture)#P55C)

P5アーキテクチャ。SIMD拡張命令(MMX)が追加された。6段パイプライン。1次キャッシュが倍増した。
0.35μmプロセス。

### 1997/2 - [Pentium II](https://en.wikipedia.org/wiki/Pentium_II)

P6アーキテクチャ。Pentium Proをベースに、MMXを追加し、16bitコードの実行が高速化された。
2次キャッシュを載せた基板とともに、ファミコンのカセットのようなパッケージで提供された。0.35μmプロセス。

### 1999/2 - [Pentium III](https://en.wikipedia.org/wiki/Pentium_III)

P6アーキテクチャ。ストリーミングSIMD拡張命令(SSE)が追加された。プロセッサ・シリアル・ナンバ(PSN)が付与されるようになった。
0.25μmプロセス。

### 2000/11 - [Pentium 4](https://en.wikipedia.org/wiki/Pentium_4)

NetBurstアーキテクチャ。
[ALUのみ2倍のクロックで動作している](https://ascii.jp/elem/000/000/730/730973/4/)。20段パイプライン。
2次キャッシュも同じダイに載るようになった。0.18μmプロセス。

### 2001/7 - [Pentium III-M](https://en.wikipedia.org/wiki/Pentium_III#Tualatin)

P6アーキテクチャ。Pentium IIIをベースとし、モバイル向けに、動作クロックと電圧を低下させることができるSpeedStepが追加された。
0.13μmプロセス。

### 2002/1 - [Pentium 4 (Northwood)](https://en.wikipedia.org/wiki/Pentium_4#Northwood)

NetBurstアーキテクチャ。空いている実行ユニットを別のスレッドとして実行できるHyper-Threading(HT)が追加された。
0.13μmプロセス。

### 2002/3 - [Pentium 4-M](https://en.wikipedia.org/wiki/Pentium_4#Pentium_4-M)

NetBurstアーキテクチャ。Pentium 4に複数段階に動作クロックを下げられる拡張版SpeedStepを搭載。
0.13μmプロセス。

### 2003/3 - [Pentium M](https://en.wikipedia.org/wiki/Pentium_M)

P6アーキテクチャをもとに、モバイル向けに再設計。SSE2と拡張版SpeedStepに対応。HT未対応。
0.13μmプロセス。

### 2004/1 - [Pentium 4 (Prescott)](https://en.wikipedia.org/wiki/Pentium_4#Prescott)

NetBurstアーキテクチャ。AMD64を取り込み、64bitモードに対応した。汎用レジスタが16個に増え、SSE3も追加された。HTにも対応。仮想化支援機構のIntel VTが追加された。(ストール対策のため?)64bitレジスタに32bitレジスタを代入すると上位がクリアされるようになった。
31段パイプライン。デコードもマイクロコードで行う。
2次キャッシュが1MBになった。
90nmプロセス。リーク電流が多いことが問題になった。

### 2006/1- [Intel Core (Yonah), tick](https://en.wikipedia.org/wiki/Yonah_(microprocessor))

Pentium Mアーキテクチャ。モバイル向け。64bitもサポート。HT未対応。シングルコアのSoloとマルチコアのDuoがある。
Digital Thermal Sensor (DTS)が追加され、温度が取得できるようになった。
新しい製造プロセスの導入(tick)とアーキテクチャの刷新(tock)を交互に行うことを[tick-tockサイクル](https://en.wikipedia.org/wiki/Tick%E2%80%93tock_model)と呼ぶようになる。
65nmプロセス。

### 2006/7 - [Intel Core 2 (Conroe), tock](https://en.wikipedia.org/wiki/Conroe_(microprocessor))

Coreアーキテクチャのデスクトップ向け第一世代。SSE4やTrusted Execution Technology (TXT)に対応。HT未対応。廉価版以外はマルチコアになる。
この頃、一部のハイエンドのチップセットにIntel Management Engine (Intel ME)が導入され、CPUを外部から制御できるようになった。俗にring -1などとも呼ばれているようだ。(参考: [インテルx86マシンの奥深くでは人知れず「MINIX 3」が動作しており、脆弱性を作り出している。Googleらはそれを排除しようとしている](https://www.publickey1.jp/blog/17/cpuminix_3google.html))
65nmプロセス。

### 2008 - [Intel Core 2 (Wolfdale), tick](https://en.wikipedia.org/wiki/Wolfdale_(microprocessor))

SSE4.1に対応。
2次キャッシュが6MBに増えた。
45nmプロセス。

### 2008/11 - [Intel Core i7/i5/i3 (Nehalem), tock](https://en.wikipedia.org/wiki/Nehalem_(microarchitecture))

SSE4.2に対応。
Intel MEがPlatform Controller Hub (PCH)に移動し、全てのIntelチップセットに組み込まれるようになった。
再びHyper-Threadingに対応するようになった。
45nmプロセス。

### 2010/1 [Intel Core i7/i5/i3 (Westmere), tick](https://en.wikipedia.org/wiki/Westmere_(microarchitecture))

AES-NI命令を追加。仮想化機能にVMX Unrestrictedモードが追加。ハイエンドモデルのページサイズが最大1GBになった(Huge Pages, PDPE1GB)。
10コアのモデルを投入。
32nmプロセス。

### 2011/1 - [Intel 第2世代 Core (Sandy Bridge), tock](https://en.wikipedia.org/wiki/Sandy_Bridge)

AVX命令が追加。
レジスタリネーミングの処理方法を変更。レジスタのコピーなどはZeroing Idioms機構により、実行ユニットに頼らずに処理できる。(参考: [詳細解説　これがSandy Bridgeのアーキテクチャーだ](https://ascii.jp/elem/000/000/579/579517/2/))
32nmプロセス。

### 2012/4 - [Intel 第3世代 Core (Ivy Bridge), tick](https://en.wikipedia.org/wiki/Ivy_Bridge_(microarchitecture))

16bit浮動小数点演算の強化(F16C)、RDRAND命令を追加。
22nmプロセス。

### 2013/6 - [Intel 第4世代 Core (Haswell), tock](https://en.wikipedia.org/wiki/Haswell_(microarchitecture))

AVX2命令が追加。PREFETCHW命令はNOPとして動作する模様。
22nmプロセス。

### 2014/10 - [Intel 第5世代 Core (Broadwell), tick](https://en.wikipedia.org/wiki/Broadwell_(microarchitecture))

Haswellマイクロアーキテクチャ。Multi-Precision Add-Carry Instruction Extensions (ADX)に対応。RDSEEDやPREFETCHW命令が正式に追加された。
14nmプロセス。

### 2015/8 - [Intel 第6世代 Core (Skylake), tock](https://en.wikipedia.org/wiki/Skylake_(microarchitecture))

Memory Protection Extensions (MPX)、Software Guard Extensions (SGX)、Speed Shift Technologyに対応。一部のハイエンドモデルはAVX-512に対応。
14nmプロセス。

### 2016/8 - [Intel 第7世代 Core (Kaby Lake)](https://en.wikipedia.org/wiki/Kaby_Lake)

Skylakeマイクロアーキテクチャ。PTWRITE命令が追加。
14nm+プロセスで製造。10nmプロセスが延期となりtick-tockモデルが終了した。

### 2017/10 - [Intel 第8世代 Core (Coffee Lake)](https://en.wikipedia.org/wiki/Coffee_Lake)

Skylakeマイクロアーキテクチャ。
14nm++プロセス。

### 2018/5 - [Intel 第8世代 Core (Cannon Lake)](https://en.wikipedia.org/wiki/Cannon_Lake_(microarchitecture))

Skylakeマイクロアーキテクチャ。
10nmプロセスで製造。10nmプロセスの歩留まりが悪くモバイル向けの1CPUしか出荷されなかった。

### 2018/10 - [Intel 第9世代 Core (Coffee Lake Refresh)](https://en.wikipedia.org/wiki/Coffee_Lake#List_of_9th_generation_Coffee_Lake_processors_(Coffee_Lake_Refresh))

Skylakeマイクロアーキテクチャ。SpectreやMeltdownなどのサイドチャネル攻撃に対する対策が追加された。
14nm++プロセスで製造。

### 2019/5 - [Intel 第10世代 Core (Ice Lake)](https://en.wikipedia.org/wiki/Ice_Lake_(microprocessor))

Skylakeマイクロアーキテクチャ。AVX-512に対応。さらにVPOPCNTDQなど6命令が追加。
10nm+プロセス。

### 2019/8 - [Intel 第10世代 Core (Comet Lake)](https://en.wikipedia.org/wiki/Comet_Lake_(microprocessor))

Skylakeマイクロアーキテクチャ。
14nm++プロセス。

### 2020/8 [Intel 第11世代 Core (Tiger Lake)](https://en.wikipedia.org/wiki/Tiger_Lake_(microprocessor))

Willow Coveマイクロアーキテクチャ。VP2INTERSECT命令に対応。
10nmプロセス?

### 2021 - Sapphire Rapids

Advanced Matrix Extensions (AMX)に対応。
10nmプロセス?