Intel 8087: 16ビットCPU時代の数値演算革命
Intel 8087は、1980年代のコンピューティングにおいて画期的な存在でした。
16ビットCPUである
Intel 8086および8088向けの、世界初のIntel製数値演算コプロセッサとして登場し、それまで整数演算に限定されていたこれらの
CPUに、浮動小数点演算能力をもたらしました。このコプロセッサの搭載により、プログラムの処理速度は、その内容にもよりますが、最大で5倍近く向上したとされています。
8086の限界と8087の役割
8086/8088は、浮動小数点演算命令を備えていませんでした。そのため、浮動小数点演算を行うには、ソフトウェアで複雑な処理を行う必要があり、処理速度は著しく低下していました。8087はこの問題を解決するために開発されました。8087は、
IEEE 754規格に準拠した浮動小数点演算命令セットを備えており、8086/8088と協調動作することで、あたかも
CPUが浮動小数点演算を直接実行しているかのような効率的な処理を実現しました。
8086と8087の協調動作
8087は、8086/8088と同じバス上に接続され、常時8086/8088が実行する命令を監視しています。8086/8088が浮動小数点演算命令(ESC命令)を検出すると、8087はそれに対応する命令とオペランドを読み込み、演算処理を実行します。8087は68個もの新しい浮動小数点演算命令を提供しました。これには加算命令(FADD)、乗算命令(FMUL)などが含まれます。
8087は8086/8088と並列に動作できますが、8087の処理が完了するまで待たなければ次の命令を実行できないため、8086/8088には、8087の処理完了を待つWAIT命令が用意されていました。
8087は、一般的な汎用レジスタとは異なり、8個の80ビット浮動小数点レジスタスタックを採用した
スタックマシンでした。演算命令はスタックトップの値を操作し、結果もスタックトップに格納されます。このスタックベースのアーキテクチャは、特定のタイプの演算において効率的な処理を実現しました。
データ型と内部演算
8087は、32ビットと64ビットの浮動小数点データ型に加え、80ビットの内部演算データ型を使用していました。これは、演算精度を向上させるためです。また、18桁のBCDデータ型や16、32、64ビットの整数型もサポートしていました。
x87シリーズとその後
8087は、その後80287、80387、80487へと進化を続けました。しかし、80486DX以降の
CPUでは、浮動小数点演算ユニットが
CPU本体に統合されるようになり、8087のような独立したコプロセッサは不要となりました。それでも、x87命令セットは互換性の維持のため、現代の
CPUでもサポートされています。ただし、AMD64アーキテクチャでは、SSE/SSE2命令セットが浮動小数点演算の基本となっています。
普及と影響
NEC PC-9801シリーズや
IBM PC互換機など、多くの8086/8088ベースの
コンピュータは、8087を搭載できるよう設計されていました。8087は、当時の科学技術計算や高度なアプリケーション開発に大きな貢献を果たしました。その設計思想や技術は、今日の
CPUアーキテクチャにも大きな影響を与えていると言えます。
参考文献
Intel, 1989 Intel Microprocessor and Peripheral Handbook_Vol_1, 1989,
ISBN 1-55512-041-5
Intel, 80387 Programmers Reference Manual 1987, 1987,
ISBN 1-55512-057-1
* 田辺皓正編著『マイクロ
コンピュータシリーズ15 8086マイクロ
コンピュータ』丸善株式会社、1983年4月30日