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

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU なぜポストフィックスではなくプレフィックス命令か

<<   作成日時 : 2012/01/03 06:51   >>

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

 ARMv8(AArch64)は4バイト長さ単位の可変長命令で、即値代入の場合に後続する8バイトが即値になる様だ。ではなぜ「ぼくのかんがえたさいきょうCPU」はこのように後続で指定せずプレフィックス命令にするのか?

 サブルーチンを実現するJump&Link命令では、4バイト固定長命令の場合は現在のPC+4の番地をレジスタに保存すれば、戻る時にこのレジスタの値をそのまま使えばよい。しかし可変長命令の場合は命令デコードをし後続命令の数が判明してからPC+4またはPC+8といった戻り番地が決定する。これは分岐先に長い即値を使う場合に実装が面倒になる。
 前方向に修飾となるプレフィックス命令を置くとどうなるか。プレフィックス命令自体は分岐をしないので修飾される命令のみ意識すればよい。Jump&Link命令はPC+4を戻り番地に指定するだけでいい。また、プレフィックス命令で操作されるのはユーザから不可視のレジスタとすれば、単独の命令と解釈することもできる。ただし後続命令と依存関係があり、プレフィックス命令と後続命令の間ではトラップを抑止しなければならない(または不可視のレジスタを内部で保存)。
※トラップ時の特権モードではプレフィックス一切禁止という手段もあるが、ユーザモードでプレフィックス命令の途中であることは保存しなければならない。割込みマスクがいちばん簡単なようだ。この場合はプリフィックス命令が連続することを禁止する。

前回:
ぼくのかんがえたさいきょうCPU 即値設定命令 アドレッシングモードを考えなおしたためこれはボツ
ぼくのかんがえたさいきょうCPU プリフィックス命令を考える

 ALU命令のフォーマットは4オペランドにしたら複雑になった。積和演算の例だと:

 MULADD A,B,C,D # A×B+C → D

 3オペランド命令で使わないレジスタCの指定をプレフィックス命令に押し出せれば楽になる。4オペランド命令は乗算を含み1サイクルでは終了しないので、命令長が1つ増えても影響は少ないだろう。浮動小数点での積和演算も同様。もし1サイクルで終わるような演算であれば命令フェッチが追いつかずパイプラインがストールすることもあり得る。

プリフィックス命令[31:30]=11

11 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxx

pp[29:28]=11 ロング即値
xx[27:0] 即値+28bit


11 00 ABC dd aa cccccccc bb rrr xxxxxxxx

pp[29:28]=00 レジスタ拡張
ABC[27:25] ソースレジスタA,B,CのEOLフラグ 1で解除
dd[24:23] デスティネーションレジスタD拡張
aa[22:21] ソースレジスタA拡張
cc[20:13] ソースレジスタC指定 ※4オペランド命令時有効
bb[12:11] ソースレジスタB拡張 ※即値指定をしない時に有効
rrr[10:8] 浮動小数点丸め指定 ※浮動小数点命令時有効
rrr 本命令の丸め方向 以下に記述していない値は未定義。(SR.fpuに従う)
000 SR.fpuの設定に従う
011 偶数方向丸め
100 切り捨て
101 負の無限大
110 標準
111 正の無限大

x[7:0] Reserved

即値の拡張について
整数 4オペランド命令の時 imm[12:0] +13bit
整数 3オペランド命令の時 imm[20:0] +21bit

pp[29:28]=10,01 Reserved

pp=00の時のフォーマットの解釈は後続命令が浮動小数点/整数演算、3/4オペランド命令で解釈が変わる。
以上の定義で従来6bitだったレジスタが8bitで指定できる。(GR0〜GR255,FR0〜FR1023)
bitの余裕があるため10bit(GR0〜GR1023,FR0〜FR1023)までアサイン可能だが、取り敢えずこの様に定義する。
ひょっとしたらロング即値も要らないような?まあ後で考えよう。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(1件)

タイトル (本文) ブログ名/日時
ポストフィックス命令
 既存の命令を拡張するのにプリフィックス命令を考えたが、後ろにくっつけるポストフィックス命令を検討してみた。 ...続きを見る
竹下世界塔の計算機よもやま話
2012/08/22 01:05

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




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