Intel 80386はx86を完全32ビット化したCPU

1985年10月発表
Intel 80386
Intel 80386
AI生成コンテンツ / AI-generated contents
80386 は、Intel80286 の後継として1985年(昭和60年)10月に発表した32ビットCPUである。データ・アドレスともに32ビットへ拡張し、ページング機構や仮想8086モードを備えるなど、後のWindowsLinuxを支える基盤を築いた画期的な製品である。

後に「Intel386」(i386)と改称された。x86系CISC設計の到達点であり、ここで確立した32ビット・アーキテクチャは、64ビット化が本格化する2000年代半ばまで20年以上にわたりx86の基本形として使われ続けた。

目次

開発の経緯

Intel 80386 ダイ写真
Intel 80386 ダイ写真
Intel は1982年(昭和57年)、社内コード「P3」として次世代CPUの開発に着手した。80286 は16ビットのままプロテクトモードを導入したが、640KBの壁やリアルモードへ戻れない制約を抱えていた。主任設計者のジョン・クロフォード は、80286 の命令セットとの互換性を保ちながら、レジスタ・データパス・アドレス空間をすべて32ビットへ拡張する方針をとった。
設計は1985年(昭和60年)7月に完了し、同年10月17日に正式発表された。当時としては大規模な約27万5,000個のトランジスタを集積し、1.5μmのCHMOS IIIプロセスで製造された。翌1986年(昭和61年)9月、Compaq が世界初の80386搭載パソコン「Deskpro 386」を発売する。IBM以外のメーカーがPC互換機の基幹部品を先に更新した最初の例となった。

完全な「32ビット化」の達成

Intel 80386 アーキテクチャ
AI生成コンテンツ / AI-generated contents
80386 最大の功績は、80286 までレジスタや命令の一部に16ビットが残っていたx86命令セットを、汎用レジスタ・アドレスバス・データバスのすべてにわたって完全な32ビットへ拡張した点にある。論理アドレス空間はセグメント方式との組み合わせで最大64テラバイトに達し、物理アドレス空間も4GBまで直接扱えるようになった。

命令セット自体は80286 からの上位互換を保ち、既存の16ビットソフトウェアもそのまま動作した。当時のパソコン市場ではMS-DOS 用ソフトウェアの資産が膨大で、これを捨てる選択はとれなかった。「32ビットへの拡張」と「過去のソフトウェアとの互換」を同時に満たしたことが、x86が生き残った要因である。

ページング方式による仮想記憶のサポート

80386のページング方式と仮想記憶
AI生成コンテンツ / AI-generated contents
大きな写真大きな写真
(1672×941 ピクセル, 138 Kbyte)
80386 は、x86系として初めてページング 機構を搭載した。制御レジスタCR0 のPGビットを立てることでページングが有効になり、CR3 が指すページディレクトリを介して4KB単位のページごとに論理アドレスを物理アドレスへ変換する。

物理メモリに収まりきらないページはディスクへ退避でき、必要になった時点でCR2 に格納されたフォールトアドレスを手がかりに再読み込みする。これが仮想記憶(仮想メモリ)である。OSは搭載物理メモリを超えるアドレス空間をアプリケーションに提供できるようになった。

仮想8086モード

仮想8086モード
AI生成コンテンツ / AI-generated contents
大きな写真大きな写真
(1672×941 ピクセル, 153 Kbyte)
80386 は、フラグレジスタの第17ビット(VMビット)を立てることで「仮想8086モード」(Virtual 8086 Mode)に移行できる。これは、プロテクトモードで動作するOSの管理下に、8086互換のリアルモード環境を仮想的に作り出す機能である。

1つのCPU上に複数の仮想8086マシンを同時稼働させられるため、複数のMS-DOSアプリケーションを互いに干渉させずに並行して動かせる。しかも各マシンのメモリアクセスはOSが監視でき、80286 までは不可能だった「保護された形でのDOS互換動作」が成立した。

386EMSの役割と必要性

MS-DOS は、80286の記事で触れたとおりリアルモードでしか動作せず、アプリケーションが使えるメモリは640KBに限られていた。この壁を越えるために策定されたのがEMS(Expanded Memory Specification)で、UMA に設けた16KB×4ブロックのページフレームへ、1MBより上のメモリを切り替えながら割り当てる仕組みである。
80286 の時代、この切り替えを行うにはバンク切り替え回路を積んだ専用のハードウェアEMSボードを増設する必要があった。プロテクトモードでEMSをエミュレートする方式も試みられたが、80286 はプロテクトモードからリアルモードへ戻る命令を持たず、いちいちCPUをリセットしなければならない。このオーバーヘッドが大きく、実用にならなかった。
80386 は、仮想8086モードページング の組み合わせによってこの問題を解決した。OSはプロテクトモードのまま動き、その中の仮想8086マシンでDOSアプリケーションを走らせる。アプリケーションのメモリアクセスはすべてMMU を通るため、ページテーブルの書き換えだけで、1MBより上の拡張メモリをページフレームへ瞬時にマッピングできる。
これが386EMS(仮想86EMS)である。専用ボードを買わずに、ソフトウェアだけでEMSを実現できるようになった点が大きい。マイクロソフトは1988年(昭和63年)のWindows/386 2.1EMM386.SYS を同梱し、MS-DOS 5.0 では EMM386.EXE として標準機能に組み込んだ。
EMM386 は、EMSのエミュレーションに加えてUMB(Upper Memory Block)の提供も担った。UMA の未使用領域を通常のメモリとして使えるようにし、デバイスドライバや常駐プログラムをそこへ追い出すことで、640KBのコンベンショナルメモリの空きを確保できた。EMSボードが不要になったことは、80386 搭載機が普及する実利的な理由の1つとなった。

80386普及に時間がかかった理由

Compaq Deskpro 386
Compaq Deskpro 386
AI生成コンテンツ / AI-generated contents
21世紀においては、Intel の新型CPUが登場すると同時に搭載パソコンが発売されるが、80386 の発表から搭載機の普及までには時間がかかった。1985年(昭和60年)10月の発表から、世界初の搭載機「Compaq Deskpro 386」の発売まで約11カ月を要し、その後もしばらくは高性能な業務用機を中心とする採用にとどまった。
最大の理由は、当時主流だったMS-DOS とアプリケーションの多くが16ビットで、80386 の32ビット命令、4GBのアドレス空間、ページングといった新機能を直接利用できなかったことである。ワープロや表計算など通常の事務処理では、安価な80286 搭載機でも十分な性能が得られた。

価格も障壁となった。Deskpro 386 の発売時価格は構成により6,499~8,799ドルで、大容量メモリや高速なハードディスクを加えるとシステム全体はさらに高価になった。企業にとっては、実績と対応ソフトが豊富なPC/AT互換機を使い続ける方が安全であった。
転機は、1988年(昭和63年)に登場した廉価版80386SX と、1990年(平成2年)発売のWindows 3.0 である。周辺回路を16ビット機から流用できる80386SX が搭載機の価格を下げ、Windows 3.0 の386エンハンストモードが仮想記憶や複数のDOSアプリケーションの並行動作を実用化したことで、一般利用者にも386を選ぶ利点が明確になった。
普及期には、1991年(平成3年)のAMD Am386 など互換CPUの登場も重なった。普及の遅れが互換CPUメーカーに開発期間を与えた面はあるが、Am386 の発売が遅れた主因は、独自の互換設計とIntelとの契約・法的紛争に時間を要したためである。むしろ386市場の立ち上がりが遅かったことで、後発の互換CPUにも販売できる市場が長く残り、低価格化と386世代の延命につながった。

近代的マルチタスクOSの誕生

ページング仮想8086モード の組み合わせは、近代的なマルチタスクOSを実用にする土台となった。1990年(平成2年)発売のWindows 3.0 は、搭載CPUに応じて3つの動作モードを持ち、起動時に自動で選択する構成になっていた。
1) リアルモード
8086/8088相当の機能だけを使う。使えるメモリは640KBとEMSに限られ、マルチタスクもできない。
2) スタンダードモード
80286のプロテクトモードを使い、最大16MBの拡張メモリを扱える。ただしDOSアプリケーションは1つずつ全画面でしか動かせない。
3) 386エンハンストモード
80386のプロテクトモード・ページング・仮想8086モードをすべて使う。仮想記憶とDOSアプリケーションのマルチタスクに対応する。
386エンハンストモード(386 Enhanced Mode)では、ページング によってハードディスクを仮想記憶として使い、物理メモリを超える最大4GBのアドレス空間を扱えた。さらに仮想8086モード により、複数のDOSアプリケーションをそれぞれ独立した仮想マシンの中でウィンドウ表示し、プリエンプティブに並行動作させることができた。
この仕組みには実用上の利点があった。それまでのDOSでは、1つのアプリケーションが他のプログラムやOSの領域へ誤って書き込むとシステム全体が停止し、再起動するしかなかった。386エンハンストモードでは各仮想8086マシンのメモリ空間がMMU で隔離されるため、1つのDOSアプリケーションが暴走しても、その仮想マシンだけを終了させれば済む
DOSアプリケーションが原因のシステム全体のクラッシュは大幅に減り、複数のアプリケーションを開いたまま作業を続けられるようになった。1つのアプリケーションのハングアップで作業中のデータを失うという、それまで日常的だった事故が起きにくくなった。
1992年(平成4年)のWindows 3.1 ではリアルモードが廃止され、8086/8088搭載機は動作対象外となった。残る2モードのうち、80386 以降の機種では386エンハンストモードが標準の動作モードとなり、スタンダードモード80286 機向けに残されるだけとなった。80386 を持つことがWindowsを使う前提になったのである。
1991年(平成3年)、リーナス・トーバルズ は自宅の80386 搭載機を対象に、Unix風OSカーネルの開発を開始した。プロテクトモード・ページング・メモリ保護といった80386 の機能が、安価なPC上で本格的なマルチユーザーOSを動かす土台となり、のちのLinux 誕生につながった。

「386」という名称

当初の型番は前身の80286 を踏襲した「80386」であった。IBMは自社パソコンに、CPU型番ではなく「XT」「AT」といった独自の名称を与える慣例だったが、1986年(昭和61年)9月、Compaq が発売した世界初の80386搭載機に、あえてCPU型番を冠した「Deskpro 386」という製品名を付けた。
これが転じて「386」がCPUそのものの通称として広く定着した。互換CPUメーカーも「386」を名乗るようになり、Intelは1990年(平成2年)10月、商標権侵害でAMD を提訴した。しかし1991年(平成3年)3月、裁判所は「数字だけの表記は一般名称であり商標にならない」としてIntelの主張を退けた。
そこでIntelは、数字の前に社名を冠した「Intel386」(i386)を商標として登録し直し、後継の「i486」にもこの命名則を踏襲した。さらに2世代先では数字による命名を完全に捨て、「586」ではなく「Pentium」という造語の商標を採用することになる。

派生CPU

i386SX
i386SX
AI生成コンテンツ / AI-generated contents
1988年(昭和63年)、外部データバスを16ビット、アドレスバスを24ビットに簡略化した廉価版「80386SX」が登場した。内部は32ビットのまま処理互換性を保ちつつ、周辺回路を16ビット機器用に流用できるコスト面の利点から、家庭向けパソコンへの普及を大きく後押しした。
80386SL
80386SL
AI生成コンテンツ / AI-generated contents
1989年(昭和64年)には、プロテクトモードだけで動作する組み込み向けの「80376」が登場した。1990年(平成2年)10月には、80386SX にキャッシュコントローラ・バスコントローラ・電源管理回路を統合し、x86として初めてSMM(システムマネジメントモード)を搭載した「80386SL」が発売された。BIOSがOSの支援なしに省電力制御を行える初のCPUで、ノートパソコン向けに設計されている。
1994年(平成6年)8月には、割り込みコントローラやタイマ、シリアルポートなどの周辺回路をワンチップ化した「80386EX」が登場した。組み込み用途に特化した製品で、小型の人工衛星の制御装置などにも採用された。

他社の互換CPU

Am386
Am386
AI生成コンテンツ / AI-generated contents
Intelは80286 まで他社にセカンドソース製造を認めていたが、80386 以降はこれを拒否した。AMD は独自にリバースエンジニアリングを敢行し、1991年(平成3年)、クリーンルーム設計によるバイナリ互換CPU「Am386」を発売した。

Intelはマイクロコードの著作権侵害でAMD を提訴し、一時は出荷差し止めとなったが、最終的にAMD が勝訴し、Am386DXAm386SX の製造販売が認められた。この訴訟の経験が、のちのAMD によるAm486K5 など自社設計路線への転換を促した。
Cx486DLC
Cx486DLC
AI生成コンテンツ / AI-generated contents
Cyrix (サイリックス)  は1992年(平成4年)、386のソケットにそのまま差せる「Cx486SLC」(386SX用)と「Cx486DLC」(386DX用)を発売した。1KBのキャッシュと486の命令を取り込んで内部性能を高めた製品で、80386 搭載機のアップグレード市場に参入した。
IBMはIntelとのクロスライセンス契約に基づき、1991年(平成3年)、80386SX に8KBのキャッシュとキャッシュコントローラを追加した「IBM 386SLC」を独自開発した。同クロックの80386DX に匹敵する性能を発揮し、PS/2 Model 35・40・56シリーズやPS/ValuePoint 325Tに搭載された。

数値演算コプロセッサ

80387のダイ
80387のダイ
80386DX80386SX は整数演算回路だけを内蔵し、浮動小数点演算回路(FPU)を持たない。小数を扱う計算はソフトウェアでも実行できるが、CAD、科学技術計算、統計処理などでは非常に時間がかかった。そこで別売の数値演算コプロセッサを追加し、浮動小数点の四則演算、平方根、三角関数、対数などをハードウェアで高速処理した。
1987年(昭和62年)に登場した「80387」は 80386DX の32ビット外部バスに対応する。一方、「80387SX」は 80386SX の16ビット外部バスに合わせた製品で、両者にソフトウェア互換性はあるが、電気的仕様とソケットに互換性はない。したがって、DX機には80387、SX機には80387SXという組み合わせになる。80387は68ピンPGA、80387SXは68ピンPLCCを採用した。

80387 はx87命令をIEEE 754に準拠して実行し、内部では80ビット拡張精度を扱う。80387SX は後発で内部設計とマイクロコードが改良されたため、命令によっては少ないクロック数で完了する。ただしSXシステムは外部バス幅が狭く、実際の処理時間はコプロセッサのクロック、メモリ転送、待ち時間にも左右される。

ハードウェアとソフトウェアの比較

次表は、16MHzのIBM PS/2 Model 70、MS-DOS 3.30、倍精度実数という同一条件で、80387 を使った場合と Microsoft C 5.1 付属の浮動小数点エミュレータを使った場合を比較した実測例である。時間にはループやデータ操作の負荷も含まれるため、80387命令単体のクロック数とは一致しない。
項目 80387使用 Microsoft C 5.1
エミュレータ
1987~1988年の米国価格 小売795ドル
100個単位で500ドル
定価450ドル
実売285~299ドル
加算 13.0μ秒 172μ秒(約13.2倍)
乗算 14.2μ秒 222μ秒(約15.6倍)
除算 16.8μ秒 255μ秒(約15.2倍)
平方根 55μ秒 570μ秒(約10.4倍)
導入上の特徴 対応ソケットと追加購入が必要 コンパイラに同梱され、追加ハードウェア不要
価格は同じ種類の商品を比べたものではない。80387 の795ドルはコプロセッサ単体の小売価格であり、Microsoft C 5.1 の450ドルはコンパイラ、開発ツール、ライブラリを含む製品一式の定価である。エミュレータはその付属機能なので、利用者が作成済みソフトを動かすだけなら別途購入する必要はなかった。

したがって、ワープロなど浮動小数点演算の少ない用途では、安価で追加ハードウェアも不要なエミュレータで間に合った。一方、四則演算だけでも約13~16倍の性能差があり、三角関数などを含めると差はおおむね10~25倍に達する。CADや科学技術計算を繰り返す利用者には、高価でも80387 の費用対効果が高かった。

互換CPUと互換コプロセッサ

AMD Am386DXAm386SX もFPUを内蔵していないが、それぞれIntelの8038780387SXまたはピン互換品を利用できた。AMDはAm386用の独自コプロセッサを投入せず、既存のx87互換製品を組み合わせる方式をとった。

Cyrix (サイリックス) Cx486DLCCx486SLC もFPUを内蔵せず、DLCは80387、SLCは80387SXと互換コプロセッサを利用できた。Cyrix自身も80387互換の「FasMath 83D87」と80387SX互換の「FasMath 83S87」を販売したほか、IITなども3C87シリーズを供給した。

IBM 386SLC80386SX 系の16ビット外部バスを持つため、搭載機に対応ソケットがあれば80387SXまたは互換品を利用できた。たとえばPS/2 Model 56 SLCは、20MHzの80387SX用ソケットを備えていた。CPUが互換品でも、DX系とSX系でコプロセッサを正しく選び、CPUやシステムに適合するクロックの製品を使う必要があった。

後継CPUと終焉

1989年(昭和64年)、Intel はワイヤードロジックとパイプライン処理、内蔵FPUを備えた後継製品「80486」を投入し、80386 は世代交代を迎えた。この初代モデルは、後にFPUを持たない廉価版80486SXが登場した際に「80486DX」と呼ばれるようになった。命令セット・アーキテクチャ上の互換性は保たれ、80386 で確立した32ビット環境は80486以降にも継承された。
パソコン向けとしては1990年代半ばまでに姿を消したが、消費電力が低く実績のあるCPUとして、組み込み機器や産業機器向けには長らく製造が続けられた。Intelは2006年(平成18年)5月、80386系プロセッサの生産を2007年(平成19年)9月末で終了すると発表した。1985年(昭和60年)の発表から数えて約22年にわたって供給されたことになる。

主要スペック

項目 仕様
メーカー Intel
発表 1985年10月
トランジスタ数 約27万5,000
チップ面積 約104mm2
データバス 32ビット
アドレスバス 32ビット
物理メモリ 4GB
論理アドレス空間 64TB(セグメント+ページング)
CPUクロック 16~33MHz(互換CPUでは40MHz)
プロセスルール 1.5μm(CHMOS III)
パッケージ 132ピンPGA
最大消費電力 約2W
動作電圧 5V

CPUの歴史

発表年 メーカー CPU名 ビット数 最大クロック
1970年Garrett
AiResearch
MP944 (軍用)20bit375KHz
1971年インテル40044bit750KHz
1974年インテル80808bit3.125MHz
1975年モステクノロジーMOS 65028bit3MHz
1976年ザイログZ808bit20MHz
1978年インテル808616bit10MHz
1979年モトローラMC68098bit2MHz
1979年ザイログZ800016bit10MHz
1980年モトローラMC6800016bit20MHz
1983年NECV3016bit16MHz
1984年インテル8028616bit12MHz
1985年インテル8038632bit40MHz
1985年インテルi96032bit100MHz
1985年サン・マイクロシステムズSPARC32bit150MHz
1985年エイコーンARM132bit6MHz
1986年MIPSR200032bit15MHz
1987年ザイログZ28016bit12MHz
1987年モトローラMC6803032bit50MHz
1988年MIPSR300032bit40MHz
1989年インテル8048632bit100MHz
1989年インテルi86032bit50MHz
1990年モトローラMC6804032bit40MHz
1991年MIPSR400064bit200MHz
1992年DECAlpha 2106464bit200MHz
1993年IBM, モトローラ, ApplePowerPC 60132bit120MHz
1993年インテルPentium32bit300MHz
1994年IBM, モトローラ, ApplePowerPC 60332bit300MHz
1995年サイリックスCyrix Cx5x8632bit133MHz
1995年AMDAm5x8632bit160MHz
1995年サン・マイクロシステムズUltraSPARC64bit200MHz
1999年IBM, モトローラPowerPC G432bit1.67GHz
1999年AMDAthlon32bit2.33GHz
2000年インテルPentium 432bit3.8GHz
2001年インテルItanium64bit800MHz
2003年AMDOpteron64bit3.5GHz
2003年インテルPentium M32bit2.26GHz
2006年SCE,ソニー,IBM,東芝Cell64bit3.2GHz
2006年インテルCore Duo32bit2.33GHz
2006年インテルCore 2 Duo64bit3.33GHz
2008年インテルCore i9/i7/i5/i364bit5.8GHz
2017年AMDRyzen64bit5.7GHz
2020年AppleM1/M2/M3/M4/M564bit3.49GHz
2023年インテルCore Ultra 9 / 7 / 564bit5.1GHz

参考サイト

(この項おわり)
header