モトローラ 68881 FPU
MC68881 (68881)は68020 ないし68030 用FPU である。コンピュータにこのチップを加えることはコンピュータのコストを実質的に押し上げることになるが、これにより浮動小数点数値演算を高速に処理できる。当時、このチップは科学演算、数学演算に対して大きな役割を果たした。
概要
68020と68030は単独の68881チップを使うという前提で設計された。この命令セットは予約済みの"F-line"命令を使った。16進数のFで始まっているすべての命令コード は、形式上は内部割込みを発生する「トラップ命令」である。通常トラップ命令はオペレーティングシステム (OS) を制御するのに用いられている。もし、FPUである68881がシステム上に存在したならば、MPUは内部割込みを発生するのではなく、FPUにより命令を実行する。FPUが無ければMPUは内部割込みを発生し、OSはそれをとらえて、例外処理 で整数演算命令で作られたFPUエミュレータ (英語版 ) を呼び出すか、プログラムをエラーで中断する。
アーキテクチャ
68881には、8つの96ビット長データレジスタ[ 注 1] があり、80ビット拡張精度形式など7種類の数値表現、すなわちIEEE浮動小数点標準「ANSI-IEEE 754-1985 」として定義される単精度 、倍精度 、そして拡張倍精度 などの浮動小数点数 を扱う。68881は特に浮動小数点演算に特化しており、汎用CPUとして設計されていない。例えば、命令がアドレス計算を行うときは、68881の制御を行う前にメインCPUが計算する。
CPU/FPUのペアはこのように同時に実行できるように設計されている。CPUが68881の命令を受けると、CPUはFPUにその命令に必要なオペランドをすべて引き渡す。次にFPUはCPUをリリースし、CPUは次の命令を実行する。
MC68882
モトローラ 68882 FPU
MC68882 (68882) は68881の改良バージョンで、パイプラインの改善や高クロック化が行われている。命令セットは68881と同一であり、なおかつピン・コンパチブルとなっている。一方、FSAVE命令による退避情報が32バイト増加し(アイドル・フレーム、ビジー・フレーム共)、演算例外処理時のタイミング制約条件が厳しくなっている。アイドル・フレームは、68881の28バイトに対し68882が60バイト、ビジー・フレームは、68881の184バイトに対し68882が216バイトと増加しているため、FSAVE命令で退避されたスタック上の情報を参照する例外処理ハンドラ作成時、オフセット・アドレスに注意が必要となる。MC68882使用時は、同一例外によって例外処理ハンドラが繰り返し実行されてしまう事態を回避するため、例外処理ハンドラでFSAVE命令を実行するタイミング、FRESTORE命令を実行するタイミング、BIUフラグ(ビット31~0)のビット27 EXC_PENDビットを1にセットするタイミングなどが細かく指定されている。モトローラは、同じクロック速度で同じ命令を実行すると68881より40%以上速くなるとうたっていたが、[誰によって? ]
通常のパフォーマンスにはまったく反映されなかった [要出典 ] 。
実装例
68881ないし68882FPUが搭載されたコンピュータとしては、サン・マイクロシステムズ のSun-3 、Apple Computer のMacintosh II や[ 6] 、コモドール のAmiga 3000 などがある。Amigaのサードパーティー の中には、68000にメモリマップされた周辺機器として、68881および68882を使ったものもある。
なお後続ファミリのMC68040 プロセッサは、FPUを内蔵したものとして開発された。68881のほとんどの命令と数値表現モードはハードウェアでサポートされていたが、一部サポートされないものもあった。これらはソフトウェアパッケージでエミュレーションを行うことでサポートした。
機能表
68881
155,000 トランジスタ
16MHz バージョン 160 KFLOPS
20MHz バージョン 192 KFLOPS
25MHz バージョン 240 KFLOPS
68882
176,000 トランジスタ
25MHz バージョン 264 KFLOPS
33MHz バージョン 352 KFLOPS
40MHz バージョン 422 KFLOPS
50MHz バージョン 528 KFLOPS
68040
25MHz FPU 3.500 MFLOPS
33MHz FPU 4.662 MFLOPS
40MHz FPU 5.600 MFLOPS
これらの表はcomp.sys.m68k FAQ から引用したものである。68882の16MHzと20MHzについては製造はされたが、リストにはない。
脚注
^ L.Hennessy, John; A.Patterson, David (1994). Computer Organization and Design: The Hardware/Software Interface . Morgan Kaufmann Publishers. p. 255-256. ISBN 1-55860-281-X
注釈
参考文献
外部リンク