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

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU 演算命令

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

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

 演算命令をシンプルにするとAlphaに行き着くが、もうちょっとリッチにしてもいいのではという欲がでる。

 POWERはRISCのなかで多くの演算の種類があるが、IBMの実装技術がすごいせいで5.2GHzも出ている。(IBM zEnterprise System) また、PA-RISCは整数演算にSHIFT&ADD命令があって強そうな感じがする。
これはそれぞれの仕様書と動作を理解するための整数演算の手法を理解しないと理解できない。

 有用な命令で実装が追いつかないものはエミュレーションで対処する。ただしほとんどの追加命令はハードウェアで簡単に実現できるものを考える。その命令がエミュレーションかどうかを知る手段があればソフトウェアに対するヒントになる。

例;演算命令のレイテンシを求める命令
LATENCY GRa,GRd # GRaの下位4バイトは命令のフォーマット4バイト
 GRdには 1~ レイテンシ 0 未定義命令 -1 エミュレーション命令 が入る。
※特殊な命令になるのでステータスレジスタ経由の判定にしてもよさそう

 あと、演算の結果の状態を状態レジスタに保存することは避けたい。汎用レジスタ以外に依存関係が発生する。
MIPS/Alpha風にオーバーフロー時にトラップを発生させるのもやめたい。整数演算命令ではトラップは発生しないことにする。
その代わり、整数演算命令の中にオーバーフローだったかどうかを確認する命令を追加する。方式としては直前の演算命令の状態を見て分岐する命令を付ける等。

例:
BV LABEL # 直前の命令でオーバーフローが発生していたら分岐 トラップ付きのADD命令に近いが特権状態を経由しない。任意の番地に飛べる。


では、「ハッカーのたのしみ」から基本RISCと完全RISCの整数演算命令を抜き出した。

前提として2の補数または符号なし、3オペランド形式で汎用レジスタを使う。

☆基本RISCの整数演算命令

add 加算
sub 減算
mul 乗算
mulhs 符号付き乗算の上位
mulhu 符号なし乗算の下位

div 符号付き除算
divu 符号なし除算
rem 符号付き剰余
remu 符号なし剰余

and 論理積
or 論理和
xor 排他的論理和
not 否定

shl 左シフト
shr 右シフト
shrs 算術右シフト

☆拡張RISCの整数演算命令

abs 絶対値
nabs 絶対値のマイナス
andc オペランドの片方を反転したand
orc 〃 or
eqv 〃 xor
nand andの反転
nor orの反転

pop 1が立っているビットの個数
nlz 先頭からの0の個数

extr ビット範囲を抜き出し
extrs 〃 充填先に符号ビットを充填

shlr 左ローテート
shrr 右ローテート ※レジスタのビット幅がわかっていれば左ローテートで兼用可
※レジスタのビット幅が変わり得るアーキテクチャではローテートはまずいか?

☆追加案
・符号付き右シフト、0シフトアウトで+1 (被除数が符号付きで負の時の除算用)
・符号なし加算のキャリー検出命令
・符号なし減算のキャリー検出命令
・加算、減算のオーバーフロー検出命令
・乗算のオーバーフロー検出命令
・符号付き除算のオーバーフロー検出命令(16ビットの例で-32768÷-1の時)
・最大/最小 MAX Ra,Rb,Rc/MIN Ra,Rb,Rc
・3オペランドで積和、積差など
・飽和演算
・NTZ LSB側から0の個数を数える...有効か?


☆MIMD命令での仮定義は以下
0x0000_0000 AND
0x0000_0001 OR
0x0000_0010 NOR
0x0000_0011 XOR
0x0000_0100 ANDN
0x0000_0101 ORN
0x0000_0110 NORN
0x0000_0111 XORN
0x0000_1000 ADD
0x0000_1001 SUB
0x0000_1010 ADDS 飽和加算
0x0000_1011 SUBS 飽和減算
0x0000_1100 SLL
0x0000_1101 SRL
0x0000_1110 SRA
0x0000_1111 ROL ローテート

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




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