(57)【要約】  メモリ・キャッシュ（１０５）についてコヒーレンシ動作を実行するメモリ・キャッシュ制御装置は、メイン・メモリ（１０３）と関連した複数のアドレスを備えるアドレス・グループに関するアドレス・グループ指示を受け取る受信プロセッサ（３０１）を備える。アドレス・グループ指示が、タスク識別、及びメイン・メモリ（１０３）のメモリ・ブロックに対応するアドレス範囲を指示する。制御ユニット（３０３）が、１群のキャッシュ・ラインの各キャッシュ・ラインを順次に処理する。詳細には、各キャッシュ・ラインがアドレス・グループのアドレスと関連するかどうかが、マッチ判定基準を評価することにより決定される。マッチ判定基準に適合する場合、コヒーレンシ動作が、キャッシュ・ラインについて実行される。競合が前記コヒーレンシ動作と別のメモリ動作との間に存在する場合、コヒーレンシ手段が、コヒーレンシ動作を禁止する。本発明は、キャッシュのコヒーレンシ動作の持続時間の低減を可能にする。その持続時間は更に、コヒーレンシ動作によりカバーされるメイン・メモリ・アドレス空間のサイズとは無関係である。
2008502069.tif 000002
【特許請求の範囲】
【請求項１】
メモリ・キャッシュ（１０５）についてコヒーレンシ動作を実行するメモリ・キャッシュ制御装置であって、メイン・メモリ（１０３）と関連した複数のアドレスを備えるアドレス・グループに関するアドレス・グループ指示を受け取る手段（３０１）を備えるメモリ・キャッシュ制御装置において、
１群のキャッシュ・ラインの各キャッシュ・ラインを順次に処理する処理手段（３０３）を備え、
当該処理手段（３０３）が、
キャッシュ・ラインがアドレス・グループのアドレスと関連するかどうかをマッチ判定基準を評価することにより決定する手段と、
前記マッチ判定基準に適合する場合前記キャッシュ・ラインについてコヒーレンシ動作を実行するコヒーレンシ手段と、
競合が前記コヒーレンシ動作と別のメモリ動作との間に存在するかどうかを決定する手段と、を備え、
前記コヒーレンシ手段が、競合が存在する場合前記コヒーレンシ動作を禁止するよう動作可能である
ことを特徴とするメモリ・キャッシュ制御装置。
【請求項２】
前記競合が、前記コヒーレンシ動作と前記別のメモリ動作との間で共用される資源に関連する請求項１記載のメモリ・キャッシュ制御装置。
【請求項３】
競合が存在するかどうかを決定する前記手段が、前記コヒーレンシ動作と前記別のメモリ動作とが同じキャッシュ資源に対する実質的に同時のアクセスをもたらす場合競合が存在すると決定するよう動作可能である請求項１又は２記載のメモリ・キャッシュ制御装置。
【請求項４】
前記コヒーレンシ手段が、前記コヒーレンシ動作と前記別のメモリ動作とのうちの１つを遅延させることにより前記コヒーレンシ動作を禁止するよう動作可能である請求項１から３のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項５】
前記マッチ判定基準が、前記キャッシュ・ラインと関連したメイン・メモリ・アドレスが前記アドレス・グループに属するかどうかの評価を備える請求項１から４のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項６】
前記アドレス・グループ指示が、前記メイン・メモリのメモリ・ブロックの開始アドレス及び終了アドレスを備え、
前記マッチ判定基準が、前記メイン・メモリ・アドレスが前記メモリ・ブロックに属するかどうかを決定することを備える
請求項１から５のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項７】
前記開始アドレス及び終了アドレスが、仮想メモリ・アドレスである請求項１から６のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項８】
前記のマッチ手段が、キャッシュ・ライン・タグ及びキャッシュ・ライン・インデックスに応答して前記メイン・メモリ・アドレスを決定するよう動作可能である請求項５から７のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項９】
前記メモリ・キャッシュ（１０５）が、セットアソシエイティブ・メモリ・キャッシュであり、
前記１群のキャッシュ・ラインが、異なる組の前記セットアソシエイティブ・メモリのキャッシュ・ラインを備える
請求項１から８のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項１０】
前記処理手段（３０３）が、複数の組の前記セットアソシエイティブ・メモリ・キャッシュを順次に処理するよう動作可能である請求項９記載のメモリ・キャッシュ制御装置。
【請求項１１】
前記アドレス・グループ指示が、少なくとも１つのタスク識別の指示を備え、
前記マッチ判定基準が、第１のキャッシュ・ラインと関連したタスク識別が前記少なくとも１つのタスク識別と一致するかどうかの評価を備える
請求項１から１０のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項１２】
前記アドレス・グループ指示が、タスク識別から成る請求項１１記載のメモリ・キャッシュ制御装置。
【請求項１３】
前記１群のキャッシュ・ラインが、前記メモリ・キャッシュの全てのキャッシュ・ラインを備える請求項１から１２のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項１４】
前記コヒーレンシ動作が、無効化動作である請求項１から１３のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項１５】
前記コヒーレンシ動作が、同期化動作である請求項１から１４のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項１６】
前記コヒーレンシ動作が、フラッシュ動作である請求項１から１５のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項１７】
前記処理手段（３０３）が、前記１群のキャッシュ・ラインの全てのキャッシュ・ラインが処理されてしまったことを決定することに応答して終了指示を設定する手段を備える請求項１から１６のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項１８】
前記終了指示が、割り込み指示である請求項１７記載のメモリ・キャッシュ制御装置。
【請求項１９】
前記メモリ・キャッシュが、命令キャッシュである請求項１から１８のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項２０】
前記メモリ・キャッシュが、データ・キャッシュである請求項１から１９のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項２１】
請求項１から２０のいずれか一項に記載のメモリ・キャッシュ制御装置を備えるメモリ・キャッシュ・システム。
【請求項２２】
プロセッサと、
メイン・メモリと、
前記プロセッサ及び前記メイン・メモリに結合されたキャッシュ・メモリと、
請求項１から２０のいずれか一項に記載のメモリ・キャッシュ制御装置と
を備える処理システム。
【請求項２３】
メモリ・キャッシュについてコヒーレンシ動作を実行する方法であって、メイン・メモリ（１０３）と関連した複数のアドレスを備えるアドレス・グループに関するアドレス・グループ指示を受け取るステップを備える、前記コヒーレンシ動作を実行する方法において、
１群のキャッシュ・ラインの各ラインを順次に処理するステップを備え、
当該処理するステップが、前記１群のキャッシュ・ラインの各キャッシュ・ラインに関して、
第１のキャッシュ・ラインが前記アドレス・グループのアドレスと関連するかどうかをマッチ判定基準を評価することにより決定するステップと、
前記マッチ判定基準に適合する場合前記第１のキャッシュ・ラインについてコヒーレンシ動作を実行するステップと、
競合が前記コヒーレンシ動作と別のメモリ動作との間に存在するかどうかを決定するステップと、を備え、
前記のコヒーレンシ手段が、競合が存在する場合前記コヒーレンシ動作を禁止するよう動作可能である
ことを特徴とするメモリ・キャッシュについてコヒーレンシ動作を実行する方法。
【請求項２４】
前記競合が、前記コヒーレンシ動作と前記別のメモリ動作との間で共用される資源に関連する請求項２３記載のメモリ・キャッシュについてコヒーレンシ動作を実行する方法。
【請求項２５】
競合が存在するかどうかを決定する前記ステップが、前記コヒーレンシ動作と前記別のメモリ動作とが同じキャッシュ資源に対する実質的に同時のアクセスをもたらす場合競合が存在すると決定するステップを備えることを更に特徴とする請求項２３又は２４記載のメモリ・キャッシュについてコヒーレンシ動作を実行する方法。
【請求項２６】
前記コヒーレンシ動作と前記別のメモリ動作とのうちの１つを遅延させることにより、前記のコヒーレンシ手段による前記コヒーレンシ動作を禁止するステップを更に備える請求項２３から２５のいずれか一項に記載のメモリ・キャッシュについてコヒーレンシ動作を実行する方法。
【請求項２７】
請求項２３記載の方法を実行するようプロセッサを制御するプロセッサ実行可能命令を格納する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ・キャッシュ制御装置及びそのためのコヒーレンシ（ｃｏｈｅｒｅｎｃｙ）動作を実行する方法に関する。
【背景技術】
【０００２】
デジタル・データ処理システムは、例えば、データ処理システム、家庭電気機器、コンピュータ、自動車等を含む多くの応用において用いられている。例えば、パーソナル・コンピュータ（ＰＣ）は、複雑なデジタル処理機能を用いて、広範囲の多種多様なユーザ応用のためのプラットフォームを提供する。
【０００３】
デジタル・データ処理システムは、典型的には、入力／出力機能、命令及びデータ・メモリ、及び、例えば、マイクロコントローラ、マイクロプロセッサ又はデジタル信号プロセッサのような１又はそれより多くのデータ・プロセッサを備える。
【０００４】
処理システムの性能の重要なパラメータは、メモリ性能である。最適な性能に関しては、メモリが大きく、早く、そして好ましくは安価であることが望ましい。不都合にも、これらの特性は、競合する要件となりがちであり、適切なトレードオフが、デジタル・システムを設計するとき要求される。
【０００５】
処理システムのメモリ性能を改善するため、異なるタイプのメモリの個々の利点を活用しようとする複雑なメモリ構造が、開発されてきた。特に、高速のキャッシュ・メモリをより大きく、比較的に遅く、より安価なメイン・メモリと関連して用いることが一般的になってきた。
【０００６】
例えば、ＰＣにおいては、メモリは、典型的には異なるサイズと速度のメモリを備える記憶階層で組織化される。従って、ＰＣは、典型的には、大きく低コストであるが遅いメイン・メモリを備え、その上、比較的小さく高価であるが高速のメモリを備える１又はそれより多くのキャッシュ・メモリ・レベルを有する。動作中に、メイン・メモリからのデータは、早い読み出しサイクルを可能にするため、キャッシュ・メモリの中に動的にコピーされる。同様に、データは、メイン・メモリではなくキャッシュ・メモリに書き込まれ、それにより早い書き込みサイクルを可能にする。
【０００７】
従って、キャッシュ・メモリは、メイン・メモリの異なる記憶場所と動的に関連し、そしてメイン・メモリとキャッシュ・メモリの間のインターフェース及び相互作用が許容可能な性能にとって重要であることが明らかである。従って、キャッシュ動作に対する著しい研究が行われてきて、そしてデータがメイン・メモリではなくてキャッシュ・メモリへ書き込まれ又はそれから読み出されるとき並びにデータがキャッシュ・メモリとメイン・メモリとの間で転送されるときを制御する様々な方法及びアルゴリズムが、開発されてきた。
【０００８】
典型的には、プロセッサが読み出し動作を実行するときはいつでも、キャッシュ・メモリ・システムは、最初に、対応するメイン・メモリ・アドレスがキャッシュと現在関連しているかをチェックする。キャッシュ・メモリがメイン・メモリ・アドレスに関して有効なデータ値を含む場合、このデータ値は、システムのデータ・バス上にキャッシュにより入力され、そして読み出しサイクルは、いずれの待ちサイクル無しに実行する。しかしながら、キャッシュ・メモリがメイン・メモリ・アドレスに関して有効なデータ値を含まない場合、メイン・メモリ読み出しサイクルが、実行され、そしてデータは、メイン・メモリから検索される。典型的には、メイン・メモリ読み出しサイクルは、１又はそれより多くの待ち状態を含むことによりプロセスの速度を遅くする。
【０００９】
プロセッサがデータをキャッシュ・メモリから受け取ることができるメモリ動作は、通常、キャッシュ・ヒットと呼ばれ、そしてプロセッサがデータをキャッシュ・メモリから受け取ることができないメモリ動作は、通常、キャッシュ・ミスと呼ばれる。典型的には、キャッシュ・ミスは、プロセッサがデータをメイン・メモリから検索することをもたらすばかりでなく、メイン・メモリとキャッシュとの間の多数のデータ転送をもたらす。例えば、所与のアドレスがアクセスされてキャッシュ・ミスをもたらす場合、後続の記憶場所は、キャッシュ・メモリに転送される。プロセッサが連続した記憶場所に頻繁にアクセスするので、所望のデータを備えるキャッシュ・メモリの確率は、それにより通常増大する。
【００１０】
キャッシュ・メモリ・システムは、典型的には、キャッシュ・メモリの分解能に対応するキャッシュ・ラインに分割される。セットアソシエイティブ・キャッシュ・システムとして知られるキャッシュ・システムにおいては、多数のキャッシュ・ラインが、各組がメイン・メモリ・アドレスの下位データ・ビットに対する固定のマッピングに対応する異なる組に一緒にグループ化される。組を形成する各キャッシュ・ラインの極端なケースは、直接マップ方式キャッシュとして知られ、そして各メイン・メモリ・アドレスが１つの特定のキャッシュ・ラインにマッピングされることをもたらす。全てのキャッシュ・ラインが単一の組に属する他の極端なケースは、フルアソシエイティブ方式キャッシュとして知られ、そしてこれは、各キャッシュ・ラインをいずれのメイン・メモリの記憶場所にマッピングするのを可能にする。
【００１１】
各キャッシュ・ラインがどのメイン・メモリ・アドレス（ある場合）と関連しているかを追跡するため、キャッシュ・メモリ・システムは、典型的には、各キャッシュ・ラインのため、そのラインとメイン・メモリとの間の現在のマッピングを指示するデータを保持するデータ・アレイを備える。特に、データ・アレイは、典型的には、関連のメイン・メモリ・アドレスの上位データ・ビットを備える。この情報は、通常、タグとして知られ、そしてデータ・アレイは、タグ・アレイとして知られる。
【００１２】
キャッシュ・メモリの制御は、非常に重要であることは明らかであり、特に、メイン・メモリとキャッシュ・メモリとの間の対応を管理することが不可欠であることが明らかである。例えば、データが、キャッシュ・メモリの対応のデータが更新されない又は無効なデータとして指示されずに、メイン・メモリで変更される場合、壊滅的な結果が生じる。同様に、キャッシュ・メモリに書き込まれたデータが、そのデータがキャッシュでオーバライトされる前に又はメイン・メモリの対応の記憶場所が直接アクセスされる前に、メイン・メモリへ転送されない場合、データの不一致が、エラーをもたらす。従って、処理システムの信頼性は、キャッシュの制御に非常に依存している。従って、コヒーレンシ動作は、キャッシュ・メモリとメイン・メモリとの不一致が望ましくない効果をもたらさない確率を排除又は低減するために適切な瞬間に実行される。
【００１３】
例えば、直接メモリ・アクセス（ＤＭＡ）モジュールは、メイン・メモリに直接アクセスすることができる。ＤＭＡは、例えば、ハード・ディスク・インターフェースの一部であり、そしてデータをメイン・メモリからハード・ディスクへハード・ディスク書き込み動作中に転送するため用いられる。ＤＭＡ動作が実行されることができる前に、キャッシュ・メモリに書き込まれた全てのデータがメイン・メモリに転送されてしまうことが重要である。従って、ハード・ディスク書き込み動作の前に、プロセッサ・システムは、コヒーレンシ動作を実行することが好ましく、そこでは、メイン・メモリではなくてキャッシュ・メモリに書き込まれてしまった全てのデータがメイン・メモリに転送される。コヒーレンシ動作は、システムを正常動作のため解放するため、またシステムの計算負荷を低減するため、出来るだけ少ない複雑さ及び時間消費でおそらく実行される。
【００１４】
しかしながら、一般的に、そのようなコヒーレンシ動作は、複雑で、時間を消費し、電力を消費し、及び／又は複雑なハードウエアを必要とすることによりコストが増大する。例えば、メイン・メモリの所与のアドレス・ブロックがハード・ディスクに転送されることになる場合、従来のアプローチは、メイン・メモリの各記憶場所を通るようステップを進めること、及びキャッシュがこの記憶場所に関する更新された値を備えるかどうかをチェックすることを備える。メイン・メモリ・アドレス・ブロックが非常に大きくなるにつれ、これは、非常に面倒なプロセスであり、それは、典型的には、ソフトウエアの実行のため非常に時間を消費し、そしてハードウエアの実現のため非常に複雑な要件を有する。
【００１５】
一般的に、ハードウエア及びソフトウエアのコヒーレンシ機構であるコヒーレンシ機能性を実現するには２つのアプローチがある。ハードウエアのアプローチは、各キャッシュ・ベースのシステムに対してスヌーピング機構を追加することを含む。スヌーピング機構は、他のマスタ（例えば、ＤＭＡプロセッサのようなもの）により行われるメイン・メモリに対する全てのアクセスを追跡する。スヌーピング機構がキャッシュの中の有効なデータへのアクセスを検出したとき、スヌーピング機構は、メイン・メモリに知らせる。メイン・メモリへの書き込みの際には、キャッシュ・データは、自動的に無効化されることができ、そして読み出しの際には、データは、メイン・メモリではなくキャッシュによりリクエスタへ供給されることができる。コヒーレンシに対するソフトウエアのアプローチは、ユーザがソフトウエアによりキャッシュをフラッシュし、無効化し、そして同期化するのを可能にすることに基づいている。これは、これらの動作をソフトウエア形態により実行するコントローラを追加することにより行われる。ハードウエア・コヒーレンシ機構の主な利点は、それが自動的に行われ、即ち、ユーザがその動作を管理する必要がないことである。ハードウエア・コヒーレンシ機構の主な欠点は、実現するのに非常に複雑で、高い電力を消費し、そして半導体の追加の範囲を使うことである。デジタル信号プロセッサ（ＤＰＳ）のような低コスト低電力システムにおいては、ハードウエアの解決法は、適切でない。
【００１６】
キャッシュ・コヒーレンシ動作の例は、ヨーロッパ特許出願ＥＰ１１８２５６６Ａ１に記載されている。その特許出願は、メイン・メモリ・ブロックの開始及び終了アドレスを定義し、その結果、キャッシュ・ラインの解像度でその範囲の全てのアドレスを通るようステップを進めることに基づくキャッシュ・メインテナンス動作を記載する。各ステップについて、メイン・メモリ・アドレスは、キャッシュ・メモリ・タグ・アレイに格納された全ての値と比較され、一致が検出された場合、コヒーレンシ動作が実行される。しかしながら、これは、非常に時間を消費するプロセスをもたらす。更に、プロセス時間がメイン・メモリ・アドレスとタグ・アレイとの間の並列ハードウエア比較を導入することにより低減されることができるにも拘わらず、これは、ハードウエアの複雑さを増大し、従ってコストを増大する。
【００１７】
更に、コヒーレンシ動作の持続時間は、処理されるメモリ・ブロックの大きさに依存する。従って、メモリ範囲の大きさが増大するにつれ、増大した数のアドレスを通るようステップしなければならず、それにより持続時間が増大する。これは、特に、プロセス持続時間の不確実さが異なるプロセスのリアルタイム管理を著しく複雑にするリアルタイム・システムでは著しい欠点である。
【００１８】
米国特許明細書Ｎｏ．２００２−０６５９８０は、各プロセッサと関連したプライベート・レベル１のキャッシュと、１エントリ当たり幾つかのセグメントを有する共用のレベル２のキャッシュと、レベル３の物理的メモリを含む幾つかのプロセッサを有するデジタル・システムを記載する。米国特許明細書Ｎｏ．２００２−０６５９８０は、キャッシュ・ライン上の「一致（マッチ）」を定義するため２つのクォリファイアを用いる機構を開示する。
【００１９】
ヨーロッパ特許Ｎｏ．１０３０２４３は、キャッシュの中の「ダーティ・エントリ」を文脈切り替え中にクリーンにするため割り込み可能ハードウエア・クリーン機能を用いる仮想インデックス、仮想タグ・キャッシュを記載する。ＭＡＸカウンタ及びＭＩＮレジスタは、ダーティである或る範囲のキャッシュ場所を定義する。ハードウエア・クリーン機能を実行中に、ＭＡＸカウンタは、下方にカウントし、一方、ＭＡＸカウンタにより与えられるアドレスでのキャッシュ・エントリは、そのエントリがダーティとマーキングされる場合メイン・メモリへ書き込まれる。とりわけ、割り込みが生じた場合、ＭＡＸカウンタは、その割り込みがサービス提供された後で、後続のクリーン要求が発行されるまで使用不能にされる。
【発明の開示】
【発明が解決しようとする課題】
【００２０】
従って、メモリ・キャッシュについてコヒーレンシ動作を実行する改善されたメモリ・キャッシュ制御装置、処理システム、及び方法が有利であり、特に、柔軟性を増大し、複雑さを低減し、消費時間を低減し、コストを低減し、信頼性を増大し、及び／又は性能を改善することを可能にするシステムが、有利であろう。
【課題を解決するための手段】
【００２１】
本発明は、添付の特許請求の範囲に記載されるメモリ・キャッシュ制御装置、メモリ・キャッシュ・システム、処理システム、及び記憶媒体を提供する。
従って、本発明は、好ましくは、前述の欠点の１つ又はそれより多くの欠点を単独で又はいずれかの組み合わせで緩和、軽減又は排除しようとするものである。
【発明を実施するための最良の形態】
【００２２】
本発明の例示的実施形態が、ここで、添付図面を参照して説明されるであろう。
図１は、本発明の一実施形態に従ったキャッシュ・メモリ・システムを備えるプロセッサ・システムの説明図である。
【００２３】
プロセッサ・システム１００は、プロセッサ１０１及びメイン・メモリ１０３を備え、当該メイン・メモリ１０３は、アプリケーションを実行中にプロセッサ１０１により用いられる命令及びデータを格納する。プロセッサ１０１は、例えば、マイクロプロセッサ又はデジタル信号プロセッサであり、そしてメイン・メモリ１０３は、この実施形態においては、ダイナミックＲＡＭ（ランダム・アクセス・メモリ）である。メイン・メモリ１０３は、比較的大きく、そして例えば、１ギガバイトのオーダである。プロセッサ１０１及びメイン・メモリ１０３は、キャッシュ・メモリ・システム１０５に結合され、当該キャッシュ・メモリ・システム１０５は、メイン・メモリ１０３と一緒に、プロセッサ・システム１００のための階層的記憶構造を形成する。
【００２４】
キャッシュ・メモリ・システム１０５は、キャッシュ・メモリ１０７及びキャッシュ・コントローラ１０９を備える。キャッシュ・メモリ１０７は、記載される実施形態においては、メイン・メモリ１０３により用いられるダイナミックＲＡＭより著しく早いスタティックＲＡＭである。しかしながら、キャッシュ・メモリ１０７は、メイン・メモリ１０３より相当に小さく、例えば、２５６キロバイトのオーダである。キャッシュ・コントローラ１０９は、階層的メモリ・システムの動作を制御し、特に、キャッシュ・メモリ・システム１０５の動作及びメイン・メモリ１０３のアクセスを制御する。
【００２５】
動作において、プロセッサ１０１により実行されるタスクは、メイン・メモリ１０３のアドレス空間内の記憶場所をアドレスすることによりメモリにアクセスする。これらのメモリ・アクセスは、キャッシュ・メモリ・システム１０５により行われてもよく、又はメイン・メモリ１０３へのメモリ・アクセスをもたらしてもよい。特に、読み出し動作については、キャッシュ・コントローラ１０９は、キャッシュ・メモリ１０７が指定されたメイン・メモリ・アドレスのための有効なデータを含むかどうかを決定し、そして含む場合この値が、検索され、そしてプロセッサ１０１へフィードバックされる。特に、キャッシュ・マッチが検出された場合、キャッシュ・メモリ・システム１０５は、適切なデータをデータ・バス上に置く。キャッシュ・コントローラ１０９がキャッシュ・メモリ１０７が指定されたメイン・メモリ・アドレスのための有効なデータを含まないと決定した場合、キャッシュ・コントローラ１０９は、適切なデータをメイン・メモリ１０３から検索する。特に、キャッシュ・コントローラ１０９は、メイン・メモリ１０３が適切なデータをデータ・バス上に置くようにさせる。
【００２６】
キャッシュ・ミスが生じたとき、キャッシュ・コントローラ１０９は更に、同じメイン・メモリ・アドレスが多くの場合前のアクセス後の短い期間に再びアクセスされるので、メイン・メモリ１０３から検索されたデータをキャッシュ・メモリ１０７にロードする。メイン・メモリ１０３の緩慢な応答時間に起因して、待ち信号が、典型的には、アクセスされ、それにより追加の待ち状態を読み出しプロセスに導入する。従って、キャッシュ・ヒットは、キャッシュ・ミスについての場合より早いメモリ・アクセスをもたらすであろう。更に、現在の記憶場所近くの記憶場所がアクセスされる確率が増大するので、キャッシュ・コントローラ１０９は、典型的には、その記憶場所に隣接した記憶場所からデータを転送する。
【００２７】
実施形態がキャッシュ・コントローラ１０９を参照して単一の分離された機能モジュールとして説明されるが、これは単に説明の簡潔さ及び明瞭化のためであり、キャッシュ・コントローラ１０９がいずれの適切な方法で実現され得ることが認められるであろう。特に、キャッシュ・コントローラ１０９は、ハードウエア、ソフトウエア、又はそれらの組み合わせで実現され得る。その上、キャッシュ・コントローラ１０９は、例えば、キャッシュ・メモリ１０７又はプロセッサ１０１と統合化され得て、又は別個のモジュールであってもよい。特に、キャッシュ・コントローラ１０９の全部又は一部は、プロセッサ１０１上でランするソフトウエアで、又は別個のプロセッサ又はメモリ管理ユニットで完全に又は部分的に実現されてもよい。
【００２８】
図２は、キャッシュ・メモリ１０７の構造の説明図である。この例においては、キャッシュ・メモリ１０７は、２Ｋ個のキャッシュ・ラインを備える直接マップ方式キャッシュ・メモリである。この例においては、各キャッシュ・ラインは、４データ・バイトを備え、メイン・メモリ・アドレッシングの解像度は、１バイトである。図示の例では、Ｋ＝３であり、従って、キャッシュは、３２バイトを備える。実際のキャッシュは、典型的には、これより著しく大きいことが認められるであろう。例えば、ＰＣ用の現在のキャッシュ・メモリは、典型的には、各キャッシュ・ラインにおいて１６から３２バイト、及び例えば、８１９２個のキャッシュ・ライン（即ち、Ｋ＝１３）を有するキャッシュを備える。
【００２９】
単純化のため、メイン・メモリ１０３は、特定の事例においては、１０ビット・アドレス空間に対応する１キロバイトを備えると考える。実際のメイン・メモリは、典型的には遙かに大きく、そして著しく長いアドレスを有することが認められるであろう。この例では、プロセッサ１０１によりアドレス・バス上に置かれたメイン・メモリ・アドレスは、次のように、バイナリ値により表される。
【００３０】
ｂ９，ｂ８，ｂ７，ｂ６，ｂ５，ｂ４，ｂ３，ｂ２，ｂ１，ｂ０
この例においては、キャッシュ記憶場所へのマッピングは、アドレス・ビットとキャッシュ記憶場所との間の固定のマッピングにより達成される。従って、この例では、ｂ１，ｂ０は、キャッシュ・ライン内のバイト場所を決定し、ｂ４，ｂ３，ｂ２は、キャッシュ・ライン・アドレスを決定し、これはインデックスとして知られている。従って、ｂ１，ｂ０＝１，０及びｂ４，ｂ３，ｂ２＝１，０，１を有するアドレスは、キャッシュ・ライン１０１ｂ＝５の記憶場所１０ｂへマッピングする。直接マップ方式キャッシュの例では、ｂ１，ｂ０＝１，０及びｂ４，ｂ３，ｂ２＝１，０，１を有する全てのメイン・データ・アドレスは、このキャッシュ場所へマッピングするであろう。
【００３１】
キャッシュ・メモリ・システム１０５は、所与のキャッシュ・ラインがどの記憶場所と関連しているかを、並びにキャッシュ・ラインに保持されたデータの状態の経過を連続的に追う。詳細には、キャッシュ・コントローラ１０９は、キャッシュ・ラインが現在関連しているメイン・メモリ・アドレスの上位アドレス・ビットの値を格納する。上位アドレス・ビットは、この場合、タグとして知られ、そしてキャッシュ・コントローラ１０９は、タグ・アレイを維持する。タグ・アレイは、各キャッシュ・ラインに関するエントリを備え、各エントリは、キャッシュ・ラインを選択するため用いられるＫ個のデータ・ビット（インデックス）によりアドレスされる。キャッシュ・ラインが新しいメイン・メモリ・アドレスと関連付けられたとき、前のタグ・アレイは、その新しいメイン・メモリ・アドレスの上位アドレス・ビットにより、即ち、特定の事例ではデータ・ビットｂ９，ｂ８，ｂ７，ｂ６，ｂ５によりオーバライトされる。
【００３２】
従って、プロセッサ１０１が読み出し動作を実行するときは常に、キャッシュ・メモリ・システム１０５は、インデックス（ｂ４，ｂ３，ｂ２）を用いてタグ・アレイにアクセスし、且つ格納されたタグを現在のアドレス（ｂ９，ｂ８，ｂ７，ｂ６，ｂ５）の上位アドレス・ビットと比較することにより、対応の値がキャッシュ・メモリに存在するかどうかを決定する。タグがアドレスと一致し、そしてフラグが格納されたキャッシュ・データが有効であることを指示する場合、キャッシュ・メモリからのデータ値が、データ・バス上に置かれ、その結果低い待ち時間の読み出し動作をもたらす。
【００３３】
直接マップ方式キャッシュの欠点は、各メイン・メモリ・アドレスが単一のキャッシュ・ラインと関連付けられることができるだけで、その結果異なるメイン・メモリ・アドレス間の競合の確率が増大し、そして非常に軽くロードされたキャッシュに対してすら重要であることをもたらすことである。例えば、たとえ大きいキャッシュ・メモリの唯１つのキャッシュ・ラインが所与のメイン・メモリ・アドレスと関連したとしても、これがたまたま同じインデックスを既に関連したメイン・メモリ・アドレスとしてもたらす場合、第２のメイン・メモリ・アドレスをキャッシュと関連付けることは不可能である。
【００３４】
フルアソシエイティブ方式キャッシュは、各キャッシュ・ラインをいずれのメイン・メモリ・アドレスと関連付けることを可能にすることにより著しく高い柔軟性を与える。詳細には、これは、インデックスがゼロ・ビットを備え、且つタグがキャッシュ・ライン内の１つの場所をアドレスするためには用いられない全てのアドレス・ビットを備えることと等価と考えられる。
【００３５】
セットアソシエイティブ・キャッシュは、直接マップ方式キャッシュとフルアソシエイティブ方式キャッシュとの間の中間と見ることができる。セットアソシエイティブ・キャッシュにおいては、キャッシュ・メモリのブロックは、直接マップ方式メモリ・キャッシュに関して特定の下位アドレス・ビットと関連付けられる。しかしながら、直接マップ方式キャッシュとは異なり、複数のキャッシュ・ブロックは、同じアドレスにマッピングされる。例えば、上記の例では、３ビットｂ４，ｂ３，ｂ２のインデックスを有するよりむしろ、セットアソシエイティブ・キャッシュは、２ビットｂ３，ｂ２のインデックスを用いるだけである。従って、８個のキャッシュ・メモリの単一のブロックを有する代わりに、キャッシュ・メモリは、ここで、１ブロック４個のキャッシュ・ラインを２ブロック備える。従って、各メイン・メモリは、２つの異なるキャッシュ・ラインと関連付けられる。
【００３６】
従って、キャッシュ・メモリ・システム１０５は、所与のインデックスに対して複数のエントリを有するタグ・アレイを維持する。従って、例えば、読み出し動作が生じたとき、直接マップ方式キャッシュに関するまさに単一のエントリとは異なりタグ・アレイの中の複数のエントリをチェックすることが必要である。しかしながら、チェックしなければならないエントリの数は、相変わらず比較的小さく、そして動作は、並列処理により促進され得る。
【００３７】
従って、キャッシュ・メモリ・システム１０５がメモリ・アクセスがキャッシュ・メモリ１０７と関連するか又はメイン・メモリ１０３と関連するかを決定するため、キャッシュ・メモリ・システム１０５は、各キャッシュ・ラインについて、メイン・メモリ１０３に対する関連（連想）を指示するデータを備えるデータ・アレイ（タグ・アレイ）を維持する。その上、キャッシュ・メモリ・システム１０５は、キャッシュ・ラインのデータの状態の経過を追う。特に、キャッシュ・メモリ・システム１０５は、新しいデータ・バスがメイン・メモリではなくて所与のキャッシュ・ラインに書き込まれたかどうかを指示する状態指示を維持する。そうである場合、キャッシュ・メモリ１０７のデータとメイン・メモリ１０３のデータとの不一致が存在し、そしてキャッシュ・メモリ１０７のデータは、そのデータがキャッシュから落とされる、又はメイン・メモリ１０３が直接アクセスされる前に、メイン・メモリ１０３に書き込まれなければならない。この指示は、ダーティ・ビット指示と呼ばれる。
【００３８】
同様に、読み出し動作について、有効な指示を用いて、キャッシュ・ラインがメイン・メモリ１０３から検索された有効なデータを備えるかどうかを指示する。
状態指示は、一部の実施形態においては、キャッシュ・ライン全体と関連し、又はキャッシュ・ラインの中の各場所に関する個々の状態指示が、例えば、維持されることが認められるであろう。
【００３９】
階層的メモリ・システムを管理するため、コヒーレンシ（メインテナンス）動作が要求されることが認められるであろう。そのようなコヒーレンシ動作は、キャッシュ・メモリ１０７とメイン・メモリ１０３との間のコヒーレンシを維持する動作を含み、この動作には、メインテナンス書き込み動作、読み出し動作、同期化動作等が含まれる。
【００４０】
図３は、本発明の一実施形態に従ったキャッシュ・メモリ・システム１０５をより詳細に示す。図示及び記載は、簡潔さ及び明瞭化のため、この実施形態を説明するため要求される機能に焦点を当てる。特に、記載は、直接マップ方式キャッシュに関するコヒーレンシ動作を実行するときのキャッシュ・メモリ・システム１０５の動作に焦点を当てる。
【００４１】
実施形態においては、キャッシュ・メモリ・システム１０５は、命令をプロセッサ１０１から受け取る受信プロセッサ３０１を備える。受信プロセッサ３０１は、制御ユニット３０３に結合され、当該制御ユニット３０３は、キャッシュ・メモリ・システム１０５のコヒーレンシ動作を制御する。制御ユニット３０３は更に、タグ・アレイ３０５、並びにキャッシュ・メモリ１０７、及びメイン・メモリ１０３に結合される。
【００４２】
本発明の実施形態によれば、コヒーレンシ動作は、アドレス・グループ指示をプロセッサ１０１から受け取る受信プロセッサ３０１により開始される。アドレス・グループ指示は、メイン・メモリ１０３の中の１群の記憶場所を識別する。記載される実施形態においては、このグループは、開始アドレスで開始し、終了アドレスで終了する連続のブロックの記憶場所から成る。しかしながら、他の実施形態及び他の応用においては、アドレス・グループが、メイン・メモリ１０３の交わらないアドレス範囲を含む他のグループのアドレスに対応することが認められるであろう。
【００４３】
記載される実施形態においては、受信プロセッサ３０１は、こうして、開始アドレス及び終了アドレスから成るアドレス・グループ指示を受け取る。受信プロセッサ３０１は更に、特定のコヒーレンシ動作が指定されたアドレス範囲について実行されることになる指示を受け取る。例えば、アドレス範囲は、所与のアプリケーションに対応し、そしてコヒーレンシ動作は、アプリケーションが終了することに起因して引き起こされる。別の例としては、ＤＭＡ動作は、メイン・メモリ１０３の指定されたアドレス範囲を直接アクセスするようセットアップされ、そしてコヒーレンシ動作は、このアドレス範囲に関してキャッシュに書き込まれた全データがＤＭＡ動作の前にメイン・メモリ１０３に転送されることを保証するため引き起こされる。
【００４４】
受信プロセッサ３０１は、開始アドレス及び終了アドレスを制御ユニット３０３に供給し、当該制御ユニット３０３は、これらの値を格納する。次いで、制御ユニット３０３は、コヒーレンシ・プロセスを実行することを進める。しかしながら、従来のアプローチとは反対に、制御ユニット３０３は、キャッシュ・エントリが周波数範囲の各アドレスに関して存在するかどうかを決定するため、アドレス範囲のメイン・メモリ・アドレスを通るようステップを進めることはしない。むしろ、この実施形態においては、制御ユニット３０３は、タグ・アレイ３０５を通るようステップを進め、そして各エントリに関して、キャッシュ・ラインが適切なマッチ判定基準に従ってメイン・メモリ・アドレス範囲と関連付けられるかどうか決定することにより各キャッシュ・ラインを順次に処理する。キャッシュ・ラインがメイン・メモリ・アドレス範囲と関連付けられていることが分かった場合、制御ユニット３０３は、キャッシュ・ラインについて要求されたコヒーレンシ動作を実行する。
【００４５】
例えば、制御ユニット３０３は、最初に、ゼロ・インデックスについて格納されたタグを検索する。対応のメイン・メモリ・アドレスは、タグとインデックスとを組み合わせることにより決定され、そしてその結果得られたアドレスは、開始及び終了アドレスと比較される。アドレスが上記範囲内に入る場合、コヒーレンシ動作が、そのキャッシュ・ラインについて実行される。例えば、コヒーレンシ動作がアドレス範囲と関連付けられたキャッシュの構成要素をフラッシュすることを備える場合、制御ユニット３０３は、キャッシュ・ラインのデータをメイン・メモリ１０３に書き込むようにする。次いで、制御ユニット３０３は、次のインデックスについて、即ち、１のインデックスについて格納されたタグを検索することを進め、次いでこのキャッシュ・ラインについてプロセスを繰り返す。
【００４６】
従って、制御ユニット３０３は、一時に１つのキャッシュ・ラインでタグ・アレイ３０５を通るようをステップを進め、そして各ラインについて、キャッシュ・ラインが指定されたメモリ範囲と関連付けられる場合キャッシュ・メモリ１０７について要求されたコヒーレンシ動作を実行する。
【００４７】
説明されたアプローチは、従来技術を超えた多数の利点を提供し、そして柔軟性があり、複雑さが少なく、低コストで高信頼性のキャッシュ・メモリ・システムを促進又は可能にする。
【００４８】
詳細には、メイン・メモリ・アドレス範囲が典型的にはキャッシュ・サイズより遙かに大きいので、比較サイクルの数がより少なくてよいと考えられる。換言すると、マッチ判定基準を評価し且つコヒーレンシ動作を条件付きで実行するループの反復の回数が、著しく低減される。これは、典型的には、コヒーレンシ・プロセスの持続時間を著しく低減し、それにより計算負荷を低減し、そしてシステムを他の活動のために解放する。
【００４９】
更に、コヒーレンシ動作の持続時間は、アドレス範囲の大きさよりむしろキャッシュの大きさに依存する。これは、コヒーレンシ・プロセスのため必要とされる時間を低減しようとするばかりでなく、それが限度内に留められ、アドレス範囲と無関係となることをもたらす。これは、特に、リアルタイム処理システムでは著しい利点であり、そしてそのようなシステムの時間管理を容易にする。
【００５０】
更に、アプローチが、比較的に単純で、そして複雑さが少ないハードウエア、ソフトウエア、ファームウエア、又はそれらの組み合わせにより実現される。特に、制御ユニット３０３の機能は、プロセッサ１０１のファームウエア・ルーチンとして少なくとも部分的に実行され得る。
【００５１】
明瞭化のため上記の説明は、キャッシュ・ラインのデータの状態の評価を考えていないことが認められるであろう。しかしながら、制御ユニット３０３は、キャッシュ・ラインのデータの状態を決定することが好ましい。従って、マッチ判定基準は、キャッシュ・ライン・データの状態の考慮を備えることが好ましく、及び／又はコヒーレンシ動作は、キャッシュ・ライン・データの状態に応答して実行される。例えば、データは、状態指示がダーティ・ビット状態に対応する場合メイン・メモリ１０３に書き込まれるのみである。
【００５２】
上記の説明はキャッシュ・ライン評価を詳細に考慮したにも拘わらず、プロセスはまた、キャッシュ・ラインの異なる構成要素の間を分離し得ることが認められるであろう。例えば、開始及び／又は終了アドレスは、キャッシュ・ライン分割と一致する必要がなく、キャッシュ・ライン内のデータ要素に対応してもよい。また、データの状態は、個々の要素と関連し、そしてコヒーレンシ動作は、個々の要素を考慮してもよい。例えば、状態指示は、キャッシュ・ラインの中の個々のデータ・バイトと関連し、そしてダーティ・ビット指示が設定されるデータ・バイトのみがメイン・メモリ１０３に書き込まれる。
【００５３】
また、制御ユニット３０３は、一時に１つのキャッシュ・ラインでキャッシュ・メモリ全体を通るようステップを進めることが好ましいにも拘わらず、一部の実施形態においては、キャッシュ・ラインのサブセットのみを通るようステップを進めることが有利であり、そしてこのサブセットは、例えば、事前定義、又は動的に決定し得ることが認められるであろう。
【００５４】
コヒーレンシ・プロセス及び動作は、いずれの適切なコヒーレンシ・プロセス及び動作であってよい。
詳細には、コヒーレンシ動作は、無効化動作であり得る。無効化動作は、指定されたアドレス範囲と関連した全てのキャッシュ・ラインを無効化することが好ましい。従って、制御ユニット３０３は、キャッシュを通るようステップを進め、そしてアドレス範囲に対応する全てのキャッシュ・ラインについて無効にするよう状態指示を設定する。この動作は、例えば、データがメイン・メモリ１０３において（ＤＭＡにより）更新された状況、又はキャッシュが一時的変数を必要としないようなタスクの終わりに無効化されることができる当該一時的変数をキャッシュ・メモリ１０７の中に保持する状況で有利である。
【００５５】
代替として、又は追加で、コヒーレンシ動作は、同期化動作であってよい。同期化動作は、指定されたアドレス範囲と関連した全てのキャッシュ・ラインを同期化する。従って、制御ユニット３０３は、キャッシュを通るようステップを進め、メイン・メモリ１０３にダーティ・セクションを書き込み、そしてアドレス範囲に対応する全てのキャッシュ・ラインに関して有効な指示を保ちながらダーティ指示を否定する。
【００５６】
この動作は、例えば、メモリ・セクションが、後の使用のためキャッシュ・メモリ１０７の中のデータの有効性を維持しながら、ＤＭＡによりメイン・メモリ１０３から読み出されることになる状況では有利である。同期化動作の別の使用は、自由サイクル（ｆｒｅｅ  ｃｙｃｌｅｓ）を利用して、キャッシュ・メモリ１０７の中のダーティ・セクションの数を低減する。
【００５７】
代替として、又は追加で、コヒーレンシ動作は、フラッシュ動作であってよい。フラッシュ動作は、指定されたアドレス範囲と関連した全てのキャッシュ・ラインをフラッシュする。従って、制御ユニット３０３は、キャッシュを通るようステップを進め、そしてアドレス範囲に対応し且つダーティ・ビット指示を有する全てのキャッシュ・ラインのデータをメイン・メモリ１０３に書き込み、次いでキャッシュ・ラインを無効化する。この動作は、例えば、キャッシュ・メモリ・システム１０５の介入無しで且つデータがプロセッサ１０１により用いられることを期待されないとき、記憶動作がメイン・メモリ１０３について直接実行されようとしている状況で有利である。
【００５８】
以下においては、セットアソシエイティブ・メモリに適用される本発明の一実施形態が説明される。この実施形態においては、キャッシュ・メモリ１０７は、４つの組に編成される。メイン・メモリ・アドレスは、これらの組のうちのいずれかと関連付けられ、従って、各メイン・メモリ場所に関して４つのあり得るキャッシュ・ラインがある。実施形態は、図２に示されるキャッシュ・メモリ・システム１０５と互換性があり、そしてこれを参照して説明されるであろう。
【００５９】
実施形態においては、プロセッサによるアドレッシングは、仮想メモリ・アドレッシングを採用する。詳細には、プロセッサ１０１上でランする各タスクは、メモリ管理ユニットによりメイン・メモリ１０３の中の所与の物理的メモリ範囲にマッピングされる標準アドレス空間を用いる。ランしている各タスクは、メイン・メモリ１０３にマッピングするとき、メモリ管理ユニットにより用いられるタスク識別に割り当てられる。例えば、最初のタスクの命令は、範囲［０，ＦＦＦＦｈ］の中のメモリをアドレスする。メモリ管理ユニットは、このタスクをタスク識別１に割り当て、そしてその範囲を［１００００ｈ，１０ ＦＦＦＦｈ］の物理的メモリ範囲にマッピングする。第２のタスクの命令はまた、メモリを範囲［０，ＦＦＦＦｈ］でアドレスする。メモリ管理ユニットは、このタスクをタスク識別２に割り当て、そしてその範囲を［０８０００ｈ，０８ ＦＦＦＦｈ］の物理的メモリ範囲にマッピングする。
【００６０】
図４は、この実施形態に従ったキャッシュ・メモリ・システム１０５のためのタグ・アレイ４００の一例を示す。タグ・アレイ４００は、４つの別個のデータ構造４０１、４０３、４０５、４０７を備え、それぞれのデータ構造は、セットアソシエイティブ・キャッシュの４つの組のうちの１つに対応する。従って、エントリは、各キャッシュ・ラインについてのタグ・アレイに存在する。実施形態においては、各エントリは、プロセッサ１０１により用いられる仮想アドレスの上位ビットに対応するタグを備える。その上、各エントリは、キャッシュ・ラインがどのタスクと関連付けられるかを指示するタスク識別を備える。従って、タグ・アレイにおけるエントリは、キャッシュ・ラインと関連した物理的メイン・メモリ・アドレスを示す。
【００６１】
図５は、本発明のこの実施形態に従ったキャッシュ・メモリ・コヒーレンシ動作を実行する方法のフロー・チャートを示す。記載される実施形態においては、この方法は、１又はそれより多くのアプリケーションをサポートするマイクロプロセッサ、中央処理装置（ＣＰＵ）又はデジタル信号プロセッサ（ＤＳＰ）のようなプロセッサにより実行される。図５の方法は、ユーザ・アプリケーションの処理に対してバックグラウンドで実行される。
【００６２】
本方法は、ステップ５０１で開始し、そこにおいては、制御ユニット３０３がコヒーレンシ動作が実行されることになるアドレス範囲を定義する開始アドレス及び終了アドレスを用いて初期化される。開始アドレス及び終了アドレスは、所与のタスクにより用いられる仮想アドレスとして指定される。例えば、最初のタスクが範囲［０，ＦＦＦＦｈ］の中のメモリをアドレスするケースについては、開始アドレス及び終了アドレスは、この範囲内にある。仮想アドレスを物理的メイン・メモリ１０３のアドレス範囲と関連付けるため、制御ユニット３０３は更に、タスク識別（タスクＩＤ）により初期化される。特定の例では、コヒーレンシ動作は、最初のタスクのため仮想メモリ間隔［１０００ｈ，１７ＦＦｈ］と関連付けられる。従って、制御ユニット３０３は、ステップ５０１において、開始アドレスを１０００ｈに、また終了アドレスを１７ＦＦｈに、更にタスクＩＤを１に設定することにより初期化される。
【００６３】
本方法は、ステップ５０３に継続し、そこにおいて、キャッシュ・ライン・ポインタは、タグ・アレイ４００の中の第１の組に関する第１のエントリ４０１に対応する第１のキャッシュ・ラインに設定される。
【００６４】
ステップ５０３には、ステップ５０５が続き、そこにおいては、タグ及びタスク識別が、タグ・アレイ４００から検索される。従って、現在のタグ（０，０）及びタスクＩＤ（０，０）が、タグ・アレイ４００から検索される。
【００６５】
ステップ５０５には、ステップ５０７が続き、そこにおいては、制御ユニット３０３は、第１のエントリ４０１に対応するキャッシュ・ラインがコヒーレンシ動作が実行されるべきであるアドレスと関連付けられるかどうかを決定する。詳細には、制御ユニット３０３は、検索されたタグをタグに関するインデックスと組み合わせることによりアドレスを発生する。従って、フル仮想アドレスが、タグからのアドレス・ビットをインデックスのアドレス・ビットと組み合わせることにより第１のエントリ４０１に対して発生される。
【００６６】
発生されたアドレスは、開始及び終了アドレスと比較され、そして制御ユニット３０３は、検索されたタスクＩＤが指定されたタスクＩＤと一致するかどうかを決定する。従って、１のタスクＩＤがタスクＩＤ（０，０）に格納されているかどうかが決定される。発生されたアドレスが指定されたアドレス範囲内であり、且つタスクＩＤが一致している場合、一致が、指示され、従って、対応のキャッシュ・ラインについてコヒーレンシ動作を実行することが望ましい。このケースにおいては、本方法は、ステップ５０９に継続され、そして他の場合には、本方法は、ステップ５１３に継続される。
【００６７】
ステップ５０９において、コヒーレンシ動作を実行することが現在実際的であるかどうかが決定される。詳細には、制御ユニット３０３は、競合がコヒーレンシ動作と別のメモリ動作との間に存在するかどうかを決定する。制御ユニット３０３は、例えば、コヒーレンシ動作と他のメモリ動作との間で共用される資源が他のメモリ動作により現在使用されているかどうかを決定する。例えば、キャッシュ・メモリ１０７が通常のキャッシュ動作（キャッシュ・ライン再割り当て）とコヒーレンシ動作との間で共用されている資源にアクセスする場合、より高い優先順位が、競合が上記２つの間に存在するとき上記通常のキャッシュ動作に与えられる。
【００６８】
競合がステップ５０９において存在すると決定された場合、現在の実施形態においては、制御ユニット３０３は、コヒーレンシ動作を禁止するよう進める。特に、制御ユニット３０３は、他のメモリ動作が終了されるまでコヒーレンシ動作を遅延させることによりそのコヒーレンシ動作を禁止する。これは、ステップ５１９において、ラインが同時ライン動作（ｃｏｎｃｕｒｒｅｎｔ  ｌｉｎｅ  ｏｐｅｒａｔｉｏｎ）により達成される。ラインがステップ５１９において置換されてしまった場合、本方法は、ステップ５１３へ動く。ラインがステップ５１９において置換されなかった場合、プロセスは、ステップ５０９に戻って、コヒーレンシ動作を実行することが現在実際的であるかどうかを決定する。
【００６９】
従って、スイープ・セグメント取り消し判定基準（ステップ５１９における）は、マッチ判定基準がステップ５０７において前にチェックされたので、スイープ・セグメント（掃引セグメント）と関連したキャッシュ・ラインが既に置換されてしまったかどうかを識別する。
【００７０】
競合がステップ５０９において無いと決定されたとき、本方法は、ステップ５１１に進み、そこにおいて、制御ユニット３０３は、対応のキャッシュ・ラインについて所望のコヒーレンシ動作を実行する。前述したように、コヒーレンシ動作は、例えば、フラッシュ動作、無効化動作、又は同期化動作であり得る。
【００７１】
ステップ５１１には、ステップ５１３が続き、そこにおいて、制御ユニット３０３は、それがキャッシュ全体を通るようステップを進んだどうかを決定する。そのようにした場合、本方法は、ステップ５１５に継続し、そこにおいて、プロセスは、終了する。他の場合は、本方法は、ステップ５１７に継続され、そこにおいて、ポインタは、次のキャッシュ・ラインを参照するため更新される。次いで、本方法は、次のキャッシュ・ラインを処理することによりステップ５０５に継続される。次のキャッシュ・ラインは、上記の組の中の後続のキャッシュ・ラインとして決定される。組の最後のキャッシュ・ラインに達したとき、次のキャッシュ・ラインは、次の組の最初のキャッシュ・ラインとして決定される。最後の組の最後のキャッシュ・ラインに達したとき、このことが、ステップ５１３において検出され、その結果本方法が終了することになる。
【００７２】
従って、本方法は、結果として、順次に各個々の組のキャッシュ・ラインを通るようステップを進め、並びに順次に個々の組を通るようステップを進めることになる。従って、実施形態においては、キャッシュの全てのキャッシュ・ラインが、順次に処理され、そして各キャッシュ・ラインに関して、コヒーレンシ動作が適切かどうかが決定され、そして適切である場合、コヒーレンシ動作が実行される。
【００７３】
詳細には、図４のタグ・アレイ４００は、最初にセット０の最初のエントリ４０９を評価し、続いてセット０（組０）の次のエントリ４１１を評価し、以下セット０の最後のエントリ４１３に達するまで同様に評価することによりステップするよう進められる。次いで、本方法は、セット１（組１）の最初のエントリ４１５を指すことによりセット１にステップを進める。同様に、セット１の最後のエントリ４１７に、セット２（組２）の最初のエントリ４１９が続き、そしてセット２の最後のエントリ４２１に、セット３（組３）の最初のエントリ４２３が続く。セット３の最後のエントリ４２５に達したとき、コヒーレンシ動作の実行が完了する。
【００７４】
説明された実施形態はステップが説明の順序で順次実行される実現形態を記載したが、並列動作及び／又はステップの別の順序も等しく適切に適用されることが認められるであろう。特に、ステップ５０５、５０７、５０９、５１７は、ステップ５１１と並列に実行されてもよい。従って、キャッシュ・ラインについてコヒーレンシ動作を実行する間に、コントローラは、次の１又は複数のキャッシュ・ラインを評価してもよい。
【００７５】
制御ユニット３０３は、プロセスがステップ５１５において終了するとき終了指示を設定するのが好ましい。詳細には、制御ユニット３０３は、プロセッサに割り込みシーケンスをもたらす割り込み指示を設定するようにする。割り込み指示は、ソフトウエア割り込み指示でもよく、又は信号をプロセッサ１０１の割り込み信号入力上に設定することのようなハードウエア割り込み指示でもよい。これは、異なるタスクの管理を容易にし、特に、リアルタイム処理システムにおけるタスク時間管理を容易にする。
【００７６】
上記の実施形態は、指定されたアドレス範囲に基づく単一のマッチ判定基準に応答して一致が決定されることに焦点を当てたものである。しかしながら、他の実施形態においては、他の判定基準を用いてもよく、及び／又は複数の判定基準を用いてもよい。例えば、アドレス・グループ指示は、タスク識別から成り、そしてマッチ判定基準は、各キャッシュ・ラインがそのタスク識別と一致するかどうかを単純に決定してもよい。従って、コヒーレンシ動作は、対応のタスク識別を指定することにより、所与のタスクについて単純に実行される。
【００７７】
制御ユニット３０３は、複数のマッチ判定基準間で選択するよう動作可能であることが好ましく、特に、制御ユニット３０３は、プロセッサ１０１から受け取られたデータに応答して異なるマッチ判定基準間を選択するよう動作可能であってもよい。
【００７８】
例えば、制御ユニット３０３がコヒーレンシ・プロセス推進コマンドに関連して開始アドレス、終了アドレス及びタスク識別を受け取る場合、制御ユニット３０３は、タグ・アレイのエントリが３つの全ての要件に一致するデータを備えるかどうかを評価するマッチ判定基準を用いることにより処理を進める。しかしながら、開始アドレス及び終了アドレスのみをコヒーレンシ・プロセス推進コマンドに関連して受け取る場合、格納されたアドレス・タグのみが、マッチ判定基準により考慮されるであろう。これは、どのタスクが特定のメモリ範囲を用いているかに関係なく、所与のメモリ範囲について単純なコヒーレンシ動作を可能にする。更に、制御ユニット３０３が、コヒーレンシ・プロセス推進コマンドを有するタスク識別のみを受け取る場合、マッチ判定基準は、そのタスク識別が一致するかどうかのみを決定する。これは、特定のタスクについて単純なコヒーレンシ動作を可能にする。最後に、特定のデータがコヒーレンシ・プロセス推進コマンドに関連して受け取られない場合、制御ユニット３０３は、キャッシュ・メモリ１０７とメイン・メモリ１０３との間の関連（連想）と関係なく、キャッシュ・メモリ１０７全体についてコヒーレンシ動作を実行する。
【００７９】
上記の記載はデータ・メモリ・キャッシュに特に適切であるが、本発明はまた、例えば、命令メモリ・キャッシュに適用し得ることが認められるであろう。
従って、本発明の好適な実施形態は、同時のＣＰＵ及びキャッシュ・スィーピング・プロセスを扱う機構を説明する。いずれのスィーピング及びクリーニング動作も、幾つかのセグメントを含む。とりわけ、各セグメントは、特定のキャッシュ・ラインについて動作を実行する。
【００８０】
本発明の好適な実施形態においては、スイープ・セグメント遅延又は取り消しの管理は、内部機構によりセグメント毎のベースで処理される。これは、シームレス並列ＣＰＵ及びキャッシュ・スイープ動作を可能にする。これは、ＣＰＵが出来るだけ多くアクティブである（機能停止しない、又は待ちモードでない）ことを可能にする点で明らかな利点を提供する。従って、ＣＰＵがアクティブである一方、キャッシュ・スイープ動作がアクティブであり、そしてこの並列動作により生じるいずれの競合が、内部的に管理される。
【００８１】
本発明は、１サイクル当たり１つの比較のみを実行することに限定されるものではなく、例えば、複数の比較が、並列に実行されともよいことが認められるであろう。
本発明の実施形態の特定の好適な実行が上記で説明されたが、当業者は、そのような発明概念の変化及び変更を容易に適用することができるであろうことが明らかである。
【００８２】
特に、上記の記載は、明瞭化のため、処理システムの異なる機能ユニットを参照して本発明の実施形態を説明したことが認められるであろう。しかしながら、異なる機能ユニット間の機能のいずれの適切な分配が、本発明から逸脱することなしに用いられ得ることが明らかであろう。従って、特定の機能ユニットに対する参照は、厳密な論理的又は物理的構造、組織又は仕切りを示すのではなくて、記載された機能を提供する適切な手段に対する参照としてのみ見るべきである。例えば、キャッシュ・コントローラは、統合化され、そしてプロセッサと組み合わされ、又はこれの一部であってもよい。
【００８３】
本発明は、ハードウエア、ソフトウエア、ファームウエア、又はそれらのいずれの組み合わせを含むいずれの適切な形態で実行することができる。しかしながら、本発明は、１又はそれより多くのデータ・プロセッサ上でランするコンピュータ・ソフトウエアとして実行されるのが好ましい。
【図面の簡単な説明】
【００８４】
【図１】図１は、本発明の一実施形態に従ったキャッシュ・メモリ・システムを備えるプロセッサ・システムの説明図である。
【図２】図２は、キャッシュ・メモリの構造の説明図である。
【図３】図３は、本発明の一実施形態に従ったキャッシュ・メモリ・システムを示す。
【図４】図４は、本発明の一実施形態に従ったキャッシュ・メモリ・システムのためのタグ・アレイの一例を示す。
【図５】図５は、本発明の一実施形態に従ったキャッシュ・メモリ・コヒーレンシ動作を実行する方法のフロー・チャートを示す。
【図１】
2008502069.tif 000003
【図２】
2008502069.tif 000004
【図３】
2008502069.tif 000005
【図４】
2008502069.tif 000006
【図５】
2008502069.tif 000007
【手続補正書】
【提出日】平成19年8月24日(2007.8.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリ・キャッシュ（１０５）についてコヒーレンシ動作を実行するメモリ・キャッシュ制御装置であって、メイン・メモリ（１０３）と関連した複数のアドレスを備えるアドレス・グループに関するアドレス・グループ指示を受け取る手段（３０１）を備えるメモリ・キャッシュ制御装置において、
１群のキャッシュ・ラインの各キャッシュ・ラインを順次に処理する処理手段（３０３）を備え、
当該処理手段（３０３）が、
キャッシュ・ラインがアドレス・グループのアドレスと関連するかどうかをマッチ判定基準を評価することにより決定する手段と、
前記マッチ判定基準に適合する場合前記キャッシュ・ラインについてコヒーレンシ動作を実行するコヒーレンシ手段と、
競合が前記コヒーレンシ動作と別のメモリ動作との間に存在するかどうかを決定する手段と、を備え、
前記コヒーレンシ手段が、競合が存在する場合前記コヒーレンシ動作を禁止するよう動作可能である
ことを特徴とするメモリ・キャッシュ制御装置。
【請求項２】
前記マッチ判定基準が、前記キャッシュ・ラインと関連したメイン・メモリ・アドレスが前記アドレス・グループに属するかどうかの評価を備える請求項１記載のメモリ・キャッシュ制御装置。
【請求項３】
前記アドレス・グループ指示が、前記メイン・メモリのメモリ・ブロックの開始アドレス及び終了アドレスを備え、
前記マッチ判定基準が、前記メイン・メモリ・アドレスが前記メモリ・ブロックに属するかどうかを決定することを備える
請求項２記載のメモリ・キャッシュ制御装置。
【請求項４】
前記開始アドレス及び終了アドレスが、仮想メモリ・アドレスである請求項３記載のメモリ・キャッシュ制御装置。
【請求項５】
前記のマッチ手段が、キャッシュ・ライン・タグ及びキャッシュ・ライン・インデックスに応答して前記メイン・メモリ・アドレスを決定するよう動作可能である請求項２から４のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項６】
前記メモリ・キャッシュ（１０５）が、セットアソシエイティブ・メモリ・キャッシュであり、
前記１群のキャッシュ・ラインが、異なる組の前記セットアソシエイティブ・メモリのキャッシュ・ラインを備える
請求項１から５のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項７】
前記処理手段（３０３）が、複数の組の前記セットアソシエイティブ・メモリ・キャッシュを順次に処理するよう動作可能である請求項６記載のメモリ・キャッシュ制御装置。
【請求項８】
前記アドレス・グループ指示が、少なくとも１つのタスク識別の指示を備え、
前記マッチ判定基準が、第１のキャッシュ・ラインと関連したタスク識別が前記少なくとも１つのタスク識別と一致するかどうかの評価を備える
請求項１から７のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項９】
前記アドレス・グループ指示が、タスク識別から成る請求項８記載のメモリ・キャッシュ制御装置。
【請求項１０】
前記１群のキャッシュ・ラインが、前記メモリ・キャッシュの全てのキャッシュ・ラインを備える請求項１から９のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項１１】
前記競合が、前記コヒーレンシ動作と前記別のメモリ動作との間で共用される資源に関連する請求項１記載のメモリ・キャッシュ制御装置。
【請求項１２】
競合が存在するかどうかを決定する前記手段が、前記コヒーレンシ動作と前記別のメモリ動作とが同じキャッシュ資源に対する実質的に同時のアクセスをもたらす場合競合が存在すると決定するよう動作可能である請求項１又は１１記載のメモリ・キャッシュ制御装置。
【請求項１３】
前記コヒーレンシ手段が、前記コヒーレンシ動作と前記別のメモリ動作とのうちの１つを遅延させることにより前記コヒーレンシ動作を禁止するよう動作可能である請求項１、１１及び１２のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項１４】
前記コヒーレンシ動作が、無効化動作である請求項１から１３のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項１５】
前記コヒーレンシ動作が、同期化動作である請求項１から１４のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項１６】
前記コヒーレンシ動作が、フラッシュ動作である請求項１から１５のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項１７】
前記処理手段（３０３）が、前記１群のキャッシュ・ラインの全てのキャッシュ・ラインが処理されてしまったことを決定することに応答して終了指示を設定する手段を備える請求項１から１６のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項１８】
前記終了指示が、割り込み指示である請求項１７記載のメモリ・キャッシュ制御装置。
【請求項１９】
前記メモリ・キャッシュが、命令キャッシュである請求項１から１８のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項２０】
前記メモリ・キャッシュが、データ・キャッシュである請求項１から１９のいずれか一項に記載のメモリ・キャッシュ制御装置。
【請求項２１】
請求項１から１９のいずれか一項に記載のメモリ・キャッシュ制御装置を備えるメモリ・キャッシュ・システム。
【請求項２２】
プロセッサと、
メイン・メモリと、
前記プロセッサ及び前記メイン・メモリに結合されたキャッシュ・メモリと、
請求項１から１９のいずれか一項に記載のメモリ・キャッシュ制御装置と
を備える処理システム。
【請求項２３】
メモリ・キャッシュについてコヒーレンシ動作を実行する方法であって、メイン・メモリ（１０３）と関連した複数のアドレスを備えるアドレス・グループに関するアドレス・グループ指示を受け取るステップを備える、前記コヒーレンシ動作を実行する方法において、
１群のキャッシュ・ラインの各ラインを順次に処理するステップを備え、
当該処理するステップが、前記１群のキャッシュ・ラインの各キャッシュ・ラインに関して、
第１のキャッシュ・ラインが前記アドレス・グループのアドレスと関連するかどうかをマッチ判定基準を評価することにより決定するステップと、
前記マッチ判定基準に適合する場合前記第１のキャッシュ・ラインについてコヒーレンシ動作を実行するステップと、
競合が前記コヒーレンシ動作と別のメモリ動作との間に存在するかどうかを決定するステップと、
競合が存在する場合、前記のコヒーレンシ手段により前記コヒーレンシ動作を禁止するステップと、を備える
ことを特徴とするメモリ・キャッシュについてコヒーレンシ動作を実行する方法。
【請求項２４】
請求項２３記載の方法を実行するようプロセッサを制御するプロセッサ実行可能命令を格納する記憶媒体。
【国際調査報告】
2008502069.tif 000008
2008502069.tif 000009
2008502069.tif 000010