現在地

浮動小数点プロセッサ


テーマ:

カテゴリー:

今ではPCのCPUに浮動小数点プロセッサを内蔵しているのは当たり前ですが、以前は必要な人のみが追加する(かなり高価な)オプションでした。

Intel C8231A
これはIntelのC8231A、8080時代の浮動小数点プロセッサです。CPUの命令を拡張するのではなくI/Oデバイスとして接続して値のやり取りをするタイプです。
開発したのはIntelではなくAMDでAm9511というもの、これはそのセカンドソースです。

Intel C8231A 裏側
裏側にもマーキングがあります。

C8231A(Am9511A)は16/32ビットの整数と32ビットの浮動小数点数をサポートし、加減乗除・平方根・三角関数・ログ等の演算が可能でした。IEEE754制定前の開発なので互換性はありません。
AMDからは64ビット浮動小数点に対応する代わりに超越関数をサポートしないAm9512というデバイスもありました。Intelがこちらのセカンドソーサになっていたのかはわかりません。

Intel D80287
IntelのD80287-6、80286用のもので接続すると命令が拡張されます。

私が浮動小数点プロセッサの存在を初めて知ったのはPC-9801のオプションとしてです。確かPC-9806だったか、8087のICそのもので自分でソケットに実装する必要がありました。5万円以上する高価なもので、よく雑誌の読者コーナーとかに「挿す時に足を折るんじゃないかとヒヤヒヤした」話が載っていたものです。折っちゃった話もあったかもしれません。

8086/8088には8087、80286にはこの80287、80386には80387 (80386SXには80387SX)とCPUの進歩とともに代替わりしました。80486では浮動小数点ユニット(FPU)を内蔵した80486DXが現れましたが、非内蔵の80486SXも廉価版として存在してオプション用の80487も存在します。
PentiumからはすべてFPU内蔵となったので、専用の浮動小数点プロセッサというものは存在しません。

ちなみに80387/80387SXからIEEE754に完全互換となりました。

Motorola MC68881
以前にも紹介したMotorolaのMC68881RC16B、MC68020用に用意されたものです。MPUとのやり取りは特殊なI/O (特殊と言ってもアドレス空間が別になっているだけ)なので、他のプロセッサに接続することもできます。実際、MC68kボードではMC68000やMC68010に接続しています。これらのプロセッサは上記の「特殊なI/O」はサポートしていませんので通常のアドレス空間に配置する必要がありますし、命令も拡張されません。不正命令のエクセプションでエミュレートすれば命令の拡張もできるかもしれませんが。
もちろんMC68020ならそのままで命令が拡張されます。

Intelの80287, 80387も同様の仕組みのようで、I/Oとして他のプロセッサに繋げられるらしいです。8087は8086/8088と密接に繋がっていて、80487は80486SXを丸ごと乗っ取る方式のため、どちらも他プロセッサのI/Oとしては使えません。

その後改良版のMC68882が用意されました。MC68040ではFPUが内蔵されたので、Motorola系ではMC68882が最後ですね。
このMC68881は登場が遅かったためか最初からIEEE754互換です。

Weitek 3170
これはSparcプロセッサ用のWeitek 3170です。以前SPARC CPU-1E/4で紹介したものです。
このWeitekはSparc以外にもIntel 80286,80386用やMotorola MC68000用などを用意していました。

参考文献・関連図書: 
8231Aデータシート, Intel.
80287データシート, Intel.
『MC68881ユーザーズ・マニュアル』電波新聞社.
Abacus 3170データシート, Weitek.
広告: 

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。