現在地

パーソナルなコンピュータの数値演算事情 (第5回:32ビット・そして…)


カテゴリー:

32ビットの時代になると32ビットの四則演算が一命令で実行できるのは当然になり、浮動小数点演算についても一般的になってきます。

Intel 80386ではレジスタが32ビットに拡張され、80486では浮動小数点演算機能も内蔵されます。廉価版として浮動小数点演算を省いた486SXというものありましたが主流にはなっていません。

MotorolaはMC68020で外部バスも32ビットになりましたが、このシリーズは最初から32ビット演算命令は持っていました。それよりもMC68020から外部の浮動小数点演算プロセッサであるMC68881に対応したことの方が大きいでしょう。

MC68881は対応関数の数でも引数への制限の少なさでもダントツで個人的には好きなプロセッサです。
MM57109とは違った意味で関数電卓的に使えるICです。

MC68030+MC68882を経て、MC68040で遂に浮動小数点演算機能を内蔵するに至ります。四則演算以外の多くが削除されソフトウェアによる処理になってしまいましたが、トータルのパフォーマンスは向上していますし、通常はライブラリ等に任せておけばよいのであまり問題にはなりませんでした。

これまでオプションだった浮動小数点演算命令が標準装備になったことは大きな変化です。

  • ライブラリ等の中でオプションの有無によって専用命令を使うかソフトウェア処理するか切り替える
  • 専用命令を使うが、オプションが装備されていない時に発生する例外処理の中でエミュレーションする

といった処理が不要になり、また対応ソフトウェアが増えたからです。

同じ頃に普及し始めたRISCプロセッサでも状況は似ていたようですね。

MIPS R3000にはR3010、AMD Am29000にはAm29027という専用の浮動小数点プロセッサがありました。Motorola MC88000やIntel i860では内蔵しています。

SPARCは命令セットでしかないので各社実装が異なるので型番をあげることはできません。

いずれも(少なくとも汎用計算機として使われるものでは)集積度の向上とともに内蔵される方向でした。

ところが64ビットになると流れが少し変わってきます。

これまで整数演算はビット長が足りなくてソフトウェアで繰り返していたのを繰り返しを減らす為にビットを増やしてきました。浮動小数点演算もソフトウェア処理から専用命令によるハードウェア処理に移行してきました。その結果32ビット整数や64ビット浮動小数点演算は1命令で実行できるようになりました。

さて次はどこへ向かうのでしょう? 128ビット整数でしょうか? 128ビット浮動小数点数でしょうか?

第1回で初期の計算機はアプリケーションが必要とする幅で作られたのではないか、と書きました。すでにそれは達成しています。これ以上ビット数を増やしてもあまり恩恵はなさそうです。

一方で精度はいらないから多数の演算を行ないたいという需要が出てきました。

64ビットレジスタを16ビット×4に分割して1命令で4つの演算を実行するといった方向に進むのでしょうね。

参考文献・関連図書: 
『MC68881ユーザーズ・マニュアル』電波新聞社.
南宗宏(1986)『32ビットマイクロプロセッサ入門』CQ出版社.
大貫徹(1991)『RISCプロセッサ入門』CQ出版社.

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
※ コメントは原則公開です。個別のご相談などは「ご意見・ご要望」からお願いします。