IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特表2024-514502分散型データセンタにおける適応型メモリ一貫性
<>
  • 特表-分散型データセンタにおける適応型メモリ一貫性 図1
  • 特表-分散型データセンタにおける適応型メモリ一貫性 図2
  • 特表-分散型データセンタにおける適応型メモリ一貫性 図3
  • 特表-分散型データセンタにおける適応型メモリ一貫性 図4
  • 特表-分散型データセンタにおける適応型メモリ一貫性 図5
  • 特表-分散型データセンタにおける適応型メモリ一貫性 図6
  • 特表-分散型データセンタにおける適応型メモリ一貫性 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-02
(54)【発明の名称】分散型データセンタにおける適応型メモリ一貫性
(51)【国際特許分類】
   G06F 9/52 20060101AFI20240326BHJP
   G06F 12/0888 20160101ALI20240326BHJP
   G06F 12/00 20060101ALI20240326BHJP
   G06F 15/173 20060101ALI20240326BHJP
【FI】
G06F9/52 150A
G06F12/0888 102
G06F12/00 560A
G06F15/173 665D
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023560434
(86)(22)【出願日】2022-03-16
(85)【翻訳文提出日】2023-11-08
(86)【国際出願番号】 US2022020607
(87)【国際公開番号】W WO2022212061
(87)【国際公開日】2022-10-06
(31)【優先権主張番号】17/219,505
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】セルゲイ ブラゴドゥロフ
(72)【発明者】
【氏名】ブランドン ケー. ポッター
(72)【発明者】
【氏名】ジョナサン オルソップ
【テーマコード(参考)】
5B045
5B160
5B205
【Fターム(参考)】
5B045BB15
5B045BB54
5B045DD10
5B045DD12
5B045EE03
5B045EE26
5B160AA20
5B205NN95
(57)【要約】
データプロセッサは、データファブリックに結合し、メモリアクセス命令を実行するためのファブリック接続メモリ(FAM)インターフェースを含む。FAMインターフェースに結合されたリクエスタ側適応型一貫性コントローラは、データプロセッサがアクセスするのを許可されたFAM領域へのアクセスを許可されたリクエスタの変更に関する、ファブリック接続メモリのファブリックマネージャからの通知を要求する。通知が、2つ以上のリクエスタがFAM領域へのアクセスを許可されていることを示す場合に、ローカルアプリケーションにおいて選択されたメモリアクセス命令に対するフェンスがアクティブ化される。
【選択図】図5
【特許請求の範囲】
【請求項1】
ファブリック接続メモリと、ファブリックを介して前記ファブリック接続メモリに結合された複数のリクエスタと、を含むファブリック接続メモリシステムで使用する方法であって、
ファブリック接続メモリ領域へのアクセスを許可されたリクエスタの変更に関するファブリックマネージャからの通知を要求することと、
2つ以上のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、選択されたメモリアクセス命令に対するフェンスをアクティブ化させることと、を含む、
方法。
【請求項2】
単一のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、前記メモリ領域を、前記単一のリクエスタのためのライトバックメモリ領域としてマッピングすることを更に含む、
請求項1の方法。
【請求項3】
2つ以上のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、
許可されたリクエスタごとに、
前記リクエスタがローカルフェンスコマンドを発行するように構成されている場合に、前記選択されたメモリアクセス命令に対するローカルフェンスコマンドを発行させ、前記ファブリック接続メモリ領域を、前記リクエスタのためのライトスルーメモリとしてマッピングすることと、
前記リクエスタがローカルフェンスコマンドを発行するように構成されていない場合に、前記ファブリック接続メモリ領域を、キャッシュ不可能としてマッピングすることと、を更に含む、
請求項2の方法。
【請求項4】
前記フェンスをアクティブ化させることは、前記選択されたメモリアクセス命令を、リクエスタ間の依存性を示すものとして認識したことに応じて、リクエスタ側適応型一貫性コントローラに、前記選択されたメモリアクセス命令に対するフェンスコマンドを追加させることを含む、
請求項1の方法。
【請求項5】
前記選択されたメモリアクセス命令を認識することは、前記ファブリック接続メモリ領域へのアクセスを許可された各リクエスタで実行されるプロセッサ命令マイクロコードによって実行される、
請求項3の方法。
【請求項6】
一貫性プリミティブ及び一貫性コンストラクトを認識したことに応じて、コンパイル中にリクエスタファブリックインターフェースマーカをアプリケーションに挿入することを更に含む、
請求項4の方法。
【請求項7】
前記選択されたメモリアクセス命令を認識することは、スレッド間のデータの同期に関連する命令タイプ及び命令プレフィックスの所定のリスト内の命令を認識することに基づいている、
請求項3の方法。
【請求項8】
前記ファブリック接続メモリ領域へのアクセスを許可された各リクエスタにおいて、前記ファブリック接続メモリ領域へのアクセスを許可された前記リクエスタのテーブルを維持し、前記通知の各々に応じて前記テーブルを更新することを更に含む、
請求項1の方法。
【請求項9】
前記テーブルは、少なくとも、ファブリック接続メモリ領域識別子と、前記ファブリック接続メモリ領域へのアクセスを許可された計算リクエスタの数と、を含む、
請求項7の方法。
【請求項10】
データプロセッサであって、
アプリケーションを実行する処理コアと、
前記処理コアに結合され、データファブリックに結合し、前記処理コアからファブリック接続メモリへのメモリアクセス命令を実行するように適合されたファブリック接続メモリインターフェースと、
前記処理コア及び前記ファブリック接続メモリインターフェースに結合されたリクエスタ側適応型一貫性コントローラと、を備え、
前記リクエスタ側適応型一貫性コントローラは、
前記データプロセッサがアクセスするのを許可されたファブリック接続メモリ領域へのアクセスを許可されたリクエスタの変更に関する、前記ファブリック接続メモリのファブリックマネージャからの通知を要求することと、
2つ以上のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、ローカルアプリケーションにおいて選択されたメモリアクセス命令に対するフェンスをアクティブ化させることと、
を行うように動作可能である、
データプロセッサ。
【請求項11】
前記リクエスタ側適応型一貫性コントローラは、単一のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、前記ファブリック接続メモリ領域を、ライトバックメモリ領域としてマッピングさせるように動作可能である、
請求項10のデータプロセッサ。
【請求項12】
前記リクエスタ側適応型一貫性コントローラは、2つ以上のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、
前記データプロセッサがローカルフェンスコマンドを発行するように構成されている場合に、前記選択されたメモリアクセス命令に対するローカルフェンスコマンドを発行させ、前記ファブリック接続メモリ領域を、ライトスルーメモリとしてマッピングすることと、
前記データプロセッサがローカルフェンスコマンドを発行するように構成されていない場合に、前記ファブリック接続メモリ領域を、キャッシュ不可能としてマッピングさせることと、
を行うように動作可能である、
請求項11のデータプロセッサ。
【請求項13】
前記処理コアによってアクセス可能な有形の非一時的なメモリに記憶され、前記選択されたメモリアクセス命令を認識するために前記処理コアによって実行可能なプロセッサ命令マイクロコードを備える、
請求項10のデータプロセッサ。
【請求項14】
前記プロセッサ命令マイクロコードは、前記選択されたメモリアクセス命令を、リクエスタ間の依存関係を示すものとして認識したことに応じて、認識された前記選択されたメモリアクセス命令を前記リクエスタ側適応型一貫性コントローラに通知して、リクエスタ側フェンスコマンドを、前記ファブリック接続メモリインターフェースへのメモリコマンドに挿入させることを実行する、
請求項13のデータプロセッサ。
【請求項15】
前記選択されたメモリアクセス命令を認識することは、一貫性プリミティブ及び一貫性コンストラクトのうち何れかを含む前記ローカルアプリケーション内のインジケータを認識することに応答することを含む、
請求項13のデータプロセッサ。
【請求項16】
前記選択されたメモリアクセス命令を認識することは、コンパイル中に前記アプリケーションに挿入されたファブリックインターフェースマーカを認識することを含む、
請求項13のデータプロセッサ。
【請求項17】
前記リクエスタ側適応型一貫性コントローラは、前記ファブリック接続メモリ領域へのアクセスを許可された前記リクエスタのテーブルを維持し、前記通知の各々に応じて前記テーブルを更新する、
請求項10のデータプロセッサ。
【請求項18】
前記テーブルは、少なくとも、ファブリック接続メモリ領域識別子と、前記ファブリック接続メモリ領域へのアクセスを許可された計算リクエスタの数と、を含む、
請求項19のデータプロセッサ。
【請求項19】
ファブリック接続メモリシステムであって、
ファブリック接続メモリと、
前記ファブリック接続メモリに結合されたデータファブリックと、
前記データファブリックに結合され、リクエスタが前記ファブリック接続メモリのメモリ領域にアクセスするのを許可及び許可解除するように動作可能なファブリックマネージャと、
前記データファブリックに結合された複数のデータプロセッサと、を備え、
前記複数のデータプロセッサの各々は、
アプリケーションを実行する処理コアと、
ファブリック接続メモリインターフェースと、
前記処理コア及び前記ファブリック接続メモリインターフェースに結合されたリクエスタ側適応型一貫性コントローラと、を含み、
前記リクエスタ側適応型一貫性コントローラは、
前記データプロセッサがアクセスするのを許可されたファブリック接続メモリ領域へのアクセスを許可されたリクエスタの変更に関する前記ファブリックマネージャからの通知を要求することと、
2つ以上のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、ローカルアプリケーションにおいて選択されたメモリアクセス命令に対するフェンスをアクティブ化させることと、
を行うように動作可能である、
ファブリック接続メモリシステム。
【請求項20】
前記リクエスタ側適応型一貫性コントローラは、単一のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、前記ファブリック接続メモリ領域を、ライトバックメモリ領域としてマッピングさせるように動作可能である、
請求項19のファブリック接続メモリシステム。;
【請求項21】
各リクエスタ側適応型一貫性コントローラは、2つ以上のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、
前記各リクエスタ側適応型一貫性コントローラの前記データプロセッサがローカルフェンスコマンドを発行するように構成されている場合に、前記選択されたメモリアクセス命令に対するローカルフェンスコマンドを発行させ、前記ファブリック接続メモリ領域を、ライトスルーメモリとしてマッピングすることと、
前記リクエスタ側適応型一貫性コントローラの前記データプロセッサがローカルフェンスコマンドを発行するように構成されていない場合に、前記ファブリック接続メモリ領域を、キャッシュ不可能としてマッピングさせることと、
を行うように動作可能である、
請求項20のファブリック接続メモリシステム。
【請求項22】
各データプロセッサは、前記各データプロセッサの前記処理コアによってアクセス可能な有形の非一時的なメモリに記憶され、前記選択されたメモリアクセス命令を認識するために前記処理コアによって実行可能なプロセッサ命令マイクロコードを含む、
請求項19のファブリック接続メモリシステム。
【請求項23】
前記プロセッサ命令マイクロコードは、前記選択されたメモリアクセス命令を、リクエスタ間の依存関係を示すものとして認識したことに応じて、認識された前記選択されたメモリアクセス命令を前記リクエスタ側適応型一貫性コントローラに通知して、リクエスタ側フェンスコマンドを、前記ファブリック接続メモリインターフェースへのメモリコマンドに挿入させることを実行する、
請求項19のファブリック接続メモリシステム。
【請求項24】
前記選択されたメモリアクセス命令を認識することは、一貫性プリミティブ及び一貫性コンストラクトのうち何れかを含む前記ローカルアプリケーション内のインジケータを認識することを含む、
請求項19のファブリック接続メモリシステム。
【請求項25】
前記選択されたメモリアクセス命令を認識することは、コンパイル中に前記アプリケーションに挿入されたファブリックインターフェースマーカを認識することを含む、
請求項19のファブリック接続メモリシステム。
【請求項26】
前記リクエスタ側適応型一貫性コントローラは、前記ファブリック接続メモリ領域へのアクセスを許可された前記リクエスタのテーブルを維持し、前記通知の各々に応じて前記テーブルを更新する、
請求項19のファブリック接続メモリシステム。
【請求項27】
前記テーブルは、少なくとも、ファブリック接続メモリ領域識別子と、前記ファブリック接続メモリ領域へのアクセスを許可された計算リクエスタの数と、を含む、
請求項26のファブリック接続メモリシステム。
【発明の詳細な説明】
【背景技術】
【0001】
Compute Express Link(CXL)3.0、Gen-Z、又はSlingshot等の新興のファブリック規格は、中央演算処理装置(central processing unit、CPU)ホストがファブリック接続メモリ(Fabric-Attached Memory、FAM)モジュールにアクセス可能な、データセンタの分散化への手法を例示する。そのようなモジュールは、データセンタファブリックに接続されたメモリを含み、それに関連付けられた計算能力がないか又はほとんどない。FAMでは、ホストは、それらのローカルサーバのメモリ容量制限によって制約されない。代わりに、ホストは、任意の特定のホストに接続される必要のないメモリの膨大なプールにアクセスすることができる。FAMは、ホスト間でパーティション化され、パーティションは、1つのホスト専用であってもよいし、複数のホスト間で共有されてもよい。
【0002】
メモリの一貫性(memory consistency)は、FAMシステムと共に使用するためのソフトウェアアプリケーションを開発するプロセスにおいて重要な考慮事項である。一貫性は、マルチプロセッサ又はマルチスレッドシステムにおける(異なるメモリ場所への)メモリ命令がどのように順序付けられるかを定義し、一貫性モデルに従って独立したメモリ動作を並べ替えることによって実行される。
【0003】
高レベルの依存性が関与している単一プロセッサの命令ストリームにおける独立したメモリ動作に様々な順序付け制約を課す、様々な一貫性モデルが開発されてきた。逐次一貫性(Sequential Consistency)として知られる単純な一貫性モデルでは、プロセッサは、読み出し及び書き込みを並べ替えることができない。「トータルストアオーダー(Total Store Order)」(TSO)として知られる別のモデルは、ストアバッファリングを可能にする。この方式では、ストアバッファは、指定された条件が満たされ、動作のグループがメモリに送信されることが可能になるまで、メモリに送信される必要があるストア動作を保持する。ロードはストアを通過することができるが、ストアはプログラム順にメモリに送信される。ロード動作のアドレスは、ストアバッファ内のアドレスに対してチェックされ、ストアバッファは、アドレス一致がある場合にロード動作を満たすために使用される。
【0004】
緩和された(relaxed)又は弱い(weak)一貫性モデルとして知られる他の一貫性モデルは、動作の並べ替えが許容される領域を画定するフェンス(fence)(又はバリア)動作の何らかのバージョンに依存する。解放一貫性(release consistency)は、弱い一貫性モデルの一例であり、同期アクセスは、ロックのような動作が全ての後続のメモリアクセスの前に完了しなければならない「取得(Acquire)」と、ロック解除のような動作が解放の完了前に全てのメモリ動作と共に完了しなければならない「解放(Release)」と、に分割される。
【図面の簡単な説明】
【0005】
図1】先行技術によるファブリック接続メモリ(FAM)システムのブロック図である。
図2】いくつかの実施形態による、図1等のFAMシステムにおける計算ユニットとして使用するのに好適な加速処理ユニット(accelerated processing unit、APU)のブロック図である。
図3】いくつかの実施形態による、適応型一貫性コントローラ(adaptive consistency controller、ACC)を含むFAMメモリシステムの特定の要素のブロック図である。
図4】いくつかの実施形態による、図3のACCを動作させるプロセスを示す図である。
図5】例示的な実施形態による、適応型一貫性コントローラにおいてメモリ一貫性モデルを管理するためのプロセスのフロー図である。
図6】いくつかの実施形態による、メモリ一貫性モデルを実行するためのプロセスのフロー図である。
図7】いくつかの追加の実施形態による、メモリ一貫性モデルを実行するための別のプロセスのフロー図である。
【発明を実施するための形態】
【0006】
以下の説明において、異なる図面における同一の符号の使用は、同様の又は同一のアイテムを示す。別段言及されなければ、「結合される」という単語及びその関連する動詞形は、当技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、別段言及されなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も意味する。
【0007】
方法は、ファブリック接続メモリと、ファブリックを介してファブリック接続メモリに結合された複数のリクエスタと、を含むファブリック接続メモリシステムと共に使用するためのものである。ファブリック接続メモリ領域にアクセスすることを許可されたリクエスタの変更に関するファブリックマネージャからの通知が要求される。2つ以上のリクエスタがファブリック接続メモリ領域にアクセスすることを許可されていることを示すファブリックマネージャからの通知に応じて、そのように許可されたリクエスタごとに、ファブリック接続メモリ領域に関係するローカルアプリケーションにおいて選択されたメモリアクセス命令に対するフェンスがアクティブ化される。
【0008】
データプロセッサは、処理コアと、ファブリック接続メモリインターフェースと、リクエスタ側適応型一貫性コントローラと、を含む。処理コアは、アプリケーションを実行する。ファブリック接続メモリインターフェースは、処理コアに結合され、データファブリックに接続し、処理コアからファブリック接続メモリへのメモリアクセス命令を実行するように適合される。リクエスタ側適応型一貫性コントローラは、処理コア及びファブリック接続メモリインターフェースに結合され、データプロセッサがアクセスすることを許可されたファブリック接続メモリ領域にアクセスすることを許可されたリクエスタの変更に関する、ファブリック接続メモリのためのファブリックマネージャからの通知を要求する。2つ以上のリクエスタがファブリック接続メモリ領域にアクセスすることを許可されていることを示すファブリックマネージャからの通知に応じて、リクエスタ側適応型一貫性コントローラは、ローカルアプリケーションにおいて選択されたメモリアクセス命令に対するフェンスをアクティブ化させる。
【0009】
ファブリック接続メモリシステムは、ファブリック接続メモリと、データファブリックと、ファブリックマネージャと、複数のデータプロセッサと、を含む。データファブリックは、ファブリック接続メモリに接続される。ファブリックマネージャは、データファブリックに接続され、ファブリック接続メモリのメモリ領域にアクセスすることをリクエスタに許可及び許可解除するように動作可能である。複数のデータプロセッサは、データファブリックに接続され、それぞれが、アプリケーションを実行する処理コアと、ファブリック接続メモリインターフェースと、処理コア及びファブリック接続メモリインターフェースに結合されたリクエスタ側適応型一貫性コントローラと、を含む。リクエスタ側適応型一貫性コントローラは、データプロセッサがアクセスすることを許可されているファブリック接続メモリ領域にアクセスすることを許可されているリクエスタの変更に関するファブリックマネージャからの通知を要求する。2つ以上のリクエスタがファブリック接続メモリ領域にアクセスすることを許可されていることを示すファブリックマネージャからの通知に応じて、リクエスタ側適応型一貫性コントローラは、ローカルアプリケーションにおいて選択されたメモリアクセス命令に対するフェンスをアクティブ化させる。
【0010】
図1は、先行技術よるファブリック接続メモリ(FAM)システム100のブロック図である。図示したFAMシステム100は、分散型データセンタにしばしば用いられる多くのトポロジにおけるデータファブリックトポロジの一例にすぎない。FAMシステム100は、概して、データセンタファブリック102と、ポッド(pods)と呼ばれるいくつかのデバイスグループ104と、を含む。
【0011】
それぞれのポッド104は、複数の計算ノード「C」、複数のメモリノード「M」、及び、相互接続ネットワーク「ICN」を含む。計算ノードCは、ルータ「R」を介してICNに接続されている。計算ノードCは、同じ一貫性ドメインの一部である複数のCPU(それぞれ複数のコア)又は複数の加速処理ユニット(APU)を含む。それぞれの計算ノードCは、ネットワークインターフェースカード(network interface card、NIC)、CXLインターフェース、又は、計算ノードCのためのデータセンタファブリック102へのゲートウェイである他の好適なファブリックインターフェース等のファブリックブリッジを含む。メモリノードMは、ルータRを介してICNに接続されている。それぞれのメモリノードMは、同様のファブリックインターフェースと、FAMへの要求を満たすメディアコントローラと、を含む。ICNは、様々な計算ノードCをメモリノードMと相互接続するためのスイッチを含み、いくつかのトポロジではルータを含み得る。
【0012】
図示したトポロジは、ルータR及びICNによって形成されたローカルデータセンタファブリックと、データセンタファブリック102とラベル付けされたグローバルデータセンタファブリックと、を含む。この実施形態では、ローカルデータセンタファブリックは、ラック内にあり、グローバルデータセンタファブリックは、複数のラックを含む。しかしながら、様々なファブリックトポロジがラック内又はデータセンタ内に実装されてもよく、ネットワークを介して遠隔でデータセンタにアクセスする計算ノードを含んでもよい。多くのトポロジは、FAMプールの一部であるメモリも含む計算ノードCを有することに留意されたい。そのようなメモリは、ファブリック接続メモリとしてマッピングされてもよく、「構成可能性(composability)」と呼ばれるリソース割り当てプロセスに従って他の計算ノードによる使用のために利用可能にされ得る。
【0013】
データセンタファブリック102は、CXL、Gen-Z又は他の好適なメモリファブリックプロトコル等のプロトコルでデータトラフィックを結合するスイッチ及びルータを含む、ポッド104間のデータ相互接続を提供する。データセンタファブリックにおいて、複数のプロトコルが一緒に用いられ得ることに留意されたい。この例示的な実施形態では、CXLは、ラック内のデバイスを相互接続するために用いられ、Gen-Zは、データセンタ内の様々なラックを相互接続するために用いられる。
【0014】
図2は、図1のFAMシステム100のようなFAMシステムにおいて計算ユニットCとして使用するのに好適なAPU200のブロック図である。APU200は、ホストデータ処理システムにおけるプロセッサとして使用するのに好適な集積回路であり、概して、中央演算処理装置(CPU)コア複合体210と、グラフィックスコア220と、ディスプレイエンジン222のセットと、データファブリック225と、メモリ管理ハブ240と、周辺コントローラ260のセットと、周辺バスコントローラ270のセットと、システム管理ユニット(system management unit、SMU)280と、メモリインターフェース290のグループと、を含む。
【0015】
CPUコア複合体210は、CPUコア212及びCPUコア214を含む。この例では、CPUコア複合体210が2つのCPUコアを含むが、他の実施形態では、CPUコア複合体210が任意の数のCPUコアを含むことができる。CPUコア212、214のそれぞれは、制御ファブリックを形成するシステム管理ネットワーク(system management network、SMN)及びローカルデータファブリック225に対して双方向で接続され、データファブリック225にメモリアクセス要求を提供することができる。CPUコア212及び214のそれぞれは、単体のコアであってもよく、又は更にキャッシュ等の特定のリソースを共有する2つ以上の単体のコアを有するコア複合体であってもよい。CPUコア212、214のそれぞれは、以下で更に説明するように、データセンタファブリック上でメモリ一貫性のための特定の機能を実施することを含む、特定の命令をCPU上で実行するために動作するμCode216を含む。
【0016】
グラフィックスコア220は、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス動作を高度に統合された並列方式で実施することができる高性能グラフィックス処理ユニット(graphics processing unit、GPU)である。グラフィックスコア220は、SMN及びデータファブリック225に対して双方向で接続され、メモリアクセス要求をデータファブリック225に提供することができる。これに関して、APU200は、CPUコア複合体210とグラフィックスコア220とが同じメモリ空間を共有する統合メモリアーキテクチャ、又は、CPUコア複合体210とグラフィックスコア220とがメモリ空間の一部を共有する一方でグラフィックスコア220がCPUコア複合体210によりアクセスできないプライベートグラフィックスメモリも使用するメモリアーキテクチャの何れかをサポートすることができる。メモリ領域は、ローカルメモリから割り当てられてもよく、又は、データセンタファブリックから割り当てられてもよい。
【0017】
ディスプレイエンジン222は、モニタ上に表示するためにグラフィックスコア220によって生成されたオブジェクトをレンダリングしてラスタライズする。グラフィックスコア220及びディスプレイエンジン222は、システムメモリ内の適切なアドレスへの一様な変換のために、共通メモリ管理ハブ240に双方向で接続される。
【0018】
ローカルデータファブリック250は、任意のメモリアクセスエージェントとメモリ管理ハブ240との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリックは、システム構成に基づいてメモリアクセスの送信先を決定するために、基本入力/出力システム(basic input/output system、BIOS)によって規定されるシステムメモリマップ、並びに、各仮想接続のためのバッファも含む。
【0019】
周辺コントローラ260は、ユニバーサルシリアルバス(universal serial bus、USB)コントローラ262及びシリアルアドバンストテクノロジーアタッチメント(Serial Advanced Technology Attachment、SATA)インターフェースコントローラ264を含み、これらのそれぞれは、システムハブ266及びSMNバスに対して双方向で接続される。これらの2つのコントローラは、APU200で使用され得る周辺コントローラの単なる典型例である。
【0020】
周辺バスコントローラ270は、システムコントローラ又は「サウスブリッジ」(Southbridge、SB)272と、周辺構成要素相互接続エクスプレス(Peripheral Component Interconnect Express、PCIe)コントローラ274と、を含み、これらのそれぞれは、入力/出力(input/output、I/O)ハブ276及びSMNバスに対して双方向で接続される。また、I/Oハブ276は、システムハブ266及びデータファブリック225に対して双方向で接続される。したがって、例えば、CPUコアは、データファブリック225がI/Oハブ276を介してルーティングするアクセスにより、USBコントローラ262、SATAインターフェースコントローラ264、SB272、又は、PCIeコントローラ274内のレジスタをプログラムすることができる。APU200のためのソフトウェア及びファームウェアは、リードオンリーメモリ(read-only memory、ROM)、フラッシュ電気的消去可能プログラマブルROM(electrically erasable programmable ROM、EEPROM)等の様々な不揮発性メモリタイプの何れかであり得るシステムデータドライブ又はシステムBIOSメモリ(図示せず)に記憶される。概して、BIOSメモリはPCIeバスを介してアクセスされ、システムデータドライブはSATAインターフェースを介してアクセスされる。
【0021】
SMU280は、APU200上のリソースの動作を制御してそれらの間の通信を同期させるローカルコントローラである。SMU280は、APU200上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU280は、APU200の構成要素のそれぞれにクロック信号を与えるために、位相ロックループ(phase locked loop、PLL)等の1つ以上のクロックソース(図示せず)を含む。また、SMU280は、様々なプロセッサ及び他の機能ブロックのための電力を管理し、適切な電力状態を判定するためにCPUコア212、214及びグラフィックスコア220から測定された電力消費値を受信することができる。
【0022】
メモリ管理ハブ240は、ローカルデータファブリック250、グラフィックスコア220及びディスプレイエンジン230に接続され、グラフィックスコア220及びディスプレイエンジン230にダイレクトメモリアクセス能力を提供する。
【0023】
メモリインターフェース290は、2つのメモリコントローラ291、292と、DRAMメディア293、294と、FAMメモリインターフェース295と、を含む。メモリコントローラ291、292のそれぞれは、ローカルデータファブリック250に接続され、物理層(PHY)インターフェースを介してDRAMメディア293、294のそれぞれに接続される。この実施形態では、DRAMメディア293、294は、DDRバージョン5(DDR5)等のDDRメモリに基づくメモリモジュールを含む。他の実施形態では、低電力DDR4(LPDDR4)、グラフィックスDDRバージョン5(GDDR5)及び高帯域幅メモリ(HBM)等の他のタイプのDRAMメモリが使用される。
【0024】
FAMメモリインターフェース295は、ファブリックブリッジ296、適応型一貫性コントローラ(ACC)297、及び、ファブリックPHY298を含む。ファブリックブリッジ296は、FAMシステム100等のFAMシステムへのメモリ要求を受信し、実行するためのローカルデータファブリック250に接続されたファブリック接続メモリインターフェースである。そのようなメモリ要求は、CPUコア複合体210から来てもよく、又は、グラフィックスコア220等の他のシステム構成要素からのダイレクトメモリアクセス(DMA)要求であってもよい。また、ファブリックブリッジ296は、ファブリックPHY298に双方向で接続され、APU200のデータセンタファブリックへの接続を提供する。適応型一貫性コントローラ(ACC)297は、ファブリックブリッジ296に双方向で接続され、以下で更に説明するように、メモリ一貫性制御入力をファブリックブリッジ296及びCPUコア複合体210に提供する。動作中、ACC297は、以下で更に説明するように、CPUコア複合体210内のCPUコアと通信して、指定されたメモリアクセス命令がCPUコア212、214上で実行されるμCode216によって認識されたという通知を受信する。また、ACC297は、メモリ一貫性モデルを構成するための構成入力をCPUコア複合体210に提供する。
【0025】
図3は、いくつかの実施形態による、FAMシステム300の特定の要素のブロック図である。FAMシステム300は、概して、計算ノード302、データセンタファブリック102、FAMメモリノード310、及び、ファブリックマネージャ320を含む。
【0026】
計算ノード302は、データセンタファブリック102に接続された多くのリクエスタ計算ノードのうち何れかであり、概して、APU200等のAPUと共に実装される。計算ノード302は、インターネットサーバ、アプリケーションサーバ、スーパーコンピューティングノード、又は、FAMにアクセスすることから利益を得る別の好適な計算ノードを実装することができる。システムの関連部分に焦点を合わせるために、計算ノード302のFAMインターフェース構成要素のみが図示されている。計算ノード302は、ファブリックブリッジ296、ファブリックPHY298、及び、ACC297を含む。
【0027】
ファブリックブリッジ296は、図2に関して上述したようにローカルデータファブリックに接続され、ファブリックPHY298、ACC297に接続される。このバージョンのACC297は、マイクロコントローラ(μC)304を含む。μC304は、以下に説明するようにメモリ一貫性制御機能を実行し、典型的には、μC304を初期化してその機能を実行するように構成するファームウェアを保持するための有形の非一時的なメモリにも接続される。
【0028】
μC304は、以下に説明するようにメモリ一貫性制御機能を実行し、典型的には、μC304を初期化してその機能を実施するように構成するファームウェアを保持するための有形の非一時的なメモリにも接続される。
【0029】
ファブリックマネージャ320は、FAMシステム300への構成及びアクセスを管理するためのデータセンタファブリック102に接続されたコントローラである。ファブリックマネージャ320は、CXL又はGen-Z等のように、データセンタファブリック102で用いられる特定の規格のためのデータファブリック管理アプリケーションを実行する。データファブリック管理アプリケーションは、FAMシステム300内の様々なノードの間でメモリリソースを識別及び構成することによって、計算ノードを許可すること、メモリ領域を割り当てること、及び、構成可能性を管理すること等のデータセンタファブリック機能を管理及び構成する。1つのFAMメモリノード310及び1つの計算ノード302が示されているが、システムは、図1に示された例示的な構成等の多くの構成で現れ得る複数のそのようなノードを含むことに留意されたい。いくつかの実施形態では、ファブリックマネージャ320は、データファブリック管理アプリケーションにアクセスし、FAMシステム300全体にわたるそれぞれの計算ノード上のそれぞれの適応型一貫性コントローラ(ACC)322にデータを報告するためにインストールされたACCモジュール297を有する。
【0030】
FAMメモリノード310は、メディアコントローラ312、メモリ314を含む。メディアコントローラ312は、典型的に、メモリ314で使用するために選択されるメモリのタイプが何であれ、それに適したメモリコントローラを含む。例えば、メモリ314がDRAMメモリである場合、DRAMメモリコントローラが使用される。また、メモリ314は、永続メモリモジュールを含んでもよいし、混合されてもよい。いくつかの実施形態では、ACC297は、計算ノード302に割り当てられたFAMメモリ領域にアクセスすることを許可された他のリクエスタに関係するデータを、FAMメモリノード310におけるリクエスタテーブル306内に維持する。リクエスタテーブル306は、同じメモリ領域にアクセスすることを許可された計算ノードに対する更新を追跡し、更新の時間を反映する「タイムスタンプ」、計算ノード302に割り当てられたFAMメモリ領域の識別子を反映する「領域ID」、及び、それぞれの更新時にメモリ領域にアクセスすることを許可されていたFAMシステム300上のリクエスタの数を反映する「リクエスタ数」のフィールドを含む。リクエスタテーブル306は、以下で更に説明するように、ファブリックマネージャ320からの報告に基づいて更新される。この実施形態では、FAMメモリノード310は、リクエスタテーブル306を保持するメディアコントローラ312によってアクセス可能なバッファを含む。
【0031】
図4は、いくつかの実施形態による、ACC297を動作させるプロセスを示す図400である。図400は、データファブリックにおけるリクエスタ計算ノードでのアクティビティを示し、リクエスタ計算ノードにおけるCPUコア複合体210、オペレーティングシステム402、ACC297、及び、ファブリックブリッジ296を示す。また、図400は、ファブリックマネージャ320と、データファブリック上の多くのメディアコントローラのうち何れかであるメディアコントローラ312と、を示す。
【0032】
リクエスタが、ファブリックマネージャ320によってシステムメモリのために使用する特定のFAM領域を割り当てられる場合、ACC297は、「コールバック」とラベル付けされた外向きの要求によって示されるように、リクエスタ計算ノードと同じメモリ領域を使用するのを許可されたリクエスタの数に変更が加えられる場合に通知を要求するために、ファブリックマネージャ320にコールバック要求を行う。ファブリックマネージャ320は、図400上の「ユーザ数」応答によって示されるように、メモリ領域を使用するのを許可されたリクエスタの数が変わる毎に、ACC297に通知を返す。この実施形態では、FAMメモリノード310におけるリクエスタテーブル306(図3)は、図400上でメディアコントローラ312に向かう「ユーザ数」矢印によって示されるように、ユーザの数が変わる毎に更新される。いくつかの実施形態では、ACC287は、ACC297のローカルバッファ内にリクエスタテーブルを維持する。いくつかの実施形態では、ファブリックマネージャ320で実行されるACCモジュール322(図3)は、メモリ領域にアクセスするのを許可されたリクエスタを監視し、通知をACC297に送信するプロセスを管理する。ユーザ数更新通知に基づいて、ACC297は、割り当てられたFAMメモリ領域と共に使用するための一貫性モデルを設定する。概して、このプロセスは、現在のリクエスタがメモリ領域へのアクセスを許可された唯一のリクエスタである場合に、一貫性モデルを第1の一貫性モデルに設定し、2つ以上のリクエスタがメモリ領域へのアクセスを許可されている場合に、一貫性モデルを第2の一貫性モデルに設定することを含む。一貫性モデルの設定は、コマンド「SET MODEL(FAMi)=(WB,FENCED)」によって示され、ここで、「FAMi」は、関係するファブリック接続メモリ領域を識別し、「WB,FENCED」は、何れの一貫性モデルがアクティブ化されるかを示す。いくつかの実施形態では、第1の一貫性モードは、第2の一貫性モデルに対して緩和されているものとして特徴付けられる。このプロセスの例は、図5に関して以下で更に説明される。
【0033】
図400において、CPUコア複合体210で実行されるμCode216(図2)は、第2の一貫性モデルがアクティブである場合に、第2の一貫性モデルを実行するのに役立つ。特に、μCode216は、リクエスタノードに割り当てられたファブリック接続メモリ領域に関係する指定されたメモリ命令に対してデータフェンシングが必要とされることを示す、CPUコア複合体210で実行中のアプリケーションにおいて指定されたメモリアクセス命令を認識する。μCode216は、図6及び図7に関して以下で更に説明するように、指定された命令を認識するための様々な方法を有する。そのような命令が認識されると、μCode216は、ACC297と通信して、選択された命令を識別する通知を送信し、選択された命令は、ファブリックブリッジ296を介してデータファブリックに送信される。次いで、ACC297は、「フェンス」とラベル付けされた外向きの矢印によって示されるように、メディアコントローラ312に進むコマンドストリームにフェンスコマンドを追加する。第1の一貫性モデルがアクティブである場合、μCode216は、そのような通知を行わず、代わりに、選択されたコマンドが、オペレーティングシステム402で設定された第1の一貫性モデルによって処理されるメモリ一貫性を伴って正常に実行することを可能にする。この実施形態では、μCode216が、指定された命令を認識するが、他の実施形態では、この機能は、CPUファームウェア又はCPUファームウェアとμCodeとの組合せによって実施される。
【0034】
図は、メディアコントローラ312に向かうフェンスコマンドを示すが、ローカルデータセンタファブリック及びグローバルデータセンタファブリックを含むトポロジでは、ACC297は、メモリ領域がファブリックトポロジの両方のレベルにアクセスすることを含むシナリオにおいて、フェンスコマンドを、ローカルデータセンタファブリック及びグローバルデータセンタファブリックの両方のメディアコントローラに送信させる。
【0035】
図5は、例示的な実施形態による、適応型一貫性コントローラにおいてメモリ一貫性モデルを管理するためのプロセスのフロー図500である。プロセスはブロック502で始まり、データファブリック上のリクエスタノードが、指定されたFAMメモリ領域にアクセスすることを許可される。そのような許可は、典型的に、ファブリックマネージャによって提供されるが、いくつかの実施形態では、他のシステム構成要素によって構成されてもよい。許可に基づいて、メモリ領域は、リクエスタノードのアドレス指定可能なシステムメモリ空間内に確立される。メモリ領域は、典型的には、他のリクエスタノードとの依存関係を有し得るリクエスタノードで実行されるアプリケーションのために使用される。
【0036】
ブロック504で、リクエスタノードのACC297は、特定のメモリ領域にアクセスすることを許可されたリクエスタの数の任意の変更に関するファブリックマネージャからの通知を要求する。一実施形態では、この要求は、FAM領域にアクセスしている計算リクエスタの数を追跡するための、ファブリックマネージャへのコールバック要求の形態を有する。ACCモジュール322(図3)は、そのような要求を受信し、ファブリックマネージャにおいて要求を実行するか、又は、要求を実行するようにファブリックマネージャを構成するかの何れかのために用いられ得る。他の実施形態では、ファブリックマネージャは、ファブリックマネージャアプリケーションの一部としてそのような能力を有してもよく、追加のモジュールを必要としなくてもよい。
【0037】
ブロック506において、リクエスタノードのACC297は、要求に応じてファブリックマネージャから通知を受信する。この通知に基づいて、ACC297は、FAM領域を使用することを現在許可されているリクエスタの数を決定し、リクエスタテーブル306(図3)を更新する。いくつかの実施形態では、通知は、タイムスタンプ、領域ID及びリクエスタ数を含む、リクエスタテーブル306で使用されるデータフィールドを含む。他の実施形態では、ファブリックマネージャは、全てのデータを提供するのではなく、代わりに、FAM領域に対してリクエスタ許可が追加又は削除されたことを示すデータのみを提供してもよい。そのような場合、ACC297は、現在の通知データ及びリクエスタテーブル306に対する以前の更新に基づいて、リクエスタテーブル306内のデータを更新する。
【0038】
ブロック508で、2つ以上のリクエスタがメモリ領域に対して許可されている場合、プロセスはブロック510に進む。そうでない場合、プロセスはブロック512に進む。ブロック510において、プロセスは、FAM領域に関係するローカルアプリケーション内の選択されたメモリアクセス命令に対してフェンスをアクティブ化させる。ブロック508において、1つのリクエスタのみが許可されている状態から2つ以上のリクエスタが許可されている状態への移行が行われ、このプロセスは、図4に関して上述したように、リクエスタノードにおいて第1のメモリ一貫性モデルを非アクティブ化することと、第2のメモリ一貫性モデルをアクティブ化することと、を含む。ブロック508において、2つ以上のリクエスタが既に許可されている場合、第2のメモリ一貫性モデルは既にアクティブであり、変更される必要がない。
【0039】
ブロック512において、ブロック506で受信された更新通知は、1つのリクエスタのみがFAM領域に対して許可されている状態をもたらしており、したがって、プロセスは第1のメモリ一貫性モデルをアクティブ化する。いくつかの実施形態では、第1のメモリ一貫性モデルは、単一のリクエスタのためのライトバックメモリとしてFAM領域をマッピングすることを含む。FAM領域をローカル計算ノードのためのライトバックメモリとしてマッピングすることは、好ましくは、ACC297が適切なメッセージングをCPUコア複合体210上で実行されるオペレーティングシステムに送信することによって達成され、次いで、オペレーティングシステムは、FAM領域に対応する1つ以上のメモリページを、リクエスタのページテーブル内のライトバックとしてマークする。FAM領域をライトバックメモリとしてマッピングすることは、通常のローカル一貫性スキーム(x86トータルストアオーダー(TSO)一貫性スキーム等)が、FAM領域のために計算ノードによって適用されることを確実にする。FAM領域に対して1つのリクエスタのみが許可される場合、ローカルメモリではなくFAMを使用するためにアプリケーションの機能に変更を加える必要がない。ブロック506、508、510、512のプロセスは、ファブリックマネージャが、関係するFAMメモリ領域に対する更新通知を送信する毎に繰り返される。
【0040】
図6は、いくつかの実施形態による、メモリ一貫性モデルを実行するためのプロセスのフロー図600である。概して、元々FAMシステムと共に使用するために書かれていないアプリケーションは、それらが計算ノード間に何らかの依存性を有する場合、FAMシステムが計算ノード間の依存性を適切に考慮するために修正を必要とする。そのような修正は、コードをコンパイルする場合に行うことができ、又は、アプリケーション内の選択されたメモリコマンドに命令を追加することによって事後に適用することもできる。図6のプロセスは、アプリケーションをFAMシステムと共に使用するように適合させるためにコンパイル時命令(compile-time instructions)が追加されたアプリケーションに対して実施される。そのようなアプリケーションとしては、FAMシステムにおいて一貫性を処理するためのツールを用いて書かれコンパイルされたアプリケーション、及び、FAMシステムと共に使用するように適合される好適なツールを用いて修正されたアプリケーションが挙げられる。
【0041】
ブロック602において、プロセスは、アプリケーションに含まれるコンパイル時命令と共にアプリケーションのためのフェンスをアクティブ化することを開始する。ブロック602は、ACC297が計算ノードの一貫性モデルを変更して、第2のより緩和された一貫性モデルをアクティブ化する場合に発生する。一般に、CXL3.0及びGen-Zのようなデータファブリックプロトコルは、フェンスを介して実行される緩和された順序一貫性モデルを用いている。緩和された一貫性モデルがアクティブである場合に、ACC297は、CXL/Gen-Zフェンス等のデータセンタファブリックフェンスを、アプリケーションコードに対して透過的に、クリティカルな場所に挿入しようとする。この透過性は、ACC297によって実施されるアクティビティが、関係するアプリケーションによる如何なる調整も必要としないことを意味する。
【0042】
ブロック604において、プロセスは、選択されたメモリアクセス命令に対するコンパイル時ファブリックインターフェース命令(compile-time fabric interface instructions)を認識する。一般に、選択されたメモリアクセス命令は、計算スレッド間で並列同期を実施するフラグ、ロック、セマフォ、制御変数等のコードの一部であり、したがって、メモリアクセスは順序付けされる必要がある。選択されたメモリアクセス命令の場所は、ソフトウェア開発者がいくつかの機構を介して適応型コントローラに提供することができるアプリケーション内のヒントによって識別される。
【0043】
C++11 atomic_load/atomic_store一貫性コンストラクト若しくはプリミティブのようなコンパイラヒント、又は、OpenMPのフラッシュコンストラクトのようなランタイムヒントは、一貫性ヒントを開発者にとって共有しやすくするために、「CodeAnalyst」ツール(Advanced Micro Devices(Santa Clara,California)による)等の開発ツールと統合することができる。コンパイラは、マークされた制御変数の前に特別な「FABRIC_ACQUIRE_FENCE」命令、及び、制御変数の後に特別な「FABRIC_RELEASE_FENCE」命令等のような、リクエスタ側のファブリックインターフェースマーカを挿入する。これらの特別な命令又はマーカは、非FAMシステム上、又は、1つのリクエスタノードのみが関連するFAM領域にアクセスするFAMシステム上のCPUのμCode216によって無動作(no-operation、NOP)に変換されるが、2つ以上のアプリケーションが関連するFAM領域にアクセスすることを許可されている場合、これらの特別な命令又はマーカは、ブロック604でμCode216によって認識される。
【0044】
このような命令を認識することに応じて、ブロック606において、CPUのμCode216は、図4の「選択された命令」矢印によって示されるように、ファブリックフェンスが命令のために必要であることをACC297に通知する。いくつかの実施形態では、そのような通知は、CPUからACC297へのローカルデータファブリックを介したメッセージを用いて行われる。通知は、命令がローカルデータファブリックを介して受信された場合に命令を識別するための、関係する変数のメモリアドレス等のACC297の識別情報を含む。他の実施形態では、通知は、命令がCPUによってローカルデータファブリックを介してファブリックブリッジ296に送信される場合に、修正されるメモリアクセス命令に所定のフラグ又はマーカを追加することによって実行され得る。いくつかの実施形態では、そのようなマーカは、フェンス取得命令が必要とされるか又はフェンス解放命令が必要とされるかを決定するために必要な情報を含む。
【0045】
ブロック608において、それぞれの通知の受信に応じて、ACC297は、データセンタファブリックフェンスの取得/解放を発行する。これらのフェンスは、図4の「フェンス」矢印によって示されるように、関連するFAM領域のためのデータファブリック及びメディアコントローラに進むコマンドストリームに挿入されるコマンドである。次いで、メディアコントローラは、関係する変数にフェンスを提供するコマンドを実行する。
【0046】
図示したプロセスは、アプリケーションがFABRIC_ACQUIRE_FENCE命令及びFABRIC_RELEASE_FENCE命令を含むように既に修正された後に行われるが、いくつかの実施形態では、プロセスは、μCode216が選択されたメモリ命令を認識できるように、そのようなヒント又はマーカをアプリケーションに挿入することも含む。
【0047】
図7は、いくつかの追加の実施形態による、メモリ一貫性モデルを実行するための別のプロセスのフロー図700である。図示したプロセスは、ファブリックフェンスを実行するためのコンパイル時命令で修正されないアプリケーションに対して実施される。このプロセスは、開発者がFAMシステムと共に使用するように構成されたバージョンを提供していないアプリケーションが、そのような使用で通常発生する一貫性問題を引き起こすことなく、FAMシステムと共に依然として使用され得るという利点を有する。別の利点は、FAMシステムと共に使用するためのアプリケーションバージョンを取得するために個別の又はより高価なソフトウェアライセンスが必要とされる展開の場合、このプロセスは、FAMシステムと共に非FAMバージョンを使用することを可能にし得ることである。
【0048】
ブロック702において、このプロセスは、そのようなアプリケーションのためのFAMフェンスのアクティブ化を開始する。フェンスコマンドを必要とする選択されたメモリアクセス命令を認識することは、アプリケーションにファブリックフェンスのための特定の命令が含まれていないため、このプロセスでは図6のプロセスとは異なる。ブロック704で、CPUのμCode216は、スレッド間のデータの同期に関連付けられた命令タイプ及び命令プレフィックスの所定のリスト内の命令を認識することに基づいて、フェンスが必要とされるアプリケーション内のメモリアクセス命令を認識する。いくつかの実施形態では、μCode216が、選択されたメモリアクセス命令を認識することができる全てのタイプのアプリケーションをカバーするために、所定のリストがμCode216に提供される。このリストは、アプリケーション間の依存関係に関連付けられた命令及び命令プレフィックスを含む。例えば、このリストは、x86のLOCK命令プレフィックス、X86のxacquire/xrelease、及び、PowerPCのSYNC命令を含み得る。
【0049】
ブロック706において、この所定のリストからの何れかの命令が呼び出される場合にはいつでも、CPUのμCode216はACC297に通知し、次いで、ACC297は、ブロック708に示されるようにファブリックフェンスを発行する。
【0050】
FAMメモリインターフェース295、又は、ACC297若しくはファブリックブリッジ296等のその任意の部分は、プログラムによって読み取られ、集積回路を製造するために直接的又は間接的に使用され得るデータベース又は他のデータ構造の形態でコンピュータアクセス可能データ構造によって記述又は表現され得る。例えば、このデータ構造は、Verilog又はVHDL等の高レベル設計言語(high level design language、HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取られ得る。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされ得る。次いで、マスクを様々な半導体製造工程で使用して、集積回路を製造することができる。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックデータシステム(Graphic Data System、GDS)IIデータであり得る。
【0051】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかである。例えば、ファブリックブリッジ296及びACC297の内部アーキテクチャは、異なる実施形態において異なり得る。利用されるFAMのタイプ及びFAMプロトコルも異なり得る。更に、特定のファブリックアーキテクチャは、PCIe又はCXLに基づくファブリックプロトコル及びトランスポートを使用して、データノード又は複数のデータノードのラック内での分散化を提供するアーキテクチャから、Gen-Z等のプロトコルを使用してデータセンタ内のデバイスとラックとの間を接続するファイバ又は銅線ネットワークを利用することができるアーキテクチャまで様々であり得る。したがって、添付の「特許請求の範囲」は、開示された実施形態の範囲に含まれる開示された実施形態の全ての修正をカバーすることを意図している。
図1
図2
図3
図4
図5
図6
図7
【手続補正書】
【提出日】2023-11-17
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ファブリック接続メモリと、ファブリックを介して前記ファブリック接続メモリに結合された複数のリクエスタと、を含むファブリック接続メモリシステムで使用する方法であって、
ファブリック接続メモリ領域へのアクセスを許可されたリクエスタの変更に関するファブリックマネージャからの通知を要求することと、
2つ以上のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、選択されたメモリアクセス命令に対するフェンスをアクティブ化させることと、を含む、
方法。
【請求項2】
単一のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、前記ファブリック接続メモリ領域を、前記単一のリクエスタのためのライトバックメモリ領域としてマッピングすることを更に含む、
請求項1の方法。
【請求項3】
2つ以上のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、
許可されたリクエスタごとに、
前記リクエスタがローカルフェンスコマンドを発行するように構成されている場合に、前記選択されたメモリアクセス命令に対するローカルフェンスコマンドを発行させ、前記ファブリック接続メモリ領域を、前記リクエスタのためのライトスルーメモリとしてマッピングすることと、
前記リクエスタがローカルフェンスコマンドを発行するように構成されていない場合に、前記ファブリック接続メモリ領域を、キャッシュ不可能としてマッピングすることと、を更に含む、
請求項2の方法。
【請求項4】
前記フェンスをアクティブ化させることは、前記選択されたメモリアクセス命令を、リクエスタ間の依存性を示すものとして認識したことに応じて、リクエスタ側適応型一貫性コントローラに、前記選択されたメモリアクセス命令に対するフェンスコマンドを追加させることを含む、
請求項1の方法。
【請求項5】
前記選択されたメモリアクセス命令を認識することは、前記ファブリック接続メモリ領域へのアクセスを許可された各リクエスタで実行されるプロセッサ命令マイクロコードによって実行される、
請求項の方法。
【請求項6】
一貫性プリミティブ及び一貫性コンストラクトを認識したことに応じて、コンパイル中にリクエスタファブリックインターフェースマーカをアプリケーションに挿入することを更に含む、
請求項4の方法。
【請求項7】
前記選択されたメモリアクセス命令を認識することは、スレッド間のデータの同期に関連する命令タイプ及び命令プレフィックスの所定のリスト内の命令を認識することに基づいている、
請求項の方法。
【請求項8】
前記ファブリック接続メモリ領域へのアクセスを許可された各リクエスタにおいて、前記ファブリック接続メモリ領域へのアクセスを許可された前記リクエスタのテーブルを維持し、前記通知の各々に応じて前記テーブルを更新することを更に含む、
請求項1の方法。
【請求項9】
前記テーブルは、少なくとも、ファブリック接続メモリ領域識別子と、前記ファブリック接続メモリ領域へのアクセスを許可された計算リクエスタの数と、を含む、
請求項の方法。
【請求項10】
データプロセッサであって、
アプリケーションを実行する処理コアと、
前記処理コアに結合され、データファブリックに結合し、前記処理コアからファブリック接続メモリへのメモリアクセス命令を実行するように適合されたファブリック接続メモリインターフェースと、
前記処理コア及び前記ファブリック接続メモリインターフェースに結合されたリクエスタ側適応型一貫性コントローラと、を備え、
前記リクエスタ側適応型一貫性コントローラは、
前記データプロセッサがアクセスするのを許可されたファブリック接続メモリ領域へのアクセスを許可されたリクエスタの変更に関する、前記ファブリック接続メモリのファブリックマネージャからの通知を要求することと、
2つ以上のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、ローカルアプリケーションにおいて選択されたメモリアクセス命令に対するフェンスをアクティブ化させることと、
を行うように動作可能である、
データプロセッサ。
【請求項11】
前記リクエスタ側適応型一貫性コントローラは、単一のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、前記ファブリック接続メモリ領域を、ライトバックメモリ領域としてマッピングさせるように動作可能である、
請求項10のデータプロセッサ。
【請求項12】
前記リクエスタ側適応型一貫性コントローラは、2つ以上のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、
前記データプロセッサがローカルフェンスコマンドを発行するように構成されている場合に、前記選択されたメモリアクセス命令に対するローカルフェンスコマンドを発行させ、前記ファブリック接続メモリ領域を、ライトスルーメモリとしてマッピングすることと、
前記データプロセッサがローカルフェンスコマンドを発行するように構成されていない場合に、前記ファブリック接続メモリ領域を、キャッシュ不可能としてマッピングさせることと、
を行うように動作可能である、
請求項11のデータプロセッサ。
【請求項13】
前記処理コアによってアクセス可能な有形の非一時的なメモリに記憶され、前記選択されたメモリアクセス命令を認識するために前記処理コアによって実行可能なプロセッサ命令マイクロコードを備える、
請求項10のデータプロセッサ。
【請求項14】
前記プロセッサ命令マイクロコードは、前記選択されたメモリアクセス命令を、リクエスタ間の依存関係を示すものとして認識したことに応じて、認識された前記選択されたメモリアクセス命令を前記リクエスタ側適応型一貫性コントローラに通知して、リクエスタ側フェンスコマンドを、前記ファブリック接続メモリインターフェースへのメモリコマンドに挿入させることを実行する、
請求項13のデータプロセッサ。
【請求項15】
前記選択されたメモリアクセス命令を認識することは、一貫性プリミティブ及び一貫性コンストラクトのうち何れかを含む前記ローカルアプリケーション内のインジケータを認識することに応答することを含む、
請求項13のデータプロセッサ。
【請求項16】
前記選択されたメモリアクセス命令を認識することは、コンパイル中に前記アプリケーションに挿入されたファブリックインターフェースマーカを認識することを含む、
請求項13のデータプロセッサ。
【請求項17】
前記リクエスタ側適応型一貫性コントローラは、前記ファブリック接続メモリ領域へのアクセスを許可された前記リクエスタのテーブルを維持し、前記通知に応じて前記テーブルを更新する、
請求項10のデータプロセッサ。
【請求項18】
前記テーブルは、少なくとも、ファブリック接続メモリ領域識別子と、前記ファブリック接続メモリ領域へのアクセスを許可された計算リクエスタの数と、を含む、
請求項17のデータプロセッサ。
【請求項19】
ファブリック接続メモリシステムであって、
ファブリック接続メモリと、
前記ファブリック接続メモリに結合されたデータファブリックと、
前記データファブリックに結合され、リクエスタが前記ファブリック接続メモリのメモリ領域にアクセスするのを許可及び許可解除するように動作可能なファブリックマネージャと、
前記データファブリックに結合された複数のデータプロセッサと、を備え、
前記複数のデータプロセッサの各々は、
アプリケーションを実行する処理コアと、
ファブリック接続メモリインターフェースと、
前記処理コア及び前記ファブリック接続メモリインターフェースに結合されたリクエスタ側適応型一貫性コントローラと、を含み、
前記リクエスタ側適応型一貫性コントローラは、
前記データプロセッサがアクセスするのを許可されたファブリック接続メモリ領域へのアクセスを許可されたリクエスタの変更に関する前記ファブリックマネージャからの通知を要求することと、
2つ以上のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、ローカルアプリケーションにおいて選択されたメモリアクセス命令に対するフェンスをアクティブ化させることと、
を行うように動作可能である、
ファブリック接続メモリシステム。
【請求項20】
前記リクエスタ側適応型一貫性コントローラは、単一のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、前記ファブリック接続メモリ領域を、ライトバックメモリ領域としてマッピングさせるように動作可能である、
請求項19のファブリック接続メモリシステム。;
【請求項21】
各リクエスタ側適応型一貫性コントローラは、2つ以上のリクエスタが前記ファブリック接続メモリ領域へのアクセスを許可されていることを示す前記ファブリックマネージャからの通知に応じて、
前記各リクエスタ側適応型一貫性コントローラの前記データプロセッサがローカルフェンスコマンドを発行するように構成されている場合に、前記選択されたメモリアクセス命令に対するローカルフェンスコマンドを発行させ、前記ファブリック接続メモリ領域を、ライトスルーメモリとしてマッピングすることと、
前記リクエスタ側適応型一貫性コントローラの前記データプロセッサがローカルフェンスコマンドを発行するように構成されていない場合に、前記ファブリック接続メモリ領域を、キャッシュ不可能としてマッピングさせることと、
を行うように動作可能である、
請求項20のファブリック接続メモリシステム。
【請求項22】
各データプロセッサは、前記各データプロセッサの処理コアによってアクセス可能な有形の非一時的なメモリに記憶され、前記選択されたメモリアクセス命令を認識するために前記処理コアによって実行可能なプロセッサ命令マイクロコードを含む、
請求項19のファブリック接続メモリシステム。
【請求項23】
前記プロセッサ命令マイクロコードは、前記選択されたメモリアクセス命令を、リクエスタ間の依存関係を示すものとして認識したことに応じて、認識された前記選択されたメモリアクセス命令を前記リクエスタ側適応型一貫性コントローラに通知して、リクエスタ側フェンスコマンドを、前記ファブリック接続メモリインターフェースへのメモリコマンドに挿入させることを実行する、
請求項22のファブリック接続メモリシステム。
【請求項24】
前記選択されたメモリアクセス命令を認識することは、一貫性プリミティブ及び一貫性コンストラクトのうち何れかを含む前記ローカルアプリケーション内のインジケータを認識することを含む、
請求項22のファブリック接続メモリシステム。
【請求項25】
前記選択されたメモリアクセス命令を認識することは、コンパイル中に前記アプリケーションに挿入されたファブリックインターフェースマーカを認識することを含む、
請求項22のファブリック接続メモリシステム。
【請求項26】
前記リクエスタ側適応型一貫性コントローラは、前記ファブリック接続メモリ領域へのアクセスを許可された前記リクエスタのテーブルを維持し、前記通知に応じて前記テーブルを更新する、
請求項19のファブリック接続メモリシステム。
【請求項27】
前記テーブルは、少なくとも、ファブリック接続メモリ領域識別子と、前記ファブリック接続メモリ領域へのアクセスを許可された計算リクエスタの数と、を含む、
請求項26のファブリック接続メモリシステム。
【国際調査報告】