説明

共有キャッシュメモリ制御

【課題】データ共有の効率性とキャッシュ記憶容量の使用との間でバランスのとれた共有キャッシュメモリの制御が可能なデータ処理装置を提供する。
【解決手段】データ処理システムは、複数のローカルキャッシュメモリと、共有キャッシュメモリとを有する、キャッシュ階層を含む。キャッシュライン毎に共有キャッシュメモリ内に記憶された状態データは、データのキャッシュラインがキャッシュメモリシステムの非包括的動作または包括的動作にしたがって記憶または管理されているかどうかを制御するために用いられる。スヌープトランザクションは、データのキャッシュラインが一意的であるかまたは非一意的であるかどうかを示すデータに基づいてフィルタリングされる。非包括的動作から包括的動作への切り換えは、データのキャッシュラインを要求する、受け取られたトランザクションのトランザクション種別に応じて、実行されてもよい。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理システムの分野に関する。より具体的には、本発明は、データ処理システム内の共有キャッシュメモリの制御に関するものである。
【背景技術】
【0002】
複数レベルのキャッシュメモリをともなうデータ処理システムに提供することは周知である。例えば、複数のプロセッサコア等の複数のトランザクションソースを搭載するシステムは、これらのトランザクションソースのそれぞれに対する専用のローカルキャッシュメモリと、トランザクションソース間で共有される共有キャッシュメモリとを提供してもよい。例えば、個々のプロセッサコアは各プロセッサコア自体用のレベル1(L1)キャッシュを有し、緊密に結合されたプロセッサコアのクラスタは、階層においてL1キャッシュの上位に位置するレベル2(L2)キャッシュを共有してもよく、最終的にレベル3(L3)キャッシュは、プロセッサのクラスタ間で共有されてもよい。
【0003】
係るキャッシュ階層を、データの個々のキャッシュラインが、キャッシュ階層内のより多いキャッシュに記憶されてもよい、包括的モードにおいて作動させることが知られている。これは、データ共有に対してはより高い効率性を提供するが、しかしながら、より多くのキャッシュ記憶容量を消費するという欠点を有する。キャッシュ階層動作の他モードは、非包括的モード(排他的モード)である。このモードでは、所与のデータのキャッシュラインは、通常、キャッシュ階層の1つのキャッシュメモリのみの中に記憶される。これは、使用されるキャッシュ記憶量を低減するが、データ共有に対しては効率がより低くなる。
【発明の概要】
【課題を解決するための手段】
【0004】
1つの態様から観ると、本発明は、
その各々がローカルキャッシュメモリを有する複数のトランザクションソースと、
前記複数のトランザクションソースに接続された共有キャッシュメモリと、
を備え、
前記共有キャッシュメモリは、記憶されたデータの各キャッシュライン、または記憶されたデータのキャッシュラインの各範囲のうちの少なくとも1つを、
(i)包括的モード、および
(ii)非包括的モード、
のうちの個別に選択可能な1つにしたがって記憶するように動作するように構成された、データを処理するための装置を提供する。
【0005】
本発明は、共有キャッシュメモリを、個々のキャッシュラインに基づいて、またはキャッシュラインの個々の範囲に基づいて選択された包括的モード動作と非包括的モード動作の両方に対応する(例えば、メモリアドレス空間において近接するN個の範囲のキャッシュラインの範囲が、非包括的モードまたはおよび包括的モードのうちの1つで記憶されることの間でともに切り替えられる)ように形成することができることを認識する。このことにより、重み付けされたデータ共有の効率性とキャッシュ記憶容量の使用との間で有利なバランスが達成されることができる。
【0006】
データのキャッシュラインが包括的モードまたは非包括的モードで記憶されるかどうかの制御を、ディレクトリ回路等の専用の別回路により実行することは可能であるが、共有キャッシュメモリが共有キャッシュメモリに記憶された状態データを用いることにより、キャッシュラインを包括的モードまたは非包括的モードのどちらで記憶するかをキャッシュライン毎に制御するならば、簡便且つ効果的である。
【0007】
個々のキャッシュラインに適用されるモードを制御するために用いられる状態データは、多様な異なる形態を取ることができる。いくつかの実施形態においては、共有キャッシュメモリは、共有キャッシュメモリに記憶された各キャッシュラインに対する、複数のトランザクションソースのうちの所与の1つのトランザクションソースに関連付けられる一意的状態データを記憶し、この一意的状態データは、データのキャッシュラインが、複数のトランザクションソースのうちの任意の他のローカルのキャッシュメモリに記憶されているかどうかを、すなわち、データが1つのトランザクションソースに対して一意的に記憶されるか、または複数のトランザクションソースに対して非一意的に記憶されるかどうかを、示す。
【0008】
共有キャッシュメモリは、データのそのキャッシュラインに関連付けられた1つまたは複数のトランザクションソースを特定するデータのキャッシュラインに対するトランザクションソース特定データも記憶してもよい。したがって、トランザクションソース特定データは、そのトランザクションソースに対して一意的に記憶された共有キャッシュメモリ内のデータのキャッシュラインと関連付けられた個別のトランザクションソースを示してもよく、または、トランザクションソース特定データは、共有キャッシュメモリ内に記憶されたキャッシュラインデータに関連付けられた複数のトランザクションソースを特定するトランザクションソース特定データを代替的に記憶してもよい。トランザクションソース特定データの個々の項目も、データのキャッシュラインを記憶する可能性がある複数のトランザクションソースを特定する可能性があり(すなわち、非正確である)、そのため、スヌープ動作が必要となる(例えば、特定の範囲内における、すべての偶数番目のトランザクションソース、全トランザクションソース、その他)。
【0009】
オーバーヘッドが低い実施形態は、トランザクションソース特定データが複数のトランザクションソースの中から単一のトランザクションソースを特定する実施形態である。2つ以上のトランザクションソースがデータのキャッシュラインと関連付けられている場合、係る実施形態においては、トランザクションソース特定データは、これらの複数のトランザクションソースを追跡することができない。他の実施形態においては、より多くのリソースがトランザクションソース特定データに提供されてもよく、それにより、トランザクションソース特定データが、最高で、複数のトランザクションソースのうちの適切な部分集合まで(すなわち、2つ以上だが、全部より少ないトランザクションソース)を、データのキャッシュラインと関係づけられたものとして特定する場合がある可能性がある。
【0010】
スヌープ要求は、スヌープ要求生成回路により生成されてもよい。このスヌープ要求生成回路は、生成されたスヌープ要求をフィルタリングするために、上述の一意的状態データに依存して動作してもよい。
【0011】
いくつかの実施形態においては、スヌープ要求生成回路は、そのトランザクションが共有キャッシュメモリ内でヒットし、非包括的モードで記憶されている場合、他のトランザクションソースへのスヌープ要求の発生を抑制するために、複数のトランザクションソースのうちの1つから受け取られたデータのキャッシュラインへのトランザクション要求に応答するように構成される。非包括的モードが動作中である場合、キャッシュラインデータの単一コピーのみが記憶され、このコピーが共有キャッシュメモリに存在する(ヒットにより示される)場合、さらなるコピーをチェックし、いかなるスヌープ要求をも発行する必要はない。このことは、生成される必要があるスヌープ要求の個数を有利に削減し得る。
【0012】
他の実施形態においては、スヌープ要求生成回路は、キャッシュラインが包括的モードで記憶されていること、すなわち、データのキャッシュラインのコピーが2つ以上記憶され、したがって、スヌープ要求が少なくとも1つのローカルキャッシュメモリに対して発行されることが必要であること、を一意的状態データが示す場合、任意のスヌープ要求の生成の対象を、トランザクションソース特定データにより特定されたトランザクションソースに絞るために、共有キャッシュメモリにおいてヒットした複数のトランザクションソースのうちの1つから受け取られたデータのキャッシュラインに対するトランザクション要求に応答するように構成されてもよい。
【0013】
データのキャッシュラインは、デフォルトで、非包括的モードで記憶されてもよい。このことにより、キャッシュ階層内の記憶容量が保たれる。データのキャッシュラインは、トランザクションが、1つまたは複数の所定の種別のうちの1つを有するデータのキャッシュラインに対応して受け取られたとき、非包括的モードと包括的モードとの間で切り替えられてもよい。特定種別のトランザクションは、そのデータを包括的モードで記憶することにより達成される共有効率利益が、消費される追加的なキャッシュ記憶容量を正当化することよりも大きくなる程度まで、該当するデータが共有されることを示してもよい。
【0014】
モードにおける係る変化を示す場合がある1つの種別のトランザクションは、データのキャッシュラインをローカルキャッシュメモリへと読み込み、その後、ローカルキャッシュメモリに記憶されると、データのキャッシュラインに変更を加えられていない、トランザクションである。メモリシステム内で発行されるトランザクションは、それらのトランザクション種別を示す信号を伴う場合があることが知られている。本技術は、このことを、トランザクション種別を用いて、個々のデータのキャッシュラインを、非包括的モードで記憶および操作されることから、包括的モードで動作するように、選択的に切り替えることにより、利用するものである。
【0015】
いくつかの実施形態においては、共有キャッシュメモリは、異なるソースにより共有キャッシュメモリに記憶されたデータのキャッシュラインにおいてヒットする所与のトランザクションソースから、変更を加えない読み込みトランザクションを受け取ることに対して、そのデータのキャッシュラインをそのローカルキャッシュメモリに記憶するために所与のトランザクションソースに戻すことにより、データのキャッシュラインを、共有キャッシュメモリ内に記憶された状態に保つことと、キャッシュラインが複数のトランザクションソースと記憶され、かつ関連付けられていることを示すように、キャッシュラインに対する一意的状態データを設定することとにより応答するように、構成されてもよい。このことにより、非包括的モードでの処理から包括的モードでの処理へと、データのキャッシュラインの効果的な切り換えおよびマーク付けが行われる。
【0016】
他の実施形態においては、共有キャッシュメモリは、共有キャッシュメモリにおいてヒットせず、且つ異なるトランザクションソースのローカルキャッシュメモリにおいて記憶されたデータのキャッシュラインにヒットする、所与のトランザクションソースから、変更を加えられていない読み込みトランザクションを受け取ることに対して、そのデータのキャッシュラインをそのローカルキャッシュメモリに記憶するために所与のトランザクションソースに戻すことにより、データのキャッシュラインを、ヒットが検出されたローカルキャッシュメモリ内に記憶された状態に保つことと、データのキャッシュラインを共有キャッシュメモリに記憶することと、データのキャッシュラインが記憶され、かつ複数のトランザクションソースと関連付けられていることを示すように、キャッシュラインに対する一意的状態データを設定することとにより、応答するように、構成されてもよい。このようにして、データのキャッシュラインは、非包括的モードから包括的モードへと再び戻され、変更を加えられてない読み込みトランザクションであるトランザクション種別により示されるように共有することに対して、より容易に利用可能となる。
【0017】
前述のように、キャッシュラインを記憶するデフォルトのモードは非包括的モードであってもよく、したがって、共有キャッシュメモリにおけるデータのキャッシュラインに対するヒットが存在しない場合は、データのキャッシュラインを、デフォルトで、共有キャッシュメモリではなく、そのキャッシュラインデータにおけるトランザクションソースリクエストのローカルキャッシュメモリに記憶されることとなる。非包括的に記憶されたデータのキャッシュラインは、後にローカルキャッシュメモリからエビクトして出され、共有キャッシュメモリに戻されてもよい。一方、トランザクションソース特定データは、それを最初に要求したトランザクションソースと関連付けられたものとしてそのデータのキャッシュラインを特定し、したがって、そのデータのキャッシュラインを非包括的モード動作にしたがって引き続き操作する。
【0018】
システム内に含まれてもよいいくつかのトランザクションソースは、それらの独自のローカルキャッシュメモリを備えない場合もある。例えば、係るトランザクションソースは、メモリがマッピングされた簡単な入出力装置であってもよい。いくつかの実施形態においては、1つまたは複数の所定種別のトランザクションは、キャッシュラインの1部分に対する書き込み一意的トランザクション、キャッシュラインの全部に対する書き込み一意的トランザクション、およびキャッシュラインを後に再利用しない読み出しワンストランザクションのうちの1つまたは複数を含む。これらのトランザクション種別は、トランザクションソースが独自のローカルキャッシュメモリを有しない場合でも、データのキャッシュラインを共有キャッシュメモリに対して強制的に記憶するために用いられてもよい。このようにして記憶されたデータのキャッシュラインは、後にエビクトされるまで、共有キャッシュメモリのままであってもよい。このことが、ローカルキャッシュメモリを有さないトランザクションソースに対して、少なくとも何らかのキャッシュ能力を提供する。
【0019】
ローカルキャッシュメモリを有するトランザクションソースは、あらかじめ定められた種別が、共有され且つ後にデータのキャッシュラインに変更を加えない、読み込みである、特定のトランザクションを発行してもよい。係るトランザクションに応答して、データのキャッシュラインは、共有キャッシュメモリに、そしてトランザクションソースのローカルキャッシュメモリに、記憶されてもよい。すなわち、データのキャッシュラインは、デフォルトの非包括的モードをオーバーライドする包括的モードで記憶されてもよい。
【0020】
トランザクションソースは様々な異なる形態を取ってもよく、いくつかの形態は、汎用プロセッサコア、グラフィックス処理ユニット、その他であってもよいことが理解されるであろう。ローカルキャッシュメモリは、L1、L2キャッシュメモリ等、ローカルキャッシュメモリ自体の内に階層を含んでもよい。共有キャッシュメモリは、L3キャッシュメモリであってもよい。
【0021】
いくつかの実施形態においては、複数のトランザクションソースは、スヌープ要求および他のトランザクションを異なるトランザクションソース間で通信するように機能するリング型相互接続の形に接続されてもよい。このことは、顕著な再設計またはリエンジニアリングを必要とすることなく、追加的なトランザクションソースおよびさらなる共有キャッシュメモリがシステムに追加される場合がある拡張性に関して特に適合する、高速且つ効果的な通信機構を提供する。
【0022】
他の態様から観ると、本発明は、
その各々が、データを記憶するためのローカルキャッシュメモリ手段を有する、トランザクションを生成するための複数のトランザクションソース手段と、
データを記憶するための、前述の複数のトランザクションソース手段に接続された共有キャッシュメモリ手段と、
を備え、
前述の共有キャッシュメモリ手段は、記憶されたデータの各キャッシュライン、または記憶されたデータのキャッシュラインの各範囲のうちの少なくとも1つを、
(i)包括的モード、および
(ii)非包括的モード、
のうちの個別に選択可能な1つにしたがって記憶するように動作するように構成された、データ処理装置を提供する。
【0023】
さらなる態様から観ると、本発明は、
複数のトランザクションソースとのトランザクションを生成することと、
それぞれのデータを、前記複数のトランザクションソースのそれぞれのローカルキャッシュメモリに記憶することと、
データを、前記複数のトランザクションソースに接続された共有キャッシュメモリに記憶することと、
記憶されたデータの各キャッシュライン、または記憶されたデータのキャッシュラインの各範囲のうちの少なくとも1つを、
(i)包括的モード、および
(ii)非包括的モード、
のうちの個別に選択可能な1つにしたがって記憶するように、前記共有キャッシュメモリおよび前記ローカルキャッシュメモリを操作することと、
を含む、データ処理方法を提供する。
【0024】
本発明の、上述した、および他の、目的、特徴、および利点は、添付の図面と合わせて読まれるべき、例示的な実施形態に関する以下の詳細な説明から明らかであろう。
【図面の簡単な説明】
【0025】
【図1】複数のトランザクションソースを搭載し、各トランザクションソースが独自のローカルキャッシュメモリを有し、リング型の相互接続を介して共有キャッシュメモリに接続された、データ処理装置の概略図である。
【図2】共有キャッシュメモリの概略図である。
【図3】それぞれのキャッシュライン毎に記憶され、個別のキャッシュラインに対して、コヒーレンシおよび包括的/非包括的モード動作を制御するために用いられる、状態データの概略図である。
【図4】トランザクションソース特定データの代替的な形態の概略図である。
【図5】スヌープフィルタリングの制御を概略的に示すフローチャートである。
【図6】包括的モード動作と非包括的モード動作との間の切換がトランザクション種別に基づいていかに実施されるかを概略的に示すフローチャートである。
【0026】
図1は、メインメモリ6に接続された、システムオンチップ集積回路4の形態におけるデータ処理装置2を概略的に示す。システムオンチップ集積回路4は、3つのプロセッサクラスタ8、10、12を含む複数のトランザクションソースと、メモリコントローラ14と、独自のローカルキャッシュメモリを含まない入出力装置16とを含む。(実際には、ワークロードの共有を簡略化するために、偶数個のプロセッサクラスタを有することが好ましい。)共有キャッシュメモリ18は、リング型相互接続20を介して、これらのトランザクションソースの全部に対して接続される。異なる形態の相互接続、例えばクロスバー相互接続、が用いられてもよいことが理解されるであろう。
【0027】
プロセッサクラスタ8、10、12は、それぞれが、各プロセッサコアに関連付けられた個別のL1キャッシュ、およびプロセッサクラスタに対してローカルである共有L2キャッシュという形態で、2つの汎用プロセッサコアおよびローカルキャッシュメモリを含む。プロセッサクラスタ8、10、12は、L3キャッシュ18とのトランザクションに対応して、個別のトランザクションソースとして機能する。
【0028】
一般に、非包括的モード動作は、メインメモリ6からフェッチされ、共有キャッシュメモリ18と、トランザクションソース8、10、12内のローカルキャッシュメモリとを含むキャッシュ階層内に記憶されるデータに対して、デフォルトで採用される。(他の異なる実施形態例においては、デフォルトのモードが包括的であってもよい。)係るデフォルトの非包括的挙動は、データ項目をフェッチし、フェッチしたデータ項目を、そのデータ項目を要求したトランザクションソース8、10、12のローカルキャッシュメモリ内にのみ記憶する。そのローカルキャッシュメモリが後で満杯になると、データはエビクトされ、共有キャッシュメモリ18に記憶される場合がある。そのデータの単一のコピーは引き続き記憶され、最初にフェッチしたトランザクションソースと関連付けられたものとして共有キャッシュ内でマークされる。
【0029】
そのローカルキャッシュメモリ内に記憶されていないデータを、トランザクションソースが要求すると、該当するデータが共有キャッシュメモリ18内に記憶されているかどうかが最初にチェックされる。そのデータが共有キャッシュメモリ18内に記憶されていない場合、そのデータが、他の任意のトランザクションソースのローカルキャッシュメモリに記憶されているかどうかを判定するチェックがブロードキャストスヌープ要求により実施されてもよい。データのキャッシュラインが、共有キャッシュメモリ18にも、いずれのローカルキャッシュメモリにも存在しない場合、このデータはメインメモリ6からフェッチされてもよい。この実施形態例においては単一の共有キャッシュメモリ18のみが図示されていることが理解されるであろう。複数の共有キャッシュメモリ18が提供される場合があることも可能であり、例えば、各共有キャッシュメモリは、メモリアドレス空間の異なるエリアをキャッシュするように構成されてもよい。これは、より多くの共有キャッシュメモリをリング型相互接続20に追加することにより提供される、共有キャッシュメモリの量を拡大化するための便利な方法である。
【0030】
データの個々のキャッシュラインに適用されたデフォルトの非包括的モード動作は、データの個々のキャッシュラインが、データのキャッシュラインに向けられたトランザクションのトランザクション種別に依存して包括的モード動作にしたがって管理されるように、オーバーライドされてもよい。このことは、以下でさらに説明されるであろう。
【0031】
図2は、共有キャッシュメモリ18をより詳細に示す概略図である。この共有キャッシュメモリ18は、キャッシュコントローラ22と、スヌープ生成回路24と、キャッシュアレイ26とを含む。キャッシュアレイは、データの複数のキャッシュライン28を記憶する。データの各キャッシュライン28は、メインメモリ6から読み出されたデータ値のコピーからなる(これらのデータ値は続いてキャッシュ内で変更され、後にメインメモリ6へと書き戻されてもよい)、データペイロードを含む。コヒーレンシ制御管理のためのMESI状態データ(変更、排他、共有、無効を示す)だけでなく、一意的状態データ30およびトランザクションソース特定データ32も、各個別キャッシュラインと関連付けられる。
【0032】
データの各キャッシュラインに対する一意的状態データは、共有キャッシュメモリに記憶され、且つ、データのキャッシュラインが、複数のトランザクションソースのうちの他の任意のもののローカルキャッシュメモリに記憶されているかどうかを示すために、複数のトランザクションソースのうちの所与の1つと関連付けられる。したがって、一意的状態データは、そのデータの一意的なコピーが記憶されている(この場合、共有キャッシュメモリ内に、トランザクションソース特定データ32を介して、要求を最初に発したトランザクションソースに関連付けられて)か、またはそのデータの複数コピーが記憶され、それは非一意的であるかどうかを示す。
【0033】
トランザクションソース特定データ32は、該当するデータのキャッシュラインを最初に要求したトランザクションソースを特定するために用いられる異なる32個の値のうちの1個を指定することができる5ビットを含むデータのRNFIDフィールドのデータの形態を有してもよい。データのキャッシュラインが一意的であることを一意的状態データが示す場合、RNFIDフィールドは、トランザクションソースのうちのどのトランザクションソースに代わって、共有キャッシュメモリ18がそのデータのキャッシュラインを現在記憶しているかを示す。データキャッシュラインが非一意的である(すなわち複数のコピーがキャッシュシステムに記憶されている)ことが一意的状態データにより示される場合、RNFIDフィールドは無効である。
【0034】
他の実施形態例においては、当該するデータのキャッシュラインのコピーを現在記憶するトランザクションソースの適切な部分集合(2つ以上であるが、全部よりは少ない)を特定し、それにしたがって、向けられたスヌープ要求を提供し、それによりスヌープトラフィックが低減されるように、複数のRNFIDフィールドが適合されてもよい。共有キャッシュメモリ18内のスヌープ要求生成回路24は、キャッシュアレイ26内に記憶され、且つ、それに対してトランザクション要求が生成された、任意のデータのキャッシュライン28に対して、一意的状態データ30に依存するスヌープ要求を生成する。
【0035】
図3は、キャッシュラインに対して非包括的モード動作から包括的モード動作への切り替えを制御するために用いられる、各キャッシュライン毎に記憶された状態データを概略的に示す。より具体的には、状態データは、要求を最初に発したトランザクションソースを特定するトランザクションソース識別子として機能する5ビットのRNFIDフィールドと、データのキャッシュラインが2つ以上のトランザクションソースと関連付けられたキャッシュシステム内に記憶されているかどうかを示すフラグとして機能する単一ビットの一意的状態データと、2ビットMESIフィールドの形態のコヒーレンシ管理データとを含む。MESIフィールドは、従来のコヒーレンシ管理データであり、一意的状態データおよびトランザクションソース特定データとは別である。
【0036】
図4は、トランザクションソース特定データの形態のさらなる例を示す。この例においては、RNFIDフィールドが提供され、それにより、キャッシュ階層が該当するデータのキャッシュラインのコピーをそのために保持する、2つまでのトランザクションソースの判定的追跡が可能となる。
【0037】
図5は、スヌープ要求生成回路24により、リング型相互接続20上におけるスヌープトラフィックを低減するために実行されてもよいスヌープフィルタリングを概略的に図示するフローチャートを示す。ステップ34において、工程は、トランザクションが共有キャッシュメモリ18において受け取られるまで待機する。ステップ36は、トランザクションが共有キャッシュメモリ18内でヒットする(すなわち、要求されたデータのキャッシュラインが共有キャッシュメモリ18に存在する)かどうかを判定する。ヒットが存在しない場合、ステップ38は、トランザクションソース8、10、12のローカルキャッシュメモリの全部に対してスヌープ要求をブロードキャストする。
【0038】
ステップ36においてヒットが存在する場合、ステップ40は、ステップ34において受け取られたトランザクションのトランザクション種別が、データの一意的なコピーを検索しデータを変更するものであるかどうかを判定する。トランザクション種別が一致しないとステップ40が判定する場合、工程はステップ41へと進行し、ステップ41において、トランザクションが変更を加えないかどうかが判定される。トランザクションが変更を加えない場合、スヌープは不必要である。トランザクションが変更を加えるものであることをステップ41におけるチェックが示す場合、工程はステップ42へと進行し、ステップ42において、スヌープ要求が再びローカルキャッシュメモリの全部に対してブロードキャストされる。一致が存在することをステップ40における判定が示す場合、次いで、ステップ44は、ステップ34で受け取られた、要求を発したトランザクションと、ステップ36においてそれに対してヒットが生じたデータのキャッシュラインに対する共有キャッシュメモリ18に記憶されたRNFIDとの間にRNFIDの不一致が存在するかどうかを判定する。不一致が存在する場合、ステップ46は、ステップ36において特定されたキャッシュラインに対するRNFIDにより示されるトランザクションソース宛のスヌープを送信する。ステップ44において不一致が検出されない場合、スヌープ要求送信の必要はない。
【0039】
ステップ36においてヒットしたキャッシュラインに対する一意的状態データが一意的状態を示すかどうかの判定がなされたことと、このことがスヌープ挙動が変更することと、すなわち、キャッシュデータが一意的ではないか、または、トランザクションが変更を加えるトランザクションでない場合、工程はステップ41へと、および場合によっては、スヌープ要求がすべてのローカルキャッシュに対して送信されるステップ42へと処理することが、ステップ40から見られる。あるいは、データのキャッシュラインが一意的であり且つトランザクションが変更を加えるものであることを示す他の値を一意的状態データが有する場合、異なる形態のスヌープ挙動がステップ44およびステップ46により実行される。
【0040】
図6は、包括的モード動作から非包括的モード動作への変化がトランザクション種別に依存してどのように実施されるかを示すフローチャートを概略的に示す。ステップ48において、工程は、トランザクションが共有キャッシュメモリ18において受け取られるまで待機する。ステップ50は、共有キャッシュメモリ18内でヒットが存在するかどうかを判定する。ヒットが存在しない場合、ステップ52は、ローカルキャッシュメモリの全部に対してスヌープを実施する。次いでステップ54は、ローカルキャッシュメモリのうちの1つにおいてヒットが存在するかどうかを判定する。ヒットが存在する場合、ステップ56は、トランザクション種別が読み出しクリーントランザクション種別であるかどうかを、すなわち、トランザクションは当該のデータを読み込むが、その後データに変更を加えないかどうかを判定する。トランザクションが係る読み出しクリーントランザクションである場合、ステップ58は、ステップ54においてヒットしたL1/L2キャッシュから取得したデータを共有キャッシュメモリ18に記憶し、一意的状態データ30を用いてそのデータを非一意的としてマークする。トランザクション種別が読み出しクリーンでない場合、ステップ58は回避され、データは共有キャッシュメモリ18に記憶されない。
【0041】
ステップ60は、ステップ54においてヒットしたL1/L2キャッシュから取得されたデータを、要求を発したトランザクションストアへと戻し、このデータを、要求を発したトランザクションストアのローカルキャッシュメモリに記憶するように作用する。したがって、トランザクション種別が読み出しクリーントランザクションであるかどうかに依存して、データは、共有キャッシュメモリ18において、ならびにローカルキャッシュメモリにおいて記憶され、ひいては、包括的モード動作において記憶されることとなる。したがって、データはデフォルトの非包括的モード動作とは異なる動作モードで記憶される。
【0042】
共有キャッシュメモリ18内にヒットが存在することをステップ50における判定が示す場合、ステップ62は、ステップ48において受け取られたトランザクションのトランザクション種別が読み出しクリーンであるかどうかを判定するように機能する。トランザクション種別が読み出しクリーンである場合、ステップ64は、ステップ48において受け取られたトランザクションのRNFID、およびステップ50においてそれに対するヒットが生じたキャッシュラインに対して記憶されたこのフィールドの値に不一致が存在するかどうかを判定する。不一致が存在しない場合、ステップ66は、単にそのデータを、要求を発したトランザクションソースに戻し、共有キャッシュメモリ18におけるラインを無効化する。RNFIDの不一致がステップ64において検出される場合、ステップ68は、要求を発したトランザクションソースへとデータを戻し、一意的状態データを、非一意的状態を示すように変化させるように、すなわち、データのキャッシュラインは、現段階で、2つ以上のトランザクションソースに代わって記憶されるように、ひいては、ステップ68は、デフォルト動作である非包括的モード動作にしたがって記憶および操作されることから、包括的モード動作へと、データを変化させるように機能する。
【0043】
トランザクション種別が読み出しクリーントランザクション種別でないことをステップ62における判定が示す場合、工程はステップ70に進行し、ステップ70において、データは共有キャッシュメモリ18から読み出され、共有キャッシュメモリ18において無効化され、要求を発したトランザクションソースのローカルキャッシュメモリに記憶される。データのキャッシュラインは、したがって、引き続き非包括的モード動作にしたがって管理される。
【0044】
ステップ50における共有キャッシュメモリ内にヒットが存在しなかったことに引き続き、別のローカルキャッシュメモリにおいてヒットが存在しないことをステップ54における判定が示す場合、工程はステップ72へと進行する。ステップ72は、ステップ48において受け取られたトランザクションのトランザクション種別が、書き込み一意的トランザクション(全体よりも少ないデータのキャッシュラインを書き込むこと)、書き込み一意的ライントランザクション(データキャッシュライン全体を書き込むこと)、または読み出しワンストランザクション(一度だけ読み出すが、後にデータを再利用しないこと)のうちのいずれか1つと一致するかどうかを判定する。トランザクション種別がステップ72において一致しない場合、ステップ74はメインメモリからデータを読み込み、データを共有キャッシュメモリ内18に記憶し、一意的状態データを用いてデータを一意的としてマークし、入出力装置16等の要求を発したトランザクションソースへとデータを戻す。この入出力装置16は独自のローカルキャッシュメモリを備えず、したがって、ステップ74において共有キャッシュメモリ18に記憶されたデータは、そうでなければキャッシュが無いトランザクションソース16に対するキャッシュとして機能することができる。
【0045】
ステップ72において一致するトランザクション種別が存在しない場合、工程はステップ76へと進行し、ステップ76において、トランザクション種別が読み出し共有クリーントランザクション種別であるかどうかの判定がなされる。これは、プロセッサにより実行されるべき命令のための命令フェッチに対して一般的に発行されるトランザクションの種別である。ステップ76において一致するトランザクション種別が存在する場合、ステップ78は、メインメモリからデータを読み込み、データを共有キャッシュメモリ18に記憶し、そのMESIフィールドを用いてデータのキャッシュラインを共有データとしてマークし、要求を発したトランザクションソースへとデータを戻し、要求を発したトランザクションソースのローカルキャッシュメモリにデータを記憶するように機能する。ステップ78は、データキャッシュラインを非一意的として現段階ではマークしない。しかし、このデータが共有キャッシュメモリ18内に存在することは、包括的モード動作にしたがったものであり、別のトランザクションソースがデータキャッシュライン上で読み出しクリーン動作の実行を求める場合、データのキャッシュラインはその後非一意的としてステップ68を介してマークされる場合がある。
【0046】
ステップ78において一致するトランザクション種別が存在しない場合、ステップ80は、デフォルト処理を実行するように機能する。なお、このデフォルト処理においては、要求されたデータのキャッシュラインはメインメモリから読み込まれ、要求を発したトランザクションソースに戻され、要求を発したトランザクションソースのローカルキャッシュメモリに記憶される。
【0047】
本発明の例示的な実施形態が添付の図面を参照して本明細書において詳細に説明されてきたが、本発明がこれらの厳密な実施形態に限定されるものではなく、様々な変化例および変更例が、添付の請求項により定義される本発明の範囲および精神から逸脱することなく、当業者により実施可能であることが理解されるであろう。
【符号の説明】
【0048】
2 データ処理装置
4 システムオンチップ集積回路
6 メインメモリ
8、10、12 プロセッサクラスタ
14 メモリコントローラ
16 入出力装置
18 共有キャッシュメモリ
20 リング型相互接続
22 キャッシュコントローラ
24 スヌープ生成回路
26 キャッシュアレイ
28 キャッシュライン
30 一意的状態データ
32 トランザクションソース特定データ

【特許請求の範囲】
【請求項1】
その各々がローカルキャッシュメモリを有する、複数のトランザクションソースと、
前記複数のトランザクションソースに接続された共有キャッシュメモリと、
を備え、
前記共有キャッシュメモリは、記憶された各データのキャッシュライン、または記憶されたデータのキャッシュラインの各範囲のうちの少なくとも1つを、
(i)包括的モード、および
(ii)非包括的モード、
のうちの個別に選択可能な1つにしたがって記憶するように動作するように構成された、データ処理装置。
【請求項2】
前記共有キャッシュメモリに記憶された状態データは、データのキャッシュラインが、前記包括的モード、または前記非包括的モードのどちらで、記憶されたかを示す、請求項1に記載の装置。
【請求項3】
前記共有キャッシュメモリは、前記共有キャッシュメモリに記憶された各データのキャッシュラインに対する一意的状態データを記憶するように構成され、前記複数のトランザクションソースのうちの所与の1つと関連付けられ、前記一意的状態データは、前記データのキャッシュラインが前記複数のトランザクションソースのうちの任意の他のローカルキャッシュメモリに記憶されているかどうかを示す、請求項2に記載の装置。
【請求項4】
前記共有キャッシュメモリは、データのキャッシュラインと関連付けられた前記複数のトランザクションソースのうちの1つまたは複数を特定する、前記データのキャッシュラインに対するトランザクションソース特定データを記憶するように構成された、請求項3に記載の装置。
【請求項5】
前記トランザクションソース特定データは、前記複数のトランザクションソースのうちの単一のトランザクションソースを特定する、請求項4に記載の装置。
【請求項6】
前記トランザクションソース特定データは、前記複数のトランザクションソースのうちの適切な部分集合の最大までのトランザクションソースを特定する、請求項4に記載の装置。
【請求項7】
前記共有キャッシュメモリは、前記一意的状態データに依存してスヌープ要求を生成するスヌープ要求生成回路を含む、請求項3に記載の装置。
【請求項8】
前記共有キャッシュメモリは、前記トランザクションが前記共有キャッシュメモリ内でヒットし且つ前記非包括的モードで記憶されている場合、他のトランザクションソースに対する任意のスヌープ要求の生成を抑制するために、前記複数のトランザクションソースのうちの1つから受け取られたデータのキャッシュラインに対するトランザクション要求に応答するように構成されたスヌープ要求生成回路を含む、請求項3に記載の装置。
【請求項9】
前記共有キャッシュメモリは、前記データのキャッシュラインが前記包括的モードで記憶されていることを前記一意的状態データが示す場合、あらゆるスヌープ要求の生成の対象を、前記トランザクションソース特定データにより特定されたトランザクションソースに絞るために、前記複数のトランザクションソースのうちの1つから受け取られたデータのキャッシュラインであって、前記共有キャッシュメモリにおいてヒットするデータのキャッシュラインに対するトランザクション要求に応答するように構成されたスヌープ要求生成回路を備える、請求項5に記載の装置。
【請求項10】
前記共有キャッシュメモリは、前記非包括的モードで前記共有キャッシュメモリに記憶されたデータのキャッシュラインにヒットするトランザクションソースから1つまたは複数の所定の種別のトランザクションを受け取ることに対して、前記データのキャッシュラインを前記非包括的モードで記憶することから、前記データのキャッシュラインを前記包括的モードで記憶することに切り換えることにより応答するように構成された、請求項3に記載の装置。
【請求項11】
前記前記1つまたは複数の所定の種別は、前記データのキャッシュラインをローカルキャッシュメモリに読み込んだ後、前記ローカルキャッシュメモリに記憶された前記データのキャッシュラインに変更を加えないトランザクションを含む、請求項10に記載の装置。
【請求項12】
前記共有キャッシュメモリは、異なるトランザクションソースにより前記共有キャッシュメモリに記憶されたデータのキャッシュラインにヒットする所与のトランザクションソースから、変更を加えない読み込みトランザクションを受け取ることに対して、前記データのキャッシュラインを、前記所与のトランザクションソースのローカルキャッシュメモリに記憶するために、前記所与のトランザクションソースに戻すことにより、前記データのキャッシュラインを、前記共有キャッシュメモリ内に記憶された状態に保つことと、前記データのキャッシュラインが複数のトランザクションソースと関連付けられて記憶されていることを示すように、前記データのキャッシュラインに対する前記一意的状態データを設定することとにより応答するように構成された、請求項3に記載の装置。
【請求項13】
前記共有キャッシュメモリは、前記共有キャッシュメモリにおいてミスする所与のトランザクションソースであって、異なるトランザクションソースのローカルキャッシュメモリに記憶されたデータのキャッシュラインにヒットする所与のトランザクションソースから、変更を加えない読み込みトランザクションを受け取ることに対して、前記データのキャッシュラインを、前記所与のトランザクションソースのローカルキャッシュメモリに記憶するために、前記所与のトランザクションソースへと戻すことにより、前記データのキャッシュラインを、前記異なるトランザクションソースの前記ローカルキャッシュメモリ内に記憶された状態に保つことと、前記データのキャッシュラインを前記共有キャッシュメモリに記憶することと、前記データのキャッシュラインが複数のトランザクションソースと関連付けられて記憶されていることを示すように、前記データのキャッシュラインに対する前記一意的状態データを設定することとにより応答するように構成された、請求項3に記載の装置。
【請求項14】
前記非包括的モードは、データのキャッシュラインを記憶するためのデフォルトのモードであり、前記共有キャッシュメモリにおけるデータのキャッシュラインに対するミスは、前記データのキャッシュラインを、前記共有キャッシュメモリにではなく、前記データのキャッシュラインに対する要求を発したトランザクションソースのローカルキャッシュメモリに、デフォルトで記憶する、請求項1に記載の装置。
【請求項15】
前記共有キャッシュメモリは、前記共有キャッシュメモリにおいてミスするトランザクションソースから、1つまたは複数の所定の種別のトランザクションを受け取ることに対して、前記データのキャッシュラインを前記包括的モードで前記共有キャッシュメモリに記憶するように応答するように構成された、請求項14に記載の装置。
【請求項16】
前記トランザクションソースはローカルキャッシュメモリを有さず、前記1つまたは複数の所定の種別は、
(i)前記データのキャッシュラインの一部分に対する書き込み一意的トランザクションと、
(ii)前記データのキャッシュラインの全部に対する書き込み一意的トランザクションと、
(iii)戻されたデータのキャッシュラインが後で再利用されない、前記データのキャッシュラインの読み出しワンストランザクションと、
のうちの1つまたは複数を含む、請求項15に記載の装置。
【請求項17】
ローカルキャッシュメモリを有しない前記トランザクションソースは入出力回路である、請求項16に記載の装置。
【請求項18】
前記トランザクションソースはローカルキャッシュメモリを有し、前記1つまたは複数の所定の種別は、共有されるものとしておよび変更が加えられないものとしてマークされたデータのキャッシュラインに対する読み込みトランザクションを含み、前記データのキャッシュラインは前記共有キャッシュメモリおよび前記トランザクションソースの前記ローカルキャッシュメモリに記憶される、請求項15に記載の装置。
【請求項19】
前記複数のトランザクションソースは1つまたは複数のプロセッサコアを含む、請求項1に記載の装置。
【請求項20】
前記ローカルキャッシュメモリはL1キャッシュメモリおよびL2キャッシュメモリを含む、請求項1に記載の装置。
【請求項21】
前記共有キャッシュメモリはL3キャッシュメモリである、請求項1に記載の装置。
【請求項22】
前記複数のトランザクションソースはリング型相互接続回路に接続された、請求項1に記載の装置。
【請求項23】
その各々がデータを記憶するためのローカルキャッシュメモリ手段を有する、トランザクションを生成するための複数のトランザクションソース手段と、
データを記憶するための共有キャッシュメモリ手段であって、前記複数のトランザクションソースに接続された共有キャッシュメモリ手段と、
を備え、
前記共有キャッシュメモリ手段は、記憶された各データのキャッシュライン、または記憶されたデータのキャッシュラインの各範囲のうちの少なくとも1つを、
(i)包括的モード、および
(ii)非包括的モード、
のうちの個別に選択可能な1つにしたがって、記憶するように動作するように構成された、データ処理装置。
【請求項24】
複数のトランザクションソースとのトランザクションを生成するステップと、
それぞれのデータを、前記複数のトランザクションソースのうちのそれぞれのトランザクションソースのローカルキャッシュメモリに記憶するステップと、
データを、前記複数のトランザクションソースに接続された共有キャッシュメモリに記憶するステップと、
記憶されたデータの各キャッシュライン、または記憶されたデータのキャッシュライン各範囲のうちの少なくとも1つを、
(i)包括的モード、および
(ii)非包括的モード
のうちの個別に選択可能な1つにしたがって記憶するように、前記共有キャッシュメモリおよび前記ローカルキャッシュメモリを動作させるステップと、
を含む、データ処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate