用プロセッサであった。概要[編集]1982年2月1日に発表、1984年から6MHz版と8MHz版が出荷された。134,000個のトランジスタを集積した1.5μmのNMOSプロセス(インテルの呼称だとHMOS-III)で製造され、性能を大幅に増加させるパイプラインを構成する4つの独立したユニット(アドレスユニット、バスユニット、命令ユニットと実行ユニット)を持っていた。パッケージには68ピンPLCC、LCC、PGAがあった。8086とソフトウェアの上位互換性を持ち、より高速に命令実行可能(同クロック8086比で約2.5倍)。物理メモリ空間が16MBに拡張され、1GBの仮想記憶やマルチタスク処理に対応している。インテルはこのモデルまではセカンドソース推進戦略を採用したため、AMD、富士通、シーメンス、ハリス・コーポレーション(英語版)(以降、ハリスと表記)からもセカンドソース品が供給された。AMDとハリスは、ライセンスが受けられない80386に対抗するため、16、20MHz、ハリスは25MHz、といった、より高クロックの80286を市場に投入した。後述するようにDOSで動作させる限り、同一クロックの80386よりも高い実行速度が得られたからである。対応ソフトウェア[編集]8086や80186に対する上位互換性を持つリアルモードに加えて、プロセスやメモリを保護するプロテクトモードを追加し、これをサポートする命令が追加された。マルチタスクオペレーティングシステムを実装する際に必要な仕組みや命令群が拡張され、その後の32ビットCPUへ繋がる基礎ができあがった。segment)を使用したタスクスイッチ機能などを持つ。DOSおよびMS-DOSIBMが1984年にPC/XTの後継機種PC/ATを発表したとき、8086/8088とリアルモード互換性を持つ80286を採用した。上で利用されることが多かった。3.1において、いずれもスタンダードモードでは、80286のプロテクトモードが活用された。PC/ATの発売から6年後の1990年であった。3.11以降[5]には対応していない。DOSおよびMS-DOS後継のプロテクトモード用オペレーティングシステムとしてIBMとマイクロソフトが共同開発したが、パソコン用OSのひとつとしての地位を獲得するにとどまった。PC/ATの発売から3年後の1987年であった[6]。2.0以降には対応していない。XENIXマイクロソフトによって開発されたUNIXである。リアルモードへの復帰[編集]80286で、DOSやBIOSの資産を継承しつつ、更に仮想記憶機能を生かすためにはリアルモードとプロテクトモードの間を往復することが必要だが、80286にはプロテクトモードからリアルモードへの復帰命令が無く、復帰にはCPUのリセット信号線を有効にするしかなかった。そのため、80286搭載機では特定のI/Oポートを操作することによりCPUのリセットパルスを発生させるハードウェアを持っており、ソフトウェアからCPUのみのリセットを行うことができた。BIOSの初期化プログラムの中で通常のハードウェアリセット(電源ONまたはリセットスイッチ押下)と前述のソフトウェアリセットを区別し、初期化方法を切り替えるという処理が必要だった。これら一連の処理はオーバーヘッドが大きいため、結果的に80286を用いたリアル/プロテクトモード間のスイッチングは非効率的なものとなった。後継の80386以降では、両モード間を任意に往復できる機能や仮想86モードなどを備えていた。リアルモードへ戻るための方法はハードウェア独自のものとなっており、具体的な手順は以下のようにハードウェアによって異なる。PC/ATではキーボードコントローラのI/Oにリセット機能が搭載されていた。これはI/Oポート64hにあり、通例はFEhを書き込みそのbit0を0にすることでリセット動作となる。Areaの0040:0067hに保存する。それ以外のスタックの位置(SS:SP)などプログラムの動作継続に必要な情報は当該プログラム自身のデータ領域などに保存する。71hを使用して書き込む。5を書き込めばリアルモードへの復帰、0を書き込めば通常の電源ON、またはリセットスイッチ押下である。Areaに保存したアドレスから当該プログラムの実行を再開させる。当該プログラムはあらかじめ保存しておいたスタックの位置などの情報を戻す。PC-9800シリーズ[9][10][11]PC-9800シリーズでは1986年に登場したPC-9801VX[12]に80286とV30の両方が搭載され、このとき80286とV30を切り替えるためのリセット用I/Oポートが設けられている。00F0hに0を出力することでCPUがリセットされるが、これに先立ちリセット後に処理を続行するか再起動するかを事前に設定しておく必要がある。処理を続行する場合は事前に戻りアドレスとなるCS:IPをスタックに保存(PUSH)したうえで、そのスタックの位置(SS:SP)をメモリアドレス0000:0404から0407までの4バイトに保存しておく必要がある。HMAの活用[編集]上記の通り80286はリアルモードとプロテクトモードを備えており、起動直後やMS-DOSでは基本的に8086や80186と互換性の高いリアルモードで動作する。0FFFFH)しか表現できない。そこで16ビットレジスタを2つ用意し、まず1MB中のメモリ空間からアドレスの「原点」を10Hバイト単位で大雑把に指定し、もう1つのレジスタでそこから上位の64KBまでをアクセスできるようにしていた。したがって「原点」を示すセグメントレジスタを最大の0FFFFHに設定すれば、0FFFF0Hからさらに上位の64KBすなわち1MBを超える10FFEFHまでアドレスを表現できることになる。0FFEFHにラップアラウンドしてアクセスすることになる。無効/有効を切り替えるハードウェアを持っていた。特定のI/Oポート(PC/ATではキーボードコントローラ)からA20を有効にするとリアルモードのままでも64Kバイト程度の上位メモリを参照することが可能になり、HMAと呼ばれた。HMAは64Kバイト程度であるが640Kバイトの約10%にも相当し、メモリ枯渇に苦しむDOSユーザーにわずかな救いとなった。80386以降のプロセッサでもHMAは使用できる。キャッシュを内蔵した80486以降のCPUではA20を無効にする機能を内蔵し、CPUにA20M#というピンを追加した[13]。これは外部ハードウェアでA20を無効にしても80486がキャッシュに保存されたHMAにアクセスしてしまうためである。このA20M#を制御するのは、PC/ATではキーボードコントローラで変化していない。80286の判別[編集]80286にはCPUID命令は無く、インテルはフラグレジスタを使ったCPUの判別方法を紹介している[14]。PUSHF/POPF命令で読み書きできる16ビット分のフラグのうち、上位4ビットは8086世代(V30、80186などを含む)では使われていない予約ビットとなっていた。実際はその部分が1111bとして読み出せたものの、変更はできなかった。80286ではこの部分がプロテクトモードで使われるようになったため、リアルモードではゼロクリアされた状態になった。仮想86モードを持つ80386からはリアルモードにおいてもこのビットが変更可能な仕様になっている。おいて、フラグレジスタのbit15-12が1111bから変更できなければ8086世代、0000bから変更できなければ80286、そのどちらでもない、つまり一部でも変更可能であれば80386以降と判断できる。追加命令一覧[編集]8086から使用できる基本命令セットに加え、以下の命令セットが追加された。一般命令[編集]80286で新たに追加された命令のうち11個の拡張命令セットは、後に発表された80186にも採用され、共通で使用できた。以外の値を直接指定できるようになった。これらは80186でも同様である。80186」を参照80286はリアルモードにおいて8086や80186と高い互換性を持つものの、完全に等価というわけではない。