JP3529888B2 - レジスタ割当て方法及びレジスタファイルポートアクセス装置 - Google Patents

レジスタ割当て方法及びレジスタファイルポートアクセス装置

Info

Publication number
JP3529888B2
JP3529888B2 JP10805695A JP10805695A JP3529888B2 JP 3529888 B2 JP3529888 B2 JP 3529888B2 JP 10805695 A JP10805695 A JP 10805695A JP 10805695 A JP10805695 A JP 10805695A JP 3529888 B2 JP3529888 B2 JP 3529888B2
Authority
JP
Japan
Prior art keywords
register
procedure
registers
address
circular
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP10805695A
Other languages
English (en)
Other versions
JPH07281897A (ja
Inventor
フレドリック・シー・アマーソン
ロバート・エム・イングリッシュ
ラジブ・グプタ
坦 渡邊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
HP Inc
Original Assignee
Hitachi Ltd
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd, Hewlett Packard Co filed Critical Hitachi Ltd
Publication of JPH07281897A publication Critical patent/JPH07281897A/ja
Application granted granted Critical
Publication of JP3529888B2 publication Critical patent/JP3529888B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は一般にディジタルコンピ
ュータに関し、特にディジタルコンピュータのレジスタ
の管理に関する。
【0002】
【従来技術及びその問題点】ノイマン型ディジタルコン
ピュータは操作中に種々の値を保持するためのレジスタ
セットを備えている。レジスタセットの大きさは可変で
ある。全てのノイマン型装置は少なくともプログラムカ
ウンタ(PC)を備えている。一般に、オペランド及び
結果を保持するためのレジスタ(“演算レジスタ”)も
備えている。RISC(縮小命令セットコンピュータ)
マシンは、一般に、メモリへの書込み・メモリからの読
出しを行うがデータに対する操作は行わないロード(L
OAD)及びストア(STORE)命令以外では、レジ
スタからレジスタへの命令(メモリに直接アクセスする
命令から区別される)しか持っていない。RISCマシ
ンは大きなレジスタセットを持つ傾向があり、例えば3
2個またはもっと多くにも達する。レジスタは、中間結
果、アドレスインデックス及びサブルーチンのような呼
び出し元と呼び出し先のプロシージャ間の引渡データ
(パラメータ)を保持するために使用される。幾つかの
プロセッサは汎用レジスタに加えて浮動小数点レジスタ
を備えている。CISCアーキテクチャは、通常、評価
スタックを備えており、評価スタックはオペランドが明
示的には示されない0アドレス演算を提供する。RIS
Cは、通常、評価スタックを備えていない。コンパイラ
は、RISCアーキテクチャにおいては、演算のためで
はなく、通常はパラメータ引渡及びレジスタ内容の追出
し(register spills)のために、スタックをメモリ内に
保持する。殆どのアーキテクチャにおいて、プロシージ
ャ呼び出しに当たってのレジスタのセーブと復元のオー
バーヘッドは負担になる。このオーバーヘッドはメイン
メモリ参照の5%から40%を占める。このオーバーヘ
ッドを減らすために、いくつかのバンクを設け、新たな
バンクを各呼び出されたプロシージャに割り当てること
が知られている。この技術はレジスタウインドウと称さ
れる。J.Hennessy,D. Patterson著のComputer Architec
ture -- a Quantitative Approach(1990) Section 8.
7、を参照のこと。レジスタウインドウを使用すること
により、これらのレジスタバンクつまり“ウインドウ”
を、パラメータを引き渡すための共通エリアを提供する
ためにオーバーラップさせる。レジスタはプロシージャ
呼出しに当たって変化しないグローバル(global)レジス
タと、プロシージャ呼出しに当たって変化するローカル
レジスタに分けられる。バッファが一杯になった後に、
プロシージャ呼び出しが行われたとき(ウインドウオー
バフロー)、またはバッファが空になった後にプロシー
ジャからの復帰が起こったとき(ウインドウアンダーフ
ロー)、レジスタのブロックはメモリにセーブされる。
【0003】レジスタウインドウは、現在、サンマイク
ロシステムのSPARC(登録商標)アーキテクチャで
実現されており、更にレジスタウインドウをリング構成
で操作することを開示している米国特許第5,159,680号
で説明されている。米国特許第5,233,691号は、バス競合
を起こさない時間にメモリにレジスタを予め書き込むこ
とにより、オーバーフローによる書き込みを行う必要性
を減らすレジスタウインドウシステムを開示している。
オーバーラッピングウインドウを実現する高性能レジス
タファイルは米国特許第5,226,142号及び米国特許第5,2
26,128号に開示されており、米国特許第5,083,267号及び
米国特許第5,036,454号はループのために循環レジスタ
を使用することを開示している。
【0004】レジスタウインドウのような従来技術のア
ーキテクチャが有する1つの問題は、レジスタのバンク
(すなわちレジスタウインドウ)のサイズが固定されて
いることである。このサイズはプロシージャ毎に変化さ
せることができない。その結果、プロシージャに割り当
てられたローカルレジスタエリア内の全てのレジスタが
実際にそのプロシージャにより使用されるわけではな
く、逆に、多くの場合、プロシージャにそのプロシージ
ャが必要とする十分なレジスタが割り当てられているわ
けではない。これにより、メモリ参照が最適化されない
ために、パフォーマンスの低下が引き起こされる。
【0005】レジスタウインドウの他の制限は、オーバ
ーラップレジスタの個数もまた固定されていることであ
る。この場合にも、その個数は実際に呼び出されるプロ
シージャが必要とするパラメータの数を充分に上回るこ
とがあり、一方ではレジスタの使用密度が減る。その
上、この固定されたオーバーラップにより、単一のプロ
シージャ呼び出しに関して引渡されるパラメータの個数
が勝手に限定される。
【0006】循環レジスタ(rotating register)空間
は、あるデータを使用する操作が呼び出される何サイク
ルか前にそのデータの準備を開始しそのデータが必要に
なったときにはそれが使用可能になっているようにする
ために、ソフトウエアのパイプライン化されたループに
よって使用される。ソフトウエアのパイプライン化され
たループ内で必要とされるレジスタの個数は、ループの
特性により変わる。もし、従来技術のように循環レジス
タ空間のサイズが固定されているなら、大多数のループ
を扱うために例えば64個のレジスタのような広大な空
間を割り当てなければならない。しかし、16個または
それ以下のレジスタしか必要としない多くの小ループが
あり、また64個よりも多くのレジスタを必要とする多
くの大ループがある。小ループの場合には、多くのレジ
スタが不必要に割り当てられまた開放され、大ループの
場合には、レジスタの不足により処理速度が低下する。
【0007】上記事情に鑑み、従来技術のレジスタウイ
ンドウのグループサイズが固定されているという枠組み
に制約されない、レジスタの効率的な割り当て及び割り
当て解除方法を提供することが必要とされる。
【0008】
【目的】上記背景に鑑み、本発明の目的は、コンピュー
タにおいて呼び出し及び復帰操作の平均速度を向上させ
ることにある。他の目的は、プロセッサの処理において
レジスタセーブ及び復元の回数を最小限にすることにあ
る。他の目的は、呼び出されたプロシージャにより必要
とされる一時的なローカル記憶装置を効果的に割り当て
ることにある。更に本発明の目的は、ルーチンの呼び出
し元、あるいは呼出し先が使用する記憶装置にかかわり
なく十分なレジスタ記憶装置を割り当てることにある。
更に他の目的は、現在使われていないレジスタについて
はセーブや復元を行わないことによって、効率を向上す
ることにある。他の目的は、プロセッサ内で使用可能な
限定された個数のレジスタを割り当て及びセーブするこ
とに関連するオーバーヘッドをへらすことにある。更に
他の目的は、プロシージャが必要とするならばレジスタ
の全範囲をそのプロシージャにより利用できるようにす
ることまで含む、呼び出されたプロシージャの要求を満
たすために、レジスタセットを動的に分割することにあ
る。他の目的は、ソフトウエアのパイプラン化されたル
ープのためにプロシージャが必要とするのと丁度同じ個
数の循環レジスタをそのプロシージャに割り当てること
にある。他の目的は、レジスタの使用密度を増加させる
ことにある。更に他の目的は、コンパイラの介入なしに
レジスタのセーブ及び復元を行うことにある。
【0009】
【概要】本発明の1つの側面は、物理レジスタをスタテ
ィックレジスタとスタックレジスタに分割することにあ
る。これにより、スタックレジスタがスタックをポイン
ティングするベースレジスタまたはリロケーションレジ
スタを介して間接的にアドレスできるようになる。プロ
シージャ呼び出しの際にレジスタをセーブしプロシージ
ャからの復帰の際にセーブされていたレジスタを復元す
るようにプロシージャに要請する代わりに、本方法で
は、全てのプロシージャが、その呼び出し元とは独立し
た一組のレジスタをスタックから割り当てる(プロシー
ジャからの復帰の際にはその様なレジスタの割当てを解
除してスタックへ戻す)ことができるようにする。もし
そのような割り当てがスタックオーバーフローまたはア
ンダーフローをもたらさないなら、メモリアクセスは不
要である。
【0010】もしハードウエアが十分大きなスタックを
実現するなら、呼び出されたプロシージャがローカルレ
ジスタを直ちに入手できること、それがない場合にはレ
ジスタのセーブ及び復元を必要とするメモリパイプが使
えること、及びメモリとのトラフィックが減少すること
からもたらされるキャッシュ動作の改善により、システ
ムスループット、資源利用及びプログラム実行時間の改
善が期待される。
【0011】プロシージャにより要求される(また、お
そらくは必要な)レジスタの正確な個数がそのプロシー
ジャに割り当てられる。もっと具体的には、本発明によ
れば、各プロシージャ及び各ループには正確にそれら特
性に合う所要の個数のレジスタが割り当てられる。この
ようにして、レジスタは不必要に割り当てられることも
なく不必要に保持/復帰されることもない。この特徴は
レジスタの効果的な使用及び実行時間の短縮につなが
る。
【0012】本発明はコンパイラの介入なしにディジタ
ルコンピュータで動的にレジスタをプロシージャに割り
当てる方法を含む。この方法は以下のステップを含む:
複数のスタックレジスタを有する論理レジスタスタック
を定義するステップ;ローカルリローケション項(loca
l relocation term,“lrel”と称する)を初期化し
て、前記論理レジスタスタックをコンピュータの前記物
理レジスタセットにマッピングするためのオフセットを
定義するステップ;第1のスタックポインタ値(TO
L)を初期化することにより、第1のプロシージャによ
り指定される任意の個数のスタックレジスタをローカル
レジスタとして第1のプロシージャに割り当てて、前記
論理レジスタスタック内の前記ローカルレジスタの範囲
を区切るステップ;前記第1のプロシージャの実行の間
の間のレジスタアクセス操作について、各ローカルレジ
スタを前記ローカルリロケーション項に応じて前記物理
レジスタセットにマッピングするステップ。
【0013】第2のプロシージャを呼び出すための準備
にあたっては、この方法は以下のステップを要する;第
1のスタックポインタ値(TOL)を“以前のTOL”
(OTOL)と称される第2のスタックポインタ値とし
てストアするステップ;第1のスタックポインタ値(T
OL)をインクリメントすることにより、第1のプロシ
ージャにより指定された個数のスタックレジスタを第1
のプロシージャにパラメータ引渡レジスタとして追加し
て割り当てて、パラメータ引渡レジスタを含めるように
するステップ;呼び出されたプロシージャが参照するよ
うに、割り当てられたパラメータ引渡レジスタ内に選択
されたパラメータをストアするステップ。我々はまた、
パラメータ引渡レジスタをローカルリロケーション項に
応じて物理レジスタセットにマッピングする。
【0014】第2のプロシージャを呼び出すに当たっ
て、この方法は更に第1のプロシージャパラメータ引渡
レジスタを含む初期ローカルレジスタ空間を第2のプロ
シージャに割り当てるステップを含む。このステップに
より、これらのレジスタにストアされたパラメータを、
メモリを参照せずに第2のプロシージャから利用できる
ようにする。第2のプロシージャが必要とする個数の追
加のスタックレジスタは、スタックポインタ値をインク
リメントすることによりローカルレジスタとして第2の
プロシージャに割り当てられる。この割り当ては、第1
のプロシージャのローカルレジスタ内容を先ずメモリに
セーブするという操作を経ずに実行される。第2のプロ
シージャからの復帰に当たっては、この方法では、スタ
ックポインタ値をローカルレジスタの個数分デクリメン
トすることにより、ローカルレジスタの割り当てを解除
する操作が行われる。このように、本発明には、ローカ
ルレジスタ内容をセーブ及び復元することなしに第2の
プロシージャを呼び出しまたそこから復帰することが含
まれる。
【0015】本発明の他の側面は、物理アドレスをレジ
スタファイルポートに提供するレジスタファイルポート
アクセス回路である。この回路は仮想アドレスを受け取
り、仮想アドレスをスタティックレジスタアドレス空間
と比較してこの仮想アドレスがスタティックレジスタア
ドレス空間内にあるか否かを提示する。もしスタティッ
クレジスタアドレス空間内にあれば、この回路はこの仮
想アドレスを、対応レジスタにアクセスするための第1
の物理アドレスとしてレジスタファイルポートに結合す
る。この回路には更に、受け取った仮想アドレスをロー
カルリロケーション項と結合して第2の物理アドレスを
形成する回路と、仮想アドレスがスタティックレジスタ
アドレス空間内になければ第2の物理アドレスをアドレ
スとしてレジスタファイルポートに結合する手段も含ま
れる。アクセス回路は、ローカルリロケーション項を仮
想アドレスと予め定められた物理レジスタの総数を法(m
odulo)とするモジューロ加算を行うように構成される。
【0016】本発明の、上述した、またそれ以外の目
的、特徴及び利点は、以下の図面を参照して進められる
好適な実施例の詳細な説明からもっと容易に明らかにな
るであろう。
【0017】
【実施例】図1はレジスタウインドウとして知られてい
る、レジスタを割り当てる従来技術の方法を示す概念図
である。以下において、参照番号は、図示されているア
ドレス空間モデルを参照するために使用される。図の参
照番号をレジスタ番号と混同してはいけない。ここで
は、物理レジスタ番号を示すために小文字のrを使用
し、論理または仮想レジスタスタック番号を示すために
大文字のRを使用する。省略記法“VR”は仮想レジス
タを意味し、“PR”は物理レジスタを意味する。
【0018】図1において、番号n−1がついた第1の
ウインドウには、グローバルレジスタr0からr9及び
ローカルレジスタR10からR31が割り当てられる。
新たなプロシージャが呼び出されると、別の一連のレジ
スタがこの新たなプロシージャに割り当てられる。番号
1のウインドウを参照すると、レジスタr0からr9
は、グローバルであるので、そのままである。呼び出し
の後、6個のレジスタが前段のウインドウにオーバーラ
ップして、呼び出し側のレジスタR10からR15まで
がレジスタR31からR26になる。10個のレジスタ
はウインドウに含まれないので、各プロシージャからは
一度に32個のレジスタが見えていても、ウインドウ毎
に16個(32−10−6)の固有のレジスタがある。
オーバーラップしたレジスタはパラメータ引渡のために
使用される。同様に、ウインドウ番号n+1において、
呼出側のレジスタのR10からR15(ウインドウn)
は、呼び出し後、R31からR26となり、再び、6個
の重複レジスタが提供される。従来技術で述べたよう
に、固定サイズでの分割を行うレジスタウインドウ技術
は、使用されないときでもセーブされるレジスタを生成
する。
【0019】本発明は、個々のプロシージャが物理レジ
スタのプールからあるいはそこへの任意の個数(論理レ
ジスタスタックの数により制限される)のレジスタの割
り当て及び割り当て解除を必要に応じて実行できるよう
にすることにより、プロシージャインターフェースにお
いてセーブされまた復元されるレジスタの個数を最小限
にする。このプールの中のレジスタは、以下に述べる間
接あるいはリロケーションポインタを介してアクセスさ
れる。レジスタスタックはレジスタで利用可能なソフト
ウエアスタックの頂部として見ることができ、従って、
容易にかつ速やかにアクセスされる。そのようなレジス
タの“動的割り当て(dynamic allocation)”は、コンパ
イラにより予め定められているのではなく、呼び出され
たプロシージャ自身により制御される。
【0020】本発明の一実施例では、128個の固定小
数点及び128個の浮動小数点レジスタを設けてよい。
典型的なハードウエアレジスタファイルは、64個のス
タティックレジスタ及び64個の循環レジスタを有して
いてよい。レジスタファイルは独立した集積回路で実現
してよいし、あるいはプロセッサデバイス上に実装して
よい。物理レジスタファイル自体の実現の詳細は知られ
ており、ここではあまり関係がない。本発明は固定小数
点レジスタと浮動小数点レジスタの一方または両方に等
しく適用可能である。説明の都合上、固定小数点レジス
タに適用するものとして本発明を説明する。以下の説明
では、次に示す用語を使用する。
【0021】物理レジスタ(PR):システムアーキテ
クチャから見える物理レジスタ。物理レジスタの実際の
個数は単なる設計事項である。物理レジスタはレジスタ
ファイル内で実現されると仮定している。 仮想レジスタ(VR):命令中で指定されるレジスタ番
号である。VR番号はPR番号と同じであってよいし、
あるいはVRを修正して、対応するPRのアドレスを決
定してもよい(以下で説明する)。 スタティックレジスタ:グローバルレジスタ(Grobal Re
gisters)とも称され、スタック操作あるいは循環に関与
しないレジスタである。言い換えれば、これらレジスタ
のは、間接操作なしで、シラブル(syllable)で提供され
るレジスタアドレスを使用して直接アクセスされる。以
下の実施例では、VRアドレス0から31は、スタティ
ックレジスタであるPR0から31にアクセスするため
に修正なしに使用される。 循環レジスタ(Rotating Registers):これらのレジスタ
はソフトウエアパイプライン化に関与するための、プロ
シージャにより割り当てられたレジスタであり、循環レ
ジスタベースRRB(Rotating Register Base)からのオ
フセットとしてアクセスされる。どのプロシージャも、
いかなる時でも物理レジスタの個数によりほぼ制限され
る任意の個数の循環レジスタにアクセスできる。循環レ
ジスタはリングとしてアドレスされる。 スタックレジスタ:スタック操作及び循環に関与するレ
ジスタのプールである。スタックレジスタをアクセスす
るためのベースあるいは間接操作を指定するスタックポ
インタを使うことにより、スタックレジスタのプールは
リングとして管理される。(従って、循環レジスタはリ
ング内のリングとして管理される。)言い換えれば、も
しVR(i)が物理的に実現されているスタックレジス
タの中の最大のアドレスを有しているものに対応するな
らば、VR(i+1)は最小アドアドレスを有するスタ
ックレジスタに対応する。以下に述べる実施例では、9
6個のスタックレジスタ(R32からR127)が存在
する。循環レジスタはスタックレジスタのプールから抜
き出される。VRs32から127は、ベースポインタ
により修正されて、対応するPRを決定する。 ローカルレジスタ(Local Registers):現プロシージャ
からアクセス可能なスタックレジスタである。
【0022】上述の循環レジスタベース(RRB)に加
えて、好ましい実施例はスタックレジスタファイルの中
をポインティングする次のような追加の間接つまりベー
スレジスタを維持する。(好ましくは、プロシージャは
次のベースレジスタの各々の2つのコピーを有する。そ
の1つは固定小数点スタックであり、他方は浮動小数点
スタックである。) 有効レジスタ群の下限(底)BOV:レジスタスタック
を介してアクセス可能なソフトウエアスタックの深さを
マーキングするスタックポインタである。BOVを越え
て割り当て処理を実行するとスタックのオーバフローを
招き、BOVを越えて割り当て解除処理を実行するとス
タックのアンダフローを招く。以下で更に説明する。 ローカルレジスタ群の下限BOL:現プロシージャから
アクセス可能なスタックレジスタ群の一方の端の境界を
示すスタックマーカである。現プロシージャの全てのス
タックレジスタはBOLに関してアクセスされる。一般
に、Pがスタックレジスタの総数であり、i及びjが、
i<32の場合j=i、i≧32の場合j=[(BOL
+i−32)mod P]+32によって関連付けられ
るとするとき、VRiはPRjにアクセスする(ここ
で、PR0からPR31はスタティックレジスタである
と仮定している)。好ましい実施例において、BOLは
デフォルトで最初のスタックレジスタ(PR32)を指
す。 ローカルレジスタ群の上限(頂上)TOL:現プロシー
ジャからアクセス可能なレジスタ群の他端の境界を示す
スタックマーカである。プロシージャがローカルエリア
内に存在しないレジスタ、すなわちBOL境界からTO
L境界までの範囲の外にあるレジスタにアクセスしよう
とすると例外を引き起こす。 ローカルレジスタ群の以前の上限OTOL:パラメータ
レジスタの割り当ての行われる以前のTOLの値であ
る。TOLとOTOLの間の一連のレジスタは割り当て
られたパラメータレジスタである。 循環レジスタ群の下限BOR:循環にかかわるスタック
レジスタ群の一端の境界を示すスタックマーカである。 循環レジスタ群の上限TOR:循環にかかわるスタック
レジスタ群の他端の境界を示すスタックマーカである。
【0023】一般に、レジスタスタックにおける利益は
スタックレジスタにだけあてはまり、コンパイラは依然
としてスタティックレジスタのための呼び出し元/呼び
出し先、セーブ/復元戦略を採り入れ続けねばならな
い。全ての議論及び説明は固定小数点スタックと浮動小
数点スタックに等しく適用される。各スタックは自分自
身のベースレジスタセットを有する。固定小数点レジス
タファイル及び浮動小数点レジスタファイルは各々別々
に制御される。本発明を説明するために、固定小数点ス
タックを詳細に述べる。
【0024】ローカル、パラメータ及び循環レジスタは
新たに定義された操作であるallocを実行すること
により割り当てられまたは割り当て解除される。ローカ
ルレジスタが割り当てられ/割り当て解除される場合に
は、レジスタの割り当て及び割り当て解除により、TO
L及びOTOLが修正される。TOL及びOTOLは割
り当て及び割り当て解除されるローカルレジスタの個数
だけインクリメント/デクリメントされる。パラメータ
レジスタの割り当て/割り当て解除により、TOLが修
正される。TOLは、以下の図3A−Iに示されるよう
に、割り当て及び割り当て解除されるパラメータレジス
タの個数だけインクリメント/デクリメントされる。レ
ジスタの割り当て及び割り当て解除は、スタックがオー
バフロー/アンダフローするときBOVにも影響を及ぼ
すかもしれない。
【0025】循環レジスタの割り当て/割り当て解除に
より、BOR、TOR、TOL、及びOTOLが修正さ
れる。循環レジスタが割り当てられる際、BORはTO
Lの内容にセットされる。TOL、OTOL及びTOR
はTOLと割り当てられる循環レジスタの個数の合計に
セットされる。循環レジスタの割り当て解除より、逆方
向の修正が行われる。上述した機構により、プログラム
に影響を与えることなしに、例えば装置モデル毎に物理
レジスタの個数を変えることができる。
【0026】プロシージャ呼出し(すなわち、ブランチ
アンドリンクの実行)の実行に当たって、各種のベース
レジスタの現在の状態がパラメータレジスタ0にストア
される。よってコンパイラは呼び出されたプロシージャ
へ渡す/呼び出されたプロシージャから送られるパラメ
ータの個数以外に、追加のパラメータレジスタを1個割
り当てなけらばならない。更にBOLはOTOLの値に
セットされ、OTOLはTOLの値にセットされる。プ
ロシージャからの復帰に当たっては、各種のベースレジ
スタはパラメータレジスタ0にストアされた値に設定し
なおされる。プロシージャからの復帰は、呼び出された
プロシージャのローカルレジスタ及び循環レジスタの割
り当て解除を伴うので、スタックアンダーフローを招く
ことがある。
【0027】割り当てを行っている際にTOLがBOV
を越えようとするとき、スタックはオーバーフローした
と言われる。全ての演算が、スタックに実装されている
レジスタの個数を法として行われるということを想起さ
れたい。あるいは、モジューロ加算(modulo-plus)機能
を使用して固定小数点レジスタアドレス空間を飛び越し
てもよい。同様に、割り当て解除を行っている際にBO
LがBOVを越えようとするとき、スタックはアンダー
フローした言われる。オーバーフロー/アンダーフロー
の発生はハードウエアで検出され、トラップハンドラが
適切にスタックレジスタをソフトウエアスタックに追出
すために/ソフトウエアスタックからスタックレジスタ
への復元を行うために呼び出される。
【0028】上述した機構により、スタックオーバーフ
ロー及びアンダーフローを予期してレジスタスタックの
内容の流し出しまたそこへの充填をバックグラウンドで
行うハードウエア(ソフトウエア)を使用することがで
きる。従って、従来の意味でのスタックオーバーフロー
及びアンダーフローは、後述するところの我々がレジス
タ清浄化(register cleaning)と呼んでいる処理により
回避することができる。
【0029】割り当て処理操作は、例を使うことによっ
て最も良く説明できる。プロシージャAでBOLが物理
レジスタ38をポインティングし、TOLが物理レジス
タ47をポインティングすると仮定する。するとプロシ
ージャAは10個のローカルレジスタを有する。プロシ
ージャBの呼び出しに先立って、プロシージャAは4個
のパラメータレジスタを割り当てる。これにより、OT
OLが47にセットされ、TOLは51にセットされ
る。ブランチアンドリンクが実行されるとき、これらの
ベースレジスタの値がパラメータレジスタ0、すなわち
物理レジスタ48にパックされる(以下の制御レジスタ
Aについての説明を参照)。更に、BOLは47にセッ
トされる。呼び出されたプロシージャ(B)のローカル
空間の下限をOTOLに配置することにより、パラメー
タレジスタは両者に共通となり、またこれらのレジスタ
部分はBのローカル領域の下限部となる。OTOL及び
TOLは51にセットされる。プロシージャBに10個
のローカルレジスタを割り当てると仮定する。この場
合、TOL及びOTOLを60にセットする。プロシー
ジャBから復帰すると、BOL、TOL及びOTOLは
夫々初期値38,47,51にリセットされる。
【0030】ある実施例では、プロシージャBによりプ
ロシージャAへ戻される値を物理レジスタ48から51
に入れることができる。その代わりに、復帰値をスタテ
ィックレジスタに入れることもできる。これにより、復
帰後直ちにパラメータレジスタの割り当てを解除して次
のプロシージャ呼び出しのために利用できる。
【0031】プロシージャが呼び出されるとき1つのパ
ラメータレジスタ(ここでは48)を使ってポインタ値
がストアされるということにも注意されたい。もっと具
体的に言えば、復帰情報は制御レジスタに記憶され(以
下で更に説明する)、コンパイラは、復帰前に、復帰情
報をローカルレジスタ領域にコピーし、また制御レジス
タにストアすることが必要とされる。好ましくは、TO
L及びOTOL値自体はセーブされないが、それらの値
を計算できるようにする代わりの値、公称上、以前の値
に対するオフセット、がセーブされる。オフセット値を
使用することによって、これらの値を任意のレジスタに
記憶できるようになる。かくして、レジスタを任意量だ
け循環しても、上記機構は依然として正確に動作する。
他の実施例では、この目的のためにパラメータレジスタ
を余分に割当てて、パラメータ引渡に使用できるレジス
タの総数を呼び出し側のプロシージャにより割り当てら
れた実際の数に等しくなるようにする。循環レジスタの
割り当て/割り当て解除は、同様の態様で動作する。
【0032】各レジスタスタックは、スタックオーバー
フローの際にはレジスタがセーブされ、またスタックア
ンダーフローの際にはレジスタが読み出される固有のソ
フトウエアスタックを有する。従って、各レジスタスタ
ックはまさに適当なソフトウエアの先端部分を表す。
【0033】上述の方法を実現するに当たって、以下の
制御レジスタを提供するのが好都合である: 制御レジスタA:これは固定小数点スタック用の各種の
ベースポインタ−BOV,BOL,TOL,BOR,T
OR及びOTOL−を収容する。 制御レジスタB:これは浮動小数点用の別のベースポイ
ンタ−BOV,BOL,TOL,BOR,TOR及びO
TOL−を収容する。 制御レジスタC:これは固定小数点レジスタのためのレ
ジスタスタックをバックアップしているソフトウエアス
タックのメモリアドレスを含む。 制御レジスタD:これは浮動小数点レジスタのためのレ
ジスタスタックをバックアップしているソフトウエアス
タックのメモリアドレスを含む。 プロシージャ呼び出しの実行の準備として、適当なベー
スポインタがパラメータレジスタ0にストアされること
を想起されたい。
【0034】図2に目を向けると、R0からR127ま
での番号が付与されたレジスタセットについての論理ア
ドレス空間モデルが示されている。スタティックレジス
タ50(R0からR31)は例えばグローバル値のため
にリザーブされ、ローカルレジスタ割り当て機構には関
与しない。スタックレジスタR32からR127は参照
番号58により示される(この参照番号はアドレスでは
ないことに注意)。このモデルにより示される仮想アド
レスはソフトウエアプロシージャから見たレジスタスタ
ックを示す。仮想アドレス(VR)は、以下に述べられ
る物理レジスタファイルにアクセスするために実際のつ
まり物理レジスタアドレス(PR)に変換される。初期
状態では、割り当てられていないアドレス空間60がレ
ジスタスタック全体を構成している。
【0035】図3Aから図3Iは、呼び出された一連の
プロシージャから見える仮想アドレス空間を示してい
る。呼び出されたプロシージャは、各図の上部に書かれ
たA、B、C、Dで示している。このモデルで方向
「上」、「下」、及び表記「上限」、「下限」は任意で
ある。例えば、ローカルレジスタを「上限」、ここでは
R127から下向きに割り当て、スタックの下限(VR
32)に到達したとき回り込みを行うこともできる。我
々は、R32から上向きに割り当てることによって本発
明を説明する方を選択した。動作の原理は、一貫性を保
つ限り同一である。
【0036】図3Aに目を向けると、第1のプロシージ
ャAへの呼び出しを行った後の図2の論理アドレス空間
が示されている。論理アドレス空間(すなわち一連の仮
想レジスタ)62はプロシージャAに対してローカルな
ものとしてプロシージャAに割り当てられている。BO
L(Bottom of Local)ポインタはプロシージャAのロー
カル空間の下限を示し、TOL(Top of Local)はプロシ
ージャAのローカルアドレス空間の上限を区切ってい
る。BOV(Bottom of Valid)は、BOLの値に初期化
され、現在割り当てられている空間の範囲を区切ってい
る。参照番号60は未だ割り当てられていない仮想レジ
スタ(つまりアドレス空間)、すなわちTOLよりも上
の空間またはBOVよりも下の空間を示す。図3Bにお
いて、プロシージャAは次に呼び出されるプロシージャ
へのパラメータ引渡のためにパラメータ空間64を割り
当てる。パラメータ空間64はプロシージャAに割り当
てられているローカルアドレス空間をインクリメントす
る。この様子は、それに合わせてTOLポインタがパラ
メータ空間64の上限に上向きに調整されていることに
示されている。ポインタOTOLはパラメータレジスタ
の割り当ての前のTOL値を示している。
【0037】プロシージャAは次にプロシージャBを呼
び出す。注意したように、ポインタ(制御レジスタA)
は第1のパラメータレジスタにストアされる。図3Cを
参照すると、いつものように、プロシージャBは、BO
Lポインタで表わされるように、スタックの下限(VR
33)で始まるローカル(仮想)アドレス空間を割り当
てる。プロシージャBのローカル空間の最初の部分は、
パラメータ空間64がプロシージャAとBに共通になる
ように、プロシージャAのパラメータ引渡レジスタ64
にマッピングされる。呼び出されたプロシージャのロー
カル空間は常にスタックの下限(BOL)で始まり、こ
の空間はまた呼び出し側のプロシージャのパラメータ空
間で始まる。
【0038】従って、プロシージャ呼び出しは、パラメ
ータ引渡空間(例えば64)が下限側に向かうように仮
想レジスタスタックを押し込む、つまりプッシュダウン
すると考えることができる。呼び出し側プロシージャの
パラメータ空間(例えば62)は、図3Cのアドレス空
間の上限部分に回り込み、BOV(Bottom of Valid)ポ
インタを調整することにより区切られている。プロシー
ジャBも(純粋にローカルな)レジスタ66を更に割り
当て、TOLポインタにより区切っている。上と同様
に、残りの割り当てられずに残っているアドレス空間は
60によって示される。
【0039】図4Aから図4Iは、レジスタファイルの
ような物理アドレス空間をモデル化している。この段階
で、図3Aから図3Iにモデル化された仮想アドレス空
間と物理アドレス空間の関係を質的に考慮することは役
に立つ。図4Aを参照すると、BOL及びBOVポイン
タはレジスタファイルアドス空間の原点を示している。
これらは例えば物理アドレス0で良い。プロシージャA
の仮想アドレス空間62(図3A)はTOLポインタで
区切られている物理アドレス空間102(図4A)に対
応する。図4Bはまた、プロシージャAにより割り当て
られ、図3Bの仮想アドレス空間64に対応するパラメ
ータ空間104も示している。参照番号100は物理ア
ドレス空間モデル中でに現在割り当てられていないアド
レス空間を示している。一般に、図3Aから図3Iの参
照番号に40を加算すれば、夫々図4Aから図4Iの対
応する参照番号になる。
【0040】図4Cは、TOLポインタを調整すること
により図3CのプロシージャBのローカルアドレス空間
66に対応するアドレス空間106が更に割り当てられ
たことを示している。従って、呼び出されたプロシージ
ャの仮想アドレス空間は常にレジスタスタックの下限か
ら始まるが、物理レジスタファイル内ではこれに対応す
るデータのリロケーションはないことが観察できる。リ
ロケーションを実際に行う代わりに、図4Aから図4I
に示されるように、追加されるレジスタは、前に割り当
てられた物理アドレス空間に影響を与えることなしに呼
び出されたプロシージャにより必要に応じて割り当てら
れる。次に、これ以上のプロシージャ呼び出しを考慮す
るために図3Dを参照する。
【0041】プロシージャBは図3Dに示されるよう
に、TOLポインタを調整することによりパラメータ引
渡アドレス空間70を割り当てる。プロシージャAと共
通のパラメータアドレス空間64を有する残りのローカ
ルアドレス空間66は影響されない。図3Dに示され、
BOVアドレスポインタによって表わされるプロシージ
ャAのローカルアドレス空間62は、アドレス空間の上
限部にそのまま残っている。
【0042】図3Eを参照すると、プロシージャBは更
に別のプロシージャCを呼び出す。プロシージャCにつ
いての論理アドレス空間は以下の部分で構成される:論
理アドレス空間の下限(BOL)で始まり、アドレス空
間70はプロシージャBと共通のパラメータ引渡空間で
ある。プロシージャCはTOLポインタで表わされるロ
ーカルアドレス空間72を割り当てる。呼び出し側プロ
シージャ(B)のローカルアドレス空間64,66は、
プッシュダウンされ、図3Eのモデルの上限部分に回り
込んむ。プロシージャAローカル空間62は現在の呼び
出しに適応するためにプッシュダウンされ、またBOV
がそれに従って動かされる。言い換えれば、レジスタス
タックは論理的に循環する。いつものように、残りの割
り当てられていないアドレス空間は60で示される。
【0043】図4D及び図4Eは夫々図3D及び図3E
でモデル化された論理アドレス空間に対応する物理アド
レス空間を示している。図4Dを参照すると、パラメー
タ引渡空間110は、図3DでプロシージャBにより割
り当てられた仮想パラメータ空間70に対応する。同様
に、図4Eのローカルアドレス空間112は、図3Eで
プロシージャCにより割り当てられた仮想ローカルアド
レス空間72に対応する。
【0044】ここで図3Fを参照すると、プロシージャ
Cは前に割り当てられたローカル空間72に加えて循環
レジスタアドレス空間74を割り当てる。TOL(及び
TOR;図3G参照)ポインタは循環レジスタ空間の上
限を示し、BORは循環レジスタ空間の下限を示してい
る。仮想アドレス空間62,64及び66は影響されな
い。図4Fは、BOR及びTOLで境界付けられる物理
アドレス空間114の対応する割り当てを示している。
循環レジスタの個数は、ソフトウエアのパイプライン化
されたループの特性に応じて変えられる。プロシージャ
が現在利用可能なアドレス空間を越える循環レジスタ空
間を割り当てようとする場合のみ、レジスタオーバーフ
ローが起こる。この場合については、以下に述べられ
る。
【0045】次に、図3Gを参照すると、他のプロシー
ジャの呼び出しを見越してプロシージャCは循環レジス
タ空間74の上限の上にパラメータ引渡空間76を割り
当てる。パラメータ空間を区切るためにTOLを調整す
る。論理アドレス空間60はまだ割り当てられていない
レジスタである。図4Gは、プロシージャCが他のプロ
シージャにパラメータを通すための物理アドレス空間1
16の対応する割り当てを示している。
【0046】図3Hはもう1つのプロシージャDがプロ
シージャCにより呼び出された後の仮想アドレス空間モ
デルを示している。前にプロシージャCにより割り当て
られたパラメータ空間76は、いつものように、プロシ
ージャDのローカルアドレス空間の下限に現れている。
更に、プロシージャDはTOLポインタを調整すること
によりローカルアドレス空間78を割り当てる。呼び出
しプロシージャ、すなわちプロシージャC、についてロ
ーカルなアドレス空間(共通パラメータ引渡空間76を
除く)は、図3Hの70,72及び74で示されるよう
に、プッシュダウンされ、モデルの上限部に回り込んで
いる。プロシージャBについてローカルなアドレス空間
66及び64はこれに従ってプッシュダウンされる。同
様に、プロシージャAのローカル空間62は、スタック
上で更にプッシュダウンされ、未だ以って割り当てられ
ていないアドレス空間60を残して、BOV(Bottom of
Valid)ポインタにより区切られる。図4Hは、プロシ
ージャDがローカルレジスタとして使用する物理アドレ
ス空間118の対応する割り当てを示す。
【0047】プロシージャDは次に、図3Hの60によ
り示される利用可能なアドレス空間を越えて循環レジス
タ空間を割り当てようとする。これはレジスタオーバー
フロー条件を引き起こす。その結果、BOVポインタの
上方にあるメモリ空間の部分がメモリ(図示せず)にセ
ーブされる。セーブされる部分は論理アドレス空間62
と64及び66の一部分を含む。BOVポインタはオー
バーフローセーブ操作の結果繰り上がり、これにより空
いている空間を追加する。この結果の割り当てられてい
ないアドレス空間60は、プロシージャDの循環レジス
タの要求に合致するよりも大きい。この結果は図3Iに
示されており、ここで80はプロシージャDの循環レジ
スタ空間を示している。
【0048】図3Iを参照すると、プロシージャDはB
OR及びTOLポインタで区切られている循環レジスタ
アドレス空間80を割り当てし終わっている。この場
合、必要最小限の空間より幾分大きいものがメモリにセ
ーブされている。その結果、割り当てられていない部分
60が残っている。これは単に最小限の今すぐに必要と
いうのではなく、予め定められた個数のアドレスを動か
すようにオーバーフローセーブ機構を構成していること
から起こる。上述のセーブ操作によってリロケーション
されたアドレスの個数は、好ましくは従属ハードウエア
で効率よく実現できるように選択される。この結果現れ
るヒステリシスは、使用時に必要になるメモリ参照の回
数を減少させ得る。他の実施例では、保留されている割
り当てを調整するために十分なアドレス空間のみをセー
ブする。レジスタオーバーフロー及びセーブ後であっ
て、所要の循環レジスタを割り当てた後の物理アドレス
モデルは図4Iに示される。ここで120はプロシージ
ャDの循環レジスタ空間を示している。
【0049】レジスタオーバーフローセーブ及び復元機
構の詳細は知られている。しかし、本発明の他の側面
は、完全にレジスタオーバーフローを回避するための、
仮想アドレスレジスタシステムとともに作動する「清浄
化(cleaning)」機構にある。「清浄な(clean)」レジス
タは、メモリ内容の正確なコピーを有するレジスタとし
て定義される。逆に、「汚染した(dirty)」レジスタは
メモリ内容の信頼できるコピーを持っていない。汚染し
たレジスタは恐らくは有効なものである。すなわち、お
そらく現在割り当てられている。清浄なレジスタ空間は
BOC(Bottom ofClean)及びTOC(Top of Clean)ポイ
ンタで表わされている。BOCは本質的にはBOVと同
じである。初期状態では、定義により、レジスタ内容が
メモリにコピーされるまでは清浄なレジスタが存在しな
いので、TOCはBOCに等しい。レジスタの清浄化は
バックグラウンドにおいてトランスペアレントに、すな
わちもしそうでなければ遊んでしまうプロセッササイク
ルを「盗む」ことにより実行される。
【0050】TOCがBOLより小さいとき、あるレジ
スタはメモリをまだ更新していない。レジスタ清浄化機
構は次のレジスタ、すなわちTOC+1での値をメモリ
にコピーする。この機構は次にTOCをインクリメント
し、その結果、TOCは常に先頭の清浄なレジスタをポ
インティングする。一般にローカルレジスタは頻繁に汚
染されるので、無視することができる。そこでBOLま
でしか清浄化しないことが好ましい。清浄化操作はソフ
トウエアからはトランスペアレントであり、ここで説明
するレジスタ割り当て/割り当て解除方法及び装置とは
独立である。
【0051】レジスタファイルポートアクセス回路 ケース1:スタティックレジスタアクセス 図5は本発明に関するレジスタファイルポートアクセス
回路140のブロック図を示している。物理レジスタ、
例えば128個のレジスタは、レジスタファイル144
のような一連のハードウエアレジスタファイル中に提供
される。図5に示されるタイプのアクセス回路が各レジ
スタファイルポートに対して提供される。回路機能の1
つは、例えばソフトウエアプロシージャにより提供され
るアドレスである論理アドレスRを、レジスタファイル
にアクセスするための対応する物理レジスタアドレスに
マッピングすることである。回路140において、論理
レジスタアドレスRがライン142上に入力され、マル
チプレクサ146への3つの入力の1つに結合される。
【0052】コンパレータ150は、Rの値を具体的な
アプリケーション中でのグローバルつまりスタティック
レジスタの個数(この例では32)に等しい定数と比較
し、この論理アドレスがスタティックレジスタの範囲の
中に入るかどうか(つまり、R<32かどうか)を判定
する。もしRが32より小さいときは、提示されたアド
レスがスタティックレジスタの範囲内にあり、コンパレ
ータ150からの出力はマルチプレクサ制御ライン15
2をアサートして、MUX146が物理アドレスとして
レジスタファイルに入力するものとして値R自体を選択
するようにする。言い換えれば、Rはスタティックレジ
スタについては修正されない。上述のように、スタティ
ックレジスタはスタックレジスタ操作には関与しない。
【0053】ケース2:レジスタスタックアクセス もしRが32以上(かつqupまたはpdnがアサート
されていない)ならば、Rは有効なレジスタスタック仮
想アドレスであり、物理レジスタアドレスにマッピング
されなければならない。さしあたり、循環レジスタが現
プロシージャに割り当てられていないと仮定する。この
場合、モジューロ加算を行う加算器(modulo-plus adde
r)154の出力はMUX146を介してレジスタファイ
ル144に供給される物理アドレスとして選択される。
モジューロ加算を行う加算器154は、物理レジスタア
ドレスを決定するためにモジューロ演算を使用して、論
理アドレスRをローカルリロケーション項(“lre
l”)、つまりオフセットと結合する。リロケーション
の加算は、スタック内に物理的に実装されているレジス
タ数についての法を取って実行される。ローカルリロケ
ーション項lrelは、(BOL値)−(固定されたレ
ジスタの個数)に等しい。lrelは任意であり、予め
定められたリロケーションオフセット量またはブロック
サイズに限定されない、ということに注意されたい。こ
のように、所与のプロシージャにより割り当てられた個
数丁度のレジスタが使用される。逆に、復帰に当たって
は、丁度同じ個数のレジスタが割り当て解除される。
【0054】説明のため、ハードウエアレジスタの総数
が128個で、レジスタ0から31が固定されたレジス
タであり、レジスタスタックが96個のレジスタを備え
ていると仮定する。次に、仮想スタックアドレスR=4
4及びBOL=40であると仮定する。すると、 Rと(BOL−32)をモジューロ加算したもの=(4
4+8)mod 96=52 である。この例では、モデューロ加算による回り込み
(ラップアラウンド)は起こらない。しかし、もしBO
L=90なら、 Rと(BOL−32)のモジューロ加算=(44+58
(つまり102))mod 96=6 である。ただし、このモジューロ加算演算の結果は更に
R0からR31を飛び越えるようにさせるので、最終的
には38となる。一般には、Pをスタックレジスタの総
数とし、iとjが、i<32ならj=i、i≧32なら
j=[(BOL+i−32)mod P]+32という
関係にあるとき、VRiはPRjをアクセスする。
【0055】ケース3:レジスタ復元及び清浄化 レジスタファイルポートアクセス回路140はまた、レ
ジスタ復元及びレジスタ「清浄化」(register cleanin
g)のためにアクセスができるようにする。制御信号qu
pは、すでに上書きされているがレジスタファイル内で
再度有効(valid)にしなければならないレジスタを復元
するためにメインメモリから読み出すことを指示する。
この制御信号は、もっと多くの有効なレジスタを提供す
るためにスタックアンダーフローにともなって使用され
る。qupがアサートされると、この信号はMUX14
6を制御して、レジスタファイルをアクセスするための
アドレスとしてQUPを選択する。QUPは復元される
べき次のレジスタのアドレス、すなわちBOV−1であ
る。
【0056】QUPはローカル空間の外側を清浄にする
ための次のレジスタのアドレスである。これは次の使用
可能な、つまり有効ではないレジスタである。よって、
QUPアドレスは単にTOL+1である。メインメモリ
の内容はレジスタファイルのこのアドレスにコピーさ
れ、定義によりそのレジスタを清浄にする。TOCは常
に清浄な空間の上限をポインティングするようにインク
リメントされる。
【0057】制御信号qdnはメインメモリにその内容
をコピー(書き込み)することによりレジスタを清浄に
することを指示する。qdnがアサートされると、それ
はQDNをレジスタファイルをアクセスするためのアド
レスとして選択するようにMUXを制御する。QDNは
清浄にすべき次のレジスタのアドレス、すなわちTOC
+1である。レジスタ清浄化機構はこのレジスタの内容
をメインメモリにコピーする。この機構は次にTOCを
インクリメントし、TOCが清浄なレジスタ群のうちの
上限にあるものを常にポインティングするようにする。
【0058】QUP及びQDNは互いに排他的である。
ポートはこれらの中の一方または他方の何れかを備える
が、両方ということはない。QUPはレジスタファイル
内のストアポートで実現され、常にメモリからの読み出
しを行う。QDNはレジスタファイル内の読み出しポー
トで実現され、常にメモリへの書き込みを行う。図5及
び図6中の“QUPまたはQDN”という表記法は、図
面を増やさずにこの相互の排他性を伝えようとするもの
である。
【0059】循環レジスタ実装付きのレジスタファイル
ポートアクセス 図6において、レジスタファイルポートアクセス回路1
60がブロックの形態で示されている。図6の回路16
0は図5の回路140と共通のいくつかの素子を備えて
いる。ここで同じ様な参照番号は共通の回路素子を示
す。共通の特徴の記載は省略する。図6はレジスタスタ
ック内で循環レジスタを実現するための追加の回路素子
を含んでいる。以前と同様に、論理アドレスRは入力ノ
ード142に提供される。コンパレータ164は論理ア
ドレスRとBOR(Bottom of Rotating)ポインタを比較
する。別のコンパレータ166はRとTORポインタを
比較する。RがBORより大きく、TORより小さいと
きは、論理アドレスは循環レジスタとして現プロシージ
ャに割り当てられたレジスタを指している。
【0060】物理アドレスrはRに循環リロケーション
項(rotating relocation term)rrelを加算したもの
に等しい。循環リロケーション項rrelは、循環レジ
スタ内で回り込みが起きないと仮定すると、循環レジス
タセット内の循環を考慮に入れれば、ローカルリロケー
ション項lrelに循環レジスタベース値(RRB)を
加算したものに等しい。従って、 r=R+lrel+RRB となる。しかし、循環レジスタ内で回り込みが起これ
ば、 r=R+lrel+RRB−(TOR−BOR) となる。
【0061】ここでTOR−BORは循環レジスタセッ
トの大きさを与える。アクセス回路160で、Rは加算
器170でrrelに加算され(前述のモデューロ加算
演算を使用)、その結果はMUX162に与えられる。
lrel及びRRBはRよりも前にわかるので、リロケ
ーション項rrelを前以って計算しておくことができ
る。回り込みが起こる場合、別のリロケーション項rr
el#がモジューロ加算器172でRに加算され、その
結果がMUX162に与えられる。ここで、rrel#
はlrel+RRB−(TOR−BOR)に等しい。r
としてMUX162で選択される値は、以下のように決
定される。何も手を打たないと論理アドレスが循環レジ
スタの境界を越えてしまう場合に循環レジスタ内で回り
込みが起こる。従って、問題は、 R−BOR+RRB>TOR−BOR かどうか? ということである。代数学から、このテス
トはR>TOR−RRBかどうか? というテストと等
価である。これは、RとTOR−RRBとを比較する、
図6のコンパレータ168により判定される。その判定
結果が真であれば、コンパレータ168は物理アドレス
rとしてモデューロプラス加算器172の出力を選択す
るようにMUX162を制御する。結果が偽であれば、
循環レジスタは回り込まなかったのであり、コンパレー
タ168は物理アドレスrとしてモデューロプラス加算
器170の出力を選択するようにMUX162を制御す
る。
【0062】種々の回路は回路140または160の所
要機能を達成するために工夫される。例えば、清浄なア
ドレスという特徴はあるアプリケーションでは実現され
るが他のアプリケーションでは実現されない。あるアプ
リケーションは従属(subject)スタック内の循環レジス
タを提供しないが、このようなアプリケーションでは図
5のような回路で十分である。他のアプリケーションで
は、循環オフセットRRBを他の場所で計算し、必要に
応じて結果を加算器170に提供してよい。夫々の実現
形態の、性能上のトレードオフを持ちやすい具体的内容
は、本明細書を読んだ当業者には自明であろう。レジス
タファイルポートアドレッシングがクリティカルパスで
あるアプリーケーションでは、例えば高速の並列ハード
ウエアが提案される。
【0063】図7は本発明を実現するためのレジスタフ
ァイルシステムの一例を概略的に示すブロック図であ
る。qup/pdn,TOR,BOR,RRB,QUP
/QDN,lrel,rrel及びrrel#が付され
た一連のレジスタは、対応するポインタ値を維持するた
めに提供される。これらのレジスタは、所要のポインタ
値を、上述したレジスタファイルポートアクセス回路1
60のような再マッピング回路に供給するためにバス1
76を介して結合されている。レジスタファイル144
内で使用される各レジスタファイルポート毎に、このよ
うな再マッピング回路が1つ提供される。この一般的な
構成の種々の変形は、前述の目的及び動作を見れば、熟
達したハードウエア設計者には明らかであろう。例え
ば、複数のポインタ値をもっと少ないレジスタ内に収め
てもよい。選択された途中の値または途中のアトレス
を、性能を最適化するために前以って計算しておいても
よい。種種の作業のハードウエアとソフトウエア(マイ
クロコードを含む)への振り分けのような他の変形は、
特定の実現形態についての設計上のトレードオフと適応
の問題であり、これらは皆上記実施例と等価であると考
えられる。
【0064】本発明の好ましい実施例で発明の原理を図
示、説明したが、本発明はその原理から逸脱することな
く配置及び細部を修正できることは当業者には明らかで
ある。本願特許請求の範囲の精神及び範囲内で得られる
全ての修正を本願の技術的範囲である。
【0065】
【効果】以上詳細に説明したように、本発明によればレ
ジスタを有効に活用でき、プロシージャ呼出し/復帰に
伴うレジスタセーブ/復元のためのメモリアクセスを最
小化することができる方法及び装置が提供される。
【図面の簡単な説明】
【図1】レジスタウインドウを示す概念図。
【図2】一連のレジスタの論理アドレス空間モデルを示
す図。
【図3A】本発明の操作を示す図2のレジスタセットの
論理アドレス空間モデルを示す図。
【図3B】本発明の操作を示す図2のレジスタセットの
論理アドレス空間モデルを示す図。
【図3C】本発明の操作を示す図2のレジスタセットの
論理アドレス空間モデルを示す図。
【図3D】本発明の操作を示す図2のレジスタセットの
論理アドレス空間モデルを示す図。
【図3E】本発明の操作を示す図2のレジスタセットの
論理アドレス空間モデルを示す図。
【図3F】本発明の操作を示す図2のレジスタセットの
論理アドレス空間モデルを示す図。
【図3G】本発明の操作を示す図2のレジスタセットの
論理アドレス空間モデルを示す図。
【図3H】本発明の操作を示す図2のレジスタセットの
論理アドレス空間モデルを示す図。
【図3I】本発明の操作を示す図2のレジスタセットの
論理アドレス空間モデルを示す図。
【図4A】図3Aの論理アドレス空間モデルに対応する
物理アドレス空間モデルを示す図。
【図4B】図3Bの論理アドレス空間モデルに対応する
物理アドレス空間モデルを示す図。
【図4C】図3Cの論理アドレス空間モデルに対応する
物理アドレス空間モデルを示す図。
【図4D】図3Dの論理アドレス空間モデルに対応する
物理アドレス空間モデルを示す図。
【図4E】図3Eの論理アドレス空間モデルに対応する
物理アドレス空間モデルを示す図。
【図4F】図3Fの論理アドレス空間モデルに対応する
物理アドレス空間モデルを示す図。
【図4G】図3Gの論理アドレス空間モデルに対応する
物理アドレス空間モデルを示す図。
【図4H】図3Hの論理アドレス空間モデルに対応する
物理アドレス空間モデルを示す図。
【図4I】図3Iの論理アドレス空間モデルに対応する
物理アドレス空間モデルを示す図。
【図5】本発明の一実施例を実現するレジスタファイル
ポートアクセス回路を示すハードウエアブロック図。
【図6】本発明の、レジスタスタック内に循環レジスタ
を有する他の実施例を実現するレジスタファイルポート
アクセス回路を示すハードウエアブロック図。
【図7】本発明を実現するレジスタファイルシステムの
一例を示すハードウエアブロック図。
【符号の説明】
BOV,BOL,TOL,OTOL,BOR,TOR:
ベースレジスタ 50:スタティックレジスタ 60:割り当てられていないアドレス空間 140,160:レジスタファイルポートアクセス回路 144:レジスタファイル 146:マルチプレクサ 150,164,166,168:コンパレータ 152:マルチプレクサ制御ライン 154,170,172:加算器
───────────────────────────────────────────────────── フロントページの続き (72)発明者 フレドリック・シー・アマーソン アメリカ合衆国カリフォルニア州サン タ・クララ、ヒルズデイル・アベニュー 451 アパートメント・ナンバー・ピ ー (72)発明者 ロバート・エム・イングリッシュ アメリカ合衆国カリフォルニア州メンロ ー・パーク、イースト・クリーク・プレ イス 4 (72)発明者 ラジブ・グプタ アメリカ合衆国カリフォルニア州ロス・ アルトス、エコー・ドライブ 1052 (72)発明者 渡邊 坦 神奈川県川崎市麻生区王禅寺1099番地 株式会社日立製作所 システム開発研究 所内 (56)参考文献 特開 平5−12015(JP,A) 特開 平4−92282(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/42

Claims (9)

    (57)【特許請求の範囲】
  1. 【請求項1】コンパイラの介在なしに、デジタルコンピ
    ュータにおいてプロシージャにレジスタを動的に割り当
    てる方法であって、 複数のスタックレジスタを有する論理レジスタスタック
    を定義するステップと、 前記論理レジスタスタックを物理レジスタセットにマッ
    ピングするためのオフセットを定義するために、ローカ
    ルリロケーション項(lrel)を初期化するステップ
    と、 第1のスタックポインタ値(TOL)を初期化すること
    により、第1のプロシージャによって指定される任意の
    数のスタックレジスタをローカルレジスタとして該第1
    のプロシージャに割り当てて、前記論理レジスタスタッ
    クにおいて該ローカルレジスタの範囲を区切るステップ
    と、 第1の循環レジスタポインタ値(BOR)および第2の
    循環レジスタポインタ値(TOR)を、前記第1のスタ
    ックポインタ値(TOL)に初期化するステップと、 前記第1のプロシージャによって循環レジスタとして指
    定されたレジスタの任意の数だけ、前記第2の循環レジ
    スタポインタ値(TOR)および前記第1のスタックポ
    インタ値(TOL)をインクリメントすることにより、
    レジスタを、循環レジスタとして前記第1のプロシージ
    ャに割り当てるステップと、 前記第1のプロシージャから復帰するに先立って、前記
    第2の循環レジスタポインタ値(TOR)および前記第
    1のスタックポインタ値(TOL)を、該第1のプロシ
    ージャの循環レジスタの数だけデクリメントすることに
    より、該循環レジスタの割り当てを解除するステップ
    と、 前記第1のプロシージャの実行中のレジスタアクセス操
    作に関連して、前記ローカルリロケーション項(lre
    l)に応答して物理アドレス(r)を求めることによ
    り、ローカルレジスタのそれぞれの論理レジスタアドレ
    ス(R)を、前記物理レジスタにマッピングするステッ
    プと、を含み、 前記物理レジスタにマッピングするステップは、 (a)前記論理レジスタアドレス(R)がスタティック
    レジスタの範囲内にあるならば、該論理レジスタアドレ
    ス(R)に等しくなるよう前記物理アドレスをセット
    し、 (b)前記論理レジスタアドレス(R)が前記スタティ
    ックレジスタの範囲内になく、かつ該論理レジスタが循
    環レジスタでないならば、前記論理レジスタ(R)およ
    び前記ローカルリロケーション項(lrel)を、前記
    任意の数のスタックレジスタを法とし、前記スタティッ
    クレジスタの範囲だけオフセットされたモジューロ加算
    を実行することで、前記物理アドレスをセットし、 (c)前記論理レジスタアドレス(R)がスタティック
    レジスタの範囲内になく、かつ前記論理レジスタが循環
    レジスタならば、前記論理レジスタアドレス(R)が、
    前記TORおよびBORによって定義される循環レジス
    タの範囲内にあるかどうかを判断し、 (c−1)前記論理アドレスRが前記循環レジスタの範
    囲内にあるならば、前記論理レジスタアドレス(R)お
    よび循環リロケーション項(rrel)のモジューロ加
    算したものに前記物理アドレスをセットし、該循環リロ
    ケーション項(rrel)は、循環レジスタベース値
    (RRB)に前記ローカルリロケーション項(lre
    l)を加算したものに等しく、 (c−2)前記論理レジスタアドレス(R)が前記循環
    レジスタの範囲内にないならば、前記論理レジスタアド
    レス(R)および別の循環リロケーション項(#rre
    l)のモジューロ加算したものに前記物理アドレスをセ
    ットし、該別の循環リロケーション項(#rrel)
    は、前記循環レジスタベース値(RRB)から前記循環
    レジスタの範囲を差し引いたものを前記ローカルリロケ
    ーション項(lrel)に加算したものに等しい、 プロシージャにレジスタを動的に割り当てる方法。
  2. 【請求項2】前記第1のスタックポインタ値(TOL)
    をストアして、第2のスタックポインタ値(OTOL)
    を形成するステップと、 前記第1のスタックポインタ値(TOL)をインクリメ
    ントすることにより、前記第1のプロシージャによって
    指定される任意の数の追加スタックレジスタを、パラメ
    ータ引き渡しレジスタとして該第1のプロシージャに割
    り当てて、該パラメータ引き渡しレジスタを含むように
    するステップと、 呼び出されたプロシージャが参照するために、前記割り
    当てられたパラメータ引き渡しレジスタに少なくとも1
    つのパラメータをストアするステップと、をさらに含
    み、 前記少なくとも1つのパラメータをストアする前記ステ
    ップは、前記ローカルリロケーション項に応答して、前
    記パラメータ引き渡しレジスタを前記物理レジスタセッ
    トにマッピングすることを含む、請求項1に記載のプロ
    シージャにレジスタを動的に割り当てる方法。
  3. 【請求項3】第2のプロシージャを呼び出すステップ
    と、 前記第1のプロシージャのパラメータ引き渡しレジスタ
    を有する初期ローカルレジスタスペースを前記第2のプ
    ロシージャに割り当て、該レジスタにストアされた前記
    少なくとも1つのパラメータを、メモリ参照なしに前記
    第2のプロシージャに利用可能なようにするステップ
    と、 前記スタックポインタ値をインクリメントすることによ
    り、前記第2のプロシージャによって指定される任意の
    数の追加のスタックレジスタを、ローカルレジスタとし
    て該第2のプロシージャに割り当て、前記第1のプロシ
    ージャのローカルレジスタの内容をはじめにメモリにセ
    ーブすることなしに、該第2のプロシージャのローカル
    レジスタを含むようにするステップと、 前記第2のプロシージャから復帰する時、ローカルレジ
    スタの数だけ前記スタックポインタ値をデクリメントす
    ることによって、該ローカルレジスタの割り当てを解除
    し、これによって、ローカルレジスタの内容をセーブお
    よび復元することなく、該第2のプロシージャを呼び出
    し、またそこから復帰するステップと、 をさらに含む、請求項2に記載のプロシージャにレジス
    タを動的に割り当てる方法。
  4. 【請求項4】前記第2のプロシージャを呼び出す時、前
    記第1および第2のスタックポインタ値(TOL、OT
    OL)をストアして、該第2のプロシージャから復帰す
    る際に参照するためのストアされた値を形成するステッ
    プをさらに含み、 前記割り当てを解除するステップは、前記第1および第
    2のスタックポインタ値を前記ストアされた値にリセッ
    トすることを含む、請求項3に記載のプロシージャにレ
    ジスタを動的に割り当てる方法。
  5. 【請求項5】追加のパラメータレジスタを前記第1のプ
    ロシージャに割り当てるステップをさらに含み、 前記第1および第2のスタックポインタ値をストアする
    前記ステップは、前記第2のプロシージャからの復帰の
    際に参照するために、スタックポインタオフセット値を
    前記追加のパラメータレジスタにストアすることを含
    む、請求項4に記載のプロシージャにレジスタを動的に
    割り当てる方法。
  6. 【請求項6】前記割り当てを解除するステップは、前記
    追加のパラメータレジスタにストアされた前記スタック
    ポインタオフセット値からスタックポインタ値を計算
    し、該計算された値に、前記スタックポインタ値をリセ
    ットすることを含む、請求項5に記載のプロシージャに
    レジスタを動的に割り当てる方法。
  7. 【請求項7】前記第2のプロシージャにおいて、前記第
    1のプロシージャのパラメータ引き渡しレジスタのうち
    の選択された一つに、計算された値をストアすることに
    よって、該計算された値を前記第1のプロシージャに返
    すステップをさらに含む、請求項3に記載のプロシージ
    ャにレジスタを動的に割り当てる方法。
  8. 【請求項8】スタティックレジスタセットを提供し、前
    記第2のプロシージャにおいて、該スタティックレジス
    タの選択された一つに、計算された値をストアすること
    によって、該計算された値を前記第1のプロシージャに
    返すステップをさらに含み、 これにより、前記パラメータレジスタが、次のプロシー
    ジャ呼び出しに即座に利用可能なようにする、請求項3
    に記載のプロシージャにレジスタを動的に割り当てる方
    法。
  9. 【請求項9】レジスタファイルポートをアクセスする物
    理アドレスを提供するためのレジスタファイルポートア
    クセス装置であって、 現プロシージャから仮想アドレス(R)を受け取る入力
    手段と、 前記仮想アドレス(R)を予め決められた定数と比較し
    て、該仮想アドレスがスタックレジスタのスタティック
    レジスタを示すかどうかを判断する第1のコンパレータ
    手段と、 前記仮想アドレスをローカルリロケーション項(lre
    l)に加算して、第1の物理アドレスを形成する手段
    と、 前記仮想アドレスおよび前記第1の物理アドレス(r)
    のうちの一つを選択して、該選択されたアドレスを前記
    レジスタファイルポートに接続する第1のマルチプレク
    サ手段と、 前記第1のマルチプレクサ手段に結合され、前記仮想ア
    ドレスがスタックレジスタを示すならば前記第1の物理
    アドレスを選択し、前記仮想アドレスがスタティックレ
    ジスタを示すならば該仮想アドレスを選択し、これによ
    り、スタックレジスタ参照を、前記現プロシージャに割
    り当てられた物理レジスタアドレスに振り替える制御手
    段と、 前記仮想アドレス(R)を第1および第2の循環レジス
    タポインタ値(BOR,TOR)と比較し、該仮想アド
    レスが、前記現プロシージャに循環レジスタとして割り
    当てられたレジスタを示すかどうかを判断する第2のコ
    ンパレータ手段と、 前記仮想アドレス(R)を第1の循環リロケーション項
    (rrel)に加算して、第1の物理アドレスを形成す
    る手段と、 前記仮想アドレス(R)を第2の循環リロケーション項
    (rrel#)に加算して、第2の物理アドレスを形成
    する手段と、 前記第1および第2の物理アドレスのうちの一つを選択
    し、該選択されたアドレスを、前記レジスタファイルポ
    ートアドレス端子に結合する第2のマルチプレクサ手段
    と、 前記第2のマルチプレクサ手段を制御して、前記仮想ア
    ドレス(R)が、前記循環レジスタセット内の回り込み
    を示さなければ前記第1の物理アドレスを選択し、前記
    仮想アドレスが前記循環レジスタ内の回り込みを示すな
    らば前記第2の物理アドレスを選択する制御手段と、を
    備え、 前記第1の循環リロケーション項(rrel)は、前記
    ローカルリロケーション項(lrel)に前記循環レジ
    スタのベース値(RRB)を加算したものに等しく、前
    記第2の循環リロケーション項(rrel#)は、前記
    循環レジスタベース値(RRB)から前記循環レジスタ
    セットのサイズを差し引いたものを、前記ローカルリロ
    ケーション項(lrel)に加算したものに等しく、こ
    れにより、前記循環レジスタセット内の回り込みを調整
    する、 レジスタファイルポートアクセス装置。
JP10805695A 1994-04-06 1995-04-06 レジスタ割当て方法及びレジスタファイルポートアクセス装置 Expired - Fee Related JP3529888B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US22380494A 1994-04-06 1994-04-06
US223,804 1994-04-06

Publications (2)

Publication Number Publication Date
JPH07281897A JPH07281897A (ja) 1995-10-27
JP3529888B2 true JP3529888B2 (ja) 2004-05-24

Family

ID=22838039

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10805695A Expired - Fee Related JP3529888B2 (ja) 1994-04-06 1995-04-06 レジスタ割当て方法及びレジスタファイルポートアクセス装置

Country Status (3)

Country Link
US (1) US5564031A (ja)
EP (1) EP0676691A3 (ja)
JP (1) JP3529888B2 (ja)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5896528A (en) * 1995-03-03 1999-04-20 Fujitsu Limited Superscalar processor with multiple register windows and speculative return address generation
KR0179840B1 (ko) * 1995-09-22 1999-05-15 문정환 레지스터 제어장치
US5758117A (en) * 1995-12-14 1998-05-26 International Business Machines Corporation Method and system for efficiently utilizing rename buffers to reduce dispatch unit stalls in a superscalar processor
DE69734399D1 (de) * 1996-01-24 2006-03-02 Sun Microsystems Inc Verfahren und vorrichtung zur stapel-cachespeicherung
US6298435B1 (en) * 1996-04-16 2001-10-02 International Business Machines Corporation Methods and apparatus for exploiting virtual buffers to increase instruction parallelism in a pipelined processor
US5890000A (en) * 1996-12-04 1999-03-30 International Business Machines Corporation Cooperation of global and local register allocators for better handling of procedures
US5893928A (en) * 1997-01-21 1999-04-13 Ford Motor Company Data movement apparatus and method
US5875336A (en) * 1997-03-31 1999-02-23 International Business Machines Corporation Method and system for translating a non-native bytecode to a set of codes native to a processor within a computer system
US5898885A (en) * 1997-03-31 1999-04-27 International Business Machines Corporation Method and system for executing a non-native stack-based instruction within a computer system
US6195734B1 (en) 1997-07-02 2001-02-27 Micron Technology, Inc. System for implementing a graphic address remapping table as a virtual register file in system memory
US6192457B1 (en) 1997-07-02 2001-02-20 Micron Technology, Inc. Method for implementing a graphic address remapping table as a virtual register file in system memory
US6314513B1 (en) 1997-09-30 2001-11-06 Intel Corporation Method and apparatus for transferring data between a register stack and a memory resource
US6263401B1 (en) 1997-09-30 2001-07-17 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for transferring data between a register stack and a memory resource
US6293712B1 (en) 1997-09-30 2001-09-25 Institute For The Development Of Emerging Architectures, Llc Method and apparatus for constructing a stack unwind data structure
US6065114A (en) * 1998-04-21 2000-05-16 Idea Corporation Cover instruction and asynchronous backing store switch
US5974531A (en) * 1998-02-17 1999-10-26 Industrial Technology Research Institute Methods and systems of stack renaming for superscalar stack-based data processors
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6219783B1 (en) 1998-04-21 2001-04-17 Idea Corporation Method and apparatus for executing a flush RS instruction to synchronize a register stack with instructions executed by a processor
US6115777A (en) * 1998-04-21 2000-09-05 Idea Corporation LOADRS instruction and asynchronous context switch
US6112292A (en) * 1998-04-21 2000-08-29 Idea Corporation Code sequence for asynchronous backing store switch utilizing both the cover and LOADRS instructions
US6298479B1 (en) * 1998-05-29 2001-10-02 Sun Microsystems, Inc. Method and system for compiling and linking source files
US6026242A (en) * 1998-05-29 2000-02-15 Sun Microsystems, Inc. Methods, computer program products, and apparatus for initializing global registers
US7117342B2 (en) 1998-12-03 2006-10-03 Sun Microsystems, Inc. Implicitly derived register specifiers in a processor
US7114056B2 (en) 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
US6487630B2 (en) 1999-02-26 2002-11-26 Intel Corporation Processor with register stack engine that dynamically spills/fills physical registers to backing store
GB2359641B (en) * 2000-02-25 2002-02-13 Siroyan Ltd Mapping circuitry and method
US6651247B1 (en) 2000-05-09 2003-11-18 Hewlett-Packard Development Company, L.P. Method, apparatus, and product for optimizing compiler with rotating register assignment to modulo scheduled code in SSA form
WO2002048871A1 (en) 2000-12-11 2002-06-20 Koninklijke Philips Electronics N.V. Signal processing device and method for supplying a signal processing result to a plurality of registers
JP2002182927A (ja) * 2000-12-13 2002-06-28 Hitachi Ltd 異種実行環境におけるレジスタの割当て方法、異種実行環境におけるソフトウェア開発方法、および、それを実行するプログラムが組み込まれたlsi
US6760830B2 (en) 2000-12-29 2004-07-06 Intel Corporation Modulo addressing
US20020099872A1 (en) * 2001-01-19 2002-07-25 Vinodha Ramasamy Allocating registers for use in programming code modification
JP2003167751A (ja) * 2001-04-24 2003-06-13 Ricoh Co Ltd プロセッサ処理方法およびプロセッサシステム
JP3763518B2 (ja) 2001-05-29 2006-04-05 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ、そのコンパイル方法およびプログラム
US20030237080A1 (en) * 2002-06-19 2003-12-25 Carol Thompson System and method for improved register allocation in an optimizing compiler
US7127592B2 (en) * 2003-01-08 2006-10-24 Sun Microsystems, Inc. Method and apparatus for dynamically allocating registers in a windowed architecture
JP2005129001A (ja) * 2003-09-30 2005-05-19 Toshiba Corp プログラム実行装置、マイクロプロセッサ及びプログラム実行方法
US7120775B2 (en) * 2003-12-29 2006-10-10 Intel Corporation Inter-procedural allocation of stacked registers for a processor
JP2006039874A (ja) 2004-07-26 2006-02-09 Fujitsu Ltd 情報処理装置
US7324106B1 (en) * 2004-07-27 2008-01-29 Nvidia Corporation Translation of register-combiner state into shader microcode
US7861234B1 (en) 2005-02-23 2010-12-28 Oracle America, Inc. System and method for binary translation to improve parameter passing
US7647481B2 (en) * 2005-02-25 2010-01-12 Qualcomm Incorporated Reducing power by shutting down portions of a stacked register file
US7735074B2 (en) * 2005-10-17 2010-06-08 Oracle International Corporation Code outlining without trampolines
US7962731B2 (en) 2005-10-20 2011-06-14 Qualcomm Incorporated Backing store buffer for the register save engine of a stacked register file
KR100662846B1 (ko) * 2005-11-09 2007-01-02 삼성전자주식회사 데이터 처리 시스템 및 데이터 처리방법
US7844804B2 (en) 2005-11-10 2010-11-30 Qualcomm Incorporated Expansion of a stacked register file using shadow registers
US8766995B2 (en) 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US8739162B2 (en) * 2007-04-27 2014-05-27 Hewlett-Packard Development Company, L.P. Accurate measurement of multithreaded processor core utilization and logical processor utilization
JP5186802B2 (ja) * 2007-05-08 2013-04-24 富士通セミコンダクター株式会社 マイクロプロセッサ
US7971041B2 (en) * 2008-05-29 2011-06-28 Advanced Micro Devices, Inc. Method and system for register management
US9298460B2 (en) 2011-11-29 2016-03-29 International Business Machines Corporation Register management in an extended processor architecture
KR101998278B1 (ko) * 2013-04-22 2019-10-01 삼성전자주식회사 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법
US10310863B1 (en) * 2013-07-31 2019-06-04 Red Hat, Inc. Patching functions in use on a running computer system
WO2016028410A1 (en) 2014-07-14 2016-02-25 Mill Computing, Inc. Execution and scheduling of software pipelined loops
US9779469B2 (en) 2015-08-17 2017-10-03 Qualcomm Incorporated Register spill management for general purpose registers (GPRs)
MA44821A (fr) * 2016-02-27 2019-01-02 Kinzinger Automation Gmbh Procédé d'allocation d'une pile de registres virtuels dans une machine à pile
EP3751477A4 (en) 2018-06-08 2021-11-03 Shanghai Cambricon Information Technology Co., Ltd GENERAL AUTOMATIC LEARNING MODEL, AND MODEL FILE PRODUCTION AND ANALYSIS METHOD
CN110580527B (zh) * 2018-06-08 2022-12-02 上海寒武纪信息科技有限公司 通用机器学习模型的生成方法、装置和存储介质
US20230069890A1 (en) * 2021-09-03 2023-03-09 Advanced Micro Devices, Inc. Processing device and method of sharing storage between cache memory, local data storage and register files

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3737871A (en) * 1971-07-28 1973-06-05 Hewlett Packard Co Stack register renamer
US4524416A (en) * 1980-04-15 1985-06-18 Honeywell Information Systems Inc. Stack mechanism with the ability to dynamically alter the size of a stack in a data processing system
US4445173A (en) * 1981-09-11 1984-04-24 Data General Corporation Improved system for saving and restoring state in call and return operations
US4777588A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. General-purpose register file optimized for intraprocedural register allocation, procedure calls, and multitasking performance
US4811208A (en) * 1986-05-16 1989-03-07 Intel Corporation Stack frame cache on a microprocessor chip
US5226128A (en) * 1987-05-01 1993-07-06 Hewlett-Packard Company Horizontal computer having register multiconnect for execution of a loop with a branch
US5036454A (en) * 1987-05-01 1991-07-30 Hewlett-Packard Company Horizontal computer having register multiconnect for execution of a loop with overlapped code
US5083267A (en) * 1987-05-01 1992-01-21 Hewlett-Packard Company Horizontal computer having register multiconnect for execution of an instruction loop with recurrance
DE3726192A1 (de) * 1987-08-06 1989-02-16 Otto Mueller Stacksteuerung
US5159680A (en) * 1988-07-28 1992-10-27 Sun Microsystems, Inc. Risc processing unit which selectively isolates register windows by indicating usage of adjacent register windows in status register
US5083263A (en) * 1988-07-28 1992-01-21 Sun Microsystems, Inc. BISC with interconnected register ring and selectively operating portion of the ring as a conventional computer
JPH02187825A (ja) * 1989-01-13 1990-07-24 Mitsubishi Electric Corp コンピュータ
US5129067A (en) * 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
JP2655191B2 (ja) * 1989-07-05 1997-09-17 三菱電機株式会社 演算処理装置
US5226142A (en) * 1990-11-21 1993-07-06 Ross Technology, Inc. High performance register file with overlapping windows
US5440714A (en) * 1992-12-14 1995-08-08 Industrial Technology Research Institute Method and system configuration for simplifying the decoding system for access to an register file with overlapping windows

Also Published As

Publication number Publication date
US5564031A (en) 1996-10-08
EP0676691A3 (en) 1996-12-11
EP0676691A2 (en) 1995-10-11
JPH07281897A (ja) 1995-10-27

Similar Documents

Publication Publication Date Title
JP3529888B2 (ja) レジスタ割当て方法及びレジスタファイルポートアクセス装置
JP5869009B2 (ja) スタックド・レジスタ・ファイルのレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファ
US7127592B2 (en) Method and apparatus for dynamically allocating registers in a windowed architecture
US6314513B1 (en) Method and apparatus for transferring data between a register stack and a memory resource
US7000072B1 (en) Cache memory allocation method
US6665749B1 (en) Bus protocol for efficiently transferring vector data
US7844804B2 (en) Expansion of a stacked register file using shadow registers
US7272702B2 (en) Method and apparatus for managing access to out-of-frame registers
US7610469B2 (en) Vector transfer system for packing dis-contiguous vector elements together into a single bus transfer
US6487630B2 (en) Processor with register stack engine that dynamically spills/fills physical registers to backing store
JP4599172B2 (ja) フリーバッファプールを使用することによるメモリの管理
CA2090194A1 (en) Method and system for avoiding selector loads
CA1172375A (en) Program call method
US6631452B1 (en) Register stack engine having speculative load/store modes
US6199156B1 (en) System for explicitly referencing a register for its current content when performing processor context switch
US6098160A (en) Data pointer for outputting indirect addressing mode addresses within a single cycle and method therefor
US7206923B2 (en) Method and apparatus for eliminating the need for register assignment, allocation, spilling and re-filling
JP2004030224A (ja) プロセッサ、レジスタ退避方法およびレジスタ指定方法
US20020144091A1 (en) Method and apparatus for dynamic register management in a processor
EP1104899A2 (en) Data processing apparatus and method of controlling the same
WO1994020905A1 (en) Method and apparatus for memory management
JP2004094533A (ja) 計算機システム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040226

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees