x86

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。弥羅 (会話 | 投稿記録) による 2022年5月6日 (金) 09:06個人設定で未設定ならUTC)時点の版 (→‎歴史: 表現整理・修正)であり、現在の版とは大きく異なる場合があります。

x86 (80x86)
開発者 インテル
AMD
ビット数 16ビット, 32ビット, 64ビット
発表 1978年
デザイン CISC
タイプ Register-Memory
エンコード Variable (1 to 15 bytes)
ブランチ Condition code
エンディアン Little
ページサイズ 386:4KB
Pentium:4MB
x64:1GB
拡張 x87, IA-32, MMX, SSE, SSE2, x64, SSE3, SSSE3, SSE4, AVX, AES, VT-x, VT-d, SVM
オープン 非公開
レジスタ
汎用 16 bit: 6 semi-dedicated registers + bp and sp;
32 bit: 6 GPRs + bp and sp;
64 bit: 14 GPRs + bp and sp.

x86(エックスはちろく[1])は、Intel 8086、およびその後方互換性を持つマイクロプロセッサ命令セットアーキテクチャの総称。16ビット8086で登場し、32ビット拡張の80386(後にIA-32と命名)、64ビット拡張のx64、広義には更にAMDなどの互換プロセッサを含む。

なおインテルItaniumプロセッサで使われているIA-64は、x86とは互換性のない新規設計の64ビットアーキテクチャである。Itaniumプロセッサはx86エミュレーションモードを備えてはいるがx64によるLongモード(互換モード)でのネイティブ実行と比較すると低速である[2]

名称

初期のプロセッサの型番が「8086」「80186」「80286」「80386」「80486」と続いたため、総称して「80x86」、更に型番の下2桁が共通するところから「x86」(エックスはちろく、ペケはちろく)や「86系」などと呼ばれるようになった。これらは初期の8086から80286までの16ビットのプロセッサの俗称として始まって主にユーザーや互換チップメーカーによって使用された。同時期に競合した「MC68000」や、その後継品種がやはり型番から「68系」と俗称されたものの対照としても使われた。

x86は、80386以後の32ビットのアーキテクチャ拡張を経て、64ビットに拡張された「x64」まで、命令セット上位互換性のあるアーキテクチャや製品のシリーズを広範に含んだ呼称として使用されている。またオリジナルのインテルの製品以外にも、AMDVIAなどの互換プロセッサも含まれる。

パーソナルコンピュータ (PC) から、スーパーコンピュータサーバ組み込みシステムまで広く使われていることから、従来「PCサーバ」や「IAサーバ」と呼んでいたカテゴリーを、「x86サーバ」「x86システム」と呼ぶベンダーが増えている。

32ビットアーキテクチャに範囲を限れば、「x86」と「IA-32」はほぼ同義である。

歴史

Intel 8086

x86の歴史は、世界最初のマイクロプロセッサ4004から、8ビット8080を経て、1978年に発売された16ビットマイクロプロセッサ8086から始まる。8086は、8080とのバイナリ互換は無く、大幅に拡張されたものの、アセンブリ言語によるソースコードは大幅な書き換えなしで移植できるよう配慮されていた。同時に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年間で開発を完了するために、安定して入手可能で周辺回路も既存品を使用できること、OSを含むソフトウェアが調達可能であること、などから選定されたに過ぎない。

8018680286が1982年に発表された。80286は1984年から出荷され、プロテクトモードや24ビット (16MiB) のアドレス空間を持つなどしていたが、パーソナルコンピュータではリアルモードで稼動するi8086向けのPC-DOS(MS-DOS)とそのアプリケーションを搭載し、「単に高速な8086」としての用法が主だった。

1985年には32ビットに拡張された80386が発表された。後にIA-32と呼ばれることになるアーキテクチャの誕生である。

32ビット化にあたって、16ビット時代のマイクロコントローラ的な部分(特にその傾向が強かったのは80186)を見直し、メインフレームと渡り合えるような、という意味でコンピュータとして再設計された。

80386は、8086ほぼそのままのリアルモードと、32ビットのプロテクトモードを持つ。さらにプロテクトモード中の仮想86モードにより、従来の8086のプログラムを仮想化して実行できる。

後にIA-64の登場に際し、32ビットx86アーキテクチャにはIA-32の名称が与えられた。なお、16ビットアーキテクチャに対しては公式の名称は付与されていない。

80386を搭載したPCを最初にリリースしたのは、本家IBMではなく、互換機メーカーのコンパックであった。

その後、486Pentiumと続き、64ビット化では紆余曲折を経て最終的に他社の制定したx64アーキテクチャを採用し今日に至る。

インテル自身は、80386より古くから計画された「マイクロメインフレーム」iAPX 432、90年代にはRISCのi860i960、2000年代にはVLIWを改良したEPICアーキテクチャと称するIA-64といった、革新的アーキテクチャによりx86を置き換えようとしたが、ことごとく不成功に終わっている。結果としてx86は後付けの拡張を続け、64ビット化では互換CPUメーカーのAMDが定義した拡張を逆輸入までして、今日までインテルの主力アーキテクチャとして延命している。

製品群と世代

x86が採用されたマイクロプロセッサは多岐にわたり、世代も多く存在している。インテルは普及を目的とし、自社のみで需要をまかないきれないリスク、IBM-PCにi8088を採用するにあたりIBMが他社とセカンドソース契約を結ぶよう要求したなどの事情から、セカンドソースを推奨していたため、各社より互換製品やクローン製品が発売された。

一方で独自に互換機能を実装したNEC V30などの製品に対し、著作権を侵害しているとして訴訟を起こしたこともあった。

  • 第1世代 - 8086およびその派生。後に複数の互換製品が登場した。
  • 改訂第1世代 - 80186およびその派生。後に複数の互換製品が登場した。
  • 第2世代 - 80286。 後に複数の互換製品が登場した。この頃より、製造を拡充したインテルは、セカンドソースも認めない方針に転換した。しかし既得権として各社は引き続き製造を続行し、それに留まらず独自改良を行うメーカーも現われた。
  • 第3世代 - 80386およびその派生。後に複数の互換製品が登場した。
  • 第4世代 - 486およびその派生。後に複数の互換製品が登場した。
  • 第5世代 ("P5") - PentiumおよびMMX Pentium。後に複数の互換製品が登場した。互換製品メーカーに対してインテルが訴訟を起こしており、以後、各社はそれ以前のインテル製品に改良を行った製品か、逆に独自に開発を行うようになった。インテルとのクロスライセンスを利用して合法的に互換のある製品も存在する。AMDは訴訟の和解条件として、命令互換性を維持しつつ独自に製品を設計する様になった。
  • インテル
  • AMD
    • 第4世代 - Am4x86の他にAm5x86が発売された。
    • 第5世代 ("K5") - AMD K5
    • 第6世代 ("K6") - AMD K6AMD K6-2AMD K6-III
    • 第7世代 ("K7") - AthlonDuron
    • 第8世代 ("K8") - OpteronおよびAthlon 64系。
    • 第9世代 ("K9") - 犬 (canine)と同じ発音である事から、Houndと呼ばれていた系統だと推定される。インテルと同様に方向性の失敗によりキャンセル。
    • 第10世代 ("K10") - PhenomAthlon II、K10に基づくOpteronSempronなど。
    • 第11世代 ("K11") - FXシリーズ、またBulldozerに基づくFusionAPUなど。
  • NexGen
    • 第5世代 - Nx586。バスやチップセットなどインテルと互換性がなく普及しなかった。
    • 第6世代 - Nx686。開発途中でAMDに買収される。AMDは開発中のK6を中止し、Nx686を改良した製品をK6として発売した。
  • Rise Technology
    • 第5世代 - mP6。インテルの第五世代のマザーボードが使用できる。数字が6なのは、インテルなど他社が第六世代に突入していたためと思われる。
    • 第6世代 - RiSE Tiger370。mP6に競争力が無く、今世代は製品化されていない。SiSにライセンス供与してRiSEは撤退した。
  • サイリックス
    • 第4世代 - Cx486SLCCx486DLC。386用のI/Oバスを持った第四世代のCPU。
    • 第5世代 - M1およびそれの派生コア、M2コアを採用した5x866x86、6x86MX、MII。
  • Integrated Device Technology (IDT)
    • 第6世代 - IDT-C6を開発。商品名はWinChip。技術的にはIntelのP5の世代。
  • VIA
    • 第6世代 - 買収したCentaur TechnologyのWinChip4をCyrix IIIと改称・設計変更して商品化。その後、VIA C3に名称変更。その後、インテルとのライセンス切れによりC3を置き換えるC7を発売。
    • 第7世代 - インテルとのライセンス切れにより、そのライセンスに拠らないV4バスを採用したC7を発売。基本的にはC3と特段の違いはない。
    • 第8世代 - VIA製CPUとして初めてアウト・オブ・オーダー実行およびスーパースケーラ命令パイプラインを搭載したVIA Nanoを発売。
  • トランスメタ
    • 第6世代 - 命令セットのみx86を採用したVLIW型CPUを開発。世代は全く関係なくここでの表記上の便宜的なもの。最初の製品としてCrusoeを発売。低消費電力の先鞭を付けた。
    • 第7世代 - 後継のEfficeonを発売。しかし財務的に思わしくなく、チップ開発販売ではなくライセンス販売に転じた。

主な拡張

ソフトウェア的な環境は、80386から下位互換性を保ちながら拡張されてきた。これらはユーザが使用可能な拡張については486以降のCPUではCPUID命令を発行することにより、どの拡張が有効であるかを知ることができる。

プロセッサ全体

プロテクトモードに関する拡張

  • 物理アドレス拡張(PAE):Pentium Pro以降
  • ページサイズ拡張(PSE):Pentium以降
  • 36ビットPSE(PSE36):DeschutesコアのPentium II/Pentium II Xeon以降
  • 40ビット物理アドレス拡張:Xeon MP

仮想86モードに関する拡張

  • 仮想モード拡張(VME):Pentium以降

仮想マシンに関する拡張

数値演算に関する拡張

  • 浮動小数点演算機能 (x87 FPU) の統合: 486以降
  • 高速な浮動小数点演算コンテクストのセーブ
  • SIMD命令セット
    • MMX: MMX Pentium以降
    • 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独自命令。
    • AVX: MMX/SSEの後継となるSIMD命令セット。Sandy Bridge以降。
    • AVX2: Haswell以降。
    • AVX-512: Xeon PhiSkylake以降のXeon

省電力に関する拡張

その他

脚注

  1. ^ x86 - デジタル大辞林
  2. ^ ASCII.jp:32bitアプリを64bit Windows 7で動かす「WOW64」 (1/3)|あなたの知らないWindows
  3. ^ インテル (2008年3月17日). “Intel Corporation's Multicore Architecture Briefing”. 2008年4月16日閲覧。

関連項目

外部リンク