(57)【要約】【課題】主記憶装置の所定の領域に対して、断続的に異なった属性を指定可能なプリフェッチ制御機構（プリフェッチ方式）を提供する。【解決手段】プリフェッチ制御機構４は、主記憶装置のアドレスを格納するリクエストアドレスレジスタ４０１と、プリフェッチを指示する有効ビット列４０２ａと、所定の値を格納する上位アドレス列４０２ｂとを有するアドレス空間テーブル４０２を有し、リクエストアドレスレジスタ４０１のアドレスの一部分と、上位アドレス列４０２ｂに格納された所定の値とが一致し、有効ビット列４０２ａがプリフェッチを指示する場合、プリフェッチ指示信号とリクエストアドレスレジスタ４０１へ格納したアドレスとをキャッシュメモリ装置へ出力する機能（リクエスト有効フラグレジスタ４００、リクエストアドレスレジスタ４０１、比較器４０３、ＡＮＤ回路４０４）とを有する。【選択図】        図２
2004240811.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと主記憶装置とキャッシュメモリとを備え、主記憶装置に記憶されたデータをキャッシュメモリへ予め読み込むことを指示するプリフェッチ機能を有する情報処理装置において、
プロセッサから出力される主記憶装置のアドレスを格納するアドレスレジスタと、
プリフェッチを指示する第１プリフェッチフラグと、所定の値を格納する第１アドレスフィールドとを有するアドレス空間テーブルと、
上記アドレスレジスタのアドレスの一部分と、上記第１アドレスフィールドに格納された所定の値とが一致し、上記第１プリフェッチフラグがプリフェッチを指示する場合、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリへ出力する制御部と
を備えることを特徴とする情報処理装置。
【請求項２】
上記主記憶装置のアドレスは、上位部分、中位部分、下位部分の三つに分割されて取り扱われ、
上記アドレス空間テーブルは、上記上位部分のアドレスと比較する値を上記第１アドレスフィールドへ格納し、上記第１プリフェッチフラグと上記第１アドレスフィールドとを一つのエントリとした、上記中位部分の数のエントリを有し、
上記制御部は、上記中位部分を検索キーとして上記アドレス空間テーブルのエントリを検索し、検出したエントリを用いてプリフェッチを指示することを特徴とする請求項１記載の情報処理装置。
【請求項３】
上記キャッシュメモリは、上記制御部から入力したアドレスの所定サイズの記憶領域をプリフェッチし、
上記アドレス空間テーブルの中位部分の数のエントリそれぞれは、さらに、上記所定サイズの倍数の記憶領域をプリフェッチすることを指定するブロック数フィールドを備え、
上記制御部は、上記検出したエントリを用いて、プリフェッチを指示することを、上記ブロック数フィールドに指定された倍数繰り返すことを特徴とする請求項２記載の情報処理装置。
【請求項４】
上記アドレス空間テーブルの中位部分の数のエントリそれぞれは、さらに、
前回上記アドレスレジスタに格納された主記憶装置のアドレスのうち、下位部分のアドレスを記憶する第２アドレスフィールドと、
上記第２アドレスフィールドのアドレスに基づいてプリフェッチを指定する第２プリフェッチフラグと
を有し、
上記制御部は、上記検出したエントリを用いて、上記第１アドレスフィールドに格納された値と上記アドレスレジスタの上位部分とが一致し、かつ、上記第１プリフェッチフラグがプリフェッチを指定した場合であって、さらに、上記第２アドレスフィールドに格納された下位部分のアドレスと上記アドレスレジスタの下位部分との差分が所定の範囲内であり、かつ、上記第２プリフェッチフラグがプリフェッチを指定している場合に、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリへ出力することを特徴とする請求項２記載の情報処理装置。
【請求項５】
上記アドレス空間テーブルの中位部分の数のエントリそれぞれは、さらに、
上記プリフェッチを回避することを示すバイパスフラグを備え、
上記制御部は、上記検出したエントリを用いて、上記第１アドレスフィールドに格納された値と上記アドレスレジスタの上位部分とが一致し、かつ、上記第１プリフェッチフラグがプリフェッチを指定した場合であって、上記バイパスフラグがプリフェッチを回避しない指定の場合に、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリへ出力することを特徴とする請求項２記載の情報処理装置。
【請求項６】
上記情報処理装置は、ウェイ番号によって指定される複数のキャッシュメモリから構成され、
上記アドレス空間テーブルの中位部分の数のエントリそれぞれは、さらに、
ウェイ番号を格納するウェイ番号フィールドと、
上記ウェイ番号フィールドが有効であることを示すウェイ番号有効フラグと
を有し、
上記制御部は、上記検出したエントリを用いて、上記第１アドレスフィールドに格納された値と上記アドレスレジスタの上位部分とが一致し、かつ、上記第１プリフェッチフラグがプリフェッチを指定した場合であって、上記ウェイ番号有効フラグが有効を示している場合に、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリへ出力し、
上記キャッシュメモリは、上記ウェイ番号フィールドで指定されたキャッシュメモリへ、プリフェッチをすることを特徴とする請求項２記載の情報処理装置。
【請求項７】
上記情報処理装置は、複数のアドレス空間テーブルを備え、
上記制御部は、上記中位部分を検索キーとして複数のアドレス空間テーブルを検索することを特徴とする請求項２記載の情報処理装置。
【請求項８】
プロセッサと主記憶装置とキャッシュメモリとを備える情報処理装置が、アドレスレジスタに格納された主記憶装置のアドレスに記憶されたデータをキャッシュメモリへ予め読み込むことを指示するプリフェッチ方法において、
上記情報処理装置は、
プリフェッチを指示する第１プリフェッチフラグと、上記主記憶装置のアドレスの一部分を格納する第１アドレスフィールドとを有するアドレス空間テーブルを設置し、
上記アドレスレジスタのアドレスの一部分と、上記第１アドレスフィールドに格納されたアドレスの一部分とが一致するか否かを判断し、
判断した結果一致し、かつ、上記第１プリフェッチフラグがプリフェッチを指示する場合、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリへ出力することを特徴とするプリフェッチ方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュメモリのプリフェッチ制御方式及び方法に関する。
【０００２】
【従来の技術】
従来のプロセッサを有し、キャッシュメモリ装置、主記憶装置のメモリ階層構造を持つ情報処理装置は、高性能化のためにプリフェッチ機能を持つものがある。高速（アクセスタイムが短い）だが容量のキャッシュメモリに、大容量だが低速（アクセスタイムの長い）主記憶装置からデータをあらかじめフェッチ（持ってくる）することをプリフェッチと呼び、メモリ階層構造を持つ情報処理装置の高速化には有効な手段である（公知の技術としては、多数ある。例えば、特開２００１−１７５５３３、特開平１１−１６７５２０）。
【０００３】
しかし、プリフェッチには、未来に必要となるであろうデータを予測して持ってくるため、無駄なデータを持ってきてメモリバンド幅（外部メモリの出口のデータ転送能力）を浪費したり、有用なキャッシュデータを無駄なデータが上書きしてしまうなどの弊害がある。この弊害を削減するために、特開２０００−１４８５８４では、全アドレス空間を３つの空間、「通常空間」、「プリフェッチ空間」、「キャッシュ空間」に分割しており、通常空間をアドレス０ｘ００００００００〜０ｘ３ｆｆｆｆｆｆｆに割り当て、プリフェッチ空間をアドレス０ｘ４０００００００〜０ｘ７ｆｆｆｆｆｆｆに割り当て、キャッシュ空間をアドレス０ｘ８０００００００〜０ｘｆｆｆｆｆｆｆｆに割り当てている。即ち、アドレスの上位２ビットを参照するだけで、属している空間を判別することができる。
なお、“０ｘ”は１６進数であることを示す接頭辞である。
【０００４】
「プリフェッチ空間」には、ストリームデータのように、プロセッサにより連続的にアクセスされ、プロセッサが一度しか使用しないデータを配置し、プロセッサからのリード要求によりプリフェッチ機構が動作する。一方、「キャッシュ空間」には空間・時間局所性があり、プロセッサが再利用可能なデータを配置し、外部メモリから取ってきたデータを内部メモリ（キャッシュ）にコピーして、それ以降のプロセッサからのリードで使用する。さらに、「通常空間」は、プリフェッチやキャッシュを利用しないアドレス空間である。
【０００５】
先行事例は、このようにアドレス空間に異なった属性を持たせているので、プログラム（命令とデータ）をその特性に応じて最適に割り付ければ、内部メモリを有効に活用して、高性能なシステムとなる。
【０００６】
【特許文献１】
特開２００１−１７５５３３号公報
【特許文献２】
特開平１１−１６７５２０号公報
【０００７】
【発明が解決しようとする課題】
しかしながら、上記の事例は、アドレス空間が単純に３分割されているので、Ｌｉｎｕｘなどの現状のオペレーティングシステム（ＯＳ）では、複数のプログラムやデータ特性に応じて適切ににプリフェッチの可否やキャッシュの可否を制御することは不可能である。
【０００８】
また、短い間隔で連続的にデータを処理するプログラムでは、１ブロック先のデータのプリフェッチでは間に合わず性能が十分発揮されないので、数ブロック先のデータまでプリフェッチしてくる必要がある。一方、データの連続性が必ずしも強くない領域では、２ブロック連続アクセスを確認してから始めて次のブロックをプリフェッチするなど慎重な“保守的なプリフェッチ”が必要である。このように、プログラム領域やデータ領域ごとに最適なプリフェッチ方法が異なっている。
【０００９】
さらに、膨大なシーケンシャルデータを順番にキャッシュに格納する場合、キャッシュが複数のウェイで構成されていても、そのシーケンシャルデータが、従来から格納されていた使用頻度の高いデータを追出し、キャッシュのミス率を上げる（性能が低下する）という問題も起こる。
本発明は、現状のＯＳを大きく変更することなく、主記憶装置の所定の領域（例えば、複数のプログラムやＯＳカーネルルーチンやデータ領域）に対して断続的に異なった属性を持たせるプリフェッチ機能を提供することを目的とする。
また、プリフェッチしてくるブロック数やプリフェッチ起動条件を個別に設定することによって、プリフェッチの効果を大きくし、副作用を小さくすることで、性能をより向上させることを目的とする。
【００１０】
【課題を解決するための手段】
この発明に係る情報処理装置は、プロセッサと主記憶装置とキャッシュメモリとを備え、主記憶装置に記憶されたデータをキャッシュメモリへ予め読み込むことを指示するプリフェッチ機能を有する情報処理装置において、
プロセッサから出力される主記憶装置のアドレスを格納するアドレスレジスタと、
プリフェッチを指示する第１プリフェッチフラグと、所定の値を格納する第１アドレスフィールドとを有するアドレス空間テーブルと、
上記アドレスレジスタのアドレスの一部分と、上記第１アドレスフィールドに格納された所定の値とが一致し、上記第１プリフェッチフラグがプリフェッチを指示する場合、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリへ出力する制御部と
を備えることを特徴とする。
【００１１】
【発明の実施の形態】
実施の形態１．
図１は、この発明の実施の形態１である情報処理装置を示す。
図１に示す情報処理装置は、プロセッサ１、キャッシュメモリ装置２、主記憶装置３、プリフェッチ制御機構（プリフェッチ制御装置）４とを備える。また、図１では、プロセッサ１が発行するメモリリクエスト信号線（有効信号とアドレス信号から構成される）１１、プロセッサ１とキャッシュメモリ装置２の間でデータのやりとりをするデータ線１２、キャッシュメモリ装置２が主記憶装置３へ発行するフェッチ要求線２１、キャッシュメモリ装置２と主記憶装置３の間でデータのやりとりをするデータ線３１、プリフェッチ制御機構４がキャッシュメモリ装置２にプリフェッチの要求を示すプリフェッチ要求信号線（有効信号とアドレス信号）４１、プリフェッチ制御機構４がキャッシュメモリ装置２にキャッシュにバイパスやウェイの指定などの特別な指示を与えるキャッシュ指示信号線４２を示している。
【００１２】
また、以下の説明では、図１の情報処理装置は、データ線３１のデータ転送は、１６バイト単位、データ線１２のデータ転送は、４バイト単位であることを一例として説明する。データ線３１のデータ転送、即ち、キャッシュメモリ装置２と主記憶装置３との間のデータ転送は、ブロックサイズ（キャッシュメモリ装置へのアクセス単位）がアクセスの単位となる。
【００１３】
図２は、図１における主要な構成要素であるプリフェッチ制御機構４の詳細を示した図である。
図２において、メモリリクエスト信号線１１は、リクエスト有効信号１１ａとリクエストアドレス信号１１ｂとからなる。
プリフェッチ要求信号線４１は、プリフェッチ有効信号４１ａとプリフェッチアドレス信号４１ｂとからなる。
また、図２では、リクエスト有効フラグレジスタ４００、リクエストアドレスレジスタ４０１、アドレス空間テーブル４０２、比較器４０３、ＡＮＤ回路４０４、次のプリフェッチアドレスを計算する加算器４０５を示す。
【００１４】
リクエスト有効フラグレジスタ４００は、リクエスト有効信号１１ａでセットされる。
リクエストアドレスレジスタ４０１は、上位アドレスフィールド４０１ａ、インデックスフィールド４０１ｂ、下位アドレスフィールド４０１ｃから構成される。
アドレス空間テーブル４０２は、有効ビット列４０２ａ、上位アドレス列４０２ｂから構成される。
【００１５】
説明の明確化のため、各要素の寸法を仮定する。
リクエストアドレス信号１１ｂを３２ビットとする。
リクエストアドレスレジスタ４０１を３２ビット、上位アドレスフィールド４０１ａを８ビット、インデックスフィールド４０１ｂを１２ビット、下位アドレスフィールド４０１ｃを１２ビットとする。
アドレス空間テーブル４０２のエントリ数を４０９６個、上位アドレス列４０２ｂの１エントリのビット数を８ビットとする。
比較器４０３は８ビット同士の比較をする。
また、図１のキャッシュメモリ装置２に関して、キャッシュのブロックサイズ＝１６バイト、４ウェイセットアソシアティブ、１ウェイ当たりのエントリ数４０９６個、合計２５６Ｋバイト（＝４×４０９６×１６）と仮定する。
【００１６】
各ビット数には、次の関係を有するようにビット数を決定している（下記では名称を省略し符号のみで示している）。
１１ｂのビット数＝４０１のビット数＝４０１ａのビット数＋４０１ｂのビット数＋４０１ｃのビット数。
４０１ａのビット数＝４０２ｂの１エントリのビット数＝４０３が比較するビット数。
２の（４０１ｂのビット数）の乗数（２の１２乗）＝４０２のエントリ数。
【００１７】
次に、動作例について説明する。
まず、システムとして（情報処理装置において）０ｘ１２３４５０００から０ｘ１２３４５ＦＦＦまでのアドレス空間をプリフェッチ空間として設定する。この場合、図２のアドレス空間テーブル４０２の０ｘ３４５番目のエントリについて、有効ビット列４０２ａ＝１、上位アドレス列４０２ｂ＝０ｘ１２に設定する。設定は、オペレーティングシステムから初期設定時に行っても、アプリケーション実行時に専用ドライバ経由で行っても良い。この設定により０ｘ１２３４５０００から０ｘ１２３４５ＦＦＦまでのアドレス空間がプリフェッチ空間として設定されたことになる。上記アドレス空間は、プリフェッチ可能な連続した４Ｋバイトの空間を指定するだけである。実際にプリフェッチするアドレスは、プロセッサから要求がきたアドレスに依存する。
【００１８】
次に、図１において、プロセッサ１がメモリリクエスト信号線１１経由で０ｘ１２３４５０１０番地にメモリリクエストを出す場合について説明する。０ｘ１２３４５０１０番地は、プリフェッチ空間に含まれる。
メモリリクエストを受けたキャッシュメモリ装置２は、該当アドレスを保持していない（キャッシュミス）場合、フェッチ要求線２１経由で主記憶装置３に同アドレスのフェッチ要求を出し、主記憶装置３が応答してデータ線３１経由でキャッシュメモリ装置２に所望のデータを転送し、キャッシュメモリ装置２がデータ線１２経由でプロセッサ１に上記データを転送する。
キャッシュメモリ装置２が該当アドレスをもともと保持している（キャッシュヒット）場合は、キャッシュメモリ装置２はデータ線１２経由でデータをプロセッサ１に送る。
【００１９】
一方、プロセッサ１がメモリリクエスト信号線１１経由で発行したメモリリクエストはプリフェッチ制御機構４にも送信される。プリフェッチ制御機構４は該当アドレスをプリフェッチすべきかを判定し、プリフェッチすべきと判断した場合、プリフェッチ要求信号線４１を経由してプリフェッチ要求をキャッシュメモリ装置２に送出する。キャッシュメモリ装置２は、該当アドレスのキャッシュブロック保持の有無（ヒット／ミス）を調べて、ミスなら主記憶装置３からデータを取ってきてキャッシュに格納し、ヒットなら何もしない。
【００２０】
次に、図２にて、メモリリクエストを受信したプリフェッチ制御機構４の動作を詳細に示す。メモリリクエスト信号線１１経由でメモリリクエストが来た場合、リクエスト有効信号１１ａ＝１になり、リクエストアドレス信号１１ｂに所望のアドレス（０ｘ１２３４５０１０）が示される。リクエスト有効フラグレジスタ４００が１にセットされ、アドレス値＝０ｘ１２３４５０１０がリクエストアドレスレジスタ４０１に保持される（上位アドレスフィールド４０１ａ＝０ｘ１２、インデックスフィールド４０１ｂ＝０ｘ３４５、下位アドレスフィールド４０１ｃ＝０ｘ０１０）。引き続きインデックスフィールド４０１ｂの値＝０ｘ３４５でアドレス空間テーブル４０２のテーブルを引き（アドレス空間テーブル４０２の０ｘ３４５番目のエントリを参照し）、有効ビット列４０２ａ出力（有効フラグ）＝１と上位アドレス列４０２ｂ出力（上位アドレス）＝０ｘ１２が出力される。アドレス空間テーブル４０２の出力結果の上位アドレスと上位アドレスフィールド４０１ａを比較器４０３で比較し、どちらも値＝０ｘ１２なので比較器４０３出力＝１が出力される。
【００２１】
比較器４０３の出力値とリクエスト有効信号１１ａの値と有効ビット列４０２ａ出力値はすべて１なので、ＡＮＤ回路４０４の出力＝１となり、４１ａ（プリフェッチ有効信号）＝１となる。また、プリフェッチアドレスもリクエストアドレス信号１１ｂを加算器４０５に入力し、０ｘ１０（キャッシュのブロックサイズ）が加算された値＝０ｘ１２３４５０２０がプリフェッチすべきアドレスとしてプリフェッチアドレス信号４１ｂに出力される。即ち、有効なプリフェッチ要求がプリフェッチ要求信号線４１を経由してキャッシュメモリ装置２に伝達される。最後に、プリフェッチ有効信号４１ａによってリクエスト有効フラグレジスタ４００は０にクリアされ（プリフェッチ有効信号４１ａが入力することによってリクエスト有効フラグレジスタ４００はクリアされる）、次のサイクルではプリフェッチ有効信号４１ａは０になり、プリフェッチ要求は終了する。
【００２２】
一方、プリフェッチすべきでないアドレス、例えば、０ｘ００３４５０１０がメモリリクエスト信号線１１を経由してプリフェッチ制御機構４に入ってきた場合は、上位アドレスフィールド４０１ａにセットされる値が０ｘ００で、アドレス空間テーブル４０２から読み出される上位アドレス（上位アドレス列４０２ｂ）が０ｘ１２で不一致となり比較器４０３の出力＝０、従って、ＡＮＤ回路４０４の出力＝０となり、プリフェッチが有効とならない。
【００２３】
また、プリフェッチすべきでないアドレスの別の例、例えば、０ｘ１２３４４０１０がメモリリクエスト信号線１１を経由してプリフェッチ制御機構４に入ってきた場合は、アドレス空間テーブル４０２から読み出される有効ビット（有効ビット列４０２ａ）＝０となり、ＡＮＤ回路４０４の出力＝０となりプリフェッチが有効とならない。
【００２４】
以上の例では、４Ｋバイト毎に４０９６個所の断続的なアドレス空間をプリフェッチ空間として指定可能である。４Ｋバイトは下位アドレスのビット数＝１２ビット、４０９６個所はインデックスのビット数＝１２ビットに依存している。これらのビット数を変えることで、指定空間の大きさや数を変えることができる。
また、実現に際してはキャッシュタグと同程度のテーブルを使用すればよくコストの増大や性能の低下はほとんどない。
【００２５】
このように、この実施の形態では、プロセッサ１と、主記憶装置３とキャッシュメモリ装置（キャッシュメモリ）２とのメモリ階層構造とを有し、主記憶装置３に記憶されたデータをキャッシュメモリ装置２へ予め読み込むことを指示するプリフェッチ機能（プリフェッチ制御機構４）を有する情報処理装置（及びプリフェッチ方法）の一例を説明した。
プリフェッチ制御機構４は、プロセッサから出力される主記憶装置のアドレスを格納するアドレスレジスタ（リクエストアドレスレジスタ４０１配置例）と、プリフェッチを指示する第１プリフェッチフラグ（有効ビット列４０２ａは一例）と、所定の値（一例として、主記憶装置３のアドレスの一部分）を格納する第１アドレスフィールド（上位アドレス列４０２ｂは一例）とを有するアドレス空間テーブル４０２を有する（情報処理装置内へ設置する）。
【００２６】
また、プリフェッチ制御機構４は、上記アドレスレジスタのアドレスの一部分と、上記第１アドレスフィールドに格納された所定の値（アドレスの一部分）とが一致し、上記第１プリフェッチフラグがプリフェッチを指示する場合、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリへ出力する制御部を有する。制御部は、図１では、リクエスト有効フラグレジスタ４００、リクエストアドレスレジスタ４０１、比較器４０３、ＡＮＤ回路４０４によって実現する場合を一例として示した。
【００２７】
また、主記憶装置のアドレスは、上位部分、中位部分、下位部分の三つに分割されて取り扱う例を示した。アドレス空間テーブル４０２は、上位部分のアドレスと比較する値（主記憶装置のアドレスの上位部分）を上記第１アドレスフィールドへ格納し、上記第１プリフェッチフラグと上記第１アドレスフィールドとを一つのエントリとした、上記中位部分の数のエントリを有することを前提とした。制御部は、上記中位部分を検索キーとしてアドレス空間テーブル４０２のエントリを検索し、検出したエントリを用いてプリフェッチを指示する。
【００２８】
この実施の形態では、プリフェッチの有無をアドレス空間テーブルに格納して、アドレス空間テーブルをアドレスの一部を利用して検索し、プリフェッチの有無の指示を即座に判定できるようにしたので、断続的なアドレス空間に対してプリフェッチ指定が可能となった。
【００２９】
実施の形態２．
次に、プリフェッチリクエストを複数ブロック出す機構について図３を用いて説明する。
図３に示すプリフェッチ制御機構４は、図２と同様の機能に加えて、アドレス空間テーブル４０２がブロック個数フィールド列４０２ｃを持ち、回数制御回路４０６、セレクタ４０７を有する。他の番号で示した要素は図２と同じである。
ブロック個数フィールド列４０２ｃは、プリフェッチを要求するブロック数を指定するフィールドである。１つのブロックは、キャッシュのブロックサイズ（実施の形態１において１６バイトと仮定した）に相当する。ブロック数を指定することによって、プリフェッチするサイズ（１６バイト×ブロック数）を指定することが可能になる。
【００３０】
次に、動作例について説明する。
まず、システムとして０ｘ１２３４５０００から０ｘ１２３４５ＦＦＦまでのアドレス空間をプリフェッチ空間として設定し、４ブロック（即ち、１６×４＝６４バイト）プリフェッチする要求があることを設定する。
この場合、図３の０ｘ３４５番目のエントリについて、有効ビット列４０２ａ＝１、上位アドレス列４０２ｂ＝０ｘ１２、ブロック個数フィールド４０２ｃ＝４を設定する。
【００３１】
図３にて、メモリリクエストを受信したプリフェッチ制御機構４の動作を詳細に示す。メモリリクエスト信号線１１経由でメモリリクエストが来た場合、リクエスト有効信号１１ａ＝１になり、リクエストアドレス信号１１ｂに所望のアドレス（０ｘ１２３４５０１０）が示される。リクエスト有効フラグレジスタ４００が１にセットされ、アドレス値＝０ｘ１２３４５０１０がリクエストアドレスレジスタ４０１に保持される（上位アドレスフィールド４０１ａ＝０ｘ１２、インデックスフィールド４０１ｂ＝０ｘ３４５、下位アドレスフィールド４０１ｃ＝０ｘ０１０）。引き続きインデックスフィールド４０１ｂの値＝０ｘ３４５でアドレス空間テーブル４０２のテーブルを引き、有効フラグ（０ｘ３４５番目の有効ビット列４０２ａの値）＝１、上位アドレス（０ｘ３４５番目の上位アドレス列４０２ｂの値）＝０ｘ１２、ブロック個数（０ｘ３４５番目のブロック個数フィールド列４０２ｃの値）＝４が出力される。アドレス空間テーブル４０２の出力結果の上位アドレスと上位アドレスフィールド４０１ａを比較器４０３で比較し、どちらも値＝０ｘ１２なので結果＝１が出力される。
【００３２】
比較器４０３の出力結果とリクエスト有効信号１１ａの値とアドレス空間テーブル４０２の有効ビット出力はすべて１なので、ＡＮＤ回路４０４の出力＝１となり、４１ａ（プリフェッチ有効信号）＝１となる。また、プリフェッチアドレスもリクエストアドレス信号１１ｂからセレクタ４０７を経由して加算器４０５に入力し、０ｘ１０が加算された値＝０ｘ１２３４５０２０がプリフェッチすべきアドレスとしてプリフェッチアドレス信号４１ｂを経由してキャッシュメモリ装置２に伝達される。
【００３３】
ここで、アドレス空間テーブル４０２から出力されたブロック個数＝４が回数制御回路４０６に入力され、複数回のプリフェッチ要求の発行を行う。回数制御回路４０６は、セレクタ４０７の入力をリクエストアドレス信号１１ｂから加算器４０５の出力に切り替えるよう指示を出し、セレクタ４０７はそのように動作する。つまり、加算器４０５は値＝０ｘ１２３４５０２０を発行すると、続いて、０ｘ１２３４５０３０、０ｘ１２３４５０４０、０ｘ１２３４５０５０を発行する。即ち、プリフェッチアドレス信号４１ｂを経由してキャッシュメモリ装置２にアドレス＝０ｘ１２３４５０３０、０ｘ１２３４５０４０、０ｘ１２３４５０５０のプリフェッチ要求を送る。開始から３サイクル後に回数制御回路４０６は、リクエスト有効フラグレジスタ４００をリセットし、プリフェッチ有効信号は０になる。この様子を図４に示す。
【００３４】
図４では、名称を省略し、符号を用いて信号の様子を示している。
リクエストアドレス信号１１ｂ、ブロック個数フィールド４０２ｃ、加算器４０５において、数値が示してある部分は、示してある数値がそれぞれへ設定されていることを示している。
【００３５】
上記例は、ブロック個数フィールド４０２ｃのフィールドに値＝４を設定したので４ブロックのプリフェッチ要求が発生したが、ブロック個数フィールド４０２ｃに１以上の整数値Ｎを設定すればＮブロックのプリフェッチ要求が実現できる。シーケンシャルデータ処理の速いプログラムやメモリアクセスの遅延が大きい場合は、Ｎを大きくすることによって、より早いタイミングでのプリフェッチ要求が実現されるので淀みなくデータを供給して高い性能を維持できる。
【００３６】
このように、この実施の形態では、上記キャッシュメモリは、上記制御部から入力したアドレスの所定サイズ（１６バイトを一例として説明した）の記憶領域をプリフェッチすることを前提として、実施の形態１の機能に加え、アドレス空間テーブル４０２の中位部分の数のエントリそれぞれが、上記所定サイズの倍数の記憶領域をプリフェッチすることを指定するブロック数フィールド（ブロック個数フィールド列４０２ｃは一例）を備え、プリフェッチを指示すること（プリフェッチ要求すること）を、上記ブロック数フィールドに指定された倍数（個数）繰り返す例を説明した。
【００３７】
この実施の形態では、プリフェッチの方式（先読みブロック数、起動条件）をアドレス空間テーブルに格納することで、先読みブロック数を断続的なアドレス空間に対してプリフェッチ指定が可能となった。
【００３８】
実施の形態３．
はっきりとしたシーケンシャル性が保証されないケースもある。このような場合、すべてのメモリリードに対して、無条件に次のブロックをプリフェッチしてくることは、無駄なプリフェッチによるメモリバスの浪費や有効なキャッシュブロックの追出しなど副作用によって性能低下を導くことがある。このような場合、より慎重な（保守的な）方法でプリフェッチを決定することは、無駄なプリフェッチを排除して副作用を軽減する方法として効果的である。
ここでの実施の形態は、そのような機能の実現性を図５により説明する。
図５において、図２と同じ番号のものは同じ機能、目的の要素であるため説明を省略する。図５のプリフェッチ制御機構４は、図２に示した構成要素に加えて、アドレス空間テーブル４０２に、保守的プリフェッチフラグ列４０２ｄ、前リクエスト下位アドレス列４０２ｅを追加した。さらに、図２に示した構成要素に加えて、ブロックのバイト数を加算する加算器４０８、比較器４０９、ＡＮＤ回路４１０、ＮＯＴ素子４１１、ＯＲ回路４１２とを追加している。
【００３９】
次に、動作例について説明する。
まず、システムとして０ｘ１２３４５０００から０ｘ１２３４５ＦＦＦまでのアドレス空間を保守的なプリフェッチ空間として設定する。
保守的なプリフェッチ空間とは、単発のリクエストではプリフェッチ要求を出さず、連続したアドレスのリクエストが２個来た場合に始めてプリフェッチ要求を出すものとする。この場合、図５のアドレス空間テーブル４０２の０ｘ３４５番目のエントリについて、有効ビット列４０２ａ（有効ビット）＝１、上位アドレス列４０２ｂ（上位アドレス）＝０ｘ１２に加えて、保守的プリフェッチフラグ列４０２ｄ（保守的プリフェッチフラグ）＝１を設定する。この段階で、前リクエスト下位アドレス列４０２ｅは、値が入っていない状態である。プロセッサ１からメモリリクエスト（アドレス＝０ｘ１２３４５０１０）が発行された場合、プリフェッチ制御機構４はプリフェッチ要求を出さない。続いて、プロセッサ１からメモリリクエスト（アドレス＝０ｘ１２３４５０２０）が発行されると、プリフェッチ制御機構４はプリフェッチ要求を出す。このように、２個の連続したアドレスが来ると、プリフェッチ制御機構４はプリフェッチ要求を出す。
【００４０】
図５にて、メモリリクエストを受信したプリフェッチ制御機構４の動作の詳細を示す。
メモリリクエスト信号線１１経由でメモリリクエスト（アドレス＝０ｘ１２３４５０１０）が来た場合、リクエスト有効信号１１ａ＝１になり、リクエストアドレス信号１１ｂに所望のアドレス（０ｘ１２３４５０１０）が示される。リクエスト有効フラグレジスタ４００が１にセットされ、アドレス値＝０ｘ１２３４５０１０がリクエストアドレスレジスタ４０１に保持される（上位アドレスフィールド４０１ａ＝０ｘ１２、インデックスフィールド４０１ｂ＝０ｘ３４５、下位アドレスフィールド４０１ｃ＝０ｘ０１０）。引き続きインデックスフィールド４０１ｂの値＝０ｘ３４５でアドレス空間テーブル４０２のテーブルを引き、アドレス空間テーブル４０２の０ｘ３４５番目のエントリが参照され、有効ビット列４０２ａ（有効フラグ）＝１、上位アドレス列４０２ｂ（上位アドレス）＝０ｘ１２、保守的プリフェッチフラグ列４０２ｄ（保守的プリフェッチフラグ）＝１が出力される。
【００４１】
保守的プリフェッチフラグ（保守的プリフェッチフラグ列４０２ｄの出力）が１なのでＮＯＴ素子４１１の出力は０になり、ＡＮＤ回路４０４の出力は０となる。一方、前リクエスト下位アドレス列４０２ｅ（前リクエスト下位アドレス）には現在、値が入っていないため無効値となり、加算器４０８の出力も無効値となり、比較器４０９の出力は０となり、ＡＮＤ回路４１０の出力も０となる。ＡＮＤ回路４０４とＡＮＤ回路４１０の両方の出力が０のためＯＲ回路４１２の出力も０となり、プリフェッチ有効信号４１ａ＝０、即ち、プリフェッチ要求は４には伝達されない。最後に、下位アドレスが下位アドレスフィールド４０１ｃの値（＝０ｘ０１０）を前リクエスト下位アドレス列４０２ｅの０ｘ３４５番目のエントリに書き込む。
【００４２】
次に、メモリリクエスト（アドレス＝０ｘ１２３４５０２０）が来た場合、リクエスト有効信号１１ａ＝１になり、リクエストアドレス信号１１ｂに所望のアドレス（０ｘ１２３４５０２０）が示される。リクエスト有効フラグレジスタ４００＝１がセットされ、アドレス値＝０ｘ１２３４５０２０がリクエストアドレスレジスタ４０１に保持される（上位アドレスフィールド４０１ａ＝０ｘ１２、インデックスフィールド４０１ｂ＝０ｘ３４５、下位アドレスフィールド４０１ｃ＝０ｘ０２０）。引き続きインデックスフィールド４０１ｂの値＝０ｘ３４５でアドレス空間テーブル４０２のテーブルを引き、有効ビット列４０２ａ（有効フラグ）＝１、上位アドレス列４０２ｂ（上位アドレス）＝０ｘ１２、保守的プリフェッチフラグ列４０２ｄ（保守的プリフェッチフラグ）＝１、前リクエスト下位アドレス列４０２ｅ（前リクエスト下位アドレス）＝０ｘ０１０が出力される。
【００４３】
従って、加算器４０８の出力は０ｘ０２０となり、比較器４０９の２つの入力値が０ｘ０２０で一致し、比較器４０９の出力＝１となる。よって、ＡＮＤ回路４１０の出力＝１となる。これまでと同様に、比較器４０３の出力＝１なのでＡＮＤ回路４０４の出力＝１となる。従って、ＯＲ回路４１２の出力＝１となりプリフェッチ有効信号４１ａ＝１となる。また、加算器４０５の出力＝０ｘ１２３４５０３０となり、プリフェッチアドレス信号４１ｂ＝０ｘ１２３４５０３０となる。即ち、有効なプリフェッチ要求がプリフェッチ制御機構４に伝達したことになる。最後に、下位アドレスが下位アドレスフィールド４０１ｃの値（＝０ｘ０２０）を前リクエスト下位アドレス列４０２ｅの０ｘ３４５番目のエントリに書き込まれる。
【００４４】
このように、この実施の形態では、アドレス空間テーブル４０２のエントリそれぞれが、さらに、前回上記アドレスレジスタに格納された主記憶装置のアドレスのうち、下位部分のアドレスを記憶する第２アドレスフィールド（前リクエスト下位アドレス列４０２ｅは一例）と、上記第２アドレスフィールドのアドレスに基づいてプリフェッチを指定する第２プリフェッチフラグ（保守的プリフェッチフラグ列４０２ｄは一例）とを有し、上記第１アドレスフィールド（上位アドレス列４０２ｂ）に格納された値（上位部分のアドレスと比較する値）と上記アドレスレジスタ（リクエストアドレスレジスタ４０１）の上位部分とが一致し、かつ、上記第１プリフェッチフラグ（有効ビット列４０２ａ）がプリフェッチを指定した場合であって、さらに、上記第２アドレスフィールドに格納された下位部分のアドレスと上記アドレスレジスタの下位部分との差分が所定の範囲内であり、かつ、上記第２プリフェッチフラグがプリフェッチを指定している場合に、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリ装置２へ出力すること場合について説明した。
【００４５】
この実施の形態では、プリフェッチの方式（保守的なプリフェッチ）をアドレス空間テーブルに格納することで、保守的なプリフェッチを断続的なアドレス空間に対してプリフェッチ指定が可能となった。
【００４６】
実施の形態４．
データの時間局所性・空間局所性の極めて低いデータをキャッシュに入れることは、他の有益なデータを追出すことになり返って性能を落とすことが知られている。本発明では、少量のＨ／Ｗ（ハードウェア）追加で断続的なアドレス空間のデータをキャッシュバイパス指定が可能となるので、その実施例を図１，図６にて示す。図６において、図２と同じ番号のものは同じ機能、目的の要素である。図２に示した構成要素に加えて、アドレス空間テーブル４０２に、キャッシュバイパスフラグ列４０２ｆ、ウェイ指定フラグ列４０２ｇ、ウェイ番号列４０２ｈを追加した。また、ＡＮＤ回路４２０、ＡＮＤ回路４２１を追加した。
【００４７】
なお、この実施の形態では、ウェイ指定フラグ列４０２ｇ、ウェイ番号列４０２ｈを用いない。従って、ウェイ指定フラグ列４０２ｇ、ウェイ番号列４０２ｈにない構成であってもよい。
また、プリフェッチ制御機構４の出力信号であるプリフェッチ要求信号線４１は、キャッシュバイパス指示信号４２ａ、キャッシュウェイ指定信号４２ｂ、キャッシュウェイ番号信号４２ｃから構成される。
【００４８】
次に、動作例について説明する。
まず、システムとして０ｘ１２３４５０００から０ｘ１２３４５ＦＦＦまでのアドレス空間をキャッシュバイパス空間として設定する。キャッシュバイパス空間とは、主記憶装置３から持つてきたデータを、キャッシュメモリ装置２を経由してプロセッサ１へ送るものの、キャッシュメモリ装置２の中には残さないという機能定義のアドレス空間である。つまり、キャッシュメモリ装置２の中では、キャッシュブロックの置き換えが発生せず、局所性の低いデータが局所性の高いデータを置き換えることを防ぐ。
【００４９】
本ケースではあらかじめ、図６の０ｘ３４５番目のエントリのキャッシュバイパスフラグ４０２ｆ＝１、上位アドレス列４０２ｂ＝０ｘ１２を設定する。図１のプロセッサ１からメモリリクエスト（アドレス＝０ｘ１２３４５０１０）が発行された場合、プリフェッチ制御機構４は、キャッシュ指示信号線４２を経由してキャッシュメモリ装置２にキャッシュバイパスを指示するキャッシュ指示信号を出す。これを受けたキャッシュメモリ装置２は、主記憶装置３からフェッチしてきたデータをプロセッサ１に送出するものの、該当キャッシュブロックのリプレースを行わない。
【００５０】
図６にて、メモリリクエストを受信したプリフェッチ制御機構４の動作を詳細に示す。メモリリクエスト信号線１１経由でメモリリクエスト（アドレス＝０ｘ１２３４５０１０）が来た場合、リクエスト有効信号１１ａ＝１になり、リクエストアドレス信号１１ｂに所望のアドレス（０ｘ１２３４５０１０）が示される。リクエスト有効フラグレジスタ４００が１にセットされ、アドレス値＝０ｘ１２３４５０１０がリクエストアドレスレジスタ４０１に保持される（上位アドレスフィールド４０１ａ＝０ｘ１２、インデックスフィールド４０１ｂ＝０ｘ３４５、下位アドレスフィールド４０１ｃ＝０ｘ０１０）。引き続きインデックスフィールド４０１ｂの値＝０ｘ３４５でアドレス空間テーブル４０２のテーブルを引き、アドレス空間テーブル４０２の０ｘ３４５番目のエントリを参照して、上位アドレス列４０２ｂの出力（上位アドレス）＝０ｘ１２、キャッシュバイパスフラグ列４０２ｆの出力（キャッシュバイパスフラグ）＝１が出力される。上位アドレスフィールド４０１ａの出力と上位アドレス列４０２ｂの出力が一致するので比較器４０３の出力＝１となり、キャッシュバイパスフラグ列４０２ｆの出力＝１なのでＡＮＤ回路４２０の出力＝１となり、キャッシュバイパスを指示するキャッシュバイパス指示信号４２ａを経由してキャッシュメモリ装置２に伝達される。
【００５１】
このように、この実施の形態では、アドレス空間テーブル４０２のエントリそれぞれは、さらに、プリフェッチを回避することを示すバイパスフラグ（キャッシュバイパスフラグ列４０２ｆは一例）を有し、第１アドレスフィールド（上位アドレス列４０２ｂ）に格納された値（上位部分のアドレス比較する値）とアドレスレジスタ（リクエストアドレスレジスタ４０１）の上位部分とが一致し、かつ、第１プリフェッチフラグ（有効ビット列４０２ａ）がプリフェッチを指定した場合であって、上記バイパスフラグがプリフェッチを回避しない指定の場合に、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとをキャッシュメモリ装置２へ出力する例を説明した。
【００５２】
この実施の形態では、キャッシュブロックの制御の方式（キャッシュバイパス）をアドレス空間テーブルに格納することで、キャッシュバイパスを限定したキャッシュ指示を断続的なアドレス空間で可能となった。
【００５３】
実施の形態５．
データのシーケンシャル性と極短期的な時間局所性はあるのだが、極めて膨大なデータを取り扱う場合、キャッシュには格納したいのだが、格納してしまうと、他の有用なデータをすべて追出してしまい、返って性能を落してしまう。このような場合、複数のウェイで構成されているキャッシュメモリでは、大規模シーケンシャルデータを特定のキャッシュ・ウェイに限定して格納するようにすることで、他の有用なキャッシュブロックの追出しを制限でき性能低下の副作用を軽減できる。本発明では、少量のＨ／Ｗ追加で断続的なアドレス空間のデータをキャッシュ・ウェイ指定が可能となるので、その実施例を図１，図６にて示す（図６は、実施の形態４で示したものと同じ）。但し、この実施の形態では、キャッシュバイパスフラグ列４０２ｆを用いない。従って、キャッシュバイパスフラグ列４０２ｆは、アドレス空間テーブル４０２に設置しない構成であってもよい。
【００５４】
次に、動作例について説明する。
まず、システムとして０ｘ１２３４６０００から０ｘ１２３４６ＦＦＦまでのアドレス空間について、キャッシュブロックをウェイ３だけ格納すると設定する。本キャッシュメモリは、４ウェイ構成でウェイ０からウェイ３まであると想定する。本ケースでは、あらかじめ、図６のアドレス空間テーブル４０２の０ｘ３４６番目のエントリについて、有効ビット列４０２ａ＝１、上位アドレス列４０２ｂ＝０ｘ１２に加えて、ウェイ指定フラグ列４０２ｇ＝１、ウェイ番号列４０２ｈ＝３を設定する。図１のプロセッサ１からメモリリクエスト（アドレス＝０ｘ１２３４６０１０）が発行された場合、プリフェッチ制御機構４は、キャッシュ指示信号線４２を経由してキャッシュメモリ装置２にキャッシュのウェイを３に限定するキャッシュ指示信号を出す。
【００５５】
これを受けたキャッシュメモリ装置２は、主記憶装置３からフェッチしてきたデータを該当リプレース状態の如何にかかわらず、ウェイを主記憶装置３に設定する。通常のキャッシュメモリにおいては、新しいデータが入力され、古いデータを追出す場合、４ウェイの場合なら４個のブロックの一つをＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔ  Ｕｓｅｄ）方式のアルゴリズムにしたがって選択する。本発明の場合、ＬＲＵの結果を無視してウェイを３と決定する機構を追加すればよく、図７に示すような容易な論理変更と微少なＨ／Ｗ追加で実現できる。
【００５６】
図６にて、メモリリクエストを受信したプリフェッチ制御機構４の動作を詳細に示す。メモリリクエスト信号線１１経由でメモリリクエスト（アドレス＝０ｘ１２３４６０１０）が来た場合、リクエスト有効信号１１ａ＝１になり、リクエストアドレス信号１１ｂに所望のアドレス（０ｘ１２３４６０１０）が示される。リクエスト有効フラグレジスタ４００が１にセットされ、アドレス値＝０ｘ１２３４６０１０がリクエストアドレスレジスタ４０１に保持される（上位アドレスフィールド４０１ａ＝０ｘ１２、インデックスフィールド４０１ｂ＝０ｘ３４６、下位アドレスフィールド４０１ｃ＝０ｘ０１０）。
【００５７】
引き続きインデックスフィールド４０１ｂの値＝０ｘ３４６でアドレス空間テーブル４０２のテーブルを引き、アドレス空間テーブル４０２の０ｘ３４６番目を参照して有効ビット列４０２ａの出力（有効フラグ）、上位アドレス列４０２ｂの出力（上位アドレス）＝０ｘ１２、ウェイ指定フラグ列４０２ｇの出力（ウェイ指定フラグ）＝１、ウェイ番号列４０２ｈの出力（ウェイ番号）＝３が出力される。上位アドレスフィールド４０１ａの出力と上位アドレス列４０２ｂの出力が一致するので、比較器４０３の出力＝１となり、ウェイ指定フラグ列４０２ｇの出力＝１なのでＡＮＤ回路４２１の出力＝１となり、キャッシュのウェイ３への書き込みを指示するキャッシュウェイ指定信号４２ｂ＝１、キャッシュウェイ番号信号４２ｃ＝３がキャッシュメモリ装置２に伝達される。
【００５８】
図７により、このキャッシュウェイ指定信号４２ｂ＝１のとき、追出すウェイはキャッシュウェイ番号信号４２ｃで指定されるウェイ３になる。
図７に示すように、キャッシュメモリ装置２へセレクタ２９を追加することによってウェイを選択する機能を実現することができる。セレクタ２９は、キャッシュウェイ指定信号４２ｂの値によって追い出すウェイを選択する。
【００５９】
このように、この実施の形態では、情報処理装置は、ウェイ番号によって指定される複数のキャッシュメモリから構成される場合のプリフェッチ機能の一例を説明した。
プリフェッチ制御機構４では、アドレス空間テーブル４０２のエントリそれぞれは、さらに、ウェイ番号を格納するウェイ番号フィールド（ウェイ番号列４０２ｈは一例）と、上記ウェイ番号フィールドが有効であることを示すウェイ番号有効フラグ（ウェイ指定フラグ列４０２ｇは一例）とを有し、上記第１アドレスフィールド（上位アドレス列４０２ｂ）に格納された値（上位部分のアドレスと比較する値）と上記アドレスレジスタ（リクエストアドレスレジスタ４０１）の上位部分とが一致し、かつ、上記第１プリフェッチフラグ（有効ビット列４０２ａ）がプリフェッチを指定した場合であって、上記ウェイ番号有効フラグが有効を示している場合に、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとをキャッシュメモリ装置２へ出力する例を説明した。
また、キャッシュメモリ装置２は、上記ウェイ番号フィールドで指定されたキャッシュメモリへ、プリフェッチをする機能（一例としてセレクタの追加）を有する例を説明した。
【００６０】
この実施の形態では、キャッシュブロックの制御の方式（明示的なウェイ指定）をアドレス空間テーブルに格納することで、キャッシュのウェイを限定したキャッシュ指示を断続的なアドレス空間で可能となった。
【００６１】
実施の形態６．
これまでの実施の形態では、アドレスのインデックス部が同一のものは２つ以上アドレス空間を設定することができなかった。例えば、実施の形態１では、０ｘ１２３４５０００〜０ｘ１２３４５ｆｆｆと０ｘ１３３４５０００〜０ｘ１３３４５ｆｆｆを同時に設定することはできない。インデックス０ｘ３４５が重なるためである。この課題は、図８のように、アドレス空間テーブルを２面持つ方法で解決できる。図８は、図２と同様の機能に加えて、もう一面のアドレス空間テーブル４３０を備える。アドレス空間テーブル４３０は、有効ビット列４３０ａ、上位アドレス列４３０ｂを備える。さらに、図２に比較回路４３１、ＡＮＤ回路４３２、ＡＮＤ回路４３３、ＯＲ回路４３４とが追加されている。
【００６２】
次に、動作例について説明する。
まず、システムとして０ｘ１２３４５０００から０ｘ１２３４５ＦＦＦと０ｘ１３３４５０００から０ｘ１３３４５ｆｆｆまでのアドレス空間をプリフェッチ空間として設定する。この場合、図８のアドレス空間テーブル４０２の０ｘ３４５番目のエントリの有効ビット列４０２ａ＝１、上位アドレス列４０２ｂ＝０ｘ１２、アドレス空間テーブル４３０の０ｘ３４５番目のエントリの有効ビット列４３０ａ＝１、上位アドレスフィールド４３０ｂ＝０ｘ１２を設定する。
【００６３】
図８にて、メモリリクエストを受信したプリフェッチ制御機構４の動作を詳細に示す。メモリリクエスト信号線１１経由でメモリリクエスト（アドレス＝０ｘ１２３４５０１０）が来た場合、リクエスト有効信号１１ａ＝１になり、リクエストアドレス信号１１ｂに所望のアドレス（０ｘ１２３４５０１０）が示される。リクエスト有効フラグレジスタ４００が１にセットされ、アドレス値＝０ｘ１２３４５０１０がリクエストアドレスレジスタ４０１に保持される（上位アドレスフィールド４０１ａ＝０ｘ１２、インデックスフィールド４０１ｂ＝０ｘ３４５、下位アドレスフィールド４０１ｃ＝０ｘ０１０）。引き続きインデックスフィールド４０１ｂの値＝０ｘ３４５でアドレス空間テーブル４０２のテーブルを引き、アドレス空間テーブル４０２の０ｘ３４５番目のエントリを参照して、有効ビット列４０２ａ（有効フラグ）の出力＝１、上位アドレス列４０２ｂ（上位アドレス）の出力＝０ｘ１２が出力される。
【００６４】
アドレス空間テーブル４０２の結果の上位アドレス列４０２ｂと上位アドレスフィールド４０１ａを比較器４０３で比較し、どちらも値＝０ｘ１２なので結果＝１が出力される。有効ビット列４０２ａの出力（有効ビット）とこの結果よりＡＮＤ回路４３２の出力は１となり、ＯＲ回路４３４の出力＝１となる。リクエスト有効フラグレジスタ４００の出力＝１なのでＡＮＤ回路４０４の出力＝１となり、プリフェッチ有効信号４１ａ＝１となり、プリフェッチ有効信号がキャッシュメモリ装置２に伝達される。
【００６５】
また、メモリリクエスト信号線１１経由でメモリリクエスト（アドレス＝０ｘ１３３４５０１０）が来た場合、リクエスト有効信号１１ａ＝１になり、リクエストアドレス信号１１ｂに所望のアドレス（０ｘ１３３４５０１０）が示される。リクエスト有効フラグレジスタ４００が１にセットされ、アドレス値＝０ｘ１３３４５０１０がリクエストアドレスレジスタ４０１に保持される（上位アドレスフィールド４０１ａ＝０ｘ１３、インデックスフィールド４０１ｂ＝０ｘ３４５、下位アドレスフィールド４０１ｃ＝０ｘ０１０）。引き続きインデックスフィールド４０１ｂの値＝０ｘ３４５でアドレス空間テーブル４３０のテーブルを引き、アドレス空間テーブル４３０の０ｘ３４５番目を参照して、有効フラグ＝１、上位アドレス＝０ｘ１３が出力される。
【００６６】
アドレス空間テーブル４３０の結果の上位アドレス列４３０ｂと上位アドレスフィールド４０１ａを比較回路４３１で比較し、どちらも値＝０ｘ１３なので結果＝１が出力される。有効ビット列４３０ａの出力（有効ビット）とこの結果よりＡＮＤ回路４３３の出力は１となり、ＯＲ回路４３４の出力も１となる。リクエスト有効フラグレジスタ４００の出力＝１なのでＡＮＤ回路４０４の出力＝１となり、プリフェッチ有効信号４１ａ＝１となり、プリフェッチ有効信号がキャッシュメモリ装置２に伝達される。即ち、アドレス＝０ｘ１２３４５０１０とアドレス＝０ｘ１３３４５０１０の両者に対してプリフェッチ有効信号４１ａを出力できた。
【００６７】
上記の方法は、アドレス空間テーブルを２面持ち、２つの同一インデックスの衝突の問題を回避した。３つの同一インデックスの場合は、上記の方法では解決できないが、このような場合は、確率が極めて小さくなり、性能に与える影響は小さいと考えられる。また、アドレス空間テーブルを３面持つことで、３つの同一インデックスの問題も解決できる。Ｎ個のインデックスの衝突の問題はアドレス空間テーブルをＮ面もてば解決でき、Ｎは性能とコストのトレードオフで決定すればよい。
【００６８】
この実施の形態では、アドレス空間テーブルを複数面持つことで、設定すべきアドレスの衝突を回避し、アドレス空間の指示の自由度をあげることができる。
【００６９】
実施の形態７．
上記実施の形態では、リクエストアドレスレジスタ４０１のアドレス３２ビットを、上位アドレスフィールド４０１ａを８ビット、インデックスフィールド４０１ｂを１２ビット、下位アドレスフィールド４０１ｃを１２ビットとして説明したが、これらのビット数の分割は一例であり、他のビット数で分割することも可能である。
【００７０】
また、実施の形態１から６では明記していないが、アドレス空間テーブル４０２へ格納するデータそれぞれは、プリフェッチ方式及び方法を実行する前に格納される。情報処理装置は、予め、格納するデータを入力装置から入手し、入手したデータをアドレス空間テーブル４０２へ格納する。
入力装置は、情報処理装置へデータを入力する機能を有する。例えば、キーボード、マウス等から利用者によってデータが入力される場合、情報処理装置が通信網に接続されている場合、通信網を介してデータが入力される場合、あるいは、記録媒体に記録されたデータを情報処理装置が記録媒体を読み取る装置を介してデータを入力する場合等がある。
【００７１】
実施の形態８．
上記実施の形態では、ハードウェアを用いたプリフェッチ方式（情報処理装置）及びプリフェッチ方法を説明したが、これに限られることはない。
プリフェッチ方式は、ハードウェア、ファームウェア、ソフトウェアそれぞれ、あるいは、上記の組合せによって実現することも可能である。
また、上記プリフェッチ方式は、プログラム（プリフェッチプログラム）によって実現することも可能である。
【００７２】
プリフェッチプログラムは、プロセッサ１と主記憶装置３とキャッシュメモリ装置２とを備える情報処理装置（計算機）によって実行され、リクエストアドレスレジスタ４０１に格納された主記憶装置３のアドレスに記憶されたデータをキャッシュメモリ装置２へ予め読み込むことを指示する。
プリフェッチプログラムは、情報処理装置の主記憶装置３に記憶され、キャッシュメモリ装置２（あるいは、同等のメモリ）に読み出され、プロセッサ１によって実行されることになる。
【００７３】
上記プリフェッチプログラムは、以下の手順を有する。
（１）プリフェッチ処理を開始する前に、プリフェッチを指示する第１プリフェッチフラグと、上記主記憶装置３のアドレスの一部分を格納する第１アドレスフィールドとを有するアドレス空間テーブル４０２を設置する手順。
（２）上記アドレス空間テーブルに格納するデータを予め入手し、入手したデータを上記アドレス空間テーブル４０２へ格納する手順と、
リクエストアドレスレジスタ４０１へプロセッサから出力されたアドレスを設定する手順。
（３）上記リクエストアドレスレジスタ４０１のアドレスの一部分と、上記第１アドレスフィールドに格納されたアドレスの一部分とが一致するか否かを判断する手順。
（４）判断した結果一致し、かつ、上記第１プリフェッチフラグがプリフェッチを指示することを判断し、プリフェッチを指示することを決定する手順。
（５）プリフェッチ指示信号とリクエストアドレスレジスタ４０１へ格納したアドレスとをキャッシュメモリ装置２へ出力する手順。
【００７４】
また、上記プリフェッチプログラムは、計算機で読み取り可能な記録媒体に記録することが可能である。記録媒体に記録されたプリフェッチプログラムは、上記と同様にキャッシュメモリ装置２等に読み込まれ（ロードされ）、プロセッサ１によって実行される。
【００７５】
【発明の効果】
本発明では、プリフェッチの有無をアドレス空間テーブルに格納して、そのテーブルをアドレスの一部を利用して検索し、プリフェッチの有無の指示を即座に判定できるようにしたので、断続的なアドレス空間に対してプリフェッチ指定が可能となった。
【図面の簡単な説明】
【図１】この発明の実施の形態１〜６を示す情報処理装置全体を表すブロック図である。
【図２】この発明の実施の形態１を示すプリフェッチ制御回路を表すブロック図である。
【図３】この発明の実施の形態２を示すプリフェッチ制御回路を表すブロック図である。
【図４】この発明の実施の形態２を示すプリフェッチ制御回路の動作を表す波形図である。
【図５】この発明の実施の形態３を示すプリフェッチ制御回路を表すブロック図である。
【図６】この発明の実施の形態４と５を示すプリフェッチ制御回路を表すブロック図である。
【図７】この発明の実施の形態５を示すキャッシュメモリ装置のＬＲＵ決定回路を表すブロック図である。
【図８】この発明の実施の形態６を示すプリフェッチ制御回路を表すブロック図である。
【符号の説明】
１  プロセッサ、２  キャッシュメモリ装置、３  主記憶装置、４  プリフェッチ制御機構（プリフェッチ制御装置）、１１  メモリリクエスト信号線、１１ａ  リクエスト有効信号、１１ｂ  リクエストアドレス信号、１２  データ線、２１  フェッチ要求線、２９  セレクタ、３１  データ線、４１  プリフェッチ要求信号線、４２  キャッシュ指示信号線、４００  リクエスト有効フラグレジスタ、４０１  リクエストアドレスレジスタ、４０１ａ  上位アドレスフィールド、４０１ｂ  インデックスフィールド、４０１ｃ  下位アドレスフィールド、４０２  アドレス空間テーブル、４０２ａ  有効ビット列、４０２ｂ  上位アドレス列、４０２ｃ  ブロック個数フィールド列、４０２ｄ  保守的プリフェッチフラグ列、４０２ｅ  前リクエスト下位アドレス列、４０２ｆ  キャッシュバイパスフラグ列、４０２ｇ  ウェイ指定フラグ列、４０２ｈ  ウェイ番号列、４０３  比較器、４０４  ＡＮＤ回路、４０５  加算器、４０６  回数制御回路、４０７  セレクタ、４０８  加算器、４０９  比較器、４１０  ＡＮＤ回路、４１１  ＮＯＴ素子、４１２  ＯＲ回路、４２０  ＡＮＤ回路、４２１  ＡＮＤ回路、４３０  アドレス空間テーブル、４３０ａ  有効ビット列、４３０ｂ  上位アドレス列、４３１  比較回路、４３２  ＡＮＤ回路、４３３  ＡＮＤ回路、４３４  ＯＲ回路。
【図１】
2004240811.tif 000003
【図２】
2004240811.tif 000004
【図３】
2004240811.tif 000005
【図４】
2004240811.tif 000006
【図５】
2004240811.tif 000007
【図６】
2004240811.tif 000008
【図７】
2004240811.tif 000009
【図８】
2004240811.tif 000010