● Intel x87 FPU
Intel x87 浮動小数点ユニット(Floating Point Unit:FPU)は、Intel 系 CPU に内蔵されている演算機構の一つで、 浮動小数点演算をハードウエアで処理します。
x87 FPU はかつて、8087 〜 80487 浮動小数点コプロセッサ(co - processor)という、CPU とは別のプロセッサユニットでした。名前の「x87」は、それが由来となっています。オプションではありましたが、浮動小数点コプロセッサを使用すると、ソフトウエアエミュレーションよりも高速に浮動小数点演算を行う事ができました。
486 DX と Pentium 以降で、FPU が CPU に内蔵される事になったため、やがて浮動小数点コプロセッサ自体は使われなくなりましたが、今では Intel 系 CPU を使用している PC は全て、FPU を利用する事ができるようになっています。
最近のものは多少機能が追加されていますが、基本的な機能は初期とほとんど変わっていません。
CPU とは別のプロセッサだった事の名残と思われる仕様が、x87 FPU には散見されます。
x87 FPU は IA-32 アーキティクチャ内で独立しており、基本プロセッサやその他のユニットが持つレジスタを、同一パッケージ内にあるにも関わらず直接利用し合う事ができません。多くの場合、他のレジスタとのデータ交換はメモリを介して行います。また、命令実行ユニットが基本プロセッサとは別になっているため、基本プロセッサの整数演算と、FPU の浮動小数点演算を並列して行う事ができます。
演算精度
x87 FPU は 32 、64 、80 bit の演算を行う事ができます(仮数部精度 24 、53 、64 bit)。floatex.dll では、80 bit の演算精度を使用します。
SSE ユニットでも 64 bit 精度の浮動小数点演算を行えますが、80 bit 精度の演算を行うには、x87 FPU を使用する必要があります。