(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-05
(54)【発明の名称】メモリからの直接データ読み出しのためのシステム、装置、及び方法
(51)【国際特許分類】
G06F 12/0831 20160101AFI20241128BHJP
【FI】
G06F12/0831
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023573681
(86)(22)【出願日】2022-10-28
(85)【翻訳文提出日】2023-12-21
(86)【国際出願番号】 US2022048137
(87)【国際公開番号】W WO2023121766
(87)【国際公開日】2023-06-29
(32)【優先日】2021-12-22
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ブランケンシップ、ロバート
(72)【発明者】
【氏名】ダス シャーマ、デベンドラ
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK14
5B205MM03
5B205NN01
5B205NN81
5B205UU31
(57)【要約】
実施形態において、システムは、第1、第2、及び第3のポートを有するインターコネクトデバイス;第1のポートに結合された第1のプロセッサ;第2のポートに結合された第2のプロセッサ;及び、第3のポートに結合されたシステムメモリ、を備え得る。インターコネクトデバイスは:第1のポートを介して第1のプロセッサから、システムメモリに記憶されたデータ要素についての投機的読み出し要求を受信する、ここでデータ要素のコヒーレンスは、第2のプロセッサによって管理される、データ要素についての直接読み出し要求を受信する、直接読み出し要求を投機的読み出し要求とマージする、及び、第1のポートを介して第1のプロセッサにデータ要素を直接伝送する、ことになり得る。他の実施形態が説明及び特許請求される。
【特許請求の範囲】
【請求項1】
第1、第2、及び第3のポートを有するインターコネクトデバイス;
前記第1のポートに結合された第1のプロセッサ;
前記第2のポートに結合された第2のプロセッサ;及び
前記第3のポートに結合されたシステムメモリ
を備え、前記インターコネクトデバイスは:
前記第1のポートを介して前記第1のプロセッサから、前記システムメモリに記憶されたデータ要素についての投機的読み出し要求を受信する、ここで前記データ要素のコヒーレンスは、前記第2のプロセッサによって管理される、
前記データ要素についての直接読み出し要求を受信する、
前記直接読み出し要求を前記投機的読み出し要求とマージする、及び
前記第1のポートを介して前記第1のプロセッサに前記データ要素を直接伝送する
ことになる、システム。
【請求項2】
前記インターコネクトデバイスは:
前記投機的読み出し要求の受信に応答して、前記第3のポートを介して前記システムメモリにメモリ読み出し要求を送信する;及び
前記第3のポートを介して前記システムメモリから前記データ要素を受信する
ことになる、請求項1に記載のシステム。
【請求項3】
前記インターコネクトデバイスは:
前記第1のポートを介して前記第1のプロセッサから前記直接読み出し要求を受信する
ことになる、請求項1に記載のシステム。
【請求項4】
前記インターコネクトデバイスは:
前記第2のポートを介して前記第2のプロセッサから前記直接読み出し要求を受信する;及び
前記第2のポートを介して前記第2のプロセッサに前記直接読み出し要求の肯定応答を伝送する
ことになる、請求項1に記載のシステム。
【請求項5】
前記インターコネクトデバイスは:
前記直接読み出し要求及び前記投機的読み出し要求を含む少なくとも1つの識別子の比較に基づき、前記直接読み出し要求を前記投機的読み出し要求とマージする
ことになる、請求項1に記載のシステム。
【請求項6】
前記第1のプロセッサは、前記第2のプロセッサに読み出しデータメッセージを送信することになる;
前記第2のプロセッサは、前記読み出しデータメッセージの受信に応答して、前記第1のプロセッサに完了メッセージを送信することになる;及び
前記第1のプロセッサは、前記完了メッセージの受信に応答して、前記インターコネクトデバイスに前記直接読み出し要求を送信することになる、
請求項1に記載のシステム。
【請求項7】
前記第1のプロセッサ及び前記第2のプロセッサはプロセッサインターコネクトリンクによって結合されており、前記データ要素は前記プロセッサインターコネクトリンクを通過しない、請求項1に記載のシステム。
【請求項8】
前記インターコネクトデバイスは、マルチヘッドメモリバッファデバイスを有する、請求項1に記載のシステム。
【請求項9】
前記直接読み出し要求及び前記投機的読み出し要求は、コンピュートエクスプレスリンク(CXL)プロトコルメッセージを含む、請求項1に記載のシステム。
【請求項10】
第1のプロセッサに結合するための第1のインターコネクトポート;
第2のプロセッサに結合するための第2のインターコネクトポート;
システムメモリに結合するための第3のインターコネクトポート;及び
前記第1のプロセッサから、前記システムメモリに記憶されたデータ要素についての投機的読み出し要求を受信する、ここで前記データ要素のコヒーレンスは、前記第2のプロセッサによって管理される、
前記データ要素についての直接読み出し要求を受信する、
前記直接読み出し要求を前記投機的読み出し要求とマージする、及び
前記第1のインターコネクトポートを介して前記第1のプロセッサに前記データ要素を直接伝送する
ための直接読み出し回路
を備える、装置。
【請求項11】
前記装置は、マルチヘッドメモリバッファデバイスを備える、請求項1に記載の装置。
【請求項12】
前記直接読み出し回路は:
前記投機的読み出し要求の受信に応答して、前記システムメモリにメモリ読み出し要求を送信する;及び
前記システムメモリから前記データ要素を受信する
ことになる、請求項10に記載の装置。
【請求項13】
前記直接読み出し回路は:
前記第1のインターコネクトポートを介して前記第1のプロセッサから前記直接読み出し要求を受信する
ことになる、請求項10に記載の装置。
【請求項14】
前記直接読み出し回路は:
前記第2のインターコネクトポートを介して前記第2のプロセッサから前記直接読み出し要求を受信する;及び
前記第2のプロセッサに前記直接読み出し要求の肯定応答を伝送する
ことになる、請求項10に記載の装置。
【請求項15】
前記直接読み出し回路は:
前記直接読み出し要求及び前記投機的読み出し要求を含む少なくとも1つの識別子の比較に基づき、前記直接読み出し要求を前記投機的読み出し要求とマージする
ことになる、請求項10に記載の装置。
【請求項16】
前記直接読み出し要求及び前記投機的読み出し要求は、コンピュートエクスプレスリンク(CXL)プロトコルメッセージを含む、請求項10に記載の装置。
【請求項17】
第1のコヒーレンシドメインに関連付けられた第1のプロセッサ;
第2のコヒーレンシドメインに関連付けられた第2のプロセッサ;及び
前記第1のプロセッサ、前記第2のプロセッサ、及び前記システムメモリに結合されたインターコネクトデバイス
を備え、
ここで前記第1のプロセッサ及び前記第2のプロセッサのそれぞれは、階層的コヒーレンシ管理モード及びフラットコヒーレンシ管理モードから選択するためのコヒーレンシ回路を有し、
ここで前記階層的コヒーレンシ管理モードは、前記インターコネクトデバイスによる、前記第1のコヒーレンシドメイン及び前記第2のコヒーレンシドメインにまたがるコヒーレンシの調整を有し;及び
ここで前記フラットコヒーレンシ管理モードは、前記コヒーレンシ回路による、単一のコヒーレンシドメインにおけるコヒーレンシの管理を有する、
システム。
【請求項18】
前記インターコネクトデバイスは:
前記第1のプロセッサからデータ要素についての直接読み出し要求を受信する;
前記第1のコヒーレンシドメイン及び前記第2のコヒーレンシドメインにまたがる前記データ要素のコヒーレンシを調整する;
バック無効化スヌープメッセージを送信して、前記第1のコヒーレンシドメイン及び前記第2のコヒーレンシドメインのうち少なくとも1つにおける前記データ要素のコヒーレンシ状態を修正する;及び
前記第1のインターコネクトポートを介して前記第1のプロセッサに前記データ要素を直接伝送する
ことになる、請求項17に記載のシステム。
【請求項19】
前記インターコネクトデバイスは、コンピュートエクスプレスリンク(CXL)マルチヘッドメモリバッファデバイスを有し、ここで前記インターコネクトデバイスは、内部ディレクトリを更新して前記第1のコヒーレンシドメイン及び前記第2のコヒーレンシドメインのうち少なくとも1つにおける前記データ要素のコヒーレンシ状態を示すことになる、請求項18に記載のシステム。
【請求項20】
前記第1のプロセッサ及び前記第2のプロセッサのそれぞれは:
前記階層的コヒーレンシ管理モードに関連付けられたキャッシュ位置を識別するための第1のリスト;及び
前記フラットコヒーレンシ管理モードに関連付けられたキャッシュ位置を識別するための第2のリスト
を有する、請求項17に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、コンピューティング環境においてメモリにアクセスすることに関する。
【背景技術】
【0002】
現代のコンピュータシステムは、相互接続によって共に結合される、中央処理ユニット(Central Processing Unit:CPU)、メモリ、チップセット、及び/又は多くの他のデバイス(例えば、コンピュータバス、ネットワークなど)のような任意の数のコンポーネントを含み得る。相互接続は、コンピュータ内のデバイス又はコンポーネント間、並びにコンピュータ間でデータを転送し得る。例えば、相互接続は、メモリからデータ要素を読み出し、当該データ要素をプロセッサに提供するために使用され得る。
【図面の簡単な説明】
【0003】
【
図1】実施形態による例示的なシステムのブロック図である。
【0004】
【
図2】実施形態による例示的なプロセスの説明図である。
【0005】
【
図3】実施形態による例示的なプロセスの説明図である。
【0006】
【
図4A】実施形態による例示的なプロセスの説明図である。
【0007】
【
図4B】実施形態による例示的なシステムのブロック図である。
【0008】
【
図5】1つ又は複数の実施形態による例示的な方法のフロー図である。
【0009】
【
図6】実施形態による例示的なシステムのブロック図である。
【0010】
【
図7】実施形態による例示的なシステムのブロック図である。
【0011】
【
図8】実施形態による例示的なシステムのブロック図である。
【0012】
【
図9】実施形態による例示的なシステムのブロック図である。
【発明を実施するための形態】
【0013】
一部のコンピューティングシステムは、メモリ及びアクセラレータ等のようなコンポーネントを動的に追加する能力を提供する相互接続プロトコルを実装し得る。例えば、一部のシステムは、CXL1.1仕様(又は、CXL仕様の任意の将来のバージョン、修正、変形、又は代替)などの、コンピュートエクスプレスリンク(Compute Express Link:CXL)仕様による相互接続及びスイッチを実装し得る。CXL仕様を実装し得る例示的なデバイスは、メモリ拡張及びメモリ帯域幅の拡大のための機能を提供し得るメモリバッファデバイス(例えば、メモリエキスパンダデバイス(memory expander device))である。メモリバッファデバイスは、複数のポートを含み得、複数のプロセッサが共有メモリデバイスにアクセスすることを可能にし得る。
【0014】
幾つかの例において、共有メモリは、メモリの様々な部分が特定のプロセッサに関連付けられている分散方式で実装され得る。例えば、各プロセッサは特定のメモリアドレス範囲を割り当てられ得、その割り当てられたアドレス範囲におけるデータのキャッシュコヒーレンスを管理し得る。キャッシュコヒーレンシを管理するプロセッサは、その特定のメモリ範囲の「ホームプロセッサ」(又は「ホームエージェント」)と称され得る。しかしながら、そのような状況において、メモリ読み出しを実行することは、複数のインタラクション又は「ホップ」を含み得、従って、著しい遅延及び帯域幅の消費を伴い得る。例えば、第1のプロセッサが、第2のプロセッサに割り当てられているメモリアドレスからデータを読み出す旨の要件と有すると仮定する。この例において、読み出しを実行することは、4つのホップ、すなわち、第1のプロセッサがプロセッサインターコネクトリンクを介して第2のプロセッサに第1の読み出しコマンドを送信すること、第2のプロセッサがCXLリンクを介してメモリバッファデバイスに第2の読み出しコマンドを送信すること、メモリバッファデバイスがCXLリンクを介して第2のプロセッサにデータを送信すること、及び、第2のプロセッサが次にプロセッサインターコネクトリンクを介して第1のプロセッサにデータを送信すること、を必要とし得る。従って、データ読み出しは、(例えば、複数のホップに起因する)著しい遅延を伴い得、(例えば、プロセッサインターコネクトリンクにまたがってデータを転送し、それに応じてプロセッサインターコネクトリンクのサイズを調整するために)相当な帯域幅、電力、及びコストを必要とし得る。
【0015】
本明細書で説明される様々な実施形態において、インターコネクトデバイスは、プロセッサが、別のプロセッサ(すなわち、「ホーム」プロセッサ)によって管理されるキャッシュコヒーレンシを有するメモリアドレスからデータを直接読み出すことを可能にするための回路又は他のロジックを含み得る。更に、インターコネクトデバイスは、ディレクトリの維持及びバック無効化(back-invalidate)フローの開始等を含む、直接読み出しに関連付けられたコヒーレンスタスクをハンドリングし得る。幾つかの実施形態において、直接データ転送は、ホームプロセッサ及びプロセッサインターコネクトを通過しない場合がある。従って、直接読み出しは、比較的少ないホップ(例えば、2つのホップ)において実行され得、それによって、従来の手法に比べてより少ない遅延及び帯域幅を伴い得る。更に、幾つかの実施形態は、メモリ読み出しに関連付けられた電力消費を削減し得、プロセッサインターコネクトのサイズ調整に関連付けられたコストを削減し得る。
【0016】
【0017】
ここで
図1を参照すると、1つ又は複数の実施形態による例示的なシステム100のブロック図が示されている。システム100は、第1のポート121を介して第1のプロセッサ130に結合され、且つ、第2のポート122を介して第2のプロセッサ135に接続されたインターコネクトデバイス120を含み得る。更に、インターコネクトデバイス120は、第3のポート123及び第4のポート124を介してシステムメモリ110に結合され得る。幾つかの実施形態において、インターコネクトデバイス120は、タイプ3のCXLデバイス(例えば、メモリバッファデバイス)及びタイプ2のCXLデバイス等であり得る。更に、ポート121、122、123、124はCXLプロトコルを実装し得、対応するデバイス110、130、135と共にCXL相互接続に結合され得る。第1のプロセッサ130は、プロセッサインターコネクト140を介して第2のプロセッサ135に接続され得る。幾つかの実施形態において、システム100は、単一のキャッシュコヒーレンシドメインを表し得る。
【0018】
システムメモリ110は、任意のタイプのコンピュータメモリ(例えば、ダイナミックランダムアクセスメモリ(Dynamic Random-Access Memory:DRAM)、スタティックランダムアクセスメモリ(Static Random-Access Memory:SRAM)、不揮発性メモリ(Non-Volatile Memory:NVM)、DRAM及びNVMの組み合わせなど)で実装され得る。第1及び第2のプロセッサ130、135のそれぞれは、ハードウェア処理デバイス(例えば、中央処理ユニット(Central Processing Unit:CPU)及びシステムオンチップ(System on a Chip:SoC)等)であり得、任意の数の処理回路(本明細書では「処理コア」又は「処理エンジン」とも称される)を含み得る。更に、システムメモリ110は、様々なメモリデバイスで形成され得る。
【0019】
図示されている通り、インターコネクトデバイス120は、直接読み出し回路125を含み得る。幾つかの実施形態において、直接読み出し回路125は、プロセッサが、別のプロセッサに関連付けられたメモリアドレスからデータを直接読み出すことを可能にし得る。例えば、第1のプロセッサ130が、システムメモリ110に記憶されたデータ要素115(例えば、キャッシュライン)を読み出す旨の要求を発行すると仮定する。更に、第2のプロセッサ135が、データ要素115のホームプロセッサである(例えば、第2のプロセッサ135が、データ要素115のアドレスのキャッシュコヒーレンスを担っている)と仮定する。幾つかの実施形態において、インターコネクトデバイス120は、CXLデバイス(例えば、マルチヘッドメモリバッファデバイス、アクセラレータデバイス、及び入力/出力デバイス等)であり得る。
【0020】
幾つかの実施形態において、直接読み出し回路125は、第1のプロセッサ130へのデータ要素115の直接データ転送155を介して直接読み出しを実行するための機能を含み得る。更に、直接読み出し回路125は、ディレクトリの維持及びバック無効化フローの開始等を含む、直接読み出しに関連付けられたコヒーレンスタスクを実行し得る。更に、幾つかの実施形態において、プロセッサ130、135及びメモリ120は、直接読み出しに関連付けられたタスクを実行するための回路又は他のロジックを含み得る。幾つかの実施形態において、直接データ転送155は、第2のプロセッサ135及びプロセッサインターコネクト140を通過しない場合がある。従って、直接読み出しは、比較的少ないホップ(例えば、2つのホップ)において実行され得、それによって、従来の手法に比べてより少ない遅延及び帯域幅を伴い得る。システム100の直接読み出し機能は、
図2~5を参照して以下で更に説明される。
【0021】
幾つかの例は、コンピュートエクスプレスリンク(CXL)仕様に関連して本明細書で説明されるが、実施形態はこの点で限定されないことに留意されたい。例えば、様々な実施形態が、IBM XBusプロトコル、Nvidia NVLinkプロトコル、AMD Infinity Fabricプロトコル、アクセラレータ用キャッシュコヒーレントインターコネクト(Cache Coherent Interconnect for Accelerators:CCIX)プロトコル、又はコヒーレントアクセラレータプロセッサインタフェース(Coherent Accelerator Processor Interface:OpenCAPI)などの他のコヒーレントインターコネクト技術において使用され得ることが企図されている。
【0022】
【0023】
ここで
図2を参照すると、1つ又は複数の実施形態による第1の直接読み出しプロセス200の例示的な図が示されている。特に、
図2は、リモートプロセッサ201、ホームプロセッサ202、インターコネクトデバイス203、及びメモリ204の間のデータ交換のシーケンスを示している。デバイス201、202、203、204は、(
図1に示されている)デバイス130、135、120、110の例示的な実装形態にそれぞれ対応し得る。幾つかの実施形態において、インターコネクトデバイス203は、CXLマルチヘッドメモリバッファデバイス(例えば、メモリエキスパンダデバイス)であり得る。リモートプロセッサ201を参照して以下で説明される動作は、リモートプロセッサ201に含まれるキャッシングエージェントによって実行され得る。更に、ホームプロセッサ202を参照して以下で説明される動作は、ホームプロセッサ202に含まれるホームエージェントによって実行され得る。
【0024】
プロセス200は、リモートプロセッサ201がメモリ204にデータ要素(例えば、キャッシュライン)を要求することから開始し得る。特に、
図2に示されている通り、リモートプロセッサ201は、投機的読み出しメッセージ210(「MemSpecRd」)をインターコネクトデバイス203に送信(すなわち、伝送)し得る。リモートプロセッサ201は、データ転送専用(Data Forward Only:DFO)メッセージ220(「RdOwnDFO」)をホームプロセッサ202に同時に送信し得る。幾つかの実施形態において、DFOメッセージ220は、要求されたデータがピアキャッシュ内で見つかった場合にのみ、それが返されることを要求する(すなわち、キャッシュツーキャッシュ(cache-to-cache)転送)。ホームプロセッサ202が、要求されたデータが他のピアキャッシュ内で見つからないと判定する場合、ホームプロセッサ202は、クリーン完了メッセージ225(「CmpO_Clean」)を送信して、リモートプロセッサ201がデータを伴わない排他的所有権を有していることをリモートプロセッサ201に通知し得る。従って、リモートプロセッサ201は、直接メモリ読み出しメッセージ230(「MemRd」)をインターコネクトデバイス203に送信し得る。或いは、要求されたデータがピアキャッシュ内で見つかった場合、ホームプロセッサ202は、リモートプロセッサ201にクリーン完了メッセージ225を送信しない(
図2に示されていない)。従って、リモートプロセッサ201は、直接読み出しを完了できない場合がある。代わりに、リモートプロセッサ201は、従来の(すなわち、直接読み出しを実行しない)読み出し要求をホームプロセッサ202に送信し得る。
【0025】
図2に示されている通り、リモートプロセッサ201から投機的読み出しメッセージ210を受信することに応答して、インターコネクトデバイス203は、メモリ204にメモリ読み出し要求215(「MRd」)を送信し、それによって、メモリ204に、要求されたデータを含むメッセージ240をインターコネクトデバイス203に送信させ得る。更に、直接メモリ読み出しメッセージ230を受信すると、インターコネクトデバイス203は、投機的読み出しメッセージ210及び直接メモリ読み出しメッセージ230のマージ235を実行し得る。インターコネクトデバイス203は、要求された(すなわち、メッセージ240において受信された)データを含むメッセージ250を、リモートプロセッサ201に直接送信し得る。この方式で、データはリモートプロセッサ201に直接転送され得る。幾つかの実施形態において、DFOメッセージ220及びクリーン完了メッセージ225は、CXLプロトコルを用いて実装され得る。更に、
図2に示されている残りのメッセージ210、215、230、240、250、220は、プロセッサインターコネクトプロトコル(例えば、Intel(登録商標)ウルトラパスインターコネクト(Ultra-Path Interconnect:UPI)プロトコル)を用いて実装され得る。
【0026】
幾つかの実施形態において、リモートプロセッサ201は、直接メモリ読み出しメッセージ230(すなわち、要求されたデータを含むメッセージ250)への応答を待機している間、(例えば、バック無効化(back invalidation)チャネルからの)スヌープをブロックしない場合がある。例えば、スヌープをそのようにブロックすることは、デッドロック状態を引き起こし得る。従って、スヌープを受信すると、リモートプロセッサ201は、要求されたデータについてのその排他的所有権をリリースし得、従来の(すなわち、直接読み出しを実行しない)読み出し要求をホームプロセッサ202にサブミットして、それにより、所有権及びデータを同時に提供し得る。
【0027】
幾つかの実施形態において、プロセス200は、ホームエージェント及びメモリコントローラがシリコンタイルベースプロセッサの異なるダイ上に配置され、キャッシングエージェントがメモリコントローラと同じダイ上に配置される実施形態に対して実行され得る。そのような実施形態は、リモートエージェントがネイティブメモリコントローラから直接読み出すことを可能にし、それによって、ダイツーダイ(die-to-die)インタフェース上でデータを渡すことを回避し得る。この方式で、そのような実施形態は、同じ場所に配置されたキャッシングエージェント及びメモリコントローラのデータフローのために必要とされる電力及びダイツーダイ帯域幅を削減し得る。
【0028】
【0029】
ここで
図3を参照すると、1つ又は複数の実施形態による第2の直接読み出しプロセス300の例示的な図が示されている。示されている通り、
図3は、(
図2にも示されている)リモートプロセッサ201、ホームプロセッサ202、インターコネクトデバイス203、及びメモリ204の間のデータ交換のシーケンスを示している。デバイス201、202、203、204は、(
図1に示されている)デバイス130、135、120、110の例示的な実装形態にそれぞれ対応し得る。幾つかの実施形態において、インターコネクトデバイス203は、CXLマルチヘッドメモリバッファデバイスであり得る。リモートプロセッサ201を参照して以下で説明される動作は、リモートプロセッサ201に含まれるキャッシングエージェントによって実行され得る。更に、ホームプロセッサ202を参照して以下で説明される動作は、ホームプロセッサ202に含まれるホームエージェントによって実行され得る。
【0030】
プロセス300は、リモートプロセッサ201が投機的読み出しメッセージ310(「MemSpecRd」)をインターコネクトデバイス203に送信することから開始し得る。リモートプロセッサ201は、読み出しデータメッセージ320(「RdData」)をホームプロセッサ202に同時に送信し得る。読み出しデータメッセージ320を受信すると、ホームプロセッサ202は、リモートプロセッサ201に完了メッセージを送り返し得、また、インターコネクトデバイス203に直接メモリ読み出しメッセージ330(「MemRd_Direct」)を送信し得る。更に、ホームプロセッサ202は、直接メモリ読み出しメッセージ330を割り当て得る、又はその追跡を開始し得る。幾つかの実施形態において、直接メモリ読み出しメッセージ330は、要求されたデータがメモリ204からリモートプロセッサ201に直接送信されることになることを示し得る。更に、直接メモリ読み出しメッセージ330は、リクエスタについての識別データ(例えば、リクエスタ識別子及びアドレス)を記憶するための1つ又は複数のフィールドを含み得る。
【0031】
直接メモリ読み出しメッセージ330を受信すると、インターコネクトデバイス203は、含まれる識別データを使用して直接メモリ読み出しメッセージ330を投機的読み出しメッセージ310と照合し得る。インターコネクトデバイス203は、直接メモリ読み出しメッセージ330及び投機的読み出しメッセージ310のマージ332を実行し得、それによって、データを受信することになるリクエスタを判定し得る。インターコネクトデバイス203は、直接読み出し肯定応答メッセージ335(「Direct_ACK」)をホームプロセッサ202に送信し得る。直接読み出し肯定応答メッセージ335を受信すると、ホームプロセッサ202は、メモリ読み出しメッセージ330の割り当てを解除し得る、又はその追跡を停止し得る。幾つかの実施形態において、マージ332を実行することは、メッセージ310、330におけるリクエスタ識別子及びアドレスを照合し、それによって、リクエスタに返されることになるタグを判定することを含み得る。しかしながら、照合が成立しない場合、マージは失敗し、代わりに従来の読み出し要求が実行され得る。
【0032】
図3に示されている通り、リモートプロセッサ201から投機的読み出しメッセージ310を受信することに応答して、インターコネクトデバイス203は、メモリ204にメモリ読み出し要求315(「MRd」)を送信し、それによって、メモリ204に、要求されたデータを含むメッセージ340をインターコネクトデバイス203に送信させ得る。メッセージ340を受信した後、及びマージ332を実行した後、インターコネクトデバイス203は、要求された(すなわち、メッセージ340において受信された)データを含む直接データメッセージ350(「Direct_Data」)を、リモートプロセッサ201に直接送信し得る。この方式で、データはリモートプロセッサ201に直接転送され得る。幾つかの実施形態において、直接メモリ読み出しメッセージ330、投機的読み出しメッセージ310、及び直接データメッセージ350は、CXLプロトコルを用いて実装され得る。
【0033】
【0034】
ここで
図4Aを参照すると、1つ又は複数の実施形態による第3の直接読み出しプロセス400の例示的な図が示されている。示されている通り、
図4Aは、第1のリモートプロセッサ401、第1のホームプロセッサ402、インターコネクトデバイス403、メモリ404、第2のホームプロセッサ405、及び第2のリモートプロセッサ406の間のデータ交換のシーケンスを示している。デバイス401、402、403、404は、(
図1に示されている)デバイス130、135、120、110の例示的な実装形態にそれぞれ対応し得る。更に、デバイス406、405は、デバイス130、135の例示的な実装形態にそれぞれ対応し得る。幾つかの実施形態において、インターコネクトデバイス403は、CXLマルチヘッドメモリバッファデバイスであり得る。リモートプロセッサ401、406を参照して以下で説明される動作は、リモートプロセッサ401、406に含まれるキャッシングエージェントによって実行され得る。更に、ホームプロセッサ402、405を参照して以下で説明される動作は、ホームプロセッサ402、405に含まれるホームエージェントによって実行され得る。
【0035】
幾つかの実施形態において、リモートプロセッサ401及びホームプロセッサ402は、第1の仮想階層(Virtual Hierarchy:VH)407に含まれ得る。更に、リモートプロセッサ406及びホームプロセッサ405は、第2の仮想階層(VH)408に含まれ得る。幾つかの実施形態において、各仮想階層は、特定のリンクを介してインターコネクトデバイス403に接続された1つ又は複数のデバイスを表し得、別個のキャッシュコヒーレンシドメインを使用し得る。幾つかの例において、各仮想階層407、408内のキャッシュコヒーレンスは、プロセッサインターコネクトプロトコル(例えば、Intel(登録商標)ウルトラパスインターコネクト(UPI)プロトコルを用いて管理され得る。インターコネクトデバイス403は、複数の仮想階層にまたがるコヒーレンシを解決するための回路を含み得る。例えば、インターコネクトデバイス403は、第1及び第2の仮想階層407、408の異なるコヒーレンスドメインにまたがるコヒーレンスを調整するための回路及び/又は他のロジックを含むCXLメモリバッファデバイスであり得る。幾つかの実施形態において、インターコネクトデバイス403は、コヒーレンスを解決するために、バック無効化コマンドを使用し得る。
【0036】
図4Aに示されている通り、プロセス400は、第1のVH407内のリモートプロセッサ401が第1のVH407内のホームプロセッサ402に読み出しメッセージ410を送信することから開始し得る。読み出しメッセージ410を受信すると、ホームプロセッサ402は、インターコネクトデバイス403にメモリ読み出しメッセージ414を送信し得る。インターコネクトデバイス403は、メモリ404にメモリ読み出し要求416を送信し、それによって、メモリ404に、要求されたデータを含むメッセージ420をインターコネクトデバイス403に送信させ得る。
【0037】
メッセージ420を受信すると、インターコネクトデバイス403は、(要求されたデータを含む)データメッセージ422をホームプロセッサ402に送信し得る。更に、インターコネクトデバイス403は、コヒーレンスディレクトリを更新して、要求されたデータが第1のVH407によって排他的に所有されていること(例えば、「Dir=E@VH407」)を示し得る。幾つかの例において、コヒーレンスディレクトリはインターコネクトデバイス203に記憶され得、第1及び第2のVH407、408にまたがるコヒーレンシを調整又は解決するために使用され得る。データメッセージ422を受信すると、ホームプロセッサ402は、リモートプロセッサ401に完了メッセージ424を送信し得る。
【0038】
図4Aに示されている通り、第1のVH407内のリモートプロセッサ401が読み出しメッセージ410を送信して少し経った後に、第2のVH408内のリモートプロセッサ406は、第2のVH408内のホームプロセッサ405に読み出しメッセージ430を送信する。読み出しメッセージ410、430は、同じメモリアドレスを読み出すよう要求していると仮定する。従って、読み出しメッセージ410、430は、第1及び第2のVH407、408による同じデータの読み出しの競合を表し得る。
【0039】
読み出しメッセージ430を受信すると、ホームプロセッサ405は、インターコネクトデバイス403にメモリ読み出しメッセージ434を送信し得る。インターコネクトデバイス403は、要求されたデータについての第1のVH407との競合を(例えば、その内部コヒーレンスディレクトリを用いて)判定し得る。従って、インターコネクトデバイス403は、バック無効化スヌープメッセージ440を送信して、第1のVH407がデータを排他的コヒーレンシ状態から共有コヒーレンシ状態に変更すること、又はデータの所有権をリリースすることを要求し得る。幾つかの実施形態において、バック無効化スヌープメッセージ440は、CXL.memoryプロトコルを実装し得る。
【0040】
バック無効化スヌープメッセージ440を受信すると、ホームプロセッサ402は、リモートプロセッサ401にスヌープメッセージ442を送信し得る。リモートプロセッサ401は、データを共有状態に変更し得、データが現在共有状態にあることを示す応答メッセージ444を送信し得る。応答メッセージ444を受信すると、ホームプロセッサ402は、バック無効化ACK446を送信し、それによって、データが現在共有状態にあることをインターコネクトデバイス403に通知し得る。それに応じて、インターコネクトデバイス403は、(要求されたデータを含む)データメッセージ454をホームプロセッサ405に送信し得る。更に、インターコネクトデバイス403は、その内部コヒーレンスディレクトリを更新して、要求されたデータが第1のVH407及び第2のVH408によって共有されていること(例えば、「Dir=S@VH407、VH408」)を示し得る。データメッセージ454を受信すると、ホームプロセッサ405は、リモートプロセッサ406に完了メッセージ456を送信し得る。
【0041】
幾つかの実施形態において、インターコネクトデバイス403は、書き込みが発生する前に全てのメモリ書き込みが所有権を有することを要求し得る。この要件により、ダーティデータがメモリに書き戻されることを防止し得る。例えば、インターコネクトデバイス403は、バック無効化チャネル内でCXL.memoryプロトコルを実装して、異なる仮想階層にまたがるコヒーレンスを解決し得る。このプロセスは、データ付きリクエスト(Request with Data:RwD)コマンドを用いてダーティデータをフラッシュすることを含み得る。幾つかの実施形態において、CXL.memoryプロトコルは、影響を受けるメモリ領域におけるRwDコマンドに対してスヌープ属性がノーオペレーション(「No-Op」)に設定されることを要求し得る。この方式で、RwDコマンドがバック無効化スヌープを引き起こすことを妨げ、それによってダーティデータの書き込みを防止し得る。
【0042】
【0043】
ここで
図4Bを参照すると、1つ又は複数の実施形態による例示的なシステム460のブロック図が示されている。システム460は、(
図4Aを参照して上記で説明された)例示的なプロセス400を実装し得る。示されている通り、システム460は、第1のプロセッサ470、第2のプロセッサ471、メモリデバイス472、及びインターコネクトデバイス490を含み得る。幾つかの実施形態において、インターコネクトデバイス490は、CXLマルチヘッドメモリバッファデバイスであり得る。メモリデバイス472は、メモリモジュール(例えば、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)など)、又はシングルヘッドメモリバッファであり得る。
【0044】
示されている通り、第1のプロセッサ470は、複数レベルのキャッシュ階層(例えば、L1/L2/L3キャッシュ)及び複数の処理コアに結合されたキャッシングエージェント472及びホームエージェント474を含み得る。更に、第2のプロセッサ471は、キャッシュ階層及び複数の処理コアに結合されたキャッシングエージェント475及びホームエージェント476を含み得る。プロセッサ470、471は、CXL.cache及びCXL.io通信プロトコルを実装し得る。更に、インターコネクトデバイス490は、メモリ492、キャッシュ496、及び最終ホームエージェント494を含み得る。キャッシングエージェント472、475、最終ホームエージェント494、及び/又はホームエージェント474、476は、少なくとも部分的に、回路において実装され得る。
【0045】
幾つかの実施形態において、(
図4Aに示されている)プロセス400は、システム460のコンポーネントを用いて実装され得る。例えば、プロセス400は、リモートプロセッサ401の代わりにキャッシングエージェント472を、ホームプロセッサ402の代わりにホームエージェント474を、リモートプロセッサ406の代わりにキャッシングエージェント475を、ホームプロセッサ405の代わりにホームエージェント476を、及びインターコネクトデバイス403の代わりにインターコネクトデバイス490を用いて実行され得る。
【0046】
幾つかの実施形態において、プロセッサ470、471は、プロセッサインターコネクトリンク480によって直接結合され得る。第1のプロセッサ470は、第1のリンク482を介してインターコネクトデバイス490に結合され得る。第1のリンク482は、第1の仮想階層(例えば、
図4Aに示されているVH407)を形成又は定義し得る。更に、第2のプロセッサ471は、第2のリンク484を介してインターコネクトデバイス490に結合され得る。第2のリンク484は、第2の仮想階層(例えば、
図4Aに示されているVH408)を形成又は定義し得る。示されている通り、第2のプロセッサ471は、第3のリンク486を介してメモリデバイス472に直接結合され得る。幾つかの実施形態において、第1及び第2のリンク482、484は、CXL.memoryプロトコルを実装し得る。
【0047】
幾つかの実施形態において、ホームエージェント474及び476は、異なるキャッシュアドレスに対して2つのコヒーレンシ管理モード、すなわち階層的コヒーレンシ管理モード及びフラットコヒーレンシ管理モードを用いる機能を含み得る。階層的コヒーレンシ管理モードにおいて、ホームエージェント474及び476は、最終ホームエージェント494を使用して、ホームエージェント474及び476によって(例えば、リンク482及び484を介して)使用される2つの異なるコヒーレンシドメインにまたがるキャッシュコヒーレンシを調整又は解決し得る。更に、フラットコヒーレンシ管理モードにおいて、ホームエージェント474及び476のそれぞれは、そのそれぞれのコヒーレンシドメインにおいてキャッシュコヒーレンシを別個に管理し得る。例えば、ホームエージェント476は、フラットコヒーレンシ管理モードを使用して、メモリデバイス472におけるコヒーレンシを管理し得る。幾つかの実施形態において、ホームエージェント474及び476のそれぞれは、2つのスヌープリスト、すなわち、そのために階層的コヒーレンシ管理モードを使用するキャッシュ位置を識別する第1のスヌープリスト、及び、そのためにフラットコヒーレンシ管理モードを使用するキャッシュ位置を識別する第2のスヌープリストを含み得る。
【0048】
幾つかの実施形態において、第1のプロセッサ470は、(
図4Bに示されていない)追加的なプロセッサに連結されて、第1のプロセッサグループを形成し得る。そのような例において、ホームエージェント474は第1のプロセッサグループについてのコヒーレンシを管理し得、第1のプロセッサグループが階層的コヒーレンシ管理モードを使用することを可能にし得る(例えば、最終ホームエージェント494を用いて異なるコヒーレンシドメインにまたがるキャッシュコヒーレンシを調整する)。同様に、第2のプロセッサ471は、(
図4Bに示されていない)他のプロセッサに連結されて、第2のプロセッサグループを形成し得る。そのような例において、ホームエージェント476は第2のプロセッサグループについてのコヒーレンシを管理し得、第2のプロセッサグループが階層的コヒーレンシ管理モードを使用することを可能にし得る。
【0049】
【0050】
ここで
図5を参照すると、1つ又は複数の実施形態による方法500のフロー図が示されている。様々な実施形態において、方法500は、ハードウェア(例えば、処理デバイス、回路、専用ロジック、プログラマブルロジック、マイクロコードなど)、ソフトウェア(例えば、処理デバイス上で実行される命令)、又はそれらの組み合わせを含み得る処理ロジック(例えば、
図1に示されているプロセッサ130、135及び/又はインターコネクトデバイス)によって実行され得る。ファームウェア又はソフトウェアの実施形態において、方法500は、光学、半導体、又は磁気ストレージデバイスなどの非一時的機械可読媒体に記憶されたコンピュータ実行命令によって実装され得る。機械可読媒体は、少なくとも1つの機械によって使用される場合、少なくとも1つの機械に少なくとも1つの集積回路を作製させて方法を実行するデータを記憶し得る。
【0051】
ブロック510は、インターコネクトデバイスが、第1のプロセッサから、システムメモリに記憶されたデータ要素についての投機的読み出し要求を受信することを含み得、データ要素のコヒーレンスは、第2のプロセッサによって管理される。例えば、
図2~3を参照すると、リモートプロセッサ201は、投機的読み出しメッセージ210(又は投機的読み出しメッセージ310)をインターコネクトデバイス203に送信し得る。
【0052】
再び
図5を参照すると、ブロック520は、インターコネクトデバイスが、データ要素についての読み出し要求を受信することを含み得る。例えば、
図2を参照すると、リモートプロセッサ201は、直接メモリ読み出しメッセージ230をインターコネクトデバイス203に送信し得る。別の例において、
図3を参照すると、ホームプロセッサ202は、直接メモリ読み出しメッセージ330をインターコネクトデバイス203に送信し得る。
【0053】
再び
図5を参照すると、ブロック530は、インターコネクトデバイスが、読み出し要求を投機的読み出し要求とマージすることを含み得る。例えば、
図2を参照すると、インターコネクトデバイス203は、投機的読み出しメッセージ210及び直接メモリ読み出しメッセージ230のマージ235を実行し得る。別の例において、
図3を参照すると、インターコネクトデバイス203は、直接メモリ読み出しメッセージ330及び投機的読み出しメッセージ310のマージ332を実行し得る。
【0054】
再び
図5を参照すると、ブロック540は、インターコネクトデバイスが、データ要素を第1のプロセッサに直接伝送することを含み得る。例えば、
図2を参照すると、インターコネクトデバイス203は、要求されたデータを含むメッセージ250をリモートプロセッサ201に直接送信し得る。別の例において、
図3を参照すると、インターコネクトデバイス203は、要求されたデータを含む直接データメッセージ350をリモートプロセッサ201に直接送信し得る。ブロック540の後に、方法500は完了し得る。
【0055】
【0056】
ここで
図6を参照すると、実施形態によるSoC設計の実施形態が示されている。具体的な図示の例として、SoC600は、ポータブルデバイスからサーバシステムの範囲における、任意のタイプのコンピューティングデバイス内への挿入用に構成され得る。ここで、SoC600は、2つのコア606及び607を含む。コア606及び607は、Intel(登録商標)Architecture Core(商標)型プロセッサ、Advanced Micro Devices(AMD)社のプロセッサ、MIPS型プロセッサ、ARM型プロセッサ設計、又はそれらの顧客、並びにそれらの被許諾者又は採用者によるものなどの命令セットアーキテクチャに適合し得る。コア606及び607は、インターコネクト612を介してシステム600の他の部分と通信するために、バスインタフェースユニット609及びL2キャッシュ610に関連付けられたキャッシュコントローラ608に結合される。
【0057】
インターコネクト612は、SIMカードとのインタフェースである加入者識別モジュール(SIM)630、コア606及び607によって実行されるSoC600を初期化及びブートするためのブートコードを保持するためのブートROM635、外部メモリ(例えば、DRAM660)とのインタフェースであるSDRAMコントローラ640、不揮発性メモリ(例えば、フラッシュ665)とのインタフェースであるフラッシュコントローラ645、周辺機器とのインタフェースである周辺機器コントローラ650(例えば、eSPIインタフェース)、入力(例えば、タッチ有効化入力)を表示及び受信するためのビデオコーデック620及びビデオインタフェース625、グラフィック関連のコンピュータ処理を実行するためのGPU615などのような他のコンポーネントへの通信チャネルを提供する。加えて、システムは、Bluetooth(登録商標)モジュール670、3Gモデム675、GPS680及びWi‐Fi685などの通信のための周辺機器を示す。システムには電力コントローラ655も含まれ、これは、実施形態によるCXLベースの電力共有を実行するために本明細書で説明される回路を実装し得る。
図6に更に示されるように、システム600は、例えばディスプレイに対するMIPIインタフェース692、及び/又は、同じ又は異なるディスプレイに結合し得るHDMI(登録商標)インタフェース695をも含むインタフェースを追加的に含み得る。
【0058】
【0059】
ここで
図7を参照すると、別の実施形態による、エッジプラットフォームなどのシステムのブロック図が示されている。
図7に示されている通り、マルチプロセッサシステム700は、インターコネクト750を介して結合された第1のプロセッサ770及び第2のプロセッサ780を含み、これは、実施形態において、(プロセッサ770に含まれ得る、又はこれに結合され得る)光回路と通信する光インターコネクトであり得る。
図7に示されている通り、プロセッサ770及び780のそれぞれは、代表的な第1及び第2のプロセッサコア(すなわち、プロセッサコア774a及び774b、及び、プロセッサコア784a及び784b)を含む、多数のコアプロセッサであり得る。
【0060】
図7の実施形態において、プロセッサ770及び780は、(CXLバスであり得る)インターコネクト742及び744を介してスイッチ759及び760に結合するポイントツーポイントインターコネクト777及び787を更に含む。次に、スイッチ759、760は、プールされたメモリ755及び765に結合する。
【0061】
なおも
図7を参照すると、第1のプロセッサ770は更に、メモリコントローラハブ(MCH)772、及び、ポイントツーポイント(P-P)インタフェース776及び778を含む。同様に、第2のプロセッサ780は、MCH782、及び、P-Pインタフェース786及び788を含む。
図7に示される通り、MCH772及び782は、プロセッサをそれぞれのメモリ、すなわちメモリ732及びメモリ734に結合し、これらは、それぞれのプロセッサにローカルに取り付けられたシステムメモリ(例えば、DRAM)の部分であり得る、第1のプロセッサ770及び第2のプロセッサ780は、それぞれP-Pインターコネクト776及び786を介して、チップセット790に結合され得る。
図7に示される通り、チップセット790は、P-Pインタフェース794及び798を含む。
【0062】
更に、チップセット790は、P-Pインターコネクト739により、チップセット790を高性能グラフィックスエンジン738に結合する、インタフェース792を含む。
図7に示される通り、様々な入力/出力(I/O)デバイス714は、第1のバス716を第2のバス720に結合するバスブリッジ718と共に、第1のバス716に結合され得る。例えば、キーボード/マウス722、通信デバイス726、及び、一実施形態においてコード730を含み得る、ディスクドライブ又はその他マスストレージデバイスなどのデータストレージユニット728を含む様々なデバイスが、第2のバス720に結合され得る。更に、オーディオI/O724は、第2のバス720に結合され得る。
【0063】
【0064】
本明細書で説明される実施形態は、多様なネットワークアーキテクチャ内で使用され得る。ここで
図8を参照すると、本発明の別の実施形態によるネットワークアーキテクチャのブロック図が示されている。
図8に示されている通り、ネットワークアーキテクチャ800は、極めて広いエリアに配置され得る様々なコンピューティングプラットフォームを含む。
【0065】
図8のハイレベル図において、ネットワークアーキテクチャ800は、スマートフォンなどの代表的デバイス810を含む。このデバイスは、RAN820及びRAN830を含む、異なる無線アクセスネットワーク(RAN)を介して通信し得る。次に、RAN820は、フォグ/ファー/ニアエッジプラットフォームなどのエッジプラットフォームであり得、本明細書の実施形態を活用し得るプラットフォーム825に結合し得る。他の要求は、RAN830に結合されたファーエッジプラットフォーム835によってハンドリングされ得、これもまた実施形態を活用し得る。
【0066】
図8に更に示される通り、別のニアエッジプラットフォーム840は、RAN820、830に結合し得る。このニアエッジプラットフォームは、大量のコンピューティングリソースを有し得るデータセンター850のより近くに配置され得ることに留意されたい。これらのより遠隔のプラットフォームにメッセージをプッシュすることにより、エッジデバイス810に代えて要求をハンドリングするにあたり、より大きな遅延が生じる。
図8に示されるプラットフォームの1つ又は複数は、本明細書で説明されるCXLベースの電力共有を実行するための実施形態を組み込み得ることを理解されたい。
【0067】
【0068】
ここで
図9を参照すると、本発明の別の実施形態によるシステム900のブロック図が示されている。
図5に示されている通り、システム900は任意のタイプのコンピューティングデバイスであり得、一実施形態においては、サーバシステムであり得る。
図9の実施形態において、システム900は複数のCPU910a、bを含み、これは次に、実施形態においてダブルデータレート(Double Data Rate:DDR)メモリ、永続メモリ、又は他のタイプのメモリなどのDIMMとして実装され得るそれぞれのシステムメモリ920a、bに結合する。CPU910は、Intel(登録商標)ウルトラパスインターコネクトなどのインターコネクトシステム915、又は他のプロセッサインターコネクト技術を介して共に結合し得ることに留意されたい。
【0069】
コヒーレントアクセラレータデバイス及び/又はスマートアダプタデバイスが、潜在的に複数の通信プロトコルによってCPU910に結合することを可能にすべく、複数のインターコネクト930a1~b2が存在し得る。実施形態において、各インターコネクト930は、CXLの所与のインスタンスであり得る。
【0070】
示されている実施形態において、それぞれのCPU910は、対応するフィールドプログラマブルゲートアレイ(Field Programmable Gate Array:FPGA)/アクセラレータデバイス950a、b(これは、一実施形態においてGPUを含み得る)に結合する。加えて、CPU910は、スマートNICデバイス960a、bにも結合する。次に、スマートNICデバイス960a、bは、スイッチ980a、b(例えば、実施形態によるCXLスイッチ)に結合し、これは次に、永続メモリなどのプールされたメモリ990a、bに結合する。実施形態において、スイッチ980は、本明細書で説明される方法を実行するために、本明細書で説明される回路を実装し得る。当然ながら、実施形態はスイッチに限定されず、本明細書で説明される技法は、CPU910を含むシステムの他のエンティティによって実行され得る。
【0071】
以下の項及び/又は例は、更なる実施形態に関する。
【0072】
例1において、データ転送のためのシステムは:第1、第2、及び第3のポートを有するインターコネクトデバイス;第1のポートに結合された第1のプロセッサ;第2のポートに結合された第2のプロセッサ;及び、第3のポートに結合されたシステムメモリ、を備え得る。インターコネクトデバイスは:第1のポートを介して第1のプロセッサから、システムメモリに記憶されたデータ要素についての投機的読み出し要求を受信する、ここでデータ要素のコヒーレンスは、第2のプロセッサによって管理される、データ要素についての直接読み出し要求を受信する、直接読み出し要求を投機的読み出し要求とマージする、及び、第1のポートを介して第1のプロセッサにデータ要素を直接伝送することになり得る。
【0073】
例2において、例1の主題は、インターコネクトデバイスが:投機的読み出し要求の受信に応答して、第3のポートを介してシステムメモリにメモリ読み出し要求を送信する;及び、第3のポートを介してシステムメモリからデータ要素を受信することになること、を任意選択的に含み得る。
【0074】
例3において、例1~2の主題は、インターコネクトデバイスが、第1のポートを介して第1のプロセッサから直接読み出し要求を受信することになること、を任意選択的に含み得る。
【0075】
例4において、例1~3の主題は、インターコネクトデバイスが:第2のポートを介して第2のプロセッサから直接読み出し要求を受信する;及び、第2のポートを介して第2のプロセッサに直接読み出し要求の肯定応答を伝送することになること、を任意選択的に含み得る。
【0076】
例5において、例1~3の主題は、インターコネクトデバイスが、直接読み出し要求及び投機的読み出し要求に含まれる少なくとも1つの識別子の比較に基づき、直接読み出し要求を投機的読み出し要求とマージすることになること、を任意選択的に含み得る。
【0077】
例6において、例1~5の主題は:第1のプロセッサが、第2のプロセッサに読み出しデータメッセージを送信することになること;第2のプロセッサが、読み出しデータメッセージの受信に応答して、第1のプロセッサに完了メッセージを送信することになること;及び、第1のプロセッサが、完了メッセージの受信に応答して、インターコネクトデバイスに直接読み出し要求を送信することになること、を任意選択的に含み得る。
【0078】
例7において、例1~6の主題は、第1のプロセッサ及び第2のプロセッサがプロセッサインターコネクトリンクによって結合されており、データ要素がプロセッサインターコネクトリンクを通過しないこと、を任意選択的に含み得る。
【0079】
例8において、例1~7の主題は、インターコネクトデバイスがマルチヘッドメモリバッファデバイスを有すること、を任意選択的に含み得る。
【0080】
例9において、例1~8の主題は、直接読み出し要求及び投機的読み出し要求がコンピュートエクスプレスリンク(CXL)プロトコルメッセージを有すること、を任意選択的に含み得る。
【0081】
例10において、データ転送のための装置は:第1のプロセッサに結合するための第1のインターコネクトポート;第2のプロセッサに結合するための第2のインターコネクトポート;システムメモリに結合するための第3のインターコネクトポート;及び、直接読み出し回路、を含み得る。直接読み出し回路は:第1のプロセッサから、システムメモリに記憶されたデータ要素についての投機的読み出し要求を受信する、ここでデータ要素のコヒーレンスは、第2のプロセッサによって管理される、データ要素についての直接読み出し要求を受信する、直接読み出し要求を投機的読み出し要求とマージする、及び、第1のインターコネクトポートを介して第1のプロセッサにデータ要素を直接伝送することになり得る。
【0082】
例11において、例10の主題は、装置がマルチヘッドメモリバッファデバイスを備えること、を任意選択的に含み得る。
【0083】
例12において、例10~11の主題は、直接読み出し回路が:投機的読み出し要求の受信に応答して、システムメモリにメモリ読み出し要求を送信する;及び、システムメモリからデータ要素を受信することになること、を任意選択的に含み得る。
【0084】
例13において、例10~12の主題は、直接読み出し回路が、第1のインターコネクトポートを介して第1のプロセッサから直接読み出し要求を受信することになること、を任意選択的に含み得る。
【0085】
例14において、例10~13の主題は、直接読み出し回路が:第2のインターコネクトポートを介して第2のプロセッサから直接読み出し要求を受信する;及び、第2のプロセッサに直接読み出し要求の肯定応答を伝送することになること、を任意選択的に含み得る。
【0086】
例15において、例10~14の主題は、直接読み出し回路が、直接読み出し要求及び投機的読み出し要求に含まれる少なくとも1つの識別子の比較に基づき、直接読み出し要求を投機的読み出し要求とマージすることになること、を任意選択的に含み得る。
【0087】
例16において、例10~15の主題は、直接読み出し要求及び投機的読み出し要求がコンピュートエクスプレスリンク(CXL)プロトコルメッセージを有すること、を任意選択的に含み得る。
【0088】
例17において、データ転送のためのシステムは:第1のコヒーレンシドメインに関連付けられた第1のプロセッサ;第2のコヒーレンシドメインに関連付けられた第2のプロセッサ;及び、第1のプロセッサ、第2のプロセッサ、及びシステムメモリに結合されたインターコネクトデバイスを備え得、ここで第1のプロセッサ及び第2のプロセッサのそれぞれは、階層的コヒーレンシ管理モード及びフラットコヒーレンシ管理モードから選択するためのコヒーレンシ回路を有し、ここで階層的コヒーレンシ管理モードは、インターコネクトデバイスによる、第1のコヒーレンシドメイン及び第2のコヒーレンシドメインにまたがるコヒーレンシの調整を有し;及び、ここでフラットコヒーレンシ管理モードは、コヒーレンシ回路による、単一のコヒーレンシドメインにおけるコヒーレンシの管理を有する。
【0089】
例18において、例17の主題は、インターコネクトデバイスが:第1のプロセッサからデータ要素についての直接読み出し要求を受信すること;第1のコヒーレンシドメイン及び第2のコヒーレンシドメインにまたがるデータ要素のコヒーレンシを調整する;バック無効化スヌープメッセージを送信して、第1のコヒーレンシドメイン及び第2のコヒーレンシドメインのうち少なくとも1つにおけるデータ要素のコヒーレンシ状態を修正する;及び、第1のインターコネクトポートを介して第1のプロセッサにデータ要素を直接伝送することになること、を任意選択的に含み得る。
【0090】
例19において、例17~18の主題は、インターコネクトデバイスがコンピュートエクスプレスリンク(CXL)マルチヘッドメモリバッファデバイスを有すること、及び、インターコネクトデバイスが、内部ディレクトリを更新して第1のコヒーレンシドメイン及び第2のコヒーレンシドメインのうち少なくとも1つにおけるデータ要素のコヒーレンシ状態を示すことになること、を任意選択的に含み得る。
【0091】
例20において、例17~19の主題は、第1のプロセッサ及び第2のプロセッサのそれぞれが:階層的コヒーレンシ管理モードに関連付けられたキャッシュ位置を識別するための第1のリスト;及び、フラットコヒーレンシ管理モードに関連付けられたキャッシュ位置を識別するための第2のリスト、を有すること、を任意選択的に含み得る。
【0092】
例21において、データ転送のための装置は:システムメモリに記憶されたデータ要素についての投機的読み出し要求を受信するための手段;データ要素についての直接読み出し要求を受信するための手段;直接読み出し要求を投機的読み出し要求とマージするための手段;及び、第1のポートを介して第1のプロセッサにデータ要素を直接伝送するための手段、を含み得る。
【0093】
例22において、例21の主題は:投機的読み出し要求の受信に応答して、メモリ読み出し要求を送信するための手段;及び、データ要素を受信するための手段、を任意選択的に含み得る。
【0094】
例23において、例21~22の主題は:直接読み出し要求を受信するための手段;及び、直接読み出し要求の肯定応答を伝送するための手段、を任意選択的に含み得る。
【0095】
例24において、例21~23の主題は、直接読み出し要求及び投機的読み出し要求に含まれる少なくとも1つの識別子の比較に基づき、直接読み出し要求を投機的読み出し要求とマージするための手段、を任意選択的に含み得る。
【0096】
例25において、例21~24の主題は、直接読み出し要求及び投機的読み出し要求がコンピュートエクスプレスリンク(CXL)プロトコルメッセージを有すること、を任意選択的に含み得る。
【0097】
本明細書で説明される様々な実施形態において、インターコネクトデバイスは、プロセッサが、別のプロセッサ(すなわち、「ホーム」プロセッサ)によって管理されるキャッシュコヒーレンシを有するメモリアドレスからデータを直接読み出すことを可能にするための回路又は他のロジックを含み得る。更に、インターコネクトデバイスは、ディレクトリの維持及びバック無効化フローの開始等を含む、直接読み出しに関連付けられたコヒーレンスタスクをハンドリングし得る。幾つかの実施形態において、直接データ転送は、ホームプロセッサ及びプロセッサインターコネクトを通過しない場合がある。従って、直接読み出しは、比較的少ないホップ(例えば、2つのホップ)において実行され得、それによって、従来の手法に比べてより少ない遅延及び帯域幅を伴い得る。更に、幾つかの実施形態は、メモリ読み出しに関連付けられた電力消費を削減し得、プロセッサインターコネクトのサイズ調整に関連付けられたコストを削減し得る。
【0098】
図1~9は様々な例示的な実装形態を示しているが、他の変形が可能であることに留意されたい。例えば、
図1~9に示された例は、例示のために提供されたものであり、いかなる実施形態をも制限することを意図していない。特に、実施形態は明確にするために簡略化された形態で示され得るが、実施形態は、任意の数及び/又は配置のコンポーネントを含み得る。例えば、幾つかの実施形態は、示されたものに加えて任意の数のコンポーネントを含み得ること、及び、特定の実装形態において、示されたコンポーネントの異なる配置が生じ得ることが企図されている。更に、
図1~9に示された例における詳細は、1つ又は複数の実施形態のどこでも使用され得ることが企図されている。
【0099】
上述した複数の例の様々な組み合わせが可能であることを理解されたい。実施形態は多くの異なるタイプのシステムにおいて使用され得る。例えば、一実施形態において、通信デバイスは、本明細書で説明された様々な方法及び技法を実行するように配置され得る。当然ながら、本発明の範囲は通信デバイスに限定されず、その代わり、他の実施形態が、命令を処理するための他のタイプの装置、又はコンピューティングデバイス上で実行されることに応答して、本明細書で説明される方法及び技法のうち1つ又は複数をデバイスに実行させる命令を含む1つ又は複数の機械可読媒体を対象とすることができる。
【0100】
本明細書の全体にわたる「一実施形態」又は「実施形態」への言及は、実施形態に関連して説明される特定の特徴、構造、又は特性が、本発明に包含される少なくとも1つの実装形態に含まれることを意味する。従って、「一実施形態」又は「実施形態において」という文言の出現は、必ずしも同じ実施形態を指すものではない。更に、特定の特徴、構造、又は特性は、例示される特定の実施形態以外の他の好適な形態で設けられ得、全てのそのような形態は、本願の特許請求の範囲内に包含され得る。
【0101】
本発明を限られた数の実施形態に関して説明してきたが、当業者であれば、そこからの修正及び変形を理解するであろう。添付の特許請求の範囲は、この本発明の真の趣旨及び範囲内に属するそのような全ての修正及び変形を包含するものと意図されている。
【手続補正書】
【提出日】2024-06-28
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
第1のポート、第2のポート、及び第3のポートを有するインターコネクトデバイス;
前記第1のポートに結合された第1のプロセッサ;
前記第2のポートに結合された第2のプロセッサ;及び
前記第3のポートに結合されたシステムメモリ
を備え、前記インターコネクトデバイスは:
前記第1のポートを介して前記第1のプロセッサから、前記システムメモリに記憶されたデータ要素に対する投機的読み出し要求を受信する、ここで前記データ要素のコヒーレンスは、前記第2のプロセッサによって管理される、
前記データ要素に対する直接読み出し要求を受信する、
前記直接読み出し要求を前記投機的読み出し要求とマージする、及び
前記第1のポートを介して前記第1のプロセッサに前記データ要素を直接伝送する
ことになる
、データ転送のためのシステム。
【請求項2】
前記インターコネクトデバイスは:
前記投機的読み出し要求の受信に応答して、前記第3のポートを介して前記システムメモリにメモリ読み出し要求を送信する;及び
前記第3のポートを介して前記システムメモリから前記データ要素を受信する
ことになる、請求項1に記載のシステム。
【請求項3】
前記インターコネクトデバイスは:
前記第1のポートを介して前記第1のプロセッサから前記直接読み出し要求を受信する
ことになる、請求項1に記載のシステム。
【請求項4】
前記インターコネクトデバイスは:
前記第2のポートを介して前記第2のプロセッサから前記直接読み出し要求を受信する;及び
前記第2のポートを介して前記第2のプロセッサに前記直接読み出し要求の肯定応答を伝送する
ことになる、請求項1に記載のシステム。
【請求項5】
前記インターコネクトデバイスは:
前記直接読み出し要求及び前記投機的読み出し要
求に含まれる少なくとも1つの識別子の比較に基づき、前記直接読み出し要求を前記投機的読み出し要求とマージする
ことになる、請求項1に記載のシステム。
【請求項6】
前記第1のプロセッサは、前記第2のプロセッサに読み出しデータメッセージを送信することになる;
前記第2のプロセッサは、前記読み出しデータメッセージの受信に応答して、前記第1のプロセッサに完了メッセージを送信することになる;及び
前記第1のプロセッサは、前記完了メッセージの受信に応答して、前記インターコネクトデバイスに前記直接読み出し要求を送信することになる、
請求項1に記載のシステム。
【請求項7】
前記第1のプロセッサ及び前記第2のプロセッサはプロセッサインターコネクトリンクによって結合されており、前記データ要素は前記プロセッサインターコネクトリンクを通過しない、請求項1に記載のシステム。
【請求項8】
前記インターコネクトデバイスは、マルチヘッドメモリバッファデバイスを有する、請求項1に記載のシステム。
【請求項9】
前記直接読み出し要求及び前記投機的読み出し要求は、コンピュートエクスプレスリンク(CXL)プロトコルメッセージを含む、請求項1に記載のシステム。
【請求項10】
第1のプロセッサに結合するための第1のインターコネクトポート;
第2のプロセッサに結合するための第2のインターコネクトポート;
システムメモリに結合するための第3のインターコネクトポート;及び
前記第1のプロセッサから、前記システムメモリに記憶されたデータ要素に対する投機的読み出し要求を受信する、ここで前記データ要素のコヒーレンスは、前記第2のプロセッサによって管理される、
前記データ要素に対する直接読み出し要求を受信する、
前記直接読み出し要求を前記投機的読み出し要求とマージする、及び
前記第1のインターコネクトポートを介して前記第1のプロセッサに前記データ要素を直接伝送する
ための直接読み出し回路
を備える
、データ転送のための装置。
【請求項11】
前記装置は、マルチヘッドメモリバッファデバイスを備える、請求
項10に記載の装置。
【請求項12】
前記直接読み出し回路は:
前記投機的読み出し要求の受信に応答して、前記システムメモリにメモリ読み出し要求を送信する;及び
前記システムメモリから前記データ要素を受信する
ことになる、請求項10に記載の装置。
【請求項13】
前記直接読み出し回路は:
前記第1のインターコネクトポートを介して前記第1のプロセッサから前記直接読み出し要求を受信する
ことになる、請求項10に記載の装置。
【請求項14】
前記直接読み出し回路は:
前記第2のインターコネクトポートを介して前記第2のプロセッサから前記直接読み出し要求を受信する;及び
前記第2のプロセッサに前記直接読み出し要求の肯定応答を伝送する
ことになる、請求項10に記載の装置。
【請求項15】
前記直接読み出し回路は:
前記直接読み出し要求及び前記投機的読み出し要
求に含まれる少なくとも1つの識別子の比較に基づき、前記直接読み出し要求を前記投機的読み出し要求とマージする
ことになる、請求項10に記載の装置。
【請求項16】
前記直接読み出し要求及び前記投機的読み出し要求は、コンピュートエクスプレスリンク(CXL)プロトコルメッセージを含む、請求項10に記載の装置。
【請求項17】
第1のコヒーレンシドメインに関連付けられた第1のプロセッサ;
第2のコヒーレンシドメインに関連付けられた第2のプロセッサ;及び
前記第1のプロセッサ、前記第2のプロセッサ、及
びシステムメモリに結合されたインターコネクトデバイス
を備え、
ここで前記第1のプロセッサ及び前記第2のプロセッサのそれぞれは、階層的コヒーレンシ管理モード及びフラットコヒーレンシ管理モードから選択するためのコヒーレンシ回路を有し、
ここで前記階層的コヒーレンシ管理モードは、前記インターコネクトデバイスによる、前記第1のコヒーレンシドメイン及び前記第2のコヒーレンシドメインにまたがるコヒーレンシの調整を有し;及び
ここで前記フラットコヒーレンシ管理モードは、前記コヒーレンシ回路による、単一のコヒーレンシドメインにおけるコヒーレンシの管理を有する
、
データ転送のためのシステム。
【請求項18】
前記インターコネクトデバイスは:
前記第1のプロセッサからデータ要素に対する直接読み出し要求を受信する;
前記第1のコヒーレンシドメイン及び前記第2のコヒーレンシドメインにまたがる前記データ要素のコヒーレンシを調整する;
バック無効化スヌープメッセージを送信して、前記第1のコヒーレンシドメイン及び前記第2のコヒーレンシドメインのうち少なくとも1つにおける前記データ要素のコヒーレンシ状態を修正する;及
び
第1のインターコネクトポートを介して前記第1のプロセッサに前記データ要素を直接伝送する
ことになる、請求項17に記載のシステム。
【請求項19】
前記インターコネクトデバイスは、コンピュートエクスプレスリンク(CXL)マルチヘッドメモリバッファデバイスを有し、ここで前記インターコネクトデバイスは、内部ディレクトリを更新して前記第1のコヒーレンシドメイン及び前記第2のコヒーレンシドメインのうち少なくとも1つにおける前記データ要素のコヒーレンシ状態を示すことになる、請求項18に記載のシステム。
【請求項20】
前記第1のプロセッサ及び前記第2のプロセッサのそれぞれは:
前記階層的コヒーレンシ管理モードに関連付けられたキャッシュ位置を識別するための第1のリスト;及び
前記フラットコヒーレンシ管理モードに関連付けられたキャッシュ位置を識別するための第2のリスト
を有する、請求項17に記載のシステム。
【請求項21】
プロセッサに:
異なるプロセッサから、システムメモリに記憶されたデータ要素についての投機的読み出し要求を受信する手順;
前記データ要素についての直接読み出し要求を受信する手順;
前記直接読み出し要求を前記投機的読み出し要求とマージする手順;及び
第1のポートを介して前記異なるプロセッサに前記データ要素を直接伝送する手順
を実行させるためのコンピュータプログラム。
【請求項22】
前記プロセッサに:
前記投機的読み出し要求の受信に応答して、メモリ読み出し要求を送信する手順;及び
前記データ要素を受信する手順
を更に実行させる、請求項21に記載のコンピュータプログラム。
【請求項23】
前記プロセッサに:
前記直接読み出し要求を受信する手順;及び
前記直接読み出し要求の肯定応答を伝送する手順
を更に実行させる、請求項21に記載のコンピュータプログラム。
【請求項24】
前記プロセッサに:
前記直接読み出し要求及び前記投機的読み出し要求に含まれる少なくとも1つの識別子の比較に基づき、前記直接読み出し要求を前記投機的読み出し要求とマージする手順
を更に実行させる、請求項21に記載のコンピュータプログラム。
【請求項25】
前記直接読み出し要求及び前記投機的読み出し要求は、コンピュートエクスプレスリンク(CXL)プロトコルメッセージを含む、請求項21に記載のコンピュータプログラム。
【請求項26】
請求項21から25のいずれか一項に記載のコンピュータプログラムを格納しているコンピュータ可読記憶媒体。
【国際調査報告】