2021:算術演算 浮動小数点

 整数に加えて数値の重要な表現に浮動小数点形式がある。ビット列を指数部と仮数部に分けて実数の範囲を扱う。最も普及している表現形式はIEEE754で定義されているもの。昨今は機械学習のためのより少ないビット数で実数を表現する形式が存在する。加減乗除のうち除算は実装せずNewton-Raphson法で求めるものもあった(Alpha,IA-64)。現在はより大きい回路規模も搭載できるので除算器も持っている。

https://keisanki.at.webry.info/200911/article_3.html

 マイクロプロセッサでは浮動小数点演算用のコプロセッサとしてインテルi8087、モトローラMC68881などがあった。その他にも汎用のコプロセッサがWEITEKなどから出ていた。浮動小数点演算用のレジスタは汎用レジスタとは別に存在し、整数演算を実行するパイプラインとは独立して浮動小数点演算は行われる。浮動小数点演算は正規化した後に指数部/仮数部の演算が行われるため、整数演算とは異なり複数サイクルかかる。
 浮動小数点演算器と浮動小数点レジスタが独立しているため、メモリに対するロードストアも浮動小数点レジスタ対象のものが別に存在する。また、浮動小数点形式から整数へ変換するためには各ビット幅(精度)に対応した変換命令が必要になる。このとき、メモリを経由すれば仕組みは簡単になるが性能のことを考えると汎用レジスタと浮動小数点レジスタ間の経路を用意しなければならない。
 IEEE754対応のためには浮動小数点演算を制御し、演算結果の状態を表示するフラグが必要になる。丸め指示など、プログラム実行中にモードの変更を伴う動作が起こり得る。
 MC88000は汎用レジスタと浮動小数点レジスタが兼用だった。このせいでレジスタファイル周辺に演算器が集中することになりハードウエア上の制約(実行速度など)が生じた。現在ならば多数の物理レジスタを持ってソフトから見える論理レジスタの陰に隠すことができる。浮動小数点演算は内部で浮動小数点演算用のレジスタファイルで行い、整数とのやり取りをする時に1サイクルかけて汎用レジスタと相互に転送できればすべて汎用レジスタの番号で扱うことができる。内部の実装はどうあれ、共通のレジスタで浮動小数点と整数演算を行うのはインテルのSSEやAVXで存在する。

以上から考えた必要なもの:
・IEEE754準拠とフラグの扱い
・機械学習のための表現形式への対応
・浮動小数点と整数の形式変換
・浮動小数点レジスタと汎用レジスタ間のデータ転送

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント