
Motorola 68881とMotorola 68882 は、Motorola の 32 ビット68020または68030マイクロプロセッサと組み合わせて一部のコンピュータ システムで使用される浮動小数点演算ユニット(FPU)です。これらのコプロセッサは、浮動小数点演算が CPU の標準になる前に設計された外部チップです。Motorola 68881 は 1984 年に発表されました。[ 1 ] 68882 は、後に製造されたより高性能なバージョンです。

68020および68030 CPUは、独立した68881チップを念頭に置いて設計されました。これらのCPUの命令セットは「Fライン」命令を予約しており、つまり、16進数「F」で始まるすべてのオペコードは、外部コプロセッサに転送するか、例外をスローしてコンピュータのオペレーティングシステムに制御を渡す「トラップ」として使用できました。システムにFPUが存在しない場合、OSはFPUエミュレータを呼び出して68020の整数ベースのソフトウェアコードを使用して命令の同等物を実行するか、プログラムにエラーを返すか、プログラムを終了するか、クラッシュして再起動を要求するかのいずれかになります。
68881 には 8 つの 80 ビット データ レジスタ (64 ビットの仮数部と符号ビット、および 15 ビットの符号付き指数部) があります。[ 2 ]単精度浮動小数点、倍精度浮動小数点、拡張精度浮動小数点、8 ビット、16 ビット、32 ビットの整数、および浮動小数点バイナリコーディング 10 進数形式を含む 7 種類の数値表現モードが可能です。バイナリ浮動小数点形式は、IEEE 754浮動小数点標準で定義されています。浮動小数点演算専用に設計されており、汎用 CPU ではありません。たとえば、命令でアドレス計算が必要な場合、68881 が制御を引き継ぐ前にメイン CPU がそれらを処理します。
CPUとFPUの組み合わせは、両方が同時に動作できるように設計されています。CPUが68881命令に遭遇すると、その命令に必要なすべてのオペランドをFPUに渡し、その後FPUはCPUを解放して次の命令の実行に進みます。
68882 は、パイプライン処理が改善され、最終的にはより高いクロック速度で利用可能になった 68881 の改良版です。[ 3 ] [ 4 ]命令セットは全く同じです。モトローラは、マーケティング資料の中で、同じクロック速度で 68881 よりも一部の命令を 40% 高速に実行できると主張していますが、一般的なパフォーマンスの向上はそれほど大きくありません。
68882は68881とピン互換性があり、ほとんどのシステムで直接交換可能です。ソフトウェア面での最も重要な非互換性は、68882がより大きなFSAVEステートフレームを使用している点です。そのため、UNIXやその他のプリエンプティブマルチタスクOSでは、より多くの領域を割り当てるように変更する必要がありました。
68881 または 68882 は、Sun Microsystems Sun-3ワークステーション、IBM RT PCワークステーション、Macintosh IIファミリー、NeXT Computer、X68000、Amiga 3000、Convergent Technologies MightyFrame、Atari Mega STE、TT、およびFalconで使用されました。CMI PAMC-500 [ 5 ]を含む一部のサードパーティ製 Amiga および Atari 製品では、 68881 または 68882 が68000のメモリマップド周辺機器として使用されました。
これらの統計はcomp.sys.m68k FAQから引用したものです。[ 3 ] 16MHzおよび20MHzの68882については統計は記載されていません が、これらのチップは実際に製造されました。
Motorola 68040以降、浮動小数点演算機能はCPU自体に組み込まれるようになった。