(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-06-28
(54)【発明の名称】メモリローカルコンピューティングのためのアトミックメモリ操作の動的合体
(51)【国際特許分類】
G06F 12/0877 20160101AFI20240621BHJP
【FI】
G06F12/0877 109
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023577877
(86)(22)【出願日】2022-06-27
(85)【翻訳文提出日】2024-01-29
(86)【国際出願番号】 US2022035142
(87)【国際公開番号】W WO2023278338
(87)【国際公開日】2023-01-05
(32)【優先日】2021-06-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジョナサン オルソップ
(72)【発明者】
【氏名】アレクサンドル デュテュ
(72)【発明者】
【氏名】シャイジーン アガ
(72)【発明者】
【氏名】ヌワン ジャヤセーナ
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK14
5B205MM03
5B205NN03
(57)【要約】
メモリローカルコンピューティングのためのアトミックメモリ操作の動的合体が開示される。一実施形態では、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かが判定される。トリガイベントに応じて、合体の候補であるアトミックメモリアクセスは、メモリローカル計算ユニットがメモリローカル処理を要求する前に、キャッシュ内で合体される。アトミックメモリアクセスは、同一キャッシュライン内で合体され得るか、又は、異なるキャッシュライン内のアトミックメモリアクセスは、マルチキャストメモリローカル処理コマンドを使用して合体され得る。
【選択図】
図1
【特許請求の範囲】
【請求項1】
メモリローカルコンピューティングのためにアトミックメモリ操作を動的に合体させる方法であって、
第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することと、
メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることと、を含む、
方法。
【請求項2】
前記第1のアトミックメモリアクセスが合体の候補であると判定することと、
メモリからデータをロードすることなく、特殊状態のキャッシュラインを割り当てることと、
前記第1のアトミックメモリアクセスのオペランドを、前記第1のアトミックメモリアクセスがターゲットとする前記キャッシュライン内の場所に記憶することと、を含み、
前記第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、
前記第2のアトミックメモリアクセスが前記第1のアトミックメモリアクセスとの合体の候補であると判定することを含む、
請求項1の方法。
【請求項3】
前記メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、
前記第2のアトミックメモリアクセスのオペランドを使用して、前記第2のアトミックメモリアクセスがターゲットとする前記キャッシュライン内の場所のデータに対して前記第2のアトミックメモリアクセスの操作を実行することによって、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとを合体させることを含む、
請求項2の方法。
【請求項4】
トリガイベントに応じて、前記第1のアトミックメモリアクセス及び前記第2のアトミックメモリアクセスのための1つ以上のメモリローカル処理コマンドをメモリコントローラに送信することを含む、
請求項3の方法。
【請求項5】
1つ以上のメトリックに基づいて、前記第1のアトミックメモリアクセスに前記特殊状態のキャッシュラインを割り当てるか否かを判定することを含む、
請求項2の方法。
【請求項6】
前記第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、
異なるメモリモジュールへの対称アクセスに基づいて、前記第1のアトミックメモリアクセスが前記第2のアトミックメモリアクセスと合体可能であるか否かを判定することを含む、
請求項1の方法。
【請求項7】
前記異なるメモリモジュールへの対称アクセスに基づいて、前記第1のアトミックメモリアクセスが前記第2のアトミックメモリアクセスと合体可能であるか否かを判定することは、
トリガイベントに応じて、前記第1のアトミックメモリアクセスを含む第1のキャッシュラインが、前記第2のアトミックメモリアクセスを含む第2のキャッシュラインと合体可能であるか否かを判定することであって、前記第1のキャッシュライン及び前記第2のキャッシュラインは特殊キャッシュ状態である、ことを含む、
請求項6の方法。
【請求項8】
前記トリガイベントに応じて、前記第1のアトミックメモリアクセスを含む第1のキャッシュラインが、前記第2のアトミックメモリアクセスを含む第2のキャッシュラインと合体可能であるか否かを判定することであって、前記第1のキャッシュライン及び前記第2のキャッシュラインは特殊キャッシュ状態である、ことは、
合体の候補であるキャッシュラインを追跡することを含む、
請求項7の方法。
【請求項9】
前記メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、
マルチモジュールメモリローカル処理コマンドを使用して、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとを合体させることを含む、
請求項6の方法。
【請求項10】
前記メモリローカル計算ユニットは、プロセッシングインメモリ(PIM)ユニットである、
請求項1の方法。
【請求項11】
メモリローカルコンピューティングのためにアトミックメモリ操作を動的に合体するためのコンピューティングデバイスであって、
論理回路を備え、
前記論理回路は、
第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することと、
メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることと、
を行うように構成されている、
コンピューティングデバイス。
【請求項12】
前記論理回路は、
前記第1のアトミックメモリアクセスが合体の候補であると判定することと、
メモリからデータをロードすることなく、特殊状態のキャッシュラインを割り当てることと、
前記第1のアトミックメモリアクセスのオペランドを、前記第1のアトミックメモリアクセスがターゲットとする前記キャッシュライン内の場所に記憶することと、
を行うように構成されており、
前記第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、
前記第2のアトミックメモリアクセスが前記第1のアトミックメモリアクセスとの合体の候補であると判定することを含む、
請求項11のコンピューティングデバイス。
【請求項13】
前記メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、
前記第2のアトミックメモリアクセスのオペランドを使用して、前記第2のアトミックメモリアクセスがターゲットとする前記キャッシュライン内の場所のデータに対して前記第2のアトミックメモリアクセスの操作を実行することによって、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとを合体させることを含む、
請求項12のコンピューティングデバイス。
【請求項14】
トリガイベントに応じて、前記第1のアトミックメモリアクセス及び前記第2のアトミックメモリアクセスのための1つ以上のメモリローカル処理コマンドをメモリコントローラに送信することを含む、
請求項13のコンピューティングデバイス。
【請求項15】
前記第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、
異なるメモリモジュールへの対称アクセスに基づいて、前記第1のアトミックメモリアクセスが前記第2のアトミックメモリアクセスと合体可能であるか否かを判定することを含む、
請求項11のコンピューティングデバイス。
【請求項16】
前記異なるメモリモジュールへの対称アクセスに基づいて、前記第1のアトミックメモリアクセスが前記第2のアトミックメモリアクセスと合体可能であるか否かを判定することは、
トリガイベントに応じて、前記第1のアトミックメモリアクセスを含む第1のキャッシュラインが、前記第2のアトミックメモリアクセスを含む第2のキャッシュラインと合体可能であるか否かを判定することであって、前記第1のキャッシュライン及び前記第2のキャッシュラインは特殊キャッシュ状態である、ことを含む、
請求項15のコンピューティングデバイス。
【請求項17】
前記メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、
マルチモジュールメモリローカル処理コマンドを使用して、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとを合体させることを含む、
請求項16のコンピューティングデバイス。
【請求項18】
メモリローカルコンピューティングのためにアトミックメモリ操作を動的に合体させるためのシステムであって、
少なくとも1つのメモリローカル計算ユニットを含むメモリデバイスと、
コンピューティングデバイスと、を備え、
前記コンピューティングデバイスは、
第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することと、
メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることと、
を行うように構成されている、
システム。
【請求項19】
前記コンピューティングデバイスは、
前記第1のアトミックメモリアクセスが合体の候補であると判定することと、
メモリからデータをロードすることなく、特殊状態のキャッシュラインを割り当てることと、
前記第1のアトミックメモリアクセスのオペランドを、前記第1のアトミックメモリアクセスがターゲットとする前記キャッシュライン内の場所に記憶することと、
を行うように構成されており、
前記第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、
前記第2のアトミックメモリアクセスが前記第1のアトミックメモリアクセスとの合体の候補であると判定することを含み、
前記メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、
前記第2のアトミックメモリアクセスのオペランドを使用して、前記第2のアトミックメモリアクセスがターゲットとする前記キャッシュライン内の場所のデータに対して前記第2のアトミックメモリアクセスの操作を実行することによって、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとを合体させることを含む、
請求項18のシステム。
【請求項20】
前記第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、
異なるメモリモジュールへの対称アクセスに基づいて、前記第1のアトミックメモリアクセスが前記第2のアトミックメモリアクセスと合体可能であるか否かを判定することを含み、
前記メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、
マルチモジュールメモリローカル処理コマンドを使用して、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとを合体させることを含む、
請求項18のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
コンピューティングシステムは、多くの場合、命令を取り出して実行し、実行した命令の結果を適切な場所に記憶可能ないくつかの処理リソース(例えば、1つ以上のプロセッサ)を含む。処理リソース(例えば、中央処理ユニット(central processing unit、CPU)又はグラフィック処理ユニット(graphics processing unit、GPU))は、データに対して論理演算を行うことによって命令を実行するために使用可能な、例えば、算術論理ユニット(arithmetic logic unit、ALU)回路、浮動小数点ユニット(floating point unit、FPU)回路及び/又は組み合わせ論理ブロック等のいくつかの機能ユニットを備えることができる。例えば、機能ユニット回路は、オペランドに対する加算、減算、乗算及び/又は除算等の算術演算を実施するために使用されてもよい。典型的には、処理リソース(例えば、プロセッサ及び/又は関連機能ユニット回路)は、メモリデバイスの外部にあり、データが、処理リソースとメモリデバイスとの間のバス又はインターコネクトを介してアクセスされて、命令セットを実行する。メモリデバイス内のデータをフェッチするため又は記憶するためのアクセスの量を低減させるために、コンピューティングシステムは、処理リソース又は処理リソース群による使用のために最近アクセスされた又は変更されたデータを一時的に記憶するキャッシュ階層を用い得る。しかしながら、データを処理リソースのより近くにもってくるのではなく、データを記憶する記憶場所のより近くでデータ処理が実行されるように、処理リソースがメモリの内部及び/又は近くに実装されるメモリベース実行デバイスにある特定の動作をオフロードすることによって、処理性能が更に改善され得る。ニアメモリ又はインメモリ計算デバイスは、外部通信(すなわち、ホストからメモリデバイスへの通信)を低減することによって時間を節約することができ、電力も節約することができる。
【図面の簡単な説明】
【0002】
【
図1】本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作(atomic memory operations)を動的に合体(dynamically coalescing)させるための例示的なシステムのブロック図である。
【
図2】本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる例示的な方法を説明するフロー図である。
【
図3】本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる例示的な方法を説明するフロー図である。
【
図4】本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる例示的な方法を説明するフロー図である。
【
図5】本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる別の例示的な方法を説明するフロー図である。
【
図6】本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる別の例示的な方法を説明するフロー図である。
【
図7】本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる別の例示的な方法を説明するフロー図である。
【
図8】本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる別の例示的な方法を説明するフロー図である。
【
図9】開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる別の例示的な方法を説明するフロー図である。
【
図10】本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる別の例示的な方法を説明するフロー図である。
【発明を実施するための形態】
【0003】
計算スループットは、メモリ帯域幅よりも速くスケーリングするので、増大する計算能力にデータを送り込み続けるために多くの技術が提案されてきた。具体的には、プロセッシングインメモリ(PIM)ハードウェア等のメモリローカル処理ハードウェアは、計算をメモリの近くに移動させ、メモリの近くの論理に対して、ホストが利用可能なメモリ帯域幅よりも高いメモリ帯域幅の利益をもたらす。
【0004】
多くのスパース/不規則アプリケーションにおいて一般的に使用されるリードモディファイライト(RMW)操作等のアトミックメモリアクセスは、PIM加速の可能性を示す。これらの操作はオペランドを用い、当該オペランド及びメモリ内のデータのターゲット片(target piece)を用いて何らかの操作を実行し、結果をメモリ内の同じ場所に記憶する。非PIMシステムでは、メモリインタフェースを介した2つの転送、すなわち、1つは、メモリからホストへのデータのロード(入力オペランドを用いて操作される)、1つは、ホストからメモリへの結果の記憶を必要とする。PIMシステムでは、PIMにおいて操作を実行することにより、転送の数を2から1に減少させ、ホストオペランドをホストからメモリに送信し、ターゲット場所データに対するロード及びストアをメモリでローカルに実行することができる。結果として生じる2倍のスループットの増加は、メモリ帯域幅の制約を受けることの多い、アトミック的に重い作業負荷に対する性能を大幅に改善する可能性を有する。
【0005】
しかしながら、アトミック的に重い作業負荷は、スパースであるか又は不規則であることが多く、少なくとも2つの点でPIM実施形態に対して問題を提起する。第1に、不規則性は、一部のアプリケーション(例えば、グラフ分析、スパース機械学習)について、所定のアクセスがキャッシュでヒットするか否かを予測することを困難にする。PIMは、キャッシュでミスし、メモリへと進まなければならないRMWアクセスにのみ利益を提供するので(アクセスがキャッシュでヒットする場合、性能を低下させる可能性がある)、全てのRMWアクセスにPIMを使用することは、高局所性アプリケーションに対する性能を低下させ得る。すなわち、PIMは、ホストベースの実施形態において可能であり得たキャッシュ局所性を全て失う(すなわち、ホストアクセスは、PIMアクセスよりも安価であり得る)。多くの不規則なアトミックアクセスの場合、キャッシュでヒットするアクセスを静的に識別することは実行不可能である。したがって、これらの不規則アトミックに対してPIMを使用するか否かを実行時に動的に判定することが有利であろう。
【0006】
更に、いくつかのPIM実施形態では、細粒度PIMコマンドは、標準メモリ操作と同量のコマンドバス帯域幅を占有する。結果として、PIMを用いてスループットを改善することは、PIM操作が複数のメモリモジュールに同時に(例えば、共有コマンドバスを介して)マルチキャストされることを必要とする。これは、高い不規則性を示すことが多いアトミック的に重いアプリケーション(例えば、プッシュベースのグラフ分析、スパース機械学習等)にとって困難であり得る。バンクローカルPIM実施形態の場合、マルチキャストPIMコマンドは、行バッファから全ターゲットバンク内の同一列インデックスに対して同一操作を実行しなければならず、即値データオペランドを含む場合には、当該オペランドは全バンクに対して同一でなければならない。不規則な作業負荷においてマルチキャスト機会を静的に検出することは実行不可能であり、実際、ほとんどのマルチキャストコマンド機会は、同一列インデックスを有するアドレスに更新を同時に送信する異なるスレッドから生じ得る。
【0007】
本開示による実施形態は、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させることを対象とする。本開示による実施形態は、キャッシュライン合体(cache line coalescing)を含む。これは、アトミックキャッシュ局所性を利用し、再利用してからメモリローカルコンピューティングにおいて任意の操作を実施するために、複数の保留中アトミックを同一キャッシュラインに動的に合体させるための機構である。また、本開示によるいくつかの実施形態は、マルチモジュール合体(multi-module coalescing)を含む。これは、異なるキャッシュラインに対して保留中アトミックを単一のマルチキャストメモリローカル処理コマンドに動的に合体させるための機構である。
【0008】
一実施形態は、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる方法を対象とする。本方法は、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することを含む。また、本方法は、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させることを含む。場合によっては、メモリローカル計算ユニットは、プロセッシングインメモリ(PIM)ユニットである。第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、(例えば、メモリローカル計算ユニットがメモリローカル処理を要求するために)合体マルチキャスト要求を発行する前に実行され得る。
【0009】
いくつかの実施形態では、本方法は、第1のアトミックメモリアクセスが合体の候補であると判定することと、メモリからデータをロードすることなく特殊状態のキャッシュラインを割り当てることと、第1のアトミックメモリアクセスのオペランドを、第1のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所に記憶することと、を更に含む。これらの実施形態では、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、第2のアトミックメモリアクセスが第1のアトミックメモリアクセスとの合体の候補であると判定することを含み得る。これらの実施形態では、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、第2のアトミックメモリアクセスのオペランドを使用して、第2のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所のデータに対して第2のアトミックメモリアクセスの操作を実行することによって、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとを合体させることを含み得る。
【0010】
いくつかの実施形態では、本方法は、トリガイベントに応じて、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスのための1つ以上のメモリローカル処理コマンドをメモリコントローラに送信することを含む。いくつかの実施形態では、本方法は、1つ以上のメトリックに基づいて、第1のアトミックメモリアクセスに特殊状態のキャッシュラインを割り当てるか否かを判定することを含む。
【0011】
いくつかの実施形態では、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、異なるメモリモジュールへの対称アクセスに基づいて、第1のアトミックメモリアクセスが第2のアトミックメモリアクセスと合体され得るか否かを判定することを含む。これらの実施形態では、異なるメモリモジュールへの対称アクセスに基づいて、第1のアトミックメモリアクセスが第2のアトミックメモリアクセスと合体され得るか否かを判定することは、トリガイベントに応じて、第1のアトミックメモリアクセスを含む第1のキャッシュラインが、第2のアトミックメモリアクセスを含む第2のキャッシュラインと合体され得るか否かを判定することを含んでもよく、第1のキャッシュライン及び第2のキャッシュラインは特殊キャッシュ状態である。場合によっては、合体の候補であるキャッシュラインは、別の物理構造において追跡され得る。
【0012】
いくつかの実施形態では、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、マルチモジュールメモリローカル処理コマンドを使用して第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとを合体させることを含む。
【0013】
別の実施形態は、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させるためのコンピューティングデバイスを対象とする。コンピューティングデバイスは、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定し、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させるように構成された論理回路を含む。場合によっては、メモリローカル計算ユニットは、PIMユニットである。
【0014】
いくつかの実施形態では、論理回路は、第1のアトミックメモリアクセスが合体の候補であると判定し、メモリからデータをロードすることなく特殊状態のキャッシュラインを割り当て、第1のアトミックメモリアクセスのオペランドを、第1のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所に記憶するように更に構成されている。いくつかの実施形態では、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、第2のアトミックメモリアクセスが第1のアトミックメモリアクセスとの合体の候補であると判定することを含む。これらの実施形態では、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、第2のアトミックメモリアクセスのオペランドを使用して、第2のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所のデータに対して第2のアトミックメモリアクセスの操作を実行することによって、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとを合体させることを含み得る。これらの実施形態は、トリガイベントに応じて、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスのための1つ以上のメモリローカル処理コマンドをメモリコントローラに送信することを更に含み得る。
【0015】
いくつかの実施形態では、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、異なるメモリモジュールへの対称アクセスに基づいて、第1のアトミックメモリアクセスが第2のアトミックメモリアクセスと合体され得るか否かを判定することを含む。これらの実施形態では、異なるメモリモジュールへの対称アクセスに基づいて、第1のアトミックメモリアクセスが第2のアトミックメモリアクセスと合体され得るか否かを判定することは、トリガイベントに応じて、第1のアトミックメモリアクセスを含む第1のキャッシュラインが、第2のアトミックメモリアクセスを含む第2のキャッシュラインと合体され得るか否かを判定することを含んでもよく、第1のキャッシュライン及び第2のキャッシュラインは特殊キャッシュ状態である。いくつかの実施形態では、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、マルチモジュールメモリローカル処理コマンドを使用して第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとを合体させることを含み得る。
【0016】
更に別の実施形態は、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させるためのシステムを対象とする。本システムは、少なくとも1つのメモリローカル計算ユニットを含むメモリデバイスを含む。また、本システムは、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定し、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させるように構成されたコンピューティングデバイスを含む。
【0017】
いくつかの実施形態では、コンピューティングデバイスは、第1のアトミックメモリアクセスが合体の候補であると判定し、メモリからデータをロードすることなく特殊状態のキャッシュラインを割り当て、第1のアトミックメモリアクセスのオペランドを、第1のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所に記憶するように更に構成されている。これらの実施形態では、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるかどうかを判定することは、第2のアトミックメモリアクセスが第1のアトミックメモリアクセスとの合体の候補であると判定することを含む。これらの実施形態では、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、第2のアトミックメモリアクセスのオペランドを使用して、第2のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所のデータに対して第2のアトミックメモリアクセスの操作を実行することによって、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとを合体させることを含む。
【0018】
いくつかの実施形態では、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、異なるメモリモジュールへの対称アクセスに基づいて、第1のアトミックメモリアクセスが第2のアトミックメモリアクセスと合体され得るか否かを判定することを含む。これらの実施形態では、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、マルチモジュールメモリローカル処理コマンドを使用して第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとを合体させることを含む。
【0019】
本開示による実施形態は、
図1から始めて更に詳細に説明される。明細書及び図面を通じて、同じ符号は同じ構成要素を指す。
図1は、本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させるための例示的なシステム100のブロック図を示している。
図1の例示的なシステム100は、少なくとも1つのホスト実行エンジン102を含むホストデバイス130(例えば、システムオンチップ(SoC)デバイス又はシステムインパッケージ(SiP)デバイス)を含む。図示されていないが、ホストデバイス130は、複数の異なるタイプのホスト実行エンジンを含む複数のホスト実行エンジンを含み得る。様々な例では、ホスト実行エンジン102は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、アクセラレーテッドプロセッシングユニット(APU)、特定用途向けプロセッサ、構成可能プロセッサ、又は、複数の同時計算シーケンスをサポート可能な他の計算エンジンであり得る。ホストデバイス130は、ホスト実行エンジン102上で1つ以上のアプリケーションをホストする。ホストされるアプリケーションはマルチスレッドアプリケーションであってもよく、ホスト実行エンジン102は、アプリケーションの複数の同時スレッドを実行し得る、及び/又は、複数の実行エンジン102は、同一アプリケーションのスレッドを同時に実行し得る。
【0020】
図1の例では、ホスト実行エンジンは、複数の処理素子106、レジスタファイル134及び第1レベルのキャッシュ136を有する複数の単一命令複数データ(SIMD)コア104を含むGPU計算ユニットである。スケジューラ108は、命令プールから命令をロードし、それらをSIMDコア104上に展開して実行する。システムメモリ120へのメモリアクセスが必要とされる場合に、SIMDコア104は、キャッシュ階層、ローカルデータストア、グローバルデータストア又は他の一時記憶構成要素に対してメモリアクセス要求を発行する。この説明のために、各メモリ要求は、複数のSIMDコアによって共有され、複数のホスト実行エンジン102によって共有され得るキャッシュ140(すなわち、最下位レベルのキャッシュ)を通過すると仮定する。場合によっては、メモリアクセス要求は、キャッシュによって、すなわち、キャッシュ制御論理142によって処理され得る。キャッシュ制御論理142がキャッシュ140内のメモリアクセス要求を処理することができない他の場合には、キャッシュ制御論理142が、要求においてターゲットにされたデータのためのメモリアクセス要求をメモリコントローラ112に対して発行する。次に、メモリコントローラ112は、要求でターゲットにされた記憶場所に記憶されたデータをシステムメモリ120からキャッシュ140のキャッシュライン144にロードさせるコマンドを、システムメモリ120に対して発行する。
【0021】
図1の例では、システムメモリ120は、DRAMバンク128等の複数のモジュールを含む。インターコネクト180を介してメモリコントローラ112に接続されているメモリモジュールセットは、メモリチャネルを表す。したがって、
図1は、1つのメモリチャネルを示すが、メモリチャネルは、複数のメモリコントローラを含み得る。更に、システムメモリ120は、複数のメモリチャネルを含み得る。システムメモリ120は、1つ以上のメモリローカル計算ユニットを含むか又はそれに結合されている。メモリローカル計算ユニットは、レジスタ、ALU又は単純な計算コア及びシステムメモリ120に記憶されたデータに対して単純な算術演算を実行するための制御論理を含む。いくつかの例では、メモリローカル計算ユニットは、メモリデバイス(例えば、メモリダイ又はチップ)に結合されているニアメモリ計算ユニットであり得る。例えば、ニアメモリ計算ユニットは、3D積層メモリの論理ダイ内に、メモリデバイスに結合されたメモリアクセラレータ内に、又は、ホストデバイス130とシステムメモリ120との間のインターポーザ上に実装され得る。他の例では、メモリローカル計算ユニットは、メモリダイ内に又は特にDRAMバンク内に実装されているプロセッシングインメモリ(PIM)ユニット(すなわち、バンクローカルPIMユニット)であり得る。限定ではなく例示を目的として、
図1のシステムメモリ120は、メモリローカル計算ユニットである複数のバンクローカルPIMユニット126を含む。
【0022】
キャッシュ140は、キャッシュ内のデータに対してアトミック操作を実行可能なキャッシュ計算論理146を更に含む。例えば、アトミックメモリアクセス要求(すなわち、アトミック操作を含むメモリアクセス要求)がキャッシュにて受信される場合に、アトミックメモリアクセス要求でターゲットにされたデータは、キャッシュ140に既に記憶されていることがある。この例では、キャッシュ計算論理146は、要求において供給されるオペランドと、要求でターゲットにされた場所(例えば、メモリアドレス)に対応するキャッシュ内のデータと、を使用して、アトミックメモリアクセス要求のアトミック操作(例えば、リードモディファイライト(RMW)操作)を実行する。アトミックメモリアクセス要求でターゲットにされたデータが未だキャッシュに記憶されていない場合には、キャッシュ制御論理142は、キャッシュライン144を割り当て、アトミックRMWアクセス要求でターゲットにされたデータを含むデータをシステムメモリからロードする。キャッシュ計算論理146は、ロードされたデータ及び要求によって供給されたオペランドを使用してアトミック操作を実行し、割り当てられたキャッシュラインに結果を記憶する。何れの場合も、ダーティデータのライトバックがトリガされると(例えば、キャッシュラインが追い出されると)、更新されたキャッシュラインがシステムメモリ120に書き込まれる。
【0023】
アトミックメモリアクセス要求がキャッシュ140をミスする場合に、キャッシュ制御論理142は、キャッシュ140にデータをロードしてホストデバイス130内で実行するのではなく、メモリローカル計算ユニット(すなわち、PIMユニット126)において実行されるアトミック操作に対する要求を発行することによって、データ転送を低減させ得る。しかしながら、この技術は、メモリローカルコンピューティング及びPIMの利点を利用するが、ターゲットデータがキャッシュ140にロードされないので、キャッシュ局所性及び再利用を無視する。したがって、同一キャッシュラインへの複数のヒットは、同数のPIM要求をトリガし続けるであろう。
【0024】
これらの技術のバランスをとるために、特殊キャッシュ状態を利用して、アトミックメモリアクセスをキャッシュライン内で合体させてからメモリローカル計算ユニットにアトミックメモリアクセスを送信して実行することを可能にする。このアトミック合体(AC)状態は、PIMユニット126によって実行され得るキャッシュ内のアトミック操作を遅延させ、それらを同一タイプの後続のアトミックと合体させて同一キャッシュラインにするために使用され得る。AC状態の使用は、関与するアトミック操作が可換的かつ結合的(例えば、加算、乗算、MAX、MIN)であり、データ値を返さないことを必要とする。しかしながら、一部の非可換的操作は、キャッシュにおいて可換に変換され得る(例えば、アトミック減算は、オペランドを否定することによってアトミック加算に変換され得る)。キャッシュ制御論理142がAC状態のキャッシュラインを割り当てる場合に、キャッシュラインには、システムメモリからロードされたデータが取り込まれない。むしろ、アトミックメモリアクセス要求のオペランドがキャッシュラインに記憶される。データ値を返さない同一タイプの後続のアトミックメモリアクセスは、キャッシュラインにヒットすることが許可され、対応するオペランドは、キャッシュラインのターゲット場所に記憶される。標準的な読み出し若しくは書き込み操作、又は、データ値を返すアトミック操作では、キャッシュのヒットが許可されない。この場合、ケースミスは、メモリからキャッシュラインへのデータのロードをトリガし、ロードされたデータに対して保留中アトミック操作が実行され、結果がキャッシュラインに書き込まれ、ダーティ有効とマークされる。そのような非合体メモリアクセス要求が受信されないと仮定すると、アトミック操作は、データのライトバックがトリガされるまでキャッシュライン内で合体され続け、ライトバックがトリガされた時点で、キャッシュ制御論理142が、キャッシュライン内で表されるアトミック操作のためのPIMコマンドを発行する。
【0025】
いくつかの例では、異なるタイプのアトミック操作に対して異なるAC状態が存在し得る。例えば、キャッシュラインごとに1つのタイプのアトミックのみが記憶され得るが、アトミック追加のための1つのAC状態及びアトミック乗算のための別のAC状態が存在し得る。他の例では、AC状態は、キャッシュバンク等のより粗い粒度で追跡され得る。例えば、所定のキャッシュバンクは、AC状態に対して1つのタイプのアトミックのみがいつでも使用されることを可能にし得る。更に別の例では、キャッシュコントローラによって追跡されるAC状態は、ハードワイヤードであり得るか、又は、予想される使用事例に基づいてソフトウェアで予め設定され得る。例えば、システムは、アトミック加算操作を使用するアトミックRMWアクセスの合体のみをサポートし得る。
【0026】
また、キャッシュ制御論理142は、PIM操作を合体させるマルチモジュールPIMコマンドを発行することによって、複数のDRAMモジュールへのアクセスの並列性を利用し得る。バンクローカルPIM実施形態の場合、マルチキャストPIMコマンドは、全てのターゲットDRAMバンク内の同一列インデックスに対して行バッファから同一操作を実行する。一例では、キャッシュ制御論理142は、キャッシュラインのAC状態を使用して、PIM要求を複数のDRAMバンクに対するマルチキャストPIMコマンドに組み込むことによって合体され得るキャッシュラインを識別する。
【0027】
更なる説明のために、
図2は、本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる例示的な方法を説明するフロー図を示している。本方法は、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定すること(210)を含む。いくつかの例では、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定すること(210)は、アトミックリードモディファイライト(RMW)アクセス等の2つ以上のアトミックメモリアクセスが、同一トリガイベントに基づいてこれら2つ以上のアトミックRMWアクセスのためのニアメモリ処理コマンドを一緒に送信することによって合体され得るかどうかを、キャッシュ制御論理(例えば、
図1のキャッシュ制御論理142)が判定することによって実行される。例えば、トリガイベントは、ライトバック、キャッシュラインの追い出し、又は、2つ以上のRMWアクセスのうち少なくとも1つに影響を及ぼすキャッシュラインの挿入であり得る。一例では、同一キャッシュラインにヒットする2つのアトミックRMWアクセスは、これらが同一タイプの変更操作を使用する場合に合体の候補となり得る。別の例では、2つのアトミックRMWアクセスは、これらが異なるメモリモジュールの記憶場所をターゲットにする場合に合体の候補となり得る。
【0028】
いくつかの例では、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定すること(210)は、2つのアトミックRMWアクセスがキャッシュライン合体の候補であるかどうかを判定することを含み得る。これらの例では、2つのアトミックRMWアクセスがキャッシュライン合体の候補であるか否かを判定することは、2つのアトミックRMWアクセスが同一キャッシュラインをターゲットにするか否かを判定することと、2つのアトミックRMWアクセスが同一アトミック操作を使用するか否かを判定することと、それらの操作が可換的かつ結合的であるか否かを判定することと、操作が戻り値を必要とするか否かを判定することと、を含み得る。そのような例では、以下でより詳細に説明されるように、2つのアトミックRMWアクセスが同一キャッシュラインにヒットする場合には、可換的かつ結合的操作である同一タイプのアトミック操作(例えば、両方の操作が加算演算である、両方の操作が乗算操作である等)を使用し、何れのアクセスも戻り値を必要としない場合には、2つのアトミックRMWアクセスはキャッシュライン合体の候補となる。
【0029】
いくつかの例では、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定すること(210)は、2つのアトミックRMWアクセスがマルチモジュール合体の候補であるか否かを判定することを含み得る。これらの例では、2つのアトミックRMWアクセスがマルチモジュール合体の候補であるか否かを判定することは、異なるキャッシュラインに配置された2つのアトミックRMWアクセスが同一タイプのニアメモリ計算操作を使用するか否か、及び、これらのアクセスがDRAM行内の同一列オフセットを使用した、同一チャネルの異なるバンクに対するものであるか否かを判定することを含み得る。そのような例では、以下でより詳細に説明するように、2つのアトミックRMWアクセスが異なるキャッシュラインに配置され、同一タイプのニアメモリ計算操作を使用する場合に、また、これらのアトミックRMWアクセスがDRAM行内の同一列オフセットを使用して同一チャネルの異なるバンクをターゲットにすると場合に、2つのアトミックRMWアクセスはマルチモジュール合体の候補となる。
【0030】
更なる説明のために、
図3は、本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる例示的な方法を説明するフロー図を示している。
図2の例示的な方法と同様に、
図3の例示的な方法は、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定すること(210)と、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させること(220)と、を含む。
【0031】
上述したように、いくつかの実施形態による合体は、キャッシュライン合体を含む。キャッシュライン合体を容易にするために、
図3の例示的な方法は、第1のアトミックメモリアクセスが合体の候補であると判定すること(310)を含む。いくつかの例では、第1のアトミックメモリアクセスが合体の候補であると判定すること(310)は、キャッシュコントローラ(例えば、キャッシュ制御論理142)が、例えばホスト計算ユニット(例えば、
図1のホスト計算エンジン102)から、第1のアトミックRMWアクセスに対するメモリ要求を受信するか又は識別することによって実行される。これらの例では、第1のアトミックメモリアクセスが合体の候補であると判定すること(310)は、第1のアトミックRMWアクセスがニアメモリ計算ユニットにおいて実行され得る可換的かつ結合的操作を使用すると判定することを含む。いくつかの例では、第1のアトミックメモリアクセスが合体の候補であると判定すること(310)は、第1のアトミックRMW要求に対する要求でターゲットにされた記憶場所が無効なキャッシュラインにヒットするか又はキャッシュをミスすると判定することを更に含む。
【0032】
また、
図3の例示的な方法は、メモリからデータをロードすることなく、特殊状態のキャッシュラインを割り当てること(320)を含む。いくつかの例では、メモリからデータをロードすることなく、特殊状態のキャッシュラインを割り当てること(320)は、キャッシュコントローラが、上述したアトミック合体(AC)状態のキャッシュラインを割り当てることによって実行される。更に、キャッシュラインは、システムメモリからロードされたデータをキャッシュラインに取り込むことなく、AC状態で割り当てられる。いくつかの例では、異なるタイプのアトミック操作に対して異なるAC状態が存在し得る。例えば、キャッシュラインごとに1つのタイプのアトミックのみが記憶され得るが、アトミック追加のための1つのAC状態及びアトミック乗算のための別のAC状態が存在し得る。他の例では、AC状態は、キャッシュバンク等のより粗い粒度で追跡され得る。例えば、所定のキャッシュバンクは、AC状態に対して1つのタイプのアトミックのみがいつでも使用されることを可能にし得る。更に別の例では、キャッシュコントローラによって追跡されるAC状態は、サポート制限に基づいたハードワイヤードであり得る。例えば、システムは、アトミック加算操作を使用するアトミックRMWアクセスの合体のみをサポートし得る。
【0033】
キャッシュラインがAC状態である場合に、第1のアトミックRMWとの合体の候補であるアトミックRMWアクセスに対する別の要求は、キャッシュヒットをもたらす。一方、第1のアトミックRMWアクセスとの合体の候補ではない別の要求は、キャッシュミスをもたらす。例えば、読み取りメモリアクセス、書き込みメモリアクセス、非可換的若しくは非結合的アトミック操作を含むメモリアクセス、又は、戻り値を伴うアトミック操作を含むメモリアクセスに対する要求等の別のメモリ要求は、キャッシュミスをもたらす。更に、合体の候補ではない別のメモリ要求を受信すると、システムメモリからキャッシュラインへのデータのロードがトリガされ、AC状態がダーティ有効状態に移行する。
【0034】
また、
図3の例示的な方法は、第1のアトミックメモリアクセスのオペランドを、第1のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所に記憶すること(330)を含む。いくつかの例では、第1のアトミックメモリアクセスのオペランドを、第1のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所に記憶すること(330)は、キャッシュコントローラが、第1のアトミックRMWアクセスに対する要求に含まれたオペランドを、このアクセスがターゲットとする場所(例えば、オフセット又はアドレス)に記憶することによって実行される。これらの例では、第1のアトミックメモリアクセスのオペランドを、第1のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所に記憶すること(330)は、NULL値(例えば、アトミック加算/減算に対して「0」、アトミック乗算に対して「1」、アトミックMINに対してMAX_INT等)を、キャッシュラインの残りの部分に記憶することを含み得る。オペランド値がNであり、キャッシュライン内のオフセット場所Mに対応するアドレスをターゲットとするアトミック加算操作であるアトミックRMWアクセスの例を検討する。アトミックRMWアクセス要求が無効キャッシュラインにヒットする場合には、キャッシュラインが、AC状態でアトミック加算操作に割り当てられる。(アトミックRMWアクセス要求からの)アトミック加算操作のオペランド値Nが、キャッシュライン内のオフセット場所Mに記憶される。キャッシュライン内の他の全てのオフセットが「0」に設定される。AC状態のキャッシュラインにヒットし、合体の候補である任意の後続のアトミックRMWアクセス要求に対して、当該アトミックRMWアクセスのアトミック操作は、後続の要求からのオペランド及びオペランド値N(後続の要求が保留中アトミックのオフセット場所Mをターゲットにする場合)又はオペランド値「0」(後続の要求がキャッシュライン内の任意の他の場所をターゲットにする場合)を使用して、適所で実行される。
【0035】
図3の例示的な方法では、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定すること(210)は、第2のアトミックメモリアクセスが第1のアトミックメモリアクセスとの合体の候補であると判定すること(340)を含む。いくつかの例では、第2のアトミックメモリアクセスが第1のアトミックメモリアクセスとの合体の候補であると判定すること(340)は、キャッシュコントローラが、第2のアトミックRMWアクセスに対する要求がAC状態のキャッシュラインにヒットすると判定し、第2のアトミックRMWアクセスの特性を検査することによって実行される。第2のRMWアクセスが第1のRMWアクセスと同一タイプのアトミック操作であり、当該操作が可換的かつ結合的(例えば、アトミック加算)であり、第2のRMWアクセスが戻り値を必要としない場合には、第2のRMWアクセスは、第1のアトミックRMWアクセスとの合体の候補であると判定され得る。
【0036】
更なる説明のために、
図4は、本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる例示的な方法を説明するフロー図を示している。
図3の例示的な方法と同様に、
図4の例示的な方法は、第1のアトミックメモリアクセスが合体の候補であると判定すること(310)と、メモリからデータをロードすることなく、特殊状態のキャッシュラインを割り当てること(320)と、第1のアトミックメモリアクセスのオペランドを、第1のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所に記憶すること(330)と、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定すること(210)であって、第2のアトミックメモリアクセスが第1のアトミックメモリアクセスとの合体の候補であると判定すること(340)と、を含む、ことと、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させること(220)と、を含む。
【0037】
図4の例示的な方法では、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させること(220)は、第2のアトミックメモリアクセスのオペランドを使用して、第2のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所のデータに対して第2のアトミックメモリアクセスの操作を実行することによって、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとを合体させること(410)を含み、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスは、同一キャッシュライン内の1つ以上の場所をターゲットにする。いくつかの例では、第2のアトミックメモリアクセスのオペランドを使用して、第2のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所のデータに対して第2のアトミックメモリアクセスの操作を実行することによって、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとを合体させること(410)は、キャッシュコントローラが、第1のRMWアクセスに対応する1つ以上のニアメモリ処理コマンド(例えば、PIMコマンド)をメモリコントローラに送信するのを遅延させることによって実行される。すなわち、合体の候補である後続のRMWアクセス(例えば、第2のアトミックRMWアクセス)は、トリガイベントが発生するまでキャッシュライン内でそれらのアトミック操作を実行することによって合体することができる。第2又は後続のRMWアクセスの変更操作(例えば、atomicAdd、atomicMultiply)は、第2のRMWアクセスのオペランドを用いて、第1のRMWアクセス又は以前のRMWアクセスのオペランドを含むキャッシュライン内のデータに対して実行される。
【0038】
例えば、第1のRMWアクセスが特定のキャッシュラインオフセットをターゲットにするatomicAdd操作を含み、第1のRMWアクセスのオペランドが「5」である場合、「5」は、特定のキャッシュラインオフセットに記憶される(初期値がNULLであると仮定する)。「3」のオペランドを有する第2のRMWアクセスが第1のRMWアクセスと同じキャッシュラインオフセットをターゲットにし、第2のRMWアクセスもatomicAdd操作を含む場合、第2のRMWアクセス(オペランド「3」を使用する)のatomicAdd操作は、当該オフセットに記憶されたデータ(第1のRMWアクセスのオペランド「5」)に対して実行される。操作の結果値(すなわち、「8」)は、第1のRMWアクセスでターゲットにされた同一オフセットに記憶される。しかしながら、第2のRMWアクセスが第1のRMWアクセスと同じキャッシュラインをターゲットにするが、異なる第2の場所(すなわち、異なるオフセット)にあり、当該場所の値が元のキャッシュライン割り当てからNULLである場合、第2のRMWアクセスのオペランドは第2の場所に記憶される。したがって、RMWアクセスは、ターゲット場所の値がNULLである場合にそれらのオペランドをキャッシュライン内に記憶することによって、又は、それらがキャッシュライン内の同じ場所(すなわちオフセット)をターゲットにする場合にキャッシュライン内の対応する操作を実行することによって、キャッシュライン内で合体される。
【0039】
いくつかの例では、合体は、キャッシュ計算ユニット(例えば、
図1のキャッシュ計算論理)が、後続のアトミックRMWアクセスのオペランド及びキャッシュライン内のターゲット場所に記憶されたデータに基づいてアトミック操作を適所で実行することによって、実行される。例えば、キャッシュライン内のターゲット場所のデータは、AC状態のキャッシュラインの割り当て中に初期化されたNULL値であり得る。キャッシュライン内のターゲット場所のデータは、以前の保留中アトミックRMWアクセスからのオペランド値であり得る。キャッシュライン内のターゲット場所のデータは、2つ以上の以前の保留中アトミックRMWアクセスの計算結果であり得る。いくつかの例では、合体を終了させるトリガイベントは、(例えば、AC状態のキャッシュラインの追い出しによる)ライトバックであってもよく、この時点で、合体アトミックRMWアクセスが、メモリローカル計算ユニットによって実行のために発行される。他の例では、合体を終了させるトリガイベントは、合体の候補ではなく、キャッシュライン内の場所をターゲットとするメモリアクセスであり得る。これらの例では、メモリアクセスはキャッシュをミスし、データをシステムメモリからキャッシュラインにロードさせる。そのような例では、保留中アトミックRMWアクセスは、ロードされたデータに対して実行され、変更データを含むキャッシュラインは、AC状態から(form the AC state)ダーティ有効状態に移行する。
【0040】
更なる説明のために、
図5は、本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる例示的な方法を説明するフロー図を示している。
図4の例示的な方法と同様に、
図5の例示的な方法は、第1のアトミックメモリアクセスが合体の候補であると判定すること(310)と、メモリからデータをロードすることなく、特殊状態のキャッシュラインを割り当てること(320)と、第1のアトミックメモリアクセスのオペランドを、第1のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所に記憶すること(330)と、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定すること(210)であって、第2のアトミックメモリアクセスが第1のアトミックメモリアクセスとの合体の候補であると判定すること(340)を含む、ことと、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させること(220)であって、第2のアトミックメモリアクセスのオペランドを使用して、第2のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所のデータに対して第2のアトミックメモリアクセスの操作を実行することによって、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとを合体させること(410)を含み、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスは、同一キャッシュライン内の1つ以上の場所をターゲットにする、ことと、を含む。
【0041】
また、
図5の例示的な方法は、トリガイベントに応じて、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスのための1つ以上のメモリローカル処理コマンドをメモリコントローラに送信すること(510)を含む。いくつかの例では、トリガイベントに応じて、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスのための1つ以上のメモリローカル処理コマンドをメモリコントローラに送信すること(510)は、キャッシュコントローラが、AC状態のキャッシュライン内で合体されたアトミックRMWアクセスごとにメモリローカル処理コマンド(例えば、PIMコマンド)を生成することによって実行される。場合によっては(例えば、ホスト計算ユニットがGPUである場合)、各アトミックRMWアクセスに対応するメモリローカル処理コマンドのストリームは、複数のSIMDデータレーンを介して単一命令を使用して送信され得る。メモリローカル計算操作は、個々のアトミックアクセスよりも粗い粒度である可能性が高い(ただし、依然としてフルキャッシュラインよりも細かい粒度である可能性がある)。メモリローカル処理コマンドが単一のアトミックに使用される場合、1つを除く全てのSIMDレーンを無効にする必要があるので、無駄であり得る。しかしながら、複数のアトミックアクセスが同一メモリローカル処理チャンクに収まる場合、PIM SIMD操作は、それら全てを単一の操作で実行することができる。例えば、単一の「Load+Add」メモリローカル処理コマンドが、キャッシュライン内の合体アトミックRMWアクセスの全てに使用され、異なる記憶場所をターゲットにするオペランドが、複数のSIMDデータレーンを介して独立して提供され得る。同一キャッシュラインアドレスへのアトミックRMWアクセスが異なるメモリローカル処理チャンクに収まる場合であっても、それらは依然として改善された行局所性の利益を享受する。すなわち、合体を伴わない、DRAM行アクティブ化は、各メモリローカル計算操作を実行する前に2回実行される必要があり得る。合体を伴う場合、複数のPIMコマンドが必要とされ得るが、DRAM行は1回だけアクティブ化される必要がある。いくつかの例では、トリガイベントは、(例えば、キャッシュラインの追い出しによる)キャッシュラインライトバックであり得る。
【0042】
更なる説明のために、
図6は、本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる例示的な方法を説明するフロー図を示している。
図3の例示的な方法と同様に、
図6の例示的な方法は、第1のアトミックメモリアクセスが合体の候補であると判定すること(310)と、メモリからデータをロードすることなく、特殊状態のキャッシュラインを割り当てること(320)と、第1のアトミックメモリアクセスのオペランドを、第1のアトミックメモリアクセスがターゲットとするキャッシュライン内の場所に記憶すること(330)と、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定すること(210)であって、第2のアトミックメモリアクセスが第1のアトミックメモリアクセスとの合体の候補であると判定すること(340)とを含む、ことと、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させること(220)と、を含む。
【0043】
また、
図6の例示的な方法は、1つ以上のメトリックに基づいて、第1のアトミックメモリアクセスに特殊状態のキャッシュラインを割り当てるか否かを判定すること(610)を含む。いくつかの例では、1つ以上のメトリックに基づいて、第1のアトミックメモリアクセスに特殊状態のキャッシュラインを割り当てるか否かを判定すること(610)は、キャッシュコントローラが、合体を実行する時点を判定するためにメトリックセットを追跡することによって実行される。メモリローカル計算ユニットによって実行され得る合体アトミックRMWアクセスは、メモリローカル計算実施形態又はホストベース計算実施形態に対してメモリ転送を導入しないが、メモリ転送をクリティカルパス上に移動させることができる。すなわち、合体させることができないACラインへのアトミックRMWアクセスは、戻る前にメモリロードをトリガする必要があるが、そうでなければ、ホストベース実施形態ではキャッシュにヒットしてしまう。したがって、そのようなシナリオの可能性に基づいてAC状態を使用するかどうかを動的に判定することが望ましい場合がある。特に、制御されたキャッシュは、1つ以上のメトリックを使用してAC状態のラインへの合体不能アクセスが存在する可能性を評価してから、ACラインをメモリに適用する。
【0044】
いくつかの例では、アトミックRMWアクセスがシステムメモリからのデータのロードをトリガするこの可能性は、合体不能であり、AC状態のラインをターゲットにする最近のアクセスの割合を追跡することによって概算することができる。例えば、AC状態のキャッシュラインがほとんどない場合、これは最近のアトミックアクセスを示し得るので、ダーティ有効状態を使用することができる。この割合が低い場合、合体不能アクセスがACキャッシュライン上でヒットする可能性が低いので、AC状態への移行が性能を損なう可能性が低い。
【0045】
いくつかの例では、アトミックRMWアクセスがシステムメモリからのデータのロードをトリガするこの可能性は、合体可能なアトミックアクセスである最近のアクセスの割合を追跡することによって概算することができる。ACキャッシュラインの割り当てが可能である場合、対応するアトミックタイプの割合がチェックされる。これが高い場合、将来のアクセスが合体される可能性がより高いので、AC状態の使用が性能を損なう可能性がより低い。
【0046】
いくつかの例では、アトミックRMWアクセスがシステムメモリからのデータのロードをトリガする可能性は、ソフトウェアによって(例えば、メモリマップレジスタに書き込むことによって)供給される、アトミックアクセス局所性に関する追加情報と、アトミックアクセスが合体され得る可能性と、に基づいて概算され得る。
【0047】
更なる説明のために、
図7は、本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる例示的な方法を説明するフロー図を示している。
図2の例示的な方法と同様に、
図7の例示的な方法は、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定すること(210)と、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させること(220)と、を含む。
【0048】
図7の例示的な方法では、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定すること(210)は、異なるメモリモジュールへの対称アクセスに基づいて、第1のアトミックメモリアクセスが第2のアトミックメモリアクセスと合体され得るか否かを判定すること(710)を含む。いくつかの例では、異なるメモリモジュールへの対称アクセスに基づいて、第1のアトミックメモリアクセスが第2のアトミックメモリアクセスと合体され得るか否かを判定すること(710)は、キャッシュコントローラが、着信アトミックメモリアクセスの特性を検査し、それらのアトミックメモリアクセスの何れかが同一のアトミック操作、したがって同一のメモリローカル処理コマンドを使用するかどうかを判定することによって実行される。例えば、キャッシュコントローラは、第1のアトミックRMWアクセス及び第2のアトミックRMWアクセスが同一のアトミック操作、したがって同一のメモリローカル処理コマンドを使用するか否かを判定する。
【0049】
いくつかの例では、2つのRMWアクセスが対称であるか否かは、互換性のあるアトミックオペレータタイプ(例えば、2つの加算)及び/又はいくつかの条件を満たすターゲットアドレス(例えば、同一メモリチャネル内の異なるDRAMバンク内の同一DRAM列をターゲットにする)等のような、マルチキャストコマンドに必要な条件に基づき得る。したがって、これらの例では、異なるメモリモジュールへの対称アクセスに基づいて、第1のアトミックメモリアクセスが第2のアトミックメモリアクセスと合体され得るか否かを判定すること(710)は、同一アトミック操作を使用するアクセスについて、それらのアトミックRWMが異なるメモリモジュール内の対称ターゲット記憶場所にアクセスするか否かを判定することによっても実行される。例えば、キャッシュコントローラは、第1のアトミックRMWアクセスでターゲットになる記憶場所及び第2のアトミックRMWアクセスでターゲットになる記憶場所が、同一メモリチャネルの異なるバンクに位置し、DRAM行内で同一列オフセットを共有する(すなわち、メモリアクセスが2つのモジュール間で対称である)か否かを判定する。そのような例では、メモリ領域からのロード又はストアを実行するメモリローカル処理コマンドが単一のマルチモジュールコマンドによって実施され得るので、これらのアトミックRMWアクセスは合体の候補である。すなわち、複数のモジュールにマルチキャストされる単一のメモリローカル処理コマンドは、例えば、第1のアトミックRMWアクセス及び第2のアトミックRMWアクセスの両方の「ストア」コマンドを実施するために使用され得る。これは、それらが同一メモリチャネル内の異なるバンクをターゲットにし、DRAM行内の同一列オフセットを共有するためである。
【0050】
更なる説明のために、
図8は、本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる例示的な方法を説明するフロー図を示している。
図7の例示的な方法と同様に、
図8の例示的な方法は、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定すること(210)と、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させること(220)であって、異なるメモリモジュールへの対称アクセスに基づいて、第1のアトミックメモリアクセスが第2のアトミックメモリアクセスと合体され得るか否かを判定すること(710)を含む、ことと、を含む。
【0051】
図8の例示的な方法では、異なるメモリモジュールへの対称アクセスに基づいて、第1のアトミックメモリアクセスが第2のアトミックメモリアクセスと合体され得るか否かを判定すること(710)は、トリガイベントに応じて、第1のアトミックメモリアクセスを含む第1のキャッシュラインが、第2のアトミックメモリアクセスを含む第2のキャッシュラインと合体され得るか否かを判定すること(810)を含み、第1のキャッシュライン及び第2のキャッシュラインは特殊キャッシュ状態である。いくつかの例では、アトミックRMWアクセスがマルチモジュール合体の候補であるか否かを判定するために、ACキャッシュ状態が活用される。これらの例では、第1のキャッシュラインが第2のキャッシュラインと合体され得るか否かを判定すること(710)は、キャッシュコントローラが、AC状態の第1のキャッシュラインがAC状態の第2のキャッシュラインと合体され得るか否かを判定することによって実行される。両方のキャッシュラインが同一タイプのAC状態を共有する場合、又は、両方のキャッシュラインが同一タイプのアトミック操作を含む場合、アトミックRMWアクセスは、マルチモジュール合体の候補であり得る。PIM等のバンクローカル計算ユニットの場合、2つのキャッシュラインは、それらが同一タイプのメモリローカル計算操作を使用し、それらが同一チャネルの異なるバンクに対するものであり、DRAM行内の同一列オフセットを使用する場合に合体され得る。換言すると、キャッシュラインのAC状態を活用することによって、アトミックRMWアクセスは、キャッシュライン内で合体され、マルチモジュール、マルチキャストメモリローカル処理コマンドによって更に合体され得る。
【0052】
いくつかの例では、システムメモリ内のこの配置を決定するアドレスビットは、潜在的に合体され得るラインをキャッシュし得るキャッシュインデックスを示し、これらの一部又は全ては、メモリローカル処理コマンドの発行直前に検索され得る。例えば、DRAM列インデックス及びメモリチャネルインデックスを決定するために使用されるアドレスビットが、キャッシュセットインデックスを決定するために使用されるアドレスビットと完全に重複する場合、合体され得る任意のキャッシュラインは、同一キャッシュセットに収まることが保証される。したがって、トリガイベントが発生した場合に、当該キャッシュセットのみを検査する必要がある。
【0053】
いくつかの例では、トリガイベントは、キャッシュラインの追い出し(エビクト)であり、したがって、AC状態のあるキャッシュラインが追い出される場合に、キャッシュコントローラは、同一AC状態の他のキャッシュラインについてキャッシュを検索し、それらのキャッシュラインが合体され得るかどうかを判定する。追加的に又は代替的に、いくつかの例では、トリガイベントは、例えば、(キャッシュセットがアクセス済みであるために)いくつかの閾値数の合体され得るアトミックRMWアクセスが存在すると判定され得る場合、AC状態の新しいキャッシュラインの割り当てであり得る。
【0054】
更なる説明のために、
図9は、本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる例示的な方法を説明するフロー図を示している。
図8の例示的な方法と同様に、
図9の例示的な方法は、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定すること(210)と、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させること(220)と、を含み、判定すること(210)は、異なるメモリモジュールへの対称アクセスに基づいて、第1のアトミックメモリアクセスが第2のアトミックメモリアクセスと合体され得るか否かを判定すること(710)を含み、判定すること(710)は、第1のキャッシュラインが第2のキャッシュラインと合体され得るか否かを判定すること(810)を含む。
【0055】
図9の実施例では、第1のキャッシュラインが第2のキャッシュラインと合体され得るか否かを判定すること(810)は、合体の候補であるキャッシュラインを追跡すること(910)を含む。いくつかの例では、合体の候補であるキャッシュラインを追跡すること(910)は、キャッシュコントローラが、合体の可能性を有するAC状態のキャッシュラインを追跡するための構造を維持することによって実行される。いくつかの実施形態では、構造内の各エントリは、単一の列インデックスとチャネルとの組み合わせに対応する。そのような実施形態では、構造は、キャッシュ内の対応するACキャッシュラインを検索するのに必要なビットのみを含み得る。例えば、キャッシュ内でキャッシュラインがAC状態で割り当てられる場合にはいつでも、エントリを挿入又は更新することができ、ACキャッシュラインが削除される場合にはいつでも、エントリを削除又は更新することができる。マルチモジュール合体は、機能に影響を与えない最適化であり、したがって、キャッシュ内の全てのACキャッシュラインを追跡する必要がないので、いくつかの実施形態では、最近アクセスされたエントリ、頻繁にアクセスされたエントリ、又は、より多くのACキャッシュラインを追跡するエントリを優先する置換ポリシーが使用される。
【0056】
更なる説明のために、
図10は、本開示のいくつかの実施形態による、メモリローカルコンピューティングのためのアトミックメモリ操作を動的に合体させる例示的な方法を説明するフロー図を示している。
図7の例示的な方法と同様に、
図10の例示的な方法は、第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定すること(210)と、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させること(220)であって、異なるメモリモジュールへの対称アクセスに基づいて、第1のアトミックメモリアクセスが第2のアトミックメモリアクセスと合体され得るか否かを判定すること(710)を含む、ことと、を含む。
【0057】
図10の例示的な方法では、メモリローカル計算ユニットがメモリローカル処理を要求する前に、第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとをキャッシュ内で合体させること(220)は、マルチモジュールメモリローカル処理コマンド(例えば、マルチキャストPIMコマンド)を使用して第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとを合体させること(1010)を含む。いくつかの例では、マルチモジュールメモリローカル処理コマンドを使用して第1のアトミックメモリアクセスと第2のアトミックメモリアクセスとを合体させること(1010)は、キャッシュコントローラが、両方のアトミックメモリアクセスに共通の少なくとも1つのメモリローカル処理操作(例えば、PIM操作)のためのマルチキャストメモリローカル処理コマンドを生成することによって実行される。例えば、2つ以上のアトミックメモリアクセスが同一メモリローカル処理操作(例えば、ロード、ストア、atomicAdd、アトミック乗算等)を含む場合に、これらのメモリローカル処理操作は、複数のメモリローカル処理ユニットにマルチキャストされる単一の合体メモリローカル処理コマンドに合体され得る。バンクローカルPIMユニットが利用される2つのアトミックRMWアクセスのための例示的なPIMコードセグメントを検討する。各アトミックRMWアクセスは、「ロード+加算」操作及び「ストア」操作に分解され得る。この例では、1つのロード+加算操作が、第1のオペランドとデータとの加算の結果を第1のDRAMバンクのregister1内の記憶場所Aに記憶し(例えば、「PIM Ld+add R1←[a]+op1」)、別の1つのロード+加算操作は、第2のオペランドとデータとの加算の結果を第2のDRAMバンクのregister1内の記憶場所Bに記憶する(例えば、「PIM Ld+add R1←[b]+op2」)と仮定する。第1のDRAMバンク内のregister1からの結果は、次いで、第1のDRAMバンク内の記憶場所Aに記憶される(例えば、「PIM St R1→[a]」)、第2のDRAMバンク内のレジスタ1からの結果は、次いで、記憶場所Bに記憶される(例えば、「PIM St R1→[b]」)。したがって、コードセグメントは、4つのコマンドスロット及び2つのデータスロットを(オペランドに)使用する。2つの「ロード+加算」操作は、データバスを介した異なるオペランドの送信を各要素が必要とするので、合体することができない。しかしながら、記憶場所A及び記憶場所Bが同一メモリチャネル内にあり、DRAM行内の同一列オフセットを使用すると仮定すると、「ストア」操作は、第1のDRAMバンク内のPIMユニット及び第2のDRAMバンク内のPIMユニットによって受信されるマルチモジュールコマンドに合体され得る(例えば、「PIM St→[a|b]」)。合体されたPIMコマンドは、1つのコマンドスロットを占有し、したがって、同数のストア操作を実行するのに必要なコマンドスロットの数を低減させる。PIMアーキテクチャに対する更なる最適化は、これらの合体された操作をより効率的にするか、又は、合体のより柔軟な合体を可能にすることができる(例えば、A及びBは同一列に対するものである必要はない)。
【0058】
マルチキャスト操作への合体は、要素ごとに異なるオペランドの使用を必要としないマルチキャスト操作についても有益であり得る。例えば、いくつかのグラフアルゴリズムは、RMW(例えば、幅優先探索、グラフ彩色(graph coloring))を実行するのではなく、同一値を隣接ノードのスパースセットに記憶する。そのような操作は、バンクローカル計算ユニット(すなわち、バンクローカルPIMユニット)によって可能となるマルチモジュール操作を利用して、メモリ帯域幅を改善することができる。これらの操作を動的に合体させるためには、影響を受けるラインを識別する情報と共にコマンドのタイプを追跡し、次いで、メモリローカル処理コマンドマルチキャストを介して任意の合体されたターゲットに対して同一コマンドを並列に適用することのみが必要である。各メモリモジュールは、異なるマスクを必要とし得るが、これらは、メモリローカル計算ユニットの近くに事前に記憶され得る。
【0059】
更に、マルチモジュール合体の可能性を使用して、キャッシュライン合体について上述した判定方法を拡張することによって、アトミック操作の処理法を通知することもできる。アトミック操作がキャッシュでミスする場合に、キャッシュはメトリック情報を使用して、マルチモジュール合体が生じそうか否か、したがって、ACキャッシュラインの割り当てが有益でありそうか否かを概ね把握することができる。例えば、キャッシュコントローラは、着信アトミック操作と合体され得る他のACキャッシュラインについてキャッシュを検査し得る。そのようなキャッシュラインが存在する場合、マルチモジュール合体可能性の可能性が存在する。別の例では、キャッシュコントローラは、最近動的に合体されたメモリローカル処理操作について合体されたラインの平均数を追跡し得る。この数が多い場合、マルチモジュール合体の可能性が高くなる。
【0060】
同様に、キャッシュコントローラが、上記の条件の何れかに基づいてアトミックミスにACキャッシュラインを使用すべきでないと判定した場合、キャッシュコントローラは、アトミック操作をメモリローカル計算ユニットにおいて実行すべきか、キャッシュ内で実行すべきかを決定する必要がある。キャッシュ内に複数のACキャッシュラインが存在し、これらのACキャッシュラインを着信要求と合体させることができ、アトミックスに対する局所性及び再利用が稀であると予想される場合、メモリローカル計算ユニットに操作をオフロードすることは、より有益である可能性が高い。合体され得るACキャッシュラインがキャッシュ内に存在せず、アトミック局所性/再利用の可能性が高いと予想される場合、キャッシュラインを割り当て、キャッシュ内でアトミック操作を実行することが好ましい。これらの条件は、関連キャッシュイベントの頻度及び/又は占有率を追跡するための単純なカウンタを用いる等の複数の方法で計算され得る。
【0061】
上記を考慮して、当業者の読者は、本開示によるいくつかの実施形態が多数の利点を提供することを理解するであろう。いくつかの実施形態は、キャッシュ局所性が利用可能である場合に、キャッシュ局所性を動的に利用してから、(例えば、PIMユニットによる)メモリローカル処理のための操作を送信し得る。これらの実施形態は、より広い合体ウィンドウを提供し、キャッシュ内で操作を無期限に遅延させることができ、より多くの合体機会をもたらす。更に、(メモリコントローラ内のキューとは対照的に)ターゲットアドレスに基づいたキャッシュの静的及び決定論的インデックス付けにより、いくつかの実施形態は、ターゲットアドレスに基づいた合体可能操作の追跡をより容易にし、マルチモジュール、マルチキャストメモリローカル処理コマンドを使用するためのより単純且つより効率的な追跡機構に役立つ。更に、いくつかの実施形態によって導入されるハードウェア及びキャッシュ論理のオーバーヘッドは最小限である。
【0062】
いくつかの実施形態は、メモリローカルコンピューティングが効率的にアトミック操作に使用されることを可能にし、ある範囲の重要な作業負荷(例えば、グラフ分析、スパース行列代数、機械学習等)の性能を改善することができる。そのようなアプリケーションは、利用可能な場合にはキャッシュ局所性を活用し、合体機会を動的に識別して、より効率的なマルチモジュールメモリローカル処理操作を可能にし得る。
【0063】
いくつかの実施形態は、システム、装置、方法及び/又は論理回路であり得る。本開示のコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(instruction-set-architecture、ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++等のオブジェクト配向プログラミング言語、並びに、「C」プログラミング言語又は同様のプログラミング言語等の従来の手続き型プログラミング言語等の1つ以上のプログラミング言語の任意の組み合わせで書き込まれたソースコード若しくはオブジェクトコードの何れかであり得る。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)又はプログラマブル論理アレイ(programmable logic array、PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
【0064】
本開示の態様は、本開示のいくつかの実施形態による方法、装置(システム)及び論理回路のフロー図及び/又はブロック図を参照して本明細書に記載されている。フロー図及び/又はブロック図の各ブロック、並びに、フロー図及び/又はブロック図におけるブロックの組み合わせは、論理回路によって実施され得ることが理解されよう。
【0065】
論理回路は、プロセッサ、他のプログラマブルデータ処理装置又は他のデバイスに実装され、コンピュータ実行プロセスを生成するために、プロセッサ、他のプログラマブル装置又は他のデバイス上で実行される一連の動作ステップを行わせることができ、そのため、コンピュータ、他のプログラマブル装置又は他のデバイス上で実行される命令は、フロー図及び/又はブロック図のブロックに指定される機能/行為を実施する。
【0066】
図中のフロー図及びブロック図は、本開示の様々な実施形態によるシステム、方法及び論理回路の可能な実施形態のアーキテクチャ、機能及び動作を示す。これに関して、フロー図又はブロック図の各ブロックは、指定された論理機能を実施するための1つ以上の実行可能命令を含む、命令のモジュール、セグメント又は部分を表すことができる。いくつかの代替的な実施形態では、ブロックに記載されている機能は、図に記載された順序から外れて発生する場合がある。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行され得るか、又は、ブロックは、関与する機能に応じて、逆の順序で実行され得る。ブロック図及び/又はフロー図の各ブロック、並びに、ブロック図及び/又はフロー図におけるブロックの組み合わせは、指定された機能若しくは行為を実行するか、又は、専用ハードウェアとコンピュータ命令との組み合わせを行う、専用ハードウェアベースのシステムによって実施することができることにも留意されたい。
【0067】
本開示は、その実施形態を参照して具体的に示され、説明されてきたが、以下の特許請求の範囲の趣旨及び範囲から逸脱することなく、形態及び詳細において様々な変更が行われ得ることを理解されたい。したがって、本明細書に記載された実施形態は、説明のためのものに過ぎず、本発明を限定するものではない。本開示は、詳細な説明ではなく添付の特許請求の範囲によって定義され、その範囲内の全ての差異が本発明に含まれると解釈されるべきである。
【手続補正書】
【提出日】2024-02-20
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
メモリローカルコンピューティングのためにアトミックメモリ操作を動的に合体させる方法であって、
第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することと、
メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることと、を含む、
方法。
【請求項2】
前記第1のアトミックメモリアクセスが合体の候補であると判定することと、
メモリからデータをロードすることなく、特殊状態のキャッシュラインを割り当てることと、
前記第1のアトミックメモリアクセスのオペランドを、前記第1のアトミックメモリアクセスがターゲットとする前記キャッシュライン内の場所に記憶することと、を含み、
前記第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、
前記第2のアトミックメモリアクセスが前記第1のアトミックメモリアクセスとの合体の候補であると判定することを含む、
請求項1の方法。
【請求項3】
前記メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、
前記第2のアトミックメモリアクセスのオペランドを使用して、前記第2のアトミックメモリアクセスがターゲットとする前記キャッシュライン内の場所のデータに対して前記第2のアトミックメモリアクセスの操作を実行することによって、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとを合体させることを含む、
請求項2の方法。
【請求項4】
トリガイベントに応じて、前記第1のアトミックメモリアクセス及び前記第2のアトミックメモリアクセスのための1つ以上のメモリローカル処理コマンドをメモリコントローラに送信することを含む、
請求項3の方法。
【請求項5】
1つ以上のメトリックに基づいて、前記第1のアトミックメモリアクセスに前記特殊状態のキャッシュラインを割り当てるか否かを判定することを含む、
請求項2の方法。
【請求項6】
前記第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、
異なるメモリモジュールへの対称アクセスに基づいて、前記第1のアトミックメモリアクセスが前記第2のアトミックメモリアクセスと合体可能であるか否かを判定することを含む、
請求項1の方法。
【請求項7】
前記異なるメモリモジュールへの対称アクセスに基づいて、前記第1のアトミックメモリアクセスが前記第2のアトミックメモリアクセスと合体可能であるか否かを判定することは、
トリガイベントに応じて、前記第1のアトミックメモリアクセスを含む第1のキャッシュラインが、前記第2のアトミックメモリアクセスを含む第2のキャッシュラインと合体可能であるか否かを判定することであって、前記第1のキャッシュライン及び前記第2のキャッシュラインは特殊キャッシュ状態である、ことを含む、
請求項6の方法。
【請求項8】
前記トリガイベントに応じて、前記第1のアトミックメモリアクセスを含む第1のキャッシュラインが、前記第2のアトミックメモリアクセスを含む第2のキャッシュラインと合体可能であるか否かを判定することであって、前記第1のキャッシュライン及び前記第2のキャッシュラインは特殊キャッシュ状態である、ことは、
合体の候補であるキャッシュラインを追跡することを含む、
請求項7の方法。
【請求項9】
前記メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、
マルチモジュールメモリローカル処理コマンドを使用して、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとを合体させることを含む、
請求項6の方法。
【請求項10】
前記メモリローカル計算ユニットは、プロセッシングインメモリ(PIM)ユニットである、
請求項1の方法。
【請求項11】
メモリローカルコンピューティングのためにアトミックメモリ操作を動的に合体させるためのシステムであって、
少なくとも1つのメモリローカル計算ユニットを含むメモリデバイスと、
コンピューティングデバイスと、を備え、
前記コンピューティングデバイスは、
第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することと、
メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることと、
を行うように構成されている、
システム。
【請求項12】
前記コンピューティングデバイスは、
前記第1のアトミックメモリアクセスが合体の候補であると判定することと、
メモリからデータをロードすることなく、特殊状態のキャッシュラインを割り当てることと、
前記第1のアトミックメモリアクセスのオペランドを、前記第1のアトミックメモリアクセスがターゲットとする前記キャッシュライン内の場所に記憶することと、
を行うように構成されており、
前記第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、
前記第2のアトミックメモリアクセスが前記第1のアトミックメモリアクセスとの合体の候補であると判定することを含み、
前記メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、
前記第2のアトミックメモリアクセスのオペランドを使用して、前記第2のアトミックメモリアクセスがターゲットとする前記キャッシュライン内の場所のデータに対して前記第2のアトミックメモリアクセスの操作を実行することによって、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとを合体させることを含む、
請求項
11のシステム。
【請求項13】
前記第1のアトミックメモリアクセス及び第2のアトミックメモリアクセスが合体の候補であるか否かを判定することは、
異なるメモリモジュールへの対称アクセスに基づいて、前記第1のアトミックメモリアクセスが前記第2のアトミックメモリアクセスと合体可能であるか否かを判定することを含み、
前記メモリローカル計算ユニットがメモリローカル処理を要求する前に、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとをキャッシュ内で合体させることは、
マルチモジュールメモリローカル処理コマンドを使用して、前記第1のアトミックメモリアクセスと前記第2のアトミックメモリアクセスとを合体させることを含む、
請求項
11のシステム。
【国際調査報告】