Intel 80386

出典: フリー百科事典『ウィキペディア(Wikipedia)』
I386DXから転送)
移動先: 案内検索

テンプレート:Infobox CPU Intel 80386(またはi386)はインテル32ビットマイクロプロセッサ(CPU)である。1985年10月に発表され、x86アーキテクチャを32ビットに拡張し、レジスタを強化した。インテルが現在使用している名称はIntel386™プロセッサ (Intel386™ Processor) である。互換CPUにも386の型番が付くものがある。

アーキテクチャとしてのi386については、x86およびIA-32の項目も参照のこと。

概要

1985年の発表当初の名称はIntel 80386であった。80386専用の数値演算コプロセッサには80387がある。仕様上は80287も使用できるようになっている(単純な差し替えはできず、そのように設計されている必要がある)。

1988年に80386SX(SXはSingle-word eXternal、つまり16ビット外部バスを意味する) が80386シリーズに加わった際に、従来の32ビット外部バスのプロセッサには区別するためにDXをつけてIntel 80386DX(DXはDouble-word eXternal、つまり32ビット外部バスを意味する)と改名した。

また、インテルが80386からセカンドソースを廃止したため、Am386などの互換プロセッサが出現し、その対策もありi386DXと呼ばれるようになった(数字だけでは商標として保護できないため)。

ごく初期の製品では32ビット演算が正しく行われない、仮想86モードが動作しないという不具合も知られている。PC-9800シリーズ初の32ビット機「PC-98XL2」に採用された例では、32ビット機能がオプション扱いになっており、別途「機能拡張プロセッサ」(実態は修正された80386そのもの)を買って置き換えることで32ビット機能を提供するという仕様だった。

そのようなことができたのも当初は80286と同様に主として高速な8086/V30[1]として使われていたからだが、80386で採用された32ビット命令セットや仮想86モードはやがて多くのオペレーティングシステムで徐々に使われるようになっていった。その後のインテルの32ビットCPUのベースとなる命令セットアーキテクチャ(後にIA-64登場時にIA-32と呼ばれる)が、このCPUで確定した。

特徴

ファイル:80386DX arch.png
80386DXの内部ブロック図

プロテクトモードリアルモードの二つの異なる動作モードを備える。80286で用意されたプロテクトモードは16ビットのリアルモードへ戻れなかったのに対し、80386ではリアルモードとプロテクトモードを行き来することができる。更に、80286とは違いリアルモードでも32ビットの演算(アドレス空間ではない、あくまでレジスタ演算のみ)が可能である。32ビットに拡張されたレジスタはEAX、ESIのように従来の16ビットレジスタ名に「E」をつけて区別され、従来「AX は演算用」「SI、DIはメモリ操作用」など用途別に対応命令が分化していたのに対しEAX、EBX、ECX、EDX、EBP、ESP、ESI、EDI合計8個の「汎用レジスタ」が均等に扱えるようになってレジスタの直交性が増しコンパイラ言語への対応が容易になった。またセグメントセレクタも CS、DS、ES、SSの4個に加えFS、GSが追加されている。

プロテクトモード上で複数の8086を仮想的に動作させうる仮想86モードが追加された。32ビット化に併せて論理アドレス空間も4GB(32ビット)に拡張された。プロテクトモード上では、従来のセグメント構造がセレクタと呼ばれる構造になっており、また可変長のセグメントに加えて固定長のページ単位によるメモリ管理も追加され、近代的なOSの実装が容易になった。

x86アーキテクチャCPUとしては、複数の並列ステージ(Intel386 では6 ステージ)を持つ最初のインテル・アーキテクチャ・プロセッサとなった(初めての「パイプライン」ではないことに注意[2]。80286は80386と同じ4段パイプライン構成[3])。80386のパイプラインは4段で構成されている。命令の実行は全てマイクロコードで実現されており、複数サイクルの時間を要する。また、複雑な命令の場合はデコードで所要サイクルが増加した。

その他の80386シリーズ

80386SX

ファイル:I386SX.jpg
i386SX(外部から機能を停止できるC STEP)

開発コード名P9。命令セットは80386と互換性があるが、外部アドレス幅を24ビット (16MB)、外部データバス16ビット幅に縮小し、システム(システム基板、メモリを含む)のトータル的なコストダウンと、既存の80286搭載パーソナルコンピュータ (PC) をほとんど仕様変更せずにCPU換装を可能として、当時急速にシェアを拡大しつつあったAMDなどのセカンドソース版80286、特にIntelが提供していなかった16MHz版Am80286などの高クロック周波数動作対応モデルを市場から駆逐することを念頭に置いて設計されたCPUである。 特にメモリのバス幅が狭いことからプロテクトモードの利用は性能の低下が激しかったが[4]、それでもこのCPUを採用することで、PCメーカーは従来の80286マシンをわずかな手直しを施すだけで「32ビットマシン」として販売することが可能となり、またユーザー側にもMicrosoft Windows 3.1(日本語版)の動作が可能になる、あるいは後述するようにDOS環境でも1MB以上のメモリ空間にマッピングされるプロテクトモード対応増設メモリ(XMSメモリ)を仮想86モードの下でEMSメモリとして割り当てて使用可能となるなど、80286使用時と比較してメモリ利用の自由度が上がるというメリットがあったため、一時は広く普及した。

80386SL

ファイル:KL Intel i386SL.jpg
i386SL(PQFPパッケージ)

80386SXをベースに、システムマネジメントモードを追加し、サスペンドやレジューム機能などに対応させたCPU。現在のモバイル用CPUの先駆けといえる。また、日本電気インテルに発注して製造された、PC-9800シリーズアーキテクチャ専用のCPU、80386SL(98)もある。80386SL(98)にはi386SLロゴの下にPC-98ロゴも入っており、PC9800 NECと打刻されている。通常版にはPC9800 NECの代わりにISAと打刻されている。


80376

80376は、組込機器用のマイクロコントローラである。80386SXに基づいているものの、リアルモードを実装しておらず、ブート時からプロテクトモードで動作する。[5]

80386EX

80386EXは、フルスタティック設計の80386SXコアとした組込機器用のマイクロコントローラ。クロック、システムマネージメント、タイマーカウンター、ウォッチドッグタイマー、同期/非同期シリアル入出力、パラレル入出力、DMAコントローラ、DRAMリフレッシュ、JTAG検査ロジックなどの周辺回路を混載し、フットプリントと消費電力とコストの低減を図っている。[6]

IBM製

テンプレート:Main

IBM 386SLC

386SL(386SX)ベースのIBM改良版。内部32ビット、外部データバス16ビットのまま、内蔵キャッシュ8Kを搭載。IBM PS/2 などに搭載。インテルは80386からセカンドソースを廃止したが、IBMはインテルとの提携により、80486までは製造ライセンスを持っていた。名称の「C」はCacheの略とも言われる。

IBM 386SLC2

IBM 386SLCのダブルクロック版。例えば386SLC2-50/25は、ベースクロック25MHz、内部クロック50MHzで稼働する。PS/Vなどに搭載。

IBM 486SLC

IBM 386SLCの改良版。内蔵キャッシュ16Kを搭載。内部32ビット、外部データバス16ビットのまま、内蔵キャッシュ16Kにより486SXと同レベルの性能を実現。ThinkPadなどに搭載。名称より「486SXのIBM改良版」との誤解が多いが、コアは386SL(386SX)ベースである。

IBM 486SLC2

IBM 486SLCのダブルクロック版。内部32ビット、外部データバス16ビット、ダブルクロックのまま、内蔵キャッシュ16Kを搭載。PS/VThinkPadなどに搭載。

影響

32ビットCPUとして登場したものの、当初のPC市場にはその機能を活用できるOSは存在しておらず、単に高速なx86CPUとして、主にMS-DOS環境で使われる場合が多かった。

その後、80386のアーキテクチャを前提として新たに開発された32ビットOSとして、OS/2 2.0やMicrosoft Windows NTが市場に登場するが、その頃には既に80486が登場しており、80386は下位機種向けで外部16ビットバスの386SXが主流となりつつあった。外部16ビットの386SXシステムで32ビットOSを動かすには力不足が明白であり、結果的により高速なIntel 486Pentiumプロセッサがその後を受け継ぐこととなった。

MS-DOS

MS-DOS環境における利点は、メモリマネージャとよばれるソフト(EMM386.EXE等)によって仮想86モードへと移行し、高速・広帯域のプロテクトメモリを転用してEMSメモリをハードウェアEMSと同等、またはそれ以上の性能で実現できたことである。しかしこれも本来の80386の機能・スペックからすると中途半端な使い方であり、80386本来の機能を活かし切るには程遠いものであった。

また仮想86モードの使用はI/Oアクセスなどの際にトラップを発生させ、その処理と復帰に数十サイクル程度の時間を要するため、25MHzや33MHzの80386であっても、処理によっては12MHzの80286と大差ない状況や、場合によってはむしろ劣るといった状況をも招いてしまうこともあった。(ただし、通常の演算処理やメモリ操作に関しては、CPUおよびメモリの駆動クロックの差が実効性能に反映されるため、これは都合の悪い処理をピンポイント的に繰り返した際の話にすぎない)

Microsoft Windowsなど

80386用に改良されたOSとして以下が登場した。

  • Microsoft Windows (Windows)
    • Windows386 2.1 (リアルモード用16ビットアプリケーションを前提とした16ビットOSだが、OS自体は80386のプロテクトモードを活用するようになった)
    • Windows 3.0 (80286相当のプロテクトモードに対応した16ビットアプリケーションを前提とした16ビットOSであるが、OS自体はエンハンスドモード動作時に32ビットの仮想86モードを活用している)
    • Windows NT (OS自体を32ビット化)
  • OS/2
  • NetWare
    • NetWare386 (MS-DOSから起動し、80386のプロテクトモードを使用できる)

UNIX

80386搭載PCは「高額」とは言っても、当時隆盛していたRISCワークステーション等よりは大幅に安価であったため、より大規模なシステムで利用されていたUNIXなどの32ビットオペレーティングシステム環境をこれら安価なパーソナルコンピュータに移植する試みが、80386の登場によって始められた。1988年には当時既にSPARCプロセッサを搭載するSUN-4を製造販売していたサンマイクロシステムズがSUN386iと称する、SUN OS 4.0の386対応版を搭載するワークステーションを発表し、低価格であるだけでなく、当時のSPARC搭載機では困難であった、MS-DOS環境とSUN OS環境の共存を制限付きながら可能とするなど、当時のRISCプロセッサ搭載機にはない新しい機能についての提案を行った。その後、386BSD(後のFreeBSDおよびNetBSD)やLinuxなど、今日の代表的なPC-UNIX系環境の移植やビルドが始められたが、その理由や動機は、80386の登場によってパーソナルコンピュータがこれらの近代的な32ビットオペレーティングシステム環境を実現するだけの機能や性能を持ちえるに至ったからに他ならない。

PS/2について

下記の説があるが、IBM PS/2は初期モデルより80386も搭載しており、正しくない(IBM PS/2#モデルを参照)。PS/2とOS/2の混同と思われる(Windowsを持つマイクロソフトOS/2 1.x を最初から80386専用に希望し、IBMは広く80286以上に希望した。PS/2で80386を搭載しなかったのではない)。

80386はマイクロソフトIBMの(IBMがIBM PS/2に80386を採用しなかったことを発端にした)対立の煽りをまともに受けた悲運のMPUでもある。IBMはPC/ATの後継機種として、PS/2の開発を始めた。当時80386は既に販売されており、PS/2に搭載することは物理的には可能であった。しかし、PS/2に80386を搭載した場合、自社製のオフィスコンピュータとの性能差がほとんどなくなりオフィスコンピュータ市場を圧迫する事などを嫌ったIBMはPS/2に80286を搭載することにした。マイクロソフト側としては、OS/2の実装に際してi386の機能を利用したいと考えていたようで、何度もIBMに対してPS/2へ80386を採用するように要請していた。この対立が元で、IBMとマイクロソフトとの蜜月が終り、マイクロソフトがOS/2から撤退しMicrosoft Windows NTの開発を始めることになった。この決断により80386ネイティブのオペレーティングシステム開発が遅れ、完成した頃にはi486の時代へと移っていたのである。

現在

80386で実装された32ビット命令(のちのIA-32命令)は、登場から20年以上が経過したが、現在のCore 2を始め、AMD,VIAが発売しているx86系のさまざまな互換CPUにおいても継承され続けており、ほとんどのパーソナルコンピュータと多くのサーバで採用され続けている。80386の命令アーキテクチャは、組み込みシステムで圧倒的なシェアを誇るARMアーキテクチャと並び、これまでに最も普及した命令アーキテクチャと言える。近年のIA-32プロセッサは命令アーキテクチャが大幅に拡張されており、SSEなどのSIMD命令も付加されているが、386由来の命令も依然として使われている。

2006年現在においても80386は少量ながら製造されている。主な用途は軍事向けで、有名な物としてパトリオットミサイルに搭載されている(正確にはミサイル本体(MIM-104)ではなく、地上装置であるECS及びICCの兵器管制コンピュータEWCC(Enhanced Weapon Control Computer)に搭載されている)。

関連項目

テンプレート:Sister

脚注

  1. ただし、同一クロック周波数・どちらもリアルモードでも386より286の方が高速である。386をプロテクトモードにすると(MS-DOSで使っていても拡張メモリマネージャを使うためにはその必要がある)さらにその差は開く。そのためかインテルは16MHz以上の286を出さなかった。逆に286のセカンドソーサや286互換CPUメーカーは、16MHz以上、果てはメーカーによっては25MHzという高速の286を製造・販売した。
  2. http://download.intel.com/design/intarch/manuals/24319001.PDF
  3. http://en.wikipedia.org/wiki/Intel_80286
  4. テンプレート:Cite encyclopedia によれば、データ処理能力は20%ほどの低下を来す。
  5. テンプレート:Cite web
  6. テンプレート:Cite web

テンプレート:Intel processors