(57)【要約】【課題】  レジスタウィンドウ及びアウトオブオーダ実行方式を採用する情報処理装置において、ハードウェア資源を低減させるとともにデータリードのスループットを向上する。【解決手段】  ウィンドウ切替命令と、カレントレジスタ２０に保持されたデータもしくは置換バッファ３０に保持されたデータに係る命令処理とを実行する演算手段４０と、この演算手段４０がレジスタウィンドウの切替を実行するウィンドウ切替命令を実行した場合に、当該ウィンドウ切替命令がデコードされたときには、当該ウィンドウ切替命令の実行によってカレントウィンドウポインタ手段が指定するレジスタウィンドウのデータを置換バッファ３０に転送する制御手段５０とをそなえて構成する。【選択図】  図１
2007087108.tif 000002
【特許請求の範囲】
【請求項１】
ｉｎレジスタ、ｌｏｃａｌレジスタ及びｏｕｔレジスタの順序によるレジスタの組から構成されるレジスタウィンドウを複数有し、前記複数のレジスタウィンドウがリング状に構成される少なくとも一つのレジスタファイルと、
前記レジスタウィンドウにアクセスする場合において、現在のレジスタウィンドウ位置をポインタ値により示すカレントウィンドウポインタ手段と、
前記カレントウィンドウポインタ手段が示すポインタ値により指定されるレジスタウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、
前記レジスタファイルと前記カレントレジスタとの間に実装され、前記レジスタファイルから前記カレントレジスタに転送されるデータを保持する置換バッファと、
ウィンドウ切替命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータに係る命令処理とを実行する演算手段と、
前記演算手段が前記レジスタウィンドウの切替を実行するウィンドウ切替命令を実行した場合に、前記ウィンドウ切替命令がデコードされたときには、当該ウィンドウ切替命令の実行によって前記カレントウィンドウポインタ手段が指定する前記レジスタウィンドウのデータを前記置換バッファに転送する制御手段と、を備えることを特徴とする演算処理装置。
【請求項２】
前記制御手段が、前記演算手段が前記ウィンドウ切替命令の実行を完了した場合に、前記カレントレジスタが保持しているデータを前記置換バッファに保持しているデータに置換することにより、当該ウィンドウ切替命令によって切り替えられる次のレジスタウィンドウのデータを前記カレントレジスタに保持させることを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記演算手段が、前記レジスタファイル及び前記カレントレジスタに対して前記命令処理の結果データの書込みを行うことを特徴とする請求項１又は２記載の演算処理装置。
【請求項４】
前記演算手段が、前記レジスタファイル及び前記カレントレジスタの双方に対して同時に前記命令処理の結果データの書込みを行うことを特徴とする請求項１又は２記載の演算処理装置。
【請求項５】
前記レジスタファイルにおいて、互いに隣接する２つのレジスタウィンドウのうちの一方のレジスタウィンドウのｉｎレジスタと、他方のレジスタウィンドウのｏｕｔレジスタとが共有されることを特徴とする、請求項１乃至４のいずれか１項に記載の演算処理装置。
【請求項６】
前記演算手段が前記ウィンドウ切替命令をデコードした場合には、前記制御手段が、当該ウィンドウ切替命令の実行によって前記カレントウィンドウポインタ手段が指定する前記レジスタウィンドウのｌｏｃａｌレジスタが保持するデータ及び、ｉｎレジスタ又はｏｕｔレジスタのうちいずれか一方が保持するデータを前記置換バッファへ転送することを特徴とする請求項５記載の演算処理装置。
【請求項７】
前記演算手段が前記ウィンドウ切替命令の実行を完了した場合には、前記制御手段が、前記置換バッファから前記ポインタ値が示すレジスタウィンドウのｌｏｃａｌレジスタが保持するデータ及び、ｉｎレジスタ又はｏｕｔレジスタのうちいずれか一方が保持するデータを前記カレントレジスタへ転送することを特徴とする請求項５又は６記載の演算処理装置。
【請求項８】
ウィンドウを複数有し、前記複数のウィンドウがリング状に構成される複数のレジスタウィンドウを有するレジスタファイルと、
前記レジスタウィンドウにアクセスする場合において、現在のウィンドウ位置をポインタ値により示すカレントウィンドウポインタ手段と、
前記カレントウィンドウポインタ手段が示すポインタ値により指定される前記１つのウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、
前記レジスタファイルと前記カレントレジスタとの間に実装され、前記レジスタファイルから前記カレントレジスタに転送される前記ウィンドウのデータを保持する置換バッファと、
前記ウィンドウ切替命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータに係る命令処理とを実行する演算手段と、
前記演算手段が前記ウィンドウの切替を実行するウィンドウ切替命令を実行した場合に、前記ウィンドウ切替命令がデコードされたときには、当該ウィンドウ切替命令の実行によって前記カレントウィンドウポインタ手段が指定する前記レジスタウィンドウのデータを前記置換バッファに転送する制御手段と、を備え、
前記制御手段が、前記演算手段が前記カレントウィンドウポインタ手段が保持するポインタ値を更新するロードポインタ命令を実行した場合に、前記ポインタ値が更新されたときには、前記レジスタファイルから前記更新後のポインタ値が示す１レジスタウィンドウ分のデータを前記置換バッファを介して前記カレントレジスタへ転送することを特徴とする演算処理装置。
【請求項９】
前記レジスタファイルのウィンドウは、ｉｎレジスタ、ｌｏｃａｌレジスタ及びｏｕｔレジスタの順序によるレジスタの組と、前記レジスタウィンドウ間で共有される１組のｇｌｏｂａｌレジスタとから構成され、
前記レジスタファイルから前記置換バッファ、あるいは前記置換バッファから前記カレントレジスタへ転送される前記１レジスタウィンドウ分のデータを、それぞれ前記ｇｌｏｂａｌレジスタ、ｏｕｔレジスタ、ｉｎレジスタ、ｌｏｃａｌレジスタに係るデータの順序により転送を行うことを特徴とする請求項８記載の演算処理装置。
【請求項１０】
ｉｎレジスタ、ｌｏｃａｌレジスタ及びｏｕｔレジスタの順序によるレジスタの組から構成されるレジスタウィンドウを複数有し、前記複数のレジスタウィンドウがリング状に構成される少なくとも一つのレジスタファイルと、
前記レジスタウィンドウにアクセスする場合において、現在のレジスタウィンドウ位置をポインタ値により示すカレントウィンドウポインタ手段と、
前記カレントウィンドウポインタ手段が示すポインタ値により指定されるレジスタウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、
前記レジスタファイルと前記カレントレジスタとの間に実装され、前記レジスタファイルから前記カレントレジスタに転送されるデータを保持する置換バッファと、
ウィンドウ切替命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータに係る命令処理とを実行する演算手段と、
前記演算手段が前記レジスタウィンドウの切替を実行するウィンドウ切替命令を実行した場合に、前記ウィンドウ切替命令がデコードされたときには、当該ウィンドウ切替命令の実行によって前記カレントウィンドウポインタ手段が指定する前記レジスタウィンドウのデータを前記置換バッファに転送する制御手段と、を備える演算処理装置を有することを特徴とする情報処理装置。
【請求項１１】
前記制御手段が、前記演算手段が前記ウィンドウ切替命令の実行を完了した場合に、前記カレントレジスタが保持しているデータを前記置換バッファに保持しているデータに置換することにより、当該ウィンドウ切替命令によって切り替えられる次のレジスタウィンドウのデータを前記カレントレジスタに保持させる演算処理装置を有することを特徴とする請求項１０記載の情報処理装置。
【請求項１２】
前記演算手段が、前記レジスタファイル及び前記カレントレジスタに対して前記命令処理の結果データの書込みを行う演算処理装置を有することを特徴とする請求項１０又は１１記載の情報処理装置。
【請求項１３】
前記演算手段が、前記レジスタファイル及び前記カレントレジスタの双方に対して同時に前記命令処理の結果データの書込みを行う演算処理装置を有することを特徴とする請求項１０又は１１記載の情報処理装置。
【請求項１４】
前記レジスタファイルにおいて、互いに隣接する２つのレジスタウィンドウのうちの一方のレジスタウィンドウのｉｎレジスタと、他方のレジスタウィンドウのｏｕｔレジスタとが共有される演算処理装置を有することを特徴とする、請求項１０乃至１３のいずれか１項に記載の情報処理装置。
【請求項１５】
前記演算手段が前記ウィンドウ切替命令をデコードした場合には、前記制御手段が、当該ウィンドウ切替命令の実行によって前記カレントウィンドウポインタ手段が指定する前記レジスタウィンドウのｌｏｃａｌレジスタが保持するデータ及び、ｉｎレジスタ又はｏｕｔレジスタのうちいずれか一方が保持するデータを前記置換バッファへ転送する演算装置を有することを特徴とする請求項１４記載の情報処理装置。
【請求項１６】
前記演算手段が前記ウィンドウ切替命令の実行を完了した場合には、前記制御手段が、前記置換バッファから前記ポインタ値が示すレジスタウィンドウのｌｏｃａｌレジスタが保持するデータ及び、ｉｎレジスタ又はｏｕｔレジスタのうちいずれか一方が保持するデータを前記カレントレジスタへ転送する演算処理装置を有することを特徴とする請求項１４又は１５記載の情報処理装置。
【請求項１７】
ウィンドウを複数有し、前記複数のウィンドウがリング状に構成される複数のレジスタウィンドウを有するレジスタファイルと、
前記レジスタウィンドウにアクセスする場合において、現在のウィンドウ位置をポインタ値により示すカレントウィンドウポインタ手段と、
前記カレントウィンドウポインタ手段が示すポインタ値により指定される前記１つのウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、
前記レジスタファイルと前記カレントレジスタとの間に実装され、前記レジスタファイルから前記カレントレジスタに転送される前記ウィンドウのデータを保持する置換バッファと、
前記ウィンドウ切替命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータに係る命令処理とを実行する演算手段と、
前記演算手段が前記ウィンドウの切替を実行するウィンドウ切替命令を実行した場合に、前記ウィンドウ切替命令がデコードされたときには、当該ウィンドウ切替命令の実行によって前記カレントウィンドウポインタ手段が指定する前記レジスタウィンドウのデータを前記置換バッファに転送する制御手段と、を備え、
前記制御手段が、前記演算手段が前記カレントウィンドウポインタ手段が保持するポインタ値を更新するロードポインタ命令を実行した場合に、前記ポインタ値が更新されたときには、前記レジスタファイルから前記更新後のポインタ値が示す１レジスタウィンドウ分のデータを前記置換バッファを介して前記カレントレジスタへ転送する演算処理装置を有することを特徴とする情報処理装置。
【請求項１８】
前記レジスタファイルのウィンドウは、ｉｎレジスタ、ｌｏｃａｌレジスタ及びｏｕｔレジスタの順序によるレジスタの組と、前記レジスタウィンドウ間で共有される１組のｇｌｏｂａｌレジスタとから構成され、
前記レジスタファイルから前記置換バッファ、あるいは前記置換バッファから前記カレントレジスタへ転送される前記１レジスタウィンドウ分のデータを、それぞれ前記ｇｌｏｂａｌレジスタ、ｏｕｔレジスタ、ｉｎレジスタ、ｌｏｃａｌレジスタに係るデータの順序により転送を行う演算処理装置を有することを特徴とする請求項１７記載の情報処理装置。
【請求項１９】
レジスタの組から構成される複数のレジスタウィンドウがリング状に構成されるレジスタファイルと、現在のレジスタウィンドウ位置をポインタ値により示すカレントウィンドウポインタ手段と、前記ポインタ値により指定される前記レジスタウィンドウが保持するデータを前記レジスタファイルから読み出して保持するカレントレジスタと、前記レジスタファイルから前記カレントレジスタに転送される前記データを保持する置換バッファと、ウィンドウ切替命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータに係る命令処理とを実行する演算手段とを備える演算処理装置におけるレジスタファイルの制御方法であって、
前記演算手段が前記レジスタウィンドウの切替を実行するウィンドウ切替命令を実行した場合に、前記ウィンドウ切替命令がデコードされたときには、当該ウィンドウ切替命令の実行によって前記カレントウィンドウポインタ手段が指定する前記レジスタウィンドウのデータを前記置換バッファに転送する転送ステップを含んでいることを特徴とするレジスタファイルの制御方法。
【請求項２０】
前記演算手段が前記ウィンドウ切替命令の実行を完了した場合に、前記カレントレジスタが保持しているデータを前記置換バッファに保持しているデータに置換することにより、当該ウィンドウ切替命令によって切り替えられる次のレジスタウィンドウのデータを前記カレントレジスタに保持させる置換ステップを含んでいることを特徴とする請求項１９記載のレジスタファイルの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レジスタウィンドウを持つアーキテクチャの情報処理装置において、アウトオブオーダ命令実行方式を採用した場合に、レジスタウィンドウの切り替えを追い越して命令の実行順序を入れ替えることができるようにするための技術に関する。
【背景技術】
【０００２】
従来から、縮小命令セット型アーキテクチャを採用する情報処理装置（RISC：Reduced Instruction Set Computer）には、複数のレジスタセット（以下、レジスタウィンドウという）を持ち、サブルーチンのコール／リターン時に発生するレジスタのメモリスタック上への退避／復帰を不要にするものがある。
レジスタウィンドウはリング状に連結され、その管理はレジスタウィンドウ番号（以下、ウィンドウ番号と呼ぶ）で行われる。例えば、ウィンドウ番号が０〜７の８つのレジスタウィンドウを備え、０、１、２、・・・、７といった順番に使用される。使用中のウィンドウ番号はウィンドウ番号を保持するレジスタ（以下、ＣＷＰ（Current Window Pointer）という）によって保持される。
【０００３】
図５はリング状レジスタファイルＡの構成を示した図である。このレジスタファイルＡでは、各レジスタウィンドウＷ０〜Ｗ７がオーバーラップしながらリング状に連結されている。各レジスタウィンドウＷ０〜Ｗ７のそれぞれは、例えば、３２本の６４ビットレジスタからなり、そのうち８本のレジスタ（Globalレジスタ；図示略）は全てのレジスタウィンドウＷ０〜Ｗ７で共通であり、それ以外の２４本のレジスタは、８本ずつに３つの領域（図中の“ｉｎｓ”，“ｌｏｃａｌｓ”，“ｏｕｔｓ”）に区切られて構成されている。
【０００４】
つまり、レジスタウィンドウＷ０を例にあげると、左端の８本のレジスタＷ０ｉｎｓは１つ前のレジスタウィンドウＷ７のレジスタＷ７ｏｕｔｓとオーバーラップし共通する（つまり、レジスタＷ７ｏｕｔｓとしても機能する）ものである。また、中央の８本のレジスタＷ０ｌｏｃａｌｓはどことも重複せずに独自のデータを保持する。最後に右端の８本のレジスタＷ０ｏｕｔｓは１つ後のレジスタウィンドウＷ１のレジスタＷ１ｉｎｓと共通である。なお、レジスタウィンドウＷ１〜Ｗ７もレジスタウィンドウＷ０と同様にｉｎｓの８本のレジスタが一つ前のｏｕｔｓのレジスタウィンドウの８本のレジスタと共通し、中央の８本のレジスタがどことも重複せずに独自のデータを保持し、ｏｕｔｓの８本のレジスタが一つ後のｉｎｓのレジスタウィンドウの８本のレジスタとオーバーラップし共通する。
【０００５】
このような図５に示すレジスタファイルＡを、オーバラップレジスタウィンドウと呼ぶ。
このレジスタファイルＡにおいて、ＣＷＰが示す現在のレジスタウィンドウＷ０〜Ｗ７を切り替えるレジスタウィンドウ切替命令（以下、単に切替命令ともいう）には、ＣＷＰをインクリメントするＳＡＶＥ命令と、ＣＷＰをデクリメントするＲＥＳＴＯＲＥ命令（ＲＥＴＵＲＮ命令）とがある。以下、レジスタウィンドウ切替命令をＳＡＶＥ命令、ＲＥＳＴＯＲＥ命令と称する。なお、図５においてＣＷＰはレジスタウィンドウＷ０を示している。
【０００６】
レジスタファイルＡは、ウィンドウ数ｎ＝８（レジスタウィンドウＷ０〜Ｗ７）で構成した場合であり、ｌｏｃａｌ領域が８本×８ウィンドウ＝６４本、オーバラップしているｉｎ／ｏｕｔ領域が８本×８ウィンドウ＝６４本、ｇｌｏｂａｌレジスタ（不図示）が８本の合わせて１３６本のレジスタを持ち、その全てのレジスタに読み書きできる必要がある。
【０００７】
このような大きなレジスタファイルＡからデータを読み出す回路の速度と規模が問題であったため、従来から図６に示すごとく構成された情報処理装置１００がある。この情報処理装置１００は、マスタレジスタファイル（ＭＲＦ：Master Register File）１０１，ワーキングレジスタファイル（ＷＲＦ：Working Register File）１０２，及び演算器１０３をそなえて構成される。なお、演算器１０３は命令を実行する実行部（図中“Execution unit”と表記）と記憶部（図中“Memory unit”と表記）とから構成される。
【０００８】
一般に、レジスタウィンドウはウィンドウ数が多くなると非常に大きなレジスタファイルが必要になり（８ウィンドウでは１３６本）、演算器へオペランドを高速に供給することが困難になる。
そのため、図６のように全てのウィンドウを保持するＭＲＦ１０１に加えて、このＭＲＦ１０１内のＣＷＰで示される現在のレジスタウィンドウのデータのコピーを保持するサブセットとしてのＷＲＦ１０２を具備し、演算器１０３へのオペランド供給は、このＷＲＦ１０２により行なう。ＷＲＦ１０２はＣＷＰで示されるウィンドウのみを保持するので、容量は３２エントリとＭＲＦ１０１に比べて小さくでき、その結果、演算器１０３の読み出しを高速化できる。
【０００９】
しかし、情報処理装置１００のような構成を取ると、ＷＲＦ１０２中にはＣＷＰが示す現在のレジスタウィンドウ一つ分のレジスタしか存在しないため、ＳＡＶＥ命令又はＲＥＳＴＯＲＥ命令が実行されると、その後続命令で必要となるオペランドをＷＲＦ１０２から供給できなくなるという新たな問題が生じる。
そのため、ＳＡＶＥ命令又はＲＥＳＴＯＲＥ命令が実行されると、ＷＲＦ１０２を新しいウィンドウの値に入れ替えなければならず、ＭＲＦ１０１からＷＲＦ１０２へのウィンドウ（データ）転送処理が発生し、その間以後の命令実行はストールすることになる。
【００１０】
また、アウトオブオーダ命令実行により命令の処理順序を入れ替えて処理する情報処理装置では、プログラムの順序に関係なく処理可能な命令から実行を行うが、ＳＡＶＥ命令やＲＥＳＴＯＲＥ命令に後続する命令は、たとえ処理可能になったとしてもＷＲＦ１０２中にＳＡＶＥ／ＲＥＳＴＯＲＥ実行後のウィンドウが転送されるまでは、命令を実行することができない。
【００１１】
このような制約は同時命令発行数の大きいアウトオブオーダ命令実行方式の情報処理装置においては非常に大きな性能低下を引き起こす。アウトオブオーダ命令実行方式の情報処理装置では、多くの命令をフェッチし、バッファにそれらの命令を蓄えておき、そのバッファの中から実行可能な命令をプログラムに指定された実行順序を入れ替えて実行することにより、命令実行のスループットを上げている。
【００１２】
したがって、上記のようなＳＡＶＥ命令やＲＥＳＴＯＲＥ命令を挟んでの命令実行順序の変更ができないという制約があると、ＳＡＶＥ命令やＲＥＳＴＯＲＥ命令が出現する度にアウトオブオーダ処理機構が機能せず大幅な性能低下を招くことになる。
そこで、図７に示すごとく、ＷＲＦ１１２にＣＷＰが示す現在のレジスタウィンドウのデータ（Ｇ，Ｌ１，Ｉｏ１，Ｉｏ２）に加えて、当該レジスタウィンドウの前後のレジスタウィンドウ（Ｌ２，Ｉｏ３，Ｌ３，Ｉｏ４）のデータを保持する（すなわち、ＣＷＰ＋１，ＣＷＰ−１で示されるレジスタウィンドウのレジスタを予め先見転送する）ように構成して、ＳＡＶＥ命令やＲＥＳＴＯＲＥ命令後の命令に対してもアウトオブオーダ実行させることができるようした情報処理装置１１０がある（例えば、下記特許文献１参照）。
【００１３】
この情報処理装置１１０は、ＭＲＦ１１１からＷＲＦ１１２へデータを転送する際に、データをラッチするためのレジスタ（ここでは８本×８バイト）１１３が、ＭＲＦ１１１とＷＲＦ１１２との間に実装されている。
そして、ＷＲＦ１１２には、図８に示すごとく、ＣＷＰが示す現在のレジスタウィンドウ（ここでは、ＣＷＰが現在示すレジスタウィンドウを“ＣＷＰ”で表わし、ＣＷＰの一つ次のレジスタウィンドウ（現在のＣＷＰをインクリメントした後のレジスタウィンドウ）を“ＣＷＰ＋１”で表わし、ＣＷＰの一つ前のレジスタウィンドウ（現在のＣＷＰをデクリメントした後のレジスタウィンドウ）を“ＣＷＰ−１”で表わす。なお、以下の説明においてもレジスタウィンドウＷ０〜Ｗ７を上記のＣＷＰとの関係に基づいて“ＣＷＰ”，“ＣＷＰ＋１”，“ＣＷＰ−１”で表わす場合がある。）のレジスタである、ＣＷＰのＩｎｓ（ＣＷＰ−１のＯｕｔｓと共通），ＣＷＰのＬｏｃａｌｓ，ＣＷＰのＯｕｔｓ（ＣＷＰ＋１のＩｎｓと共通），及びＣＷＰのＧｌｏｂａｌｓの内容が保持されるとともに、ＲＥＳＴＯＲＥ命令実行後の命令で必要なレジスタウィンドウのレジスタであるＣＷＰ−１のＩｎｓ，ＣＷＰ−１のＬｏｃａｌｓ、及び、ＳＡＶＥ命令実行後の命令で必要なレジスタウィンドウのレジスタであるＣＷＰ＋１のＯｕｔｓ，ＣＷＰ＋１のＬｏｃａｌｓが保持される。
【００１４】
したがって、この情報処理装置１１０によれば、図９に示すごとく、例えば、ＣＷＰがレジスタウィンドウＷ３を示している場合、ＳＡＶＥ命令が実行（図中の両矢印“Ｅ”参照）されるまでは、ＷＲＦ１１２がレジスタウィンドウＷ２〜Ｗ４のデータを保持しているので、演算器１０３は、レジスタウィンドウＷ２〜Ｗ４の命令を実行することができる。なお、図９において“Ｄ”の両矢印は命令のデコード（Decode；Fetch, Issueサイクル）を示し、“Ｅ”の両矢印は命令の実行（Execute；Dispatch, Execute, Update Bufferサイクル）を示し、“Ｗ”の両矢印は命令の完了（Write back；Commitサイクル）を示している。
【００１５】
そして、ＳＡＶＥ命令実行後、ＣＷＰがレジスタウィンドウＷ４を示すので、情報処理装置１１０はレジスタ１１３を介してレジスタウィンドウＷ５のデータをＭＲＦ１１１からＷＲＦ１１２に転送する。その結果、ＷＲＦ１１２にはレジスタウィンドウＷ３〜Ｗ５のデータを保持することになり、演算器１０３はレジスタウィンドウＷ３〜Ｗ５の命令を実行することができる。
【００１６】
なお、この情報処理装置１１０では、演算器１０３はＳＡＶＥ命令の実行前にレジスタウィンドウＷ４、もしくは、ＲＥＳＴＯＲＥ命令の実行前にレジスタウィンドウＷ２の命令を実行することができる。
【特許文献１】特開２００３−１９６０８６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
しかしながら、上述した従来の情報処理装置１１０では、ＷＲＦ１１２が３つ分のレジスタウィンドウのデータを保持するために、ラッチ用のレジスタ１１３の８本と、ＷＲＦ１１２の６４本との合計７２本のレジスタをそなえていなければならず、又図６に示す情報処理装置１００のＷＲＦ１０２に対して４０本のレジスタを追加しなければならず、ハードウェア資源が増大してしまう。
【００１８】
したがって、ＷＲＦ１１２及び演算器１０３へデータを読み出すための選択回路の面積（回路規模）が大きくなってしまうとともに、これに伴って、演算器１０３によるＷＲＦ１１２からのデータリードのスループットが遅くなってしまう。
本発明は、このような課題に鑑み創案されたもので、レジスタウィンドウ及びアウトオブオーダ実行方式を採用する情報処理装置において、ハードウェア資源を低減させるとともにデータリードのスループットを向上することを目的とする。
【課題を解決するための手段】
【００１９】
上記目的を達成するために、本発明の演算処理装置は、ｉｎレジスタ、ｌｏｃａｌレジスタ及びｏｕｔレジスタの順序によるレジスタの組から構成されるレジスタウィンドウを複数有し、前記複数のレジスタウィンドウがリング状に構成される少なくとも一つのレジスタファイルと、前記レジスタウィンドウにアクセスする場合において、現在のレジスタウィンドウ位置をポインタ値により示すカレントウィンドウポインタ手段と、前記カレントウィンドウポインタ手段が示すポインタ値により指定されるレジスタウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、前記レジスタファイルと前記カレントレジスタとの間に実装され、前記レジスタファイルから前記カレントレジスタに転送されるデータを保持する置換バッファと、ウィンドウ切替命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータに係る命令処理とを実行する演算手段と、前記演算手段が前記レジスタウィンドウの切替を実行するウィンドウ切替命令を実行した場合に、前記ウィンドウ切替命令がデコードされたときには、当該ウィンドウ切替命令の実行によって前記カレントウィンドウポインタ手段が指定する前記レジスタウィンドウのデータを前記置換バッファに転送する制御手段と、を備えることを特徴とする（請求項１）。
【００２０】
さらに、本発明の演算処理装置は、前記制御手段が、前記演算手段が前記ウィンドウ切替命令の実行を完了した場合に、前記カレントレジスタが保持しているデータを前記置換バッファに保持しているデータに置換することにより、当該ウィンドウ切替命令によって切り替えられる次のレジスタウィンドウのデータを前記カレントレジスタに保持させることが好ましい（請求項２）。
【００２１】
さらに、本発明の演算処理装置は、前記演算手段が、前記レジスタファイル及び前記カレントレジスタに対して前記命令処理の結果データの書込みを行うことが好ましい（請求項３）。
さらに、本発明の演算処理装置は、前記演算手段が、前記レジスタファイル及び前記カレントレジスタの双方に対して同時に前記命令処理の結果データの書込みを行うことが好ましい（請求項４）。
【００２２】
さらに、本発明の演算処理装置は、前記レジスタファイルにおいて、互いに隣接する２つのレジスタウィンドウのうちの一方のレジスタウィンドウのｉｎレジスタと、他方のレジスタウィンドウのｏｕｔレジスタとが共有されることが好ましい（請求項５）。
さらに、本発明の演算処理装置は、前記演算手段が前記ウィンドウ切替命令をデコードした場合には、前記制御手段が、当該ウィンドウ切替命令の実行によって前記カレントウィンドウポインタ手段が指定する前記レジスタウィンドウのｌｏｃａｌレジスタが保持するデータ及び、ｉｎレジスタ又はｏｕｔレジスタのうちいずれか一方が保持するデータを前記置換バッファへ転送することが好ましい（請求項６）。
【００２３】
さらに、本発明の演算処理装置は、前記演算手段が前記ウィンドウ切替命令の実行を完了した場合には、前記制御手段が、前記置換バッファから前記ポインタ値が示すレジスタウィンドウのｌｏｃａｌレジスタが保持するデータ及び、ｉｎレジスタ又はｏｕｔレジスタのうちいずれか一方が保持するデータを前記カレントレジスタへ転送することが好ましい（請求項７）。
【００２４】
また、上記目的を達成するために、本発明の演算処理装置は、ウィンドウを複数有し、前記複数のウィンドウがリング状に構成される複数のレジスタウィンドウを有するレジスタファイルと、前記レジスタウィンドウにアクセスする場合において、現在のウィンドウ位置をポインタ値により示すカレントウィンドウポインタ手段と、前記カレントウィンドウポインタ手段が示すポインタ値により指定される前記１つのウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、前記レジスタファイルと前記カレントレジスタとの間に実装され、前記レジスタファイルから前記カレントレジスタに転送される前記ウィンドウのデータを保持する置換バッファと、前記ウィンドウ切替命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータに係る命令処理とを実行する演算手段と、前記演算手段が前記ウィンドウの切替を実行するウィンドウ切替命令を実行した場合に、前記ウィンドウ切替命令がデコードされたときには、当該ウィンドウ切替命令の実行によって前記カレントウィンドウポインタ手段が指定する前記レジスタウィンドウのデータを前記置換バッファに転送する制御手段と、を備え、前記制御手段が、前記演算手段が前記カレントウィンドウポインタ手段が保持するポインタ値を更新するロードポインタ命令を実行した場合に、前記ポインタ値が更新されたときには、前記レジスタファイルから前記更新後のポインタ値が示す１レジスタウィンドウ分のデータを前記置換バッファを介して前記カレントレジスタへ転送することを特徴とする（請求項８）。
【００２５】
さらに、本発明の演算処理装置は、前記レジスタファイルのウィンドウは、ｉｎレジスタ、ｌｏｃａｌレジスタ及びｏｕｔレジスタの順序によるレジスタの組と、前記レジスタウィンドウ間で共有される１組のｇｌｏｂａｌレジスタとから構成され、前記レジスタファイルから前記置換バッファ、あるいは前記置換バッファから前記カレントレジスタへ転送される前記１レジスタウィンドウ分のデータを、それぞれ前記ｇｌｏｂａｌレジスタ、ｏｕｔレジスタ、ｉｎレジスタ、ｌｏｃａｌレジスタに係るデータの順序により転送を行うことが好ましい（請求項９）。
【００２６】
また、上記目的を達成するために、本発明の情報処理装置は、ｉｎレジスタ、ｌｏｃａｌレジスタ及びｏｕｔレジスタの順序によるレジスタの組から構成されるレジスタウィンドウを複数有し、前記複数のレジスタウィンドウがリング状に構成される少なくとも一つのレジスタファイルと、前記レジスタウィンドウにアクセスする場合において、現在のレジスタウィンドウ位置をポインタ値により示すカレントウィンドウポインタ手段と、前記カレントウィンドウポインタ手段が示すポインタ値により指定されるレジスタウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、前記レジスタファイルと前記カレントレジスタとの間に実装され、前記レジスタファイルから前記カレントレジスタに転送されるデータを保持する置換バッファと、ウィンドウ切替命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータに係る命令処理とを実行する演算手段と、前記演算手段が前記レジスタウィンドウの切替を実行するウィンドウ切替命令を実行した場合に、前記ウィンドウ切替命令がデコードされたときには、当該ウィンドウ切替命令の実行によって前記カレントウィンドウポインタ手段が指定する前記レジスタウィンドウのデータを前記置換バッファに転送する制御手段と、を備える演算処理装置を有することを特徴とする（請求項１０）。
【００２７】
さらに、本発明の情報処理装置は、前記制御手段が、前記演算手段が前記ウィンドウ切替命令の実行を完了した場合に、前記カレントレジスタが保持しているデータを前記置換バッファに保持しているデータに置換することにより、当該ウィンドウ切替命令によって切り替えられる次のレジスタウィンドウのデータを前記カレントレジスタに保持させる演算処理装置を有することが好ましい（請求項１１）。
【００２８】
さらに、本発明の情報処理装置は、前記演算手段が、前記レジスタファイル及び前記カレントレジスタに対して前記命令処理の結果データの書込みを行う演算処理装置を有することが好ましい（請求項１２）。
さらに、本発明の情報処理装置は、前記演算手段が、前記レジスタファイル及び前記カレントレジスタの双方に対して同時に前記命令処理の結果データの書込みを行う演算処理装置を有することが好ましい（請求項１３）。
【００２９】
さらに、本発明の情報処理装置は、前記レジスタファイルにおいて、互いに隣接する２つのレジスタウィンドウのうちの一方のレジスタウィンドウのｉｎレジスタと、他方のレジスタウィンドウのｏｕｔレジスタとが共有される演算処理装置を有することが好ましい（請求項１４）。
さらに、本発明の情報処理装置は、前記演算手段が前記ウィンドウ切替命令をデコードした場合には、前記制御手段が、当該ウィンドウ切替命令の実行によって前記カレントウィンドウポインタ手段が指定する前記レジスタウィンドウのｌｏｃａｌレジスタが保持するデータ及び、ｉｎレジスタ又はｏｕｔレジスタのうちいずれか一方が保持するデータを前記置換バッファへ転送する演算装置を有することが好ましい（請求項１５）。
【００３０】
さらに、本発明の情報処理装置は、前記演算手段が前記ウィンドウ切替命令の実行を完了した場合には、前記制御手段が、前記置換バッファから前記ポインタ値が示すレジスタウィンドウのｌｏｃａｌレジスタが保持するデータ及び、ｉｎレジスタ又はｏｕｔレジスタのうちいずれか一方が保持するデータを前記カレントレジスタへ転送する演算処理装置を有することが好ましい（請求項１６）。
【００３１】
さらに、上記目的を達成するために、本発明の情報処理装置は、ウィンドウを複数有し、前記複数のウィンドウがリング状に構成される複数のレジスタウィンドウを有するレジスタファイルと、前記レジスタウィンドウにアクセスする場合において、現在のウィンドウ位置をポインタ値により示すカレントウィンドウポインタ手段と、前記カレントウィンドウポインタ手段が示すポインタ値により指定される前記１つのウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、前記レジスタファイルと前記カレントレジスタとの間に実装され、前記レジスタファイルから前記カレントレジスタに転送される前記ウィンドウのデータを保持する置換バッファと、前記ウィンドウ切替命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータに係る命令処理とを実行する演算手段と、前記演算手段が前記ウィンドウの切替を実行するウィンドウ切替命令を実行した場合に、前記ウィンドウ切替命令がデコードされたときには、当該ウィンドウ切替命令の実行によって前記カレントウィンドウポインタ手段が指定する前記レジスタウィンドウのデータを前記置換バッファに転送する制御手段と、を備え、前記制御手段が、前記演算手段が前記カレントウィンドウポインタ手段が保持するポインタ値を更新するロードポインタ命令を実行した場合に、前記ポインタ値が更新されたときには、前記レジスタファイルから前記更新後のポインタ値が示す１レジスタウィンドウ分のデータを前記置換バッファを介して前記カレントレジスタへ転送する演算処理装置を有することを特徴とする（請求項１７）。
【００３２】
さらに、本発明の情報処理装置は、前記レジスタファイルのウィンドウは、ｉｎレジスタ、ｌｏｃａｌレジスタ及びｏｕｔレジスタの順序によるレジスタの組と、前記レジスタウィンドウ間で共有される１組のｇｌｏｂａｌレジスタとから構成され、前記レジスタファイルから前記置換バッファ、あるいは前記置換バッファから前記カレントレジスタへ転送される前記１レジスタウィンドウ分のデータを、それぞれ前記ｇｌｏｂａｌレジスタ、ｏｕｔレジスタ、ｉｎレジスタ、ｌｏｃａｌレジスタに係るデータの順序により転送を行う演算処理装置を有することが好ましい（請求項１８）。
【００３３】
また、上記目的を達成するために、本発明のレジスタファイルの制御方法は、レジスタの組から構成される複数のレジスタウィンドウがリング状に構成されるレジスタファイルと、現在のレジスタウィンドウ位置をポインタ値により示すカレントウィンドウポインタ手段と、前記ポインタ値により指定される前記レジスタウィンドウが保持するデータを前記レジスタファイルから読み出して保持するカレントレジスタと、前記レジスタファイルから前記カレントレジスタに転送される前記データを保持する置換バッファと、ウィンドウ切替命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータに係る命令処理とを実行する演算手段とを備える演算処理装置においてデータの転送を制御する方法であって、前記演算手段が前記レジスタウィンドウの切替を実行するウィンドウ切替命令を実行した場合に、前記ウィンドウ切替命令がデコードされたときには、当該ウィンドウ切替命令の実行によって前記カレントウィンドウポインタ手段が指定する前記レジスタウィンドウのデータを前記置換バッファに転送する転送ステップを含んでいることを特徴とする（請求項１９）。
【００３４】
さらに、本発明のレジスタファイルの制御方法は、前記演算手段が前記ウィンドウ切替命令の実行を完了した場合に、前記カレントレジスタが保持しているデータを前記置換バッファに保持しているデータに置換することにより、当該ウィンドウ切替命令によって切り替えられる次のレジスタウィンドウのデータを前記カレントレジスタに保持させる置換ステップを含んでいることが好ましい（請求項２０）。
【発明の効果】
【００３５】
このように、本発明によれば、演算部がカレントレジスタ及び置換バッファのデータを読出可能に接続され、演算部によってＳＡＶＥ命令やＲＥＳＴＯＲＥ命令等のウィンドウ切替命令がデコードされると、制御部が当該ウィンドウ切替命令によってカレントレジスタに対して、次に保持されるレジスタウィンドウのデータをマスタレジスタから読み出して置換バッファに保持させるように制御するので、演算部は当該ウィンドウ切替命令の実行を通り越して次のレジスタウィンドウのデータを用いる命令を、置換バッファから当該データを読み出すことによって確実に実行することができる。
【００３６】
したがって、上述した従来の技術のように、現在のレジスタウィンドウの前後のレジスタウィンドウを予め先読み転送して合計３つのレジスタウィンドウのデータを保持することなく、アウトオブオーダ命令実行方式による命令が実行可能になり、ウィンドウ切替命令の実行を通り越して次のレジスタウィンドウが保持するデータを用いる命令を実行するために必要なレジスタの容量（ハードウェア資源）を低減させることができる。
【００３７】
これにより、演算部による命令実行のためのカレントレジスタ及び置換バッファからのデータリードのスループットを向上することができる。
さらに、ハードウェア資源を低減させることができるので、レジスタのための実装面積を低減することができるとともに、消費電力を低減することもできる。
【発明を実施するための最良の形態】
【００３８】
以下、図面を参照しながら本発明の実施の形態について説明する。
〔１〕本発明の一実施形態について
まず、図１に示すブロック図を参照しながら、本発明の一実施形態としての情報処理装置の構成について説明する。図１に示すように、本情報処理装置１は、マスタレジスタファイル（マスタレジスタ；ＭＲＦ：Master Register File）１０，カレントウィンドウレジスタ（カレントレジスタ；ＣＷＲ：Current Window Register）２０，カレントウィンドウリプレースバッファ（置換バッファ；ＣＲＢ：Current window Replace Buffer）３０，演算部（演算手段）４０，及び制御部（制御手段）５０をそなえて構成されている。
【００３９】
マスタレジスタファイル（以下、ＭＲＦという）１０は、データを保持する複数のレジスタウィンドウからなり、上述した図５に示すリング状レジスタファイルＡをそなえて構成されている。つまり、ＭＲＦ１０としてのレジスタファイルＡは、レジスタウィンドウＷ０〜Ｗ７が隣り合うレジスタウィンドウと重複しながらリング状に連結された、オーバラップレジスタウィンドウ方式のレジスタファイルである。
【００４０】
なお、本情報処理装置１も図５に示すように、ＣＷＰ（カレントウィンドウポインタ：Current Window Pointer）をそなえており（図示略）、このＣＷＰが指し示すレジスタウィンドウＷ０〜Ｗ７のうちの一つを現在のレジスタウィンドウとして扱う。
カレントウィンドウレジスタ（以下、ＣＷＲという）２０は、ＭＲＦ１０の複数のレジスタウィンドウＷ０〜Ｗ７のうちのＣＷＰが示す現在のレジスタウィンドウＷｉ（ｉ＝０，１，・・，７）を保持するものであり、ここではＧｌｏｂａｌレジスタを含めた一つのレジスタウィンドウＷｉのみを保持する。
【００４１】
ＣＷＲ２０は、ＣＷＰが示す現在のレジスタウィンドウＷｉを一つ保持するために、Ｇｌｏｂａｌレジスタを保持するための８本×８バイトのレジスタ２１と、Ｌｏｃａｌｓレジスタを保持するための８本×８バイトのレジスタ２２と、ＩｎｓもしくはＯｕｔｓレジスタを保持するための８本×８バイトのレジスタ２３，２４との計３２本×８バイトのレジスタから構成される。
【００４２】
カレントウィンドウリプレースバッファ（以下、ＣＲＢという）３０は、ＭＲＦ１０とＣＷＲ２０との間に実装され、ＣＷＲ２０に次に保持されるレジスタウィンドウＷｉ−１もしくはレジスタウィンドウＷｉ＋１（ただし、ｉ＝０のときレジスタウィンドウＷ７もしくはレジスタウィンドウＷ１、ｉ＝７のときレジスタウィンドウＷ６もしくはレジスタウィンドウＷ０）のデータを保持するものである。
【００４３】
つまり、ＣＲＢ３０は、演算部４０によって処理を実行されるウィンドウ切替命令（ＳＡＶＥ（セーブ）命令もしくはＲＥＳＴＯＲＥ（リストア）命令）によって、次にＣＷＲ２０に保持されるべきレジスタウィンドウＷｉ−１もしくはレジスタウィンドウＷｉ＋１のレジスタ（ここでは、その一部）を先読みして保持するものである。
ＣＲＢ３０は、次のレジスタウィンドウのＬｏｃａｌｓレジスタを保持するための８本×８バイトのレジスタ３１と、ＩｎｓもしくはＯｕｔｓレジスタを保持するための８本×８バイトのレジスタ３２との計１６本×８バイトのレジスタから構成される。
【００４４】
なお、ＣＷＰの値を直接書き換える命令（ＬＯＡＤ＿ＣＷＰ命令）によっても強制的にウィンドウ切替を行うことが出来る。ＣＲＢ３０のレジスタ３１は、例えば、本情報処理装置１の初期動作時（つまり、ＣＷＲ２０が空の状態のとき）、プロセス切替時又はマルチスレッドプロセサにおけるスレッド切替時のように、新たな命令列の実行に必要なレジスタセットの内容を更新する必要がある場合には、当該ＬＯＡＤ＿ＣＷＰ命令によってＧｌｏｂａｌレジスタをＭＲＦ１０から読み出してＣＷＲ２０に保持させる（転送する）ために使用される。
【００４５】
本実施形態においては、ＬＯＡＤ＿ＣＷＰ命令の完了時に１つウィンドウレジスタに保持されるデータをＭＲＦ→ＣＲＢ→ＣＷＲの経路により転送を行う。又、ＭＲＦ→ＣＲＢ間及びＣＲＢ→ＣＷＲ間の転送におけるバス幅が狭い場合、例えば、当該バス幅が８バイト×８本である場合には、Ｇｌｏｂａｌｓ，Ｏｕｔｓ，Ｌｏｃａｌｓ，Ｉｎｓの順に８本ずつパイプラインによる転送を行うこともできる。
【００４６】
従って、当該ＬＯＡＤ＿ＣＷＰ命令の完了を契機としてアウトオブオーダ実行をストールさせる（つまり、当該ＬＯＡＤ＿ＣＷＰ命令の完了前にアウトオブオーダ実行によって当該ＬＯＡＤ＿ＣＷＰ命令に後続する命令処理が実行されていても、これら命令処理の結果は一旦破棄され、当該ＬＯＡＤ＿ＣＷＰ命令の実行完了後に再度実行される）ことにより、ＣＲＢを中継バッファとして使用しながら１レジスタウィンドウ分のデータをＭＲＦからＣＷＲにコピーすることが可能となる。
【００４７】
演算部４０は、ＣＷＲ２０に保持されたデータ及びＣＲＢ３０に保持されたデータを読出（read）可能に接続され、これらＣＷＲ２０及びＣＲＢ３０に保持されたデータにかかる命令，ＣＷＰをインクリメントするＳＡＶＥ命令，及びＣＷＰをデクリメントするＲＥＳＴＯＲＥ命令（ＲＥＴＵＲＮ命令）を実行するものであり、ここでは、これらの命令をアウトオブオーダ実行方式（後述する図２参照）で実行する。
【００４８】
また、演算部４０は、ＭＲＦ１０及びＣＷＲ２０に対して書込み（write）可能に接続され、これらＭＲＦ１０及びＣＷＲ２０に対して同時に書込み処理を実行する。なお、演算部４０が採用するアウトオブオーダ命令実行方式では、書込み処理が発生するCommitステージ（後述する図２参照）はインオーダで実行されるので、演算部４０がＣＲＢ３０に対して書込み（write）可能に接続される必要はない。
【００４９】
制御部５０は、ＭＲＦ１０とＣＷＲ２０との間、及び、ＣＷＲ２０とＣＲＢ３０との間のデータの転送を制御するものである。
ここで、図２を参照しながら、本情報処理装置１が採用するアウトオブオーダ命令実行方式について説明する。なお、図２において命令パイプライン内における命令は、左から右に向けて流れるものとする。
【００５０】
図２に示すように、本情報処理装置１の演算部４０は、命令パイプラインにおいて、命令のFetchステージ及びIssue（Decode）ステージは命令実行順序通りインオーダで命令処理を実行し、命令のDispatchステージ，Executeステージ，及びUpdate Bufferステージは命令実行順序とは関係なくアウトオブオーダで実行準備が出来たものから処理を実行し、最後に、Commitステージは命令実行順序通りインオーダで処理を実行する。
【００５１】
なお、Fetchステージはメモリ（図示略）から命令を読み出すステージであり、Issue（Decode）ステージは命令をデコードし、リザベーションステーション（図示略）に登録するステージであり、Dispatchステージはリザベーションステーションから演算器等の命令実行資源に対して命令を発行するステージであり、Executeステージは当該演算器等の命令実行資源において命令を実行するステージであり、Update Bufferステージは実行結果を待ち合わせるステージであり、Commitステージは当該命令処理による結果をメモリ（図示略）にライトバック（Write back）して完了するステージである。
【００５２】
そして、制御部５０は、上述のように演算部４０がアウトオブオーダ命令実行方式で命令を実行する際に、演算部４０によってウィンドウ切替命令（ＳＡＶＥ命令／ＲＥＳＴＯＲＥ命令）がデコードされると、当該ウィンドウ切替命令によってＣＷＲ２０に次に保持されるべきレジスタウィンドウＷｉ−１もしくはレジスタウィンドウＷｉ＋１のデータ（レジスタ）を、ＭＲＦ１０から読み出してＣＲＢ３０に保持させるように制御する。
【００５３】
また、制御部５０は、演算部によってかかるウィンドウ切替命令の実行が完了されると、ＣＷＲ２０が現在保持しているデータ（レジスタ）をＣＲＢ３０に保持されているデータ（レジスタ）と置き換えることにより、当該ウィンドウ切替命令による次のレジスタウィンドウのデータをＣＷＲ２０に保持させるように制御する。
ここで、図３及び図４（ａ）〜（ｃ）を参照しながら、ＣＷＰが現在示すレジスタウィンドウがレジスタウィンドウＷ３であった場合であって、演算部４０が、このレジスタウィンドウＷ３にかかる命令（以下、ＣＷＰ＝３の命令という），ＳＡＶＥ命令，レジスタウィンドウＷ４にかかる命令（以下、ＣＷＰ＝４の命令という）を実行する場合の、制御部５０の具体的な動作及びＣＷＲ２０，ＣＲＢ３０に保持されるデータについて説明する。
【００５４】
なお、図３において、“Ｄ”の両矢印は命令のデコード（Decode；図２のFetchステージ＋Issueステージ）を示し、“Ｅ”の両矢印は命令の実行（Execute；図２のDispatchステージ＋Executeステージ＋Update Bufferステージ）を示し、“Ｗ”の両矢印は命令の完了（Write back；図２のCommitステージ）を示しており、演算部４０はＣＷＰ＝３の命令，ＳＡＶＥ命令，ＣＷＰ＝４の命令の順にデコードまでをインオーダで実行する。
【００５５】
まず、演算部４０がＣＷＰ＝３の命令をデコードするまでの間は、本情報処理装置１では、ＣＷＲ２０はＣＷＰが示す現在のレジスタウィンドウ（ここではレジスタウィンドウＷ３；ＣＷＰ＝３）のデータを保持している。
すなわち、図４（ａ）に示すごとく、ＳＡＶＥ命令（又は、ＲＥＳＴＯＲＥ命令）がデコードされる前の状態では、本情報処理装置１ではＣＷＲ２０が、ＣＷＰが示す現在のレジスタウィンドウＷ３のデータであるＧｌｏｂａｌｓレジスタをレジスタ２１に保持し、レジスタＷ３Ｌｏｃａｌｓ（図中“Locals CWP=3”と表記）をレジスタ２２に保持し、レジスタＷ３Ｉｎｓ（図中“Ins CWP=3”と表記）をレジスタ２３に保持し、レジスタＷ３Ｏｕｔｓ（図中“Outs CWP=3”と表記）をレジスタ２４に保持する。また、この状態では、ＣＲＢ３０はデータを保持しない。
【００５６】
したがって、このとき、演算部４０はＣＷＲ２０に保持されたレジスタウィンドウＷ３のデータを用いてＣＷＰ＝３の命令のみ実行可能である。
次に、図３に示すように、演算部４０がＳＡＶＥ命令をデコードする（Issueステージを実行する）と、制御部５０が、当該ＳＡＶＥ命令によってＣＷＰが次に示すレジスタウィンドウＷ４（ＣＷＰ＝４）の一部のレジスタが保持するデータをＭＲＦ１０から読み出してＣＲＢ３０に保持させるように制御する。
【００５７】
つまり、図４（ｂ）に示すごとく、演算部４０によってＳＡＶＥ命令がデコードされると、制御部５０は、ＭＲＦ１０から当該ＳＡＶＥ命令によってＣＷＰが次に示すレジスタウィンドウＷ４（ＣＷＰ＝４）のレジスタＷ４Ｌｏｃａｌｓ（図中“Locals CWP=4”と表記）の内容をＣＲＢ３０のレジスタ３１にコピーして転送し、さらに、レジスタＷ４Ｏｕｔｓ（図中“Outs CWP=4”と表記）の内容をＣＲＢ３０のレジスタ３２にコピーして転送する。
【００５８】
ここで、制御部５０がレジスタウィンドウＷ４のレジスタＷ４Ｉｎｓの内容をＣＲＢ３０に転送しないのは、このレジスタＷ４Ｉｎｓは、ＣＷＰ２０のレジスタ２４に保持されているレジスタウィンドウＷ３のレジスタＷ３Ｏｕｔｓと重複する部分（オーバーラップ部分）であるためである（図５参照）。
このように、制御部５０は、ＣＷＲ２０に次に保持されるレジスタウィンドウＷ４のデータのうち、ＣＷＲ２０に現在保持されている現在のレジスタウィンドウＷ３と重複しない部分のデータ（ここではレジスタＷ４Ｌｏｃａｌｓ及びレジスタＷ４Ｏｕｔｓ）をＣＲＢ３０に保持させるように制御し、この重複しない部分（オーバーラップしない部分）のデータをＭＲＦ１０から読み出してＣＲＢ３０に保持させるように制御する。
【００５９】
したがって、本情報処理装置１では、演算部４０によるＳＡＶＥ命令のデコード後、Commitステージ（図２参照）前の状態では、ＣＲＢ３０のレジスタ３１にレジスタＷ４Ｌｏｃａｌｓの内容が保持され、レジスタ３２にレジスタＷ４Ｏｕｔｓの内容が保持される。
これにより、演算部４０は、ＣＷＲ２０に保持されたレジスタウィンドウＷ３のデータを用いてＣＷＰ＝３の命令を実行可能であるとともに、ＣＲＢ３０に保持されたレジスタウィンドウＷ４のデータの一部（オーバーラップしないＬｏｃａｌｓレジスタ及びＯｕｔｓレジスタのデータ）と、レジスタＷ４ＩｎｓとオーバーラップするＣＷＲ２０に保持されたレジスタＷ３Ｏｕｔｓとを用いて、ＣＷＰ＝４の命令も実行可能となる。
【００６０】
そして、図３に示すように、演算部４０がＳＡＶＥ命令を完了（Write back）する（Commitステージを実行する）と、制御部５０が、ＣＲＢ３０に保持されたデータ（ここではレジスタＷ４Ｌｏｃａｌｓ及びレジスタＷ４Ｏｕｔｓ）をＣＷＲ２０が保持するように、ＣＲＢ３０からデータを読み出してＣＷＲ２０に転送する。
つまり、制御部５０は、ＣＷＲ２０が現在保持しているレジスタウィンドウＷ３のデータのうちの次のレジスタウィンドウＷ４と重複しない部分のデータ（ここではレジスタＷ３Ｌｏｃａｌｓ及びレジスタＷ３Ｉｎｓ）を、ＣＲＢ３０に保持されているデータ（ここではレジスタＷ４Ｌｏｃａｌｓ及びレジスタＷ４Ｏｕｔｓ）と置き換えることによって、次のレジスタウィンドウＷ４のデータをＣＷＲ２０に保持させるように制御する。
【００６１】
具体的には、図４（ｃ）に示すごとく、演算部４０によってＳＡＶＥ命令が完了されると、制御部５０は、ＣＲＢ３０のレジスタ３１に保持されたレジスタＷ４Ｌｏｃａｌｓ（図中“Locals CWP=4”と表記）を、ＣＷＲ２０のレジスタ２２に保持させるようにデータを置き換える（二点鎖線矢印Ｐ参照）とともに、ＣＲＢ３０のレジスタ３２に保持されたレジスタＷ４Ｏｕｔｓ（図中“Outs CWP=4”と表記）を、ＣＷＲ２０のレジスタ２３に保持させるようにデータを置き換える（一点鎖線矢印Ｑ参照）。
【００６２】
さらに、制御部５０は、ＣＷＰ＝３，４で互いに共通する部分であるレジスタＷ４Ｉｎｓについては、レジスタ２４に元々保持されているレジスタＷ３Ｏｕｔｓの指定を、レジスタＷ４Ｉｎｓの指定として読み替えてそのまま使用する。
このように、制御部５０は、ＣＷＲ２０が現在保持しているデータのうち、次のレジスタウィンドウＷ４とオーバーラップする部分のデータは、次のレジスタウィンドウＷ４のデータとして読み替える（すなわち、データをそのまま残して次のレジスタウィンドウのデータとして使用する）ことによって、次のレジスタウィンドウＷ４をＣＷＲ２０に保持させるように制御する。
【００６３】
したがって、ＣＷＲ２０では、ＣＷＰの偶奇によってレジスタ２３，２４に保持されるレジスタがＩｎｓレジスタとＯｕｔｓレジスタとの間で入れ替わることになり、ＣＷＰが偶数から奇数に変化する場合には、レジスタ２３に元々保持されているＩｎｓレジスタの指定が次のレジスタウィンドウのＯｕｔｓレジスタの指定として読み替えられる。
これにより、演算部４０によるＳＡＶＥ命令の完了（write back）後の状態では、ＣＲＢ３０にはデータが保持されず、演算部４０はＣＷＲ２０に保持されたレジスタウィンドウＷ４のデータを用いてＣＷＰ＝４の命令のみを実行可能となる。
【００６４】
このように、本発明の一実施形態としての情報処理装置１によれば、演算部４０がＣＷＲ２０及びＣＲＢ３０に対してデータを読出可能に接続され、演算部４０によってウィンドウ切替命令がデコードされると、制御部５０が当該切替命令によってＣＷＲ２０に次に保持されるレジスタウィンドウのデータをＭＲＦ１０から読み出してＣＲＢ３０に保持させるように制御するので、演算部４０は当該切替命令の実行を通り越して次のレジスタウィンドウのデータを用いる命令を、ＣＲＢ３０からデータを読み出すことによって確実に実行することができる。
【００６５】
このとき、ＣＲＢ３０は１６本のレジスタで実現され、ＣＷＲ２０は３２本のレジスタで実現されるので、本情報処理装置１では、合計４８本のレジスタによって、演算部４０がレジスタウィンドウを採用するＭＲＦ１０に対してアウトオブオーダ命令実行方式で命令を実行可能になる。したがって、図７に示す従来の情報処理装置１１０が７２本のレジスタで実現したのに対して、２４本ものレジスタを削減することができる。
【００６６】
つまり、本情報処理装置１はハードウェア資源を低減させることができ、これにより、演算部４０による命令実行のためのＣＷＲ２０及びＣＲＢ３０からのデータリードのスループットを向上することができる。
また、レジスタの本数を削減することによって回路量を大幅に削除できるので、実装面積を低減することができるとともに、消費電力を低減することもできる。
【００６７】
さらに、本情報処理装置１では、演算部４０によってウィンドウ切替命令が完了されると、制御部５０は、ＣＷＲ２０が現在保持しているレジスタウィンドウのデータのうち、次のレジスタウィンドウと重複しない部分のデータを、ＣＲＢ３０に保持されているデータと置き換えることによって、次のレジスタウィンドウのデータをＣＷＲ２０に保持させるように制御するので、インオーダで実行される命令実行にかかる書込み処理をＣＷＲ２０に対して確実に実行することができる。つまり、演算部４０はＣＲＢ３０に対して書込み処理可能に接続されなくても、命令実行にかかる書込み処理を確実に実行することができるという効果を有する。
【００６８】
また、本情報処理装置１では、演算部４０によって切替命令が完了されると、制御部５０は、ＣＷＲ２０が現在保持しているデータのうち、次のレジスタウィンドウと重複する部分のデータは、次のレジスタウィンドウのデータとして読み替えることによって、次のレジスタウィンドウをＣＷＲ２０に保持させるように制御するので、３つの領域（Ｌｏｃａｌｓレジスタ，Ｉｎｓレジスタ，Ｏｕｔｓレジスタ）からなるレジスタウィンドウを最終的にＣＷＲ２０に保持させるのに、中継点として機能するＣＲＢ３０において２つの領域を保持するだけでよくなり、ハードウェア資源の量を低減することができる。具体的には、レジスタウィンドウすべてを保持するために必要な２４本のレジスタではなく、１６本のレジスタのみによりＣＲＢ３０を構成することができる。
【００６９】
〔２〕その他
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態において、レジスタファイルＡが保持するレジスタウィンドウの数や、各レジスタウィンドウの容量（レジスタ本数）は限定されるものではなく、種々変更することができる。
【００７０】
また、本発明の情報処理装置の処理対象はオーバラップウィンドウ方式のレジスタファイルに限定されるものではなく、複数のレジスタウィンドウからなるものであればよい。
したがって、本発明において、ＣＷＲ２０やＣＲＢ３０の容量は、ＭＲＦ１０が保持するレジスタウィンドウに応じて種々変更される。
以上詳述したように、本発明の情報処理装置は、データを保持する複数のレジスタウィンドウからなるマスタレジスタと、このマスタレジスタの前記複数のレジスタウィンドウのうちの現在のレジスタウィンドウを保持するカレントレジスタと、前記マスタレジスタと前記カレントレジスタとの間に介装され、前記カレントレジスタに次に保持されるレジスタウィンドウのデータを保持する置換バッファと、前記カレントレジスタに保持されたデータ及び前記置換バッファに保持されたデータを読出可能に接続され、前記カレントレジスタに保持されたデータ及び前記置換バッファに保持されたデータにかかる命令を実行する演算部と、この演算部が前記カレントレジスタに保持されている現在のレジスタウィンドウを他のレジスタウィンドウに切り替える切替命令を実行する際、当該切替命令がデコードされると、当該切替命令によって前記カレントレジスタに次に保持されるべきレジスタウィンドウのデータを前記マスタレジスタから読み出して前記置換バッファに保持させるように制御する制御部とをそなえて構成されていることを特徴としている。
【００７１】
なお、前記制御部が、前記演算部によって前記切替命令の実行が完了されると、前記カレントレジスタが現在保持しているデータを前記置換バッファに保持されているデータと置き換えることにより、当該切替命令による次のレジスタウィンドウのデータを前記カレントレジスタに保持させるように制御することが好ましい。
また、前記演算部が、前記マスタレジスタ及び前記カレントレジスタに対して書込み処理を実行することが好ましく、このとき、前記演算部が、前記マスタレジスタ及び前記カレントレジスタに対する書込み処理を同時に実行することが好ましい。
【００７２】
さらに、前記マスタレジスタがオーバラップウィンドウ方式のレジスタファイルであることが好ましく、このとき、前記制御部が、前記カレントレジスタに次に保持されるレジスタウィンドウのデータのうちの前記カレントレジスタに現在保持されている現在のレジスタウィンドウと重複しない部分のデータを前記置換バッファに保持させるように制御することが好ましい。
【００７３】
なお、前記制御部が、前記演算部によって前記切替命令がデコードされると、次に保持されるべきレジスタウィンドウのうちの前記カレントレジスタに保持されている現在のレジスタウィンドウと重複しない部分のデータを前記マスタレジスタから読み出して前記置換バッファに保持させるように制御することが好ましく、このとき、前記制御部が、前記演算部によって前記切替命令の実行が完了されると、前記カレントレジスタが現在保持しているデータのうちの次のレジスタウィンドウと重複しない部分のデータを前記置換バッファに保持されているデータと置き換えることによって、前記次のレジスタウィンドウのデータを前記カレントレジスタに保持させるように制御することが好ましい。
【００７４】
さらに、前記制御部が、前記演算部によって前記切替命令の実行が完了されると、前記カレントレジスタが現在保持しているデータのうちの次のレジスタウィンドウと重複する部分のデータは、前記次のレジスタウィンドウのデータとして読み替えることによって、前記次のレジスタウィンドウのデータを前記カレントレジスタに保持させるように制御することが好ましい。
【００７５】
また、前記マスタレジスタにおいて、前記カレントレジスタに保持される現在のレジスタウィンドウを示すカレントポインタをそなえて構成されていることが好ましく、このとき、前記演算部が実行しうる前記切替命令が、前記カレントポインタをインクリメントするセーブ命令であるとともに、前記カレントポインタをデクリメントするリストア命令であることが好ましい。
【図面の簡単な説明】
【００７６】
【図１】本発明の一実施形態としての情報処理装置の構成を示すブロック図である。
【図２】本発明の一実施形態としての情報処理装置の演算部が採用するアウトオブオーダ命令実行方式を説明するための図である。
【図３】本発明の一実施形態としての情報処理装置の演算部の動作の一例を示す図である。
【図４】本発明の一実施形態としての情報処理装置のカレントウィンドウレジスタ及びカレントウィンドウリプレースバッファが保持するデータを説明するための図であり、（ａ）は演算部によるウィンドウ切替命令のデコード前の状態を示す図であり、（ｂ）は演算部によるウィンドウ切替命令のデコード後の状態を示す図であり、（ｃ）は演算部によるウィンドウ切替命令の完了後の状態を示す図である。
【図５】本発明の一実施形態としての情報処理装置のマスタレジスタファイル内に構成される従来からのリング状レジスタファイル（レジスタウィンドウ）を示す図である。
【図６】従来の情報処理装置の構成を示すブロック図である。
【図７】従来の情報処理装置の構成を示すブロック図である。
【図８】図７に示す従来の情報処理装置のレジスタファイルが保持するデータを説明するための図である。
【図９】図７に示す従来の情報処理装置の演算器の動作の一例を示す図である。
【符号の説明】
【００７７】
１，１００，１１０  情報処理装置
１０，１０１，１１１  マスタレジスタファイル（ＭＲＦ：Master Register File；マスタレジスタ）
２０  カレントウィンドウレジスタ（ＣＷＲ：Current Window Register；カレントレジスタ）
２１〜２４，３１，３２  レジスタ
３０  カレントウィンドウリプレースバッファ（ＣＲＢ：Current window Replace Buffer；置換バッファ）
４０  演算部（演算手段）
５０  制御部（制御手段）
１０２，１１２  ワーキングレジスタファイル（ＷＲＦ：Working Register File）
１０３  演算器
Ａ  レジスタファイル
Ｗ０〜Ｗ７  レジスタウィンドウ
【図１】
2007087108.tif 000003
【図２】
2007087108.tif 000004
【図３】
2007087108.tif 000005
【図４】
2007087108.tif 000006
【図５】
2007087108.tif 000007
【図６】
2007087108.tif 000008
【図７】
2007087108.tif 000009
【図８】
2007087108.tif 000010
【図９】
2007087108.tif 000011