ICDロゴ

8087

【ハチマル・ハチナナ】

最終更新日: 1999/07/14

 米Intel社の開発した、8086/8088用の浮動小数点演算用コプロセッサ。

 8086/8088は、組み込みの浮動小数点演算機能は持っていなかったが、この8087をシステムに装着することにより、約70個の新たな浮動小数点演算命令が利用可能になる。ソフトウェア的な処理に比べると、50〜100倍程度高速に処理することができる。

 8087で利用可能なデータ型としては、32bitの短精度、64bitの倍精度、80bitの拡張精度の各浮動小数点型、16bit、32bit、64bitの各整数型、およびパックド10進数型があり(10進数形式はメモリ中に格納されている場合にのみ使える。コプロセッサへロードすると内部形式に変換される)、さらに、数値計算用途に向いたNaN(Not a Number:非数。不正な演算結果のまま演算が進むのを検出するための特別な数値)や例外検出、丸め処理などの機能を持っている。また命令としては、加減乗除や比較、平方根だけではなく、剰余や対数、指数関数、三角関数(を求めるための補助命令)など、非常に高機能な命令も持っている。

 ソフトウェアアーキテクチャ的にみると、8087は8086のESC命令(Escape命令。コプロセッサに制御を渡す命令)を使って機能を拡張している。そのため、8086で使える他の命令とまったく同じように使うことができ、浮動小数点演算を行うために特別なルーチンを呼び出したり、特別なポートへアクセスしたりする必要はない。またアドレッシングモードも8086の通常のものがまったく同じように使える。一般的なオペレーティングシステムでは、浮動小数点演算コプロセッサが装備されていない場合には、ESC命令をトラップして、ソフトウェアで代替処理を行うようにしている。

 8087は80bitの浮動小数点レジスタを8つ持っているが、スタック形式でアクセスするという、スタックアークテクチャを採用している。このアーキテクチャでは例えば、スタックトップの2つのレジスタを加算して、結果をスタックトップに置く、というふうに演算を行う。この方式は、演算のオペランドを指定するためのビットパターンが不要なので命令コードが小さくなるというメリットがあるが、その分レジスタの使い方に制約が多くなり、さらに8つしかレジスタがないということもあって、どうしてもメモリアクセスが増えてしまう。その分、他社の浮動小数点演算プロセッサなどと比べると、性能は若干低くなる(これはコプロセッサが内蔵されるようになった現在のx86系アーキテクチャでも同様)。

 8087は8086/8088用のコプロセッサであるが、後継のチップとして、80186/80188用の80187、80286用の80287、80386用の80387などがある。i486以降では、プロセス技術の進歩によって搭載できるトランジスタ数が増えたので、浮動小数点演算機能はすべてCPU内に内蔵されている(ただし486SXは、コストダウンのために省略されているので、必要ならば487SXをシステムに追加する必要がある)。これらのコプロセッサ(およびi486以降の内蔵浮動小数点演算機能)は、基本的にすべて互換性が維持されている。

Copyright (C) 2000-2007 Digital Advantage Corp.

関連用語

アイティメディアの提供サービス

キャリアアップ