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

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU 条件分岐/転送命令

<<   作成日時 : 2009/08/26 20:11   >>

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

 分岐命令に関する調査の結果、分岐条件は4ビットあれば充分であることがわかった。
 条件フラグはC(Carry),Z(Zero),N(Negative),V(Overflow)を汎用レジスタのすべてに持たせ、演算命令を実行するごとにデスティネーションレジスタの条件フラグが更新される。
(浮動小数点レジスタの条件フラグについてはまだ考えていない)これらのフラグはユーザーモードからは見えない。特権モードからはアクセスできる。
比較命令として使う例:
 SUB GR1,GR2,GR0 .. GR0の条件フラグGcc0が更新され、GR1ーGR2の結果は捨てられる。
しかしこれだとGcc0に条件判断が集中しそう。分散するにはその他の汎用レジスタを使い、結果は捨てる。
 SUB GR1,GR2,GR63 .. GR63の条件フラグGcc63が更新され、GR1ーGR2の結果はGR63に入る。ユーザー側で結果は無視する。
☆SH-3/4やIA-64のような比較命令の結果を特定のビットに保存する方法にすれば、レジスタと条件フラグの関連付けを切り離すことができるんだがなあ。どうしようか。とりあえず現行の考えのまま進めてみる。

・分岐命令のフォーマット:1文字1ビット分で32ビット命令長を表している。

0xxcondfmhh---Rccccc------------

[31] ..0 プレフィックス命令でない
[30:29] xx .. 2ビット 演算/LDST/分岐/その他(まだ決めていない)
[28:25] cond .. 条件
[24] f .. 1なら浮動小数点の条件 0なら汎用レジスタの条件
[23] m .. 1なら条件転送命令 0なら分岐命令
[22:21] hh .. m=0のとき分岐ヒント 10 強い非分岐 00 弱い非分岐 11 強い分岐 01 弱い分岐
m=1のとき転送元指定 1なら即値,0なら汎用レジスタ番号 m=1,f=1,h=1は未定義
[17:12] .. Gcc or Fcc番号
[20:18][11:0] 符号付き15ビットPC相対値、命令長は32ビットなので"00"をゲタはかせ。

0xxcondfmhh---RcccccRsssssRddddd

[23] m .. 1
[22:21] hh .. m=1のとき転送元指定 00 汎用レジスタ 01 整数即値 10 転送元/先とも浮動小数点レジスタ 11 未定義
[20:18] .. レジスタ間転送命令の時未定義(浮動小数点-汎用レジスタ間の転送が指定できるだろうか?要検討)
[11:6] .. 転送元レジスタ
[5:0] .. 転送先レジスタ

0xxcondfmhh---Rccccc------Rddddd

[24] f .. 0 整数コンディション
[23] m .. 1 条件移動
[22:21] hh .. 01 即値
[20:18][11:6] 符号付き9ビット即値

cond(分岐条件)はSPARCに合わせる。BA条件と条件転送の組み合わせで、単なるレジスタ転送命令または即値設定命令ができる。
BE/BNE ゼロ/非ゼロ
BGEU/BLU >= (キャリークリア)/< (キャリーセット) (Unsigned)
BLEU/BGU <=/>(Unsigned)
GE/BL >=/<(Signed)
BLE/BG <=/>(Signed)
BNEG/BPOS 負数<0/非負数>=0(Signed)
BVS/BVC オーバーフロー/オーバーフローなし(Signed)
BA/BN 常に分岐/常に非分岐

分岐の相対値、レジスタに転送する即値のビット拡張はプリフィックス命令で行う。フォーマットはまだ決めていない。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

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




ぼくのかんがえたさいきょうCPU 条件分岐/転送命令 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる