説明

データ処理システムのシステムメモリへのデータの書き込み

【課題】システムメモリへのデータの書き込みの際の遅延を減少させる方法およびシステムを提供する。
【解決手段】システムメモリの領域のユニークなセクションに各々関連する複数のキャッシュ線に対応する状態インジケータは、キャッシュ線が関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補であることを示すダーティ指示を含む。ダーティ指示を含む状態インジケータの数を判定し、判定したダーティ指示の数が閾値を超える場合、キャッシュ線を選択し、そのキャッシュ線に格納されているデータをシステムメモリの領域の関連するセクションに書き込み、対応する状態インジケータにクリーン指示を格納する。クリーン指示によって、キャッシュ線がシステムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補でないことが識別される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概してデータ処理システムに関し、さらに詳しくはデータ処理システムのシステムメモリにデータを書き戻すことに関する。
【背景技術】
【0002】
複数のプロセッサが共有のシステムメモリにアクセスする通常のマルチプロセッサシステムでは、データは時間インターリーブ方式でメモリに書き込まれる。これによって、最適でない性能が生じる。例えば、デュアルデータレート(DDR)メモリの場合、各時間のデータはメモリバンクの異なるページに書き込まれ、追加のページを開くこと(オープン)や閉じること(クローズ)が必要であるので、全体的なシステム性能が低下する。非特許文献1には、メモリシステムにおける書込による干渉の低減について記載されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】リー(Lee)ら、「DRAM−アウェア・ラスト−レベル・キャッシュ・ライトバック:メモリシステムにおける書込による干渉の低減(DRAM−Aware Last−Level Cache Writeback:Reducing Write−Caused Interference in Memory Systems)」、米国、テキサス大学オースティン校(The University of Texas at Austin)、2010年4月、p.1−21、http://hps.ece.utexas.edu/pub/TR−HPS−2010−002.pdf
【発明の概要】
【発明が解決しようとする課題】
【0004】
データ処理システムのシステムメモリへのデータの書き込みの際の遅延を減少させる方法およびシステムを提供する。
【課題を解決するための手段】
【0005】
メモリの同じ領域にアクセスすることによって、異なる領域に続けてアクセスする必要がある場合に生じる遅延の減少が補助され得る。例えば、DDRメモリの場合、行(row)の競合が発生する毎に、現在の行を閉じるとともに、新たな行を活性化させる、すなわち開く必要があり、行を閉じたり開いたりする度に遅延が生じる。よって、1つの実施形態において、メモリの同じ領域に対応するダーティキャッシュ線の数が所定の閾値に達する時を判定するべく、システムメモリの各領域へのメモリアクセスの追跡記録(トラッキング)が行われる。この閾値に達すると、同じ領域に対応するダーティキャッシュ線は、更新されたキャッシュデータをシステムメモリに書き込むことによってクリーンとされる(クリーニング)ことが可能である。それらのダーティキャッシュ線は同じ領域に対応するので、クリーニングを実行しながら新たな領域を続けて閉じたり開いたりする必要はない。よって、同じ領域に対応するダーティキャッシュ線のセットをクリーニングするクリーニング処理の最初のアクセス時には遅延が生じ得るが、そのクリーニング処理の続くアクセス時にはさらなる遅延は生じない。このようにして、システムの性能が改良される。
【図面の簡単な説明】
【0006】
【図1】本発明の1つの実施形態によるデータ処理システムのブロック図。
【図2】本発明の1つの実施形態による図1のシステムメモリのブロック図。
【図3】本発明の1つの実施形態による図1のシステムキャッシュのブロック図。
【図4】本発明の1つの実施形態による図1のキャッシュクリーニング回路のブロック図。
【図5】本発明の1つの実施形態による図1のデータ処理システムに与えられるアクセスアドレスの線図。
【図6】本発明の1つの実施形態による図1のキャッシュクリーニング回路のトラッキングエントリの線図。
【図7】本発明の1つの実施形態による図1のキャッシュクリーニング回路を更新する方法のフローチャート。
【図8】本発明の1つの実施形態によるキャッシュクリーニングを実行する方法のフローチャート。
【発明を実施するための形態】
【0007】
本明細書における用語「バス(bus)」は、1以上の各種の情報、例えばデータ、アドレス、制御又は状態を転送するために使用される複数の信号又は導体を指す。本明細書における導体は、1つの導体、複数の導体、単方向の導体、又は双方向の導体を指して図示又は記載される。しかしながら、異なる実施形態では導体の実装が異なっていてもよい。例えば、別々の単方向の導体が、双方向の導体に代えて使用されてもよく、また反対に、双方向の導体に代えて別々の単方向の導体が使用されてもよい。また、多数の信号を連続的に送信したり、時間多重化して送信したりする単一の導体によって、複数の導体が置き換えられてもよい。同様に、多数の信号を搬送する単一の導体が、これらの信号の一部を搬送する各種の異なる導体へと分割されてもよい。従って、信号を転送するための数々の選択肢が存在する。
【0008】
「アサート」または「セット」および「ネゲート」(または「ディアサート」もしくは「クリア」)という語は、本明細書において、それぞれ、信号、状態ビット、または同様の装置を論理的に真の状態または論理的に偽の状態にすることを指して用いられる。論理的に真の状態が論理レベル1の場合、論理的に偽の状態は論理レベル0(ゼロ)である。また、論理的に真の状態が論理レベル0の場合、論理的に偽の状態は論理レベル1である。
【0009】
図1には、プロセッサ12,16、システム相互接続部20、周辺装置22、キャッシュクリーニング回路24、システムキャッシュ26、メモリコントローラ28およびシステムメモリ30を有するデータ処理システム10のブロック図を示す。プロセッサ12,16、周辺装置22、キャッシュクリーニング回路24およびシステムキャッシュ26の各々はシステム相互接続部20に双方向に結合される。システムキャッシュ26は、システム相互接続部20の外において、導体26を介してキャッシュクリーニング回路24に双方向に結合される。メモリコントローラ28は、システムキャッシュ26およびシステムメモリ30の各々に双方向に結合される。データ処理システム10は、1つプロセッサ(プロセッサ12など)を備えてもよく、複数のプロセッサを備えてもよい。周辺装置22は任意の数および種類の周辺装置を備えてもよく、これに代えて、データ処理システム10が他の周辺装置を備えなくてもよい。プロセッサ12,16の各々は、キャッシュ14,18など専用のキャッシュを備えてもよい。システム相互接続部はグローバル相互接続部である。1つの形態において、相互接続部はシステムバスである。しかしながら、例えば、相互接続ファブリック、クロスバー、ポイントツーポイント接続など、他の形態の相互接続部が用いられてもよい。
【0010】
動作において、システム相互接続部20に結合される複数のマスタ(プロセッサ12,16または周辺装置22など)は、データの読取および書込を行うべく、システムメモリ30にアクセスすることができる。システムメモリ30へのアクセスはメモリコントローラ28によって制御され、システムキャッシュ26によってゲート制御される。すなわち、図示される実施形態において、システムメモリ30へのアクセスはシステムキャッシュ26を介してまず与えられる。1つの実施形態において、キャッシュクリーニング回路24は、マスタによるシステムメモリ30に対する書込を監視し、この監視結果に基づいて、システムキャッシュ26のフラッシュすなわちクリーニングがいつ実行され得るかを判定する。すなわち、システムキャッシュ26のキャッシュ割当ポリシにしたがってシステムキャッシュ26のフラッシュまたはクリーニングが発生するのを待機するのではなく、キャッシュクリーニング回路24は、システムメモリ30へのアクセスのトラッキングに基づいて、キャッシュ割当ポリシにしたがって行う場合よりも前に特定のキャッシュ線のフラッシュまたはクリーニングが発生するであろうことを判定する。代替の実施形態では、システムキャッシュ26は存在しないでもよく、書込はシステムコントローラ30を介してシステムメモリ30に対し直接行われる。この場合、キャッシュクリーニング回路24は、マスタによって実行されるシステムメモリ30への書込を監視し、この監視結果に基づいてキャッシュ14または18のフラッシュまたはクリーニングが実行され得る時を判定する。
【0011】
システムメモリ30は、システム相互接続部20を介してアクセス可能な任意の種類のシステムメモリであってよい。1つの実施形態において、システムメモリ30はデュアルデータレート(DDR)メモリである。例えば、図2には、DDRメモリとしてのシステムメモリ30のブロック図を示す。図2に示されるDDRメモリは、8バンク(バンク0〜バンク7)のメモリを備える。各バンクが、対応する行バッファと、N行のデータを格納する対応するメモリアレイとを含む。例えば、バンク0が行バッファ0およびメモリアレイ0を含み、バンク1が行バッファ1およびメモリアレイ1を含み、バンク2が行バッファ2およびメモリアレイ2を含み、バンク3が行バッファ3およびメモリアレイ3を含み、バンク4が行バッファ4およびメモリアレイ4を含み、バンク5が行バッファ5およびメモリアレイ5を含み、バンク6が行バッファ6およびメモリアレイ6を含み、バンク7が行バッファ7およびメモリアレイ7を含む。各メモリアレイがN行のデータを含む(ここで、1行のデータは、1ページのデータとも呼ばれ、各メモリアレイがNページのデータを含んでもよい)。よって、一例としてバンク0のメモリアレイ0を参照すると、メモリアレイ0がN行のデータ(行0〜行N−1)を含む。
【0012】
なおも図2を参照すると、行バッファは各々、各バンクについての1つのエントリキャッシュとして動作し、バンクへのアクセスは全て、行バッファによってメモリコントローラ28との間で実行される。例えば、メモリアレイ0の行2にアクセスするために、行2が「活性化」され(行バッファ0に格納され)、メモリコントローラ28を介してアクセスされることができる。メモリアレイ0の異なる行にアクセスする必要がある場合、まず行2が閉じられる(メモリアレイ0に格納される)必要があり、次いで新たな行が活性化される(行バッファ0に格納される)。行が閉じられるまたは活性化される毎に、遅延が生じる。例えば、アクセスされる行バッファが空である場合、バンクへのアクセス時に行ミス(row miss)が発生し、行を活性化するために遅延が生じる。行の競合(行が現在は行バッファに格納されているが、新たな行がアクセスされる必要がある)の場合、現在の行を閉じることと、新たな行を開くこととの両方に遅延が発生する。1つの実施形態において、各行が8キロバイト(kB)のデータを格納すると、各行バッファも8kBのデータを格納する。1つの実施形態において、各バンクが16,384行を含むと、システムメモリ30には合計131,072行が含まれる。バンクのデータの同じ行にアクセスが行われる場合(行ヒットが行バッファに起こる毎に)、現在の行を閉じる必要がなく新たな行が活性化されるので、より少ない遅延しか生じない。さらに、1つの行が活性化されると、同じ行の異なる位置への複数のアクセスがパイプライン方式で行われ得るので、遅延がさらに減少される。図示される実施形態において、システムメモリ30の各バイトはシステム10のマスタによって独立にアドレッシング可能である。よって、メモリコントローラ28によるシステムメモリ30への各アクセスによって、異なるバンクへのアクセスが生じ得るが、しかしながら、現在開かれている、すなわち、活性化されている(よって、対応する行バッファに格納される)バンクの行へのアクセスが行われる毎に、さらなる遅延が回避され得る。
【0013】
図3には、本発明の1つの実施形態にしたがって、システムキャッシュ26のブロック図を示す。システムキャッシュ26は、キャッシュ制御回路40と、キャッシュ制御回路40に双方向に結合されるキャッシュアレイ42とを備える。キャッシュ制御回路40は導体25を介してキャッシュクリーニング回路24と直接通信してもよく、システム相互接続部20を介してキャッシュクリーニング回路24と通信してもよい。システムキャッシュ26は、システム相互接続部20からアクセスアドレスと対応するアクセス属性とを受信し、またシステムキャッシュ26は、メモリコントローラ28との間で情報の送受信も行う。図示される実施形態において、システムキャッシュ26は複数のウェイを有するマルチウェイセット連想キャッシュである。キャッシュアレイ42はY個のセット(セット0〜セットY−1)を含み、各セットはM個のウェイ(ウェイ0〜ウェイM−1)を有する。キャッシュアレイ42のキャッシュ線は、ウェイとセットとの交点を参照する。各キャッシュ線は、タグ、状態情報、およびキャッシュデータを格納する。状態情報は、例えば、その線が有効であるか否かを示す有効ビットと、その線がシステムメモリ30と一貫しているか否かを示すダーティビットDとを含む。例えば、「ダーティ」キャッシュ線は、そのキャッシュ線のデータがシステムメモリ30に格納されるデータと異なるキャッシュ線である。状態情報は追加のビットも含んでよい。
【0014】
動作において、各受信されるアクセスアドレスについて、システムキャッシュ26は、キャッシュアレイ42にヒットが生じるかミスが生じるかを判定する。例えば、受信されるアクセスアドレスはタグ部分およびインデックス部分を含む。インデックス部分は、特定のセット(セット0〜セットY−1のうちの1つ)を示すためにキャッシュ制御回路40によって用いられ、キャッシュ制御回路40はタグ部分をキャッシュの各ウェイと比較して、その比較結果を(対応する状態情報とともに)用いて、キャッシュヒットが発生したのかキャッシュミスが発生したのかを判定する。例えば、タグ結果が一致する場合であっても、そのキャッシュ線が無効なキャッシュ線であることがあるので、ミスが生じ得る。また、キャッシュ制御回路40は、システムキャッシュ26の割当ポリシを制御する。例えば、割当ポリシは、新たなキャッシュ線を格納することが必要であるかまたは望ましい場合(例えば、キャッシュミスの場合など)、キャッシュアレイ42のいずれのキャッシュ線が新たなキャッシュ線の置き換え用に選択されるべきかを示すために使用され得る。また、各セットはキャッシュ割当ポリシに関連するビットを含んでもよい。キャッシュ制御回路40によって置換用に識別されるキャッシュ線がダーティキャッシュ線である場合、キャッシュ線はまずメモリにフラッシュされる。本明細書では、「キャッシュ線のフラッシュ」は、必要に応じて(例えば、キャッシュ線がダーティである場合、またはメモリと一貫しない場合)、対応するメモリ(この例では、システムメモリ30)の対応する位置を更新し、そのキャッシュ線を無効化することを意味する。また、本明細書では、「キャッシュ線のクリーニング」は、必要に応じて(例えば、キャッシュ線がダーティである場合、またはメモリと一貫しない場合)、対応するメモリ(この例では、システムメモリ30)の対応する位置を更新することを意味する。クリーンの場合、キャッシュ線は無効化されない。なお、「クリーン」という用語は、実施形態に応じて、クリーニングまたはフラッシュを意味して用いられる。1つの実施形態において、システムキャッシュ26はシステムメモリ30に相当し、16,384本のキャッシュ線を含む。また、キャッシュ制御回路40は、必要に応じてシステムキャッシュ26の他の機能を実行してもよい。
【0015】
以下に説明されるように、キャッシュ制御回路40は、(システム相互接続部20を介して、または直接的に導体25を介して)キャッシュクリーニング回路24からキャッシュクリーン要求信号を受信する。このキャッシュクリーン要求信号のアサートに応答して、キャッシュ制御回路40は、キャッシュクリーニング回路24によって示されるシステムキャッシュ26のキャッシュ線のフラッシュまたはクリーニングを行う。以下により詳細に説明されるように、フラッシュはクリーニング処理の一部としてキャッシュ線が無効化される場合、または同じキャッシュ線が後にシステム10のマスタによってアクセスされる場合に実行されてよい。このとき、必要に応じて、システムメモリ30が更新されるよう、示されたキャッシュ線のクリーニングが実行され得るが、キャッシュ線はシステムキャッシュ26の有効エントリとして残る。このクリーニングがキャッシュ割当ポリシに影響を与えても与えなくてもよい。
【0016】
図4には、キャッシュクリーニング回路24の一例のブロック図を示す。キャッシュクリーニング回路24は、トラッキングアレイ46と、トラッキングアレイ46に双方向に結合されるキャッシュクリーニング制御回路49とを含む。キャッシュクリーニング回路24は、アクセスアドレスと対応するアクセス属性とをシステム相互接続部20から受信する(または、導体25を介してキャッシュ制御回路40から直接それらを受信してもよい)。キャッシュクリーニング回路がキャッシュクリーン要求信号48をキャッシュ制御回路40に与える。トラッキングアレイ46がZ個のセット(セット0〜セットZ−1)を含み、ここで、各セットはX個のウェイ(ウェイ0〜ウェイX−1)を含む。セットおよびウェイの交点がトラッキングアレイエントリを与える。トラッキングアレイ46の各トラッキングエントリは、タグ、状態情報、トラッキングビットフィールドおよびカウント値を含む。各セットは、そのセットの置換ポリシに関連したデータを含む。キャッシュクリーニング制御回路49は、このデータを用いて、新たなエントリの割当中にトラッキングアレイ46のいずれのエントリを置換するかを判定する。キャッシュクリーニング制御回路49は、トラッキングアレイ46に格納されるカウント値を所定値(1など)だけインクリメントするために使用され得るインクリメンタ50と、トラッキングアレイ46に格納されるカウント値を所定値(1など)だけデクリメントするために使用され得るデクリメンタ51とを備える。キャッシュクリーニング制御回路49は、キャッシュ線クリーニングカウンタ52、エントリ選択回路53、クリーニング進行インジケータ55およびエントリインジケータ57を含む。エントリ選択回路53はクリーニング進行インジケータ55およびエントリインジケータ57に双方向に結合される。キャッシュクリーニング制御回路49に格納される情報はキャッシュ制御回路40(直接的にまたはシステム相互接続部20を介して)と必要に応じて通信され得る。
【0017】
動作において、キャッシュクリーニング回路24がシステムメモリ30へのアクセスを監視し、メモリの特定領域のアクセスをグループ化する。1つの実施形態において、メモリの特定領域が図2に示すようにシステムメモリ30の特定行を参照する。トラッキングアレイ46によって、キャッシュクリーニング回路24が、同じトラッキングされる領域に対応するクリーニングされる候補(例えば、ダーティキャッシュ線)であるシステムキャッシュ26(または特定のプロセッサキャッシュ14および18)のキャッシュ線をトラッキングすることが可能である。同じトラッキングされる領域に対応するダーティキャッシュ線の数が特定の数に達すると、それらのキャッシュ線の全部または一部のクリーニングまたはフラッシュを行うべく、キャッシュクリーニング回路24はシステムキャッシュ26のキャッシュ制御回路40に要求を行うことが可能である。それらのキャッシュ線は全て同じ領域(すなわち、この例では、同じ行)に対応するので、キャッシュ線のフラッシュまたはクリーニング中におけるシステムメモリ30に対するアクセスが改良される。すなわち、一連のフラッシュまたはクリーニングが実行されると、アクセスされる特定の行のみが、活性化される、すなわち、開かれる必要がある。同様に、システムキャッシュ26が存在しない場合、同じトラッキングされる領域に対応するダーティキャッシュ線の数が特定の数に達すると、選択されるトラッキングされる領域に対応するプロセッサのキャッシュ線をフラッシュまたはクリーニングするために、キャッシュクリーニング回路24がプロセッサ(例えば、キャッシュ14および/または18)のキャッシュを要求することが可能である。これは、例えば、プロセッサ12,16などのマスタへフラッシュまたはクリーニング命令をブロードキャストすることによって実行され得る。キャッシュクリーニング回路24の動作は図5〜8を参照してさらに記載される。
【0018】
図5には、本発明の1つの実施形態にしたがってアクセスアドレス56の様々な部分の線図を示す。図5において、アクセスアドレス56は複数の部分にパースされている。第1部分が領域タグ(例えば、アクセスアドレス56のビット0〜17)を与え、第2部分が領域インデックス(例えば、アクセスアドレス56のビット18〜22)を与え、第3部分が領域オフセット(例えば、アクセスアドレス56のビット23〜29)を与え、第4部分がキャッシュ線オフセット(例えば、アクセスアドレス56のビット30〜35)を与える。なお、この実施形態において、領域インデックスがトラッキングアレイ46のセットインデックスに対応する。この実施形態では、5ビットの領域インデックスは、トラッキングアレイ46のウェイ当たり32セットに相当する。なお、図2に示すようにシステムメモリ30がDDRである例において、領域タグおよび領域インデックスはシステムメモリ30の行アドレスに対応する。すなわち、領域タグおよび領域インデックスがメモリ30の行の全体をアドレスし、ここで、メモリ30の各行がキャッシュクリーニング回路24によってトラッキングされ得る領域に対応する。さらに、領域オフセットがアドレスされる行のデータの一部(例えば、キャッシュ線分のデータ)を識別する。例えば、システムメモリ30の各行は領域タグおよび領域インデックスの全体によってアドレス可能である。このとき、行自身においては、領域オフセットは行の一部を識別するために使用され得る。
【0019】
図6には、トラッキングアレイ46のトラッキングエントリ58の一例の線図を示す。トラッキングエントリ58の記載がトラッキングアレイ46の各エントリに適用される。各トラッキングエントリは領域タグを格納し、該領域タグは、トラッキングアレイ46のセットインデックスによって与えられる領域インデックスとともに、トラッキングエントリ58によってトラッキングされる領域を示す。この例では、この領域がシステムメモリ30の特定行に対応する。状態情報が、トラッキングエントリは有効かを示す有効ビットを含み、置換状態などの情報も含んでよい。すなわち、キャッシュクリーニング制御回路49は、トラッキングアレイ46のいずれのエントリを置換するかを判定するべく、各エントリの置換状態を使用してもよい。トラッキングエントリ58は、T個の「キャッシュ線の状態」フィールド(状態インジケータとも呼ばれる)、すなわち、キャッシュ線0の状態〜キャッシュ線T−1の状態を含む。ここで、Tは領域全体を格納するために必要なキャッシュ線の数を表す。この例において、8kBの領域(例えば、バンク0の行0など、システムメモリ30の1つの行に対応する)を格納するために128個のキャッシュ線(各キャッシュ線が64バイト長を有する)が必要である。よって、この例において、トラッキングエントリ58は、128個のキャッシュ線の状態フィールド(キャッシュ線0の状態〜キャッシュ線127の状態)を含む。1つの実施形態において、キャッシュ線の状態フィールドの各々は、対応するキャッシュ線がダーティであるか否かを示す1つの(単一)ビットを含む。対応するキャッシュ線がダーティである場合、この単一ビットは、ビットがダーティ、すなわち、メモリと一貫しないことを示す値(例えば、論理レベル1)を有する。対応するキャッシュ線がダーティでない場合、この単一ビットは、ビットがダーティでないことを示す値(例えば、論理レベルゼロ)を有する。このビットは、対応するキャッシュ線がキャッシュ線に格納されるデータをメモリのユニークなセクションに書き込む候補であるか否かを示す書込指示と呼ばれる場合もある。例えば、キャッシュ線がダーティである場合、キャッシュ線はデータをメモリ30に書き込む候補であってよい。代替の実施形態において、状態のインジケータの書込指示部分のビット数は任意であってよい。トラッキングエントリ58は、ダーティキャッシュ線を示すキャッシュ線(またはメモリに格納される候補のキャッシュ線)の状態フィールドが幾つあるかを数えるカウント値を含む。
【0020】
よって、システムキャッシュ26が監視される場合、トラッキングエントリ58のキャッシュ線ビットの状態は、システムキャッシュの対応するキャッシュ線がダーティであることを示す論理レベル1を有する。システムキャッシュ26でなく各プロセッサのキャッシュがトラッキングされる場合(例えば、システムキャッシュが存在しない場合など)、キャッシュ線の状態フィールドの各々は、上述のようにキャッシュ線がダーティか否かを示す1つ以上のビットを含んでもよく、キャッシュ線が対応するキャッシュを示す識別子フィールドが含まれる。例えば、プロセッサのキャッシュはキャッシュ14または18を識別するプロセッサ識別子であってよい。たとえシステムキャッシュ26がなくとも、例えば、システム相互接続部20がすべてのマスタに情報をブロードキャストする場合、識別子フィールドは不要であり得る。
【0021】
よって、受信されるアクセスアドレスについて、図5の例に記載したように、領域タグおよび領域インデックスによってシステムメモリ30の特定領域(例えば、行)が識別される。この例では、領域オフセットは、特定の行においていずれのキャッシュ線のデータ(いずれの64バイトのユニークなセクション)がアクセスされているかを与える7ビットの値である。この領域オフセットは、したがって、いずれのトラッキングビットフィールド内のキャッシュ線の状態フィールドが必要とされるように変更されるかを示すために使用されることが可能である。例えば、0の領域オフセットによって、ある行の第1の64バイトのユニークなセクションが識別され、キャッシュ線0の状態を用いて、システム10のキャッシュ(システムキャッシュ26など)がこの64バイトのセクションのダーティバージョンを格納するか否かを示すことが可能である。5の領域オフセットによって、その行の第6の64バイトのユニークなセクションが識別され、キャッシュ線5の状態を用いて、システム10のキャッシュ(システムキャッシュ26など)がこの64バイトセクションのダーティバージョンを格納するか否かを示すことが可能である。よって、ダーティキャッシュ線を示すキャッシュ線の状態フィールドがいくつであるかをトラッキングするカウント値によって、メモリ30の特定領域(例えば、行)が古い(すなわち、一貫しない)データをどれくらい格納しているかが表される。1つの実施形態において、トラッキングアレイ46は256のトラッキングエントリを含んでおり、これによって256の領域をトラッキングすることが可能である。例えば、これによって、システムメモリ30の256の行をトラッキングすることが可能となる。
【0022】
図7には、本発明の1つの実施形態にしたがって、キャッシュクリーニング回路24を更新する方法のフローチャートを示す。図7のフローがブロック60で開始し、システムメモリ30に対する現在のアクセスに対応するアクセスアドレスと属性とが受信される。このアクセスはシステム10のいずれのマスタによって実行されてもよい。フローは判定ブロック62に進み、現在のアクセスがシステム10内のキャッシュ線をダーティとするか、後のアクセスの結果としてキャッシュ線をダーティとする意図を示すものであるかが判定される。例えば、現在のアクセスによってキャッシュ線がダーティとなるのは、現在のアクセスが、キャストアウト(cast out)付きの書込(WCO)アクセス、無効化付きの書込(WWI)アクセス、フラッシュ付きの書込(WWF)アクセス、クリーニング付きの書込(WWC)アクセス、マージ付きの書込(WWM)アクセス、イネーブル付きの書込(WBE)アクセスまたは原子統計(WRITEU/READU/NOTIFY)アクセスであってよい。これらのタイプのアクセスでは、アクセスの結果、キャッシュ線がダーティとなる、すなわち、システムメモリ30と一貫しなくなる。現在のアクセスが、後のアクセスの結果としてキャッシュ線をダーティとする意図を示す場合、ダーティキャッシュ線を生じる将来のアクセスを生じる可能性が高い。例えば、このタイプのアクセスには、変更意図付きの読取(RWITM)アクセス、置換の請求(CTR)アクセス、または変更の請求(CTM)アクセスが含まれる。例えば、RWITMアクセスは、読取であるので、キャッシュ線の更新を生じることなくダーティとするが、変更意図付きで実行されるので、読み取られるデータが変更される可能性が高い。よって、変更されるデータの後の書込アクセスの際、その変更されたデータがキャッシュされ、ダーティキャッシュ線を生じることになる。
【0023】
よって、戻って判定ブロック62を参照すると、現在のアクセスがキャッシュ線をダーティとするか、後のアクセスの結果としてキャッシュ線をダーティとする意図を示すものである場合、フローはブロック64に進む。しかしながら、現在のアクセスがキャッシュ線をダーティとするものでも、後のアクセスの結果としてキャッシュ線をダーティとする意図を示すものでもない場合、フローは終了に進む。ブロック64において、トラッキングアレイ46の存在しているトラッキングエントリとの一致が発生するか否かを判定するべく、アクセスアドレスがキャッシュクリーニング制御回路49によって使用される。すなわち、現在のアクセスアドレスの領域タグおよび領域インデックスを用いて、トラッキングアレイ46に一致が存在するか否かを判定する。ここで、領域インデックスはトラッキングアレイ46のセット0〜セットZ−1のうちの1つのセットを示し、領域タグは、この示されたセットにおけるウェイ0〜ウェイX−1のタグのうちの1つが一致を生じるか否かを判定するために用いられる。フローは次に判定ブロック66に進み、一致が発生するか否かを判定する。一致が発生しない場合、現在のアクセスアドレスによってアクセスされる現在の領域(例えば、行)は、キャッシュクリーニング回路24によって現在トラッキングされていない。よって、一致が発生しない場合、フローは判定ブロック68に進み、現在のアクセスがキャッシュ線をダーティとするものであるか否かを判定する。現在のアクセスがキャッシュ線をダーティとするものである場合、フローはブロック70に進み、キャッシュクリーニング制御回路49によって実装されるトラッキングアレイ46の割当ポリシにしたがって、アクセスアドレスと一致する新たなエントリがトラッキングアレイ46に割り当てられる。例えば、疑似最低使用頻度(PLRU)置換アルゴリズムなどのポリシを用いて、トラッキングアレイ46内のエントリを選択し、現在のアクセスアドレスによるキャストアウトおよび置換を行って、アクセスされている対応する領域がトラッキングされるようにすることが可能である。判定ブロック68に戻ると、現在のアクセスが、後のアクセスの結果としてキャッシュ線をダーティとする意図を示すものである場合、現在のアクセスは実際にはキャッシュ線をダーティとしないので、トラッキングアレイ46において新たなエントリを割り当てる必要がないので、フローは終了に進む。むしろ、新たなエントリが割り当てられることが可能であり、または、実際にキャッシュ線をダーティとする後のアクセスが生じる時に既存のエントリが修正される。ブロック70の後、フローはブロック78に進む。
【0024】
戻って判定ブロック66を参照すると、一致が発生する場合、これは、現在のアクセスアドレスによってアクセスされている領域が既にトラッキングアレイ46によってトラッキングされており、したがってトラッキングアレイ46に対応するトラッキングエントリ(すなわち、一致を生じたトラッキングエントリ)を有することを示し、フローは判定ブロック72に進む。判定ブロック72において、現在のアクセスがキャッシュ線をダーティとするアクセスであるか否かを判定する。現在のアクセスがキャッシュ線をダーティとするアクセスである場合、フローはブロック78に進み、アクセスアドレスに一致するトラッキングエントリのキャッシュ線の状態フィールド(現在のアクセスアドレスの領域オフセットによって示される)は、対応するキャッシュ線がキャッシュクリーニング回路24によるクリーニングの候補であることを示すように、必要に応じて変更される。キャッシュ線は、ダーティであるデータ、すなわち、システムメモリ30と一貫しないデータを保持する場合、または妥当なアクセス数以内で再びアクセスされる可能性が低い場合、クリーニングの候補となる。それらの場合、システムメモリ30を更新して、キャッシュ(システムキャッシュ26など)に格納される更新されたデータを反映することが望ましい。以下に記載されるように、これはクリーニング処理によって実行される事が可能であり、そのとき、キャッシュ線はシステムメモリにフラッシュされるか、クリーニングされる(キャッシュ線がメモリに更新されるが、まだ無効化されない)。領域オフセットによって示される対応するキャッシュ線の状態フィールドの変更には、ビットがまだ論理レベル1ではない場合、ビットを論理レベル1に設定して現在ダーティデータであることを示すことが含まれ得る。よって、ビットが既に論理レベル1である場合(先のアクセスの結果としてキャッシュ線が依然としてダーティであることを意味する)、再び設定される必要はなく、変更されないままであることもある。フローは次にブロック80に進み、アクセスアドレスに一致するトラッキングエントリのカウントが必要に応じて増加(インクリメント)される。例えば、ビットがまだ論理レベル1でなく、論理レベル1に変更される場合、キャッシュクリーニング制御回路49のインクリメンタ50を用いて、カウント値を1だけ増やし、トラッキングされている対応する領域のユニークなセクションに関連する別のキャッシュ線がダーティであり、したがってクリーニングされる(例えば、システムメモリ30に書き込まれる)準備がされていることを示してもよい。しかしながら、ビットが既に論理レベル1である場合、このダーティキャッシュ線は現在のカウント値により既に考慮されている(対応するキャッシュ線の状態フィールドが論理レベル0から1に先に変更されている場合)ので、カウントを増やす必要はない。フローは次に終了に進む。
【0025】
戻って判定ブロック72を参照すると、現在のアクセスがキャッシュ線をダーティとするアクセスでない場合(続くアクセスの結果としてキャッシュ線をダーティとする意図を示すものであることを示している)、フローはブロック74に進む。ブロック74では、アクセスアドレスに一致するトラッキングエントリのキャッシュ線の状態フィールド(現在のアクセスアドレスの領域オフセットによって示される)は、対応するキャッシュ線がキャッシュクリーニング回路24によるクリーニングの候補でないことを示すように、必要に応じて変更される。この場合、このアクセスは後のアクセスの結果としてキャッシュ線をダーティにする可能性が高いアクセスであるので、キャッシュ線のフラッシュまたはシステムメモリへの書き戻しによってキャッシュ線をクリーニングすることは無用である。すなわち、このアドレス位置はすぐに変更される可能性が高いので、そのままキャッシュに保持し、システムメモリ30をまだ更新しないことが望ましい。領域オフセットによって示される対応するキャッシュ線の状態フィールドの変更は、ビットの現在の状態に応じて異なってよい。ビットが現在、論理レベル1である場合、変更は、キャッシュ線をまだクリーニングする(例えば、メモリに書き込む)べきでないことを示すべく、ビットをクリアしてもよい。ビットが現在既に論理レベル0である場合、ビットをクリアする必要はなく、変更されないままであってよい。フローは次にブロック76に進み、アクセスアドレスに一致するトラッキングエントリのカウントが必要に応じて減少(デクリメント)される。例えば、ビットがまだ論理レベル0ではなく、論理レベル0に変更される場合、キャッシュクリーニング制御回路49のデクリメンタ51を用いて、カウント値を1だけ減らし、クリーニングされる準備がされているキャッシュ線が1つ少ないことを示してもよい。しかしながら、ビットが既に論理レベル0である場合、カウントを減らす必要はない。フローは終了に進む。
【0026】
したがって、図7のフローを用いて、トラッキングされるシステムメモリ30の新たな領域に対応するトラッキングエントリを設定するとともに、既にトラッキングされている領域に対応するトラッキングエントリを選択的に変更する。カウントフィールドによって、トラッキングされている領域に対応するいくつのキャッシュ線がクリーニングされる(例えば、システムメモリ30に書き込まれる)候補であるのかが示される。1つの実施形態において、クリーニングには、対応するキャッシュ線をそのキャッシュ線が存在するキャッシュからクリーニングすることが含まれる。例えば、システムキャッシュ26が存在する場合、これには、対応するキャッシュ線をシステムキャッシュ26からクリーニングすることが含まれてよい。システムキャッシュ26が存在しない場合、クリーニングには、プロセッサのうちの1つに存在するキャッシュのうちの1つから対応するキャッシュ線をクリーニングすることが含まれてもよい。1つの実施形態において、クリーニングには、プロセッサのうちの1つに存在するキャッシュのうちの1つから、およびシステムキャッシュ26から、対応するキャッシュ線をクリーニングすることが含まれてよい。クリーニングには、対応するキャッシュ線からシステムメモリ30にデータをフラッシュすることが含まれ、ここで、フラッシュされたキャッシュ線は無効化されてもよい。または、クリーニングには、キャッシュ線を無効化することなく、更新されたキャッシュ線のデータを用いてシステムメモリ30を更新することによってキャッシュ線をクリーニングすることが含まれてよい。
【0027】
図8には、本発明の1つの実施形態にしたがってキャッシュクリーニングを実行するためにトラッキングアレイ46を使用する方法のフローチャートを示す。フローは判定ブロック84で開始し、クリーニングが進行中であるか否かが判定される。1つの実施形態において、キャッシュクリーニング制御回路49内に格納されるクリーニング進行インジケータ55を用いて、進行中のクリーニングが存在するか否かを示す。判定ブロック84において進行中のクリーニングが既に存在している場合、フローは終了に進む。現在進行中のクリーニングが存在しない場合、フローは判定ブロック86に進み、そのカウント値が所定のカウント閾値を満たすかまたは超えるトラッキングエントリがトラッキングアレイ46内に存在するか否かが判定される。例えば、キャッシュクリーニング制御回路49は、トラッキングアレイ46のエントリを監視することが可能であり、クリーニングの潜在的な候補を識別するべく、クロックサイクル毎に、各カウントフィールドと所定のカウント閾値との比較を実行してもよい。1つの実施形態において、この所定のカウント閾値は8であり、そのキャッシュ線の状態フィールドのうちの8つ以上が、キャッシュ線がクリーニングされる準備がされていることを示す(例えば、ダーティキャッシュ線を示す)とき、そのトラッキングエントリはクリーニングの候補である。よって、閾値を満たすトラッキングエントリが存在しない場合、フローは終了に進む。しかしながら、1つ以上のトラッキングエントリが閾値を満たす場合、フローはブロック88に進み、その所定の閾値を満たす1つのトラッキングエントリが選択される。すなわち、そのカウントが閾値を満たす複数のエントリが存在する場合、キャッシュクリーニング制御回路49は1つのエントリを選択するために任意の基準を使用可能である。フローはブロック90に進み、クリーニング進行インジケータ55は、クリーニングが現在進行中であることを示すように設定される。フローはブロック92に進み、トラッキングアレイ46の選択されたトラッキングエントリに対するポインタが、キャッシュクリーニング制御回路49のエントリインジケータ格納回路57に格納される。フローは次にブロック94に進み、キャッシュクリーニング制御回路49内のキャッシュ線クリーニングカウンタ52は、クリーニングされるべきキャッシュ線の数を示すように初期化される。例えば、1つの実施形態において、選択されたトラッキングエントリのトラッキングビットフィールドによって示されるすべてのダーティキャッシュ線がクリーニングされるべき場合、キャッシュ線クリーニングカウンタは、選択されたトラッキングエントリのカウント値に設定される。しかしながら、一部のキャッシュ線のみがクリーニングされる場合、キャッシュ線クリーニングカウンタは、その値に初期化されてもよい。例えば、1つの実施形態において、キャッシュ線は、各クリーニング処理において、4つまたは8つのキャッシュ線からなる群の単位でクリーニングされてもよい。キャッシュ線クリーニングカウンタ52を初期化した後、フローはブロック96に進み、選択されたトラッキングエントリのトラッキングビットフィールドのキャッシュ線の状態フィールドを用いて、クリーニングの必要なダーティキャッシュ線が選択される。例えば、キャッシュ線0の状態フィールドから開始して論理レベル1が見出されるまで、各キャッシュ線の状態フィールドを通じてトラッキングビットフィールドを走査(スキャン)することによって、ダーティキャッシュ線が選択されることが可能である。代替の実施形態では、選択されたトラッキングエントリのトラッキングビットフィールドに基づきクリーニングされるキャッシュ線を選択するために、別の方法が用いられてもよい。
【0028】
キャッシュ線の状態フィールドにしたがってダーティキャッシュ線が選択された後、フローはブロック98に進み、選択されたキャッシュ線に格納されているダーティデータがシステムメモリ30に書き込まれるように、選択されたダーティキャッシュ線を含むキャッシュにクリーニングまたはフラッシュのトランザクションが送られる。例えば、システムキャッシュ26の場合、クリーニングまたはフラッシュのトランザクションがシステムキャッシュ26に対し与えられる。キャッシュ線が他のキャッシュ(キャッシュ14またはキャッシュ18など)に存在する場合、クリーニングまたはフラッシュのトランザクションは、クリーニングまたはフラッシュトランザクションをブロードキャストすることによって、または選択されたトラッキングエントリのキャッシュフィールドの選択された状態のプロセッサインジケータを用いてクリーニングまたはフラッシュのトランザクションを適切なプロセッサキャッシュに与えることによって、適切なキャッシュに送られることが可能である。上述の通り、クリーニングおよびフラッシュトランザクションの両方において、ダーティキャッシュデータのシステムメモリ30への書込が生じる。しかしながら、フラッシュトランザクションの場合には対応するキャッシュ線も無効化されるのに対し、クリーニングの場合には対応するキャッシュ線は無効化されない。
【0029】
ブロック98の後、フローはブロック100に進み、選択されたトラッキングエントリのカウントフィールドがデクリメントされ、選択されたダーティキャッシュ線に対応するキャッシュ線の状態フィールドは、それがもはやクリーニングの候補ではないことを示すように変更される(フラッシュまたはクリーニングのトランザクションによってクリーニングされたばかりなので)。フローはブロック102に進み、キャッシュ線クリーニングカウンタ52がデクリメントされる。フローは判定ブロック104に進み、キャッシュ線クリーニングカウンタ52が失効したか否かを判定する。キャッシュ線クリーニングカウンタ52が失効していない場合、フローはブロック96に戻り、選択されたトラッキングエントリのキャッシュ線の状態フィールドを用いて、クリーニングの対象とするダーティキャッシュ線が再び選択される。フローは上述の通りに進む。しかしながら、判定ブロック104においてキャッシュクリーニングカウンタ52が失効した場合、フローはブロック106に進み、クリーニングがもはや進行中でないことを示すように、クリーニング進行インジケータ55がクリアされる。
【0030】
したがって、一実施形態では、ブロック88に到るとクリーニングの対象となるトラッキングエントリが選択され、ブロック88,90,92,94,96,98,100,102,104,106によって与えられるすべてのクリーニング/フラッシュを実行するには、システムメモリ30内の1つの行を活性化するだけでよい。また、ブロック96,98,100,102,104を通じる各反復によって、システムメモリ30内の同じ行がアクセスされる。したがって、現在の行を閉じるのに続けて新たな行を開く必要なしに、システムメモリ30の特定の行に多数の書込を実行することが可能である。例えば、キャッシュ線クリーニングカウンタを8に初期化した場合、最初のアクセスについては、新たな行が活性化され、システムメモリ30の新たな行に対応するバンクの行バッファに格納される必要があるが、続く7つのアクセスについては、同じ行が必要であることが分かっているので、一連の書込についてそのバンクの異なる行を閉じて活性化する際のさらなる遅延は発生しない。このようにして、システムキャッシュ26の通常のキャッシュポリシにしたがってクリーニングされるより前にキャッシュ線のクリーニングが行われるので、遅延が減少され得る。
【0031】
さらに図8を参照すると、ブロック106の後、フローは判定ブロック107に進み、選択されたトラッキングエントリのカウントフィールドが失効したか否かを判定する。選択されたトラッキングエントリのカウントフィールドが失効していない場合、フローは終了に進む。なお、クリーニングされる各キャッシュ線についてカウントフィールドをデクリメントする(ブロック100において)ことによって、トラッキングエントリをクリーニングする後のチェック(ブロック88においてなど)の際、現在のトラッキングエントリのカウントがデクリメントされ、もはやカウント閾値を満たさなくなるために、もはやクリーニングの候補ではない場合がある。また、カウントが失効し、ゼロになる可能性もある。この場合、判定ブロック107を参照すると、フローはブロック108に進み、選択されたトラッキングエントリのトラッキングされる領域に対応するキャッシュ線はクリーニングの候補ではないので、選択されたトラッキングエントリは無効化される。フローは終了に進む。
【0032】
代替の一実施形態では、トラッキングエントリが失効する時、そのトラッキングエントリは無効化され得る。むしろ、図7のブロック70における場合など、新たなエントリが割り当てられる時、エントリは無効化され得る。この場合、図8の判定ブロック107またはブロック108は存在しない。むしろ、ブロック106の後、フローは終了に進む。
【0033】
なお、図7および8のフローはシステム10において続けて動作してもよい。すなわち、各アクセスに応答して図7のフローが生じ、例えば、各クロックサイクルまたは複数のクロックサイクル毎に図8のフローが生じてもよい。よって、図7および8のフローはシステム10において並列に動作してもよい。加えて、図7および8のフローは必ずしも1つのクロックサイクルで生じる必要はない。例えば、図8において、ブロック96,98,100,102,104を通じた各反復は、異なるクロックサイクルにおいて生じてもよい。さらにまた、上述のように、システムキャッシュ26が存在しないでもよく、その場合、キャッシュクリーニング回路24はシステム10の1つ以上のマスタに属する1つ以上のキャッシュに対する更新を監視する。
【0034】
以上、キャッシュクリーニング回路24を用いて、システムメモリ30の様々な領域に対する変更をトラッキングすること(システムメモリ30の行のダーティキャッシュ線をトラッキングすることなど)ができることが理解される。ダーティキャッシュ線のトラッキングを用いて、特定の領域または行に対応するダーティキャッシュ線がクリーニングされる時を判定することが可能である。このクリーニングによってメモリの同じ領域(システムメモリ30の同じ行など)のキャッシュ線のフラッシュまたはクリーニングが行われるので、システムメモリ30の行バッファ内における行の競合の発生を減少させることによって、遅延が減少され得る。例えば、クリーニング処理によってクリーニングされるダーティキャッシュ線は同じ領域に対応するので、クリーニングを実行するとともに連続して新たな領域を閉じて開く必要はない。したがって同じ領域に対応するダーティキャッシュ線のセットをクリーニングするクリーニング処理における最初のアクセスでは遅延が生じる場合があるが、そのクリーニング処理の続くアクセスではさらなる遅延は生じない。
【0035】
本発明を実装する装置の大部分は当業者には周知の電子部品及び回路からなるので、回路の詳細については、上記に説明したような必要と認識される程度以上には説明していない。これは、本発明の基本的な概念の理解と認識のためであり、また、本発明の教示を不明瞭にしたり、注意をそらしたりしないようにするためである。
【0036】
上記実施形態のいくつかは、異なる情報処理システムを用いて実装し得る。例えば、図1及びそれについての議論は、例示の情報処理アーキテクチャを説明するが、この例示的なアーキテクチャは、本発明の種々の態様を議論する上で有用な参照を提供するために示されているに過ぎない。もちろん、アーキテクチャの説明は議論のために単純化されており、これは、本発明に従って用いられ得る適切なアーキテクチャの多くの異なるタイプのうちの一つに過ぎない。当業者であれば、論理回路ブロック間の境界は、単に説明のためのものであり、代替実施形態においては、論理回路ブロックまたは回路要素を融合させることができ、種々の論理回路ブロック又は回路要素による機能を分解させることもできる。
【0037】
本明細書に記載された回路は単に例示のためのものであり、実際に、同じ機能を実行できる他の多くの回路が実装され得る。抽象的であるが、しかし明確な意味において、同じ機能を達成する部品の任意の組み合わせは有効に「関連付けられ」、所望の機能を達成する。従って、回路及び介在部品に関わらず、特定機能を達成するために組み合わせられた任意の2つの構成要素は互いに「関連付けられた」とみなされ得る。同様に、そのように「関連付けられた」任意の2つの構成要素は、所望の機能を達成するために互いに「動作可能に結合された」とみなし得る。
【0038】
例えば、1つの実施形態において、システム10の図示される素子は単一集積回路または同じデバイスに配置される回路である。システム10が、互いに相互接続される別の集積回路または別のデバイスの任意数を含んでもよい。例えば、メモリ30はマスタ12および14と同じ集積回路、別の集積回路または同じ集積回路にまたはシステム10のほかの素子から個別に離れる別の周辺装置またはスレーブに配置されてもよい。
【0039】
さらに、当業者は、上述した機能的な動作の間の境界は、単なる例示であることを認識するであろう。複数の機能的な動作は、単一の動作に結合され、及び/又は、機能的な単一の動作は、追加の動作に分配されうる。更に、別の実施形態では、特定の動作の複数の例を含み、動作の順序は種々の他の実施形態において、変更可能である。
【0040】
前述の詳細な説明は、具体的な例示の実施の形態を参照しながら本発明を説明するものである。例えば、システムキャッシュ26のようなシステムキャッシュが存在しないことが可能である。しかし、添付の特許請求の範囲で定義された本発明の範囲から逸脱することなく様々な修正及び変更が加えられ得ることが理解されよう。詳細な説明及び添付図面は限定するものではなく、単に例と見なされるべきであり、そのような修正又は変更は、すべて本明細書で説明され定義された本発明の範囲内に入るものとする。以上、具体的な実施例に関して、利益、他の利点、及び問題の解決方法について説明してきたが、利益、利点、問題の解決方法、及びこうした利益、利点、問題の解決方法をもたらし、又はより顕著なものにする構成要素は、全ての請求項又は何れかの請求項において重要とされ、要求され、不可欠とされる機能や構成要素であると見なされるべきではない。
【0041】
「結合された」という語は必ずしも直接的または間接的に、また機械的に結合する状態を意味するものではない。
特に明記しない限り、「第1」及び「第2」等の用語は、そのような用語が述べる要素間を任意に区別するために用いる。したがって、これらの用語は、必ずしもそのような要素の時間的な又は他の優先順位付けを示そうとするものではない。
【0042】
以下は本発明の様々な実施形態である。
項目1は方法を含み、この方法は、キャッシュ線に関連する状態インジケータを格納する状態インジケータ格納工程であって、キャッシュ線は、システムメモリの1つの領域の対応するユニークなセクションに各々関連する複数のキャッシュ線のうちの1つであり、状態インジケータは、ダーティ指示を含み、ダーティ指示は、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補であることを示し、状態インジケータは、対応するキャッシュ線に各々関連する複数の状態インジケータのうちの1つである、前記工程と、前記システムメモリの領域について、前記複数の状態インジケータのうちダーティ指示を含む状態インジケータの数を判定する工程と、判定したダーティ指示の数が閾値を超える場合、キャッシュ線を選択し、そのキャッシュ線に格納されているデータを前記システムメモリの領域の関連するセクションに書き込み、そのキャッシュ線に対応する状態インジケータにクリーン指示を格納する工程であって、クリーン指示は、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補でないことを識別する前記工程と、を備える。項目2は項目1を含み、判定したダーティ指示の数が閾値を超える場合、キャッシュ線を選択し、そのキャッシュ線に格納されているデータを前記システムメモリの領域の関連するセクションに書き込み、前記システムメモリの領域の関連する選択した数のキャッシュ線についてクリーン指示を格納する工程であって、該選択した数のキャッシュ線の各々は、ダーティ指示を含む関連する状態インジケータを有する前記工程をさらに備える。項目3は項目1を含み、状態インジケータ格納工程は、前記システムメモリの領域に関連するトラッキングエントリに状態インジケータを格納する工程をさらに備え、トラッキングエントリは、前記システムメモリの領域に関連するキャッシュ線に関連する複数の状態インジケータの各々を含む。項目4は項目3を含み、トラッキングアレイにトラッキングエントリを格納する工程をさらに備え、トラッキングアレイは複数のトラッキングエントリを含み、複数のトラッキングエントリの各々はシステムメモリのユニークな領域に関連する。項目5は項目4を含み、トラッキングアレイを格納するメモリに結合されているキャッシュクリーニング制御回路を用いて、前記状態インジケータの数の判定および前記キャッシュ線の選択を行う工程をさらに備える項目6は項目4を含み、トラッキングエントリに関連するカウンタにダーティ指示を含む状態インジケータの数を格納する工程をさらに備え、該状態インジケータの数の格納は複数のトラッキングエントリの各々について行われる。項目7は項目4を含み、アクセスアドレスとメモリアクセスに関連する1つ以上の属性とを含むメモリアクセスメッセージを受信する工程と、いずれのトラッキングエントリもアクセスアドレスにより参照されるシステムメモリの領域に一致しない場合、該トラッキングアレイに新たなエントリを割り当てる工程であって、前記メモリアクセスメッセージによって、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記1つ以上の属性が示す場合、該新たなエントリはアクセスアドレスにより参照されるシステムメモリの領域に対応する、前記工程と、前記メモリアクセスメッセージによって、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記1つ以上の属性が示す場合、状態インジケータ格納工程を実行する工程であって、状態インジケータは、トラッキングアレイの新たなエントリと、アクセスアドレスにより参照されるシステムメモリの領域に一致するトラッキングエントリとのうちの1つに格納される、前記工程と、をさらに備える。項目8は項目7を含み、前記メモリアクセスメッセージによって、キャッシュ線が、続くアクセスの結果として、そのキャッシュ線に格納されているデータを書き込む候補とされる意図が示されることを、前記1つ以上の属性が示す場合、そのキャッシュ線に対応する状態インジケータにクリーン指示を格納する工程をさらに備える。項目9は項目8を含み、前記メモリアクセスメッセージによって、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記1つ以上の属性が示す場合、関連するトラッキングエントリのダーティ指示を含む複数の状態インジケータの数を増加させる工程と、前記メモリアクセスメッセージによって、キャッシュ線が、続くアクセスの結果として、そのキャッシュ線に格納されているデータを書き込む候補とされる意図が示されることを、前記1つ以上の属性が示す場合、関連するトラッキングアレイのダーティ指示を含む複数の状態インジケータの数を減少させる工程と、をさらに備える。項目10は項目1を含み、前記複数のキャッシュ線は、システムキャッシュメモリと、各々プロセッサに対応する複数のプロセッサキャッシュメモリとのうちの1つ以上に備えられている。
【0043】
項目11は、プロセッサと周辺デバイスとのうちの1つを各々備える1つ以上のマスタと、複数のシステムメモリバンクを備えるシステムメモリであって、各システムメモリバンクは複数のユニークな行を備え、各行はシステムメモリの1つの領域に対応する、システムメモリと、前記1つ以上のマスタに結合されており、複数のキャッシュ線を格納する1つ以上のキャッシュメモリであって、各キャッシュ線は、前記複数の行のうちの1つの行の対応するユニークなセクションに関連しており、各キャッシュ線は、1つ以上のプロセッサによるアクセスのために行の対応するユニークなセクションに関連するデータを格納するように構成されており、前記1つ以上のキャッシュメモリは、システムキャッシュと、対応するプロセッサに関連する専用キャッシュとのうちの1つ以上を含む、キャッシュメモリと、前記1つ以上のキャッシュメモリに結合されているキャッシュクリーニング回路と、を備えるシステムであって、キャッシュクリーニング回路は、複数のキャッシュ線のうちの対応するキャッシュ線に各々関連する複数の状態インジケータを格納し、各状態インジケータは、対応するキャッシュ線が、前記行の対応するユニークなセクションにそのキャッシュ線に格納されているデータを書き込む候補であることを示すダーティ指示と、対応するキャッシュ線が、そのキャッシュ線に格納されているデータを書き込む候補でないことを示すクリーン指示とのうちの1つの指示を含み、ダーティ指示を含む状態インジケータの数が閾値を超えている行を選択し、選択した行について、ダーティ指示を含む対応する状態インジケータを各々有する1つ以上のキャッシュ線を選択し、その行の対応するセクションに、選択したキャッシュ線に格納されているデータを書き込み、その状態インジケータにクリーン指示を格納するように構成されている、システムである。項目12は項目11を含み、キャッシュクリーニング回路は、前記行に関連したトラッキングエントリに状態インジケータを格納するようにさらに構成されており、該トラッキングエントリは、前記行に関連したキャッシュ線に関連した複数の状態インジケータの各々を含む。項目13は項目12を含み、キャッシュクリーニング回路は、トラッキングアレイを格納するトラッキングアレイメモリをさらに備え、トラッキングアレイは複数のトラッキングエントリを含み、前記複数のトラッキングエントリの各々はユニークな行に関連している。項目14は項目13を含み、キャッシュクリーニング回路は、トラッキングエントリに関連するカウンタにそのトラッキングエントリにおけるダーティ指示の数を格納するようにさらに構成されている。項目15は項目13を含み、キャッシュクリーニング回路は、前記1つ以上のマスタのうちの1つのマスタから、アクセスアドレスとメモリアクセスに関連する1つ以上の属性とを含むメモリアクセスメッセージを受信し、トラッキングエントリがアクセスアドレスにより参照される行に一致するか否かを判定し、次の場合、すなわち、いずれのトラッキングエントリもアクセスアドレスにより参照される行に一致せず、かつ、前記メモリアクセスメッセージによって、キャッシュ線が、前記行の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記1つ以上の属性が示す場合、該アクセスアドレスにより参照される行に対応するトラッキングアレイに新たなアレイを割り当て、前記メモリアクセスメッセージによって、キャッシュ線が、前記行の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記1つ以上の属性が示す場合、そのキャッシュ線に関連する状態インジケータの格納を実行し、状態インジケータは、トラッキングアレイの新たなエントリと、アクセスアドレスにより参照される行に一致するトラッキングエントリとのうちの1つに格納され、前記メモリアクセスメッセージによって、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記1つ以上の属性が示す場合、関連するトラッキングエントリのダーティ指示を含む複数のインジケータの数を増加させるようにさらに構成されている。項目16は項目15を含み、キャッシュクリーニング回路は、前記メモリアクセスメッセージによって、キャッシュ線が、続くアクセスの結果として、そのキャッシュ線に格納されているデータを書き込む候補とされる意図が示されることを、前記1つ以上の属性が示す場合、そのキャッシュ線に関連する状態インジケータにクリーン指示を格納し、前記メモリアクセスメッセージによって、キャッシュ線が、続くアクセスの結果として、そのキャッシュ線に格納されているデータを書き込む候補とされる意図が示されることを、前記1つ以上の属性が示す場合、関連するトラッキングアレイのダーティ指示を含む状態インジケータの数を減少させるようにさらに構成されている。項目17は項目12を含み、トラッキングエントリはビットフィールドを備え、ビットフィールドの1つ以上のビットは複数の状態インジケータのうちの1つを格納する。項目18は項目12を含み、前記複数の状態インジケータの各々は、関連するキャッシュ線と、関連するキャッシュ線に対する書込指示とを格納するキャッシュメモリの識別子を含む。
【0044】
項目19は方法を含み、この方法は、1つ以上のトラッキングエントリが所定の閾値を超える数のダーティ指示を含むか否かを判定する工程であって、各トラッキングエントリは、システムメモリの同じ領域のユニークなセクションに関連する対応するキャッシュ線を各々有する複数のキャッシュ線フィールドを含む、前記工程と、閾値を超える数のダーティ指示数を有する1つ以上のトラッキングエントリのうちの1つのトラッキングエントリを選択する工程と、選択したトラッキングエントリに関連するダーティキャッシュ線を選択するキャッシュ線選択工程と、選択したキャッシュ線を格納するキャッシュにトランザクションを送信するトランザクション送信工程であって、トランザクションは、キャッシにダーティデータをシステムメモリに書き込ませるように構成されている、前記工程と、もはや前記キャッシュ線がシステムメモリにデータを書き込むための候補ではないことを示すように、選択したトラッキングエントリに対応する状態インジケータにクリーン指示を格納するクリーン指示格納工程と、所定の数のキャッシュ線について、キャッシュ線選択工程、トランザクション送信工程、およびクリーン指示格納工程を実行する工程と、を備える。項目20は項目19を含み、各トラッキングエントリについて、ダーティ指示のカウントを格納する工程であって、ダーティ指示はダーティデータを格納するキャッシュ線に対応する、前記工程と、トランザクション送信工程に続いて、関連するトラッキングエントリのダーティ指示の新たなカウントを格納する工程と、をさらに備える。

【特許請求の範囲】
【請求項1】
キャッシュ線に関連する状態インジケータを格納する状態インジケータ格納工程であって、
キャッシュ線は、システムメモリの1つの領域の対応するユニークなセクションに各々関連する複数のキャッシュ線のうちの1つであり、
状態インジケータは、ダーティ指示を含み、ダーティ指示は、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補であることを示し、
状態インジケータは、対応するキャッシュ線に各々関連する複数の状態インジケータのうちの1つである、前記工程と、
前記システムメモリの領域について、前記複数の状態インジケータのうちダーティ指示を含む状態インジケータの数を判定する工程と、
判定したダーティ指示の数が閾値を超える場合、
キャッシュ線を選択し、
そのキャッシュ線に格納されているデータを前記システムメモリの領域の関連するセクションに書き込み、
そのキャッシュ線に対応する状態インジケータにクリーン指示を格納する工程であって、クリーン指示は、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補でないことを識別する前記工程と、
を備える方法。
【請求項2】
判定したダーティ指示の数が閾値を超える場合、キャッシュ線を選択し、そのキャッシュ線に格納されているデータを前記システムメモリの領域の関連するセクションに書き込み、前記システムメモリの領域の関連する選択した数のキャッシュ線についてクリーン指示を格納する工程であって、該選択した数のキャッシュ線の各々は、ダーティ指示を含む関連する状態インジケータを有する前記工程をさらに備える、請求項1に記載の方法。
【請求項3】
状態インジケータ格納工程は、
前記システムメモリの領域に関連するトラッキングエントリに状態インジケータを格納する工程をさらに備え、
トラッキングエントリは、前記システムメモリの領域に関連するキャッシュ線に関連する複数の状態インジケータの各々を含む、請求項1に記載の方法。
【請求項4】
トラッキングアレイにトラッキングエントリを格納する工程をさらに備え、
トラッキングアレイは複数のトラッキングエントリを含み、複数のトラッキングエントリの各々はシステムメモリのユニークな領域に関連する、請求項3に記載の方法。
【請求項5】
トラッキングアレイを格納するメモリに結合されているキャッシュクリーニング制御回路を用いて、前記状態インジケータの数の判定および前記キャッシュ線の選択を行う工程をさらに備える、請求項4に記載の方法。
【請求項6】
トラッキングエントリに関連するカウンタにダーティ指示を含む状態インジケータの数を格納する工程をさらに備え、
該状態インジケータの数の格納は複数のトラッキングエントリの各々について行われる、請求項4に記載の方法。
【請求項7】
アクセスアドレスとメモリアクセスに関連する1つ以上の属性とを含むメモリアクセスメッセージを受信する工程と、
いずれのトラッキングエントリもアクセスアドレスにより参照されるシステムメモリの領域に一致しない場合、該トラッキングアレイに新たなエントリを割り当てる工程であって、前記メモリアクセスメッセージによって、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記1つ以上の属性が示す場合、該新たなエントリはアクセスアドレスにより参照されるシステムメモリの領域に対応する、前記工程と、
前記メモリアクセスメッセージによって、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記1つ以上の属性が示す場合、状態インジケータ格納工程を実行する工程であって、状態インジケータは、トラッキングアレイの新たなエントリと、アクセスアドレスにより参照されるシステムメモリの領域に一致するトラッキングエントリとのうちの1つに格納される、前記工程と、をさらに備える、請求項4に記載の方法。
【請求項8】
前記メモリアクセスメッセージによって、キャッシュ線が、続くアクセスの結果として、そのキャッシュ線に格納されているデータを書き込む候補とされる意図が示されることを、前記1つ以上の属性が示す場合、そのキャッシュ線に対応する状態インジケータにクリーン指示を格納する工程をさらに備える、請求項7に記載の方法。
【請求項9】
前記メモリアクセスメッセージによって、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記1つ以上の属性が示す場合、関連するトラッキングエントリのダーティ指示を含む複数の状態インジケータの数を増加させる工程と、
前記メモリアクセスメッセージによって、キャッシュ線が、続くアクセスの結果として、そのキャッシュ線に格納されているデータを書き込む候補とされる意図が示されることを、前記1つ以上の属性が示す場合、関連するトラッキングアレイのダーティ指示を含む複数の状態インジケータの数を減少させる工程と、をさらに備える請求項8に記載の方法。
【請求項10】
前記複数のキャッシュ線は、システムキャッシュメモリと、各々プロセッサに対応する複数のプロセッサキャッシュメモリとのうちの1つ以上に備えられている、請求項1に記載の方法。
【請求項11】
プロセッサと周辺デバイスとのうちの1つを各々備える1つ以上のマスタと、
複数のシステムメモリバンクを備えるシステムメモリであって、
各システムメモリバンクは複数のユニークな行を備え、
各行はシステムメモリの1つの領域に対応する、システムメモリと、
前記1つ以上のマスタに結合されており、複数のキャッシュ線を格納する1つ以上のキャッシュメモリであって、
各キャッシュ線は、前記複数の行のうちの1つの行の対応するユニークなセクションに関連しており、
各キャッシュ線は、1つ以上のプロセッサによるアクセスのために行の対応するユニークなセクションに関連するデータを格納するように構成されており、
前記1つ以上のキャッシュメモリは、システムキャッシュと、対応するプロセッサに関連する専用キャッシュとのうちの1つ以上を含む、キャッシュメモリと、
前記1つ以上のキャッシュメモリに結合されているキャッシュクリーニング回路と、を備えるシステムであって、
キャッシュクリーニング回路は、
複数のキャッシュ線のうちの対応するキャッシュ線に各々関連する複数の状態インジケータを格納し、各状態インジケータは、対応するキャッシュ線が、前記行の対応するユニークなセクションにそのキャッシュ線に格納されているデータを書き込む候補であることを示すダーティ指示と、対応するキャッシュ線が、そのキャッシュ線に格納されているデータを書き込む候補でないことを示すクリーン指示とのうちの1つの指示を含み、
ダーティ指示を含む状態インジケータの数が閾値を超えている行を選択し、
選択した行について、ダーティ指示を含む対応する状態インジケータを各々有する1つ以上のキャッシュ線を選択し、その行の対応するセクションに、選択したキャッシュ線に格納されているデータを書き込み、その状態インジケータにクリーン指示を格納するように構成されている、システム。
【請求項12】
キャッシュクリーニング回路は、前記行に関連したトラッキングエントリに状態インジケータを格納するようにさらに構成されており、該トラッキングエントリは、前記行に関連したキャッシュ線に関連した複数の状態インジケータの各々を含む、請求項11に記載のシステム。
【請求項13】
キャッシュクリーニング回路は、
トラッキングアレイを格納するトラッキングアレイメモリをさらに備え、
トラッキングアレイは複数のトラッキングエントリを含み、
前記複数のトラッキングエントリの各々はユニークな行に関連している、請求項12に記載のシステム。
【請求項14】
キャッシュクリーニング回路は、トラッキングエントリに関連するカウンタにそのトラッキングエントリにおけるダーティ指示の数を格納するようにさらに構成されている、請求項13に記載のシステム。
【請求項15】
キャッシュクリーニング回路は、
前記1つ以上のマスタのうちの1つのマスタから、アクセスアドレスとメモリアクセスに関連する1つ以上の属性とを含むメモリアクセスメッセージを受信し、
トラッキングエントリがアクセスアドレスにより参照される行に一致するか否かを判定し、
次の場合、すなわち、
いずれのトラッキングエントリもアクセスアドレスにより参照される行に一致せず、かつ、
前記メモリアクセスメッセージによって、キャッシュ線が、前記行の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記1つ以上の属性が示す場合、
該アクセスアドレスにより参照される行に対応するトラッキングアレイに新たなアレイを割り当て、
前記メモリアクセスメッセージによって、キャッシュ線が、前記行の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記1つ以上の属性が示す場合、そのキャッシュ線に関連する状態インジケータの格納を実行し、状態インジケータは、トラッキングアレイの新たなエントリと、アクセスアドレスにより参照される行に一致するトラッキングエントリとのうちの1つに格納され、
前記メモリアクセスメッセージによって、キャッシュ線が、前記システムメモリの領域の関連するセクションにそのキャッシュ線に格納されているデータを書き込む候補となることを、前記1つ以上の属性が示す場合、関連するトラッキングエントリのダーティ指示を含む複数のインジケータの数を増加させるようにさらに構成されている、請求項13に記載のシステム。
【請求項16】
キャッシュクリーニング回路は、
前記メモリアクセスメッセージによって、キャッシュ線が、続くアクセスの結果として、そのキャッシュ線に格納されているデータを書き込む候補とされる意図が示されることを、前記1つ以上の属性が示す場合、そのキャッシュ線に関連する状態インジケータにクリーン指示を格納し、
前記メモリアクセスメッセージによって、キャッシュ線が、続くアクセスの結果として、そのキャッシュ線に格納されているデータを書き込む候補とされる意図が示されることを、前記1つ以上の属性が示す場合、関連するトラッキングアレイのダーティ指示を含む状態インジケータの数を減少させるようにさらに構成されている、請求項15に記載のシステム。
【請求項17】
トラッキングエントリはビットフィールドを備え、ビットフィールドの1つ以上のビットは複数の状態インジケータのうちの1つを格納する、請求項12に記載のシステム。
【請求項18】
前記複数の状態インジケータの各々は、関連するキャッシュ線と、関連するキャッシュ線に対する書込指示とを格納するキャッシュメモリの識別子を含む、請求項12に記載のシステム。
【請求項19】
1つ以上のトラッキングエントリが所定の閾値を超える数のダーティ指示を含むか否かを判定する工程であって、
各トラッキングエントリは、システムメモリの同じ領域のユニークなセクションに関連する対応するキャッシュ線を各々有する複数のキャッシュ線フィールドを含む、前記工程と、
閾値を超える数のダーティ指示数を有する1つ以上のトラッキングエントリのうちの1つのトラッキングエントリを選択する工程と、
選択したトラッキングエントリに関連するダーティキャッシュ線を選択するキャッシュ線選択工程と、
選択したキャッシュ線を格納するキャッシュにトランザクションを送信するトランザクション送信工程であって、トランザクションは、キャッシにダーティデータをシステムメモリに書き込ませるように構成されている、前記工程と、
もはや前記キャッシュ線がシステムメモリにデータを書き込むための候補ではないことを示すように、選択したトラッキングエントリに対応する状態インジケータにクリーン指示を格納するクリーン指示格納工程と、
所定の数のキャッシュ線について、キャッシュ線選択工程、トランザクション送信工程、およびクリーン指示格納工程を実行する工程と、を備える方法。
【請求項20】
各トラッキングエントリについて、ダーティ指示のカウントを格納する工程であって、ダーティ指示はダーティデータを格納するキャッシュ線に対応する、前記工程と、
トランザクション送信工程に続いて、関連するトラッキングエントリのダーティ指示の新たなカウントを格納する工程と、をさらに備える請求項19に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2013−4091(P2013−4091A)
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願番号】特願2012−131985(P2012−131985)
【出願日】平成24年6月11日(2012.6.11)
【出願人】(504199127)フリースケール セミコンダクター インコーポレイテッド (806)
【Fターム(参考)】