(57)【要約】      （修正有）【課題】データをキャッシュメモリのキャッシュラインにプレロードし、キャッシュラインを再利用するためのキャッシュ維持動作を制御するためのデータ処理装置および方法を提供する。【解決手段】一連の命令を実行するように動作可能なプロセッサと、該一連の命令を実行する際の該プロセッサによるアクセスのためのデータ値を格納するように動作可能な複数のキャッシュラインを有するキャッシュメモリと、を備える。キャッシュコントローラもまた提供され、主メモリから該キャッシュメモリの１つ以上のキャッシュラインにデータ値を格納するように、該プロセッサで受信されるストリーミングプレロード命令に応じて動作可能なプレロード回路を備える。該キャッシュコントローラはまた、優先的な再利用のために、該キャッシュメモリの１つ以上のキャッシュラインを識別するように、該ストリーミングプレロード命令に応じて動作可能な識別回路を備える。【選択図】図１
2010198610.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置であって、
（ｉ）一連の命令を実行するように動作可能なプロセッサと、
（ｉｉ）前記一連の命令を実行する際に、前記プロセッサによるアクセスのためのデータ値を格納するように動作可能な複数のキャッシュラインを有するキャッシュメモリと、
（ｉｉｉ）キャッシュコントローラと
を備え、
前記キャッシュコントローラは、
主メモリから前記キャッシュメモリの１つ以上のキャッシュラインにデータ値を格納するように、前記プロセッサで受信されるストリーミングプレロード命令に応じて動作可能なプレロード回路と、
優先的な再利用のために前記キャッシュメモリの１つ以上のキャッシュラインを識別するように、前記ストリーミングプレロード命令に応じて動作可能な識別回路と、
前記キャッシュメモリのキャッシュラインのための前記識別回路によって生成される任意の再利用に好適な識別を考慮して、再利用のための１つ以上のキャッシュラインの選択が行われる間、キャッシュ維持動作を実施するように動作可能なキャッシュ維持回路と、を備える、データ処理装置。
【請求項２】
（ｉ）前記ストリーミングプレロード命令は、前記プロセッサによって現在処理されているデータ値を含む前記キャッシュメモリ内の現在のキャッシュラインに対応するメモリアドレスを特定し、
（ｉｉ）前記プレロード回路は、前記現在のキャッシュラインのデータ値を追従する、前記主メモリ内のデータ値を前記キャッシュメモリの１つ以上のキャッシュラインに格納するように動作可能であり、
（ｉｉｉ）前記識別回路は、優先的な再利用のために、前記現在のキャッシュラインの前記データ値に先行する前記主メモリからのデータ値を含む前記キャッシュメモリの１つ以上のキャッシュラインを識別するように動作可能である、請求項１に記載のデータ処理装置。
【請求項３】
（ｉ）前記ストリーミングプレロード命令は、前記キャッシュメモリで利用可能となるストリーミングデータの量を特定し、
（ｉｉ）前記プレロード回路は、前記ストリーミングプレロード命令で特定される前記ストリーミングデータの量に従って決定される前記主メモリからのデータの量を、前記キャッシュメモリにプレロードするように動作可能である、請求項１に記載のデータ処理装置。
【請求項４】
（ｉ）前記ストリーミングプレロード命令は、前記キャッシュメモリで利用可能となるストリーミングデータの量を特定し、
（ｉｉ）前記識別回路は、優先的な再利用のために、前記ストリーミングプレロード命令で特定される前記ストリーミングデータの量に従って決定される、いくつかのキャッシュラインを識別するように動作可能である、請求項１に記載のデータ処理装置。
【請求項５】
（ｉ）前記キャッシュメモリの前記キャッシュラインの各々は、それに関連付けられた、前記キャッシュラインが有効データを含むかどうかを示すために使用される有効ビットを有し、
（ｉｉ）前記識別回路は、該キャッシュラインが再利用に好適な場合、キャッシュラインの前記有効ビットを、前記キャッシュラインが有効データを含まないことを示すべく設定するように動作可能であり、
（ｉｉｉ）前記キャッシュ維持回路は、再利用のために、該キャッシュラインが有効データを含まないことを示すように設定される有効ビットを有するキャッシュラインを優先的に選択するように動作可能である、請求項１に記載のデータ処理装置。
【請求項６】
（ｉ）前記キャッシュメモリの前記キャッシュラインの各々は、それに関連付けられた、前記識別回路によって生成される再利用に好適な識別に応じて設定される、再利用に好適な領域を有し、
（ｉｉ）前記キャッシュ維持回路は、再利用のために、該キャッシュラインが再利用に好適であることを示すように設定される、再利用に好適な領域を有するキャッシュラインを優先的に選択するように動作可能である、請求項１に記載のデータ処理装置。
【請求項７】
（ｉ）前記キャッシュメモリは、ｎウェイセットアソシエイティブキャッシュメモリであり、
（ｉｉ）前記キャッシュ維持回路は、前記キャッシュメモリのｎ個の対応するキャッシュラインのうちの１つ以上のいずれに対しても、前記識別回路によって生成される任意の再利用に好適な識別を考慮して、再利用のためにそれぞれのｎウェイの前記ｎ個の対応するキャッシュライン間で選択するように動作可能である、請求項１に記載のデータ処理装置。
【請求項８】
（ｉ）先にキャッシュされたデータ値の行と、前記ｎウェイのうちのどれに前記データ値の行がキャッシュされたかの指示との間の関連性を格納するように動作可能なストリーミングデータルックアップテーブルを備え、
（ｉｉ）前記識別回路は、前記ストリーミングデータルックアップテーブルを使用して前記キャッシュメモリ内の前記データ値のキャッシュラインを検出し、優先的な再利用のための前記検出されたキャッシュラインを識別するように、前記ストリーミングプレロード命令に応じて動作可能であり、
（ｉｉｉ）前記プレロード回路は、前記キャッシュメモリのどのウェイに、前記プレロードされたデータ値が格納されたかを示すための前記ストリーミングルックアップテーブルにエントリを追加するように動作可能である、請求項７に記載のデータ処理装置。
【請求項９】
前記識別回路は、前記キャッシュメモリで前記キャッシュラインに格納された１つ以上のデータ値のアドレスに対応するキャッシュラインを検索することによって、前記キャッシュメモリ内の前記データ値のキャッシュラインを検出するように動作可能である、請求項７に記載のデータ処理装置。
【請求項１０】
（ｉ）先にキャッシュされたデータ値の行と、前記ｎウェイのうちのどれに前記データ値の行がキャッシュされたかの指示との間の関連性を格納するように動作可能なストリーミングデータルックアップテーブルを備え、
（ｉｉ）前記識別回路は、前記キャッシュメモリのどのウェイに、前記プレロードされたデータ値が格納されたかを示すための前記ストリーミングルックアップテーブルにエントリを追加するように、動作可能であり、
（ｉｉｉ）前記キャッシュ維持回路は、前記キャッシュメモリのｎ個の対応するキャッシュラインのうちの１つ以上のいずれかを示す前記ストリーミングルックアップテーブル内の任意のエントリを考慮して、再利用のためにそれぞれのｎウェイの前記ｎ個の対応するキャッシュライン間で選択するように動作可能である、請求項７に記載のデータ処理装置。
【請求項１１】
前記キャッシュ維持回路は、再利用のために、それぞれのｎウェイの前記ｎ個の対応するキャッシュライン間で選択する上で、前記ストリーミングルックアップテーブルの最も新しく追加されたエントリを考慮する、請求項１０に記載のデータ処理装置。
【請求項１２】
前記プレロード回路は、前記キャッシュメモリに、以下のアドレス
Ｐａｄｄ＝Ａｃｕｒｒ＋ｘ×Ｃｓ
を含む主メモリの一部に対応するデータ値を格納するように動作可能であり、
前記識別回路は、優先的な再利用のために、以下のアドレスを含むメモリの一部に対応するデータ値を含む前記キャッシュメモリの１つ以上のキャッシュラインを識別するように動作可能であり、
Ｒａｄｄ＝Ａｃｕｒｒ−ｙ×Ｃｓ
式中、Ｐａｄｄは、プレロード動作において、前記キャッシュメモリにプレロードされるべき前記主メモリの一部内のメモリアドレスを表し、Ｒａｄｄは、再利用識別動作において、再利用のために識別されるべきキャッシュラインに対応するメモリアドレスを表し、Ａｃｕｒｒは、前記ストリーミングプレロード命令で特定されるメモリアドレスを表し、Ｃｓは、前記キャッシュメモリ内の各キャッシュラインの長さを表し、ｘおよびｙは、整数である、請求項２に記載のデータ処理装置。
【請求項１３】
ｘおよび／またはｙは、既定の定数である、請求項１２に記載のデータ処理装置。
【請求項１４】
ｘおよび／またはｙは、前記ストリーミングプレロード命令で特定される、請求項１２に記載のデータ処理装置。
【請求項１５】
前記データ処理装置は、
（ｉ）前記主メモリと前記キャッシュメモリとの間に提供される、さらなるキャッシュメモリを備え、
前記さらなるキャッシュメモリは、前記キャッシュメモリへの転送、および前記一連の命令を実行する際の前記プロセッサによるアクセスのためのデータ値を格納するように動作可能な複数のキャッシュラインを有し、
（ｉｉ）前記ストリーミングプレロード命令は、前記キャッシュメモリおよび前記さらなるキャッシュメモリのどれで、前記プレロード動作および追い出し識別動作が行われるべきかに関して特定し、
（ｉｉｉ）前記キャッシュコントローラは、前記ストリーミングプレロード命令が、前記プレロード動作および再利用識別動作が前記キャッシュメモリに関して行われるべきことを特定する場合、データ値を前記キャッシュメモリのキャッシュラインにプレロードし、再利用のために前記キャッシュメモリの１つ以上のキャッシュラインを標識するように動作可能であるとともに、
（ｉｖ）前記ストリーミングプレロード命令が、前記プレロード動作および前記再利用識別動作が前記さらなるキャッシュメモリに関して行われるべきことを特定する場合、データ値を前記さらなるキャッシュメモリのキャッシュラインにプレロードし、再利用のために前記さらなるキャッシュメモリの１つ以上のキャッシュラインを標識するように動作可能である、請求項１に記載のデータ処理装置。
【請求項１６】
前記ストリーミングプレロード命令は、非特権モードのデータ処理システムで作動するアプリケーションソフトウェアによって実行可能である、請求項１に記載のデータ処理装置。
【請求項１７】
前記キャッシュ維持動作は、ラインフィルである、請求項１に記載のデータ処理装置。
【請求項１８】
データ処理装置であって、
（ｉ）一連の命令を実行するための処理手段と、
（ｉｉ）前記一連の命令を実行する際の前記処理手段によるアクセスのためのデータ値を格納するための、複数のキャッシュラインを有するキャッシュメモリ手段と、
（ｉｉｉ）キャッシュコントロール手段と
を備え、
前記キャッシュコントロール手段は、
前記処理手段で受信されるストリーミングプレロード命令に応じて、主メモリから、前記キャッシュメモリ手段の１つ以上のキャッシュラインに、データ値を格納するためのプレロード手段と、
前記ストリーミングプレロード命令に応じて、優先的な再利用のために、前記キャッシュメモリ手段の１つ以上のキャッシュラインを識別するための識別手段と、
前記キャッシュメモリ手段のキャッシュラインに対して、前記識別手段によって生成される、任意の再利用に好適な識別を考慮して、再利用のために１つ以上のキャッシュラインの選択が行われる間、キャッシュ維持動作を実施するためのキャッシュ維持手段と、を備える、データ処理装置。
【請求項１９】
一連の命令を実行する際のプロセッサによるアクセスのためのデータ値を格納するための複数のキャッシュラインを有するキャッシュメモリを動作させる方法であって、
（ｉ）前記プロセッサで受信されるストリーミングプレロード命令に応じて、主メモリから前記キャッシュメモリの１つ以上のキャッシュラインに、データ値を格納するステップと、
（ｉｉ）前記ストリーミングプレロード命令に応じて、優先的な再利用のために、前記キャッシュメモリの１つ以上のキャッシュラインを識別するステップと、
（ｉｉｉ）前記キャッシュメモリのキャッシュラインに対する前記識別するステップによって生成される、任意の再利用に好適な識別を考慮して、再利用のための１つ以上のキャッシュラインの選択が行われる間、キャッシュ維持動作を実施するステップと、を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを制御するためのデータ処理装置および方法に関する。より具体的には、本発明の実施形態は、データを、キャッシュメモリのキャッシュラインにプレロードし、キャッシュメモリのキャッシュラインを再利用するためのキャッシュ維持動作を制御するための装置および方法に関する。
【背景技術】
【０００２】
データ処理動作を実行するには、プロセッサは、メモリに格納されたデータ値へのアクセスを必要とする。しかしながら、データ処理装置の主メモリは、比較的遅く、したがって、プロセッサによる主メモリへの直接アクセスは実用的ではない。データ値へのより高速なアクセスを可能とするためには、プロセッサはしばしば、主メモリのコンテンツの一部のコピーを保存し、かつプロセッサによってはるかに高速にアクセスすることができる、キャッシュメモリを具備する。新しいデータ値は、必要に応じて、および必要なときに、キャッシュメモリに格納され、これらのデータ値がキャッシュメモリに存在すると、例えば、上書きされるまで、今後より迅速にこれらにアクセスすることができる。キャッシュメモリの動作は、プロセッサが新しいデータ値にアクセスするよりも、最近のデータ値を再利用する可能性が統計的により高いという事実に依存する。
【０００３】
キャッシュメモリは、プロセッサによるアクセスのためのデータ値を格納するようにそれぞれ動作可能である、複数のキャッシュライン（列としても知られる）を備える。データ値は、キャッシュライン単位で、主メモリからキャッシュメモリにロードされる。キャッシュメモリが主メモリと比べて比較的小さいという事実の結果、新しいデータ値がキャッシュメモリにロードされる際は、頻繁にキャッシュラインを再利用する必要があるということが理解されよう。例えば、ランダムに取り替える方策または最も以前に使用されたものを取り替える方策といった、新しいデータ値がキャッシュにロードされる場合に、再利用のためのキャッシュラインの選択に適用し得るいくつかのスキームが存在する。
【０００４】
ある種のプロセッサ動作は、キャッシュメモリの有効性を妨害する可能性がある。例えば、ストリーミングデータ（データがロングストリームとして扱われ、ほぼすべてのデータアクセスが、データがストリーミングされる際に着実に進むストリームの現在の位置に局所的である）の場合、キャッシュメモリは、データ値のストリームによって迅速に上書きされ得る。これは、今後再利用されるかもしれない非ストリーミングデータが、再利用される可能性の低いストリーミングされたデータ値によって上書きされてしまうので、データ値のストリームが１回のみ使用される際（通常のストリーミングデータの場合のように）、不利である。この種のデータストリーミングを伴い得る動作の例としては、コーデックス、通信プロトコル、およびブロックメモリ動作がある。
【０００５】
一部のプロセッサアーキテクチャ（例えば、ＩＡ−３２／ＳＳＥ、Ｈｉｔａｃｈｉ  ＳＲ８０００、３ＤＮｏｗ！）は、ストリーミングされたデータのためにキャッシュメモリをバイパスする、修正されたロードおよび格納命令を使用して、この問題に対処している。一部のアーキテクチャ（例えば、ＩＡ−３２／ＳＳＥ）は、マルチレベルキャッシュ構造を有し、キャッシュのレベルまでデータをプレロードするべきかを特定する、プレロード命令を提供する。
【０００６】
先の特許文献１において、本出願者により、キャッシュ管理方法が提唱されたが、ここでは、データトラフィックが監視され、キャッシュ内のデータが、トラフィック監視に基づき、キャッシュからの優先的な追い出しのために標識される。
【０００７】
キャッシュ追い出し最適化技術は、特許文献２に説明されており、ここでは、プログラム命令により、ソフトウェア設計者が、さらなるプログラム実行中に使用される可能性が低いデータを識別するソフトウェア割当解除のヒントを提供することができる。
【０００８】
ストリーミングデータのためのキャッシングスキームは、非特許文献１に記載されており、標準データキャッシュが上書きされるのを防止するために、ストリーミングデータに利用されるべき個別のキャッシュを提供する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】国際出願公開第２００７／０９６５７２号
【特許文献２】米国特許第６，７６６，４１９号明細書
【非特許文献】
【００１０】
【非特許文献１】Ｊｕｎｇｈｅｅ  Ｌｅｅ、Ｃｈａｎｉｋ  Ｐａｒｋ、ａｎｄ  Ｓｏｏｎｈｏｉ  Ｈａ，“Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｐａｔｔｅｒｎ  Ａｎａｌｙｓｉｓ  ａｎｄ  Ｓｔｒｅａｍ  Ｃａｃｈｅ  Ｄｅｓｉｇｎ  ｆｏｒ  Ｍｕｌｔｉｍｅｄｉａ  Ａｐｐｌｉｃａｔｉｏｎｓ”．
【発明の概要】
【課題を解決するための手段】
【００１１】
本発明の一態様によると、データ処理装置が提供され、
前記データ処理装置は、
一連の命令を実行するように動作可能なプロセッサと、
一連の命令を実行する際に、プロセッサによるアクセスのためのデータ値を格納するように動作可能な複数のキャッシュラインを有するキャッシュメモリと、
キャッシュコントローラと
を備え、
前記キャッシュコントローラは、
主メモリから前記キャッシュメモリの１つ以上のキャッシュラインにデータ値を格納するように、前記プロセッサで受信されるストリーミングプレロード命令に応じて動作可能なプレロード回路と、
優先的な再利用のために前記キャッシュメモリの１つ以上のキャッシュラインを識別するように、前記ストリーミングプレロード命令に応じて動作可能な識別回路と、
キャッシュメモリのキャッシュラインのための前記識別回路によって生成される任意の再利用に好適な識別を考慮して、再利用のための１つ以上のキャッシュラインの選択が行われる間、キャッシュ維持動作を実施するように動作可能なキャッシュ維持回路と、を備える。
【００１２】
このように、単一のストリーミングプレロード命令を使用して、キャッシュメモリへのデータ値の１つ以上のキャッシュラインのプレロードをトリガし、また優先的な再利用のためにキャッシュメモリの１つ以上のキャッシュラインを標識することができる。次いで、新しいデータ値がキャッシュメモリにロードされる際、優先的な再利用のために標識されたキャッシュラインは、再利用の候補ラインとして見なされ、よって、それらは、今後要求される可能性があるデータ値を含み得るキャッシュラインの代わりに優先的に上書きされる。効果的には、ストリーミングプレロード命令により、プログラマは、一時的に（すなわち短期間キャッシュされ破棄される）データを標識することができる。例えば、一実施形態において、ストリーミングプレロード命令は、ＣＰＵに次のキャッシュラインをプレロードさせ、前のキャッシュラインを追い出し可能として標識させる、キャッシュヒントとして機能し得る。別の実施形態において、ストリーミングプレロード命令は、ＣＰＵに次のキャッシュラインをプレロードさせ、追い出し可能として標識させる、キャッシュヒントとして機能し得る。
【００１３】
好適には、ＣＰＵが現在のキャッシュラインのデータへのアクセスを終了していないかもしれず、したがって、現在のキャッシュラインに格納されたデータ値が依然として要求され得るという事実により、現在のキャッシュラインではなく、前のキャッシュラインが、再利用に好適または追い出し可能として標識される。
【００１４】
キャッシュ維持動作は、例えば、ラインフィル動作であり得、これによって、主メモリ内のデータ値の行は、キャッシュメモリの行にコピーされる。
【００１５】
この命令はまた、ＣＰＵに前のキャッシュラインを追い出し可能として標識させる（同時にプレロード動作をトリガすることなく）、キャッシュヒントである、ストリーミング追い出し命令と併せて使用することもできる。したがって、ストリーミング追い出し動作は、ストリーミングプロセスの終了時、例えば、処理のためにプレロードされることが要求される、ストリーム内のさらなるデータ値が無い場合、有用であり得る。
【００１６】
ストリーミングプレロード命令は、ストリーミングコードに挿入されるべき新しい命令の要求、およびキャッシュの複雑性の増加という犠牲を払うが、再利用されるであろうデータのためにデータキャッシュにスペースを保ち、同様にパフォーマンスを増大させ、かつ電力消費を減少させ得る。
【００１７】
典型的なストリーミングアプリケーションは、以下のように構築され得る。
ループ：
アドレスＡからデータを読み込む
データを処理する
データをアドレスＢに書き込む
ＡおよびＢをインクリメントする
さらなるデータの間、ループへ移動する
【００１８】
これは、数千回反復した後、データキャッシュ全体を上書きする可能性が高いことが理解されよう。
【００１９】
しかしながら、新しい命令の追加は以下のように行われる。
ループ：
ストリーミングデータ（アドレスＡ）をプレロードする
データをアドレスＡから読み込む
データを処理する
ストリーミングデータ（アドレスＢ）を前追い出しする
データをアドレスＢに書き込む
ＡおよびＢをインクリメントする
さらなるデータの間、ループへ移動する
【００２０】
この修正されたコードは、キャッシュ全体ではなく、データキャッシュの一部のみが上書きされることを規定する。
【００２１】
ストリーミングプレロード命令は、プロセッサによって現在処理されているキャッシュメモリ内の現在のキャッシュラインに対応するメモリアドレスを特定し得る。この場合、プレロード回路は、現在のキャッシュラインのデータ値を追従する、主メモリ内のデータ値をキャッシュメモリの１つ以上のキャッシュラインに格納するように動作可能であり、識別回路は、優先的な再利用のために、現在のキャッシュラインのデータ値に先行する主メモリからのデータ値を含むキャッシュメモリの１つ以上のキャッシュラインを識別するように動作可能である。このように、ストリーミングプレロード命令は、単一のメモリアドレスを特定するだけでよく、次いで、キャッシュコントローラは、単一のメモリアドレスに基づいて、優先的な再利用動作のためにプレロードおよび標識を参照的に適用することができる。これは、好適な追い出しのために、あるキャッシュラインをプレロードし、別のキャッシュラインを標識するよう、個別の命令およびそれぞれの標的アドレスが提供される配置と比較して、単純性を提供する。従来のプレロード命令は、プレロードされるべきキャッシュラインのアドレスを特定するが、本発明の実施形態は、データストリーム内の現在の位置のメモリアドレスを特定し、好適な利用のためにプレロードおよび標識するための標的アドレスが、該現在の位置から参照的に生成される。
【００２２】
代替的に、ストリーミングプレロード命令は、現在処理されているデータ値のメモリアドレスへのポインタを格納するプロセッサレジスタを指摘し得、次いで、プロセッサレジスタに格納されたメモリアドレスは、優先的な再利用のためにプレロードおよび標識されるべきキャッシュラインを参照的に決定するための参照点を特定するために使用することができる。
【００２３】
ストリーミングプレロード命令は、キャッシュメモリで利用可能となるストリーミングデータの量を特定し得る。この場合、プレロード回路は、ストリーミングプレロード命令で特定されるストリーミングデータの量に従って決定される主メモリからのデータの量を、キャッシュメモリにプレロードするように動作可能である。例えば、ストリーミングプレロード命令は、データ値の複数のキャッシュラインが、主メモリからキャッシュにプレロードされるべきことを特定することができる。同様に、この場合、識別回路は、優先的な再利用のために、ストリーミングプレロード命令で特定されたストリーミングデータの量に従って決定される、いくかのキャッシュラインを識別するように動作可能であり得る。
【００２４】
換言すると、例えば、メモリ待ち時間、またはメモリシステムがサポートする未処理のメモリ要求の数に応じて、ストリーミングプレロード命令で所望のデータの量を要求することによって、再利用のためにプレロードおよび標識されるデータの量に柔軟性を提供することができる。
【００２５】
優先的な再利用のために、キャッシュ内のデータ値を標識するためのいくつかの可能な方法が存在する。例えば、キャッシュメモリのキャッシュラインは、典型的に、それに関連付けられた、キャッシュラインが有効データを含むかどうかを示すために使用される有効ビットを有する。識別回路は、あるキャッシュラインが再利用に好適である場合、該キャッシュラインが有効データを含まないことを示すように、キャッシュラインの有効ビットを設定するように動作可能であり得る。次いで、キャッシュ維持回路は、再利用のために、該キャッシュラインが有効データを含まないことを示すように設定される有効ビットを有するキャッシュラインを優先的に選択するべく動作可能である。この配置は、キャッシュメモリの既存のフラグを利用し、したがって、キャッシュのキャッシュラインにいかなる付加的なフラグの追加も必要としないので、有利である。
【００２６】
代替的な配置において、キャッシュメモリのキャッシュラインの各々は、それに関連付けられた、識別回路によって生成される再利用に好適な識別に応じて設定される、（有効ビットに追加的な）再利用に好適な領域を有する。この場合、キャッシュ維持回路は、再利用のために、該キャッシュラインが再利用に好適であることを示すように設定される、再利用に好適な領域を有するキャッシュラインを優先的に選択するように動作可能である。（有効ビットを利用するのではなく）専用の再利用に好適なフラグを提供することの利点は、データが、再利用に好適であると標識されるのと同時に、有効なままで（したがって、キャッシュでアクセス可能で）あり得る、ということである。
【００２７】
キャッシュメモリは、ｎウェイセットアソシエイティブキャッシュメモリであり得る。この場合、キャッシュ維持回路は、キャッシュメモリのｎ個の対応するキャッシュラインのうち１つ以上のいずれかのラインに対する、識別回路によって生成される任意の再利用に好適な識別を考慮して、再利用のために、それぞれのｎウェイのｎ個の対応するキャッシュライン間で選択するように動作可能である。
【００２８】
ストリーミングデータルックアップテーブルが提供され得、これは、ストリーミングプレロード命令に応じて先にキャッシュされたデータ値の行と、ｎウェイのうちのどれにそれらのデータ値の行がキャッシュされたかの指示との間の関連性を格納するように動作可能である。この場合、プレロード回路は、キャッシュメモリのどのウェイに、プレロードされたデータ値が格納されたかを示すためのストリーミングルックアップテーブルにエントリを追加するように、動作可能である。さらに、識別回路は、ストリーミングデータルックアップテーブルを使用して、キャッシュメモリ内のデータ値のキャッシュラインを検索し、優先的な再利用のために、検出されたキャッシュラインを識別するように、ストリーミングプレロード命令に応じて動作可能である。この配置は、適切なエントリを求めてキャッシュの各ウェイを検索する必要がないので、優先的な再利用のためにキャッシュラインを標識するプロセスを簡略化する。
【００２９】
代替的な配置において、ルックアップテーブルが提供されない場合、識別回路は、キャッシュメモリの各ウェイでキャッシュラインに格納された１つ以上のデータ値のアドレスに対応するキャッシュラインを検索することにより、キャッシュメモリ内のデータ値のキャッシュラインを検出するように動作可能である。
【００３０】
異なる形態のストリーミングデータルックアップテーブルもまた提供され得、これは、先にキャッシュされたデータ値の行と、ｎウェイのうちのどれにデータ値の行がキャッシュされたかの指示との間の関連性を格納する。この場合、（プレロード回路ではなく）識別回路は、キャッシュメモリのどのウェイに、プレロードされたデータ値が格納されたかを示すためのストリーミングルックアップテーブルにエントリを追加するように動作可能である。次いで、キャッシュ維持回路は、キャッシュ維持動作を行う際、キャッシュメモリのｎ個の対応するキャッシュラインのうちの１つ以上のいずれかの好適な再利用を示すストリーミングルックアップテーブルの任意のエントリを考慮して、再利用のために、それぞれのｎウェイのｎ個の対応するキャッシュライン間で選択するように動作可能である。換言すると、この形態のストリーミングデータルックアップテーブルは、キャッシュの最近使用されたウェイを検出するための識別回路への近道を提供するのではなく、再利用に好適な識別を提供するために使用される。
【００３１】
この技術に伴う１つの潜在的な問題は、ストリーミングデータルックアップテーブルのキャッシュラインが、プロセッサがそれを終了する前に、新しいデータによって上書きされる可能性があるということである。これが生じる可能性を低減するには、キャッシュ維持回路は、再利用のために、それぞれのｎウェイのｎ個の対応するキャッシュライン間で選択する上で、ストリーミングルックアップテーブルに最も新しく追加されたエントリを考慮することが可能である。このように、最も新しく追加されたエントリ（依然として使用中の可能性が高いもの）は、再利用に好適であるとして見なされず、それによって、現在処理されているデータ値が上書きされる可能性を低減する。
【００３２】
プレロード回路は、キャッシュメモリに、以下のアドレス
Ｐａｄｄ＝Ａｃｕｒｒ＋ｘ×Ｃｓ
を含む主メモリの一部に対応するデータ値を格納するように動作可能であり得、
識別回路は、優先的な再利用のために、以下のアドレスを含むメモリの一部に対応するデータ値を含む該キャッシュメモリの１つ以上のキャッシュラインを識別するように動作可能であり得、
Ｒａｄｄ＝Ａｃｕｒｒ−ｙ×Ｃｓ
式中、Ｐａｄｄは、プレロード動作において、キャッシュメモリにプレロードされるべき主メモリの一部内のメモリアドレスを表し、Ｒａｄｄは、再利用識別動作において、再利用のために識別されるべきキャッシュラインに対応するメモリアドレスを表し、Ａｃｕｒｒは、ストリーミングプレロード命令で特定されるメモリアドレスを表し、Ｃｓは、キャッシュメモリ内の各キャッシュラインの長さを表し、ｘおよびｙは、整数である。
【００３３】
ｘおよび／またはｙという値は既定の定数であり得、複数の値を取り得、そこでは、複数のキャッシュラインが、優先的な再利用のために、格納および／または標識される。例えば、ｘという値は、１および２（現在処理されているキャッシュラインの直後の２つのキャッシュラインが、プレロードされるべきことを示す）であり得る。同様に、ｙという値は、１および２（現在処理されているキャッシュラインの直後の２つのキャッシュラインが、優先的な再利用のために標識されるべきことを示す）であり得る。
【００３４】
代替的に、ｘおよび／またはｙという値は、ストリーミングプレロード命令自体で特定され得、プログラマに、どれくらいの、およびどのストリーミングデータが、キャッシュにプレロードされるべきか、またはキャッシュからの可能な追い出しのために標識されるべきかを判断する能力を与える。
【００３５】
一部のアーキテクチャにおいて、キャッシュメモリの階層は、まず、最初にアクセスされるより小さく高速のキャッシュメモリ、およびデータが該より小さなキャッシュメモリに存在しない場合にアクセスされる、より大きく低速の（しかし、主メモリよりは依然として速い）キャッシュメモリを具備する。本発明の実施形態に照らして、さらなるキャッシュメモリを、主メモリとキャッシュメモリとの間に提供することができ、該さらなるキャッシュメモリは、キャッシュメモリと実質的に同一の構造を有することを理解されよう。具体的には、さらなるキャッシュメモリは、キャッシュメモリへの転送、および一連の命令を実行する際のプロセッサによるアクセスのためのデータ値を格納するように動作可能な複数のキャッシュラインを備え得る。ストリーミングプレロード命令は、この場合、キャッシュメモリおよびさらなるキャッシュメモリのどれで、プレロード動作および追い出し識別動作が行われるべきかに関して特定し得る。
【００３６】
この場合、キャッシュコントローラは、ストリーミングプレロード命令が、プレロード動作および再利用識別動作がキャッシュメモリに関して行われるべきことを特定する場合、データ値をキャッシュメモリのキャッシュラインにプレロードし、優先的な再利用のために、キャッシュメモリの１つ以上のキャッシュラインを標識するように動作可能であり得る。また、キャッシュコントローラは、前記ストリーミングプレロード命令が、プレロード動作および再利用識別動作がさらなるキャッシュメモリに関して行われるべきことを特定する場合、データ値をさらなるキャッシュメモリのキャッシュラインにプレロードし、再利用のためにさらなるキャッシュメモリの１つ以上のキャッシュラインを標識するように動作可能であり得る。
【００３７】
単一のキャッシュコントローラを使用して、キャッシュメモリおよびさらなるキャッシュメモリの両方を制御することが可能であること、または代替的に、キャッシュメモリのそれぞれが、それ自身の専用キャッシュ制御回路を具備することが可能であることが理解されよう。
【００３８】
ストリーミングプレロード命令は、データ処理システムにおいて非特権モードで作動するアプリケーションソフトウェアによって実行可能であり得る。典型的には、プロセッサは、特権および非特権モードの両方を有する。多くのキャッシュ維持プログラム命令は、通常、特権モードでのみ行うことができる。ストリーミングプレロード命令の利点は、非特権モードでアップリケーションによって使用され得ることである。
【００３９】
本発明の別の態様によると、データ処理装置であって、
一連の命令を実行するための処理手段と、
一連の命令を実行する際の処理手段によるアクセスのためのデータ値を格納するための複数のキャッシュラインを有するキャッシュメモリ手段と、
キャッシュコントロール手段と
を含み、
前記キャッシュコントロール手段は、
前記処理手段で受信されるストリーミングプレロード命令に応じて、主メモリから、前記キャッシュメモリ手段の１つ以上のキャッシュラインにデータ値を格納するためのプレロード手段と、
前記ストリーミングプレロード命令に応じて、優先的な再利用のために、前記キャッシュメモリ手段の１つ以上のキャッシュラインを識別するための識別手段と、
キャッシュメモリ手段のキャッシュラインに対して、前記識別手段によって生成される、任意の再利用に好適な識別を考慮して、再利用のために１つ以上のキャッシュラインの選択が行われる間に、キャッシュ維持動作を実施するためのキャッシュ維持手段と、を備える、データ処理装置が提供される。
【００４０】
本発明の別の態様によると、一連の命令を実行する際のプロセッサによるアクセスのためのデータ値を格納するための複数のキャッシュラインを有するキャッシュメモリを動作させる方法であって、
前記プロセッサで受信されるストリーミングプレロード命令に応じて、主メモリから前記キャッシュメモリの１つ以上のキャッシュラインに、データ値を格納するステップと、
前記ストリーミングプレロード命令に応じて、優先的な再利用のために、前記キャッシュメモリの１つ以上のキャッシュラインを識別するステップと、
キャッシュメモリのキャッシュラインに対する前記識別ステップによって生成される、任意の再利用に好適な識別を考慮して、再利用のための１つ以上のキャッシュラインの選択が行われる間、キャッシュ維持動作を実施するステップと、を含む方法が提供される。
【００４１】
本発明の種々の他の態様および特徴は、請求項で定義され、コンピュータプログラム製品を含む。
【００４２】
本発明の上記および他の目的、特徴、および利点は、添付の図面と併せて読まれるべきである、以下の例示的な実施形態の詳細な説明から明らかとなろう。
【００４３】
以下、本発明の実施形態を、ほんの一例として、添付の図面を参照して、説明する。
【図面の簡単な説明】
【００４４】
【図１】主メモリとレベル１およびレベル２のキャッシュメモリとを有するデータ処理装置の概略図である。
【図２】プロセッサによってキャッシュおよび処理されるデータのストリームの概略図である。
【図３】キャッシュメモリの概略図である。
【図４】代替的なキャッシュメモリの概略図である。
【図５】データ値をキャッシュメモリにプレロードし、好適な再利用のためにキャッシュメモリのキャッシュラインを標識するためのプロセスを図示する、概略的なフローチャートである。
【図６】データ値がプロセッサによってアクセスされる際の、キャッシュラインの更新を行うためのプロセスを図示する、概略的なフローチャートである。
【発明を実施するための形態】
【００４５】
図１を参照すると、データ処理装置１が概略的に図示されている。データ処理装置１は、データ処理命令を実行するための中央処理装置１０と、データを格納するための主メモリ２０と、中央処理装置１０による利用のためにデータ値を一時的に格納するためのキャッシュメモリ３０、４０と、を備える。主メモリ２０は、大容量だが、低速アクセス、小容量ストレージである。データへの高速アクセスを可能にするために、主メモリ２０に格納されたデータのサブセットのコピーを、レベル２のキャッシュ４０に格納する。レベル２のキャッシュ４０は、主メモリ２０よりもはるかに小さい容量のストレージを提供するが、はるかに迅速にアクセスすることができる。さらに、レベル１のキャッシュ３０もまた、この場合提供され、同様に、レベル２のキャッシュ４０よりも小さな容量のストレージを提供するが、アクセス時間はより高速である。
【００４６】
中央処理装置１０が特定のデータ値を要求する場合、レベル１のキャッシュ３０が最初にチェックされ（データ値が実際にレベル１のキャッシュ３０に存在する場合、データ値への最も高速の可能なアクセスを提供するので）、レベル１のキャッシュ３０に存在する場合（レベル１のキャッシュヒット）、データ値は、中央処理装置１０によって読み取りおよび使用される。この場合、レベル２のキャッシュ４０または主メモリ２０のいずれにもアクセスする必要はない。しかしながら、データ値がレベル１のキャッシュ３０に存在しない場合（レベル１のキャッシュミス）、レベル２のキャッシュ４０がチェックされ、データ値が存在する場合（レベル２のキャッシュヒット）、中央処理装置１０によって読み取りおよび使用される。この場合、レベル１のキャッシュ３０およびレベル２のキャッシュ４０の両方にアクセスする必要があるが、主メモリ２０にアクセスする必要はない。要求されたデータ値が、レベル１キャッシュ３０にもレベル２キャッシュ４０にも存在しない場合（レベル２のキャッシュミス）にのみ、主メモリ２０にアクセスして、データ値を取得する必要がある。
【００４７】
レベル１のキャッシュ３０は、キャッシュライン単位でデータ値を格納するキャッシュメモリ３２と、中央処理装置１０によるキャッシュメモリ３２へのアクセスを制御するキャッシュコントローラ３４と、を備える。キャッシュコントローラ３４は、中央処理装置１０によって実行されているストリーミングプレロード命令に応答して、主メモリ２０からキャッシュメモリ３２の１つ以上のキャッシュラインにデータ値の行を格納する、プレロード回路３５を備える。キャッシュコントローラ３４はまた、ストリーミングプレロード命令に応答して、優先的な再利用のためにキャッシュメモリ３２の１つ以上のキャッシュラインを識別する識別回路３６と、キャッシュメモリ３２のキャッシュラインに対して前記識別回路３６によって生成される、任意の好適な再利用の識別を考慮して、再利用のために１つ以上のキャッシュラインの選択が行われる間、キャッシュ維持動作を実施するように動作可能であるキャッシュ維持回路３７と、を備える。
【００４８】
レベル１のキャッシュ３０と同様に、レベル２のキャッシュ４０は、キャッシュライン単位でデータ値を格納するキャッシュメモリ４２と、中央処理装置１０によるキャッシュメモリ４２へのアクセスを制御するキャッシュコントローラ４４と、を備える。キャッシュコントローラ４４は、中央処理装置１０によって実行されているストリーミングプレロード命令に応答して、主メモリ２０からキャッシュメモリ４２の１つ以上のキャッシュラインにデータ値を格納する、プレロード回路４５を備える。キャッシュコントローラ４４はまた、ストリーミングプレロード命令に応答して、優先的な再利用のためにキャッシュメモリ４２の１つ以上のキャッシュラインを識別する識別回路４６と、キャッシュメモリ４２のキャッシュラインに対して識別回路４６によって生成される、任意の好適な再利用の識別を考慮して、再利用のために１つ以上のキャッシュラインの選択が行われる間、キャッシュ維持動作を実施するように動作可能であるキャッシュ維持回路４７と、を備える。
【００４９】
このように、ストリーミングプレロード命令を含むプログラムコードを使用して、主メモリ２０からレベル１のキャッシュ３０およびレベル２のキャッシュ４０の両方にデータ値をプレロードさせ、また、優先的な再利用のために、レベル１のキャッシュ３０およびレベル２のキャッシュ４０のそれぞれのキャッシュメモリ３２、４２のキャッシュラインを標識させることができ、これによって、ストリーミングデータが、キャッシュ内の有用なデータを上書きするという問題を低減する。この技術の変形を応用して、レベル１のキャッシュ３０およびレベル２のキャッシュ４０のうちのどちらかにのみ関して、優先的な再利用のためにプレロードおよび標識することが可能であることが理解されよう。
【００５０】
キャッシュメモリは、ｎウェイセットアソシエイティブキャッシュメモリであり得る。これは、キャッシュメモリは、ｎ個（ｎは、例えば、４といった正の整数）のセクション、またはウェイに論理的に分割されることを意味する。キャッシュメモリの各ウェイは、１組のキャッシュラインを備え、各ウェイの各キャッシュラインは、インデックス値を有し、他方のウェイのそれぞれの対応するキャッシュラインに関連付けられる。各ウェイの関連付けられたキャッシュラインは、それぞれ、同一のインデックス値を有する。主メモリからのデータ値がキャッシュメモリに格納される際、それらは、格納されるべきデータ値の主メモリ内の場所に対応するメモリアドレスに応じて、キャッシュラインに割り当てられる。主メモリからのデータ値のいかなる所与の行も、特定のインデックス値を有するキャッシュラインに格納することができ、したがって、キャッシュメモリのｎウェイのうちの任意の１つの特定のキャッシュラインに格納することができる。ｎの値が大きくなればなるほど、キャッシュミスの可能性は低くなるが、キャッシュ内のデータ値にアクセスするために必要な処理の量が多くなる（データ値の特定の行を、より多くのキャッシュラインに格納することができ、所与のデータ値に対してキャッシュのより多くのキャッシュラインのチェックを余儀なくさせるため）。
【００５１】
キャッシュエントリの一般形態は以下のとおりである。
【００５２】
【表１】
2010198610.tif 000003
【００５３】
データ値は、主メモリからフェッチされたもの、または主メモリにその後保存する前にプロセッサによってキャッシュメモリに格納されたものである。インデックスおよびディスプレースメントを伴うタグは、データ値が対応する、主メモリのメモリアドレスを定義する。具体的には、メモリアドレスの最上位ビット（ＭＳＢ）がタグを形成し、真中のビットがインデックスを形成し、最下位ビットがディスプレースメントを形成する。例えば、３２ビットメモリの場合、タグはメモリアドレスの最初の２０ビットから成り得、インデックスはメモリアドレスの次の７ビットから成り得、ディスプレースメントはメモリアドレスの最後の５ビットから成り得る。最終的に、有効ビットは、キャッシュラインが有効データを含むかどうかを示す。
【００５４】
効果的には、実際にキャッシュに格納される値は、データ値、タグアドレス、有効ビット、および任意選択で（以下に述べるとおり）再利用に好適なフラグである。インデックスは、キャッシュメモリのウェイを構成するキャッシュラインの配列内のキャッシュラインの位置によって表され、よって、キャッシュの単一の行（各ウェイ）に一意的であり、したがって、この値は、データが入れられた、または入れられる、キャッシュの行を表す。ディスプレースメントは、格納されたキャッシュライン内の位置を表す（通常、キャッシュライン内のデータ値のいくつかのブロックのうちのどれが要求されるかを示すために使用される）。タグアドレスは、データ値に関連してキャッシュラインに格納され、キャッシュでは、メモリアドレスのＭＳＢに対してアクセスをチェックして、所望のデータ値がキャッシュ内に存在するかどうかを判断する。具体的には、タグを使用して、キャッシュのどのウェイ（もしあれば）に、データ値の特定の行が格納されたかを判断する。
【００５５】
図２を参照すると、代表的なデータ値のストリームが概略的に図示される。中央処理装置１０による処理が現在行われている、データストリーム内の位置２１０は、アドレスＡｃｕｒｒを有し、このアドレスは、中央処理装置１０のレジスタＲｎに格納される。アドレスＡｃｕｒｒにおいてデータ値を含むデータ値のキャッシュラインは、レベル１のキャッシュ３０に存在する。プレロード回路３５は、ストリーミングプレロード命令に応答して、プロセッサレジスタＲｎに格納された現在のアドレスＡｃｕｒｒに基づき、レベル１のキャッシュ３０にプレロードされるデータ値のキャッシュラインを計算する。本例において、プレロードされるキャッシュラインは、以下のメモリアドレスを含み、
Ｐａｄｄ＝Ａｃｕｒｒ＋ｘ×Ｃｓ                      （式１）
式中、Ｐａｄｄは、プレロード動作において、キャッシュメモリにプレロードされる主メモリの一部内のメモリアドレスを表し、Ａｃｕｒｒは、ストリーミングプレロード命令で特定され得る、処理が現在行われているデータストリーム内の現在のアドレスを表し、Ｃｓは、キャッシュメモリ内の各キャッシュラインの長さを表し、ｘは整数である。
【００５６】
具体的には、プレロード回路３５は、１つ以上のキャッシュライン（キャッシュラインの数はｘの値に依存する）のサイズを現在のアドレスに加算することによって、プレロードされるデータ値の行のメモリアドレスを決定し、このように計算されたアドレスを含むメモリの一部からのデータ値の行をプレロードする。この決定はいくつかの方法で行われ得ることが理解されよう。例えば、現在のアドレスは、現在処理されているキャッシュラインの開始アドレス、または現在処理されているキャッシュラインの終了アドレス、または現在処理されているキャッシュライン内の任意の他のアドレスを表す場合もある。現在のアドレスが現在処理されているキャッシュラインの開始位置を示す場合、上の式（式１）は、プレロードされるデータ値の行の開始アドレスを直接決定する。現在のアドレスが現在処理されているキャッシュライン内の別の位置を示す場合、上の式（式１）は、プレロードされるデータ値の行内の位置のメモリアドレスを提供し、プレロードされるデータ値の行の開始位置を決定するために追加の動作が必要となる。
【００５７】
さらに、識別回路３６は、ストリーミングプレロード命令に応答して、プロセッサレジスタＲｎに格納された現在のアドレスＡｃｕｒｒに基づき、好適な再利用のために標識される、レベル１のキャッシュ３０内のキャッシュラインのメモリアドレスを計算する。本例において、好適な再利用のために標識されるキャッシュラインは、以下のメモリアドレスを含み、
Ｒａｄｄ＝Ａｃｕｒｒ−ｙ×Ｃｓ                      （式２）
式中、Ｒａｄｄは、再利用識別動作において、優先的な再利用のために識別されるキャッシュラインに対応するメモリアドレスを表し、Ａｃｕｒｒは、ストリーミングプレロード命令で特定され得る、処理が現在行われているデータストリーム内の現在のアドレスを表し、Ｃｓは、キャッシュメモリ内の各キャッシュラインの長さを表し、ｙは整数である。
【００５８】
具体的には、プレロード回路３５は、現在のアドレスから１つ以上のキャッシュライン（キャッシュラインの数はｙの値に依存する）のサイズを減算することによって、優先的な再利用のために標識されるキャッシュラインを決定し、優先的な再利用のために、このように計算されたアドレスに関連付けられたデータ値を含むキャッシュラインを標識する。上述のプレロードアドレスの決定と同様に、好適な再利用のためのキャッシュラインの決定は、いくつかの方法で行われ得ることが理解されよう。例えば、現在のアドレスは、現在処理されているキャッシュライン内のデータ値の開始アドレス、または現在処理されているキャッシュライン内のデータ値の終了アドレス、または現在処理されているキャッシュラインの中間のデータ値のアドレスを表す場合もある。現在のアドレスが現在処理されているキャッシュラインの開始位置を示す場合、上の式（式２）は、好適な使用のために標識されるキャッシュラインの開始アドレスを直接決定する。現在のアドレスが現在処理されているキャッシュライン内の別の位置を示す場合、上の式（式２）は、好適な再利用のために標識されるキャッシュライン内のメモリアドレスを提供し、キャッシュラインの開始位置を決定するために追加の動作が必要となる。
【００５９】
このように、現在のメモリアドレスＡｃｕｒｒは、プレロードされるデータ、および破棄されるデータを定義するために使用される。
【００６０】
キャッシュラインが、キャッシュラインに存在する、または配置されるデータ値のメモリアドレスの最初の２７ビット（タグ＋インデックス）によって識別することができる、ならびに、したがってメモリアドレスの最初の２７ビットが、キャッシュライン内に提供されるすべてのデータ値に対して同一であるという事実により、キャッシュラインの開始アドレス、ひいてはキャッシュラインの識別を、プレロード開始アドレスおよび優先的な再利用の標識開始アドレスに対して、それぞれＰａｄｄおよびＲａｄｄの最初の２７ビットのみを採用することによって、導くことができることが理解されよう。他のアーキテクチャにおいて、採用されるビットの数は異なる場合があるが、動作の原理は依然として適用される。
【００６１】
図３を参照すると、例示的なキャッシュメモリ構造が概略的に図示されている。キャッシュメモリは、上述のとおり、４つのキャッシュウェイ３２０、３４０、３６０、３８０と、ストリーミングプレロード命令に応じて最近キャッシュされたデータ値の行が、キャッシュメモリのどのウェイに格納されたかを識別するためのルックアップテーブル３１０と、を備える。
【００６２】
キャッシュメモリの第１のウェイ（ウェイ０）３２０は、第１の複数のキャッシュラインを備え、それぞれが、タグ部分３２２、データ部分３２４、有効フラグ３２６、および任意選択で再利用に好適なフラグ３２８を有する。キャッシュメモリの第２のウェイ（ウェイ１）３４０は、第２の複数のキャッシュラインを備え、それぞれが、タグ部分３４２、データ部分３４４、有効フラグ３４６、および任意選択で再利用に好適なフラグ３４８を有する。キャッシュメモリの第３のウェイ（ウェイ２）３６０は、第３の複数のキャッシュラインを備え、それぞれが、タグ部分３６２、データ部分３６４、有効フラグ３６６、および任意選択で再利用に好適なフラグ３６８を有する。最後に、キャッシュメモリの第４のウェイ（ウェイ３）３８０は、第４の複数のキャッシュラインを備え、それぞれが、タグ部分３８２、データ部分３８４、有効フラグ３８６、および任意選択で再利用に好適なフラグ３８８を有する。ライトバックキャッシュの場合、各ウェイの各キャッシュラインは、キャッシュラインに格納された値が変更されたが、主メモリには上書きされていないことを示すための、ダーティフラグ（図示せず）も有する。
【００６３】
第１、第２、第３、および第４の複数のキャッシュラインの各々は、同一の数のキャッシュラインを備え、各ウェイの各行は、他のウェイの各々対応する行のインデックスと同一の、関連付けられたインデックスを有する。タグ部分は、データ部分に格納されたデータ値に対応するメモリアドレスのＭＳＢを格納し、キャッシュ内のデータ値を検出するために使用される。各キャッシュラインの有効ビットは、有効データがデータ部分に格納されたかどうかを識別する。上述のとおり、有効フラグは、データのキャッシュラインを有効、ひいては再利用に好適であると標識するように、ストリーミングプレロード命令に応じて設定することができる。任意選択で、（有効ビットを使用する代わりに）再利用に好適なフラグを、キャッシュラインが再利用に好適であることを明示的に示すように提供することができ、該再利用に好適なフラグは、ストリーミングプレロード命令に応じて設定される。
【００６４】
ストリーミングデータルックアップテーブル３１０は、先にキャッシュされたデータ値の行（具体的には、ストリーミングプレロード命令に応じてキャッシュされたもの）と、ｎウェイのうちのどれにそれらのデータ値の行がキャッシュされたかの指示との間の関連性を格納するように動作可能である。具体的には、ストリーミングデータルックアップテーブル３１０は、複数の列を備え、それぞれが、参照部分３１２と、ウェイ指示部分３１４と、を有する。データ値が、ストリーミングプレロード命令に応じて、例えば、第１のウェイ３２０のキャッシュラインにプレロードされる場合、ストリーミングデータルックアップテーブル３１０は更新され、参照部分３１２にキャッシュラインの識別を示し、ウェイ指示部分３１４に、該キャッシュラインの格納されたデータ値が第１のウェイ３２０に見出され得ることを示す。同一のプロセスを使用して、第２、第３、および第４のウェイの各々においてプレロードされたデータ値の場所の記録を保持することができる。参照部分３１２に提供されたキャッシュラインの識別は、例えば、キャッシュラインのインデックス、およびキャッシュラインに格納されたタグ値のいくつかのビットであり得る。
【００６５】
キャッシュラインが、ストリーミングプレロード命令に応じて、優先的な再利用のために標識される際、識別回路は、好適な再利用のために標識されるキャッシュラインに対応するメモリアドレスの一部と、ストリーミングデータルックアップテーブル３１０の参照部分３１２とを比較することができる。このように、ストリーミングデータが該キャッシュラインに最近格納されたかどうか、また格納された場合、キャッシュのどのウェイに、ストリーミングデータが格納されたかを判断する。次いで、ストリーミングデータルックアップテーブル３１０に示されるウェイのキャッシュラインを、有効ビットもしくは上述の再利用に好適なフラグを設定することにより、識別回路によって追い出しに好適なものとして、標識することができる。
【００６６】
上述のストリーミングデータルックアップテーブルは、識別回路が４つのウェイの各々を確認して、再利用に好適な標識をするためのキャッシュラインを見出す必要性を回避（または少なくとも低減）するための、任意選択的な（しかし有利な）メカニズムであることが理解されよう。ルックアップテーブル３１０は、最も最近のエントリの小さなキャッシュに過ぎず、概して、キャッシュウェイ３２０〜３８０よりもはるかに小さいことに留意されたい。また、所要のキャッシュラインがストリーミングデータルックアップテーブルに存在しない場合、識別回路は、任意選択で、キャッシュの各ウェイをチェックして、どのウェイに、好適な再利用のために標識されるキャッシュラインが格納されたかを判断し得ることを理解されよう。
【００６７】
同様に、上に説明するストリーミングデータルックアップテーブルが提供されない場合、識別回路は単に、好適な再利用のために標識されるキャッシュラインに対応するインデックスを決定し、該インデックスに先に格納され、現在上書きすることができる、データ値のメモリアドレスのタグ部分に対して、キャッシュの各ウェイのタグ部分をチェックする。整合が見出される場合、整合するキャッシュラインが好適な再利用のために標識される。
【００６８】
図４を参照すると、代替的な形態のストリーミングデータルックアップテーブルを利用するキャッシュ構造が概略的に図示されている。図３と同様に、図４のキャッシュメモリは、上述のとおり、４つのキャッシュウェイ４２０、４４０、４６０、４８０と、キャッシュメモリのどのウェイに、ストリーミングプレロード命令に応じて最近キャッシュされたデータ値の行が格納されたかを識別するためのルックアップテーブル４１０を備える。
【００６９】
キャッシュメモリの第１のウェイ（ウェイ０）４２０は、第１の複数のキャッシュラインを備え、それぞれ、タグ部分４２２、データ部分４２４、および有効フラグ４２６を有する。キャッシュメモリの第２のウェイ（ウェイ１）４４０は、第２の複数のキャッシュラインを備え、それぞれ、タグ部分４４２、データ部分４４４、および有効フラグ４４６を有する。キャッシュメモリの第３のウェイ（ウェイ２）４６０は、第３の複数のキャッシュラインを備え、それぞれ、タグ部分４６２、データ部分４６４、および有効フラグ４６６を有する。最後に、キャッシュメモリの第４のウェイ（ウェイ３）４８０は、第４の複数のキャッシュラインを備え、それぞれ、タグ部分４８２、データ部分４８４、および有効フラグ４８６を有する。図３と同様に、ライトバックキャッシュの場合、各ウェイの各キャッシュラインは、キャッシュラインに格納された値が変更されたが、主メモリに書き込まれていないことを示すためのダーティフラグ（図示せず）も有する。キャッシュラインの各々のタグ部分、データ部分、および有効ビットの構造および動作は、図３を参照して上に説明したとおりである。しかしながら、図４においては、有効ビットも任意選択的な再利用に好適なフラグのいずれも、キャッシュラインが再利用に好適であることを示すために使用されない。代わりに、ストリーミングデータルックアップテーブル４１０が、この機能を果たす。
【００７０】
図３と同様に、ストリーミングデータルックアップテーブル４１０は、先にキャッシュされたデータ値の行（具体的には、ストリーミングプレロード命令に応じてキャッシュされたもの）と、ｎウェイのうちのどれにそれらのデータ値の行がキャッシュされたかの指示との間の関連性を格納するように動作可能である。具体的には、ストリーミングデータルックアップテーブル４１０は、複数の列を備え、それぞれが、ストリーミングプレロードデータが該インデックス位置でキャッシュに格納されたことを示すために使用されるインデックス部分４１２と、キャッシュのどのウェイに（該インデックスで）ストリーミングプレロードデータが格納されたかを示すために使用されるウェイ指示部分４１４と、を有する。データ値が、ストリーミングプレロード命令に応じて、例えば、第１のウェイ４２０のキャッシュラインにプレロードされる場合、ストリーミングデータルックアップテーブル４１０は更新され、インデックス部分４１２に、キャッシュラインのインデックスがプレロードされていること（ひいてはデータ値の行がプレロードされるキャッシュ内の列位置）を示し、ウェイ指示部分４１４に、格納されたデータ値を第１のウェイ４２０に見出し得る指示を示す。同一のプロセスを使用して、第２、第３、および第４のウェイの各々においてプレロードされたデータ値の場所の記録を保持することができる。
【００７１】
キャッシュラインがキャッシュ維持回路によって再利用される際、キャッシュ維持回路は、ストリーミングデータルックアップテーブル４１０を参照して、再利用のために考慮される（各ウェイの）キャッシュラインのインデックスが、テーブル内に存在するかどうかを判断し、存在する場合、該インデックス位置でキャッシュのどのウェイが再利用に好適であるかを判断する。したがって、図４のストリーミングデータルックアップテーブルは、有効ビットもしくは図３の再利用に好適なフラグの代わりに再利用に好適な識別として機能する。
【００７２】
任意選択で、ストリーミングデータルックアップテーブル４１０の最も最近に追加されたエントリは、再利用に好適となるキャッシュラインを決定する目的で無視され、プロセッサによって現在使用中である可能性が高いキャッシュラインに関係する、最近追加されたエントリが、キャッシュ維持動作によって上書きされる可能性を低減することができる。これを実施することが可能ないくつかの方法が存在する。例えば、ルックアップテーブル内のエントリは、古い順のリスト形態である可能性があり、リストのある位置のエントリ（具体的には、新しいエントリが追加される、リストの最後またはその近く）は、再利用のためにキャッシュラインを選択する目的で無視される可能性がある。
【００７３】
図４のストリーミングデータルックアップテーブル内のエントリが、キャッシュラインを選択および再利用するように、キャッシュ維持回路によって使用されている場合、（実際にはストリーミングされたデータをもはや含まない場合）該キャッシュラインが、今後、優先的に再利用される可能性を低減するために、このエントリをテーブルから削除することが望ましい。エントリは、完全に削除されるか、またはストリーミングデータルックアップテーブル内で使用されなくなったものとして標識され得る。
【００７４】
ストリーミングルックアップテーブル４１０は、インデックス部分およびウェイ部分を各々有する複数の行を格納するテーブルとして図示されているが、インデックスによって配置されたウェイ値の単純な配列を使用することも可能である。
【００７５】
図５を参照すると、ストリーミングプレロード命令の発行に応じた、キャッシュコントローラの動作例が概略的に図示されている。最初に、ステップＳ１において、現在実行しているプログラムコード内に提供されるストリーミングプレロード命令が、プロセッサによって発行および実行される。ステップＳ２において、プロセッサは、主メモリからキャッシュメモリへのデータ値のプレロードを制御するため、および優先的な再利用のためのキャッシュメモリ内のキャッシュラインの標識を制御するためのストリーミングプレロード命令に基づいて、制御信号を生成する。ステップＳ３において、キャッシュコントローラは、図４においてステップＳ４、Ｓ５、Ｓ６、およびＳ７で表されるプレロードシーケンス、ならびに図４においてステップＳ８、Ｓ９、およびＳ１０で表される再利用識別シーケンスを開始する。
【００７６】
具体的には、ステップＳ４において、キャッシュコントローラのプレロード回路は、プロセッサによって生成される制御信号から、キャッシュメモリにプレロードされる主メモリ（またはより低レベルのキャッシュ）の一部を決定する。上に説明するとおり、プレロードされるデータ値のメモリアドレスは、現在処理されているデータ値のストリーム内の現在のメモリアドレスに基づいて、参照的に決定される。次いで、ステップＳ５において、主メモリ（またはより低レベルのキャッシュ）の決定された一部は、キャッシュメモリにプレロードされる。次いで、ステップＳ６において、ステップＳ５でプレロードされたキャッシュラインを示すように、ストリーミングデータルックアップテーブル（ＬＵＴ）が更新される。プレロードシーケンスは、ステップＳ７で終了する。
【００７７】
再利用識別シーケンスは、プレロードシーケンスと並行して行われるか、または代替的に、プレロードシーケンスの前もしくは後に行われ得る。いずれの場合においても、再利用識別シーケンスおよびプレロードシーケンスの両方は、ストリーミングプレロード命令によってトリガされる。再利用識別シーケンスでは、ステップＳ８において、識別回路は、プロセッサによって生成された制御信号から、再利用に好適であるキャッシュメモリ内の１つ以上のキャッシュラインを決定する。上述のとおり、好適な再利用のために標識されるデータ値のメモリアドレスは、現在処理されているデータ値のストリーム内の現在のメモリアドレスに基づいて、参照的に決定される。次いで、ステップＳ９において、識別されたキャッシュラインは、優先的な再利用のために標識される。この標識は、キャッシュラインの再利用に好適な領域でのフラグを設定する形態、またはキャッシュラインの有効フラグを設定する形態を採って、該キャッシュラインが有効データを含んでいない（したがって、再利用することができる）ことを示し得る。さらに、再利用に好適な識別を提供するためにストリーミングデータルックアップテーブルを使用する際、該テーブルは、好適な再利用のために標識されるキャッシュライン（プレロードされているキャッシュラインであり得る）に対応するエントリによって更新される。再利用識別シーケンスは、ステップＳ１０で終了する。
【００７８】
図６を参照すると、キャッシュメモリが新しいデータによって更新される際の、キャッシュコントローラの動作例が概略的に図示されている。ステップＳ１１において、キャッシュコントローラは、キャッシュラインの更新が必要であることを判断する。これは、プロセッサがキャッシュメモリ内のデータ値にアクセスしようとした際のキャッシュミスによるか、またはプロセッサによって生成されたデータ値のキャッシュメモリへの書き込み命令に応じて生じ得る。ステップＳ１２において、キャッシュメモリに格納されるデータ値に対応するキャッシュラインインデックスが取得される。上述のとおり、キャッシュインデックスは、データ値に対応するメモリアドレスの特定の部分（つまり、データ値が主メモリ内に格納されている、または格納されるべきメモリアドレス）に対応する。図３に示される４ウェイセットアソシエイティブキャッシュメモリの場合、特定のインデックスを有するデータ値の行は、４つのキャッシュライン（キャッシュウェイにつき１つの適格なキャッシュライン）のどれにも格納することができる。ステップＳ１３において、キャッシュの各ウェイをチェックし、再利用に好適な指示が、特定のインデックスを有するキャッシュラインに適用されたかどうかを判断する。代替として、ストリーミングデータルックアップテーブルが、どのキャッシュラインが再利用に好適かを示す機能を提供している場合、ストリーミングデータルックアップテーブルは、キャッシュの特定のウェイが、該インデックスに関して再利用に好適であるかどうかを判断するために、参照される。次いで、データ値の行が格納されるキャッシュウェイ、ひいてはキャッシュラインが、ステップＳ１３において下された判断に基づいて、ステップＳ１４で選択される。具体的には、再利用に好適な指示が適用されたキャッシュウェイのキャッシュラインは、再利用に好適な指示が何も適用されていないものよりも優先的に選択される。
【００７９】
ステップＳ１４において、データ値が格納されるべきキャッシュラインが選択されると、ステップＳ１５において、選択されたキャッシュラインに現在格納されているデータ値に関して、主メモリへのライトバックが必要かどうかが判断される。ライトバックキャッシュにおいて、データ値は、それらがキャッシュメモリから追い出された際に主メモリに戻るだけで、この理由によりステップＳ１５が必要となる。このステップは、キャッシュメモリ内のデータ値の更新が主メモリ内のデータ値も更新することによって、主メモリにも反映される、ライトスルーキャッシュには必要ではない。
【００８０】
ステップＳ１５は、ダーティフラグが、追い出されるべきキャッシュラインに関して設定されたかどうかを判断することによって行われる。ダーティフラグは、キャッシュライン内のデータ値が変更された際に、キャッシュコントローラによって設定され、それらの変更を、キャッシュラインの再利用の際に主メモリに反映する必要があることを示す。ステップＳ１５において、ダーティフラグが設定されたと判断された場合、該プロセスは、ステップＳ１６に移動し、ここで、再利用されるべきキャッシュラインに現在存在するデータ値の行が主メモリに格納される。ステップＳ１７において、データ値の新しい行が選択されたキャッシュラインに書き込まれ、キャッシュラインのタグ部分がそれに従って更新される。キャッシュライン更新プロセスは、ステップＳ１８で終了する。
【００８１】
本明細書において、添付の図面を参照して、本発明の例示的な実施形態を詳細に記載してきたが、本発明は、これらの正確な実施形態に限定されず、添付の請求項によって定義される本発明の範囲および精神から逸脱することなく、当業者によって種々の変更および修正を実施することができることを理解されたい。
【符号の説明】
【００８２】
１  データ処理装置
１０  中央処理装置
２０  主メモリ
３０、３２、４０、４２  キャッシュメモリ
３４、４４  キャッシュコントローラ
３５、４５  プレロード回路
３６、４６  識別回路
３７、４７  キャッシュ維持回路
【図１】
2010198610.tif 000004
【図２】
2010198610.tif 000005
【図３】
2010198610.tif 000006
【図４】
2010198610.tif 000007
【図５】
2010198610.tif 000008
【図６】
2010198610.tif 000009
【外国語明細書】
2010198610.tif 000010
2010198610.tif 000011
2010198610.tif 000012
2010198610.tif 000013
2010198610.tif 000014
2010198610.tif 000015
2010198610.tif 000016
2010198610.tif 000017
2010198610.tif 000018
2010198610.tif 000019
2010198610.tif 000020
2010198610.tif 000021
2010198610.tif 000022
2010198610.tif 000023
2010198610.tif 000024
2010198610.tif 000025
2010198610.tif 000026
2010198610.tif 000027
2010198610.tif 000028
2010198610.tif 000029
2010198610.tif 000030
2010198610.tif 000031
2010198610.tif 000032
2010198610.tif 000033
2010198610.tif 000034
2010198610.tif 000035
2010198610.tif 000036
2010198610.tif 000037
2010198610.tif 000038
2010198610.tif 000039
2010198610.tif 000040
2010198610.tif 000041
2010198610.tif 000042
2010198610.tif 000043
2010198610.tif 000044
2010198610.tif 000045
2010198610.tif 000046