(57)【要約】【課題】計算機システムにおいてプロセッサの一時記憶装置に対しデータの先読みを制御する先読み制御装置、方法およびプログラムを提供し、安定かつ効果的な性能向上に寄与すること。【解決手段】データの先読みを指示する先読み制御装置において、主記憶装置に対するデータアクセスの間隔を表すアクセスヒント情報を取得する手段と、バスアクセス装置によるバスを介したデータの転送における転送遅延時間を表すシステム情報を取得する手段と、アクセス情報が表すデータアクセスの間隔と、システム情報が表す転送遅延時間とに基づいて、先読み単位数を計算する手段と、計算された先読み単位数のデータを当該データについてのデータアクセスに先行して主記憶装置から読み出すとともに一時記憶装置に転送するよう、バスアクセス装置に指示する手段と、を具備する。【選択図】図１
2006018474.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置にバスを介して接続され、該バスを介して前記主記憶装置からデータを読み出して一時記憶装置に転送するバスアクセス装置に対し、データの先読みを指示する先読み制御装置において、
前記主記憶装置に対するデータアクセスの間隔を表すアクセスヒント情報を取得する手段と、
前記バスアクセス装置による前記バスを介したデータの転送における転送遅延時間を表すシステム情報を取得する手段と、
前記アクセス情報が表すデータアクセスの間隔と、前記システム情報が表す転送遅延時間とに基づいて、先読み単位数を計算する手段と、
計算された先読み単位数のデータを当該データについてのデータアクセスに先行して前記主記憶装置から読み出すとともに前記一時記憶装置に転送するよう、前記バスアクセス装置に指示する手段と、を具備する先読み制御装置。
【請求項２】
前記一時記憶装置はデータキャッシュを含む請求項１記載の先読み制御装置。
【請求項３】
アドレス変換情報を記憶するアドレス変換情報キャッシュと、
前記データのアドレスを前記アドレス変換情報に基づいて変換するアドレス変換手段と、
前記先読み単位数のアドレス変換情報を、当該アドレス変換情報を用いるアドレス変換に先行して前記主記憶装置から読み出すとともに前記アドレス変換情報キャッシュに転送するよう、前記バスアクセス装置又は前記アドレス変換手段に指示する手段とをさらに具備する請求項１記載の先読み制御装置。
【請求項４】
主記憶装置にバスを介して接続され、該バスを介して前記主記憶装置からアドレス変換情報を読み出して一時記憶装置に転送するアドレス変換装置に対し、アドレス変換情報の先読みを指示する先読み制御装置において、
前記主記憶装置に対するデータアクセスの間隔を表すアクセスヒント情報を取得する手段と、
前記アドレス変換装置による前記バスを介したアドレス変換情報の転送における転送遅延時間を表すシステム情報を取得する手段と、
前記アクセス情報が表すデータアクセスの間隔と、前記システム情報が表す転送遅延時間とに基づいて、先読み単位数を計算する手段と、
計算された先読み単位数のアドレス変換情報を当該アドレス変換情報を用いるアドレス変換に先行して前記主記憶装置から読み出すとともに前記一時記憶装置に転送するよう、前記アドレス変換装置に指示する手段と、を具備する先読み制御装置。
【請求項５】
前記一時記憶装置はアドレス変換情報キャッシュを含む請求項４記載の先読み制御装置。
【請求項６】
データを記憶するデータキャッシュと、
前記データを前記主記憶装置から前記バスを介して読み出して前記データキャッシュに転送するバスアクセス装置と、
前記先読み単位数のデータを当該データについてのデータアクセスに先行して前記主記憶装置から読み出すとともに前記データキャッシュに転送するよう、前記バスアクセス装置に指示する手段とを具備する請求項４記載の先読み制御装置。
【請求項７】
主記憶装置にバスを介して接続され、該バスを介して前記主記憶装置からデータを読み出して一時記憶装置に転送するバスアクセス装置に対し、データの先読みを指示する先読み制御方法において、
前記主記憶装置に対するデータアクセスの間隔を表すアクセスヒント情報を取得するステップと、
前記バスアクセス装置による前記バスを介したデータの転送における転送遅延時間を表すシステム情報を取得するステップと、
前記アクセス情報が表すデータアクセスの間隔と、前記システム情報が表す転送遅延時間とに基づいて、先読み単位数を計算するステップと、
計算された先読み単位数のデータを当該データについてのデータアクセスに先行して前記主記憶装置から読み出すとともに前記一時記憶装置に転送するよう、前記バスアクセス装置に指示するステップと、を具備する先読み制御方法。
【請求項８】
前記一時記憶装置はデータキャッシュを含む請求項１記載の先読み制御方法。
【請求項９】
前記データのアドレスをアドレス変換情報に基づいて変換するアドレス変換ステップと、
前記先読み単位数のアドレス変換情報を、当該アドレス変換情報を用いるアドレス変換に先行して前記主記憶装置から読み出すとともにアドレス変換情報キャッシュに転送するよう、前記バスアクセス装置に指示するステップとをさらに具備する請求項７記載の先読み制御方法。
【請求項１０】
主記憶装置にバスを介して接続され、該バスを介して前記主記憶装置からアドレス変換情報を読み出して一時記憶装置に転送するアドレス変換装置に対し、アドレス変換情報の先読みを指示する先読み制御方法において、
前記主記憶装置に対するデータアクセスの間隔を表すアクセスヒント情報を取得するステップと、
前記アドレス変換装置による前記バスを介したアドレス変換情報の転送における転送遅延時間を表すシステム情報を取得するステップと、
前記アクセス情報が表すデータアクセスの間隔と、前記システム情報が表す転送遅延時間とに基づいて、先読み単位数を計算するステップと、
計算された先読み単位数のアドレス変換情報を当該アドレス変換情報を用いるアドレス変換に先行して前記主記憶装置から読み出すとともに前記一時記憶装置に転送するよう、前記アドレス変換装置に指示するステップと、を具備する先読み制御方法。
【請求項１１】
前記一時記憶装置はアドレス変換情報キャッシュを含む請求項１０記載の先読み制御方法。
【請求項１２】
前記先読み単位数のデータを当該データについてのデータアクセスに先行して前記主記憶装置から読み出すとともにデータキャッシュに転送するようバスアクセス装置に指示するステップとを具備する請求項１０記載の先読み制御方法。
【請求項１３】
主記憶装置にバスを介して接続され、該バスを介して前記主記憶装置からデータを読み出して一時記憶装置に転送するバスアクセス装置に対し、データの先読みを指示する先読み制御装置としてコンピュータを機能させるためのプログラムであって、
前記主記憶装置に対するデータアクセスの間隔を表すアクセスヒント情報を取得する手順と、
前記バスアクセス装置による前記バスを介したデータの転送における転送遅延時間を表すシステム情報を取得する手順と、
前記アクセス情報が表すデータアクセスの間隔と、前記システム情報が表す転送遅延時間とに基づいて、先読み単位数を計算する手順と、
計算された先読み単位数のデータを当該データについてのデータアクセスに先行して前記主記憶装置から読み出すとともに前記一時記憶装置に転送するよう、前記バスアクセス装置に指示する手順とをコンピュータに実行させるためのプログラム。
【請求項１４】
主記憶装置にバスを介して接続され、該バスを介して前記主記憶装置からアドレス変換情報を読み出して一時記憶装置に転送するアドレス変換装置に対し、アドレス変換情報の先読みを指示する先読み制御装置としてコンピュータを機能させるためのプログラムであって、
前記主記憶装置に対するデータアクセスの間隔を表すアクセスヒント情報を取得する手順と、
前記アドレス変換装置による前記バスを介したアドレス変換情報の転送における転送遅延時間を表すシステム情報を取得する手順と、
前記アクセス情報が表すデータアクセスの間隔と、前記システム情報が表す転送遅延時間とに基づいて、先読み単位数を計算する手順と、
計算された先読み単位数のアドレス変換情報を当該アドレス変換情報を用いるアドレス変換に先行して前記主記憶装置から読み出すとともに前記一時記憶装置に転送するよう、前記アドレス変換装置に指示する手順とをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに係わり、プロセッサの一時記憶装置へデータの先読みを制御する先読み制御装置、方法およびプログラムに関する。
【背景技術】
【０００２】
計算機システムにおいて、演算処理を行うプロセッサの性能はパイプライン処理等の内部構造の進歩や半導体技術等の進歩により、急速に向上している。これに対し、演算処理に使用するデータを記憶する主記憶装置の性能は、プロセッサの場合と比較すると、データ供給速度の点で向上が遅れており、プロセッサへのデータ供給速度が演算処理速度に追いついていない状況にある。このため、多くの計算機システムでは、プロセッサと主記憶装置との間の速度差を埋めるために、「キャッシュ」と呼ばれるデータの一時記憶装置を備える場合が多い。
【０００３】
キャッシュは、回路規模による製造コストが主記憶装置と比較して高価であるものの、そのデータ供給速度は主記憶装置のそれと比較して高速であり、プロセッサの演算処理能力を引き出すために必須な装置である。
【０００４】
主記憶装置に記憶されているデータへのアクセス（読み出し要求）が発生すると、まず、主記憶装置ではなくキャッシュが参照される。このとき、要求されたデータがキャッシュ上に存在するならば、該データはキャッシュから読み出されてプロセッサに送られる。一方、要求されたデータがキャッシュ上に存在しない場合、要求されたデータは先ず主記憶装置からシステムバスを通じてキャッシュに転送されたのち、プロセッサに与えられる。キャッシュに転送しておくのは、同一のデータに対する次回のアクセスに備えるためである。主記憶装置に記憶されているデータへのアクセスが発生したとき、該データがキャッシュ上に存在する率のことをキャッシュヒット率という。キャッシュヒット率は、キャッシュの性能を反映するパラメータの一つである。
【０００５】
近年、キャッシュ性能に対する要求はより厳しくなってきている。科学技術計算やマルチメディア処理など、データを高速かつ大量に処理する応用分野では、特に顕著である。上述のように、キャッシュは高コストであることから、キャッシュの記憶容量はコストとの兼ね合いで小さく抑えざるを得ない。必然的に、キャッシュの用途はデータの一時記憶に限定される。したがって、必要なデータが常にキャッシュに存在するとは限らない。例えば、アクセス要求に係るデータがいつもキャッシュ上に存在しない場合、すなわち、キャッシュヒット率が低過ぎる場合、データ供給速度は、キャッシュを設けない場合のデータ供給速度と同等レベルにまで低下してしまうことも考えられる。
【０００６】
この様な状況を踏まえ、従来、処理に必要なデータを事前にキャッシュ上への読み出しを行う、いわゆる先読み処理を行う仕組みを新たに設けることで、キャッシュ性能の向上を図ることが行われている。先読み処理の実現方法は幾つか知られており、例えば、（１）プリフェッチ命令を用いるものと、（２）アクセスパターンの予測に基づくものとがある。
【０００７】
プリフェッチ命令を用いる前者の場合、アクセスするデータのアドレスを明記するプリフェッチ命令がプログラム中に挿入される。プリフェッチ命令は、指定したアドレスのデータを事前にキャッシュ上に読み出す命令のことである。データを使用する命令の前に、プリフェッチ命令が先行して実行されることにより、該データを使用する段階でデータが先読みされ、前もってキャッシュ上に準備される。
【０００８】
また、アクセスパターンの予測に基づく後者の場合、過去のデータアクセスパターン（履歴）に基づいて、今後のデータアクセスパターンを予測し、先読み処理を実行する。配列データへのアクセスなど、データアクセスがアドレス上で連続して行われる場合など、アクセスされるデータのアドレスを監視することにより、次にアクセスされるデータのアドレスを予測することが出来る。その結果に応じて、今後必要となるデータの先読み処理を実行する。前者の場合と同様に、実際にデータを使用する段階では、該データがキャッシュ上に準備され、一時的に記憶された状態となる。
【非特許文献１】"Computer Architecture: A Quantitative Approach", John L. Hennessy , David A. Patterson, Morgan Kaufmann, Publishers ; ISBN: 1558607242
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述したように、先読み処理の仕組みを一時記憶に適用することで性能を向上することができるが、次のような問題点がある。
【００１０】
先ず、プログラム中にプリフェッチ命令を挿入する（１）の従来例について、個々の計算機システムの異なる性能に応じることができるようプログラムを調整して提供することは非現実的であることから、プログラムは、ある性能値を基準に最適化せざるを得ない。その結果、計算機システム間の性能差を考慮することが出来ず、計算機システムの性能に依存して、性能の向上度合いにばらつきが出てしまうという問題点がある。
【００１１】
次に、アクセスパターンの予測に基づく（２）の従来例では、予測に限界があるという問題点がある。例えば、どのデータアクセスが計算処理にとって重要なのか、また、そのデータアクセスが何回継続されるのかなど、といった情報についてまでは予測でまかなえない。言い替えれば、予測し易いアクセスパターン以外の領域には性能向上に明らかな障壁がある。
【００１２】
本発明はかかる事情を考慮してなされたものであり、計算機システムにおいてプロセッサの一時記憶装置に対しデータの先読みを制御する先読み制御装置、方法およびプログラムを提供し、安定かつ効果的な性能向上に寄与することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の一観点に係る先読み制御装置は、主記憶装置にバスを介して接続され、該バスを介して前記主記憶装置からデータを読み出して一時記憶装置に転送するバスアクセス装置に対し、データの先読みを指示する先読み制御装置において、前記主記憶装置に対するデータアクセスの間隔を表すアクセスヒント情報を取得する手段と、前記バスアクセス装置による前記バスを介したデータの転送における転送遅延時間を表すシステム情報を取得する手段と、前記アクセス情報が表すデータアクセスの間隔と、前記システム情報が表す転送遅延時間とに基づいて、先読み単位数を計算する手段と、計算された先読み単位数のデータを当該データについてのデータアクセスに先行して前記主記憶装置から読み出すとともに前記一時記憶装置に転送するよう、前記バスアクセス装置に指示する手段と、を具備する。
【００１４】
本発明の別の観点に係る先読み制御装置は、主記憶装置にバスを介して接続され、該バスを介して前記主記憶装置からアドレス変換情報を読み出して一時記憶装置に転送するアドレス変換装置に対し、アドレス変換情報の先読みを指示する先読み制御装置において、前記主記憶装置に対するデータアクセスの間隔を表すアクセスヒント情報を取得する手段と、前記アドレス変換装置による前記バスを介したアドレス変換情報の転送における転送遅延時間を表すシステム情報を取得する手段と、前記アクセス情報が表すデータアクセスの間隔と、前記システム情報が表す転送遅延時間とに基づいて、先読み単位数を計算する手段と、計算された先読み単位数のアドレス変換情報を当該アドレス変換情報を用いるアドレス変換に先行して前記主記憶装置から読み出すとともに前記一時記憶装置に転送するよう、前記アドレス変換装置に指示する手段と、を具備する。
【発明の効果】
【００１５】
本発明によれば、計算機システムにおいて、安定かつ効果的な性能向上に寄与する先読み制御装置、方法およびプログラムを提供できる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照しながら本発明の実施形態を説明する。
【００１７】
（第１の実施形態）  
図１は本発明の第１の実施形態に係る計算機システムを示すブロック図である。計算機システム１０１は、プロセッサ１０２、キャッシュ１０３、バスアクセス装置１０４、バス１０５、主記憶装置１０６、および先読み制御装置１０７を含んでいる。プロセッサ１０２は、演算処理に使用するデータをキャッシュ１０３に対してアクセスする。キャッシュ１０３は、必要なデータがキャッシュ上に存在しない場合には、バスアクセス装置１０４に対してデータ転送を指示する。バスアクセス装置１０４は、指示されたデータをバス１０５を介して主記憶装置１０６より転送する。先読み制御装置１０７は、プロセッサ１０２から得たアクセスヒント情報およびシステム情報に基づいて先読み処理を制御し、バスアクセス装置１０４に必要なデータの転送を指示する。アクセスヒント情報およびシステム情報については後述する。
【００１８】
なお、バスアクセス装置１０４は、連続したデータ転送を行うDMAコントローラを備えても良い。
【００１９】
キャッシュ１０３の代わりに、キャッシュと主記憶装置間のデータ転送機能を持たない、ローカルメモリを用いても良い。ローカルメモリは、キャッシュ１０３と同様の高速なメモリであり、データ供給速度は主記憶装置のそれと比較して高速である。ローカルメモリは主記憶装置との間の自動的なデータ転送機能は持たないことから、その分、回路規模を抑えることが出来るが、主記憶装置上のデータアクセスに先立ち、ローカルメモリと主記憶装置間のデータ転送を明示的に指示する必要がある。
【００２０】
キャッシュ１０３に代わるローカルメモリを用いる場合、ローカルメモリと主記憶装置１０６との間のデータ転送は、バスアクセス装置１０４がプロセッサ１０２あるいは先読み制御装置１０７の指示に基づいて行うこととする。
【００２１】
図２は図１に示した先読み制御装置のブロック図である。先読み制御装置１０７は、先読み指示部２０１と、アクセスヒント情報テーブル２０２と、データ先読み状態テーブル２０３とシステム情報２０４とを有する。
【００２２】
先読み指示部２０１は、プロセッサ１０２からアクセスヒント情報を取得してアクセスヒント情報テーブル２０２に格納する処理およびシステム情報２０４を取得する処理とを実行したのち、データへのアクセス開始および終了を識別してデータ先読み処理を実行する。アクセスヒント情報テーブル２０２は、アクセスヒント情報を格納する。データ先読み状態テーブル２０３は、処理が進行中のデータ先読みに関する情報を格納する。
【００２３】
先読み制御装置１０７については、プロセッサ１０２とは別のプロセッサにより特定の処理手順を実行するソフトウェアとして実現しても良い。なお、別のプロセッサではなくプロセッサ１０２上で動作するソフトウェアとして実現してもよい。
【００２４】
図３に、プロセッサ１０２より通知されるアクセスヒント情報の一例を示す。アクセスヒント情報３０１は、本例では、ID（識別子）、先頭アドレス、アクセス単位、ストライド、アクセス間隔、およびアクセスデータ数としている。IDは、アクセスヒント情報を識別するために使用される。先頭アドレスは、アクセスが開始されるアドレスを意味する。アクセス単位は、一回のデータアクセスの際にまとめてアクセスされるデータのサイズを意味する。ストライドは、あるアクセス単位と次のアクセス単位間のアドレス間隔を意味する。例えば、先頭アドレスが0x4000であり、ストライドが8であった場合には、最初のデータが0x4000にあり、次のデータが0x4008に、さらに次のデータが0x4010にあることを示す。ストライドに負の値が指定された場合には、先頭アドレスからアドレスの減少方向にアクセスが行われることを示す。アクセス間隔は、あるアクセス単位と次のアクセス単位間の時間間隔を意味する。時間の単位として、アクセスヒント情報３０１ではクロック数を用いているが、直接、時間を指定しても良い。アクセスデータ数は、このアクセスヒント情報に係わるデータアクセスの個数を意味する。
【００２５】
図４に、アクセスヒント情報テーブルの一例を示す。アクセスヒント情報テーブル２０２は、プロセッサ１０２より通知されたアクセスヒント情報を複数、記憶する。エントリ４０１やエントリ４０２など、アクセスヒント情報テーブル２０２の各エントリは、個別のアクセスヒント情報を表し、その項目は、アクセスヒント情報３０１と同様である。
【００２６】
図５に、データ先読み状態テーブルの一例を示す。データ先読み状態テーブル２０３は、本例では、ID、先読み対象アドレス、アクセス単位、ストライド、先読み単位数、先読みデータ残数としている。データ先読み状態テーブルのエントリ５０１は、アクセスヒント情報テーブルのエントリ４０１に対応し、データ先読み状態テーブルのエントリ５０２は、アクセスヒント情報テーブルのエントリ４０２に、それぞれ対応する。データ先読み状態テーブルのエントリ５０１は、８個の先読みが完了した後の状態を表し、データ先読み状態テーブルのエントリ５０２は、５１２個の先読みが完了した後の状態を表している。
【００２７】
ID、アクセス単位、およびストライドについては、対応するアクセスヒント情報テーブルのエントリから複製する。なお、アクセス単位およびストライドについては、データ先読み状態テーブルには複製せずに、IDを用いて該当するアクセスヒント情報テーブルのエントリを検索し、そのエントリに記憶されたアクセス単位およびストライドを使用しても良い。
【００２８】
先読み対象アドレスは、次に先読みを行うデータのアドレスを意味する。データ先読み状態テーブルのエントリ５０１は、８個の先読みが完了した後であるため、ストライドで示された16バイトと８個を掛けた１２８バイト(１６進数で０ｘ８０)だけ、アクセスヒント情報テーブルのエントリ４０１に示された、先頭アドレスより進んでいる。同様に、データ先読み状態テーブルのエントリ５０２は、８１９２バイト(１６進数で０ｘ２０００)だけ進んでいる。
【００２９】
先読み単位数は、対応するアクセスヒント情報とシステム情報とに基づいて、先読み指示部２０１にて計算する。
【００３０】
先読みデータ残数は、先読みを行うデータの残数を意味する。データ先読み状態テーブルのエントリ５０１は、８個の先読みが完了した後であるため、アクセスヒント情報テーブルのエントリ４０１に示されたアクセスデータ数より８だけ減少した値になっている。同様に、データ先読み状態テーブルのエントリ５０２は、５１２個の先読みが完了した後であるため、５１２だけ減少した値になっている。
【００３１】
次に、システム情報に関して、本発明の第１の実施形態においては、システム情報２０４はプロセッサ１０２のクロックと、バスアクセス装置１０４のデータ転送遅延時間とを表し、後述する先読み単位数の計算に用いられる。システム情報２０４は当該計算機システムの性能を反映した情報であって、プロセッサ１０２やバスアクセス装置１０４等から直接取得してもよいし、オペレーティングシステム等を通じて取得してもよい。
【００３２】
図６は、本発明の第１の実施形態に係るデータ先読み処理全体の手順を示すフローチャートである。事前に、プロセッサ１０２より、アクセスヒント情報３０１が先読み制御装置１０７に対して通知される（ステップＳ６０１）。この際、先読み制御装置１０７内の先読み指示部２０１がアクセスヒント情報３０１を受信し、アクセスヒント情報テーブル２０２に記憶する。また、先読み制御装置１０７は、システム情報２０４についても取得を行う。
【００３３】
次に、先読み処理の前処理が実行される（ステップＳ６０２）。先読み処理の前処理では、先読み処理の開始の識別や、データ先読み状態テーブル２０３へのエントリ追加処理などを行う。
【００３４】
続いて、先読み処理の後続処理が実行される（ステップＳ６０３）。先読み処理の後続処理では、データアクセス終了の識別と前処理によって用意されたデータ先読み状態テーブル２０３に追加されたエントリに基づき、残りのデータ先読み処理を継続して行う。
【００３５】
図７は、図６におけるデータ先読み処理の前処理に関するフローチャートである。はじめに、アクセスヒント情報テーブル２０２に格納された情報に該当するデータアクセスの開始の識別を行う（ステップＳ７０１）。データアクセス開始の識別には、プロセッサ１０２から先読み制御装置１０７に対し、アクセスヒント情報のID、あるいは、先頭アドレスを付与したアクセス開始情報を通知しても良い。あるいは、バスアクセス装置１０４へのデータ転送指示を監視し、そのアドレスとアクセスヒント情報テーブル２０２の先頭アドレスとが等しい場合に、該当するアクセスが開始されたと識別しても良い。
【００３６】
次に、対応するアクセスヒント情報をアクセスヒント情報テーブル２０２より読み出す（ステップＳ７０２）。続いて、アクセスヒント情報のアクセス間隔と、システム情報２０４である、プロセッサ１０２のクロックと、バスアクセス装置１０４のデータ転送遅延時間とに基づいて、先読み単位数を決定する（ステップＳ７０３）。先読み単位数の決定後、先頭アドレスから先読み単位数分のデータ取得を、バスアクセス装置１０４に指示する（ステップＳ７０４）。
【００３７】
次に、先読み単位数に応じて、対応するアクセスヒント情報の先頭アドレスとストライドから先読み対象アドレスを計算し、また、アクセスデータ数から先読みデータ残数を計算する（ステップＳ７０５）。この時、先読みデータ残数が０であるか確認し（ステップＳ７０６）、０で無い場合には、計算した先読み先頭アドレス、先読み単位数、先読みデータ残数と、対応するアクセスヒント情報のアクセス単位、ストライドとに基づいて、データ先読み状態テーブル２０３に新しいエントリを追加する（ステップＳ７０７）。
【００３８】
ここで、先読み単位数の具体的な計算例を示す。先読み単位数は、例えば次式（１）から与えられる。
【数１】
2006018474.tif 000003
【００３９】
データ転送遅延には、バスアクセス装置１０４のデータ転送遅延時間を用いることが出来る。データアクセス時間には、アクセスヒント情報のアクセス間隔をプロセッサ１０２のクロックで割った値を用いることが出来る。データアクセス時間には、この他に、データアクセス間に実行する命令列からプロセッサ１０２の挙動を求め、処理時間を推定する方法、あるいは、命令列に含まれる命令数と平均処理時間との掛け算により推定する方法などを用いることが出来る。
【００４０】
図７に示したデータ先読み処理の前処理のステップＳ７０７において、データ先読み状態テーブル２０３に新しいエントリが追加された場合には、データ先読み処理の継続処理を行う。
【００４１】
図８は、図６のデータ先読み処理の継続処理に関するフローチャートを示す。
【００４２】
はじめに、データ先読み状態テーブルのエントリに該当するデータアクセスの終了を識別する（ステップＳ８０１）。データアクセス終了の識別には、プロセッサ１０２から先読み制御装置１０７に対し、アクセスの終了したデータのアドレスを付与したアクセス終了情報を通知しても良い。あるいは、キャッシュ１０３からバスアクセス装置１０４へのデータ転送指示を監視し、そのアドレスと先読み指示したアドレスとが等しい場合に、該当するアクセスが終了したと識別しても良い。
【００４３】
次に、対応するデータ先読み状態テーブルのエントリを読み出し（ステップＳ８０２）、そのエントリの先読み対象アドレスからデータアクセス終了数分のデータ取得をバスアクセス装置１０４に指示する（ステップＳ８０３）。続いて、ステップＳ８０３における先読み指示数に応じて、先読み対象アドレスおよび先読みデータ残数を、それぞれ更新する（ステップＳ８０４）。更新の結果、先読みデータ残数が０になっていないか確認し（ステップＳ８０５）、先読みデータ残数が０で無い場合には、ステップＳ８０１からの処理を継続し、先読みデータ残数が０の場合には、データ先読み状態テーブル２０３の該当エントリを削除する（ステップＳ８０６）。
【００４４】
以上説明した本発明の第１の実施形態によれば、事前に提供されるデータのアクセスヒント情報およびシステム情報に基づいて、先読み制御装置によりシステム性能等を考慮したデータ先読み処理を行い、プロセッサが必要とするデータを一時記憶装置(キャッシュ)に事前に配置することができる。
【００４５】
つまり、個別のデータアクセスではなく、連続するデータアクセスに係わる情報がアクセスヒント情報として事前に提供されることから、先読み処理による性能向上は効果的なものとなる。また、計算機システムの性能がシステム情報として考慮されることから、かかる性能向上は安定的で汎用性が高くなるという利点がある。
【００４６】
（第２の実施形態）  
本発明の第２の実施形態はアドレス変換情報の先読みに関する。第１の実施形態で説明したデータの一時記憶（キャッシュ）のみならず、アドレス変換の仕組みについても、同様に本発明を適用可能であることを説明する。
【００４７】
先ず、アドレス変換の仕組みについて概略を説明する。計算機システム上で複数のプログラムを同時に実行するマルチプロセス方式では、各プロセスに用いるプログラムの開発を容易にするため、各プロセスに対して同一のアドレス空間を提供する方式が用いられることが多い。この場合、各プロセスに対し仮想的なアドレス空間が提供され、あたかもそのアドレス空間をそのプロセスが占有しているかのように使用することが出来る。この様な機能を提供する計算機システムにおいては、仮想的なアドレス空間を実現するため、Memory Management Unit(MMU)などのアドレス変換装置を備え、仮想的なアドレス空間と計算機システムが持つ実際の（物理的な）アドレス空間との変換処理を行う。これを「アドレス変換処理」という。
【００４８】
アドレス変換処理の際には、仮想的なアドレスと実際のアドレスとの関係を表すアドレス変換情報が用いられる。アドレス変換情報は、ページサイズなどのアドレス変換単位ごとに用意されるのが一般的である。そのアドレス変換単位内では、単一のアドレス変換情報を用いてアドレス変換が行われる。
【００４９】
計算機システムで使用されるアドレス変換情報は大量であることから、主記憶装置上に記憶される場合が多い。ここで、全てのデータアクセスの際にアドレス変換が必要であり、その度にアドレス変換情報が必要となるが、アドレス変換情報を毎回、主記憶装置から読み出していたのでは、データアクセスの性能が劣化してしまう。そこで、アドレス変換情報をTranslation Look-aside Buffer（TLB）などの高速なアドレス変換情報キャッシュ上に一時的に記憶し、キャッシュされたアドレス変換情報を用いることによって、高速なアドレス変換を実現する方式が用いられている。
【００５０】
アドレス変換情報キャッシュは、データに用いるキャッシュと同様、回路面積等のコストは主記憶装置と比較して高価であるが、そのデータ供給速度は主記憶装置のそれと比較して高速であり、データアクセス性能、および、その性能に依存しているプロセッサの演算処理能力を引き出すために必須な装置と言える。
【００５１】
第２の実施形態では、事前に提供されるデータのアクセスヒント情報およびシステム情報に基づいて、先読み制御装置によりシステム性能等を考慮した先読み処理を制御し、アドレス変換装置が必要とするアドレス変換情報を一時記憶装置(アドレス変換情報キャッシュ)に事前に配置することができるようにする。
【００５２】
図９は本発明の第２の実施形態に係る計算機システムを示すブロック図である。
【００５３】
計算機システム９０１は、プロセッサ９０２、キャッシュ９０３、バスアクセス装置９０４、バス９０５、主記憶装置９０６、先読み制御装置９０７、アドレス変換装置９０８、およびアドレス変換情報キャッシュ９０９を含んでいる。
【００５４】
プロセッサ９０２は、演算処理に使用するデータをキャッシュ９０３に対してアクセスする。キャッシュ９０３は、必要なデータがキャッシュ上に存在しない場合には、バスアクセス装置９０４にデータ転送を指示する。バスアクセス装置９０４は、指示されたデータのアドレスの変換をアドレス変換装置９０８に指示する。アドレス変換装置９０８は、アドレス変換情報キャッシュ９０９の情報に基づいてアドレスを変換し、その結果をバスアクセス装置９０４に返信する。バスアクセス装置９０４は、変換されたアドレスを用いて、データをバス９０５を介して主記憶装置９０６より転送する。先読み制御装置９０７は、プロセッサ９０２から得たアクセスヒント情報に基づいて先読み処理を制御し、アドレス変換装置９０８に必要なデータの転送を指示する。
【００５５】
バスアクセス装置９０４は、連続したデータ転送を行うDMAコントローラを備えても良い。
【００５６】
キャッシュ９０３の代わりに、キャッシュと主記憶装置間のデータ転送機能を持たない、ローカルメモリを用いても良い。この場合、ローカルメモリと主記憶装置間のデータ転送は、バスアクセス装置９０４がプロセッサ９０２あるいは先読み制御装置９０７の指示に基づいて行うこととする。
【００５７】
計算機システム９０１では、バスアクセス装置９０４と先読み制御装置９０７とが接続されているが、接続されていなくても良い。
【００５８】
図１０は本発明の第２の実施形態に係る別の計算機システムを示すブロック図である。アドレス変換情報キャッシュがプロセッサとキャッシュとの間に挿入されている点で図９に示した計算機システムと異なる。
【００５９】
計算機システム１００１は、プロセッサ１００２、キャッシュ１００３、バスアクセス装置１００４、バス１００５、主記憶装置１００６、先読み制御装置１００７、アドレス変換装置１００８、およびアドレス変換情報キャッシュ１００９を含んでいる。
【００６０】
プロセッサ１００２は、演算処理に使用するデータの取得を、アドレス変換装置１００８に指示する。アドレス変換装置１００８は、データのアドレスを、アドレス変換情報キャッシュ１００９の情報に基づいて変換し、変換したアドレスを用いて、キャッシュ１００３に対してアクセスする。キャッシュ１００３は、必要なデータがキャッシュ上に存在しない場合には、バスアクセス装置１００４にデータ転送を指示する。バスアクセス装置１００４は、データをバス１００５を介して主記憶装置１００６より転送する。先読み制御装置１００７は、プロセッサ１００２から得たアクセスヒント情報に基づいて先読み処理を制御し、アドレス変換装置１００８に必要なアドレス変換情報の転送を指示する。
【００６１】
バスアクセス装置１００４は、連続したデータ転送を行うDMAコントローラを備えても良い。
【００６２】
キャッシュ１００３の代わりに、キャッシュと主記憶装置間のデータ転送機能を持たない、ローカルメモリを用いても良い。この場合、ローカルメモリと主記憶装置間のデータ転送は、バスアクセス装置１００４がプロセッサ１００２あるいは先読み制御装置１００７の指示に基づいて行うこととする。
【００６３】
計算機システム１００１では、バスアクセス装置１００４と先読み制御装置１００７とが接続されているが、接続されていなくても良い。
【００６４】
計算機システム９０１および１００１を用いたアドレス変換情報の先読み処理は、共に同じ内容の処理となり、先読み処理装置９０７および１００７の構成やその処理内容は等しい。そのため、以降の説明は、計算機システム９０１を用いて説明する。
【００６５】
図１１は図９に示した先読み制御装置のブロック図である。先読み制御装置９０７は、先読み指示部１１０１と、アクセスヒント情報テーブル１１０２と、アドレス変換情報先読み状態テーブル１１０３とシステム情報１１０５とを有する。先読み指示部１１０１は、プロセッサ９０２からのアクセスヒント情報を受け取り、アクセスヒント情報テーブル１１０２に格納する処理と、データへのアクセス開始および終了を識別し、アドレス変換情報先読み処理とを実行する。アクセスヒント情報テーブル１１０２は、アクセスヒント情報テーブル２０２と同じ構成であり、アクセスヒント情報を格納する。アドレス変換情報先読み状態テーブル１１０３は、処理が進行中のアドレス変換情報の先読みに関する情報を記憶する。
【００６６】
先読み制御装置９０７は、プロセッサ９０２とは別のプロセッサを用いて、その処理手法をソフトウェアとして実現しても良い。あるいは、プロセッサ９０２上で動作するソフトウェアとして実現してもよい。
【００６７】
本実施形態に使用するアクセスヒント情報およびアクセスヒント情報テーブル１１０２は、第１の実施形態で説明したアクセスヒント情報３０１およびアクセスヒント情報テーブル２０２を使用する。
【００６８】
図１２に、アドレス変換情報先読み状態テーブルの一例を示す。アドレス変換情報先読み状態テーブル１１０３は、本例では、ID、先読み対象アドレス、ストライド、先読み単位数、および先読み情報残数としている。
【００６９】
本例のアドレス変換情報先読み状態テーブルのエントリ１２０１は、アクセスヒント情報テーブルのエントリ４０１に、アドレス変換情報先読み状態テーブルのエントリ１２０２は、アクセスヒント情報テーブルのエントリ４０２に、それぞれ対応する。アドレス変換情報先読み状態テーブルのエントリ５０１は、１個の先読みが完了した後の状態を表し、アドレス変換情報先読み状態テーブルのエントリ５０２は、２個の先読みが完了した後の状態を表している。
【００７０】
先読み対象アドレスは、次に先読みを行うアドレス変換情報の変換前アドレスを意味する。アドレス変換情報先読み状態テーブルのエントリ５０１は、１個の先読みが完了した後であるため、ストライドで示された０ｘ１０００バイトと１個を掛けた０ｘ１０００バイトだけ、アクセスヒント情報テーブルのエントリ４０１に示された、先頭アドレスより進んでいる。同様に、アドレス変換情報先読み状態テーブルのエントリ５０２は、０ｘ２０００だけ進んでいる。
【００７１】
ストライドおよび先読み単位数は、対応するアクセスヒント情報とシステム情報とに基づいて、先読み指示部１１０１にて計算する。
【００７２】
先読み情報残数は、先読みを行うアドレス変換情報の残数を意味する。
【００７３】
次に、システム情報に関して、本発明の第２の実施形態においては、システム情報１１０５はアドレス変換単位と、プロセッサ９０２のクロックと、バスアクセス装置９０４のデータ転送遅延時間を表し、後述するストライドと先読み単位数の計算に用いられる。システム情報１１０５は当該計算機システムの性能を反映した情報であって、プロセッサ９０２やバスアクセス装置９０４等から直接取得してもよいし、オペレーティングシステム等を通じて取得してもよい。
【００７４】
図１３は、本発明の第２の実施形態に係るアドレス変換情報の先読み処理全体の手順を示すフローチャートである。事前に、プロセッサ９０２よりアクセスヒント情報３０１が先読み制御装置９０７に対して通知される（ステップＳ１３０１）。この際、先読み制御装置９０７内の先読み指示部１１０１が、アクセスヒント情報３０１を受信し、アクセスヒント情報テーブル１１０２に記憶する。また、先読み制御装置９０７は、システム情報１１０５についても取得を行う。
【００７５】
次に、先読み処理の前処理を実行する（ステップＳ１３０２）。先読み処理の前処理では、先読み処理の開始の識別や、アドレス変換情報先読み状態テーブル１１０３へのエントリ追加処理などを行う。
【００７６】
続いて、先読み処理の後続処理を実行する（ステップＳ１３０３）。先読み処理の後続処理では、データアクセス終了の識別と前処理によって用意されたアドレス変換情報先読み状態テーブル１１０３に追加されたエントリに基づき、残りのアドレス変換情報の先読み処理を継続して行う。
【００７７】
図１４は、図１３のアドレス変換情報の先読み処理の前処理に関するフローチャートである。はじめに、アクセスヒント情報テーブル１１０２に格納された情報に該当するデータアクセスの開始の識別を行う（ステップＳ１４０１）。データアクセス開始の識別には、プロセッサ９０２から先読み制御装置９０７に対し、アクセスヒント情報のID、あるいは、先頭アドレスを付与したアクセス開始情報を通知しても良い。あるいは、バスアクセス装置９０４へのデータ転送指示を監視し、そのアドレスとアクセスヒント情報テーブル１１０２の先頭アドレスとが等しい場合に、該当するアクセスが開始されたと識別しても良い。
【００７８】
次に、対応するアクセスヒント情報をアクセスヒント情報テーブル１１０２より読み出す（ステップＳ１４０２）。続いて、アクセスヒント情報のアクセス間隔と、システム情報１１０５である、アドレス変換単位と、プロセッサ９０２のクロックと、バスアクセス装置９０４のデータ転送遅延時間に基づいて、ストライドと先読み単位数を決定する（ステップＳ１４０３）。先読み単位数の決定後、先頭アドレスから先読み単位数分のアドレス変換情報の取得を、アドレス変換装置９０８に指示する（ステップＳ１４０４）。
【００７９】
次に、先読み単位数に応じて、対応するアクセスヒント情報の先頭アドレスとストライドから先読み対象アドレスを計算し、また、アクセスデータ数とアドレス変換単位から先読み情報残数を計算する（ステップＳ１４０５）。この時、先読み情報残数が０であるか確認し（ステップＳ１４０６）、０で無い場合には、計算した先読み先頭アドレス、ストライド、先読み単位数、および先読み情報残数に基づいて、アドレス変換情報先読み状態テーブル１１０３に新しいエントリを追加する（ステップＳ１４０７）。
【００８０】
ここで、アドレス変換情報先読み状態テーブル１１０３に格納する、ストライドと先読み単位数の具体的な計算例を示す。
【００８１】
ストライドは、例えば次式（２）から与えられる。
【数２】
2006018474.tif 000004
【００８２】
データアクセスのストライドが、アドレス変換単位より小さい場合には、複数のデータアクセスにおいて、同一のアドレス変換情報を用いることが出来る場合がある。そのため、アドレス変換情報を使用する間隔は、データアクセス間隔よりも長くなる場合がある。そのため、アドレス変換情報使用間隔を計算する。
【００８３】
アドレス変換情報使用間隔は、例えば次式（３）から与えられる。
【数３】
2006018474.tif 000005
【００８４】
計算されたアドレス変換情報使用間隔の値を用いて、アドレス変換情報の先読み単位数は、例えば次式（４）から与えられる。
【数４】
2006018474.tif 000006
【００８５】
データ転送遅延には、バスアクセス装置９０４のデータ転送遅延時間を用いることが出来る。アドレス変換情報使用時間は、アドレス変換情報使用間隔をプロセッサ９０２のクロックで割った値を用いることが出来る。
【００８６】
図１４に示したデータ先読み処理の前処理のステップＳ１４０７において、アドレス変換情報先読み状態テーブル１１０３に新しいエントリが追加された場合には、データ先読み処理の継続処理を行う。
【００８７】
図１５は、図１３のアドレス変換情報の先読み処理の継続処理に関するフローチャートである。はじめに、アドレス変換情報先読み状態テーブルのエントリに該当するデータアクセスの終了を識別する（ステップＳ１５０１）。
【００８８】
データアクセス終了の識別には、プロセッサ９０２から先読み制御装置９０７に対し、アクセスの終了したデータのアドレスを付与したアクセス終了情報を通知しても良い。あるいは、キャッシュ９０３からバスアクセス装置９０４へのデータ転送指示を監視し、そのアドレスと先読み指示したアドレスとが等しい場合に、該当するアクセスが終了したと識別しても良い。
【００８９】
次に、対応するアドレス変換情報先読み状態テーブルのエントリを読み出し（ステップＳ１５０２）、そのエントリの先読み対象アドレスから、データアクセス終了数から計算した必要数分のアドレス変換情報の取得を、アドレス変換装置９０８に指示する（ステップＳ１５０３）。続いて、ステップＳ１５０３における先読み指示数に応じて、先読み対象アドレスおよび先読み情報残数を、それぞれ更新する（ステップＳ１５０４）。更新の結果、先読み情報残数が０になっていないか確認し（ステップＳ１５０５）、先読み情報残数が０で無い場合には、ステップＳ１５０１からの処理を継続し、先読み情報残数が０の場合には、アドレス変換情報先読み状態テーブル１１０３の該当エントリを削除する（ステップＳ１５０６）。
【００９０】
ここで、データアクセス終了数分から、必要なアドレス変換情報の先読み指示数を計算する具体的な方法を示す。先読みを行うアドレス変換情報の数は、データアクセス終了によって使用済みになったアドレス変換情報の数を用いる。アドレス変換情報の先読み指示数は、例えば次式（５）から与えられる。
【数５】
2006018474.tif 000007
【００９１】
あるいは、毎回のデータアクセス終了数ではなく、全てのデータ終了数の累積数から使用済みアドレス変換情報の数を計算し、先読み指示済みアドレス変換情報さら差し引いた値を、先読み指示中アドレス変換情報数とし、その数が先読み単位数より小さい場合には、先読み単位数から先読み指示中のアドレス変換情報数を引いた値を、アドレス変換情報の先読み指示数としても良い。
【００９２】
以上説明した本発明の第２の実施形態によれば、事前に提供されるアドレス変換情報のアクセスヒント情報およびシステム情報に基づいて、先読み制御装置によりシステム性能等を考慮したアドレス変換情報の先読み処理を行い、アドレス変換装置が必要とするアドレス変換情報を一時記憶装置(アドレス変換情報キャッシュ)に事前に配置することができる。
【００９３】
（第３の実施形態）  
図１６は、本発明の第３の実施形態に係る先読み制御装置を示すブロック図である。
【００９４】
図９および図１０に示した計算機システムは、アドレス変換情報の先読み処理と同時に、データ先読み処理を行うことが出来るものであるが、第３の実施形態は、この場合に適用される先読み制御装置９０７（１００７）の内部構成例を示すものである。
【００９５】
同図に示すように、先読み指示部１１０１に対して、データ先読み状態テーブル１１０３とアドレス変換情報テーブル１１０４の両者が設けられている。アクセスヒント情報およびアクセスヒント情報テーブル１１０２については、第２の実施形態で説明したように、第１の実施形態で説明したアクセスヒント情報３０１およびアクセスヒント情報テーブル２０２と同じものが用いられる。
【００９６】
図１６に示すように先読み制御装置を構成すれば、第１の実施形態で説明したデータ先読み処理と、第２の実施形態で説明したアドレス変換情報の先読み処理とを同時に実現することが出来る。
【００９７】
（第４の実施形態）  
図１７は本発明の第４の実施形態に係る計算機システムを示すブロック図である。同図に示すように、本実施形態に係る計算機システムは、バス９０５を介して主記憶装置９０６に対し接続される複数のプロセッサユニット９０１ａ，９０１ｂ，９０１ｃ...を有する。なお、図１６において、各プロセッサユニットは第２の実施形態で説明した計算機システム９０１と同様の構成であるが、アドレス変換装置等を含まずデータキャッシュのみを備える構成も可能である。
【００９８】
このような第４の実施形態に係る計算機システムによれば、各プロセッサユニット毎に独立して本発明の作用効果を奏することができ、プロセッサユニット数の増加に応じてそれは顕著となる。
【００９９】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１００】
【図１】本発明の第１の実施形態に係る計算機システムを示すブロック図
【図２】図１に示した先読み制御装置のブロック図
【図３】プロセッサより通知されるアクセスヒント情報の一例を示す図
【図４】アクセスヒント情報テーブルの一例を示す図
【図５】データ先読み状態テーブルの一例を示す図
【図６】本発明の第１の実施形態に係るデータ先読み処理全体の手順を示すフローチャート
【図７】図６におけるデータ先読み処理の前処理に関するフローチャート
【図８】図６のデータ先読み処理の継続処理に関するフローチャート
【図９】本発明の第２の実施形態に係る計算機システムを示すブロック図
【図１０】本発明の第２の実施形態に係る別の計算機システムを示すブロック図
【図１１】図９に示した先読み制御装置のブロック図
【図１２】アドレス変換情報先読み状態テーブルの一例を示す
【図１３】本発明の第２の実施形態に係るアドレス変換情報の先読み処理全体の手順を示すフローチャート
【図１４】図１３のアドレス変換情報の先読み処理の前処理に関するフローチャート
【図１５】図１３のアドレス変換情報の先読み処理の継続処理に関するフローチャート
【図１６】本発明の第３の実施形態に係る先読み制御装置を示すブロック図
【図１７】本発明の第４の実施形態に係る計算機システムを示すブロック図
【符号の説明】
【０１０１】
１０１，９０１，１００１…計算機システム；
１０２，９０２，１１０２…プロセッサ；
１０３，９０３，１００３…キャッシュ；
１０４，９０４，１００４…バスアクセス装置；
１０５，９０５，１００５…バス；
１０６，９０６，１００６…主記憶装置；
１０７，９０７，１００７…先読み制御装置；
９０８，１００８…アドレス変換装置；
９０９，１００９…アドレス変換情報キャッシュ
【図１】
2006018474.tif 000008
【図２】
2006018474.tif 000009
【図３】
2006018474.tif 000010
【図４】
2006018474.tif 000011
【図５】
2006018474.tif 000012
【図６】
2006018474.tif 000013
【図７】
2006018474.tif 000014
【図８】
2006018474.tif 000015
【図９】
2006018474.tif 000016
【図１０】
2006018474.tif 000017
【図１１】
2006018474.tif 000018
【図１２】
2006018474.tif 000019
【図１３】
2006018474.tif 000020
【図１４】
2006018474.tif 000021
【図１５】
2006018474.tif 000022
【図１６】
2006018474.tif 000023
【図１７】
2006018474.tif 000024