(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-10-18
(54)【発明の名称】共有データファブリック処理クライアントリセットシステム及び方法
(51)【国際特許分類】
G06F 11/07 20060101AFI20231011BHJP
G06F 1/24 20060101ALI20231011BHJP
【FI】
G06F11/07 196
G06F11/07 140J
G06F1/24 B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023518255
(86)(22)【出願日】2021-09-24
(85)【翻訳文提出日】2023-05-08
(86)【国際出願番号】 US2021052004
(87)【国際公開番号】W WO2022067070
(87)【国際公開日】2022-03-31
(32)【優先日】2020-09-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ヴィドヒャナサン カリヤナスンダラム
(72)【発明者】
【氏名】ベンジャミン チェン
(72)【発明者】
【氏名】アレクサンダー ジェイ. ブラノーバー
(72)【発明者】
【氏名】ジョン ペトリー
(72)【発明者】
【氏名】チェンーピン ヤン
(72)【発明者】
【氏名】ロスティスラフ キリチンスキ
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042KK02
(57)【要約】
共有データファブリックを含む処理システムは、第2のクライアントプロセッサを動作させながら、第1のクライアントプロセッサをリセットする。第1のクライアントプロセッサは、共有データファブリックの1つ以上のデバイスへの要求を停止するように命令される。ステータス通信は、第1のクライアントプロセッサが一時的なオフライン状態に入るように、第1のクライアントプロセッサとメモリコントローラ、第2のクライアントプロセッサ、又は、その両方との間でブロックされる。第1のクライアントプロセッサは、非コヒーレントであるものとして示されている。したがって、第1のクライアントプロセッサがリセットされる場合、リセット中又はリセット前に送信されたメッセージによるいくつかのエラー及び効率損失が防止される。
【選択図】
図1
【特許請求の範囲】
【請求項1】
方法であって、
処理システムの第1のクライアントプロセッサをリセットすることであって、前記リセットすることは、前記処理システムの共有データファブリックに接続された1つ以上のデバイスへの要求を停止するように、前記第1のクライアントプロセッサに命令することと、前記第1のクライアントプロセッサと、前記共有データファブリックのメモリコントローラと、の間のステータス通信をブロックすることと、前記第1のクライアントプロセッサをリセットさせることと、によって行われる、ことと、
前記第1のクライアントプロセッサを再有効化することと、を含む、
方法。
【請求項2】
前記第1のクライアントプロセッサが要求するのを停止することは、前記第1のクライアントプロセッサが、連鎖した書き込み動作を終了し、書き込み動作を完了することを含む、
請求項1の方法。
【請求項3】
前記ステータス通信をブロックした後に、前記第1のクライアントプロセッサが前記メモリコントローラに対して非コヒーレントであることを示すことを更に含む、
請求項1又は2の方法。
【請求項4】
前記第1のクライアントプロセッサを再有効化することは、
前記第1のクライアントプロセッサと、前記メモリコントローラと、の間の前記ステータス通信を再開させることと、
前記第1のクライアントプロセッサが前記メモリコントローラに対してコヒーレントであることを示すことと、を含む、
請求項3の方法。
【請求項5】
前記ステータス通信をブロックすることにより、前記第1のクライアントプロセッサが一時的なオフライン状態になり、
前記ステータス通信を再開させることにより、前記第1のクライアントプロセッサの前記一時的なオフライン状態が終了する、
請求項4の方法。
【請求項6】
前記第1のクライアントプロセッサが前記一時的なオフライン状態になった後であって、前記第1のクライアントプロセッサが非コヒーレントであることを示す前に、前記第1のクライアントプロセッサへの残りのステータス要求が応答されるのを待機することを更に含む、
請求項5の方法。
【請求項7】
前記ステータス通信をブロックすることは、前記第1のクライアントプロセッサによるステータス応答に対するフロー制御チェックを無効化することを含み、
前記ステータス通信を再開させることは、前記第1のクライアントプロセッサによるステータス応答に対するフロー制御チェックを有効化することを含む、
請求項4の方法。
【請求項8】
前記ステータス通信をブロックすることは、前記第1のクライアントプロセッサに送信されたプローブのスプーフィングを有効化することを含み、
前記ステータス通信を再開させることは、前記第1のクライアントプロセッサに送信されたプローブのスプーフィングを無効化することを含む、
請求項4の方法。
【請求項9】
プローブのスプーフィングを有効化することは、前記第1のクライアントプロセッサと関連付けられたコヒーレントエージェントによって、前記第1のクライアントプロセッサにアドレス指定されたプローブに応じて生成された、スプーフィングされたプローブ応答を送信することを含む、
請求項8の方法。
【請求項10】
プローブのスプーフィングを有効化することは、前記第1のクライアントプロセッサと関連付けられたコヒーレントエージェントによって、前記スプーフィングされたプローブ応答を生成することを含む、
請求項9の方法。
【請求項11】
前記第1のクライアントプロセッサをリセットさせることは、前記第1のクライアントプロセッサと関連付けられたコヒーレントエージェントに対して、前記第1のクライアントプロセッサを前記共有データファブリックにおいてヒューズオフ状態を有するものとして扱うように命令することを含む、
請求項1~10の何れかの方法。
【請求項12】
集積回路(IC)であって
並列処理ユニットと、
中央処理ユニット(CPU)と、
データファブリックと、を備え、
前記データファブリックは、
メモリコントローラと、
コヒーレントエージェントと、を備え、
前記メモリコントローラは、
前記CPUから前記並列処理ユニットにステータス通信を送信することであって、前記ステータス通信は、パケット及びプローブを含む、ことを行うように構成されており、
前記コヒーレントエージェントは、
前記CPUをリセットすることなく、前記並列処理ユニットがリセットされることを判定することと、
前記並列処理ユニットがリセットされることを判定したことに応じて、前記メモリコントローラと、前記並列処理ユニットと、の間の前記ステータス通信をブロックすることと、
前記並列処理ユニットのリセットをトリガすることと、
を行うように構成されている、
集積回路(IC)。
【請求項13】
前記メモリコントローラは、
前記メモリコントローラと、前記並列処理ユニットと、の間のステータス通信が少なくとも特定の時間にわたってブロックされた後に、前記並列処理ユニットを非コヒーレントとしてマークするように更に構成されている、
請求項12のIC。
【請求項14】
前記コヒーレントエージェントは、
クレジットリセット信号に基づいて、前記並列処理ユニットからのクレジット利用可能信号によって示される処理クレジットの第1の数と、ゼロ処理クレジットとの間で選択するように構成されたクレジットカウンタを備え、
前記クレジットリセット信号は、前記メモリコントローラと、前記並列処理ユニットと、の間の前記ステータス通信をブロックすることの一部として送信される、
請求項12又は13のIC。
【請求項15】
前記コヒーレントエージェントは、
前記クレジットカウンタから受信した前記並列処理ユニットの処理クレジットの指標に基づいて、前記コヒーレントエージェントの1つ以上のメモリデバイスに対して、ステータス通信を前記並列処理ユニットに送信するように命令するように構成された選択モジュールを備える、
請求項14のIC。
【請求項16】
前記コヒーレントエージェントは、
前記メモリコントローラと、前記並列処理ユニットと、の間の前記ステータス通信をブロックすることの一部として、スプーフされたプローブ応答を前記メモリコントローラに送信するように構成されたスプーフモジュールを備える、
請求項12のIC。
【請求項17】
方法であって、
少なくとも1つのグラフィック処理ユニット(GPU)と、少なくとも1つの中央処理ユニット(CPU)と、を備える処理システムの第1のクライアントプロセッサをリセットすることであって、前記第1のクライアントプロセッサをリセットすることは、前記第1のクライアントプロセッサと、前記処理システムのデータファブリックのメモリコントローラと、の間のステータス通信を傍受することと、前記第1のクライアントプロセッサをリセットさせることと、を含む、ことと、
前記第1のクライアントプロセッサを再有効化することと、を含む、
方法。
【請求項18】
前記第1のクライアントプロセッサの処理クレジットは、前記データファブリックに接続された1つ以上のデバイスに分配され、
前記ステータス通信を傍受することは、
前記第1のクライアントプロセッサの前記処理クレジットをワイピングすることと、
前記第1のクライアントプロセッサの前記処理クレジットを初期クレジットカウントにリセットすることと、を含む、
請求項17の方法。
【請求項19】
前記処理システムのデータファブリックに接続された1つ以上のデバイスへの要求を停止するように前記第1のクライアントプロセッサに命令することであって、第2のクライアントプロセッサの処理クレジットが前記第1のクライアントプロセッサに割り当てられるのを防止することを含む、ことを更に含む、
請求項17又は18の方法。
【請求項20】
前記ステータス通信を傍受することは、前記第1のクライアントプロセッサによる応答に対するフロー制御チェックを無効化することを含む、
請求項17~19の何れかの方法。
【発明の詳細な説明】
【背景技術】
【0001】
共有データファブリックシステムは、場合によっては、様々な中央処理ユニット(central processing unit、CPU)、グラフィック処理ユニット(graphic processing unit、GPU)、デジタル信号プロセッサ(digital signal processor、DSP)、他の並列プロセッサ、他の専用デバイス、又は、それらの任意の組み合わせを含む様々な異種処理クライアントを含む。いくつかの処理クライアントは、GPU等のスタンドアロンである場合、他のコンポーネントにおいてエラーを引き起こすことなくシステムの動作中にリセットすることができる。なぜなら、これらのコンポーネントは、他の処理クライアントと同じコヒーレントデータファブリックを共有しないからである。しかしながら、共有データファブリックシステムでは、処理クライアントは、プローブ及びステータス要求を含むステータス通信を互いに頻繁に送信するので、ステータス通信が未処理である間に処理クライアントをリセットすることは、システム障害又はシステム性能低下等の意図しない結果を引き起こす。
【0002】
本開示は、添付の図面を参照することによってより良好に理解され、その数々の特徴及び利点が当業者に明らかになる。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0003】
【
図1】いくつかの実施形態による、複数の処理クライアントを含む共有データファブリック処理システムのブロック図である。
【
図2】いくつかの実施形態による、共有データファブリック処理システム内の処理クライアントをリセットする方法のフロー図である。
【
図3】いくつかの実施形態による、処理クレジットを使用してパケットを処理クライアントに送信する共有データファブリック処理システムの一部のブロック図である。
【
図4】いくつかの実施形態による、プローブを管理する共有データファブリック処理システムの一部のブロック図である。
【発明を実施するための形態】
【0004】
処理システムは、複数の処理クライアントを接続する共有データファブリックを含む。処理クライアントは、ステータス通信(例えば、パケット及びプローブ)を相互に及びメモリコントローラ等の処理システムの様々な他のデバイスに送信する。いくつかの実施形態では、本明細書で説明するように、処理システムは、システム全体又は他の処理クライアント(例えば、CPU)をリセットすることなく、処理クライアントのうち第1の処理クライアント(例えば、GPU等の並列処理ユニット)をリセットする。特に、処理システムは、第1の処理クライアントと処理システムの他のデバイスとの間のステータス通信を傍受(intercepts)、ブロック及び/又はスプーフィング(spoofs)する。その結果、第1の処理クライアントは一時的なオフライン状態に入り、第1の処理クライアントは要求にサービスを提供し続けるが、処理システムは第1の処理クライアントがオフラインであるかのようにステータス通信を送信する。最終的に、第1の処理クライアントは、様々な他のデバイスが第1の処理クライアントに代わって動作を実行しておらず、第1の処理クライアントが様々な他のデバイスにメッセージを送信することが予想されない状態に入る。その時点で、第1の処理クライアントはリセットされ、処理システムは、通信の傍受、ブロック及び/又はスプーフィングを停止する。本明細書で説明する手順により、第1の処理クライアントのリセットにもかかわらず、以下で説明する様々な潜在的なエラー、効率の損失又はその両方が回避される。
【0005】
場合によっては、第1の処理クライアント(例えば、GPU)のナイーブリセット(naive reset)の結果として、様々な問題が発生する。例えば、CPUがプローブ要求をGPUに送信し、GPUがプローブに応答する前にリセットされる場合、場合によっては、プローブに対する応答が送信されない。その結果、場合によっては、プローブ要求に対する応答が受信されない場合、CPUは潜在的に致命的なエラーを経験することになる。別の例として、GPUがリセットされる前に処理クレジットがGPUに割り振られ、GPUがそれらの処理クレジットを解放しない場合、場合によっては、GPUは、リセット後にそれらの処理クレジットを認識せず、処理クレジットがシステム全体によって使用されないようにし、システム性能を低下させる。更に別の例として、GPUがリセットされる前にGPUが通信(例えば、ステータス要求)をCPUに送信するが、GPUがリセットされた後までCPUが通信に応答しない場合、リセットされた後、GPUはもはや応答を受信しようとしていない。場合によっては、GPUは、通信を送信することを認識しない。その結果、GPUがリセットされた後に、GPUが通信に対する応答をCPUから受信した場合、場合によっては、GPUは、当該通信をエラーとして登録するか、又は、その応答を別の通信に対する応答として誤って登録する。
【0006】
本明細書で説明する技術は、様々な実施形態では、様々な並列プロセッサ(例えば、ベクトルプロセッサ、グラフィックス処理ユニット(GPU)、汎用GPU(general-purpose GPU、GPGPU)、非スカラプロセッサ、高並列プロセッサ、人工知能(artificial intelligence、AI)プロセッサ、推論エンジン、機械学習プロセッサ、他のマルチスレッド処理ユニット等)の何れかにおいて利用される。説明を容易にするために、本明細書では、GPUが使用される例示的なコンテキストを参照する。しかしながら、本明細書で説明するシステム及び技術は、別段の記載がない限り、他のタイプの並列プロセッサの使用にも等しく適用されることが理解されよう。
【0007】
図1は、少なくともいくつかの実施形態による、処理クライアントをリセットする処理システム100を示している。処理システム100は、処理クライアント104~106等の複数の処理クライアント、1つ以上のメモリコントローラ108及び1つ以上のI/Oハブ110を含む、処理システム100の様々なコンポーネントを相互接続するために使用されるデータファブリック102を含む。各メモリコントローラ108自体は、システムメモリ112に結合され、各I/Oハブ110は、I/Oデバイス114、115等の1つ以上のI/Oデバイスに結合されている。
【0008】
処理クライアント104~106は、1つ以上のプロセッサコア及びローカルキャッシュ階層を含む。プロセッサコアは、例えば、CPUコア、GPUコア、DSPコア、並列プロセッサコア、又は、それらの組み合わせを含む。処理クライアントのローカルキャッシュ階層は、1つ以上のレベルのキャッシュを含む。いくつかの実施形態では、処理クライアント104~106のうち少なくとも1つは、処理クライアント104~106のうち少なくとも1つの他の処理クライアントと異なる(すなわち、処理クライアント104~106は異種である)。他の実施形態では、処理クライアント104~106は同種である。
【0009】
メモリコントローラ108は、対応するシステムメモリ112と処理システム100の他のコンポーネントとの間のインターフェースとして動作する。したがって、処理クライアントのローカルキャッシュ階層にキャッシュされるデータは、通常、「キャッシュライン」と呼ばれるデータのブロックとして操作され、システムメモリ112の物理アドレスを使用してメモリ階層にアドレス指定されるか、又は、別様に配置される。キャッシュラインは、処理クライアントからのアクセス要求に応じて、メモリコントローラ108によってシステムメモリ112からアクセスされ、キャッシュラインは、処理クライアントの1つ以上のキャッシュにインストール又はキャッシュされる。同様に、変更されたデータを含むキャッシュラインが処理クライアントのローカルキャッシュ階層から追い出され、したがってシステムメモリ112内で更新される必要がある場合、メモリコントローラ108は、このライトバックプロセスを管理する。
【0010】
I/Oデバイス114、115は、DMAアクセス動作を使用して、ノード101の内外にデータを転送するように動作する。例えば、I/Oデバイス114、115のうち何れかは、データを受信及び送信するためにノードをネットワークに接続するためのネットワークインターフェースカード(network interface card、NIC)、又は、処理クライアント104~106によって使用される比較的大量のデータの不揮発性記憶のためのハードディスクドライブ(hard disk drive、HDD)若しくは他の大容量記憶デバイス等を含むことができる。少なくとも1つの実施形態では、I/Oハブ110は、I/Oデバイス114、115を管理し、データファブリック102とI/Oデバイス114、115との間のインターフェースとして機能する。例示するために、いくつかの実施形態では、I/Oハブ110は、I/Oデバイス114、115とデータファブリック102との間のPCIeインターコネクトとして動作するように、ペリフェラルコンポーネントインターコネクトエクスプレス(Peripheral Component Interconnect Express、PCIe)ルートコンプレックスを含む。
【0011】
データファブリック102は、トランスポート層130と、トランスポート層130とそれぞれの処理クライアント104~106との間のインターフェースとして動作する複数のコヒーレントエージェント134~136と、を含む。加えて、メモリコントローラ108は、システムメモリ112に対するコヒーレントエージェントとして動作する。しかしながら、他の実施形態では、メモリコントローラ108はデータファブリック102の外部に配置され、メモリコントローラ108及びシステムメモリ112のための個別のコヒーレントエージェントが含まれる。I/Oエージェント140は、I/Oハブ110及びI/Oデバイス114、115のためのコヒーレントエージェントとして動作する。更に、いくつかの実施形態では、トランスポート層130は、ブリッジコンポーネント(図示せず)を介して1つ以上の他のノード141の対応するトランスポート層に結合される。様々な実施形態では、データファブリック102は、HyperTransport(商標)仕様又はInfinity Fabric(商標)仕様等の1つ以上の標準化された相互接続仕様と互換性がある。
【0012】
一般的な動作概要として、データファブリック102は、処理システム100の他のコンポーネント間で、及び、処理システム100と他のノード141との間で、コマンド、データ、要求、ステータス通信及び他のシグナリングを転送する。これらのトランスポート動作の1つのそのようなサブセットは、処理クライアント104~106のうち1つ以上による使用のためにI/Oデバイス114、115によって提供されるデータの記憶である。
図3を参照して以下で更に説明するように、これらのトランスポート動作の別のサブセットは、メモリコントローラ108又は処理クライアント(例えば、処理クライアント104)から別の処理クライアント(例えば、処理クライアント106)にパケット(例えば、読み取り要求及び応答又は書き込み要求及び応答)を送信することである。
図4を参照して以下で更に説明するように、別のサブセットは、メモリコントローラ108又は処理クライアント(例えば、処理クライアント104)から別の処理クライアント(例えば、処理クライアント106)に送信されるプローブ等のステータス通信を含む。
【0013】
場合によっては、エラー又は障害等に起因して、処理システム100は、処理クライアントがリセットされると判定する。様々な実施形態では、この判定は、対応するコヒーレントエージェント、メモリコントローラ108、リセットされる処理クライアントによって、別の処理クライアントによって、又は、別のデバイスによって行われる。上述したように、場合によっては、処理クライアントのナイーブリセットは、様々なエラー、障害又は効率の損失を引き起こす。したがって、
図2を参照して以下で更に説明するように、処理クライアントのリセットと関連する問題を防止するために、様々な手順の一部又は全てがとられる。いくつかの実施形態では、処理システム100は、処理システム100の残りをリセットすることなく、処理クライアント104~106の何れかをリセットすることができる。他の実施形態では、処理クライアント104~106のうち1つ以上は、処理システム100の残りの部分をリセットせずにリセットすることができない。
【0014】
図2は、いくつかの実施形態による、共有データファブリック処理システム内の処理クライアントをリセットする方法200を示すフロー図である。方法200は、いくつかの実施形態では、対応するコヒーレントエージェント、メモリコントローラによって、リセットされる処理クライアントの一部によって、又は、別の処理クライアントによって実施される。いくつかの実施形態では、方法400は、コンピュータ可読記憶媒体によって記憶された1つ以上の命令に応じて1つ以上のプロセッサによって開始される。場合によっては、方法200は、より少ないブロック(例えば、フロー制御チェックが別の理由ですでに無効化されているので、フロー制御チェックは無効化されない)又は追加のブロックを含む。
【0015】
ブロック202において、処理クライアントは、データファブリックへの要求を行うことを停止するように命令される。例えば、処理クライアント106は、メモリコントローラ108及びデータファブリック102の処理クライアント104への要求を行うことを停止する。場合によっては、要求を行うことを停止することは、連鎖された書き込みを終了すること、及び、要求された書き込みを終了することのうち1つ以上を含む。様々な実施形態では、この要求の停止は、クリーン要求境界と一致する。
【0016】
ブロック204において、処理クライアントは、処理クライアントとメモリコントローラとの間、又は、処理クライアントと処理システムの他の処理クライアント若しくはデバイスとの間で、ステータス通信並びに読み取り要求及び書き込み要求等の様々な通信が少なくとも部分的にブロック又は傍受される一時的なオフライン状態に入るように命令される。例えば、処理クライアント106は、一時的なオフライン状態に入る。処理クライアントが一時的なオフライン状態にある結果として、いくつかの実施形態では、他の処理クライアントからの着信コヒーレンスメッセージがサービスされ続けるが、処理クライアントは、他の処理クライアントに対してオフラインであるように見える。例示する実施形態では、ブロック204は、ブロック206~210を含む。
【0017】
ブロック206において、処理クライアントの処理クレジットがワイプされる。例えば、コヒーレントエージェント136によって追跡され、処理クライアントが特定の時間内に実行することができるよりも多くのタスクを処理クライアント106が受信することを防止するために使用される処理クレジットは、割り当てられているものとして扱われる。その結果、場合によっては、処理システム100の他のデバイスが処理クライアント106にタスクを送信することが妨げられる。
【0018】
ブロック208において、処理クライアントのフロー制御チェックが無効にされる。例えば、処理クライアント106への応答及びプローブ要求に関するフロー制御チェックが無効にされる。
【0019】
ブロック210において、処理クライアントに送信されたプローブに対する応答のスプーフィングが有効化される。例えば、スプーフィングされたプローブ応答は、コヒーレントエージェント136によって生成され、処理クライアント104から処理クライアント106に送信されたプローブに応答して送信される。その結果、処理クライアント106に送信されるプローブに対する応答は、キャッシュミスの指標を含む。
【0020】
ブロック212において、処理システムは、システムからフラッシュアウトするための処理クライアントによる要求を待機する。例えば、処理システム100は、処理クライアント106による読み取り要求、書き込み要求、ステータス通信、プローブ、及び、他の通信が解決されるのを待機する。様々な実施形態では、処理システムは、10ナノ秒又は100マイクロ秒待機する。いくつかの実施形態では、待機時間量は、システムメモリ112又はコヒーレントエージェント136のメモリ等のメモリに記憶される。
【0021】
ブロック214において、処理クライアントは、非コヒーレントとしてマークされる。例えば、処理クライアント106は、そのキャッシュがフラッシュされているので、非コヒーレントとしてマークされる。その結果、例示する実施形態では、処理クライアント106はもはやキャッシュヒットではないので、プローブはもはや処理クライアント106をターゲットとしない。いくつかの実施形態では、方法400は、(例えば、スプーフィングされたプローブ応答を送信することによって)処理クライアント106をターゲットとするプローブが完了するのを待機する。
【0022】
ブロック216において、処理クライアントがリセットされる。例えば、場合によっては、処理クライアント106がリセットされ、これにより、処理クライアント106のインターフェースがリセット初期化状態に戻る。コヒーレントエージェント136は、処理クライアント106を、ソフトウェアヒューズオフ状態を有するものとして扱うように指示される。したがって、処理システム100の他の部分がオンラインのままであっても、処理クライアント106はリセットする。いくつかの実施形態では、処理クライアントをリセットすることの一部としてヒューズオフ状態を出ることは、処理クライアントの処理クレジットの数をリセットする。
【0023】
ブロック218において、処理クライアントは、一時的なオフライン状態を出る。例えば、処理クライアント106への様々な通信は、もはやブロック又は傍受されない。例示する実施形態では、ブロック218は、ブロック220、222、223を含む。
【0024】
ブロック220において、処理クライアントに送信されたプローブに対する応答のスプーフィングが無効化される。例えば、スプーフィングされた応答は、処理クライアント106に送信されたプローブに応答してもはや送信されない。ブロック222において、フロー制御チェックが有効化される。ブロック223において、処理クライアントの処理クレジットが再解放され、処理システムの他のコンポーネントに割り当てられるために利用可能である。
【0025】
ブロック224において、処理クライアントは、コヒーレントとしてマークされる。その結果、場合によっては、処理システム100内のプローブは、再び処理クライアント106をターゲットにする。これにより、処理クライアントがリセットされる。
【0026】
図3は、いくつかの実施形態による、
図1の処理クライアント106においてパケットを処理するための処理クレジットの使用を示すブロック図である。例示する実施形態では、コヒーレントエージェント136は、クレジットカウンタ302、クレジット有効化モジュール304、選択モジュール306、及び、パケットメモリ308を含む。処理クライアント106は、クレジット選択モジュール310、パケット選択モジュール312、及び、パケットメモリ314を含む。例示する実施形態はコンポーネントの特定の構成を示すが、様々な実施形態では、コンポーネントの他の組み合わせが考えられる。更に、いくつかの実施形態では、バッファ又はリピータ等の更なるコンポーネントが考えられるが、説明を容易にするために示されていない。
【0027】
パケット選択モジュール312は、処理クライアント106のアドレス指定された部分(例えば、プロセッサコア、メモリデバイス等)にパケット346を送信するようにパケットメモリ314に命令する。いくつかの実施形態では、パケット選択モジュール312は、送信されるパケットを指定する。他の実施形態では、パケットメモリ314はキューであり、次のパケットが送信される。
【0028】
上述したように、処理クレジットは、処理クライアント106に割り当てられた要求を管理するために使用される。したがって、パケット選択モジュール312は、クレジット解放信号340をクレジット選択モジュール310に送り、解放されるクレジットの数を示す。クレジット選択モジュール310は、利用可能なクレジットの指標をクレジット利用可能性信号336としてクレジットカウンタ302に送信する。
図2を参照して上述したように、いくつかの実施形態では、処理クライアント106をリセットすることは、処理クライアント106がリセットした後に処理クレジットを解放することを含む。初期クレジットカウント338は、それらの処理クレジットが使用される前に利用可能な処理クレジットの初期数を示す。クレジット選択モジュール310は、処理クレジットが再解放される処理クライアント106のリセットプロセスの一部としてアサートされるクレジットリセット信号320に基づいて、クレジット解放信号340及び初期クレジットカウント338をクレジット利用可能性信号336としてクレジットカウンタ302に送信することを選択する。
【0029】
クレジットカウンタ302は、処理クライアント106の利用可能な処理クレジットの数を追跡する。例示する実施形態では、処理クライアント106において新たに利用可能なクレジットの数を示すクレジット選択モジュール310からのクレジット利用可能性信号336に応じて、利用可能な処理クレジットの数が増やされる。選択モジュール306からのクレジット使用信号324に応じて、利用可能な処理クレジットの数が減らされる。上述したように、処理クライアント106のリセットの一部として、処理クライアント106の処理クレジットがワイプされる。いくつかの実施形態では、クレジットリセット信号320は、利用可能な処理クレジットがないことを示す。例示する実施形態では、クレジットリセット信号320は、クレジットカウンタ302及びクレジット選択モジュール310の両方に送信される。他の実施形態では、別々の信号がクレジットカウンタ302及びクレジット選択モジュール310に送信される。クレジットカウンタ302は、クレジットがクレジット表示322を介してクレジット有効化モジュール304に利用可能であるかどうかを示す。
【0030】
クレジット有効化モジュール304は、処理クレジットが利用可能であるかどうか、及び、フロー制御信号328が有効化されているかどうかに基づいて、パケットの処理を選択的に有効化又は無効化する。
図2を参照して上述したように、いくつかの実施形態では、処理クライアントリセットプロセスの一部として生じる、クレジットが利用可能でない場合又はフロー制御信号328が無効にされている場合、クレジット有効化モジュール304は、選択許可信号326を介して、選択モジュール306が処理クライアント106に送信する通信(例えば、パケット又はプローブ)を選択することを許可されていることを示す。
【0031】
選択許可信号326に応じて、選択モジュール306は、パケット選択信号332を介して、パケットメモリ308が処理クライアント106にパケットを送信することを許可されていることを示す。いくつかの実施形態では、選択モジュール306は、送信されるパケットを指定する。他の実施形態では、パケットメモリ308はキューであり、次のパケットが送信される。加えて、選択モジュール306は、パケットが処理クライアント106に送信されていることを示すクレジット使用信号324をクレジットカウンタ302に送信する。
図4を参照して以下で更に説明するように、いくつかの実施形態では、選択モジュール306は、他の通信(例えば、プローブ)が処理クライアント106に送信されることを許可されていることを更に示し、場合によっては、他の通信の許可に応じてクレジット使用信号324を送信する。
【0032】
着信要求は、パケット330としてパケットメモリ308に送られる。パケットメモリ308は、パケットがパケット342としてパケットメモリ314に送信されることを選択モジュール306がパケット選択信号332を介して示すまで、パケットを記憶する。同様に、パケットメモリ314は、パケット選択モジュール312がパケット選択信号344を介して、パケットが処理クライアント106のアドレス指定された部分(例えば、プロセッサコア、メモリデバイス等)に送信されることを示すまで、パケットを記憶する。
【0033】
図4は、いくつかの実施形態による、
図1の処理クライアント106をアドレス指定するプローブの管理を示すブロック図である。例示する実施形態では、コヒーレントエージェント136は、プローブメモリ402、プローブ選択モジュール404、スプーフモジュール406、
図3の選択モジュール306、及び、プローブメモリ408を含む。処理クライアント106は、プローブメモリ410、クライアントメモリ412、及び、プローブメモリ414を含む。例示する実施形態は、コンポーネントの特定の構成を示すが、様々な実施形態では、コンポーネントの他の組み合わせが考えられる。更に、いくつかの実施形態では、バッファ又はリピータ等の更なるコンポーネントが考えられるが、説明を容易にするために示されていない。
【0034】
プローブ428は、処理システム100の別のデバイス(例えば、メモリコントローラ108又は処理クライアント104)から受信され、プローブメモリ408に記憶される。
図3を参照して上述したように、選択モジュール306は、選択モジュール306が処理クライアント106に送信する通信(例えば、パケット又はプローブ)を選択することを許可されていることを示す選択許可信号326を受信する。例示する実施形態では、選択許可信号326に応じて、選択モジュール306は、プローブ選択信号427を介して、プローブメモリ408がプローブをプローブ430として処理クライアント106に送信することを許可されていることを示す。いくつかの実施形態では、選択モジュール306は、送信されるプローブを指定する。他の実施形態では、プローブメモリ408はキューであり、次のプローブが送信される。プローブメモリ408は、選択されたプローブをプローブ430としてプローブメモリ414及びスプーフモジュール406に送信する。
【0035】
プローブメモリ414は、プローブ430を受信し、そのプローブをプローブ436としてクライアントメモリ412に送信する。プローブ436は、クライアントメモリ412で処理され、結果として生じるプローブ応答434が生成され、プローブメモリ410に送信される。プローブメモリ410は、プローブ応答434を受信し、それをプローブ応答432としてプローブ選択モジュール404に送信する。
【0036】
図2を参照して上述したように、いくつかの実施形態では、処理クライアント106をリセットすることは、スプーフィングされたプローブ応答でいくつかのプローブに応答することを含む。したがって、プローブ430は、スプーフモジュール406に送信される。スプーフモジュール406は、プローブ430に応じてスプーフィングされたプローブ応答426を生成し、スプーフィングされたプローブ応答426をプローブ選択モジュール404に送信する。例示する実施形態では、スプーフィングされたプローブ応答426は、処理クライアント106におけるキャッシュミスを示す。しかしながら、他の実施形態では、スプーフィングされたプローブ応答426は、処理クライアント106がリセットされている等のように、他のことを示す。いくつかの実施形態では、スプーフモジュール406は、受信された各プローブに応じてスプーフィングされたプローブ応答を生成する。他の実施形態では、スプーフモジュール406は、処理クライアント106のリセットプロセスの一部として有効化される。
【0037】
プローブ選択モジュール404は、スプーフ指標(指示)420に基づいて、プローブ応答432とスプーフィングされたプローブ応答との間で選択する。例示する実施形態では、スプーフ指標420は、(例えば、処理クライアント106のリセットプロセスの一部として)プローブ応答のスプーフィングが有効化されているかどうかを示す。プローブ応答のスプーフィングが有効化されている場合、スプーフィングされたプローブ応答426が選択され、選択されたプローブ応答424として出力される。そうでない場合、プローブ応答432が選択され、選択されたプローブ応答424として出力される。プローブメモリ402は、選択されたプローブ応答424を受信し、そのプローブ応答を選択されたプローブ応答422として、要求元デバイス、メモリコントローラ108、又は、処理システム100の別のデバイスに出力する。
【0038】
いくつかの実施形態では、上述した装置及び技術は、
図1~
図4を参照して説明した処理システム等の1つ以上の集積回路(integrated circuit、IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を含むシステムに実装される。電子設計自動化(electronic design automation、EDA)及びコンピュータ支援設計(computer aided design、CAD)ソフトウェアツールは、これらのICデバイスの設計及び製造に使用することができる。これらの設計ツールは、典型的には、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計するか又は適応させるためのプロセスの少なくとも一部を実行するために、1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するための、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含み得る。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上の段階を表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶され、そこからアクセスされる。
【0039】
いくつかの実施形態では、コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0040】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
【0041】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0042】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【0043】
本開示内では、場合によっては、異なるエンティティ(これらは、「コンポーネント」、「ユニット」、「デバイス」等と様々に呼ばれる)が1つ以上のタスク又は動作を実行するように「構成されている」と説明又は特許請求される。この明確な語句「1つ以上のタスクを実行する」ように構成されるエンティティは、本明細書では構造(すなわち、電子回路等の物理的なもの)を指すために使用される。より具体的には、この明確な語句は、この構造が動作中に1つ以上のタスクを実行するようになっていることを示すために使用される。構造は、構造が現在動作されていなくても、何らかのタスクを実行するように「~するように構成される」と言うことができる。「データを記憶するように構成されるメモリデバイス」は、例えば、対象の集積回路が現在使用されていなくても(例えば、電源がそれに接続されない)、動作中にデータを記憶する回路を有する集積回路を包含するように意図される。したがって、いくつかのタスクを実行するように「~するように構成される」と説明又は列挙されるエンティティは、デバイス、回路、タスクを実施するために実行可能なプログラム命令を記憶するメモリ等の物理的な何かを指す。この句は、無形の何かを指すために本明細書では使用されない。更に、「~するように構成される」という用語は、「ように構成可能である」ことを意味することを意図しない。例えば、プログラムされていないフィールドプログラマブルゲートアレイは、何らかの特定の機能を果たすように「~するように構成される」とはみなされないが、プログラミング後にその機能を果たす「~するように構成可能」となり得る。加えて、構造が1つ以上のタスクを実行する「~するように構成される」と添付の特許請求の範囲に記載することは、ミーンズプラスファンクション要素を有すると解釈されることを明確に意図していない。
【手続補正書】
【提出日】2023-05-23
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法であって、
処理システムの第1のクライアントプロセッサをリセットすることであって、前記リセットすることは、前記処理システムの共有データファブリックに接続された1つ以上のデバイスへの要求を停止するように、前記第1のクライアントプロセッサに命令することと、前記第1のクライアントプロセッサと、前記共有データファブリックのメモリコントローラと、の間のステータス通信をブロックすることと、前記第1のクライアントプロセッサをリセットさせることと、によって行われる、ことと、
前記第1のクライアントプロセッサを再有効化することと、を含む、
方法。
【請求項2】
前記第1のクライアントプロセッサが要求するのを停止することは、前記第1のクライアントプロセッサが、連鎖した書き込み動作を終了し、書き込み動作を完了することを含む、
請求項1の方法。
【請求項3】
前記ステータス通信をブロックした後に、前記第1のクライアントプロセッサが前記メモリコントローラに対して非コヒーレントであることを示すことを更に含む、
請求項1又は2の方法。
【請求項4】
前記第1のクライアントプロセッサを再有効化することは、
前記第1のクライアントプロセッサと、前記メモリコントローラと、の間の前記ステータス通信を再開させることと、
前記第1のクライアントプロセッサが前記メモリコントローラに対してコヒーレントであることを示すことと、を含む、
請求項3の方法。
【請求項5】
前記ステータス通信をブロックすることにより、前記第1のクライアントプロセッサが一時的なオフライン状態になり、
前記ステータス通信を再開させることにより、前記第1のクライアントプロセッサの前記一時的なオフライン状態が終了する、
請求項4の方法。
【請求項6】
前記第1のクライアントプロセッサが前記一時的なオフライン状態になった後であって、前記第1のクライアントプロセッサが非コヒーレントであることを示す前に、前記第1のクライアントプロセッサへの残りのステータス要求が応答されるのを待機することを更に含む、
請求項5の方法。
【請求項7】
前記ステータス通信をブロックすることは、前記第1のクライアントプロセッサによるステータス応答に対するフロー制御チェックを無効化することを含み、
前記ステータス通信を再開させることは、前記第1のクライアントプロセッサによるステータス応答に対するフロー制御チェックを有効化することを含む、
請求項4の方法。
【請求項8】
前記ステータス通信をブロックすることは、前記第1のクライアントプロセッサに送信されたプローブのスプーフィングを有効化することを含み、
前記ステータス通信を再開させることは、前記第1のクライアントプロセッサに送信されたプローブのスプーフィングを無効化することを含む、
請求項4の方法。
【請求項9】
プローブのスプーフィングを有効化することは、前記第1のクライアントプロセッサと関連付けられたコヒーレントエージェントによって、前記第1のクライアントプロセッサにアドレス指定されたプローブに応じて生成された、スプーフィングされたプローブ応答を送信することを含む、
請求項8の方法。
【請求項10】
プローブのスプーフィングを有効化することは、前記第1のクライアントプロセッサと関連付けられたコヒーレントエージェントによって、前記スプーフィングされたプローブ応答を生成することを含む、
請求項9の方法。
【請求項11】
前記第1のクライアントプロセッサをリセットさせることは、前記第1のクライアントプロセッサと関連付けられたコヒーレントエージェントに対して、前記第1のクライアントプロセッサを前記共有データファブリックにおいてヒューズオフ状態を有するものとして扱うように命令することを含む、
請求項1~10の何れかの方法。
【請求項12】
デバイスであって
並列処理ユニットと、
中央処理ユニット(CPU)と、
データファブリックと、を備え、
前記データファブリックは、
メモリコントローラと、
コヒーレントエージェントと、を備え、
前記メモリコントローラは、
前記CPUから前記並列処理ユニットにステータス通信を送信することであって、前記ステータス通信は、パケット及びプローブを含む、ことを行うように構成されており、
前記コヒーレントエージェントは、
前記CPUをリセットすることなく、前記並列処理ユニットがリセットされることを判定することと、
前記並列処理ユニットがリセットされることを判定したことに応じて、前記メモリコントローラと、前記並列処理ユニットと、の間の前記ステータス通信をブロックすることと、
前記並列処理ユニットのリセットをトリガすることと、
を行うように構成されている、
デバイス。
【請求項13】
前記メモリコントローラは、
前記メモリコントローラと、前記並列処理ユニットと、の間のステータス通信が少なくとも特定の時間にわたってブロックされた後に、前記並列処理ユニットを非コヒーレントとしてマークするように更に構成されている、
請求項12の
デバイス。
【請求項14】
前記コヒーレントエージェントは、
クレジットリセット信号に基づいて、前記並列処理ユニットからのクレジット利用可能信号によって示される処理クレジットの第1の数と、ゼロ処理クレジットとの間で選択するように構成されたクレジットカウンタを備え、
前記クレジットリセット信号は、前記メモリコントローラと、前記並列処理ユニットと、の間の前記ステータス通信をブロックすることの一部として送信される、
請求項12又は13の
デバイス。
【請求項15】
前記コヒーレントエージェントは、
前記クレジットカウンタから受信した前記並列処理ユニットの処理クレジットの指標に基づいて、前記コヒーレントエージェントの1つ以上のメモリデバイスに対して、ステータス通信を前記並列処理ユニットに送信するように命令するように構成された選択モジュールを備える、
請求項14の
デバイス。
【請求項16】
前記コヒーレントエージェントは、
前記メモリコントローラと、前記並列処理ユニットと、の間の前記ステータス通信をブロックすることの一部として、スプーフされたプローブ応答を前記メモリコントローラに送信するように構成されたスプーフモジュールを備える、
請求項12の
デバイス。
【請求項17】
方法であって、
少なくとも1つのグラフィック処理ユニット(GPU)と、少なくとも1つの中央処理ユニット(CPU)と、を備える処理システムの第1のクライアントプロセッサをリセットすることであって、前記第1のクライアントプロセッサをリセットすることは、前記第1のクライアントプロセッサと、前記処理システムのデータファブリックのメモリコントローラと、の間のステータス通信を傍受することと、前記第1のクライアントプロセッサをリセットさせることと、を含む、ことと、
前記第1のクライアントプロセッサを再有効化することと、を含む、
方法。
【請求項18】
前記第1のクライアントプロセッサの処理クレジットは、前記データファブリックに接続された1つ以上のデバイスに分配され、
前記ステータス通信を傍受することは、
前記第1のクライアントプロセッサの前記処理クレジットをワイピングすることと、
前記第1のクライアントプロセッサの前記処理クレジットを初期クレジットカウントにリセットすることと、を含む、
請求項17の方法。
【請求項19】
前記処理システムのデータファブリックに接続された1つ以上のデバイスへの要求を停止するように前記第1のクライアントプロセッサに命令することであって、第2のクライアントプロセッサの処理クレジットが前記第1のクライアントプロセッサに割り当てられるのを防止することを含む、ことを更に含む、
請求項17又は18の方法。
【請求項20】
前記ステータス通信を傍受することは、前記第1のクライアントプロセッサによる応答に対するフロー制御チェックを無効化することを含む、
請求項17~19の何れかの方法。
【国際調査報告】