竹下世界塔の計算機よもやま話

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU 浮動小数点命令の仕分け

<<   作成日時 : 2009/11/14 23:54   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

 浮動小数点演算命令に着手する前に分類しておく。
参考:SPARC64viiifx-extensions.pdf(日本語なので) / PowerISA2.06(最新,IEEE754-2008実装) 等
IEEE754-1985,IEEE754-2008に準拠する。(IEEE754-1985は実装例多数)

IEEE 754(Wikipedia ja)
IEEE 754-2008(Wikipedia en)


★浮動小数点レジスタの構成など
・単精度浮動小数点 32bit 倍精度浮動小数点 64bit を扱う。
・レジスタは最小構成でFR0〜FR63の64本。最大でFR0〜FR511の511本。レジスタのビット幅は64bit,128bit,256bit。汎用レジスタの幅とは無関係。
・FR64以上はプリフィックス命令を付加して指定する。
・各レジスタは値が有効かどうかを示すライフフラグを持つ。(ユーザーモードからは不可視)
・各レジスタはコンディションコードを持つ。分岐命令で参照される。
・複数の浮動小数点をレジスタにセットし同時に演算できる。(浮動小数点SIMD演算) ただし単精度、倍精度の混在はしない。
 例えば、256bit幅レジスタは倍精度を4つ、または単精度を8つ同時に扱える。
・SR.fpu 浮動小数点制御レジスタを持つ。これは丸め方向や割り込みの発生条件などを指定する。

★浮動小数点ロード/ストア
・アライメントは32bit単位。ただし倍精度以上は64bitアライメントに合わせるとロード/ストアの速度が向上するように実装してもよい。128,256bitも同様。
・汎用レジスタと浮動小数点レジスタ間の直接のデータ転送はない。これは実装により汎用レジスタと浮動小数点レジスタのビット幅が違うことがあるため。ロード/ストア命令を使用する。

★丸めモード
・5つの丸めモード(近傍、偶数近傍、切り捨て、正の無限大方向、負の無限大方向)を持つ。これらはSR.fpuで定義するが、丸め方向を変えたい時に毎回SR.fpuをセットしなおすのは大変なので、各演算命令で個別に指定できる方法を考える。
・オペコードに余裕がなければ浮動小数点命令用にプリフィックス命令を解釈する必要があるかもしれない。

★比較命令
・EQ,NE,GT,GE,LT,LEでいいと思うが、これはまだ確定していない。分岐命令の分岐条件に影響する。コンディションコードを決めないといけない。

★割り込み
・IEEE754に準拠した割り込み発生条件のモードと、割り込み発生を抑止したモードを用意する。これはSR.fpuで定義する。IEEE754に準拠しないモードでは割り込みが抑止され、特にSIMD演算が高速に実行できる。
・IEEE754準拠の割り込みは5種類ある。(無効な演算、0除算、オーバーフロー、アンダーフロー、不正確) これに加えて本演算器固有の割り込みを検討する。割り込み条件は命令ごと個別に検討していかなければならない。
・漠然とだが、実装では整数パイプラインと浮動小数点パイプラインは分けようと考えている。互いのパイプラインの途中で相手側の命令が割り込みを発生した場合どう処理するか。

★定数
・汎用レジスタにおける即値に対応するものは持たない。レジスタ間の演算のみ。
・定数ロード命令を用意する。0,+1.0,-1.0,πなどをレジスタに転送できる。単精度、倍精度、SIMD対応。これにより積和(差)演算命令のみで加減乗が簡単にできる。

★除算、平方根
・除算、平方根命令は持たない。代わりに逆数を求める命令を持つ。逆数は近似値で、Newton-Raphson法で必要な精度まで計算する。

★絶対値、負数、移動(SIMDシフト命令) 例えば、SIMDデータのうち最大値、最小値のみを転送する、等
★精度変換 単精度⇔倍精度
★整数⇔浮動小数点変換
★行列計算 SIMD向き。
★超越関数 三角関数、自然対数など。x86は持っている。これは固定サイクルで済むのか値によってまちまちなのか調査が必要。
★ベクトル演算支援命令 データキャッシュのある領域を専用に確保する、など。

 これって、数値演算コプロセッサを作っているのと変わらない?

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
URL(任意)
本 文




ぼくのかんがえたさいきょうCPU 浮動小数点命令の仕分け 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる