X86
名称
初期のプロセッサの型番が「8086」「80186」「80286」「80386」「80486」と続いたため、総称して「80x86」、更に型番の下2桁が共通するところから「x86」（エックスはちろく、ペケはちろく）や「86系」などと呼ばれるようになった。これらは初期の8086から80286までの16ビットのプロセッサの俗称として始まって主にユーザーや互換チップメーカーによって使用された。同時期に競合した「MC68000」や、その後継品種がやはり型番から「68系」と俗称されたものの対照としても使われた。
x86は、80386以後の32ビットのアーキテクチャ拡張を経て、64ビットに拡張された「x64」まで、命令セットの上位互換性のあるアーキテクチャや製品のシリーズを広範に含んだ呼称として使用されている。またオリジナルのインテルの製品以外にも、AMDやVIAなどの互換プロセッサも含まれる。
パーソナルコンピュータ (PC) から、スーパーコンピュータ、サーバ、組み込みシステムまで広く使われていることから、従来「PCサーバ」や「IAサーバ」と呼んでいたカテゴリーを、「x86サーバ」「x86システム」と呼ぶベンダーが増えている。
32ビットアーキテクチャに範囲を限れば、「x86」と「IA-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のプログラムを仮想化して実行できる。
後に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が定義した拡張を逆輸入までして、今日までインテルの主力アーキテクチャとして延命している。
主な拡張
ソフトウェア的な環境は、80386から下位互換性を保ちながら拡張されて来た。これらはユーザが使用可能な拡張については486以降のCPUではCPUID命令を発行することにより、どの拡張が有効であるかを知ることが出来る。