(57)【特許請求の範囲】
【請求項１】
プロセッサベースシステムのコア間のデッドロックを回避するための方法であって、
プロセッサベースシステムのインターフェースブリッジ回路によって、リトライバスコヒーレンシプロトコルを実装する第1のコアデバイスからスヌープコマンドを受信するステップと、
インオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装する第2のコアデバイスに前記スヌープコマンドを転送するステップと、
前記スヌープコマンドが保留中である間に前記第1のコアデバイスと前記第2のコアデバイスとの間の潜在的なデッドロック状態を検出するステップと、
前記潜在的なデッドロック状態を検出したことに応答して、前記第1のコアデバイスにリトライレスポンスを送るステップとを含む、方法。
【請求項２】
前記第1のコアデバイスと前記第2のコアデバイスとの間の前記潜在的なデッドロック状態を検出するステップは、
前記スヌープコマンドが保留中である間に前記第2のコアデバイスから書込みコマンドを受信するステップと、
前記書込みコマンドと前記スヌープコマンドとの間のアドレス衝突を検出するステップとを含む、請求項1に記載の方法。
【請求項３】
前記インターフェースブリッジ回路が前記第1のコアデバイスから前記スヌープコマンドを受信し、スヌープレスポンスを待つことに応答して、カウントダウンタイマをアクティブ化するステップと、
前記第2のコアデバイスから前記スヌープレスポンスを受信したことに応答して前記カウントダウンタイマをリセットするステップとをさらに含み、
前記第1のコアデバイスと前記第2のコアデバイスとの間の前記潜在的なデッドロック状態を検出するステップは、前記カウントダウンタイマが満了したことを検出するステップを含む、請求項1に記載の方法。
【請求項４】
前記カウントダウンタイマは、プログラム可能なカウントダウンタイマを備える、請求項3に記載の方法。
【請求項５】
前記第2のコアデバイスからスヌープレスポンスを受信するステップと、
前記スヌープレスポンスが前記第2のコアデバイスによって与えられた修正されたデータを含むかどうかを判定するステップと、
前記スヌープレスポンスが前記第2のコアデバイスによって与えられた前記修正されたデータを含むと判定したことに応答して、前記修正されたデータをライトバック動作のために前記第1のコアデバイスに送るステップと、
前記スヌープレスポンスが前記第2のコアデバイスによって与えられた前記修正されたデータを含まないと判定したことに応答して、前記スヌープレスポンスを破棄するステップとをさらに含む、請求項1に記載の方法。
【請求項６】
前記インオーダーレスポンス非リトライバスコヒーレンシプロトコルは、アドバンストエクステンシブルインターフェース(AXI)コヒーレンシエクステンション(ACE)バスコヒーレンシプロトコルを含む、請求項1に記載の方法。
【請求項７】
インターフェースブリッジ回路であって、
リトライバスコヒーレンシプロトコルを実装する第1のコアデバイスからスヌープコマンドを受信することと、
インオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装する第2のコアデバイスに前記スヌープコマンドを転送することと、
前記スヌープコマンドが保留中である間に前記第1のコアデバイスと前記第2のコアデバイスとの間の潜在的なデッドロック状態を検出することと、
前記潜在的なデッドロック状態を検出したことに応答して、前記第1のコアデバイスにリトライレスポンスを送ることとを行うように構成される、インターフェースブリッジ回路。
【請求項８】
前記スヌープコマンドが保留中である間に前記第2のコアデバイスから書込みコマンドを受信することと、
前記書込みコマンドと前記スヌープコマンドとの間のアドレス衝突を検出することとを行うことによって前記第1のコアデバイスと前記第2のコアデバイスとの間の前記潜在的なデッドロック状態を検出するように構成される、請求項7に記載のインターフェースブリッジ回路。
【請求項９】
カウントダウンタイマを備え、
前記第1のコアデバイスから前記スヌープコマンドを受信し、スヌープレスポンスを待つことに応答して前記カウントダウンタイマをアクティブ化することと、
前記第2のコアデバイスから前記スヌープレスポンスを受信したことに応答して前記カウントダウンタイマをリセットすることとを行うようにさらに構成され、
前記カウントダウンタイマが満了したことを検出することによって、前記第1のコアデバイスと前記第2のコアデバイスとの間の前記潜在的なデッドロック状態を検出するように構成される、請求項7に記載のインターフェースブリッジ回路。
【請求項１０】
前記カウントダウンタイマは、プログラム可能なカウントダウンタイマを備える、請求項9に記載のインターフェースブリッジ回路。
【請求項１１】
前記第2のコアデバイスからスヌープレスポンスを受信することと、
前記スヌープレスポンスが前記第2のコアデバイスによって与えられた修正されたデータを含むかどうかを判定することと、
前記スヌープレスポンスが前記第2のコアデバイスによって与えられた前記修正されたデータを含むと判定したことに応答して、前記修正されたデータをライトバック動作のために前記第1のコアデバイスに送ることと、
前記スヌープレスポンスが前記第2のコアデバイスによって与えられた前記修正されたデータを含まないと判定したことに応答して、前記スヌープレスポンスを破棄することとを行うようにさらに構成される、請求項7に記載のインターフェースブリッジ回路。
【請求項１２】
前記インオーダーレスポンス非リトライバスコヒーレンシプロトコルは、アドバンストエクステンシブルインターフェース(AXI)コヒーレンシエクステンション(ACE)バスコヒーレンシプロトコルを含む、請求項7に記載のインターフェースブリッジ回路。
【請求項１３】
集積回路(IC)に組み込まれる、請求項7に記載のインターフェースブリッジ回路。
【請求項１４】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、携帯電話、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車からなるグループから選択されるデバイスの中に組み込まれる、請求項7に記載のインターフェースブリッジ回路。
【請求項１５】
プロセッサベースシステムであって、
リトライバスコヒーレンシプロトコルを実装する第1のコアデバイスと、
インオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装する第2のコアデバイスと、
前記第1のコアデバイスおよび前記第2のコアデバイスに通信可能に結合されたインターフェースブリッジ回路とを備え、
前記インターフェースブリッジ回路は、
前記第1のコアデバイスからスヌープコマンドを受信することと、
前記スヌープコマンドを前記第2のコアデバイスに転送することと、
前記スヌープコマンドが保留中である間に前記第1のコアデバイスと前記第2のコアデバイスとの間の潜在的なデッドロック状態を検出することと、
前記潜在的なデッドロック状態を検出したことに応答して、前記第1のコアデバイスにリトライレスポンスを送ることとを行うように構成される、プロセッサベースシステム。
【請求項１６】
インターフェースブリッジ回路であって、
リトライバスコヒーレンシプロトコルを実装する第1のコアデバイスからスヌープコマンドを受信するための手段と、
インオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装する第2のコアデバイスに前記スヌープコマンドを転送するための手段と、
前記スヌープコマンドが保留中である間に前記第1のコアデバイスと前記第2のコアデバイスとの間の潜在的なデッドロック状態を検出するための手段と、
前記潜在的なデッドロック状態を検出したことに応答して、前記第1のコアデバイスにリトライレスポンスを送るための手段とを備える、インターフェースブリッジ回路。
【請求項１７】
前記第1のコアデバイスと前記第2のコアデバイスとの間の前記潜在的なデッドロック状態を検出するための前記手段は、
前記スヌープコマンドが保留中である間に前記第2のコアデバイスから書込みコマンドを受信するための手段と、
前記書込みコマンドと前記スヌープコマンドとの間のアドレス衝突を検出するための手段とを備える、請求項16に記載のインターフェースブリッジ回路。
【請求項１８】
前記インターフェースブリッジ回路が前記第1のコアデバイスから前記スヌープコマンドを受信し、スヌープレスポンスを待つことに応答して、カウントダウンタイマをアクティブ化するための手段と、
前記第2のコアデバイスから前記スヌープレスポンスを受信したことに応答して前記カウントダウンタイマをリセットするための手段とをさらに備え、
前記第1のコアデバイスと前記第2のコアデバイスとの間の前記潜在的なデッドロック状態を検出するための前記手段は、前記カウントダウンタイマが満了したことを検出するための手段を備える、請求項16に記載のインターフェースブリッジ回路。
【請求項１９】
前記カウントダウンタイマは、プログラム可能なカウントダウンタイマを備える、請求項18に記載のインターフェースブリッジ回路。
【請求項２０】
前記第2のコアデバイスからスヌープレスポンスを受信するための手段と、
前記スヌープレスポンスが前記第2のコアデバイスによって与えられた修正されたデータを含むかどうかを判定するための手段と、
前記スヌープレスポンスが前記第2のコアデバイスによって与えられた前記修正されたデータを含むと判定したことに応答して、前記修正されたデータをライトバック動作のために前記第1のコアデバイスに送るための手段と、
前記スヌープレスポンスが前記第2のコアデバイスによって与えられた前記修正されたデータを含まないと判定したことに応答して、前記スヌープレスポンスを破棄するための手段とをさらに備える、請求項16に記載のインターフェースブリッジ回路。
【請求項２１】
前記インオーダーレスポンス非リトライバスコヒーレンシプロトコルは、アドバンストエクステンシブルインターフェース(AXI)コヒーレンシエクステンション(ACE)バスコヒーレンシプロトコルを含む、請求項16に記載のインターフェースブリッジ回路。
【発明の詳細な説明】
【技術分野】
【０００１】
優先出願
本出願は、その全体が参照により本明細書に組み込まれる、2015年9月24日に出願された「AVOIDING DEADLOCKS IN PROCESSOR-BASED SYSTEMS EMPLOYING RETRY AND IN-ORDER-RESPONSE NON-RETRY BUS COHERENCY PROTOCOLS」と題する米国特許出願第14/863,645号の優先権を主張する。
【０００２】
本開示の技術は概して、プロセッサベースシステムにおけるスヌープベースキャッシュコヒーレンシに関し、詳細には、それぞれに異なるバスコヒーレンシプロトコルを使用するデバイス間の潜在的なデッドロック状態を回避することに関する。
【背景技術】
【０００３】
ARMアーキテクチャに基づくシステムオンチップ(SoC)などの多くの従来のプロセッサベースシステムは、複数のコアデバイス(たとえば、非限定的な例として、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、プロセッサクラスタ、および/またはハードウェアアクセラレータ)を含む場合があり、これらのコアデバイスの各々は、共有データにアクセスし、共有データのコアデバイス自体のキャッシュを維持することがある。プロセッサベースシステム内の各コアデバイスのキャッシュに確実に共有データの最新バージョンを含めるために、コアデバイスが、キャッシュ間にキャッシュコヒーレンシを維持するためのバスコヒーレンシプロトコルを実装することがある。あるクラスのバスコヒーレンシプロトコルは、「スヌーピング」と呼ばれる機構に基づく。スヌーピングを使用する場合、各コアデバイスは、バスを監視して、他のコアデバイスから発信され、コアデバイス間で共有されるデータを含むすべての読取り要求および書込み要求を検出する。コアデバイスが、最新のデータを有する読取り要求を検出(または「スヌープ」)した場合、コアデバイスは、要求されたデータを要求元コアデバイスに与えてもよい。コアデバイスがバス上の書込みトランザクションをスヌープした場合、コアデバイスは、そのキャッシュ内の書き込まれたデータのコアデバイスのローカルコピーを無効化する場合がある。このようにして、共有データの一定したビューが、プロセッサベースシステム内のすべてのコアデバイスに与えられる場合がある。
【０００４】
プロセッサベースシステムは、さらなる機能を実現するために、バスコヒーレンシプロトコルの混成をサポートする場合がある。たとえば、プロセッサベースシステムは、インハウスプロプライエタリバスコヒーレンシプロトコルを使用するプロプライエタリコアデバイスと一緒に、特定のバスコヒーレンシプロトコル(たとえば、アドバンストエクステンシブルインターフェース(AXI)コヒーレンシエクステンション(ACE)バスコヒーレンシプロトコル)を実装するARMコアデバイスを含む場合がある。プロプライエタリバスコヒーレンシプロトコルは、より多くのバスエージェントを取り扱うためのより高い性能および能力を使用可能にするために追加された特徴および要件を有する場合がある。1つのそのような要件では、スヌープコマンドを受信したコアデバイスは、適時にスヌープレスポンスを行う(すなわち、スヌープレスポンスと書込み動作などのコアデバイスの独自のアウトバウンド要求の1つとの間に依存性が存在すべきではない)ことが規定される場合がある。プロプライエタリバスコヒーレンシプロトコルは、リトライ機能を実装し、コアデバイスが何らかの理由でスヌープコマンドに対応できない場合にコアデバイスがスヌープコマンドに対するリトライレスポンスを送るのを可能にすることによってこの要件を満たす場合がある。そのようなプロプライエタリバスコヒーレンシプロトコルを本明細書では「リトライバスコヒーレンシプロトコル」と呼ぶことがある。
【０００５】
しかし、ACEプロトコルなどのいくつかのプロトコルは、発信レスポンスを順序正しく処理する比較的単純な非リトライプロトコル(本明細書では「インオーダーレスポンス非リトライバスコヒーレンシプロトコル」とも呼ばれる)である。したがって、インオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装するコアデバイスの場合、あるアドレスへのスヌープコマンドとその同じアドレスへの書込み動作との間に依存性が存在することがある。したがって、同じコヒーレンシドメインにおいてリトライバスコヒーレンシプロトコルとインオーダーレスポンス非リトライバスコヒーレンシプロトコルの両方を使用するプロセッサベースシステムでは、要求のデッドロックが生じることがある。したがって、面積および電力消費量の点で効率的であり、既存のバスコヒーレンシプロトコルまたはコアデバイスに対する内部変更を必要としないデッドロック回避機構を提供することが望ましい。
【発明の概要】
【課題を解決するための手段】
【０００６】
本明細書に開示される態様は、リトライバスコヒーレンシプロトコルおよびインオーダーレスポンス非リトライバスコヒーレンシプロトコルを使用するプロセッサベースシステムにおけるデッドロックを回避することを含む。この点に関して、一態様では、インターフェースブリッジ回路が(たとえば、プロセッサベースシステムの一部として)提供される。インターフェースブリッジ回路は、非限定的な例としてプロプライエタリプロトコルなどのリトライバスコヒーレンシプロトコルを実装する第1のコアデバイスに通信可能に結合される。インターフェースブリッジ回路は、インオーダーレスポンス非リトライプロトコル(たとえば、非限定的な例としてアドバンストエクステンシブルインターフェース(AXI)コヒーレンシエクステンション(ACE)バスコヒーレンシプロトコル)を実装する第2のコアデバイスにも通信可能に結合される。インターフェースブリッジ回路は、第1のコアデバイスからスヌープコマンドを受信し、スヌープコマンドを第2のコアデバイスに転送するように構成される。スヌープコマンドが保留中である間に(すなわち、スヌープレスポンスが第2のコアデバイスから受信される前に)、インターフェースブリッジ回路は、第1のコアデバイスと第2のコアデバイスとの間の潜在的なデッドロック状態を検出する。いくつかの態様では、潜在的なデッドロック状態を検出することは、スヌープコマンドと第2のコアデバイスによって送られる以後の書込み動作との間のアドレス衝突を検出すること、および/またはスヌープコマンドがスヌープレスポンスを待つときにアクティブ化されるカウントダウンタイマの満了を検出することを含んでもよい。インターフェースブリッジ回路は、潜在的なデッドロック状態を検出したことに応答して、第1のコアデバイスにリトライレスポンスを送るように構成される。これによって、第1のコアデバイスは、処理を継続することができ、それによって潜在的なデッドロック状態が解消される。このようにして、インターフェースブリッジ回路は、既存のバスコヒーレンシプロトコルおよびコアデバイスとの適合性を維持しつつ、かつ既存のバスに対する修正を必要とせずに、潜在的なデッドロック状態が検出された直後にそれを解決する。
【０００７】
別の態様では、インターフェースブリッジ回路が提供される。インターフェースブリッジ回路は、リトライバスコヒーレンシプロトコルを実装する第1のコアデバイス、およびインオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装する第2のコアデバイスに通信可能に結合される。インターフェースブリッジ回路は、第1のコアデバイスからスヌープコマンドを受信し、スヌープコマンドを第2のコアデバイスに転送するように構成される。インターフェースブリッジ回路は、スヌープコマンドが保留中である間に第1のコアデバイスと第2のコアデバイスとの間の潜在的なデッドロック状態を検出するようにさらに構成される。インターフェースブリッジ回路はまた、潜在的なデッドロック状態を検出したことに応答して、第1のコアデバイスにリトライレスポンスを送るように構成される。
【０００８】
別の態様では、プロセッサベースシステムが提供される。プロセッサベースシステムは、リトライバスコヒーレンシプロトコルを実装する第1のコアデバイスと、インオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装する第2のコアデバイスとを備える。プロセッサベースシステムは、第1のコアデバイスおよび第2のコアデバイスに通信可能に結合されたインターフェースブリッジ回路をさらに備える。インターフェースブリッジ回路は、第1のコアデバイスからスヌープコマンドを受信し、スヌープコマンドを第2のコアデバイスに転送するように構成される。インターフェースブリッジ回路は、スヌープコマンドが保留中である間に第1のコアデバイスと第2のコアデバイスとの間の潜在的なデッドロック状態を検出するようにさらに構成される。インターフェースブリッジ回路はまた、潜在的なデッドロック状態を検出したことに応答して、第1のコアデバイスにリトライレスポンスを送るように構成される。
【０００９】
別の態様では、インターフェースブリッジ回路が提供される。インターフェースブリッジ回路は、リトライバスコヒーレンシプロトコルを実装する第1のコアデバイスからスヌープコマンドを受信するための手段を備える。インターフェースブリッジ回路は、インオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装する第2のコアデバイスにスヌープコマンドを転送するための手段をさらに備える。インターフェースブリッジ回路は、スヌープコマンドが保留中である間に第1のコアデバイスと第2のコアデバイスとの間の潜在的なデッドロック状態を検出するための手段も備える。インターフェースブリッジ回路は、潜在的なデッドロック状態を検出したことに応答して、第1のコアデバイスにリトライレスポンスを送るための手段をさらに備える。
【００１０】
別の態様では、プロセッサベースシステムのIPコア間のデッドロックを回避するための方法が提供される。この方法は、プロセッサベースシステムのインターフェースブリッジ回路によって、リトライバスコヒーレンシプロトコルを実装する第1のコアデバイスからスヌープコマンドを受信するステップを含む。この方法は、インオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装する第2のコアデバイスにスヌープコマンドを転送するステップをさらに含む。この方法は、スヌープコマンドが保留中である間に第1のコアデバイスと第2のコアデバイスとの間の潜在的なデッドロック状態を検出するステップも含む。この方法は、潜在的なデッドロック状態を検出したことに応答して、第1のコアデバイスにリトライレスポンスを送るステップをさらに含む。
【図面の簡単な説明】
【００１１】
【図１】リトライバスコヒーレンシプロトコルを実装する第1のコアデバイスと、インオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装する第2のコアデバイスとの間にデッドロックが生じる場合がある例示的なプロセッサベースシステムのブロック図である。
【図２】デッドロック状態を生じさせる場合がある図1における第1のコアデバイスと第2のコアデバイスとの間の例示的な通信フローを示すブロック図である。
【図３】リトライバスコヒーレンシプロトコルを実装する第1のコアデバイスと、インオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装する第2のコアデバイスとの間のデッドロックを回避するためのインターフェースブリッジ回路を構成する例示的なプロセッサベースシステムのブロック図である。
【図４Ａ】コアデバイス間のデッドロックを回避するためのインターフェースブリッジ回路と図3のコアデバイスとの間の例示的な通信フローを示すブロック図である。
【図４Ｂ】コアデバイス間のデッドロックを回避するためのインターフェースブリッジ回路と図3のコアデバイスとの間の例示的な通信フローを示すブロック図である。
【図５Ａ】コアデバイス間のデッドロックを回避するための図3のインターフェースブリッジ回路の例示的な動作を示すフローチャートである。
【図５Ｂ】コアデバイス間のデッドロックを回避するための図3のインターフェースブリッジ回路の例示的な動作を示すフローチャートである。
【図６】図3のインターフェースブリッジ回路を含むことができる例示的なプロセッサベースシステムのブロック図である。
【発明を実施するための形態】
【００１２】
次に、図面を参照して、本開示のいくつかの例示的な態様について説明する。「例示的」という語は、本明細書では「一例、事例、または例示としての働きをすること」を意味するために用いられる。本明細書で「例示的」と説明される任意の態様は、必ずしも他の態様よりも好ましい、または有利なものと解釈されるべきではない。
【００１３】
本明細書で開示する態様は、リトライバスコヒーレンシプロトコルおよびインオーダーレスポンス非リトライバスコヒーレンシプロトコルを使用するプロセッサベースシステムにおけるデッドロックを回避することを含む。リトライバスコヒーレンシプロトコルおよびインオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装するコアデバイス間のデッドロックを回避するための動作について説明する前に、そのようなコアデバイス間にデッドロック状態が生じる場合がある例示的な状況について説明する。この点に関して、図1および図2が示されている。図1は、コアデバイス間にデッドロックが生じる場合がある例示的なプロセッサベースシステムを示し、一方、図2は、デッドロック状態を生じさせる場合があるコアデバイス間の例示的な通信フローを示す。
【００１４】
図1では、デッドロックが生じる場合がある例示的なプロセッサベースシステム100は、コアデバイス102とコアデバイス104とを含む。いくつかの態様では、コアデバイス102、104の各々は、非限定的な例として、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、プロセッサクラスタ、および/またはハードウェアアクセラレータを備えてもよい。プロセッサベースシステム100のコアデバイス102、104は、共有データ(図示せず)を、コアデバイス102、104によってより迅速にアクセスできるようにローカルに記憶するのを可能にする対応するキャッシュ106、108を含む。
【００１５】
図1のコアデバイス102、104は、バス110および111ならびにブリッジ112を介して互いに通信可能に結合される。このようにして、コアデバイス102、104の各々は、他のコアデバイスによって送られた読取り要求(図示せず)をスヌープする場合があり、スヌープレスポンスを行いならびに/あるいは介入データを提供することがある。キャッシュ106、108の各々は、共有データのローカルコピーを記憶してもよく、これらのローカルコピーは、コアデバイス102、104のいずれかによって読み取りならびに/あるいは修正することができる。したがって、キャッシュ106、108に記憶された共有データが、コアデバイス102、104から確実に一定に見えるように、コアデバイス102、104の各々は、スヌープベースバスコヒーレンシプロトコルを実装する。図1の例では、コアデバイス102は、プロプライエタリバスコヒーレンシプロトコルなどのリトライバスコヒーレンシプロトコルを実装する。コアデバイス104は、インオーダーレスポンス非リトライバスプロトコル(たとえば、非限定的な例としてアドバンストエクステンシブルインターフェース(AXI)コヒーレンシエクステンション(ACE)バスコヒーレンシプロトコル)を実装する。コアデバイス104がACEプロトコルを実装する態様では、コアデバイス104は、アドレス書込み(AW)チャネル114、コヒーレンシレスポンス(CR)チャネル116、およびアドレスコヒーレンシ(AC)チャネル118を備えてもよい。アドレス書込みチャネル114は、書込みコマンドを送るためにコアデバイス104によって使用されてもよい。コヒーレンシレスポンスチャネル116は、スヌープ要求に応答するためにコアデバイス104によって使用されてもよく、一方、アドレスコヒーレンシチャネル118は、スヌープ要求を送るためにコアデバイス104によって使用されてもよい。
【００１６】
次に、図2を参照するとわかるように、本明細書で説明する例示的な通信フローの結果としてコアデバイス102とコアデバイス104との間のデッドロック状態が生じる場合がある。図2では、コアデバイス102が、メモリアドレスAを有するスヌープコマンド(「SNOOP CMD」)200をブリッジ112を介してコアデバイス104に送る。コアデバイス104は、スヌープコマンド200を処理する前に、同じくメモリアドレスAを有する書込みコマンド(「WRITE CMD」)202をブリッジ112を介してコアデバイス102に非同期的に送る。コアデバイス104によって実装されるインオーダーレスポンス非リトライバスコヒーレンシプロトコルの依存性要件に起因して、コアデバイス104は、要素206によって示されるように、書込みコマンド202の処理が完了するまでスヌープコマンド200に対するスヌープレスポンス204を生成しない。しかし、書込みコマンド202のメモリアドレスAがまだ保留中のスヌープコマンド200と同じであること(すなわち、アドレスハザード)をコアデバイス102が検出するので、コアデバイス102は、要素208によって示されるように、スヌープコマンド200に対するスヌープレスポンス204が受信されるまで書込みコマンド202を処理しない。したがって、コアデバイス102、104の各々が、次に進む前に他方のコアデバイスが動作を完了するのを待っているのでデッドロック状態が生じる。いくつかの態様では、書込みコマンド202が内部バッファ(図示せず)において、コアデバイス104によって処理されている他のコマンドの後ろで「動けなくなった」場合にもデッドロックが生じることがある。
【００１７】
したがって、リトライバスコヒーレンシプロトコルおよびインオーダーレスポンス非リトライバスコヒーレンシプロトコルを使用するコアデバイス間のデッドロックを回避するために、コアデバイス間の相互接続部としてインターフェースブリッジ回路が設けられる。この点に関して、図3は、インターフェースブリッジ回路302を含む例示的なプロセッサベースシステム300を示す。プロセッサベースシステム300は、他の要素の中でも、公知のデジタル論理素子、半導体回路、処理コア、および/またはメモリ構造、またはそれらの組合せのうちのいずれか1つを包含してもよい。本明細書で説明する態様は、要素の任意の特定の構成に限定されず、開示される技法は、半導体ダイまたはパッケージ上の様々な構造およびレイアウトに容易に拡張される場合がある。
【００１８】
インターフェースブリッジ回路302は、バス308および309を介してそれぞれ、コアデバイス304およびコアデバイス306に通信可能に結合される。コアデバイス304、306の各々は、非限定的な例として、CPU、GPU、プロセッサクラスタ、および/またはハードウェアアクセラレータを備えてもよい。いくつかの態様では、プロセッサベースシステム300は、図3に示すコアデバイスよりも多くのコアデバイスを含んでもよく、コアデバイス間の相互接続が図3に示す接続とは異なる場合があることを理解されたい。
【００１９】
コアデバイス304、306は、共有データのローカルコピー(図示せず)を記憶するための対応するキャッシュ310、312を備える。キャッシュ310、312は、コアデバイス304、306のいずれによっても読み取りならびに/あるいは修正することができる共有データのローカルコピーを記憶する場合があるので、コアデバイス304、306の各々はスヌープベースバスコヒーレンシプロトコルを実装して、共有データの一定したビューがコアデバイス304、306に確実に提示されるようにする。図3では、コアデバイス304がリトライバスコヒーレンシプロトコル(プロプライエタリバスコヒーレンシプロトコルなど)を実装し、一方、コアデバイス306は、インオーダーレスポンス非リトライバスコヒーレンシプロトコル(たとえば、非限定的な例としてACEプロトコル)を実装する。コアデバイス306がACEプロトコルを実装する態様によれば、コアデバイス306は、アドレス書込み(AW)チャネル314、コヒーレンシレスポンス(CR)チャネル316、およびアドレスコヒーレンシ(AC)チャネル318を備えてもよく、これらのチャネルの各々が、図1および図2の対応する要素と同じ機能を有する。
【００２０】
インターフェースブリッジ回路302は、コアデバイス304によって使用されるリトライバスコヒーレンシプロトコルおよびコアデバイス306によって使用されるインオーダーレスポンス非リトライバスコヒーレンシプロトコルのそれぞれに異なる要件によって生じるコアデバイス304、306間の潜在的なデッドロック状態を検出するように構成される。いくつかの態様では、インターフェースブリッジ回路302は、コアデバイス304によって発行された書込みコマンド(図示せず)とコアデバイス306によって発行されたスヌープコマンド(図示せず)との間のアドレス衝突を検出することによって潜在的なデッドロック状態を検出してもよい。いくつかの態様では、インターフェースブリッジ回路302は、コアデバイス304からのスヌープコマンドがスヌープレスポンスを待っているときにインターフェースブリッジ回路302によってアクティブ化されたカウントダウンタイマ320が満了したことを検出することによって潜在的なデッドロック状態を検出してもよい。カウントダウンタイマ320は、コアデバイス304からの保留中のスヌープコマンドに対応するコアデバイス306からのスヌープレスポンス(図示せず)を受信したときにインターフェースブリッジ回路302によってリセットされてもよい。カウントダウンタイマ320は、いくつかの態様ではあらかじめ設定されたタイマ値を使用してもよく、一方、いくつかの態様によれば、カウントダウンタイマ320は、プログラムによって設定されたタイマ値を使用するプログラム可能なカウントダウンタイマである。
【００２１】
インターフェースブリッジ回路302は、図4Aおよび図4Bに関してより詳細に説明するように、(たとえば、アドレス衝突またはカウントダウンタイマ320の満了を検出することによって)潜在的なデッドロック状態を検出したことに応答して、コアデバイス304にリトライレスポンスを送るように構成される。このようにして、コアデバイス304は、処理を継続することができ、それによって潜在的なデッドロック状態が解消される。非限定的な例として、スヌープコマンドと書込みコマンドとの間のアドレス衝突の結果としてコアデバイス304にリトライレスポンスが送られたときに、コアデバイス304および/またはバス308は、保留中のスヌープコマンドに対する依存性を解消することができてもよく、書込みコマンドの処理を進めてもよい。コアデバイス304によって書込みコマンドが完了した後、コアデバイス306は、元のスヌープコマンドに自由に応答してもよく、したがって、潜在的なデッドロック状態を回避する。同様に、カウントダウンタイマ320が満了したことによってコアデバイス304にリトライレスポンスが送られる態様では、コアデバイス304は処理を継続することができ、一方、コアデバイス306はその進行中の動作を完了する。
【００２２】
図4Aおよび図4Bは、コアデバイス304、306間のデッドロックを回避するための、インターフェースブリッジ回路302と図3のコアデバイス304、306との間の例示的な通信フローを示すために提示されている。説明を明快にするために、図4Aおよび図4Bについて説明する際に、図3の要素が参照される。さらに、図3のバス308は、図4Aおよび図4Bでは省略される。
【００２３】
図4Aでは、メモリアドレスAへのスヌープコマンド(「SNOOP CMD」)400がコアデバイス304からインターフェースブリッジ回路302に送られ、インターフェースブリッジ回路302はスヌープコマンド400をコアデバイス306に転送する。いくつかの態様では、コアデバイス306は、同じメモリアドレスAへの書込みコマンド(「WRITE CMD」)402をインターフェースブリッジ回路302に送ってもよい。そのような態様では、インターフェースブリッジ回路302は、スヌープコマンド400と書込みコマンド402との間にアドレスハザードが存在すると判定してもよく、したがって、コアデバイス304、306間に潜在的なデッドロック状態が存在すると判定してもよい。いくつかの態様では、インターフェースブリッジ回路302がスヌープコマンド400を受信し、スヌープコマンド400に対するスヌープレスポンス(図示せず)についてのインターフェースブリッジ回路302の待機状態を開始したときに、カウントダウンタイマ320がアクティブ化されてもよい。潜在的なデッドロック状態は、コアデバイス306からスヌープレスポンスが受信される前にカウントダウンタイマ320が満了したことをインターフェースブリッジ回路302が検出したときに検出される。この潜在的なデッドロック状態は、書込みコマンド402が、コアデバイス306によって処理されている他のコマンド(図示せず)の後ろで「動けなくなっている」状況で生じる場合がある。インターフェースブリッジ回路302は、コアデバイス304、306間の潜在的なデッドロック状態を検出すると、コアデバイス304にリトライレスポンス404を送る。このようにして、コアデバイス304は、処理を継続することができ、それによって潜在的なデッドロック状態が解消される。
【００２４】
図4Bを見るとわかるように、いくつかの態様では、インターフェースブリッジ回路302は、コアデバイス304からのスヌープコマンド400に対応するコアデバイス306からのスヌープレスポンス406を受信してもよい。カウントダウンタイマ320が満了する前にインターフェースブリッジ回路302によってスヌープレスポンス406が受信された場合、カウントダウンタイマ320がリセットされてもよい。スヌープレスポンス406は、潜在的なデッドロック状態が検出され、コアデバイス304にリトライレスポンス404が送られた後に受信されてもよい。この間にコアデバイス304が同じスヌープコマンド400をリトライした場合、リトライされたスヌープコマンド400は、元のスヌープコマンド400がインターフェースブリッジ回路302によって完了されていない場合には元のスヌープコマンド400と同様に扱われる。スヌープレスポンス406が修正されたデータ408(すなわち、「ダーティ」データ)を含む場合、修正されたデータ408が、スヌープコマンド400に対する応答としてコアデバイス304に与えられてもよい。コアデバイス304は次いで、修正されたデータ408を使用してライトバック動作(図示せず)を実行してもよい。しかし、スヌープレスポンス406が修正されたデータ408を含まない場合、インターフェースブリッジ回路302はスヌープレスポンス406を破棄してもよい。
【００２５】
第1のコアデバイス304と第2のコアデバイス306との間のデッドロックを回避するための図3のインターフェースブリッジ回路302の例示的な動作を示すために、図5Aおよび図5Bが提示されている。説明を明快にするために、図5Aおよび図5Bについて説明する際に、図3、図4A、および図4Bの要素が参照される。図5Aでは、動作が開始し、プロセッサベースシステム300のインターフェースブリッジ回路302が、リトライバスコヒーレンシプロトコルを実装する第1のコアデバイス304からスヌープコマンド400を受信する(ブロック500)。この点に関して、インターフェースブリッジ回路302は、本明細書では「リトライバスコヒーレンシプロトコルを実装する第1のコアデバイスからスヌープコマンドを受信するための手段」と呼ばれることがある。いくつかの態様では、第1のコアデバイス304によって実装されるリトライバスコヒーレンシプロトコルは、スヌープコマンドに対するリトライレスポンスをサポートするプロプライエタリバスプロトコルを含んでもよい。
【００２６】
インターフェースブリッジ回路302が、潜在的なデッドロック状態を検出するためのカウントダウンタイマ320を備える態様では、インターフェースブリッジ回路302は、第1のコアデバイス304からスヌープコマンド400を受信し、スヌープコマンド400に対するスヌープレスポンス406についてのインターフェースブリッジ回路302の待機状態を開始したことに応答してカウントダウンタイマ320をアクティブ化してもよい(ブロック502)。したがって、インターフェースブリッジ回路302は、本明細書では「スヌープレスポンスを待つ第1のコアデバイスからのスヌープコマンドに応答してカウントダウンタイマをアクティブ化するための手段」と呼ばれることがある。インターフェースブリッジ回路302は次いで、インオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装するプロセッサベースシステム300の第2のコアデバイス306にスヌープコマンド400を転送する(ブロック504)。したがって、インターフェースブリッジ回路302は、本明細書では「インオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装する第2のコアデバイスにスヌープコマンドを転送するための手段」と呼ばれることがある。いくつかの態様によれば、第2のコアデバイス306によって実装されるインオーダーレスポンス非リトライバスコヒーレンシプロトコルは、ACEバスコヒーレンシプロトコルを含んでもよい。
【００２７】
インターフェースブリッジ回路302は次に、スヌープコマンド400が保留中である間に第1のコアデバイス304と第2のコアデバイス306との間の潜在的なデッドロック状態を検出する(ブロック506)。この点に関して、インターフェースブリッジ回路302は、本明細書では「スヌープコマンドが保留中である間に第1のコアデバイスと第2のコアデバイスとの間の潜在的なデッドロック状態を検出するための手段」と呼ばれることがある。いくつかの態様では、潜在的なデッドロック状態を検出するためのブロック506の動作は、スヌープコマンド400が保留中である間にインターフェースブリッジ回路302が第2のコアデバイス306から書込みコマンド402を受信することを含んでもよい(ブロック508)。したがって、インターフェースブリッジ回路302は、本明細書では「スヌープコマンドが保留中である間に第2のコアデバイスから書込みコマンドを受信するための手段」と呼ばれることがある。インターフェースブリッジ回路302は次いで、書込みコマンド402とスヌープコマンド400との間のアドレス衝突を検出してもよい(ブロック510)。したがって、インターフェースブリッジ回路302は、本明細書では「書込みコマンドとスヌープコマンドとの間のアドレス衝突を検出するための手段」と呼ばれることがある。いくつかの態様では、潜在的なデッドロック状態を検出するためのブロック506の動作は、カウントダウンタイマ320が満了したことをインターフェースブリッジ回路302が検出することを含んでもよい(ブロック512)。この点に関して、インターフェースブリッジ回路302は、本明細書では「カウントダウンタイマが満了したことを検出するための手段」と呼ばれることがある。
【００２８】
インターフェースブリッジ回路302は、潜在的なデッドロック状態を検出したことに応答して、第1のコアデバイス304にリトライレスポンス404を送る(ブロック514)。したがって、インターフェースブリッジ回路302は、本明細書では「潜在的なデッドロック状態を検出したことに応答して、第1のコアデバイスにリトライレスポンスを送るための手段」と呼ばれることがある。インターフェースブリッジ回路302は、第1のコアデバイス304にリトライレスポンス404を送ることによって、第1のコアデバイス304が処理を継続するのを可能にし、したがって、第1のコアデバイス304と第2のコアデバイス306との間の潜在的なデッドロック状態を解消する。いくつかの態様では、処理は次に、図5Bのブロック516において再開してもよい。
【００２９】
次に図5Bを参照するとわかるように、いくつかの態様によるインターフェースブリッジ回路302は、第2のコアデバイス306からスヌープレスポンス406を受信する場合がある(ブロック516)。したがって、インターフェースブリッジ回路302は、本明細書では「第2のコアデバイスからスヌープレスポンスを受信するための手段」と呼ばれることがある。インターフェースブリッジ回路302は、第2のコアデバイス306からスヌープレスポンス406を受信したときに、カウントダウンタイマ320をリセットしてもよい(ブロック518)。この点に関して、インターフェースブリッジ回路302は、本明細書では「第2のコアデバイスからスヌープレスポンスを受信したことに応答してカウントダウンタイマをリセットするための手段」と呼ばれることがある。いくつかの態様では、スヌープレスポンス406は、潜在的なデッドロック状態が検出され、第1のコアデバイス304にリトライレスポンス404が送られた後に受信されてもよい。この間に第1のコアデバイス304が同じスヌープコマンド400をリトライした場合、リトライされたスヌープコマンド400は、元のスヌープコマンド400がインターフェースブリッジ回路302によって完了されていない場合には元のスヌープコマンド400と同様に扱われる。
【００３０】
インターフェースブリッジ回路302は次いで、スヌープレスポンス406が第2のコアデバイス306によって与えられた修正されたデータ408を含むかどうかを判定してもよい(ブロック520)。したがって、インターフェースブリッジ回路302は、本明細書では「スヌープレスポンスが第2のコアデバイスによって与えられた修正されたデータを含むかどうかを判定するための手段」と呼ばれることがある。インターフェースブリッジ回路302は、決定ブロック520において、スヌープレスポンス406が修正されたデータ408を含むと判定した場合、修正されたデータ408をライトバック動作のために第1のコアデバイス304に送ってもよい(ブロック522)。したがって、インターフェースブリッジ回路302は、本明細書では「スヌープレスポンスが第2のコアデバイスによって与えられた修正されたデータを含むと判定したことに応答して、修正されたデータをライトバック動作のために第1のコアデバイスに送るための手段」と呼ばれることがある。しかし、インターフェースブリッジ回路302は、決定ブロック520において、スヌープレスポンス406が修正されたデータ408を含まないと判定した場合、スヌープレスポンス406を破棄してもよい(ブロック524)。この点に関して、インターフェースブリッジ回路302は、本明細書では「スヌープレスポンスが第2のコアデバイスによって与えられた修正されたデータを含まないと判定したことに応答して、スヌープレスポンスを破棄するための手段」と呼ばれることがある。
【００３１】
本明細書で開示された態様によるリトライバスコヒーレンシプロトコルおよびインオーダーレスポンス非リトライバスコヒーレンシプロトコルを使用するプロセッサベースシステムにおけるデッドロックを回避することは、任意のプロセッサベースデバイスにおいて実現されてもよく、あるいは任意のプロセッサベースデバイスに組み込まれてもよい。例としては、限定ではないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、携帯電話、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤおよび自動車が含まれる。
【００３２】
この点に関して、図6は、図3に示すインターフェースブリッジ回路(IBC)302を使用することができるプロセッサベースシステム600の一例を示す。この例では、プロセッサベースシステム600は、図3のプロセッサベースシステム300に対応してもよい。プロセッサベースシステム600は、各々が1つまたは複数のプロセッサ604(0)〜604(X)を含む1つまたは複数のCPU602(0)〜602(X)を含む。CPU602(0)〜602(X)はそれぞれ、コアデバイス102および104に対応してもよい。CPU602(0)〜602(X)は、一時的に記憶されたデータに迅速にアクセスできるようにプロセッサ604(0)〜604(X)に結合されたキャッシュメモリ606(0)〜606(X)を有する場合がある。CPU602(0)〜602(X)は、システムバス608に結合され、プロセッサベースシステム600内に含まれるマスタデバイスとスレーブデバイスとを相互結合することができる。よく知られているように、CPU602(0)〜602(X)は、システムバス608を介してアドレス情報、制御情報、およびデータ情報を交換することによってこれらの他のデバイスと通信する。たとえば、CPU602(0)〜602(X)は、スレーブデバイスの一例として、メモリコントローラ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つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成)として実装されてもよい。
【００３７】
本明細書の例示的な態様のいずれかにおいて説明した動作ステップが、例および説明として記載されていることにも留意されたい。説明した動作は、図示したシーケンス以外の数多くの異なるシーケンスで実行されてよい。さらに、単一の動作ステップにおいて説明した動作は、実際にはいくつかの異なるステップにおいて実行されてよい。追加として、例示的な態様で説明した1つまたは複数の動作ステップは組み合わせられてよい。当業者にとって容易に明らかであるように、フローチャート図に示す動作ステップが数多くの異なる修正を受けてもよいことを理解されたい。情報および信号が様々な異なる技術および技法のいずれを使用して表されてもよいことも当業者は理解されよう。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁気粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表現されてもよい。
【００３８】
本開示の前の説明は、いかなる当業者も本開示を作製または使用することが可能になるように提供される。本開示の様々な修正が、当業者に容易に明らかになり、本明細書で規定する一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用され得る。したがって、本開示は、本明細書で説明した例および設計に限定されるものでなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲が与えられるべきである。
【符号の説明】
【００３９】
100  プロセッサベースシステム
102  コアデバイス
104  コアデバイス
106  キャッシュ
108  キャッシュ
110  バス
111  バス
112  ブリッジ
114  アドレス書込み(AW)チャネル
116  コヒーレンシレスポンス(CR)チャネル
118  アドレスコヒーレンシ(AC)チャネル
200  スヌープコマンド(「SNOOP CMD」)
202  書込みコマンド(「WRITE CMD」)
204  スヌープレスポンス
206  要素
208  要素
300  プロセッサベースシステム
302  インターフェースブリッジ回路
304  コアデバイス
306  コアデバイス
308  バス
309  バス
310  キャッシュ
312  キャッシュ
314  アドレス書込み(AW)チャネル
316  コヒーレンシレスポンス(CR)チャネル
318  アドレスコヒーレンシ(AC)チャネル
320  カウントダウンタイマ
400  スヌープコマンド(「SNOOP CMD」)
402  書込みコマンド(「WRITE CMD」)
404  リトライレスポンス
406  スヌープレスポンス
408  修正されたデータ
600  プロセッサベースシステム
602(0)〜602(X)  CPU
604(0)〜604(X)  プロセッサ
606(0)〜606(X)  キャッシュメモリ
608  システムバス
610  メモリコントローラ
612  メモリシステム
614  入力デバイス
616  出力デバイス
618  ネットワークインターフェースデバイス
620  ディスプレイコントローラ
622  ネットワーク
624(0〜N)  メモリユニット
626  ディスプレイ
628  ビデオプロセッサ
【要約】
本明細書で開示する態様は、リトライバスコヒーレンシプロトコルおよびインオーダーレスポンス非リトライバスコヒーレンシプロトコルを使用するプロセッサベースシステムにおけるデッドロックを回避することを含む。この点に関して、インターフェースブリッジ回路は、リトライバスコヒーレンシプロトコルを実装する第1のコアデバイス、およびインオーダーレスポンス非リトライバスコヒーレンシプロトコルを実装する第2のコアデバイスに通信可能に結合される。インターフェースブリッジ回路は、第1のコアデバイスからスヌープコマンドを受信し、スヌープコマンドを第2のコアデバイスに転送する。スヌープコマンドが保留中である間、インターフェースブリッジ回路は、第1のコアデバイスと第2のコアデバイスとの間の潜在的なデッドロック状態を検出する。インターフェースブリッジ回路は、潜在的なデッドロック状態を検出したことに応答して、第1のコアデバイスにリトライレスポンスを送るように構成される。これによって、第1のコアデバイスは、処理を継続し、それによって潜在的なデッドロック状態を解消することが可能になる。【図１】
0006393013.tif 000002
【図２】
0006393013.tif 000003
【図３】
0006393013.tif 000004
【図４Ａ】
0006393013.tif 000005
【図４Ｂ】
0006393013.tif 000006
【図５Ａ】
0006393013.tif 000007
【図５Ｂ】
0006393013.tif 000008
【図６】
0006393013.tif 000009