(57)【要約】  レジスタウィンドウ方式を採用する演算処理装置において、レジスタファイルの読み出し部分をカレントウィンドウ選択、レジスタ選択と２段階で制御するように構成し、かつ複数の読み出しポートにおいて選択されるレジスタを、アウトオブオーダ実行可能なように各ポートについて予め設定した。これにより、一時記憶を備えることなく演算部へのデータ読み出しが可能であり、かつウィンドウ切り替え命令の後続命令のアウトオブオーダ実行が可能である。
2010016097.tif 000002
【特許請求の範囲】
【請求項１】
演算処理を行う演算部と、
各々Ｎ本のレジスタを備えたＫ枚のウィンドウを有し、各ウィンドウを構成する一部のレジスタは両隣のウィンドウを構成するレジスタと共有され、該共有部分をサブルーチン呼び出し時の引数の引き渡しに使用するように構成されたレジスタウィンドウと、前記Ｋ枚のウィンドウのうちの１枚を選択するカレントウィンドウ選択手段と、読み出しアドレスにより読み出しレジスタを選択するレジスタ選択手段と、を備えるレジスタファイルと、
前記レジスタファイルにおいてカレントウィンドウ選択手段においてウィンドウを選択するためのウィンドウアドレス信号を出力する制御部と、
を備えることを特徴とする演算処理装置。
【請求項２】
前記カレントウィンドウ選択手段は、
前記ウィンドウアドレス信号に基づいて、前記サブルーチンの作業用レジスタであるローカルレジスタのうち、ウィンドウ番号が偶数のローカルレジスタ群からレジスタを選択する第１のローカルレジスタ読出しポートと、
前記ウィンドウアドレス信号に基づいて、前記サブルーチンの作業用レジスタであるローカルレジスタのうち、ウィンドウ番号が奇数のローカルレジスタ群からレジスタを選択する第２のローカルレジスタ読出しポートと、
前記ウィンドウアドレス信号に基づいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタのうち、ウィンドウ番号が偶数のアウトレジスタ群からレジスタを選択する第１のアウトレジスタ読出しポートと、
前記ウィンドウアドレス信号に基づいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタのうち、ウィンドウ番号が奇数のアウトレジスタ群からレジスタを選択する第２のアウトレジスタ読出しポートと、
前記ウィンドウアドレス信号に基づいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタ群からレジスタを選択する第３のアウトレジスタ読出しポートと、
を備えることを特徴とする請求項１記載の演算処理装置。
【請求項３】
演算処理を行う演算部と、
複数のレジスタから構成されるレジスタファイルで、該レジスタファイルを各々Ｎ本のレジスタを備えたＫ枚のウィンドウに分割し、各ウィンドウは各々一部のレジスタを両隣のウィンドウと共有し、該共有部分をサブルーチン呼び出し時の引数の引き渡しに使用するように構成されたレジスタウィンドウを備えるレジスタファイルであって、前記Ｋ枚のウィンドウのうちの１枚を選択するカレントウィンドウ選択手段と、読み出しアドレスにより読み出しレジスタを選択するレジスタ選択手段と、を備えるレジスタファイルと、
前記レジスタファイルにおいてカレントウィンドウ選択手段においてウィンドウを選択するためのウィンドウアドレス信号を出力する制御部と、
を含む演算処理装置を有することを特徴とする情報処理装置。
【請求項４】
前記カレントウィンドウ選択手段は、
前記ウィンドウアドレス信号に基づいて、前記サブルーチンの作業用レジスタであるローカルレジスタのうち、ウィンドウ番号が偶数のローカルレジスタ群からレジスタを選択する第１のローカルレジスタ読出しポートと、
前記ウィンドウアドレス信号に基づいて、前記サブルーチンの作業用レジスタであるローカルレジスタのうち、ウィンドウ番号が奇数のローカルレジスタ群からレジスタを選択する第２のローカルレジスタ読出しポートと、
前記ウィンドウアドレス信号に基づいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタのうち、ウィンドウ番号が偶数のアウトレジスタ群からレジスタを選択する第１のアウトレジスタ読出しポートと、
前記ウィンドウアドレス信号に基づいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタのうち、ウィンドウ番号が奇数のアウトレジスタ群からレジスタを選択する第２のアウトレジスタ読出しポートと、
前記ウィンドウアドレス信号に基づいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタ群からレジスタを選択する第３のアウトレジスタ読出しポートと、
を備えることを特徴とする請求項３記載の情報処理装置。
【請求項５】
複数のレジスタから構成されるレジスタファイルで、該レジスタファイルを各々Ｎ本のレジスタを備えたＫ枚のウィンドウに分割し、各ウィンドウは各々一部のレジスタを両隣のウィンドウと共有し、該共有部分をサブルーチン呼び出し時の引数の引き渡しに使用するように構成されたレジスタウィンドウを備えるレジスタファイルの読み出し方法であって、
前記Ｋ枚のウィンドウのうちの１枚を選択する第１のステップと、
前記選択されたウィンドウレジスタから、読み出しアドレスにより読み出しレジスタを選択する第２のステップと、
からレジスタを読み出すことを特徴とするレジスタファイルの読み出し方法。
【請求項６】
前記第１のステップにおいて、前記Ｋ枚のウィンドウをそれぞれ識別するためのウィンドウ番号のうち１つがカレントウィンドウ番号として選択され、
前記カレントウィンドウ番号に基づいて、第１のローカルレジスタ読出しポートにおいて、前記サブルーチンの作業用レジスタであるローカルレジスタのうち、ウィンドウ番号が偶数のローカルレジスタ群からレジスタを選択し、
前記カレントウィンドウ番号に基づいて、第２のローカルレジスタ読出しポートにおいて、前記サブルーチンの作業用レジスタであるローカルレジスタのうち、ウィンドウ番号が奇数のローカルレジスタ群からレジスタを選択し、
前記カレントウィンドウ番号に基づいて、第１のアウトレジスタ読出しポートにおいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタのうち、ウィンドウ番号が偶数のアウトレジスタ群からレジスタを選択し、
前記カレントウィンドウ番号に基づいて、第２のアウトレジスタ読出しポートにおいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタのうち、ウィンドウ番号が奇数のアウトレジスタ群からレジスタを選択し、
前記カレントウィンドウ番号に基づいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタ群からレジスタを選択する、
ことを特徴とする請求項５記載のレジスタファイルの読み出し方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レジスタウィンドウ方式のレジスタファイルを備える演算処理装置に関わる。本発明は、レジスタファイルから高速読み出しのための一時記憶要素を用いずに、レジスタからの高速読み出しを実現する演算処理装置、およびその方法を含む。  
【背景技術】
【０００２】
ＲＩＳＣ(Reduced Instruction Set Computer)アーキテクチャのプロセッサ（以下、ＲＩＳＣプロセッサと呼ぶ）は、レジスタ−レジスタ演算を中心としており、メモリアクセスを減少することにより処理の高速化を図っている。これをロード−ストア・アーキテクチャと称する。ＲＩＳＣプロセッサは、上記レジスタ−レジスタ演算の効率化のために大容量のレジスタファイルを備えている。このレジスタファイルとして、サブルーチン呼び出し時の引数の引き渡し（引数の退避／復帰）のオーバーヘッドを削減するように構成されたレジスタウィンドウ方式のレジスタファイルが知られている。【０００３】
図１は、レジスタウィンドウ方式のレジスタファイルの構成を示す図である。
図１に示すレジスタファイル１０００は、１本のレジスタウィンドウW globalと、８本のレジスタウィンドウW0〜W7を有し、これらのうち、レジスタウィンドウW0〜W7は論理的にリング状に連結されている。各レジスタウィンドウWk（k=0〜7）はそれぞれ、、Wk out、Wk in、およびWk localの３種類のセグメントを備えている。これら３種類のセグメントは、いずれも、８個のレジスタから構成されている。Wk localは各レジスタウィンドウ固有の８個のローカルレジスタを備えている。Wk inは８個のinレジスタ（インレジスタ）を備え、Wk outは８個のoutレジスタ（アウトレジスタ）を備えている。また、W globalは、全てのサブルーチンで共用される８個のグローバルレジスタを備えている。【０００４】
Wk outは自ルーチンが呼び出すサブルーチンに引数を渡すために、Wk inは自ルーチンを呼び出した親ルーチンから引数を受け取るために使用される。レジスタファイル１０００ではWk inとWk+1 out、およびWk outとWk-1 inがオーバーラップするように構成されているため、サブルーチンコール時において、引数の引き渡しとそのために使用するレジスタの確保を高速化できる。Wk localは、各サブルーチン、つまり親ルーチンから呼び出された子ルーチンが作業用のレジスタセットとして使用する。【０００５】
各サブルーチンは、実行時において、８本のレジスタウィンドウW0〜W7のいずれか一つを使用する。ここで、実行中のサブルーチンが使用するレジスタウィンドウWk（カレントウィンドウと呼ばれる）は、サブルーチンコールが発生するたびに右回り（“ＳＡＶＥ”で示された破線の矢印の方向）に前記セグメント２個分回転し、サブルーチンの復帰時に左回り（“ＲＥＳＴＯＲＥ”で示された破線の矢印の方向）に前記セグメント２個分回転するようになっている。【０００６】
レジスタファイル１０００においては、各レジスタウィンドウWkは、それぞれに割り当てられたレジスタウィンドウ番号（以下、ウィンドウ番号と呼ぶ）によって管理されている。レジスタウィンドウWkにはウィンドウ番号kが割り当てられる。実行中のサブルーチンが使用しているレジスタウィンドウWkのウィンドウ番号kはＣＷＰ（Current Window Pointer）に保持される。ＣＷＰの値は、ＳＡＶＥ命令の実行もしくはトラップ（trap）発生によってインクリメントされ、ＲＥＳＴＯＲＥ命令の実行もしくはＲＥＴＴ命令によるトラップからの復帰によってデクリメントされる。図１ではＣＷＰの値は“０”となっており、ＣＷＰはレジスタウィンドウＷ０を指定している。このように、ＣＷＰの値を増減させて、カレントウィンドウの切り替えを行う命令を、本明細書では、“ウィンドウ切り替え命令”と呼ぶことにする。【０００７】
図１に示すレジスタファイル１０００は、１本のウィンドウW globalを有する。W globalは全てのルーチンで共用されるデータを格納するレジスタセットである。
各レジスタウィンドウWkは２４個（＝８×３）のレジスタを備えており、レジスタウィンドウW globalは８個のレジスタを備えている。これらのレジスタのうち、Wk inとWk outのレジスタが６４個（＝８×８）オーバーラップしているので、レジスタファイル１０００が備えるレジスタの総数は、１３６個（＝２４×８＋８−６４）である。プロセッサの演算器がサブルーチンを実行するためには、レジスタファイル１０００のそれら全てのレジスタにデータを読み書きできる必要がある。【０００８】
この場合、このような大きなレジスタファイル１０００からデータを読み出す回路の規模と速度が問題となる。この問題を解消するため、図２に示すような構成の演算処理装置が考案されている。【０００９】
図２に示す演算処理装置２０００は、マスタレジスタファイル２００１（以後、ＭＲＦと記載）ワーキングレジスタファイル２００２（以後、ＷＲＦと記載）および演算部２００３、制御部２００４を有する。【００１０】
一般に、レジスタウィンドウ方式のレジスタファイルは、レジスタウィンドウ数が増えると、具備するレジスタの数が多くなり、演算器にオペランドを高速に供給することが困難となる。そのため、すべてのウィンドウを保持するレジスタファイルであるＭＲＦ２００１に加えて、ポインタＣＷＰで示されるＭＲＦ２００１中の１つのウィンドウのコピーを保持するＭＲＦ２００１のサブセットとしてＷＲＦ２００２を保持し、このＷＲＦ２００２よりデータの読み出しを行う。ＷＲＦ２００２はポインタで示されるウィンドウのコピーのみを保持する。ＷＲＦ２００２はＭＲＦ２００１に比べて小さいので、制御部２００４から読み出しのアドレスであるREAD_ADDRESSが供給されて読み出しを行う場合、データ読み出しを高速化できる。【００１１】
演算部２００３には、ＭＲＦ２００１へのリネームレジスタＲＯＢ２００５を備え、演算結果のリネーミングを行う。更にコミット時にＲＯＢ２００５からＭＲＦ２００１、ＷＲＦ２００２へと演算結果の書き戻しが行われる。【００１２】
以上のように、図２に示すような構成の演算処理装置が考案されているが、このような構成の場合、ＭＲＦ中の１つのウィンドウのコピーを保持するＭＲＦのサブセットを設ける点でハードウェアコストがかかる。更に、ＭＲＦとＷＲＦ間の転送を行うことで電力を消費する。【００１３】
また、アウトオブオーダ（out-of-order）実行機能を備えたプロセッサの場合には、命令の実行順序はプログラムの順序とは限らず、処理可能な命令から実行していく。よってレジスタウィンドウ切り替え命令を追い越して命令の実行順序入れ替えを実現することも求められる。
【特許文献１】特開平５−２８２１４７号公報「レジスタファイル」
【発明の開示】
【００１４】
そこで、本発明の課題は、レジスタウィンドウ方式を採用する演算処理装置において、レジスタ読出しに関連するハードウェアコストを低減すること、ワークバッファやバッファ間の転送にかかる消費電力をなくすことにある。また、アウトオブオーダ実行機能を備えた演算処理装置の場合には、レジスタウィンドウ切り替え命令を追い越して命令の実行順序入れ替えを実現することが必要である。
【００１５】
本発明では、ＭＲＦの読み出し部分をカレントウィンドウ選択、レジスタ選択と２段階で制御するように構成した。そして、レジスタの読み出しポートにおいて選択されるレジスタを、アウトオブオーダ実行可能なように各ポートについて予め設定するように構成した。これにより一時記憶であるＷＲＦを持つことなく、高速に演算部へのデータ読み出しが可能であり、かつ、ウィンドウ切り替え命令の後続命令のアウトオブオーダ実行も可能である。
【００１６】
本発明によれば、従来の性能をほぼ保ったまま、ＷＲＦのハードウェア分のコストを削減できる。更に、ＷＲＦを使用しないことによる消費電力の削減、ＭＲＦ−ＷＲＦ間のデータ転送が無くなることによる消費電力の削減を図ることが可能である。
【図面の簡単な説明】
【００１７】
【図１】レジスタウィンドウ方式のレジスタファイルの構成例を示す図である。
【図２】レジスタウィンドウ方式を採用する演算処理装置の従来の構成例を示す図である。
【図３】本実施の形態における、レジスタウィンドウ方式を採用する演算処理装置の構成を示す図である。
【図４】レジスタウィンドウシステムの一般的な構成を説明する図である。
【図５】レジスタウィンドウシステムの改良構成例を示す図である。
【図６】パイプラインにおいてアウトオブオーダ処理を行う箇所を説明する図である。
【図７】ＳＡＶＥ命令前後の命令実行パイプラインの一例を示す図である。
【図８】読み出しの際の各ポートの割り当てを示す図である。
【図９】従来のレジスタウィンドウシステムの具体的構成例を示す図である。
【図１０】本実施形態のレジスタウィンドウシステムの具体的構成例を示す図である。
【図１１】本実施の形態の情報処理装置の構成を示す図である。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照して、レジスタウィンドウ方式のレジスタファイルを備える演算処理装置において、レジスタからの高速読み出しを実現する実施の形態の一例を説明する。
図３に、レジスタウィンドウ方式を採用する本実施形態の演算処理装置の構成を示す。【００１９】
演算処理装置０は、マスタレジスタファイル（ＭＲＦ）１と、演算部３と制御部４を有する。図２の演算処理装置２０００と比較すると、図３に示した演算処理装置０は、一時記憶であるＷＲＦ２００２を備えない構成となっている。また、演算部３が備えるＲＯＢ（リネームレジスタ）５は、演算結果のリネーミングを行う部分で、コミット時にＭＲＦ１に演算結果の書き戻しが行われる（write）。【００２０】
図３において、ＭＲＦ１の読み出し部分を、カレントウィンドウ選択と、レジスタ選択との２段階で制御する。カレントウィンドウ選択は、制御部４から出力されるWINDOW_ADDRESS信号によって制御される。WINDOW_ADDRESS信号はＣＷＰ（Current Window Pointer）の値に基づく信号である。また、レジスタ選択は、制御部４から出力されるREAD_ADDRESS信号によって制御される。【００２１】
更に、後述するように、レジスタ読出しポートが選択するレジスタをアウトオブオーダ実行可能なように予め設定する。これにより、本実施の形態では一時記憶を備えることなく、演算部３への高速なデータ読み出しが可能であり、かつ、SAVE命令、RESTORE命令の後続命令のアウトオブオーダ実行が可能である。。【００２２】
このように本実施の形態では、ＷＲＦが不要となるため、その分ハードウェアのコストを削減することが可能である。また、ＷＲＦによる消費電力、ＭＲＦ−ＷＲＦ間転送がなくなることによる消費電力の削減を図ることができる。【００２３】
以下、演算処理装置０の構成をより詳しく説明する。
図１に示したように、ＭＲＦ１のレジスタは、Wk local, Wk in, Wk outがそれぞれ８レジスタずつ、８ウィンドウ分（k=0〜7）あり、またそれらとは別にW globalが８レジスタある。W globalレジスタはすべてのウィンドウで共通であり、ウィンドウ切り替えで影響がないため、以降の説明からは省略することとする。【００２４】
図４にレジスタウィンドウの構成を示す。レジスタウィンドウの特徴として、例えばk=1のW1 inは、k=0のW0 outと同じものである。よって本実施の形態では、図５に示すようにWk inレジスタは実装せず、Wk localレジスタとWk outレジスタを実装する。【００２５】
図６に、命令をパイプライン処理する際に、アウトオブオーダ処理を行う箇所を示す。図６に示すように、命令の実行時にはFetch(F)、Decode(D)、Dispatch(P)、Buffer read(B)、Execute(x)、Update buffer(U)、Commit(W)の各処理が実行される。図６に示すように、Dispatch(P)、Buffer Read(B)、Execute(X)，Update Buffer(U)でアウトオブオーダ処理（ＯＯＯ）が行われる。【００２６】
図７に、ＣＷＰ＝１の命令、SAVE命令、およびＣＷＰ＝１の命令に後続するＣＷＰ＝２の命令がアウトオブオーダ実行される際の各命令の関係を示す。図７に示されるように、アウトオブオーダ実行を行うためには、SAVE命令が実質的に実行中の期間、即ち、SAVE命令の実行処理のうちDispatch(図示「P」)からUpdate buffer(図示「U」)までの処理を実行中の期間において、現在のＣＷＰに対応するレジスタ群（図７ではＣＷＰ＝１）および現在のＣＷＰの次のＣＷＰに対応するレジスタ群（図７ではＣＷＰ＝２）のいずれのデータも読み出せなければならない。【００２７】
より具体的には、ＣＷＰ＝１のは命令において読み出されるレジスタ群W global, W1 local, W1 out, W1 in (W0 out)であり、ＣＷＰ＝２の命令において読み出されるレジスタ群W global, W2 local, W2 out, W2 in（W1 out）であるから、SAVE命令の後続命令のアウトオブオーダ実行を行うためには、レジスタ群W global, W2 local, W2 out, W1 local, W1 out, W0 outが読み出し可能である必要がある。【００２８】
また、SAVE命令に変えてRESTORE命令を実行する場合、図７と同様にＣＷＰ＝１の命令とRESTORE命令、後続のＣＷＰ＝０の命令がアウトオブオーダ実行を行うためには、ＣＷＰ＝１のときに読み出されるレジスタ群であるW global, W1 local, W1 out, W1 in (W0 out)と、ＣＷＰ＝０のときに読み出されるレジスタ群であるW global, W0 local, W0 out, W0 in（W7 out）との読み出しが可能でなければならない。つまり、この状況では、W global, W1 local, W1 out, W0 local, W0 out, W7 outが読み出し可能である必要がある。【００２９】
以上のことから、アウトオブオーダ実行を可能にするためには、ＭＲＦ１からのレジスタ読出しの１段目のポートとして、６ポートが必要であることとがわかる。以下、これらのポートをG_PORT(global)、L_PORT0、L_PORT1、OUT_PORT0, OUT_PORT1, OUT_PORT2とする。G_PORTにはグローバルレジスタ群が、L_PORTにはローカルレジスタ群が、OUT_PORTにはアウトレジスタ群が、それぞれ割り当てられる。【００３０】
そして、たとえばＣＷＰ＝１の命令に続くSAVE命令の実行時にはG_PORTにW globalレジスタ群が、L_PORT0にW2 localレジスタ群が、L_PORT1にW1 localレジスタ群が、OUT_PORT0にW0 outレジスタ群が, OUT_PORT1にW1 outレジスタ群が、OUT_PORT2にW2 outレジスタ群が、それぞれ割り当てられることになる。【００３１】
これをまとめると、ＣＷＰの値によって各ポートへの読み出しレジスタ群を図８に示すように対応させればよいことになる。
図８において、例えば「W7/W1」のようなスラッシュで区切られた表記は、RESTORE命令実行時のアウトオブオーダ実行においては「W7」レジスタ群が、SAVE命令実行時のアウトオブオーダ実行においては「W1」レジスタ群が割り当てられることを示している。【００３２】
図８において、現在のＣＷＰがＣＷＰ＝０であってそれに続いてRESTORE命令が実行される場合のアウトオブオーダ実行を例に説明すると、L_PORT0およびL_PORT1には、ローカルレジスタ群が割り当てられるから、それぞれW0 localおよびW7 localの各ローカルレジスタ群が割り当てられ、OUT_PORT0、OUT_PORT1、およびOUT_PORT2には、アウトレジスタ群が割り当てられるから、それぞれW0 out、W7 out、W6 outの各アウトレジスタ群が割り当てられる。【００３３】
一方、現在のＣＷＰがＣＷＰ＝０であってそれに続いてSAVE命令が実行される場合のアウトオブオーダ実行を例に説明すると、L_PORT0およびL_PORT1には、それぞれW0 localおよびW1 localの各ローカルレジスタ群が割り当てられ、OUT_PORT0、OUT_PORT1、およびOUT_PORT2には、それぞれW0 out、W7 out、W1 outの各アウトレジスタ群が割り当てられる。  以上のことから、ＭＲＦ１からのレジスタ読出しの１段階目としてのカレントウィンドウ選択において、WINDOW_ADDRESS信号に基づいて各レジスタの読み出しポートが選択するレジスタを、次のルール１〜ルール６として示される動作アルゴリズムに基づいて割り当てることができる。尚、ウィンドウが0, 1, 2, ・・・, 2n, 2n+1のレジスタウィンドウがあるとする。（「ｎ」は任意の自然数である）また、ＣＷＰ＝2n+1の次（ＣＷＰ＝2n+2）はＣＷＰ＝０に回帰する。【００３４】
ルール１  ＣＷＰ＝2nの時(SAVE・RESTORE命令実行中以外):
L_PORT0   ＝ W2n local
L_PORT1   ＝ ＊（don’t careの意）
OUT_PORT0 ＝ W2n out
OUT_PORT1 ＝ W(2n-1) out
OUT_PORT2 ＝ ＊（don’t careの意）
ルール２  ＣＷＰ＝2n+1の時(SAVE・RESTORE命令実行中以外):
L_PORT0   ＝ ＊（don’t careの意）
L_PORT1   ＝ W(2n+1) local 
OUT_PORT0 ＝ W2n out
OUT_PORT1 ＝ WP(2n+1) out
OUT_PORT2 ＝ ＊（don’t careの意）
ルール３  ＣＷＰ＝2nの時(SAVE命令実行中):
L_PORT0   ＝ W2n local
L_PORT1   ＝ W(2n+1) local
OUT_PORT0 ＝ W2n out
OUT_PORT1 ＝ W(2n-1) out
OUT_PORT2 ＝ W(2n+1) out
ルール４  ＣＷＰ＝2n+1の時(SAVE命令実行中):
L_PORT0   ＝ W(2n+2) local
L_PORT1   ＝ W(2n+1) local
OUT_PORT0 ＝ W2n out
OUT_PORT1 ＝ W(2n+1) out
OUT_PORT2 ＝ W(2n+2) out
ルール５  ＣＷＰ＝2nの時(RESTORE命令実行中):
L_PORT0   ＝ W2n local
L_PORT1   ＝ W(2n-1) local
OUT_PORT0 ＝ W2n out
OUT_PORT1 ＝ W(2n-1) out
OUT_PORT2 ＝ W(2n-2) out
ルール６  ＣＷＰ＝2n+1の時(RESTORE命令実行中):
L_PORT0   ＝ W2n local
L_PORT1   ＝ W(2n+1) local
OUT_PORT0 ＝ W2n out
OUT_PORT1 ＝ W(2n+1) out
OUT_PORT2 ＝ W(2n-2) out【００３５】
以上のルール１〜６に基づいて、各ポートの読み出しにおいて、L_PORT0にはW(2n) localのレジスタ群からいずれか１つが選択され、L_PORT1にはW(2n+1) localのレジスタ群からいずれか１つが選択される。また、O_PORT0にはW(2n) outのレジスタ群からいずれか１つが選択され、O_PORT1にはW(2n+1) outのレジスタ群からいずれか１つが選択され、O_PORT2にはW(2n) out またはW(2n+1) outのレジスタ群からいずれか１つが選択されればよいことがわかる。そして、各レジスタ読出しポートでは、ＣＷＰの値に基づくWINDOW_ADDRESS信号、およびSAVE命令、RESTORE命令をそれぞれ実行中か否かによって読み出すレジスタを選択すればよい。【００３６】
上述のレジスタ割り当ての原理に基づく本実施形態の具体的な構成について、従来の構成と対比させながら以下に説明する。図９は、図３に示される本実施形態の演算処理装置０におけるレジスタウィンドウシステムの構成例を示す図、図１０は、従来のレジスタウィンドウシステムの構成例を示す図である。【００３７】
図９に示される本実施形態のレジスタウィンドウシステムの構成例において、Ｗ0 local、Ｗ2 local、Ｗ4 local、Ｗ6 localで示される４個のローカルレジスタ群から出力される８レジスタ値からなる各組は、セレクタ９０４によっていずれかの組が選択されて、L_PORT0ポートに出力される。【００３８】
Ｗ1 local、Ｗ3 local、Ｗ5 local、Ｗ7 localで示される４個のローカルレジスタ群から出力される８レジスタ値からなる各組は、セレクタ９０５によっていずれかの組が選択されて、L_PORT1ポートに出力される。【００３９】
Ｗ0 out、Ｗ2 out、Ｗ4 out、Ｗ6 outで示される４個のローカルレジスタ群から出力される８レジスタ値からなる各組は、セレクタ９０５によっていずれかの組が選択されて、OUT_PORT0ポートに出力され、また、セレクタ９０５および９０７によっていずれかの組が選択されて、OUT_PORT2ポートに出力される。【００４０】
Ｗ1 out、Ｗ3 out、Ｗ5 out、Ｗ7 outで示される４個のローカルレジスタ群から出力される８レジスタ値からなる各組は、セレクタ９０６によっていずれかの組が選択されて、OUT_PORT1ポートに出力され、また、セレクタ９０６および９０７によっていずれかの組が選択されて、OUT_PORT2ポートに出力される。【００４１】
ＧＬで示されるグローバルレジスタ群から出力される８レジスタ値からなる組は、G_PORTポートに出力される。
L_PORT0、L_PORT1、OUT_PORT0、OUT_PORT1、OUT_PORT2 、およびG_PORTの６ポートに出力されたそれぞれ８レジスタ値からなる合計８×６＝４８レジスタ値は、セレクタ９０８によって１つのレジスタ値が選択されて、READ_DATA（読出しデータ）として出力される。なお、セレクタ９０８中の「４８：１」は、４８レジスタ値から１レジスタ値を選択出力することを意味する。【００４２】
図９に示される本実施形態のレジスタウィンドウシステムの構成において、ＣＷＰの値に基づくWINDOW_ADDRESS信号、およびSAVE命令またはRESTORE命令の実行状態に基づいて、前述したルール１〜６の動作アルゴリズムに従って、セレクタ９０３〜９０７が、各レジスタ群出力を選択するように動作する。この動作アルゴリズムは、簡単な論理回路によって構成することが可能である。そして、セレクタ９０８に供給されるREAD_ADDRESS信号は、４８レジスタ値から１レジスタ値を選択させる信号でよい。なお、WRITE_ADDRESS信号は、セレクタ９０２を制御して、WRITE_DATA（書込みデータ）を、各レジスタ群に書き込ませる。【００４３】
このように、本実施形態では、WINDOW_ADDRESS信号もしくはＭＲＦ９０１に保持されるデータが変わらない場合は、WINDOW_ADDRESS信号とREAD_ADDRESS信号による簡単なアドレス指定によって、高速なデータ読出しが可能になる。以下に説明する図１０の従来構成に比較して、ワーキングレジスタファイル（ＷＲＦ）が不要な分だけハードウェア量を削減することが可能となる。但し、WINDOW_ADDRESS信号もしくはＭＲＦ９０１に保持されるデータが変化した場合は、図３に示されるＲＯＢ５からの読み出しで対応をするように構成することができる。【００４４】
次に、図１０に示される従来のレジスタウィンドウシステムの構成例において、マスタレジスタファイル（ＭＲＦ）１００１は、Ｗ0 local〜Ｗ7 localで示される８個のローカルレジスタ群と、Ｗ0 out〜Ｗ7 outで示される８個のアウトレジスタ群と、ＧＬで示されるグローバルレジスタ群とを有する。なお、８個のインレジスタ群Ｗ0 in〜Ｗ7 inはそれぞれ、８個のアウトレジスタ群Ｗ7 out,Ｗ0 out〜W6 outと共用される。【００４５】
一方、ワーキングレジスタファイル（ＷＲＦ）１００２は、ＭＲＦ１００１における或るＣＷＰ値においてＭＲＦ１００１から出力された選択された１組のグローバルレジスタ群の８レジスタ値、選択された１組のローカルレジスタ群の８レジスタ値、選択された１組のインレジスタ群（＝アウトレジスタ群）の８レジスタ値、及び選択された１組のアウトレジスタ群の８レジスタ値をそれぞれ保持するＧレジスタ群１００５、Ｌレジスタ群１００６、ＩＮレジスタ群１００７、及びＯＵＴレジスタ群１００８と、ＭＲＦ１００１からのローカルレジスタ群Ｗ0 local〜Ｗ7 localまたはグローバルレジスタ群ＧＬのいずれかの現在の８レジスタ出力値を一時保持するＧ／Ｌレジスタ群１００３と、同じくＭＲＦ１００１からのアウトレジスタ群Ｗ0 out〜Ｗ7 outのいずれかの現在の８レジスタ出力値を一時保持するＩＯレジスタ群１００４と、Ｇ／Ｌレジスタ群１００３、ＩＯレジスタ群１００４、またはWRITE_DATA（書込みデータ）を選択して１００５〜１００８のレジスタ群に保持させるセレクタ１００９と、レジスタ群１００３〜１００８の６レジスタ群、即ち、６×８＝４８レジスタ群のうちの１レジスタ値を選択してREAD_DATA（読出しデータ）として出力するセレクタ１０１０とを有する。なお、セレクタ１０１０中の「４８：１」は、４８レジスタ群から１レジスタを選択することを意味する。【００４６】
上述の構成を有する図１０の従来のレジスタウィンドウシステムにおいて、読出し動作時には、ＭＲＦ１００１における現在のＣＷＰ値に対応する読出しデータは、ＭＲＦ１００１中の各レジスタ群の出力からＧ／Ｌレジスタ群１００３及びＩＯレジスタ群１００４及びセレクタ１００９を介して、ＷＲＦ１００２内のレジスタ群１００５〜１００８に常に保持される。また、書込み動作時には、ＭＲＦ１００１における現在の書込みデータは、ＭＲＦ１００１中のセレクタ１００９を介して、ＷＲＦ１００２内のレジスタ群１００５〜１００８に保持される。従って、READ_ADDRESSとして、上記レジスタ群１００５〜１００８、または１００３、１００４のいずれかを選択するアドレス信号をセレクタ１０１０に供給するだけで、現在のＣＷＰが指し示すデータを、READ_DATAとして高速に読み出すことが可能となる。なお、アウトオブオーダ実行等を考慮して、セレクタ１０１０は、現在のＭＲＦ１００１の出力であるレジスタ群１００３及び１００４の出力も選択することができるように構成されている。【００４７】
図１０に示される従来のレジスタウィンドウシステムの構成例では、ＭＲＦ１００１に加えてＷＲＦ１００２が具備されることにより、高速なデータ読出しが実現されているが、前述したように、ＷＲＦ１００２のためのハードウェア構成が増加してしまうという問題点を有している。【００４８】
以上、図９に示される本実施形態の構成と図１０に示される従来例の構成とを比較すれば、本実施形態の優位性は明らかである。
ここまで、本実施の形態の演算処理装置０の構成を詳細に説明した。上述したように、本実施の形態の演算処理装置０では、図３のＭＲＦ１の読み出し部分をＣＷＰの値、すなわちカレントウィンドウの番号によって選択するカレントウィンドウ選択(WINDOW_ADDRESS)と、読み出しアドレスに相当するREAD_ADDRESSにより読み出しレジスタを選択する２段階で制御する。カレントウィンドウ選択においては、カレントウィンドウ番号に基づいてウィンドウ番号が偶数のローカルレジスタ群からレジスタを選択する第１のローカルレジスタ読出しポート（L_PORT0）と、カレントウィンドウ番号に基づいてウィンドウ番号が奇数のローカルレジスタ群からレジスタを選択する第２のローカルレジスタ読出しポート（L_PORT1）と、カレントウィンドウ番号に基づいてウィンドウ番号が偶数のアウトレジスタ群からレジスタを選択する第１のアウトレジスタ読出しポート（OUT_PORT0）と、カレントウィンドウ番号に基づいてウィンドウ番号が奇数のアウトレジスタ群からレジスタを選択する第２のアウトレジスタ読出しポート（OUT_PORT1）と、カレントウィンドウ番号に基づいてアウトレジスタ群からレジスタを選択する第３のアウトレジスタ読出しポート（OUT_PORT2）によりレジスタの選択が行われる。【００４９】
このような構成により本実施の形態の演算処理装置は、一時記憶であるＷＲＦを用いずに、レジスタからの高速読み出しを実現することができ、かつ、ウィンドウ切替命令の後続命令のアウトオブオーダ実行も可能である。【００５０】
これにより、ＷＲＦのハードウェア分のコストを削減できる。また、ＷＲＦを使用しないことにより消費電力の削減、および、ＭＲＦ−ＷＲＦ間のデータ転送が無くなることによる消費電力の削減が可能である。【００５１】
以上、図面を参照しながら本実施の形態の一例を説明したが、本発明は上述した演算処理装置を含む情報処理装置としても構成することができる。
図１１に情報処理装置の構成の一例を示す。情報処理装置１１０は、演算ユニット１１２、メモリ１１１、命令制御ユニット１１３、キャッシュ１１５を含むキャッシュ制御ユニット１１４を有する。上述した演算処理装置０は演算ユニット１１２に対応する。図３に示した制御部４が演算制御部１１６に、演算部３が演算部１１８、ＭＲＦ１がレジスタ部１１７に対応する。【００５２】
情報処理装置１１０は、上述した演算処理装置０を採用して構成されることで、ハードウェアコストを低減させることができ、また消費電力も低減することが可能である。
以上のように、本発明の実施の形態の一例について詳細に説明したが、本発明はこれに限定されるものではなく、本実施の形態の要旨を逸脱しない範囲内で様々の構成または形状をとることができることは言うまでもない。
【図１】
2010016097.tif 000003
【図２】
2010016097.tif 000004
【図３】
2010016097.tif 000005
【図４】
2010016097.tif 000006
【図５】
2010016097.tif 000007
【図６】
2010016097.tif 000008
【図７】
2010016097.tif 000009
【図８】
2010016097.tif 000010
【図９】
2010016097.tif 000011
【図１０】
2010016097.tif 000012
【図１１】
2010016097.tif 000013
【手続補正書】
【提出日】平成23年1月26日(2011.1.26)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
Wk outは子ルーチンが呼び出すサブルーチンに引数を渡すために、Wk inは子ルーチンを呼び出した親ルーチンから引数を受け取るために使用される。レジスタファイル１０００ではWk inとWk+1 out、およびWk outとWk-1 inがオーバーラップするように構成されているため、サブルーチンコール時において、引数の引き渡しとそのために使用するレジスタの確保を高速化できる。Wk localは、各サブルーチン、つまり親ルーチンから呼び出された子ルーチンが作業用のレジスタセットとして使用する。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３６
【補正方法】変更
【補正の内容】
【００３６】
上述のレジスタ割り当ての原理に基づく本実施形態の具体的な構成について、従来の構成と対比させながら以下に説明する。図１０は、図３に示される本実施形態の演算処理装置０におけるレジスタウィンドウシステムの構成例を示す図、図９は、従来のレジスタウィンドウシステムの構成例を示す図である。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
図１０に示される本実施形態のレジスタウィンドウシステムの構成例において、Ｗ0 local、Ｗ2 local、Ｗ4 local、Ｗ6 localで示される４個のローカルレジスタ群から出力される８レジスタ値からなる各組は、セレクタ９０４によっていずれかの組が選択されて、L_PORT0ポートに出力される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００４２
【補正方法】変更
【補正の内容】
【００４２】
図１０に示される本実施形態のレジスタウィンドウシステムの構成において、ＣＷＰの値に基づくWINDOW_ADDRESS信号、およびSAVE命令またはRESTORE命令の実行状態に基づいて、前述したルール１〜６の動作アルゴリズムに従って、セレクタ９０３〜９０７が、各レジスタ群出力を選択するように動作する。この動作アルゴリズムは、簡単な論理回路によって構成することが可能である。そして、セレクタ９０８に供給されるREAD_ADDRESS信号は、４８レジスタ値から１レジスタ値を選択させる信号でよい。なお、WRITE_ADDRESS信号は、セレクタ９０２を制御して、WRITE_DATA（書込みデータ）を、各レジスタ群に書き込ませる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００４３
【補正方法】変更
【補正の内容】
【００４３】
このように、本実施形態では、WINDOW_ADDRESS信号もしくはＭＲＦ９０１に保持されるデータが変わらない場合は、WINDOW_ADDRESS信号とREAD_ADDRESS信号による簡単なアドレス指定によって、高速なデータ読出しが可能になる。以下に説明する図９の従来構成に比較して、ワーキングレジスタファイル（ＷＲＦ）が不要な分だけハードウェア量を削減することが可能となる。但し、WINDOW_ADDRESS信号もしくはＭＲＦ９０１に保持されるデータが変化した場合は、図３に示されるＲＯＢ５からの読み出しで対応をするように構成することができる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００４４
【補正方法】変更
【補正の内容】
【００４４】
次に、図９に示される従来のレジスタウィンドウシステムの構成例において、マスタレジスタファイル（ＭＲＦ）１００１は、Ｗ0 local〜Ｗ7 localで示される８個のローカルレジスタ群と、Ｗ0 out〜Ｗ7 outで示される８個のアウトレジスタ群と、ＧＬで示されるグローバルレジスタ群とを有する。なお、８個のインレジスタ群Ｗ0 in〜Ｗ7 inはそれぞれ、８個のアウトレジスタ群Ｗ7 out,Ｗ0 out〜W6 outと共用される。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００４６
【補正方法】変更
【補正の内容】
【００４６】
上述の構成を有する図９の従来のレジスタウィンドウシステムにおいて、読出し動作時には、ＭＲＦ１００１における現在のＣＷＰ値に対応する読出しデータは、ＭＲＦ１００１中の各レジスタ群の出力からＧ／Ｌレジスタ群１００３及びＩＯレジスタ群１００４及びセレクタ１００９を介して、ＷＲＦ１００２内のレジスタ群１００５〜１００８に常に保持される。また、書込み動作時には、ＭＲＦ１００１における現在の書込みデータは、ＭＲＦ１００１中のセレクタ１００９を介して、ＷＲＦ１００２内のレジスタ群１００５〜１００８に保持される。従って、READ_ADDRESSとして、上記レジスタ群１００５〜１００８、または１００３、１００４のいずれかを選択するアドレス信号をセレクタ１０１０に供給するだけで、現在のＣＷＰが指し示すデータを、READ_DATAとして高速に読み出すことが可能となる。なお、アウトオブオーダ実行等を考慮して、セレクタ１０１０は、現在のＭＲＦ１００１の出力であるレジスタ群１００３及び１００４の出力も選択することができるように構成されている。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００４７
【補正方法】変更
【補正の内容】
【００４７】
図９に示される従来のレジスタウィンドウシステムの構成例では、ＭＲＦ１００１に加えてＷＲＦ１００２が具備されることにより、高速なデータ読出しが実現されているが、前述したように、ＷＲＦ１００２のためのハードウェア構成が増加してしまうという問題点を有している。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００４８
【補正方法】変更
【補正の内容】
【００４８】
以上、図１０に示される本実施形態の構成と図９に示される従来例の構成とを比較すれば、本実施形態の優位性は明らかである。
ここまで、本実施の形態の演算処理装置０の構成を詳細に説明した。上述したように、本実施の形態の演算処理装置０では、図３のＭＲＦ１の読み出し部分をＣＷＰの値、すなわちカレントウィンドウの番号によって選択するカレントウィンドウ選択(WINDOW_ADDRESS)と、読み出しアドレスに相当するREAD_ADDRESSにより読み出しレジスタを選択する２段階で制御する。カレントウィンドウ選択においては、カレントウィンドウ番号に基づいてウィンドウ番号が偶数のローカルレジスタ群からレジスタを選択する第１のローカルレジスタ読出しポート（L_PORT0）と、カレントウィンドウ番号に基づいてウィンドウ番号が奇数のローカルレジスタ群からレジスタを選択する第２のローカルレジスタ読出しポート（L_PORT1）と、カレントウィンドウ番号に基づいてウィンドウ番号が偶数のアウトレジスタ群からレジスタを選択する第１のアウトレジスタ読出しポート（OUT_PORT0）と、カレントウィンドウ番号に基づいてウィンドウ番号が奇数のアウトレジスタ群からレジスタを選択する第２のアウトレジスタ読出しポート（OUT_PORT1）と、カレントウィンドウ番号に基づいてアウトレジスタ群からレジスタを選択する第３のアウトレジスタ読出しポート（OUT_PORT2）によりレジスタの選択が行われる。
【手続補正１０】
【補正対象書類名】図面
【補正対象項目名】図１１
【補正方法】変更
【補正の内容】
【図１１】
2010016097.tif 000014
【国際調査報告】
2010016097.tif 000015
2010016097.tif 000016