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

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU プリフィックス命令

<<   作成日時 : 2009/08/28 22:28   >>

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

 廃止案件について
・浮動小数点の四倍精度演算命令はやめる。SPARCで定義されているが、使われていない。他のプロセッサも倍精度までしか持っていない。
・レジスタのライフフラグは廃止。よく考えたら必要ない。アセンブラで直接書くときのデバックには役立つかもしれないが。コンパイラがうまくやればよい。

 さて、プリフィックス命令のフォーマットを考えよう。プリフィックス命令で指定したことはレジスタの指定、即値の指定などで、この命令自体がパイプラインを流れるわけではない。
主命令の前に置いたのは、先にデコードして上記ヒントを主命令実行前に与えるため。
分岐命令にプリフィックス命令を付けた場合は、主命令のPCから相対値を計算する。このため、PC+4で次命令から実行を再開できる。
TLBミスなどで例外発生元のロード/ストア命令を再実行する場合はプリフィックス命令の有無が問題になる。実行中のロード/ストア命令に内部で覚えさせておくか。(再実行番地がPC-4になる)

・プリフィックス命令フォーマット
1ppaaabbbcccdddxsssssssseeeeeeee

[31] 1 .. プリフィックス命令である
[30:29] pp .. プリフックス命令分類
 00 ロング即値
 01 未定義
 10 レジスタ拡張+ミドル即値
 11 レジスタ拡張+デスティネーション範囲指定

 レジスタ拡張がある場合 3ビット増えてレジスタはR0〜R511まで指定可能
[28:26] aaa .. Rs1の拡張ビット
[25:23] bbb .. Rs2の拡張ビット
[22:20] ccc .. Rs3の拡張ビット(3オペランドの場合)
[19:17] ddd .. Rdの拡張ビット

 デスティネーション範囲指定がある場合
[16] x .. 未定義
[15:8] ssssssss .. 範囲指定 開始ビット位置
[7:0] eeeeeeee .. 範囲指定 終了ビット位置 ssssssss >= eeeeeeee でないといけない。
レジスタは256ビット幅まで対応できる。

 ミドル即値
[16:0] .. 17ビット符号付き即値 後続命令の即値の前半に追加される。PC相対即値、インデックス即値の場合は"00"がゲタはかせされる。
 ロング即値
[28:0] .. 29ビット符号付き即値 後続命令の即値の前半に追加される。PC相対即値、インデックス即値の場合は"00"がゲタはかせされる。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(4件)

内 容 ニックネーム/日時
>レジスタのライフフラグは廃止。よく考えたら必要ない。

プロセッサの実行系をアウトオブオーダで実装する場合、
これがあるとリネーミングレジスタのリソース最適化を図れそうな気がしたのでいいアイデアだと思ったのですが...
m.ukai
2009/08/31 09:35
>TLBミスなどで例外発生元のロード/ストア命令を再実行する場合はプリフィックス命令の有無が問題になる。

TLB-miss (page は存在するが tlb にだけ存在しない)ならまだしも、メモリ未実装だったら何が起こるんでしょうか?
Reset 直後の ROM に実装されている命令実行などの場合、最初の命令(ROMの最初のアドレス)には prefix 不要な命令を置くことが出来ない、と言う制約になるでしょうか?

同様の問題は、前ページには実アドレス空間が割り付けられないような仮想空間でも発生すると思います (_start() の先頭命令は prefix 付きが強制されるとか、前ページは実行禁止属性のついたデータ領域のページとか)。
m.ukai
2009/08/31 09:46
ライフフラグについて。
以前書いたものを見直したら、コンテキストスイッチ切り替え時のレジスタ退避判断に使おうと考えていました。レジスタが多ければ多いほど効いてくるので、プレフィックス命令のレジスタ本数拡張にライフ終了フラグを含めようか検討中です。
リネーミングレジスタのリソース最適化については気付いていませんでした。
具体的に命令を32ビット幅にアサインしようとすると入り切れなくなってしまい何を削ろうか悩むところです。
houmei
2009/08/31 11:13
プリフィックス命令を付加したロード/ストア命令では、すでにプリフィックスで即値などの追加の設定が終わってしまっているため、TLBミスなど例外が発生して戻る場合は内部で実行保留中のロード/ストア命令を再実行すればよいので、実際にプリフィックス命令の位置まで戻ってフェッチしなおすようなことはありません。つまり、(PC-4)といった逆方向へのアクセスは再度ださないので、ご指摘の問題は発生しないと考えています。
ただ、プリフィックス命令を持ってきたことにより固定長命令では起きなかったような問題が出そうなことは認識しました。仮想記憶の検討時に注意します。
多分SPARC64VIIIfxのプリフィックス命令の実装が参考になるかなあ…と思っています。
houmei
2009/08/31 11:38

コメントする help

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




ぼくのかんがえたさいきょうCPU プリフィックス命令 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる