2018-08-27 17:59 — asano
32ビットの時代になると32ビットの四則演算が一命令で実行できるのは当然になり、浮動小数点演算についても一般的になってきます。
Intel 80386ではレジスタが32ビットに拡張され、80486では浮動小数点演算機能も内蔵されます。廉価版として浮動小数点演算を省いた486SXというものありましたが主流にはなっていません。
MotorolaはMC68020で外部バスも32ビットになりましたが、このシリーズは最初から32ビット演算命令は持っていました。それよりもMC68020から外部の浮動小数点演算プロセッサであるMC68881に対応したことの方が大きいでしょう。
MM57109とは違った意味で関数電卓的に使えるICです。
MC68030+MC68882を経て、MC68040で遂に浮動小数点演算機能を内蔵するに至ります。四則演算以外の多くが削除されソフトウェアによる処理になってしまいましたが、トータルのパフォーマンスは向上していますし、通常はライブラリ等に任せておけばよいのであまり問題にはなりませんでした。
これまでオプションだった浮動小数点演算命令が標準装備になったことは大きな変化です。
- ライブラリ等の中でオプションの有無によって専用命令を使うかソフトウェア処理するか切り替える
- 専用命令を使うが、オプションが装備されていない時に発生する例外処理の中でエミュレーションする
といった処理が不要になり、また対応ソフトウェアが増えたからです。
同じ頃に普及し始めたRISCプロセッサでも状況は似ていたようですね。
MIPS R3000にはR3010、AMD Am29000にはAm29027という専用の浮動小数点プロセッサがありました。Motorola MC88000やIntel i860では内蔵しています。
いずれも(少なくとも汎用計算機として使われるものでは)集積度の向上とともに内蔵される方向でした。
ところが64ビットになると流れが少し変わってきます。
これまで整数演算はビット長が足りなくてソフトウェアで繰り返していたのを繰り返しを減らす為にビットを増やしてきました。浮動小数点演算もソフトウェア処理から専用命令によるハードウェア処理に移行してきました。その結果32ビット整数や64ビット浮動小数点演算は1命令で実行できるようになりました。
さて次はどこへ向かうのでしょう? 128ビット整数でしょうか? 128ビット浮動小数点数でしょうか?
第1回で初期の計算機はアプリケーションが必要とする幅で作られたのではないか、と書きました。すでにそれは達成しています。これ以上ビット数を増やしてもあまり恩恵はなさそうです。
一方で精度はいらないから多数の演算を行ないたいという需要が出てきました。
64ビットレジスタを16ビット×4に分割して1命令で4つの演算を実行するといった方向に進むのでしょうね。
コメントを追加