(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-15
(54)【発明の名称】パケットメタデータを用いたデータ配置
(51)【国際特許分類】
G06F 15/173 20060101AFI20240105BHJP
G06F 12/0815 20160101ALI20240105BHJP
【FI】
G06F15/173 665C
G06F12/0815
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023536462
(86)(22)【出願日】2021-12-16
(85)【翻訳文提出日】2023-07-25
(86)【国際出願番号】 US2021063741
(87)【国際公開番号】W WO2022133053
(87)【国際公開日】2022-06-23
(32)【優先日】2020-12-17
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】セルゲイ ブラゴドゥロフ
(72)【発明者】
【氏名】ジョナサン オルソップ
(72)【発明者】
【氏名】セイエドモハマッド セイエドザデーデルシェー
【テーマコード(参考)】
5B045
5B205
【Fターム(参考)】
5B045BB12
5B045BB42
5B045BB54
5B045DD07
5B045GG11
5B045GG14
5B205KK14
5B205KK16
5B205MM03
5B205NN92
5B205PP03
5B205PP21
5B205UU31
(57)【要約】
パケットメタデータに基づいてデータ配置を決定するためのシステム、装置及び方法が開示される。システムは、複数のプロトコルタイプを横断してアクティブに交換されたパケット内のメタデータフィールドの観測値に基づいて、接続されたデバイスを横断してデータ配置を決定するトラフィックアナライザを含む。一実施形態では、システムによってサポートされるプロトコルは、Compute Express Link(CXL)プロトコルである。トラフィックアナライザは、予め構成されたリストからの項目に一致するパケットストリーム内で観察されたイベントに応じて様々なアクションを実行する。データ移動は、データ移動が完了したら仮想-物理変換を変更することによってソフトウェアアプリケーションの下で処理される。データ移動の終了後、スレッドは、ページテーブルウォーカを介して又はアドレス変換サービス(ATS)要求を介して、新しいホスト物理アドレスをそれらのトランスレーションルックアサイドバッファ(TLB)にプルする。
【選択図】
図6
【特許請求の範囲】
【請求項1】
装置であって、
制御ユニットを備え、
前記制御ユニットは、
リンクを横断するパケットのストリームを監視することと、
前記パケットのストリームを分析することと、
前記分析に少なくとも部分的に基づいて、データのブロックを第1のメモリデバイスから第2のメモリデバイスに移動させることと、
を行うように構成されている、
装置。
【請求項2】
前記制御ユニットは、前記パケットに関連するメタデータが所定のイベントに対応する基準を満たすという判定に応じて、前記データのブロックを移動させるように構成されている、
請求項1の装置。
【請求項3】
前記所定のイベントは第1の閾値を有し、前記制御ユニットは、前記所定のイベントが前記第1の閾値を満たすという判定に応じて、前記データのブロックを移動させるように構成されている、
請求項2の装置。
【請求項4】
前記所定のメタデータは、前記所定のパケットがアドレス変換サービス完了パケットであることを示し、前記第1のメモリデバイスは、ダイナミックランダムアクセスメモリであり、前記第2のメモリデバイスは、フラッシュメモリデバイスである、
請求項2の装置。
【請求項5】
前記所定のメタデータは、バイアスフリップ要求イベントを識別し、前記第1のメモリデバイスは、プロセッサのシステムメモリであり、前記第2のメモリデバイスは、デバイス接続メモリである、
請求項2の装置。
【請求項6】
基準は、前記所定のパケットが所有権読み取りパケットであるという指標を含む、
請求項2の装置。
【請求項7】
前記制御ユニットは、ダイレクトメモリアクセス(DMA)エンジンに結合されており、前記制御ユニットは、前記第1のデータのブロックを前記第1のメモリデバイスから前記第2のメモリデバイスに移動させるように前記DMAエンジンをプログラムするように構成されている、
請求項1の装置。
【請求項8】
方法であって、
トラフィックアナライザが、リンクを横断するパケットのストリームを監視することと、
前記パケットのストリームに関連するメタデータを分析することと、
前記分析に少なくとも部分的に基づいて、データのブロックを第1のメモリデバイスから第2のメモリデバイスに移動させることと、を含む、
方法。
【請求項9】
前記パケットに関連するメタデータが所定のイベントに対応する基準を満たすという判定に応じて、前記データのブロックを移動させることを含む、
請求項8の方法。
【請求項10】
前記所定のイベントは第1の閾値を有し、前記制御ユニットは、前記所定のイベントが前記第1の閾値を満たすという判定に応じて、前記データのブロックを移動させるように構成されている、
請求項9の方法。
【請求項11】
前記所定のメタデータは、前記所定のパケットがアドレス変換サービス完了パケットであることを示し、前記第1のメモリデバイスは、ダイナミックランダムアクセスメモリであり、前記第2のメモリデバイスは、フラッシュメモリデバイスである、
請求項9の方法。
【請求項12】
前記所定のメタデータは、バイアスフリップ要求イベントを識別し、前記第1のメモリデバイスは、プロセッサのシステムメモリであり、前記第2のメモリデバイスは、デバイス接続メモリである、
請求項9の方法。
【請求項13】
前記基準は、前記所定のパケットが所有権読み取りパケットであるという指標を含む、
請求項9の方法。
【請求項14】
前記第1のデータのブロックを前記第1のメモリデバイスから前記第2のメモリデバイスに移動させるようにダイレクトメモリアクセス(DMA)エンジンをプログラムすることを含む、
請求項8の方法。
【請求項15】
システムであって、
複数の処理ユニットと、
前記複数の処理ユニットを接続するリンクと、
トラフィックアナライザと、を備え、
前記トラフィックアナライザは、
リンクを横断するパケットのストリームを監視することと、
前記パケットのストリームを分析することと、
前記分析に少なくとも部分的に基づいて、データのブロックを第1のメモリデバイスから第2のメモリデバイスに移動させることと、
を行うように構成されている、
システム。
【請求項16】
前記トラフィックアナライザは、前記パケットに関連するメタデータが所定のイベントに対応する基準を満たすという判定に応じて、前記データのブロックを移動させるように構成されている、
請求項15のシステム。
【請求項17】
前記所定のイベントは第1の閾値を有し、前記トラフィックアナライザは、前記所定のイベントが前記第1の閾値を満たすという判定に応じて、前記データのブロックを移動させるように構成されている、
請求項16のシステム。
【請求項18】
前記所定のメタデータは、前記所定のパケットがアドレス変換サービス完了パケットであることを示し、前記第1のメモリデバイスは、ダイナミックランダムアクセスメモリであり、前記第2のメモリデバイスは、フラッシュメモリデバイスである、
請求項16のシステム。
【請求項19】
前記所定のメタデータは、バイアスフリップ要求イベントを識別し、前記第1のメモリデバイスは、中央処理ユニットのシステムメモリであり、前記第2のメモリデバイスは、アクセラレータに接続されている、
請求項16のシステム。
【請求項20】
前記基準は、前記所定のパケットが所有権読み取りパケットであるという指標を含む、
請求項16のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術の説明)
コンピュータ産業の相互接続向けソリューションは、プロトコルサポート及び基礎となる技術の両方でますます異種混在になりつつある。例えば、Compute Express Link(CXL)、Gen-Z及びSlingshotは、システム内の各デバイスと通信するために使用され得る、高性能、低遅延、メモリ中心のファブリックとして出現した。高性能コンピューティング(high performance computing、HPC)アプリケーション及び深層学習(deep learning、DL)アプリケーション等のメモリ集約型アプリケーションは、これらのタイプのシステム上で実行されることが多い。これらの新しいタイプの相互接続を用いるシステム上で実行される様々なソフトウェアアプリケーションによるデータアクセスの遅延及びエネルギー消費を低減するために、接続されたデバイスを横断したデータ配置戦略を決定することが困難であり得る。
【0002】
本明細書に記載の方法及び機構の利点は、添付の図面と併せて以下の説明を参照することによってよりよく理解され得る。
【図面の簡単な説明】
【0003】
【
図1】コンピューティングシステムの一実施形態のブロック図である。
【
図2】コンピューティングシステムの別の実施形態のブロック図である。
【
図3】CXLプロトコルを用いるコンピューティングシステムの一実施形態のブロック図である。
【
図4】コントローラの一実施形態のブロック図である。
【
図6】パケットメタデータに基づいてデータ配置を決定するための方法の一実施形態を示す汎用フロー図である。
【発明を実施するための形態】
【0004】
以下の説明では、本明細書に提示される方法及び機構の十分な理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、当業者は、これらの具体的な詳細なしに様々な実施形態が実施され得ることを認識するべきである。いくつかの例では、本明細書に記載のアプローチを不明瞭にすることを避けるために、周知の構造、構成要素、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素は必ずしも縮尺どおりに描かれているわけではないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張されている場合がある。
【0005】
パケットメタデータに基づいてデータ配置を決定するための様々なシステム、装置及び方法が本明細書で開示される。一実施形態では、システムは、複数のプロトコルタイプを横断してアクティブに交換されたパケット内のメタデータフィールドの観測値に基づいて、接続されたデバイスを横断してデータ配置を決定するトラフィックアナライザを含む。一実施形態では、システムによってサポートされるプロトコルは、Compute Express Link(CXL)プロトコルである。別の実施形態では、システムはGen-Zプロトコルをサポートする。更なる実施形態では、システムは、Slingshot相互接続プロトコルをサポートする。他の実施形態では、他のタイプの相互接続プロトコルはシステムによってサポートされ得る。一実施形態では、トラフィックアナライザは、システム内で接続されたデバイスを横断してデータを移動させるための関連するダイレクトメモリアクセス(direct memory access、DMA)エンジンを有する。場合によっては、システムは、システムの相互接続ファブリック全体の様々な位置に配置された複数のトラフィックアナライザを含む。
【0006】
一実施形態では、トラフィックアナライザは、予め構成されたリストからの項目に一致するパケットストリームで観察されたイベントに応じて、様々なアクションを実行する。場合によっては、予め構成されたリストは、リストをソフトウェアによって更新可能であるようにプログラム可能である。一実施形態では、相互接続ファブリック上で送信されるアドレスは、ホスト物理アドレス(host physical address、HPA)である。この実施形態では、データ移動は、データ移動が完了したら仮想-物理変換を変更することによってソフトウェアアプリケーションの下で処理される。データ移動の終了後、スレッドは、ページテーブルウォーカを介して又はアドレス変換サービス(address translation service、ATS)要求を介して、新しいHPAをそれらのトランスレーションルックアサイドバッファ(translation lookaside buffer、TLB)にプルするであろう。トラフィックアナライザは、データが再配置され得る、アクセス可能なメディアデバイスのリストを維持する。一実施形態では、アクセス可能なメディアデバイスのリストは、発見イベントが実行されたことに応じて更新される。
【0007】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、少なくともプロセッサ105A~105Nと、入力/出力(input/output、I/O)インターフェース120と、バス125と、メモリコントローラ130と、ネットワークインターフェース135と、メモリデバイス140と、ディスプレイコントローラ150と、ディスプレイ155と、デバイス160A~160Nと、を含む。他の実施形態では、コンピューティングシステム100は他の構成要素を含む、及び/又は、コンピューティングシステム100は異なる方法で配置される。システム100の構成要素は、任意の数及びタイプの相互接続、リンク、ファブリックユニット、バス及び他の接続モジュールを表すバス125を介して互いに接続されている。
【0008】
プロセッサ105A~105Nは、システム100に含まれる任意の数のプロセッサを表す。一実施形態では、プロセッサ105Aは、中央処理ユニット(central processing unit、CPU)等の汎用プロセッサである。この実施形態では、プロセッサ105Aは、システム100内の他のプロセッサのうち1つ以上の演算を制御するためのドライバ106(例えば、グラフィックドライバ)を実行する。実施形態に応じて、ドライバ106は、ハードウェア、ソフトウェア及び/又はファームウェアの任意の好適な組み合わせを使用して実装され得ることに留意されたい。
【0009】
一実施形態では、プロセッサ105Nは、高並列アーキテクチャを有するデータ並列プロセッサである。データ並列プロセッサは、グラフィックス処理ユニット(graphics processing unit、GPU)、デジタル信号プロセッサ(digital signal processor、DSP)、フィールドプログラマブルゲートアレイ(field programmable gate array、FPGA)、特定用途向け集積回路(application specific integrated circuit、ASIC)等を含む。いくつかの実施形態では、プロセッサ105A~105Nは、複数のデータ並列プロセッサを含む。一実施形態では、プロセッサ105Nは、ディスプレイ155に伝達されるように表示コントローラ150にピクセルを提供するGPUである。一実施形態では、デバイス160A~160Nは、任意の数及びタイプのアクセラレータデバイス、I/Oデバイス及び他のデバイスを含む。一実施形態では、各デバイス160A~160Nは、デバイス160A~160Nに固有の自身のメモリを有する。場合によっては、デバイス160A~160Nのうち1つ以上は、GPU等のプロセッサであり得る。
【0010】
メモリコントローラ130は、プロセッサ105A~105N及び/又はデバイス160A~160Nによってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ130は、プロセッサ105A~105N及びデバイス160A~160Nから分離されているものとして示されているが、これは、1つの可能な実施形態を表すのにすぎないことを理解されたい。他の実施形態では、メモリコントローラ130は、プロセッサ105A~105Nのうち1つ以上に埋め込まれ得る、及び/又は、メモリコントローラ130は、プロセッサ105A~105Nのうち1つ以上と同じ半導体ダイ上に位置し得る。また、一実施形態では、メモリコントローラ130は、デバイス160A~160Nのうち1つ以上と同じダイに埋め込まれ得るか、又は、デバイス160A~160Nのうち1つ以上と同じダイ上に位置して、これらのデバイス160A~160Nに対してローカルなメモリデバイス140にアクセスし得る。
【0011】
一実施形態では、各メモリコントローラ130はトラフィックアナライザ133を含む。他の実施形態では、トラフィックアナライザ133は、バス125を横断するトラフィックをスヌープするのに適した位置で、システム100内の他の場所に位置することができる。トラフィックアナライザ133は、コントローラ133とも称され得ることに留意されたい。一実施形態では、トラフィックアナライザ133は、予め構成されたリストからの項目に一致するパケットストリームで観察されたイベントに応じて、様々なアクションを実行する。場合によっては、予め構成されたリストは、リストをソフトウェアによって更新可能であるようにプログラム可能である。一実施形態では、バス125上で送信されるアドレスは、ホスト物理アドレス(HPA)である。この実施形態では、データ移動は、データ移動が完了したら仮想-物理変換を変更することによってアプリケーションの下で処理される。データ移動の終了後、プロセッサ105A~105N又はデバイス160A~160N上で実行されるスレッドは、ページテーブルウォーカを介して又はアドレス変換サービス(ATS)要求を介して、新しいHPAをそれらのトランスレーションルックアサイドバッファ(TLB)にプルするであろう。
【0012】
メモリコントローラ130は、任意の数及びタイプのメモリデバイス140に結合されている。例えば、メモリデバイス140内のメモリのタイプとしては、高帯域幅メモリ(high-bandwidth memory、HBM)、不揮発性メモリ(non-volatile memory、NVM)、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)、スタティックランダムアクセスメモリ(Static Random Access Memory、SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(Ferroelectric Random Access Memory、FeRAM)又は他のメモリが挙げられる。
【0013】
I/Oインターフェース120は、任意の数及びタイプのI/Oインターフェース(例えば、ペリフェラルコンポーネントインターコネクト(peripheral component interconnect、PCI)バス、PCI-Extended(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(gigabit Ethernet、GBE)バス、ユニバーサルシリアルバス(universal serial bus、USB))を表す。様々なタイプの周辺デバイス(図示せず)がI/Oインターフェース120に結合される。そのような周辺デバイスは、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック、他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶デバイス、ネットワークインターフェースカード等を含む(が、これらに限定されない)。ネットワークインターフェース135は、ネットワーク(図示せず)にわたってネットワークメッセージを受信及び送信するために使用される。
【0014】
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、様々な他のタイプのコンピューティングシステム若しくはデバイスのうち何れかである。コンピューティングシステム100の構成要素の数は、実施形態ごとに変化することに留意されたい。例えば、他の実施形態では、
図1に示される数よりも多い又は少ない各構成要素が存在する。また、他の実施形態では、コンピューティングシステム100は、
図1に示されていない他の構成要素を含むことにも留意されたい。加えて、他の実施形態では、コンピューティングシステム100は、
図1に示される以外の方法で構築される。
【0015】
図2を参照すると、コンピューティングシステム200の別の実施形態のブロック図が示されている。一実施形態では、システム200は、GPU205、システムメモリ225及びローカルメモリ230を含む。また、システム200は、図を不明瞭にすることを避けるために示されていない他の構成要素を含み得る。GPU205は、少なくとも、コマンドプロセッサ235、制御ロジック240、ディスパッチユニット250、計算ユニット255A~255N、DMAエンジン215、メモリコントローラ220、グローバルデータシェア270、レベル1(L1)キャッシュ265、及び、レベル2(L2)キャッシュ260を含む。一実施形態では、メモリコントローラ220は、システム200を横断するパケットを監視するためのトラフィックアナライザ223を含む。他の実施形態では、GPU205は、他の構成要素を含み、図示した構成要素のうち1つ以上を省略し、
図2に1つのインスタンスのみが示されている場合であっても構成要素の複数のインスタンスを有し、及び/又は、他の適切な方法で編成される。一実施形態では、GPU205の回路は、(
図1の)プロセッサ105Nに含まれる。
【0016】
様々な実施形態において、コンピューティングシステム200は、様々なタイプのソフトウェアアプリケーションのうち何れかを実行する。所定のソフトウェアアプリケーションを実行することの一部として、コンピューティングシステム200のホストCPU(図示せず)は、GPU205上で実行される作業を開始する。一実施形態では、コマンドプロセッサ235は、ホストCPUからカーネルを受け取り、ディスパッチユニット250を使用して、対応するウェーブフロントを計算ユニット255A~255Nに対して発行する。計算ユニット255A~255Nで実行されるウェーブフロントは、GPU205内のグローバルデータシェア270、L1キャッシュ265及びL2キャッシュ260に対してデータを読み書きする。
図2には示されていないが、一実施形態では、計算ユニット255A~255Nは、各計算ユニット255A~255N内に1つ以上のキャッシュ及び/又はローカルメモリを含む。
【0017】
一実施形態では、各計算ユニット255A~255Nは、シングルインストラクションマルチプルデータ(Single Instruction Multiple Data、SIMD)処理コアである。本明細書で言及される場合、「計算ユニット」は、同一カーネルのそれぞれのインスタンス化が同時に実行されるパイプライン又はプログラミングモデルである。計算ユニット内の各処理素子は、同一カーネルのそれぞれのインスタンス化を実行する。カーネルのインスタンス化は、その関連データと共に、作業項目(ワークアイテム)又はスレッドと呼ばれる。したがって、カーネルは作業項目のコードであり、作業項目は計算ユニット上の作業の基本単位である。計算ユニット255A~255N上で実行されるカーネルの全てのインスタンス化は、作業項目のグローバルドメインを含む。作業項目のこのグローバルドメインは、計算ドメイン全体を表し、計算ドメイン内の作業項目は、実行される特定のタスクを表す。GPU205での作業項目の実行を簡略化するために、作業項目は、ウェーブフロントにグループ化される。ウェーブフロントは、単一の計算ユニットで一緒に実行される、関連する作業項目の集合である。
【0018】
コマンドプロセッサ235が計算ユニット255A~255Nでウェーブフロントを起動するのと並行して、DMAエンジン215は、トラフィックアナライザ223と協働して様々なDMA動作を実行する。DMAエンジン215は、任意の数及びタイプのDMAエンジンを表すことに留意されたい。一実施形態では、トラフィックアナライザ223は、予め構成されたリストからの項目に一致する、パケットストリームで観察されるイベントに応じて、デバイス間でデータを移動させるようにDMAエンジン215をプログラムする。
【0019】
図3を参照すると、CXLプロトコルを用いるコンピューティングシステム300の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム300は、リンク325を介して接続されたホストプロセッサ305及びアクセラレータデバイス310を含む。一実施形態では、ホストプロセッサ305及びアクセラレータデバイス310は、同一仮想アドレス空間内で動作する。換言すると、この実施形態では、ホストプロセッサ305及びアクセラレータデバイス310は、統合されたアドレス空間を有する。システム300内の任意の他の処理デバイス、アクセラレータ又は他のデバイスについては、
図3には示されていないが、これらの他のデバイスも、ホストプロセッサ305及びアクセラレータデバイス310と同一の仮想アドレス空間内で動作し得る。一実施形態では、システム300は、ヘテロジニアスシステムアーキテクチャ(heterogeneous system architecture、HSA)業界標準に準拠してこの共有アドレス空間を用いる。
【0020】
図3に示される例では、ホストプロセッサ305は、1つ以上のプロセッサコアと、1つ以上のI/Oデバイスと、を含む。また、ホストプロセッサ305は、コヒーレンス及びキャッシュロジック並びにI/Oロジックを含む。一実施形態では、ホストプロセッサ305はCPUであり、他の実施形態では、ホストプロセッサ305は、様々な他のタイプの処理ユニットのうち何れかである。システムメモリ315は、ホストプロセッサ305と同じパッケージ又はダイに含まれ得る。図を不明瞭にすることを避けるために
図3には示されていないが、1つ以上の他のデバイスもリンク325に接続され得ることに留意されたい。
【0021】
一実施形態では、リンク325を介したホストプロセッサ305とアクセラレータデバイス310との通信は、CXLプロトコルに従って実行され得る。CXL技術は、ホストプロセッサ305のメモリ空間とアクセラレータデバイス310のメモリとの間のメモリコヒーレンシを可能にし、システム300上で実行されるアプリケーションの性能の向上及び複雑さの低減を可能にする。CXLトラフィックは、3つの異なるタイプのトラフィッククラス(キャッシュ、メモリ及びI/Oトラフィッククラス)を有する。これらのトラフィッククラス(すなわち、プロトコルタイプ)は、リンク325上で一緒に多重化され、次いで、ホストプロセッサ305及びアクセラレータデバイス310内で内部的に個々のクラスに分割される。システム300は、CXLプロトコルを用いるものとして示され、説明されているが、これは、1つの特定の実施形態を示すにすぎないことを理解されたい。他のタイプのコヒーレント相互接続プロトコルを用いる他のタイプのシステムは、本明細書に提示される技術を利用することができる。
【0022】
一実施形態では、ホストプロセッサ305はトラフィックアナライザ330を含み、アクセラレータデバイス310はトラフィックアナライザ335を含む。トラフィックアナライザ330及び335は、リンク325を介して送信されるパケットを監視する。トラフィックアナライザ330及び335は、パケットに関連するメタデータを分析して、システムメモリ315とデバイス接続メモリ320との間でデータを移動させる方法を決定する。一実施形態では、各トラフィックアナライザ330及び335は、データの移動がトリガされる時点を決定するイベントリストを含む。所定のパケット内のメタデータがイベントリストのエントリのうち何れかで基準を満たす場合、トラフィックアナライザは、近い将来にデータを使用する可能性が高いデバイスに最も近いメモリにデータを移動させる。2つのトラフィックアナライザ330及び335が
図3に示されているが、他の実施形態は、他の数のトラフィックアナライザ(例えば、1、3、16)を有し得ることを理解されたい。
【0023】
図4を参照すると、コントローラ400の一実施形態のブロック図が示されている。コントローラ400は、トラフィックアナライザ400とも称され得ることに留意されたい。一実施形態では、(
図1の)トラフィックアナライザ133、(
図2の)トラフィックアナライザ223、並びに、(
図3の)トラフィックアナライザ330及び335は、コントローラ400の構成要素及び機能を含む。制御ユニット405は、DMAエンジン430に接続されており、DMAエンジン430を使用して、システム全体(例えば、
図1のシステム100)に含まれるデバイスを超えてデータを移動させる。制御ユニット405は、回路、実行ユニット、プロセッサコア、メモリ素子、及び/又は、プログラム命令の任意の組み合わせを使用して実装され得る。
【0024】
コントローラ400は、動作中にアクセス可能メディアデバイスリスト410及びイベントリスト420を維持し、及び/又は、これらにアクセスする。アクセス可能メディアデバイスリスト410は、コントローラ400によってアクセス可能なメディアデバイスの識別情報を含む。アクセス可能メディアデバイスリスト410は、発見イベント、Vendor Defined Message(VDM)の時点で、及び、他の動作に基づいて更新される。イベントリスト420は、データ移動をトリガするイベントリストを含む。一実施形態では、最も優先度の低いイベントが、イベントリスト420で最初に列挙される。別の実施形態では、各イベントは、そのイベントと共に記憶される、関連優先度インジケータを有する。2つのイベントが同時に観察され、競合するアクションをトリガする場合、優先度の高い方のイベントが最初に果たされる。
【0025】
例えば、第1のイベントが、所定のコア又はデバイスでのプリフェッチャを有効にするように命令し、第2のイベントが、所定のコア又はデバイスでのプリフェッチャを無効にさせる場合、優先順位の高い方のイベントが最初に実行される。また、第1のイベントが、所定のデータ領域を第1の位置に移動することを要求し、第2のイベントが、所定のデータ領域を第2の位置に移動することを要求する場合、優先順位の高い方のイベントが最初に果たされる。更に、2つの異なるイベントがDMAエンジンを要求するが、DMAエンジンがその要求を同時に果たすことができない場合、優先順位の高い方のイベントが最初に実行されるであろう。一実施形態では、イベントが所定のデータ領域に対する移動をトリガした後に、他のイベントが所定のデータ領域の別の移動をトリガすることができない期間(すなわち、クールダウン期間)が存在する。
【0026】
図5を参照すると、イベントリスト500の一例が示されている。一実施形態では、(
図4の)イベントリスト420は、イベントリスト500のエントリを含む。イベント505は、I/Oアドレス変換サービス(ATS)変換完了イベントを指す。一実施形態では、ATS変換の完了は、変換完了日エントリに「CXL」ビットを設定することによって、CXL.IOプロトコルタイプへのアクセスを制限する。一実施形態では、「CXL」ビットは、キャッシュ不能なタイプのデータに対して設定される。かかるイベントが発生すると、コントローラは、I/Oスタイル、ブロックアクセスに適したメディアに対応するページを配置する。これは、キャッシュライン粒度CXL.cache及びCXL.memアクセスが近い将来ページに発生しない可能性が高いという事実に起因する。一実施形態では、I/Oスタイルのブロックアクセスに適したメディアは、フラッシュデバイスである。本明細書で使用される場合、「フラッシュ」デバイスという用語は、電気での書き込み又は消去が可能な不揮発性電子コンピュータメモリ記憶媒体を指す。フラッシュメモリには2つの主なタイプ(NORフラッシュ及びNANDフラッシュ)がある。一実施形態では、エントリ505は中優先度を有する。
【0027】
エントリ510は、バイアスフリップ要求イベントを指す。バイアスフリップ要求は、ホストのキャッシュからのキャッシュラインを無効化するためにデバイスからホストに送信される。一実施形態では、バイアスフリップ要求は、RdOwnNoDataオペコードを使用してCXL.cache要求チャネル上で送信される。バイアスフリップ要求は、メモリが近い将来にデバイスによって使用されることを明確に示す。結果として、コントローラは、バイアスフリップ要求に関連するメモリ領域をデバイスのローカルメモリにプルする。一実施形態では、バイアスフリップ要求は高優先度を有する。
【0028】
エントリ515は、同一ページのキャッシュラインに対する、「N」個の所有権読み取りパケット(read for ownership packets)が検出された場合のイベントを指し、「N」は正の整数である。一実施形態では、キャッシュラインのサイズは64バイトであり、ページのサイズは4キロバイト(KB)である。しかしながら、キャッシュライン及びページのサイズは、他の実施形態では異なり得る。また、「N」の値は、実施形態ごとに異なり、「N」は、データ移動をトリガするための閾値として機能する。所有権読み取りパケットは、デバイスが任意の書き込み可能状態(例えば、変更状態、排他状態)でデータをキャッシュしている動作を指す。このイベントの検出に応じてコントローラによって実行されるアクションは、同一データ範囲への後続のメモリアクセスの可能性に起因して、データをローカルデバイスメモリにプルすることである。一実施形態では、エントリ515は高優先度を有する。
【0029】
エントリ520は、フルキャッシュラインのアトミック書き込みを指す。同一ページに対する、「N」個のこれらのパケットが検出されると、データはローカルデバイスメモリにプルされる。要求が最終レベルキャッシュで失敗すると、データはメモリに書き込まれる。一実施形態では、エントリ520は高優先度を有する。
【0030】
エントリ525は、キャッシュラインのクリーン削除を指す。一実施形態では、エントリ525は、ホストがデバイスキャッシュからデータを削除する要求を生成すると生じる。エントリ525は、データを伴うクリーン削除要求又はデータを伴わないクリーン削除を指し得る。換言すると、ホストは、クリーンデータを要求するか、要求しないかの何れかである。同一ページに対する、「N」個のこれらの要求を検出することに応じて実行されるアクションは、データをホストのメインメモリにプルすることである。一実施形態では、エントリ525は中優先度を有する。
【0031】
エントリ530は、ホストによって要求されるデバイスキャッシュからの変更データの削除を指す。「N」個のこれらのダーティ削除パケットが同一ページに対して検出された場合、実行されるアクションは、対応する変更データをホストメインメモリに転送することである。一実施形態では、エントリ530は高優先度を有する。
【0032】
エントリ535は、ホストが共有状態又は排他状態でデータをキャッシュする場合のスヌープ要求を指す。デバイスは、キャッシュラインを共有又は無効に降格させて、ダーティデータを返すであろう。「N」個のこれらのスヌープ要求パケットが同一ページに対して検出された場合、実行されるアクションは、当該ページをホストメインメモリに転送することである。一実施形態では、エントリ535は中優先度を有する。
【0033】
エントリ540は、ホストが排他状態でデータをキャッシュする場合のスヌープ無効化要求を指す。デバイスは、スヌープ無効化要求の受信に応じてキャッシュラインを無効化するであろう。「N」個のこれらのスヌープ無効化要求パケットが同一ページに対して検出された場合、実行されるアクションは、当該ページをホストメインメモリに転送することである。一実施形態では、エントリ540は中優先度を有する。
【0034】
エントリ545は、ホストがキャッシュラインの排他的コピーを望む場合のメモリ読み取りパケットを指す。このイベントが検出されると、行われるアクションは、後続のアクセスのために対応するデータをホストメインメモリにプルすることである。一実施形態では、エントリ545は高優先度を有する。
【0035】
エントリ550は、ホストが、キャッシュ不能であるが、現在のキャッシュラインのコピーを望む場合のメモリ読み取りパケットを指す。このイベントが検出されると、行われるアクションは、後続のアクセスのために対応するデータをホストメインメモリにプルすることである。一実施形態では、エントリ550は中優先度を有する。
【0036】
イベントリスト500に示されたエントリ505~550の例は、1つの特定の実施形態を示すにすぎないことを理解されたい。他の実施形態では、イベントリスト500は、データ移動をトリガするであろう、他のタイプのイベントに対応する他の数及び/又はタイプのエントリを有し得る。また、「N」の値はエントリごとに変化し、あるエントリがより高い「N」の値を有し、別のエントリがより低い「N」の値を有することに留意されたい。例えば、あるエントリは、あるページを標的とする5個のパケットが検出されると、当該ページの移動を引き起こし、別のエントリは、あるページのキャッシュラインに関連する3個のパケットが検出されると、当該ページの移動を引き起し得る。換言すると、データ移動の閾値はイベントタイプに依存し、異なるイベントは異なる閾値を有する。
【0037】
エントリ505~550の優先度は、高、中及び低の値をとるものとして示されているが、これは1つの実施形態を表すにすぎない。他の実施形態では、これらの値は、数値又はバイナリ値に変換され得る。優先度値を符号化するために使用されるビット数は、実施形態に従って異なり得る。また、
図5には単一のリスト500が示されているが、リスト500は、トラフィックアナライザによって維持され、アクセスされ得る任意の数のリストを表すことを理解されたい。例えば、別の実施形態では、トラフィックアナライザは、CXL.memoryプロトコルタイプ用のリスト、CXL.cacheプロトコルタイプ用のリスト、及び、CXL.ioプロトコルタイプ用のリストの3つのリストを維持する。検出されるパケットのタイプに応じて、トラフィックアナライザは、パケットのプロトコルタイプに対応するリストに問い合わせを行う。
【0038】
図6を参照すると、パケットメタデータに基づいてデータ配置を決定するための方法600の一実施形態が示されている。説明のために、この実施形態におけるステップは、順番に示されている。しかしながら、記載された方法の様々な実施形態では、記載された要素のうち1つ以上が、示された順序とは異なる順序で同時に実行されるか、又は、完全に省略されることに留意されたい。必要に応じて、他の追加の要素も実行される。本明細書に記載の様々なシステム又は装置の何れも、方法600を実施するように構成されている。
【0039】
トラフィックアナライザは、コンピューティングシステムにおいてデータ移動をトリガするためのイベントリストを維持する(ブロック605)。また、トラフィックアナライザは、リンクを横断するパケットのストリームを監視する(ブロック610)。リンクは、相互接続、ファブリック、バス、メモリチャネル又はその他であり得る。リンクを横断するパケットごとに、トラフィックアナライザは、パケットに関連するメタデータを分析する(ブロック615)。別の実施形態では、トラフィックアナライザは、リンクを横断するパケットの一部(すなわち、サブセット)を分析する。例えば、一実施形態では、トラフィックアナライザは、リンクを横断する4つのパケットごとに1つのパケットを分析する。他の実施形態では、他の比率(例えば、1/8、1/16)が可能である。トラフィックアナライザは、パケットがイベントリストの何れかのイベントエントリで指定された基準を満たすことをメタデータが示すかどうかを判定する(ブロック620)。
【0040】
メタデータが、所定のパケットがイベントリストの何れかのイベントエントリで指定された基準を満たすことを示す場合(条件ブロック625、「はい」)、トラフィックアナライザは、対応するデータのブロックを第1のメモリデバイスから第2のメモリデバイスに移動させる(ブロック630)。この説明のために、第2のメモリデバイスは、第1のメモリデバイスとは異なるものと仮定する。一実施形態では、トラフィックアナライザは、アクセス可能メディアデバイスリスト(例えば、
図4のアクセス可能メディアデバイスリスト410)に問い合わせて、対応するデータのブロックを移行するのに好ましいメモリデバイスを決定する。一実施形態では、トラフィックアナライザはDMAエンジンに結合されており、トラフィックアナライザは、第1のメモリデバイスから第2のメモリデバイスへのデータ移動を実行するようにDMAエンジンをプログラムする。
【0041】
また、データ移動が完了すると、仮想-物理アドレス変換がデータのブロックに対して更新される(ブロック635)。変換を更新することは、オペレーティングシステム(OS)に通知すること、アプリケーションを一時停止すること、TLBシュートダウンを開始すること等のように、特定の順序で実行される任意の数のアクションを含み得る。トラフィックアナライザは、実施形態及びシステムアーキテクチャに応じて、システムアーキテクチャに固有の順序でこれらのステップ及び/又は他のステップを実行するようにプログラムされ得る。場合によっては、トラフィックアナライザは、OSを起動することなく、ページテーブル及びTLB内の変換を更新するステップを実行する。他の場合には、トラフィックアナライザは、OSと協働して変換を更新する。例えば、一実施形態では、トラフィックアナライザは、リンクを介してパケットをOSに送信して変換更新を要求する。ブロック635の後、方法600はブロック610に戻り、トラフィックアナライザは、リンクを横断するパケットのストリームの監視を続行する。
【0042】
さもなければ、所定のパケットのメタデータがイベントリストの何れのイベントエントリで指定された基準も満たさない場合(条件ブロック625、「いいえ」)、方法600はブロック610に戻り、トラフィックアナライザは、リンクを横断するパケットのストリームの監視を続行する。
【0043】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書に記載の方法及び/又は機構を実装する。例えば、汎用又は専用プロセッサによって実行可能なプログラム命令が企図される。様々な実施形態では、そのようなプログラム命令は、高レベルプログラミング言語によって表される。他の実施形態では、プログラム命令は、高レベルプログラミング言語からバイナリ、中間又は他の形式にコンパイルされる。代替的に、ハードウェアの挙動又は設計を説明するプログラム命令が書かれる。そのようなプログラム命令は、C等の高レベルプログラミング言語によって表される。代替的に、Verilog等ハードウェア設計言語(hardware design language、HDL)が使用される。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に言えば、そのようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0044】
上記の実施形態は、実施形態の非限定的な例にすぎないことを強調しておきたい。上記の開示が十分に理解されると、多数の変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含すると解釈されることが意図されている。
【国際調査報告】