(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-24
(45)【発行日】2022-12-02
(54)【発明の名称】プローブ割り込み配信
(51)【国際特許分類】
G06F 13/24 20060101AFI20221125BHJP
G06F 9/54 20060101ALI20221125BHJP
G06F 12/0815 20160101ALI20221125BHJP
【FI】
G06F13/24 310A
G06F13/24 310Z
G06F9/54 E
G06F12/0815
(21)【出願番号】P 2021510054
(86)(22)【出願日】2019-06-26
(86)【国際出願番号】 US2019039288
(87)【国際公開番号】W WO2020040874
(87)【国際公開日】2020-02-27
【審査請求日】2021-04-13
(32)【優先日】2018-08-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ヴィドヒャナサン カリヤナスンダラム
(72)【発明者】
【氏名】エリック クリストファー モートン
(72)【発明者】
【氏名】ブライアン ピー. ブルッサール
(72)【発明者】
【氏名】ポール ジェームズ モイヤー
(72)【発明者】
【氏名】ウィリアム ルイス ウォーカー
【審査官】局 成矢
(56)【参考文献】
【文献】米国特許出願公開第2002/0083254(US,A1)
【文献】米国特許出願公開第2016/0117247(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/24
G06F 9/54
G06F 12/0815
(57)【特許請求の範囲】
【請求項1】
1つ以上の処理ノードと、
制御ユニットと、
前記1つ以上の処理ノードと前記制御ユニットとの間でコヒーレンシプローブメッセージを伝達するように構成されたコヒーレンシプローブネットワークと、を備えるシステムであって、
前記制御ユニットは、
割り込みを検出したことに応じて、コヒーレンシプローブメッセージと互換性を有する割り込みメッセージを生成することと、
前記コヒーレンシプローブネットワークを介して、前記割り込みメッセージをターゲットへの経路に送信することと、
を行うように構成されて
おり、
前記システムは、1つ以上のキャッシュサブシステムを備え、各キャッシュサブシステムは、埋め込まれた符号化に基づいて、受信したメッセージがコヒーレンシプローブメッセージであるか割り込みメッセージであるかを判別するように構成されている、
システム。
【請求項2】
前記制御ユニットは、
コヒーレンシプローブメッセージの第1の符号化を生成することと、
前記コヒーレンシプローブネットワークを介して送信されるコヒーレンシプローブメッセージの所定のフィールドに前記第1の符号化を埋め込むことと、
割り込みメッセージの第2の符号化を生成することであって、前記第2の符号化は前記第1の符号化と異なる、ことと、
前記コヒーレンシプローブネットワークを介して送信される割り込みメッセージの所定のフィールドに前記第2の符号化を埋め込むことと、
を行うように構成されている、
請求項1のシステム。
【請求項3】
前記割り込みメッセージは、応答を送信する必要がないことを示す符号化を応答フィールドに含む、
請求項1のシステム。
【請求項4】
前記
制御ユニットは、前記コヒーレンシプローブネットワークによって使用されるコヒーレンシプローブメッセージのフォーマットと互換性を有するハイブリッドメッセージのフォーマットで前記割り込みメッセージを生成するように構成されている、
請求項1のシステム。
【請求項5】
各キャッシュサブシステムは、前記受信したメッセージが割り込みメッセージであると判別したことに応じて、各ノードの複数のプロセッサコアに割り込みメッセージをブロードキャストするように構成されている、
請求項4のシステム。
【請求項6】
前記割り込みメッセージのフィールドは、前記コヒーレンシプローブメッセージのフィールドと一致するように揃えられている、
請求項1のシステム。
【請求項7】
前記制御ユニットは、割り込み配信インジケータを用いて前記割り込みメッセージのコヒーレンシプローブアクションフィールドを符号化するように構成されている、
請求項1のシステム。
【請求項8】
制御ユニットが、割り込みを検出したことに応じて、コヒーレンシプローブメッセージと互換性を有する割り込みメッセージを生成することと、
コヒーレンシプローブネットワークを介して、前記割り込みメッセージをターゲットへの経路に送信することであって、前記コヒーレンシプローブネットワークは、1つ以上の処理ノードと前記制御ユニットとの間でコヒーレンシプローブを搬送するように構成されている、ことと、
キャッシュサブシステムが、埋め込まれた符号化に基づいて、受信したメッセージがコヒーレンシプローブメッセージであるか割り込みメッセージであるかを判別することと、を含む、
方法。
【請求項9】
コヒーレンシプローブメッセージの第1の符号化を生成することと、
前記コヒーレンシプローブネットワークを介して送信されるコヒーレンシプローブメッセージの所定のフィールドに前記第1の符号化を埋め込むことと、
割り込みメッセージの第2の符号化を生成することであって、前記第2の符号化は前記第1の符号化と異なる、ことと、
前記コヒーレンシプローブネットワークを介して送信される割り込みメッセージの所定のフィールドに前記第2の符号化を埋め込むことと、を含む、
請求項8の方法。
【請求項10】
前記割り込みメッセージは、応答を送信する必要がないことを示す符号化を応答フィールドに含む、
請求項8の方法。
【請求項11】
前記制御ユニットが、前記コヒーレンシプローブネットワークによって使用されるコヒーレンシプローブメッセージのフォーマットと互換性を有するハイブリッドメッセージのフォーマットで前記割り込みメッセージを生成することを含む、
請求項8の方法。
【請求項12】
前記キャッシュサブシステムが、前記メッセージが割り込みメッセージであると判別したことに応じて、各ノードの複数のプロセッサコアに割り込みメッセージをブロードキャストすることを含む、
請求項11の方法。
【請求項13】
前記割り込みメッセージのフィールドは、前記コヒーレンシプローブメッセージのフィールドと一致するように揃えられている、
請求項8の方法。
【請求項14】
割り込み配信インジケータを用いて、前記割り込みメッセージのコヒーレンシプローブアクションフィールドを符号化することを含む、
請求項8の方法。
【請求項15】
複数のプロセッサコアと、
キャッシュサブシステムと、を備える装置であって、
前記装置は、
割り込みを検出したことに応じて、コヒーレンシプローブメッセージと互換性を有する割り込みメッセージを生成することと、
コヒーレンシプローブネットワークを介して、前記割り込みメッセージをターゲットデバイスへの経路に送信すること
であって、前記コヒーレンシプローブネットワークは、前記装置と1つ以上のコヒーレントエージェントとの間でコヒーレンシプローブを搬送するように構成されている、ことと、
埋め込まれた符号化に基づいて、受信したメッセージがコヒーレンシプローブメッセージであるか割り込みメッセージであるかを判別することと、
を行うように構成されて
いる、
装置。
【請求項16】
前記装置は、
コヒーレンシプローブメッセージの第1の符号化を生成することと、
前記コヒーレンシプローブネットワークを介して送信されるコヒーレンシプローブメッセージの所定のフィールドに前記第1の符号化を埋め込むことと、
割り込みメッセージの第2の符号化を生成することであって、前記第2の符号化は前記第1の符号化と異なる、ことと
前記コヒーレンシプローブネットワークを介して送信される割り込みメッセージの所定のフィールドに前記第2の符号化を埋め込むことと、
を行うように構成されている、
請求項15の装置。
【請求項17】
前記割り込みメッセージは、応答を送信する必要がないことを示す符号化を応答フィールドに含む、
請求項15の装置。
【請求項18】
前記装置は、
前記コヒーレンシプローブネットワークによって使用されるコヒーレンシプローブメッセージのフォーマットと互換性を有するハイブリッドメッセージのフォーマットで前記割り込みメッセージを生成するように構成されている、
請求項15の装置。
【請求項19】
前記装置は、前記受信したメッセージが割り込みメッセージであると判別したことに応じて、各ノードの複数のプロセッサコアに割り込みメッセージをブロードキャストするように構成されている、
請求項18の装置。
【請求項20】
前記割り込みメッセージのフィールドは、前記コヒーレンシプローブメッセージのフィールドと一致するように揃えられている、
請求項15の装置。
【発明の詳細な説明】
【背景技術】
【0001】
概して、割り込み又は例外は、命令の実行を、現在実行している命令フローから別の命令フローに変更するイベントである。割り込みは、典型的には、プロセッサ又はプロセッサに結合されたデバイスによって生成される。典型的な割り込み処理メカニズムは、割り込まれるプロセッサのプログラム制御フローを、割り込みハンドラに変更する。CPU割り込みへの入力/出力(I/O)デバイス及び中央処理装置(CPU)は、概して、割り込みコントローラのプログラミング又は配信される割り込みのタイプに基づいて、コンピューティングシステム内の任意のCPUスレッドに配信される必要がある。歴史的に、割り込みをコアに配信するには、サイドバンドワイヤがよく使用されていた。サイドバンドワイヤは、割り込みタイプ及び割り込みベクトルを各コアに配信するために、コア毎に専用的なワイヤである。しかしながら、サイドバンドワイヤは、コアの数が増加すると、サイドバンドワイヤのスケーリングが困難になり、割り込み配信専用のワイヤの数が非常に多くなる。
【0002】
添付図面と併せて以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点をより良好に理解することができる。
【図面の簡単な説明】
【0003】
【
図1】コンピューティングシステムの一実施形態のブロック図である。
【
図2】コンピューティングシステムの別の実施形態のブロック図である。
【
図3】コア複合体の一実施形態のブロック図である。
【
図4】様々な実施形態による、コヒーレンシプローブメッセージ及び割り込みメッセージの例を示す図である。
【
図5】コヒーレンシプローブネットワークを介して送信するメッセージを生成する方法の一実施形態を示す一般化されたフローチャートである。
【
図6】メッセージがコヒーレンシプローブメッセージであるか割り込みメッセージであるかを判別する方法の一実施形態を示す一般化されたフローチャートである。
【
図7】割り込みメッセージを生成する方法の一実施形態を示す一般化されたフローチャートである。
【
図8】キャッシュサブシステムにおいて受信されたメッセージを処理する方法の一実施形態を示す一般化されたフローチャートである。
【発明を実施するための形態】
【0004】
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、多数の具体的な詳細が示されている。しかしながら、当業者は、具体的な詳細無しに様々な実施形態が実施され得ることを認識するべきである。いくつかの例では、本明細書で説明するアプローチを曖昧にすることを回避するために、周知の構造、構成要素、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図面に示す要素は、必ずしも縮尺通りには示されていない。例えば、いくつかの要素の寸法は、他の要素に対して拡張されている場合がある。
【0005】
コヒーレンシプローブネットワーク上で割り込みをルーティングする様々なシステム、装置及び方法が本明細書で開示される。一実施形態では、コンピューティングシステムは、少なくとも、複数の処理ノードと、コヒーレンシプローブネットワークと、1つ以上の制御ユニットと、を含む。コヒーレンシプローブネットワークは、コヒーレントエージェント間でコヒーレンシプローブメッセージを搬送する。制御ユニットによって検出された割り込みは、コヒーレンシプローブメッセージと互換性を有するメッセージに変換され、コヒーレンシプローブネットワークを介してターゲット宛先にルーティングされる。割り込みは、第1の符号化で生成され、コヒーレンシプローブメッセージは、第2の符号化を有する。キャッシュサブシステムは、コヒーレンシプローブネットワークを介して受信したメッセージに埋め込まれた符号化に基づいて、受信したメッセージが割り込みメッセージであるかコヒーレンシプローブメッセージであるかを判別する。割り込みメッセージは、割り込みコントローラ(複数可)にルーティングされ、コヒーレンシプローブメッセージは、メッセージに埋め込まれたコヒーレンスプローブアクションフィールドに従って処理される。
【0006】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、少なくとも、コア複合体105A~105Nと、入力/出力(I/O)インタフェース120と、バス125と、メモリコントローラ(複数可)130と、ネットワークインタフェース135と、を含む。他の実施形態では、コンピューティングシステム100は、他の構成要素を含み、及び/又は、コンピューティングシステム100は、異なるように構成されている。一実施形態では、コア複合体105A~105Nの各々は、中央処理装置(CPU)等の1つ以上の汎用プロセッサを含む。「コア複合体」は、本明細書では「処理ノード」又は「CPU」とも呼ばれることに留意されたい。いくつかの実施形態では、1つ以上のコア複合体105A~105Nは、高度に並列なアーキテクチャを有するデータ並列プロセッサを含む。データ並列プロセッサの例は、グラフィックス処理ユニット(GPU)及びデジタルシグナルプロセッサ(DSP)等を含む。様々な実施形態では、コア複合体105A~105N内の各プロセッサコアは、割り込みコントローラと、1つ以上のレベルのキャッシュを有するキャッシュサブシステムと、を含む。一実施形態では、コア複合体105A~105Nの各々は、複数のプロセッサコア間で共有されるキャッシュ(例えば、レベル3(L3)キャッシュ)を含む。
【0007】
メモリコントローラ(複数可)130は、コア複合体105A~105Nによってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ(複数可)130は、任意の数及びタイプのメモリデバイス(図示省略)に結合されている。例えば、メモリコントローラ(複数可)130に結合されたメモリデバイス(複数可)のメモリのタイプは、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、又は、強誘電体ランダムアクセスメモリ(FeRAM)等を含んでもよい。I/Oインタフェース120は、任意の数及びタイプのI/Oインタフェース(例えば、周辺機器相互接続(PCI)バス、PCI-Extended(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々なタイプの周辺デバイスは、I/Oインタフェース120に結合されてもよい。このような周辺デバイスは、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶装置、及び、ネットワークインタフェースカード等を含むが、これらに限定されない。
【0008】
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、様々な他のタイプのコンピューティングシステム若しくはデバイスの何れかである。コンピューティングシステム100の構成要素の数は、実施形態毎に異なることに留意されたい。例えば、他の実施形態では、
図1に示す数よりも多い又は少ない各構成要素が存在する。他の実施形態では、コンピューティングシステム100は、
図1に示されていない他の構成要素を含むことにも留意されたい。さらに、他の実施形態では、コンピューティングシステム100は、
図1に示す以外の方法で構成されている。
【0009】
図2を参照すると、コンピューティングシステム200の別の実施形態のブロック図が示されている。一実施形態では、システム200は、制御ユニット210と、コヒーレンシプローブネットワーク215と、割り込みコントローラ220と、デバイス225A~225Nと、ノード230A~230Dと、を含む。一実施形態では、制御ユニット210は、コヒーレンスユニット内に配置されている。他の実施形態では、制御ユニット210は、様々な他のタイプの構成要素の何れかの一部である。或いは、別の実施形態では、制御ユニット210は、スタンドアロンの構成要素である。デバイス225A~225Nは、割り込みコントローラ220を介して制御ユニット210に接続された任意の数及びタイプの周辺デバイス又は入力/出力(I/O)デバイスを表す。
【0010】
一実施形態では、システム200は、システムオンチップ(SoC)である。他の実施形態では、システム200は、様々な他のタイプのコンピューティングシステムの何れかである。ノード230A~230Dは、任意の数及びタイプの処理ノードを表す。ノード230A~230Dの各々は、任意の数のプロセッサコア245A~245N,250A~250N,255A~255N,260A~260Nを含む。4つのノード230A~230Dが
図2のシステム200に示されているが、これは、説明のために示されているに過ぎない。システム200に含まれるノードの数は、実施形態毎に異なることを理解されたい。他の実施形態では、システム200は、他の構成要素を含み、及び/又は、他の適切な方法で構成されている。
【0011】
一実施形態では、システム200は、プロセッサコア又はデバイスが別のコア又はデバイスによって修正されるデータに同時にアクセスしないことを保証するために、メモリコヒーレンシプロトコルを実施する。メモリコヒーレンシプロトコルに準拠するために、システム200のコア及びデバイスは、コヒーレンシプローブネットワーク215を介してコヒーレンシメッセージ(例えば、コヒーレンシプローブメッセージ及びプローブ応答)を送信する。したがって、コヒーレンシプローブネットワーク215は、システム200のコヒーレントエージェント間でコヒーレンシプローブメッセージ及びプローブ応答を搬送するように設計されている。コヒーレンシプローブメッセージは、特定のメモリ位置に関連するデータのコヒーレンシ状態をシークするメッセージである。プローブ応答は、通常、コヒーレンシプローブメッセージを生成したコヒーレントエージェントに送り返される。プローブ応答は、参照されたデータのコヒーレンシ状態を示し、プローブに応じてデータを転送し、又は、プローブに応じて他の情報を提供する。典型的には、コヒーレンシプローブネットワーク215は、コヒーレンシプローブメッセージ及びプローブ応答のみを搬送する。しかしながら、システム200では、コヒーレンシプローブネットワーク215は、コア230A~230Dのうち1つ以上をターゲットとして割り込みを搬送する。これにより、割り込みが、システム200内の複数の構成要素に及ぶ専用の低レイテンシネットワークを使用することから利益を得ることを可能にし、任意の数のスレッドにスケーラブルである。
【0012】
様々な実施形態では、デバイス225A~225Nの各々は、割り込みコントローラ220によって検出された割り込み信号をアサートすることによって、割り込みを生成することが可能である。割り込み信号を検出したことに応じて、割り込みコントローラ220は、宛先識別子、配信モード、割り込みベクトル、又は、他の適切な情報等の情報を有する割り込みメッセージを生成する。次に、割り込みコントローラ220は、割り込みメッセージを制御ユニット210に伝達する。一実施形態では、制御ユニット210は、割り込みメッセージを、特別な符号化を用いてコヒーレンシプローブメッセージに変換し、次いで、制御ユニット210は、コヒーレンシプローブネットワーク215を介して、特別に符号化されたコヒーレンシプローブメッセージを1つ以上のターゲットに伝達する。
【0013】
コヒーレンシプローブネットワーク215を介した割り込みの転送を容易にするために、制御ユニット210は、割り込みを生成し、受信し、処理し、転送するためのロジックを含む。このロジックは、コヒーレンシプローブメッセージの通常処理も処理する。一実施形態では、制御ユニット210が割り込みを検出又は受信すると、制御ユニット210は、コヒーレンシプローブメッセージのフォーマットと互換性を有する割り込みメッセージを生成する。互換性を有するフォーマットで割り込みメッセージを生成することによって、コヒーレンシプローブネットワーク215が、コヒーレンシプローブメッセージと同様の方法で割り込みメッセージを搬送することができる。割り込みメッセージは、コヒーレンシプローブメッセージと互換性を有するが、他の構成要素がコヒーレンシプローブメッセージを割り込みメッセージと区別することを可能にする埋め込まれた符号化を含む。コヒーレントな互換性を有するフォーマットで割り込みメッセージを生成した後に、制御ユニット210は、コヒーレンシプローブネットワーク215を介して、割り込みメッセージを、割り込みのターゲットとされた1つ以上のノード230A~230Dに伝達する。一実施形態では、制御ユニット210は、コヒーレンシプローブネットワーク215を介して、割り込みメッセージを、全てのノード230A~230Dにブロードキャストする。別の実施形態では、制御ユニット210は、コヒーレンシプローブネットワーク215を介して、割り込みメッセージを、割り込みメッセージのターゲットとされたノード(複数可)のみに送信する。
【0014】
一実施形態では、コヒーレンシプローブネットワーク215は、各ノード230A~230D内のキャッシュサブシステム240A~240Dに接続されている。各キャッシュサブシステム240A~240Dは、任意の数のキャッシュレベルを含む。例えば、一実施形態では、各キャッシュサブシステム240A~240Dは、レベル3(L3)キャッシュ及びレベル2(L2)キャッシュを含む。この実施形態では、各コアは、ローカルレベル1(L1)キャッシュを含む。他の実施形態では、各キャッシュサブシステム240A~240Dは、他のキャッシュレベルを含む。所定のキャッシュサブシステム240A~240Dがコヒーレンシプローブネットワーク215を介してメッセージを受信すると、所定のキャッシュサブシステム240A~240Dは、メッセージが割り込みメッセージであるかコヒーレンシプローブメッセージであるかを判別する。メッセージが割り込みメッセージである場合、所定のキャッシュサブシステム240A~240Dは、割り込みメッセージを、対応するコア(複数可)内の割り込みコントローラ(複数可)に送信する。システム200に示されているように、ノード230A~230Dは、コア245A~245N,250A~250N,255A~255N及び/又は260A~260N内に割り込みコントローラ247A~247N,252A~252N,257A~257N及び/又は262A~262Nを含む。一実施形態では、割り込みメッセージを受信したことに応じて、所定のキャッシュサブシステム240A~240Dは、割り込みメッセージを、対応するノード内の全てのコアにブロードキャストする。別の実施形態では、割り込みメッセージを受信したことに応じて、所定のキャッシュサブシステム240A~240Dは、割り込みメッセージを、割り込みメッセージのターゲットとされたコアのみに送信する。コア(複数可)内の割り込みコントローラ(複数可)は、割り込みメッセージを検査し、ターゲットとされたコア(複数可)に送信される割り込みを生成する。
【0015】
図3を参照すると、コア複合体300の一実施形態のブロック図が示されている。一実施形態では、コア複合体300は、4つのプロセッサコア310A~310Dを含む。他の実施形態では、コア複合体300は、他の数のプロセッサコアを含む。「コア複合体」は、本明細書では、「処理ノード」、「ノード」又は「CPU」とも呼ばれることに留意されたい。一実施形態では、コア複合体300の構成要素は、(
図1の)コア複合体105A~105N内に含まれる。
【0016】
各プロセッサコア310A~310Dは、メモリサブシステム(図示省略)から取り出されたデータ及び命令を記憶するためのキャッシュサブシステムを含む。例えば、一実施形態では、各コア310A~310Dは、対応するレベル1(L1)キャッシュ315A~315Dを含む。また、各プロセッサコア310A~310Dは、対応するレベル2(L2)キャッシュ320A~320Dを含み、又は、対応するレベル2(L2)キャッシュ320A~320Dに結合されている。さらに、一実施形態では、コア複合体300は、プロセッサコア310A~310Dによって共有されるレベル3(L3)キャッシュ330を含む。他の実施形態では、コア複合体300は、他の数のキャッシュ及び/又は異なるキャッシュレベルの他の構成を有する他のタイプのキャッシュサブシステムを含んでもよいことに留意されたい。
【0017】
L3キャッシュ330は、コヒーレンシプローブネットワーク340を介して、バス/ファブリックに結合されている。L3キャッシュ330は、コヒーレンシプローブネットワーク340を介して、コヒーレンシプローブ及び割り込みメッセージの両方を受信する。L3キャッシュ330は、コヒーレンシプローブ及び割り込みメッセージをL2キャッシュ320A~320Dに転送する。一実施形態では、L3キャッシュ330は、受信したコヒーレンシプローブ及び割り込みメッセージを全てのL2キャッシュ320A~320Dにブロードキャストする。別の実施形態では、L3キャッシュ330は、受信したコヒーレンシプローブ又は割り込みメッセージを、プローブメッセージ又は割り込みメッセージのターゲットとされたL2キャッシュ320A~320Dのみに転送する。この実施形態では、L3キャッシュ330は、ターゲットを判別するために、コヒーレンシプローブ及び割り込みメッセージを検査するロジックを含む。L3キャッシュ330からメッセージ受信すると、L2キャッシュ320A~320Dは、メッセージを検査して、メッセージが割り込みであるかコヒーレンシプローブであるかを判別する。L2キャッシュ320A~320Dは、処理するための割り込みメッセージを割り込みコントローラ317A~317Dの各々に転送する。L2キャッシュ320A~320Dは、埋め込まれたコヒーレンシプローブアクションフィールドに従って、コヒーレンシプローブを処理する。
【0018】
図4を参照すると、コヒーレンシプローブメッセージ及び割り込みメッセージをハイブリッドメッセージフォーマットで符号化する例が示されている。表400は、ハイブリッドメッセージフォーマットを使用して送信することができるタイプのメッセージの例を示す。表400の左端の列は、表400に示す2つの異なるタイプのメッセージ(コヒーレンシプローブメッセージ410A及び割り込みメッセージ410B)を有するメッセージタイプ410を示す。他の実施形態では、他の数の異なるタイプのメッセージがハイブリッドメッセージフォーマットで符号化される。ハイブリッドメッセージフォーマットを使用することによって、割り込みメッセージ410Bを、コヒーレンシプローブメッセージ410Aと同様にフォーマットすることができる。したがって、割り込みメッセージ410Bのフィールド又は場合によっては割り込みメッセージ410Bのフィールドの組み合わせは、コヒーレンシプローブメッセージ410Aのフィールドに一致するように揃えられる。ハイブリッドメッセージフォーマットは、フィールドの数が実施形態毎に異なる任意の数のフィールドを含む。表400に示すように、ハイブリッドメッセージフォーマットは、コヒーレンシプローブアクションフィールド415と、アドレスフィールド420と、応答フィールド425と、任意の数の他のフィールドと、を含む。
【0019】
表400の第1のエントリは、コヒーレンシプローブメッセージ410Aの例を示している。コヒーレンシプローブメッセージ410Aの場合、フィールド415は、コヒーレンシプローブアクションインジケータ415Aにより符号化される。コヒーレンシプローブアクションインジケータ415Aは、プローブアクションタイプに応じて、様々な異なる値の何れかと等しく設定されてもよい。割り込みメッセージ410Bの場合、フィールド415は、メッセージが割り込みであることを示す割り込み配信インジケータ415Bにより符号化される。一実施形態では、キャッシュサブシステム(例えば、
図2のキャッシュサブシステム240A)内の制御ロジックは、フィールド415を調べて、受信したメッセージがコヒーレンシプローブメッセージであるか割り込みメッセージであるかを判別する。
【0020】
フィールド420は、コヒーレンシプローブメッセージ410Aのターゲットとされた対応するメモリ位置のアドレスを指定する。割り込みメッセージ410Bの場合、フィールド420は、割り込みタイプインジケータ420Bを、ビットの第1のサブセットに記憶し、フィールド420は、ターゲットインジケータ420Cを、ビットの第2のサブセットに記憶する。言い換えると、アドレスフィールド420は、割り込みメッセージ410Bの割り込みタイプインジケータ420B及びターゲットインジケータ420Cの両方を保持するように再利用される。これは、割り込みタイプインジケータ420B及びターゲットインジケータ420Cの組み合わせがアドレスフィールド420Aと同一のサイズであるため、可能である。割り込みタイプインジケータ420Bは、割り込みメッセージ410Bによって伝達される割り込みのタイプを記憶し、ターゲットフィールド420Cは、割り込みメッセージ410Bのターゲットを指定する。
【0021】
フィールド425は、メッセージを処理した後に生成される応答のタイプを指定する。コヒーレンシプローブメッセージ410Aの場合、フィールド425は、送信元に送り返す応答のタイプを指定する様々な応答インジケータ425Aの値の何れかにより符号化される。割り込みメッセージ410Bの場合、応答フィールド425は、応答を送信元に送り返す必要がないことを示す無応答インジケータ425Bにより符号化される。他の実施形態では、ハイブリッドメッセージフォーマットは、他のフィールドを含む。例えば、別の実施形態では、ハイブリッドメッセージフォーマットは、割り込みハンドラのメモリ位置を記憶する割り込みベクトルフィールドを含む。ハイブリッドメッセージフォーマットについての他のタイプのフィールドが可能であり、考えられる。
【0022】
図5を参照すると、コヒーレンシプローブネットワークを介して送信するメッセージを生成する方法500の一実施形態が示されている。説明目的のために、この実施形態におけるステップ及び
図6~
図8のステップが順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素の1つ以上が同時に実行され、図示した順序と異なる順序で実行され、又は、完全に省略されることに留意されたい。他の追加の要素も必要に応じて実行される。本明細書で説明する様々なシステム又は装置の何れかは、方法500を実施するように構成されている。
【0023】
ファブリック相互接続の制御ロジックは、ハイブリッドメッセージフォーマットのメッセージを受信する(ブロック505)。ハイブリッドメッセージフォーマットのメッセージを受信したことに応じて、制御ロジックは、メッセージがコヒーレンシプローブメッセージであるか割り込みメッセージであるかを判別する(ブロック510)。メッセージがコヒーレンシプローブメッセージであるか割り込みメッセージであるかを判別する方法の一例は、
図6の方法600に関する説明に記載されている。受信したメッセージが割り込みメッセージである場合(条件付きブロック515:「はい」)、制御ロジックは、割り込みメッセージからターゲットフィールドを取り出し、ターゲットフィールドは、ハイブリッドメッセージフォーマットのアドレスフィールドのサブセットである(ブロック520)。言い換えると、アドレスフィールドがYビットの長さである場合、ターゲットフィールドはXビットの長さである。ここで、XはY未満であり、X及びYの両方は正の整数である。アドレスフィールドのサブセットであるターゲットフィールドの例は、
図4の表400に示されている。次に、制御ユニットは、コヒーレンシプローブネットワークを介して、割り込みメッセージを、ターゲットフィールドで指定されたデバイス(複数可)にルーティングする(ブロック525)。受信したメッセージがコヒーレンシプローブメッセージである場合(条件付きブロック515:「いいえ」)、制御ロジックは、コヒーレンシプローブメッセージからアドレスフィールドを取り出す(ブロック530)。次に、制御ロジックは、コヒーレンシプローブネットワークを介して、コヒーレンシプローブメッセージを、アドレスフィールドで指定されたアドレスに対応するデバイス(複数可)に転送する(ブロック535)。ブロック525,535の後に、方法500は終了する。
【0024】
図6を参照すると、メッセージがコヒーレンシプローブメッセージであるか割り込みメッセージであるかを判別する方法の一実施形態が示されている。制御ロジックは、コヒーレンシプローブネットワークを介してメッセージを受信する(ブロック605)。メッセージを受信したことに応じて、制御ロジックは、受信したメッセージからコヒーレンシプローブアクションフィールドを取り出す(ブロック610)。コヒーレンシプローブアクションフィールドが割り込み配信インジケータにより符号化されている場合(条件付きブロック615:「はい」)、制御ロジックは、受信したメッセージを割り込みメッセージとして処理する(ブロック620)。コヒーレンシプローブアクションフィールドがコヒーレンシプローブアクションインジケータにより符号化されている場合(条件付きブロック615:「いいえ」)、制御ロジックは、受信したメッセージをコヒーレンシプローブメッセージとして処理する(ブロック625)。言い換えると、メッセージのコヒーレンシプローブアクションフィールドが割り込み配信インジケータ以外の任意の値により符号化されている場合、制御ロジックは、受信したメッセージをコヒーレンシプローブメッセージとして処理する。ブロック620,625の後に、方法600は終了する。
【0025】
図7を参照すると、割り込みメッセージを生成する方法700の一実施形態が示されている。制御ロジックは、割り込みを受信する(ブロック705)。実施形態に応じて、制御ロジックは、キャッシュサブシステム、コヒーレンスポイント又はコンピューティングシステム内の他の位置に配置されている。割り込みを受信したことに応じて、制御ロジックは、コヒーレンシプローブメッセージと互換性を有する割り込みメッセージを生成し、生成された割り込みメッセージのフィールドは、コヒーレンシプローブメッセージのフィールドと揃えられる(ブロック710)。次に、制御ロジックは、コヒーレンシプローブネットワークを介して、割り込みメッセージを、ターゲットとされた宛先に転送する(ブロック715)。ブロック715の後に、方法700は終了する。
【0026】
図8を参照すると、キャッシュサブシステムにおいて受信したメッセージを処理する方法800の一実施形態が示されている。キャッシュサブシステムの制御ロジックは、コヒーレンシプローブネットワークを介してメッセージを受信する(ブロック805)。一実施形態では、制御ロジックは、L2キャッシュの一部である。他の実施形態では、制御ロジックは、キャッシュサブシステムの他のレベルに配置されている。メッセージを受信したことに応じて、制御ロジックは、メッセージがコヒーレンシプローブメッセージであるか割り込みメッセージであるかを判別する(ブロック810)。メッセージがコヒーレンシプローブメッセージであるか割り込みメッセージであるかを判別する一例は、
図6の方法600に記載されている。
【0027】
メッセージが割り込みメッセージである場合(条件付きブロック815:「はい」)、制御ロジックは、メッセージからターゲットフィールドを取り出す(ブロック820)。次に、制御ロジックは、割り込みメッセージを、割り込みのターゲットとされたプロセッサコア(複数可)の割り込みコントローラ(複数可)にルーティングする(ブロック825)。別の実施形態では、制御ロジックは、割り込みメッセージを、ノード内の全てのプロセッサコアの割り込みコントローラにブロードキャストする。メッセージがコヒーレンシプローブメッセージである場合(条件付きブロック815:「いいえ」)、制御ロジックは、メッセージからコヒーレンシプローブアクションフィールド及びアドレスフィールドを取り出す(ブロック830)。次に、制御ロジックは、コヒーレンシプローブアクションフィールドで指定されたプローブアクションに従って、コヒーレンシプローブメッセージを処理する(ブロック835)。ブロック825,835の後に、方法800は終了する。
【0028】
様々な実施形態では、本明細書で説明した方法及び/又はメカニズムを実施するために、ソフトウェアアプリケーションのプログラム命令が使用される。例えば、汎用プロセッサ又は専用プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態では、このようなプログラム命令は、高レベルプログラミング言語で表すことができる。他の実施形態では、プログラム命令は、高レベルプログラミング言語からバイナリ、中間表現又は他の形式にコンパイルすることができる。或いは、ハードウェアの動作や設計を記述するプログラム命令が書き込まれてもよい。このようなプログラム命令は、例えばC等の高水準プログラミング言語によって表すことができる。或いは、例えばVerilog等のハードウェア設計言語(HDL)を使用することができる。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、使用中にコンピューティングシステムによってアクセス可能であり、プログラム実行のためにコンピューティングシステムにプログラム命令を提供する。一般的に、このようなコンピューティングシステムは、少なくとも1つのメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0029】
上述した実施形態は、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、多数の変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正の全てを包含するように解釈されることが意図される。