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

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU ありあまるレジスタを活用する配列支援命令

<<   作成日時 : 2010/01/19 20:06   >>

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

 最低で64本、最大で256本あるレジスタをどのように活用しようか。配列のように間接アクセスできたらいいのではないか、と考えた。

■間接代入命令
・IND GRs1,GRs2,GRd / IND GRs1,#imm,GRd
 GRs2の内容が示す番号の汎用レジスタから、GRs1の内容が示す番号の汎用レジスタへ値をコピーする。ライフフラグが立つ。GRs1がゼロレジスタの場合は、GRdにコピーされる。GRs2のフィールドが即値の場合は、その値の番号の汎用レジスタがソースとして使われる。

・FIND GRs1,GRs2,FRd / FIND GRs1,#imm,FRd
 GRs2の内容が示す番号の浮動小数点レジスタから、GRs1の内容が示す番号の浮動小数点レジスタへ値をコピーする。ライフフラグが立つ。GRs1がゼロレジスタの場合は、FRdにコピーされる。GRs2のフィールドが即値の場合は、その値の番号の浮動小数点レジスタがソースとして使われる。

 レジスタの内容で示す番号のレジスタ間の移動命令。ソース側を特定のレジスタにしたい時はGRs2のフィールドを即値で指定、デスティネーション側を特定のレジスタにしたい時はGRs1をゼロレジスタに指定する。汎用レジスタと浮動小数点レジスタに対応。
 アーキテクチャが持つレジスタの本数を越えないようチェックする必要がある。範囲外だとトラップが発生する。

 GRs2が即値、GRs1がゼロレジスタでGRd/FRdを指定していれば通常の移動命令として扱うことができる。条件付き移動命令に混ぜるか?→いまの定義では命令フィールドが足らないので無理だ。ALU命令分類にしてトラップ発生ありにしないといけない。

 実行時、GRs1,GRs2から値を読み、指定すべきレジスタ番号を得、その値を読み出すという手順が入ることになる。参照するレジスタが確定するまで、他の命令よりも1サイクル余計にかかる点に注意。全体としては固定サイクル実行なので乗算命令を入れるようなつもりで実装すればよい。

追記:
※レジスタ指定の範囲の判断は下8bit内で行う。これでレジスタは256本。かつ上位の余りビットにデータを置ける。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(1件)

タイトル (本文) ブログ名/日時
ぼくのかんがえたさいきょうCPU ローカルレジスタ
 GR0〜GR63を定義しているが64個もの汎用レジスタ、どう使うか? ...続きを見る
竹下世界塔の計算機よもやま話
2012/02/05 18:32

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




ぼくのかんがえたさいきょうCPU ありあまるレジスタを活用する配列支援命令 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる