(57)【特許請求の範囲】
【請求項１】
条件付き介入を使用してキャッシュコヒーレンシを維持するための条件付き介入回路であって、前記条件付き介入回路がスヌープ要求管理回路を備え、
1つまたは複数のスヌープベースキャッシュコヒーレンシプロトコルに従って複数のマスタデバイスのうちの対応する複数のスヌーピングマスタデバイスから複数の介入応答を、前記スヌープ要求管理回路を使用して受信することであって、前記複数のマスタデバイスの各マスタデバイスが前記マスタデバイスのキャッシュのキャッシュライン細粒サイズと関連付けられ、前記複数のマスタデバイスのうちの第1のマスタデバイスが、第1のキャッシュライン細粒サイズと関連付けられ、かつ、前記複数のマスタデバイスのうちの第2のマスタデバイスが、前記第1のキャッシュライン細粒サイズとは異なる第2のキャッシュライン細粒サイズと関連付けられる、受信することと、
前記複数のマスタデバイスのうちの要求元マスタデバイスと同じかまたはより大きいキャッシュライン細粒サイズを有する前記複数のスヌーピングマスタデバイスの数を決定することと、
前記要求元マスタデバイスと前記同じかまたはより大きいキャッシュライン細粒サイズを有する前記複数のスヌーピングマスタデバイスの数が1に等しいことに応答して、前記同じかまたはより大きいキャッシュライン細粒サイズを有する前記1つのスヌーピングマスタデバイスを選択することと、
前記要求元マスタデバイスと前記同じかまたはより大きいキャッシュライン細粒サイズを有する前記複数のスヌーピングマスタデバイスの数が1より大きいことに応答して、前記同じかまたはより大きいキャッシュライン細粒サイズを有するスヌーピングマスタデバイスの中から、代替選択基準に基づいて1つのスヌーピングマスタデバイスを選択することと、
前記複数のスヌーピングマスタデバイスのうちの対応する1つまたは複数の選択されなかったスヌーピングマスタデバイスから、前記複数の介入応答のうちの1つまたは複数の介入応答を、前記スヌープ要求管理回路を使用して削除することと、
前記選択されたスヌーピングマスタデバイスから前記要求元マスタデバイスに介入データを、前記スヌープ要求管理回路を使用して供給することと
を行うように構成される、条件付き介入回路。
【請求項２】
前記代替選択基準を示すように構成された選択レジスタを備え、前記条件付き介入回路が、前記選択レジスタによって示された前記代替選択基準に基づいて前記スヌーピングマスタデバイスを選択するようにさらに構成される、請求項1に記載の条件付き介入回路。
【請求項３】
前記要求元マスタデバイスへの最短経路を有する前記スヌーピングマスタデバイスを選択することによって前記代替選択基準に基づいて前記スヌーピングマスタデバイスを選択するように構成される、請求項1に記載の条件付き介入回路。
【請求項４】
トポロジーマップに基づいて前記要求元マスタデバイスへの前記最短経路を有する前記スヌーピングマスタデバイスを選択するように構成される、請求項3に記載の条件付き介入回路。
【請求項５】
前記要求元マスタデバイスの前記キャッシュライン細粒サイズに最も近いキャッシュライン細粒サイズを有する前記スヌーピングマスタデバイスを選択することによって、前記代替選択基準に基づいて前記スヌーピングマスタデバイスを選択するように構成される、請求項1に記載の条件付き介入回路。
【請求項６】
前記複数のスヌーピングマスタデバイスのうちのいずれのスヌーピングマスタデバイスも前記同じかまたはより大きいキャッシュライン細粒サイズを有しないとの決定に応答して、
前記代替選択基準に基づいて前記複数のスヌーピングマスタデバイスの中から前記スヌーピングマスタデバイスを選択することと、
失われたデータをシステムメモリから取り出すことと
を行うようにさらに構成される、請求項1に記載の条件付き介入回路。
【請求項７】
前記スヌープ要求管理回路が、最終結果の削除ベクトル内の前記1つまたは複数の選択されなかったスヌーピングマスタデバイスに対応する1つまたは複数の削除ベクトルビットをセットすることによって、前記複数のスヌーピングマスタデバイスのうちの前記対応する1つまたは複数の選択されなかったスヌーピングマスタデバイスから前記1つまたは複数の介入応答を削除するように構成される、請求項1に記載の条件付き介入回路。
【請求項８】
早期介入データ転送を提供するように構成された、前記複数のスヌーピングマスタデバイスのうちの前記対応する1つまたは複数の選択されなかったスヌーピングマスタデバイスからの前記1つまたは複数の介入応答を維持するようにさらに構成される、請求項1に記載の条件付き介入回路。
【請求項９】
前記スヌープ要求管理回路が、
前記複数のマスタデバイスのうちの再試行マスタデバイスから再試行応答を受信することと、
前記再試行マスタデバイスのキャッシュライン細粒サイズより小さいキャッシュライン細粒サイズを有する前記複数のスヌーピングマスタデバイスの各スヌーピングマスタデバイスから前記複数の介入応答の各介入応答を削除することと
を行うようにさらに構成される、請求項1に記載の条件付き介入回路。
【請求項１０】
前記1つまたは複数のスヌープベースキャッシュコヒーレンシプロトコルが、アドバンスト拡張可能インターフェース(AXI)コヒーレンシ拡張(ACE)プロトコルを含む、請求項1に記載の条件付き介入回路。
【請求項１１】
集積回路(IC)に組み込まれる、請求項1に記載の条件付き介入回路。
【請求項１２】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、携帯電話、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車からなるグループから選択されるデバイスの中に組み込まれる、請求項1に記載の条件付き介入回路。
【請求項１３】
条件付き介入を使用してキャッシュコヒーレンシを維持するための条件付き介入回路であって、
1つまたは複数のスヌープベースキャッシュコヒーレンシプロトコルに従って複数のマスタデバイスのうちの対応する複数のスヌーピングマスタデバイスから複数の介入応答を受信するための手段であって、各マスタデバイスが前記マスタデバイスのキャッシュのキャッシュライン細粒サイズと関連付けられ、前記複数のマスタデバイスのうちの第1のマスタデバイスが、第1のキャッシュライン細粒サイズと関連付けられ、かつ、前記複数のマスタデバイスのうちの第2のマスタデバイスが、前記第1のキャッシュライン細粒サイズとは異なる第2のキャッシュライン細粒サイズと関連付けられる、手段と、
前記複数のマスタデバイスのうちの要求元マスタデバイスと同じかまたはより大きいキャッシュライン細粒サイズを有する前記複数のスヌーピングマスタデバイスの数を決定するための手段と、
前記要求元マスタデバイスと前記同じかまたはより大きいキャッシュライン細粒サイズを有する前記複数のスヌーピングマスタデバイスの数が1に等しいことに応答して、前記同じかまたはより大きいキャッシュライン細粒サイズを有する前記複数のスヌーピングマスタデバイスのうちの前記1つのスヌーピングマスタデバイスを選択するための手段と、
前記要求元マスタデバイスと前記同じかまたはより大きいキャッシュライン細粒サイズを有する前記複数のスヌーピングマスタデバイスの数が1より大きいことに応答して、前記同じかまたはより大きいキャッシュライン細粒サイズを有する前記複数のスヌーピングマスタデバイスのうちの前記スヌーピングマスタデバイスの中から、代替選択基準に基づいて1つのスヌーピングマスタデバイスを選択するための手段と、
前記複数のスヌーピングマスタデバイスのうちの対応する1つまたは複数の選択されなかったスヌーピングマスタデバイスから、前記複数の介入応答のうちの1つまたは複数の介入応答を削除するための手段と、
前記選択されたスヌーピングマスタデバイスから前記要求元マスタデバイスに介入データを供給するための手段と
を含む、条件付き介入回路。
【請求項１４】
前記代替選択基準を示すための手段をさらに含み、前記代替選択基準に基づいて前記スヌーピングマスタデバイスを選択するための前記手段が、前記代替選択基準を示すための前記手段に基づく、請求項13に記載の条件付き介入回路。
【請求項１５】
前記代替選択基準に基づいて前記スヌーピングマスタデバイスを選択するための前記手段が、前記要求元マスタデバイスへの最短経路を有する前記スヌーピングマスタデバイスを選択するための手段を含む、請求項13に記載の条件付き介入回路。
【請求項１６】
前記要求元マスタデバイスへの前記最短経路を有する前記スヌーピングマスタデバイスを選択するための前記手段が、トポロジーマップを含む、請求項15に記載の条件付き介入回路。
【請求項１７】
前記代替選択基準に基づいて前記スヌーピングマスタデバイスを選択するための前記手段が、前記要求元マスタデバイスの前記キャッシュライン細粒サイズに最も近いキャッシュライン細粒サイズを有する前記スヌーピングマスタデバイスを選択するための手段を含む、請求項13に記載の条件付き介入回路。
【請求項１８】
前記複数のスヌーピングマスタデバイスのうちのいずれのスヌーピングマスタデバイスも前記同じかまたはより大きいキャッシュライン細粒サイズを有しないとの決定に応答して、前記代替選択基準に基づいて前記複数のスヌーピングマスタデバイスの中から前記スヌーピングマスタデバイスを選択するための手段と、
失われたデータをシステムメモリから取り出すための手段と
をさらに含む、請求項13に記載の条件付き介入回路。
【請求項１９】
前記複数のスヌーピングマスタデバイスのうちの前記対応する1つまたは複数の選択されなかったスヌーピングマスタデバイスから前記1つまたは複数の介入応答を削除するための前記手段が、最終結果の削除ベクトル内の前記1つまたは複数の選択されなかったスヌーピングマスタデバイスに対応する1つまたは複数の削除ベクトルビットをセットするための手段を含む、請求項13に記載の条件付き介入回路。
【請求項２０】
早期介入データ転送を提供するように構成された、前記複数のスヌーピングマスタデバイスのうちの前記対応する1つまたは複数の選択されなかったスヌーピングマスタデバイスからの前記1つまたは複数の介入応答を維持するための手段をさらに含む、請求項13に記載の条件付き介入回路。
【請求項２１】
前記複数のマスタデバイスのうちの再試行マスタデバイスから再試行応答を受信するための手段と、
前記再試行マスタデバイスのキャッシュライン細粒サイズより小さいキャッシュライン細粒サイズを有する前記複数のスヌーピングマスタデバイスの各スヌーピングマスタデバイスから前記複数の介入応答の各介入応答を削除するための手段と
をさらに含む、請求項13に記載の条件付き介入回路。
【請求項２２】
前記1つまたは複数のスヌープベースキャッシュコヒーレンシプロトコルが、アドバンスト拡張可能インターフェース(AXI)コヒーレンシ拡張(ACE)プロトコルを含む、請求項13に記載の条件付き介入回路。
【請求項２３】
条件付き介入を使用してキャッシュコヒーレンシを維持する方法であって、
1つまたは複数のスヌープベースキャッシュコヒーレンシプロトコルに従って複数のマスタデバイスのうちの対応する複数のスヌーピングマスタデバイスから複数の介入応答を、条件付き介入回路によって受信するステップであって、前記複数のマスタデバイスの各マスタデバイスがキャッシュのキャッシュライン細粒サイズと関連付けられ、前記複数のマスタデバイスのうちの第1のマスタデバイスが、第1のキャッシュライン細粒サイズと関連付けられ、かつ、前記複数のマスタデバイスのうちの第2のマスタデバイスが、前記第1のキャッシュライン細粒サイズとは異なる第2のキャッシュライン細粒サイズと関連付けられる、ステップと、
前記複数のマスタデバイスのうちの要求元マスタデバイスと同じかまたはより大きいキャッシュライン細粒サイズを有する前記複数のスヌーピングマスタデバイスの数を決定するステップと、
前記要求元マスタデバイスと前記同じかまたはより大きいキャッシュライン細粒サイズを有する前記複数のスヌーピングマスタデバイスの数が1に等しいことに応答して、前記同じかまたはより大きいキャッシュライン細粒サイズを有する前記1つのスヌーピングマスタデバイスを選択するステップと、
前記要求元マスタデバイスと前記同じかまたはより大きいキャッシュライン細粒サイズを有する前記複数のスヌーピングマスタデバイスの数が1より大きいことに応答して、前記同じかまたはより大きいキャッシュライン細粒サイズを有する前記スヌーピングマスタデバイスの中から、代替選択基準に基づいて1つのスヌーピングマスタデバイスを選択するステップと、
前記複数のスヌーピングマスタデバイスのうちの対応する1つまたは複数の選択されなかったスヌーピングマスタデバイスから、前記複数の介入応答のうちの1つまたは複数の介入応答を削除するステップと、
前記選択されたスヌーピングマスタデバイスから前記要求元マスタデバイスに介入データを供給するステップと
を含む、方法。
【請求項２４】
前記代替選択基準に基づいて前記スヌーピングマスタデバイスを選択するステップが、選択レジスタによって示される、請求項23に記載の方法。
【請求項２５】
前記代替選択基準に基づいて前記スヌーピングマスタデバイスを選択するステップが、前記要求元マスタデバイスへの最短経路を有する前記スヌーピングマスタデバイスを選択するステップを含む、請求項23に記載の方法。
【請求項２６】
前記同じかまたはより大きいキャッシュライン細粒サイズを有する前記スヌーピングマスタデバイスの中から前記要求元マスタデバイスへの前記最短経路を有する前記スヌーピングマスタデバイスを選択するステップが、トポロジーマップに基づく、請求項25に記載の方法。
【請求項２７】
前記代替選択基準に基づいて前記スヌーピングマスタデバイスを選択するステップが、
前記要求元マスタデバイスの前記キャッシュライン細粒サイズに最も近いキャッシュライン細粒サイズを有する前記スヌーピングマスタデバイスを選択するステップを含む、請求項23に記載の方法。
【請求項２８】
前記複数のスヌーピングマスタデバイスのうちのいずれのスヌーピングマスタデバイスも前記同じかまたはより大きいキャッシュライン細粒サイズを有しないとの決定に応答して、
前記代替選択基準に基づいて前記複数のスヌーピングマスタデバイスの中から前記スヌーピングマスタデバイスを選択するステップと、
失われたデータをシステムメモリから取り出すステップと
をさらに含む、請求項23に記載の方法。
【請求項２９】
前記複数のスヌーピングマスタデバイスのうちの前記対応する1つまたは複数の選択されなかったスヌーピングマスタデバイスから前記1つまたは複数の介入応答を削除するステップが、最終結果の削除ベクトル内の前記1つまたは複数の選択されなかったスヌーピングマスタデバイスに対応する1つまたは複数の削除ベクトルビットをセットするステップを含む、請求項23に記載の方法。
【請求項３０】
早期介入データ転送を提供するように構成された、前記複数のスヌーピングマスタデバイスのうちの前記対応する1つまたは複数の選択されなかったスヌーピングマスタデバイスからの前記1つまたは複数の介入応答を維持するステップをさらに含む、請求項23に記載の方法。
【請求項３１】
前記複数のマスタデバイスのうちの再試行マスタデバイスから再試行応答を受信するステップと、
前記再試行マスタデバイスのキャッシュライン細粒サイズより小さいキャッシュライン細粒サイズを有する前記複数のスヌーピングマスタデバイスの各スヌーピングマスタデバイスから前記複数の介入応答の各介入応答を削除するステップと
をさらに含む、請求項23に記載の方法。
【請求項３２】
前記1つまたは複数のスヌープベースキャッシュコヒーレンシプロトコルが、アドバンスト拡張可能インターフェース(AXI)コヒーレンシ拡張(ACE)プロトコルを含む、請求項23に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先出願
本出願は、その全体が参照により本明細書に組み込まれる、2015年9月24日に出願した「MAINTAINING CACHE COHERENCY USING CONDITIONAL INTERVENTION AMONG MULTIPLE MASTER DEVICES」と題する米国特許出願第14/863,535号の優先権を主張する。
【０００２】
本開示の技術は、一般にプロセッサベースシステムにおけるスヌープベースキャッシュコヒーレンシに関し、詳細には複数のマスタデバイスの存在下でキャッシュコヒーレンシを維持することに関する。
【背景技術】
【０００３】
現代のプロセッサベースシステムは、複数の相互接続されたマスタデバイス(たとえば、非限定的な例として、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、プロセッサクラスタ、および/またはハードウェアアクセラレータ)を含んでよく、それらの各々は共有データにアクセスして共有データのそれ自体のキャッシュを維持し得る。プロセッサベースシステム内の各マスタデバイスのキャッシュが最新のバージョンの共有データを含むことを確保するために、マスタデバイスは、キャッシュ間のキャッシュコヒーレンシを維持するためにバスコヒーレンシプロトコルを実施し得る。バスコヒーレンシプロトコルの1つのクラスは、「スヌーピング」として知られているメカニズムに基づく。スヌーピングを使用して、各マスタデバイスは、他のマスタデバイスから生じ、かつマスタデバイス間で共有されるデータを伴うすべての読取り要求および書込み要求を検出するためにバスをモニタする。マスタデバイスが読取り要求を検出(またはスヌープ)し、その読取り要求に対してマスタデバイスが最新のデータを有する場合、マスタデバイスは、要求されたデータを要求元マスタデバイス(requesting master device)に供給し得る(プロセスは「介入」と呼ばれる)。マスタデバイスがバス上の書込みトランザクションをスヌープした場合、マスタデバイスは、そのキャッシュ内に書き込まれたデータのそのローカルコピーを無効にし得る。このようにして、共有データの整合性のあるビューが、プロセッサベースシステム内のすべてのマスタデバイスに提供され得る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
いくつかの状況下では、読取り要求に応答して最終的に1つのスヌーピングマスタデバイスだけしか介入データを供給できないにもかかわらず、複数のスヌーピングマスタデバイスが、読取り要求に対する介入応答を供給してもよい。その結果、複数のスヌーピングマスタデバイスの中から介入データを供給するための適切なスヌーピングマスタデバイスを選択することが必要である。しかしながら、この作業は、マスタデバイスが異なるキャッシュライン細粒サイズ(cache line granule size)に基づくキャッシュを使用し、かつ/または異なる状態下の介入(たとえば、SharedCleanキャッシュ状態での介入)を許容する異なるバスコヒーレンシプロトコルを使用するプロセッサベースシステム内では複雑である場合がある。したがって、キャッシュコヒーレンシを維持し、より短い介入レイテンシを提供し、かつプロセッサの電力消費を低減するために、複数のスヌーピングマスタデバイスの中から1つのマスタデバイスを条件付きで選択するためのメカニズムを提供することが望ましい。
【課題を解決するための手段】
【０００５】
発明を実施するための形態で開示する態様は、複数のマスタデバイス間で条件付き介入(conditional intervention)を使用してキャッシュコヒーレンシを維持することを含む。この点について、プロセッサベースシステム内の条件付き介入回路が提供される。条件付き介入回路は、バスを介して1つまたは複数のスヌープベースキャッシュコヒーレンシプロトコルに従って複数のマスタデバイス(非限定的な例として、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、プロセッサクラスタ、および/またはハードウェアアクセラレータなど)に通信可能に結合される。マスタデバイスの各々はキャッシュを含み、したがって、キャッシュのキャッシュライン細粒サイズと関連付けられる。条件付き介入回路はスヌープ要求管理回路を含み、複数のスヌーピングマスタデバイスから介入応答を(たとえば、スヌープされた読取り要求に応答して)受信するように構成される。介入データを供給するためのスヌーピングマスタデバイスを選択するために、条件付き介入回路は最初に、スヌーピングマスタデバイスのうちのいくつのデバイスが要求元マスタデバイスのキャッシュライン細粒サイズと同じかまたはより大きいキャッシュライン細粒サイズを有するかを決定する。1つのスヌーピングマスタデバイスだけが、要求元マスタデバイスのキャッシュライン細粒サイズと同じかまたはより大きいキャッシュライン細粒サイズを有する場合、そのスヌーピングマスタデバイスが、介入データを供給するために選択される。2つ以上のスヌーピングマスタデバイスが、要求元マスタデバイスのキャッシュライン細粒サイズと同じかまたはより大きいキャッシュライン細粒サイズを有する場合、代替選択基準(alternate selection criteria)を使用して2つ以上のスヌーピングマスタデバイスの中から1つのスヌーピングマスタデバイスが選択される。非限定的な例として、代替選択基準は、要求元マスタデバイスへの最短経路または要求元マスタデバイスのキャッシュライン細粒サイズに最も近いキャッシュライン細粒サイズを有するスヌーピングマスタデバイスを選択することを含み得る。いくつかの態様では、いずれのスヌーピングマスタデバイスも要求元マスタデバイスと同じかまたはより大きいキャッシュライン細粒サイズを有し
ない場合、スヌーピングマスタデバイスは、代替選択基準に基づいて選択され得る。選択されたスヌーピングマスタデバイスが介入データをすべて供給することはできない場合、条件付き介入回路が失われたデータをシステムメモリから取り出し得る。次いで、選択されなかったスヌーピングマスタデバイスによって供給された介入応答は、条件付き介入回路のスヌープ管理要求回路によって削除され、選択されたスヌーピングマスタデバイスからの介入データが要求元マスタデバイスに供給される。
【０００６】
別の態様では、条件付き介入を使用してキャッシュコヒーレンシを維持するための条件付き介入回路が提供される。条件付き介入回路は、スヌープ要求管理回路を備える。条件付き介入回路は、1つまたは複数のスヌープベースキャッシュコヒーレンシプロトコルに従って複数のマスタデバイスのうちの対応する複数のスヌーピングマスタデバイスから複数の介入応答を、スヌープ要求管理回路を使用して受信するように構成され、複数のマスタデバイスの各マスタデバイスは、マスタデバイスのキャッシュのキャッシュライン細粒サイズと関連付けられる。条件付き介入回路は、複数のマスタデバイスのうちの要求元マスタデバイスと同じかまたはより大きいキャッシュライン細粒サイズを有する複数のスヌーピングマスタデバイスの数を決定するようにさらに構成される。条件付き介入回路はまた、1つのスヌーピングマスタデバイスが同じかまたはより大きいキャッシュライン細粒サイズを有するとの決定に応答して、同じかまたはより大きいキャッシュライン細粒サイズを有する1つのスヌーピングマスタデバイスを選択するように構成される。条件付き介入回路は、複数のスヌーピングマスタデバイスのうちの2つ以上のスヌーピングマスタデバイスが同じかまたはより大きいキャッシュライン細粒サイズを有するとの決定に応答して、同じかまたはより大きいキャッシュライン細粒サイズを有する2つ以上のスヌーピングマスタデバイスの中から、代替選択基準に基づいて1つのスヌーピングマスタデバイスを選択するように付加的に構成される。条件付き介入回路は、複数のスヌーピングマスタデバイスのうちの対応する1つまたは複数の選択されなかったスヌーピングマスタデバイスから、複数の介入応答のうちの1つまたは複数の介入応答を、スヌープ要求管理回路を使用して削除するようにさらに構成される。条件付き介入回路はまた、選択されたスヌーピングマスタデバイスから要求元マスタデバイスに介入データを、スヌープ要求管理回路を使用して供給するように構成される。
【０００７】
別の態様では、条件付き介入を使用してキャッシュコヒーレンシを維持するための条件付き介入回路が提供される。条件付き介入回路は、1つまたは複数のスヌープベースキャッシュコヒーレンシプロトコルに従って複数のマスタデバイスのうちの対応する複数のスヌーピングマスタデバイスから複数の介入応答を受信するための手段を含み、各マスタデバイスは、マスタデバイスのキャッシュのキャッシュライン細粒サイズと関連付けられる。条件付き介入回路は、複数のマスタデバイスのうちの要求元マスタデバイスと同じかまたはより大きいキャッシュライン細粒サイズを有する複数のスヌーピングマスタデバイスの数を決定するための手段をさらに含む。条件付き介入回路はまた、1つのスヌーピングマスタデバイスが同じかまたはより大きいキャッシュライン細粒サイズを有するとの決定に応答して、同じかまたはより大きいキャッシュライン細粒サイズを有する複数のスヌーピングマスタデバイスのうちの1つのスヌーピングマスタデバイスを選択するための手段を含む。条件付き介入回路は、複数のスヌーピングマスタデバイスのうちの2つ以上のスヌーピングマスタデバイスが同じかまたはより大きいキャッシュライン細粒サイズを有するとの決定に応答して、同じかまたはより大きいキャッシュライン細粒サイズを有する複数のスヌーピングマスタデバイスのうちの2つ以上のスヌーピングマスタデバイスの中から、代替選択基準に基づいて1つのスヌーピングマスタデバイスを選択するための手段を付加的に含む。条件付き介入回路は、複数のスヌーピングマスタデバイスのうちの対応する1つまたは複数の選択されなかったスヌーピングマスタデバイスから、複数の介入応答のうちの1つまたは複数の介入応答を削除するための手段をさらに含む。条件付き介入回路はまた、選択されたスヌーピングマスタデバイスから要求元マスタデバイスに介入データを供給するための手段を含む。
【０００８】
別の態様では、条件付き介入を使用してキャッシュコヒーレンシを維持する方法が提供される。方法は、1つまたは複数のスヌープベースキャッシュコヒーレンシプロトコルに従って複数のマスタデバイスのうちの対応する複数のスヌーピングマスタデバイスから複数の介入応答を、条件付き介入回路によって受信するステップを含み、複数のマスタデバイスの各マスタデバイスは、キャッシュのキャッシュライン細粒サイズと関連付けられる。方法は、複数のマスタデバイスのうちの要求元マスタデバイスと同じかまたはより大きいキャッシュライン細粒サイズを有する複数のスヌーピングマスタデバイスの数を決定するステップをさらに含む。方法はまた、複数のスヌーピングマスタデバイスのうちの1つのスヌーピングマスタデバイスが同じかまたはより大きいキャッシュライン細粒サイズを有するとの決定に応答して、同じかまたはより大きいキャッシュライン細粒サイズを有するその1つのスヌーピングマスタデバイスを選択するステップを含む。方法は、複数のスヌーピングマスタデバイスのうちの2つ以上のスヌーピングマスタデバイスが同じかまたはより大きいキャッシュライン細粒サイズを有するとの決定に応答して、同じかまたはより大きいキャッシュライン細粒サイズを有する2つ以上のスヌーピングマスタデバイスの中から、代替選択基準に基づいて1つのスヌーピングマスタデバイスを選択するステップを付加的に含む。方法は、複数のスヌーピングマスタデバイスのうちの対応する1つまたは複数の選択されなかったスヌーピングマスタデバイスから、複数の介入応答のうちの1つまたは複数の介入応答を削除するステップをさらに含む。方法はまた、選択されたスヌーピングマスタデバイスから要求元マスタデバイスに介入データを供給するステップを含む。
【図面の簡単な説明】
【０００９】
【図１】複数のマスタデバイス間の条件付き介入を使用してキャッシュコヒーレンシを維持するために条件付き介入回路を提供する例示的なプロセッサベースシステムのブロック図である。
【図２Ａ】キャッシュライン細粒サイズに基づいて介入データを供給するためにスヌーピングマスタデバイスを選択するための、図1の条件付き介入回路およびマスタデバイスの間の例示的な通信フローを示すブロック図である。
【図２Ｂ】キャッシュライン細粒サイズに基づいて介入データを供給するためにスヌーピングマスタデバイスを選択するための、図1の条件付き介入回路およびマスタデバイスの間の例示的な通信フローを示すブロック図である。
【図２Ｃ】キャッシュライン細粒サイズに基づいて介入データを供給するためにスヌーピングマスタデバイスを選択するための、図1の条件付き介入回路およびマスタデバイスの間の例示的な通信フローを示すブロック図である。
【図２Ｄ】キャッシュライン細粒サイズに基づいて介入データを供給するためにスヌーピングマスタデバイスを選択するための、図1の条件付き介入回路およびマスタデバイスの間の例示的な通信フローを示すブロック図である。
【図３Ａ】最短経路に基づいて介入データを供給するためにスヌーピングマスタデバイスを選択するための、図1の条件付き介入回路およびマスタデバイスの間の例示的な通信フローを示すブロック図である。
【図３Ｂ】最短経路に基づいて介入データを供給するためにスヌーピングマスタデバイスを選択するための、図1の条件付き介入回路およびマスタデバイスの間の例示的な通信フローを示すブロック図である。
【図３Ｃ】最短経路に基づいて介入データを供給するためにスヌーピングマスタデバイスを選択するための、図1の条件付き介入回路およびマスタデバイスの間の例示的な通信フローを示すブロック図である。
【図３Ｄ】最短経路に基づいて介入データを供給するためにスヌーピングマスタデバイスを選択するための、図1の条件付き介入回路およびマスタデバイスの間の例示的な通信フローを示すブロック図である。
【図４Ａ】スヌーピングマスタデバイスから受信された再試行要求を処理するための、図1の条件付き介入回路およびマスタデバイスの間の例示的な通信フローを示すブロック図である。
【図４Ｂ】スヌーピングマスタデバイスから受信された再試行要求を処理するための、図1の条件付き介入回路およびマスタデバイスの間の例示的な通信フローを示すブロック図である。
【図４Ｃ】スヌーピングマスタデバイスから受信された再試行要求を処理するための、図1の条件付き介入回路およびマスタデバイスの間の例示的な通信フローを示すブロック図である。
【図４Ｄ】スヌーピングマスタデバイスから受信された再試行要求を処理するための、図1の条件付き介入回路およびマスタデバイスの間の例示的な通信フローを示すブロック図である。
【図５Ａ】複数のマスタデバイス間の条件付き介入を使用してキャッシュコヒーレンシを維持するための例示的なプロセスを示す流れ図である。
【図５Ｂ】複数のマスタデバイス間の条件付き介入を使用してキャッシュコヒーレンシを維持するための例示的なプロセスを示す流れ図である。
【図５Ｃ】複数のマスタデバイス間の条件付き介入を使用してキャッシュコヒーレンシを維持するための例示的なプロセスを示す流れ図である。
【図６】図1の条件付き介入回路を含むことができる例示的なプロセッサベースシステムのブロック図である。
【発明を実施するための形態】
【００１０】
これから図面を参照して、本開示のいくつかの例示的態様が説明される。「例示的」という語は、本明細書では「一例、事例、または例示としての働きをすること」を意味するために用いられる。本明細書で「例示的」と説明される任意の態様は、必ずしも他の態様よりも好ましい、または有利なものと解釈されるべきではない。
【００１１】
発明を実施するための形態で開示する態様は、複数のマスタデバイス間で条件付き介入を使用してキャッシュコヒーレンシを維持することを含む。この点について、図1は、条件付き介入を使用して複数のマスタデバイス104(0)〜104(X)の間のキャッシュコヒーレンシを維持するために条件付き介入回路102を提供する例示的なプロセッサベースシステム100を示す。図1の例では、条件付き介入回路102は、ポイントオブシリアライゼーション(point-of-serialization)回路105の一部として配置される。しかしながら、いくつかの態様では、条件付き介入回路102は、プロセッサベースシステム100内の、条件付き介入回路102がマスタデバイス104(0)〜104(X)の間の通信をモニタし得る任意の場所に設置されてよいことを理解されたい。いくつかの態様では、プロセッサベースシステム100の複数のマスタデバイス104(0)〜104(X)は、非限定的な例として中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、プロセッサクラスタ、および/またはハードウェアアクセラレータなどの異質なデバイスを備え得る。プロセッサベースシステム100は、他の要素の中でも、公知のデジタル論理素子、半導体回路、処理コア、および/またはメモリ構造、またはそれらの組合せのうちのいずれか1つを包含し得る。本明細書で説明する態様は、要素の任意の特定の構成に限定されず、開示される技法は、半導体ダイまたはパッケージ上の様々な構造およびレイアウトに容易に拡張され得る。いくつかの態様では、プロセッサベースシステム100は、図1に示される数より多い、または少ないマスタデバイス104(0)〜104(X)を含み得ることを理解されたい。
【００１２】
プロセッサベースシステム100のマスタデバイス104(0)〜104(X)は対応するキャッシュ106(0)〜106(X)を含み、キャッシュ106(0)〜106(X)は、マスタデバイス104(0)〜104(X)によるより速いアクセスのために、共有データ(図示せず)がローカルに記憶されることを可能にする。これは、マスタデバイス104(0)〜104(X)がシステムメモリ107への比較的遅いアクセスの必要性を最小化し、それによってプロセッサベースシステム100の性能を改善し、電力消費を低減することを可能にする場合がある。キャッシュ106(0)〜106(X)はそれぞれ、キャッシュライン細粒サイズ108(0)〜108(X)によって特徴付けられる。キャッシュ106(0)〜106(X)のキャッシュライン細粒サイズ108(0)〜108(X)は、データがキャッシュ106(0)〜106(X)の中におよび外に転送され得る、固定のブロックサイズを表す。いくつかの態様では、キャッシュライン細粒サイズ108(0)〜108(X)は、同じプロセッサベースシステム100内に異なるサイズ(たとえば、非限定的な例として64バイトおよび128バイト)を含む場合がある。
【００１３】
図1のマスタデバイス104(0)〜104(X)は、バス110を介して互いにおよび条件付き介入回路102に通信可能に接続される。図1の例では、マスタデバイス104(0)、104(1)はブリッジ114を介して条件付き介入回路102のブリッジ112に接続され、一方でマスタデバイス104(X)はブリッジ116を介してブリッジ112に接続される。このようにして、条件付き介入回路102は、マスタデバイス104(0)〜104(X)の各々が他のマスタデバイス104(0)〜104(X)によって送信された読取り要求(図示せず)をスヌープすることを可能にし、介入応答(図示せず)を供給するように構成される。いくつかの態様では、マスタデバイス104(0)〜104(X)と条件付き介入回路102との間の相互接続は、図1に示すものとは異なる場合がある。
【００１４】
図1のキャッシュ106(0)〜106(X)の各々は、マスタデバイス104(0)〜104(X)のいずれかによって読取りおよび/または修正が行われ得る共有データのローカルコピーを記憶し得る。したがって、キャッシュ106(0)〜106(X)に記憶された共有データがマスタデバイス104(0)〜104(X)によって整合された状態で閲覧されることを確保するために、マスタデバイス104(0)〜104(X)の各々は、1つまたは複数のスヌープベースバスコヒーレンシプロトコルのうちの1つを実施する。非限定的な例として、マスタデバイス104(0)〜104(X)は、アドバンスト拡張可能インターフェース(AXI: Advanced Extensible Interface)コヒーレンシ拡張(ACE)プロトコルを実施する場合がある。いくつかの態様は、マスタデバイス104(0)〜104(X)が同じプロセッサベースシステム100内で異なるバスコヒーレンシプロトコルを実施し得ることを提供する場合がある。
【００１５】
マスタデバイス104(0)〜104(X)によって実施されるスヌープベースバスコヒーレンシプロトコルは、他のマスタデバイス104(0)〜104(X)から生じ、かつマスタデバイス104(0)〜104(X)間で共有されるデータを伴う読取り要求をスヌープするために、マスタデバイス104(0)〜104(X)の各々がバス110をモニタすることを可能にする。マスタデバイス104(0)〜104(X)のうちの1つ(すなわち、「スヌーピングマスタデバイス104(0)〜104(X)」)が読取り要求をスヌープし、その読取り要求に対してマスタデバイスが最新のデータを有する場合、スヌーピングマスタデバイス104(0)〜104(X)は介入応答(図示せず)を条件付き介入回路102に供給し、最新のデータを含む介入データ(図示せず)を読取り要求を発行したマスタデバイス104(0)〜104(X)(すなわち、「要求元マスタデバイス104(0)〜104(X)」)に供給し得る。しかしながら、いくつかの状況下では、読取り要求に応答して最終的に1つのスヌーピングマスタデバイス104(0)〜104(X)だけしか介入データを供給できないにもかかわらず、介入応答は、読取り要求に応答して複数のスヌーピングマスタデバイス104(0)〜104(X)によって供給されてもよい。その結果、介入データを供給するために、複数のスヌーピングマスタデバイス104(0)〜104(X)の中から適切なスヌーピングマスタデバイス104(0)〜104(X)を選択することが必要である。マスタデバイス104(0)〜104(X)が異なるキャッシュライン細粒サイズ108(0)〜108(X)を有するキャッシュ106(0)〜106(X)を使用する場合、および/またはマスタデバイス104(0)〜104(X)が異なる状況下で介入を許容する異なるバスコヒーレンシプロトコルを使用する場合、この作業は複雑になり得る。
【００１６】
この点について、条件付き介入回路102は、スヌープされた読取り要求に対する介入データを供給することを探求している複数のマスタデバイス104(0)〜104(X)の間で条件付き介入を可能にするように構成される。条件付き介入回路102は、複数のスヌーピングマスタデバイス104(0)〜104(X)から介入応答を(たとえば、スヌープされた読取り要求に応答して)受信するように構成される。介入データを供給するためのスヌーピングマスタデバイス104(0)〜104(X)のうちの1つを選択するために、条件付き介入回路102は最初に、スヌーピングマスタデバイス104(0)〜104(X)のうちのいくつのデバイスが要求元マスタデバイス104(0)〜104(X)のキャッシュライン細粒サイズ108(0)〜108(X)と同じかまたはより大きいキャッシュライン細粒サイズ108(0)〜108(X)を有するかを決定する。1つのスヌーピングマスタデバイス104(0)〜104(X)だけが要求元マスタデバイス104(0)〜104(X)のキャッシュライン細粒サイズ108(0)〜108(X)と同じかまたはより大きいキャッシュライン細粒サイズ108(0)〜108(X)を有する場合、条件付き介入回路102は、介入データを供給するためにそのスヌーピングマスタデバイス104(0)〜104(X)を選択する。2つ以上のスヌーピングマスタデバイス104(0)〜104(X)が要求元マスタデバイス104(0)〜104(X)のキャッシュライン細粒サイズ108(0)〜108(X)と同じかまたはより大きいキャッシュライン細粒サイズ108(0)〜108(X)を有する場合、条件付き介入回路102は、代替選択基準を使用してスヌーピングマスタデバイス104(0)〜104(X)を選択する。非限定的な例として、代替選択基準は、要求元マスタデバイス104(0)〜104(X)への最短経路を有するスヌーピングマスタデバイス104(0)〜104(X)、および/または要求元マスタデバイス104(0)〜104(X)のキャッシュライン細粒サイズ108(0)〜108(X)に最も近いキャッシュライン細粒サイズ108(0)〜108(X)を有するスヌーピングマスタデバイス104(0)〜104(X)が選択されることを指定する。いくつかの態様によれば、要求元マスタデバイス104(0)〜104(X)への最短経路を有するスヌーピングマスタデバイス104(0)〜104(X)の選択は、条件付き介入回路102によって維持されているトポロジーマップ118を使用して条件付き介入回路102によって実行され得る。いくつかの態様では、トポロジーマップ118は、マスタデバイス104(0)〜104(X)間の相互接続の表現を提供してよく、マスタデバイス104(0)〜104(X)のうちの任意の2つの間の経路の長さを決定して比較するために、条件付き介入回路102によって使用されてもよい。いくつかの態様では、代替選択基準は、条件付き介入回路102の選択レジスタ120によって示され得る。条件付き介入回路102は、スヌープ要求および/または介入応答を送信、受信および/または削除するためのスヌープ要求管理回路122をさらに備え得る。
【００１７】
介入データを供給するためにスヌーピングマスタデバイス104(0)〜104(X)のうちの1つを選択した後、条件付き介入回路102は、選択されなかったスヌーピングマスタデバイス104(0)〜104(X)によって供給された介入応答を削除する。いくつかの態様では、選択されなかったスヌーピングマスタデバイス104(0)〜104(X)の介入応答を削除することは、削除ベクトル(図示せず)内の選択されなかったスヌーピングマスタデバイス104(0)〜104(X)に対応する1つまたは複数の削除ベクトルビット(図示せず)をセットすることによって達成され得る。次いで、削除ベクトルは、マスタデバイス104(0)〜104(X)に送信される最終結果(図示せず)の一部として供給され得る。次いで、選択されたスヌーピングマスタデバイス104(0)〜104(X)からの介入データは、要求元マスタデバイス104(0)〜104(X)に供給される。
【００１８】
いくつかの態様は、スヌーピングマスタデバイス104(0)〜104(X)のうちの1つまたは複数が、(たとえば、厳密な介入ポリシーを強要するバスコヒーレンシプロトコルの使用を通して)早期介入データ転送を要求元マスタデバイス104(0)〜104(X)に供給するように構成されることを提供し得る。そのような態様では、1つまたは複数のスヌーピングマスタデバイス104(0)〜104(X)は、最終結果が生成される前にデータを送信し得る。増加する応答時間を与えるために、そのような態様では、条件付き介入回路102は、介入応答を削除するのではなく、そのようなスヌーピングマスタデバイス104(0)〜104(X)からの介入応答を維持し得る。
【００１９】
いくつかの例では、マスタデバイス104(0)〜104(X)のうちの1つまたは複数は、介入応答ではなく再試行応答(図示せず)を供給し得る。たとえば、再試行応答は、スヌープされた読取り要求がマスタデバイス104(0)〜104(X)(すなわち、「再試行マスタデバイス104(0)〜104(X)」)によって現在処理されている別の保留中の要求との競合を提示する場合に供給され得る。いくつかの例では、再試行応答は、コヒーレンシ要件(たとえば、キャッシュ状態が未定であるか、またはデータが現在キャッシュから出されている)に起因するか、またはキュー到達能力(queue reaching capacity)などの構造的理由から生じる場合がある。そのような例では、再試行マスタデバイス104(0)〜104(X)は、最新の共有データを実際に所有し得るが、再試行応答は、条件付き介入回路102から共有データの存在を隠す場合がある。したがって、いくつかの態様では、再試行応答を受信すると、条件付き介入回路102は、再試行マスタデバイス104(0)〜104(X)のキャッシュライン細粒サイズ108(0)〜108(X)より小さいキャッシュライン細粒サイズ108(0)〜108(X)を有する各スヌーピングマスタデバイス104(0)〜104(X)からの介入応答を削除し得る。
【００２０】
これは、条件付き介入回路102が、スヌープされた読取り要求に対して要求された介入データのサブセットだけしか供給できないスヌーピングマスタデバイス104(0)〜104(X)を選択しないことを確保し得る。
【００２１】
キャッシュライン細粒サイズ108(0)〜108(X)に基づいてスヌーピングマスタデバイス104(0)〜104(X)を選択するための、図1の条件付き介入回路102およびマスタデバイス104(0)〜104(X)の間の例示的な通信フローを示すために、図2A〜図2Dが提供される。図2A〜図2Dでは、図1のプロセッサベースシステム100が示されている。図2A〜図2Dのマスタデバイス104(0)および104(X)は、それぞれ128バイト(「128B」)のキャッシュライン細粒サイズ108(0)および108(X)を有する。図2A〜図2Dのマスタデバイス104(1)は、64バイト(「64B」)のキャッシュライン細粒サイズ108(1)を有する。明快のために、図1のバス110は、図2A〜図2Dにおいて示されていない。
【００２２】
図2Aでは、マスタデバイス104(0)(すなわち、「要求元マスタデバイス104(0)」)は、ブリッジ114およびブリッジ112を介してすべてのマスタデバイス104(0)〜104(X)に、および条件付き介入回路102にアクセス可能な共有データ(図示せず)を読み取ることの要求を表す読取り要求200を送信する。条件付き介入回路102は、スヌープ応答202をマスタデバイス104(1)および104(X)(すなわち、「スヌーピングマスタデバイス104(1)および104(X)」)に送信する。スヌープ応答202は、スヌーピングマスタデバイス104(1)および104(X)が読取り要求200をモニタし、潜在的に最新の共有データを用いて介入することを可能にする。
【００２３】
図2Bに見られるように、条件付き介入回路102は次いで、介入応答204(0)および204(1)をそれぞれ、スヌーピングマスタデバイス104(1)および104(X)から受信する。介入応答204(0)および204(1)は、スヌーピングマスタデバイス104(1)および104(X)が読取り要求200に応答して介入データを要求元マスタデバイス104(0)に供給するための候補であることを、条件付き介入回路102に示す。介入データを供給するためにスヌーピングマスタデバイス104(1)および104(X)のうちの1つを選択するために、条件付き介入回路102は、スヌーピングマスタデバイス104(1)、104(X)のうちのいくつのデバイスが要求元マスタデバイス104(0)のキャッシュライン細粒サイズ108(0)と同じかまたはより大きいキャッシュライン細粒サイズ108(1)、108(X)を有するかを決定する。この例では、スヌーピングマスタデバイス104(X)のキャッシュライン細粒サイズ108(X)(すなわち、128バイト)は要求元マスタデバイス104(0)のキャッシュライン細粒サイズ108(0)と同じであり、一方でスヌーピングマスタデバイス104(1)のキャッシュライン細粒サイズ108(1)(すなわち、64バイト)は要求元マスタデバイス104(0)のキャッシュライン細粒サイズ108(0)より小さい。したがって、この例では、条件付き介入回路102は、介入データを要求元マスタデバイス104(0)に供給するためにスヌーピングマスタデバイス104(X)を選択する。
【００２４】
スヌーピングマスタデバイス104(X)を選択した後、条件付き介入回路102は、選択されなかったスヌーピングマスタデバイス104(1)からの介入応答204(0)を削除する。図2Cに示すように、これは、スヌーピングマスタデバイス104(X)の選択と、選択されなかったスヌーピングマスタデバイス104(1)からの介入応答204(0)の削除とをマスタデバイス104(0)〜104(X)の各々に示すデータ206を通信する条件付き介入回路102によって達成される。いくつかの態様では、マスタデバイス104(0)〜104(X)に通信されたデータ206は、削除ベクトル210を含む最終結果208を含み得る。削除ベクトル210は、マスタデバイス104(0)〜104(X)に対応する複数の削除ベクトルビット212(0)〜212(X)から構成される。選択されなかったスヌーピングマスタデバイス104(1)と関連付けられた削除ベクトルビット212(1)をセットすることによって、条件付き介入回路102は、その介入応答204(0)が削除されることを、選択されなかったスヌーピングマスタデバイス104(1)に示し得る。
【００２５】
最後に、図2Dに見られるように、条件付き介入回路102は、選択されたスヌーピングマスタデバイス104(X)から要求元マスタデバイス104(0)に介入データ214を供給する。いくつかの態様では、介入データ214は、要求元マスタデバイス104(0)によって送信された読取り要求200によって要求されたデータの最新のコピーを表す。要求元マスタデバイス104(0)のキャッシュライン細粒サイズ108(0)と同じかまたはより大きいキャッシュライン細粒サイズ108(X)を有するスヌーピングマスタデバイス104(X)を選択することによって、条件付き介入回路102は、読取り要求200によって要求されたすべての共有データが要求元マスタデバイス104(0)に供給されることを確保する。
【００２６】
図3A〜図3Dは、要求元マスタデバイス104(0)への最短経路にさらに基づいて介入データ(図示せず)を供給するためにスヌーピングマスタデバイス104(0)〜104(X)を選択するための、図1の条件付き介入回路102およびマスタデバイス104(0)〜104(X)の間の例示的な通信フローを示す。図3A〜図3Dでは、図1のプロセッサベースシステム100が、64バイト(「64B」)の、キャッシュライン細粒サイズ108(0)および108(1)をそれぞれ有する図3A〜図3Dのマスタデバイス104(0)および104(1)とともに示されている。図3A〜図3Dのマスタデバイス104(X)は、128バイト(「128B」)のキャッシュライン細粒サイズ108(X)を有する。図1のバス110は、明快のために図3A〜図3Dから省略されている。
【００２７】
図3Aに見られるように、要求元マスタデバイス104(0)は、読取り要求300をブリッジ114およびブリッジ112を介して条件付き介入回路102に送信する。応答して、条件付き介入回路102は、スヌープ応答302をスヌーピングマスタデバイス104(1)および104(X)に送信する。次いで、条件付き介入回路102は、スヌーピングマスタデバイス104(1)および104(X)が介入データを要求元マスタデバイス104(0)に供給するための候補であることを条件付き介入回路102に示す、図3Bにおける介入応答204(0)および204(1)をそれぞれ、スヌーピングマスタデバイス104(1)および104(X)から受信する。
【００２８】
介入データを供給するためにスヌーピングマスタデバイス104(1)および104(X)のうちの1つを選択するために、条件付き介入回路102は、スヌーピングマスタデバイス104(1)、104(X)のうちのいくつのデバイスが要求元マスタデバイス104(0)のキャッシュライン細粒サイズ108(0)と同じかまたはより大きいキャッシュライン細粒サイズ108(1)、108(X)を有するかを決定する。図3A〜図3Dの例では、スヌーピングマスタデバイス104(X)のキャッシュライン細粒サイズ108(X)(すなわち、128B)は要求元マスタデバイス104(0)のキャッシュライン細粒サイズ108(0)より大きく、一方でスヌーピングマスタデバイス104(1)のキャッシュライン細粒サイズ108(1)(すなわち、64B)は要求元マスタデバイス104(0)のキャッシュライン細粒サイズ108(0)と同じサイズである。要求元マスタデバイス104(0)のキャッシュライン細粒サイズ108(0)と同じかまたはより大きいキャッシュライン細粒サイズ108(1)、108(X)を有する少なくとも2つのスヌーピングマスタデバイス104(1)、104(X)が存在するので、介入データを供給するためにスヌーピングマスタデバイス104(1)、104(X)のうちの1つを選択するための、追加の動作が必要である。したがって、条件付き介入回路102は、選択レジスタ120によって示される代替選択基準に基づいてスヌーピングマスタデバイス104(1)、104(X)のうちの1つを選択する。この例では、条件付き介入回路102は、要求元マスタデバイス104(0)への最短経路を有する、スヌーピングマスタデバイス104(1)、104(X)のうちの1つを選択する。図3Bに見られるように、スヌーピングマスタデバイス104(1)は、スヌーピングマスタデバイス104(X)より短い、要求元マスタデバイス104(0)への経路を有し、そのことを条件付き介入回路102はトポロジーマップ118を使用して決定し得る。したがって、条件付き介入回路102は、介入データを要求元マスタデバイス104(0)に供給するためにスヌーピングマスタデバイス104(1)を選択する。
【００２９】
異なる性能要件を有するいくつかの態様では、異なる代替選択基準が条件付き介入回路102によって使用され得ることに留意されたい。たとえば、いくつかの環境では、スループットが応答時間より重要な考慮事項であり得る。したがって、条件付き介入回路102は、スループットを最大化するために要求元マスタデバイス104(0)のキャッシュライン細粒サイズ108(0)に最も近いキャッシュライン細粒サイズ108(1)、108(X)を有するスヌーピングマスタデバイス104(1)、104(X)を選択し得る。図3Bの例では、スヌーピングマスタデバイス104(1)は、要求元マスタデバイス104(0)のキャッシュライン細粒サイズ108(0)と同じキャッシュライン細粒サイズ108(1)を有し、したがって、条件付き介入回路102は、同様にこの代替選択基準の下でスヌーピングマスタデバイス104(1)を選択することになる。
【００３０】
条件付き介入回路102のいくつかの態様はまた、スヌーピングマスタデバイス104(1)、104(X)のいずれもが、要求元マスタデバイス104(0)のキャッシュライン細粒サイズ108(0)と同じかまたはより大きいキャッシュライン細粒サイズ108(1)、108(X)を有しないことが発見される環境において、代替選択基準を使用する場合がある。そのような状況では、条件付き介入回路102は、少なくとも部分的なデータを要求元マスタデバイス104(0)に供給するために上記で説明した代替選択基準に基づいてスヌーピングマスタデバイス104(1)、104(X)のうちの1つを選択し得る。次いで、条件付き介入回路102は、任意の失われたデータをシステムメモリ107から取り出し、取り出したデータを要求元マスタデバイス104(0)に供給することになる。
【００３１】
次に図3Cを参照すると、条件付き介入回路102は次に、スヌーピングマスタデバイス104(1)の選択と、選択されなかったスヌーピングマスタデバイス104(X)からの介入応答204(1)の削除とをマスタデバイス104(0)〜104(X)の各々に示すデータ206を通信することによって、選択されなかったスヌーピングマスタデバイス104(X)からの介入データ204(1)を削除する。最後に、図3Dに見られるように、条件付き介入回路102は、選択されたスヌーピングマスタデバイス104(1)から要求元マスタデバイス104(0)に介入データ214を供給する。要求元マスタデバイス104(0)への最短経路を有するスヌーピングマスタデバイス104(1)を選択することによって、条件付き介入回路102は、プロセッサベースシステム100のメモリアクセスレイテンシと電力消費とを低減し得る。
【００３２】
上述のように、いくつかの例では、マスタデバイス104(0)〜104(X)のうちの1つまたは複数(すなわち、「再試行マスタデバイス104(0)〜104(X)」)は、(たとえば、スヌープされた読取り要求が、再試行マスタデバイス104(0)〜104(X)によって現在処理されている別の保留中の要求との競合を提示する場合)介入応答204ではなく再試行応答(図示せず)を供給し得る。再試行要求を処理するための、図1の条件付き介入回路102およびマスタデバイス104(0)〜104(X)の間の例示的な通信フローを示すために、図4A〜図4Dが提供される。図4A〜図4Dは、4つのマスタデバイス104(0)、104(1)、104(2)、104(X)を含むプロセッサベースシステム100を示す。図4A〜図4Dのマスタデバイス104(0)および104(1)は、それぞれ64バイト(「64B」)のキャッシュライン細粒サイズ108(0)および108(1)を有する。マスタデバイス104(2)および104(X)は、それぞれ128バイト(「128B」)のキャッシュライン細粒サイズ108(2)および108(X)を有する。図1のバス110は、明快のために図4A〜図4Dに示されていない。
【００３３】
図4Aを参照すると、要求元マスタデバイス104(0)は、読取り要求400をブリッジ114およびブリッジ112を介して条件付き介入回路102に送信する。次いで、条件付き介入回路102は、スヌープ応答402をスヌーピングマスタデバイス104(1)、104(2)および104(X)に送信する。図4Bに見られるように、条件付き介入回路102は次いで、介入応答204(0)および204(1)をそれぞれ、スヌーピングマスタデバイス104(1)および104(2)から受信する。しかしながら、条件付き介入回路102はまた、再試行応答404をマスタデバイス104(X)(すなわち、「再試行マスタデバイス104(X)」)から受信する。再試行マスタデバイス104(X)からの再試行応答404は、「ダーティな」データを気づかずにマスクする場合があるので、いくつかの態様では、条件付き介入回路102は、再試行マスタデバイス104(X)のキャッシュライン細粒サイズ108(X)より小さいキャッシュライン細粒サイズ108(1)、108(2)を有するスヌーピングマスタデバイス104(1)、104(2)の各々から各介入応答204(0)、204(1)を削除し得る。図4Bの例では、スヌーピングマスタデバイス104(1)は、再試行マスタデバイス104(X)の128バイトのキャッシュライン細粒サイズ108(X)より小さい、64バイトのキャッシュライン細粒サイズ108(1)を有する。対照的に、スヌーピングマスタデバイス104(2)のキャッシュライン細粒サイズ108(2)は、再試行マスタデバイス104(X)のキャッシュライン細粒サイズ108(X)と同じサイズである。したがって、条件付き介入回路102は、スヌーピングマスタデバイス104(2)の介入応答204(1)を維持しながら、スヌーピングマスタデバイス104(1)の介入応答204(0)を削除する。次いで、条件付き介入回路102は、介入データ214を要求元マスタデバイス104(0)に供給するために、介入応答204(1)を供給する唯一残存しているスヌーピングマスタデバイス104(2)としてスヌーピングマスタデバイス104(2)を選択する。
【００３４】
スヌーピングマスタデバイス104(2)を選択した後、図4Cに示すように、条件付き介入回路102は、スヌーピングマスタデバイス104(2)の選択と、スヌーピングマスタデバイス104(1)からの介入応答204(0)の削除とをマスタデバイス104(0)〜104(X)の各々に示すデータ206を通信する。最後に、図4Dに見られるように、条件付き介入回路102は、選択されたスヌーピングマスタデバイス104(2)から要求元マスタデバイス104(0)に介入データ214を供給する。
【００３５】
図5A〜図5Cは、複数のマスタデバイス間の条件付き介入を使用してキャッシュコヒーレンシを維持するための例示的なプロセスを示す流れ図である。明快のために、図1、図2A〜図2D、図3A〜図3Dおよび図4A〜図4Dの要素は、図5A〜図5Cを説明する際に参照される。図5Aでは、動作は、条件付き介入回路102のスヌープ要求管理回路122が、複数の介入応答204(0)〜204(X)を、各々がマスタデバイス104(0)〜104(X)のキャッシュ106(0)〜106(X)のキャッシュライン細粒サイズ108(0)〜108(X)と関連付けられている複数のマスタデバイス104(0)〜104(X)のうちの対応する複数のスヌーピングマスタデバイス104(1)〜104(X)から受信することから始まる(ブロック500)。この点について、スヌープ要求管理回路122は、本明細書では「スヌープベースキャッシュコヒーレンシプロトコルに従って複数のマスタデバイスのうちの対応する複数のスヌーピングマスタデバイスから複数の介入応答を受信するための手段であって、各マスタデバイスがマスタデバイスのキャッシュのキャッシュライン細粒サイズと関連付けられている、手段」と呼ばれる場合がある。
【００３６】
いくつかの態様では、条件付き介入回路102は、複数のマスタデバイス104(0)〜104(X)のうちの再試行マスタデバイス104(X)から再試行応答404を受信し得る(ブロック502)。したがって、条件付き介入回路102は、本明細書では「複数のマスタデバイスのうちの再試行マスタデバイスから再試行応答を受信するための手段」と呼ばれる場合がある。応答して、条件付き介入回路102は、再試行マスタデバイス104(X)のキャッシュライン細粒サイズ108(X)より小さいキャッシュライン細粒サイズ108(1)を有する複数のスヌーピングマスタデバイス104(1)〜104(X)の各スヌーピングマスタデバイス104(1)からの各介入応答204(0)を削除し得る(ブロック504)。したがって、条件付き介入回路102は、本明細書では「再試行マスタデバイスのキャッシュライン細粒サイズより小さいキャッシュライン細粒サイズを有する複数のスヌーピングマスタデバイスの各スヌーピングマスタデバイスから複数の介入応答の各介入応答を削除するための手段」と呼ばれる場合がある。次いで、処理は図5Bのブロック506において継続する。
【００３７】
次に図5Bを参照すると、条件付き介入回路102は次に、複数のマスタデバイス104(0)〜104(X)のうちの要求元マスタデバイス104(0)と同じかまたはより大きいキャッシュライン細粒サイズ108(1)〜108(X)を有する複数のスヌーピングマスタデバイス104(1)〜104(X)の数を決定する(ブロック506)。この点について、条件付き介入回路102は、本明細書では「複数のマスタデバイスのうちの要求元マスタデバイスと同じかまたはより大きいキャッシュライン細粒サイズを有する複数のスヌーピングマスタデバイスの数を決定するための手段」と呼ばれる場合がある。条件付き介入回路102が、ブロック506において、1つのスヌーピングマスタデバイス104(X)が要求元マスタデバイス104(0)と同じかまたはより大きいキャッシュライン細粒サイズ108(X)を有する(すなわち、「COUNT=1」)と決定する場合、条件付き介入回路102は、同じかまたはより大きいキャッシュライン細粒サイズ108(X)を有するスヌーピングマスタデバイス104(X)を選択する(ブロック508)。したがって、条件付き介入回路102は、本明細書では「1つのスヌーピングマスタデバイスが同じかまたはより大きいキャッシュライン細粒サイズを有するとの決定に応答して、同じかまたはより大きいキャッシュライン細粒サイズを有する複数のスヌーピングマスタデバイスのうちの1つのスヌーピングマスタデバイスを選択するための手段」と呼ばれる場合がある。次いで、処理は図5Cのブロック510において再開する。
【００３８】
しかしながら、条件付き介入回路102が、ブロック506において、2つ以上のスヌーピングマスタデバイス104(1)〜104(X)が要求元マスタデバイス104(0)と同じかまたはより大きいキャッシュライン細粒サイズ108(1)〜108(X)を有する(すなわち、「COUNT>1」)と決定する場合、条件付き介入回路102は、同じかまたはより大きいキャッシュライン細粒サイズ108(1)〜108(X)を有する2つ以上のスヌーピングマスタデバイス104(1)〜104(X)の中から代替選択基準に基づいて1つのスヌーピングマスタデバイス104(1)を選択する(ブロック512)。したがって、条件付き介入回路102は、本明細書では「複数のスヌーピングマスタデバイスのうちの2つ以上のスヌーピングマスタデバイスが同じかまたはより大きいキャッシュライン細粒サイズを有するとの決定に応答して、同じかまたはより大きいキャッシュライン細粒サイズを有する複数のスヌーピングマスタデバイスのうちの2つ以上のスヌーピングマスタデバイスの中から、代替選択基準に基づいて1つのスヌーピングマスタデバイスを選択するための手段」と呼ばれる場合がある。いくつかの態様によれば、スヌーピングマスタデバイス104(1)を選択するためのブロック512の動作は、同じかまたはより大きいキャッシュライン細粒サイズ108(1)〜108(X)を有する2つ以上のスヌーピングマスタデバイス104(1)〜104(X)の中から要求元マスタデバイス104(0)への最短経路を有するスヌーピングマスタデバイス104(1)を選択することを含み得る(ブロック514)。したがって、条件付き介入回路102は、本明細書では「要求元マスタデバイスへの最短経路を有するスヌーピングマスタデバイスを選択するための手段」と呼ばれる場合がある。いくつかの態様では、ブロック514の動作は、トポロジーマップ118に基づく場合がある(ブロック516)。いくつかの態様は、スヌーピングマスタデバイス104(1)を選択するためのブロック512の動作は、要求元マスタデバイス104(0)のキャッシュライン細粒サイズ108(0)に最も近いキャッシュライン細粒サイズ108(1)を有するスヌーピングマスタデバイス104(1)を選択することを含み得ることを提供し得る(ブロック518)。この点について、条件付き介入回路102は、本明細書では「要求元マスタデバイスへのキャッシュライン細粒サイズに最も近いキャッシュライン細粒サイズを有するスヌーピングマスタデバイスを選択するための手段」と呼ばれる場合がある。次いで、処理は図5Cのブロック510において再開する。
【００３９】
再び図5Bのブロック506を参照すると、条件付き介入回路102が、スヌーピングマスタデバイス104(1)〜104(X)のいずれもが要求元マスタデバイス104(0)と同じかまたはより大きいキャッシュライン細粒サイズ108(1)〜108(X)を有しない(すなわち、「COUNT=0」)と決定する場合、条件付き介入回路102は、代替選択基準に基づいて複数のスヌーピングマスタデバイス104(1)〜104(X)の中からスヌーピングマスタデバイス104(1)を選択する(ブロック520)。したがって、条件付き介入回路102は、本明細書では「複数のスヌーピングマスタデバイスのうちのいずれのスヌーピングマスタデバイスも同じかまたはより大きいキャッシュライン細粒サイズを有しないとの決定に応答して、代替選択基準に基づいて複数のスヌーピングマスタデバイスの中からスヌーピングマスタデバイスを選択するための手段」と呼ばれる場合がある。選択されたスヌーピングマスタデバイス104(1)は要求元マスタデバイス104(0)によって要求されるデータのすべては供給することができないので、条件付き介入回路102は、いくつかの態様では、失われたデータをシステムメモリ107から取り出す場合がある(ブロック522)。したがって、条件付き介入回路102は、本明細書では「失われたデータをシステムメモリから取り出すための手段」と呼ばれる場合がある。次いで、処理は図5Cのブロック510において継続する。
【００４０】
図5Cでは、条件付き介入回路102は次に、複数のスヌーピングマスタデバイス104(1)〜104(X)のうちの対応する1つまたは複数の選択されなかったスヌーピングマスタデバイス104(1)、104(X)から1つまたは複数の介入応答204(0)、204(1)を削除する(ブロック510)。したがって、条件付き介入回路102は、本明細書では「複数のスヌーピングマスタデバイスのうちの対応する1つまたは複数の選択されなかったスヌーピングマスタデバイスから、複数の介入応答のうちの1つまたは複数の介入応答を削除するための手段」と呼ばれる場合がある。いくつかの態様では、1つまたは複数の介入応答204(0)、204(1)を削除するためのブロック510の動作は、最終結果208の削除ベクトル210内で、1つまたは複数の選択されなかったスヌーピングマスタデバイス104(1)、104(X)に対応する1つまたは複数の削除ベクトルビット212(0)〜212(X)をセットすることを含み得る(ブロック524)。したがって、条件付き介入回路102は、本明細書では「最終結果の削除ベクトル内で、1つまたは複数の選択されなかったスヌーピングマスタデバイスに対応する1つまたは複数の削除ベクトルビットをセットするための手段」と呼ばれる場合がある。
【００４１】
次いで、条件付き介入回路102は、選択されたスヌーピングマスタデバイス104(1)、104(X)から要求元マスタデバイス104(0)に介入データ214を供給する(ブロック526)。この点について、条件付き介入回路102は、本明細書では「選択されたスヌーピングマスタデバイスから要求元マスタデバイスに介入データを供給するための手段」と呼ばれる場合がある。いくつかの態様では、条件付き介入回路102は、早期介入データ転送を提供するように構成された、選択されなかったスヌーピングマスタデバイス104(1)、104(X)からの介入応答204(0)、204(1)を維持し得る(ブロック528)。したがって、条件付き介入回路102は、本明細書では「早期介入データ転送を提供するように構成された、複数のスヌーピングマスタデバイスのうちの対応する1つまたは複数の選択されなかったスヌーピングマスタデバイスからの1つまたは複数の介入応答を維持するための手段」と呼ばれる場合がある。
【００４２】
本明細書で開示する態様による複数のマスタデバイス間の条件付き介入を使用してキャッシュコヒーレンシを維持することは、任意のプロセッサベースデバイス内に設けられるか、またはその中に組み込まれ得る。例としては、限定ではないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、携帯電話、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤおよび自動車が含まれる。
【００４３】
この点について、図6は、図1に示す条件付き介入回路102を用いることができるプロセッサベースシステム600の一例を示す。この例では、プロセッサベースシステム600は、図1のプロセッサベースシステム100に対応し得る。プロセッサベースのシステム600は、1つまたは複数のプロセッサ604を各々が含む1つまたは複数の中央処理ユニット(CPU)602を含む。CPU602は、マスタデバイス104(0)〜104(X)であり得る。CPU602は、一時的に記憶されているデータに迅速にアクセスするために、プロセッサ604に結合されたキャッシュメモリ606を有し得る。CPU602は、システムバス608に結合され、プロセッサベースシステム600内に含まれるマスタデバイスとスレーブデバイスとを相互結合することができる。よく知られているように、CPU602は、システムバス608を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU602は、スレーブデバイスの一例として、メモリコントローラ610にバストランザクション要求を通信することができる。
【００４４】
他のマスタデバイスおよびスレーブデバイスがシステムバス608に接続されることが可能である。図6に示されるように、これらのデバイスは、例として、メモリシステム612、1つまたは複数の入力デバイス614、1つまたは複数の出力デバイス616、1つまたは複数のネットワークインターフェースデバイス618、および1つまたは複数のディスプレイコントローラ620を含むことができる。入力デバイス614は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む任意のタイプの入力デバイスを含むことができる。出力デバイス616は、限定はしないが、オーディオ、ビデオ、他の視覚的インジケータなどを含む任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス618は、ネットワーク622との間のデータの交換を可能にするように構成された任意のデバイスであり得る。ネットワーク622は、限定はしないが、有線ネットワークまたはワイヤレスネットワーク、プライベートネットワークまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、ワイドエリアネットワーク(WAN)、BLUETOOTH(登録商標)ネットワーク、およびインターネットを含む、任意のタイプのネットワークであってよい。ネットワークインターフェースデバイス618は、必要に応じて、任意のタイプの通信プロトコルをサポートするように構成されることが可能である。メモリシステム612は、1つまたは複数のメモリユニット624(0〜N)を含むことができる。
【００４５】
CPU602はまた、1つまたは複数のディスプレイ626へ送られる情報を制御するために、システムバス608を介してディスプレイコントローラ620にアクセスするように構成され得る。ディスプレイコントローラ620は、1つまたは複数のビデオプロセッサ628を介して、表示されるべき情報をディスプレイ626に送り、ビデオプロセッサ628は、表示されるべき情報を、ディスプレイ626に適したフォーマットとなるように処理する。ディスプレイ626としては、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含むがそれらに限定されない、任意のタイプのディスプレイがあり得る。
【００４６】
本明細書で開示する態様に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムが、電子ハードウェア、メモリの中もしくは別のコンピュータ可読媒体の中に記憶されるとともにプロセッサもしくは他の処理デバイスによって実行される命令、または両方の組合せとして実装され得ることを、当業者はさらに諒解されよう。本明細書で説明するマスタデバイスおよびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて使用されてもよい。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであってもよく、任意のタイプの所望の情報を記憶するように構成されてもよい。この互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、それらの機能に関して上記で概ね説明された。そのような機能がどのように実装されるのかは、特定の適用例、設計選択、および/またはシステム全体に課される設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装決定が本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００４７】
本明細書で開示する態様に関連して説明した様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。プロセッサは、マイクロプロセッサであってよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ(たとえば、DSPおよびマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成)として実施されてもよい。
【００４８】
本明細書で開示する態様は、ハードウェアとして、かつハードウェアに記憶される命令として具現化されてよく、そうした命令は、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態のコンピュータ可読媒体の中に存在してよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替形態において、記憶媒体は、プロセッサと一体にすることができる。プロセッサおよび記憶媒体はASIC内に存在することができる。ASICはリモート局内に存在することができる。代替として、プロセッサおよび記憶媒体は、個別構成要素としてリモート局、基地局、またはサーバ内に存在してもよい。
【００４９】
本明細書の例示的な態様のいずれかにおいて説明した動作ステップが、例および説明を提供するために記載されることにも留意されたい。説明した動作は、図示したシーケンス以外の数多くの異なるシーケンスで実行されてよい。さらに、単一の動作ステップにおいて説明した動作は、実際にはいくつかの異なるステップにおいて実行されてよい。追加として、例示的な態様で説明した1つまたは複数の動作ステップは組み合わせられてよい。当業者にとって容易に明らかであるように、フローチャート図に示す動作ステップが数多くの異なる修正を受けてよいことを理解されたい。情報および信号が様々な異なる技術および技法のいずれを使用して表され得ることも当業者は理解されよう。たとえば、上記の説明全体にわたって参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁気粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表現されてよい。
【００５０】
本開示の前の説明は、いかなる当業者も本開示を作製または使用することが可能になるように提供される。本開示の様々な修正が、当業者に容易に明らかになり、本明細書で規定する一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用され得る。したがって、本開示は、本明細書で説明した例および設計に限定されるものでなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲が与えられるべきである。
【符号の説明】
【００５１】
100  プロセッサベースシステム
102  条件付き介入回路
104(0)  マスタデバイス
104(1)  マスタデバイス
104(2)  マスタデバイス
104(X)  マスタデバイス
105  ポイントオブシリアライゼーション回路
106(0)  キャッシュ
106(1)  キャッシュ
106(2)  キャッシュ
106(X)  キャッシュ
107  システムメモリ
108(0)  キャッシュライン細粒サイズ
108(1)  キャッシュライン細粒サイズ
108(2)  キャッシュライン細粒サイズ
108(X)  キャッシュライン細粒サイズ
110  バス
112  ブリッジ
114  ブリッジ
116  ブリッジ
118  トポロジーマップ
120  選択レジスタ
122  スヌープ要求管理回路
200  読取り要求
202  スヌープ応答
204(0)  介入応答
204(1)  介入応答
206  データ
208  最終結果
210  削除ベクトル
212(0)  削除ベクトルビット
212(X)  削除ベクトルビット
214  介入データ
300  読取り要求
302  スヌープ応答
400  読取り要求
402  スヌープ応答
404  再試行応答
600  プロセッサベースシステム
602  中央処理ユニット(CPU)
604  プロセッサ
606  キャッシュメモリ
608  システムバス
610  メモリコントローラ
612  メモリシステム
614  入力デバイス
616  出力デバイス
618  ネットワークインターフェースデバイス
620  ディスプレイコントローラ
622  ネットワーク
624(0)  メモリユニット
624(N)  メモリユニット
626  ディスプレイ
628  ビデオプロセッサ
【要約】
複数のマスタデバイス間の条件付き介入を使用してキャッシュコヒーレンシを維持することが開示される。一態様では、条件付き介入回路が、介入応答を複数のスヌーピングマスタデバイスから受信するように構成される。介入データを供給するためのスヌーピングマスタデバイスを選択するために、条件付き介入回路は、いくつのスヌーピングマスタデバイスが要求元マスタデバイスと同じかまたはより大きいキャッシュライン細粒サイズを有するかを決定する。1つのスヌーピングマスタデバイスが同じかまたはより大きいキャッシュライン細粒サイズを有する場合、そのスヌーピングマスタデバイスが選択される。2つ以上のスヌーピングマスタデバイスが同じかまたはより大きいキャッシュライン細粒サイズを有する場合、1つのスヌーピングマスタデバイスが代替基準に基づいて選択される。選択されなかったスヌーピングマスタデバイスによって供給された介入応答は、条件付き介入回路によって削除され、選択されたスヌーピングマスタデバイスからの介入データは、要求元マスタデバイスに供給される。【図１】
0006396625.tif 000002
【図２Ａ】
0006396625.tif 000003
【図２Ｂ】
0006396625.tif 000004
【図２Ｃ】
0006396625.tif 000005
【図２Ｄ】
0006396625.tif 000006
【図３Ａ】
0006396625.tif 000007
【図３Ｂ】
0006396625.tif 000008
【図３Ｃ】
0006396625.tif 000009
【図３Ｄ】
0006396625.tif 000010
【図４Ａ】
0006396625.tif 000011
【図４Ｂ】
0006396625.tif 000012
【図４Ｃ】
0006396625.tif 000013
【図４Ｄ】
0006396625.tif 000014
【図５Ａ】
0006396625.tif 000015
【図５Ｂ】
0006396625.tif 000016
【図５Ｃ】
0006396625.tif 000017
【図６】
0006396625.tif 000018