X86
テンプレート:小文字 テンプレート:Infobox CPU architecture x86または80x86は、インテル8086、およびその後継(32ビットではIA-32、64ビットではx64)マイクロプロセッサの命令セットアーキテクチャである。転じて、インテル社自身の製品に加えAMDなどの互換プロセッサメーカーを含む各社の互換マイクロプロセッサや、それを利用した製品を指す総称としても使われる。
16ビットの8086で登場し、32ビット拡張の80386(後にIA-32と命名された)を経て、64ビット拡張であるx64のXeonやIntel Core i7などに至るが、基本的な命令セットは後方互換を保っている。名称がまぎらわしいがIA-64は全く異なる。
目次
名称
初期のプロセッサの型番が「8086」「80186」「80286」「80386」「80486」と続いたため、総称して「80x86」、更に短縮して「x86」(エックスはちろく、ペケはちろく)や「86系」などと呼ばれるようになった。これらは初期の8086から80286までの16ビットのプロセッサの俗称として始まって主にユーザーや互換チップメーカーによって使用され、80386以後の32ビットのアーキテクチャ拡張を経て、64ビットに拡張された「x64」まで、命令セットの上位互換性のあるアーキテクチャや製品のシリーズを広範に含んだ呼称として使用されている。またオリジナルのインテルの製品以外にも、AMDやVIAなどの互換プロセッサも含まれる。
パーソナルコンピュータ (PC) から、スーパーコンピュータ、サーバ、組み込みシステムまで広く使われていることから、従来「PCサーバ」や「IAサーバ」と呼んでいたカテゴリーを、「x86サーバ」「x86システム」と呼ぶベンダーが増えている。
32ビットプロセッサの範囲では、x86とIA-32はほぼ同義語だが、「IA-32」は独自の64ビットアーキテクチャであるIA-64との対比でインテルが使用した語のため、インテル社製の32ビットプロセッサのみを指す場合が多い。
歴史
x86の歴史は、世界最初のマイクロプロセッサ4004から、8ビットの8080を経て、1978年に発売された16ビットマイクロプロセッサ8086から始まる。8086は、8080とのバイナリ互換は無く、大幅に拡張されたものの、アセンブリ言語によるソースコードは大幅な書き換えなしで移植できるよう配慮されていた(そのためx86には、さらに過去からの影響が残った)。「セグメント」と称された(本物のセグメント方式とは異なる。セグメント方式#x86を参照)変則的なアドレッシングによってプログラミング上は不便ではあるものの、1MiBと当時としては広大なメインメモリ空間をサポートし、それとは別にI/O空間も設けられた。1979年には、外部データバスを8ビットとし、当時普及していた8ビット用の周辺ICを使いやすくした8088を発表した。
1982年、IBMからIBM PCが発売されたが、これに8088が採用されたことが、以後のx86の運命を決定した。IBM PCの後継となったIBM PC/ATの互換機(PC/AT互換機)は後年には単にPCと呼ばれるようになり、x86はPCの為のプロセッサと認知されているが、IBM PCの設計の時点では、1年間で開発を完了するために、安定して入手可能で周辺回路も既存品の使用が可能であること、などから選定されたに過ぎない。
80186と80286が1982年に発表された。80286は1984年から出荷され、プロテクトモードや24ビット(16MiB)のアドレス空間を持つなどしていたが、パーソナルコンピュータでは専らリアルモードで、ほとんど「単に高速な8086」としてしか活用されなかった。
1985年には32ビットに拡張された80386が発表された。後にIA-32と呼ばれることになるアーキテクチャの誕生である。
32ビット化にあたって、16ビット時代のマイクロコントローラ的な部分(特にその傾向が強かったのは80186)を見直し、メインフレームと渡り合えるような、という意味でコンピュータとして再設計された。
80386は、8086ほぼそのままのリアルモードと、32ビットのプロテクトモードを持つ。さらにプロテクトモード中の仮想86モードにより、従来の8086のプログラムを仮想化して実行できる。階層化された特権レベル(特権リング、4つの階層で構成される)は80286ではスケールダウンしたエミュレーターには使えたが、80386ではこれに加えて割り込みサポートを強化した結果、従来メインフレームクラスのコンピュータでしか利用できなかった仮想マシンモニタの実装を可能とし、後年になってVMwareを筆頭に仮想マシン環境をパソコンレベルで実現に至らしめた。
後にIA-64の誕生に際し、32ビットx86アーキテクチャにはIA-32の名称が与えられた。なお、16ビットアーキテクチャに対しては現在でも公式の名称は与えられていない。
80386を搭載したPCを最初にリリースしたのは、本家IBMではなく、互換機メーカーのコンパックであった。
その後、486、Pentiumと続き、64ビット化では最終的にx64アーキテクチャを採用し今日に至る。
インテル自身は、80386より古くから計画された「マイクロメインフレーム」iAPX 432、90年代にはRISCのi860とi960、2000年代にはVLIW(を改良したEPICと称された)のIA-64といった、革新的アーキテクチャによりx86を置き換えようとしたが、ことごとく不成功に終わっている。結果としてx86は後付けの拡張を続け、64ビット化では互換CPUメーカーのAMDが定義した拡張を逆輸入までして、今日までインテルの主力アーキテクチャとして延命している。
製品群と世代
x86が採用されたマイクロプロセッサは多岐にわたり、世代も多く存在している。インテル自体の製造が需要に応え切れない可能性から、インテルは普及を目的にセカンドソースを推奨していたため、各社よりクローン製品が発売された。
一方で独自に互換機能を実装したNEC V30などの製品に対し、著作権を侵害しているとして訴訟を起こしたこともあったが、デッドコピーではないことから、著作権を盾にV30を阻止することは不可能であった。
- 第一世代 - 8086およびその派生。後に複数の互換製品が登場した。
- 改訂第一世代 - 80186およびその派生。後に複数の互換製品が登場した。
- 第二世代 - 80286。 後に複数の互換製品が登場した。この頃より、製造を拡充したインテルは、セカンドソースも認めない方針に転換した。しかし既得権として各社は引き続き製造を続行し、それに留まらず独自改良を行うメーカーも現われた。
- 第三世代 - 80386およびその派生。後に複数の互換製品が登場した。
- 第四世代 - 486およびその派生。後に複数の互換製品が登場した。
- 第五世代 ("P5") - PentiumおよびMMX Pentium。後に複数の互換製品が登場した。互換製品メーカーに対してインテルが訴訟を起こしており、以後、各社はそれ以前のインテル製品に改良を行った製品か、逆に独自に開発を行うようになった。インテルとのクロスライセンスを利用して合法的に互換のある製品も存在する。AMDは訴訟の和解条件として、独自なものを開発するようになった。
- インテル
- 第六世代 ("P6") - P6マイクロアーキテクチャ系。80x86固有の命令をRISC風命令 (μOPS) に分解して実行する。Pentium Proおよびその派生であるPentium II、Pentium IIIと、それらをベースとしたCeleronやXeon。Pentium MおよびIntel CoreもP6に含まれると主張する人もいる。
- 第六世代のP6マイクロアーキテクチャを拡張した、Coreマイクロアーキテクチャ。
- Nehalemを再設計した新マイクロアーキテクチャ。Intel Core i7シリーズなど。
- Nehalemの後継であるSandy Bridgeマイクロアーキテクチャ。Advanced Vector Extensions (AVX) という新しいSIMD命令フォーマットが導入され、今後はこの命令フォーマットによりx86命令セットを置き換えていく予定。
- 第七世代 ("P7") - Itanium開発のため、P7マイクロアーキテクチャ開発はキャンセルされた。
- 第八世代 Pentium 4などのNetBurstマイクロアーキテクチャ系。
- 第九世代 Nehalemと仮称されている製品が予定されていたが、マイクロアーキテクチャの方向性が変わったため中止。
- 上述の「世代」に属さない製品
- Intel Atom - LPIA専用設計の最初のマイクロアーキテクチャ、インオーダ実行、同時マルチスレッディング実装。2008年発表。
- Larrabee - x86から派生した命令セットをシェーダーコアに採用したGPU、インオーダー実行。[1]
- AMD
- NexGen
- Rise Technology
- サイリックス
- Integrated Device Technology (IDT)
- 第六世代 - IDT-C6を開発。商品名はWinChip。技術的にはIntelのP5の世代。
- VIA
- 第六世代 - 買収したCentaur TechnologyのWinChip4をCyrix IIIと改称・設計変更して商品化。その後、VIA C3に名称変更。その後、インテルとのライセンス切れによりC3を置き換えるC7を発売。
- 第七世代 - インテルとのライセンス切れにより、そのライセンスに拠らないV4バスを採用したC7を発売。基本的にはC3と特段の違いはない。
- 第八世代 - VIA製CPUとして初めてアウト・オブ・オーダー実行およびスーパースケーラ命令パイプラインを搭載したVIA Nanoを発売。
- トランスメタ
主な拡張
ソフトウェア的な環境は、80386から下位互換性を保ちながら拡張されて来た。これらはユーザが使用可能な拡張については486以降のCPUではCPUID命令を発行することにより、どの拡張が有効であるかを知ることが出来る。
プロセッサ全体
- システムマネジメントモード 386SL以降
- プロセッサ内APIC Pentium以降
- メモリタイプ範囲レジスタ (MTRR) Pentium Pro以降
- ハイパースレッディング・テクノロジー Pentium 4の一部と、Nahalemの一部
- 高速システムコール命令
- CMOV命令 Pentium Pro以降
- デバッグレジスタ
- 64ビット拡張 Pentium4 PrescottコアE0バージョン以降
- マルチダイ・マルチコア Pentium D
- シングルダイ・マルチコア Intel Core・Intel Core 2
- プロセッサ内キャッシュメモリ i486以降
- スーパースケーラ Pentium以降
- 対称型マルチプロセッシング Pentium以降
- ライタブルコントロールストア Pentium Pro以降
- デュアルインディペンデントバス Pentium Pro以降
プロテクトモードに関する拡張
- 物理アドレス拡張 (PAE) Pentium Pro以降
- ページサイズ拡張 (PSE) Pentium以降
- 36ビットPSE (PSE36) DeschutesコアのPentium II/Pentium II Xeon以降
- 40ビット物理アドレス拡張 XeonMP
仮想86モードに関する拡張
- 仮想モード拡張 (VME) Pentium以降
仮想マシンに関する拡張
数値演算に関する拡張
- 浮動小数点演算機能の統合:486以降
- 高速な浮動小数点演算コンテクストのセーブ
- MMX:MMXペンティアム以降
- SSE:Pentium III以降
- 3DNow!:AMD独自のSIMD拡張命令
- SSE2:Pentium 4以降
- SSE3:Pentium 4、Prescottコア以降
- SSSE3:Xeon 5100, Core 2 以降
- SSE4.1:Xeon 5400, Core 2 Penrynコア 以降
- SSE4.2:Core i7 以降
- SSE5:AMD Bulldozerコア 以降。SSEで初のAMD独自命令。
省電力に関する拡張
- Intel SpeedStep テクノロジ:Pentium IIIから搭載
- Cool'n'Quiet:AMDによる省電力機能実装
- PowerNow!:AMDによるモバイル向け省電力機能実装
その他
- インテル ターボ・ブースト・テクノロジー:Core i5、Core i7の一部。熱容量、電力容量の許容範囲内で、CPUクロックを規定より上げる。
- AES-NI (AES instruction set):AESの高速化。Nahalemの一部以降で対応
- Trusted Execution Technology:Trusted Platform Module対応
- Pentium FDIV バグ