(57)【特許請求の範囲】
【請求項１】
その各々がローカルキャッシュメモリを有する、複数のトランザクションソースと、
前記複数のトランザクションソースに接続された共有キャッシュメモリと、
を備え、
前記共有キャッシュメモリは、記憶された各データのキャッシュライン、または記憶されたデータのキャッシュラインの各範囲のうちの少なくとも１つを、
（ｉ）包括的モード、および
（ｉｉ）非包括的モード、
のうちの個別に選択可能な１つにしたがって記憶するように動作するように構成された、データ処理装置。
【請求項２】
前記共有キャッシュメモリに記憶された状態データは、データのキャッシュラインが、前記包括的モード、または前記非包括的モードのどちらで、記憶されたかを示す、請求項１に記載の装置。
【請求項３】
前記共有キャッシュメモリは、前記共有キャッシュメモリに記憶された各データのキャッシュラインに対する一意的状態データを記憶するように構成され、前記複数のトランザクションソースのうちの所与の１つと関連付けられ、前記一意的状態データは、前記データのキャッシュラインが前記複数のトランザクションソースのうちの任意の他のローカルキャッシュメモリに記憶されているかどうかを示す、請求項２に記載の装置。
【請求項４】
前記共有キャッシュメモリは、データのキャッシュラインと関連付けられた前記複数のトランザクションソースのうちの１つまたは複数を特定する、前記データのキャッシュラインに対するトランザクションソース特定データを記憶するように構成された、請求項３に記載の装置。
【請求項５】
前記トランザクションソース特定データは、前記複数のトランザクションソースのうちの単一のトランザクションソースを特定する、請求項４に記載の装置。
【請求項６】
前記トランザクションソース特定データは、前記複数のトランザクションソースのうちの適切な部分集合の最大までのトランザクションソースを特定する、請求項４に記載の装置。
【請求項７】
前記共有キャッシュメモリは、前記一意的状態データに依存してスヌープ要求を生成するスヌープ要求生成回路を含む、請求項３に記載の装置。
【請求項８】
前記共有キャッシュメモリは、前記トランザクションが前記共有キャッシュメモリ内でヒットし且つ前記非包括的モードで記憶されている場合、他のトランザクションソースに対する任意のスヌープ要求の生成を抑制するために、前記複数のトランザクションソースのうちの１つから受け取られたデータのキャッシュラインに対するトランザクション要求に応答するように構成されたスヌープ要求生成回路を含む、請求項３に記載の装置。
【請求項９】
前記共有キャッシュメモリは、前記データのキャッシュラインが前記包括的モードで記憶されていることを前記一意的状態データが示す場合、あらゆるスヌープ要求の生成の対象を、前記トランザクションソース特定データにより特定されたトランザクションソースに絞るために、前記複数のトランザクションソースのうちの１つから受け取られたデータのキャッシュラインであって、前記共有キャッシュメモリにおいてヒットするデータのキャッシュラインに対するトランザクション要求に応答するように構成されたスヌープ要求生成回路を備える、請求項５に記載の装置。
【請求項１０】
前記共有キャッシュメモリは、前記非包括的モードで前記共有キャッシュメモリに記憶されたデータのキャッシュラインにヒットするトランザクションソースから１つまたは複数の所定の種別のトランザクションを受け取ることに対して、前記データのキャッシュラインを前記非包括的モードで記憶することから、前記データのキャッシュラインを前記包括的モードで記憶することに切り換えることにより応答するように構成された、請求項３に記載の装置。
【請求項１１】
前記前記１つまたは複数の所定の種別は、前記データのキャッシュラインをローカルキャッシュメモリに読み込んだ後、前記ローカルキャッシュメモリに記憶された前記データのキャッシュラインに変更を加えないトランザクションを含む、請求項１０に記載の装置。
【請求項１２】
前記共有キャッシュメモリは、異なるトランザクションソースにより前記共有キャッシュメモリに記憶されたデータのキャッシュラインにヒットする所与のトランザクションソースから、変更を加えない読み込みトランザクションを受け取ることに対して、前記データのキャッシュラインを、前記所与のトランザクションソースのローカルキャッシュメモリに記憶するために、前記所与のトランザクションソースに戻すことにより、前記データのキャッシュラインを、前記共有キャッシュメモリ内に記憶された状態に保つことと、前記データのキャッシュラインが複数のトランザクションソースと関連付けられて記憶されていることを示すように、前記データのキャッシュラインに対する前記一意的状態データを設定することとにより応答するように構成された、請求項３に記載の装置。
【請求項１３】
前記共有キャッシュメモリは、前記共有キャッシュメモリにおいてミスする所与のトランザクションソースであって、異なるトランザクションソースのローカルキャッシュメモリに記憶されたデータのキャッシュラインにヒットする所与のトランザクションソースから、変更を加えない読み込みトランザクションを受け取ることに対して、前記データのキャッシュラインを、前記所与のトランザクションソースのローカルキャッシュメモリに記憶するために、前記所与のトランザクションソースへと戻すことにより、前記データのキャッシュラインを、前記異なるトランザクションソースの前記ローカルキャッシュメモリ内に記憶された状態に保つことと、前記データのキャッシュラインを前記共有キャッシュメモリに記憶することと、前記データのキャッシュラインが複数のトランザクションソースと関連付けられて記憶されていることを示すように、前記データのキャッシュラインに対する前記一意的状態データを設定することとにより応答するように構成された、請求項３に記載の装置。
【請求項１４】
前記非包括的モードは、データのキャッシュラインを記憶するためのデフォルトのモードであり、前記共有キャッシュメモリにおけるデータのキャッシュラインに対するミスは、前記データのキャッシュラインを、前記共有キャッシュメモリにではなく、前記データのキャッシュラインに対する要求を発したトランザクションソースのローカルキャッシュメモリに、デフォルトで記憶する、請求項１に記載の装置。
【請求項１５】
前記共有キャッシュメモリは、前記共有キャッシュメモリにおいてミスするトランザクションソースから、１つまたは複数の所定の種別のトランザクションを受け取ることに対して、前記データのキャッシュラインを前記包括的モードで前記共有キャッシュメモリに記憶するように応答するように構成された、請求項１４に記載の装置。
【請求項１６】
前記トランザクションソースはローカルキャッシュメモリを有さず、前記１つまたは複数の所定の種別は、
（ｉ）前記データのキャッシュラインの一部分に対する書き込み一意的トランザクションと、
（ｉｉ）前記データのキャッシュラインの全部に対する書き込み一意的トランザクションと、
（ｉｉｉ）戻されたデータのキャッシュラインが後で再利用されない、前記データのキャッシュラインの読み出しワンストランザクションと、
のうちの１つまたは複数を含む、請求項１５に記載の装置。
【請求項１７】
ローカルキャッシュメモリを有しない前記トランザクションソースは入出力回路である、請求項１６に記載の装置。
【請求項１８】
前記トランザクションソースはローカルキャッシュメモリを有し、前記１つまたは複数の所定の種別は、共有されるものとしておよび変更が加えられないものとしてマークされたデータのキャッシュラインに対する読み込みトランザクションを含み、前記データのキャッシュラインは前記共有キャッシュメモリおよび前記トランザクションソースの前記ローカルキャッシュメモリに記憶される、請求項１５に記載の装置。
【請求項１９】
前記複数のトランザクションソースは１つまたは複数のプロセッサコアを含む、請求項１に記載の装置。
【請求項２０】
前記ローカルキャッシュメモリはＬ１キャッシュメモリおよびＬ２キャッシュメモリを含む、請求項１に記載の装置。
【請求項２１】
前記共有キャッシュメモリはＬ３キャッシュメモリである、請求項１に記載の装置。
【請求項２２】
前記複数のトランザクションソースはリング型相互接続回路に接続された、請求項１に記載の装置。
【請求項２３】
その各々がデータを記憶するためのローカルキャッシュメモリ手段を有する、トランザクションを生成するための複数のトランザクションソース手段と、
データを記憶するための共有キャッシュメモリ手段であって、前記複数のトランザクションソースに接続された共有キャッシュメモリ手段と、
を備え、
前記共有キャッシュメモリ手段は、記憶された各データのキャッシュライン、または記憶されたデータのキャッシュラインの各範囲のうちの少なくとも１つを、
（ｉ）包括的モード、および
（ｉｉ）非包括的モード、
のうちの個別に選択可能な１つにしたがって、記憶するように動作するように構成された、データ処理装置。
【請求項２４】
複数のトランザクションソースとのトランザクションを生成するステップと、
それぞれのデータを、前記複数のトランザクションソースのうちのそれぞれのトランザクションソースのローカルキャッシュメモリに記憶するステップと、
データを、前記複数のトランザクションソースに接続された共有キャッシュメモリに記憶するステップと、
記憶されたデータの各キャッシュライン、または記憶されたデータのキャッシュライン各範囲のうちの少なくとも１つを、
（ｉ）包括的モード、および  
（ｉｉ）非包括的モード
のうちの個別に選択可能な１つにしたがって記憶するように、前記共有キャッシュメモリおよび前記ローカルキャッシュメモリを動作させるステップと、
を含む、データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より具体的には、本発明は、データ処理システム内の共有キャッシュメモリの制御に関するものである。
【背景技術】
【０００２】
複数レベルのキャッシュメモリをともなうデータ処理システムに提供することは周知である。例えば、複数のプロセッサコア等の複数のトランザクションソースを搭載するシステムは、これらのトランザクションソースのそれぞれに対する専用のローカルキャッシュメモリと、トランザクションソース間で共有される共有キャッシュメモリとを提供してもよい。例えば、個々のプロセッサコアは各プロセッサコア自体用のレベル１（Ｌ１）キャッシュを有し、緊密に結合されたプロセッサコアのクラスタは、階層においてＬ１キャッシュの上位に位置するレベル２（Ｌ２）キャッシュを共有してもよく、最終的にレベル３（Ｌ３）キャッシュは、プロセッサのクラスタ間で共有されてもよい。
【０００３】
係るキャッシュ階層を、データの個々のキャッシュラインが、キャッシュ階層内のより多いキャッシュに記憶されてもよい、包括的モードにおいて作動させることが知られている。これは、データ共有に対してはより高い効率性を提供するが、しかしながら、より多くのキャッシュ記憶容量を消費するという欠点を有する。キャッシュ階層動作の他モードは、非包括的モード（排他的モード）である。このモードでは、所与のデータのキャッシュラインは、通常、キャッシュ階層の１つのキャッシュメモリのみの中に記憶される。これは、使用されるキャッシュ記憶量を低減するが、データ共有に対しては効率がより低くなる。
【発明の概要】
【課題を解決するための手段】
【０００４】
１つの態様から観ると、本発明は、
その各々がローカルキャッシュメモリを有する複数のトランザクションソースと、
前記複数のトランザクションソースに接続された共有キャッシュメモリと、
を備え、
前記共有キャッシュメモリは、記憶されたデータの各キャッシュライン、または記憶されたデータのキャッシュラインの各範囲のうちの少なくとも１つを、
（ｉ）包括的モード、および
（ｉｉ）非包括的モード、
のうちの個別に選択可能な１つにしたがって記憶するように動作するように構成された、データを処理するための装置を提供する。
【０００５】
本発明は、共有キャッシュメモリを、個々のキャッシュラインに基づいて、またはキャッシュラインの個々の範囲に基づいて選択された包括的モード動作と非包括的モード動作の両方に対応する（例えば、メモリアドレス空間において近接するＮ個の範囲のキャッシュラインの範囲が、非包括的モードまたはおよび包括的モードのうちの１つで記憶されることの間でともに切り替えられる）ように形成することができることを認識する。このことにより、重み付けされたデータ共有の効率性とキャッシュ記憶容量の使用との間で有利なバランスが達成されることができる。
【０００６】
データのキャッシュラインが包括的モードまたは非包括的モードで記憶されるかどうかの制御を、ディレクトリ回路等の専用の別回路により実行することは可能であるが、共有キャッシュメモリが共有キャッシュメモリに記憶された状態データを用いることにより、キャッシュラインを包括的モードまたは非包括的モードのどちらで記憶するかをキャッシュライン毎に制御するならば、簡便且つ効果的である。
【０００７】
個々のキャッシュラインに適用されるモードを制御するために用いられる状態データは、多様な異なる形態を取ることができる。いくつかの実施形態においては、共有キャッシュメモリは、共有キャッシュメモリに記憶された各キャッシュラインに対する、複数のトランザクションソースのうちの所与の１つのトランザクションソースに関連付けられる一意的状態データを記憶し、この一意的状態データは、データのキャッシュラインが、複数のトランザクションソースのうちの任意の他のローカルのキャッシュメモリに記憶されているかどうかを、すなわち、データが１つのトランザクションソースに対して一意的に記憶されるか、または複数のトランザクションソースに対して非一意的に記憶されるかどうかを、示す。
【０００８】
共有キャッシュメモリは、データのそのキャッシュラインに関連付けられた１つまたは複数のトランザクションソースを特定するデータのキャッシュラインに対するトランザクションソース特定データも記憶してもよい。したがって、トランザクションソース特定データは、そのトランザクションソースに対して一意的に記憶された共有キャッシュメモリ内のデータのキャッシュラインと関連付けられた個別のトランザクションソースを示してもよく、または、トランザクションソース特定データは、共有キャッシュメモリ内に記憶されたキャッシュラインデータに関連付けられた複数のトランザクションソースを特定するトランザクションソース特定データを代替的に記憶してもよい。トランザクションソース特定データの個々の項目も、データのキャッシュラインを記憶する可能性がある複数のトランザクションソースを特定する可能性があり（すなわち、非正確である）、そのため、スヌープ動作が必要となる（例えば、特定の範囲内における、すべての偶数番目のトランザクションソース、全トランザクションソース、その他）。
【０００９】
オーバーヘッドが低い実施形態は、トランザクションソース特定データが複数のトランザクションソースの中から単一のトランザクションソースを特定する実施形態である。２つ以上のトランザクションソースがデータのキャッシュラインと関連付けられている場合、係る実施形態においては、トランザクションソース特定データは、これらの複数のトランザクションソースを追跡することができない。他の実施形態においては、より多くのリソースがトランザクションソース特定データに提供されてもよく、それにより、トランザクションソース特定データが、最高で、複数のトランザクションソースのうちの適切な部分集合まで（すなわち、２つ以上だが、全部より少ないトランザクションソース）を、データのキャッシュラインと関係づけられたものとして特定する場合がある可能性がある。
【００１０】
スヌープ要求は、スヌープ要求生成回路により生成されてもよい。このスヌープ要求生成回路は、生成されたスヌープ要求をフィルタリングするために、上述の一意的状態データに依存して動作してもよい。
【００１１】
いくつかの実施形態においては、スヌープ要求生成回路は、そのトランザクションが共有キャッシュメモリ内でヒットし、非包括的モードで記憶されている場合、他のトランザクションソースへのスヌープ要求の発生を抑制するために、複数のトランザクションソースのうちの１つから受け取られたデータのキャッシュラインへのトランザクション要求に応答するように構成される。非包括的モードが動作中である場合、キャッシュラインデータの単一コピーのみが記憶され、このコピーが共有キャッシュメモリに存在する（ヒットにより示される）場合、さらなるコピーをチェックし、いかなるスヌープ要求をも発行する必要はない。このことは、生成される必要があるスヌープ要求の個数を有利に削減し得る。
【００１２】
他の実施形態においては、スヌープ要求生成回路は、キャッシュラインが包括的モードで記憶されていること、すなわち、データのキャッシュラインのコピーが２つ以上記憶され、したがって、スヌープ要求が少なくとも１つのローカルキャッシュメモリに対して発行されることが必要であること、を一意的状態データが示す場合、任意のスヌープ要求の生成の対象を、トランザクションソース特定データにより特定されたトランザクションソースに絞るために、共有キャッシュメモリにおいてヒットした複数のトランザクションソースのうちの１つから受け取られたデータのキャッシュラインに対するトランザクション要求に応答するように構成されてもよい。
【００１３】
データのキャッシュラインは、デフォルトで、非包括的モードで記憶されてもよい。このことにより、キャッシュ階層内の記憶容量が保たれる。データのキャッシュラインは、トランザクションが、１つまたは複数の所定の種別のうちの１つを有するデータのキャッシュラインに対応して受け取られたとき、非包括的モードと包括的モードとの間で切り替えられてもよい。特定種別のトランザクションは、そのデータを包括的モードで記憶することにより達成される共有効率利益が、消費される追加的なキャッシュ記憶容量を正当化することよりも大きくなる程度まで、該当するデータが共有されることを示してもよい。
【００１４】
モードにおける係る変化を示す場合がある１つの種別のトランザクションは、データのキャッシュラインをローカルキャッシュメモリへと読み込み、その後、ローカルキャッシュメモリに記憶されると、データのキャッシュラインに変更を加えられていない、トランザクションである。メモリシステム内で発行されるトランザクションは、それらのトランザクション種別を示す信号を伴う場合があることが知られている。本技術は、このことを、トランザクション種別を用いて、個々のデータのキャッシュラインを、非包括的モードで記憶および操作されることから、包括的モードで動作するように、選択的に切り替えることにより、利用するものである。
【００１５】
いくつかの実施形態においては、共有キャッシュメモリは、異なるソースにより共有キャッシュメモリに記憶されたデータのキャッシュラインにおいてヒットする所与のトランザクションソースから、変更を加えない読み込みトランザクションを受け取ることに対して、そのデータのキャッシュラインをそのローカルキャッシュメモリに記憶するために所与のトランザクションソースに戻すことにより、データのキャッシュラインを、共有キャッシュメモリ内に記憶された状態に保つことと、キャッシュラインが複数のトランザクションソースと記憶され、かつ関連付けられていることを示すように、キャッシュラインに対する一意的状態データを設定することとにより応答するように、構成されてもよい。このことにより、非包括的モードでの処理から包括的モードでの処理へと、データのキャッシュラインの効果的な切り換えおよびマーク付けが行われる。
【００１６】
他の実施形態においては、共有キャッシュメモリは、共有キャッシュメモリにおいてヒットせず、且つ異なるトランザクションソースのローカルキャッシュメモリにおいて記憶されたデータのキャッシュラインにヒットする、所与のトランザクションソースから、変更を加えられていない読み込みトランザクションを受け取ることに対して、そのデータのキャッシュラインをそのローカルキャッシュメモリに記憶するために所与のトランザクションソースに戻すことにより、データのキャッシュラインを、ヒットが検出されたローカルキャッシュメモリ内に記憶された状態に保つことと、データのキャッシュラインを共有キャッシュメモリに記憶することと、データのキャッシュラインが記憶され、かつ複数のトランザクションソースと関連付けられていることを示すように、キャッシュラインに対する一意的状態データを設定することとにより、応答するように、構成されてもよい。このようにして、データのキャッシュラインは、非包括的モードから包括的モードへと再び戻され、変更を加えられてない読み込みトランザクションであるトランザクション種別により示されるように共有することに対して、より容易に利用可能となる。
【００１７】
前述のように、キャッシュラインを記憶するデフォルトのモードは非包括的モードであってもよく、したがって、共有キャッシュメモリにおけるデータのキャッシュラインに対するヒットが存在しない場合は、データのキャッシュラインを、デフォルトで、共有キャッシュメモリではなく、そのキャッシュラインデータにおけるトランザクションソースリクエストのローカルキャッシュメモリに記憶されることとなる。非包括的に記憶されたデータのキャッシュラインは、後にローカルキャッシュメモリからエビクトして出され、共有キャッシュメモリに戻されてもよい。一方、トランザクションソース特定データは、それを最初に要求したトランザクションソースと関連付けられたものとしてそのデータのキャッシュラインを特定し、したがって、そのデータのキャッシュラインを非包括的モード動作にしたがって引き続き操作する。
【００１８】
システム内に含まれてもよいいくつかのトランザクションソースは、それらの独自のローカルキャッシュメモリを備えない場合もある。例えば、係るトランザクションソースは、メモリがマッピングされた簡単な入出力装置であってもよい。いくつかの実施形態においては、１つまたは複数の所定種別のトランザクションは、キャッシュラインの１部分に対する書き込み一意的トランザクション、キャッシュラインの全部に対する書き込み一意的トランザクション、およびキャッシュラインを後に再利用しない読み出しワンストランザクションのうちの１つまたは複数を含む。これらのトランザクション種別は、トランザクションソースが独自のローカルキャッシュメモリを有しない場合でも、データのキャッシュラインを共有キャッシュメモリに対して強制的に記憶するために用いられてもよい。このようにして記憶されたデータのキャッシュラインは、後にエビクトされるまで、共有キャッシュメモリのままであってもよい。このことが、ローカルキャッシュメモリを有さないトランザクションソースに対して、少なくとも何らかのキャッシュ能力を提供する。
【００１９】
ローカルキャッシュメモリを有するトランザクションソースは、あらかじめ定められた種別が、共有され且つ後にデータのキャッシュラインに変更を加えない、読み込みである、特定のトランザクションを発行してもよい。係るトランザクションに応答して、データのキャッシュラインは、共有キャッシュメモリに、そしてトランザクションソースのローカルキャッシュメモリに、記憶されてもよい。すなわち、データのキャッシュラインは、デフォルトの非包括的モードをオーバーライドする包括的モードで記憶されてもよい。
【００２０】
トランザクションソースは様々な異なる形態を取ってもよく、いくつかの形態は、汎用プロセッサコア、グラフィックス処理ユニット、その他であってもよいことが理解されるであろう。ローカルキャッシュメモリは、Ｌ１、Ｌ２キャッシュメモリ等、ローカルキャッシュメモリ自体の内に階層を含んでもよい。共有キャッシュメモリは、Ｌ３キャッシュメモリであってもよい。
【００２１】
いくつかの実施形態においては、複数のトランザクションソースは、スヌープ要求および他のトランザクションを異なるトランザクションソース間で通信するように機能するリング型相互接続の形に接続されてもよい。このことは、顕著な再設計またはリエンジニアリングを必要とすることなく、追加的なトランザクションソースおよびさらなる共有キャッシュメモリがシステムに追加される場合がある拡張性に関して特に適合する、高速且つ効果的な通信機構を提供する。
【００２２】
他の態様から観ると、本発明は、
その各々が、データを記憶するためのローカルキャッシュメモリ手段を有する、トランザクションを生成するための複数のトランザクションソース手段と、
データを記憶するための、前述の複数のトランザクションソース手段に接続された共有キャッシュメモリ手段と、
を備え、
前述の共有キャッシュメモリ手段は、記憶されたデータの各キャッシュライン、または記憶されたデータのキャッシュラインの各範囲のうちの少なくとも１つを、
（ｉ）包括的モード、および
（ｉｉ）非包括的モード、
のうちの個別に選択可能な１つにしたがって記憶するように動作するように構成された、データ処理装置を提供する。
【００２３】
さらなる態様から観ると、本発明は、
複数のトランザクションソースとのトランザクションを生成することと、
それぞれのデータを、前記複数のトランザクションソースのそれぞれのローカルキャッシュメモリに記憶することと、
データを、前記複数のトランザクションソースに接続された共有キャッシュメモリに記憶することと、
記憶されたデータの各キャッシュライン、または記憶されたデータのキャッシュラインの各範囲のうちの少なくとも１つを、
（ｉ）包括的モード、および
（ｉｉ）非包括的モード、
のうちの個別に選択可能な１つにしたがって記憶するように、前記共有キャッシュメモリおよび前記ローカルキャッシュメモリを操作することと、
を含む、データ処理方法を提供する。
【００２４】
本発明の、上述した、および他の、目的、特徴、および利点は、添付の図面と合わせて読まれるべき、例示的な実施形態に関する以下の詳細な説明から明らかであろう。
【図面の簡単な説明】
【００２５】
【図１】複数のトランザクションソースを搭載し、各トランザクションソースが独自のローカルキャッシュメモリを有し、リング型の相互接続を介して共有キャッシュメモリに接続された、データ処理装置の概略図である。
【図２】共有キャッシュメモリの概略図である。
【図３】それぞれのキャッシュライン毎に記憶され、個別のキャッシュラインに対して、コヒーレンシおよび包括的／非包括的モード動作を制御するために用いられる、状態データの概略図である。
【図４】トランザクションソース特定データの代替的な形態の概略図である。
【図５】スヌープフィルタリングの制御を概略的に示すフローチャートである。
【図６】包括的モード動作と非包括的モード動作との間の切換がトランザクション種別に基づいていかに実施されるかを概略的に示すフローチャートである。
【００２６】
図１は、メインメモリ６に接続された、システムオンチップ集積回路４の形態におけるデータ処理装置２を概略的に示す。システムオンチップ集積回路４は、３つのプロセッサクラスタ８、１０、１２を含む複数のトランザクションソースと、メモリコントローラ１４と、独自のローカルキャッシュメモリを含まない入出力装置１６とを含む。（実際には、ワークロードの共有を簡略化するために、偶数個のプロセッサクラスタを有することが好ましい。）共有キャッシュメモリ１８は、リング型相互接続２０を介して、これらのトランザクションソースの全部に対して接続される。異なる形態の相互接続、例えばクロスバー相互接続、が用いられてもよいことが理解されるであろう。
【００２７】
プロセッサクラスタ８、１０、１２は、それぞれが、各プロセッサコアに関連付けられた個別のＬ１キャッシュ、およびプロセッサクラスタに対してローカルである共有Ｌ２キャッシュという形態で、２つの汎用プロセッサコアおよびローカルキャッシュメモリを含む。プロセッサクラスタ８、１０、１２は、Ｌ３キャッシュ１８とのトランザクションに対応して、個別のトランザクションソースとして機能する。
【００２８】
一般に、非包括的モード動作は、メインメモリ６からフェッチされ、共有キャッシュメモリ１８と、トランザクションソース８、１０、１２内のローカルキャッシュメモリとを含むキャッシュ階層内に記憶されるデータに対して、デフォルトで採用される。（他の異なる実施形態例においては、デフォルトのモードが包括的であってもよい。）係るデフォルトの非包括的挙動は、データ項目をフェッチし、フェッチしたデータ項目を、そのデータ項目を要求したトランザクションソース８、１０、１２のローカルキャッシュメモリ内にのみ記憶する。そのローカルキャッシュメモリが後で満杯になると、データはエビクトされ、共有キャッシュメモリ１８に記憶される場合がある。そのデータの単一のコピーは引き続き記憶され、最初にフェッチしたトランザクションソースと関連付けられたものとして共有キャッシュ内でマークされる。
【００２９】
そのローカルキャッシュメモリ内に記憶されていないデータを、トランザクションソースが要求すると、該当するデータが共有キャッシュメモリ１８内に記憶されているかどうかが最初にチェックされる。そのデータが共有キャッシュメモリ１８内に記憶されていない場合、そのデータが、他の任意のトランザクションソースのローカルキャッシュメモリに記憶されているかどうかを判定するチェックがブロードキャストスヌープ要求により実施されてもよい。データのキャッシュラインが、共有キャッシュメモリ１８にも、いずれのローカルキャッシュメモリにも存在しない場合、このデータはメインメモリ６からフェッチされてもよい。この実施形態例においては単一の共有キャッシュメモリ１８のみが図示されていることが理解されるであろう。複数の共有キャッシュメモリ１８が提供される場合があることも可能であり、例えば、各共有キャッシュメモリは、メモリアドレス空間の異なるエリアをキャッシュするように構成されてもよい。これは、より多くの共有キャッシュメモリをリング型相互接続２０に追加することにより提供される、共有キャッシュメモリの量を拡大化するための便利な方法である。
【００３０】
データの個々のキャッシュラインに適用されたデフォルトの非包括的モード動作は、データの個々のキャッシュラインが、データのキャッシュラインに向けられたトランザクションのトランザクション種別に依存して包括的モード動作にしたがって管理されるように、オーバーライドされてもよい。このことは、以下でさらに説明されるであろう。
【００３１】
図２は、共有キャッシュメモリ１８をより詳細に示す概略図である。この共有キャッシュメモリ１８は、キャッシュコントローラ２２と、スヌープ生成回路２４と、キャッシュアレイ２６とを含む。キャッシュアレイは、データの複数のキャッシュライン２８を記憶する。データの各キャッシュライン２８は、メインメモリ６から読み出されたデータ値のコピーからなる（これらのデータ値は続いてキャッシュ内で変更され、後にメインメモリ６へと書き戻されてもよい）、データペイロードを含む。コヒーレンシ制御管理のためのＭＥＳＩ状態データ（変更、排他、共有、無効を示す）だけでなく、一意的状態データ３０およびトランザクションソース特定データ３２も、各個別キャッシュラインと関連付けられる。
【００３２】
データの各キャッシュラインに対する一意的状態データは、共有キャッシュメモリに記憶され、且つ、データのキャッシュラインが、複数のトランザクションソースのうちの他の任意のもののローカルキャッシュメモリに記憶されているかどうかを示すために、複数のトランザクションソースのうちの所与の１つと関連付けられる。したがって、一意的状態データは、そのデータの一意的なコピーが記憶されている（この場合、共有キャッシュメモリ内に、トランザクションソース特定データ３２を介して、要求を最初に発したトランザクションソースに関連付けられて）か、またはそのデータの複数コピーが記憶され、それは非一意的であるかどうかを示す。
【００３３】
トランザクションソース特定データ３２は、該当するデータのキャッシュラインを最初に要求したトランザクションソースを特定するために用いられる異なる３２個の値のうちの１個を指定することができる５ビットを含むデータのＲＮＦＩＤフィールドのデータの形態を有してもよい。データのキャッシュラインが一意的であることを一意的状態データが示す場合、ＲＮＦＩＤフィールドは、トランザクションソースのうちのどのトランザクションソースに代わって、共有キャッシュメモリ１８がそのデータのキャッシュラインを現在記憶しているかを示す。データキャッシュラインが非一意的である（すなわち複数のコピーがキャッシュシステムに記憶されている）ことが一意的状態データにより示される場合、ＲＮＦＩＤフィールドは無効である。
【００３４】
他の実施形態例においては、当該するデータのキャッシュラインのコピーを現在記憶するトランザクションソースの適切な部分集合（２つ以上であるが、全部よりは少ない）を特定し、それにしたがって、向けられたスヌープ要求を提供し、それによりスヌープトラフィックが低減されるように、複数のＲＮＦＩＤフィールドが適合されてもよい。共有キャッシュメモリ１８内のスヌープ要求生成回路２４は、キャッシュアレイ２６内に記憶され、且つ、それに対してトランザクション要求が生成された、任意のデータのキャッシュライン２８に対して、一意的状態データ３０に依存するスヌープ要求を生成する。
【００３５】
図３は、キャッシュラインに対して非包括的モード動作から包括的モード動作への切り替えを制御するために用いられる、各キャッシュライン毎に記憶された状態データを概略的に示す。より具体的には、状態データは、要求を最初に発したトランザクションソースを特定するトランザクションソース識別子として機能する５ビットのＲＮＦＩＤフィールドと、データのキャッシュラインが２つ以上のトランザクションソースと関連付けられたキャッシュシステム内に記憶されているかどうかを示すフラグとして機能する単一ビットの一意的状態データと、２ビットＭＥＳＩフィールドの形態のコヒーレンシ管理データとを含む。ＭＥＳＩフィールドは、従来のコヒーレンシ管理データであり、一意的状態データおよびトランザクションソース特定データとは別である。
【００３６】
図４は、トランザクションソース特定データの形態のさらなる例を示す。この例においては、ＲＮＦＩＤフィールドが提供され、それにより、キャッシュ階層が該当するデータのキャッシュラインのコピーをそのために保持する、２つまでのトランザクションソースの判定的追跡が可能となる。
【００３７】
図５は、スヌープ要求生成回路２４により、リング型相互接続２０上におけるスヌープトラフィックを低減するために実行されてもよいスヌープフィルタリングを概略的に図示するフローチャートを示す。ステップ３４において、工程は、トランザクションが共有キャッシュメモリ１８において受け取られるまで待機する。ステップ３６は、トランザクションが共有キャッシュメモリ１８内でヒットする（すなわち、要求されたデータのキャッシュラインが共有キャッシュメモリ１８に存在する）かどうかを判定する。ヒットが存在しない場合、ステップ３８は、トランザクションソース８、１０、１２のローカルキャッシュメモリの全部に対してスヌープ要求をブロードキャストする。
【００３８】
ステップ３６においてヒットが存在する場合、ステップ４０は、ステップ３４において受け取られたトランザクションのトランザクション種別が、データの一意的なコピーを検索しデータを変更するものであるかどうかを判定する。トランザクション種別が一致しないとステップ４０が判定する場合、工程はステップ４１へと進行し、ステップ４１において、トランザクションが変更を加えないかどうかが判定される。トランザクションが変更を加えない場合、スヌープは不必要である。トランザクションが変更を加えるものであることをステップ４１におけるチェックが示す場合、工程はステップ４２へと進行し、ステップ４２において、スヌープ要求が再びローカルキャッシュメモリの全部に対してブロードキャストされる。一致が存在することをステップ４０における判定が示す場合、次いで、ステップ４４は、ステップ３４で受け取られた、要求を発したトランザクションと、ステップ３６においてそれに対してヒットが生じたデータのキャッシュラインに対する共有キャッシュメモリ１８に記憶されたＲＮＦＩＤとの間にＲＮＦＩＤの不一致が存在するかどうかを判定する。不一致が存在する場合、ステップ４６は、ステップ３６において特定されたキャッシュラインに対するＲＮＦＩＤにより示されるトランザクションソース宛のスヌープを送信する。ステップ４４において不一致が検出されない場合、スヌープ要求送信の必要はない。
【００３９】
ステップ３６においてヒットしたキャッシュラインに対する一意的状態データが一意的状態を示すかどうかの判定がなされたことと、このことがスヌープ挙動が変更することと、すなわち、キャッシュデータが一意的ではないか、または、トランザクションが変更を加えるトランザクションでない場合、工程はステップ４１へと、および場合によっては、スヌープ要求がすべてのローカルキャッシュに対して送信されるステップ４２へと処理することが、ステップ４０から見られる。あるいは、データのキャッシュラインが一意的であり且つトランザクションが変更を加えるものであることを示す他の値を一意的状態データが有する場合、異なる形態のスヌープ挙動がステップ４４およびステップ４６により実行される。
【００４０】
図６は、包括的モード動作から非包括的モード動作への変化がトランザクション種別に依存してどのように実施されるかを示すフローチャートを概略的に示す。ステップ４８において、工程は、トランザクションが共有キャッシュメモリ１８において受け取られるまで待機する。ステップ５０は、共有キャッシュメモリ１８内でヒットが存在するかどうかを判定する。ヒットが存在しない場合、ステップ５２は、ローカルキャッシュメモリの全部に対してスヌープを実施する。次いでステップ５４は、ローカルキャッシュメモリのうちの１つにおいてヒットが存在するかどうかを判定する。ヒットが存在する場合、ステップ５６は、トランザクション種別が読み出しクリーントランザクション種別であるかどうかを、すなわち、トランザクションは当該のデータを読み込むが、その後データに変更を加えないかどうかを判定する。トランザクションが係る読み出しクリーントランザクションである場合、ステップ５８は、ステップ５４においてヒットしたＬ１／Ｌ２キャッシュから取得したデータを共有キャッシュメモリ１８に記憶し、一意的状態データ３０を用いてそのデータを非一意的としてマークする。トランザクション種別が読み出しクリーンでない場合、ステップ５８は回避され、データは共有キャッシュメモリ１８に記憶されない。
【００４１】
ステップ６０は、ステップ５４においてヒットしたＬ１／Ｌ２キャッシュから取得されたデータを、要求を発したトランザクションストアへと戻し、このデータを、要求を発したトランザクションストアのローカルキャッシュメモリに記憶するように作用する。したがって、トランザクション種別が読み出しクリーントランザクションであるかどうかに依存して、データは、共有キャッシュメモリ１８において、ならびにローカルキャッシュメモリにおいて記憶され、ひいては、包括的モード動作において記憶されることとなる。したがって、データはデフォルトの非包括的モード動作とは異なる動作モードで記憶される。
【００４２】
共有キャッシュメモリ１８内にヒットが存在することをステップ５０における判定が示す場合、ステップ６２は、ステップ４８において受け取られたトランザクションのトランザクション種別が読み出しクリーンであるかどうかを判定するように機能する。トランザクション種別が読み出しクリーンである場合、ステップ６４は、ステップ４８において受け取られたトランザクションのＲＮＦＩＤ、およびステップ５０においてそれに対するヒットが生じたキャッシュラインに対して記憶されたこのフィールドの値に不一致が存在するかどうかを判定する。不一致が存在しない場合、ステップ６６は、単にそのデータを、要求を発したトランザクションソースに戻し、共有キャッシュメモリ１８におけるラインを無効化する。ＲＮＦＩＤの不一致がステップ６４において検出される場合、ステップ６８は、要求を発したトランザクションソースへとデータを戻し、一意的状態データを、非一意的状態を示すように変化させるように、すなわち、データのキャッシュラインは、現段階で、２つ以上のトランザクションソースに代わって記憶されるように、ひいては、ステップ６８は、デフォルト動作である非包括的モード動作にしたがって記憶および操作されることから、包括的モード動作へと、データを変化させるように機能する。
【００４３】
トランザクション種別が読み出しクリーントランザクション種別でないことをステップ６２における判定が示す場合、工程はステップ７０に進行し、ステップ７０において、データは共有キャッシュメモリ１８から読み出され、共有キャッシュメモリ１８において無効化され、要求を発したトランザクションソースのローカルキャッシュメモリに記憶される。データのキャッシュラインは、したがって、引き続き非包括的モード動作にしたがって管理される。
【００４４】
ステップ５０における共有キャッシュメモリ内にヒットが存在しなかったことに引き続き、別のローカルキャッシュメモリにおいてヒットが存在しないことをステップ５４における判定が示す場合、工程はステップ７２へと進行する。ステップ７２は、ステップ４８において受け取られたトランザクションのトランザクション種別が、書き込み一意的トランザクション（全体よりも少ないデータのキャッシュラインを書き込むこと）、書き込み一意的ライントランザクション（データキャッシュライン全体を書き込むこと）、または読み出しワンストランザクション（一度だけ読み出すが、後にデータを再利用しないこと）のうちのいずれか１つと一致するかどうかを判定する。トランザクション種別がステップ７２において一致しない場合、ステップ７４はメインメモリからデータを読み込み、データを共有キャッシュメモリ内１８に記憶し、一意的状態データを用いてデータを一意的としてマークし、入出力装置１６等の要求を発したトランザクションソースへとデータを戻す。この入出力装置１６は独自のローカルキャッシュメモリを備えず、したがって、ステップ７４において共有キャッシュメモリ１８に記憶されたデータは、そうでなければキャッシュが無いトランザクションソース１６に対するキャッシュとして機能することができる。
【００４５】
ステップ７２において一致するトランザクション種別が存在しない場合、工程はステップ７６へと進行し、ステップ７６において、トランザクション種別が読み出し共有クリーントランザクション種別であるかどうかの判定がなされる。これは、プロセッサにより実行されるべき命令のための命令フェッチに対して一般的に発行されるトランザクションの種別である。ステップ７６において一致するトランザクション種別が存在する場合、ステップ７８は、メインメモリからデータを読み込み、データを共有キャッシュメモリ１８に記憶し、そのＭＥＳＩフィールドを用いてデータのキャッシュラインを共有データとしてマークし、要求を発したトランザクションソースへとデータを戻し、要求を発したトランザクションソースのローカルキャッシュメモリにデータを記憶するように機能する。ステップ７８は、データキャッシュラインを非一意的として現段階ではマークしない。しかし、このデータが共有キャッシュメモリ１８内に存在することは、包括的モード動作にしたがったものであり、別のトランザクションソースがデータキャッシュライン上で読み出しクリーン動作の実行を求める場合、データのキャッシュラインはその後非一意的としてステップ６8を介してマークされる場合がある。
【００４６】
ステップ７８において一致するトランザクション種別が存在しない場合、ステップ８０は、デフォルト処理を実行するように機能する。なお、このデフォルト処理においては、要求されたデータのキャッシュラインはメインメモリから読み込まれ、要求を発したトランザクションソースに戻され、要求を発したトランザクションソースのローカルキャッシュメモリに記憶される。
【００４７】
本発明の例示的な実施形態が添付の図面を参照して本明細書において詳細に説明されてきたが、本発明がこれらの厳密な実施形態に限定されるものではなく、様々な変化例および変更例が、添付の請求項により定義される本発明の範囲および精神から逸脱することなく、当業者により実施可能であることが理解されるであろう。
【符号の説明】
【００４８】
２  データ処理装置
４  システムオンチップ集積回路
６  メインメモリ
８、１０、１２  プロセッサクラスタ
１４  メモリコントローラ
１６  入出力装置
１８  共有キャッシュメモリ
２０  リング型相互接続
２２  キャッシュコントローラ
２４  スヌープ生成回路
２６  キャッシュアレイ
２８  キャッシュライン
３０  一意的状態データ
３２  トランザクションソース特定データ
【図１】
0006022849.tif 000002
【図２】
0006022849.tif 000003
【図３】
0006022849.tif 000004
【図４】
0006022849.tif 000005
【図５】
0006022849.tif 000006
【図６】
0006022849.tif 000007