(57)【要約】【課題】複数階層からなるＴＬＢを備えた情報処理装置においてプリフェッチ命令を効果的に実行すること。【解決手段】情報処理装置１０は、プリフェッチ命令を実行するにあたってＴＬＢをもちいてフェッチ対象の領域のアドレスを仮想アドレスから物理アドレスへ変換する必要がある。μＴＬＢ５３０をもちいてアドレス変換できなかった場合、プリフェッチ動作は中止するが、ｍＴＬＢ５４０をもちいたアドレス変換をおこない、アドレス変換ができた場合は、μＴＬＢ５３０へアドレス情報を登録しておく。これにより、次回同じ領域を対象としたプリフェッチ命令を実行する場合は、プリフェッチが成功することになる。【選択図】        図３
2006048164.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１階層からなるキャッシュメモリと、前記キャッシュメモリに主記憶上のデータもしくは命令を投機的に転送するプリフェッチ命令とを備えた情報処理装置であって、
仮想アドレスと物理アドレスの変換表を保持し、仮想アドレスから物理アドレスへの変換をおこなうアドレス変換のために最初にもちいられる第一のアドレス変換手段と、
仮想アドレスと物理アドレスの変換表を保持し、前記第一のアドレス変換手段にてアドレス変換できなかった仮想アドレスをアドレス変換するためにもちいられる第二のアドレス変換手段と、
前記プリフェッチ命令が実行された場合に、まず、前記第一のアドレス変換手段をもちいて仮想アドレスをアドレス変換し、これが変換できなかった場合は、前記第二のアドレス変換手段をもちいて仮想アドレスをアドレス変換し、これが変換できた場合は、前記第一のアドレス変換手段に該仮想アドレスと該仮想アドレスを変換した物理アドレスの対を登録して命令を完了させるキャッシュ制御手段と
をさらに備えたことを特徴とする情報処理装置。
【請求項２】
前記キャッシュ制御手段は、前記第一のアドレス変換手段をもちいて仮想アドレスをアドレス変換し、これが変換できなかった時点で次の命令の実行を受け付けることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記キャッシュ制御手段は、前記第一のアドレス変換手段および前記第二のアドレス変換手段のいずれをもちいても仮想アドレスをアドレス変換できなかった場合に、ＯＳに対するトラップ報告を抑止することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
少なくとも１階層からなるキャッシュメモリと、前記キャッシュメモリに主記憶上のデータもしくは命令を投機的に転送するプリフェッチ命令とを備えた情報処理装置におけるソフトウェアプリフェッチ制御方法であって、
仮想アドレスと物理アドレスの変換表を保持し、仮想アドレスから物理アドレスへの変換をおこなうアドレス変換のために最初にもちいられる第一のアドレス変換工程と、
仮想アドレスと物理アドレスの変換表を保持し、前記第一のアドレス変換工程にてアドレス変換できなかった仮想アドレスをアドレス変換するためにもちいられる第二のアドレス変換工程と、
前記プリフェッチ命令が実行された場合に、まず、前記第一のアドレス変換工程をもちいて仮想アドレスをアドレス変換し、これが変換できなかった場合は、前記第二のアドレス変換工程をもちいて仮想アドレスをアドレス変換し、これが変換できた場合は、前記第一のアドレス変換工程に該仮想アドレスと該仮想アドレスを変換した物理アドレスの対を登録して命令を完了させるキャッシュ制御工程と
を含んだことを特徴とするソフトウェアプリフェッチ制御方法。
【請求項５】
前記キャッシュ制御工程は、前記第一のアドレス変換工程をもちいて仮想アドレスをアドレス変換し、これが変換できなかった時点で次の命令の実行を受け付けることを特徴とする請求項４に記載のソフトウェアプリフェッチ制御方法。
【請求項６】
前記キャッシュ制御工程は、前記第一のアドレス変換工程および前記第二のアドレス変換工程のいずれをもちいても仮想アドレスをアドレス変換できなかった場合に、ＯＳに対するトラップ報告を抑止することを特徴とする請求項４または５に記載のソフトウェアプリフェッチ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報処理装置およびソフトウェアプリフェッチ制御方法に関し、特に複数階層からなるＴＬＢが存在する場合にプリフェッチ命令を効果的に実行することができる情報処理装置およびソフトウェアプリフェッチ制御方法に関するものである。
【背景技術】
【０００２】
近年、情報処理装置の性能は、著しく向上しており、単位時間当たりに実行できる命令数は年々大幅に増加している。それに比べると、主記憶のアクセス速度それほど向上しておらず、情報処理装置が主記憶のデータをフェッチまたはストアする際に長い処理待ち時間が発生するという問題がおこっている。
【０００３】
この問題を解決するため、情報処理装置と主記憶の間に、主記憶よりも容量が小さいがアクセス速度が高速なキャッシュメモリを設ける手法が広く採用されている。主記憶のアクセスには局所性が認められ、主記憶上の頻繁にアクセスされる領域をキャッシュメモリに保持することにより、データアクセスによる処理待ちの発生を最小限に抑えることができる。
【０００４】
このキャッシュをさらに有効に活用するため、プリフェッチの手法がもちいられることも多い。キャッシュ上に存在しないデータが必要になった場合、そのデータを主記憶からキャッシュに転記する必要があるが、主記憶は低速であるために転記が完了するまで処理待ちが発生してしまう。そこで、必要となるデータを事前に予測し、予測したデータを前もって主記憶からキャッシュに転記しておくことにより、処理待ちを発生させることなく情報処理装置がキャッシュ上のデータを利用できるようにするのがプリフェッチである。
【０００５】
特許文献１には、複数の種類のプリフェッチ命令を備え、これらを状況によって使い分けることにより、システムへの負荷を最小限に抑えながらプリフェッチを効率的におこなうことができるキャッシュメモリ制御装置および計算機システムが開示されている。
【０００６】
【特許文献１】特開２０００−３３９１５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に開示された技術をもちいてもプリフェッチを効果的に実行できない場合がある。問題は、仮想アドレスから物理アドレスへの変換にある。
【０００８】
現在、実際の主記憶の容量より大きな仮想アドレス空間を提供する仮想記憶が多くのシステムにおいて広く利用されているが、かかるシステムにおいては主記憶へアクセスする際に仮想アドレス空間上の仮想アドレスを主記憶上の物理アドレスへ変換する必要がある。このアドレス変換は、プリフェッチの一種であるソフトウェアプリフェッチ実行時にも必要とされる。
【０００９】
仮想アドレスを物理アドレスへ変換するに際しては、ＴＬＢ（Translation Look-aside Buffer）と呼ばれる記憶装置に格納された変換表を参照する必要があるが、現在のＴＬＢは高速化のために多階層化されている。この階層を有効に利用できない場合には、プリフェッチ命令が破棄されてしまい、ソフトウェアプリフェッチが失敗する場合がある。
【００１０】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、ＴＬＢを有効に利用することでソフトウェアプリフェッチを効果的に実行し、もってシステムの性能を向上させることができる情報処理装置およびソフトウェアプリフェッチ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、本発明に係る情報処理装置は、少なくとも１階層からなるキャッシュメモリと、前記キャッシュメモリに主記憶上のデータもしくは命令を投機的に転送するプリフェッチ命令とを備えた情報処理装置であって、仮想アドレスと物理アドレスの変換表を保持し、仮想アドレスから物理アドレスへの変換をおこなうアドレス変換のために最初にもちいられる第一のアドレス変換手段と、仮想アドレスと物理アドレスの変換表を保持し、前記第一のアドレス変換手段にてアドレス変換できなかった仮想アドレスをアドレス変換するためにもちいられる第二のアドレス変換手段と、前記プリフェッチ命令が実行された場合に、まず、前記第一のアドレス変換手段をもちいて仮想アドレスをアドレス変換し、これが変換できなかった場合は、前記第二のアドレス変換手段をもちいて仮想アドレスをアドレス変換し、これが変換できた場合は、前記第一のアドレス変換手段に該仮想アドレスと該仮想アドレスを変換した物理アドレスの対を登録して命令を完了させるキャッシュ制御手段とをさらに備えたことを特徴とする。
【００１２】
また、本発明に係るソフトウェアプリフェッチ制御方法は、少なくとも１階層からなるキャッシュメモリと、前記キャッシュメモリに主記憶上のデータもしくは命令を投機的に転送するプリフェッチ命令とを備えた情報処理装置におけるソフトウェアプリフェッチ制御方法であって、仮想アドレスと物理アドレスの変換表を保持し、仮想アドレスから物理アドレスへの変換をおこなうアドレス変換のために最初にもちいられる第一のアドレス変換工程と、仮想アドレスと物理アドレスの変換表を保持し、前記第一のアドレス変換工程にてアドレス変換できなかった仮想アドレスをアドレス変換するためにもちいられる第二のアドレス変換工程と、前記プリフェッチ命令が実行された場合に、まず、前記第一のアドレス変換工程をもちいて仮想アドレスをアドレス変換し、これが変換できなかった場合は、前記第二のアドレス変換工程をもちいて仮想アドレスをアドレス変換し、これが変換できた場合は、前記第一のアドレス変換工程に該仮想アドレスと該仮想アドレスを変換した物理アドレスの対を登録して命令を完了させるキャッシュ制御工程とを含んだことを特徴とする。
【００１３】
この発明によれば、第一のアドレス変換手段にてアドレス変換できない場合は、第二のアドレス変換手段をもちいてアドレス変換を試行し、変換がうまくいったならばアドレス変換情報を第一のアドレス変換手段へ登録するように構成したので、次回同じ領域に対してプリフェッチ命令が実行された場合には、プリフェッチを高い確率で成功させることができる。
【００１４】
また、本発明に係る情報処理装置は、上記の発明において、前記キャッシュ制御手段は、前記第一のアドレス変換手段をもちいて仮想アドレスをアドレス変換し、これが変換できなかった時点で次の命令の実行を受け付けることを特徴とする。
【００１５】
また、本発明に係るソフトウェアプリフェッチ制御方法は、上記の発明において、前記キャッシュ制御工程は、前記第一のアドレス変換工程をもちいて仮想アドレスをアドレス変換し、これが変換できなかった時点で次の命令の実行を受け付けることを特徴とする。
【００１６】
この発明によれば、第二のアドレス変換手段によるアドレス変換の可否を待たずに次の命令を開始できるように構成したので、処理待ち時間の発生を回避することができる。
【００１７】
また、本発明に係る情報処理装置は、上記の発明において、前記キャッシュ制御手段は、前記第一のアドレス変換手段および前記第二のアドレス変換手段のいずれをもちいても仮想アドレスをアドレス変換できなかった場合に、ＯＳに対するトラップ報告を抑止することを特徴とする。
【００１８】
また、本発明に係るソフトウェアプリフェッチ制御方法は、上記の発明において、前記キャッシュ制御工程は、前記第一のアドレス変換工程および前記第二のアドレス変換工程のいずれをもちいても仮想アドレスをアドレス変換できなかった場合に、ＯＳに対するトラップ報告を抑止することを特徴とする。
【００１９】
この発明によれば、アドレス変換できなかった場合に、ＯＳに対するトラップ報告をおこなわないように構成したので、コンパイラの最適化などによるプログラムの予期せぬ停止を防止することができる。
【発明の効果】
【００２０】
本発明によれば、第一のアドレス変換手段にてアドレス変換できない場合は、第二のアドレス変換手段をもちいてアドレス変換を試行し、変換がうまくいったならばアドレス変換情報を第一のアドレス変換手段へ登録するように構成したので、次回同じ領域に対してプリフェッチ命令が実行された場合には、プリフェッチを高い確率で成功させることができるという効果を奏する。
【００２１】
また、本発明によれば、第二のアドレス変換手段によるアドレス変換の可否を待たずに次の命令を開始できるように構成したので、処理待ち時間の発生を回避することができるという効果を奏する。
【００２２】
また、本発明によれば、アドレス変換できなかった場合に、ＯＳに対するトラップ報告をおこなわないように構成したので、コンパイラの最適化などによるプログラムの予期せぬ停止を防止することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２３】
以下に添付図面を参照して、この発明に係る情報処理装置およびソフトウェアプリフェッチ制御方法の好適な実施の形態を詳細に説明する。
【００２４】
ここでは、ＳＰＡＲＣ（Ｒ）アーキテクチャの情報処理装置を例にして説明をおこなうこととするが、本発明は、特定のアーキテクチャの情報処理装置に適用が限定されるものではなく、様々なアーキテクチャの情報処理装置に適用することが可能である。なお、説明の便宜上、一部のＳＰＡＲＣ（Ｒ）アーキテクチャの仕様を簡略化もしくは省略して記述および図示している。
【実施例】
【００２５】
まず、本実施例に係る情報処理装置の構造について説明する。図１は、本実施例に係る情報処理装置の全体構成を示すブロック図である。同図に示すように、本実施例に係る情報処理装置１０は、メモリ制御装置２０を介して主記憶３０と接続される。
【００２６】
メモリ制御装置２０は、情報処理装置１０の要求に基づいて主記憶３０からのデータや命令のフェッチと主記憶３０へのデータのストアとを制御する装置である。主記憶３０は、情報処理装置１０が利用する命令やデータが展開される記憶部である。
【００２７】
情報処理装置１０は、命令処理装置１００と、演算器２００と、一次キャッシュ装置３００とを有する。命令処理装置１００は、主記憶３０に展開されたプログラムの命令を読取り、これを演算器２００等に実行させる処理装置である。演算器２００は、命令処理装置１００の指示に従って各種演算をおこなう装置である。
【００２８】
一次キャッシュ装置３００は、主記憶３０の一部を保持することによって情報処理装置１０と主記憶３０との間の命令やデータのやりとりを高速化するための装置であり、命令キャッシュ装置４００とオペランドキャッシュ装置５００とを有する。命令キャッシュ装置４００は、主記憶３０上の命令を保持する装置であり、オペランドキャッシュ装置５００は、主として主記憶３０上のデータを保持する装置である。
【００２９】
なお、本実施例では、説明を簡単におこなうために、情報処理装置１０が一次キャッシュ装置３００のみからなる単層のキャッシュシステムを備えるものとして説明するが、情報処理装置１０は、二次キャッシュや三次キャッシュを有する複数階層のキャッシュシステムを備えていてもよい。
【００３０】
ここで、一次キャッシュ装置３００の役割について説明しておく。主記憶３０に利用される半導体は、記憶容量が重視されるため、処理速度のみが重視される情報処理装置１０と異なり、半導体技術の進歩が動作速度の改善のみに注がれることがない。このため、情報処理装置１０と主記憶３０の動作速度の差は年々広がっており、現在では、その差は非常に大きなものになっている。
【００３１】
一方、一次キャッシュ装置３００が備えるキャッシュメモリ５６０は、記憶容量よりも動作速度を重視した構造をしている。このため、命令処理装置１００や演算器２００は、主記憶３０へアクセスする場合に比べて、はるかに高速にキャッシュメモリ５６０へアクセスすることができる。
【００３２】
一次キャッシュ装置３００が備えるキャッシュメモリ５６０の容量は、主記憶３０の容量に比べて小さなものだが、一般に主記憶３０へのアクセスは局所性があることが知られており、主記憶３０上の頻繁にアクセスされる領域のみをキャッシュメモリ５６０に保持するだけでも主記憶３０へのアクセスを大幅に減らすことができ、システムの性能を大きく向上させることができる。
【００３３】
この一次キャッシュ装置３００のキャッシュメモリ５６０を有効に活用するために、情報処理装置１０はプリフェッチの仕組みを備えている。プリフェッチとは、命令処理装置１００や演算器２００が必要とするデータ等を事前に予測し、主記憶３０から一次キャッシュ装置３００へ移しておく仕組みである。
【００３４】
一次キャッシュ装置３００上に必要なデータ等が存在しない場合、命令処理装置１００や演算器２００は、そのデータ等を低速な主記憶３０から取得しなければならず、大きな処理遅延が発生する。プリフェッチにより必要なデータ等を事前に一次キャッシュ装置３００へ移しておけば、この遅延の発生を避けることができ、システムの性能向上につながる。
【００３５】
プリフェッチには、情報処理装置１０自身が判断して実行するハードウェアプリフェッチ以外に、コンパイラがソースコードをコンパイルする際に生成するソフトウェアプリフェッチ命令によるソフトウェアプリフェッチが存在する。ＳＰＡＲＣ（Ｒ）アーキテクチャにおいては、ソフトウェアプリフェッチ命令は、ストロングプリフェッチ命令とウィークプリフェッチ命令という２種類のプリフェッチ命令に分けられる。
【００３６】
次に、この２つのプリフェッチ命令について説明する前に、その前提知識として必要となるオペランドキャッシュ装置５００の構成について説明することとする。図２は、図１に示したオペランドキャッシュ装置５００の構成を示すブロック図である。
【００３７】
同図に示すように、オペランドキャッシュ装置５００は、キャッシュ制御部５１０と、フェッチポート５２０と、μＴＬＢ５３０と、ｍＴＬＢ５４０と、キャッシュタグ５５０と、キャッシュメモリ５６０とを有する。なお、この図は、データのフェッチに関連する装置のみを図示したものであり、オペランドキャッシュ装置５００の有する全ての装置を図示したものではない。
【００３８】
キャッシュ制御部５１０は、オペランドキャッシュ装置５００を全体制御する制御部であり、命令処理装置１００や演算器２００、メモリ制御装置２０といった外部の装置との間で要求や応答のやりとりをおこなったり、オペランドキャッシュ装置５００内の他の装置に各種指示を送ったりといった制御をおこなう。
【００３９】
フェッチポート５２０は、実行中のフェッチ命令やプリフェッチ命令の実行状況等の情報を命令毎にポートを割当てて格納する記憶部である。各ポートには、命令の実行順序に従って情報が格納され、最も古い命令に係る情報を格納したポートは、ＴＯＱ（Top Of Queue）によって指し示される。
【００４０】
フェッチ命令やプリフェッチ命令が完了すると当該のポートには命令実行完了フラグが設定される。そして、命令実行完了フラグが設定されたＴＯＱのポートは、サイクル終了時に完了処理を施されて解放される。このとき、後続のポートも、完了フラグが設定されており、間に完了フラグが設定されていないポートが存在しなければ、ＴＯＱのポートを含めて最大３つまで完了処理を施されて解放される。解放されたポートは、新しいフェッチ命令やプリフェッチ命令のために再利用可能となり、ＴＯＱは、新たに最も古くなったポートを指し示す。
【００４１】
μＴＬＢ５３０およびｍＴＬＢ５４０は、ともに仮想アドレスを物理アドレスへ変換するための変換表を保持する記憶部である。従来、アドレス変換のための変換表はひとつのＴＬＢにて管理されていたが、大容量化と変換速度の維持という相反する要求に応えるためにこのように多階層化されている。
【００４２】
近年、情報処理装置上で動作するプログラムが必要とするメモリ空間は非常に大きくなっており、仮想アドレスと物理アドレスの対応付けをおこなうＴＬＢの容量もそれに応じて増大している。しかし、ＴＬＢの容量が大きくなると、必要なＴＬＢエントリを検索するのに要する時間が増大してしまう。仮想アドレスから物理アドレスへの変換は、頻度の高い処理であるため、検索時間の増大はシステムの性能低下を招く。
【００４３】
この問題を解決するため、小容量のμＴＬＢ５３０と大容量のｍＴＬＢ５４０という２階層でＴＬＢを構成している。通常は、容量は小さいが検索が高速なμＴＬＢ５３０をもちいてアドレス変換をおこなう。そして、μＴＬＢ５３０に必要とするＴＬＢエントリがなかった場合にのみｍＴＬＢ５４０へアクセスしてＴＬＢエントリを検索し、それが存在したならばμＴＬＢ５３０へ転記する。これにより、大容量だが低速なｍＴＬＢ５４０へのアクセスを最小限に押さえ、アドレス変換を迅速におこなうことができる。
【００４４】
なお、ここではＴＬＢの階層を２階層としているが、３階層以上の階層構造をとるように構成してもよい。
【００４５】
ここで、キャッシュ制御部５１０からμＴＬＢ５３０へ送信される２つの信号について説明しておく。一つ目の信号は、ＴＲＡＰ−ＥＮＡＢＬＥ信号であり、この信号は、ｍＴＬＢ５４０へも送られ、ＦＡＳＴ−ＭＭＵ−ＭＩＳＳ−ＴＲＡＰを発生させるか否かを制御する。
【００４６】
ＴＲＡＰ−ＥＮＡＢＬＥ信号がオンであるとき、ｍＴＬＢ５４０に必要とするＴＬＢエントリが存在しないとＦＡＳＴ−ＭＭＵ−ＭＩＳＳ−ＴＲＡＰが発生する。この例外は、ＯＳに報告され、状況に応じてＯＳが必要な対処をおこなう。使用可能な仮想メモリの範囲を超えた領域にアクセスしようとしてＦＡＳＴ−ＭＭＵ−ＭＩＳＳ−ＴＲＡＰが発生した場合、これを発生させたプログラムはＯＳによって停止させられることがある。
【００４７】
ＴＲＡＰ−ＥＮＡＢＬＥ信号をオフにすると、ｍＴＬＢ５４０に必要とするＴＬＢエントリが存在しない場合であってもＦＡＳＴ−ＭＭＵ−ＭＩＳＳ−ＴＲＡＰは発生しなくなる。
【００４８】
二つ目の信号は、ＭＴＬＢ−ＧＯ−ＥＮＡＢＬＥ信号であり、この信号は、μＴＬＢ５３０に必要とするＴＬＢエントリがなかった場合にｍＴＬＢ５４０へアクセスするか否かを制御する。この信号をオフにすると、μＴＬＢ５３０に必要とするＴＬＢエントリがない場合であってもｍＴＬＢ５４０へのアクセスがおこなわれなくなる。
【００４９】
キャッシュタグ５５０は、キャッシュメモリ５６０に主記憶３０のどの領域が保持されているのかを記憶する記憶部である。キャッシュメモリ５６０は、高速アクセスが可能な比較的小容量の記憶装置である。キャッシュメモリ５６０は、主記憶３０上のデータ等の一部を保持することで、情報処理装置１０と主記憶３０の速度差を吸収する役割を果たしている。
【００５０】
次に、ソフトウェアプリフェッチ命令の一つであるストロングプリフェッチ命令について説明する。ストロングプリフェッチ命令は、ＴＲＡＰ−ＥＮＡＢＬＥ信号とＭＴＬＢ−ＧＯ−ＥＮＡＢＬＥ信号が両方ともオンの状態で実行されるソフトウェアプリフェッチ命令である。
【００５１】
したがって、ストロングプリフェッチ命令を実行すると、アドレス変換の際にμＴＬＢ５３０に必要とするＴＬＢエントリがなかった場合は、ｍＴＬＢ５４０へアクセスをおこなう。また、ｍＴＬＢ５４０へアクセスをおこなっても必要とするＴＬＢエントリがなかった場合は、ＦＡＳＴ−ＭＭＵ−ＭＩＳＳ−ＴＲＡＰが発生する。
【００５２】
図４は、ストロングプリフェッチ命令の処理手順を示すフローチャートである。同図に示すように、ストロングプリフェッチ命令を実行すると、まず、仮想アドレスから物理アドレスへのアドレス変換のためにμＴＬＢ５３０がアクセスされる（ステップＳ２０１）。μＴＬＢ５３０に必要とするＴＬＢエントリが存在し、アドレス変換をおこなうことができたならば（ステップＳ２０２肯定）、プリフェッチ処理を実行する（ステップＳ２０３）。
【００５３】
具体的には、プリフェッチ処理とは、以下のような作業をおこなう処理である。まず、アドレス変換の結果得た物理アドレスをもちいてキャッシュタグ５５０を検索し、プリフェッチ対象の領域がキャッシュメモリ５６０上に保持されているか否かを調査する。もしも、プリフェッチ対象の領域がキャッシュメモリ５６０上に保持されていれば特に処理はおこなわない。保持されていない場合は、メモリ制御装置２０に当該の領域を要求し、取得したデータをキャッシュメモリ５６０上に記憶する。
【００５４】
μＴＬＢ５３０に必要とするＴＬＢエントリが存在しなかった場合は（ステップＳ２０２否定）、ｍＴＬＢ５４０がアクセスされる（ステップＳ２０４）。ここで、ｍＴＬＢ５４０にも必要とするＴＬＢエントリが存在しなかった場合は（ステップＳ２０５否定）、ＦＡＳＴ−ＭＭＵ−ＭＩＳＳ−ＴＲＡＰを発生させ、プリフェッチを破棄する（ステップＳ２０８）。
【００５５】
ｍＴＬＢ５４０に必要とするＴＬＢエントリが存在しない場合、主記憶３０上のアドレス変換表を参照することで必要とするＴＬＢエントリを検索することも可能だが、主記憶３０の検索は低速な処理であるため、プリフェッチが間に合わない可能性もある。そのため、ＴＬＢをもちいてアドレス変換をおこなうことができなかった場合は、プリフェッチの実行を破棄することとしている。
【００５６】
ｍＴＬＢ５４０に必要とするＴＬＢエントリが存在した場合は（ステップＳ２０５肯定）、当該のエントリをμＴＬＢ５３０に書込み（ステップＳ２０６）、プリフェッチ命令を再実行する（ステップＳ２０７）。再実行により、μＴＬＢ５３０へのアクセスが再びおこなわれるが、今回は、ステップＳ２０６で書き込んだＴＬＢエントリがヒットし（ステップＳ２０２肯定）、プリフェッチ処理が実行されることになる（ステップＳ２０３）。
【００５７】
このように、ストロングプリフェッチ命令においては、μＴＬＢ５３０もしくはｍＴＬＢ５４０のいずれかにアドレス変換のためのエントリが存在していればプリフェッチが破棄されることはなく、高い頻度でプリフェッチ処理が実行される。しかし、ストロングプリフェッチ命令は、コンパイラの最適化手法との相性の問題から、実際に使用されるケースは少ない。
【００５８】
具体的には、コンパイラがループ処理をソフトウェアパイプライニングの手法をもちいて最適化した場合が該当する。図５は、ソフトウェアパイプライニングによる最適化方法について説明するための説明図である。同図に示すように、ソフトウェアパイプライニングとは、ループを構成する命令を並列実行できるように構成しなおすことにより、ループが完了するまでに必要なサイクルを短縮する手法である。
【００５９】
このソフトウェアパイプライニングを使用する場合、並列実行する命令がデータ待ちで停止することがないようにプロフェッチが併用されることが多いが、ループを終了する際にループが使用するデータ域の範囲を超えた領域に対してプリフェッチが実行されることがある。このとき、プリフェッチがストロングプリフェッチ命令によるものであり、範囲を超えてアクセスしようとした領域が使用されていない領域だった場合、ＦＡＳＴ−ＭＭＵ−ＭＩＳＳ−ＴＲＡＰの発生によりプログラムが停止してしまう。
【００６０】
次に、もう一つのソフトウェアプリフェッチ命令であるウィークプリフェッチ命令について説明する。ウィークプリフェッチ命令は、ＴＲＡＰ−ＥＮＡＢＬＥ信号とＭＴＬＢ−ＧＯ−ＥＮＡＢＬＥ信号が両方ともオフの状態で実行されるソフトウェアプリフェッチ命令である。
【００６１】
したがって、ウィークプリフェッチ命令を実行すると、アドレス変換の際にμＴＬＢ５３０に必要とするＴＬＢエントリがなかった場合は、ｍＴＬＢ５４０へアクセスはおこなわない。また、ＦＡＳＴ−ＭＭＵ−ＭＩＳＳ−ＴＲＡＰが発生することもない。
【００６２】
図６は、従来のソフトウェアプリフェッチ方式におけるウィークプリフェッチ命令の処理手順を示すフローチャートである。同図に示すように、ウィークプリフェッチ命令を実行すると、まず、仮想アドレスから物理アドレスへのアドレス変換のためにμＴＬＢ５３０がアクセスされる（ステップＳ３０１）。μＴＬＢ５３０に必要とするＴＬＢエントリが存在し、アドレス変換をおこなうことができたならば（ステップＳ３０２肯定）、プリフェッチ処理を実行する（ステップＳ３０３）。
【００６３】
μＴＬＢ５３０に必要とするＴＬＢエントリが存在しなかった場合は（ステップＳ３０２否定）、例外を発生させることなくプリフェッチを破棄する。
【００６４】
このように、ウィークプリフェッチ命令においては、ＦＡＳＴ−ＭＭＵ−ＭＩＳＳ−ＴＲＡＰが発生することがないため、ストロングプリフェッチ命令のような問題は存在しない。このため、ソフトウェアプリフェッチをおこなう際は、多くの場合において、ウィークプリフェッチ命令が使用されている。
【００６５】
しかし、ウィークプリフェッチ命令は、μＴＬＢ５３０にアドレス変換のためのエントリが存在していなければ破棄されてしまうため、プリフェッチ処理が実行される頻度が低くなってしまうという問題がある。ウィークプリフェッチ命令の場合、ｍＴＬＢ５４０に必要なエントリが存在しても、これが有効に利用されることはない。
【００６６】
そこで、本実施例に係るソフトウェアプリフェッチ方式においては、このウィークプリフェッチ命令の動作を改良し、ｍＴＬＢ５４０の情報を有効に活用してプリフェッチ処理が高い頻度でおこなわれるようにしている。具体的には、ウィークプリフェッチ命令を実行する際に、ＭＴＬＢ−ＧＯ−ＥＮＡＢＬＥ信号のみをオンにし、ＦＡＳＴ−ＭＭＵ−ＭＩＳＳ−ＴＲＡＰの発生を抑制した状態で、ｍＴＬＢ５４０へのアクセスをおこなうようにしている。
【００６７】
図３は、本実施例に係るソフトウェアプリフェッチ方式におけるウィークプリフェッチ命令の処理手順を示すフローチャートである。同図に示すように、ウィークプリフェッチ命令を実行すると、まず、仮想アドレスから物理アドレスへのアドレス変換のためにμＴＬＢ５３０がアクセスされる（ステップＳ１０１）。μＴＬＢ５３０に必要とするＴＬＢエントリが存在し、アドレス変換をおこなうことができたならば（ステップＳ１０２肯定）、プリフェッチ処理を実行する（ステップＳ１０３）。
【００６８】
μＴＬＢ５３０に必要とするＴＬＢエントリが存在しなかった場合は（ステップＳ１０２否定）、プリフェッチが破棄され、その一方で、ｍＴＬＢ５４０がアクセスされる（ステップＳ１０４）。
【００６９】
ここで、ｍＴＬＢ５４０にも必要とするＴＬＢエントリが存在しなかったとしても（ステップＳ１０５否定）、ＦＡＳＴ−ＭＭＵ−ＭＩＳＳ−ＴＲＡＰは発生させない。そして、ｍＴＬＢ５４０に必要とするＴＬＢエントリが存在した場合は（ステップＳ１０５肯定）、当該のエントリをμＴＬＢ５３０に書き込む（ステップＳ１０６）。
【００７０】
このように、本実施例に係るソフトウェアプリフェッチ方式におけるウィークプリフェッチ命令は、μＴＬＢ５３０に必要なエントリが存在しない場合は、その時点でプリフェッチを破棄し、その一方でｍＴＬＢ５４０の参照をおこなう。そして、ｍＴＬＢ５４０にアドレス変換に必要なエントリを発見した場合、そのエントリをμＴＬＢ５３０へ書き込む。ストロングプリフェッチ命令のように、μＴＬＢ５３０への書込みの後に命令の再実行をおこなわないのには下記の理由がある。
【００７１】
第１の理由は、命令の再実行をおこなうためには、ｍＴＬＢ５４０へのアクセスを禁止して、トラップ報告フローを実行すると同時に、トラップ報告そのものは抑止するといった複雑な制御をウィークプリフェッチ命令に加える必要があり、設計や検証に大きな工数を要するためである。
【００７２】
第２の理由は、１回目のウィークプリフェッチ命令によってプリフェッチ処理が実行されなくても、１回目のウィークプリフェッチ命令によってμＴＬＢ５３０の更新がおこなわれるため、同じ領域に対する２回目以降のウィークプリフェッチ命令によってプリフェッチ処理が実行されることになるためである。
【００７３】
通常、同じ領域中の複数箇所に対してプログラムからのアクセスがあるが、このような場合、アクセス箇所数分のプリフェッチ命令がコンパイラに生成される。したがって、１回目のウィークプリフェッチ命令によってプリフェッチ処理が実行されないとしても、後続のウィークプリフェッチ命令によってプリフェッチ処理が実行されることになり、プリフェッチ処理は高い頻度で実行されることとなる。
【００７４】
第３の理由は、μＴＬＢ５３０にエントリが存在しないことが分かった時点で命令を破棄し次の命令を実行することで、ｍＴＬＢ５４０の検索中処理待ちが発生するのを防止するためである。
【００７５】
上述してきたように、本実施例では、ウィークプリフェッチ命令を実行する際に、μＴＬＢ５３０を参照して必要なＴＬＢエントリが存在しなかった場合には、ｍＴＬＢ５４０を参照し、必要なＴＬＢエントリが存在すればμＴＬＢ５３０へ転記するように構成したので、高い確率でウィークプリフェッチ命令によるソフトウェアプリフェッチを成功させることができる。
【００７６】
（付記１）少なくとも１階層からなるキャッシュメモリと、前記キャッシュメモリに主記憶上のデータもしくは命令を投機的に転送するプリフェッチ命令とを備えた情報処理装置であって、
仮想アドレスと物理アドレスの変換表を保持し、仮想アドレスから物理アドレスへの変換をおこなうアドレス変換のために最初にもちいられる第一のアドレス変換手段と、
仮想アドレスと物理アドレスの変換表を保持し、前記第一のアドレス変換手段にてアドレス変換できなかった仮想アドレスをアドレス変換するためにもちいられる第二のアドレス変換手段と、
前記プリフェッチ命令が実行された場合に、まず、前記第一のアドレス変換手段をもちいて仮想アドレスをアドレス変換し、これが変換できなかった場合は、前記第二のアドレス変換手段をもちいて仮想アドレスをアドレス変換し、これが変換できた場合は、前記第一のアドレス変換手段に該仮想アドレスと該仮想アドレスを変換した物理アドレスの対を登録して命令を完了させるキャッシュ制御手段と
をさらに備えたことを特徴とする情報処理装置。
【００７７】
（付記２）前記キャッシュ制御手段は、前記第一のアドレス変換手段をもちいて仮想アドレスをアドレス変換し、これが変換できなかった時点で次の命令の実行を受け付けることを特徴とする付記１に記載の情報処理装置。
【００７８】
（付記３）前記キャッシュ制御手段は、前記第一のアドレス変換手段および前記第二のアドレス変換手段のいずれをもちいても仮想アドレスをアドレス変換できなかった場合に、ＯＳに対するトラップ報告を抑止することを特徴とする付記１または２に記載の情報処理装置。
【００７９】
（付記４）少なくとも１階層からなるキャッシュメモリと、前記キャッシュメモリに主記憶上のデータもしくは命令を投機的に転送するプリフェッチ命令とを備えた情報処理装置におけるソフトウェアプリフェッチ制御方法であって、
仮想アドレスと物理アドレスの変換表を保持し、仮想アドレスから物理アドレスへの変換をおこなうアドレス変換のために最初にもちいられる第一のアドレス変換工程と、
仮想アドレスと物理アドレスの変換表を保持し、前記第一のアドレス変換工程にてアドレス変換できなかった仮想アドレスをアドレス変換するためにもちいられる第二のアドレス変換工程と、
前記プリフェッチ命令が実行された場合に、まず、前記第一のアドレス変換工程をもちいて仮想アドレスをアドレス変換し、これが変換できなかった場合は、前記第二のアドレス変換工程をもちいて仮想アドレスをアドレス変換し、これが変換できた場合は、前記第一のアドレス変換工程に該仮想アドレスと該仮想アドレスを変換した物理アドレスの対を登録して命令を完了させるキャッシュ制御工程と
を含んだことを特徴とするソフトウェアプリフェッチ制御方法。
【００８０】
（付記５）前記キャッシュ制御工程は、前記第一のアドレス変換工程をもちいて仮想アドレスをアドレス変換し、これが変換できなかった時点で次の命令の実行を受け付けることを特徴とする付記４に記載のソフトウェアプリフェッチ制御方法。
【００８１】
（付記６）前記キャッシュ制御工程は、前記第一のアドレス変換工程および前記第二のアドレス変換工程のいずれをもちいても仮想アドレスをアドレス変換できなかった場合に、ＯＳに対するトラップ報告を抑止することを特徴とする付記４または５に記載のソフトウェアプリフェッチ制御方法。
【産業上の利用可能性】
【００８２】
以上のように、本発明にかかる情報処理装置およびソフトウェアプリフェッチ制御方法は、ソフトウェアプリフェッチの効率的な実行に有用であり、特に、複数階層からなるＴＬＢが存在する場合においてプリフェッチ命令を効果的に実行したい場合に適している。
【図面の簡単な説明】
【００８３】
【図１】本実施例に係る情報処理装置の全体構成を示すブロック図である。
【図２】図１に示したオペランドキャッシュ装置の構成を示すブロック図である。
【図３】本実施例に係るソフトウェアプリフェッチ方式におけるウィークプリフェッチ命令の処理手順を示すフローチャートである。
【図４】ストロングプリフェッチ命令の処理手順を示すフローチャートである。
【図５】ソフトウェアパイプライニングによる最適化方法について説明するための説明図である。
【図６】従来のソフトウェアプリフェッチ方式におけるウィークプリフェッチ命令の処理手順を示すフローチャートである。
【符号の説明】
【００８４】
１０    情報処理装置
２０    メモリ制御装置
３０    主記憶
１００    命令処理装置
２００    演算器
３００    一次キャッシュ装置
４００    命令キャッシュ装置
５００    オペランドキャッシュ装置
５１０    キャッシュ制御装置
５２０    フェッチポート
５３０    μＴＬＢ
５４０    ｍＴＬＢ
５５０    キャッシュタグ
５６０    キャッシュメモリ
【図１】
2006048164.tif 000003
【図２】
2006048164.tif 000004
【図３】
2006048164.tif 000005
【図４】
2006048164.tif 000006
【図５】
2006048164.tif 000007
【図６】
2006048164.tif 000008