「MC68881」の版間の差分
InTheCastle (会話 | 投稿記録) →実装例: 68881搭載のコンピュータについて、Sun-3 と Macintosh II があることの出典(Computer Organization and Design: The Hardware/Software Interface)を追加。 |
m Bot作業依頼: Apple関連記事の改名に伴うリンク修正依頼 (Apple|Apple Computer) - log |
||
18行目: | 18行目: | ||
==実装例== |
==実装例== |
||
68881ないし68882FPUが搭載されたコンピュータとしては、[[サン・マイクロシステムズ]]の[[Sun-3]]、[[ |
68881ないし68882FPUが搭載されたコンピュータとしては、[[サン・マイクロシステムズ]]の[[Sun-3]]、[[Apple|Apple Computer]]の[[Macintosh|Macintosh II]]や<ref>{{cite book |
||
|title=Computer Organization and Design: The Hardware/Software Interface |
|title=Computer Organization and Design: The Hardware/Software Interface |
||
|last1=L.Hennessy |
|last1=L.Hennessy |
2021年5月20日 (木) 10:33時点における版
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
この節は言葉を濁した曖昧な記述になっています。 |
MC68882 (68882) は68881の改良バージョンで、パイプラインの改善や高クロック化が行われている。命令セットは68881と同一であり、なおかつピン・コンパチブルとなっている。モトローラは、同じクロック速度で同じ命令を実行すると68881より40%以上速くなるとうたっていたが、[誰によって?] 通常のパフォーマンスにはまったく反映されなかった[要出典]。
実装例
68881ないし68882FPUが搭載されたコンピュータとしては、サン・マイクロシステムズのSun-3、Apple ComputerのMacintosh IIや[1]、コモドールの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
注釈
- ^ William Ford, William R. Topp (1997-11-07). “15.5 Floating-Point Coprocessor” (英語). Assembly language and systems programming for the M68000 family (2nd. ed.). Jones and Bartlett Publishers. pp. 830. ISBN 9780763703578 2011年4月12日閲覧。96ビットパック10進数実数形式が演算可能である。
参考文献
- Motorola Inc.『MC68881浮動小数点演算コプロセッサユーザーズ・マニュアル』電波新聞社、1988年6月。ISBN 4885541506。
- Motorola Inc. (1989) (英語). MC68881/MC68882 floating-point coprocessor user's manual (2nd ed.). Prentice Hall. ISBN 0135670098