検索に移動この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。1985年10月に発表され、x86アーキテクチャを32ビットに拡張し、レジスタを強化した。互換CPUにも386の型番が付くものがある。後にIA-32と呼ばれる、インテルの32ビットCPUのベースとなる命令セットアーキテクチャは、このCPUで確定した。アーキテクチャとしてのi386については、x86およびIA-32の項目も参照のこと。80386専用の数値演算コプロセッサには80387がある。仕様上は80287も接続できるが、そのためにはマシンが80287に対応する様に設計されている必要がある。eXternal、つまり32ビット外部バスを意味する)と改名した。インテルが80386からセカンドソースを廃止したため、Am386などの互換プロセッサが出現し、その対策もありi386DXと呼ばれるようになった(数字だけでは商標として登録・保護できないため)。1]として使われていたために32ビット機能を使えなくても重大な支障はなかった。PC-9800シリーズ初の32ビット機「PC-98XL2」に採用された例では、32ビット機能がオプション扱いになっており、「機能拡張プロセッサ」を購入してCPUを交換することで32ビット機能を提供する仕様だが、機能拡張プロセッサは不具合が修正された80386そのものである。徐々に使われるようになっていった。Unix系OSであるBSDが移植されて386BSDとなり、Linuxの開発も80386上で開始された。特徴[編集]機能[編集]80386DXの内部ブロック図プロテクトモードとリアルモードの二つの異なる動作モードを備える。80286ではいったんプロテクトモードに入るとリアルモードに戻すにはリセットが必要であったのに対し、80386ではリアルモードとプロテクトモードを行き来することができる。プロテクトモード上で複数の8086を仮想的に動作させる仮想86モードが追加された。汎用レジスタは32ビットに拡張された。32ビットレジスタはEAX、ESIのように従来の16ビットレジスタ名に「E」をつけて呼ばれる。従来の16ビットレジスタに上位16ビットを拡張した形で用意されており、下位16ビットは従来通りの16ビット/8ビットレジスタとしてもアクセス出来る。上位16ビットのみを独立した16ビットレジスタとして使用することは出来ない。セグメントレジスタは従来のCS、DS、ES、SSの4個にFS、GSが追加された。2]となっており、レジスタサイズは16ビットのままである。既存の命令が32ビット演算に対応したほか、多くの新命令が追加された。演算用」「SI、DIはメモリ操作用」など用途別に対応命令が細かく分化していたEAX、EBX、ECX、EDX、EBP、ESP、ESI、EDI合計8個の「汎用レジスタ」がほぼ均等に扱えるようになり、コンパイラ言語への対応が容易になった。レジスタ及び命令の拡張はCPUのモードとは独立したもので、プロテクトモード・リアルモードの別なく使用可能である。従って、リアルモードでも32ビットプロセッサとして動作し32ビット幅のレジスタやデータを扱えるが、64KBを超えるアクセスを実行すると一般保護例外が発生する。3]また、ハードウエアによるデバッグ支援機能が追加され、DR0からDR7のデバッグレジスタを備える。4]32ビット化に併せて論理・物理アドレス空間も4GB(32ビット)に拡張され、セグメントサイズも最大4GBに拡張された。従って、セグメント機構の無いプロセッサ同様のフラットメモリモデル(リニアメモリモデル)で全メモリ空間が使用可能である。可変長のセグメントに加えて固定長のページ単位によるメモリ管理も追加され、近代的なOSの実装が容易になった。ステージ)を持つ最初のインテル・アーキテクチャ・プロセッサとなった(初めての「パイプライン」ではないことに注意[1]。80286は80386と同じ4段パイプライン構成[2])。80386のパイプラインは4段で構成されている。命令の実行は全てマイクロコードで実現されており、複数サイクルの時間を要する。複雑な命令の場合はデコードで所要サイクルが増加した。80386の判別[編集]80386では後のCPUID命令と同様のプロセッサ・シグニチャという概念が導入されたものの、まだCPUID命令そのものは無く、インテルはフラグレジスタを使ったCPU判別方法を紹介している[3]。80386と80486以降を区別する方法としては、80486で追加されたACビットの存在が利用できる。PUSHFDとPOPFDで読み書きできる32ビット分のフラグのうち第18ビットが該当し、これを変更できれば80486以上、変更できなければ80386系のCPUであると判断できる。5]ならばそれを使うこともできる(CPUIDも参照)。80386のプロセッサ・シグニチャは80486以降やCPUID命令とは定義に少々違いがあり、80386ではプロセッサタイプが4ビット分使われている。ファミリは4ビットで同じだが、モデル番号に相当する4ビットはメジャー・ステッピングと呼ばれ、ステッピングIDに相当する4ビットはマイナー・ステッピングと呼ばれる。上位16ビットはすべて予約ビットとなっており、拡張ファミリと拡張モデルは利用できない。STEP)開発コード名P9。ほとんど仕様変更せずにCPU換装を可能として、当時急速にシェアを拡大しつつあったAMDなどのセカンドソース版80286、特にIntelが提供していなかった16MHz版Am80286などの高クロック周波数動作対応モデルを市場から駆逐することを念頭に置いて設計されたCPUである。3.1(日本語版)の動作が可能になる、あるいは後述するようにDOS環境でも1MB以上のメモリ空間にマッピングされるプロテクトモード対応増設メモリ(XMSメモリ)を仮想86モードの下でEMSメモリとして割り当てて使用可能となるなど、80286使用時と比較してメモリ利用の自由度が上がるというメリットがあったため、一時は広く普及した。80386SL[編集]i386SL(PQFPパッケージ)80386SXをベースに、システムマネジメントモードを追加し、サスペンドやレジューム機能などに対応させたCPU。現在のモバイル用CPUの先駆けといえる。NECと打刻されている。NECの代わりにISAと打刻されている。80376[編集]80376は、組込機器用のマイクロコントローラである。80386SXに基づいているものの、リアルモードを実装しておらず、ブート時からプロテクトモードで動作する。[6]80386EX[編集]80386EXは、フルスタティック設計の80386SXコアとした組込機器用のマイクロコントローラ。クロック、システムマネージメント、タイマーカウンター、ウォッチドッグタイマー、同期/非同期シリアル入出力、パラレル入出力、DMAコントローラ、DRAMリフレッシュ、JTAG検査ロジックなどの周辺回路を混載し、フットプリントと消費電力とコストの低減を図っている。386SLC[編集]386SL(386SX)ベースのIBM改良版。内部32ビット、外部データバス16ビットのまま、内蔵キャッシュ8Kを搭載。インテルは80386からセカンドソースを廃止したが、IBMはインテルとの提携により、80486までは製造ライセンスを持っていた。名称の「C」はCacheの略とも言われる。386SLCのダブルクロック版。386SLC2-50/25は、ベースクロック25MHz、内部クロック50MHzで稼働する。386SLCの改良版。内蔵キャッシュ16Kを搭載。内部32ビット、外部データバス16ビットのまま、内蔵キャッシュ16Kにより486SXと同レベルの性能を実現。ThinkPadなどに搭載。486SLCのダブルクロック版。内部32ビット、外部データバス16ビット、ダブルクロックのまま、内蔵キャッシュ16Kを搭載。PS/V、ThinkPadなどに搭載。影響[編集]32ビットCPUとして登場したものの、当初のPC市場にはその機能を活用できるOSは存在しておらず、単に高速なx86CPUとして、主にMS-DOS環境で使われる場合が多かった。NTが市場に登場するが、その頃には既に80486が登場しており、80386は下位機種向けで外部16ビットバスの386SXが主流となりつつあった。486やPentiumプロセッサがその後を受け継ぐこととなった。MS-DOS[編集]MS-DOS環境における利点は、メモリマネージャとよばれるソフト(EMM386.EXE等)によって仮想86モードへと移行し、高速・広帯域のプロテクトメモリを転用してEMSメモリをハードウェアEMSと同等、またはそれ以上の性能で実現できたことである。これも本来の80386の機能・スペックからすると中途半端な使い方であり、80386本来の機能を活かし切るには程遠いものであった。仮想86モードの使用はI/Oアクセスなどの際にトラップを発生させ、その処理と復帰に数十サイクル程度の時間を要するため、25MHzや33MHzの80386であっても、処理によっては12MHzの80286と大差ない状況や、場合によってはむしろ劣るといった状況をも招いてしまうこともあった。通常の演算処理やメモリ操作に関しては、CPUおよびメモリの駆動クロックの差が実効性能に反映されるため、これは都合の悪い処理をピンポイント的に繰り返した際の話にすぎない。Windowsなど[編集]80386用に改良されたOSとして以下が登場した。(OS自体を32ビット化。TOWNS用(MS-DOSにDOSエクステンダを組み合わせたもの。80386のプロテクトモードを使用。4GBリニアな論理アドレス空間を活かしたマルチメディアデータの取り扱いを可能にした)UNIX[編集]80386搭載PCは「高額」とは言っても、当時隆盛していたRISCワークステーション等よりは大幅に安価であったため、より大規模なシステムで利用されていたUNIXなどの32ビットOS環境をこれら安価なパーソナルコンピュータに移植する試みが、80386の登場によって始められた。OS環境の共存を制限付きながら可能とするなど、当時のRISCプロセッサ搭載機にはない新しい機能についての提案を行った。その後、386BSD(後のFreeBSDおよびNetBSD)やLinuxなど、今日の代表的なPC-UNIX系環境の移植やビルドが始められたが、その理由や動機は、80386の登場によってパーソナルコンピュータがこれらの近代的な32ビットオペレーティングシステム環境を実現するだけの機能や性能を持ちえるに至ったからに他ならない。その後の状況[編集]80386で実装された32ビット命令(のちのIA-32命令)は、登場から30年以上が経過したが、上位互換を保ったCPUがインテルから提供され続けている他、AMD、VIAが発売しているx86系のさまざまな互換CPUにおいても継承され続けており、ほとんどのパーソナルコンピュータと多くのサーバで採用され続けている。80386の命令アーキテクチャは、組み込みシステムで圧倒的なシェアを誇るARMアーキテクチャと並び、これまでに最も普及した命令アーキテクチャと言える。80386以降のIA-32プロセッサでは基本命令の追加はあまりなく、MMX、SSE、SSE2、SSE3などのSIMD命令の追加が主であった。80386に関連するカテゴリがあります。同一クロック周波数・どちらもリアルモードでも386より286の方が高速である。386をプロテクトモードにすると(MS-DOSで使っていても拡張メモリマネージャを使うためにはその必要がある)さらにその差は開く。そのためかインテルは16MHz以上の286を出さなかった。逆に286のセカンドソーサや286互換CPUメーカーは、16MHz以上、果てはメーカーによっては25MHzという高速の286を製造・販売した。64KBを超えるアクセスには予めセグメントリミットの変更が必要。うち2本は予約されているのみで、機能は無い。80286用に作られたソフトウェアがプロテクトモードからリアルモードに戻るときの外部ハードウェア機構を利用することで、CPUをリセットしつつも、OSは処理を続行することができる。PC-98ではメモリアドレス0000:0486に保存される[4]。2017年12月23日閲覧。2018年1月8日閲覧。よれば、データ処理能力は20%ほどの低下を来す。2008年4月6日閲覧。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。Cookieに関する声明モバイルビュ。