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

アクセスカウンタ

zoom RSS レジスタウィンドウ

<<   作成日時 : 2012/01/07 15:57   >>

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

 現行のプロセッサで汎用レジスタの本数が多いのはIA-64?いえSPARCです。

 SPARCアーキテクチャで定義されるレジスタは%r0〜%r31の32の32本で、うち%r0はゼロレジスタである。

%r0〜%r7 = %g0〜%g7:グローバルレジスタ
%r8〜%r15 = %o0〜%o7:outレジスタ
%r16〜%r23 = %l0〜%l7:localレジスタ
%r24〜%r31 = %i0〜%i7:inレジスタ

 現在のレジスタウィンドウはCWP(Current Window Pointer)で示される。JPS1では[5:0]で定義されているが上位2bitは未使用で0なので0〜7の8つのレジスタウィンドウが有効。それぞれのレジスタウィンドウについて別個の%l0〜%l7が割り当てられる。inレジスタとoutレジスタは前後のレジスタウィンドウでオーバーラップしている。現在の%o0〜%o7はCWP+1の%i0〜%i7に対応し、現在の%i0〜%i7はCWP-1の%o0〜%o7と同じ。

 で、どのように使うか。
(1)%o0〜%o6に引数をセットし、CALL命令でサブルーチンに飛ぶ。戻り番地はCALL命令で%o7に保存される。
(2)SAVE命令でCWPを+1する。先程の%o0〜%o7は%i0〜%i7で参照可能になり、新規に%l0〜%l7、%o0〜%o7が割り当てられる。
(3)サブルーチン内処理。呼び出し元に渡す値を%i0〜%i6に設定。
(4)%i7で示される番地(%i7+8)に分岐し、RESTORE命令でCWPを-1する。(RESTORE命令はディレイドスロットに入る)

※(4)はRETURN 1命令でもOK / なぜ%i7+8か?分岐命令+ディレイドスロットがあるので戻るべき番地は次の次の命令となるため。つまり%i7+命令長4バイト×2が戻り番地。

 この様にサブルーチンコールで引数として7つのレジスタ+戻り番地のレジスタが渡せ、さらにサブルーチンを呼ぶ場合も同じ形式でよい。SAVE/RESTORE命令でレジスタウィンドウを動かすだけなので、メモリに退避させるといった操作が不要になる。関数呼び出しに対応した高級言語指向の機能。
 レジスタウィンドウは有限なので、範囲を越えた場合はトラップが発生する。この時はトラップハンドラでレジスタを退避し、CWPを巻き戻して対応する。
 SPARC V9からはレジスタウィンドウを確保する命令(DSAVE,DRESTORE)とレジスタ(CANSAVE,CANRESTORE,OTHERWIN等)が追加されているが、これ以前教えてもらったけど忘れてしまったのでまたあとで。

 レジスタの本数を計算してみると、グローバル7本+ローカル8×8本+in/outのオーバーラップで8×8+8本、合計143本。
IA-64は128本なのでこれよりも多い。

 元となったRISC-Iでのレジスタウィンドウだが、グローバルレジスタとローカルレジスタが10本づつ、in/outに対応するHIGH/LOWレジスタが6本づつとなっている。SPARCで8+8+8+8としたのはレジスタウィンドウを動かす論理を簡単にしたかったためだろう。サブルーチン内で使うレジスタは基本的に%l0〜%l7だが、%i0〜%i7、%o0〜%o7の引数や戻り値として使っていないレジスタを使っても問題ない。

 あと、RISC-Iの論文見てたらゼロレジスタは少なくともCDC6600の頃には実装されていたらしい。

参考:
JPS1-R1.0.4-Common-pub.pdf

RISC I: A REDUCED INSTRUCTION SET VLSI COMPUTER

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(2件)

内 容 ニックネーム/日時
リネームレジスタは?
mori
2012/01/10 09:49
IA-64のリネームレジスタの仕組みはr32〜r127を使いまわすものだと思っていました。ありがとうございます。
houmei
2012/01/10 16:23

コメントする help

ニックネーム
本 文




レジスタウィンドウ 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる