(57)【要約】      （修正有）【課題】キャッシュメモリ階層内の一貫性を支持するためのスヌープフィルタリング回路を備えたデータ処理装置を提供する。【解決手段】スヌープフィルタ回路は、スヌープフィルタタグ値を保存し、ローカルキャッシュメモリ内に保存されているキャッシュデータラインを追跡する。目標キャッシュデータラインについてのトランザクションが受信された場合、スヌープフィルタ回路は、目標タグ値とスヌープフィルタタグ値とを比較し、共有キャッシュ回路は、目標タグ値と共有キャッシュタグ値とを比較する。比較動作は、相互ロックされた並行パイプラインを用いて行われる。共有キャッシュ回路は、デフォルト非包括的モードで動作し、共有キャッシュメモリおよびスヌープフィルタは、共有キャッシュメモリ内のデータ保存については非包括的に挙動するが、スヌープフィルタタグ値および共有キャッシュタグ値がどちらもある場合、タグ保存について包括的に挙動する。【選択図】図４
2013041582.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置であって、
複数のトランザクションソースであって、前記複数のトランザクションソースはそれぞれ、ローカルキャッシュメモリを有する、複数のトランザクションソースと、
前記複数のトランザクションソースに連結された共有キャッシュメモリであって、前記共有キャッシュメモリは、非包括的モードで動作するように構成され、前記共有キャッシュメモリは、共有キャッシュタグ値を保存し、前記共有キャッシュタグ値は、前記共有キャッシュメモリ内に保存されているキャッシュデータラインを追跡する、共有キャッシュメモリと、
スヌープフィルタタグ値を保存するように構成されたスヌープフィルタ回路であって、前記スヌープフィルタタグ値は、前記ローカルキャッシュメモリ内に保存されているキャッシュデータラインを追跡する、スヌープフィルタ回路と、
を含み、
目標タグ値を有する目標キャッシュデータラインに対するトランザクションリクエストに応答して、
（ｉ）前記共有キャッシュメモリは、前記目標タグ値と、前記共有キャッシュタグ値とを比較することで、前記目標キャッシュデータラインが前記共有キャッシュメモリ内に保存されているか否かを検出するように構成され、
（ｉｉ）前記スヌープフィルタ回路は、前記目標タグ値と、前記スヌープフィルタタグ値とを比較することで、前記目標キャッシュデータラインが前記ローカルキャッシュメモリのうちのいずれかに保存されているか否かを検出するように構成される、
装置。
【請求項２】
前記スヌープフィルタ回路は、トランザクションソースを保存し、前記トランザクションソースは、前記ローカルキャッシュメモリのうちのどれにどのキャッシュデータラインが保存されているのかを特定するデータを特定する、請求項１に記載の装置。
【請求項３】
前記スヌープフィルタ回路は、ローカルキャッシュメモリがキャッシュデータラインを保存している場合、前記スヌープフィルタ回路が対応するスヌープフィルタタグ値を保存しなければならないように、構成される、請求項１に記載の装置。
【請求項４】
前記目標タグ値が前記共有キャッシュタグ値のうちの１つとマッチした場合、前記共有キャッシュメモリは、前記トランザクションリクエストをサービスするように構成される、請求項１に記載の装置。
【請求項５】
前記スヌープフィルタ回路は、前記スヌープフィルタタグ値のうちの１つにマッチする前記目標タグ値を特定する保存されたトランザクションソースによって特定された前記ローカルキャッシュメモリのうちのいずれかへと前記トランザクションリクエストをサービス対象として転送するように構成される、請求項１に記載の装置。
【請求項６】
前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、前記比較を並行して行うように構成される、請求項１に記載の装置。
【請求項７】
前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、アクセスを並行して行う際、相互ロックされたパイプラインとして動作するように構成される、請求項６に記載の装置。
【請求項８】
前記装置はメモリコントローラを含み、前記メモリコントローラは、前記共有キャッシュメモリが前記目標タグ値とマッチする共有キャッシュタグ値を保存しておらずかつ前記スヌープフィルタ回路が前記目標タグ値とマッチするスヌープフィルタタグ値を保存していないことが検出に続いて、主要メモリ内の前記目標キャッシュデータラインに対するトランザクションを行うように構成される、
請求項１に記載の装置。
【請求項９】
前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、前記スヌープフィルタ回路内スヌープフィルタタグ値として保存されたものと、前記共有キャッシュメモリ内に共有キャッシュタグ値として保存されたものとの間でタグ値をアトミックに変更するように構成され、これにより、前記ローカルキャッシュメモリと前記共有キャッシュメモリとの間における対応するキャッシュデータラインの保存場所の変更に追随する、請求項１に記載の装置。
【請求項１０】
前記対応するキャッシュデータラインが前記ローカルキャッシュメモリのうちの１つから前記共有キャッシュメモリへと排除された場合、前記タグ値は、前記スヌープフィルタ回路内に保存された状態から前記共有キャッシュメモリ内に保存された状態へとアトミックに変更される、請求項９に記載の装置。
【請求項１１】
前記対応するキャッシュデータラインが前記共有キャッシュメモリから前記ローカルキャッシュメモリのうちの１つへと呼び返された場合、前記タグ値は、前記共有キャッシュメモリ内に保存された状態から前記スヌープフィルタ回路内に保存された状態へとアトミックに変更される、請求項９に記載の装置。
【請求項１２】
前記共有キャッシュメモリは、包括的モードにおいて１つ以上のキャッシュデータラインを選択的に保存するように制御されるように構成される、請求項１に記載の装置。
【請求項１３】
所与のキャッシュデータラインに対して１つ以上の所定の種類を有するトランザクションリクエストに応答して、非包括的モードと包括的モードとの間の切り換えが行われ、これに対応して、前記スヌープフィルタ回路および前記共有キャッシュメモリのうち１つまたは双方が、前記所与のキャッシュデータラインの所与のタグ値を保存するものとしてもアトミックにに切り換えられる、請求項１に記載の装置。
【請求項１４】
前記１つ以上の所定の種類はトランザクションを含み、前記トランザクションは、前記キャッシュデータラインをローカルキャッシュメモリに対して読み出し、その後前記ローカルキャッシュメモリ内に保存された前記キャッシュデータラインを改変せず、かつ、前記非包括的モードから前記包括的モードへの切り換えをトリガする、請求項１３に記載の装置。
【請求項１５】
前記共有キャッシュメモリおよび前記スヌープフィルタ回路はどちらとも、前記複数のトランザクションソースのうちの所与の１つと関連付けられた各キャッシュデータラインについてのユニークな状態データを保存するように構成され、前記ユニークな状態データは、前記複数のトランザクションソースのうち他のいずれかのローカルキャッシュメモリ内に前記キャッシュデータラインが保存されているか否かを示す、請求項１に記載の装置。
【請求項１６】
前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、所与のトランザクションソースからの非改変的読み出しトランザクションの受信に応答するように構成され、前記所与のトランザクションソースは、異なるトランザクションソースによって共有キャッシュメモリ内に保存されたキャッシュデータラインをヒットし、前記応答は、前記所与のトランザクションソースのローカルキャッシュメモリ内へ保存されるべき前記キャッシュデータラインを前記所与のトランザクションソースへと返送することによって行われ、これにより、前記キャッシュデータラインは前記異なるトランザクションソースの前記ローカルキャッシュメモリ内に保存され、前記キャッシュデータラインは前記共有キャッシュメモリ内に保存され、前記キャッシュデータラインについてのユニークな状態データが前記共有キャッシュメモリおよび前記スヌープフィルタ回路双方において設定され、これにより、前記キャッシュデータラインが複数のトランザクションソースと関連付けられて保存されていることが示される、請求項１５に記載の装置。
【請求項１７】
前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、所与のトランザクションソースからの非改変的読み出しトランザクションの受信に応答するように構成され、前記所与のトランザクションソースは、前記共有キャッシュメモリ内でミスし（ヒットしない）、かつ、異なるトランザクションソースによってローカルキャッシュメモリに保存されたキャッシュデータラインとヒットし、前記応答は、前記所与のトランザクションソースのローカルキャッシュメモリ内へと保存されるべきものとして前記キャッシュデータラインを前記所与のトランザクションソースへと返送することによって行われ、これにより、前記キャッシュデータラインは、前記異なるトランザクションソースの前記ローカルキャッシュメモリ内に保存され、前記キャッシュデータラインは前記共有キャッシュメモリ内に保存され、前記キャッシュデータラインについての前記ユニークな状態データが前記共有キャッシュメモリおよび前記スヌープフィルタ回路双方において設定され、これにより、前記キャッシュデータラインが複数のトランザクションソースと関連付けられて保存されていることが示される、
請求項１５に記載の装置。
【請求項１８】
前記複数のトランザクションソースのうちの１つからのトランザクションリクエストに応答してキャッシュデータラインが主要メモリからフェッチされた場合、前記キャッシュデータラインは、前記複数のトランザクションソースのうちの前記１つのローカルキャッシュメモリ内に保存され、対応するスヌープフィルタタグ値が前記スヌープフィルタ回路内に保存される、請求項１に記載の装置。
【請求項１９】
前記複数のトランザクションソースは、１つ以上のプロセッサコアを含む、請求項１に記載の装置。
【請求項２０】
前記ローカルキャッシュメモリはそれぞれ、Ｌ１およびＬ２キャッシュメモリを含む、請求項１に記載の装置。
【請求項２１】
前記共有キャッシュメモリはＬ３キャッシュメモリである、請求項１に記載の装置。
【請求項２２】
前記複数のトランザクションソースは、リングベースの相互接続回路へと接続される、請求項１に記載の装置。
【請求項２３】
データ処理装置であって、
トランザクションを生成する複数のトランザクションソース手段であって、前記複数のトランザクションソース手段はそれぞれ、データを保存するローカルキャッシュメモリ手段を有する、複数のトランザクションソース手段と、
データを保存する共有キャッシュメモリ手段であって、前記共有キャッシュメモリ手段は、前記複数のトランザクションソース手段に連結され、非包括的モードで動作するように構成され、前記共有キャッシュメモリ手段は、共有キャッシュタグ値を保存し、前記共有キャッシュタグ値は、前記共有キャッシュメモリ手段内に保存されているキャッシュデータラインを追跡する、共有キャッシュメモリ手段と、
スヌープフィルタタグ値を保存するスヌープフィルタ手段であって、前記スヌープフィルタタグ値は、前記ローカルキャッシュメモリ手段内に保存されているキャッシュデータラインを追跡する、スヌープフィルタ手段と、
を含み、
目標タグ値を有する目標キャッシュデータラインに対するトランザクションリクエストに応答して、
（ｉ）前記共有キャッシュメモリ手段は、前記目標タグ値と、前記共有キャッシュタグ値とを比較することで、前記目標キャッシュデータラインが前記共有キャッシュメモリ手段内に保存されているか否かを検出するように構成され、
（ｉｉ）前記スヌープフィルタ手段は、前記目標タグ値と、前記スヌープフィルタタグ値とを比較することで、前記目標キャッシュデータラインが前記ローカルキャッシュメモリ手段のうちのいずれかに保存されているか否かを検出するように構成される、
装置。
【請求項２４】
データ処理方法であって、
複数のトランザクションソースとのトランザクションを生成するステップと、
前記複数のトランザクションソースそれぞれのローカルキャッシュメモリ中に各データを保存するステップと、
前記複数のトランザクションソースに連結された共有キャッシュメモリ中にデータを保存するステップと、
前記共有キャッシュメモリを非包括的モードで動作させるステップと、
前記共有キャッシュメモリ手段内に保存されているキャッシュデータラインを追跡する共有キャッシュタグ値を前記共有キャッシュメモリ内に保存するステップと、
前記ローカルキャッシュメモリ手段内に保存されているキャッシュデータラインを追跡するスヌープフィルタタグ値をスヌープフィルタ回路内に保存するステップと、
目標タグ値を有する目標キャッシュデータラインに対するトランザクションリクエストに応答して、
（ｉ）前記目標タグ値と、前記共有キャッシュタグ値とを比較することで、前記目標キャッシュデータラインが前記共有キャッシュメモリ内に保存されているか否かを検出するステップと、
（ｉｉ）前記目標タグ値と、前記スヌープフィルタタグ値とを比較して、前記目標キャッシュデータラインが前記ローカルキャッシュメモリのうちいずれかの内部に保存されているか否かを検出するステップと、
を行う、ステップと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より詳細には、本発明は、キャッシュメモリ階層と、このようなキャッシュメモリ階層内の一貫性を支持するためのスヌープフィルタリング回路とに関する。
【背景技術】
【０００２】
データ処理システムにキャッシュメモリ階層を設けることが公知である。非包括的動作モードにおいて、キャッシュメモリ階層は、キャッシュデータラインの単一のコピーが保持されるように、動作する。この単一のキャッシュデータラインは、例えばレベル１（Ｌ1）、レベル２（Ｌ２）またはレベル３（Ｌ３）で保持され得るが、１つよりも多くのレベルで保持され得ないし、１つのレベル内において１つよりも多くのキャッシュで保持され得ない。このような非包括的動作により、キャッシュ階層内の記憶容量の効率的利用が可能になるものの、当該キャッシュデータラインへのアクセスを要求しているトランザクションソースに近い位置に当該キャッシュデータラインが保存されていない場合、キャッシュデータラインへのアクセスが遅くなるという不利点も発生する。別の動作モードとして、包括的モードがある。包括的動作モードにおいて、キャッシュラインのデータは、キャッシュ階層の複数のレベルおよび前記キャッシュ階層のレベル内の複数のキャッシュ内に保存され得る。この種の動作を用いた場合、要求元のトランザクションソースは、所与のキャッシュデータラインへより高速にアクセスすることが可能となるが、キャッシュ階層の記憶資源の使用効率が低くなるという不利点がある。スヌープフィルタ回路の提供が公知である。スヌープフィルタ回路は、包括的動作モード内のスヌープタグ値を保存するように、機能する。スヌープタグ値は、所与のキャッシュデータラインのコピーを保存しているキャッシュメモリを特定し、これにより、当該キャッシュデータラインを保存しているローカルキャッシュメモリへとスヌープリクエストおよびアクセスを方向付けることが可能となる。スヌープフィルタ回路の不利点として、ゲートカウント、出力、面積などの点において資源が消費される点がある。
【発明の概要】
【０００３】
一局面から鑑みて、本発明は、データ処理装置を提供する。前記装置は、以下を含む：複数のトランザクションソースであって、前記複数のトランザクションソースはそれぞれ、ローカルキャッシュメモリを有する、複数のトランザクションソースと；前記複数のトランザクションソースに連結された共有キャッシュメモリであって、前記共有キャッシュメモリは、非包括的モードで動作するように構成され、前記共有キャッシュメモリは、共有キャッシュタグ値を保存し、前記共有キャッシュタグ値は、前記共有キャッシュメモリ内に保存されているキャッシュデータラインを追跡する、共有キャッシュメモリと；スヌープフィルタタグ値を保存するように構成されたスヌープフィルタ回路であって、前記スヌープフィルタタグ値は、前記ローカルキャッシュメモリ内に保存されているキャッシュデータラインを追跡する、スヌープフィルタ回路。目標タグ値を有する目標キャッシュデータラインに対するトランザクションリクエストに応答して、
（ｉ）前記共有キャッシュメモリは、前記目標タグ値と、前記共有キャッシュタグ値とを比較して、前記目標キャッシュデータラインが前記共有キャッシュメモリ内に保存されているか否かを検出するように構成され、
（ｉｉ）前記スヌープフィルタ回路は、前記目標タグ値と、前記スヌープフィルタタグ値とを比較して、前記目標キャッシュデータラインが前記ローカルキャッシュメモリのうちのいずれかに保存されているかを検出するように構成される。
【０００４】
本発明による技術により提供されるデータ処理装置は、共有キャッシュメモリ（例えば、レベル３キャッシュメモリ）を有する。前記共有キャッシュメモリは、非包括的モードで動作する。前記データ処理装置はまた、スヌープフィルタリング回路を有する。前記スヌープフィルタリング回路は、スヌープフィルタタグ値を保存する。前記スヌープフィルタタグ値は、前記ローカルメモリに保存されているキャッシュデータラインを追跡する。前記スヌープフィルタ回路は、前記共有キャッシュメモリ内に保持されているキャッシュデータラインについて、スヌープフィルタタグ値を保存する必要は無い（ただし、以下に説明するいくつかの場合においては保存する必要がある場合もある）。なぜならば、前記スヌープフィルタタグ値の代わりに前記共有キャッシュタグ値を用いることで、トランザクションリクエストの対象となる目標キャッシュデータラインを特定およびロケートすることができる。その結果、前記スヌープフィルタ回路内の空間節約が可能となる。本技術によれば、タグ保存を包括的に行いつつ（すなわち、前記共有キャッシュメモリおよび前記ローカルキャッシュメモリ内に存在する全キャッシュデータラインのタグを前記共有キャッシュメモリおよび前記スヌープフィルタ回路それぞれの内部に保存しつつ）、データ値の保存において非包括的に動作するシステムを提供することができる（すなわち、共有キャッシュメモリが非包括的にキャッシュデータラインを保存することができる）。その結果、必要なスヌープトラフィック量の低減が支援される。なぜならば、キャッシュデータラインの位置および存在を前記スヌープフィルタ回路および前記共有キャッシュメモリから決定することが可能であるからである。
【０００５】
前記スヌープフィルタ回路は、前記ローカルキャッシュメモリのうちの１つの内部にキャッシュデータラインが存在する旨を示すスヌープフィルタタグ値を保存するだけでよく、これらのローカルキャッシュメモリ全てに対してブロードキャストを要求することができる。しかし、いくつかの実施形態において、前記スヌープフィルタ回路内のデータを特定するトランザクションソースを保存してもよく、このトランザクションソースにより、どのキャッシュメモリ内にどのキャッシュデータラインが保存されているかを特定するデータが特定される。このようにすることで、推測的スヌープを回避できる可能性が高くすることができる。なぜならば、どのキャッシュデータラインがどのローカルキャッシュメモリに保存されているかを前記スヌープフィルタ回路のみから決定することが可能であるからである。
【０００６】
トランザクションソースは、単一のローカルキャッシュメモリのみを特定できればよい。なぜならば、このようにすることで、記憶容量の保全に繋がり、また、多数の動作状況下において十分となるからである。他の実施形態において、前記データを特定するトランザクションソースは、消費される保存用空間と達成される効率向上との間のバランスをとるように選択された数値を用いて、前記トランザクションソースのうち適切なサブセットを特定することができる。また、データを特定するトランザクションソースの個々の項目も正確である必要が無く、一定範囲のトランザクションソース（例えば、偶数値のトランザクションソース全てまたは一定範囲内の値の全トランザクションソース）を特定することができる。
【０００７】
前記スヌープフィルタ回路の構成は、ローカルキャッシュメモリ内に保存されている各キャッシュデータラインのスヌープフィルタタグ値を前記スヌープフィルタ回路が保存しなければならない点のみにおいて、厳密に包括的である。しかし、各保存されているスヌープフィルタタグ値に対して、ローカルキャッシュメモリ内に保存されている対応するキャッシュデータラインをあてがう必要は無い。なぜならば、稀な例において前記スヌープフィルタ回路内においてキャッシュデータラインを追跡する必要無く、キャッシュデータラインをローカルキャッシュメモリから無くすことが可能であるからである。
【０００８】
前記スヌープフィルタ回路および前記共有キャッシュメモリはどちらとも、目標タグ値と、自身の内部に保存されているタグ値とを比較する。この比較においていずれかがヒットした場合、当該トランザクションリクエストは、マッチするスヌープフィルタタグ値を有するローカルキャッシュメモリまたはマッチする共有キャッシュタグ値を有する共有キャッシュメモリのうち適切な１つによってサービスされる。
【０００９】
いくつかの状況において、前記共有キャッシュメモリのデフォルト非包括的挙動は、キャッシュライン毎に選択的にオーバーライドすることができ、これにより、前記スヌープフィルタ回路および前記共有キャッシュメモリ双方においてヒットを得ることが可能となり、その後前記スヌープフィルタ回路および前記共有キャッシュメモリ双方が前記トランザクションリクエストをサービスすることができる。
【００１０】
前記共有キャッシュメモリおよび前記スヌープフィルタ回路が比較動作を並行して行うように構成されている場合、動作速度が上昇し得、制御複雑性が低下し得る。いくつかの実施形態において、前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、アクセスを並行して行う際、相互ロックされたパイプラインとして動作するように構成され得る。
【００１１】
前記共有キャッシュメモリまたは前記スヌープフィルタ回路のいずれかにおいてヒットが発生した場合、目標キャッシュデータラインに対するトランザクションを主要メモリに対して開始することができる。返送された目標キャッシュデータラインは通常は、前記ローカルキャッシュメモリのうちトランザクションソースに対応する１つの内部に保存され、前記共有キャッシュメモリ内には保存されない（すなわち、前記共有キャッシュメモリのデフォルト非包括的挙動と一貫している）。その後、前記目標キャッシュデータラインが前記ローカルキャッシュメモリから排除された場合、前記目標キャッシュデータラインを後で前記共有キャッシュメモリ内に保存することが可能である。
【００１２】
前記スヌープフィルタ回路内に保存されるスヌープフィルタタグ値としてかまたは前記共有キャッシュメモリ内に保存される共有キャッシュタグ値との間にタグ値をアトミックに変更するように前記共有キャッシュメモリおよび前記スヌープフィルタ回路を構成すれば、対応するキャッシュデータラインの保存場所を追従することができるため、制御複雑性が有利に低減される。このようなアトミック挙動を行えば、何か変化があった場合において、少なくとも任意の変化の外部可視性が得られる限り、当該変化を単一の動作として完全に完了することができる。その結果、後続トランザクションにおいて、タグ値の保存場所についての部分的に完了した変更が発生することが無くなる。なぜならば、このような部分的に完了した変更が有った場合、挙動においてエラーまたは予測不可能な挙動が発生し得、その結果、制御複雑性が大幅に高まり、管理または回避が必要となるからである。
【００１３】
タグ値の保存場所に対するアトミック変更の例を挙げると、ローカルキャッシュメモリのうちの１つからキャッシュラインを排除する場合または共有キャッシュメモリからローカルキャッシュメモリのうちの１つへとキャッシュデータラインを呼び返す場合がある。
【００１４】
上述したように、共有キャッシュメモリは、包括的モードにおいて１つ以上のキャッシュデータラインを選択的に保存するように制御することが可能である。このようなキャッシュデータラインの包括的モード保存への切り替えを引き起こす動作の一例として、１つ以上の所定の種類のトランザクションリクエストのうちの１つを有するトランザクションリクエストに対する応答がある。一例として、キャッシュデータラインをローカルキャッシュメモリへと読み出しかつその後前記ローカルキャッシュメモリ内に保存された前記キャッシュデータラインを改変しないような種類のトランザクションとしては、前記キャッシュデータラインのをトリガ／許可するようなものがあり得る。
【００１５】
いくつかの実施形態において、共有キャッシュメモリおよびスヌープ回路は、このユニークな状態データを用いて、複数のトランザクションソースのうちの１つと関連付けられた各キャッシュデータラインについてのユニークな状態データを保存するように構成され得る。このユニークな状態データは、当該キャッシュデータラインが、前記複数のトランザクションソースのうちの他のいずれかのローカルキャッシュメモリ内に保存されているか否かを示す。よって、前記ユニークな状態データは、キャッシュデータラインが単一のトランザクションソースの代表としてユニークに保存されているかまたは複数のトランザクションソースの代表として非ユニークに保存されているかを示す。
【００１６】
いくつかの実施形態において、前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、前記共有キャッシュメモリ内に保存されたキャッシュデータラインを異なるトランザクションソースでヒットした所与のトランザクションソースからの非改変的読み出しトランザクションの受信に応答するように構成され得る。この応答は、前記所与のトランザクションソースのローカルキャッシュメモリ内に保存されるべきキャッシュデータラインを前記所与のトランザクションソースへと返送することによって行われ、その結果、前記キャッシュデータラインは前記共有キャッシュメモリ内に保存され、前記共有キャッシュメモリおよび前記スヌープフィルタ回路双方におけるキャッシュデータラインのユニークな状態データにより、保存されたデータのキャッシュランドが複数のトランザクションソースと関連付けられていることを示す。このようにして、前記共有キャッシュメモリは、少なくとも前記非改変的読み出しトランザクションが受信されたキャッシュデータラインについて、包括的モードで動作するように切り換えられる。
【００１７】
他の実施形態（上記との組み合わせを含む）において、前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、異なるトランザクションソースによってローカルキャッシュメモリ内に保存されたキャッシュデータラインとヒットする、前記共有キャッシュメモリ内でミスした（ヒットしなかった）所与のトランザクションソースからの非改変的読み出しトランザクションの受信に応答するように構成され、前記応答は、前記所与のトランザクションソースのローカルキャッシュメモリ内へ保存されるべきキャッシュデータラインを前記所与のトランザクションソースへと返送することによって行われ、これにより、前記キャッシュデータラインは前記異なるトランザクションソースの前記ローカルキャッシュメモリ内に保存され、前記キャッシュデータラインは前記共有キャッシュメモリ内に保存され、前記キャッシュデータラインについてのユニークな状態データが前記共有キャッシュメモリおよび前記スヌープフィルタ回路双方において設定され、これにより、前記キャッシュデータラインが複数のトランザクションソースと関連付けられて保存されていることが示される。ここでも、当該キャッシュデータラインについて、包括的モードの動作に切り換えられる。
【００１８】
前記複数のトランザクションソースのうちの１つからのトランザクションリクエストに応答してキャッシュデータラインがメモリからフェッチされた場合、前記キャッシュデータラインは、前記複数のソースのうちの１つのローカルキャッシュメモリ内に保存され、対応するスヌープフィルタタグ値が前記スヌープフィルタ回路内に保存される。データ値を特定するトランザクションソースも前記スヌープフィルタ回路によるものであった場合、これも同時に書き込まれ得る。
【００１９】
前記複数のトランザクションソースは、多様な異なる形態を持ち得ることが理解される。１つの形態において、前記複数のトランザクションソースは、１つ以上のプロセッサコアを含む。前記ローカルキャッシュメモリも、多様な異なる形態を含み得る（例えば、ＬＩキャッシュメモリおよびＬ２キャッシュメモリ）。
【００２０】
前記複数のトランザクションソースは、リングベースの相互接続を介して簡便に接続され得る。このようなリングベースの相互接続は、より多数のトランザクションソースまたはより多数の共有キャッシュメモリがシステムへ追加される際に、効率的にスケーリングされる。
【００２１】
別の局面から鑑みて、本発明は、データ処理装置を提供する。前記データ処理装置は、以下を含む：トランザクションを生成する複数のトランザクションソース手段であって、前記複数のトランザクションソース手段はそれぞれ、データを保存するローカルキャッシュメモリ手段を有する、複数のトランザクションソース手段；データを保存する共有キャッシュメモリ手段であって、前記共有キャッシュメモリ手段は、前記複数のトランザクションソース手段に連結され、かつ、非包括的モードで動作するように構成され、前記共有キャッシュメモリ手段は、共有キャッシュタグ値を保存し、前記共有キャッシュタグ値は、前記共有キャッシュメモリ手段内に保存されているキャッシュデータラインを追跡する、共有キャッシュメモリ手段；およびスヌープフィルタタグ値を保存するスヌープフィルタ手段であって、前記スヌープフィルタタグ値は、前記ローカルキャッシュメモリ手段内に保存されているキャッシュデータラインを追跡する、スヌープフィルタ手段。目標タグ値を有する目標キャッシュデータラインに対するトランザクションリクエストに応答して、
（ｉ）前記共有キャッシュメモリ手段は、前記目標タグ値と、前記共有キャッシュタグ値とを比較することで、前記目標キャッシュデータラインが前記共有キャッシュメモリ手段内に保存されているか否かを検出するように構成され、
（ｉｉ）前記スヌープフィルタ手段は、前記目標タグ値と、前記スヌープフィルタタグ値とを比較することで、前記目標キャッシュデータラインが前記ローカルキャッシュメモリ手段のうちのいずれかに保存されているか否かを検出するように構成される。
【００２２】
さらなる局面から鑑みて、本発明は、データ処理方法を提供する。前記方法は、以下を含む：複数のトランザクションソースとのトランザクションを生成するステップ；前記複数のトランザクションソースそれぞれのローカルキャッシュメモリ中に各データを保存するステップ；前記複数のトランザクションソースに連結された共有キャッシュメモリ中にデータを保存するステップ；前記共有キャッシュメモリを非包括的モードで動作させるステップ；前記共有キャッシュメモリ手段内に保存されているキャッシュデータラインを追跡する共有キャッシュタグ値を前記共有キャッシュメモリ内に保存するステップ；前記ローカルキャッシュメモリ手段内に保存されているキャッシュデータラインを追跡するスヌープフィルタタグ値をスヌープフィルタ回路内に保存するステップ；目標タグ値を有する目標キャッシュデータラインに対するトランザクションリクエストに応答して、
（ｉ）前記目標タグ値と、前記共有キャッシュタグ値とを比較することで、前記目標キャッシュデータラインが前記共有キャッシュメモリ内に保存されているか否かを検出するステップと、
（ｉｉ）前記目標タグ値と、前記スヌープフィルタタグ値とを比較して、前記目標キャッシュデータラインが前記ローカルキャッシュメモリのうちいずれかの内部に保存されているか否かを検出するステップと、
を行う、ステップ。
【００２３】
本発明の上記および他の目的、特徴および利点は、以下の例示的実施形態の詳細な説明から明らかとなる。以下の詳細な説明は、添付図面と共に読まれるべきである。
【図面の簡単な説明】
【００２４】
【図１】データ処理装置の模式図である。前記データ処理装置は、複数のトランザクションソースを含む。前記複数のトランザクションソースはそれぞれ、ローカルキャッシュメモリと、共有キャッシュメモリと、スヌープフィルタ回路とを含む。
【図２】共有キャッシュメモリの模式図である。
【図３】スヌープフィルタ回路の模式図である。
【図４】前記スヌープフィルタ回路および前記共有キャッシュメモリによって行われる比較動作の並行相互ロックされたパイプライン動作を示す。
【図５】アトミックタグ維持の模式図であり、タグ値の保存場所が前記スヌープフィルタ回路と前記共有キャッシュメモリとの間で変更されている。
【発明を実施するための形態】
【００２５】
図１は、データ処理装置の模式図である。前記データ処理装置は、主要メモリ６に連結された集積回路４上のシステムチップ２を含む。システムオンチップ集積回路４は、複数のトランザクションソース８および１０を含む。複数のトランザクションソース８および１０はそれぞれ、Ｌ２キャッシュメモリと、２つのＬ１キャッシュメモリと、２つのプロセッサコアとを含む。トランザクションソース８および１０それぞれの内部のＬ２キャッシュメモリおよび２つのＬ１キャッシュメモリは、これら別個のトランザクションソース８および１０のローカルキャッシュメモリとして集合的にみなすことができる。リングベースの相互接続１２は、トランザクションソース８および１０を、スヌープフィルタ回路１４およびＬ３キャッシュの形態の共有キャッシュメモリ１６へと連結させる。メモリコントローラ１８も、リングベースの相互接続１２へと接続される。メモリコントローラ１８は、共有キャッシュメモリ１６によって形成されたキャッシュ階層と、トランザクションソース８および１０内のローカルキャッシュメモリとの内部に当該データが存在していない場合、主要メモリ６内のデータへのアクセスを許可する。
【００２６】
プロセッサコアがキャッシュデータラインへのアクセスを求めているトランザクションを発行すると、前記プロセッサコアと関連付けられたローカルキャッシュメモリ内にこのキャッシュラインデータが保存されているか否かについての決定がなされる。前記ローカルキャッシュメモリ内でミスした（ヒットしなかった）場合、トランザクションは、リングベースの相互接続１２を介してスヌープフィルタ回路１４および共有キャッシュメモリ１６へと送られる。スヌープフィルタ回路１４および共有キャッシュメモリ１６は、リングベースの相互接続１２上で送られたトランザクションと関連付けられた目標タグ値の並行パイプライン相互ロックタグ検索を行う。この検索は、前記目標タグ値と、スヌープフィルタ回路１４内に保存されたスヌープフィルタタグ値および共有キャッシュメモリ１６内に保存された共有キャッシュタグ値とを比較するステップを含む。共有キャッシュメモリ１６内においてヒットが発生した場合、前記トランザクションは、共有キャッシュメモリ１６によってサービスされる。スヌープフィルタ回路１４内においてヒットが発生した場合、前記スヌープフィルタ回路は、信号を返送する。前記信号は、前記目標キャッシュデータラインがシステムオンチップ集積回路４内のローカルキャッシュメモリのうちの１つの内部に保存されていることを確認し、このローカルキャッシュメモリを（前記スヌープフィルタタグ値と関連付けられた様態で保存されたデータを特定するトランザクションソースを用いて）特定する。スヌープフィルタ回路１４および共有キャッシュメモリ１６のどちらにもミスした（ヒットしなっかた）場合、メモリコントローラ１８は、前記目標キャッシュデータラインについて、オフチップメモリアクセスを主要メモリ６に対して開始する。
【００２７】
主要メモリ６から返送された目標キャッシュデータラインは、前記目標キャッシュデータラインを要求したトランザクションソースのローカルキャッシュメモリへ再度保存され、対応するスヌープフィルタタグエントリーがスヌープフィルタ回路１４へと書き込まれる。この対応するスヌープフィルタタグエントリーは、このスヌープフィルタタグ値を介して、前記ローカルキャッシュメモリ内に再度保存されたキャッシュデータラインのメモリ位置と、前記目標キャッシュデータラインを保存しているローカルキャッシュメモリを有するトランザクションソースを特定するデータ値を特定するトランザクションソースとを特定する。
【００２８】
共有キャッシュメモリ１６は、キャッシュデータラインが共有キャッシュメモリ１６または前記ローカルキャッシュメモリのうちの１つの（双方ではなく）いずれかに保存されるようなデフォルト挙動となるように、主に非包括的に動作する。このデフォルト非包括的挙動は、特定の状況においてオーバーライドすることができる。詳細には、目標キャッシュデータラインを求めているトランザクションのトランザクション種類を特定することができ、この種類が１つ以上の所定の種類とマッチした場合、当該目標キャッシュデータラインについて包括的保存モードをトリガすることができる。詳細には、前記トランザクションが、その後前記キャッシュデータラインを改変しない読み出しである場合（ｒｅａｄ＿ｃｌｅａｎ）、共有キャッシュメモリ１６内にヒットが発生し、その後、前記目標キャッシュデータラインは、共有キャッシュメモリ１６内に保存されている状態のまま、前記トランザクションソースのローカルキャッシュメモリ内へと保存されるべきものとして前記目標キャッシュデータラインを要求した前記トランザクションソースへと返送され得る。スヌープフィルタタグ値が、スヌープフィルタ回路１４へと書き込まれる。前記スヌープフィルタタグ値は、前記トランザクションソース内の目標キャッシュデータラインの存在を追跡する。よって、前記スヌープフィルタタグ値および共有キャッシュタグ値双方が同一のキャッシュデータラインを追跡し、１つよりも多くの場所におけるその存在を示す。
【００２９】
所与のキャッシュデータラインについての非包括的挙動から包括的挙動への切り換えが行われ得る別の状況として、その後キャッシュデータラインを改変しない読み出しトランザクションが行われかつこのキャッシュデータラインが共有キャッシュメモリ１６内でミスし（ヒットしなかった）かつスヌープフィルタ回路１４によって前記キャッシュデータラインがローカルキャッシュメモリのうちの１つとヒットすることが示される状況がある。この状況の場合、前記目標キャッシュデータラインは、前記目標キャッシュデータラインが保存されているローカルキャッシュメモリから取り出され、共有キャッシュメモリ１６と、前記目標キャッシュデータラインを要求したトランザクションソースのローカルキャッシュメモリとの双方にコピーが配置される。この状況において、前記目標キャッシュデータラインは、最終的にはシステム内の３つの異なる場所内に（すなわち、２つのローカルキャッシュメモリおよび共有キャッシュメモリ１６内に）保存される。このようなキャッシュラインについての包括的モード挙動への切り換えは、ユニークな状態データの利用により、追跡することができる。前記ユニークな状態データは、追跡されている各キャッシュデータライン（ならびにスヌープフィルタ回路１４および共有キャッシュ回路１６内に保存されているフラグ値）について保存されているユニークな／非ユニークなフラグの形態をとる。
【００３０】
キャッシュラインが非包括的動作モードに従って保存された場合、前記ユニークな状態データは、このキャッシュデータラインのコピーが１つだけ保存されていることを示す。キャッシュデータラインが包括的動作モードで保持されている場合、前記ユニークな状態データは、その旨を示す。
【００３１】
図２は、共有キャッシュメモリ１６の模式図である。共有キャッシュメモリ１６は、キャッシュアレイ２０およびキャッシュコントローラ２２を含む。キャッシュアレイ２０内の各キャッシュライン２４は、当該キャッシュライン２４に対する共有キャッシュタグ値と、当該キャッシュデータラインのペイロードと、関連付けられたユニークな状態データ（Ｕ／ＮＵ）と、データ（ＲＮＦＩＤ）を特定するトランザクションソースとを保存する。共有キャッシュメモリ１６内に保存されたＲＮＦＩＤは、当該キャッシュデータラインの共有キャッシュメモリ内において充填を起こさせたのはトランザクションソース８および１０のうちどちらかでありおよびよって前記トランザクションソース８および１０のうちどちらかが当該キャッシュデータラインを「所有している」旨を示す。前記キャッシュデータラインが１つよりも多くのローカルキャッシュメモリによって保持されている旨を前記ユニークな状態データが示す場合、前記ＲＮＦＩＤフィールドは無効となる。なぜならば、前記ＲＮＦＩＤフィールドは、単一のトランザクションソースしか特定できないからである。その結果、ブロードキャストスヌープリクエストへの後退が行われ、その結果、トランザクションが受信されたときにキャッシュデータラインを保存しているローカルキャッシュメモリがどれかが特定される。いくつかの実施形態において、より多数の資源をデータを特定するトランザクションソースへの専用として用いることができ、存在するトランザクションソースの合計数の適切なサブセットを上限として、複数のトランザクションソースを特定することができる。
【００３２】
図３は、スヌープフィルタ回路１４の模式図である。スヌープフィルタ回路１４は、フィルタアレイ２６を含む。フィルタアレイ２６は、スヌープフィルタタグ値と、関連付けられたユニークな状態データと、データを特定するトランザクションソースとを保存する。スヌープフィルタコントローラ２８は、スヌープフィルタ１４の動作を制御する。これらのスヌープフィルタタグ値は、タグ値（主要メモリ６内に読み出されたキャッシュデータ値の読み出し元であるメモリアドレスの一部）と、前記キャッシュラインデータのコピーが複数のローカルキャッシュメモリの代表として保持されているか否かを示すユニークな状態データとを示す。データ（ＲＮＦＩＤ）を特定するトランザクションソースは、単一のローカルキャッシュメモリがスヌープフィルタタグ値に対応するキャッシュラインデータを保存している場合、当該キャッシュラインデータを保存しているトランザクションソースを特定する。複数のローカルキャッシュメモリが前記キャッシュデータラインを保存している場合、前記特定するトランザクションソースは、これら複数のローカルキャッシュメモリを別個に特定するための十分な容量を持っていない場合があり、そのため無効となる。その結果、ブロードキャストスヌープ動作の実行が必要となる。
【００３３】
図４は、リングベースの相互接続１２から受信されたトランザクション読み出しリクエストに応答するスヌープフィルタ回路１４および共有メモリキャッシュ１６の挙動の模式図である。スヌープフィルタ回路１４および共有キャッシュメモリ１６は、相互ロック並行パイプラインを行って、並行タグ検索を開始する。その後、スヌープフィルタ回路１４および共有キャッシュメモリ１６はどちらとも、ヒットまたはヒット無しを通知する。スヌープフィルタ回路１４からヒットが返送された場合、トランザクションソース識別子が返送される。前記トランザクションソース識別子は、（少なくとも単一のローカルキャッシュメモリのみが目標キャッシュデータラインを保存している場合において）前記ヒットに対応するローカルキャッシュメモリを特定する。スヌープフィルタ回路１４からヒットが返送されると、前記特定されたトランザクションソースは、トランザクションをサービスするステップに進む。共有キャッシュメモリ１６からヒットが返送されると、前記共有キャッシュメモリは、前記受信されたトランザクションをサービスするステップに進む。スヌープフィルタ回路１４および共有キャッシュメモリ１６がどちらともヒットした場合、スヌープフィルタ回路１４および共有キャッシュメモリ１６双方は、前記受信されたトランザクションをサービスする。スヌープフィルタ回路１４および共有キャッシュメモリ１６双方からヒットが無い旨が返送された場合、前記トランザクションはメモリコントローラ１８へと転送される。その後、メモリコントローラ１８は、主要メモリトランザクションを開始して、前記データの目標キャッシュラインを主要メモリ６からフェッチし、上述したようにトランザクションソースを要求しているローカルキャッシュメモリ内に前記目標キャッシュラインを保存する。
【００３４】
図５は、スヌープフィルタ回路１４によって保存されたスヌープフィルタタグ値と、共有キャッシュメモリ１６によって保存された共有キャッシュタグ値とに対して行われるアトミックタグ維持動作の模式図である。先ず、アクションＡとして、主要メモリからのロードに応答して、タグ値がスヌープフィルタタグ値として保存される。この段階において、キャッシュデータラインは、要求元のトランザクションソースのローカルキャッシュメモリ内に保存されており、共有キャッシュメモリ１６内には保存されていない。前記ローカルキャッシュメモリ内の空間が足りなくなった場合、前記ローカルキャッシュメモリは、このキャッシュデータラインを排除し、このキャッシュデータラインを移動させて、共有キャッシュメモリ１６内に保存することができる。この時点において、タグ値は、アクションＢによって示されるように、スヌープフィルタ回路１４内のスヌープフィルタタグ値として保存される代わりに、共有キャッシュ回路１６内の共有キャッシュタグ値として保存される。その後、前記キャッシュデータラインは、共有キャッシュメモリ１６から前記ローカルキャッシュメモリのうちの１つへと呼び返すことができ、この時点において、前記タグは、アクションＣによって示されるように、共有タグキャッシュメモリ１６内の共有キャッシュタグ値として保存される代わりに、スヌープフィルタ回路１４内のスヌープフィルタタグ値として保存される。
【００３５】
上述したように、特定の状況下において、キャッシュラインを、非包括的モードで保存された状態から包括的モードで保存された状態に切り換えることができる。これらの状況が発生した場合、アクションＤは、タグ値を元々の位置から除去することなく、前記タグ値をスヌープフィルタ回路１４と共有キャッシュメモリ１６との間でコピーする様態を示す。その結果、同一のタグ値が、スヌープフィルタ回路１４内のスヌープフィルタタグ値および共有キャッシュメモリ１６内の共有キャッシュタグ値として保存される。これをアクションＤによって示す。
【００３６】
システムオンチップ集積回路４は、ローカルキャッシュメモリのコンテンツを共有キャッシュメモリ１６までフラッシュすることが望ましい状況下において、或る種類の動作（例えば、部分的出力低下）をサポートすることができる。このようなキャッシュ維持動作は、図５中のアクションＥに示すように実行することができ、その際、停止中のローカルキャッシュメモリに対するスヌープフィルタタグ値全てを共有キャッシュメモリ１６を通じて移動させて、共有キャッシュメモリ１６に対してフラッシュされているキャッシュデータラインに付随させることが必要となる。
【００３７】
上述したように、タグ維持動作としての図５中に示すアクションＡ、Ｂ、Ｃ、ＤおよびＥの動作は、アトミックに行われる。すなわち、複数のステップが必要な場合、これらのステップは、単一のエンティティとして取り扱われ、開始された後は必ず完了される（すなわち、動作が中断した場合であっても、中間状態は視認できない）。
【００３８】
本明細書中、本発明の例示的実施形態について添付図面を参照しながら詳述してきたが、本発明はこれらの実施形態そのものに限定されず、当業者であれば、添付の特許請求の範囲によって規定されるような本発明の範囲および意図から逸脱することなく多様な変更および改変を行うことが可能であることが理解されるべきである。
【符号の説明】
【００３９】
２  システムチップ
４  集積回路
６  主要メモリ
８、１０  トランザクションソース
１２  リングベースの相互接続
１４  スヌープフィルタ回路
１６  共有キャッシュメモリ
１８  メモリコントローラ
２０  キャッシュアレイ
２２  キャッシュコントローラ
２４  キャッシュライン
２６  フィルタアレイ
２８  スヌープフィルタコントローラ
【図１】
2013041582.tif 000003
【図２】
2013041582.tif 000004
【図３】
2013041582.tif 000005
【図４】
2013041582.tif 000006
【図５】
2013041582.tif 000007
【外国語明細書】
2013041582000001.pdf