(57)【特許請求の範囲】
【請求項１】
キャッシュ線に関連する状態インジケータを格納する状態インジケータ格納工程であって、前記状態インジケータはシステムメモリの領域に関連するトラッキングエントリに格納され、
前記キャッシュ線は、前記システムメモリの前記領域の対応するユニークなセクションに各々関連する複数のキャッシュ線であり、前記複数のキャッシュ線はＮ本のキャッシュ線を含み、Ｎは前記システムメモリの前記領域全てを格納するために必要なキャッシュ線の数であり、
状態インジケータは、前記複数のキャッシュ線の全てのキャッシュ線が前記複数の状態インジケータのうちの関連する状態インジケータを有するように前記複数のキャッシュ線のうちの対応するキャッシュ線に各々関連する、複数の状態インジケータのうちの１つであり、
前記トラッキングエントリは前記複数の状態インジケータの各々を含み、
各状態インジケータは、関連するキャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補である場合にはダーティ指示を含み、関連するキャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補でない場合にはクリーン指示を含む、前記工程と、
前記システムメモリの前記領域について、前記複数の状態インジケータのうちダーティ指示を含む状態インジケータの数を判定する工程と、
判定したダーティ指示の数が閾値を超える場合、
キャッシュ線を選択し、
そのキャッシュ線に格納されているデータを前記システムメモリの前記領域の関連するセクションに書き込み、
そのキャッシュ線に対応する状態インジケータにクリーン指示を格納する工程であって、クリーン指示は、そのキャッシュ線が、前記システムメモリの前記領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補でないことを識別する前記工程と、
を備える方法。
【請求項２】
判定したダーティ指示の数が閾値を超える場合、キャッシュ線を選択し、そのキャッシュ線に格納されているデータを前記システムメモリの前記領域の関連するセクションに書き込み、前記システムメモリの前記領域の関連する選択した数のキャッシュ線についてクリーン指示を格納する工程であって、該選択した数のキャッシュ線の各々は、ダーティ指示を含む関連する状態インジケータを有する前記工程をさらに備える、請求項１に記載の方法。
【請求項３】
トラッキングアレイにトラッキングエントリを格納する工程をさらに備え、
前記トラッキングアレイは複数のトラッキングエントリを含み、前記複数のトラッキングエントリの各々はシステムメモリのユニークな領域に関連する、請求項１に記載の方法。
【請求項４】
プロセッサと周辺デバイスとのうちの１つを各々備える１つ以上のマスタと、
複数のシステムメモリバンクを備えるシステムメモリであって、
各システムメモリバンクは複数のユニークな行を備え、
各行はシステムメモリの１つの領域に対応する、システムメモリと、
前記１つ以上のマスタに結合されており、複数のキャッシュ線を格納する１つ以上のキャッシュメモリであって、
各キャッシュ線は、前記複数の行のうちの１つの行の対応するユニークなセクションに関連しており、
各キャッシュ線は、前記１つ以上のプロセッサによるアクセスのために前記行の対応する前記ユニークなセクションに関連するデータを格納するように構成されており、
前記１つ以上のキャッシュメモリは、システムキャッシュと、対応するプロセッサに関連する専用キャッシュとのうちの１つ以上を含む、キャッシュメモリと、
前記１つ以上のキャッシュメモリに結合されているキャッシュクリーニング回路と、を備えるシステムであって、
前記キャッシュクリーニング回路は、
前記複数のキャッシュ線のうちの対応するキャッシュ線に各々関連する複数の状態インジケータを格納し、各状態インジケータは、対応するキャッシュ線が、前記行の対応する前記ユニークなセクションにそのキャッシュ線に格納されているデータを書き込む候補であることを示すダーティ指示と、対応するキャッシュ線が、そのキャッシュ線に格納されているデータを書き込む候補でないことを示すクリーン指示とのうちの１つの指示を含み、
ダーティ指示を含む状態インジケータの数が閾値を超えている行を選択し、
選択した行について、ダーティ指示を含む対応する状態インジケータを各々有する１つ以上のキャッシュ線を選択し、その行の対応するセクションに、選択したキャッシュ線に格納されているデータを書き込み、その状態インジケータにクリーン指示を格納するように構成されており、前記状態インジケータは、その行に関連するトラッキングエントリに格納され、前記トラッキングエントリは、その行に関連するキャッシュ線に関連する前記複数の状態インジケータのうちのＮ個の状態インジケータを含み、Ｎは、その行の全てを格納するために必要なキャッシュ線の数である、システム。
【請求項５】
１つ以上のトラッキングエントリが所定の閾値を超える数のダーティ指示を含むか否かを判定する工程であって、
各トラッキングエントリは、システムメモリの同じ領域のユニークなセクションに関連する対応するキャッシュ線を各々有する複数のキャッシュ線フィールドを含み、
前記複数のキャッシュ線フィールドは、Ｎ個のキャッシュ線フィールドを含み、Ｎはシステムメモリの前記同じ領域全てを格納するために必要なキャッシュ線の数であり、各キャッシュ線フィールドは、対応するキャッシュ線が、関連する前記ユニークなセクションにそのキャッシュ線に格納されているデータを書き込む候補である場合にはダーティ指示を含み、対応するキャッシュ線が、関連する前記ユニークなセクションにそのキャッシュ線に格納されているデータを書き込む候補でない場合にはクリーン指示を含む、前記工程と、
閾値を超える数のダーティ指示数を有する１つ以上のトラッキングエントリのうちの１つのトラッキングエントリを選択する工程と、
選択したトラッキングエントリに関連するダーティキャッシュ線を選択するキャッシュ線選択工程と、
選択したキャッシュ線を格納するキャッシュにトランザクションを送信するトランザクション送信工程であって、トランザクションは、キャッシにダーティデータをシステムメモリに書き込ませるように構成されている、前記工程と、
もはや前記キャッシュ線がシステムメモリにデータを書き込むための候補ではないことを示すように、選択したトラッキングエントリに対応する状態インジケータにクリーン指示を格納するクリーン指示格納工程と、
所定の数のキャッシュ線について、キャッシュ線選択工程、トランザクション送信工程、およびクリーン指示格納工程を実行する工程と、
各トラッキングエントリについて、ダーティ指示のカウントを格納する工程であって、ダーティ指示はダーティデータを格納するキャッシュ線に対応する、前記工程と、
トランザクション送信工程に続いて、関連するトラッキングエントリのダーティ指示の新たなカウントを格納する工程と、を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してデータ処理システムに関し、さらに詳しくはデータ処理システムのシステムメモリにデータを書き戻すことに関する。
【背景技術】
【０００２】
複数のプロセッサが共有のシステムメモリにアクセスする通常のマルチプロセッサシステムでは、データは時間インターリーブ方式でメモリに書き込まれる。これによって、最適でない性能が生じる。例えば、デュアルデータレート（ＤＤＲ）メモリの場合、各時間のデータはメモリバンクの異なるページに書き込まれ、追加のページを開くこと（オープン）や閉じること（クローズ）が必要であるので、全体的なシステム性能が低下する。非特許文献１には、メモリシステムにおける書込による干渉の低減について記載されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】リー（Ｌｅｅ）ら、「ＤＲＡＭ−アウェア・ラスト−レベル・キャッシュ・ライトバック：メモリシステムにおける書込による干渉の低減（ＤＲＡＭ−Ａｗａｒｅ  Ｌａｓｔ−Ｌｅｖｅｌ  Ｃａｃｈｅ  Ｗｒｉｔｅｂａｃｋ：Ｒｅｄｕｃｉｎｇ  Ｗｒｉｔｅ−Ｃａｕｓｅｄ  Ｉｎｔｅｒｆｅｒｅｎｃｅ  ｉｎ  Ｍｅｍｏｒｙ  Ｓｙｓｔｅｍｓ）」、米国、テキサス大学オースティン校（Ｔｈｅ  Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｔｅｘａｓ  ａｔ  Ａｕｓｔｉｎ）、２０１０年４月、ｐ．１−２１、ｈｔｔｐ：／／ｈｐｓ．ｅｃｅ．ｕｔｅｘａｓ．ｅｄｕ／ｐｕｂ／ＴＲ−ＨＰＳ−２０１０−００２．ｐｄｆ
【発明の概要】
【発明が解決しようとする課題】
【０００４】
データ処理システムのシステムメモリへのデータの書き込みの際の遅延を減少させる方法およびシステムを提供する。
【課題を解決するための手段】
【０００５】
メモリの同じ領域にアクセスすることによって、異なる領域に続けてアクセスする必要がある場合に生じる遅延の減少が補助され得る。例えば、ＤＤＲメモリの場合、行（ｒｏｗ）の競合が発生する毎に、現在の行を閉じるとともに、新たな行を活性化させる、すなわち開く必要があり、行を閉じたり開いたりする度に遅延が生じる。よって、１つの実施形態において、メモリの同じ領域に対応するダーティキャッシュ線の数が所定の閾値に達する時を判定するべく、システムメモリの各領域へのメモリアクセスの追跡記録（トラッキング）が行われる。この閾値に達すると、同じ領域に対応するダーティキャッシュ線は、更新されたキャッシュデータをシステムメモリに書き込むことによってクリーンとされる（クリーニング）ことが可能である。それらのダーティキャッシュ線は同じ領域に対応するので、クリーニングを実行しながら新たな領域を続けて閉じたり開いたりする必要はない。よって、同じ領域に対応するダーティキャッシュ線のセットをクリーニングするクリーニング処理の最初のアクセス時には遅延が生じ得るが、そのクリーニング処理の続くアクセス時にはさらなる遅延は生じない。このようにして、システムの性能が改良される。
【図面の簡単な説明】
【０００６】
【図１】本発明の１つの実施形態によるデータ処理システムのブロック図。
【図２】本発明の１つの実施形態による図１のシステムメモリのブロック図。
【図３】本発明の１つの実施形態による図１のシステムキャッシュのブロック図。
【図４】本発明の１つの実施形態による図１のキャッシュクリーニング回路のブロック図。
【図５】本発明の１つの実施形態による図１のデータ処理システムに与えられるアクセスアドレスの線図。
【図６】本発明の１つの実施形態による図１のキャッシュクリーニング回路のトラッキングエントリの線図。
【図７】本発明の１つの実施形態による図１のキャッシュクリーニング回路を更新する方法のフローチャート。
【図８】本発明の１つの実施形態によるキャッシュクリーニングを実行する方法のフローチャート。
【発明を実施するための形態】
【０００７】
本明細書における用語「バス（ｂｕｓ）」は、１以上の各種の情報、例えばデータ、アドレス、制御又は状態を転送するために使用される複数の信号又は導体を指す。本明細書における導体は、１つの導体、複数の導体、単方向の導体、又は双方向の導体を指して図示又は記載される。しかしながら、異なる実施形態では導体の実装が異なっていてもよい。例えば、別々の単方向の導体が、双方向の導体に代えて使用されてもよく、また反対に、双方向の導体に代えて別々の単方向の導体が使用されてもよい。また、多数の信号を連続的に送信したり、時間多重化して送信したりする単一の導体によって、複数の導体が置き換えられてもよい。同様に、多数の信号を搬送する単一の導体が、これらの信号の一部を搬送する各種の異なる導体へと分割されてもよい。従って、信号を転送するための数々の選択肢が存在する。
【０００８】
「アサート」または「セット」および「ネゲート」（または「ディアサート」もしくは「クリア」）という語は、本明細書において、それぞれ、信号、状態ビット、または同様の装置を論理的に真の状態または論理的に偽の状態にすることを指して用いられる。論理的に真の状態が論理レベル１の場合、論理的に偽の状態は論理レベル０（ゼロ）である。また、論理的に真の状態が論理レベル０の場合、論理的に偽の状態は論理レベル１である。
【０００９】
図１には、プロセッサ１２，１６、システム相互接続部２０、周辺装置２２、キャッシュクリーニング回路２４、システムキャッシュ２６、メモリコントローラ２８およびシステムメモリ３０を有するデータ処理システム１０のブロック図を示す。プロセッサ１２，１６、周辺装置２２、キャッシュクリーニング回路２４およびシステムキャッシュ２６の各々はシステム相互接続部２０に双方向に結合される。システムキャッシュ２６は、システム相互接続部２０の外において、導体２６を介してキャッシュクリーニング回路２４に双方向に結合される。メモリコントローラ２８は、システムキャッシュ２６およびシステムメモリ３０の各々に双方向に結合される。データ処理システム１０は、１つプロセッサ（プロセッサ１２など）を備えてもよく、複数のプロセッサを備えてもよい。周辺装置２２は任意の数および種類の周辺装置を備えてもよく、これに代えて、データ処理システム１０が他の周辺装置を備えなくてもよい。プロセッサ１２，１６の各々は、キャッシュ１４，１８など専用のキャッシュを備えてもよい。システム相互接続部はグローバル相互接続部である。１つの形態において、相互接続部はシステムバスである。しかしながら、例えば、相互接続ファブリック、クロスバー、ポイントツーポイント接続など、他の形態の相互接続部が用いられてもよい。
【００１０】
動作において、システム相互接続部２０に結合される複数のマスタ（プロセッサ１２，１６または周辺装置２２など）は、データの読取および書込を行うべく、システムメモリ３０にアクセスすることができる。システムメモリ３０へのアクセスはメモリコントローラ２８によって制御され、システムキャッシュ２６によってゲート制御される。すなわち、図示される実施形態において、システムメモリ３０へのアクセスはシステムキャッシュ２６を介してまず与えられる。１つの実施形態において、キャッシュクリーニング回路２４は、マスタによるシステムメモリ３０に対する書込を監視し、この監視結果に基づいて、システムキャッシュ２６のフラッシュすなわちクリーニングがいつ実行され得るかを判定する。すなわち、システムキャッシュ２６のキャッシュ割当ポリシにしたがってシステムキャッシュ２６のフラッシュまたはクリーニングが発生するのを待機するのではなく、キャッシュクリーニング回路２４は、システムメモリ３０へのアクセスのトラッキングに基づいて、キャッシュ割当ポリシにしたがって行う場合よりも前に特定のキャッシュ線のフラッシュまたはクリーニングが発生するであろうことを判定する。代替の実施形態では、システムキャッシュ２６は存在しないでもよく、書込はシステムコントローラ３０を介してシステムメモリ３０に対し直接行われる。この場合、キャッシュクリーニング回路２４は、マスタによって実行されるシステムメモリ３０への書込を監視し、この監視結果に基づいてキャッシュ１４または１８のフラッシュまたはクリーニングが実行され得る時を判定する。
【００１１】
システムメモリ３０は、システム相互接続部２０を介してアクセス可能な任意の種類のシステムメモリであってよい。１つの実施形態において、システムメモリ３０はデュアルデータレート（ＤＤＲ）メモリである。例えば、図２には、ＤＤＲメモリとしてのシステムメモリ３０のブロック図を示す。図２に示されるＤＤＲメモリは、８バンク（バンク０〜バンク７）のメモリを備える。各バンクが、対応する行バッファと、Ｎ行のデータを格納する対応するメモリアレイとを含む。例えば、バンク０が行バッファ０およびメモリアレイ０を含み、バンク１が行バッファ１およびメモリアレイ１を含み、バンク２が行バッファ２およびメモリアレイ２を含み、バンク３が行バッファ３およびメモリアレイ３を含み、バンク４が行バッファ４およびメモリアレイ４を含み、バンク５が行バッファ５およびメモリアレイ５を含み、バンク６が行バッファ６およびメモリアレイ６を含み、バンク７が行バッファ７およびメモリアレイ７を含む。各メモリアレイがＮ行のデータを含む（ここで、１行のデータは、１ページのデータとも呼ばれ、各メモリアレイがＮページのデータを含んでもよい）。よって、一例としてバンク０のメモリアレイ０を参照すると、メモリアレイ０がＮ行のデータ（行０〜行Ｎ−１）を含む。
【００１２】
なおも図２を参照すると、行バッファは各々、各バンクについての１つのエントリキャッシュとして動作し、バンクへのアクセスは全て、行バッファによってメモリコントローラ２８との間で実行される。例えば、メモリアレイ０の行２にアクセスするために、行２が「活性化」され（行バッファ０に格納され）、メモリコントローラ２８を介してアクセスされることができる。メモリアレイ０の異なる行にアクセスする必要がある場合、まず行２が閉じられる（メモリアレイ０に格納される）必要があり、次いで新たな行が活性化される（行バッファ０に格納される）。行が閉じられるまたは活性化される毎に、遅延が生じる。例えば、アクセスされる行バッファが空である場合、バンクへのアクセス時に行ミス（ｒｏｗ  ｍｉｓｓ）が発生し、行を活性化するために遅延が生じる。行の競合（行が現在は行バッファに格納されているが、新たな行がアクセスされる必要がある）の場合、現在の行を閉じることと、新たな行を開くこととの両方に遅延が発生する。１つの実施形態において、各行が８キロバイト（ｋＢ）のデータを格納すると、各行バッファも８ｋＢのデータを格納する。１つの実施形態において、各バンクが１６，３８４行を含むと、システムメモリ３０には合計１３１，０７２行が含まれる。バンクのデータの同じ行にアクセスが行われる場合（行ヒットが行バッファに起こる毎に）、現在の行を閉じる必要がなく新たな行が活性化されるので、より少ない遅延しか生じない。さらに、１つの行が活性化されると、同じ行の異なる位置への複数のアクセスがパイプライン方式で行われ得るので、遅延がさらに減少される。図示される実施形態において、システムメモリ３０の各バイトはシステム１０のマスタによって独立にアドレッシング可能である。よって、メモリコントローラ２８によるシステムメモリ３０への各アクセスによって、異なるバンクへのアクセスが生じ得るが、しかしながら、現在開かれている、すなわち、活性化されている（よって、対応する行バッファに格納される）バンクの行へのアクセスが行われる毎に、さらなる遅延が回避され得る。
【００１３】
図３には、本発明の１つの実施形態にしたがって、システムキャッシュ２６のブロック図を示す。システムキャッシュ２６は、キャッシュ制御回路４０と、キャッシュ制御回路４０に双方向に結合されるキャッシュアレイ４２とを備える。キャッシュ制御回路４０は導体２５を介してキャッシュクリーニング回路２４と直接通信してもよく、システム相互接続部２０を介してキャッシュクリーニング回路２４と通信してもよい。システムキャッシュ２６は、システム相互接続部２０からアクセスアドレスと対応するアクセス属性とを受信し、またシステムキャッシュ２６は、メモリコントローラ２８との間で情報の送受信も行う。図示される実施形態において、システムキャッシュ２６は複数のウェイを有するマルチウェイセット連想キャッシュである。キャッシュアレイ４２はＹ個のセット（セット０〜セットＹ−１）を含み、各セットはＭ個のウェイ（ウェイ０〜ウェイＭ−１）を有する。キャッシュアレイ４２のキャッシュ線は、ウェイとセットとの交点を参照する。各キャッシュ線は、タグ、状態情報、およびキャッシュデータを格納する。状態情報は、例えば、その線が有効であるか否かを示す有効ビットと、その線がシステムメモリ３０と一貫しているか否かを示すダーティビットＤとを含む。例えば、「ダーティ」キャッシュ線は、そのキャッシュ線のデータがシステムメモリ３０に格納されるデータと異なるキャッシュ線である。状態情報は追加のビットも含んでよい。
【００１４】
動作において、各受信されるアクセスアドレスについて、システムキャッシュ２６は、キャッシュアレイ４２にヒットが生じるかミスが生じるかを判定する。例えば、受信されるアクセスアドレスはタグ部分およびインデックス部分を含む。インデックス部分は、特定のセット（セット０〜セットＹ−１のうちの１つ）を示すためにキャッシュ制御回路４０によって用いられ、キャッシュ制御回路４０はタグ部分をキャッシュの各ウェイと比較して、その比較結果を（対応する状態情報とともに）用いて、キャッシュヒットが発生したのかキャッシュミスが発生したのかを判定する。例えば、タグ結果が一致する場合であっても、そのキャッシュ線が無効なキャッシュ線であることがあるので、ミスが生じ得る。また、キャッシュ制御回路４０は、システムキャッシュ２６の割当ポリシを制御する。例えば、割当ポリシは、新たなキャッシュ線を格納することが必要であるかまたは望ましい場合（例えば、キャッシュミスの場合など）、キャッシュアレイ４２のいずれのキャッシュ線が新たなキャッシュ線の置き換え用に選択されるべきかを示すために使用され得る。また、各セットはキャッシュ割当ポリシに関連するビットを含んでもよい。キャッシュ制御回路４０によって置換用に識別されるキャッシュ線がダーティキャッシュ線である場合、キャッシュ線はまずメモリにフラッシュされる。本明細書では、「キャッシュ線のフラッシュ」は、必要に応じて（例えば、キャッシュ線がダーティである場合、またはメモリと一貫しない場合）、対応するメモリ（この例では、システムメモリ３０）の対応する位置を更新し、そのキャッシュ線を無効化することを意味する。また、本明細書では、「キャッシュ線のクリーニング」は、必要に応じて（例えば、キャッシュ線がダーティである場合、またはメモリと一貫しない場合）、対応するメモリ（この例では、システムメモリ３０）の対応する位置を更新することを意味する。クリーンの場合、キャッシュ線は無効化されない。なお、「クリーン」という用語は、実施形態に応じて、クリーニングまたはフラッシュを意味して用いられる。１つの実施形態において、システムキャッシュ２６はシステムメモリ３０に相当し、１６，３８４本のキャッシュ線を含む。また、キャッシュ制御回路４０は、必要に応じてシステムキャッシュ２６の他の機能を実行してもよい。
【００１５】
以下に説明されるように、キャッシュ制御回路４０は、（システム相互接続部２０を介して、または直接的に導体２５を介して）キャッシュクリーニング回路２４からキャッシュクリーン要求信号を受信する。このキャッシュクリーン要求信号のアサートに応答して、キャッシュ制御回路４０は、キャッシュクリーニング回路２４によって示されるシステムキャッシュ２６のキャッシュ線のフラッシュまたはクリーニングを行う。以下により詳細に説明されるように、フラッシュはクリーニング処理の一部としてキャッシュ線が無効化される場合、または同じキャッシュ線が後にシステム１０のマスタによってアクセスされる場合に実行されてよい。このとき、必要に応じて、システムメモリ３０が更新されるよう、示されたキャッシュ線のクリーニングが実行され得るが、キャッシュ線はシステムキャッシュ２６の有効エントリとして残る。このクリーニングがキャッシュ割当ポリシに影響を与えても与えなくてもよい。
【００１６】
図４には、キャッシュクリーニング回路２４の一例のブロック図を示す。キャッシュクリーニング回路２４は、トラッキングアレイ４６と、トラッキングアレイ４６に双方向に結合されるキャッシュクリーニング制御回路４９とを含む。キャッシュクリーニング回路２４は、アクセスアドレスと対応するアクセス属性とをシステム相互接続部２０から受信する（または、導体２５を介してキャッシュ制御回路４０から直接それらを受信してもよい）。キャッシュクリーニング回路がキャッシュクリーン要求信号４８をキャッシュ制御回路４０に与える。トラッキングアレイ４６がＺ個のセット（セット０〜セットＺ−１）を含み、ここで、各セットはＸ個のウェイ（ウェイ０〜ウェイＸ−１）を含む。セットおよびウェイの交点がトラッキングアレイエントリを与える。トラッキングアレイ４６の各トラッキングエントリは、タグ、状態情報、トラッキングビットフィールドおよびカウント値を含む。各セットは、そのセットの置換ポリシに関連したデータを含む。キャッシュクリーニング制御回路４９は、このデータを用いて、新たなエントリの割当中にトラッキングアレイ４６のいずれのエントリを置換するかを判定する。キャッシュクリーニング制御回路４９は、トラッキングアレイ４６に格納されるカウント値を所定値（１など）だけインクリメントするために使用され得るインクリメンタ５０と、トラッキングアレイ４６に格納されるカウント値を所定値（１など）だけデクリメントするために使用され得るデクリメンタ５１とを備える。キャッシュクリーニング制御回路４９は、キャッシュ線クリーニングカウンタ５２、エントリ選択回路５３、クリーニング進行インジケータ５５およびエントリインジケータ５７を含む。エントリ選択回路５３はクリーニング進行インジケータ５５およびエントリインジケータ５７に双方向に結合される。キャッシュクリーニング制御回路４９に格納される情報はキャッシュ制御回路４０（直接的にまたはシステム相互接続部２０を介して）と必要に応じて通信され得る。
【００１７】
動作において、キャッシュクリーニング回路２４がシステムメモリ３０へのアクセスを監視し、メモリの特定領域のアクセスをグループ化する。１つの実施形態において、メモリの特定領域が図２に示すようにシステムメモリ３０の特定行を参照する。トラッキングアレイ４６によって、キャッシュクリーニング回路２４が、同じトラッキングされる領域に対応するクリーニングされる候補（例えば、ダーティキャッシュ線）であるシステムキャッシュ２６（または特定のプロセッサキャッシュ１４および１８）のキャッシュ線をトラッキングすることが可能である。同じトラッキングされる領域に対応するダーティキャッシュ線の数が特定の数に達すると、それらのキャッシュ線の全部または一部のクリーニングまたはフラッシュを行うべく、キャッシュクリーニング回路２４はシステムキャッシュ２６のキャッシュ制御回路４０に要求を行うことが可能である。それらのキャッシュ線は全て同じ領域（すなわち、この例では、同じ行）に対応するので、キャッシュ線のフラッシュまたはクリーニング中におけるシステムメモリ３０に対するアクセスが改良される。すなわち、一連のフラッシュまたはクリーニングが実行されると、アクセスされる特定の行のみが、活性化される、すなわち、開かれる必要がある。同様に、システムキャッシュ２６が存在しない場合、同じトラッキングされる領域に対応するダーティキャッシュ線の数が特定の数に達すると、選択されるトラッキングされる領域に対応するプロセッサのキャッシュ線をフラッシュまたはクリーニングするために、キャッシュクリーニング回路２４がプロセッサ（例えば、キャッシュ１４および／または１８）のキャッシュを要求することが可能である。これは、例えば、プロセッサ１２，１６などのマスタへフラッシュまたはクリーニング命令をブロードキャストすることによって実行され得る。キャッシュクリーニング回路２４の動作は図５〜８を参照してさらに記載される。
【００１８】
図５には、本発明の１つの実施形態にしたがってアクセスアドレス５６の様々な部分の線図を示す。図５において、アクセスアドレス５６は複数の部分にパースされている。第１部分が領域タグ（例えば、アクセスアドレス５６のビット０〜１７）を与え、第２部分が領域インデックス（例えば、アクセスアドレス５６のビット１８〜２２）を与え、第３部分が領域オフセット（例えば、アクセスアドレス５６のビット２３〜２９）を与え、第４部分がキャッシュ線オフセット（例えば、アクセスアドレス５６のビット３０〜３５）を与える。なお、この実施形態において、領域インデックスがトラッキングアレイ４６のセットインデックスに対応する。この実施形態では、５ビットの領域インデックスは、トラッキングアレイ４６のウェイ当たり３２セットに相当する。なお、図２に示すようにシステムメモリ３０がＤＤＲである例において、領域タグおよび領域インデックスはシステムメモリ３０の行アドレスに対応する。すなわち、領域タグおよび領域インデックスがメモリ３０の行の全体をアドレスし、ここで、メモリ３０の各行がキャッシュクリーニング回路２４によってトラッキングされ得る領域に対応する。さらに、領域オフセットがアドレスされる行のデータの一部（例えば、キャッシュ線分のデータ）を識別する。例えば、システムメモリ３０の各行は領域タグおよび領域インデックスの全体によってアドレス可能である。このとき、行自身においては、領域オフセットは行の一部を識別するために使用され得る。
【００１９】
図６には、トラッキングアレイ４６のトラッキングエントリ５８の一例の線図を示す。トラッキングエントリ５８の記載がトラッキングアレイ４６の各エントリに適用される。各トラッキングエントリは領域タグを格納し、該領域タグは、トラッキングアレイ４６のセットインデックスによって与えられる領域インデックスとともに、トラッキングエントリ５８によってトラッキングされる領域を示す。この例では、この領域がシステムメモリ３０の特定行に対応する。状態情報が、トラッキングエントリは有効かを示す有効ビットを含み、置換状態などの情報も含んでよい。すなわち、キャッシュクリーニング制御回路４９は、トラッキングアレイ４６のいずれのエントリを置換するかを判定するべく、各エントリの置換状態を使用してもよい。トラッキングエントリ５８は、Ｔ個の「キャッシュ線の状態」フィールド（状態インジケータとも呼ばれる）、すなわち、キャッシュ線０の状態〜キャッシュ線Ｔ−１の状態を含む。ここで、Ｔは領域全体を格納するために必要なキャッシュ線の数を表す。この例において、８ｋＢの領域（例えば、バンク０の行０など、システムメモリ３０の１つの行に対応する）を格納するために１２８個のキャッシュ線（各キャッシュ線が６４バイト長を有する）が必要である。よって、この例において、トラッキングエントリ５８は、１２８個のキャッシュ線の状態フィールド（キャッシュ線０の状態〜キャッシュ線１２７の状態）を含む。１つの実施形態において、キャッシュ線の状態フィールドの各々は、対応するキャッシュ線がダーティであるか否かを示す１つの（単一）ビットを含む。対応するキャッシュ線がダーティである場合、この単一ビットは、ビットがダーティ、すなわち、メモリと一貫しないことを示す値（例えば、論理レベル１）を有する。対応するキャッシュ線がダーティでない場合、この単一ビットは、ビットがダーティでないことを示す値（例えば、論理レベルゼロ）を有する。このビットは、対応するキャッシュ線がキャッシュ線に格納されるデータをメモリのユニークなセクションに書き込む候補であるか否かを示す書込指示と呼ばれる場合もある。例えば、キャッシュ線がダーティである場合、キャッシュ線はデータをメモリ３０に書き込む候補であってよい。代替の実施形態において、状態のインジケータの書込指示部分のビット数は任意であってよい。トラッキングエントリ５８は、ダーティキャッシュ線を示すキャッシュ線（またはメモリに格納される候補のキャッシュ線）の状態フィールドが幾つあるかを数えるカウント値を含む。
【００２０】
よって、システムキャッシュ２６が監視される場合、トラッキングエントリ５８のキャッシュ線ビットの状態は、システムキャッシュの対応するキャッシュ線がダーティであることを示す論理レベル１を有する。システムキャッシュ２６でなく各プロセッサのキャッシュがトラッキングされる場合（例えば、システムキャッシュが存在しない場合など）、キャッシュ線の状態フィールドの各々は、上述のようにキャッシュ線がダーティか否かを示す１つ以上のビットを含んでもよく、キャッシュ線が対応するキャッシュを示す識別子フィールドが含まれる。例えば、プロセッサのキャッシュはキャッシュ１４または１８を識別するプロセッサ識別子であってよい。たとえシステムキャッシュ２６がなくとも、例えば、システム相互接続部２０がすべてのマスタに情報をブロードキャストする場合、識別子フィールドは不要であり得る。
【００２１】
よって、受信されるアクセスアドレスについて、図５の例に記載したように、領域タグおよび領域インデックスによってシステムメモリ３０の特定領域（例えば、行）が識別される。この例では、領域オフセットは、特定の行においていずれのキャッシュ線のデータ（いずれの６４バイトのユニークなセクション）がアクセスされているかを与える７ビットの値である。この領域オフセットは、したがって、いずれのトラッキングビットフィールド内のキャッシュ線の状態フィールドが必要とされるように変更されるかを示すために使用されることが可能である。例えば、０の領域オフセットによって、ある行の第１の６４バイトのユニークなセクションが識別され、キャッシュ線０の状態を用いて、システム１０のキャッシュ（システムキャッシュ２６など）がこの６４バイトのセクションのダーティバージョンを格納するか否かを示すことが可能である。５の領域オフセットによって、その行の第６の６４バイトのユニークなセクションが識別され、キャッシュ線５の状態を用いて、システム１０のキャッシュ（システムキャッシュ２６など）がこの６４バイトセクションのダーティバージョンを格納するか否かを示すことが可能である。よって、ダーティキャッシュ線を示すキャッシュ線の状態フィールドがいくつであるかをトラッキングするカウント値によって、メモリ３０の特定領域（例えば、行）が古い（すなわち、一貫しない）データをどれくらい格納しているかが表される。１つの実施形態において、トラッキングアレイ４６は２５６のトラッキングエントリを含んでおり、これによって２５６の領域をトラッキングすることが可能である。例えば、これによって、システムメモリ３０の２５６の行をトラッキングすることが可能となる。
【００２２】
図７には、本発明の１つの実施形態にしたがって、キャッシュクリーニング回路２４を更新する方法のフローチャートを示す。図７のフローがブロック６０で開始し、システムメモリ３０に対する現在のアクセスに対応するアクセスアドレスと属性とが受信される。このアクセスはシステム１０のいずれのマスタによって実行されてもよい。フローは判定ブロック６２に進み、現在のアクセスがシステム１０内のキャッシュ線をダーティとするか、後のアクセスの結果としてキャッシュ線をダーティとする意図を示すものであるかが判定される。例えば、現在のアクセスによってキャッシュ線がダーティとなるのは、現在のアクセスが、キャストアウト（ｃａｓｔ  ｏｕｔ）付きの書込（ＷＣＯ）アクセス、無効化付きの書込（ＷＷＩ）アクセス、フラッシュ付きの書込（ＷＷＦ）アクセス、クリーニング付きの書込（ＷＷＣ）アクセス、マージ付きの書込（ＷＷＭ）アクセス、イネーブル付きの書込（ＷＢＥ）アクセスまたは原子統計（ＷＲＩＴＥＵ／ＲＥＡＤＵ／ＮＯＴＩＦＹ）アクセスであってよい。これらのタイプのアクセスでは、アクセスの結果、キャッシュ線がダーティとなる、すなわち、システムメモリ３０と一貫しなくなる。現在のアクセスが、後のアクセスの結果としてキャッシュ線をダーティとする意図を示す場合、ダーティキャッシュ線を生じる将来のアクセスを生じる可能性が高い。例えば、このタイプのアクセスには、変更意図付きの読取（ＲＷＩＴＭ）アクセス、置換の請求（ＣＴＲ）アクセス、または変更の請求（ＣＴＭ）アクセスが含まれる。例えば、ＲＷＩＴＭアクセスは、読取であるので、キャッシュ線の更新を生じることなくダーティとするが、変更意図付きで実行されるので、読み取られるデータが変更される可能性が高い。よって、変更されるデータの後の書込アクセスの際、その変更されたデータがキャッシュされ、ダーティキャッシュ線を生じることになる。
【００２３】
よって、戻って判定ブロック６２を参照すると、現在のアクセスがキャッシュ線をダーティとするか、後のアクセスの結果としてキャッシュ線をダーティとする意図を示すものである場合、フローはブロック６４に進む。しかしながら、現在のアクセスがキャッシュ線をダーティとするものでも、後のアクセスの結果としてキャッシュ線をダーティとする意図を示すものでもない場合、フローは終了に進む。ブロック６４において、トラッキングアレイ４６の存在しているトラッキングエントリとの一致が発生するか否かを判定するべく、アクセスアドレスがキャッシュクリーニング制御回路４９によって使用される。すなわち、現在のアクセスアドレスの領域タグおよび領域インデックスを用いて、トラッキングアレイ４６に一致が存在するか否かを判定する。ここで、領域インデックスはトラッキングアレイ４６のセット０〜セットＺ−１のうちの１つのセットを示し、領域タグは、この示されたセットにおけるウェイ０〜ウェイＸ−１のタグのうちの１つが一致を生じるか否かを判定するために用いられる。フローは次に判定ブロック６６に進み、一致が発生するか否かを判定する。一致が発生しない場合、現在のアクセスアドレスによってアクセスされる現在の領域（例えば、行）は、キャッシュクリーニング回路２４によって現在トラッキングされていない。よって、一致が発生しない場合、フローは判定ブロック６８に進み、現在のアクセスがキャッシュ線をダーティとするものであるか否かを判定する。現在のアクセスがキャッシュ線をダーティとするものである場合、フローはブロック７０に進み、キャッシュクリーニング制御回路４９によって実装されるトラッキングアレイ４６の割当ポリシにしたがって、アクセスアドレスと一致する新たなエントリがトラッキングアレイ４６に割り当てられる。例えば、疑似最低使用頻度（ＰＬＲＵ）置換アルゴリズムなどのポリシを用いて、トラッキングアレイ４６内のエントリを選択し、現在のアクセスアドレスによるキャストアウトおよび置換を行って、アクセスされている対応する領域がトラッキングされるようにすることが可能である。判定ブロック６８に戻ると、現在のアクセスが、後のアクセスの結果としてキャッシュ線をダーティとする意図を示すものである場合、現在のアクセスは実際にはキャッシュ線をダーティとしないので、トラッキングアレイ４６において新たなエントリを割り当てる必要がないので、フローは終了に進む。むしろ、新たなエントリが割り当てられることが可能であり、または、実際にキャッシュ線をダーティとする後のアクセスが生じる時に既存のエントリが修正される。ブロック７０の後、フローはブロック７８に進む。
【００２４】
戻って判定ブロック６６を参照すると、一致が発生する場合、これは、現在のアクセスアドレスによってアクセスされている領域が既にトラッキングアレイ４６によってトラッキングされており、したがってトラッキングアレイ４６に対応するトラッキングエントリ（すなわち、一致を生じたトラッキングエントリ）を有することを示し、フローは判定ブロック７２に進む。判定ブロック７２において、現在のアクセスがキャッシュ線をダーティとするアクセスであるか否かを判定する。現在のアクセスがキャッシュ線をダーティとするアクセスである場合、フローはブロック７８に進み、アクセスアドレスに一致するトラッキングエントリのキャッシュ線の状態フィールド（現在のアクセスアドレスの領域オフセットによって示される）は、対応するキャッシュ線がキャッシュクリーニング回路２４によるクリーニングの候補であることを示すように、必要に応じて変更される。キャッシュ線は、ダーティであるデータ、すなわち、システムメモリ３０と一貫しないデータを保持する場合、または妥当なアクセス数以内で再びアクセスされる可能性が低い場合、クリーニングの候補となる。それらの場合、システムメモリ３０を更新して、キャッシュ（システムキャッシュ２６など）に格納される更新されたデータを反映することが望ましい。以下に記載されるように、これはクリーニング処理によって実行される事が可能であり、そのとき、キャッシュ線はシステムメモリにフラッシュされるか、クリーニングされる（キャッシュ線がメモリに更新されるが、まだ無効化されない）。領域オフセットによって示される対応するキャッシュ線の状態フィールドの変更には、ビットがまだ論理レベル１ではない場合、ビットを論理レベル１に設定して現在ダーティデータであることを示すことが含まれ得る。よって、ビットが既に論理レベル１である場合（先のアクセスの結果としてキャッシュ線が依然としてダーティであることを意味する）、再び設定される必要はなく、変更されないままであることもある。フローは次にブロック８０に進み、アクセスアドレスに一致するトラッキングエントリのカウントが必要に応じて増加（インクリメント）される。例えば、ビットがまだ論理レベル１でなく、論理レベル１に変更される場合、キャッシュクリーニング制御回路４９のインクリメンタ５０を用いて、カウント値を１だけ増やし、トラッキングされている対応する領域のユニークなセクションに関連する別のキャッシュ線がダーティであり、したがってクリーニングされる（例えば、システムメモリ３０に書き込まれる）準備がされていることを示してもよい。しかしながら、ビットが既に論理レベル１である場合、このダーティキャッシュ線は現在のカウント値により既に考慮されている（対応するキャッシュ線の状態フィールドが論理レベル０から１に先に変更されている場合）ので、カウントを増やす必要はない。フローは次に終了に進む。
【００２５】
戻って判定ブロック７２を参照すると、現在のアクセスがキャッシュ線をダーティとするアクセスでない場合（続くアクセスの結果としてキャッシュ線をダーティとする意図を示すものであることを示している）、フローはブロック７４に進む。ブロック７４では、アクセスアドレスに一致するトラッキングエントリのキャッシュ線の状態フィールド（現在のアクセスアドレスの領域オフセットによって示される）は、対応するキャッシュ線がキャッシュクリーニング回路２４によるクリーニングの候補でないことを示すように、必要に応じて変更される。この場合、このアクセスは後のアクセスの結果としてキャッシュ線をダーティにする可能性が高いアクセスであるので、キャッシュ線のフラッシュまたはシステムメモリへの書き戻しによってキャッシュ線をクリーニングすることは無用である。すなわち、このアドレス位置はすぐに変更される可能性が高いので、そのままキャッシュに保持し、システムメモリ３０をまだ更新しないことが望ましい。領域オフセットによって示される対応するキャッシュ線の状態フィールドの変更は、ビットの現在の状態に応じて異なってよい。ビットが現在、論理レベル１である場合、変更は、キャッシュ線をまだクリーニングする（例えば、メモリに書き込む）べきでないことを示すべく、ビットをクリアしてもよい。ビットが現在既に論理レベル０である場合、ビットをクリアする必要はなく、変更されないままであってよい。フローは次にブロック７６に進み、アクセスアドレスに一致するトラッキングエントリのカウントが必要に応じて減少（デクリメント）される。例えば、ビットがまだ論理レベル０ではなく、論理レベル０に変更される場合、キャッシュクリーニング制御回路４９のデクリメンタ５１を用いて、カウント値を１だけ減らし、クリーニングされる準備がされているキャッシュ線が１つ少ないことを示してもよい。しかしながら、ビットが既に論理レベル０である場合、カウントを減らす必要はない。フローは終了に進む。
【００２６】
したがって、図７のフローを用いて、トラッキングされるシステムメモリ３０の新たな領域に対応するトラッキングエントリを設定するとともに、既にトラッキングされている領域に対応するトラッキングエントリを選択的に変更する。カウントフィールドによって、トラッキングされている領域に対応するいくつのキャッシュ線がクリーニングされる（例えば、システムメモリ３０に書き込まれる）候補であるのかが示される。１つの実施形態において、クリーニングには、対応するキャッシュ線をそのキャッシュ線が存在するキャッシュからクリーニングすることが含まれる。例えば、システムキャッシュ２６が存在する場合、これには、対応するキャッシュ線をシステムキャッシュ２６からクリーニングすることが含まれてよい。システムキャッシュ２６が存在しない場合、クリーニングには、プロセッサのうちの１つに存在するキャッシュのうちの１つから対応するキャッシュ線をクリーニングすることが含まれてもよい。１つの実施形態において、クリーニングには、プロセッサのうちの１つに存在するキャッシュのうちの１つから、およびシステムキャッシュ２６から、対応するキャッシュ線をクリーニングすることが含まれてよい。クリーニングには、対応するキャッシュ線からシステムメモリ３０にデータをフラッシュすることが含まれ、ここで、フラッシュされたキャッシュ線は無効化されてもよい。または、クリーニングには、キャッシュ線を無効化することなく、更新されたキャッシュ線のデータを用いてシステムメモリ３０を更新することによってキャッシュ線をクリーニングすることが含まれてよい。
【００２７】
図８には、本発明の１つの実施形態にしたがってキャッシュクリーニングを実行するためにトラッキングアレイ４６を使用する方法のフローチャートを示す。フローは判定ブロック８４で開始し、クリーニングが進行中であるか否かが判定される。１つの実施形態において、キャッシュクリーニング制御回路４９内に格納されるクリーニング進行インジケータ５５を用いて、進行中のクリーニングが存在するか否かを示す。判定ブロック８４において進行中のクリーニングが既に存在している場合、フローは終了に進む。現在進行中のクリーニングが存在しない場合、フローは判定ブロック８６に進み、そのカウント値が所定のカウント閾値を満たすかまたは超えるトラッキングエントリがトラッキングアレイ４６内に存在するか否かが判定される。例えば、キャッシュクリーニング制御回路４９は、トラッキングアレイ４６のエントリを監視することが可能であり、クリーニングの潜在的な候補を識別するべく、クロックサイクル毎に、各カウントフィールドと所定のカウント閾値との比較を実行してもよい。１つの実施形態において、この所定のカウント閾値は８であり、そのキャッシュ線の状態フィールドのうちの８つ以上が、キャッシュ線がクリーニングされる準備がされていることを示す（例えば、ダーティキャッシュ線を示す）とき、そのトラッキングエントリはクリーニングの候補である。よって、閾値を満たすトラッキングエントリが存在しない場合、フローは終了に進む。しかしながら、１つ以上のトラッキングエントリが閾値を満たす場合、フローはブロック８８に進み、その所定の閾値を満たす１つのトラッキングエントリが選択される。すなわち、そのカウントが閾値を満たす複数のエントリが存在する場合、キャッシュクリーニング制御回路４９は１つのエントリを選択するために任意の基準を使用可能である。フローはブロック９０に進み、クリーニング進行インジケータ５５は、クリーニングが現在進行中であることを示すように設定される。フローはブロック９２に進み、トラッキングアレイ４６の選択されたトラッキングエントリに対するポインタが、キャッシュクリーニング制御回路４９のエントリインジケータ格納回路５７に格納される。フローは次にブロック９４に進み、キャッシュクリーニング制御回路４９内のキャッシュ線クリーニングカウンタ５２は、クリーニングされるべきキャッシュ線の数を示すように初期化される。例えば、１つの実施形態において、選択されたトラッキングエントリのトラッキングビットフィールドによって示されるすべてのダーティキャッシュ線がクリーニングされるべき場合、キャッシュ線クリーニングカウンタは、選択されたトラッキングエントリのカウント値に設定される。しかしながら、一部のキャッシュ線のみがクリーニングされる場合、キャッシュ線クリーニングカウンタは、その値に初期化されてもよい。例えば、１つの実施形態において、キャッシュ線は、各クリーニング処理において、４つまたは８つのキャッシュ線からなる群の単位でクリーニングされてもよい。キャッシュ線クリーニングカウンタ５２を初期化した後、フローはブロック９６に進み、選択されたトラッキングエントリのトラッキングビットフィールドのキャッシュ線の状態フィールドを用いて、クリーニングの必要なダーティキャッシュ線が選択される。例えば、キャッシュ線０の状態フィールドから開始して論理レベル１が見出されるまで、各キャッシュ線の状態フィールドを通じてトラッキングビットフィールドを走査（スキャン）することによって、ダーティキャッシュ線が選択されることが可能である。代替の実施形態では、選択されたトラッキングエントリのトラッキングビットフィールドに基づきクリーニングされるキャッシュ線を選択するために、別の方法が用いられてもよい。
【００２８】
キャッシュ線の状態フィールドにしたがってダーティキャッシュ線が選択された後、フローはブロック９８に進み、選択されたキャッシュ線に格納されているダーティデータがシステムメモリ３０に書き込まれるように、選択されたダーティキャッシュ線を含むキャッシュにクリーニングまたはフラッシュのトランザクションが送られる。例えば、システムキャッシュ２６の場合、クリーニングまたはフラッシュのトランザクションがシステムキャッシュ２６に対し与えられる。キャッシュ線が他のキャッシュ（キャッシュ１４またはキャッシュ１８など）に存在する場合、クリーニングまたはフラッシュのトランザクションは、クリーニングまたはフラッシュトランザクションをブロードキャストすることによって、または選択されたトラッキングエントリのキャッシュフィールドの選択された状態のプロセッサインジケータを用いてクリーニングまたはフラッシュのトランザクションを適切なプロセッサキャッシュに与えることによって、適切なキャッシュに送られることが可能である。上述の通り、クリーニングおよびフラッシュトランザクションの両方において、ダーティキャッシュデータのシステムメモリ３０への書込が生じる。しかしながら、フラッシュトランザクションの場合には対応するキャッシュ線も無効化されるのに対し、クリーニングの場合には対応するキャッシュ線は無効化されない。
【００２９】
ブロック９８の後、フローはブロック１００に進み、選択されたトラッキングエントリのカウントフィールドがデクリメントされ、選択されたダーティキャッシュ線に対応するキャッシュ線の状態フィールドは、それがもはやクリーニングの候補ではないことを示すように変更される（フラッシュまたはクリーニングのトランザクションによってクリーニングされたばかりなので）。フローはブロック１０２に進み、キャッシュ線クリーニングカウンタ５２がデクリメントされる。フローは判定ブロック１０４に進み、キャッシュ線クリーニングカウンタ５２が失効したか否かを判定する。キャッシュ線クリーニングカウンタ５２が失効していない場合、フローはブロック９６に戻り、選択されたトラッキングエントリのキャッシュ線の状態フィールドを用いて、クリーニングの対象とするダーティキャッシュ線が再び選択される。フローは上述の通りに進む。しかしながら、判定ブロック１０４においてキャッシュクリーニングカウンタ５２が失効した場合、フローはブロック１０６に進み、クリーニングがもはや進行中でないことを示すように、クリーニング進行インジケータ５５がクリアされる。
【００３０】
したがって、一実施形態では、ブロック８８に到るとクリーニングの対象となるトラッキングエントリが選択され、ブロック８８，９０，９２，９４，９６，９８，１００，１０２，１０４，１０６によって与えられるすべてのクリーニング／フラッシュを実行するには、システムメモリ３０内の１つの行を活性化するだけでよい。また、ブロック９６，９８，１００，１０２，１０４を通じる各反復によって、システムメモリ３０内の同じ行がアクセスされる。したがって、現在の行を閉じるのに続けて新たな行を開く必要なしに、システムメモリ３０の特定の行に多数の書込を実行することが可能である。例えば、キャッシュ線クリーニングカウンタを８に初期化した場合、最初のアクセスについては、新たな行が活性化され、システムメモリ３０の新たな行に対応するバンクの行バッファに格納される必要があるが、続く７つのアクセスについては、同じ行が必要であることが分かっているので、一連の書込についてそのバンクの異なる行を閉じて活性化する際のさらなる遅延は発生しない。このようにして、システムキャッシュ２６の通常のキャッシュポリシにしたがってクリーニングされるより前にキャッシュ線のクリーニングが行われるので、遅延が減少され得る。
【００３１】
さらに図８を参照すると、ブロック１０６の後、フローは判定ブロック１０７に進み、選択されたトラッキングエントリのカウントフィールドが失効したか否かを判定する。選択されたトラッキングエントリのカウントフィールドが失効していない場合、フローは終了に進む。なお、クリーニングされる各キャッシュ線についてカウントフィールドをデクリメントする（ブロック１００において）ことによって、トラッキングエントリをクリーニングする後のチェック（ブロック８８においてなど）の際、現在のトラッキングエントリのカウントがデクリメントされ、もはやカウント閾値を満たさなくなるために、もはやクリーニングの候補ではない場合がある。また、カウントが失効し、ゼロになる可能性もある。この場合、判定ブロック１０７を参照すると、フローはブロック１０８に進み、選択されたトラッキングエントリのトラッキングされる領域に対応するキャッシュ線はクリーニングの候補ではないので、選択されたトラッキングエントリは無効化される。フローは終了に進む。
【００３２】
代替の一実施形態では、トラッキングエントリが失効する時、そのトラッキングエントリは無効化され得る。むしろ、図７のブロック７０における場合など、新たなエントリが割り当てられる時、エントリは無効化され得る。この場合、図８の判定ブロック１０７またはブロック１０８は存在しない。むしろ、ブロック１０６の後、フローは終了に進む。
【００３３】
なお、図７および８のフローはシステム１０において続けて動作してもよい。すなわち、各アクセスに応答して図７のフローが生じ、例えば、各クロックサイクルまたは複数のクロックサイクル毎に図８のフローが生じてもよい。よって、図７および８のフローはシステム１０において並列に動作してもよい。加えて、図７および８のフローは必ずしも１つのクロックサイクルで生じる必要はない。例えば、図８において、ブロック９６，９８，１００，１０２，１０４を通じた各反復は、異なるクロックサイクルにおいて生じてもよい。さらにまた、上述のように、システムキャッシュ２６が存在しないでもよく、その場合、キャッシュクリーニング回路２４はシステム１０の１つ以上のマスタに属する１つ以上のキャッシュに対する更新を監視する。
【００３４】
以上、キャッシュクリーニング回路２４を用いて、システムメモリ３０の様々な領域に対する変更をトラッキングすること（システムメモリ３０の行のダーティキャッシュ線をトラッキングすることなど）ができることが理解される。ダーティキャッシュ線のトラッキングを用いて、特定の領域または行に対応するダーティキャッシュ線がクリーニングされる時を判定することが可能である。このクリーニングによってメモリの同じ領域（システムメモリ３０の同じ行など）のキャッシュ線のフラッシュまたはクリーニングが行われるので、システムメモリ３０の行バッファ内における行の競合の発生を減少させることによって、遅延が減少され得る。例えば、クリーニング処理によってクリーニングされるダーティキャッシュ線は同じ領域に対応するので、クリーニングを実行するとともに連続して新たな領域を閉じて開く必要はない。したがって同じ領域に対応するダーティキャッシュ線のセットをクリーニングするクリーニング処理における最初のアクセスでは遅延が生じる場合があるが、そのクリーニング処理の続くアクセスではさらなる遅延は生じない。
【００３５】
本発明を実装する装置の大部分は当業者には周知の電子部品及び回路からなるので、回路の詳細については、上記に説明したような必要と認識される程度以上には説明していない。これは、本発明の基本的な概念の理解と認識のためであり、また、本発明の教示を不明瞭にしたり、注意をそらしたりしないようにするためである。
【００３６】
上記実施形態のいくつかは、異なる情報処理システムを用いて実装し得る。例えば、図１及びそれについての議論は、例示の情報処理アーキテクチャを説明するが、この例示的なアーキテクチャは、本発明の種々の態様を議論する上で有用な参照を提供するために示されているに過ぎない。もちろん、アーキテクチャの説明は議論のために単純化されており、これは、本発明に従って用いられ得る適切なアーキテクチャの多くの異なるタイプのうちの一つに過ぎない。当業者であれば、論理回路ブロック間の境界は、単に説明のためのものであり、代替実施形態においては、論理回路ブロックまたは回路要素を融合させることができ、種々の論理回路ブロック又は回路要素による機能を分解させることもできる。
【００３７】
本明細書に記載された回路は単に例示のためのものであり、実際に、同じ機能を実行できる他の多くの回路が実装され得る。抽象的であるが、しかし明確な意味において、同じ機能を達成する部品の任意の組み合わせは有効に「関連付けられ」、所望の機能を達成する。従って、回路及び介在部品に関わらず、特定機能を達成するために組み合わせられた任意の２つの構成要素は互いに「関連付けられた」とみなされ得る。同様に、そのように「関連付けられた」任意の２つの構成要素は、所望の機能を達成するために互いに「動作可能に結合された」とみなし得る。
【００３８】
例えば、１つの実施形態において、システム１０の図示される素子は単一集積回路または同じデバイスに配置される回路である。システム１０が、互いに相互接続される別の集積回路または別のデバイスの任意数を含んでもよい。例えば、メモリ３０はマスタ１２および１４と同じ集積回路、別の集積回路または同じ集積回路にまたはシステム１０のほかの素子から個別に離れる別の周辺装置またはスレーブに配置されてもよい。
【００３９】
さらに、当業者は、上述した機能的な動作の間の境界は、単なる例示であることを認識するであろう。複数の機能的な動作は、単一の動作に結合され、及び／又は、機能的な単一の動作は、追加の動作に分配されうる。更に、別の実施形態では、特定の動作の複数の例を含み、動作の順序は種々の他の実施形態において、変更可能である。
【００４０】
前述の詳細な説明は、具体的な例示の実施の形態を参照しながら本発明を説明するものである。例えば、システムキャッシュ２６のようなシステムキャッシュが存在しないことが可能である。しかし、添付の特許請求の範囲で定義された本発明の範囲から逸脱することなく様々な修正及び変更が加えられ得ることが理解されよう。詳細な説明及び添付図面は限定するものではなく、単に例と見なされるべきであり、そのような修正又は変更は、すべて本明細書で説明され定義された本発明の範囲内に入るものとする。以上、具体的な実施例に関して、利益、他の利点、及び問題の解決方法について説明してきたが、利益、利点、問題の解決方法、及びこうした利益、利点、問題の解決方法をもたらし、又はより顕著なものにする構成要素は、全ての請求項又は何れかの請求項において重要とされ、要求され、不可欠とされる機能や構成要素であると見なされるべきではない。
【００４１】
「結合された」という語は必ずしも直接的または間接的に、また機械的に結合する状態を意味するものではない。
特に明記しない限り、「第１」及び「第２」等の用語は、そのような用語が述べる要素間を任意に区別するために用いる。したがって、これらの用語は、必ずしもそのような要素の時間的な又は他の優先順位付けを示そうとするものではない。
【００４２】
以下は本発明の様々な実施形態である。
項目１は方法を含み、この方法は、キャッシュ線に関連する状態インジケータを格納する状態インジケータ格納工程であって、キャッシュ線は、システムメモリの１つの領域の対応するユニークなセクションに各々関連する複数のキャッシュ線のうちの１つであり、状態インジケータは、ダーティ指示を含み、ダーティ指示は、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補であることを示し、状態インジケータは、対応するキャッシュ線に各々関連する複数の状態インジケータのうちの１つである、前記工程と、前記システムメモリの領域について、前記複数の状態インジケータのうちダーティ指示を含む状態インジケータの数を判定する工程と、判定したダーティ指示の数が閾値を超える場合、キャッシュ線を選択し、そのキャッシュ線に格納されているデータを前記システムメモリの領域の関連するセクションに書き込み、そのキャッシュ線に対応する状態インジケータにクリーン指示を格納する工程であって、クリーン指示は、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補でないことを識別する前記工程と、を備える。項目２は項目１を含み、判定したダーティ指示の数が閾値を超える場合、キャッシュ線を選択し、そのキャッシュ線に格納されているデータを前記システムメモリの領域の関連するセクションに書き込み、前記システムメモリの領域の関連する選択した数のキャッシュ線についてクリーン指示を格納する工程であって、該選択した数のキャッシュ線の各々は、ダーティ指示を含む関連する状態インジケータを有する前記工程をさらに備える。項目３は項目１を含み、状態インジケータ格納工程は、前記システムメモリの領域に関連するトラッキングエントリに状態インジケータを格納する工程をさらに備え、トラッキングエントリは、前記システムメモリの領域に関連するキャッシュ線に関連する複数の状態インジケータの各々を含む。項目４は項目３を含み、トラッキングアレイにトラッキングエントリを格納する工程をさらに備え、トラッキングアレイは複数のトラッキングエントリを含み、複数のトラッキングエントリの各々はシステムメモリのユニークな領域に関連する。項目５は項目４を含み、トラッキングアレイを格納するメモリに結合されているキャッシュクリーニング制御回路を用いて、前記状態インジケータの数の判定および前記キャッシュ線の選択を行う工程をさらに備える項目６は項目４を含み、トラッキングエントリに関連するカウンタにダーティ指示を含む状態インジケータの数を格納する工程をさらに備え、該状態インジケータの数の格納は複数のトラッキングエントリの各々について行われる。項目７は項目４を含み、アクセスアドレスとメモリアクセスに関連する１つ以上の属性とを含むメモリアクセスメッセージを受信する工程と、いずれのトラッキングエントリもアクセスアドレスにより参照されるシステムメモリの領域に一致しない場合、該トラッキングアレイに新たなエントリを割り当てる工程であって、前記メモリアクセスメッセージによって、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記１つ以上の属性が示す場合、該新たなエントリはアクセスアドレスにより参照されるシステムメモリの領域に対応する、前記工程と、前記メモリアクセスメッセージによって、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記１つ以上の属性が示す場合、状態インジケータ格納工程を実行する工程であって、状態インジケータは、トラッキングアレイの新たなエントリと、アクセスアドレスにより参照されるシステムメモリの領域に一致するトラッキングエントリとのうちの１つに格納される、前記工程と、をさらに備える。項目８は項目７を含み、前記メモリアクセスメッセージによって、キャッシュ線が、続くアクセスの結果として、そのキャッシュ線に格納されているデータを書き込む候補とされる意図が示されることを、前記１つ以上の属性が示す場合、そのキャッシュ線に対応する状態インジケータにクリーン指示を格納する工程をさらに備える。項目９は項目８を含み、前記メモリアクセスメッセージによって、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記１つ以上の属性が示す場合、関連するトラッキングエントリのダーティ指示を含む複数の状態インジケータの数を増加させる工程と、前記メモリアクセスメッセージによって、キャッシュ線が、続くアクセスの結果として、そのキャッシュ線に格納されているデータを書き込む候補とされる意図が示されることを、前記１つ以上の属性が示す場合、関連するトラッキングアレイのダーティ指示を含む複数の状態インジケータの数を減少させる工程と、をさらに備える。項目１０は項目１を含み、前記複数のキャッシュ線は、システムキャッシュメモリと、各々プロセッサに対応する複数のプロセッサキャッシュメモリとのうちの１つ以上に備えられている。
【００４３】
項目１１は、プロセッサと周辺デバイスとのうちの１つを各々備える１つ以上のマスタと、複数のシステムメモリバンクを備えるシステムメモリであって、各システムメモリバンクは複数のユニークな行を備え、各行はシステムメモリの１つの領域に対応する、システムメモリと、前記１つ以上のマスタに結合されており、複数のキャッシュ線を格納する１つ以上のキャッシュメモリであって、各キャッシュ線は、前記複数の行のうちの１つの行の対応するユニークなセクションに関連しており、各キャッシュ線は、１つ以上のプロセッサによるアクセスのために行の対応するユニークなセクションに関連するデータを格納するように構成されており、前記１つ以上のキャッシュメモリは、システムキャッシュと、対応するプロセッサに関連する専用キャッシュとのうちの１つ以上を含む、キャッシュメモリと、前記１つ以上のキャッシュメモリに結合されているキャッシュクリーニング回路と、を備えるシステムであって、キャッシュクリーニング回路は、複数のキャッシュ線のうちの対応するキャッシュ線に各々関連する複数の状態インジケータを格納し、各状態インジケータは、対応するキャッシュ線が、前記行の対応するユニークなセクションにそのキャッシュ線に格納されているデータを書き込む候補であることを示すダーティ指示と、対応するキャッシュ線が、そのキャッシュ線に格納されているデータを書き込む候補でないことを示すクリーン指示とのうちの１つの指示を含み、ダーティ指示を含む状態インジケータの数が閾値を超えている行を選択し、選択した行について、ダーティ指示を含む対応する状態インジケータを各々有する１つ以上のキャッシュ線を選択し、その行の対応するセクションに、選択したキャッシュ線に格納されているデータを書き込み、その状態インジケータにクリーン指示を格納するように構成されている、システムである。項目１２は項目１１を含み、キャッシュクリーニング回路は、前記行に関連したトラッキングエントリに状態インジケータを格納するようにさらに構成されており、該トラッキングエントリは、前記行に関連したキャッシュ線に関連した複数の状態インジケータの各々を含む。項目１３は項目１２を含み、キャッシュクリーニング回路は、トラッキングアレイを格納するトラッキングアレイメモリをさらに備え、トラッキングアレイは複数のトラッキングエントリを含み、前記複数のトラッキングエントリの各々はユニークな行に関連している。項目１４は項目１３を含み、キャッシュクリーニング回路は、トラッキングエントリに関連するカウンタにそのトラッキングエントリにおけるダーティ指示の数を格納するようにさらに構成されている。項目１５は項目１３を含み、キャッシュクリーニング回路は、前記１つ以上のマスタのうちの１つのマスタから、アクセスアドレスとメモリアクセスに関連する１つ以上の属性とを含むメモリアクセスメッセージを受信し、トラッキングエントリがアクセスアドレスにより参照される行に一致するか否かを判定し、次の場合、すなわち、いずれのトラッキングエントリもアクセスアドレスにより参照される行に一致せず、かつ、前記メモリアクセスメッセージによって、キャッシュ線が、前記行の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記１つ以上の属性が示す場合、該アクセスアドレスにより参照される行に対応するトラッキングアレイに新たなアレイを割り当て、前記メモリアクセスメッセージによって、キャッシュ線が、前記行の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記１つ以上の属性が示す場合、そのキャッシュ線に関連する状態インジケータの格納を実行し、状態インジケータは、トラッキングアレイの新たなエントリと、アクセスアドレスにより参照される行に一致するトラッキングエントリとのうちの１つに格納され、前記メモリアクセスメッセージによって、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記１つ以上の属性が示す場合、関連するトラッキングエントリのダーティ指示を含む複数のインジケータの数を増加させるようにさらに構成されている。項目１６は項目１５を含み、キャッシュクリーニング回路は、前記メモリアクセスメッセージによって、キャッシュ線が、続くアクセスの結果として、そのキャッシュ線に格納されているデータを書き込む候補とされる意図が示されることを、前記１つ以上の属性が示す場合、そのキャッシュ線に関連する状態インジケータにクリーン指示を格納し、前記メモリアクセスメッセージによって、キャッシュ線が、続くアクセスの結果として、そのキャッシュ線に格納されているデータを書き込む候補とされる意図が示されることを、前記１つ以上の属性が示す場合、関連するトラッキングアレイのダーティ指示を含む状態インジケータの数を減少させるようにさらに構成されている。項目１７は項目１２を含み、トラッキングエントリはビットフィールドを備え、ビットフィールドの１つ以上のビットは複数の状態インジケータのうちの１つを格納する。項目１８は項目１２を含み、前記複数の状態インジケータの各々は、関連するキャッシュ線と、関連するキャッシュ線に対する書込指示とを格納するキャッシュメモリの識別子を含む。
【００４４】
項目１９は方法を含み、この方法は、１つ以上のトラッキングエントリが所定の閾値を超える数のダーティ指示を含むか否かを判定する工程であって、各トラッキングエントリは、システムメモリの同じ領域のユニークなセクションに関連する対応するキャッシュ線を各々有する複数のキャッシュ線フィールドを含む、前記工程と、閾値を超える数のダーティ指示数を有する１つ以上のトラッキングエントリのうちの１つのトラッキングエントリを選択する工程と、選択したトラッキングエントリに関連するダーティキャッシュ線を選択するキャッシュ線選択工程と、選択したキャッシュ線を格納するキャッシュにトランザクションを送信するトランザクション送信工程であって、トランザクションは、キャッシにダーティデータをシステムメモリに書き込ませるように構成されている、前記工程と、もはや前記キャッシュ線がシステムメモリにデータを書き込むための候補ではないことを示すように、選択したトラッキングエントリに対応する状態インジケータにクリーン指示を格納するクリーン指示格納工程と、所定の数のキャッシュ線について、キャッシュ線選択工程、トランザクション送信工程、およびクリーン指示格納工程を実行する工程と、を備える。項目２０は項目１９を含み、各トラッキングエントリについて、ダーティ指示のカウントを格納する工程であって、ダーティ指示はダーティデータを格納するキャッシュ線に対応する、前記工程と、トランザクション送信工程に続いて、関連するトラッキングエントリのダーティ指示の新たなカウントを格納する工程と、をさらに備える。
【図１】
0006008362.tif 000002
【図２】
0006008362.tif 000003
【図３】
0006008362.tif 000004
【図４】
0006008362.tif 000005
【図５】
0006008362.tif 000006
【図６】
0006008362.tif 000007
【図７】
0006008362.tif 000008
【図８】
0006008362.tif 000009