(57)【要約】【課題】レジスタ・リネーミング機構を実装するプロセッサを備えた情報処理装置におい、プログラムを最適化するだけの手段では回避できないメモリアクセスやレジスタの解放待ち時間を回避すること。【解決手段】レジスタ・リネーミング機構を実装すると共に、図１（ａ）に示すレジスタの使用状況の下で、ユーザ（プログラマ等）は、命令セットに導入した専用命令（論理レジスタに割り当てが可能な未使用の仮想レジスタの数を増加または減少させる命令）を発行し、実行させる。これにより、未使用の仮想レジスタの数を図１（ｂ）、図１（ｃ）に示すように変更できるので、ソフトウェアによって、それ自身のプログラム特性に最適化したレジスタの利用を図ることが可能となる。また、レジスタ上のデータをメモリへ退避するようなメモリアクセスの発生や、レジスタの解放待ち時間の発生が抑制されるので、処理性能を向上させることができるようになる。【選択図】図１
2011018120.tif 000002
【特許請求の範囲】
【請求項１】
物理レジスタへの論理レジスタの割り付けを実行することで管理し、未使用の論理レジスタが所定の命令セットに属する命令で指定された際に、未使用の物理レジスタに対し関連付けを実施することの出来るレジスタ・リネーミング手段を備えた情報処理装置であって、
所定の命令セットに属する専用命令として、前記論理レジスタの物理レジスタへの割り付けに対し、指定される論理レジスタの物理レジスタへの割り付けを全て解除させ、未使用の論理レジスタ及び物理レジスタとするものを備え、
論理レジスタのうちソフトウェアで使用するレジスタの量及び、リネーミング時に論理レジスタのリネーム先として使用できる物理レジスタ量を変更、最適化することが出来ることを特徴とする情報処理装置。
【請求項２】
物理レジスタへの論理レジスタの割り付けを実行することで管理し、未使用の論理レジスタが所定の命令セットに属する命令で指定された際に、未使用の物理レジスタに対し関連付けを実施することの出来るレジスタ・リネーミング手段を備えた情報処理装置であって、
所定の命令セットに属する専用命令として、前記論理レジスタの物理レジスタへの割り付けに対し、指定される未使用の論理レジスタを未使用の物理レジスタに対し全て割り付けを実施させるものと、
所定の命令セットに属する専用命令として、前記論理レジスタの物理レジスタへの割り付けに対し、指定される論理レジスタの物理レジスタへの割り付けを全て解除させ、未使用の論理レジスタ及び物理レジスタとするものを備え、
論理レジスタのうちソフトウェアで使用するレジスタの量及び、リネーミング時に論理レジスタのリネーム先として使用できる物理レジスタ量を変更、最適化することが出来ることを特徴とする情報処理装置。
【請求項３】
物理レジスタへの論理レジスタの割り付けを実行し、管理するリネーミング手段を備えた情報処理装置であって、
所定の命令セットに属する専用命令として、前記論理レジスタの物理レジスタへの割り付けに対し、指定される未使用の論理レジスタを未使用の物理レジスタに対し全て割り付けを実施させるものと、
所定の命令セットに属する専用命令として、前記論理レジスタの物理レジスタへの割り付けに対し、指定される論理レジスタの物理レジスタへの割り付けを全て解除させ、未使用の論理レジスタ及び物理レジスタとするものを備え、
論理レジスタのうちソフトウェアで使用するレジスタの量及び、リネーミング時に論理レジスタのリネーム先として使用できる物理レジスタ量を変更、最適化することが出来ることを特徴とする情報処理装置。
【請求項４】
物理レジスタへの論理レジスタの割り付けを実行し、管理するリネーミング手段を備えた情報処理装置であって、
命令セットアーキテクチャとしてソフトウェアに対し公開される論理レジスタ数が、実装されている物理レジスタ数と等しいことを特徴とする、請求項１乃至請求項３記載の情報処理装置。
【請求項５】
物理レジスタへの論理レジスタの要素毎の割り付けを実行することで管理し、未使用の論理レジスタが所定の命令セットに属する命令で指定された際に、該論理レジスタの各要素を未使用の物理レジスタに対し関連付けを実施することの出来るレジスタ・リネーミング手段を備えたベクトル型の情報処理装置であって、
所定の命令セットに属する専用命令として、前記論理レジスタの各要素と物理レジスタの割り付けに対し、指定される使用中論理レジスタの各要素の物理レジスタへの割り付けを全て解除させ、未使用の論理レジスタ及び物理レジスタとするものを備え、
論理レジスタのうちソフトウェアで使用するレジスタの量及び、リネーミング時に論理レジスタの要素毎のリネーム先として使用できる物理レジスタ量を変更、最適化することができることを特徴とするベクトル型情報処理装置。
【請求項６】
物理レジスタへの論理レジスタの要素毎の割り付けを実行することで管理し、未使用の論理レジスタが所定の命令セットに属する命令で指定された際に、該論理レジスタの各要素を未使用の物理レジスタに対し関連付けを実施することの出来るレジスタ・リネーミング手段を備えたベクトル型の情報処理装置であって、
所定の命令セットに属する専用命令として、前記論理レジスタの各要素の物理レジスタへの割り付けに対し、指定される未使用論理レジスタの各要素を未使用の物理レジスタに対して全て割り付けを実施させるものと、
所定の命令セットに属する専用命令として、前記論理レジスタの各要素と物理レジスタの割り付けに対し、指定される使用中論理レジスタの各要素の物理レジスタへの割り付けを全て解除させ、未使用の論理レジスタ及び物理レジスタとするものを備え、
論理レジスタのうちソフトウェアで使用するレジスタの量及び、リネーミング時に論理レジスタの要素毎のリネーム先として使用できる物理レジスタ量を変更、最適化することができることを特徴とするベクトル型情報処理装置。
【請求項７】
物理レジスタへの論理レジスタの要素毎の割り付けを実行し、管理するリネーミング手段を備えたベクトル型の情報処理装置であって、
所定の命令セットに属する専用命令として、前記論理レジスタの各要素の物理レジスタへの割り付けに対し、指定される未使用論理レジスタの各要素を未使用の物理レジスタに対して全て割り付けを実施させるものと、
所定の命令セットに属する専用命令として、前記論理レジスタの各要素の物理レジスタへの割り付けに対し、指定される使用中論理レジスタ内の各要素の物理レジスタへの割り付けを全て解除させ、未使用の論理レジスタ及び物理レジスタとするものを備え、
論理レジスタのうちソフトウェアで使用するレジスタの量及び、リネーミング時に論理レジスタ内の各要素のリネーム先として使用できる物理レジスタ量を変更、最適化することができることを特徴とするベクトル型情報処理装置。
【請求項８】
物理レジスタへの論理レジスタの要素毎の割り付けを実行し、管理するリネーミング手段を備えたベクトル型の情報処理装置であって、
命令セットアーキテクチャとしてソフトウェアに対し公開される論理レジスタ内の各要素の総数が、実装されている物理レジスタ数と等しいことを特徴とする、請求項５乃至請求項７記載のベクトル型情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置及びベクトル型情報処理装置に係り、特に、レジスタ・リネーミング機構を実装するプロセッサを備えると共に、その処理性能を高める情報処理装置及びベクトル型情報処理装置に関する。
【背景技術】
【０００２】
以下、情報処理装置のアーキテクチャにおいて、ソフトウェアに公開されているレジスタ（即ち、タイミングによってはソフトウェア側から参照可能であったり、更新可能であったりするレジスタ）をＳＶＲ(Software Visible Register) とし、そのうち、ソフトウェアが現在使用可能なレジスタをＳＵＲ(Software Usable Register)とする。また、ハードウェア上に実装されたレジスタをＨＲ(Hardware Register) とし、そのうちＳＵＲの物理的な格納先となるレジスタをＳＲ(Software Register) とし、レジスタ・リネーミングに用いられるレジスタをＲＲ(Renaming Register) とする。  
【０００３】
レジスタ・リネーミング機構を実装するプロセッサを備えた情報処理装置であっても、周知のコンピュータ・アーキテクチャでは、ＳＵＲの数やＲＲの数は変えることができず、プログラムの処理速度を向上させるには、プログラムの方をハードウェアに合わせて最適化していくしかなかった。しかし、プログラムの方をハードウェアに適合させる最適化手段にも限界があり、即ち、レジスタ不足の場合にはデータのメモリへの退避が必要となるため、この退避のためのメモリアクセス命令の実行に要するアクセス時間や、前述のＲＲの不足によるレジスタの解放待ち時間といった無駄時間が生じてしまうという問題点があった。
【０００４】
なお、他の関連技術として、歴史的には、ユーザが作成したプログラム（ソースプログラム）を実行プログラム（オブジェクトプログラム）へと変換する過程で、論理レジスタの使用状況を管理し、システムによって、その最適化を図る最適化技術が有り、既に周知の技術として実施されている。この技術は、ＯＳ（オペレーティング・システム）の１構成要素であるコンパイラなどで、最適化フェーズを設けて実施されている。しかし、コンパイラの場合は、プログラム全体を見渡すことができるので、論理レジスタの参照ステップなどを全体的に解析することで最適化することが可能となるが、常駐のＯＳや、ハードウェアで、この技術を実施することは、命令系列の実行というメインの仕事を抱えているので、ともすればオーバーヘッドを招来する可能性が有り、困難とされている。
【０００５】
近年、特にスループット向上の要求が高まったことを背景に、例えば、ベクトルプロセッサ等でパイプライン処理が採用されており、ユーザがソフトウェア・パイプライニングを組むことによって命令スループットの性能を向上させる技術も公知となっている。この技術の場合は、プログラムステップに複数のループが存在する場合、場合によっては、各ループでそれぞれ異なる仮想レジスタを割り当てる必要があるため、実行プログラムにおいて命令数が増大し、また、ユーザは、オーバーラップして実行される各ループにおいて、論理レジスタがぶつからないように指定しなければならないという煩わしさがある。
【０００６】
ここで、ユーザとは、主として命令（マシン語）の元となるプログラムを作成したプログラマーを指すが、広くは、コンパイラレベルの最適化を行うコンパイラ等や、ハードウェアを制御するＯＳ（オペレーティング・システム）を指すこともある。
【０００７】
なお、スループットの向上のためにパイプライン処理を採用する情報処理装置では、ハードウェア上にレジスタ・リネーミング機構を設けることが不可欠となっている。この機構の設置は、多少のオーバーヘッドにはなっても、論理レジスタと物理レジスタとの対応付けを、前後の処理ステップで齟齬が生じないように管理するためには不可欠である。
【０００８】
レジスタ・リネーミング機構に関する技術としては、例えば、特許文献１に、物理レジスタ番号と論理レジスタ番号との対応付けを行うと共に、命令セットに、レジスタリネーム命令を設けた情報処理装置が開示されているが、その目的はレジスタのリネーミングに限られており、即ち、ユーザであるプログラマに、物理レジスタ番号と論理レジスタ番号との対応付けを任意に設定変更できる手段を与えるだけのものであり、よって、前記命令セットには、物理レジスタ番号と論理レジスタ番号との対応付けを変える命令は含まれていても、本発明のようなレジスタ開放命令までは含まれておらず、よって、本発明のように前述のＲＲの数を変更することまではできない。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特許第３８１７４３６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ところで、上記背景技術で述べた周知の情報処理装置にあっては、前述のとおり、ＳＵＲとＲＲの個数はハードウェア仕様に依存する固定値であって、ユーザであるプログラマは、ソフトウェア（即ち、該プログラマが作成するプログラム）を介して任意に変更することができなかったので、例えば、ハードウェアとしてはレジスタの記憶容量に空きが有る場合にも、前述のＳＵＲとＲＲとを増加させることができず、よって、情報処理装置のハードウェア性能をフルに発揮させることができないという問題点があった。
【００１１】
本発明は、上記従来の問題点に鑑みてなされたものであって、プログラムを最適化するだけの手段（即ち、プログラムをハードウェアに合わせて最適化するだけの手段）では回避できないメモリアクセスやレジスタの解放待ち時間を回避することを可能とし、即ち、ハードウェアの方をプログラムに適合させる方向への最適化手段を備えた情報処理装置及びベクトル型情報処理装置を提供することを目的としている。
【００１２】
本発明の他の目的は、命令セットに専用命令を設けることを可能にすることで、未使用の物理レジスタの数をソフトウェアによって増減させる手段を与え、プログラム特性に適合したレジスタの利用を図ることが可能な情報処理装置及びベクトル型情報処理装置を提供することにある。
【課題を解決するための手段】
【００１３】
上記の課題を解決すべく、本発明の情報処理装置として、物理レジスタへの論理レジスタの割り付けを実行することで管理し、未使用の論理レジスタが所定の命令セットに属する命令で指定された際に、未使用の物理レジスタに対し関連付けを実施することの出来るレジスタ・リネーミング手段を備えた情報処理装置であって、所定の命令セットに属する専用命令として、前記論理レジスタの物理レジスタへの割り付けに対し、指定される論理レジスタの物理レジスタへの割り付けを全て解除させ、未使用の論理レジスタ及び物理レジスタとするものを備え、論理レジスタのうちソフトウェアで使用するレジスタの量及び、リネーミング時に論理レジスタのリネーム先として使用できる物理レジスタ量を変更、最適化することが出来ることを特徴とする情報処理装置が提供される。
【００１４】
また、情報処理装置として、物理レジスタへの論理レジスタの割り付けを実行することで管理し、未使用の論理レジスタが所定の命令セットに属する命令で指定された際に、未使用の物理レジスタに対し関連付けを実施することの出来るレジスタ・リネーミング手段を備えた情報処理装置であって、所定の命令セットに属する専用命令として、前記論理レジスタの物理レジスタへの割り付けに対し、指定される未使用の論理レジスタを未使用の物理レジスタに対し全て割り付けを実施させるものと、所定の命令セットに属する専用命令として、前記論理レジスタの物理レジスタへの割り付けに対し、指定される論理レジスタの物理レジスタへの割り付けを全て解除させ、未使用の論理レジスタ及び物理レジスタとするものを備え、論理レジスタのうちソフトウェアで使用するレジスタの量及び、リネーミング時に論理レジスタのリネーム先として使用できる物理レジスタ量を変更、最適化することが出来ることを特徴とする情報処理装置が提供される。
【００１５】
更に、情報処理装置として、物理レジスタへの論理レジスタの割り付けを実行し、管理するリネーミング手段を備えた情報処理装置であって、所定の命令セットに属する専用命令として、前記論理レジスタの物理レジスタへの割り付けに対し、指定される未使用の論理レジスタを未使用の物理レジスタに対し全て割り付けを実施させるものと、所定の命令セットに属する専用命令として、前記論理レジスタの物理レジスタへの割り付けに対し、指定される論理レジスタの物理レジスタへの割り付けを全て解除させ、未使用の論理レジスタ及び物理レジスタとするものを備え、論理レジスタのうちソフトウェアで使用するレジスタの量及び、リネーミング時に論理レジスタのリネーム先として使用できる物理レジスタ量を変更、最適化することが出来ることを特徴とする情報処理装置が提供される。
【００１６】
更に、ベクトル型情報処理装置として、物理レジスタへの論理レジスタの要素毎の割り付けを実行することで管理し、未使用の論理レジスタが所定の命令セットに属する命令で指定された際に、該論理レジスタの各要素を未使用の物理レジスタに対し関連付けを実施することの出来るレジスタ・リネーミング手段を備えたベクトル型の情報処理装置であって、所定の命令セットに属する専用命令として、前記論理レジスタの各要素と物理レジスタの割り付けに対し、指定される使用中論理レジスタの各要素の物理レジスタへの割り付けを全て解除させ、未使用の論理レジスタ及び物理レジスタとするものを備え、論理レジスタのうちソフトウェアで使用するレジスタの量及び、リネーミング時に論理レジスタの要素毎のリネーム先として使用できる物理レジスタ量を変更、最適化することができることを特徴とするベクトル型情報処理装置が提供される。
【００１７】
更に、ベクトル型情報処理装置として、物理レジスタへの論理レジスタの要素毎の割り付けを実行することで管理し、未使用の論理レジスタが所定の命令セットに属する命令で指定された際に、該論理レジスタの各要素を未使用の物理レジスタに対し関連付けを実施することの出来るレジスタ・リネーミング手段を備えたベクトル型の情報処理装置であって、所定の命令セットに属する専用命令として、前記論理レジスタの各要素の物理レジスタへの割り付けに対し、指定される未使用論理レジスタの各要素を未使用の物理レジスタに対して全て割り付けを実施させるものと、所定の命令セットに属する専用命令として、前記論理レジスタの各要素と物理レジスタの割り付けに対し、指定される使用中論理レジスタの各要素の物理レジスタへの割り付けを全て解除させ、未使用の論理レジスタ及び物理レジスタとするものを備え、論理レジスタのうちソフトウェアで使用するレジスタの量及び、リネーミング時に論理レジスタの要素毎のリネーム先として使用できる物理レジスタ量を変更、最適化することができることを特徴とするベクトル型情報処理装置が提供される。
【００１８】
更に、ベクトル型情報処理装置として、物理レジスタへの論理レジスタの要素毎の割り付けを実行し、管理するリネーミング手段を備えたベクトル型の情報処理装置であって、所定の命令セットに属する専用命令として、前記論理レジスタの各要素の物理レジスタへの割り付けに対し、指定される未使用論理レジスタの各要素を未使用の物理レジスタに対して全て割り付けを実施させるものと、所定の命令セットに属する専用命令として、前記論理レジスタの各要素の物理レジスタへの割り付けに対し、指定される使用中論理レジスタ内の各要素の物理レジスタへの割り付けを全て解除させ、未使用の論理レジスタ及び物理レジスタとするものを備え、論理レジスタのうちソフトウェアで使用するレジスタの量及び、リネーミング時に論理レジスタ内の各要素のリネーム先として使用できる物理レジスタ量を変更、最適化することができることを特徴とするベクトル型情報処理装置が提供される。
【発明の効果】
【００１９】
以上説明したように、本発明の情報処理装置及びベクトル型情報処理装置によれば、プログラムを最適化するだけの周知の手段に代えて、未使用の物理レジスタの数をソフトウェアによって増減させる手段が与えられるので、プログラム特性に適合したレジスタの利用を図ることが可能となると共に、メモリアクセスやレジスタの解放待ち時間を回避することが可能となる効果がある。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態に係る情報処理装置におけるレジスタの特徴的な使用方法を例示する説明図である。
【図２】周知の関連技術において、レジスタを元とする集合間の対応関係を示す説明図である。
【図３】本発明の実施形態に係る情報処理装置において、レジスタを元とする集合間の対応関係を示す説明図である。
【図４】本発明の実施形態に係る情報処理装置の全体構成を示す構成図である。
【図５】ＳＵＲとＳＲとの対応付けを行うためのリネーミング・テーブルの記憶領域構成を示す構成図である。
【図６】論理レジスタ解放指示を受けたリネーミング・テーブル５２の変化を示す説明図である。
【図７】論理レジスタ確保指示を受けた場合のリネーミング方法を示す説明図である。
【図８】メモリアクセス命令を削減することによって処理性能の向上が図れることを示すタイムチャート図であり、図８（ａ）は比較のための周知の情報処理装置のタイムチャートを示し、図８（ｂ）は本実施形態に係る情報処理装置のタイムチャートを示す。
【図９】レジスタ解放待ち時間を無くすことによって処理性能の向上が図れることを示すタイムチャート図であり、図９（ａ）は比較のための周知の情報処理装置のタイムチャートを示し、図９（ｂ）は本実施形態に係る情報処理装置のタイムチャートを示す。
【図１０】本発明の他の実施形態に係る情報処理装置（ベクトル計算機）の全体構成を示す構成図である。
【発明を実施するための形態】
【００２１】
以下、本発明の情報処理装置及び情報処理装置のレジスタ量最適化方法について、図面を参照して詳細に説明する。
但し、以下の説明においても、レジスタをカテゴライズする符号は前述のとおりとし、即ち、アーキテクチャとしてソフトウェアに公開されているレジスタをＳＶＲ(Software Visible Register) とし、そのうちソフトウェアが現在使用可能なレジスタをＳＵＲ(Software Usable Register)とする。また、ハードウェア上に実装されたレジスタをＨＲ(Hardware Register) とし、そのうちＳＵＲの物理的な格納先となるレジスタをＳＲ(Software Register) 、レジスタ・リネーミングに用いられるレジスタをＲＲ(Renaming Register) とする。  
【００２２】
本発明は、レジスタ・リネーミング機構を実装するプロセッサにおいて、上記ＳＵＲの数及びＲＲの数を、実行処理するソフトウェア（プログラム）によってフレシキブルに変更できるようにしたことを特徴としている。
例えば、ＲＲ数を増やすことで、レジスタの解放待ち時間を少なくし、処理性能を向上させることができる。また、ＳＵＲの数も、ソフトウェアが任意のタイミングで変更することができるので、プログラム全体の特性や、プログラム内の局所的な特性に適合させてＳＲ及びＲＲの比率を細かく決定する最適化が実施できることになり、高い実行性能を期待することができるようになる。
【００２３】
図１は、本発明の実施形態に係る情報処理装置におけるレジスタの特徴的な使用方法を例示する説明図である。
同図に示すように、ハードウェア上に実装されたレジスタは、ソフトウェアが使用するレジスタＳＲと、ハードウェアがレジスタ・リネーミングとして使用するレジスタＲＲとに分類される。図１（ａ）では、ハードウェア上に実装されている２０個のＨＲのうち、１６個がＳＲとしてソフトウェアで使用されており、ソフトウェアが使用していない残りの４個のレジスタがＲＲとして使用されることを示している。
【００２４】
例えば、図１（ａ）に示すレジスタの使用状況の下で、ユーザ（プログラマ等）は、本実施形態で命令セットに導入した専用命令（ＳＶＲやＨＲを増加または減少させる命令）を発行して、この命令を実行させることにより、ＳＲの数を図１（ｂ）、図１（ｃ）に示すように変更できるので、ソフトウェアによって、それ自身のプログラム特性に最適化したレジスタの利用を図ることが可能となる。これにより、レジスタ上のデータをメモリへ退避するようなメモリアクセスの発生や、レジスタの解放待ち時間の発生が抑制されるので、処理性能を向上させることができるようになる。
【００２５】
以下、本発明の原理的な側面を、集合論の用語を含めた関係式を用いて説明する。
本発明の課題は、ＳＵＲの数を変更できるようにすることであったが、以下、これについて説明する。
以下では、ＳＳＶＲをＳＶＲの集合とし、ＳＳＵＲをＳＵＲの集合とする。また、ＳＳＶＲを構成する元である各ＳＵＲは、ハードウェア上に実装された全レジスタの集合ＨＲを構成する元Ｒに対し、全単射の写像ｆ（後述するように、具体的には対応テーブル）によって対応付けられるものとする。
【００２６】
また、写像ｆによってＳＳＵＲに対応付けられたハードウェア上のレジスタの集合をＨＳＲとする。さらに、ＨＨＲ上でＨＳＲに含まれないレジスタは、リネーミングに使用可能なレジスタであるものとして、これをＨＲＲとする。この定義によれば、レジスタ・リネーミング機能とは、写像ｆを操作することで、ＳＳＵＲ上の或る元ＳＵＲとＨＳＲ上の或る元ＳＲとの対応関係を、ＨＲＲの或る元ＲＲへと付け替えることであると考えることができる。
【００２７】
図２は、周知の関連技術において、レジスタを元とする集合間の対応関係を示す説明図である。
この関係は、下記の（１）式〜（５）式で表現することができる。
ＳＳＶＲ＝｛ＳＶＲ｜ハードウェアがソフトウェアに見せるレジスタの集合の元｝  …………………………………………（１）
ＨＨＲ＝｛Ｒ｜ハードウェアが実装しているレジスタの集合の元｝  ……………………………………………………………（２）
ＳＳＵＲ＝ＳＳＶＲ  ………………（３）
ＨＨＲ＝ＨＳＲ＋ＨＲＲ  …………（４）
ｆ：ＳＳＵＲ→ＨＳＲ  …………（５）
ここで、ＳＳＶＲ及びＨＨＲはハードウェア構成から一意的に決まる不変な集合であるものとする。  
【００２８】
ちなみに、周知の関連技術においては、（３）式と（５）式との関係から、ＨＳＲの元ＳＲの個数は定数となっていた。さらに、周知の関連技術においては、ＨＨＲを構成する元ＨＲの個数がハードウェア構成から決まる定数であることから、（４）式よりＨＲＲの集合を構成する元ＲＲの個数も定数となっている。換言すると、集合ＨＳＲと集合ＨＲＲとを構成するレジスタの個数は常に一定であり、その個数を変えることはできなかったと言える。
そこで、本発明では上記の各集合を示す関係式を下記の（６）〜（８）式のように書き換えることで、ＨＳＲやＨＲＲの元の数の変更を可能にする
【００２９】
図３は、本発明の実施形態に係る情報処理装置において、レジスタを元とする集合間の対応関係を示す説明図である。
ＳＳＵＲ⊆ＳＳＶＲ  ………………（６）
ＨＨＲ＝ＨＳＲ＋ＨＲＲ  …………（７）
ｆ：ＳＳＵＲ→ＨＳＲ  ……………（８）
【００３０】
（６）式より、ＳＳＵＲは、ＳＳＶＲの部分集合であるが、その集合の元の数は上記の関係式からは定まらず、不定となっている。さらに、（８）式より、ＳＳＵＲの元の数は不定であるため、ＨＳＲの元の数もまた不定となる。そして、（７）式と（８）式とからＨＲＲを構成する元の数も、また、不定となることになる。換言すると、ＳＳＵＲの元の数が決まれば、ＨＳＲ及びＨＲＲの元の数が決まることになる。そこで、そのＳＳＵＲの元の数を操作するために、ソフトウェアが自ら使用するＳＵＲの数を操作するための命令を設けることで、ＳＳＵＲの元の数、さらには、ＨＳＲ、ＳＲＲの元の数を操作することが可能となる。
【００３１】
図４は、本発明の実施形態に係る情報処理装置の全体構成を示す構成図である。
同図に示す情報処理装置は、リネーム前命令バッファ１と、リネーミング処理部２と、発行待ち命令バッファ３と、命令発行部４と、リネーミング・テーブル制御部５と、を備えて構成されている。
リネーミング処理部２は、命令解析＆リクエスト生成部２１と、レジスタ番号リネーム部２２と、投機レベル管理部２３と、を備える。
リネーミング・テーブル制御部５は、使用中物理レジスタ管理部５１と、リネーミング・テーブル５２と、を備える。
【００３２】
図４に示す情報処理装置において、本発明に係るリネーミング機能は、リネーミング処理部２と、リネーミング・テーブル制御部５に実装されており、リネーミング処理部２及びリネーミング・テーブル制御部５によって実現されるが、リネーミング機能を実現する構成は、必ずしも、図４に示す構成に限定されるものではなく、相当する構成要素を有してさえいれば、既成の他の一般的なリネーミング機構を採用してもよい。
【００３３】
以下、本発明の実施形態に係る情報処理装置の機能を説明する。
リネーム前命令バッファ１は、ＣＰＵの主制御部（図示は省略）がフェッチした命令を蓄える。
リネーミング処理部２は、リネーム前命令バッファ１に蓄えられた命令に対し、レジスタのリネーミングを実施する。
発行待ち命令バッファ３は、リネーミング処理部２によってレジスタ・リネーミングされた命令を蓄える。
命令発行部４は、発行待ち命令バッファ３に蓄えられた命令を発行する。
リネーミング・テーブル制御部５は、リネーミング・テーブル５２を制御する。
以下、リネーミング・テーブル５２の機能について、さらに説明する。  
【００３４】
図５は、ＳＵＲとＳＲとの対応付けを行うためのリネーミング・テーブルの記憶領域構成を示す構成図である。
リネーミング・テーブル５２は、集合ＳＳＵＲの集合ＨＳＲへの写像ｆの役割を担う対応テーブルを有する構成要素である。つまり、リネーミング・テーブル５２は、ＳＵＲとＳＲとの対応付けを行い、またＳＵＲのレジスタ番号から、対応付けられたＳＲのレジスタ番号を求める機能を有する。
以下の説明において、例えば、符号Ｐ（×××）と示した箇所は、情報×××または信号×××を示すものとする。
【００３５】
（動作の説明）
以下、本発明の実施形態に係る情報処理装置の動作を説明する。
まず、図４を参照し、基本的な動作であるレジスタ・リネーミングの動作について説明する。
リネーム前命令バッファ１に蓄えられた命令は、Ｐ１（リネーム前命令）に含められてリネーミング処理部２の命令解析＆リクエスト生成部２１へ送出される。
命令解析＆リクエスト生成部２１は、上記の命令から、Ｐ１１（物理レジスタ新規確保リクエスト）を、リネーミング・テーブル制御部５の使用中物理レジスタ管理部５１に送出する。ここで、Ｐ１１（物理レジスタ新規確保リクエスト）は、抽出したライト先の論理レジスタの番号（書き込みアクセスする論理レジスタの番号）を含む情報である。
【００３６】
また、命令解析＆リクエスト生成部２１は、上記の命令から、この命令上で指定されている論理レジスタ（前述のＳＵＲ）番号を抽出する。次に、命令解析＆リクエスト生成部２１は、Ｐ１０（物理レジスタ番号リクエスト）を、リネーミング・テーブル制御部５のリネーミング・テーブル５２に送出する。ここで、Ｐ１０（物理レジスタ番号リクエスト）は、抽出したリード先の論理レジスタ（前述のＨＲ）の番号（読み取りアクセスする論理レジスタの番号）を含む情報である。
【００３７】
Ｐ１１（物理レジスタ新規確保リクエスト）を受けたリネーミング・テーブル制御部５の使用中物理レジスタ管理部５１は、物理レジスタの使用状況を調べ、Ｐ１１（物理レジスタ新規確保リクエスト）に含まれる論理レジスタ番号及び未使用の物理レジスタ番号をＰ１２（リネーミング・テーブル更新指示）に含めて、リネーミング・テーブル５２に送出する。
【００３８】
Ｐ１２（リネーミング・テーブル更新指示）を受けたリネーミング・テーブル５２は、通知された論理レジスタ番号に対して、同じく通知された未使用の物理レジスタ番号との関連付けを行う。また、それまで関連付けられていた物理レジスタが有れば、該物理レジスタのレジスタ番号をＰ１３（物理レジスタ解放指示）に含めて、使用中物理レジスタ管理部５１へと送出する。このＰ１３（物理レジスタ解放指示）を受け取った使用中物理レジスタ管理部５１は、指示された物理レジスタを解放する。
【００３９】
一方、Ｐ１０（物理レジスタ番号リクエスト）を受けたリネーミング・テーブル５２は、通知された論理レジスタ番号から、該番号に対応する物理レジスタ番号を求める。その後、リネーミング・テーブル５２は、Ｐ１１（物理レジスタ新規確保リクエスト）、及びＰ１０（物理レジスタ番号リクエスト）に対する応答として、レジスタ番号リネーム部２２に対し、Ｐ６（物理レジスタ番号リプライ）を送出し、これらの物理レジスタ番号を通知する。
【００４０】
レジスタ番号リネーム部２２では、命令解析＆リクエスト生成部２１から論理レジスタ番号抽出後の命令を受け取る。また、リネーミング・テーブル５２からのＰ６（物理レジスタ番号リプライ）を受けて、前記命令上の論理レジスタ番号を物理レジスタ番号へと書き換えた上で、該命令をＰ７（リネーム済み命令）として発行待ち命令バッファ３へと送出する。
発行待ち命令バッファ３に蓄えられた命令は、命令発行部４より、Ｐ９（発行命令）として、Out-of-Orderで発行されて行く。  
【００４１】
（新設の命令セット）
本発明は、前述のとおり、レジスタ・リネーミング機構を実装するプロセッサにおいて、上記ＳＵＲ及びＲＲの数を、実行処理するソフトウェア（プログラム）によってフレシキブルに変更できるようにしたことを特徴としている。
本発明ではＳＵＲ及びＲＲの数を変更するために、命令セットに新設の専用命令を含めており、この専用命令を発行することにより、上記のＳＵＲ及びＲＲの数を変更できるようにしている。
【００４２】
ここで、前述の、実行処理するソフトウェア（プログラム）は、実行形式のプログラム（機械語で書かれたオブジェクト・プログラム）とするが、ソースプログラムの場合は、コンパイラ等を含むＯＳを介して、最終的には実行形式のプログラムに翻訳されるので、ソースプログラムであってもよい。前述の専用命令は、ソースプログラムを書く一般ユーザ、ソースプログラムを相対形式のオブジェクトプログラムに翻訳するコンパイラ等、及びハードウェアを制御する常駐のＯＳの、いずれもが直接的または間接的に発行することができるので、上記のいずれによっても、上記ＳＵＲの数及びＲＲの数を変更することができる。
【００４３】
以下、この専用命令の機能について説明する。ここでは、ＳＵＲの数を増加または減少させるための命令の機能について説明する。この命令のうち、ＳＵＲの数を増加させるための命令は、必ずしも設ける必要はなく、最低限、ＳＵＲの数を減少させるための命令だけを設けるものとする。
ａ．専用命令−１
この専用命令は、命令のオペランドにおいて、ＳＵＲ上の任意のレジスタ番号を指定する。指定されたレジスタ番号以降のレジスタは全て解放され、どのＳＲとも関連付けられない未使用の状態にする。なお、未使用の状態のレジスタに対するリードは許されない。本専用命令は、ＳＵＲの数を減らさせるだけの機能を有する。
【００４４】
ｂ．専用命令−２
この専用命令は、専用命令−１と同様、ＳＵＲ上の任意のレジスタ番号をオペランドにて指定する。本専用命令では、指定されたＳＵＲレジスタのみを解放し、これを未使用な状態にするものとする。専用命令−１と同様、未使用の状態のレジスタに対するリードは許されず、本命令もまた、ＳＵＲを減らすのみである。  
【００４５】
ｃ．専用命令−３
この専用命令も、オペランドにて任意のレジスタ番号をオペランドにて指定する。さらに、オペランドには「解放」動作または「確保」動作のいずれか１つを指示するためのビット情報も指定する。
「解放」動作が指示された場合には、専用命令−１と同様に、オペランドにて指定されたレジスタ以降のレジスタを解放する。但し、解放された未使用の状態のレジスタに対するリードは許されない。
他方、「確保」動作が指示された場合には、指定されたＳＵＲレジスタ番号までに存在する未使用なＳＵＲレジスタに対し、ＳＲ上のレジスタへの関連付けを行わさせる。なお、関連付けられはしたが、未だデータを書き込んでいない状態でレジスタをリードした場合には、その値は不定とする。
【００４６】
ｄ．専用命令−４
本専用命令も、オペランドにて任意のレジスタ番号を指定する。さらに、オペランドには「解放」及び「確保」を識別するビットを有する。「解放」動作においては、専用命令−２と同様に、オペランドにて指定されたレジスタに対してのみレジスタの解放動作を実施する。また、「確保」動作においても同様に、指定されたＳＵＲ上のレジスタに対してのみＳＲとの関連付けを実施する。なお、既に解放されているＳＵＲレジスタへの解放指示、及び、既に確保されているレジスタへの確保指示に対しては、ノーオペレーションとなり、何も動作しないものとする。  
【００４７】
以下、図４を参照し、ＳＵＲを減らす場合の動作について説明する。
ＳＵＲ数を減らすには、例えば、前述のレジスタ開放の専用命令−１を発行する。リネーム前命令バッファ１を介して、このレジスタ解放の専用命令を受けた命令解析＆リクエスト生成部２１は、リネーミング・テーブル５２に対し、Ｐ５（論理レジスタ解放指示）を送出する。
【００４８】
図６は、論理レジスタ解放指示を受けたリネーミング・テーブル５２の変化を示す説明図である。
このＰ５（論理レジスタ解放指示）を受けたリネーミング・テーブル５２は、図６に示すように、それ以降のレジスタを解放し、さらに使用中物理レジスタ管理部５１へと、Ｐ１３（物理レジスタ解放指示）を送出し、解放された論理レジスタに関連付けられていた仮想レジスタＳＲを未使用な状態へと変更させる。以上の動作によって、ＳＵＲが減り、その結果、ＳＲが減り、ＲＲを増やすことができる。他の専用命令（専用命令−２〜専用命令−４）を発行する場合においても、１つの専用命令で解放するレジスタの数が１つか、それとも複数かの違いが有る以外は、上記と同様の動作となる。
【００４９】
以下、図４を参照し、ＳＵＲを増やす場合の動作について説明する。
この場合、例えば、前述のレジスタ開放の専用命令−３を発行する。
リネーム前命令バッファ１を介して、このレジスタ解放の専用命令を受けた命令解析＆リクエスト生成部２１は、前述のリネーミングの動作を利用する。即ち、前述のリネーミングの動作では、ＳＵＲとＳＲとの関連付けは書き込み先レジスタとしてSUR が指定される度に行われる。このことを利用し、未使用なＳＵＲレジスタを選んで、書き込みを行う命令の書き込み先レジスタとして指定されたＳＵＲを、該未使用のＳＵＲレジスタにリネームする。
【００５０】
図７は、論理レジスタ確保指示を受けた場合のリネーミング方法を示す説明図である。
同図に示すように、ＳＵＲレジスタとＳＲとの関連付けが行われることでＳＵＲが増え、結果としてＳＲを増やし、ＲＲを減らすことができるようになる。
なお、上記の説明では、分岐命令が無いケースで説明したが、本実施形態に係る情報処理装置は、分岐命令が有る場合の最適化機能（即ち、投機実行を制御する機能）も備えている。
【００５１】
以下、投機実行を制御する機能について、簡単に説明する。
投機とは、分岐の際に分岐先を予測し、分岐先が決定する前に予測した先の分岐先の命令を実行するものである。周知の技術として、一般的に実施されている技術であるため、ここでは投機に関する詳細な説明は省くが、本実施形態では、この投機実行に備えて、投機レベルを設けて制御している。
【００５２】
投機レベル管理部２３（図４）において、非投機時はレベル０、投機中はレベル１、投機中にさらに投機が発生するとレベル２，３，……、と上がっていく投機レベルの管理を行っている。よって、リネーミング・テーブル５２は、この投機レベル毎にＳＵＲとＨＲとの対応関係を保持している。リネーミング・テーブル５２は、投機レベルが上がったときは、前の投機レベルの状態をコピーし、投機成功（分岐予測先が正しい）場合には、リネーミング・テーブル５２上の投機レベル０の状態を破棄し、投機レベル１以降の対応関係を１つ下のレベルへとシフトする。また、投機失敗（分岐予測先が間違い）の場合には、失敗した投機レベル以降のレベルの関連付けを全て解放する。
【００５３】
前述の専用命令が発行された場合の動作の説明は、投機レベルがレベル０の場合であるが、投機レベルがレベル１，２，３，……、と上がった場合には、ＳＵＲの増減の操作は、この上がった投機レベルに対してのみ行うものとする。
本実施形態に係る情報処理装置によれば、メモリアクセス命令を削減することで、処理性能の向上が図れる効果が得られる。以下、この効果について、更に詳細に説明する。
【００５４】
図８は、メモリアクセス命令を削減することによって処理性能の向上が図れることを示すタイムチャート図であり、図８（ａ）は比較のための周知の情報処理装置のタイムチャートを示し、図８（ｂ）は本実施形態に係る情報処理装置のタイムチャートを示す。
図８（ａ）の右端に示す命令列（左側のタイムチャートに対応）では、ＳＵＲ数（＝ＳＲ数）が不足のため、命令列上でレジスタ上のデータ退避のためのＬｏａｄ／Ｓｔｏｒｅ命令が発生している。
そこで、本実施形態に係る情報処理装置では、図８（ｂ）に示すように、ＳＵＲ数（＝ＳＲ数）を増やすことができる。
【００５５】
ここでは、ＳＵＲ数が増えたために、上記のプログラムが図８（ｂ）の右端のように書き換えるられる。この命令列（左側のタイムチャートに対応）を見れば分かる通り、Ｌｏａｄ／Ｓｔｏｒｅ命令が使用されていない。この結果、メモリアクセス命令を削減し、処理性能を向上させることができる。
また、本実施形態に係る情報処理装置によれば、レジスタ解放待ち時間が無くなることで、性能向上が図れる効果が有る。
【００５６】
図９は、レジスタ解放待ち時間を無くすことによって処理性能の向上が図れることを示すタイムチャート図であり、図９（ａ）は比較のための周知の情報処理装置のタイムチャートを示し、図９（ｂ）は本実施形態に係る情報処理装置のタイムチャートを示す。
図９（ａ）の右端に示す命令列（左側のタイムチャートに対応）は、小さな命令列のループとなっており、ＲＲを利用した投機実行が行われている。しかし、ＲＲが不足しているために、レジスタの解放待ち時間が発生している。
そこで、本実施形態に係る情報処理装置では、図９（ｂ）に示すように、ＳＵＲ数（＝ＳＲ数）を増やすことができる。
【００５７】
ここでは、ＳＵＲ数が増えたために、上記と同じプログラムであっても、レジスタの解放待ち時間が無くなり、処理性能を向上させることができる。
また、本実施形態に係る情報処理装置によれば、ＳＵＲの数をソフトウェアによって任意のタイミングで変更可能であるため、プログラム全体の特性や、プログラム内の局所的な特性に合わせてＳＲ及びＲＲの比率を細かく最適化できることになり、高い実行性能が得られる効果がある。
【００５８】
また、本実施形態に係る情報処理装置によれば、関連する周知の情報処理装置と同じだけのＳＲ及びＲＲを、より少ないハードウェアリソースで実現できるようになる効果がある。関連する周知の情報処理装置が採用している技術では、ＳＲ＋ＲＲの数を賄うことができるハードウェアリソースが必要であったが、本発明で同量のＲＲ数を用意するにはＲＲ＜ＳＲであれば、最低限ＳＲ分だけのハードウェアリソースで実現可能であり、また、ＲＲ＞ＳＲの場合であっても、最低限ＲＲ数＋αのサイズのハードウェアリソースがありさえすれば実現可能であるため、ハードウェアリソースを削減することができる効果が得られる。
さらに、本実施形態に係る情報処理装置によれば、上記の効果に関連し、ハードウェアリソースが削減されるため、消費電力を減らすことができる効果も生じる。
【００５９】
（他の実施形態）
本発明に係る情報処理装置は、ベクトル計算機としても実現することができる。
図１０は、本発明の他の実施形態に係る情報処理装置（ベクトル計算機）の全体構成を示す構成図である。
同図に示す情報処理装置（ベクトル計算機）は、前述の実施形態に係る情報処理装置（図４）に、ポインタ・リスト制御部２５が追加された構成を備える。
ポインタ・リスト制御部２５は、使用中物理レジスタ管理部２５１と、ポインタ・リスト２５２と、を備える。
また、便宜的にリネーミング・テーブル制御部の管理するレジスタを仮想ベクトルレジスタとし、５１を使用中仮想レジスタ管理部とする。
【００６０】
図１０において、Ｐ１４はポインタ送出指示、Ｐ１５は物理ベクトルレジスタ新規領域確保リクエスト、Ｐ１６は物理ベクトルレレジスタ開放指示、Ｐ１７は物理ベクトルレジスタ新規領域確保通知、Ｐ１８はポインタ更新指示を、それぞれ示す。
使用中物理レジスタ管理部２５１の機能及び動作は、前述の使用中仮想レジスタ管理部５１の機能及び動作に準ずるものである。
また、使用中ポインタ・リスト２５２には、仮想ベクトルレジスタと物理レジスタとの対応関係（仮想ベクトルレジスタ中の各要素の物理レジスタへの割り付け状況）を示すテーブル（図示は省略）が備えられている。
【００６１】
この実施形態によれば、ＳＵＲを減らす際には、仮想ベクトルレジスタの解放の他、ポインタ・リスト上のエントリの削除、及び物理ベクトルレジスタの解放も実施される。
前述の各実施形態では、最も標準的なレジスタ・リネーミング機構の構成を示したが、レジスタ・リネーミング機構を実現する構成は、これまでに様々な手法が考えられており、また、その構成自体は本発明の本質とは直接関係しないので、前述の集合論の符号による関係式で説明できる構成でありさえすればよく、その実現方法は特に限定されない。
【産業上の利用可能性】
【００６２】
本発明は、情報処理装置の構築に適用可能であり、特に、レジスタ・リネーミング機構を実装し、パイプライン処理等で一層高い処理能力が求められる情報処理装置の構築に好適である。
また、本発明は、オブジェクトがパイプライン処理されることを前提とするコンパイラ等が実行する最適化方法としても好適である。
【符号の説明】
【００６３】
１  リネーム前命令バッファ
２  リネーミング処理部
３  発行待ち命令バッファ
４  命令発行部
５  リネーミング・テーブル制御部
２１  命令解析＆リクエスト生成部
２２  レジスタ番号リネーム部
２３  投機レベル管理部
２５  ポインタ・リスト制御部
５１  使用中物理レジスタ管理部
５２  リネーミング・テーブル
【図１】
2011018120.tif 000003
【図２】
2011018120.tif 000004
【図３】
2011018120.tif 000005
【図４】
2011018120.tif 000006
【図５】
2011018120.tif 000007
【図６】
2011018120.tif 000008
【図７】
2011018120.tif 000009
【図８】
2011018120.tif 000010
【図９】
2011018120.tif 000011
【図１０】
2011018120.tif 000012