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

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU ロードストア専用レジスタの検討

<<   作成日時 : 2011/05/31 01:52   >>

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

 以前、「アドレスレジスタの復権」で思いついたのをずっと考えていた。いっそ、ロードストアユニット専用のレジスタにしてしまい、汎用レジスタ間とは転送命令で持っていくようにしたらどうだろうか。
レジスタ名:MR0〜MR63 メモリレジスタとする。ただしMR0は値が常に0のゼロレジスタ
使用例:
LD [MR1+MR2],MR3 ; MR3にロードしたデータが入る。[]内はアドレッシングモード
LD [MR1+MR2],MR0 ; 読んだ値は捨てられる。プリフェッチ相当の動作。
アドレッシングモード:従来とほとんど変わらない
[MR1+MR2] ベースレジスタMR1+符号付き変位MR2
[MR1+imm] ベースレジスタMR1+符号付き即値
[MR0+imm] 符号付き即値による直接指定(主にASI空間アクセスに使う)
[MR1+MR2]++ MR2をポストインクリメント
--[MR1+MR2] MR2をプリデクリメント

MRと汎用レジスタを分けることにより、ロード/ストアに時間がかかっても対象となる汎用レジスタをつかみっぱなしになることを避けられる。

MRはMR0を除きDONEフラグを持つ。ロードまたはストアの命令が実行されたらDONEフラグはクリアされ、操作が完了したらDONEフラグが立つ。
アドレッシングにMRを使う場合はDONEフラグが立っていないとトラップ発生。間接アドレッシングの場合はロードしてきた値をアドレッシングに使うため。あるいはDONEフラグが立つまで待つか。
トラップを防ぐために後述のMOV命令を使って判断するか、メモリレジスタのDONEフラグを見る分岐命令を用意するか。ここは要検討。

汎用レジスタとの転送はMOV命令、MOVD命令で行う。違いはロード/ストアの完了を待つかどうか。
MOV MR3,GR1 ; MR3へのロード/ストア操作が完了してなくても実行。
MOVD MR3,GR1 ; MR3へのロード/ストア操作が完了するまで待つ。
汎用レジスタへメモリレジスタから読み出す場合、MOVDはMRレジスタのDONEフラグが立つまで待ち合わせる。MOVはそのまま転送するが、転送先の汎用レジスタのライフが落ちる。
これによりロードが一定時間内に完了しなかったことがわかり、別の処理を行ってから再度読み出すことができる。
また、ロード/ストアを実際に行った時に発生するトラップは相当の時間が経ってからでないと発生しない(メモリ未実装空間へのアクセスなど)が、トラップの処理をロードストアユニット内で行うことが可能。
この手の遅れたトラップが発生したら、トラップを起こした原因のロード/ストア命令まで巻き戻して再開しなければならないが、これをできるだけ単純化したいと思っている。
また、明示的な投機実行が可能となる。暗黙の投機実行を避けたいならばMOVD命令は外したほうがよいかもしれない。

Load Linked/Store Conditionalについてはロードストアユニット内で完結させたい。これは別途考える。

メモリレジスタの本数だが、小さめの実装だと多すぎるので8本、16本、32本、64本から選べるようにする。実装依存で、本数の表示はSR(Status Register)のうちどれかの2bitを使用する。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(2件)

タイトル (本文) ブログ名/日時
ぼくのかんがえたさいきょうCPU アドレッシングモード
 これまで考えていたもやもやを整理してみた。 ...続きを見る
竹下世界塔の計算機よもやま話
2012/01/02 19:20
ぼくのかんがえたさいきょうCPU レジスタセット
 ようやく大和をお迎えできました。現在Lv55。 ...続きを見る
竹下世界塔の計算機よもやま話
2015/03/17 01:44

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




ぼくのかんがえたさいきょうCPU ロードストア専用レジスタの検討 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる