(57)【要約】【課題】本発明は、精度が高い予測によるプリフェッチを実現することを目的とする。【解決手段】プリフェッチアドレスキュー２５に、過去のメモリアクセスに基く複数のアドレス値を記憶しておき、リクエストアドレスレジスタ２１内のプロセッサユニットからの要求アドレスが、このアドレス値と一致した場合、要求アドレスにブロックサイズを加えたプリフェッチアドレスをプリフェッチ要求として二次キャッシュに出力する。またこのプリフェッチアドレスは、プリフェッチアドレスキュー２５に書き戻される。【選択図】　　　図２
2004038345.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリ手段と、
過去にメモリアクセスを行ったアドレスに基づいたアドレス値を記録するアドレス記録手段と、
アクセス要求があった要求アドレスと、前記アドレス記録手段に記録されている前記アドレス値の比較の結果に基づいて、前記キャッシュメモリ手段にプリフェッチ要求を行うプリフェッチ要求手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
キャッシュメモリ手段を備えた情報処理装置で用いられるプリフェッチ制御装置において、
過去にメモリアクセスを行ったアドレスに基づいたアドレス値を記録するアドレス記録手段と、
アクセス要求があったアドレスと前記アドレス記録手段に記録されたアドレス値との比較の結果に基いて、前記キャッシュメモリ手段にプリフェッチ要求を行うプリフェッチ要求手段と、
を備えることを特徴とするプリフェッチ制御装置。
【請求項３】
請求項１又は２に記載の装置であって、
前記プリフェッチ要求手段は、前記アドレス値から求めたプリフェッチアドレスを前記キャッシュメモリ手段に示すことにより前記プリフェッチ要求を行うことを特徴とする装置。
【請求項４】
請求項１乃至３の何れか１つに記載の装置であって、
前記アドレス記録手段は、プリフェッチを行う方向を示す方向フラグを前記アドレス値と関連付けて記録し、前記プリフェッチ要求手段は、前記アドレス値と前記方向フラグに基づいてプリフェッチアドレスを求め、前記プリフェッチ要求を行うことを特徴とする装置。
【請求項５】
請求項１乃至４の何れか１つに記載の装置であって、
前記アドレス記録手段は、複数の前記アドレス値を記録し、新たなアドレス値を記録する際、該複数のアドレス値の登録順序に基いて前記アドレス値の置き換えを行うことを特徴とする装置。
【請求項６】
請求項３乃至５の何れか１つに記載の装置であって、
前記アドレス記録手段は、前記要求アドレスと前記プリフェッチアドレスとの差を示す差分値情報を前記アドレス値と対応付けて記録することを特徴とする装置。
【請求項７】
請求項６に記載の装置であって、
前記プリフェッチ要求手段は、前記プリフェッチアドレスとプリフェチするデータの大きさを示すことにより、前記プリフェッチ要求を行うことを特徴とする装置。
【請求項８】
請求項１乃至７の何れか１つに記載の装置であって、
前記アドレス記憶手段は、書き込み要求かどうかを示す第１のタイプ情報を前記アドレス値と対応付けて記録し、前記プリフェッチ要求は、前記タイプ情報に基いた書き込み要求かどうかを示す第２のタイプ情報を含むことを特徴とする装置。
【請求項９】
請求項１乃至８の何れか１つに記載の装置であって、
前記プリフェッチ要求手段は、複数の前記要求アドレスと前記アドレス値を比較する手段を備え、同時に複数の要求アドレスからプリフェッチ要求を生成することを特徴とする装置。
【請求項１０】
請求項１乃至９の何れか１つに記載の装置であって、
前記キャッシュメモリ手段は、該キャッシュメモリ手段の上位となる上位キャッシュメモリ手段を備えることを特徴とする装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置で行われるプリフェッチについての技術に関する。
【０００２】
【従来の技術】
従来から、ＣＰＵと主記憶装置の間にキャッシュメモリを持ちメモリアクセスの高速化を図る等の方法によってコンピュータの処理速度を高めてきた。
【０００３】
更に近年では、メモリアクセスに要する時間とＣＰＵの命令実行サイクルとの差は益々大きくなってきており、キャッシュメモリのヒット率向上やキャッシュミスレイテンシの改善がさらに望まれている。
【０００４】
このような問題に対する一つの方法として、プリフェッチによるものがある。
プリフェッチは、近い将来必要とされている命令もしくはデータを予め予測してキャッシュメモリ等に読み込んでおく手法で、キャッシュのヒットミス率を下げることが出来る。しかし、不要なデータをプリフェチするとその分必要なデータをキャッシュから追い出してしまうこととなり、かえってキャッシュのヒット率を下げてしまう可能性もある。その為、プリフェッチする命令やデータのアドレスを如何に高い精度で予測を行うかが重要な課題となっている。
【０００５】
プリフェッチはコンパイラ等により挿入されたプリフェッチ命令により行うソフトウエアプリフェッチによる方法と、ハードウェアにより予測実行する方法に大別される。例えばハードウェアによるプリフェッチでは、キャッシュミスしたブロックの次のブロックをプリフェッチする方法などはよく知られている。
【０００６】
【発明が解決しようとする課題】
前述の通り、プリフェッチ制御においてはプリフェッチアドレスの予測が重要な課題となっている。つまり、必要なプリフェッチを要求しながらも、なるべく無駄なプリフェッチは抑制しなければいけない。
【０００７】
キャッシュミスブロックの次のブロックをプリフェッチする方法では、キャッシュミスの時のみプリフェッチが行われる為、複数ブロックを連続してアクセスする場合では、明らかにプリフェッチするブロック数に不足がある。またこの点を補う為、連続したブロックを予めプリフェッチしておく方法もあるが、この場合にはプリフェッチするデータが大きくなるので、予測が外れると大きな無駄が発生する。
【０００８】
また、連続したアドレスをアクセスしている場合でも、複数のデータ域間で転送している場合など別々のデータ域への連続したアクセスが混在している状況では、単純なリクエストアドレスの前後関係だけでは予測が難しい。
【０００９】
本発明は、上記課題を解決するプリフェッチ制御装置、情報処理装置及びプリフェッチ制御方法を提供することを目的とする。
【００１０】
【課題を解決するための手段】
上記課題を解決する為、本発明による情報処理装置は、キャッシュメモリ手段、アドレス記録手段及びプリフェッチ要求手段を備える。
【００１１】
アドレス記録手段は、過去にメモリアクセスを行ったアドレスに基づいたアドレス値を記録する。
プリフェッチ要求手段と、アクセス要求があった要求アドレスと、上記アドレス記録手段に記録されている上記アドレス値の比較の結果に基づいて、上記キャッシュメモリ手段にプリフェッチ要求を行う。
【００１２】
また本発明によるプリフェッチ制御装置は、キャッシュメモリ手段を備えた情報処理装置で用いられることを前提とし、上記アドレス記憶手段と上記プリフェッチ要求手段を備える。
【００１３】
この構成により精度が高い予測によるプリフェッチを実現することが出来る。
上記プリフェッチ要求手段は、上記アドレス値から求めたプリフェッチアドレスを上記キャッシュメモリ手段に示すことにより上記プリフェッチ要求を行う。そしてこのプリフェッチアドレスに基いたアドレス値を上記アドレス記録手段に記録することにより、連続した領域をプリフェッチすることが出来、またその領域へのアクセスを止めれば、それ以上続けて連続した領域をプリフェッチすることはない。
【００１４】
上記アドレス記録手段は、例えばプリフェッチを行う方向を示す方向フラグを上記アドレス値と関連付けて記録し、上記プリフェッチ要求手段は、上記アドレス値から求めたプリフェッチアドレスと上記方向フラグに基いたプリフェッチを行う方向を上記キャッシュメモリ手段に示すことによって、上記プリフェッチ要求を行う。これにより、昇順方向だけでなく降順方向へのアクセスに対してもプリフェッチを行える。
【００１５】
上記アドレス記録手段は、例えば複数の上記アドレス値を記録し、新たなアドレス値を記録する際、該複数のアドレス値の登録順序に基いて上記アドレス値の置き換えを行う。これにより、使われない不要なアドレス値は破棄され、ヒットする可能性の高い、新しいアドレス値がアドレス記録手段内に残る。
【００１６】
上記アドレス記録手段は、例えば上記要求アドレスと上記プリフェッチアドレスとの差を示す差分値情報を上記アドレス値と対応付けて記録する。そしてこの差分値情報を用いて、要求アドレスを求めることによって、要求アドレスから複数ブロック先のデータまでプリフェッチすることが出来る。
【００１７】
上記プリフェッチ要求手段は、上記プリフェッチアドレスとプリフェチするデータの大きさを示すことにより、上記プリフェッチ要求を行うことによって、プリフェッチされない領域が生じるのを防ぐ。
【００１８】
上記アドレス記憶手段は、例えば書き込み要求かどうかを示す第１のタイプ情報を上記アドレス値と対応付けて記録し、上記プリフェッチ要求は、上記タイプ情報に基いた書き込み要求かどうかを示す第２のタイプ情報を含む。これにより、キャッシュ手段に、プリフェッチするデータを書き込み可能な状態でプリフェッチするかどうかを指示することが出来る。
【００１９】
上記プリフェッチ要求手段は、例えば複数の上記要求アドレスと上記アドレス値を比較する手段を備え、同時に複数の要求アドレスからプリフェッチ要求を生成する。これにより二つの異なるキャッシュアクセスに対して同時にプリフェッチアドレスの予測が可能になる。
【００２０】
また上記キャッシュメモリ手段は、該キャッシュメモリ手段の上位となる上位キャッシュメモリ手段を備える構成とすることも出来る。これにより、下位にあるキャッシュメモリ手段に対して、プリフェッチ要求がなされるので、上位キャッシュメモリへのプリフェッチ処理による影響を押さえつつ上位キャッシメモリュのミスレイテンシを改善できる。
【００２１】
またキャッシュメモリ手段を備えた情報処理装置で行われるプリフェッチ制御方法も本発明の適用範囲である。
【００２２】
【発明の実施の形態】
図１は本実施形態におけるコンピュータシステムのＣＰＵ及びその周辺構成の概略図である。
【００２３】
図１の構成では、プロセッサユニット１、プリフェッチ制御装置２、一次キャッシュ３、二次キャッシュ４及び主記憶装置５を有している。
プロセッサユニット１は、ＡＬＵ、レジスタ等を含み、実際の計算やデータ処理を司る部分である。また同図の構成では、分岐予測等もプロセッサユニット１内で行われ、予測結果に基いたリクエストを１次キャッシュ３に行う。プリフェッチ制御装置２は、プリフェッチ処理の制御全般を受け持つ装置で、プロセッサユニット１から一次キャッシュ３へのリクエストアドレスを監視ながら、二次キャッシュ４にプリフェッチを要求する。一次キャッシュ３は、一次キャッシュシステムで、アクセス速度の早いメモリと一次キャッシュ制御装置から構成されている。二次キャッシュ４は、二次キャッシュシステムで、主記憶装置５よりはアクセス速度が早く一次キャッシュ３より容量の大きなメモリと二次キャッシュ制御装置から構成されている。また本実施形態では、プリフェッチされたデータはこの二次キャッシュ４に保持される。主記憶装置５は、ＤＲＡＭ等によって構成されるメモリである。
【００２４】
プロセッサユニット１が、主記憶装置５上のデータにアクセスする際は、要求アドレスをリクエストアドレス６から指定し、読み出し時にはフェッチデータ７を読み出し、書き込み時にはストアデータ８として一次キャッシュ３に出力する。
【００２５】
一次キャッシュ３は、プロセッサユニット１からの読み出し要求に対して、要求アドレスのデータを自己が保持していれば、そのデータをフェッチデータ７としてプロセッサユニット１に出力し、保持していない場合には、リクエストバス１１からそのデータを含む１ライン分のデータを二次キャッシュ４に対して要求すると共にキャッシュミス９としてプリフェッチ制御装置２に通知する。そして、フェッチデータ１２を受け取ると、プロセッサユニット１に要求されたデータをフェッチデータ７として出力する。また一次キャッシュ３は、自己が保持しているキャッシュデータが更新された場合、適当なタイミングでデータバス１３からそのデータを二次キャッシュ４にライトバックする。
【００２６】
二次キャッシュ４は、一次キャッシュ３からのデータの要求に対して、そのデータを保持していれば、そのデータを含む１ライン分のデータをフェッチデータ７として一次キャッシュ３に出力し、保持していない場合には、リクエストバス１４からそのデータを含む１ライン分のデータを主記憶装置５に対して要求する。そして、フェッチデータ１５を受け取ると、１ライン分のデータを一次キャッシュ３に出力する。また二次キャッシュ４は、一次キャッシュ３と同様、自己が保持しているキャッシュデータが更新されると、適当なタイミングでデータバス１６からそのデータを主記憶装置５にライトバックする。
【００２７】
プロセッサユニット１が一次キャッシュ３に対してデータを要求する時、アドレスバス６でアドレスを指定するが、このアドレス値をプリフェッチ制御装置２は監視し、自己が備えているプリフェッチアドレスキューをこのアドレス値によって検索する。そしてこのアドレスが、プリフェッチアドエスキューに存在するアドレスを先頭とする１ブロック中にある（以下、ヒットするという）場合、プリフェッチアドレスバス１０から二次キャッシュ４にプリフェッチ要求アドレスを出力してプリフェッチ要求を行を行うと共にアドレスをプリフェッチアドレスキュー２５に登録し、またプリフェッチアドレスキュー内に存在しない場合はプリフェッチを要求しない。尚プリフェッチアドレスキューに一致するアドレスが存在しなくても、一次キャッシュ３から制御信号９によってキャッシュミスが報告されると、プリフェッチ制御装置２はこのアドレスのプリフェッチアドレスキューへの登録動作に入る。
【００２８】
図２は第１の実施形態におけるプリフェッチ処理の基本動作を説明する図である。
第１の実施形態では、プリフェッチ制御装置２によって、特定の大きさを持つブロック単位でデータを二次キャッシュ４にプリフェッチする。尚ブロックサイズは任意であるが、以下の例では二次キャッシュ４の１ライン（キャッシュ動作において扱われる二次キャッシュ４上の単位領域の大きさ）の大きさとする。
【００２９】
同図（ａ）は、初期状態を示し、アドレスＡを先頭アドレスとする１ブロック分のデータ（１ブロックの大きさをλとする）、即ちアドレスＡ〜Ａ＋（λ−１）のデータＤ０〜Ｄ（λ−１）が、二次キャッシュ４にプリフェッチされているものとする。この状態のとき、プリフェッチアドレスキューには、プリフェッチアドレスとしてアドレスＡが登録されている。
【００３０】
同図（ａ）の状態で、プロセッサユニット１からの要求アドレスがアドレスＡだった場合、一次キャッシュ３は二次キャッシュ４にプリフェッチされているアドレスＡのデータＤ０を読み込むと共にプロセッサユニット１に、出力する。この時、プリフェッチ制御装置２は、プロセッサユニット１から一次キャッシュ３への要求アドレスを監視し、プリフェッチアドレスキューに登録されているアドレスと比較してヒットするかどうかを調べる。
【００３１】
同図（ａ）の場合には、アドレスＡはヒットするので、プリフェッチ制御装置２は、二次キャッシュ４に対してアドレスＡ＋λから１ブロック分のデータのプリフェッチを要求すると共にプリフェッチアドレスキューに登録されているプリフェッチアドレスをＡ＋λに更新する。これにより、同図（ｂ）に示すように、二次キャッシュ４には、新たにアドレスＡ＋λ〜Ａ＋（２λ―１）のデータＤλ〜Ｄ（２λ−１）のデータがプリフェッチされる。
【００３２】
この図２（ｂ）の状態において、プロセッサユニット１による処理が進み、プロセッサユニット１から一次キャッシュ３に対してアドレスＡ＋λのデータが要求されると、このアドレスはヒットするので、プリフェッチ制御装置２は二次キャッシュ４に対して、同図（ｃ）に示すような、アドレスＡ＋２λから１ブロック分のデータのプリフェッチを要求する。
【００３３】
以降、プロセッサユニット１からの要求アドレスがヒットする度にプリフェッチ制御装置２は、二次キャッシュ４に対してそのアドレスから１ブロック分後のアドレスからのデータを１ブロックサイズ分プリフェッチするよう要求する。
【００３４】
この様に第１の実施形態のシステムでは、過去にプリフェッチキューにヒットしたアドレスにブロックサイズλを加算したアドレスを記憶しておき、このプリフェッチアドレスとプロセッサユニット１から要求があった要求アドレスを比較することによって、連続したアクセスに対して正確に予測をしてプリフェッチを行うことが出来る。
【００３５】
図３は第１の実施形態におけるプリフェッチ制御装置２の内部構成を示す図である。
同図の構成では、プリフェッチ制御装置２は内部に、リクエストアドレスレジスタ２１、一次キャッシュミスアドレスレジスタ２２、２つの加算器２３、２７、セレクタ２４、プリフェッチアドレスキュー２５、読み出しレジスタ２６、及びプリフェッチアドレスレジスタ２８を有している。
【００３６】
リクエストアドレスレジスタ２１は、アドレスバス６上のアドレス値が格納されるレジスタで、このリクエストアドレスレジスタ２１内のアドレス値に基づいたアドレス値が、プリフェッチアドレスキュー２５に格納される。一次キャッシュミスアドレスレジスタ２２は、プリフェッチアドレスキュー２５からの制御信号３１によってリクエストアドレスレジスタ２１のアドレス値が登録される。またこの時アドレス値が登録されると、待機ビットがセットされ、この待機ビットに基いて制御信号３２がプリフェッチアドレスキュー２５に出力される。プリフェッチアドレスキュー２５は、メモリアクセスのあったアドレスに基くアドレスを格納管理するもので、過去にプリフェッチアドレスキュー２５にヒットしたアドレスの次のブロックの先頭アドレスの値が複数格納されており、リクエストアドレスレジスタ２１内のアドレス値とこのプリフェッチアドレスキュー２５に格納されたアドレス値とを比較して、二次キャッシュ４にプリフェッチを要求するかどうかが判断される。プリフェッチアドレスレジスタ２８は、二次キャッシュ４にプリフェッチを要求する際に出力されるプリフェッチアドレスが格納される。
【００３７】
次に図３のプリフェッチ制御装置２の動作を説明する。
同図の構成において、まずプロセッサユニット１から一次キャッシュ３へのデータ要求の際アドレスバス６によって指定されたアドレス値は、一旦リクエストアドレスレジスタ２１に保持される。そしてリクエストアドレスレジスタ２１内のアドレス値と、プリフェッチアドレスキュー２５の各エントリに格納されているアドレス値（エントリアドレス）との比較を行う。
【００３８】
この比較の結果、アドレス値がヒットした場合には、そのエントリアドレスがレジスタ２６に読み出され、加算器２７によってレジスタ２６の値にブロックサイズλが加算され、この値がアドレスバス３４を介してプリフェッチアドレスレジスタ２８に書き込まれる。そして、このプリフェッチアドレスレジスタ２８内のアドレス値によってアドレスバス３５を介して二次キャッシュ４に対してプリフェチが要求される。またこの時、セレクタ２４はプリフェッチアドレスキュー２５からの制御信号３０によってアドレスバス３４からのデータを選択出力するように制御され、プリフェッチアドレスキュー２５に、レジスタ２６の値にブロックサイズλが加算された値が、新たなエントリアドレスとしてプリフェッチアドレスキュー２５に登録される。
【００３９】
一方、リクエストアドレスレジスタ２１内のアドレス値と、プリフェッチアドレスキュー２５内のプリフェッチアドレスとの比較の結果、ヒットしなかった場合、（エントリの読み出し及びプリフェッチ要求は行わず、またプリフェッチアドレスキュー２５内のエントリアドレスの更新も行わない為、何も行われない。
【００４０】
但しヒットしなかった場合でも、このリクエストアドレスが一次キャッシュ３でキャッシュミスを引き起こし、このことが一次キャッシュ３から制御信号９によって報告された場合には、プリフェッチアドレスキュー２５は制御信号３１によってリクエストアドレスレジスタ２１内のアドレス値を一次キャッシュミスアドレスレジスタ２２に登録するように指示する。そして一次キャッシュミスアドレスレジスタ２２にアドレス値が登録されると、待機ビットがセットされ、これがプリフェッチアドレスの新規登録の要求として制御信号３２によってプリフェッチキュー２５に通知される。これを受けてプリフェッチアドレスキュー２５は、アドレスバス３４からの登録が無い場合（登録がある場合はその登録が完了後）、制御信号３３によって、一次キャッシュミスアドレスレジスタ２２の待機ビットをリセットして登録を許可する。そしてプリフェッチアドレスキュー２５は、制御信号３０によりセレクタ２４に対しアドレスバス２９からの入力を選択出力するように制御して、レジスタ２２内の値に加算器２３でブロックサイズλを加算したアドレス値をプリフェッチアドレスキュー２５に登録する。
【００４１】
図４は図３のプリフェッチアドレスキュー２５の構成を示したものである。
図４のプリフェッチアドレスキュー制御部４０は、プリフェッチアドレスキュー２５の制御を司り、また制御信号５０、５２（図３の制御信号３１、３３に対応）によって、一次キャッシュミスアドレスレジスタ２２へのアドレス値の登録や待機ビットのリセットの制御を行ったり、制御信号５８（図３の制御信号３０に対応）によってセレクタ２４の制御を行ったりするプリフェッチアドレスキュー制御部４０、プリフェッチアドレスを格納するエントリ４２及びそのエントリ４２それぞれ対応するセレクタ４１を複数（図４ではエントリ４２−１〜４２−４及びセレクタ４１−１〜４１−４の４つ）、及びセレクタ４３を備える。
【００４２】
図４のプリフェッチアドレスキュー２５は、４つのプリフェッチアドレスが登録されるＦＩＦＯ形式のキューとして動作し、ヒットしないで新たなアドレス値が登録される時は、エントリ４２−１に格納されているアドレス値がエントリ４２−２へ、エントリ４２−２に格納されているアドレス値がエントリ４２−３へ、エントリ４２−３に格納されているアドレス値がエントリ４２−４へシフトされると共に、新規アドレス値はエントリ４２−１に登録される。また要求アドレスがヒットした時は、そのヒットしたアドレス値をエントリから削除すると共に、そのアドレス値にブロックサイズλを加えた大きさのアドレス値をエントリ４２−１に登録することによってエントリアドレスを更新する。
【００４３】
図５は、図４のエントリ４２の構成を示す図である。
同図のエントリ４２にはエントリ４２に登録されるアドレス値がセットされるレジスタ６１及び比較器６２を備える。レジスタ６１は、アドレス値の他に状態フラグとして働く有効ビット及び待機ビットを記録している。比較器６２は、アドレスバス４９から入力されるリクエストアドレスレジスタ２１内のアドレス値とレジスタ６１にセットされているアドレス値を比較しその結果を制御信号４７としてプリフェッチアドレスキュー制御部４０に出力する。
【００４４】
レジスタ６１内の有効ビットは、レジスタ６１にセットされているアドレス値が有効かどうかを示すもので、セレクタ６１からアドレス値がレジスタ６１に登録される時セットされ、このエントリ４２からアドレス値が読み出された時にプリフェッチアドレスキュー制御部４０からの制御信号４５によってリセットされる。待機ビットは、有効ビットがセットされているエントリにおいて、アドレスバス４９から入力されるアドレス値がヒットした場合セットされる。プリフェッチアドレスキュー制御部４０は、制御信号として通知されるこの待機ビットの状態から読み出しを行うエントリを決定する。
【００４５】
以下に図４及び図５を用いてプリフェッチアドレスキュー２５の動作を説明する。
プロセッサユニット１からの要求アドレスはリクエストアドレスレジスタ２１に格納され、アドレスバス４８を通じて各エントリ４２−１〜４２−４に入力される。各エントリ４２−１〜４２−４では、有効ビットがセットされている時、このアドレス値とレジスタ６１にセットされているアドレス値とを比較器６２によって比較し、ヒットすれば、制御信号４７によってプリフェッチアドレスキュー制御部４０に通知すると共にレジスタ６１の待機ビットをセットする。
【００４６】
次にプリフェッチアドレスキュー制御部４０は、各エントリの待機ビットを元に読み出すエントリを決定し、制御信号５６によってセレクタ４３を制御して、そのエントリ４２に登録されているアドレス値をプリフェッチ要求としてアドレスバス５７からレジスタ２６に出力すると共に、制御信号４５によってそのエントリ４２の有効ビットをリセットする。
【００４７】
また、一次キャッシュ３から制御信号４９によってキャッシュミスが通知された時、プリフェッチアドレスキュー制御部４０は、制御信号４６−１〜４６−４から通知された各エントリ４２−１〜４２−４でのアドレス比較の結果を調べる。そして、どのエントリ４２−１〜４２−４でもヒットしない時、制御信号５０によって、一次キャッシュミスアドレスレジスタ２２にリクエストアドレスレジスタ２１内のアドレス値を登録するように指示する。
【００４８】
一次キャッシュミスアドレスレジスタ２２から制御信号５１によって一次キャッシュミスアドレスレジスタ２２内のアドレス値をエントリアドレスとして登録するよう要求された時、あるいはエントリ４２からアドレス値の読み出しが完了した直後、プリフェッチアドレスキュー制御部４０は、セレクタ４１−１に対しアドレスバス５３からの入力をアドレスバス５４−１に選択出力するように制御信号４４−１によって制御して、アドレスバス５３から入力されるアドレス値をエントリ４２−１に登録する。
【００４９】
アドレスバス５３から新たなアドレス値がセットされる時、エントリ４２−１内の有効ビットがセットされていた場合、プリフェッチアドレスキュー制御部４０は、制御信号４４−２によってセレクタ４１−２にアドレスバス５５−１から入力されるアドレス値をアドレスバス５４−２に出力するよう制御して、エントリ４２−２にエントリ４２−１にセットされていたアドレス値をセットする。同様にエントリ４２−２、４２−３内の有効ビットがセットされていた場合、セレクタ４１−３及び４１−４を制御信号４４−３及び４４−４によって制御して各エントリ４２−３及び４２−４にセットされているアドレス値を下位のエントリにシフトしてゆく。またこの時上位のエントリ４２の値が新たにされないエントリ４２に対しては、プリフェッチアドレスキュー制御部４０は、制御信号４５によってセレクタ４１を制御して、そのエントリ４２にセットされているアドレス値を書き戻すように制御する。
【００５０】
図６にプリフェッチアドレスキュー２５に登録されているアドレス値の変化の一例を示す。尚同図、後述する図１１、図１６及び以下の説明では、エントリ４２−１に登録されている最新のアドレス値をエントリ０（ｅｎｔｒｙ０）、エントリ４２−２、４２−２及び４２−４に登録されているアドレス値をエントリ１（ｅｎｔｒｙ１）、エントリ２（ｅｎｔｒｙ２）及びエントリ３（ｅｎｔｒｙ３）と、また有効ビットがリセットされているエントリはｅｍｐｔｙと記載する。
【００５１】
同図（ａ）は、初期状態を示し、プリフェッチアドレスキュー２５のエントリ０、１、２、３として、順にプリフェッチアドレスＡ、Ｂ、Ｃ、Ｄが既に登録されている。
【００５２】
この図６（ａ）の状態において、一次キャッシュ３でアドレスＥに対してキャッシュミスが生じたことが報告されると、同図（ｂ）に示すように、プリフェッチアドレスキュー２５には、アドレス値Ｅにブロックサイズλを加えたアドレス値Ｅ＋λが、エントリ０として登録される。またこの時、エントリ０〜エントリ２に登録されていたアドレス値Ａ〜Ｃは、エントリ１〜エントリ３にシフトされ、エントリ３に登録されていたアドレス値Ｄは破棄される。
【００５３】
同図（ｂ）の状態において、プロセッサユニット１からアドレスＡに対してキャッシュアクセスがあった場合の変化を、同図（ｃ）及び同図（ｄ）に示す。
同図（ｂ）の状態において、プロセッサユニット１からアドレスＡに対してキャッシュアクセスがあると、ヒットしたエントリ１が読み出されると共に有効ビットがリセットされて無効化され、同図（ｃ）に示す状態となる。プリフェッチ制御装置２は、アドレスＡ＋λ（ブロックサイズ）で二次キャッシュ４に対してプリフェッチを要求すると同時に、同図（ｄ）に示すように、このアドレスの値をプリフェッチアドレスキュー２５に登録する。この時同図（ｃ）でエントリ０だったアドレス値Ｅ＋λは無効（ｅｍｐｔｙ）となっているエントリ１にシフトされる。
【００５４】
同図（ｄ）の状態において、プロセッサユニット１からアドレスＢに対してキャッシュアクセスがあると、ヒットしたエントリ２が読み出されると共に有効ビットがリセットされて無効化され、同図（ｅ）に示す状態となる。プリフェッチ制御装置２は、アドレスＢ＋λで二次キャッシュ４に対してプリフェッチを要求すると同時に、同図（ｆ）に示すように、このアドレス値をプリフェッチアドレスキュー２５に登録する。この時に同図（ｅ）でエントリ０だったアドレス値Ａ＋λはエントリ１に、エントリ１だったアドレスＥ＋λ値は無効（ｅｍｐｔｙ）となっているエントリ２にシフトされる。
【００５５】
図７は、一次キャッシュ３でキャッシュミスが生じて、プリフェッチキュー２５にアドレスが登録される場合のタイムチャートを示す図である。
同図は、同図は、エントリ０〜３としてアドレス値Ｂ、Ｃ、Ｄ及びＥが登録された状態を初期状態として、プロセッサユニット１からアドレスＡに対して一次キャッシュ３にアクセス要求があった場合の、キャッシュミス（制御信号９、４９）、リクエストアドレスレジスタ２１、一次キャッシュミスアドレスレジスタ２２の待機ビット、一次キャッシュミスアドレスレジスタリードイネーブル（制御信号３２）、一次キャッシュミスアドレスレジスタライトイネーブル（制御信号３１）、各エントリ４２のセットされているアドレス値の変化及びプリフェッチアドレスレジスタ２８にセットされているアドレス値の変化を示している。
【００５６】
同図においては、周期２で、プロセッサユニット１からの要求アドレスＡがリクエストアドレスレジスタ２１にセットされる。そして一次キャッシュ３からキャッシュミスが制御信号９によってプリフェッチ制御装置２に通知され、一次キャッシュミスアドレスレジスタ２２のライトイネーブルがセットされると、プリフェッチ制御装置２内では、次の周期３で、一次キャッシュミスアドレスレジスタ２２にリクエストアドレスレジスタ２１の値を設定すると共に待機ビットをセットする。これによりプリフェッチアドレスキュー制御部４０は一次キャッシュミスアドレスレジスタ２２にリードイネーブル信号を送り、次の周期４で、一次キャッシュミスアドレスレジスタ２２内のアドレス値Ａにブロックサイズλを加算したアドレス値Ａ＋λをエントリ０としてエントリ４２−１にセットし、待機ビットをリセットする。またエントリ４２−１、４２−２及び４２−３にセットされていたアドレス値Ｂ、Ｃ、Ｄは、それぞれシフトされてエントリ１、２及び３としてセットされる。
【００５７】
尚同図の場合には、要求アドレスＡがヒットしなかったので、プリフェッチ制御装置２によるプリフェッチ要求は発生しないので、プリフェッチアドレスレジスタ２８にセットされている値は変化しない。
【００５８】
図８は、プリフェッチキュー２５に登録されているアドレスが要求された場合のタイムチャートを示す図である。
同図は、図６（ａ）に示す状態を初期状態として、エントリ２として登録されているアドレスＣを要求アドレスとしてプロセッサユニット１から一次キャッシュ３にアクセス要求があった場合の、リクエストアドレスレジスタ２１、各エントリ４２内の待機ビットの状態、各エントリ４２のセットされているアドレス値、及びプリフェッチアドレスレジスタ２８にセットされているアドレス値の変化を示している。
【００５９】
同図においては、周期２で、プロセッサユニット１からの要求アドレスＣがリクエストアドレスレジスタ２１にセットされる。このアドレスＣは、エントリ４２−３に登録されているので、周期３でエントリ２の待機ビットがセットされ、次の周期４で、有効ビットがリセットされてエントリ２が無効となる。
【００６０】
そして次の周期５で、一次キャッシュミスアドレスレジスタ２２内の要求アドレス値Ｃにブロックサイズλを加算したアドレス値Ｃ＋λがエントリ０としてエントリ４２−１にセットされ、またエントリ４２−１及び４２−２にセットされていたアドレス値Ａ、Ｂは、それぞれシフトされてエントリ１及び２としてエントリ４２−２及び４２−３にセットされる。また、プリフェッチアドレスレジスタ２８には、周期５でアドレス値Ｃ＋λがセットされ、このアドレス値がプリフェッチ要求として二次キャッシュ４に通知される。
【００６１】
次に第２の実施形態について説明する。
これまで説明してきた第１の実施形態では、プロセッサユニット１からの要求アドレスに対して１ブロックの大きさのデータを二次キャッシュ４にプリフェッチする際、要求アドレス＋λを先頭アドレスとした昇順の方向（アドレスが大きくなる方向）のデータをプリフェッチしていたが、第２の実施形態では、降順の方向（アドレスが小さくなる方向）のプリフェッチを実現する。降順方向のプリフェッチにより、スタックデータの処理や、配列データを逆方向に処理する場合等に対してもプリフェッチを行うことが出来る。
【００６２】
図９は、第２の実施形態におけるプリフェッチ制御装置２の構成を示す図、図１０は、プリフェッチアドレスキュー７５内のエントリ４２の構成を示す図である。尚図９のプリフェッチアドレスキュー７５は、各エントリ４２−１〜４２−４の構成が異なるだけで、他の部分は図４に示した構成と基本的には同一である。
【００６３】
図９の構成は、図３の第１の実施形態のプリフェッチ制御装置２の構成と比較すると、一次キャッシュミスアドレスレジスタ７２が、リクエストアドレスレジスタ７１のアドレス値の他に、待機ビット１及び待機ビット２がセットされる構成となっており、また読み出しレジスタ７６にはプリフェッチする方向がセットされる構成となっている。また演算器７３は、加算／減算を一次キャッシュミスアドレスレジスタ７２の待機ビット２の設定値によって切り替える構成に、演算器７７は、読み出しレジスタ７６の方向によって加算／減算を切り替える構成となっている。
【００６４】
また図１０に示す第２の実施形態のエントリ４２の構成では、図５の第１の実施形態のエントリ４２の構成と比較すると、レジスタ９１が、アドレス値、有効ビット及び待機ビットの他に方向フラグがセットされる構成となっている。尚図１０では、図５と同一の構成要素に対しては同一の番号が付してある。
【００６５】
この第２の実施形態では、エントリ４２にアドレス値と共にプリフェッチする方向を示す方向フラグをセットし、ヒットしてプリフェッチアドレスキュー７５から読みだされたアドレスに対してこの方向フラグに基いてブロックサイズλの加算／減算を行ってプリフェッチアドレスを計算する。
【００６６】
この方向フラグの決定は、プリフェッチアドレスキュー７５に共に登録されているアドレス値が生成される際、ヒットした元のアドレス値にブロックサイズλを加算して生成された場合は昇順方向（＋）、ヒットした元のアドレス値からブロックサイズλを減算して生成された場合には降順方向（−）がセットされる。
【００６７】
尚プリフェッチアドレスキュー７５内のアドレスにヒットせず、一次キャッシュ３からのミスヒット通知によってアドレスをプリフェッチアドレスキュー７５に登録する場合には、要求アドレスにブロックサイズλを加算したアドレス値と、ブロックサイズλを減算したアドレス値の両方が登録される。そして、一次キャッシュミスアドレスレジスタ７２にセットされる待機ビット１及び待機ビット２は、この時の制御の為に用いられる。
【００６８】
プリフェッチアドレスキュー７５の登録、検索、読み出し動作等、図９及び図１０に示す構成の基本的な動作は、図３及び図５を用いて説明した第１の実施形態の場合と同じであり、図９の場合は、これに待機ビット１及び待機ビット２等によるプリフェッチ方向に対する制御が更に加わる。以下の説明では、第１の実施形態と異なる部分について説明し、同一の部分については省略する。
【００６９】
一次キャッシュ３から制御信号９によってキャッシュミスが通知された場合、プリフェッチアドレスキュー７５は制御信号８１によって、リクエストアドレスレジスタ７１に登録されている要求アドレスを一次キャッシュミスアドレスレジスタ７２に登録する。この時一次キャッシュミスアドレスレジスタ７２の待機ビット１及び２はセットされる。
【００７０】
待機ビット１又は２のいずれかがセットされている時、一次キャッシュミスアドレスレジスタ７２は、プリフェッチアドレスキュー７５に対して制御信号８２によってアドレス値のプリフェッチアドレスキュー７５への登録を要求する。
【００７１】
演算器７３は、待機ビット１及び２の状態によってアドレスバス８６から入力される一次キャッシュミスアドレスレジスタ７２内のアドレス値にブロックサイズλを加算するか減算するかを決定する。待機ビット１がセットされている状態で、制御信号８３によりプリフェッチアドレスキュー７５への登録が許可されると、演算器７３は、一次キャッシュミスアドレスレジスタ７２内のアドレス値にブロックサイズλを加算した値をプリフェッチアドレスキュー７５に入力して登録すると共に待機ビット１をリセットする。またこの時方向フラグには昇順方向（＋）が、アドレス値にブロックサイズλを加算した値と共にプリフェッチアドレスキュー７５に登録される。
【００７２】
次に待機ビット１がリセットされ、待機ビット２がセットされている状態で、制御信号８３によってプリフェッチアドレスキュー７５への登録が許可された場合は、演算器７３は一次キャッシュミスアドレスレジスタ７２内のアドレス値からブロックサイズλを減算した値をプリフェッチアドレスキュー７５に入力して登録すると共に待機ビット２をリセットする。またこの時方向フラグには降順方向（−）が、アドレス値にブロックサイズλを加算した値と共にプリフェッチアドレスキュー７５に登録される。尚要求アドレスがヒットして、アドレスバス８４を介してプリフェッチアドレスキュー７５内のアドレス値を更新する際も、アドレス値と共に読み出しレジスタ７６にセットされている方向フラグも登録される。
【００７３】
また要求アドレスがヒットして、プリフェッチアドレスキュー７５からアドレス値が読み出される時、方向フラグも共に読み出されて読み出しレジスタ７６にセットされる。演算器７７は、読み出しレジスタ７６にセットされている方向フラグに基いて、アドレスバス８７から入力されるアドレス値に対してブロックサイズλを加算若しくは減算する。読み出しレジスタ７６の方向フラグに昇順方向（＋）がセットされていた場合には、演算器７７は、アドレスバス７７から入力されるアドレス値にブロックサイズλを加算した値を、方向フラグに降順方向（−）がセットされていた場合にはアドレスバス７７からのアドレス値からブロックサイズλを減算した値を、アドレスバス８４から出力する。そしてこのアドレス値は、プリフェッチアドレスレジスタ７８及びアドレスバス８５を介して、二次キャッシュ４にプリフェッチ要求として出力される。
【００７４】
図１１は第２の実施形態におけるプリフェッチアドレスキュー７５に登録されているアドレス値の変化の一例を示す図である。
同図中、＋はアドレス計算に加算を行う昇順方向（＋）、−はアドレス計算に減算を行う降順方向（−）に方向フラグがセットされていることを示している。また以下の説明では、昇順方向に方向フラグが設定されているアドレス値ＸをＸ（＋）、降順方向に方向フラグが設定されているアドレス値ＸをＸ（−）と記す。
【００７５】
同図（ａ）は、初期状態を示し、プリフェッチアドレスキュー７５のエントリ０、１、２、３として、順にプリフェッチアドレスＡ（＋）、Ｂ（−）、Ｃ（−）、Ｄ（＋）が既に登録されている。
【００７６】
この図１０（ａ）の状態において、一次キャッシュ３でアドレスＥに対してキャッシュミスが生じたことが報告されると、同図（ｂ）に示すように、プリフェッチアドレスキュー７５には、アドレス値Ｅにブロックサイズλを加えたアドレス値及び昇順方向の方向フラグＥ＋λ（＋）がエントリ０として登録される。またこの時、エントリ０〜エントリ２に登録されていたアドレス値及び方向フラグＡ（＋）、Ｂ（−）、Ｃ（−）は、エントリ１〜エントリ３にシフトされ、エントリ３に登録されていたアドレス値及び方向フラグＤ（＋）は破棄される。
【００７７】
また上記要求アドレスＥは、プリフェッチアドレスキュー７５内のアドレス値にヒットしなかったので、プリフェッチアドレスキュー７５には、同図（ｂ）に示すように、続けてアドレス値Ｅからブロックサイズλを減算したアドレス値及び降順方向の方向フラグＥ−λ（−）がエントリ０として登録される。そしてこの時、エントリ０〜エントリ２に登録されていたアドレス値及び方向フラグＥ＋λ（＋）、Ａ（＋）、Ｂ（−）は、エントリ１〜エントリ３にシフトされ、エントリ３に登録されていたアドレス値及び方向フラグＣ（−）は破棄される。
【００７８】
このように、第２の実施形態では、要求アドレスがヒットせず且つ一次キャッシュ３からヒットミスが報告されると、２つのアドレス（及び方向フラグ）がプリフェッチアドレスキュー７５に登録される。
【００７９】
同図（ｃ）の状態において、プロセッサユニット１からアドレスＢに対してキャッシュアクセスがあった場合の変化を、同図（ｄ）及び同図（ｅ）に示す。
同図（ｃ）の状態において、プロセッサユニット１からアドレスＢに対してキャッシュアクセスがあると、ヒットしたエントリ３が読み出されると共に有効ビットがリセットされて無効化され、同図（ｄ）に示す状態となる。そして読み出されたエントリ３の方向フラグは降順方向を示していたので、アドレスＢ−λを先頭アドレスとする降順のプリフェッチ要求、即ちアドレスＢ−λ〜Ｂ−２λ＋１の範囲のデータのプリフェッチ要求が一次キャッシュ３に出力される。
【００８０】
またこのプリフェッチ要求と同時に、同図（ｅ）に示すように、このアドレスの値及び方向フラグＢ−λ（−）をプリフェッチアドレスキュー７５に登録する。この時同図（ｄ）でエントリ０だったアドレス値及び方向フラグＥ−λ（−）はエントリ１へ、エントリ１だったアドレス値及び方向フラグＥ＋λ（＋）はエントリ２へ、エントリ２だったアドレス値及び方向フラグＡ（＋）は無効（ｅｍｐｔｙ）となっているエントリ３にシフトされる。
【００８１】
図１２は、一次キャッシュ３でキャッシュミスが生じて、プリフェッチキュー７５にアドレスが登録される場合のタイムチャートを示す図である。
同図は、エントリ０〜３としてアドレス値及び方向フラグＢ（＋）、Ｃ（−）、Ｄ（＋）及びＥ（＋）が登録された状態を初期状態として、プロセッサユニット１からアドレスＡに対して一次キャッシュ３にアクセス要求があった場合の、キャッシュミス（制御信号９、４９）、リクエストアドレスレジスタ７１、一次キャッシュミスアドレスレジスタ７２の待機ビット１及び待機ビット２、一次キャッシュミスアドレスレジスタリードイネーブル（制御信号８２）、一次キャッシュミスアドレスレジスタライトイネーブル（制御信号８１）、各エントリ４２のセットされているアドレス値の変化及びプリフェッチアドレスレジスタ７８にセットされているアドレス値の変化を示している。
【００８２】
同図において、ユニットプロセッサユニット１が一次キャッシュ３に対して読み出し要求を行うと、周期２で、プロセッサユニット１からの要求アドレスＡがリクエストアドレスレジスタ７１にセットされる。そして一次キャッシュ３からキャッシュミスが制御信号９によってプリフェッチ制御装置２に通知され、一次キャッシュミスアドレスレジスタ７２のライトイネーブルがセットされると、プリフェッチ制御装置２内では、次の周期３で、一次キャッシュミスアドレスレジスタ７２にリクエストアドレスレジスタ７１の値を設定すると共に待機ビット１及び待機ビット２をセットする。
【００８３】
これにより、プリフェッチアドレスキュー制御部４０は、一次キャッシュミスアドレスレジスタ７２にリードイネーブル信号を送り、次の周期４で、一次キャッシュミスアドレスレジスタ７２内のアドレス値Ａにブロックサイズλを加算したアドレス値及び方向フラグＡ＋λ（＋）がエントリ０としてエントリ４２−１にセットされると共にリクエストアドレスレジスタ７１の待機ビット１がリセットされ、またエントリ４２−１、４２−２及び４２−３にセットされていたアドレス値及び方向フラグＢ（＋）、Ｃ（−）、Ｄ（＋）は、それぞれシフトされてエントリ１、２及び３としてセットされる。
【００８４】
待機ビット２がセットされた状態にあるので、次に周期５において、一次キャッシュミスアドレスレジスタ７２内のアドレス値Ａからブロックサイズλを減算したアドレス値及び方向フラグＡ−λ（−）がエントリ０としてエントリ４２−１にセットされると共にリクエストアドレスレジスタ７１の待機ビット２がリセットされ、またエントリ４２−１、４２−２及び４２−３にセットされていたアドレス値及び方向フラグＡ＋λ（＋）、Ｂ（＋）、Ｃ（−）は、それぞれシフトされてエントリ１、２及び３としてセットされる。
【００８５】
尚同図の場合には、要求アドレスＡがプリフェッチアドレスキュー７５内のアドレス値にヒットしなかったので、プリフェッチ制御装置２によるプリフェッチ要求は発生せず、プリフェッチアドレスレジスタ７８にセットされている値は変化しない。
【００８６】
図１３はプリフェッチキュー７５に登録されているアドレスが要求された場合のタイムチャートを示す図である。
同図は、エントリ０〜３としてアドレス値及び方向フラグＡ（＋）、Ｂ（＋）、Ｃ（−）及びＤ（−）が登録された状態を初期状態として、エントリ２として登録されているアドレスＣを要求アドレスとしてプロセッサユニット１から一次キャッシュ３にアクセス要求があった場合の、リクエストアドレスレジスタ７１、各エントリ４２内の待機ビットの状態、各エントリ４２のセットされているアドレス値、及びプリフェッチアドレスレジスタ７８にセットされているアドレス値の変化を示している。
【００８７】
同図においては、周期２で、プロセッサユニット１からの要求アドレスＣがリクエストアドレスレジスタ２１にセットされる。このアドレスＣは、エントリ４２−３に登録されているので、周期３でエントリ２の待機ビットがセットされ、次の周期４で、有効ビットがリセットされてエントリ２が無効となる。
【００８８】
そして次の周期５で、一次キャッシュミスアドレスレジスタ２２内の要求アドレス値Ｃからブロックサイズλを方向フラグに基いて減算したアドレス値及び方向フラグＣ−λ（−）がエントリ０としてエントリ４２−１にセットされ、またエントリ４２−１及び４２−２にセットされていたアドレス値及び方向フラグＡ（＋）及びＢ（＋）は、それぞれシフトされてエントリ１及び２としてエントリ４２−２及び４２−３にセットされる。また、プリフェッチアドレスレジスタ２８には、周期５でアドレス値及び方向フラグＣ−λ（−）がセットされ、このアドレス値及び方向フラグがプリフェッチ要求として二次キャッシュ４に通知される。
【００８９】
次に第３の実施形態について説明する。
第１、第２の実施形態では、プリフェッチ制御装置２が二次キャッシュ４に対してプリフェッチ要求はプリフェッチアドレスキューに登録されているエントリアドレスの次のブロック対して行っていた。それに対して第３の実施形態では、要求アドレスから複数ブロック先のデータまでプリフェッチを可能にしたものである。
【００９０】
図１４は、第３の実施形態におけるプリフェッチ制御装置２の構成例、図１５はプリフェッチアドレスキュー１０５内のエントリ４２の構成を示す図である。尚図１４のプリフェッチアドレスキュー１０５は、各エントリ４２−１〜４２−４の構成が異なるだけで、他の部分は図４に示した構成と基本的には同一である。
【００９１】
図１４の構成は、図９の構成と比較すると、読み出しレジスタ１０６がアドレス値及び方向フラグの他に、カウンタ値及び差分値がセットされる構成となっており、またプリフェッチアドレスレジスタ１１３にアドレス値の他にプリフェッチアドレスから何ブロックをプリフェッチするかを示すブロック数がセットされる構成となっている。更に読み出しレジスタ１０６内の値からプリフェッチアドレスキュー１０５に登録するカウンタ値、差分値、方向及びアドレス値、プリフェッチアドレスレジスタ１１３にセットするブロック数及びアドレス値を求める初期値１０７、演算器１０８、１１２、１１４、１１５、セレクタ１０９、比較器１１０及び差分決定回路１１１を備えている。
【００９２】
また図１５に示す第３の実施形態のエントリ４２の構成は、図１０の第２の実施形態のエントリ４２の構成と比較すると、レジスタ１３１に、図９に示した第２の実施形態のレジスタ９１がセットされていたアドレス値、有効ビット及び待機ビット及び方向フラグの他に、プロセッサユニット１からの要求アドレスとエントリ４２内に格納されているプリフェッチアドレスとの差分を示す差分値及びヒットする毎に減算されるカウンタ値がセットされる構成となっている。尚図１０では、図５と同一の構成要素に対しては同一の番号が付してある。
【００９３】
この第３の実施形態では、プリフェッチアドレスキュー１０５に、アドレス値及びプリフェッチ方向を示す方向フラグの他に、プリフェッチアドレスを求める時にエントリ４２内に格納されているアドレスに加算又は減算する差分値及びヒットする毎に減算されるカウンタ値がセットされる構成となっている。そしてこの差分及びカウンタ値を用いて同時にプリフェッチするブロック数を求め、アドレス値及びブロック数によって二次キャッシュ４に対してプリフェッチ要求を行う。
【００９４】
以下に図１５のプリフェッチ制御装置２の動作を説明する。
プリフェッチアドレスキュー１０５の登録、検索、読み出し動作等、図１４及び図１５に示す構成の基本的な動作は、図９及び図１０を用いて説明した第２の実施形態の場合と同じであり、図１４の場合は、ブロック数を求める制御及びカウンタ値の制御が更に加わる。以下の説明では、第２の実施形態と異なる部分について説明し、同一の部分については省略する。
【００９５】
図１５の第３の実施形態と第３の実施形態のプリフェッチ制御装置２との違いは、プリフェッチアドレスキュー１０５からヒットしたアドレス値を含むエントリを読み出しレジスタ１０６に読み出してから、このエントリに基いたアドレス値及びブロック値をプリフェッチアドレスレジスタ１１３に格納し、バス１１６を介して更新された値を新たなエントリとしてプリフェッチアドレスキュー１０５に登録するまでの部分の構成にある。
【００９６】
プリフェッチアドレスレジスタ１１３に格納されるプリフェッチアドレス値は、読み出しレジスタ１０６に読み出されたプリフェッチアドレスキュー１０５のエントリ内のアドレス値に対し、演算器１１４でブロックサイズλ×差分を加算若しくは減算して求める。演算器１１４が加算を行うか減算を行うかは、第２の実施形態同様、読み出しレジスタ１０６内の方向フラグによって決まり、方向フラグが昇順方向であれば演算器１１４はアドレス値に対してブロックサイズλ×差分値を加算して、降順方向であれば減算し、結果を出力する。そしてこの出力１２１をプリフェッチアドレスレジスタ１１３にアドレス値としてセットする。
【００９７】
またプリフェッチアドレスキュー１０５に登録されるアドレス値は、演算器１１５によって、読み出しレジスタ１０６のアドレス値にブロックサイズλを、方向フラグに基いて、加算／減算して求める。
【００９８】
カウンタ値は、初期値１０７に設定されている初期値からエントリがプリフェッチアドレスキュー１０５から読み出される度に演算器１０８によって１づつ減算される。そして、比較器１１０によって値が０であることが検出されると、セレクタ１０９によってプリフェッチアドレスキュー１０５に登録される新規カウンタ値を初期値１０７で設定される値に戻す。
【００９９】
差分決定回路１１１は、新たな差分値を決定するもので、通常は、読み出しレジスタ１０６内の差分値を変化させずそのままの値で出力し、比較器１１０からカウンタ値が０であることが通知されると、読み出しレジスタ１０６内の差分値を予め決められた規則に基いて増加させて出力する。また差分値には上限が設けられており、その上限に達すると以降差分決定回路１１１は差分値をその値からは変化させずその値を出力する。図１４の構成例では、差分決定回路１１１は、比較器１１０からカウンタ値が０であることが通知され、読み出しレジスタ１０６から差分値として１が入力されると２を、２が入力されると４を、４が入力されると８を出力し、８を上限として、以降は０が通知されても出力値として８を出力する。
【０１００】
演算器１１２は、差分決定回路１１１から出力される差分値から読み出しレジスタ１０６内のブロック数を減算した後１を加えた値を出力する。そして出力１２０をプリフェッチするブロック数としてプリフェッチアドレスレジスタ１１３にセットする。
【０１０１】
プリフェッチ制御装置２は、二次キャッシュ４に対して、プリフェッチアドレスレジスタ１１３にセットされたアドレス値からブロック数分の複数ブロックプリフェッチを要求する。プリフェッチ要求の際に、このブロック数によって読み込むブロック数を指定することにより読み込まれないブロックが生じるのを防ぐ。　これにより、初期値１０７に設定した特定回数だけヒットすると、プリフェッチアドレスキュー１０５に登録されたエントリアドレスよりも一ブロック以上は離れたブロックをプリフェッチするようになる。
【０１０２】
また更新されたエントリをプリフェッチアドレスキュー１０５に登録する際には、プリフェッチアドレスキュー１０５に登録されるカウンタ値はセレクタ１０９の出力１１７が、差分値は差分決定回路１１１の出力１２８が、方向は読み出しレジスタ１０６の値がそのまま、アドレス値はプリフェッチアドレスキューに登録するアドレスは演算器１１５の出力１１８が、データバス１１６を介してセレクタ１０４に入力され、セレクタ１０４はプリフェッチアドレスキュー１０５からの指示に基いてアドレスバス１０４からのデータを選択出力し、これらのデータはプリフェッチアドレスキュー１０５に入力される。
【０１０３】
図１６は、第３の実施形態におけるプリフェッチ処理の基本動作を説明する図である。
同図において、ＤＥＭＡＮＤはプロセッサユニット１からの要求アドレスを含むブロックを示し、ＰＦは二次キャッシュ４がプリフェッチを行ったブロックを示している。
【０１０４】
同図の動作例は、初期値としてエントリとしてカウンタ値＝２、アドレス＝Ａ、差分＝１、方向フラグ＝（＋）が、プリフェッチアドレスキュー１０５に登録されているものとする
要求アドレスＡがヒットすると、プリフェッチ制御装置２は、二次キャッシュ４に対してプリフェッチアドレスＡ＋λ、ブロック数１でプリフェッチ要求し、二次キャッシュ４は要求されたアドレスＡ＋λから１ブロック分データを主記憶装置５からプリフェッチする（図１６（ａ））。次に要求アドレスＡ＋λがヒットすると、プリフェッチ制御装置２は、二次キャッシュ４に対してプリフェッチアドレスＡ＋２λ、ブロック数１でプリフェッチ要求し、二次キャッシュ４は要求されたアドレスＡ＋２λから１ブロック分データを主記憶装置５からプリフェッチする（図１６（ｂ））。
【０１０５】
更に要求アドレスＡ＋２λがヒットすると、プリフェッチアドレスキュー１０５から読み出したエントリ内のカウンタ値が０なので、差分決定回路１１１は、差分の値を１から２に変更する。これによって、プリフェッチ制御装置２は、二次キャッシュ４に対してプリフェッチアドレスＡ＋３λ、ブロック数２（＝差分決定回路１１１から出力されたブロック数（２）−読み出したブロック数（１）＋１）でプリフェッチ要求し、二次キャッシュ４は要求されたアドレスＡ＋３λから２ブロック分データを主記憶装置５からプリフェッチする（図１６（ｃ））。
【０１０６】
次に要求アドレスＡ＋３λがヒットすると、プリフェッチ制御装置２は、二次キャッシュ４に対してプリフェッチアドレスＡ＋５λ（＝（要求アドレスＡ＋３λ）＋差分（２）×λ）、ブロック数１（＝２−２＋１）でプリフェッチ要求し、二次キャッシュ４は要求されたアドレスＡ＋５λから１ブロック分データを主記憶装置５からプリフェッチする（図１６（ｄ））。更に要求アドレスＡ＋４λがヒットすると、プリフェッチ制御装置２は、二次キャッシュ４に対してプリフェッチアドレスＡ＋６λ（＝（Ａ＋４λ）＋２×λ）、ブロック数１でプリフェッチ要求し、二次キャッシュ４は要求されたアドレスＡ＋２λから１ブロック分データを主記憶装置５からプリフェッチする（図１６（ｅ））。
【０１０７】
このように、第３の実施形態では、初期値１０７に設定されているカウンタの初期値を超えて、連続アクセスが行われると、以降も連続アクセスされると予測し、登録アドレスの複数ブロック先のデータまでプリフェッチを行い、プロセッサユニット１による処理にプリフェッチが間に合わなくなるのを防ぐ。
【０１０８】
図１７に第３の実施形態におけるプリフェッチアドレスキュー１０５に登録されているアドレス値の変化の一例を示す。
同図中のカウンタ部分はエントリに登録されているカウンタ値、ブロック数部分はエントリに登録される差分及び方向フラグを示しており、ブロック数が＋αと記載されている場合は昇順でαブロック先のプリフェッチを示し、−βと書かれている場合は降順のβブロック先のプリフェッチを示す。また同様に以下の説明でＸ（α、＋／−β）と書かれている場合、Ｘはアドレス値、αはカウンタ値、＋／−βは差分及び方向フラグを示している。
【０１０９】
同図（ａ）は、初期状態を示し、プリフェッチアドレスキュー１０５のエントリ０、１、２、３として、順にプリフェッチアドレスＡ（６，＋４）、Ｂ（０，＋２）、Ｃ（８，−４）、Ｄ（１０，−２）が既に登録されている。
【０１１０】
この図１７（ａ）の状態において、一次キャッシュ３でアドレスＥに対してキャッシュミスが生じたことが報告されると、同図（ｂ）に示すように、プリフェッチアドレスキュー１０５には、アドレス値Ｅにブロックサイズλを加えたアドレス値、カウンタ値の初期値１６、差分の初期値１及び昇順方向の方向フラグＥ＋λ（１６，＋１）がエントリ０として登録される。またこの時、エントリ０〜エントリ２に登録されていたアドレス値及び方向フラグＡ（６，＋４）、Ｂ（０，＋２）、Ｃ（８，−４）は、エントリ１〜エントリ３にシフトされ、エントリ３に登録されていたＤ（１０，−２）は破棄される。
【０１１１】
また上記要求アドレスＥは、プリフェッチアドレスキュー１０５内のアドレス値にヒットしなかったので、プリフェッチアドレスキュー１０５には、同図（ｂ）に示すように、続けてアドレス値Ｅからブロックサイズλを減算したアドレス値、カウンタ値の初期値１６、差分の初期値１及び降順方向の方向Ｅ−λ（１６，−１）がエントリ０として登録される。そしてこの時、エントリ０〜エントリ２に登録されていたＥ＋λ（１６，＋１）、Ｅ＋λ（１６，＋１）は、エントリ１〜エントリ３にシフトされ、エントリ３に登録されていたＣ（８，−４）は破棄される。
【０１１２】
同図（ｃ）の状態において、プロセッサユニット１からアドレスＡに対してキャッシュアクセスがあると、ヒットしたエントリ２が読み出されると共に有効ビットがリセットされて無効化され、同図（ｄ）に示す状態となる。そして読み出されたエントリ２のカウンタ値は６、差分と方向フラグは＋４なので、プリフェッチアドレスＡ＋４λ、ブロック数１のプリフェッチ要求が一次キャッシュ３に出力される。
【０１１３】
またこのプリフェッチ要求と同時に、同図（ｅ）に示すように、Ａ＋λ（５，＋４）をプリフェッチアドレスキュー１０５に登録する。この時同図（ｄ）でエントリ０だったアドレス値及び方向フラグＥ−λ（１６，−１）はエントリ１へ、エントリ１だったＥ＋λ（１６，＋１）は無効（ｅｍｐｔｙ）となっているエントリ２へシフトされる。
【０１１４】
同図（ｅ）の状態において、プロセッサユニット１からアドレスＢに対してキャッシュアクセスがあると、ヒットしたエントリ３が読み出されると共に有効ビットがリセットされて無効化され、同図（ｆ）に示す状態となる。そして読み出されたエントリ３のカウンタ値は０、差分と方向フラグは＋２なので、プリフェッチアドレスＢ＋２λ、ブロック数３のプリフェッチ要求が一次キャッシュ３に出力される。
【０１１５】
またこのプリフェッチ要求と同時に、同図（ｇ）に示すように、Ｂ＋λ（１６，＋４）をプリフェッチアドレスキュー１０５に登録する。この時同図（ｆ）でエントリ０だったＡ＋λ（５，＋４）はエントリ１へ、エントリ１だったＥ−λ（１６，−１）はエントリ２へ、エントリ２だったＥ＋λ（１６，＋１）は無効（ｅｍｐｔｙ）となっているエントリ３へシフトされる。
【０１１６】
図１８は、第３の実施形態において、一次キャッシュ３でキャッシュミスが生じて、プリフェッチキュー７５にアドレスが登録される場合のタイムチャートを示す図である。
【０１１７】
同図は、エントリ０〜３としてアドレス値、カウンタ値、差分値及び方向フラグＢ（１，＋１）、Ｃ（４，−２）、Ｄ（１，＋４）及びＥ（６，＋２）が登録された状態を初期状態として、プロセッサユニット１からアドレスＡに対して一次キャッシュ３にアクセス要求があった場合の、キャッシュミス（制御信号９）、リクエストアドレスレジスタ１０１、一次キャッシュミスアドレスレジスタ１０２の待機ビット１及び待機ビット２、一次キャッシュミスアドレスレジスタリードイネーブル、一次キャッシュミスアドレスレジスタライトイネーブル、各エントリ４２のセットされているアドレス値の変化及びプリフェッチアドレスレジスタ１１３にセットされているアドレス値の変化を示している。
【０１１８】
図１９はプリフェッチキュー１０５に登録されているアドレスが要求された場合のタイムチャートを示す図である。
同図は、エントリ０〜３として、カウンタ値、差分値及び方向フラグＢ（１，＋１）、Ｃ（４，−２）、Ｄ（１，＋４）及びＥ（６，＋２）が登録された状態を初期状態として、エントリ２として登録されているアドレスＣを要求アドレスとしてプロセッサユニット１から一次キャッシュ３にアクセス要求があった場合の、リクエストアドレスレジスタ１０１、各エントリ４２内の待機ビットの状態、各エントリ４２のセットされている値、及びプリフェッチアドレスレジスタ１１３にセットされているアドレス値の変化を示している。
【０１１９】
図１８及び図１９を、図１２及び図１３に示した第２の実施形態のタイムチャートと比較すると、エントリ４２にセットされる内容が異なるだけで、両者は、同じタイミングであることが判る。
【０１２０】
この第３の実施形態では、エントリアドレスがヒットし、プリフェッチ要求が行われる度にカウンタは減算され、０になったところでカウンタを初期値にリセットし差分を増加させる。よってヒット回数が多いエントリほど要求アドレスからなるべく遠くまでプリフェッチすることになり、プリフェッチを要求してからデータが届くまでにそのブロックをアクセスされることを防ぐことが出来る。
【０１２１】
次に第４の実施形態について説明する。
第４の実施形態は、複数のＣＰＵによって、主記憶装置５を共有した場合に対応するものである。
【０１２２】
複数のＣＰＵによって、メモリをシェアする場合、キャッシュコヒーレンシ（メモリの内容と各ＣＰＵのキャッシュの内容の一貫性）についての問題が生じる。
【０１２３】
第４の実施形態は、プリフェッチ制御装置２にキャッシュコヒーレンシを保つ仕組みを持たせたものである。
データの読み出しの場合は、一貫性については通常問題にならないが、書き込みの際には他のＣＰＵとの間でキャッシュの内容に不一致が起きないように制御する必要がある。
【０１２４】
この制御方法の１つとして、あるＣＰＵが書き込みを行う時に他のＣＰＵに同じアドレスのデータが存在しないことを保証しておくことでキャッシュコヒーレンシを保つ方法がある。
この方法ではＣＰＵが書き込みを行う際に、キャッシュの状態が書き込み可能な状態（他のＣＰＵに同じデータが存在しない状態）になっていなければ、書き込み可能な状態にする必要がなり、このために通常非常に時間がかかってしまう。
【０１２５】
よって、本実施形態では、書き込みが行われると予想される時には予め書き込み可能な状態でキャッシュにプリフェッチしておくことで書き込みに対してもその効果を最大限に生かせるようする。この場合において、書き込み可能な状態でプリフェッチすると、他のＣＰＵはそのデータを失うので、やりすぎるとキャッシュのミス率が増大してしまう。そこで、以下のようにしてプリフェッチのタイプを予測する。
【０１２６】
図２０は、第４の実施形態におけるプリフェッチ制御装置の内部構成を示す図である。
同図のプリフェッチ制御装置は、図３に示した第１の実施形態のプリフェッチ制御装置２を元に第４の実施形態の構成を加えているが、第４の実施形態の構成は、第２の実施形態や第３の実施形態を元にしても実現することが出来る。
【０１２７】
同図の構成では、図３の構成と比較すると、予測器１４５を更に備え、またリクエストアドレスレジスタ１４１、一次キャッシュミスアドレスレジスタ１４２及び読み出しレジスタ１４４にアドレス値の他に、この要求アドレスが読み出し要求によるものなのか書き込み要求によるものなのかを示すタイプ情報を設定することが出来る構成となっている。またプリフェッチアドレスキュー１４３のエントリ４２にも、このタイプ情報が設定できるようになっている。
【０１２８】
図２１は、第４の実施形態におけるプリフェッチアドレスキュー１４３内のエントリの構成を示す図である。
同図の構成では、レジスタ１５１には、タイプ１とタイプ２の２つのタイプ情報が設定できるようになっている。タイプ１は、一次キャッシュミスアドレスレジスタ１４２内のタイプ情報がそのまま設定され、タイプ２は、レジスタ内のアドレス値がヒットした際、そのヒットした要求アドレスが読み出し要求なのか書き込み要求なのかを示すタイプ情報が設定される。
【０１２９】
同図において、リクエストアドレスレジスタ１４１からの要求アドレスが比較器６２によって比較され、両者が一致した時、リクエストアドレスレジスタ内のタイプ情報が演算器１５２を介してレジスタ１４２にタイプ２として設定される。またこのエントリ４２から読み出しが行われるときは、アドレス値と共に、タイプ１及びタイプ２の２つのタイプ情報も読み出され、読み出しレジスタ１４４にセットされる。
【０１３０】
読み出しレジスタ１４４は、アドレス値の他に上記タイプ１及びタイプ２がセット出来る構成となっており、読み出しレジスタ１４４にセットされたタイプ１及びタイプ２は、予測器１４５に入力される。予測器１４５は、タイプ１及びタイプ２からプリフェッチアドレスレジスタ１４５に設定するタイプを決める。予測器１４５は、タイプ１及びタイプ２の両方共書き込み要求であったなら、書き込み要求が生じるものと予測して、プリフェッチアドレスレジスタ１４５にタイプとして書き込み要求を設定し、そうでない場合には、読み出し要求を設定する。またこの予測器１４５の出力は、アドレス値をプリフェッチアドレスキュー１４３にかき戻す際、そのアドレス値と共にタイプ１として、プリフェッチアドレスキュー１４３に設定される。
【０１３１】
プリフェッチ制御装置２は、フェッチアドレスレジスタ１４５にセットされたアドレス値とタイプ情報によって二次キャッシュ４に対してプリフェッチ要求を行い、二次キャッシュ４は、タイプ情報が書き込み要求であったなら書き込み可能な状態でデータをプリフェッチする。
【０１３２】
これにより、プリフェッチするデータに対して書き込みが行われるかどうかを予測して、その予測に基づいてデータを書き込み可能な状態でプリフェッチすることが出来る。
【０１３３】
次に第５の実施形態について説明する。
第５の実施形態は、多数の同時アクセスに対して対応する構成をプリフェッチ制御装置２に設けたものである。
【０１３４】
プロセッサユニット１は、常に１つずつデータを要求してくるとは限らず、時には、同時に複数のアクセスする場合もある。
第５の実施形態は、このような場合に対して、対処したものである。
【０１３５】
図２２は、第５の実施形態におけるプリフェッチ制御装置の内部構成を示す図である。
尚同図のプリフェッチ制御装置は、図３に示した第１の実施形態のプリフェッチ制御装置２を元に第５の実施形態の構成を加えているが、第５の実施形態の構成は、第２の実施形態や第３の実施形態を元にしても実現することが出来る。
【０１３６】
同図の構成では、図３の構成と比較すると、第１のリクエストアドレスレジスタ１６１及び第２のリクエストアドレスレジスタ１６２の２つのリクエストアドレスレジスタと、この２つのリクエストアドレスレジスタから１つからのアドレス値を選択して、一次キャッシュミスアドレスレジスタ２２に設定するセレクタ１６１を新たに備えている。
【０１３７】
第１のリクエストアドレスレジスタ１６１及び第２のリクエストアドレスレジスタ１６２は、プロセッサユニット１からの要求アドレスが設定され、このアドレス値がプリフェッチアドレスキュー内に設定されているプリフェッチアドレスと比較される。セレクタ１６３は、この２つのレジスタ１６１、１６２を切替えてアドレス値を一次キャッシュミスアドレスレジスタ２２に設定する。
【０１３８】
またプリフェッチアドレスキュー１６４は、この２つのリクエストアドレスレジスタ１６１及び１６２内のアドレスを同時に自己のエントリに設定されているエントリアドレスと比較する構成を備えている。
【０１３９】
図２３は、プリフェッチアドレスキュー１６４の構成を示す図である。
同図に示すプリフェッチアドレスキュー１６４は、第１のリクエストアドレスレジスタ１６１からの要求アドレス値が入力されるデータバス１７２と第２のリクエストアドレスレジスタ１６２からの要求アドレス値が入力されるデータバス１７３を備え、この２つのデータバス１７２及び１７３は、全てのエントリ１７１−１〜１７２−４に入力されている。
【０１４０】
図２４は、エントリ１７１の構成を示す図である。
エントリ１７１は、第１のリクエストアドレスレジスタ１６１からの要求アドレス値とレジスタ６１に設定されているエントリアドレスのアドレス値とを比較する比較器１８１と、第２のリクエストアドレスレジスタ１６２からの要求アドレス値とレジスタ６１に設定されているエントリアドレスのアドレス値とを比較する比較器１８２の２つの比較器を備え、２つの要求アドレスを同時に比較することが出来る。
【０１４１】
この図２２、２３、２４の構成により第５の実施形態では、プロセッサユニット１が同時に複数の要求アドレスを発行しても対処することが出来る。
尚上記説明では、プリフェッチ制御装置は、プリフェッチ要求を二次キャッシュ４に対して行い、二次キャッシュ４上にプリフェッチしたデータを記憶しておいたが、本実施形態でプリフェッチを行うのは二次キャッシュ４に限定されるものではなく、一次キャッシュ３に対してプリフェッチ要求を行い、二次キャッシュ４上にプリフェッチしても良い。あるいは、システムが三次キャッシュ以上を備える場合には、これらに対してプリフェッチ要求を行い、これらがプリフェッチ処理を行っても良い。
【０１４２】
本発明は以下の構成でも良い。
キャッシュメモリを備えた情報制御装置で用いられるプリフェッチ制御装置において、
前記キャッシュメモリに対するアクセス要求に基く要求アドレスを格納するリクエストアドレスレジスタと、
前記リクエストアドレスレジスタ内のアドレス値を格納する一次キャッシュミスアドレスレジスタと、
前記一次キャッシュミスアドレスレジスタ内のアドレス値に特定の値を加えて、出力する第１の演算器と、
アドレス値をエントリアドレスとして格納する複数のエントリを有し、前記リクエストアドレスレジスタ内の要求アドレスと、前記複数のエントリ内の各エントリアドレスとを比較し、一致したならば、一致した前記エントリアドレスを出力するプリフェッチアドレスキューと、
前記プリフェッチアドレスキューの出力を格納する読み出しレジスタと、
前記読み出しレジスタ内の前記エントリアドレスに前記特定の値を加えて出力する第２の演算器と、
前記第１の演算器及び前記第２の演算器の出力を前記エントリアドレスとして前記プリフェッチアドレスキューの複数のエントリのうちの１つに登録する登録ユニットと、
を備えるプリフェッチ制御装置。
【０１４３】
キャッシュメモリを備えた情報制御装置で用いられるプリフェッチ制御装置において、
前記キャッシュメモリに対するアクセス要求に基く要求アドレスを格納するリクエストアドレスレジスタと、
前記リクエストアドレスレジスタ内のアドレス値を格納する一次キャッシュミスアドレスレジスタと、
前記一次キャッシュミスアドレスレジスタ内のアドレス値に対して、指示に基いて特定の値の加算／減算を行って出力する第１の演算器と、
プリフェッチの方向を示す方向フラグと共にアドレス値をエントリアドレスとして格納する複数のエントリを有し、前記リクエストアドレスレジスタ内の要求アドレスと、前記複数のエントリ内の各エントリアドレスとを比較し、一致したならば、一致した前記エントリアドレスを前記方向フラグと共に出力するプリフェッチアドレスキューと、
前記プリフェッチアドレスキューの出力を格納する読み出しレジスタと、
前記読み出しレジスタ内の前記エントリアドレスに前記特定の値を、前記方向フラグの値に基いて加算／減算を行って出力する第２の演算器と、
前記第１の演算器に対して加算を指示し、プリフェッチの方向として昇順を示す方向フラグと共に前記第１の演算器の出力をエントリアドレスとして前記複数のエントリのうちの１つに登録すると共に、前記第１の演算器に対して減算を指示し、プリフェッチの方向として降順を示す前記方向フラグと共に前記第１の演算器の出力をエントリアドレスとして前記複数のエントリのうちの１つに登録する第１の登録ユニットと、
前記読み出しレジスタ内の方向フラグと共に前記第２の演算器の出力を前記エントリアドレスとして前記複数のエントリのうちの１つに登録する第２の登録ユニットと、
を備えるプリフェッチ制御装置。
【０１４４】
キャッシュメモリを備えた情報制御装置で用いられるプリフェッチ制御装置において、
前記キャッシュメモリに対するアクセス要求に基づく要求アドレスを格納するリクエストアドレスレジスタと、
前記リクエストアドレスレジスタ内のアドレス値を格納する一次キャッシュミスアドレスレジスタと、
前記一次キャッシュミスアドレスレジスタ内のアドレス値に対して、指示に基いて特定の値の加算／減算を行って出力する第１の演算器と、
前記要求アドレスとプリフェッチを行う位置を指定するプリフェッチアドレスとの差を示す差分値情報、カウンタ値、及びプリフェッチの方向を示す方向フラグと共にアドレス値をエントリアドレスとして格納する複数のエントリを有し、前記リクエストアドレスレジスタ内の要求アドレスと、前記複数のエントリ内の各エントリアドレスとを比較し、一致したならば、一致した前記エントリアドレスを前記差分情報、カウンタ値及び方向フラグと共に出力するプリフェッチアドレスキューと、
前記プリフェッチアドレスキューの出力を格納する読み出しレジスタと、
前記読み出しレジスタ内の前記エントリアドレスに特定の値を、前記方向フラグの値に基いて加算／減算を行って出力する第２の演算器と、
前記読み出しレジスタ内のカウンタ値から減算し、特定値となったなら初期値を、該特定値でなければ前記減算した値をカウンタ値として出力するカウンタ値演算手段と、
前記読み出しレジスタ内の前記カウンタ値が前記特定値であれば、前記読み出しレジスタ内の差分情報を、予め定めてある規則に従って変更して出力し、前記カウンタ値が前記特定値でなければ、前記読み出しレジスタ内の差分情報をそのまま出力する差分情報決定ユニットと、
前記読み出しレジスタ内の前記差分情報、方向フラグ及びアドレス値に基いて前記プリフェッチアドレスを求めるプリフェッチアドレス算出手段と、
前記第１の演算器に対して加算を指示し、プリフェッチの方向として昇順を示す方向フラグと共に、初期値を設定した前記カウンタ値及び差分値、及び前記第１の演算器の出力をエントリアドレスとして前記複数のエントリのうちの１つに登録すると共に、前記第１の演算器に対して減算を指示し、プリフェッチの方向として降順を示す前記方向フラグと共に、初期値を設定した前記カウンタ値及び差分値、及び前記第１の演算器の出力をエントリアドレスとして前記複数のエントリのうちの１つに登録する第１の登録ユニットと、
前記読み出しレジスタ内の方向フラグと共に、前記カウンタ値演算手段から出力されるカウンタ値、前記差分情報決定ユニットから出力される前記差分値、及び前記第２の演算器の出力を前記エントリアドレスとして前記複数のエントリのうちの１つに登録する第２の登録ユニットと、
を備えるプリフェッチ制御装置。
【０１４５】
キャッシュメモリを備えた情報制御装置で用いられるプリフェッチ制御装置において、
前記キャッシュメモリに対するアクセス要求に基く要求アドレスを、書き込み要求かどうかを示す第１のタイプ情報と共に格納するリクエストアドレスレジスタと、
前記リクエストアドレスレジスタ内のアドレス値及び前記第１のタイプ情報を格納する一次キャッシュミスアドレスレジスタと、
前記一次キャッシュミスアドレスレジスタ内のアドレス値に特定の値を加えて、出力する第１の演算器と、
アドレス値をエントリアドレスとして、前記第１のタイプ情報と共に格納する複数のエントリを有し、前記リクエストアドレスレジスタ内の要求アドレスと、前記複数のエントリ内の各エントリアドレスとを比較し、一致したならば、一致した前記エントリアドレスを前記第１のタイプ情報と共に出力するプリフェッチアドレスキューと、
前記プリフェッチアドレスキューの出力を格納する読み出しレジスタと、
前記読み出しレジスタ内の前記エントリアドレスに前記特定の値を加えて出力する第２の演算器と、
前記読み出しレジスタ内の前記第１のタイプ情報及び前記リクエストアドレスレジスタ内の前記第１のタイプ情報に基いて、プリフェッチ要求として書き込み要求かどうかを示す第２のタイプ情報を決定する予測器と、
前記第１の演算器と前記一次キャッシュミスアドレスレジスタ内の第１のタイプ情報及び前記第２の演算器の出力及び前記予測器から出力される前記第２のタイプ情報を、前記エントリアドレス及び前記第１のタイプ情報として前記プリフェッチアドレスキューの複数のエントリのうちの１つに登録する登録ユニットと、
を備えるプリフェッチ制御装置。
【０１４６】
キャッシュメモリを備えた情報制御装置で用いられるプリフェッチ制御装置において、
前記キャッシュメモリに対するアクセス要求に基く要求アドレスを格納する複数のリクエストアドレスレジスタと、
前記複数リクエストアドレスレジスタ内の要求アドレスのうち１つを選択して出力するセレクタと、
前記セレクタが出力するアドレスを格納する一次キャッシュミスアドレスレジスタと、
前記一次キャッシュミスアドレスレジスタ内のアドレス値に特定の値を加えて、出力する第１の演算器と、
アドレス値をエントリアドレスとして格納する複数のエントリを有し、前記複数のリクエストアドレスレジスタ内の要求アドレスと、前記複数のエントリ内の各エントリアドレスとを比較し、一致したならば、一致した前記エントリアドレスを出力するプリフェッチアドレスキューと、
前記プリフェッチアドレスキューの出力を格納する読み出しレジスタと、
前記読み出しレジスタ内の前記エントリアドレスに前記特定の値を加えて出力する第２の演算器と、
前記第２の演算器の出力を格納するプリフェッチアドレスレジスタと、
前記第１の演算器及び前記第２の演算器の出力を前記プリフェッチアドレスとして前記プリフェッチアドレスキューの複数のエントリのうちの１つに登録する登録ユニットと、
を備えるプリフェッチ制御装置。
【０１４７】
（付記１）　キャッシュメモリ手段と、
過去にメモリアクセスを行ったアドレスに基いたアドレス値を記録するアドレス記録手段と、
アクセス要求があった要求アドレスと、前記アドレス記録手段に記録されている前記アドレス値の比較の結果に基づいて、前記キャッシュメモリ手段にプリフェッチ要求を行うプリフェッチ要求手段と、
を備えることを特徴とする情報処理装置。
【０１４８】
（付記２）　キャッシュメモリ手段を備えた情報処理装置で用いられるプリフェッチ制御装置において、
過去にメモリアクセスを行ったアドレスに基いたアドレス値を記録するアドレス記録手段と、
アクセス要求があったアドレスと前記アドレス記録手段に記録されたアドレス値との比較の結果に基いて、前記キャッシュメモリ手段にプリフェッチ要求を行うプリフェッチ要求手段と、
を備えることを特徴とするプリフェッチ制御装置。
【０１４９】
（付記３）　付記１又は２に記載の装置であって、
前記プリフェッチ要求手段は、前記アドレス値から求めたプリフェッチアドレスを前記キャッシュメモリ手段に示すことにより前記プリフェッチ要求を行うことを特徴とする装置。
【０１５０】
（付記４）　付記３に記載の装置であって、
前記アドレス記録手段から読み出したアドレスに演算したアドレス値を前記アドレス記録手段に記録する登録手段を更に備えることを特徴とする装置。
【０１５１】
（付記５）　付記３又は４に記載の装置であって、
前記情報処理装置は、特定の大きさを持つブロック単位でデータをプリフェッチし、前記プリフェッチ要求手段は、前記アドレス値及び前記特定の大きさを用いて前記プリフェッチアドレスを求めることを特徴とする装置。
【０１５２】
（付記６）　付記５に記載の装置であって、
前記特定の大きさは、前記キャッシュメモリ手段の１ラインに相当することを特徴とする装置。
【０１５３】
（付記７）　付記１乃至６の何れか１つに記載の装置であって、
前記キャッシュメモリ手段の上位にあたる上位キャッシュ手段においてミスヒットが生じた時、前記アドレス記録手段は、前記ミスヒットが生じたアドレスに基いたアドレス値を記録することを特徴とする装置。
【０１５４】
（付記８）　付記１乃至７の何れか１つに記載の装置であって、
前記アドレス記録手段は、プリフェッチを行う方向を示す方向フラグを前記アドレス値と関連付けて記録し、前記プリフェッチ要求手段は、前記アドレスと前記方向フラグに基いてプリフェッチアドレスを求め、前記プリフェッチ要求を行うことを特徴とする装置。
【０１５５】
（付記９）　付記１乃至８の何れか１つに記載の装置であって、
前記アドレス記録手段は、複数の前記アドレス値を記録し、新たなアドレス値を記録する際、該複数のアドレス値の登録順序に基いて前記アドレス値の置き換えを行うことを特徴とする装置。
【０１５６】
（付記１０）　付記３乃至９の何れか１つに記載の装置であって、
前記アドレス記録手段は、前記要求アドレスと前記プリフェッチアドレスとの差を示す差分値情報を前記アドレス値と対応付けて記録することを特徴とする装置。
【０１５７】
（付記１１）　付記１０に記載の装置であって、
前記プリフェッチ要求手段は、前記プリフェッチアドレスとプリフェチするデータの大きさを示すことにより、前記プリフェッチ要求を行うことを特徴とする装置。
【０１５８】
（付記１２）　付記１１に記載の装置であって、
前記プリフェッチするデータの大きさは、前記差分情報に基づいて決定することを特徴とする装置。
【０１５９】
（付記１３）　付記１１又は１２に記載の装置であって、
前記アドレス記録手段は、前記プリフェッチ要求手段による前記比較の結果、対応づけられているアドレス値が前記要求アドレスと一致した時カウントされるカウンタ値を当該アドレス値と対応付けて記録し、前記カウンタ値が特定値と成った時、前記差分情報を変更することを特徴とする装置。
【０１６０】
（付記１４）　付記１乃至１３の何れか１つに記載の装置であって、
前記アドレス記憶手段は、書き込み要求かどうかを示す第１のタイプ情報を前記アドレス値と対応付けて記録し、前記プリフェッチ要求は、前記タイプ情報に基いた書き込み要求かどうかを示す第２のタイプ情報を含むことを特徴とする装置。
【０１６１】
（付記１５）　付記１４に記載の装置であって、
前記第２のタイプ情報は、前記第１のタイプ情報と、前記要求アドレスが書き込み要求によるものかどうかを示す第３のタイプ情報に基いて決定されることを特徴とする装置。
【０１６２】
（付記１６）　付記１５に記載の装置であって、
前記プリフェッチ要求を行った後、前記第３のタイプ情報は、前記第１のタイプ情報として、前記アドレス値と対応付けられて前記アドレス記録手段に記録されることを特徴とする装置。
【０１６３】
（付記１７）　付記１乃至１６の何れか１つに記載の装置であって、
前記プリフェッチ要求手段は、複数の前記要求アドレスと前記アドレス値を比較する手段を備え、同時に複数の要求アドレスからプリフェッチ要求を生成することを特徴とする装置。
【０１６４】
（付記１８）　付記１乃至１７の何れか１つに記載の装置であって、
前記キャッシュメモリ手段は、該キャッシュメモリ手段の上位となる上位キャッシュメモリ手段を備えることを特徴とする装置。
【０１６５】
（付記１９）　キャッシュメモリ手段を備えた情報処理装置で行われるプリフェッチ制御方法であって
プリフェッチ要求を行ったアドレスに基づいたアドレス値を記録し、
アクセス要求があったアドレスと前記アドレス値との比較の結果に基いて、前記キャッシュメモリ手段にプリフェッチ要求を行う
ことを特徴とするプリフェッチ制御方法。
【０１６６】
【発明の効果】
本発明によれば、精度が高い予測によるプリフェッチを実現することが出来る。従って効率の良く、効果が高いプリフェッチを行うことが出来る。
【０１６７】
また連続した領域をプリフェッチすることが出来、またその領域へのアクセスを止めれば、それ以上続けて連続した領域をプリフェッチすることはない。
更に、昇順方向だけでなく降順方向へのアクセスに対するプリフェッチをも行うことが出来る。
【０１６８】
また、要求アドレスから複数ブロック先のデータまでプリフェッチすることが出来る。
更には、メモリを複数の情報処理装置で共有する場合であっても、キャッシュ手段に、プリフェッチするデータを書き込み可能な状態でプリフェッチするかどうかを指示することが出来、少ないパフォーマンスの低下でキャッシュコヒーレンシを保つことが出来る。
【０１６９】
また二つの異なるキャッシュアクセスに対して同時にプリフェッチアドレスの予測が可能になる。
【図面の簡単な説明】
【図１】本実施形態におけるコンピュータシステムのＣＰＵ及びその周辺構成の概略図である。
【図２】第１の実施形態におけるプリフェッチ処理の基本動作を説明する図である。
【図３】第１の実施形態におけるプリフェッチ制御装置の内部構成を示す図である。
【図４】第１の実施形態におけるプリフェッチアドレスキューの構成を示す図である。
【図５】第１の実施形態におけるプリフェッチアドレスキュー内のエントリの構成を示す図である。
【図６】第１の実施形態におけるプリフェッチアドレスキューに登録されているアドレス値の変化の一例を示す図である。
【図７】第１の実施形態におけるヒットしなかった時にプリフェッチキューにアドレスが登録される場合のタイムチャートを示す図である。
【図８】第１の実施形態におけるプリフェッチキューに登録されているアドレスが要求された場合のタイムチャートを示す図である。
【図９】第２の実施形態におけるプリフェッチ制御装置の構成を示す図である。
【図１０】第２の実施形態におけるプリフェッチアドレスキュー内のエントリの構成を示す図である。
【図１１】第２の実施形態におけるプリフェッチアドレスキューに登録されているアドレス値の変化の一例を示す図である。
【図１２】第２の実施形態におけるヒットしなかった時にプリフェッチキューにアドレスが登録される場合のタイムチャートを示す図である。
【図１３】第２の実施形態におけるプリフェッチキューに登録されているアドレスが要求された場合のタイムチャートを示す図である。
【図１４】第３の実施形態におけるプリフェッチ制御装置の構成例を示す図である。
【図１５】第３の実施形態におけるプリフェッチアドレスキュー内のエントリの構成を示す図である。
【図１６】第３の実施形態におけるプリフェッチ処理の基本動作を説明する図である。
【図１７】第３の実施形態におけるプリフェッチアドレスキューに登録されているアドレス値の変化の一例を示す図である。
【図１８】第３の実施形態におけるヒットしなかった時にプリフェッチキューにアドレスが登録される場合のタイムチャートを示す図である。
【図１９】第３の実施形態におけるプリフェッチキューに登録されているアドレスが要求された場合のタイムチャートを示す図である。
【図２０】第４の実施形態におけるプリフェッチ制御装置の内部構成を示す図である。
【図２１】第４の実施形態におけるプリフェッチアドレスキュー内のエントリの構成を示す図である。
【図２２】第５の実施形態におけるプリフェッチ制御装置の内部構成を示す図である。
【図２３】第５の実施形態におけるプリフェッチアドレスキューの構成を示す図である。
【図２４】第５の実施形態におけるプリフェッチアドレスキュー内のエントリの構成を示す図である。
【符号の説明】
１　プロセッサユニット
２　プリフェッチ制御装置
３　一次キャッシュ
４　二次キャッシュ
５　主記憶装置
２１、７１、１０１、１４１　リクエストアドレスレジスタ
２２、７２、１０２、１４２　一次キャッシュミスアドレスレジスタ
２５、７５、１０５、１４３　プリフェッチアドレスキュー
２６、７６、１０６、１４４　読み出しレジスタ
２８、７８、１１３、１４６　プリフェッチアドレスレジスタ
４０　リフェッチアドレスキュー制御部
４１、４３　セレクタ
４２　エントリ
６１、９１、１３１、１５１　レジスタ
６２　比較器
１１１　差分決定回路
１４５　予測器
【図１】
2004038345.tif 000003
【図２】
2004038345.tif 000004
【図３】
2004038345.tif 000005
【図４】
2004038345.tif 000006
【図５】
2004038345.tif 000007
【図６】
2004038345.tif 000008
【図７】
2004038345.tif 000009
【図８】
2004038345.tif 000010
【図９】
2004038345.tif 000011
【図１０】
2004038345.tif 000012
【図１１】
2004038345.tif 000013
【図１２】
2004038345.tif 000014
【図１３】
2004038345.tif 000015
【図１４】
2004038345.tif 000016
【図１５】
2004038345.tif 000017
【図１６】
2004038345.tif 000018
【図１７】
2004038345.tif 000019
【図１８】
2004038345.tif 000020
【図１９】
2004038345.tif 000021
【図２０】
2004038345.tif 000022
【図２１】
2004038345.tif 000023
【図２２】
2004038345.tif 000024
【図２３】
2004038345.tif 000025
【図２４】
2004038345.tif 000026