(57)【要約】【課題】ハードウェアによりキャッシュへのプリフェッチをおこなうプロセッサにおいて、ストリーム間のアドレス進行のスピードに応じてプリフェッチ要求先アドレスが可変であるようにし、プロセッサのメモリ性能を向上させる。【解決手段】各データストリームにおけるロード／ストア命令において発生したキャッシュミスの頻度、または、キャッシュラインアドレスの更新頻度を保持して、全データストリームおけるロード／ストア命令において発生したそれらの頻度の合計と各データストリームおけるロード／ストア命令において発生したそれらの頻度との比率を元にして、各データストリーム毎のプリフェッチオフセットを求めて、プリフェッチ要求アドレスを決定する。【選択図】        図１
2005242527.tif 000002
【特許請求の範囲】
【請求項１】
メモリに対して発行されたロード／ストア命令の要求先アドレスから、連続してアクセスされると予測されるデータストリームを検出する手段と、
前記データストリームにおけるロード／ストア命令の要求に対して、キャッシュへのプリフェッチ要求を前記メモリに発行する手段とを備えるプロセッサにおいて、
各データストリームのロード／ストア命令の要求先アドレスと、各データストリームにおけるロード／ストア命令において発生したキャッシュミスの頻度とを保持するデータストリーム管理テーブルを有し、
全データストリームおけるロード／ストア命令において発生したキャッシュミスの頻度に応じて、各データストリーム毎のプリフェッチ要求アドレスを決定することを特徴とするプロセッサ。
【請求項２】
全データストリームおけるロード／ストア命令において発生したキャッシュミスの頻度の合計と各データストリームおけるロード／ストア命令において発生したキャッシュミスの頻度との比率を基にして、各データストリーム毎のプリフェッチ要求アドレスを決定することを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記各データストリーム毎のプリフェッチ要求アドレスは、
所定の最大プリフェッチオフセットと、全データストリームおけるロード／ストア命令において発生したキャッシュミスの頻度の合計を分母とし各データストリームおけるロード／ストア命令において発生したキャッシュミスの頻度を分子とした比率とを乗じて、プリフェッチオフセットを求め、
前記データストリーム管理テーブルに保持されるロード／ストア命令の要求先アドレスと、前記プリフェッチオフセットとの和を取ることにより計算されることを特徴とする請求項２記載のプロセッサ。
【請求項４】
前記データストリーム管理テーブルに保持される各データストリームのロード／ストア命令の要求先アドレスが一定期間更新されないとき、そのデータストリームを無効とし、他のデータストリームの情報を前記データストリーム管理テーブルに保持するときに、前記無効とされたデータストリームのエントリを使用することを特徴とする請求項１記載のプロセッサ。
【請求項５】
各データストリームおけるロード／ストア命令において発生したキャッシュミスの頻度は、前記データストリームが検出されてから前記各データストリーム毎のプリフェッチ要求アドレスを決定するまでの期間、または、一定期間の計測により求められることを特徴とする請求項１記載のプロセッサ。
【請求項６】
前記各データストリームおけるロード／ストア命令において発生したキャッシュミスの頻度を、一定期間の計測により求めるときに、
前記頻度を書き込むレジスタと、前記頻度を読み出すレジスタとを設け、
前記頻度の書き込みレジスタへの頻度の書き込みと、前記頻度を読み出すレジスタからの頻度の読み込みとを所定の期間だけ、ずらしておこなうことを特徴とする請求項５記載のプロセッサ。
【請求項７】
前記データストリーム管理テーブルに保持される各データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度の各データストリーム間における相対比を保ったまま、それらの頻度を減少させる手段を有することを特徴とする請求項１記載のプロセッサ。
【請求項８】
メモリに対して発行されたロード／ストア命令の要求先アドレスから、連続してアクセスされると予測されるデータストリームを検出する手段と、
前記データストリームにおけるロード／ストア命令の要求に対して、キャッシュへのプリフェッチ要求をキャッシュライン単位に前記メモリに発行する手段とを備えるプロセッサにおいて、
各データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスと、各データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度とを保持するデータストリーム管理テーブルを有し、
全データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度の合計と、各データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度に応じて、各データストリーム毎のプリフェッチ要求アドレスを決定することを特徴とするプロセッサ。
【請求項９】
全データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度の合計と、各データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度の比率を基にして、各データストリーム毎のプリフェッチ要求アドレスを決定することを特徴とする請求項８記載のプロセッサ。
【請求項１０】
前記各データストリーム毎のプリフェッチ要求アドレスは、
所定の最大プリフェッチオフセットと、全データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度の合計を分母とし各データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度を分子とした比率とを乗じて、プリフェッチオフセットを求め、
前記データストリーム管理テーブルに保持されるロード／ストア命令の要求先アドレスと、前記プリフェッチオフセットとの和を取ることにより計算されることを特徴とする請求項９記載のプロセッサ。
【請求項１１】
前記データストリーム管理テーブルに保持される各データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが一定期間更新されないとき、そのデータストリームを無効とし、他のデータストリームの情報を前記データストリーム管理テーブルに保持するときに、前記無効とされたデータストリームのエントリを使用することを特徴とする請求項８記載のプロセッサ。
【請求項１２】
各データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度は、前記データストリームが検出されてから前記各データストリーム毎のプリフェッチ要求アドレスを決定するまでの期間、または、一定期間の計測により求められることを特徴とする請求項８のプロセッサ。
【請求項１３】
前記各データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度を、一定期間の計測により求めるときに、
前記頻度を書き込むレジスタと、前記頻度を読み出すレジスタとを設け、
前記頻度の書き込みレジスタへの頻度の書き込みと、前記頻度を読み出すレジスタからの頻度の読み込みとを所定の期間だけ、ずらしておこなうことを特徴とする請求項１２記載のプロセッサ。
【請求項１４】
前記データストリーム管理テーブルに保持される各データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度の各データストリーム間における相対比を保ったまま、それらの頻度を減少させる手段を有することを特徴とする請求項８記載のプロセッサ。
【請求項１５】
メモリに対して発行されたロード／ストア命令の要求先アドレスから、連続してアクセスされると予測されるデータストリームを検出する手段と、
前記データストリームにおけるロード／ストア命令の要求に対して、キャッシュへのプリフェッチ要求を前記メモリに発行する手段と、
複数のデータストリームに対して、前記データストリームのロード／ストア命令の要求先アドレスと、前記データストリームにおけるロード／ストア命令において発生したキャッシュミスの頻度とを保持するデータストリーム管理テーブルとを備えるプロセッサにおいて、
メモリに対してロード／ストア命令を発行するステップと、
前記メモリに対して発行されたロード／ストア命令の要求先アドレスから、連続してアクセスされると予測されるデータストリームを検出するステップと、
前記データストリームのロード／ストア命令の要求先アドレスを前記データストリーム管理テーブルに記録するステップと、
前記データストリームにおけるロード／ストア命令において発生したキャッシュミスの頻度を前記データストリーム管理テーブルに記録するステップと、
前記データストリーム管理手段に保持された全データストリームのデータストリームにおけるロード／ストア命令において発生したキャッシュミスの頻度を合計するステップと、
所定の最大プリフェッチオフセットと、前記全データストリームおけるロード／ストア命令において発生したキャッシュミスの頻度の合計を分母とし、前記各データストリームおけるロード／ストア命令において発生したキャッシュミスの頻度を分子とした比率とを乗じて、プリフェッチオフセットを求めるステップと、
前記データストリームにおけるロード／ストア命令の要求に対して、キャッシュへのプリフェッチ要求をおこなうときのプリフェッチアドレスを、前記データストリーム管理テーブルに保持されるそのデータストリームにおける前記ロード／ストア命令の要求先アドレスと、そのデータストリームにおける前記プリフェッチオフセットとの和を取ることにより求めるステップと、
前記データストリームにおけるロード／ストア命令の要求に対して、求められた前記データストリームのプリフェッチアドレスに基づく前記キャッシュへのプリフェッチ要求を前記メモリに発行するステップと有することを特徴とするプリフェッチ制御方法。
【請求項１６】
メモリに対して発行されたロード／ストア命令の要求先アドレスから、連続してアクセスされると予測されるデータストリームを検出する手段と、
前記データストリームにおけるロード／ストア命令の要求に対して、キャッシュへのプリフェッチ要求をキャッシュライン単位に前記メモリに発行する手段と、
複数のデータストリームに対して、前記データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスと、そのラインアドレスが更新された頻度とを保持するデータストリーム管理テーブルとを備えるプロセッサにおいて、
メモリに対してロード／ストア命令を発行するステップと、
前記メモリに対して発行されたロード／ストア命令の要求先アドレスから、連続してアクセスされると予測されるデータストリームを検出するステップと、
前記データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスを前記データストリーム管理テーブルに記録するステップと、
前記データストリームにおいて、そのデータストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度を前記データストリーム管理テーブルに記録するステップと、
前記データストリーム管理手段に保持された全データストリームの各データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度を合計するステップと、
所定の最大プリフェッチオフセットと、各データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度の全データストリームにおける合計を分母とし、各データストリームのロード／ストア命令の要求先アドレスに関するラインアドレスが更新された頻度を分子とした比率とを乗じて、プリフェッチオフセットを求めるステップと、
前記データストリームにおけるロード／ストア命令の要求に対して、キャッシュへのプリフェッチ要求をおこなうときのプリフェッチアドレスを、前記データストリーム管理テーブルに保持されるそのデータストリームにおける前記ロード／ストア命令の要求先アドレスに関するラインアドレスと、そのデータストリームにおける前記プリフェッチオフセットとの和を取ることにより求めるステップと、
前記データストリームにおけるロード／ストア命令の要求に対して、求められた前記データストリームのプリフェッチアドレスに基づく前記キャッシュへのプリフェッチ要求を前記メモリに発行するステップと有することを特徴とするプリフェッチ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ、および、プリフェッチ制御方法に係り、メモリからキャッシュへのプリフェッチ機能を有するプログラムであって、特に、ストライド・アクセスを含む複数データストリームを持つメモリアクセスに用いて好適なプロセッサ、および、プリフェッチ制御方法に関する。
【背景技術】
【０００２】
コンピュータシステムにおいて、プロセッサ処理性能に比較して、メモリ処理性能の向上率が低いため、年々その処理性能の乖離が著しくなっている。そのため、プロセッサ内にキャッシュメモリを実装し、メモリ処理性能の遅さを隠蔽するのが普通となっている。しかし、キャッシュメモリはデータの時間的・空間的局所性を利用するため、局所性の無いメモリアクセスパターンでは、キャッシュメモリが有効に働かないことがあり、処理性能が極端に悪化する。このような現象は、特に大規模科学技術計算に多く見られるように、配列データを連続的にアクセスし、前の段階で計算に用いたデータの再利用性が低いときに発生する。これに対する対策方法としては、コンパイラ・アセンブラなどにより、メモリからキャッシュメモリへと事前にデータを転送させるプリフェッチ命令を挿入するコードを生成することで性能低下を防いできた。しかしながら、データ配列をリストアクセスする場合や、オブジェクト指向言語で書かれたプログラムでは、メモリアクセスパターンが連続アクセスであったとしても、プリフェッチ命令を挿入したコードを生成できない場合が多い。一方、以下の特許文献１に示されるようなハードウェアでプリフェッチをおこなう方式では、連続的なアドレスに対するアクセス・ストリームと不連続なアドレスに対するアクセス・ストリームが混在した場合に、全ストリームに一様にプリフェッチ要求を発行してしまうため、不連続なアクセス・ストリームに対しては、プリフェッチ発行対象のデータがキャッシュに到達する前にロード要求が発行されてしまい、メモリからのデータ転送のレイテンシを隠蔽し切れず有効にプリフェッチが機能しない問題が起こる可能性がある。この問題に対する解決としては、特許文献１のように、十分先のアドレスに対してプリフェッチ要求を出すことや、複数のプリフェッチ命令一度に出すことが考えられるが、これは無尽蔵ではないメモリバンド幅を圧迫し、また、過剰に出してしまった多量のプリフェッチがループ終了時に残ってしまう問題（オーバーラン）を引き起こしてしまう。また、以下の特許文献２のように、前回アクセスしたアドレスと今回アクセスしたアドレスとの差分から次のアドレスを予測しプリフェッチ要求を出すことにより、不連続アドレスに対するプリフェッチの有効性を高める技術があるが、全てのデータアクセスストリームに対してアドレス履歴を保存する領域を確保することはチップ面積の増大を招く問題がある。
【０００３】
【特許文献１】特開平０９−１４６８３５号公報
【０００４】
【特許文献２】特開平０６−０２８１８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
キャッシュメモリを設けたプロセッサでは、キャッシュメモリの短いアクセスレイテンシを想定して、命令スケジューリングをおこなうため、キャッシュミスを起こすと処理性能が大幅に低下する。これに対し、多くのプロセッサは、ハードウェアまたはソフトウェアによってプリフェッチ処理を実現し、メモリのアクセスレイテンシを隠蔽するのに十分な時間分前もってデータをキャッシュに転送しておくのが普通である。ソフトウェアによるプリフェッチでは、コンパイラ・アセンブラや人手でによりコード中に効率よくプリフェッチ命令を埋め込むことが可能であるが、命令数の増加によるオーバーヘッドが問題となる。一方のハードウェア・プリフェッチでは通常、複数のデータストリームに対しプリフェッチ要求を発行できる仕組みをプロセッサ内部で実現するが、例えば連続でないメモリアドレスに対するアクセス（例えば、配列においてインデックスが２づつ増加していくA(0),A(4),A(8),A(12),…のようなストライド・アクセス）ストリームでは、ループのイタレーション（iteration, 反復段階）が進むに従って連続アクセス・ストリームに比べ速いスピードでロード要求先アドレスが増加（または減少）することから、連続アクセスのストリームと同じだけ先のアドレスにプリフェッチ要求を出してしまう場合には不連続アクセス・ストリーム側でレイテンシが隠し切れないという問題が起こる。この問題に対して、全てのストリームに十分な時間分前もってプリフェッチ要求を出すことも考えられるが、特にストリーム数が多い場合においてはメモリバンド幅をプリフェッチによる転送データで食いつぶしてしまうこと、また、相当サイズのキャッシュが要求されること、ループ終了後にも余剰のプリフェッチ要求により、次のループが始まり新しいストリームが生成されているにも拘らず前回ループに関するデータがメモリから転送されてしまう（オーバーラン・プリフェッチ）問題を引き起こしてしまうため、現実的ではない。
【０００６】
本発明は、上記問題点を解決するためになされたもので、その目的は、プリフェッチ機能を有するプロセッサにおいて、命令数増大によるオーバーヘッドがないハードウェアによるプリフェッチにより、データストリーム間の要求先アドレス増減のスピードに応じてプリフェッチ要求先アドレスを可変にして、メモリ性能の優れたプロセッサを提供することにある。
【課題を解決するための手段】
【０００７】
本発明のハードウェアプリフェッチをおこなうプロセッサは、連続アクセスが続くであろうというデータストリームを検出すると、そのデータストリームが現在アクセスしているアドレスを保持するとともに、そのデータストリームにおいて起こったキャッシュミスの頻度、または、キャッシュラインが更新された頻度をデータストリーム管理テーブルに保持する。そして、現在データストリーム管理テーブルに保持されている全てのデータストリームの頻度情報を元に、それぞれのストリームに対し最適なプリフェッチ要求先アドレスをハードウェアが自動的に設定し、プリフェッチ要求を発行することにある。すなわち、キャッシュミスの頻度、または、キャッシュラインが更新された頻度の大小に応じて、プリフェッチオフセットの増減をおこなう。そして、アクセスしているメモリアドレスに対してそのプリフェッチオフセットを加算したアドレスをプリフェッチ要求先アドレスとし、メモリからキャッシュメモリにプリフェッチ要求をおこなう。
【発明の効果】
【０００８】
本発明によれば、プリフェッチ機能を有するプロセッサにおいて、命令数増大によるオーバーヘッドがないハードウェアによるプリフェッチにより、データストリーム間の要求先アドレス増減のスピードに応じてプリフェッチ要求先アドレスを可変にして、メモリ性能の優れたプロセッサを提供することができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明に係る各実施形態を、図１ないし図１３を用いて説明する。
【００１０】
〔実施形態１〕
以下、本発明に係る第一の実施形態を、図１ないし図６を用いて説明する。
先ず、図１を用いて本発明の第一の実施形態に係るプロセッサを用いたシステム構成とその動作について説明する。
図１は、本発明の第一の実施形態に係るプロセッサを用いたシステム構成図である。
【００１１】
本実施形態のコンピュータシステム３００は、プロセッサ３１０とメモリ２４０を持つ。
【００１２】
プロセッサ３１０は、ロード／ストア・ユニット１０と、キャッシュメモリ（図と以下の説明では、単に「キャッシュ」ともいう）１５０と、データストリーム管理テーブル３２０とを有する。データストリーム管理テーブル３２０は、データストリームに関する情報を保持し、プリフェッチの制御に用いるためのテーブルである。キャッシュメモリ１５０は、本実施形態では、プロセッサの内部に描いたが、プロセッサの外部に設けられるキャッシュに対しても本発明は有効である。
【００１３】
本実施形態における、キャッシュメモリ１５０はライン単位で管理されているものとする。ラインとは、複数ワード長の集合であり、メモリからキャッシュへのデータ転送はこのライン単位でおこなわれ、ロード／ストア・ユニットとキャッシュ間のアドレス指定はメモリアドレスの上位の一部のビットからなるキャッシュラインアドレスによりなされる。
【００１４】
データストリーム管理テーブル３２０は、ハードウェア・プリフェッチの発行対象となっているデータストリームにおける情報を保持するためのエントリを複数持っている。図１と以下の説明では、データストリームにおける情報を保持するためのエントリは二つとしたが、多いほうが性能向上の観点からは望ましい。
【００１５】
データストリーム管理テーブル３２０のエントリ５３０は、レジスタ５０、４００、４１０、９０を持ち、エントリ５３５は、レジスタ５５、４０５、４１５、９５を持つ。
【００１６】
レジスタ５０、５５は、保持するデータストリームの最新のロード／ストア要求先キャッシュラインアドレスの値を保持するレジスタであり、ロード／ストア要求が新しいキャッシュラインアドレスを有するメモリエリアにアクセスするたびに更新される。
【００１７】
レジスタ４００、４０５は、保持するデータストリームのアドレスの変化がプラスの方向かマイナスの方向のどちらに進行しているかを符号として保持する。すなわち、これは、そのデータストリームに対してロード／ストア要求先が発行されるアドレスの方向でもある。
【００１８】
レジスタ４１０、４１５は、各保持データが現在有効なデータストリームのものであるかどうかを保持する。有効であると判断される間は、このデータストリームに関する情報は、破棄されることはない。有効でないと判断されたエントリは、破棄され、新しいデータストリームの情報を格納するために使われる。エントリが有効性でないとの判断は、一定期間更新されていないときになされ、これらのレジスタ４１０、４１５に、初期化機構５５０がおこなう。この詳細な処理については、後に説明する。
【００１９】
レジスタ９０、９５は、各データストリームにおいて起きたキャッシュミスの回数を保持する。
【００２０】
以下では、本実施形態のプロセッサ３１０の動作について説明する。
【００２１】
先ず、レジスタ５０、５５にキャッシュラインアドレスを格納する処理について説明する。
【００２２】
プロセッサ３１０において、ロード／ストア・ユニット１０からキャッシュ１５０に対してロード要求がデータ線２０により発行されると、それと同時にそのロード要求の要求先キャッシュラインアドレスがデータ線３０によりデータストリーム検出のための制御機構６０に伝えられる。
【００２３】
なお、以下の説明では、ロード要求の例について述べるが、ストア要求についても同様である。
【００２４】
制御機構６０は、その要求先キャッシュラインアドレスを、データ線３５０または３６０により伝えられるデータストリーム管理テーブル３２０の保持するデータストリームの前回要求先キャッシュラインアドレスと比較する。そして、ロード要求が同一のデータストリームに対してなされたものであると認識すると、データ線３０により伝えられるロード要求先キャッシュラインアドレスをそのデータストリームの次のロード要求先キャッシュラインアドレスとして更新するための動作をする。すなわち、その要求先キャッシュラインアドレスアドレスが保持している二つのデータストリームの内、いずれかのデータストリームに属するかをデータ線７５によりエントリ番号として選択器４３０に伝える。
【００２５】
また、制御機構６０は、データストリーム検出の機能を有しており、データ線３０により伝えられたロード要求先キャッシュラインアドレスが新規のデータストリームにおけるロード要求先キャッシュラインアドレスであると認識すると、新規のデータストリームであることをデータ線７５に伝える。例えば、データストリームの検出は、ロード／ストア要求が、連続して所定のキャッシュラインに発行されたときにおこなわれる。
【００２６】
さらに、制御機構６０は、データストリーム検出時にそのデータストリームの進行方向がプラス方向かマイナス方向か、すなわち、データストリームにおいてアクセスされるアドレスが増加するか減少するかを、前回アドレスと新規要求先アドレスの差分をとることで判断し、データ線４５０または４５５により、レジスタ４００または４０５に、その進行方向を記録する
選択器４３０は、データ線７５により伝えられるエントリ番号のエントリが保持するデータストリームのキャッシュラインアドレスを新規アドレスで置き換えるため、レジスタ５０または５５にデータ線６３０または６３５によりデータ線３０より伝えられる新規アドレスを伝える。また、データ線７５により新規のデータストリームの検出が伝えられると、エントリ５３０とエントリ５３５の有効ビットをデータ線６００および６０５により確認し、有効ビットが０（無効）のエントリのキャッシュラインアドレスをデータ線３０の新規アドレスに置き換えるため、その新規アドレスをデータ線６３０または６３５に伝える。エントリ５３０とエントリ５３５の有効ビットがいずれも０であれば、データストリームはエントリ５３０に登録することにする。エントリ５３０とエントリ５３５の有効ビットがどちらも１（有効）であれば、データストリームの登録は破棄される。すなわち、いずれのエントリが使用中のときには、新しいデータストリームに関する情報は登録されない。本実施形態のデータストリーム管理テーブルの更新アルゴリズムは、このように、有効ビットを書き換えることになされるが、他のアルゴリズム、例えば、ＬＲＵ（Least Recently Used）アルゴリズムなどによってもよい。
【００２７】
次に、ロード要求がキャッシュミスを引き起こした場合の動作について説明する。
【００２８】
データ線２０により伝えられるロード要求がキャッシュミスを引き起こした場合には、データ線３３０により選択器４６０に、そのキャッシュミスを引き起こしたキャッシュラインアドレスが伝えられる。選択器４６０は、データ線７５により伝えられるエントリ番号に対応するデータストリームにおける、データ線４７０またはデータ線４７５より伝えられるキャッシュミス回数をデータ線４８０を用いて加算器４９０に伝える。
【００２９】
加算器４９０は、データ線４８０より伝えられたキャッシュミス回数に対し１を加えたものを新規キャッシュミス回数としてデータ線５００を用いて選択器５１０に伝える。選択器５１０はデータ線７５により伝えられるエントリ番号を基にデータ線５２０またはデータ線５２５のいずれかを用い、キャッシュミス回数９０または９５を書き換える。
【００３０】
次に、ハードウェア・プリフェッチの要求先アドレスを決定する場合の動作を説明する。
【００３１】
データストリーム管理テーブル３２０が保持する各ストリームのキャッシュミス回数９０、９５は、それぞれデータ線４７０、４７５によりＡＮＤ回路５８０、５８５に伝えられ、ＡＮＤ回路５８０、５８５は、伝えられた回数とデータ線６００、６０５により伝えられる有効ビットを回数情報のビット幅に拡張したものとのＡＮＤをそれぞれとり、出力をデータ線２２０、２２５に伝える。これにより、有効ビットが０（無効）のときには、キャッシュミス回数は常に０にクリアされる。
【００３２】
加算器１００は、データ線２２０、２２５より伝えられるキャッシュミス回数の和をデータ線２１０に伝える。除算器１１０、１１５は、それぞれデータ線２２０、２２５より伝えられるキャッシュミス回数をそれぞれ被除数とし、データ線２１０より伝えられる全ストリームのキャッシュミス回数の和を除数２１０とする頻度比率を計算する。乗算器１２０、１２５は、それぞれデータ線６１０、６１５より伝えられる各ストリームにおける頻度比率と、それぞれデータ線６２０、６２５により伝えられる各ストリームの進行方向を表す符号と、１ストリーム時の最大プリフェッチオフセット量レジスタ８００から持ってきた最大プリフェッチオフセット量とを乗じ、小数点以下は切り捨てた上で、その結果をそれぞれデータ線１６０、１６５に伝える。
【００３３】
最大プリフェッチオフセット量レジスタ８００は、ＲＯＭなどの書き換え不可能なメモリでもよいし、書き換え可能なメモリでもよい。最大プリフェッチオフセット量は、プロセッサやメモリの性能、また、実行させるプログラムにより最適な値を選択することができる。
【００３４】
加算器１３０、１３５は、それぞれデータ線１６０、１６５より伝えられる入力を各データストリームにおけるプリフェッチオフセット量として、データ線３５０、３６０より伝えられるキャッシュラインアドレスに対して加え、それぞれをデータ線２３０、２３５に伝える。キャッシュ１５０はデータ線２３０、２３５より伝えられるキャッシュラインアドレスを各データストリームに対するプリフェッチ要求の要求先キャッシュラインアドレスとし、そのプリフェッチ要求先キャッシュラインアドレスが更新されるのを契機に、データ線２６０によりハードウェア・プリフェッチを発行する。キャッシュ１５０は、メモリ２４０から要求データをデータ線１４０により受け取り、データ線２００によりロード／ストア・ユニット１０に伝える。
【００３５】
次に、図２を用いて制御機構６０の詳細な構成と動作について説明する。
図２は、本発明の第一の実施形態に係る制御機構６０の構成図である。
【００３６】
制御機構６０において、データ線３０より伝えられるロード要求先の新規キャッシュラインアドレスは、減算器８２０、８３０においてそれぞれデータ線３５０、３６０より伝えられる保持されているデータストリームの前回の要求先キャッシュラインアドレスとの差分が計算され、それぞれデータ線８４０、８５０にその結果を伝える。比較器８６０は、データ線８４０または８５０から伝えられる値がプラス１かマイナス１であることを確認すると、プラスかマイナスかをデータ線８００に伝え、データ線８４０とデータ線８５０のどちらの結果がプラスまたはマイナス１であったのかをデータ線８１０に伝える。
【００３７】
このような制御機構６０の動作は、キャッシュラインアドレスの変化がプラス・マイナス１のときには、同一のデータストリームが続いているものとして処理するためのものである。
【００３８】
また、制御機構６０はデータストリーム検出機構８７０を有し、データ線３０より伝えられるキャッシュラインアドレスが新規のデータストリームであることを検出すると、それをデータ線８８０に伝える。
【００３９】
本発明はデータストリーム検出の方法には依存しないが、本実施形態においては特許文献１に代表されるように、連続するキャッシュラインにアクセスがあった場合にそれをストリームとして検出するものとする。制御機構６０は、データ線８１０とデータ線８８０をデータ線７５にまとめて出力する。選択器８９０は、データ線８００により伝えられるプラスかマイナスかを示す符号データでデータ線８１０が示すエントリの符号レジスタを書き換えるため、データ線４５０または４５５に符号データを伝える。
【００４０】
次に、図３を用いて初期化機構５５０の詳細な構成と動作について説明する。
【００４１】
図３は、本発明の第一の実施形態に係る初期化機構５５０の構成図である。
【００４２】
初期化機構は、新規のデータストリームが検出されたときと、一定時間保持しているデータストリームにおけるロード／ストア要求先キャッシュラインアドレスの更新がないときに、データストリーム管理テーブル３０を初期化する機能を持つ。
【００４３】
初期化機構５５０において、データ線７５から比較器１２６０に新規データストリームの検出が伝えられると、比較器１２６０はデータ線６００またはデータ線６０５よりエントリ５３０またはエントリ５３５で有効ビットが０であるエントリのエントリ番号をデータ線１２８０に伝え、エントリ５３０とエントリ５３５のどちらの有効ビットも０である場合は、対象エントリがないことをデータ線１２８０に伝え、エントリ５３０とエントリ５３５のどちらの有効ビットも１である場合はエントリ５３０のエントリ番号をデータ線１２８０に伝える。
【００４４】
初期化機構５５０において、カウンタ１２４０はクロック・サイクルをカウントしており、実装により既定のサイクル数をカウントしたら、それを比較器１２３０に伝えると共に０に戻って、再びカウントを始める。比較器１２３０は、データ線７５の出力から、エントリ５３０またはエントリ５３５のデータストリームにおけるロード／ストア要求先キャッシュラインアドレスの更新が伝えられると、エントリ５３０の場合はデータ線１３００によりレジスタ１２２０を、エントリ５３５の場合はデータ線１３０５によりレジスタ１２２５を、それぞれ１にセットする。また比較器１２３０はカウンタから既定サイクルの経過を伝えられると、データ線１２９０および１２９５からの入力を調べ、入力値が０であるエントリ番号をデータ線１２７０に伝えると共に、レジスタ１２２０および１２２５をデータ線１３００および１３０５により０にリセットする。
【００４５】
選択器１２５０は、データ線１２７０および１２８０から伝えられるエントリ番号を基に、エントリ５３０の場合はデータ線１２００により、また、エントリ５３５の場合はデータ線１２０５により、各エントリの有効ビットとキャッシュミス回数を０にリセットする。
【００４６】
これにより、一定期間、データストリーム管理テーブル３０のレジスタ５０、５５に格納されたキャッシュラインアドレスの変化がないエントリのレジスタ４１０、４１５の有効ビットに０が格納されて、そのエントリは、他のデータストリームの情報を格納するために使用できるようになる。
【００４７】
次に、図４ないし図６を用いて本実施形態の効果を説明する。
図４は、本発明の第一の実施形態に係るプリフェッチ制御のメモリアクセスの様子を示す図である。
図５は、従来技術に係るプリフェッチ制御のメモリアクセスの様子を示す図である。
図６は、図４におけるメモリアクセスの場合の各段階のキャッシュミス回数とプリフェッチオフセットを示す表である。
【００４８】
ここで、図２は、キャッシュミス回数に応じてプリフェッチオフセットが変化し、ストリームに応じて最適なタイミングでプリフェッチが発行される様子を示している。また、比較のため、図６は複数のデータストリームに対し一様のプリフェッチオフセットでプリフェッチ要求を出した場合の様子を示している。この図６の場合には、プリフェッチオフセット量は、固定の３キャッシュライン分である。
【００４９】
さて、モデルとして、スカラー変数ｉによるループで、Ａ（ｉ）、Ｂ（ｉ＊４）の２つのストリームが存在するループを考える。二つの横軸は配列Ａ，Ｂのメモリ空間を表しており、短い目盛りが１ワード長、長い目盛りが各イタレーションにおいてアクセスするメモリアドレスである。目盛りの下の数値はｉの値を表す。×印はそのイタレーションでキャッシュミスを起こしたことを示す。矢印はプリフェッチ要求を表しており、矢印の起点はプリフェッチを発行するタイミングを表し、矢印の終点はプリフェッチ要求先のキャッシュラインの先頭を指す。すなわち、矢印の起点のメモリアドレスのところに、ロード／ストア要求が発行されたときに、矢印の終点の部分に、プリフェッチ要求がなされる。そして、矢印の長さがプリフェッチオフセットである。なお、点線の矢印は、既に、そのキャッシュラインにプリフェッチ要求がなされているので、実際には、プリフェッチ要求がおこなわれないことを意味する。
【００５０】
ここで、本実施形態のシステムのメモリにおいては、メモリ２４０からキャッシュ１５０への転送におけるレイテンシは、本ループが全てのロード要求でキャッシュヒットし４度回る時間、すなわち、ｉが４増える時間であるとする。
【００５１】
また、本実施形態のシステムの既定の１ストリーム時の最大プリフェッチオフセット量は６であるとし、１キャッシュラインは４ワード分であるとする。
【００５２】
さて、図５に示されるように、Ａ（０）をアクセスするときに、キャッシュミスが発生する。次のＡ（１）〜Ａ（３）では、キャッシュにデータが持ってこられるためキャッシュのデータがヒットする。そして、Ａ（４）でキャッシュミスが発生する。このときに、連続したキャッシュラインアドレスにおいてキャッシュミスが発生したために、データストリームを検出したことになり、３キャッシュライン分のプリフェッチオフセットにより、プリフェッチ要求を出す。同様にして、Ａ（８）、Ａ（１２）でキャッシュミスが発生するが、それ以降のところでは、次々とプリフェッチ要求が出されて、キャッシュにデータがプリフェッチされているため、キャッシュミスをおこすことはない。
【００５３】
しかしながら、Ｂ（ｉ＊４）の場合には、ロード／ストア要求でアクセスするメモリの進行が速いためプリフェッチするエリアが含まれないという問題が発生する。
【００５４】
この場合、Ｂ（０）をアクセスするときに、キャッシュミスが発生する。そして、Ｂ（４）（ｉ＝１のとき）でキャッシュミスが発生する。このときに、連続したキャッシュラインアドレスにおいてキャッシュミスが発生したために、データストリームを検出したことになり、３キャッシュライン分のプリフェッチオフセットにより、プリフェッチ要求を出す。
【００５５】
ここまでは、Ａの場合と同様である。そして、Ｂ（８）（ｉ＝２のとき）、Ｂ（１２）（ｉ＝３のとき）も、キャッシュミスが発生する。また、Ｂ（１２）（ｉ＝４のとき）も、メモリレイテンシ（ｉが４増える時間）があるために、プリフェッチが間に合わずキャッシュミスが発生する。同様に、全てのＢのアクセスにおいてキャッシュミスが発生することになる。このようになる原因は、Ｂの場合に、プリフェッチオフセットが小さすぎることによるものである。
【００５６】
そこで、本実施形態は、キャッシュミスの回数に応じて、プリフェッチオフセットを可変にするものである。
【００５７】
プリフェッチオフセットは、以下の（式１）に従う。
【００５８】
ofｋ  = cmｋ/Σcmｋ      …  （式１）
ofｋ：データストリームｋのプリフェッチオフセット
cmｋ：データストリームｋのヒットミス回数
Σ：全てのデータストリームｋについて和をとることを表す
図５、図６に示されるように、ｉ＝１のとき、配列Ｂに対してのプリフェッチオフセットは、６×（１／１）で計算される。また、ｉ＝４のとき、Ａのキャッシュミス回数は、１で、Ｂのキャッシュミス回数は、４であり、配列Ｂに対してのプリフェッチオフセットは、６×（４／（１＋４））で計算される。すなわち、４キャッシュライン分のプリフェッチオフセットによりプリフェッチ要求がなされる。
【００５９】
このようにすると、Ｂのプリフェッチオフセットは、十分大きくなり、ｉ＝８以降は新たなキャッシュミスは発生せず、全てのストリームに対してレイテンシを隠蔽できるだけ手前のタイミングでプリフェッチ要求を発行できるようになることが、図５より理解できる。なお、ｉ＝８以降は、Ａ、Ｂともキャッシュミス回数に変更がないため、ループ終了までこのプリフェッチオフセットが維持されることになる。
【００６０】
以上のように、本実施形態による処理系によれば複数のストリームのそれぞれに対し最適なタイミングでプリフェッチを発行することが可能であることから、全てのデータストリームにおいてメモリ・レイテンシを隠蔽することが可能である。また、本実施形態ではロード要求の例について述べたが、ストア要求についても上記の手法で同様の効果が期待できる。
【００６１】
〔実施形態２〕
以下、本発明に係る第二の実施形態を、図７ないし図１０を用いて説明する。
【００６２】
第一の実施形態では、データストリームにおけるキャッシュミスの回数に応じて、プリフェッチオフセットを調整する技術を説明した。本実施形態は、データストリームにおけるロード／ストア要求のキャッシュラインアドレスの更新回数に応じてプリフェッチオフセットを調整するものである。基本的な考え方は、同じなので、第一の実施形態と比べて相違点を中心に説明する。また、本実施形態でも、ロード要求の場合について説明する。
【００６３】
先ず、図７を用いて本発明の第二の実施形態に係るプロセッサを用いたシステム構成とその動作について説明する。
図７は、本発明の第二の実施形態に係るプロセッサを用いたシステム構成図である。
【００６４】
本実施形態のプロセッサ３１０も、データストリーム管理テーブル３２０を有する。データストリーム管理テーブル３２０は、データストリームに関する情報を保持し、プリフェッチの制御に用いるためのテーブルであることは、第一の実施形態と同様である。
【００６５】
第一の実施形態と異なっているのは、レジスタ９０、９５が各データストリームのロード要求先キャッシュラインアドレスが更新された回数を保持することである。
【００６６】
制御機構６０が、データストリームのキャッシュラインアドレスを、レジスタ５０、５５に書き込む動作は、第一の実施形態と同様である。また、レジスタ４００、４０５のデータストリームのアクセスされるアドレスの進行方向を書き込む動作についても第一の実施形態と同様である。
【００６７】
また、初期化機構５５０が、そのデータストリームの有効性を、レジスタ９０、９５に書き込むことも第一の実施形態と同様である。さらに、新しいエントリの場合には、レジスタ９０、９５が０にリセットされることも同様である。
【００６８】
異なっているのは、データ線３０により伝えられるロード要求先キャッシュラインアドレスが更新されると、制御機構６０は、それをデータ線３３０により選択器４６０に伝えることである。この制御機構６０の動作は、後に詳細に説明する。
【００６９】
本実施形態の選択器４６０は、データ線７５により伝えられるエントリ番号に対応するデータ線４７０またはデータ線４７５より伝えられるキャッシュライン更新回数を、データ線４８０を用いて加算器４９０に伝える。加算器４９０は、データ線４８０より伝えられたキャッシュライン更新回数に対し１を加えたものを新規キャッシュライン更新回数として、データ線５００を用いて選択器５１０に伝える。選択器５１０は、データ線７５により伝えられるエントリ番号を基にデータ線５２０またはデータ線５２５のどちらかを用い、キャッシュライン更新回数９０または９５を書き換える
次に、本実施形態のハードウェア・プリフェッチの要求先アドレスを決定する場合の動作を説明する。
【００７０】
データストリーム管理テーブル３２０が保持する各ストリームのキャッシュライン更新回数９０、９５は、それぞれデータ線４７０、４７５によりＡＮＤ回路５８０、５８５に伝えられ、ＡＮＤ回路５８０、５８５は、伝えられた回数とデータ線６００、６０５により伝えられる有効ビットを回数情報のビット幅に拡張したものとのＡＮＤをそれぞれとり、出力をデータ線２２０、２２５に伝える。これにより、有効ビットが０（無効）のときには、キャッシュライン更新回数は常に０にクリアされる。
【００７１】
加算器１００は、データ線２２０、２２５より伝えられるキャッシュライン更新回数の和をデータ線２１０に伝える。除算器１１０、１１５は、それぞれデータ線２２０、２２５より伝えられるキャッシュライン更新回数をそれぞれ被除数とし、データ線２１０より伝えられる全ストリームのキャッシュライン更新回数の和を除数２１０とする頻度比率を計算する。乗算器１２０、１２５は、それぞれデータ線６１０、６１５より伝えられる各ストリームにおける頻度比率と、それぞれデータ線６２０、６２５により伝えられる各ストリームの進行方向を表す符号と、１ストリーム時の最大プリフェッチオフセット量レジスタ８００から持ってきた最大プリフェッチオフセット量とを乗じ、小数点以下は切り捨てた上で、その結果をそれぞれデータ線１６０、１６５に伝える。
【００７２】
以下、このプリフェッチオフセット量により、キャッシュ１５０がメモリ２４０からプリフェッチをおこなう動作は、第一の実施形態と同様である。
【００７３】
次に、図８を用いて制御機構６０の詳細な構成と動作について説明する。
図８は、本発明の第二の実施形態に係る制御機構６０の構成図である。
【００７４】
本実施形態の制御機構６０が、第一の実施形態と異なるところは、キャッシュラインの更新があったことをデータ線３３０に伝えることである。これにより、選択器４６０が、データストリーム管理テーブルのキャッシュラインの更新回数を増加させる処理をおこなう。
【００７５】
その他の機能と動作、データストリーム検出機構についても第一の実施形態と同様である。
【００７６】
次に、図９および図１０を用いて本実施形態の効果を説明する。
図９は、本発明の第二の実施形態に係るプリフェッチ制御のメモリアクセスの様子を示す図である。
図１０は、図９におけるメモリアクセスの場合の各段階のキャッシュミス回数とプリフェッチオフセットを示す表である。
【００７７】
配列Ａ、Ｂを使ったモデル、メモリレイテンシ、最大プリフェッチオフセット量、および、図９における表記法などを第一の実施形態と同様に設定する。
【００７８】
そこで、本実施形態は、キャッシュラインアドレスの更新回数に応じて、プリフェッチオフセットを可変にするものである。
【００７９】
プリフェッチオフセットは、以下の（式２）に従う。
【００８０】
ofｋ  = lauｋ/Σlauｋ      …  （式２）
ofｋ：データストリームｋのプリフェッチオフセット
lauｋ：データストリームｋのキャッシュラインアドレスの更新回数
Σ：全てのデータストリームｋについて和をとることを表す
図９、図１０に示されるように、ｉ＝１のとき、配列Ｂに対してのプリフェッチオフセットは、６×（１／１）で計算される。また、ｉ＝４のとき、Ａのキャッシュミス回数は、１で、Ｂのキャッシュミス回数は、４であり、配列Ｂに対してのプリフェッチオフセットは、６×（４／（１＋４））で計算される。すなわち、４キャッシュライン分のプリフェッチオフセットによりプリフェッチ要求がなされる。
【００８１】
このようにすると、Ｂのプリフェッチオフセットは、十分大きくなり、ｉ＝１６以降は新たなキャッシュミスは発生せず、全てのストリームに対してレイテンシを隠蔽できるだけ手前のタイミングでプリフェッチ要求を発行できるようになることが、図９より理解できる。このように、キャッシュラインアドレスの更新回数ににより、プリフェッチアドレスを調整する手法によっても、キャッシュミスのないメモリアクセスの性能を向上させたプロセッサを提供することができる。
【００８２】
〔実施形態３〕
次に、本発明に係る第三の実施形態を、図１１を用いて説明する。
図１１は、本発明の第三の実施形態に係るデータストリーム管理テーブルの一部の構成を示した図である。
【００８３】
本実施形態で説明するのは、レジスタ９０、９５の最上位ビットが立った場合に１ビット下位にシフトすることにより、極力頻度比率を保ったまま情報量を減じることを可能にする機構である。
【００８４】
第一の実施形態に、この第三の実施形態を加えれば、式１、式２より求められるプリフェッチオフセットが同じであり、しかも、レジスタ９０、９５の容量があふれるをおこすことがない。特に、第二の実施形態のようにキャッシュラインの更新回数を頻度情報とする場合は、図７におけるライン更新保持のためのレジスタ９０、９５に十分な容量を用意できない場合が考えられるため効果的である。
【００８５】
図１１に示される最上位ビット１１００が１になると、それがデータ線１１２０によりシフト回路１１３０に、またデータ線１１８０によりシフト回路１１３５に伝わる。同様に、最上位ビット１１０５が１になると、それがデータ線１１２５によりシフト回路１１３０に、またデータ線１１８５によりシフト回路１１３５に伝わる。シフト回路１１３０は、最上位ビット１１００または１１０５が１になったことをデータ線１１２０またはデータ線１１２５により伝えられると、データ線１１４０から伝えられる頻度情報５３０を下位に１ビットシフトしたものをデータ線１１５０に伝え、レジスタ５３０の保持する頻度情報を更新する。同様に、シフト回路１１３５は最上位ビット１１００または１１０５が１になったことをデータ線１１８０またはデータ線１１８５により伝えられると、データ線１１４５から伝えられる頻度情報５３５を下位に１ビットシフトしたものをデータ線１１５５に伝え、レジスタ５３５の保持する頻度情報を更新する。下位に１ビットシフトすることは、その値を２分の１にすることである。
以上の仕組みにより、極力頻度比率を保ったまま情報量を減じることが可能となる。
【００８６】
〔実施形態４〕
次に、本発明に係る第四の実施形態を、図１２および図１３を用いて説明する。
図１２は、本発明の第四の実施形態に係るデータストリーム管理テーブルの一部の構成を示した図である。
図１３は、本発明の第四の実施形態に係るレジスタ９０、９５の動作を説明するタイミングチャートである。
【００８７】
本実施形態は、第一の実施形態または第二の実施形態のデータストリーム管理テーブル３２０のレジスタ９０、９５に保持される頻度情報を一定期間内の頻度として採取する機能を追加するものである。キャッシュミス回数またはキャッシュライン更新回数などの頻度情報を一定期間内で採取するよう実装することにより、アクセスするアドレスの間隔がループの途中で変化するようなデータストリームに対しても柔軟に適当なプリフェッチを発行することができる。
【００８８】
図１２において、カウンタ９４０、９５０は、システムの開始と同時にサイクル数をカウントし始め、最初はデータ線９６０、９７０にそれぞれ０を出力する。処理系で既定のサイクル数をｎとして、カウンタ９４０は奇数×ｎサイクル目、カウンタ９５０は偶数×ｎサイクル目に、それぞれ出力を反転させる。選択器９２０、９２５は、データ線９６０からの入力が０のときはデータ線５２０、５２５からの入力をそれぞれデータ線９８０、９８５に伝え、データ線９６０からの入力が１の時はデータ線５２０、５２５からの入力をそれぞれデータ線１０００、１００５に伝える。また、選択器９３０、９３５は、データ線９７０からの入力が０のときはデータ線４７０、４７５にそれぞれデータ線９９０、９９５からの入力を出力し、データ線９７０からの入力が１のときは、データ線４７０、４７５にそれぞれデータ線１０１０、１０１５からの入力を出力する。
【００８９】
また、選択器９２０はレジスタ９００からレジスタ９１０に書き込み先を変える際にレジスタ９００の値を０にリセットし、同様にレジスタ９１０からレジスタ９００に書き込み先を変える際にレジスタ９１０の値を０にリセットする。また同様に、選択器９２５はレジスタ９０５からレジスタ９１５に書き込み先を変える際にレジスタ９０５の値を０にリセットし、同様にレジスタ９１５からレジスタ９０５に書き込み先を変える際にレジスタ９１５の値を０にリセットする。
【００９０】
ここで、本実施形態では、図１３に示されるように、書き込みと読み込みの周期の位相を意図的にずらしている。これは、仮に書き込みと読み込みの周期の位相が同じであった場合には、書き込みと読み込みが切り替わるたびに頻度情報の比率が最適なプリフェッチ発行が可能な定常状態に収束する時間がかかってしまうことが考えられるためである。本実施形態では、図１３に示すように、レジスタ９００、９０５への書き込みと読み込みがｎサイクルずつずれ、キャッシュライン更新回数を２ｎサイクル時間内に採取することが可能となる。例えば、ループの途中でストライド・アクセスの間隔が変わるデータストリームや、ループの途中でアドレス増加からアドレス減少に転じるようなデータストリームに関しても最大でも２ｎサイクル時間後には変化に対応した頻度情報を利用することができる。
【図面の簡単な説明】
【００９１】
【図１】本発明の第一の実施形態に係るプロセッサを用いたシステム構成図である。
【図２】本発明の第一の実施形態に係る制御機構６０の構成図である。
【図３】本発明の第一の実施形態に係る初期化機構５５０の構成図である。
【図４】本発明の第一の実施形態に係るプリフェッチ制御のメモリアクセスの様子を示す図である。
【図５】従来技術に係るプリフェッチ制御のメモリアクセスの様子を示す図である。
【図６】図４におけるメモリアクセスの場合の各段階のキャッシュミス回数とプリフェッチオフセットを示す表である。
【図７】本発明の第二の実施形態に係るプロセッサを用いたシステム構成図である。
【図８】本発明の第二の実施形態に係る制御機構６０の構成図である。
【図９】本発明の第二の実施形態に係るプリフェッチ制御のメモリアクセスの様子を示す図である。
【図１０】図９におけるメモリアクセスの場合の各段階のキャッシュミス回数とプリフェッチオフセットを示す表である。
【図１１】本発明の第三の実施形態に係るデータストリーム管理テーブルの一部の構成を示した図である。
【図１２】本発明の第四の実施形態に係るデータストリーム管理テーブルの一部の構成を示した図である。
【図１３】本発明の第四の実施形態に係るレジスタ９０、９５の動作を説明するタイミングチャートである。
【図１】
2005242527.tif 000003
【図２】
2005242527.tif 000004
【図３】
2005242527.tif 000005
【図４】
2005242527.tif 000006
【図５】
2005242527.tif 000007
【図６】
2005242527.tif 000008
【図７】
2005242527.tif 000009
【図８】
2005242527.tif 000010
【図９】
2005242527.tif 000011
【図１０】
2005242527.tif 000012
【図１１】
2005242527.tif 000013
【図１２】
2005242527.tif 000014
【図１３】
2005242527.tif 000015