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

アクセスカウンタ

zoom RSS □PA-RISCのNullficationについて

<<   作成日時 : 2012/03/08 02:46   >>

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

 PA-RISCは後続の命令1個をスキップできる機能を持っている。

PA-RISC 1.1 Architecture and Instruction Set Reference Manual[pdf]

> If the current instruction is nullified (the PSW N-bit is 1), group 3 interruptions must not be taken. The instruction address queue is advanced and the back of the queue is written with the new front element + 4. The privilege level is the same as the new front element. The PSW Xbit, Y-bit, Z-bit, N-bit, and B-bit are set to 0.

 PSWのNbitが1の場合、後続する命令をスキップし、Nbitを0に戻す。このNbitはほとんどの命令の結果とcondを比較することにより操作できる。PA-RISCはDelayed Branchありだが、このディレイド命令を実行するかどうかもNbitによって指定できる。

 condは3bitで以下の様に定義されている。反転させる指定fもあるので、16通り。
0 never; nothing
1 all bits are 0 - つまりゼロフラグ =
2 (leftmost bit is 1) xor signed overflow <signed
3 all bits are 0 or (leftmost bit is 1 xor signed overflow) <=signed
4 add命令:no unsigned overflow、subtracts/compares命令:unsigned overflow <unsigned
5 add命令:all bits are 0 or no unsigned overflow、subtracts/compares命令:all bits are 0 or unsigned overflow <=unsigned
6 signed overflow オーバーフローフラグ
7 rightmost bit is 1奇数

□通常の命令は、condで指示される条件を満たしたらNbitをセットし、続く命令はそれでスキップされることがある。
ADD,cond r1,r2,t
...

□分岐命令は BL,n target,t の様に,nで明示的に指定したときにNbitを操作する。

・なんとか AND BRANCH/BRANCH ON VARIABLE BIT(test bit)/BRANCH ON BIT 等

MOVB,cond,n r1,r2,target
MOVIB,cond,n i,r,target
COMBT,cond,n r1,r2,target
COMBF,cond,n r1,r2,target
COMIBT,cond,n i,r,target
COMIBF,cond,n i,r,target
ADDBT,cond,n r1,r2,target
ADDBF,cond,n r1,r2,target
ADDIBT,cond,n r1,r2,target
ADDIBF,cond,n r1,r2,target
BVB,cond,n r,target
BB,cond,n r,p,target


例:COMBT命令の動作
r1とr2を比較し、条件を満たした時targetに分岐。,nが指定された場合は
分岐先がマイナスの場合、N=条件を満たさなかった時1
分岐先がプラスの場合、N=条件を満たした時1
COMBF命令は、Nの設定条件が逆転

...
COMVT,cond,n,r1,r2,NEXT
命令1
命令2
命令3
...
NEXT:

条件を満たしてプラス方向に分岐する時に、後続の命令1は実行しない。分岐せず処理を続ける時は後続の命令1,2,3...を実行する。

L0: xxx
...
...
COMBT,cond,n r1,r2,L0
add r1,1,r1
EXIT:

条件を満たしてマイナス方向にループする時に、後続のadd命令は実行する。条件を満たさなかった時には後続のadd命令をスキップしてEXIT:に飛ぶ。ループで実行する時に使われる。
 SPARCの分岐命令が持つannul bitに似ているが、PA-RISCの方が高機能。

 ざっとPA-RISCの命令セットを見てみたが、SHIFT AND ADDなど複合的な命令が多い。また、BCD演算もあった。

 PA-RISCを参考にしたIA-64ではプレディケイト・レジスタが存在し、これで命令を実行するかどうかを制御できる。また、ARMもほぼすべての命令に条件によって実行する機能がある。

 Nbitによる次命令のスキップはパイプラインを極力乱さずにif文相当の動作を実行することができる。MIPSやAlphaといった汎用レジスタに比較結果を残すアーキテクチャでは、比較結果を直後で使う場合にはFowardingが必要になる。一般的な条件フラグを1セット持つアーキテクチャも少し制御は簡単になるが同様。
 PA-RISCではNbitだけ見ればいいので制御は簡単になる。そのかわり命令フォーマット内にcondの3bitを入れなければならない。
 ただしこれらは実装がシングルのパイプラインの時。スーパースカラやアウトオブオーダ実行になった場合は依存関係を解消しなければならないが、その場合でもNbitによるスキップは簡単になると思われる。直前の命令がセットする1ビットについて、実行結果を反映するか捨てるかだけでいいからだ。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




□PA-RISCのNullficationについて 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる