(57)【特許請求の範囲】
【請求項１】
複数のキャッシュメモリラインを含むキャッシュメモリと、
複数のダーティマスクを含むダーティバッファと、
それぞれのキャッシュメモリラインへの書き込みがフル書き込みでないときに、前記それぞれのキャッシュメモリラインに前記複数のダーティマスクのうちの１つを割り振ることと、ここにおいて、前記複数のダーティマスクのうちの前記１つは前記それぞれのキャッシュメモリライン内のデータユニットのダーティ状態を指示する、
前記複数のダーティマスクのうちの前記１つを、前記複数のダーティマスクのうちの前記１つが割り振られた前記それぞれのキャッシュメモリラインと関連付ける識別（ＩＤ）情報を記憶することと、
前記それぞれのキャッシュメモリライン内の前記データユニットのそれぞれがダーティであるとき、前記それぞれのキャッシュメモリラインから前記複数のダーティマスクのうちの前記１つを割り振り解除することと、
前記それぞれのキャッシュメモリライン内の前記データユニットのそれぞれがダーティでないとき、前記それぞれのキャッシュメモリラインから前記複数のダーティマスクのうちの前記１つを割り振り解除することと、
を行うように構成されるキャッシュコントローラと、
を備える、キャッシュメモリシステム。
【請求項２】
前記複数のキャッシュメモリラインのそれぞれは、
前記それぞれのキャッシュメモリライン内の前記データユニットのそれぞれがダーティであるときを指示する完全ダーティフラグを記憶する場所と、
前記ＩＤ情報を記憶するためのダーティバッファインデックスを記憶する場所と、
を含む、請求項１に記載のキャッシュメモリシステム。
【請求項３】
前記複数のキャッシュメモリラインのそれぞれは、
前記それぞれのキャッシュメモリラインの少なくとも１つのデータユニットが、メインメモリからのデータの最後の書き込み以降に書き込まれたことを指示するダーティフラグを記憶する場所
をさらに含む、請求項２に記載のキャッシュメモリシステム。
【請求項４】
前記それぞれのキャッシュメモリラインの少なくとも１つのデータユニットが、前記メインメモリからのデータの前記最後の書き込み以降に書き込まれたことを指示する前記ダーティフラグは１ビットフラグを備える、請求項３に記載のキャッシュメモリシステム。
【請求項５】
前記完全ダーティフラグは１ビットフラグを備える、請求項２に記載のキャッシュメモリシステム。
【請求項６】
前記ダーティバッファインデックスは、前記ダーティマスクが割り振られた前記それぞれのキャッシュメモリラインを指示するダーティマスクに関するアドレスを与える、請求項２に記載のキャッシュメモリシステム。
【請求項７】
前記ダーティバッファインデックスは、前記ダーティバッファ内のダーティマスクの場所へのポインタを備える、請求項２に記載のキャッシュメモリシステム。
【請求項８】
前記キャッシュコントローラは、前記それぞれのキャッシュメモリラインへの書き込み要求が生じるときに、前記それぞれのキャッシュメモリラインに割り振られた前記複数のダーティマスクのうちの前記１つに対する更新を引き起こすようにさらに構成される、請求項１に記載のキャッシュメモリシステム。
【請求項９】
前記ダーティバッファは前記キャッシュメモリの一部を備える、請求項１に記載のキャッシュメモリシステム。
【請求項１０】
前記ダーティバッファは、前記キャッシュメモリとは別のメモリを備える、請求項１に記載のキャッシュメモリシステム。
【請求項１１】
前記キャッシュメモリに結合されるプロセッサと、前記プロセッサに結合されるメインメモリとをさらに備え、
前記プロセッサは前記キャッシュメモリおよび前記メインメモリに対してデータの読み出しおよび書き込みを行うように構成される、請求項１に記載のキャッシュメモリシステム。
【請求項１２】
複数のキャッシュメモリラインを含むキャッシュメモリにデータを書き込むことと、
それぞれのキャッシュメモリラインへの書き込みがフル書き込みでないときに、前記複数のキャッシュメモリラインのうちの前記それぞれのキャッシュメモリラインに複数のダーティマスクのうちの１つを割り振ることと、ここにおいて、前記複数のダーティマスクのうちの前記１つは、前記それぞれのキャッシュメモリライン内のデータユニットのダーティ状態を指示し、
前記それぞれのキャッシュメモリライン内の前記データユニットのそれぞれがダーティであるとき、前記それぞれのキャッシュメモリラインから前記複数のダーティマスクのうちの前記１つを割り振り解除することと、
前記それぞれのキャッシュメモリライン内の前記データユニットのそれぞれがダーティでないとき、前記それぞれのキャッシュメモリラインから前記複数のダーティマスクのうちの前記１つを割り振り解除することと、
前記複数のダーティマスクのうちの前記１つを、前記複数のダーティマスクのうちの前記１つが割り振られた前記それぞれのキャッシュメモリラインと関連付ける識別（ＩＤ）情報を記憶することと、
を備える、メモリシステムを動作させる方法。
【請求項１３】
前記複数のキャッシュメモリラインのそれぞれが、
前記それぞれのキャッシュメモリライン内の前記データユニットのそれぞれがダーティであるときを指示する完全ダーティフラグを記憶する場所と、
前記ＩＤ情報を記憶するためのダーティバッファインデックスを記憶する場所と、
を含む、請求項１２に記載の方法。
【請求項１４】
前記複数のダーティマスクのうちの前記１つを含む前記それぞれのキャッシュメモリラインへの書き込み要求が生じるとき、前記複数のダーティマスクのうちの前記１つに対する更新を引き起こすことをさらに備える、請求項１２に記載の方法。
【請求項１５】
前記それぞれのキャッシュメモリラインの少なくとも１つのデータユニットが、メインメモリからのデータの最後の書き込み以降に書き込まれたことを指示することをさらに備える、請求項１２に記載の方法。
【請求項１６】
前記それぞれのキャッシュメモリラインが完全にダーティであることを指示することをさらに備える、請求項１２に記載の方法。
【請求項１７】
前記複数のダーティマスクのうちの前記１つが割り振られた前記それぞれのキャッシュメモリラインを指示することをさらに備える、請求項１２に記載の方法。
【請求項１８】
プロセッサと、
前記プロセッサに結合されるメインメモリと、
前記プロセッサに結合されるキャッシュメモリと、
を備えるシステムであって、
前記キャッシュメモリは、
キャッシュコントローラと、
複数のキャッシュメモリラインと、
複数のダーティマスクを含むダーティバッファと、
を含み、
前記キャッシュコントローラは、それぞれのキャッシュメモリラインへの書き込みがフル書き込みでないときに、前記複数のキャッシュメモリラインのうちの前記それぞれのキャッシュメモリラインに前記複数のダーティマスクのうちの１つを割り振るように構成され、ここにおいて、前記複数のダーティマスクのうちの前記１つは、前記それぞれのキャッシュメモリライン内のデータユニットのダーティ状態を指示し、
前記キャッシュコントローラは、前記それぞれのキャッシュメモリライン内の前記データユニットのそれぞれがダーティであるとき、前記それぞれのキャッシュメモリラインから前記複数のダーティマスクのうちの前記１つを割り振り解除するように構成され、
前記キャッシュコントローラは、前記それぞれのキャッシュメモリライン内の前記データユニットのそれぞれがダーティでないとき、前記それぞれのキャッシュメモリラインから前記複数のダーティマスクのうちの前記１つを割り振り解除するように構成され、
前記キャッシュコントローラは、前記複数のダーティマスクのうちの前記１つを、前記複数のダーティマスクのうちの前記１つが割り振られた前記それぞれのキャッシュメモリラインと関連付ける識別（ＩＤ）情報を記憶するように構成される、システム。
【請求項１９】
前記キャッシュメモリラインのそれぞれが、
前記それぞれのキャッシュメモリライン内の前記データユニットのそれぞれがダーティであるときを指示する完全ダーティフラグを記憶する場所と、
前記ＩＤ情報を記憶するためのダーティバッファインデックスを記憶する場所と、
を含む、請求項１８に記載のシステム。
【請求項２０】
前記キャッシュメモリラインのそれぞれが、前記それぞれのキャッシュメモリラインの少なくとも１つのデータユニットが前記メインメモリ内の対応するデータユニットとは異なることを指示するダーティフラグを記憶する場所をさらに含む、請求項１９に記載のシステム。
【請求項２１】
前記複数のダーティマスクのうちの前記１つが割り振られた前記それぞれのキャッシュメモリラインを指示する前記複数のダーティマスクのうちの前記１つに関するアドレスを与える前記ダーティバッファインデックス、請求項１９に記載のシステム。
【請求項２２】
前記キャッシュコントローラは、前記複数のダーティマスクのうちの前記１つを含む前記それぞれのキャッシュメモリラインへの書き込み要求が生じるとき、前記複数のダーティマスクのうちの前記１つに対する更新を引き起こすようにさらに構成される、請求項１８に記載のシステム。
【請求項２３】
前記キャッシュコントローラは、前記それぞれのキャッシュメモリライン内の１つの場所に、前記それぞれのキャッシュメモリラインに関する前記ＩＤ情報を記憶するように構成される、請求項１８に記載のシステム。
【請求項２４】
前記ダーティバッファは前記キャッシュメモリの一部を備える、請求項１８に記載のシステム。
【請求項２５】
前記ダーティバッファは前記キャッシュメモリとは別のメモリを備える、請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本開示はメモリ管理に関し、より詳細には、キャッシュメモリの管理に関する。
【背景技術】
【０００２】
[0002]キャッシュメモリは、キャッシュとも呼ばれ、データへのアクセスを加速するために、種々のデータ処理システムにおいて用いられる。バイト書き込み可能キャッシュは、クライアントが他のバイトを手付かずのままにしてキャッシュメモリラインの数バイトを書き込むことを可能にする。バイト書き込み可能キャッシュメモリへの書き込み時に、データコヒーレンシを維持することが重要である。種々のバイト書き込み可能キャッシュメモリ書き込み方式が、データコヒーレンシを維持するために使用され得る。これらの書き込み方式のうちのいくつかは、システム性能を劣化させる場合があるか、または余分なメモリ空間を消費する場合がある。
【発明の概要】
【０００３】
[0003]一例として、ダーティバッファが、それぞれのキャッシュメモリラインへの書き込みがそのキャッシュメモリラインへのフル書き込みでないとき、キャッシュメモリラインに割り振られた複数のダーティマスクを含むことができる。ダーティバッファは、一例において、キャッシュメモリの一部とすることができる。他の例では、ダーティバッファは、キャッシュメモリとは別にすることができ、たとえば、別のメモリデバイスとすることができる。ダーティマスクは、キャッシュメモリライン内のデータユニットのダーティ状態を指示する。キャッシュメモリラインのそれぞれは、そのキャッシュメモリラインに割り振られるダーティマスクの識別情報（ＩＤ）を記憶する場所を含むことができる。たとえば、ＩＤは一般的に、キャッシュライン内の少なくとも１バイトがダーティであることを指示することができるダーティフラグ、および／またはキャッシュメモリライン内のすべてのバイトがダーティであることを指示することができる完全ダーティフラグのようなフラグと同じキャッシュライン内のダーティバッファインデックスに記憶され得る。これにより、都合良くアクセスできるようになる場合がある。しかしながら、他の例では、ＩＤは、キャッシュライン内のフラグとは別の他のメモリ記憶場所に記憶され得る。
【０００４】
[0004]一例では、本開示は、複数のキャッシュメモリラインを含むキャッシュメモリと、複数のダーティマスクを含むダーティバッファと、それぞれのキャッシュメモリラインへの書き込みがそのキャッシュメモリラインへのフル書き込みでないときに、キャッシュメモリラインのそれぞれにダーティマスクのうちの１つを割り振るように構成されるコントローラとを含む、キャッシュメモリシステムを記述する。ダーティマスクのそれぞれは、キャッシュメモリラインのうちの１つにおけるデータユニットのダーティ状態を指示する。コントローラは、ダーティマスクを、そのダーティマスクが割り振られるキャッシュメモリラインと関連付ける識別（ＩＤ）情報を記憶する。
【０００５】
[0005]別の例では、本開示は、複数のキャッシュメモリラインを含むキャッシュメモリにデータを書き込むことと、キャッシュメモリラインへの書き込みがそのキャッシュメモリラインへのフル書き込みでないときに、キャッシュメモリラインのそれぞれに複数のダーティマスクのうちの１つを割り振ることと、ここにおいて、ダーティマスクは、そのキャッシュメモリライン内のデータユニットのダーティ状態を指示し、ダーティマスクを、そのダーティマスクが割り振られるキャッシュメモリラインと関連付ける識別（ＩＤ）情報を記憶することとを含む、メモリシステムを動作させる方法を記述する。
【０００６】
[0006]別の例では、本開示は、複数のキャッシュメモリラインを含むキャッシュメモリにデータを書き込むための手段と、キャッシュメモリラインへの書き込みがそのキャッシュメモリラインへのフル書き込みでないときに、キャッシュメモリラインのそれぞれに複数のダーティマスクのうちの１つを割り振るための手段と、ダーティマスクは、そのキャッシュメモリライン内のデータユニットのダーティ状態を指示する、ダーティマスクを、そのダーティマスクが割り振られるキャッシュメモリラインと関連付ける識別（ＩＤ）情報を記憶するための手段とを含むメモリシステムを記述する。
【０００７】
[0007]別の例では、本開示は、プロセッサと、プロセッサに結合されるメインメモリと、プロセッサに結合されるキャッシュメモリとを含む、システムを記述する。キャッシュメモリは、コントローラと、複数のキャッシュメモリラインと、ダーティバッファとを含む。ダーティバッファはダーティマスクを含む。コントローラは、キャッシュメモリラインへの書き込みがそのキャッシュメモリラインへのフル書き込みでないときに、キャッシュメモリラインのそれぞれに複数のダーティマスクのうちの１つを割り振る。ダーティマスクは、そのキャッシュメモリライン内のデータユニットのダーティ状態を指示する。コントローラは、ダーティマスクを、そのダーティマスクが割り振られるキャッシュメモリラインと関連付ける識別（ＩＤ）情報を記憶する。
【０００８】
[0008]別の例では、本開示は、キャッシュメモリラインへの書き込みがフル書き込みでないときを指示するダーティフラグを用いてキャッシュメモリ内のキャッシュメモリラインの状態を追跡することと、キャッシュメモリラインへの書き込みがその特定のキャッシュメモリラインへのフル書き込みでないときに、そのキャッシュメモリラインに１つのダーティマスクを割り振ることと、ダーティマスクがアクセスされ得るように、特定のキャッシュメモリラインにアタッチされる、割り振られたダーティマスクの識別（ＩＤ）情報を追跡することとを含む、メモリシステムを動作させる方法を記述する。
【０００９】
[0009]別の例では、本開示は、キャッシュメモリラインへの書き込みがフル書き込みでないときを指示するダーティフラグを用いてキャッシュメモリ内のキャッシュメモリラインの状態を追跡するための手段と、キャッシュメモリラインへの書き込みがその特定のキャッシュメモリラインへのフル書き込みでないときに、そのキャッシュメモリラインに１つのダーティマスクを割り振るための手段と、ダーティマスクがアクセスされ得るように、特定のキャッシュメモリラインにアタッチされる、割り振られたダーティマスクの識別（ＩＤ）情報を追跡するための手段とを含む、キャッシュメモリシステムを記述する。
【００１０】
[0010]別の例では、本開示は、非一時的コンピュータ可読記憶媒体を記述する。コンピュータ可読媒体は、実行されるときに、プログラマブルプロセッサに、キャッシュメモリラインへの書き込みがフル書き込みでないときを指示するダーティフラグを用いてキャッシュメモリ内のキャッシュメモリラインの状態を追跡することと、キャッシュメモリラインへの書き込みがその特定のキャッシュメモリラインへのフル書き込みでないときに、そのキャッシュメモリラインに１つのダーティマスクを割り振ることと、ダーティマスクがアクセスされ得るように、特定のキャッシュメモリラインにアタッチされる、割り振られたダーティマスクの識別（ＩＤ）情報を追跡することとを行わせる命令を含む。
【００１１】
[0011]１つまたは複数の例の詳細が添付の図面および以下の説明に記載されている。他の特徴、目的、および利点は、その説明および図面、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】[0012]本開示の技法を実現することができる、プロセッサと、キャッシュメモリと、メインメモリとを含む例示的な処理システムを示すブロック図。
【図２】[0013]本開示の技法を実現することができる、図１の例示的なキャッシュメモリの更なる細部を示すブロック図。
【図３】[0014]本開示の技法を実現することができる、キャッシュメモリラインの一例を示すブロック図。
【図４Ａ】[0015]本開示の技法を用いるキャッシュ内のデータ処理の一例を示す概念図。
【図４Ｂ】本開示の技法を用いるキャッシュ内のデータ処理の一例を示す概念図。
【図５】[0016]本開示の技法による例示的な方法を示す流れ図。
【図６】[0017]本開示の技法による例示的な方法を示す別の流れ図。
【発明を実施するための形態】
【００１３】
[0018]データコヒーレンシ（data coherency）を維持するために用いられる１つの方式は、「読み出し−割り振り−書き込み」方式と呼ばれる場合がある。書き込み要求を受信すると、プロセッサが最初にシステムメモリからターゲットキャッシュメモリラインを読み出すことができ、その後、プロセッサは、選択されたデータユニット、たとえば、バイトをキャッシュメモリに書き込むことができる。書き込まれないデータユニットは、システムメモリと同じ値を有する。キャッシュメモリの１つのラインがキャッシュから追い出されるとき（is evicted）、キャッシュメモリライン全体がシステムメモリに送出される。任意の手付かずの（untouched）データユニットは、同じ値を書き込まれ得る。この方式によれば、キャッシュメモリラインへの任意の書き込みの結果として、システムメモリへの読み出しが生じる。これは、システムメモリへの余分なトラフィックと、書き込み要求に対する望ましくないレイテンシ（latency）とにつながる。最新のデジタルシステムでは、メモリバンド幅（band width）が一般的に、システム性能に対するボトルネックとなり得る。これは、グラフィックス処理ユニット（ＧＰＵ）に対して特に当てはまり得る。したがって、この方式は、システムメモリへのトラフィックが増加することに起因して、好ましくない場合がある。
【００１４】
[0019]データコヒーレンシを維持するために用いられる別の方式は、いわゆる、「バイトダーティマスク（byte dirty mask）」を記憶することを伴う。（データユニットは一般的に１バイトずつアクセス可能とすることができる。）バイトダーティマスクは、キャッシュメモリライン内の、ダーティである任意のバイトを指示する。キャッシュおよびシステムメモリ内に不整合のデータが存在する場合があるように、バイトが、より高いレベルのメモリ、たとえば、システムメモリとは異なるデータを含み、より高いレベルのメモリにまだ書き込まれていないとき、そのバイトはダーティである。たとえば、その変化がシステムメモリに書き込まれる必要があるような、キャッシュメモリラインへの変更が生じたか否かを指示するために、バイトダーティマスクが用いられ得る。したがって、ライトバックキャッシュ（write-back cache）では、バイトダーティマスク内の１ビットが、メモリシステム階層内の次に高いメモリレベル、たとえば、システムメモリにキャッシュメモリラインをライトバックする必要があるときを指示することができる。
【００１５】
[0020]キャッシュメモリライン全体に対して１ビットダーティビットを使用する代わりに、キャッシュメモリラインごとに、１ビット／バイトダーティマスクが記憶され得る。追い出されるとき、ダーティマスクは、より高いレベルのメモリ内の対応するデータとは異なるデータを含むダーティバイトが特定され得るように、バイト書き込みイネーブルデータとして、キャッシュメモリラインデータとともに送出され得る。「非ダーティ」バイト、すなわち、より高いレベルのメモリに書き込まれてなく、より高いレベルのメモリ内の対応するデータと依然として同じであるバイトは、システムメモリに書き込まれなくてもよい。このタイプの方式によれば、システムが、各キャッシュメモリライン内に、データとともにマスクを記憶する。バイトごとに１ビットマスクを用いるとき、マスクランダムアクセスメモリ（ＲＡＭ）は、データＲＡＭの１／８であり、大きなメモリ面積コストを生じさせる。ＲＡＭアーキテクチャのために、マスクＲＡＭ面積は一般的にＲＡＭの全面積の１／８より大きい場合がある。例示として、一例では、キャッシュが５１２×１２８ビットＲＡＭを用いて、８キロバイト（ＫＢ）であるとき、その面積は、２８ｎｍ技術において約０．０６１ｍｍ2である。しかしながら、この例では、２５６×３２ビットのマスクＲＡＭは０．０１３ｍｍ2の面積を有し、それは、キャッシュメモリの面積の２１％である。
【００１６】
[0021]上記のダーティバイトマスクシステムを記憶するための例示的なアーキテクチャが、表１に示される。一例では、キャッシュが１２８個のキャッシュメモリライン（０．．．１２７）を有し、各ライン内に１Ｋバイトのデータがあると仮定する。以下の表１のアーキテクチャを用いてバイトダーティマスクを記憶するとき、以下の表１に示されるように、各キャッシュメモリラインは１０２４ビットダーティバイトマスクを必要とし、それは１２８Ｋビットレジスタを必要とする。
【００１７】
[0022]表１に示されるように、キャッシュメモリラインは、キャッシュメモリライン内のデータが有効であるか否かを指示する有効フラグと、キャッシュ内のそのデータに対応するメインメモリ内のアドレスを指示するタグとを含むことができる。データ（表１には示されない）もキャッシュメモリラインの一部である。キャッシュメモリラインのデータ内の任意のバイトがメインシステムメモリ内のデータともはや一致しないように、それらのバイトが書き込まれたか否かを指示するために、ダーティフラグが用いられる。また、キャッシュメモリラインは、キャッシュメモリラインのどのバイトがダーティであるかを指示するダーティバイトマスクも含むことができる。
【表１】
0006009688.tif 000002
【００１８】
[0023]上記の、読み出し−割り振り−書き込み方式、およびバイトダーティマスク記憶方式はいずれも、自らの短所を有する。読み出し−割り振り−書き込み方式は、余分なバンド幅を要し、バイトダーティマスク記憶方式は、面積に関するペナルティがある。表１に示される例では、バイトダーティマスクは、キャッシュメモリライン内のバイトごとに１ビットを記憶する。特定のビットがアクティブ、たとえば、論理「１」である場合には、対応するバイトはダーティである。他の構成も可能である。
【００１９】
[0024]先に論じられた第２のアーキテクチャでは、キャッシュメモリは、バイトダーティマスクを記憶する。そのシステム内のキャッシュメモリラインは、バイトダーティマスクのための専用場所を有する。キャッシュ全体に及ばない書き込み要求のみがダーティマスクを使用することになる。読み出し要求はいかなるダーティマスクも使用せず、キャッシュライン全体に及ぶ書き込み要求は１ビットダーティフラグを使用することができる。したがって、システム内の各キャッシュメモリラインにバイトダーティマスクのための専用場所を持たせることは、必要以上に多くのメモリを使用する場合がある。
【００２０】
[0025]本開示の技法によれば、すべてのキャッシュメモリライン内のバイトごとに１ビットマスクを使用する代わりに、バイトダーティマスクのプールとともに、キャッシュメモリラインごとに１ビットフラグが使用され得る。したがって、キャッシュメモリライン全体に及ぶ書き込み要求は、キャッシュメモリの状態を記述する１ビットダーティフラグを使用することができる。したがって、バイトごとに１ビットマスクの代わりに、キャッシュメモリライン全体に対して１ビットフラグが使用され得る。ダーティであるが、完全にはダーティでないキャッシュメモリラインごとに、バイトダーティマスク記憶場所のうちの１つを指し示すポインタが与えられ得る。一例では、バイトダーティマスクのプール内の各マスクは、キャッシュメモリライン内のバイトごとに１ビットを記憶することができる。特定のビットがアクティブ、たとえば、論理「１」である場合には、対応するバイトはダーティである。他の構成も可能である。
【００２１】
[0026]たとえば、別のバイトダーティマスク記憶場所を指し示すためにポインタが使用され得る。バイトダーティマスクを記憶するために、別のバイトダーティマスク記憶場所が使用され得る。各バイトダーティマスクは、特定のキャッシュメモリラインのどのバイトがダーティであるかを指示する。言い換えると、ダーティバイトは、それらのバイトがもはやメインメモリ内の対応する記憶場所と同じデータを含まないように書き込まれたキャッシュメモリライン内のバイトである。一般的に、キャッシュメモリ内のすべてのキャッシュメモリラインが同時にダーティであるバイトを有するとは限らないので、バイトダーティマスク記憶場所の数は、キャッシュメモリラインの数より少なくすることができる。したがって、そのような例示的なシステムでは、少ないメモリが使用され得る。
【００２２】
[0027]一般的に、グラフィックス処理ユニット（ＧＰＵ）を利用する応用形態では、一例として、要求の大部分は読み出し要求である。そのような読み出しはキャッシュメモリライン内の値を変更しないので、読み出し要求によって、キャッシュメモリライン内のバイトはダーティにならない。言い換えると、読み出し前に、キャッシュメモリラインが対応するより高いレベルのメモリ、たとえば、メインメモリと同じデータを含む場合には、キャッシュメモリラインは、読み出し後も、対応するより高いレベルのメモリと同じデータを含む。さらに、大部分の書き込み要求は連続したアドレスを有する。したがって、一般的に、ＧＰＵを利用する応用形態では、隣接する書き込み要求は、最終的には、キャッシュメモリライン全体に及ぶことになる。データが同じデータで上書きされないと仮定すると、キャッシュメモリライン全体が書き込まれた場合には、各バイトの内容はダーティである。言い換えると、キャッシュメモリラインの各バイトが、対応するより高いレベルの記憶場所と同じデータを含まないとき、すべてのバイトがダーティであるので、もはやどのバイトがダーティであるかを追跡する必要はない。本開示の技法によれば、ダーティマスクは、１ビットダーティフラグと、ダーティマスクのプールの一部とすることができる別のバイトダーティマスク記憶場所へのポインタとによって置き換えられ得る。１ビットダーティフラグは、キャッシュラインがダーティであるか否かを指示し、ダーティである場合には、ポインタによって識別される別のバイトダーティマスク記憶場所が、キャッシュラインのどのバイトがダーティであるかを指示する。すべてのキャッシュメモリラインが個々のダーティマスクを必要とは限らないので、少ない数のダーティマスクが使用され得る。すなわち、キャッシュメモリラインのうちのいくつかはダーティではなく、すなわち、いかなるダーティバイトも含まない。
【００２３】
[0028]本開示は、バイト書き込み可能キャッシュのための書き込みアーキテクチャを提案する。提案されるアーキテクチャは、特定の特徴を有することができる。一例として、キャッシュメモリラインごとに専用のダーティマスクを使用する代わりに、キャッシュ全体がダーティマスクのプールを共有することができる。ダーティマスクの共有されたプールは、キャッシュメモリラインごとのバイトダーティマスクを含むシステムに比べて、少ないメモリを使用することができる。キャッシュメモリラインの数より少ない数のダーティマスクを使用できるようにする場合があるシステム動作の一態様が、読み出し動作の頻度である。読み出し動作は、キャッシュメモリを変更しないので、したがって、結果として、ダーティマスクのプールからのダーティマスクを使用しない。したがって、先に論じられたように、いくつかのシステムは、データがダーティにならない多数の読み出しを実行する場合があるので、ダーティマスクの数は、キャッシュメモリラインのための数より著しく少なくすることができる。データの大部分が、たとえば、他のキャッシュメモリラインと同時にダーティにならない場合があるので、キャッシュメモリラインごとのバイトダーティマスクの代わりに、バイトダーティマスクのプールが使用され得る。さらに、システムによっては、書き込みが同じキャッシュメモリラインになる傾向があり、それはこれらのラインが「完全にダーティ」になる傾向があることを意味する。完全にダーティなキャッシュメモリラインは、すべてのバイトがダーティであるので、バイトダーティマスクを使用しない。
【００２４】
[0029]ダーティマスクの数がキャッシュメモリラインのための数より著しく少ない場合があることを示す例では、１０００キャッシュメモリラインを有するキャッシュが、２０のダーティマスクしか使用しない場合がある。書き込み要求が、バイトのサブセットのみがダーティであるような、フルキャッシュメモリラインに書き込まない場合には、その特定のキャッシュメモリラインにダーティマスク空間が割り振られ得る。割り振られたダーティマスク空間の識別情報（ＩＤ）がこのキャッシュメモリラインにアタッチされる場合があり、それにより、このキャッシュメモリラインが追い出されるとき、そのマスクがアクセスされ得る。ＩＤは一般的に、キャッシュライン内の少なくとも１つのバイトがダーティであることを指示することができるダーティフラグ、および／またはキャッシュメモリライン内のすべてのバイトがダーティであることを指示することができる完全ダーティフラグのようなキャッシュラインフラグとともに記憶され得る。これにより、都合良くアクセスできるようになる場合がある。しかしながら、他の例では、ＩＤは他のメモリ記憶場所に記憶され得る。
【００２５】
[0030]特定のキャッシュメモリラインについての情報がダーティバイトマスク内にもはや記憶されないという意味において、キャッシュメモリラインが追い出される場合がある。たとえば、キャッシュメモリラインが、もはやダーティでないようにメインメモリから新たな情報を書き込まれたとき、またはキャッシュメモリラインが完全にダーティになり、各バイトがダーティであるために、どのバイトがダーティであるかを追跡する必要がないときに、これが生じる場合がある。場合によっては、システム内のすべてのダーティバイトマスクが使用中である場合には、ダーティであるが、完全にはダーティでない場合であっても、キャッシュメモリラインを追い出すことが必要な場合がある。したがって、キャッシュメモリラインがもはやダーティでないように、システムはキャッシュメモリラインをメインメモリ１６に書き込むことができる。
【００２６】
[0031]第２に、ダーティマスクをアタッチされたキャッシュメモリライン（たとえば、特定のダーティマスクに関して使用中のキャッシュメモリライン）にヒットする任意の書き込み要求が、対応するダーティマスクの更新を引き起こすべきである。ダーティマスクが更新されるとき、検出ロジックは、ダーティマスクがすべて１であるか否かを検出することができる。ダーティマスクがすべて１であり、キャッシュラインが完全にダーティであることを指示すると、ダーティマスクのＩＤを無効に設定することによって、ダーティマスクはキャッシュメモリラインから切り離され得る。これは、キャッシュメモリラインが「完全にダーティ」であることを指示する。キャッシュメモリライン全体が、メモリ階層内の次に高い最も高いメモリに書き込まれる必要があるときに、そのキャッシュメモリラインは完全にダーティである。言い換えると、メモリ階層内の次に最も高いメモリ、たとえば、メインシステムメモリまたは何らかの他の中間メモリが最新でないように、キャッシュメモリライン全体が書き込まれたとき、そのキャッシュメモリラインは完全にダーティである。
【００２７】
[0032]各キャッシュメモリラインは、１ビット「完全ダーティ」フラグを用いて、特定のキャッシュメモリラインが完全にダーティであるか否かを指示することができる。したがって、完全にダーティなキャッシュメモリラインの場合、そのダーティマスクは、他の要求のために利用可能とすることができる。たとえば、完全にダーティなキャッシュメモリラインのためのダーティマスクは、完全には書き込まれていない（たとえば、完全にはダーティでない）別のキャッシュメモリラインを指示するように再割り振りのために利用可能とすることができる。キャッシュメモリラインの完全にダーティなステータスは、先に言及されたフルフラグによって指示され得る。その場合に、完全にダーティなキャッシュメモリラインに関して、そのキャッシュメモリライン内のすべてのバイトがダーティであるので、そのキャッシュメモリラインのためにもはやダーティマスクは必要とされない。したがって、この例では、ダーティであるバイトを把握するのにマスクは不要である。
【００２８】
[0033]バイトダーティマスクの他の用途と、本開示の提案された技法のうちのいくつかの技法の例との比較のために、それぞれが１Ｋバイトデータを有するキャッシュメモリハッシュ１２８キャッシュメモリラインを仮定する。他の技法を用いてバイトダーティマスクを記憶するとき、各キャッシュメモリラインは１０２４ビットダーティバイトマスク（ＤｉｒｔｙＢｙｔｅＭａｓｋ）を必要とし、それは、上記の表１に示されるように、１２８Ｋビットレジスタを必要とする。
【００２９】
[0034]本開示において提案された技法によれば、一例において、各キャッシュメモリラインは、１ビット「完全ダーティ」フラグを用いて、特定のキャッシュメモリラインが完全にダーティであるか否かを指示することができる。特定のキャッシュメモリラインが完全にはダーティでない場合には、３ビットインデックス（以下の表２において３ビットＤｉｒｔｙＢｕｆｆｅｒＩｎｄｅｘと呼ばれる）が、どのバッファが特定のキャッシュメモリラインのためのダーティバイトマスク（ＤｉｒｔｙＢｙｔｅＭａｓｋ）を記憶しているかを指示することになる。キャッシュメモリラインの大部分がダーティでないか、または完全にダーティであると仮定すると、８エントリバッファ（ＤｉｒｔｙＢｕｆｆｅｒ）が、１２８キャッシュメモリラインを有するキャッシュとともに用いるのに十分に大きい場合がある。
【００３０】
[0035]バッファ内の各エントリは１ｋビットフラグと、８ｋビットレジスタを備えることができる８エントリダーティバッファ（ＤｉｒｔｙＢｕｆｆｅｒ）とを記憶することができる。一例では、図２に示されるように、タグ（Ｔａｇ）内のキャッシュメモリラインごとに４つの余分なビットが用いられる。１２８キャッシュメモリラインの全ビットコストは、４ビット*１２８＝５１２ビットである。８ｋビットダーティバッファ（ＤｉｒｔｙＢｕｆｆｅｒ）と組合せて、データコヒーレンシを追跡する、すなわち、どのバイトがダーティであり、どのバイトがダーティでないかを追跡するために用いられる全ビット数は８．５ｋビットであり、それは、先に言及された他の方式においてバイトダーティマスクを記憶するために必要とされる１２８ｋビットよりはるかに少ない。表２に示されるキャッシュメモリラインは、キャッシュメモリ内のそのデータに対応するデータを含むメインメモリ（または何らかのさらに高いレベルのメモリ）内のアドレスを指示するタグも含む。たとえば、タグは、プロセッサによって読み出されるために特定のキャッシュライン上に記憶されたデータが入手可能でもある、メインメモリ内のアドレスを指示することができる。
【表２】
0006009688.tif 000003
【００３１】
[0036]図１は、プロセッサ１２と、キャッシュメモリ１４と、メインメモリ１６とを含む例示的な処理システム１０を示すブロック図である。プロセッサ１２は、マイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、中央処理ユニット（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）または他のプロセッサとすることができる。さらに、プロセッサ１２は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）、および処理機能を実施する他のデジタルロジックのような、デジタルロジックを含むことができる。プロセッサ１２は、これらの１つまたは複数の組合せを含むことができる。たとえば、プロセッサ１２は、ＧＰＵ、および処理機能を提供する他のロジックを含むことができる。いくつかの例では、プロセッサ１２は、複数のＣＰＵ、複数のＤＳＰ、１つまたは複数のＣＰＵおよびＤＳＰの組合せ、またはＣＰＵ、ＤＳＰ、ＧＰＵ、ＦＰＧＡ、ＣＰＤＬもしくは他の処理ロジックの他の組合せのような、１つまたは複数のプロセッサとすることができる。
【００３２】
[0037]プロセッサ１２は、そうでなければ、メインシステムメモリとすることができるメインメモリ１６にアクセスするのに必要とすることになっていた平均メモリアクセス時間を短縮するために、一時的なデータ読み出しおよび書き込みのためのキャッシュメモリ１４を用いることができる。キャッシュメモリ１４は、メインメモリ１６と比べて小さくすることができ、たとえば、少ないデータ記憶量を有することができる。キャッシュメモリ１４は、メインメモリ１６に比べて、高速のメモリとすることもできる。たとえば、キャッシュメモリ１４からの読み出しを完了するのに要するクロックサイクルは、メインメモリ１６からの読み出しより少なくすることができる。いくつかの例では、キャッシュメモリは、破線２４によって指示されるように、プロセッサ１２と同じチップ上に存在することができる。他の例では、キャッシュメモリは、プロセッサ１２に隣接することができる別のチップ内に存在することができる。いくつかの例では、キャッシュメモリ１４は、複数のプロセッサに対応することができる。また、キャッシュメモリ１４は、レベル１キャッシュおよびレベル２キャッシュの両方のような、複数の階層レベルを含むこともできる。キャッシュメモリ設計において、一般的に、レイテンシとヒットレートとの間にトレードオフが存在する場合がある。大きいキャッシュほど、良好なヒットレートを有するが、レイテンシが長い場合がある。このトレードオフに対処するために、数多くのシステムが複数のキャッシュレベルを使用する場合があり、小さな高速のキャッシュが大きな低速のキャッシュによってバックアップされている。マルチレベルキャッシュは、一般的に、全体として最も小さなレベル１（Ｌ１）キャッシュを最初にチェックすることによって動作することができる。レベル１キャッシュがヒットを有する場合には、プロセッサは続行する。小さい方のキャッシュがミスする場合には、一般的に、次に大きいキャッシュ（Ｌ２）がチェックされ得る。これが、メインメモリ１６がチェックされ得るまで、キャッシュレベルを徐々に上げながら継続する。
【００３３】
[0038]さらに、キャッシュメモリ１４は、メインメモリ１６の頻繁に使用される記憶場所からのデータのコピーを記憶することができる。大部分のメモリアクセスがキャッシュメモリ１４にキャッシュされる限り、メモリアクセスの平均レイテンシは、メインメモリ１６のレイテンシより、キャッシュメモリ１４のレイテンシに近くすることができる。メインメモリ１６の読み出しおよび書き込みに比べて、キャッシュメモリ１４の読み出しおよび書き込みのパーセンテージが高いほど、キャッシュメモリ１４およびメインメモリ１６を用いるシステムのメモリアクセス性能が一般的に高くなることは理解されよう。
【００３４】
[0039]メインメモリ１６は、一般的に、ランダムアクセスメモリ（ＲＡＭ）または他のタイプの揮発性コンピュータメモリとすることができる。いくつかの例では、メインメモリ１６は、ＲＡＭおよびリードオンリーメモリ（ＲＯＭ）の両方が混在するメモリとすることができる。場合によっては、たとえば、実行可能コードが記憶される必要があるが、データがほとんど、またはまったく記憶される必要がない場合には、メインメモリ１６は不揮発性メモリ（たとえば、ＲＯＭ）とすることができる。最小限のデータ量が記憶される必要がある場合、別のメモリが用いられる場合があるか、レジスタが用いられる場合があるか、キャッシュメモリ１４が用いられる場合があるか、または他のタイプの記憶装置が用いられる場合がある。種々の例において、メインメモリ１６は、たとえば、システムバス２６を介して、プロセッサ１２に結合され得る。メインメモリ１６は、一般的に、キャッシュメモリ１４より高いレベルのメモリとみなされる。一般的に、メインメモリ１６は、キャッシュメモリ１４と比べて大きく、たとえば、より大量のデータ記憶量を有することができる。さらに、一般的に、メインメモリ１６は、キャッシュメモリ１４に比べて低速である。たとえば、プロセッサ１２がメインメモリ１６に対してデータの読み出しまたは書き込みを行うのにかかる時間は、キャッシュメモリ１４に対してデータの読み出しまたは書き込みを行うのにかかる時間より長い場合がある。
【００３５】
[0040]図示される例では、プロセッサ１２は、キャッシュメモリ１４に結合され、プロセッサ１２によるキャッシュメモリ１４への読み出しおよび書き込みを可能にする。さらに、プロセッサ１２はメインメモリ１６に結合され、プロセッサ１２によるメインメモリ１６への読み出しおよび書き込みを可能にする。本明細書において記述される技法は、キャッシュメモリ１４およびメインメモリが、本明細書において記述される技法とともに用いられ得るプロセッサ１２を通してのみ結合されるメモリ構成に適用され得る。さらに、図示される例では、プロセッサ１２が介在することなく、メインメモリ１６とキャッシュメモリ１４との間でデータを転送できるようにするために、メインメモリ１６がキャッシュメモリ１４に結合され得る。たとえば、データ転送コントローラ２２が、このデータ転送を制御することができる。図示されるように、データ転送コントローラ２２は、メインメモリ１６およびキャッシュメモリ１４の外部に存在することができる。他の例では、データ転送コントローラ２２は、メインメモリ１６またはキャッシュメモリ１４の一部とすることができる。また、データ転送コントローラ２２が、メインメモリ１６およびキャッシュメモリ１４内の構成要素を、またはメインメモリ１６およびキャッシュメモリ１４内の構成要素とこれらのデバイスの外部にある構成要素とを含むこともできる。いくつかの例では、キャッシュコントローラ２０およびデータ転送コントローラ２２は単一のコントローラとすることができる。他のメモリ構成も可能であることは理解されよう。たとえば、キャッシュがメインメモリに接続されるが、プロセッサに接続されない場合があるか、またはキャッシュがプロセッサに接続されるが、メインメモリに接続されない場合がある。別の例では、複数の、より高いレベルのメモリを備えるシステムが、本明細書において記述される技法とともに用いられる場合がある。たとえば、いくつかのシステムは、プロセッサ１２と同じチップ上に第１のレベルのキャッシュを有し、プロセッサ１２およびメインメモリ１６のチップ外に第２のレベルのキャッシュ（図示せず）を有することができる。一般的に、任意のキャッシュメモリ、たとえば、第１のレベルのキャッシュ、オプションの第２のレベルのキャッシュなどは、メインメモリ１６とは別のメモリデバイスであり、一般的にメインメモリ１６と同じチップ上に存在しない。
【００３６】
[0041]一例では、キャッシュメモリ１４はバイト書き込み可能キャッシュであり、そのキャッシュは、もしあるなら、プロセッサ１２がデータをどのバイトに書き込んだか、どのバイトに書き込んでいないかを追跡するための種々の態様を含む。キャッシュメモリ１４は、キャッシュメモリラインごとに専用のマスクを使用しない。むしろ、一例では、キャッシュメモリ１４では、キャッシュ全体が、ダーティマスク空間１８内のダーティマスクのプールを共有する。ダーティバイトマスクまたはフラグのプールは、必要に応じて、キャッシュメモリ１４の異なるラインに割り振り可能である。一般的に、そのようなキャッシュアーキテクチャは、キャッシュメモリラインごとに１つのダーティマスクを含むキャッシュシステムより、使用する記憶場所を少なく、使用する電力を少なく、そして、使用する面積を少なくすることができる。ダーティラインのプールを共有することによって、使用される全記憶場所を少なくすることができる。
【００３７】
[0042]図１に示されるように、ダーティマスク空間１８内のダーティマスクのプールは、キャッシュメモリ１４の一部に記憶され得る。したがって、ダーティマスク空間１８内のダーティマスクのプールは、キャッシュメモリ１４と同じ物理的部品の一部とすることができる。しかしながら、他の例では、ダーティマスク空間１８内のダーティマスクのプールは、キャッシュメモリとは別のメモリまたは別の物理的部品に記憶され得る。この別の記憶場所は、本出願の技法を実行できるようにするために、キャッシュメモリ１４に結合され得る。先に論じられたように、ダーティマスクの数は、キャッシュメモリ１４内のキャッシュメモリラインの数より少なくすることができる。たとえば、１０００キャッシュメモリラインを有するキャッシュメモリ１４が、２０のダーティマスクしか使用しない場合がある。
【００３８】
[0043]ダーティマスク空間１８内のダーティマスクは、バイトが「ダーティ」であるときを指示する。最後のシステムメモリ転送後に値を書き込まれたとき、そのバイトはダーティである。書き込まれた値は、一般的に、メインメモリ１６内の対応する値とは異なることになる。言い換えると、そのバイト内に記憶された値がメインメモリ１６内の対応する記憶場所に記憶される値と同じでない可能性が高いような値を書き込まれたときに、バイトはダーティである。逆に、そのバイト内に記憶された値がメインメモリ１６内の対応する記憶場所に記憶される値と一致するとき、すなわち、最後のシステムメモリ転送以降に、書き込まれていないことがわかっているとき、そのバイトはダーティではない。種々の例示的なシステムは、キャッシュメモリ内の特定のバイトが、メインメモリ１６内に記憶される対応する値とは異なる値を記憶しているか否かを把握しないことは理解されよう。むしろ、キャッシュメモリ内のそのバイトへの書き込みが、最後のシステムメモリ転送後に生じる場合には、その値は、メインメモリ１６内の対応する記憶場所に記憶された値ともはや一致しないと仮定され得る。一般的に、キャッシュメモリラインの特定のバイトがダーティであるが、そのキャッシュメモリラインのすべてのバイトがダーティでないとき、ダーティマスク空間１８内のダーティマスクによって、システムは、ダーティであるバイトと、ダーティでないバイトとの区別できるようになる。特定のキャッシュメモリライン内のバイトがいずれもダーティでない場合には、そのキャッシュメモリラインのためにダーティマスクは不要であり、少なくともその特定の時点では不要である。他の時点では、そのキャッシュメモリラインの１つまたは複数のバイトがダーティである場合がある。したがって、その時点で、ダーティマスク空間１８内のダーティマスクが使用され得る。一方、特定のキャッシュメモリラインのすべてのバイトがダーティであるとき、そのキャッシュメモリラインのためのダーティマスクも不要である。再び、これは、少なくともその特定の時点に関して当てはまる場合がある。さらに、完全ダーティフラグが、キャッシュメモリライン内の各バイトがダーティであることをすでに指示している場合があるので、どの特定のバイトがダーティであるかを追跡する必要はない。この態様が、以下に論じられる図４Ａおよび図４Ｂの例に関して詳細に説明される。
【００３９】
[0044]いくつかの例では、キャッシュメモリ１４およびダーティマスク空間１８は、キャッシュコントローラ２０によって制御され得る。キャッシュコントローラ２０は、それぞれのキャッシュメモリラインへの書き込みがそのキャッシュメモリラインへのフル書き込みでないときに、キャッシュメモリラインのそれぞれにダーティマスクのうちの１つを割り振るように構成され得る。一例では、ダーティマスクはそれぞれ、キャッシュメモリラインの１つにおけるデータユニットのダーティ状態を指示する。さらに、キャッシュコントローラ２０は、ダーティマスクを、そのダーティマスクが割り振られるキャッシュメモリラインと関連付ける識別（ＩＤ）情報を記憶することができる。
【００４０】
[0045]キャッシュコントローラ２０は、デジタル論理回路、プロセッサ、または本開示の種々の態様を実施することができる他の回路とすることができる。キャッシュコントローラ２０は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せを含むことができる。さらに、キャッシュコントローラ２０は、キャッシュ１４の内部にあるように示されるが、他の例では、キャッシュコントローラ２０のすべて、または一部がキャッシュメモリ１４とは別に存在することができる。他の例では、プロセッサ１２が、キャッシュメモリ１４の機能を制御し、制御機能を実施するために使用され得る。
【００４１】
[0046]本開示の態様を実施するデバイス、システムおよび方法は、一連のバイトが「完全にダーティ」であるか否かを追跡することもできる。その場所内の個々のバイトがダーティであるとき、キャッシュメモリ１４内のバイトは完全にダーティである。キャッシュ記憶場所内の個々のバイトがダーティである（その場所が完全にダーティである）場合には、どの個々のバイトがダーティであるかを把握するために、その場所に対してダーティマスク空間１８内のダーティマスクを使用する必要はない。これも、以下に論じられる図４Ａおよび図４Ｂの例に関してさらに詳細に説明される。
【００４２】
[0047]図１に示されるシステムは、一連のキャッシュメモリラインを含む、キャッシュメモリ１４を含むメモリシステムを実現するように構成され得る。各キャッシュメモリラインは、完全ダーティフラグおよびダーティバッファインデックスを含むことができる。キャッシュメモリシステムを含む処理システム１０は、ダーティマスク空間を含むダーティバッファも含むことができる。そのキャッシュメモリラインへの書き込みがその特定のキャッシュメモリラインへのフル書き込みでないときに、特定のキャッシュメモリラインにダーティマスク空間が割り振られる場合があり、ダーティマスク空間がアクセスされ得るように、その特定のキャッシュメモリラインに、割り振られたダーティマスク空間の識別情報（ＩＤ）がアタッチされる。
【００４３】
[0048]図２は、本開示の技法を実施することができる例示的な図１のキャッシュメモリ１４を示すブロック図である。キャッシュメモリ１４は、データと、そのデータに関連付けられる種々の他の情報とを記憶するためのいくつかのキャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２を含むことができる。たとえば、キャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２は、キャッシュメモリライン内のデータが有効であるか否かを指示するフラグを含むことができる。キャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２は、そのキャッシュ内のそのデータに対応するメインメモリ内のアドレスを指示するタグも含むことができる。例示のために少数のキャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２が示されるが、通常は非常に多くの数のキャッシュメモリラインは存在することは理解されよう。メインメモリ１６内のデータともはや一致しないように、データ内の任意のバイトが書き込まれたか否かを指示するために、各キャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２とともにダーティフラグが含まれ得る。
【００４４】
[0049]さらに、キャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２のうちの１つのすべてのバイトがダーティであるか否かを指示するために、キャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２とともに完全ダーティフラグが含まれ得る。これは、たとえば、プロセッサ１２がキャッシュメモリライン内のすべてのバイトに書き込みを行い、キャッシュメモリライン内のすべてのバイトが、メインメモリ１６内の対応する記憶場所内のデータ値と異なる値を含むときに生じる場合がある。
【００４５】
[0050]キャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２は、キャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２がダーティであるが、完全にはダーティでないときに、ダーティマスク空間１０８内のダーティマスク内の場所へのポインタとしての役割を果たすダーティバッファインデックスも含むことができる。キャッシュメモリラインが完全にダーティであるとき、どのバイトがダーティであるかを追跡するために、一連のフラグまたはマスクを使用する必要はない。これは、すべてのバイトがダーティであるためである。したがって、キャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２が完全にダーティであるとき、ダーティマスク空間１０８に記憶されるそのキャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２に対応する任意の場所は、別のキャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２に割り振られ得る。したがって、ダーティマスク空間１０８の複数の部分が、ダーティであるが、完全にはダーティでないキャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２に動的に割り振られ得る。さらに、ダーティマスク空間１０８は、完全にダーティであるか、またはまったくダーティでない任意のキャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２から動的に割り振り解除され得る。言い換えると、その特定のキャッシュメモリライン内のデータが完全にダーティであるか、またはダーティでないとき、そのキャッシュメモリラインについての情報が、ダーティマスク空間１０８から追い出され得る。キャッシュメモリラインが追い出された後に、この情報によって使用された空間は、別のキャッシュメモリラインのために再度割り振りされ得る。
【００４６】
[0051]さらに他の場合には、たとえば、キャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２のうちの１つまたは複数がダーティでなく、かつ一度もダーティでなかった場合には、ダーティマスク空間１０８が、キャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２のうちの１つまたは複数に一度も動的に割り振られてこなかった場合がある。代替的には、１つまたは複数のキャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２は完全にダーティであった場合があり、一度もダーティでなかった場合がある。これは、たとえば、キャッシュメモリライン全体、たとえば、キャッシュメモリライン内の各バイトが、そのキャッシュメモリラインがキャッシュメモリラインへの一度の書き込みにおいて、ダーティでない状態から完全にダーティである状態に移行するように一度に書き込まれるときに生じる場合がある。
【００４７】
[0052]図２に示されるキャッシュメモリ１４は、メモリシステムを実現するように構成され得る。キャッシュメモリ１４は、一連のキャッシュメモリラインを含むことができる。各キャッシュメモリラインは、完全ダーティフラグおよびダーティバッファインデックスを含むことができる。さらに、キャッシュメモリ１４は、ダーティマスク空間を含むダーティバッファも含むことができる。他の例では、ダーティバッファは、キャッシュメモリ１４の外部に存在することができる。そのキャッシュメモリラインへの書き込みがその特定のキャッシュメモリラインへのフル書き込みでないときに、特定のキャッシュメモリラインにダーティマスク空間が割り振られる場合があり、ダーティマスク空間がアクセスされ得るように、その特定のキャッシュメモリラインに、割り振られたダーティマスク空間の識別情報（ＩＤ）がアタッチされる。
【００４８】
[0053]図３は、例示的なキャッシュメモリライン１１０を示すブロック図であり、そのキャッシュメモリラインは、本開示の技法を実施することができる、図２のキャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２のうちの１つである。キャッシュメモリライン１１０は、キャッシュメモリライン内のデータが有効であるか否かを指示する有効フラグ３００を含む。また、キャッシュメモリライン１１０は、キャッシュメモリ１４内のデータに対応するデータ、すなわち、キャッシュメモリ１４内のプロセッサ１２も入手可能であるメインメモリ１６データを含むメインメモリ１６内のアドレスを指示するタグ３０２も含む。また、データ３０４はキャッシュメモリライン１１０の一部でもあり、たとえば、データ３０４のうちの３つのデータバイト３０６、３０８、３１０を含むことができる。他の例では、それより多いバイトまたは少ないバイトも可能である。
【００４９】
[0054]図示される例では、データ内の任意のバイトが、メインメモリ１６内のデータともはや一致しない場合があるように書き込まれたか否か、たとえばプロセッサ１２がキャッシュメモリライン１１０に新しい値を書き込んだか否か、を指示するために、ダーティフラグ３１２が使用され得る。プロセッサ１２は、すでに存在しているデータ値と同じデータ値をキャッシュメモリラインに書き込むこともできるが、一般的には、それらの値は同じでないことは理解されよう。さらに、一般的に、これらの技法を実施するシステムは、実際には、値が変化したか否かを確認するためにチェックしない場合がある。むしろ、「ダーティ」または「完全ダーティ」のような状態は、種々の書き込みが生じるときに想定される場合がある。キャッシュメモリラインの１つまたは複数のバイトに記憶される値が変化し、これらの値がメインメモリ１６内の対応する１つまたは複数の場所に記憶される値ともはや同じでないときはいつでも、変更されたバイトは「ダーティ」である。キャッシュメモリライン内のバイトのすべてではないが、いくつかがダーティであるとき、そのシステムは、ダーティである特定のバイトを指示するマスクを用いて、どのバイトがダーティであるかを追跡することができる。マスクは、ダーティマスク空間１８内の記憶場所のプールのうちの１つの記憶場所に記憶され得る。
【００５０】
[0055]キャッシュメモリライン１１０内のすべてのバイトがダーティであるか否かを指示する完全ダーティフラグ３１４が含まれる場合がある。この場合、もしキャッシュメモリライン１１０が、完全にダーティであるなら、ダーティマスク空間１８内のダーティバッファマスクを有する必要はない。キャッシュメモリライン１１０がダーティであるが、完全にはダーティでないとき、キャッシュメモリライン１１０は、ダーティマスク空間１８内の場所へのポインタとしての役割を果たすダーティバッファインデックス３１６も含むことができる。
【００５１】
[0056]図３に示されるように、いくつかの例では、各キャッシュメモリライン１１０の状態を指示するために、ダーティフラグ３１２および完全ダーティフラグ３１４が使用され得る。他の例では、キャッシュメモリラインがダーティでないことを指示する「クリーン」フラグおよび完全ダーティフラグが使用され得る。一般的に、クリーンフラグは、ダーティフラグ３１２の逆とすることができる。他の例は、クリーンフラグ、ダーティフラグおよび完全ダーティフラグを含むことができる。
【００５２】
[0057]キャッシュメモリライン１１０が完全にダーティであるとき、一連のフラグまたはマスクを用いて、どのバイトがダーティであるかを追跡する必要はないことは理解されよう。これは、すべてのバイトがダーティであるためである。すべてのバイトがダーティであるとき、単一の「完全ダーティ」フラグが、どのバイトがダーティであるかを判断するのに十分な情報を提供する。ダーティマスク空間１８内に記憶される、どのバイトがダーティであるかを指示する任意のマスクは、別のキャッシュメモリラインによって使用され得る。したがって、キャッシュメモリライン１１０が完全にダーティであるとき、ダーティマスク空間１８内に記憶されるそのキャッシュメモリライン１１０に対応する任意の場所が、ダーティバイトを指示するために、別のキャッシュメモリラインに割り振られ得る。したがって、ダーティマスク空間１８は、ダーティであるが、完全にはダーティでないキャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２に動的に割り振られ得る。ダーティマスク空間１８は、完全にダーティであるか、またはまったくダーティでない任意のキャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２から動的に割り振り解除され得る。
【００５３】
[0058]たとえば、キャッシュメモリラインに記憶されるダーティマスクとアタッチされたキャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２にヒットする任意の書き込み要求が、対応するダーティマスクの更新を引き起こす場合がある。ダーティマスクが更新される場合には、検出ロジックが、ダーティマスクがすべて１であるか否か、すなわち、キャッシュメモリライン内のバイトごとに「１」が存在するか否かを検出することができる。ダーティマスクがすべて１であると、キャッシュメモリラインは完全にダーティである。したがって、完全ダーティフラグ３１４を設定して、キャッシュメモリラインが「完全にダーティ」であることを指示することによって、キャッシュメモリライン１１０からダーティマスクが切り離され（be de-attached）得る。キャッシュメモリライン内の各バイトが、メインメモリ内の対応するバイトと同じデータを含まないように書き込まれたとき、キャッシュメモリラインは完全にダーティである。この時点で、キャッシュメモリライン全体が、メモリ階層内の次に最も高いメモリ、たとえば、メインメモリ１６に書き込まれる必要がある。言い換えると、メモリ階層内の次に最も高いメモリが最新でないようにキャッシュメモリライン全体が書き込まれたとき、キャッシュメモリラインは完全にダーティである。各キャッシュメモリラインは１ビット「完全ダーティ」フラグを用いて、特定のキャッシュメモリラインが完全にダーティであるか否かを指示することができる。したがって、完全にダーティなキャッシュメモリラインの場合に、そのダーティマスクは、完全には書き込まれていない別のキャッシュメモリラインを指示するように再度割り振るために利用することができる。キャッシュメモリラインの完全にダーティなステータスは、完全ダーティフラグによって指示され得る。その場合に、完全にダーティなキャッシュメモリラインに関して、そのキャッシュメモリライン内のすべてのバイトがダーティであるので、そのキャッシュメモリラインのためにもはやダーティマスクは必要とされない。ダーティであるバイトを把握するためにマスクは不要である。
【００５４】
[0059]図３に示されるように、キャッシュメモリラインは、完全ダーティフラグ３１４およびダーティバッファインデックス３１６を含むように構成され得る。ダーティマスク空間１８はキャッシュメモリ１４の一部、または別のメモリデバイスとすることができ、そのキャッシュメモリライン１１０への書き込みが特定のキャッシュメモリラインへのフル書き込みでないときに、その特定のキャッシュメモリライン１１０に割り振られ得る。ダーティマスク空間１８がアクセスされ得るように、その特定のキャッシュメモリライン１１０に、割り振られたダーティマスク空間の識別情報（ＩＤ）がアタッチされる。
【００５５】
[0060]図４Ａおよび図４Ｂは、本開示の技法を用いるキャッシュメモリ１４内のデータ処理の一例を示す概念図である。図４Ａは、５つの異なる時点にわたる単一のキャッシュメモリライン１１０内の値を示す。時点０は初期状態を示す。時点１〜３は、キャッシュメモリライン１１０への種々のデータ書き込みを示す。提案される方式は、たとえば、読み出し−割り振り−書き込み方式に比べて、システムメモリ読み出しバンド幅を節約することができる。時点４は、キャッシュメモリラインが完全にダーティになり、各バイトがダーティであるため、どのバイトがダーティであるかをもはや追跡する必要がないので、キャッシュメモリライン７７７についての情報がダーティバイトマスクにもはや記憶されないような、アドレス７２３からの読み出しと、キャッシュライン７７７の追い出しとを示す。ダーティマスク空間１８内の単一のアドレスおよびメインメモリ１６内の単一のアドレスのための値と、５つの異なる時点においてこれら値がいかに変化するかが図４Ｂに示される。
【００５６】
[0061]論じられたように、５つの異なる時点が示される。これらの５つの異なる時点は、時点０から時点４である。時点０は初期状態である。時点０において、キャッシュメモリライン１１０にデータは書き込まれていない。一般的に、時点０において、種々のフラグおよびデータレジストの値が何であるかは特に重要でない場合がある。
【００５７】
[0062]その後、メインメモリ１６からキャッシュメモリライン１１０にデータが書き込まれ得る。図示される例では、キャッシュメモリ１４がプロセッサ１２から書き込み要求を受信するとき、メインメモリ１６内のデータが何であるかわからないので、その時点では、データをフェッチ（fetch）しない。むしろ、プロセッサ１２によって必要とされるのに応じて、データは１バイトずつキャッシュメモリ１４に書き込まれ得る。データが実際にこれまで一度も必要とされていない場合には、キャッシュメモリ１４に書き込まれない。これは、メインメモリ１６からキャッシュメモリ１４への読み出しバンド幅を節約することができる。このデータは、時点１、２および３において書き込まれるのに応じて、１バイトずつキャッシュメモリライン１１０に記憶される場合があり、プロセッサ１２によって読み出されるか、または書き込まれ得る。時点１、２および３において、後にさらに詳細に論じられるように、データ３０４は種々の方法において変更される。時点４では、メインメモリ１６およびキャッシュメモリライン１１０が再び同じデータを記憶するように、データ３０４が、キャッシュメモリライン１１０からメインメモリ１６にライトバックされる。その時点で、キャッシュメモリライン１１０は追い出される場合があり、アドレス７２３からのデータが、キャッシュメモリライン１１０に書き込まれ得る。プロセッサ１２によって必要とされるので、そのデータはキャッシュメモリライン１１０に書き込まれ得る。
【００５８】
[0063]図４Ａの例に示されるように、時点０では、一般的に、キャッシュメモリライン１１０内のデータはいずれも「ドントケア（ｄｏｎ’ｔ  ｃａｒｅ）」である。それらの値は、何らかの初期状態とすることができるか、またはキャッシュメモリライン１１０への以前の書き込みからの不要データとすることができる。「ドントケア」は「Ｘ」によって示される。大文字「Ｘ」は、１６進数値（それぞれ４ビット）を示し、小文字「ｘ」は個々のビットを示す。したがって、有効フラグ３００、ダーティフラグ３１２および完全ダーティフラグ３１４は、この例では、個々のビットである。別の例では、時点０において記憶された値は既知の有効値であったが、単純に、処理のためにもはや不要である場合もある。
【００５９】
[0064]図４Ａの例において示されるように、タグ３０２は３つの１６進数値（全１２ビット）を含む。タグ３０２は、そのキャッシュメモリライン内に現在記憶されているデータが由来するメインメモリ１６内のアドレスを指示する。ダーティバッファインデックス３１６は、３つの２進数値を含む。ダーティバッファインデックス３１６は、どのバイトがダーティであるかを指示するマスクへのポインタとしての役割を果たす。
【００６０】
[0065]データ３０４は３つのデータバイトを含む。各データバイト３０６、３０８、３１０は２つの１６進数値である。１バイトは８ビットであり、各１６進数値は４ビットを表す。図示される例におけるダーティマスク空間１８内の各アドレスは３ビットを含む。図示される例におけるメインメモリ１６は、６つの１６進数値（全部で２４ビット）を含む。
【００６１】
[0066]図４Ａおよび図４Ｂの図示される例は、読み出し−割り振り−書き込み方式ではない。したがって、図４Ａおよび図４Ｂの例では、初期データ値はプロセッサ１２によって必要とされないので、その図は、キャッシュメモリ１４に書き込まれるデータを示さない。読み出し−割り振り−書き込みの例では、有効データがメインメモリ１６からキャッシュメモリ１４に書き込まれる場合があり、より具体的には、データはキャッシュメモリ１４のキャッシュメモリライン１１０に書き込まれる場合がある。したがって、有効フラグ３００は「１」である。タグ３０２は、そのデータが由来するメインメモリ１６内のアドレスが、「７７７」を指示するであろう。そのような例では、メインメモリ１６、アドレス７７７はデータ「ＡＡ  ＡＡ  ＡＡ」を含むことになる。
【００６２】
[0067]時点１では、データ３０４は変更される。より具体的には、データバイト３０８は、先行する値から「００」に変更される。これは、たとえば、プロセッサ１２が実行しているプロセスの一部としてプロセッサ１２によって、またはメインメモリ１６からキャッシュメモリ１４へのダイレクトメモリ転送によって行われる場合がある。したがって、データ３０４は、「１」の値を含むダーティフラグ３１２によって指示されるように「ダーティ」である。３つのデータバイト３０６、３０８、３１０のうちの１つのみがダーティであり、具体的には、データバイト３０８がダーティである。キャッシュメモリライン１１０は「完全にダーティ」ではなく、完全ダーティフラグ３１４は「０」の値を含む。キャッシュメモリライン１１０は「ダーティ」であるが、「完全にダーティ」ではないので（先に論じられた第２の状態）、バイト書き込み可能キャッシュメモリ１４のどのバイトがダーティであるかを判断するために、ダーティバッファマスクが必要とされる。たとえば、ダーティバイトを指示するビットがダーティマスク空間１８に記憶され得る。ダーティバッファインデックス３１６は「１０１」の値を含む。この値は、ダーティマスク空間１８内のアドレスへのポインタである。図４Ｂには、ダーティマスク空間１８のアドレス「１０１」が示されており、時点１において、ダーティマスク空間１８のアドレス「１０１」（５）は「０１０」の２進数値を含む。これは、データバイト３０８が、ダーティであり、「０１０」内の「１」によって指示されることを示す。「０１０」内の最初の「０」は、データバイト３０６がダーティでないことを指示し、「０１０」内の第２の「０」は、データバイト３１０がダーティでないことを指示する。したがって、図４Ｂの図示される例では、ダーティマスク空間１８、アドレス「０１０」内の各ビットは、データ３０４の特定のデータバイト３０６、３０８、３１０のダーティ状態を追跡するために使用され得る。
【００６３】
[0068]図４Ａに示されるように、時点２において、データ３０４は変更される。より具体的には、データバイト３０６が、その先行する値から「ＦＦ」に変更される。データ３０４は、「１」の値を含む、ダーティフラグ３１２によって示されるように、依然として「ダーティ」である。３つのデータバイト３０６、３０８、３１０のうちの２つだけがダーティであり、具体的には、データバイト３０６および３０８がダーティである。キャッシュメモリライン１１０は「完全にダーティ」ではなく、完全ダーティフラグ３１４は「０」の値を含む。キャッシュメモリライン１１０は「ダーティ」であるが、「完全にダーティ」ではないので（再び、先に論じられた第２の状態）、バイト書き込み可能キャッシュメモリ１４のどのバイトがダーティであるかを判断するために、ダーティバッファマスクが必要とされる。たとえば、ダーティバイトを指示するビットがダーティマスク空間１８に記憶され得る。ダーティバッファインデックス３１６は「１０１」の値を含む。この値は、ダーティマスク空間１８内のアドレスへのポインタである。図４Ｂには、ダーティマスク空間１８のアドレス「１０１」が示されており、時点２において、ダーティマスク空間１８のアドレス「１０１」は「１１０」の２進数を含む。これは、データバイト３０６、３０８がダーティであり、「１１０」内の「１」によって示されることを示す。「１１０」内の「０」は、データバイト３１０がダーティでないことを指示する。図４Ｂの図示される例では、ダーティマスク空間１８、アドレス「１０１」内の各ビットは、データ３０４の特定のデータバイト３０６、３０８、３１０のダーティ状態を追跡するために使用され得る。
【００６４】
[0069]図４Ａに示されるように、時点３において、データ３０４が再び変更される。より具体的には、データバイト３１０は、先行する値から「８８」に変更される。データ３０４は、「１」の値を含むダーティフラグ３１２によって示されるように「ダーティ」である。しかしながら、この時点で、３つのデータバイト３０６、３０８、３１０のすべてがダーティである。時点３において、キャッシュメモリライン１１０は「完全にダーティ」である。したがって、完全ダーティフラグ３１４は「１」の値を含む。キャッシュメモリライン１１０は「完全にダーティ」であるので（先に論じられた第３の状態）、バイト書き込み可能キャッシュメモリ１４のどのバイトがダーティであるかを判断するために、ダーティバッファマスクは不要である。キャッシュメモリライン１１０のためのすべてのバイトがダーティである。時点３におけるダーティバッファインデックス３１６内の値は「ドントケア」、すなわち、「ｘｘｘ」である。さらに、ダーティマスク空間１８、アドレス１０１の値は「ドントケア」、すなわち、「ｘｘｘ」である。このマスク空間は、ダーティバイトステータスを追跡するために、別のキャッシュメモリライン１１０、１１２、１１４、１１６、１１８、１２０、１２２に再度割り振りされ得る。
【００６５】
[0070]時点４において、図４Ａに示されるように、データ３０４がメインメモリ１６  アドレス７７７にライトバックされる。したがって、時点４において、メインメモリ１６アドレス７７７内のデータは、「ＦＦ  ００  ８８」である。時点４において、キャッシュメモリライン１１０は、上記の第１の状態にあり、「ダーティではない」。ダーティでない状態では、ビットがいずれもダーティでないので、ダーティマスク空間１８内に記憶されるダーティバッファマスクは不要である。ダーティフラグ３１２は時点４において「０」の値を含み、完全ダーティフラグ３１４も、時点４において「０」の値を含む。言い換えると、キャッシュメモリラインは完全にダーティになっており、各バイトがダーティであるため、どのバイトがダーティであるかを追跡する必要はないので、キャッシュメモリライン１１０についての情報は、ダーティバイトマスクにもはや記憶されない。時点４において、キャッシュメモリライン１１０は、別のメインメモリ１６アドレス、たとえば、アドレス７２３に関連付けられる情報を記憶することができる。
【００６６】
[0071]一例では、上記のように、書き込み要求がフルキャッシュメモリラインに書き込まない場合には、それにダーティマスク空間が割り振られ得る。このキャッシュメモリラインが追い出されるときにマスクがアクセスされ得るように、このキャッシュメモリラインに、割り振られたダーティマスク空間の識別（ＩＤ）がアタッチされ得る。
【００６７】
[0072]一例では、複数のデータバイトのうちの特定のデータバイトを追跡するために、ダーティマスクが使用され得る。そのバイトが、たとえば、メインメモリ内の対応するバイトの値ともはや一致しないように、書き込みを通してデータバイトが変更されたか否かをマークするために、マスク内の特定のビットが使用され得る。
【００６８】
[0073]一例では、マスク内のビットを用いて、複数のデータバイトのそれぞれ１つを個別にマークすることによって、少なくとも１つの書き込みを通してどのバイトが更新されたかを追跡できるようになる。一例では、特定のバイトがダーティであることを指示するために、特定のダーティビットが使用され得る。マスク内の各ビットがアクティブであるか否かを判断することによって、複数のデータバイトのそれぞれ１つが更新されたという判断が行われ得る。
【００６９】
[0074]ダーティマスクを用いることによって、データ要素が更新されたか否かを判断できるようになる。たとえば、すべてのダーティビットに関してブール「ａｎｄ」演算（Boolean 'and' operation）を実行することによって、ダーティマスク内のすべてのダーティビットがダーティであるとマークされたことを検証するために、特定の論理回路が設けられ得る。この時点で、データ要素セットがライトバック候補としてマークされ得る。
【００７０】
[0075]ダーティマスクとアタッチされたキャッシュメモリラインにヒットする任意の書き込み要求が、対応するダーティマスクに対する更新を引き起こすことになる。ダーティマスクが更新されるとき、検出ロジックは、ダーティマスクがすべて１であるか否かを検出することができる。ダーティマスクがすべて１であり、特定のキャッシュライン内のバイトが完全にダーティであることを指示すると、ダーティマスクのＩＤを無効に設定することによって、ダーティマスクはキャッシュメモリラインから切り離され得る。これは、キャッシュメモリラインが完全にダーティであることを指示する。キャッシュメモリライン全体がメモリ階層内の次に最も高いメモリに書き込まれる必要があるとき、キャッシュメモリラインは完全にダーティである。言い換えると、メモリ階層内の次に最も高いメモリが最新でないようにキャッシュメモリライン全体が書き込まれたとき、キャッシュメモリラインは完全にダーティである。各キャッシュメモリラインは１ビット「完全」フラグを用いて、特定のキャッシュメモリラインが完全にダーティであるか否かを指示することができる。したがって、完全にダーティなキャッシュメモリラインの場合に、そのダーティマスクは、完全には書き込まれていない別のキャッシュメモリラインを指示するように再度割り振るために利用することができる。キャッシュメモリラインの完全にダーティなステータスは、完全ダーティフラグによって指示され得る。その場合に、そのキャッシュメモリラインのためにもはやダーティマスクは不要である。
【００７１】
[0076]図５は、本開示の技法による例示的な方法を示す流れ図である。キャッシュメモリ１４が、キャッシュメモリ内のキャッシュメモリラインの状態を追跡することができる（４００）。たとえば、キャッシュコントローラ２０が、キャッシュメモリ１４内のキャッシュメモリラインの状態を追跡することができる。これは、たとえば、そのキャッシュメモリラインへの書き込みが特定のキャッシュメモリライン内のすべてのバイトへのフル書き込みでないときを指示するダーティフラグを用いて行われ得る。したがって、キャッシュメモリラインへの書き込みが生じ、その書き込みが特定のキャッシュメモリライン内のすべてのバイトへのフル書き込みでないとき、キャッシュメモリライン内のバイトのうちのいくつかは、メインメモリ１６内の対応する記憶場所とは異なる場合がある。さらに、キャッシュメモリライン内のバイトのうちのいくつかは、メインメモリ１６内の対応する記憶場所と同じである場合がある。しかしながら、同じキャッシュメモリラインへの後続の書き込みが生じるとき、最終的に、キャッシュメモリライン全体が、メインメモリ１６内の対応する記憶場所とは異なる場合があることは理解されよう。先に論じられたように、最後のメモリ転送後に生じる場合がある１つまたは複数の書き込みは一般的に、キャッシュ内に記憶されるデータを、対応する記憶場所内に記憶されるデータから変更することになる。それにもかかわらず、プロセッサ１２は、１つまたは複数の書き込みが生じた後に、データが実際には変化しないように、キャッシュメモリの中に同じ値を書き込むことが可能である。一般的に、システムは、データが変更されたことを確信するために、データを実際にチェックしない。むしろ、システムは、そのように決めつけ、書き込まれたものに基づいて、適切なダーティフラグ、たとえば、ダーティまたは完全ダーティをマークするだけである。たとえば、キャッシュメモリライン全体への書き込みが生じる場合があるか、またはキャッシュメモリラインへの複数の書き込みが、最終的に、キャッシュメモリライン内の各バイトを変更する場合がある。
【００７２】
[0077]そのキャッシュメモリラインへの書き込みが特定のキャッシュメモリラインへのフル書き込みでないときに、キャッシュメモリは、その特定のキャッシュメモリラインにダーティマスク空間１８を割り振ることができる（４０２）。たとえば、キャッシュコントローラ２０が割り振りを実行することができる。キャッシュコントローラ２０はキャッシュメモリ１４の一部とすることができるか、またはキャッシュメモリ１４とは別にすることができることは理解されよう。したがって、ダーティマスク空間１８内のダーティマスクは、必要に応じて、キャッシュメモリラインに割り振られ、キャッシュメモリラインから割り振り解除され得る。キャッシュラインごとのダーティマスク空間ではなく、ダーティマスク空間１８を用いることは、必要とするメモリを少なくすることができる。
【００７３】
[0078]キャッシュメモリは、ダーティマスク空間がアクセスされ得るように、その特定のキャッシュメモリラインにアタッチされる、割り振られたダーティマスク空間の識別情報（ＩＤ）を追跡することができる（４０４）。たとえば、キャッシュコントローラ２０がＩＤを追跡することができる。したがって、キャッシュメモリライン内のどのバイトがダーティであり、潜在的に、メインメモリ１６内の対応するバイトと同じデータを含まないかを判断するためにダーティマスクが使用され得るように、ＩＤは、キャッシュメモリラインと、割り振られたダーティマスク空間、たとえば、ダーティマスクとの間の結び付き（connection）を与えることができる。
【００７４】
[0079]いくつかの例では、ダーティマスク空間１８内のすべてのダーティマスクがキャッシュメモリラインに割り振られ、更なるダーティマスクが必要とされる場合には、たとえば、対応するキャッシュメモリラインが完全にダーティになる（各バイトがメインメモリ１６内の対応するバイトと異なる）前に、割り振り解除され得る。これが生じる場合には、ダーティマスク空間１０８内のダーティマスクが、特定のキャッシュメモリラインから割り振り解除されるように選択される場合があり、キャッシュメモリライン内のデータは、キャッシュメモリラインがもはやダーティでないように、メインメモリ１６内の対応するメモリにライトバックされ得る。
【００７５】
[0080]本明細書において記述されるシステムおよび方法のいくつかの例は、ダーティマスクを含む一連のキャッシュメモリラインのうちの１つへの書き込み要求が生じるとき、ダーティマスク空間内の対応するダーティマスクに対する更新を引き起こす場合がある。さらに、このキャッシュメモリラインが追い出されたときにダーティマスク空間がアクセスされ得るように、キャッシュは、割り振られたダーティマスク空間のＩＤを特定のキャッシュメモリラインにアタッチすることができる。また、いくつかの例では、キャッシュは、ダーティバッファマスクが割り振られた特定のキャッシュメモリラインを指示することもできる。また、キャッシュは、キャッシュメモリラインの少なくとも１つのバイトがメインメモリ内の対応するバイトと異なることを指示することもできる。
【００７６】
[0081]本明細書において記述される種々の例は、キャッシュメモリ１４が種々の動作を実行できることを示すことができる。いくつかの例では、キャッシュメモリ１４内部のプロセッサ、コントローラまたは他の論理回路がこれらの動作を実行することができることは理解されよう。他の例は、キャッシュメモリ１４内部にはないが、本明細書において記述される機能のうちの１つまたは複数を制御するプロセッサ、コントローラまたは他の論理回路を含むことができる。したがって、動的に割り振られたダーティマスク空間機能は、キャッシュメモリ内部で、キャッシュメモリ外部で、またはこれらの何らかの組合せで実行され得る。それは、ハードウェア回路、ソフトウェアまたはそれらの何らかの組合せによって実行され得る。
【００７７】
[0082]図６は、本開示の技法による例示的な方法を示す別の流れ図である。一例のシステム、デバイスまたは装置が、データを一連のキャッシュメモリラインを含むキャッシュメモリに書き込むことができる（４５０）。各キャッシュメモリラインは、完全ダーティフラグおよびダーティバッファインデックスを含むことができる。完全ダーティフラグは、そのキャッシュメモリラインが「完全にダーティ」であることを指示する。言い換えると、キャッシュメモリラインの各バイトが、メインメモリ１６内の対応するバイトと異なる。
【００７８】
[0083]ダーティバッファインデックスは、ダーティバッファへのアドレスまたはインデックスを含むことができる。たとえば、ダーティバッファインデックスは、ダーティマスクのうちの少なくとも１つが割り振られた少なくとも１つの場所への少なくとも１つのポインタを含むことができる。別の例では、ダーティバッファインデックスは、複数のダーティマスクのうちの１つが割り振られた場所へのポインタを含む。ダーティバッファは、メインメモリ１６内の対応するバイトとは異なるバイトを指示する。
【００７９】
[0084]一例のシステム、デバイスまたは装置が、キャッシュメモリラインへの書き込みが特定のキャッシュメモリラインへのフル書き込みでないときに、その特定のキャッシュメモリラインにダーティバッファ内のダーティマスク空間を割り振ることができる（４５２）。たとえば、一例のシステム、デバイスまたは装置内のキャッシュコントローラ２０が、そのような割り振りを実行することができる。いくつかの例では、キャッシュコントローラ２０はキャッシュメモリ１４の一部とすることができる。他の例では、キャッシュコントローラは別のデバイスとすることができる。さらに、ダーティマスク空間がアクセスされ得るように、その特定のキャッシュメモリラインに、割り振られたダーティマスク空間の識別情報（ＩＤ）がアタッチされる。
【００８０】
[0085]例によっては、本明細書において記述された技法のうちいずれかの、いくつかの作用またはイベントは、異なる順序において実行することができ、追加、融合、または完全に除外され得る（たとえば、記述されるすべての作用またはイベントが、本技法の実施のために必要であるとは限らない）ことを認識されたい。さらに、いくつかの例では、作用またはイベントは、順次にではなく、同時に、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて実行され得る。
【００８１】
[0086]１つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実現され得る。ソフトウェアで実現される場合には、それらの機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶される場合があるか、またはコンピュータ可読媒体を介して送信される場合があり、ハードウェアベースの処理ユニットによって実行される場合がある。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含むことができる。このようにして、コンピュータ可読媒体は、一般に、（１）非一時的である有形コンピュータ可読記憶媒体、または、（２）信号もしくは搬送波などの通信媒体に対応することができる。データ記憶媒体は、本開示に記載された技法を実施するための命令、コードおよび／またはデータ構造を取り出すために、１つもしくは複数のコンピュータ、または１つもしくは複数のプロセッサによってアクセスされ得る任意の入手可能な媒体とすることができる。コンピュータプログラム製品は、コンピュータ可読媒体を含むことができる。
【００８２】
[0087]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは、命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合には、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的な有形記憶媒体を対象とすることを理解されたい。本明細書において用いられるとき、ディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびブルーレイ（登録商標）ディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、一方、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【００８３】
[0088]命令は、１つもしくは複数のデジタル信号プロセッサ（ＤＳＰ）などの１つもしくは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、または他の等価な集積回路もしくはディスクリート論理回路によって実行され得る。したがって、本明細書において用いられるときに、「プロセッサ」という用語は、上記の構造、または本明細書において説明された技法を実施するのに適した任意の他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書において説明された機能は、符号化および復号のために構成された専用のハードウェアおよび／またはソフトウェアモジュール内に設けられる場合があるか、または複合コーデックに組み込まれる場合がある。また、本技法は、１つまたは複数の回路または論理要素において完全に実施され得る。
【００８４】
[0089]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）、またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置において実現され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記のように、適切なソフトウェアおよび／またはファームウェアとともに、様々なユニットがコーデックハードウェアユニットにおいて組み合わせられ得るか、または上記のような１つまたは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合体よって設けられ得る。
【００８５】
［0090]種々の例が説明されてきた。これら例および他の例は、以下の特許請求の範囲内にある。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］複数のキャッシュメモリラインを含むキャッシュメモリと、
複数のダーティマスクを含むダーティバッファと、
それぞれのキャッシュメモリラインへの書き込みがそのキャッシュメモリラインへのフル書き込みでないときに、前記キャッシュメモリラインのそれぞれに前記ダーティマスクのうちの１つを割り振るように構成されるキャッシュコントローラと、
を備える、キャッシュメモリシステムであって、
ここにおいて、前記ダーティマスクのそれぞれは前記キャッシュメモリラインのうちの１つにおけるデータユニットのダーティ状態を指示し、前記キャッシュコントローラは、前記ダーティマスクを、前記ダーティマスクが割り振られた前記キャッシュメモリラインと関連付ける識別（ＩＤ）情報を記憶する、キャッシュメモリシステム。
［Ｃ２］前記キャッシュメモリは、複数のキャッシュメモリラインをさらに含み、
前記キャッシュメモリラインのそれぞれは、
キャッシュメモリライン内の各バイトがダーティであるときを指示する完全ダーティフラグを記憶する場所と、
前記ＩＤ情報を記憶するためのダーティバッファインデックスを記憶する場所と、
を含む、［Ｃ１］に記載のキャッシュメモリシステム。
［Ｃ３］特定のキャッシュメモリラインに関するダーティフラグは、前記キャッシュメモリラインの少なくとも１つのデータユニットが、メインメモリからのデータの最後の書き込み以降に書き込まれたことを指示する、［Ｃ２］に記載のキャッシュメモリシステム。
［Ｃ４］前記ダーティフラグは１ビットフラグを備える、［Ｃ２］に記載のキャッシュメモリシステム。
［Ｃ５］特定のキャッシュメモリラインに関する前記完全ダーティフラグは、前記キャッシュメモリラインが完全にダーティであることを指示する、［Ｃ２］に記載のキャッシュメモリシステム。
［Ｃ６］前記完全ダーティフラグは１ビットフラグを備える、［Ｃ２］に記載のキャッシュメモリシステム。
［Ｃ７］前記ＩＤ情報は、ダーティバッファマスクが割り振られた前記キャッシュメモリラインを指示する前記ダーティバッファマスクに関するアドレスを与えるダーティバッファインデックスに記憶される、［Ｃ２］に記載のキャッシュメモリシステム。
［Ｃ８］前記ダーティバッファインデックスは、前記複数のダーティマスクのうちの１つが割り振られた場所へのポインタを備える、［Ｃ１］に記載のキャッシュメモリシステム。
［Ｃ９］前記キャッシュコントローラは、前記それぞれのキャッシュメモリラインへの書き込み要求が生じるときに、前記キャッシュメモリラインのうちの１つに割り振られた前記ダーティマスクのうちの１つに対する更新を引き起こすようにさらに構成される、［Ｃ１］に記載のキャッシュメモリシステム。
［Ｃ１０］前記キャッシュコントローラは、前記それぞれのキャッシュメモリライン内の１つの場所に、前記キャッシュメモリラインのうちの１つに関する前記ＩＤ情報を記憶するように構成される、［Ｃ１］に記載のキャッシュメモリシステム。
［Ｃ１１］前記ダーティバッファは前記キャッシュメモリの一部を備える、［Ｃ１］に記載のキャッシュメモリシステム。
［Ｃ１２］前記ダーティバッファは、前記キャッシュメモリとは別のメモリを備える、［Ｃ１］に記載のキャッシュメモリシステム。
［Ｃ１３］前記キャッシュメモリに結合されるプロセッサと、前記プロセッサに結合されるメインメモリとをさらに備え、
前記プロセッサは、前記キャッシュメモリおよび前記メインメモリに対してデータの読み出しおよび書き込みを行うように構成される、［Ｃ１］に記載のキャッシュメモリシステム。
［Ｃ１４］複数のキャッシュメモリラインを含むキャッシュメモリにデータを書き込むことと、
キャッシュメモリラインへの書き込みがそのキャッシュメモリラインへのフル書き込みでないときに、前記キャッシュメモリラインのそれぞれに複数のダーティマスクのうちの１つを割り振ることと、ここにおいて、前記ダーティマスクは、前記キャッシュメモリライン内のデータユニットのダーティ状態を指示する、
前記ダーティマスクを、前記ダーティマスクが割り振られた前記キャッシュメモリラインと関連付ける識別（ＩＤ）情報を記憶することと、
を備える、メモリシステムを動作させる方法。
［Ｃ１５］前記複数のキャッシュメモリラインのそれぞれが、
キャッシュメモリライン内の各バイトがダーティであるときを指示する完全ダーティフラグを記憶する場所と、
前記ＩＤ情報を記憶するためのダーティバッファインデックスを記憶する場所と、
をさらに含む、［Ｃ１４］に記載の方法。
［Ｃ１６］前記ダーティマスクを含む前記複数のキャッシュメモリラインのうちの１つへの書き込み要求が生じるとき、対応するダーティマスクに対する更新を引き起こすことをさらに備える、［Ｃ１４］に記載の方法。
［Ｃ１７］前記それぞれのキャッシュメモリライン内の１つの場所に、前記キャッシュメモリラインのうちの１つに関する前記ＩＤ情報を記憶することをさらに備える、［Ｃ１４］に記載の方法。
［Ｃ１８］前記キャッシュメモリラインの少なくとも１つのデータユニットが、メインメモリからのデータの最後の書き込み以降に書き込まれたことを指示することをさらに備える、［Ｃ１４］に記載の方法。
［Ｃ１９］前記キャッシュメモリラインが完全にダーティであることを指示することをさらに備える、［Ｃ１４］に記載の方法。
［Ｃ２０］前記ダーティマスクに割り振られた前記キャッシュメモリラインを指示することをさらに備える、［Ｃ１４］に記載の方法。
［Ｃ２１］複数のキャッシュメモリラインを含むキャッシュメモリにデータを書き込むための手段と、
キャッシュメモリラインへの書き込みがそのキャッシュメモリラインへのフル書き込みでないときに、前記キャッシュメモリラインのそれぞれに複数のダーティマスクのうちの１つを割り振るための手段と、ここにおいて、前記ダーティマスクは、前記キャッシュメモリライン内のデータユニットのダーティ状態を指示する、
前記ダーティマスクを、前記ダーティマスクが割り振られた前記キャッシュメモリラインと関連付ける識別（ＩＤ）情報を記憶するための手段と、
を備える、キャッシュメモリシステム。
［Ｃ２２］前記キャッシュメモリラインのそれぞれが、
キャッシュメモリライン内の各バイトがダーティであるときを指示する完全ダーティフラグを記憶するための手段と、
前記ＩＤ情報を記憶するためのダーティバッファインデックスを記憶するための手段と、
をさらに含む、［Ｃ２１］に記載のキャッシュメモリシステム。
［Ｃ２３］前記ダーティマスクを含む前記複数のキャッシュメモリラインのうちの１つへの書き込み要求が生じるとき、対応するダーティマスクに対する更新を引き起こすための手段をさらに備える、［Ｃ２１］に記載のキャッシュメモリシステム。
［Ｃ２４］前記それぞれのキャッシュメモリライン内の１つの場所に、前記キャッシュメモリラインのうちの１つに関する前記ＩＤ情報を記憶するための手段をさらに備える、［Ｃ２１］に記載のキャッシュメモリシステム。
［Ｃ２５］前記キャッシュメモリラインの少なくとも１つのデータユニットが、メインメモリからのデータの最後の書き込み以降に書き込まれたことを指示するための手段をさらに備える、［Ｃ２１］に記載のキャッシュメモリシステム。
［Ｃ２６］前記キャッシュメモリラインが完全にダーティであることを指示するための手段をさらに備える、［Ｃ２１］に記載のキャッシュメモリシステム。
［Ｃ２７］前記ダーティマスクに割り振られた特定のキャッシュメモリラインを指示するための手段をさらに備える、［Ｃ２１］に記載のキャッシュメモリシステム。
［Ｃ２８］プロセッサと、
前記プロセッサに結合されるメインメモリと、
前記プロセッサに結合されるキャッシュメモリと、
を備えるシステムであって、
前記キャッシュメモリは、
キャッシュコントローラと、
複数のキャッシュメモリラインと、
ダーティマスクを含むダーティバッファと、
を含み、
前記キャッシュコントローラは、前記キャッシュメモリラインへの書き込みが前記キャッシュメモリラインへのフル書き込みでないときに、前記キャッシュメモリラインのそれぞれに前記ダーティマスクのうちの１つを割り振り、ここにおいて、前記ダーティマスクは、前記キャッシュメモリライン内のデータユニットのダーティ状態を指示し、前記キャッシュコントローラは、前記ダーティマスクを、前記ダーティマスクが割り振られた前記キャッシュメモリラインと関連付ける識別（ＩＤ）情報を記憶する、システム。
［Ｃ２９］前記複数のキャッシュメモリライン、前記キャッシュメモリラインのそれぞれが、
キャッシュメモリライン内の各バイトがダーティであるときを指示する完全ダーティフラグを記憶する場所と、
前記ＩＤ情報を記憶するためのダーティバッファインデックスを記憶する場所と、
を含む、［Ｃ２８］に記載のプロセッサシステム。
［Ｃ３０］特定のキャッシュメモリラインに関するダーティフラグは、前記キャッシュメモリラインの少なくとも１つのデータユニットが前記メインメモリ内の対応するデータユニットとは異なることを指示する、［Ｃ２９］に記載のプロセッサシステム。
［Ｃ３１］特定のキャッシュメモリラインに関する前記完全ダーティフラグは、前記キャッシュメモリラインが完全にダーティであることを指示する、［Ｃ２９］に記載のプロセッサシステム。
［Ｃ３２］前記ＩＤ情報は、ダーティバッファマスクが割り振られた前記キャッシュメモリラインを指示する前記ダーティバッファマスクに関するアドレスを与えるダーティバッファインデックスに記憶される、［Ｃ２９］に記載のプロセッサシステム。
［Ｃ３３］前記キャッシュコントローラは、前記ダーティマスクを含む前記複数のキャッシュメモリラインのうちの１つへの書き込み要求が生じるとき、対応するダーティマスクに対する更新を引き起こすようにさらに構成される、［Ｃ２８］に記載のプロセッサシステム。
［Ｃ３４］前記キャッシュコントローラは、前記それぞれのキャッシュメモリライン内の１つの場所に、前記キャッシュメモリラインのうちの１つに関する前記ＩＤ情報を記憶するように構成される、［Ｃ２８］に記載のプロセッサシステム。
［Ｃ３５］前記ダーティバッファは前記キャッシュメモリの一部を備える、［Ｃ２８］に記載のプロセッサシステム。
［Ｃ３６］前記ダーティバッファは前記キャッシュメモリとは別のメモリを備える、［Ｃ２８］に記載のプロセッサシステム。
［Ｃ３７］キャッシュメモリラインへの書き込みがフル書き込みでないときを指示するダーティフラグを用いて、キャッシュメモリ内のキャッシュメモリラインの状態を追跡することと、
前記キャッシュメモリラインへの書き込みが特定のキャッシュメモリラインへのフル書き込みでないときに、前記キャッシュメモリラインにダーティマスクを割り振ることと、
前記ダーティマスクがアクセスされ得るように、前記特定のキャッシュメモリラインにアタッチされる、前記割り振られたダーティマスクの識別（ＩＤ）情報を追跡することと、
を備える、メモリシステムを動作させる方法。
［Ｃ３８］前記ダーティマスクを含む複数のキャッシュメモリラインのうちの１つへの書き込み要求が生じるとき、前記ダーティマスク内の対応するダーティマスクに対する更新を引き起こすことをさらに備える、［Ｃ３７］に記載の方法。
［Ｃ３９］前記それぞれのキャッシュメモリライン内の１つの場所に、前記キャッシュメモリラインのうちの１つに関する前記ＩＤ情報を記憶することをさらに備える、［Ｃ３７］に記載の方法。
［Ｃ４０］ダーティバッファマスクに割り振られた前記特定のキャッシュメモリラインを指示することをさらに備える、［Ｃ３７］に記載の方法。
［Ｃ４１］前記キャッシュメモリラインの少なくとも１つのデータユニットがメインメモリ内の対応するデータユニットと異なることを指示することをさらに備える、［Ｃ３７］に記載の方法。
［Ｃ４２］キャッシュメモリラインへの書き込みがフル書き込みでないときを指示するダーティフラグを用いて、キャッシュメモリ内のキャッシュメモリラインの状態を追跡するための手段と、
前記キャッシュメモリラインへの書き込みが特定のキャッシュメモリラインへのフル書き込みでないときに、前記キャッシュメモリラインにダーティマスクを割り振るための手段と、
前記ダーティマスクがアクセスされ得るように、前記特定のキャッシュメモリラインにアタッチされる、前記割り振られたダーティマスクの識別（ＩＤ）情報を追跡するための手段と、
を備える、キャッシュメモリシステム。
［Ｃ４３］前記ダーティマスクを含む複数のキャッシュメモリラインのうちの１つへの書き込み要求が生じるとき、前記ダーティマスク内の対応するダーティマスクに対する更新を引き起こすための手段をさらに備える、［Ｃ４２］に記載のキャッシュメモリシステム。
［Ｃ４４］前記それぞれのキャッシュメモリライン内の１つの場所に、前記キャッシュメモリラインのうちの１つに関する前記ＩＤ情報を記憶するための手段をさらに備える、［Ｃ４２］に記載のキャッシュメモリシステム。
［Ｃ４５］ダーティバッファマスクに割り振られた前記特定のキャッシュメモリラインを指示するための手段をさらに備える、［Ｃ４２］に記載のキャッシュメモリシステム。
［Ｃ４６］前記キャッシュメモリラインの少なくとも１つのデータユニットがメインメモリ内の対応するデータユニットと異なることを指示するための手段をさらに備える、［Ｃ４２］に記載のキャッシュメモリ。
［Ｃ４７］実行されるときに、プログラマブルプロセッサに、
キャッシュメモリラインへの書き込みがフル書き込みでないときを指示するダーティフラグを用いて、キャッシュメモリ内のキャッシュメモリラインの状態を追跡することと、
前記キャッシュメモリラインへの書き込みが特定のキャッシュメモリラインへのフル書き込みでないときに、前記キャッシュメモリラインにダーティマスクを割り振ることと、
前記ダーティマスクがアクセスされ得るように、前記特定のキャッシュメモリラインにアタッチされる、前記割り振られたダーティマスクの識別（ＩＤ）情報を追跡することと、
を行わせる命令を備える、非一時的コンピュータ可読媒体。
［Ｃ４８］前記命令は、前記プロセッサに、前記ダーティマスクを含む複数のキャッシュメモリラインのうちの１つへの書き込み要求が生じるとき、前記ダーティマスク内の対応するダーティマスクを更新することをさらに行わせる、［Ｃ４７］に記載の非一時的コンピュータ可読媒体。
［Ｃ４９］前記命令は、前記プロセッサに、前記それぞれのキャッシュメモリライン内の１つの場所に、前記キャッシュメモリラインのうちの１つに関する前記ＩＤ情報を記憶することをさらに行わせる、［Ｃ４７］に記載の非一時的コンピュータ可読媒体。
［Ｃ５０］前記命令は、前記プロセッサに、ダーティバッファマスクに割り振られた前記特定のキャッシュメモリラインを指示することをさらに行わせる、［Ｃ４７］に記載の非一時的コンピュータ可読媒体。
［Ｃ５１］プロセッサは、キャッシュメモリに結合され、前記キャッシュメモリを制御するように構成されるキャッシュコントローラを備える、［Ｃ４７］に記載の非一時的コンピュータ可読媒体。
［Ｃ５２］前記キャッシュコントローラはプログラマブル論理デバイスを備え、前記コンピュータ可読媒体は、前記プログラマブル論理デバイスをプログラムするように構成されるビットストリームを記憶するメモリを備える、［Ｃ５１］に記載の非一時的コンピュータ可読媒体。
【図１】
0006009688.tif 000004
【図２】
0006009688.tif 000005
【図３】
0006009688.tif 000006
【図４Ａ】
0006009688.tif 000007
【図４Ｂ】
0006009688.tif 000008
【図５】
0006009688.tif 000009
【図６】
0006009688.tif 000010