i8087 数値演算コプロセッサ
INTEL i8087
iAPX86/88用数値演算コプロセッサユニット

NDP (Numeric Data Processor)

iAPX86/88ファミリー

DIP40P



 iAPX86/88用として設計された数値演算用のコプロセッサです。
i8087はコプロセッサという、当時聞きなれない言葉でデビューしました。
i8087が斬新だったのは、それまで数値演算用のICが外部I/Oとして設計されていたのに対し、
CPUの機能を補完するもの(コプロセッサ)として設計されたことです。
 それまでの数値演算プロセッサは(AM9511が有名)は周辺ICとして使用されたため、
システムによってサポートするソフトウェアが変わってしまいました。
そのため、高級言語からのサポートがほとんど有りませんでした。
たしか、AM9511の場合は Pascal MT+でそのサポートがあったと記憶しています。
 iAPX86/88は数値演算命令(FADD等)があった場合、i8087にその命令の処理を任せます。
i8087は数値演算を行い、結果をCPUに知らせます。
処理がメモリーに対して行われる場合は、該当するメモリーアドレスをCPUが計算し、i8087に与えます。
このようにCPUと密接に動作し、その機能を補完するオプションプロセッサをコプロセッサと呼びます。
 i8087以降、各社のCPUにはこのコプロセッサが用意されるようになりました。

 i8087は整数・実数・10進数の演算をハードウェアで行います。
扱える数値データの形式は次の通りで、主に四則演算と一部の関数があります。
短実数はC言語でいうところのfloat型、長実数はdouble型です。
 i8087が行える演算は次の通りです。
当時の集積度の関係で機能が制限されています。
そのため、三角関数や対数等の演算をする場合は、超越関数から導きださねばなりませんでした。
それでもソフトウェアで処理する場合に比べて、数百倍の処理速度が向上する事例もありました。
 三角関数や対数等の追加はi80387で行われ、現在に至ります。

 i8087は内部に80bitのレジスタを8本持ち、それを演算に使用します。
これらのレジスタはプッシュダウンのスタック構造で、処理に応じてプッシュ・プルされます。
その為、アセンブラでのプログラミングは常に現在のスタック上のデータ位置を意識しなればなりませんでした。

10MHz版の8087 右は10MHz版のi8087
サフィックスが -1は10MHz品を示します。
このページの始めのi8087は5MHz品

 i8087にはセカンドソースがありません。
当初、各社もCPUに続いてこのi8087のセカンドソースを出す計画があったようですが、
どの社も実際には販売しなかったようです。

秘宝館 伝説的CPUへ戻る。