説明

スヌープフィルタおよび非包括的共有キャッシュメモリ

【課題】キャッシュメモリ階層内の一貫性を支持するためのスヌープフィルタリング回路を備えたデータ処理装置を提供する。
【解決手段】スヌープフィルタ回路は、スヌープフィルタタグ値を保存し、ローカルキャッシュメモリ内に保存されているキャッシュデータラインを追跡する。目標キャッシュデータラインについてのトランザクションが受信された場合、スヌープフィルタ回路は、目標タグ値とスヌープフィルタタグ値とを比較し、共有キャッシュ回路は、目標タグ値と共有キャッシュタグ値とを比較する。比較動作は、相互ロックされた並行パイプラインを用いて行われる。共有キャッシュ回路は、デフォルト非包括的モードで動作し、共有キャッシュメモリおよびスヌープフィルタは、共有キャッシュメモリ内のデータ保存については非包括的に挙動するが、スヌープフィルタタグ値および共有キャッシュタグ値がどちらもある場合、タグ保存について包括的に挙動する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理システムの分野に関する。より詳細には、本発明は、キャッシュメモリ階層と、このようなキャッシュメモリ階層内の一貫性を支持するためのスヌープフィルタリング回路とに関する。
【背景技術】
【0002】
データ処理システムにキャッシュメモリ階層を設けることが公知である。非包括的動作モードにおいて、キャッシュメモリ階層は、キャッシュデータラインの単一のコピーが保持されるように、動作する。この単一のキャッシュデータラインは、例えばレベル1(L1)、レベル2(L2)またはレベル3(L3)で保持され得るが、1つよりも多くのレベルで保持され得ないし、1つのレベル内において1つよりも多くのキャッシュで保持され得ない。このような非包括的動作により、キャッシュ階層内の記憶容量の効率的利用が可能になるものの、当該キャッシュデータラインへのアクセスを要求しているトランザクションソースに近い位置に当該キャッシュデータラインが保存されていない場合、キャッシュデータラインへのアクセスが遅くなるという不利点も発生する。別の動作モードとして、包括的モードがある。包括的動作モードにおいて、キャッシュラインのデータは、キャッシュ階層の複数のレベルおよび前記キャッシュ階層のレベル内の複数のキャッシュ内に保存され得る。この種の動作を用いた場合、要求元のトランザクションソースは、所与のキャッシュデータラインへより高速にアクセスすることが可能となるが、キャッシュ階層の記憶資源の使用効率が低くなるという不利点がある。スヌープフィルタ回路の提供が公知である。スヌープフィルタ回路は、包括的動作モード内のスヌープタグ値を保存するように、機能する。スヌープタグ値は、所与のキャッシュデータラインのコピーを保存しているキャッシュメモリを特定し、これにより、当該キャッシュデータラインを保存しているローカルキャッシュメモリへとスヌープリクエストおよびアクセスを方向付けることが可能となる。スヌープフィルタ回路の不利点として、ゲートカウント、出力、面積などの点において資源が消費される点がある。
【発明の概要】
【0003】
一局面から鑑みて、本発明は、データ処理装置を提供する。前記装置は、以下を含む:複数のトランザクションソースであって、前記複数のトランザクションソースはそれぞれ、ローカルキャッシュメモリを有する、複数のトランザクションソースと;前記複数のトランザクションソースに連結された共有キャッシュメモリであって、前記共有キャッシュメモリは、非包括的モードで動作するように構成され、前記共有キャッシュメモリは、共有キャッシュタグ値を保存し、前記共有キャッシュタグ値は、前記共有キャッシュメモリ内に保存されているキャッシュデータラインを追跡する、共有キャッシュメモリと;スヌープフィルタタグ値を保存するように構成されたスヌープフィルタ回路であって、前記スヌープフィルタタグ値は、前記ローカルキャッシュメモリ内に保存されているキャッシュデータラインを追跡する、スヌープフィルタ回路。目標タグ値を有する目標キャッシュデータラインに対するトランザクションリクエストに応答して、
(i)前記共有キャッシュメモリは、前記目標タグ値と、前記共有キャッシュタグ値とを比較して、前記目標キャッシュデータラインが前記共有キャッシュメモリ内に保存されているか否かを検出するように構成され、
(ii)前記スヌープフィルタ回路は、前記目標タグ値と、前記スヌープフィルタタグ値とを比較して、前記目標キャッシュデータラインが前記ローカルキャッシュメモリのうちのいずれかに保存されているかを検出するように構成される。
【0004】
本発明による技術により提供されるデータ処理装置は、共有キャッシュメモリ(例えば、レベル3キャッシュメモリ)を有する。前記共有キャッシュメモリは、非包括的モードで動作する。前記データ処理装置はまた、スヌープフィルタリング回路を有する。前記スヌープフィルタリング回路は、スヌープフィルタタグ値を保存する。前記スヌープフィルタタグ値は、前記ローカルメモリに保存されているキャッシュデータラインを追跡する。前記スヌープフィルタ回路は、前記共有キャッシュメモリ内に保持されているキャッシュデータラインについて、スヌープフィルタタグ値を保存する必要は無い(ただし、以下に説明するいくつかの場合においては保存する必要がある場合もある)。なぜならば、前記スヌープフィルタタグ値の代わりに前記共有キャッシュタグ値を用いることで、トランザクションリクエストの対象となる目標キャッシュデータラインを特定およびロケートすることができる。その結果、前記スヌープフィルタ回路内の空間節約が可能となる。本技術によれば、タグ保存を包括的に行いつつ(すなわち、前記共有キャッシュメモリおよび前記ローカルキャッシュメモリ内に存在する全キャッシュデータラインのタグを前記共有キャッシュメモリおよび前記スヌープフィルタ回路それぞれの内部に保存しつつ)、データ値の保存において非包括的に動作するシステムを提供することができる(すなわち、共有キャッシュメモリが非包括的にキャッシュデータラインを保存することができる)。その結果、必要なスヌープトラフィック量の低減が支援される。なぜならば、キャッシュデータラインの位置および存在を前記スヌープフィルタ回路および前記共有キャッシュメモリから決定することが可能であるからである。
【0005】
前記スヌープフィルタ回路は、前記ローカルキャッシュメモリのうちの1つの内部にキャッシュデータラインが存在する旨を示すスヌープフィルタタグ値を保存するだけでよく、これらのローカルキャッシュメモリ全てに対してブロードキャストを要求することができる。しかし、いくつかの実施形態において、前記スヌープフィルタ回路内のデータを特定するトランザクションソースを保存してもよく、このトランザクションソースにより、どのキャッシュメモリ内にどのキャッシュデータラインが保存されているかを特定するデータが特定される。このようにすることで、推測的スヌープを回避できる可能性が高くすることができる。なぜならば、どのキャッシュデータラインがどのローカルキャッシュメモリに保存されているかを前記スヌープフィルタ回路のみから決定することが可能であるからである。
【0006】
トランザクションソースは、単一のローカルキャッシュメモリのみを特定できればよい。なぜならば、このようにすることで、記憶容量の保全に繋がり、また、多数の動作状況下において十分となるからである。他の実施形態において、前記データを特定するトランザクションソースは、消費される保存用空間と達成される効率向上との間のバランスをとるように選択された数値を用いて、前記トランザクションソースのうち適切なサブセットを特定することができる。また、データを特定するトランザクションソースの個々の項目も正確である必要が無く、一定範囲のトランザクションソース(例えば、偶数値のトランザクションソース全てまたは一定範囲内の値の全トランザクションソース)を特定することができる。
【0007】
前記スヌープフィルタ回路の構成は、ローカルキャッシュメモリ内に保存されている各キャッシュデータラインのスヌープフィルタタグ値を前記スヌープフィルタ回路が保存しなければならない点のみにおいて、厳密に包括的である。しかし、各保存されているスヌープフィルタタグ値に対して、ローカルキャッシュメモリ内に保存されている対応するキャッシュデータラインをあてがう必要は無い。なぜならば、稀な例において前記スヌープフィルタ回路内においてキャッシュデータラインを追跡する必要無く、キャッシュデータラインをローカルキャッシュメモリから無くすことが可能であるからである。
【0008】
前記スヌープフィルタ回路および前記共有キャッシュメモリはどちらとも、目標タグ値と、自身の内部に保存されているタグ値とを比較する。この比較においていずれかがヒットした場合、当該トランザクションリクエストは、マッチするスヌープフィルタタグ値を有するローカルキャッシュメモリまたはマッチする共有キャッシュタグ値を有する共有キャッシュメモリのうち適切な1つによってサービスされる。
【0009】
いくつかの状況において、前記共有キャッシュメモリのデフォルト非包括的挙動は、キャッシュライン毎に選択的にオーバーライドすることができ、これにより、前記スヌープフィルタ回路および前記共有キャッシュメモリ双方においてヒットを得ることが可能となり、その後前記スヌープフィルタ回路および前記共有キャッシュメモリ双方が前記トランザクションリクエストをサービスすることができる。
【0010】
前記共有キャッシュメモリおよび前記スヌープフィルタ回路が比較動作を並行して行うように構成されている場合、動作速度が上昇し得、制御複雑性が低下し得る。いくつかの実施形態において、前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、アクセスを並行して行う際、相互ロックされたパイプラインとして動作するように構成され得る。
【0011】
前記共有キャッシュメモリまたは前記スヌープフィルタ回路のいずれかにおいてヒットが発生した場合、目標キャッシュデータラインに対するトランザクションを主要メモリに対して開始することができる。返送された目標キャッシュデータラインは通常は、前記ローカルキャッシュメモリのうちトランザクションソースに対応する1つの内部に保存され、前記共有キャッシュメモリ内には保存されない(すなわち、前記共有キャッシュメモリのデフォルト非包括的挙動と一貫している)。その後、前記目標キャッシュデータラインが前記ローカルキャッシュメモリから排除された場合、前記目標キャッシュデータラインを後で前記共有キャッシュメモリ内に保存することが可能である。
【0012】
前記スヌープフィルタ回路内に保存されるスヌープフィルタタグ値としてかまたは前記共有キャッシュメモリ内に保存される共有キャッシュタグ値との間にタグ値をアトミックに変更するように前記共有キャッシュメモリおよび前記スヌープフィルタ回路を構成すれば、対応するキャッシュデータラインの保存場所を追従することができるため、制御複雑性が有利に低減される。このようなアトミック挙動を行えば、何か変化があった場合において、少なくとも任意の変化の外部可視性が得られる限り、当該変化を単一の動作として完全に完了することができる。その結果、後続トランザクションにおいて、タグ値の保存場所についての部分的に完了した変更が発生することが無くなる。なぜならば、このような部分的に完了した変更が有った場合、挙動においてエラーまたは予測不可能な挙動が発生し得、その結果、制御複雑性が大幅に高まり、管理または回避が必要となるからである。
【0013】
タグ値の保存場所に対するアトミック変更の例を挙げると、ローカルキャッシュメモリのうちの1つからキャッシュラインを排除する場合または共有キャッシュメモリからローカルキャッシュメモリのうちの1つへとキャッシュデータラインを呼び返す場合がある。
【0014】
上述したように、共有キャッシュメモリは、包括的モードにおいて1つ以上のキャッシュデータラインを選択的に保存するように制御することが可能である。このようなキャッシュデータラインの包括的モード保存への切り替えを引き起こす動作の一例として、1つ以上の所定の種類のトランザクションリクエストのうちの1つを有するトランザクションリクエストに対する応答がある。一例として、キャッシュデータラインをローカルキャッシュメモリへと読み出しかつその後前記ローカルキャッシュメモリ内に保存された前記キャッシュデータラインを改変しないような種類のトランザクションとしては、前記キャッシュデータラインのをトリガ/許可するようなものがあり得る。
【0015】
いくつかの実施形態において、共有キャッシュメモリおよびスヌープ回路は、このユニークな状態データを用いて、複数のトランザクションソースのうちの1つと関連付けられた各キャッシュデータラインについてのユニークな状態データを保存するように構成され得る。このユニークな状態データは、当該キャッシュデータラインが、前記複数のトランザクションソースのうちの他のいずれかのローカルキャッシュメモリ内に保存されているか否かを示す。よって、前記ユニークな状態データは、キャッシュデータラインが単一のトランザクションソースの代表としてユニークに保存されているかまたは複数のトランザクションソースの代表として非ユニークに保存されているかを示す。
【0016】
いくつかの実施形態において、前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、前記共有キャッシュメモリ内に保存されたキャッシュデータラインを異なるトランザクションソースでヒットした所与のトランザクションソースからの非改変的読み出しトランザクションの受信に応答するように構成され得る。この応答は、前記所与のトランザクションソースのローカルキャッシュメモリ内に保存されるべきキャッシュデータラインを前記所与のトランザクションソースへと返送することによって行われ、その結果、前記キャッシュデータラインは前記共有キャッシュメモリ内に保存され、前記共有キャッシュメモリおよび前記スヌープフィルタ回路双方におけるキャッシュデータラインのユニークな状態データにより、保存されたデータのキャッシュランドが複数のトランザクションソースと関連付けられていることを示す。このようにして、前記共有キャッシュメモリは、少なくとも前記非改変的読み出しトランザクションが受信されたキャッシュデータラインについて、包括的モードで動作するように切り換えられる。
【0017】
他の実施形態(上記との組み合わせを含む)において、前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、異なるトランザクションソースによってローカルキャッシュメモリ内に保存されたキャッシュデータラインとヒットする、前記共有キャッシュメモリ内でミスした(ヒットしなかった)所与のトランザクションソースからの非改変的読み出しトランザクションの受信に応答するように構成され、前記応答は、前記所与のトランザクションソースのローカルキャッシュメモリ内へ保存されるべきキャッシュデータラインを前記所与のトランザクションソースへと返送することによって行われ、これにより、前記キャッシュデータラインは前記異なるトランザクションソースの前記ローカルキャッシュメモリ内に保存され、前記キャッシュデータラインは前記共有キャッシュメモリ内に保存され、前記キャッシュデータラインについてのユニークな状態データが前記共有キャッシュメモリおよび前記スヌープフィルタ回路双方において設定され、これにより、前記キャッシュデータラインが複数のトランザクションソースと関連付けられて保存されていることが示される。ここでも、当該キャッシュデータラインについて、包括的モードの動作に切り換えられる。
【0018】
前記複数のトランザクションソースのうちの1つからのトランザクションリクエストに応答してキャッシュデータラインがメモリからフェッチされた場合、前記キャッシュデータラインは、前記複数のソースのうちの1つのローカルキャッシュメモリ内に保存され、対応するスヌープフィルタタグ値が前記スヌープフィルタ回路内に保存される。データ値を特定するトランザクションソースも前記スヌープフィルタ回路によるものであった場合、これも同時に書き込まれ得る。
【0019】
前記複数のトランザクションソースは、多様な異なる形態を持ち得ることが理解される。1つの形態において、前記複数のトランザクションソースは、1つ以上のプロセッサコアを含む。前記ローカルキャッシュメモリも、多様な異なる形態を含み得る(例えば、LIキャッシュメモリおよびL2キャッシュメモリ)。
【0020】
前記複数のトランザクションソースは、リングベースの相互接続を介して簡便に接続され得る。このようなリングベースの相互接続は、より多数のトランザクションソースまたはより多数の共有キャッシュメモリがシステムへ追加される際に、効率的にスケーリングされる。
【0021】
別の局面から鑑みて、本発明は、データ処理装置を提供する。前記データ処理装置は、以下を含む:トランザクションを生成する複数のトランザクションソース手段であって、前記複数のトランザクションソース手段はそれぞれ、データを保存するローカルキャッシュメモリ手段を有する、複数のトランザクションソース手段;データを保存する共有キャッシュメモリ手段であって、前記共有キャッシュメモリ手段は、前記複数のトランザクションソース手段に連結され、かつ、非包括的モードで動作するように構成され、前記共有キャッシュメモリ手段は、共有キャッシュタグ値を保存し、前記共有キャッシュタグ値は、前記共有キャッシュメモリ手段内に保存されているキャッシュデータラインを追跡する、共有キャッシュメモリ手段;およびスヌープフィルタタグ値を保存するスヌープフィルタ手段であって、前記スヌープフィルタタグ値は、前記ローカルキャッシュメモリ手段内に保存されているキャッシュデータラインを追跡する、スヌープフィルタ手段。目標タグ値を有する目標キャッシュデータラインに対するトランザクションリクエストに応答して、
(i)前記共有キャッシュメモリ手段は、前記目標タグ値と、前記共有キャッシュタグ値とを比較することで、前記目標キャッシュデータラインが前記共有キャッシュメモリ手段内に保存されているか否かを検出するように構成され、
(ii)前記スヌープフィルタ手段は、前記目標タグ値と、前記スヌープフィルタタグ値とを比較することで、前記目標キャッシュデータラインが前記ローカルキャッシュメモリ手段のうちのいずれかに保存されているか否かを検出するように構成される。
【0022】
さらなる局面から鑑みて、本発明は、データ処理方法を提供する。前記方法は、以下を含む:複数のトランザクションソースとのトランザクションを生成するステップ;前記複数のトランザクションソースそれぞれのローカルキャッシュメモリ中に各データを保存するステップ;前記複数のトランザクションソースに連結された共有キャッシュメモリ中にデータを保存するステップ;前記共有キャッシュメモリを非包括的モードで動作させるステップ;前記共有キャッシュメモリ手段内に保存されているキャッシュデータラインを追跡する共有キャッシュタグ値を前記共有キャッシュメモリ内に保存するステップ;前記ローカルキャッシュメモリ手段内に保存されているキャッシュデータラインを追跡するスヌープフィルタタグ値をスヌープフィルタ回路内に保存するステップ;目標タグ値を有する目標キャッシュデータラインに対するトランザクションリクエストに応答して、
(i)前記目標タグ値と、前記共有キャッシュタグ値とを比較することで、前記目標キャッシュデータラインが前記共有キャッシュメモリ内に保存されているか否かを検出するステップと、
(ii)前記目標タグ値と、前記スヌープフィルタタグ値とを比較して、前記目標キャッシュデータラインが前記ローカルキャッシュメモリのうちいずれかの内部に保存されているか否かを検出するステップと、
を行う、ステップ。
【0023】
本発明の上記および他の目的、特徴および利点は、以下の例示的実施形態の詳細な説明から明らかとなる。以下の詳細な説明は、添付図面と共に読まれるべきである。
【図面の簡単な説明】
【0024】
【図1】データ処理装置の模式図である。前記データ処理装置は、複数のトランザクションソースを含む。前記複数のトランザクションソースはそれぞれ、ローカルキャッシュメモリと、共有キャッシュメモリと、スヌープフィルタ回路とを含む。
【図2】共有キャッシュメモリの模式図である。
【図3】スヌープフィルタ回路の模式図である。
【図4】前記スヌープフィルタ回路および前記共有キャッシュメモリによって行われる比較動作の並行相互ロックされたパイプライン動作を示す。
【図5】アトミックタグ維持の模式図であり、タグ値の保存場所が前記スヌープフィルタ回路と前記共有キャッシュメモリとの間で変更されている。
【発明を実施するための形態】
【0025】
図1は、データ処理装置の模式図である。前記データ処理装置は、主要メモリ6に連結された集積回路4上のシステムチップ2を含む。システムオンチップ集積回路4は、複数のトランザクションソース8および10を含む。複数のトランザクションソース8および10はそれぞれ、L2キャッシュメモリと、2つのL1キャッシュメモリと、2つのプロセッサコアとを含む。トランザクションソース8および10それぞれの内部のL2キャッシュメモリおよび2つのL1キャッシュメモリは、これら別個のトランザクションソース8および10のローカルキャッシュメモリとして集合的にみなすことができる。リングベースの相互接続12は、トランザクションソース8および10を、スヌープフィルタ回路14およびL3キャッシュの形態の共有キャッシュメモリ16へと連結させる。メモリコントローラ18も、リングベースの相互接続12へと接続される。メモリコントローラ18は、共有キャッシュメモリ16によって形成されたキャッシュ階層と、トランザクションソース8および10内のローカルキャッシュメモリとの内部に当該データが存在していない場合、主要メモリ6内のデータへのアクセスを許可する。
【0026】
プロセッサコアがキャッシュデータラインへのアクセスを求めているトランザクションを発行すると、前記プロセッサコアと関連付けられたローカルキャッシュメモリ内にこのキャッシュラインデータが保存されているか否かについての決定がなされる。前記ローカルキャッシュメモリ内でミスした(ヒットしなかった)場合、トランザクションは、リングベースの相互接続12を介してスヌープフィルタ回路14および共有キャッシュメモリ16へと送られる。スヌープフィルタ回路14および共有キャッシュメモリ16は、リングベースの相互接続12上で送られたトランザクションと関連付けられた目標タグ値の並行パイプライン相互ロックタグ検索を行う。この検索は、前記目標タグ値と、スヌープフィルタ回路14内に保存されたスヌープフィルタタグ値および共有キャッシュメモリ16内に保存された共有キャッシュタグ値とを比較するステップを含む。共有キャッシュメモリ16内においてヒットが発生した場合、前記トランザクションは、共有キャッシュメモリ16によってサービスされる。スヌープフィルタ回路14内においてヒットが発生した場合、前記スヌープフィルタ回路は、信号を返送する。前記信号は、前記目標キャッシュデータラインがシステムオンチップ集積回路4内のローカルキャッシュメモリのうちの1つの内部に保存されていることを確認し、このローカルキャッシュメモリを(前記スヌープフィルタタグ値と関連付けられた様態で保存されたデータを特定するトランザクションソースを用いて)特定する。スヌープフィルタ回路14および共有キャッシュメモリ16のどちらにもミスした(ヒットしなっかた)場合、メモリコントローラ18は、前記目標キャッシュデータラインについて、オフチップメモリアクセスを主要メモリ6に対して開始する。
【0027】
主要メモリ6から返送された目標キャッシュデータラインは、前記目標キャッシュデータラインを要求したトランザクションソースのローカルキャッシュメモリへ再度保存され、対応するスヌープフィルタタグエントリーがスヌープフィルタ回路14へと書き込まれる。この対応するスヌープフィルタタグエントリーは、このスヌープフィルタタグ値を介して、前記ローカルキャッシュメモリ内に再度保存されたキャッシュデータラインのメモリ位置と、前記目標キャッシュデータラインを保存しているローカルキャッシュメモリを有するトランザクションソースを特定するデータ値を特定するトランザクションソースとを特定する。
【0028】
共有キャッシュメモリ16は、キャッシュデータラインが共有キャッシュメモリ16または前記ローカルキャッシュメモリのうちの1つの(双方ではなく)いずれかに保存されるようなデフォルト挙動となるように、主に非包括的に動作する。このデフォルト非包括的挙動は、特定の状況においてオーバーライドすることができる。詳細には、目標キャッシュデータラインを求めているトランザクションのトランザクション種類を特定することができ、この種類が1つ以上の所定の種類とマッチした場合、当該目標キャッシュデータラインについて包括的保存モードをトリガすることができる。詳細には、前記トランザクションが、その後前記キャッシュデータラインを改変しない読み出しである場合(read_clean)、共有キャッシュメモリ16内にヒットが発生し、その後、前記目標キャッシュデータラインは、共有キャッシュメモリ16内に保存されている状態のまま、前記トランザクションソースのローカルキャッシュメモリ内へと保存されるべきものとして前記目標キャッシュデータラインを要求した前記トランザクションソースへと返送され得る。スヌープフィルタタグ値が、スヌープフィルタ回路14へと書き込まれる。前記スヌープフィルタタグ値は、前記トランザクションソース内の目標キャッシュデータラインの存在を追跡する。よって、前記スヌープフィルタタグ値および共有キャッシュタグ値双方が同一のキャッシュデータラインを追跡し、1つよりも多くの場所におけるその存在を示す。
【0029】
所与のキャッシュデータラインについての非包括的挙動から包括的挙動への切り換えが行われ得る別の状況として、その後キャッシュデータラインを改変しない読み出しトランザクションが行われかつこのキャッシュデータラインが共有キャッシュメモリ16内でミスし(ヒットしなかった)かつスヌープフィルタ回路14によって前記キャッシュデータラインがローカルキャッシュメモリのうちの1つとヒットすることが示される状況がある。この状況の場合、前記目標キャッシュデータラインは、前記目標キャッシュデータラインが保存されているローカルキャッシュメモリから取り出され、共有キャッシュメモリ16と、前記目標キャッシュデータラインを要求したトランザクションソースのローカルキャッシュメモリとの双方にコピーが配置される。この状況において、前記目標キャッシュデータラインは、最終的にはシステム内の3つの異なる場所内に(すなわち、2つのローカルキャッシュメモリおよび共有キャッシュメモリ16内に)保存される。このようなキャッシュラインについての包括的モード挙動への切り換えは、ユニークな状態データの利用により、追跡することができる。前記ユニークな状態データは、追跡されている各キャッシュデータライン(ならびにスヌープフィルタ回路14および共有キャッシュ回路16内に保存されているフラグ値)について保存されているユニークな/非ユニークなフラグの形態をとる。
【0030】
キャッシュラインが非包括的動作モードに従って保存された場合、前記ユニークな状態データは、このキャッシュデータラインのコピーが1つだけ保存されていることを示す。キャッシュデータラインが包括的動作モードで保持されている場合、前記ユニークな状態データは、その旨を示す。
【0031】
図2は、共有キャッシュメモリ16の模式図である。共有キャッシュメモリ16は、キャッシュアレイ20およびキャッシュコントローラ22を含む。キャッシュアレイ20内の各キャッシュライン24は、当該キャッシュライン24に対する共有キャッシュタグ値と、当該キャッシュデータラインのペイロードと、関連付けられたユニークな状態データ(U/NU)と、データ(RNFID)を特定するトランザクションソースとを保存する。共有キャッシュメモリ16内に保存されたRNFIDは、当該キャッシュデータラインの共有キャッシュメモリ内において充填を起こさせたのはトランザクションソース8および10のうちどちらかでありおよびよって前記トランザクションソース8および10のうちどちらかが当該キャッシュデータラインを「所有している」旨を示す。前記キャッシュデータラインが1つよりも多くのローカルキャッシュメモリによって保持されている旨を前記ユニークな状態データが示す場合、前記RNFIDフィールドは無効となる。なぜならば、前記RNFIDフィールドは、単一のトランザクションソースしか特定できないからである。その結果、ブロードキャストスヌープリクエストへの後退が行われ、その結果、トランザクションが受信されたときにキャッシュデータラインを保存しているローカルキャッシュメモリがどれかが特定される。いくつかの実施形態において、より多数の資源をデータを特定するトランザクションソースへの専用として用いることができ、存在するトランザクションソースの合計数の適切なサブセットを上限として、複数のトランザクションソースを特定することができる。
【0032】
図3は、スヌープフィルタ回路14の模式図である。スヌープフィルタ回路14は、フィルタアレイ26を含む。フィルタアレイ26は、スヌープフィルタタグ値と、関連付けられたユニークな状態データと、データを特定するトランザクションソースとを保存する。スヌープフィルタコントローラ28は、スヌープフィルタ14の動作を制御する。これらのスヌープフィルタタグ値は、タグ値(主要メモリ6内に読み出されたキャッシュデータ値の読み出し元であるメモリアドレスの一部)と、前記キャッシュラインデータのコピーが複数のローカルキャッシュメモリの代表として保持されているか否かを示すユニークな状態データとを示す。データ(RNFID)を特定するトランザクションソースは、単一のローカルキャッシュメモリがスヌープフィルタタグ値に対応するキャッシュラインデータを保存している場合、当該キャッシュラインデータを保存しているトランザクションソースを特定する。複数のローカルキャッシュメモリが前記キャッシュデータラインを保存している場合、前記特定するトランザクションソースは、これら複数のローカルキャッシュメモリを別個に特定するための十分な容量を持っていない場合があり、そのため無効となる。その結果、ブロードキャストスヌープ動作の実行が必要となる。
【0033】
図4は、リングベースの相互接続12から受信されたトランザクション読み出しリクエストに応答するスヌープフィルタ回路14および共有メモリキャッシュ16の挙動の模式図である。スヌープフィルタ回路14および共有キャッシュメモリ16は、相互ロック並行パイプラインを行って、並行タグ検索を開始する。その後、スヌープフィルタ回路14および共有キャッシュメモリ16はどちらとも、ヒットまたはヒット無しを通知する。スヌープフィルタ回路14からヒットが返送された場合、トランザクションソース識別子が返送される。前記トランザクションソース識別子は、(少なくとも単一のローカルキャッシュメモリのみが目標キャッシュデータラインを保存している場合において)前記ヒットに対応するローカルキャッシュメモリを特定する。スヌープフィルタ回路14からヒットが返送されると、前記特定されたトランザクションソースは、トランザクションをサービスするステップに進む。共有キャッシュメモリ16からヒットが返送されると、前記共有キャッシュメモリは、前記受信されたトランザクションをサービスするステップに進む。スヌープフィルタ回路14および共有キャッシュメモリ16がどちらともヒットした場合、スヌープフィルタ回路14および共有キャッシュメモリ16双方は、前記受信されたトランザクションをサービスする。スヌープフィルタ回路14および共有キャッシュメモリ16双方からヒットが無い旨が返送された場合、前記トランザクションはメモリコントローラ18へと転送される。その後、メモリコントローラ18は、主要メモリトランザクションを開始して、前記データの目標キャッシュラインを主要メモリ6からフェッチし、上述したようにトランザクションソースを要求しているローカルキャッシュメモリ内に前記目標キャッシュラインを保存する。
【0034】
図5は、スヌープフィルタ回路14によって保存されたスヌープフィルタタグ値と、共有キャッシュメモリ16によって保存された共有キャッシュタグ値とに対して行われるアトミックタグ維持動作の模式図である。先ず、アクションAとして、主要メモリからのロードに応答して、タグ値がスヌープフィルタタグ値として保存される。この段階において、キャッシュデータラインは、要求元のトランザクションソースのローカルキャッシュメモリ内に保存されており、共有キャッシュメモリ16内には保存されていない。前記ローカルキャッシュメモリ内の空間が足りなくなった場合、前記ローカルキャッシュメモリは、このキャッシュデータラインを排除し、このキャッシュデータラインを移動させて、共有キャッシュメモリ16内に保存することができる。この時点において、タグ値は、アクションBによって示されるように、スヌープフィルタ回路14内のスヌープフィルタタグ値として保存される代わりに、共有キャッシュ回路16内の共有キャッシュタグ値として保存される。その後、前記キャッシュデータラインは、共有キャッシュメモリ16から前記ローカルキャッシュメモリのうちの1つへと呼び返すことができ、この時点において、前記タグは、アクションCによって示されるように、共有タグキャッシュメモリ16内の共有キャッシュタグ値として保存される代わりに、スヌープフィルタ回路14内のスヌープフィルタタグ値として保存される。
【0035】
上述したように、特定の状況下において、キャッシュラインを、非包括的モードで保存された状態から包括的モードで保存された状態に切り換えることができる。これらの状況が発生した場合、アクションDは、タグ値を元々の位置から除去することなく、前記タグ値をスヌープフィルタ回路14と共有キャッシュメモリ16との間でコピーする様態を示す。その結果、同一のタグ値が、スヌープフィルタ回路14内のスヌープフィルタタグ値および共有キャッシュメモリ16内の共有キャッシュタグ値として保存される。これをアクションDによって示す。
【0036】
システムオンチップ集積回路4は、ローカルキャッシュメモリのコンテンツを共有キャッシュメモリ16までフラッシュすることが望ましい状況下において、或る種類の動作(例えば、部分的出力低下)をサポートすることができる。このようなキャッシュ維持動作は、図5中のアクションEに示すように実行することができ、その際、停止中のローカルキャッシュメモリに対するスヌープフィルタタグ値全てを共有キャッシュメモリ16を通じて移動させて、共有キャッシュメモリ16に対してフラッシュされているキャッシュデータラインに付随させることが必要となる。
【0037】
上述したように、タグ維持動作としての図5中に示すアクションA、B、C、DおよびEの動作は、アトミックに行われる。すなわち、複数のステップが必要な場合、これらのステップは、単一のエンティティとして取り扱われ、開始された後は必ず完了される(すなわち、動作が中断した場合であっても、中間状態は視認できない)。
【0038】
本明細書中、本発明の例示的実施形態について添付図面を参照しながら詳述してきたが、本発明はこれらの実施形態そのものに限定されず、当業者であれば、添付の特許請求の範囲によって規定されるような本発明の範囲および意図から逸脱することなく多様な変更および改変を行うことが可能であることが理解されるべきである。
【符号の説明】
【0039】
2 システムチップ
4 集積回路
6 主要メモリ
8、10 トランザクションソース
12 リングベースの相互接続
14 スヌープフィルタ回路
16 共有キャッシュメモリ
18 メモリコントローラ
20 キャッシュアレイ
22 キャッシュコントローラ
24 キャッシュライン
26 フィルタアレイ
28 スヌープフィルタコントローラ

【特許請求の範囲】
【請求項1】
データ処理装置であって、
複数のトランザクションソースであって、前記複数のトランザクションソースはそれぞれ、ローカルキャッシュメモリを有する、複数のトランザクションソースと、
前記複数のトランザクションソースに連結された共有キャッシュメモリであって、前記共有キャッシュメモリは、非包括的モードで動作するように構成され、前記共有キャッシュメモリは、共有キャッシュタグ値を保存し、前記共有キャッシュタグ値は、前記共有キャッシュメモリ内に保存されているキャッシュデータラインを追跡する、共有キャッシュメモリと、
スヌープフィルタタグ値を保存するように構成されたスヌープフィルタ回路であって、前記スヌープフィルタタグ値は、前記ローカルキャッシュメモリ内に保存されているキャッシュデータラインを追跡する、スヌープフィルタ回路と、
を含み、
目標タグ値を有する目標キャッシュデータラインに対するトランザクションリクエストに応答して、
(i)前記共有キャッシュメモリは、前記目標タグ値と、前記共有キャッシュタグ値とを比較することで、前記目標キャッシュデータラインが前記共有キャッシュメモリ内に保存されているか否かを検出するように構成され、
(ii)前記スヌープフィルタ回路は、前記目標タグ値と、前記スヌープフィルタタグ値とを比較することで、前記目標キャッシュデータラインが前記ローカルキャッシュメモリのうちのいずれかに保存されているか否かを検出するように構成される、
装置。
【請求項2】
前記スヌープフィルタ回路は、トランザクションソースを保存し、前記トランザクションソースは、前記ローカルキャッシュメモリのうちのどれにどのキャッシュデータラインが保存されているのかを特定するデータを特定する、請求項1に記載の装置。
【請求項3】
前記スヌープフィルタ回路は、ローカルキャッシュメモリがキャッシュデータラインを保存している場合、前記スヌープフィルタ回路が対応するスヌープフィルタタグ値を保存しなければならないように、構成される、請求項1に記載の装置。
【請求項4】
前記目標タグ値が前記共有キャッシュタグ値のうちの1つとマッチした場合、前記共有キャッシュメモリは、前記トランザクションリクエストをサービスするように構成される、請求項1に記載の装置。
【請求項5】
前記スヌープフィルタ回路は、前記スヌープフィルタタグ値のうちの1つにマッチする前記目標タグ値を特定する保存されたトランザクションソースによって特定された前記ローカルキャッシュメモリのうちのいずれかへと前記トランザクションリクエストをサービス対象として転送するように構成される、請求項1に記載の装置。
【請求項6】
前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、前記比較を並行して行うように構成される、請求項1に記載の装置。
【請求項7】
前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、アクセスを並行して行う際、相互ロックされたパイプラインとして動作するように構成される、請求項6に記載の装置。
【請求項8】
前記装置はメモリコントローラを含み、前記メモリコントローラは、前記共有キャッシュメモリが前記目標タグ値とマッチする共有キャッシュタグ値を保存しておらずかつ前記スヌープフィルタ回路が前記目標タグ値とマッチするスヌープフィルタタグ値を保存していないことが検出に続いて、主要メモリ内の前記目標キャッシュデータラインに対するトランザクションを行うように構成される、
請求項1に記載の装置。
【請求項9】
前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、前記スヌープフィルタ回路内スヌープフィルタタグ値として保存されたものと、前記共有キャッシュメモリ内に共有キャッシュタグ値として保存されたものとの間でタグ値をアトミックに変更するように構成され、これにより、前記ローカルキャッシュメモリと前記共有キャッシュメモリとの間における対応するキャッシュデータラインの保存場所の変更に追随する、請求項1に記載の装置。
【請求項10】
前記対応するキャッシュデータラインが前記ローカルキャッシュメモリのうちの1つから前記共有キャッシュメモリへと排除された場合、前記タグ値は、前記スヌープフィルタ回路内に保存された状態から前記共有キャッシュメモリ内に保存された状態へとアトミックに変更される、請求項9に記載の装置。
【請求項11】
前記対応するキャッシュデータラインが前記共有キャッシュメモリから前記ローカルキャッシュメモリのうちの1つへと呼び返された場合、前記タグ値は、前記共有キャッシュメモリ内に保存された状態から前記スヌープフィルタ回路内に保存された状態へとアトミックに変更される、請求項9に記載の装置。
【請求項12】
前記共有キャッシュメモリは、包括的モードにおいて1つ以上のキャッシュデータラインを選択的に保存するように制御されるように構成される、請求項1に記載の装置。
【請求項13】
所与のキャッシュデータラインに対して1つ以上の所定の種類を有するトランザクションリクエストに応答して、非包括的モードと包括的モードとの間の切り換えが行われ、これに対応して、前記スヌープフィルタ回路および前記共有キャッシュメモリのうち1つまたは双方が、前記所与のキャッシュデータラインの所与のタグ値を保存するものとしてもアトミックにに切り換えられる、請求項1に記載の装置。
【請求項14】
前記1つ以上の所定の種類はトランザクションを含み、前記トランザクションは、前記キャッシュデータラインをローカルキャッシュメモリに対して読み出し、その後前記ローカルキャッシュメモリ内に保存された前記キャッシュデータラインを改変せず、かつ、前記非包括的モードから前記包括的モードへの切り換えをトリガする、請求項13に記載の装置。
【請求項15】
前記共有キャッシュメモリおよび前記スヌープフィルタ回路はどちらとも、前記複数のトランザクションソースのうちの所与の1つと関連付けられた各キャッシュデータラインについてのユニークな状態データを保存するように構成され、前記ユニークな状態データは、前記複数のトランザクションソースのうち他のいずれかのローカルキャッシュメモリ内に前記キャッシュデータラインが保存されているか否かを示す、請求項1に記載の装置。
【請求項16】
前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、所与のトランザクションソースからの非改変的読み出しトランザクションの受信に応答するように構成され、前記所与のトランザクションソースは、異なるトランザクションソースによって共有キャッシュメモリ内に保存されたキャッシュデータラインをヒットし、前記応答は、前記所与のトランザクションソースのローカルキャッシュメモリ内へ保存されるべき前記キャッシュデータラインを前記所与のトランザクションソースへと返送することによって行われ、これにより、前記キャッシュデータラインは前記異なるトランザクションソースの前記ローカルキャッシュメモリ内に保存され、前記キャッシュデータラインは前記共有キャッシュメモリ内に保存され、前記キャッシュデータラインについてのユニークな状態データが前記共有キャッシュメモリおよび前記スヌープフィルタ回路双方において設定され、これにより、前記キャッシュデータラインが複数のトランザクションソースと関連付けられて保存されていることが示される、請求項15に記載の装置。
【請求項17】
前記共有キャッシュメモリおよび前記スヌープフィルタ回路は、所与のトランザクションソースからの非改変的読み出しトランザクションの受信に応答するように構成され、前記所与のトランザクションソースは、前記共有キャッシュメモリ内でミスし(ヒットしない)、かつ、異なるトランザクションソースによってローカルキャッシュメモリに保存されたキャッシュデータラインとヒットし、前記応答は、前記所与のトランザクションソースのローカルキャッシュメモリ内へと保存されるべきものとして前記キャッシュデータラインを前記所与のトランザクションソースへと返送することによって行われ、これにより、前記キャッシュデータラインは、前記異なるトランザクションソースの前記ローカルキャッシュメモリ内に保存され、前記キャッシュデータラインは前記共有キャッシュメモリ内に保存され、前記キャッシュデータラインについての前記ユニークな状態データが前記共有キャッシュメモリおよび前記スヌープフィルタ回路双方において設定され、これにより、前記キャッシュデータラインが複数のトランザクションソースと関連付けられて保存されていることが示される、
請求項15に記載の装置。
【請求項18】
前記複数のトランザクションソースのうちの1つからのトランザクションリクエストに応答してキャッシュデータラインが主要メモリからフェッチされた場合、前記キャッシュデータラインは、前記複数のトランザクションソースのうちの前記1つのローカルキャッシュメモリ内に保存され、対応するスヌープフィルタタグ値が前記スヌープフィルタ回路内に保存される、請求項1に記載の装置。
【請求項19】
前記複数のトランザクションソースは、1つ以上のプロセッサコアを含む、請求項1に記載の装置。
【請求項20】
前記ローカルキャッシュメモリはそれぞれ、L1およびL2キャッシュメモリを含む、請求項1に記載の装置。
【請求項21】
前記共有キャッシュメモリはL3キャッシュメモリである、請求項1に記載の装置。
【請求項22】
前記複数のトランザクションソースは、リングベースの相互接続回路へと接続される、請求項1に記載の装置。
【請求項23】
データ処理装置であって、
トランザクションを生成する複数のトランザクションソース手段であって、前記複数のトランザクションソース手段はそれぞれ、データを保存するローカルキャッシュメモリ手段を有する、複数のトランザクションソース手段と、
データを保存する共有キャッシュメモリ手段であって、前記共有キャッシュメモリ手段は、前記複数のトランザクションソース手段に連結され、非包括的モードで動作するように構成され、前記共有キャッシュメモリ手段は、共有キャッシュタグ値を保存し、前記共有キャッシュタグ値は、前記共有キャッシュメモリ手段内に保存されているキャッシュデータラインを追跡する、共有キャッシュメモリ手段と、
スヌープフィルタタグ値を保存するスヌープフィルタ手段であって、前記スヌープフィルタタグ値は、前記ローカルキャッシュメモリ手段内に保存されているキャッシュデータラインを追跡する、スヌープフィルタ手段と、
を含み、
目標タグ値を有する目標キャッシュデータラインに対するトランザクションリクエストに応答して、
(i)前記共有キャッシュメモリ手段は、前記目標タグ値と、前記共有キャッシュタグ値とを比較することで、前記目標キャッシュデータラインが前記共有キャッシュメモリ手段内に保存されているか否かを検出するように構成され、
(ii)前記スヌープフィルタ手段は、前記目標タグ値と、前記スヌープフィルタタグ値とを比較することで、前記目標キャッシュデータラインが前記ローカルキャッシュメモリ手段のうちのいずれかに保存されているか否かを検出するように構成される、
装置。
【請求項24】
データ処理方法であって、
複数のトランザクションソースとのトランザクションを生成するステップと、
前記複数のトランザクションソースそれぞれのローカルキャッシュメモリ中に各データを保存するステップと、
前記複数のトランザクションソースに連結された共有キャッシュメモリ中にデータを保存するステップと、
前記共有キャッシュメモリを非包括的モードで動作させるステップと、
前記共有キャッシュメモリ手段内に保存されているキャッシュデータラインを追跡する共有キャッシュタグ値を前記共有キャッシュメモリ内に保存するステップと、
前記ローカルキャッシュメモリ手段内に保存されているキャッシュデータラインを追跡するスヌープフィルタタグ値をスヌープフィルタ回路内に保存するステップと、
目標タグ値を有する目標キャッシュデータラインに対するトランザクションリクエストに応答して、
(i)前記目標タグ値と、前記共有キャッシュタグ値とを比較することで、前記目標キャッシュデータラインが前記共有キャッシュメモリ内に保存されているか否かを検出するステップと、
(ii)前記目標タグ値と、前記スヌープフィルタタグ値とを比較して、前記目標キャッシュデータラインが前記ローカルキャッシュメモリのうちいずれかの内部に保存されているか否かを検出するステップと、
を行う、ステップと、
を含む、方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate