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

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU 分岐予測をサポートするENTRY命令の提案

<<   作成日時 : 2009/12/08 13:27   >>

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

 分岐命令は飛び先が必ずある。分岐予測機構はそのアドレスをBHT(Branch History Table)に記録して予測のヒントにするが、あらかじめBHTを設定しておくことはできないだろうか?
ここでENTRY命令というのを考えてみる。この命令の存在する位置自体がBHTへのアドレス指示となり、分岐命令はENTRY命令の場所になるべく分岐するように書く。
ENTRY命令はループするコードの先頭に書く。プレフィックスが付く場合はプレフィックス位置のアドレスがBHTに登録される。
ENTRY命令はレジスタのコンディションコード監視を行う。このレジスタはループするコードの脱出条件に使われる。
ヒントのひとつとしてコンディションコードも記録し、このENTRY命令に分岐してくる分岐命令の条件が成立しているかどうかをチェックする。
コンディションコードの監視は該当するレジスタのライフがクリアされるまで続く。実際は監視対象レジスタ番号と監視フラグが追加されることになる。
ループする命令列の分岐命令をデコードした時点でレジスタ番号が分かるので、分岐アドレスでBHTを検索する前に分岐ヒントがわかる。

ニーモニック
ENTRY cond,GRn 分岐成立条件指定、予測は指定レジスタのコンディションコード
ENTRY cond,FRn 分岐成立条件指定、予測は浮動小数点レジスタのコンディションコード

分岐命令のフォーマット
10fcondmhh----RsssssRcccccRddddd

[24] m .. 1 条件移動
[23:22] hh .. m=1のとき転送元指定 00 汎用レジスタ 01 整数即値 10 転送元/先とも浮動小数点レジスタ 11 成立時汎用レジスタor非成立時の整数符号付き即値
[21:18] .. レジスタ間転送命令の時未定義 hh=11のとき非成立時の整数符号付き即値(-8〜+7)
[17:12] .. 転送元レジスタ
[11:6] .. Gcc or Fcc番号
[5:0] .. 転送先レジスタ

[21:18]はhh=00 or 10のとき未定義なのでこの4bitを使う。[21]を利用。

ENTRY cond,reg

10fcondmhhe---RsssssRcccccRddddd

[29:25] fcond 監視する条件 レジスタが汎用レジスタか浮動小数点レジスタかはここで決まる
[24] m = 1
[23:22] hh = 00
[21] e = 1
Rccccc 監視するレジスタ(のコンディションコード)
Rsssss,Rddddd 無視

※命令フォーマットは再考の余地あり。あまりデコードがすっきりしていない

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

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




ぼくのかんがえたさいきょうCPU 分岐予測をサポートするENTRY命令の提案 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる