Intel_80286
[Wikipedia|▼Menu]

80286Intel 80286 (PGA)
生産時期1982年から1991年まで
生産者Intel, IBM, AMD, Harris (インターシル), シーメンス, 富士通
CPU周波数5 MHz から 25 MHz
FSB周波数5 MHz から 25 MHz
命令セットx86 (16ビット)
パッケージ68ピン PLCC・LCC・PGA
前世代プロセッサIntel 80188
次世代プロセッサIntel 80386
トランジスタ134000
コプロセッサIntel 80287
テンプレートを表示
Intel 80286 (PLCC)

Intel 80286(インテル 80286)はインテル16ビットマイクロプロセッサ (CPU)。IBMPC/AT(日本ではPC-9800シリーズ)およびその互換機によって広く普及した、DOS時代の代表的なパーソナルコンピュータ (PC) 用プロセッサであった。
概要

1982年2月1日に発表、1984年から6MHz版と8MHz版が出荷された。134,000個のトランジスタを集積した1.5μmのNMOSプロセス(インテルの呼称だとHMOS-III)で製造され、性能を大幅に増加させるパイプラインを構成する4つの独立したユニット(アドレスユニット、バスユニット、命令ユニットと実行ユニット)を持っていた。クロック周波数は6、8、10、12MHz があった。パッケージには68ピンPLCC、LCC、PGAがあった。

8086ソフトウェアの上位互換性を持ち、より高速に命令実行可能(同クロック8086比で約2.5倍)。また、物理メモリ空間が16MBに拡張され、1GBの仮想記憶マルチタスク処理に対応している。また、インテルはこのモデルまではセカンドソース推進戦略を採用したため、AMD富士通シーメンス、ハリス・コーポレーション(英語版)(以降、ハリスと表記)からもセカンドソース品が供給された。特にAMDとハリスは、ライセンスが受けられない80386に対抗するため、16、20MHz、ハリスは25MHz、といった、より高クロックの80286を市場に投入した。後述するようにDOSで動作させる限り、同一クロックの80386よりも高い実行速度が得られたからである。

インテル社のiAPX 286 Programmer's Reference Manual[1]では、CPUの80286と後述の周辺LSIの組み合わせがiAPX 286であるとしている[注 1]
対応ソフトウェア

808680186に対する上位互換性を持つリアルモードに加えて、プロセスやメモリを保護するプロテクトモードを追加し、これをサポートする命令が追加された。また、マルチタスクオペレーティングシステムを実装する際に必要な仕組みや命令群が拡張され、その後の32ビットCPUへ繋がる基礎ができあがった。4階層の特権レベル、仮想記憶機能、メモリ保護機能、TSS(Task state segment)を使用したタスクスイッチ機能などを持つ。
PC DOSおよびMS-DOS
IBMが1984年にPC/XTの後継機種PC/ATを発表したとき、8086/8088とリアルモード互換性を持つ80286を採用した。しかし、プロテクトモードを活かして設計されたオペレーティングシステムは一般向けに普及しておらず、80286はもっぱら高速な8086としてPC-DOS (MS-DOS) 上で利用されることが多かった。
DOS/V
前述の通りPC/ATは80286機であるため、AT互換機用の日本語OSであるDOS/Vは80286以上のシステムが前提となっている。
Windows 3.x
Windows 3.0や英語版Windows 3.1において、いずれもスタンダードモードでは、80286のプロテクトモードが活用された。Windows 3.0の発売は、IBM PC/ATの発売から6年後の1990年であった。日本語版Windows 3.1以降[2][3][4]、およびWindows for Workgroups 3.11以降[5]は80286には対応していない。
OS/2 1.x
PC DOSおよびMS-DOS後継のプロテクトモード用オペレーティングシステムとしてIBMマイクロソフトが共同開発したが、パソコン用OSのひとつとしての地位を獲得するにとどまった。OS/2 1.0の発売は、IBM PC/ATの発売から3年後の1987年であった[6]。OS/2 2.0以降は80286には対応していない。
XENIX
マイクロソフトによって開発されたUNIXである。
リアルモードへの復帰

80286で、DOSやBIOSの資産を継承しつつ、更に仮想記憶機能を生かすためにはリアルモードとプロテクトモードの間を往復することが必要だが、80286にはプロテクトモードからリアルモードへの復帰命令が無く、復帰にはCPUのリセット信号線を有効にするしかなかった。そのため、80286搭載機では特定のI/Oポートを操作することによりCPUのリセットパルスを発生させるハードウェアを持っており、ソフトウェアからCPUのみのリセットを行うことができた。BIOSの初期化プログラムの中で通常のハードウェアリセット(電源ONまたはリセットスイッチ押下)と前述のソフトウェアリセットを区別し、初期化方法を切り替えるという処理が必要だった。これら一連の処理はオーバーヘッドが大きいため、結果的に80286を用いたリアル/プロテクトモード間のスイッチングは非効率的なものとなった。

なお後継の80386以降では、両モード間を任意に往復できる機能や仮想86モードなどを備えていた。

リアルモードへ戻るための方法はハードウェア独自のものとなっており、具体的な手順は以下のようにハードウェアによって異なる。
IBM PC/AT[7][8]
80286を搭載したIBM PC/ATではキーボードコントローラのI/Oにリセット機能が搭載されていた。これはI/Oポート64hにあり、通例はFEhを書き込みそのbit0を0にすることでリセット動作となる。これに先立ち当該プログラムはリセット後に処理を再開するアドレスCS:IPをBIOS Data Areaの0040:0067hに保存する。それ以外のスタックの位置(SS:SP)などプログラムの動作継続に必要な情報は当該プログラム自身のデータ領域などに保存する。次にリセット後の動作を決めるシャットダウンコードをRTC用 不揮発性CMOSメモリのオフセット0FhにI/Oポート70h, 71hを使用して書き込む。5を書き込めばリアルモードへの復帰、0を書き込めば通常の電源ON、またはリセットスイッチ押下である。プロテクトモードから戻るとBIOSはBIOS Data Areaに保存したアドレスから当該プログラムの実行を再開させる。当該プログラムはあらかじめ保存しておいたスタックの位置などの情報を戻す。
NEC PC-9800シリーズ[9][10][11]
PC-9800シリーズでは1986年に登場したPC-9801VX[12]に80286とV30の両方が搭載され、このとき80286とV30を切り替えるためのリセット用I/Oポートが設けられている。該当機ではI/O 00F0hに0を出力することでCPUがV30に切り替わらずにリセットされるが、これに先立ちリセット後に処理を続行するか再起動するかを事前に設定しておく必要がある。この設定はI/O 0035hのbit5,7にあり、再起動の場合は両方のbitを1に、処理続行の場合はbit7を0に設定する[注 2]。処理を続行する場合は事前に戻りアドレスとなるCS:IPをスタックに保存(PUSH)したうえで、そのスタックの位置(SS:SP)をメモリアドレス0000:0404から0407までの4バイトに保存しておく必要がある。
HMAの活用

上記の通り80286はリアルモードとプロテクトモードを備えており、起動直後やMS-DOSでは基本的に8086や80186と互換性の高いリアルモードで動作する。

8086では1MiB(000000H - 0FFFFFH)のメモリ空間を持つが、本来16ビットのレジスタでは64KBまでのアドレス(00000H - 0FFFFH)しか表現できない。そこで16ビットレジスタを2つ用意し、まず1MB中のメモリ空間からアドレスの「原点」を10Hバイト単位で大雑把に指定し、もう1つのレジスタでそこから上位の64KBまでをアクセスできるようにしていた。したがって「原点」を示すセグメントレジスタを最大の0FFFFHに設定すれば、0FFFF0Hからさらに上位の64KBすなわち1MBを超える10FFEFHまでアドレスを表現できることになる。しかし8086ではアドレス線がA0 - A19の20本しか用意されていないため100000H - 10FFEFHのアドレスにはアクセスできず、桁あふれした部分は000000H - 0FFEFHにラップアラウンドしてアクセスすることになる。

80286ではこのようなラップアラウンドは起こらないため、インテル社のiAPX 286 Programmer's Reference Manual[1]では「もしリアルモードのプログラムがアドレス空間のラップアラウンドに依存している場合(例えばFFF0:0400 = 0000:0300)、上位アドレス4ビットをゼロにするために外部ハードウェアを使用すべきである」としている[注 3]

アドレス線を24本持つ80286を採用したシステム(PC/ATなど)では、ラップアラウンドを前提で作られたソフトウェアとの互換性を維持しつつ100000H以上のメモリにもアクセスできるように、21本目のアドレス線 (A20) の無効/有効を切り替えるハードウェアを持っていた。特定の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は16Mバイトの後ろの約64Kバイトにアクセスした場合、先頭の000000H番地にラップアラウンドにするが80386ではこのラップアラウンドは起こらない。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:61 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef