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

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU ALU命令(特に浮動小数点命令)

<<   作成日時 : 2009/08/31 19:28   >>

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

 前回コメントの指摘を受けて、レジスタのライフフラグは入れることにした。命令フォーマットに余裕があるのでできそうだ。
 また、浮動小数点の4オペランド命令(積和演算)を定義するのに苦労したので、苦し紛れにFR2=-1.0レジスタとした。

・ALU命令の基本形
0xxfsnnnnnnnnnR22222R11111Rddddd
[31] ..0 プレフィックス命令でない
[30:29] xx .. 2ビット 演算/LDST/分岐/その他(まだ決めていない)
[28] f .. 浮動小数点命令 = 0
[27] s .. SIMD命令
[26:18] .. nnnnnnnnn 整数演算命令
[17:12] .. GRs2
[11:6] .. GRs1
[5:0] .. GRd

・浮動小数点命令
0xxfsDTnF33333F22222F11111Fddddd
[28] f .. 浮動小数点命令 = 1
[27] s .. SIMD命令
[26] D .. 0 単精度 1 倍精度
[25] T .. 浮動小数点4オペランド命令 = 1
[24] n .. 演算命令
 0 FMADD Fd= F1×F2+F3
 1 FMSUB Fd= F1×F2ーF3

F2がFR1(1レジスタ)だと… Fd=F1+F3 or F1-F3
F2がFR2(-1レジスタ)だと… Fd=-F1+F3 or -F1-F3
F3がFR0(ゼロレジスタ)だと… Fd=F1×F2
F2がFR1(1レジスタ),F3がFR0(ゼロレジスタ)だと… Fd=F1
F2がFR2(-1レジスタ),F3がFR0(ゼロレジスタ)だと… Fd=-F1
※他にも組み合わせあり
これらレジスタの指定は、実際に積和演算器で実行するのではなく、積和演算器内部でバイパスを指示する。

[23:18] .. FRs3
[17:12] .. FRs2
[11:6] .. FRs1
[5:0] .. FRd

s .. SIMD命令が1だと、例えば128ビット幅レジスタで倍精度演算ならレジスタの上位64ビット、下位64ビットをそれぞれ計算する。
→コンディションコードが1つの状態につき最大256ビット長レジスタ÷単精度32ビット=8組必要。

上記4オペランド命令だけで和、差、積、積和、比較はできてしまう。

0xxfsDTnnnnnnnF22222F11111Fddddd
[28] f .. 浮動小数点命令 = 1
[27] s .. SIMD命令
[26] D .. 0 単精度 1 倍精度
[25] T .. 浮動小数点4オペランド命令 = 0
[24:18] nnnnnnn .. 浮動小数点演算命令
[17:12] .. FRs2
[11:6] .. FRs1
[5:0] .. FRd

 浮動小数点3オペランド命令に即値の設定はない。ライフフラグもどこかに入れる。
 追加したい命令は以下。詳細は未定。なんか、2オペランドで済んでしまうものばかりだけど。
  浮動小数点シフト・マスク命令(SIMD演算結果の抽出用)
  整数→浮動小数点変換、浮動小数点→整数変換、精度変換
  絶対値、NEG、逆数、平方根逆数
  除算、平方根、超越関数も入れる余地はあるが、未実装の場合はトラップ発生、エミュレートする。命令の定義だけしておく。
  四倍精度演算も定義可能か?

□浮動小数点演算の演算後の条件、例外、丸めなどについて調査が必要。

・そろそろステータス・レジスタ(PSW)の定義をしないと。
・条件分岐に関する追記
 コンディション=4ビット、浮動小数点1ビットと定義していたが、まとめて5ビット=32条件で、そのうち24個を整数、8個を浮動小数点の条件に割当てるつもり。(整数飽和演算を入れたくなったから)

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(2件)

内 容 ニックネーム/日時
>上記4オペランド命令だけで和、差、積、積和、比較はできてしまう。

IEEE浮動小数点数の比較は、固定小数とは事情が違う (無限大やNaNがあることに起因する) ので単純にはいかないと思います。命令が「差」として指定されたときだけ条件コードが意味をなすようにすれば可能だと思いますが、それ以外の演算で条件コードに意味を付けるのが大変かと。
m.ukai
2009/09/01 17:27
ご指摘ありがとうございます。整数演算とは違い差で比較するだけでは足りないのですね。比較命令は別に割当て、浮動小数点の演算について勉強してみます。
houmei
2009/09/01 18:23

コメントする help

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




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