X87

テクノロジー



X87, by Wikipedia https://ja.wikipedia.org/wiki?curid=1366150 / CC BY SA 3.0

#インテルのマイクロプロセッサ
x87はx86アーキテクチャー命令セットのうち浮動小数点数関係のサブセットのことである。
もともとはx86系CPUと協調して動作するオプションの浮動小数点数コプロセッサ (FPU) でサポートされる8086命令セットの拡張機能であった。
これらのマイクロチップは後ろに”87″という名前が付いていた。
これはNPX (Numeric Processor Extension) としても知られる。
基本命令セットに対する他の拡張と同様、x87命令は作業プログラムの構築を厳重には必要とせず、共通の数値処理のハードウェアおよびマイクロコードの実装を提供し、これらの処理を機械語ルーチンで合わせるよりもはるかに高速に行うことができる。
x87命令セットは加算、減算、比較の基本的な浮動小数点演算だけでなく、タンジェント関数やその逆関数などのより複雑な数値演算を含む。
Intel 80486以降のほとんどのx86プロセッサーはこれらのx87命令をメインCPUに含んでいるが、この用語は今でも命令セットの一部を指すのに用いられることがある。
PCにおいてx87命令が標準になる前、コンパイラやプログラマは浮動小数点演算を実行するためにかなり遅いライブラリコールを使用していた。
この手法は(低価格の)組み込みシステムでは依然一般的である。
Intel 8087またはそれ以降のモデルと互換性があるFPUを設計または製造した企業を掲げる。
8087はインテルによって設計された最初の16ビットプロセッサ用数値演算コプロセッサ(インテルでの呼称はNDP; Numeric Data Processor)。
これはIntel 8088または8086とセットで組まれていた。
以下のような演算が可能である。
80187(80C187)はIntel 80186 CPU用の数値演算コプロセッサ。
80188は8ビットデータバスを持っているため8087しか使用できない。
80187は80186や80188と同時期には登場せず、80287や80387の後に登場した。
8087と同じメインプロセッサへのインターフェイスを持っているにもかかわらず、コアは80387のもので、IEEE 754に完全に準拠するだけでなく全ての80387拡張命令を実行することができた。
6MHz版Intel 80287 Intel 80287は、80286のために用意されていた数値演算コプロセッサ。
8086同様80286は整数計算の命令しか備えていないため、80286だけで浮動小数点演算を行うには独自にライブラリを用意する必要があった。
80287を80286の搭載されたコンピュータにセットすると、浮動小数点計算の命令を使うことができるようになる。
また、互換性のため、アプリケーションからはNDPがあるように見せかけて、実際は割り込みルーチン内に浮動小数点演算ライブラリを組み込む手段も用意されていた。
しかし、この方法は非常に遅いため、あまり使われる事は無かった。
この手段を使わず、浮動小数点演算命令をエミュレーションライブラリにより実行していた場合は、NDPを利用するためにはアプリケーションソフトウェア自体も再コンパイルが必要であった。
80287は、当初、協調して動作する80286と同一クロック周波数で同期して動作する見込みが立たなかったため、厳密な意味でのコプロセッサではなく、単なる入出力プロセッサとして設計された。
このため、逆に、より高速なクロックで動作させる事もできた。
また、このことにより、あまり意味はないがソフトウェア及び外部回路の工夫により、1つの80286に複数の80287を接続したり、他の種類のCPU、例えば386や、Vシリーズなどに80287を接続する事もできた。
逆に、80286に、他の種類のNDPを接続する事も可能であった。
NECのPC-9801VXなど、80286を搭載したコンピュータには、80287を刺すことができるソケットが用意されていた。
Intel 80287XL 後にIEEE 754への対応度を改善した80287XLが登場した。
Intel 80387は、インテルの32ビットCPUである80386用の数値演算コプロセッサ。
インテル最初のIEEE 754対応品となった(8087、80287はIEEE 754との間に非互換の部分を有する)。
原理的にはこれ以前のプロセッサである8087や80287と同じである。
80386を搭載したコンピュータには、80387を挿すことができる…

Comments

Copied title and URL