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

アクセスカウンタ

zoom RSS PA-RISC1.1の演算命令(1)

<<   作成日時 : 2012/05/03 04:23   >>

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

 1990年代後半頃、SunのSPARC搭載ワークステーションよりもPA-RISC搭載のHP-9000シリーズが速いと評判だった。ということでちょっと調べてみる。

 Alpha,MIPS,SPARCと比較してPA-RISCの演算命令は高機能だ。ここでは32bitアーキのPA-RISC1.1で調べてみた。

□全体
・すべての演算命令にcondを指定するフィールドがある。条件によってNullficationビットを立て、続く1命令をキャンセルすることができる。
・コンディションコードを持つ。

□加算命令
ADD,cond r1,r2,t
ADDL,cond r1,r2,t
ADDO,cond r1,r2,t
ADDC,cond r1,r2,t
ADDCO,cond r1,r2,t

r1+r2→tが基本。
ADDC,ADDCOはキャリーを反映して加算する。
ADDO,ADDCOはオーバーフローでトラップを発生。これはMIPS/Alphaにも相当する命令がある。
ADDLはキャリーフラグを反映しない。SPARCのADD命令相当。(PA-RISCのADD命令がSPARCのADDcc相当)

□シフト加算命令
SH1ADD,cond r1,r2,t
SH1ADDL,cond r1,r2,t
SH1ADDO,cond r1,r2,t
SH2ADD,cond r1,r2,t
SH2ADDL,cond r1,r2,t
SH2ADDO,cond r1,r2,t
SH3ADD,cond r1,r2,t
SH3ADDL,cond r1,r2,t
SH3ADDO,cond r1,r2,t

r1を指定分左シフトしてr2と加算、tに保存。これは値を定数倍する時に有効。
例:
SH1ADD GR1,GR1,GR2 # GR1の値×3→GR2
SH3ADD GR1,GR1,GR2 # GR1の値×9→GR2
ハードの実装も簡単で、ALUに持っていくr1のパスにシフタを入れるだけ。

L付きはフラグを反映せず、O付きはオーバーフローでトラップを発生する。

□減算命令
SUB,cond r1,r2,t
SUBO,cond r1,r2,t
SUBB,cond r1,r2,t
SUBBO,cond r1,r2,t
SUBT,cond r1,r2,t
SUBTO,cond r1,r2,t

SUBB,SUBBOはボローを反映して減算する。
SUBO,SUBBO,SUBTOはオーバーフローでトラップ発生。
SUBT,SUBTOはcondを満たすと条件トラップを発生。

□乗算命令
PA-RISC1.1に乗算はない。代わりにSFUというモジュールで浮動小数点レジスタを使った乗算を行う。
XMPYU r1,r2,t
FPR[t]=FPR[r1]×FPR[r2];

□除算命令
DIVIDE STEP命令がある。汎用レジスタとフラグV,C/Bを使う。
DS,cond r1,r2,t

Operation:
if (PSW[V])
GR[t] ← cat(lshift(GR[r1],1),PSW[C/B]{0}) + ∼GR[r2] + 1;
else
GR[t] ← cat(lshift(GR[r1],1),PSW[C/B]{0}) + GR[r2];
PSW[C/B] ← carry_borrows;
PSW[V] ← xor(carry_borrows{0},GR[r2]{0});
if (cond_satisfied) PSW[N] ← 1;

動作については後で。

□定数セット
LOAD IMMEDIATE LEFT
LDIL i,t
レジスタtに21bit即値のiを左に11bitシフトしたものをセットする。下位11bitはゼロ。
SPARCのSETHIに似ている。

ADD IMMEDIATE LEFT
ADDIL i,r
レジスタrに21bit即値のiを左に11bitシフトしたものを加算する。下位11bitはゼロ。

LOAD OFFSET
LDO d(b),t
tレジスタにbレジスタと14bit符号拡張した値dを加算したものをセットする。LEA命令相当。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(2件)

タイトル (本文) ブログ名/日時
PA-RISC1.1の演算命令(2)
 続き。十進補正命令、ビットフィールド命令など。 ...続きを見る
竹下世界塔の計算機よもやま話
2012/05/03 15:58
32bitのAlphaコード?
 七誌の開発日記 Windows NT/Alpha用のクロスgccを読んで、え?ナンデ32bit?Alphaってピュア64bitアーキテクチャじゃなかったっけ?と思って調べなおしてみた。 ...続きを見る
竹下世界塔の計算機よもやま話
2012/05/14 08:13

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




PA-RISC1.1の演算命令(1) 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる