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

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

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

特表2024-511777メモリ中心メモリ動作とコア中心メモリ動作との間の順序付けを実施するアプローチ
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-15
(54)【発明の名称】メモリ中心メモリ動作とコア中心メモリ動作との間の順序付けを実施するアプローチ
(51)【国際特許分類】
   G06F 9/38 20180101AFI20240308BHJP
   G06F 12/0862 20160101ALI20240308BHJP
   G06F 9/34 20180101ALI20240308BHJP
【FI】
G06F9/38 350X
G06F12/0862 110
G06F9/34 350A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023558136
(86)(22)【出願日】2022-03-30
(85)【翻訳文提出日】2023-10-25
(86)【国際出願番号】 US2022022482
(87)【国際公開番号】W WO2022212458
(87)【国際公開日】2022-10-06
(31)【優先権主張番号】17/219,446
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】シャイジーン アガ
(72)【発明者】
【氏名】ヌワン ジャヤセーナ
(72)【発明者】
【氏名】ジョナサン オルソップ
【テーマコード(参考)】
5B013
5B033
5B205
【Fターム(参考)】
5B013CC01
5B013CC12
5B033BE00
5B033DB01
5B205NN71
5B205UX01
(57)【要約】
「MC-Mem-Ops」と呼ばれるメモリ中心メモリ動作と、「CC-Mem-Ops」と呼ばれるコア中心メモリ動作との間の順序付けは、「IC-フェンス」と呼ばれる中心間フェンスを使用して実施される。IC-フェンスは、順序付けプリミティブ又は順序付け命令によって実装され、順序付けプリミティブ又は順序付け命令は、メモリコントローラ、キャッシュコントローラ等に、IC-フェンスの前に到着するMC-Mem-Ops(又は時にはCC-Mem-Ops)をIC-フェンスの後に再順序付けしないことによって、メモリパイプライン全体及びメモリコントローラにおいて、MC-Mem-Ops及びCC-Mem-Opsの順序付けを実施する。IC-フェンスの処理は、メモリコントローラに、IC-フェンス命令を発行したスレッドに順序付け肯定応答を発行させる。IC-フェンスはコアで追跡され、順序付け肯定応答が受信されると完了したものとして指定される。実施形態は、IC-フェンスと共に使用される場合、低減されたデータ転送及び完了時間で、キャッシュされたCC-Mem-OpsとMC-Mem-Opsとの間の適切な順序付けを提供する完了レベル固有キャッシュフラッシュ動作を含む。
【選択図】図3
【特許請求の範囲】
【請求項1】
プロセッサであって、
順序付けトークンを発行することと、
順序付け肯定応答トークンに応じて、順序付け命令を完了したものとして指定することと、
を行うように構成されている、
プロセッサ。
【請求項2】
前記順序付けトークンは、1つ以上の先行するメモリ動作の完了レベルと同じである、関連付けられた完了レベルを有する、
請求項1のプロセッサ。
【請求項3】
メモリパイプライン内の1つ以上のメモリコンポーネントは、前記順序付けトークンの前のメモリ動作が前記順序付けトークンの後に再順序付けされるのを抑制する、
請求項1のプロセッサ。
【請求項4】
前記順序付けトークンは、メモリパイプライン内の複数のパスにわたって複製される、
請求項1のプロセッサ。
【請求項5】
前記順序付けトークンは、関連付けられた完了レベルを有し、
前記順序付け肯定応答トークンは、前記完了レベルで前記順序付けトークンを処理したメモリコントローラによって発行される、
請求項1のプロセッサ。
【請求項6】
前記順序付け肯定応答トークンは、メモリコントローラが、保留中のメモリ動作を記憶するキューに前記順序付けトークンを記憶したことに応じて、前記メモリコントローラによって発行される、
請求項1のプロセッサ。
【請求項7】
前記順序付け肯定応答トークンは、複製された複数の順序付け肯定応答トークンのうち最後の順序付け肯定応答トークン、又は、前記複製された複数の順序付け肯定応答トークンを表す、マージされた順序付け肯定応答トークンである、
請求項1のプロセッサ。
【請求項8】
前記プロセッサは、
順序付け命令を処理したことに応じて、前記順序付けトークンを発行することと、
前記順序付け命令に関してメモリ動作順序付け制約を実施することと、
を行うように構成されている、
請求項1のプロセッサ。
【請求項9】
前記プロセッサは、前記順序付けトークンを発行する前に、完了ポイントの前のメモリ位置に記憶された更新されたデータを、指定された完了レベルまで記憶させるように構成されている、
請求項1のプロセッサ。
【請求項10】
前記更新されたデータは、1つ以上の前のメモリ動作によって生成されたデータのサブセットである、
請求項9のプロセッサ。
【請求項11】
メモリコントローラであって、
順序付けトークンに基づいて順序付け制約を実施することと、
前記順序付けトークンを発行したプロセッサスレッドに順序付け肯定応答トークンを発行することと、
を行うように構成されている、
メモリコントローラ。
【請求項12】
前記順序付けトークンに基づいて順序付け制約を実施することは、前記順序付けトークンの後に順序付けられた1つ以上のメモリ動作が前記順序付けトークンの前に再順序付けされるのを抑制することを含む、
請求項11のメモリコントローラ。
【請求項13】
前記順序付けトークンに基づいて順序付け制約を実施することは、前記順序付けトークンの前のメモリ動作と同じメモリアドレスに対する、前記順序付けトークンの後に順序付けられた1つ以上のメモリ動作が、前記同じメモリアドレスに対する前記順序付けトークンの前のメモリ動作の前に再順序付けされるのを抑制することを含む、
請求項11のメモリコントローラ。
【請求項14】
前記順序付け肯定応答トークンは、前記順序付けトークンが前記メモリコントローラのための保留中のメモリ動作キューに記憶されていることに応じて、前記順序付けトークンを発行したプロセッサスレッドに対して発行される、
請求項11のメモリコントローラ。
【請求項15】
前記メモリコントローラは、キャッシュコントローラ、メモリ側キャッシュコントローラ又はメインメモリコントローラのうち1つ以上である、
請求項11のメモリコントローラ。
【請求項16】
方法であって、
プロセッサが、順序付けトークンを発行することと、
前記プロセッサが、順序付け肯定応答トークンに応じて、順序付け命令を完了したものとして指定することと、を含む、
方法。
【請求項17】
前記順序付けトークンは、1つ以上の先行するメモリ動作の完了レベルと同じである、関連付けられた完了レベルを有する、
請求項16の方法。
【請求項18】
メモリパイプライン内の1つ以上のメモリコンポーネントは、前記順序付けトークンの前のメモリ動作が前記順序付けトークンの後に再順序付けされるのを抑制する、
請求項16の方法。
【請求項19】
前記順序付けトークンは、メモリパイプライン内の複数のパスにわたって複製される、
請求項16の方法。
【請求項20】
前記順序付けトークンは、関連付けられた完了レベルを有し、
前記順序付け肯定応答トークンは、前記完了レベルで前記順序付けトークンを処理したメモリコントローラによって発行される、
請求項16の方法。
【発明の詳細な説明】
【背景技術】
【0001】
このセクションに記載されているアプローチは、遂行され得るアプローチであるが、必ずしも以前に着想又は遂行されたアプローチではない。したがって、別段の指示がない限り、このセクションに記載されたアプローチの何れも、単にこのセクションに含まれることによって、従来技術として適格であると仮定すべきではない。更に、このセクションに記載されたアプローチの何れも、単にこのセクションに含まれることによって、よく理解されている、日常的である又は従来的であると仮定すべきではない。
【0002】
現代のプロセッサは、マルチスレッド又はマルチプロセッサ/マルチコア実装において問題となり得る、ロード、記憶、及び、読み取り-修正-書き込み等のメモリ動作の順不同実行を引き起こす可能性がある性能最適化を採用している。単純な例では、命令のセットは、第1のスレッドがメモリ位置に記憶された値を更新し、その後、第2のスレッドが、例えば計算において、更新された値を使用することを指定する場合がある。命令の順序付けに基づいて予想される順序で実行される場合、第1のスレッドは、第2のスレッドがメモリ位置に記憶された値を取り出して使用する前に、メモリ位置に記憶された値を更新する。しかしながら、性能最適化は、値が第1のスレッドによって更新される前に第2のスレッドがメモリ位置に記憶された値を使用するようにメモリアクセスを再順序付けし、予期せぬ不正確な結果を引き起こす場合がある。
【0003】
この問題に対処するために、プロセッサは、フェンス命令によって実装される、単にフェンスとしても知られるメモリバリア又はメモリフェンスをサポートし、これは、プロセッサに、フェンス命令の前及び後に発行されるメモリ動作に対する順序付け制約を強制させる。上記の例では、フェンス命令を使用して、第2のスレッドによるメモリ位置へのアクセスが、第1のスレッドによるメモリ位置へのアクセスの前に再順序付けされず、意図された順序を維持することを保証することができる。これらのフェンスは、多くの場合、全ての前のメモリ要求が「コヒーレンスポイント」、すなわち、通信スレッドによって共有されるメモリ階層内のレベルであって、同じアドレスへのアクセス間の順序レベルに到達したことを肯定応答するまで、後続のメモリ要求をブロックすることによって実装される。そのようなメモリ動作及びフェンスは、プロセッサにおいて追跡され、順序付けがプロセッサにおいて実施されるという点で、コア中心(core-centric)である。
【0004】
計算スループットは、メモリ帯域幅よりも速くスケーリングするので、増大する計算容量にデータを供給し続けるために様々な技術が開発されてきた。プロセッシングインメモリ(Processing In Memory、PIM)は、タスクがメモリモジュール内で直接処理できるように、メモリモジュール内に処理能力を組み込む。ダイナミックランダムアクセスメモリ(Dynamic Random-Access Memory、DRAM)のコンテキストでは、例示的なPIM構成は、ベクトル計算素子及びローカルレジスタを含む。このベクトル計算要素及びローカルレジスタにより、メモリモジュールが算術計算等の一部の計算をローカルに実行することが可能になる。これにより、メモリコントローラが、メモリモジュールインターフェースにわたるデータ移動を必要とすることなく、複数のメモリモジュールにおけるローカル計算を並行して起動することが可能になり、これは、特にデータ集約的な作業負荷に対して性能を大幅に改善することができる。
【0005】
フェンスは、インメモリ計算要素によって実行されるメモリ動作に対する順序付け制約を実施するために、プロセッサと同じ方法でメモリ内の計算要素と共に使用され得る。そのようなメモリ動作及びフェンスは、それらがインメモリ計算要素において追跡され、順序付けがインメモリ計算要素において実施されるという点でメモリ中心(memory-centric)である。
【0006】
上述したフェンスに伴う技術的な問題の1つは、それらが、コア中心メモリ動作及びメモリ中心メモリ動作のための順序付け制約をそれぞれ個別に施行するために効果的であるが、それらが、コア中心メモリ動作とメモリ中心メモリ動作との間の順序付けを施行するために不十分であることである。コア中心フェンスは、メモリ中心要求が複数のアドレス並びにニアメモリレジスタにアクセスし、競合する要求が順序付けされなければならないため、それらが同じアドレスをターゲットとしない場合であっても、順序付けがコヒーレンスポイントを超えて保存されることを必要とし得るメモリ中心メモリ動作には不十分である。メモリ中心フェンスは、同じメモリレベル、例えば、メモリ側キャッシュ又はインメモリ計算ユニットで完了するように制約されたメモリ中心メモリ動作及びキャッシュされていないコア中心メモリ動作が、完了ポイントであるメモリレベルで順番に配信されることを保証するだけであるために不十分である。メモリ中心メモリ動作を発行するスレッドを有するコアは、メモリ中心メモリ動作の結果を見る必要がある後続のコア中心メモリ動作の安全なコミットを可能にするために、完了ポイントであるメモリレベルでメモリ中心メモリ動作がいつスケジューリングされたかを認識する必要がある。しかしながら、インメモリ計算ユニット(メモリ側キャッシュ内のものであっても)は、従来のコア中心メモリ動作と同じようにコアに肯定応答を送信せず、コアがメモリ中心メモリ動作の現在のステータスを知らないままにする可能性がある。したがって、メモリ中心メモリ動作とコア中心メモリ動作との間の順序付けをどのように実施するかという技術的問題に対する技術的解決策が必要とされている。
【0007】
実施形態は、添付の図面の図において、限定としてではなく例として示され、同様の符号は同様の要素を指す。
【図面の簡単な説明】
【0008】
図1A】プロセッサ内の2つのスレッドによって実装される例示的な擬似コードを示す図である。
図1B】正確な実行を保証するためのコア中心フェンスを含む例示的な擬似コードを示す図である。
図1C】正確な実行を保証するためのメモリ中心フェンスを含む例示的な擬似コードを示す図である。
図1D】スレッドAの命令に追加されたIC-フェンスを示す図である。
図2A】IC-フェンスを使用して、メモリ中心メモリ動作とコア中心メモリ動作との間の順序付けを実施することを示す図である。
図2B】IC-フェンスを使用して、コア中心メモリ動作とメモリ中心メモリ動作との間の順序付けを実施することを示す図である。
図2C】IC-フェンスを使用して、メモリ中心メモリ動作とメモリ中心メモリ動作との間の順序付けを実施することを示す図である。
図2D】CC-フェンスを使用して、コア中心メモリ動作とコア中心メモリ動作との間の順序付けを実施することを示す図である。
図3】IC-フェンスを使用して、メモリ中心メモリ動作とコア中心メモリ動作との間の順序付けを実施するアプローチを示すフロー図である。
【発明を実施するための形態】
【0009】
以下の説明では、説明のために、実施形態の十分な理解を提供するために、多くの具体的な詳細が記載される。しかしながら、これらの特定の詳細なしに実施形態を実施し得ることが当業者には明らかであろう。他の例では、実施形態を不必要に不明瞭にすることを避けるために、周知の構造及びデバイスがブロック図で示されている。
I.概要
II.IC-フェンスの導入
III.IC-フェンス実装
A.順序付けトークン
B.レベル固有キャッシュフラッシュ
【0010】
(I.概要)
以下で「MC-Mem-Ops」と呼ばれるメモリ中心メモリ動作と、以下で「CC-Mem-Ops」と呼ばれるコア中心メモリ動作との間の順序付けを実施することができないという技術的問題に対する技術的解決策は、以下で「IC-フェンス」と呼ばれる中心間フェンスを使用する。IC-フェンスは、本明細書では順序付け命令とも呼ばれる順序付けプリミティブによって実装され、順序付けプリミティブは、本明細書では「メモリコントローラ」と呼ばれるメモリコントローラ、キャッシュコントローラ等に、IC-フェンスの前に到着するMC-Mem-Ops(又は時にはCC-Mem-Ops)をIC-フェンスの後に再順序付けしないことによって、メモリパイプライン全体及びメモリコントローラにおいてMC-Mem-Ops及びCC-Mem-Opsの順序付けを実施させる。また、IC-フェンスは、IC-フェンス命令を発行したスレッドに順序付け肯定応答を発行するメモリコントローラを含む確認機構を含む。IC-フェンスは、コアにおいて追跡され、順序付け肯定応答がメモリコントローラから受信された場合に完了したものとして指定される。技術的解決策は、任意の数のコア及び任意のタイプのメモリコントローラを有する任意のタイプのプロセッサに適用可能である。
【0011】
技術的解決策は、正確さを保ちながら、コア中心フェンス及びメモリ中心フェンスのみを使用するよりも細かい粒度でCC-Mem-Opコード領域とMC-Mem-Opコード領域との混合に対応する。これは、完了肯定応答が各MC-Mem-Opのコアスレッドに送信されることを必要とせずに、メモリ側処理コンポーネントがより効果的に使用されることを可能にし、これは、効率を改善し、バストラフィックを低減する。実施形態は、従来のキャッシュフラッシュと比較して低減されたデータ転送及び完了時間で、キャッシュされたCC-Mem-OpsとMC-Mem-Opsとの間の適切な順序付けを提供する完了レベル固有キャッシュフラッシュ動作を含む。本明細書で使用される場合、「完了レベル」という用語は、通信スレッドによって共有されるメモリシステム内のポイントを指し、そのポイントより下では、全ての必要なCC-MC順序付け、例えば、メモリコントローラによってターゲットにされたアドレスと競合するMCアクセスとCCアクセスとの間の順序付けが保存されることが保証される。
【0012】
(II.IC-フェンスの導入)
図1Aは、プロセッサ内の2つのスレッドによって実装される例示的な擬似コードを示す図である。この例では、スレッドAは、yの値を更新し、更新されたyの値を使用してxの値を更新し、次いで、フラグを1の値に設定して、xの値が更新されており、使用される準備ができていることを示す。フラグの初期値が0であると仮定すると、スレッドBは、フラグがスレッドAによって1の値に設定されるまでスピンすると予想される。次いで、スレッドBは、更新されたxの値を取り出す。
【0013】
プロセッサに対する性能最適化は、メモリアクセスを再順序付けし、スレッドBにxの古い値を取り出させることができる。例えば、性能最適化は、スレッドBの「val=x」命令を「while(!flag)」の前に実行させることができ、この命令は、スレッドAがいつxの値を更新したかに応じて、スレッドBにxの古い値を検索させ得る。
【0014】
図1Bは、正確な実行を保証するためのコア中心フェンス(CC-フェンス)を含む例示的な擬似コードを示す図である。図1Bの擬似コードは、スレッドAにおいて「x=x+y」命令の後にCC-フェンスが追加され、スレッドBにおいて「while(!flag)」命令の後に別のCC-フェンスが追加されていることを除いて、図1Aと同じである。スレッドA内のCC-フェンスは、フラグの設定(「flag=1」)がCC-フェンスの前に再順序付けされることを防止する。これは、スレッドAによるフラグへの書込みが、スレッドAによって行われたx及びyへの更新が他のスレッド、具体的には本実施例ではスレッドBにとって可視であることが保証される時点でのみ、他のスレッドにとって可視にされることを保証する。同様に、スレッドB内のCC-フェンスは、xの値の読み取り(「val=x」)がCC-フェンスの前に再順序付けされないことを保証する。これにより、xの値の読み取りが、設定されたフラグの読み取り後に行われることが保証される。
【0015】
図1Cは、正確な実行を保証するためのメモリ中心フェンス(MC-フェンス)を含む例示的な擬似コードを示す図である。図1Cの擬似コードは、y及びxの計算が、コアプロセッサ上の計算負荷を低減し、メモリバストラフィックを低減するために、MC-Mem-Opsを使用してメモリ内のPIMユニットにオフロードされていることを除いて、図1Aと同じである。しかしながら、特定の状況では、これは、MC-Mem-Ops(及び任意のキャッシュされていないCC-Mem-Ops)が順番に実行されることを確実にする新しい順序付け要件につながる。図1Cに示す例では、スレッドBによって読み取られた場合にxが正しい値であることを保証するために、yへのPIM更新がxへのPIM更新に先行しなければならない。
【0016】
CC-フェンスは、メモリ計算ユニットにおいて順序付けを実施するのに不十分であるため、MC-フェンスは、「PIM:y=y+10」命令と「PIM:x=x+y」命令との間のスレッドAのコードに挿入されるメモリ中心順序付けプリミティブ(MC-OPrim)によって実装される。メモリ中心順序付けプリミティブは、2020年3月3日に出願された「Lightweight Memory Ordering Primitives」と題する米国特許出願第16/808,346号に記載されており、その全ての内容は、あらゆる目的のためにその全体が参照により本明細書に組み込まれる。MC-OPrimは、メモリへの途中で順序付けを維持するために、コアからメモリへメモリパイプを流れる。yに対するPIM更新とxに対するPIM更新との間のMC-フェンスは、メモリでの実行中に命令が適切に順序付けられることを保証する。この順序付けはメモリにおいて実施されるため、MC-OPrimは、コアによって追跡されず、コアが他の命令を処理することを可能にするため、MC-Mem-Opsの同じ「ファイア・アンド・フォーゲット(fire and forget)」セマンティクスに従う。図1Bの例のように、図1Cでは、スレッドB内のCC-フェンスは、xの値の読み取り(「val=x」)がCC-フェンスの前に再順序付けされないことを保証する。
【0017】
図1Cの例が示すように、CC-フェンス及びMC-フェンスが利用可能であっても、CC-Mem-Op及びMC-Mem-Opの混合は、これらの既存の解決策の何れも要求される順序付けを提供するのに適切でないために困難である。具体的には、y及びxに対する更新は、フラグの値を1に更新するためのスレッドA内のCC-Mem-Op、すなわち命令「flag=1」がスレッドBにとって可視になる前に、完了しなければならないか、又は、少なくとも完了しているように見えなければならない。CC-フェンスは、コヒーレンスポイントを超えるMC-Mem-Opの順序付けを強制しないため、その完了レベルがコヒーレンスポイントを超えるMC-Mem-Opには不適切である。MC-フェンスは、同じメモリレベルで完了するように結合されたMC-Mem-Op及びキャッシュされていないCC-Mem-Opが、完了ポイントであるメモリレベルで順番に配信されることを保証するだけであるために不適切である。
【0018】
図1Cでは、コアは、スレッドAの「flag=1」命令の安全なコミットを可能にするために、y及びxの値を更新するためのMC-Mem-Opsが完了時点でメモリコントローラにおいていつスケジュールされたかを認識する必要がある。しかしながら、y及びxの値を更新するPIM実行ユニットは、従来のCC-Mem-Opsと同じ方法でスレッドAを実行するコアに肯定応答を送信せず、したがって、コアは、これらのMC-Mem-Opsのステータスを認識せず、それらがいつスケジュールされたかを知らない。これらの制限は、スレッドA及びスレッドBのコード領域がより粗い粒度で実行されることを必要とする。
【0019】
一実施形態によれば、この技術的問題は、CC-Mem-OpsとMC-Mem-Opsとの間の順序付けを提供するためのIC-フェンスの使用を含む技術的解決策によって対処される。図1Dは、スレッドAの命令に追加されたIC-フェンスを示す図である。より具体的には、IC-フェンスは、フラグを1に更新する前に、すなわち「flag=1」命令の前に、スレッドAの命令に追加される。IC-フェンスは、メモリコントローラにおいてMC-Mem-Opsの順序付けを実施する順序付けプリミティブ又は順序付け命令によって実装される。また、IC-フェンスの処理は、メモリコントローラに、IC-フェンス命令を発行したスレッドに肯定応答又は確認を発行させる。図1Dの例では、スレッドAは、それぞれ「PIM:y=y+10」及び「PIM:x=x+y」命令を介してy及びxの値を更新するためにIC-フェンスに先行するMC-Mem-Opsが、対応するメモリコントローラによってスケジュールされたという確認を受信する。スレッドAは、確認が受信されるまで、少なくとも非投機的ベースで更なる命令を処理するのを待つ。これは、各MC-Mem-Opのためのコアスレッドに完了肯定応答が送信されることを必要とせずに、正確性を保ちながら、コア中心フェンス及びメモリ中心フェンスのみを使用するよりも細かい粒度でのCC-Mem-Op命令とMC-Mem-Op命令との混合を可能にする。
【0020】
(III.IC-フェンス実装)
図2A図2Dは、コア中心メモリ動作とメモリ中心メモリ動作との間に生じ得る4つの可能な中心間順序付けを示し、その逆も同様である。これらの例では、MC-Mem-Opは、1つ以上のメモリ中心メモリ動作を指し、CC-Mem-Opは、任意の数及びタイプの1つ以上のコア中心メモリ動作を指す。
【0021】
図2A及び図2Cでは、MC-Mem-OpsとCC-Mem-Opsとの間、及び、MC-Mem-OpsとMC-Mem-Opsとの間の順序付けは、それぞれ、スレッドA内のIC-フェンス及びスレッドB内のCC-フェンスを使用して達成される。これらの例では、IC-フェンスは、少なくとも非投機的に、次のメモリ動作に進む前にMC-Mem-Opsがスケジュールされたという肯定応答を発行コアがメモリコントローラから受信することを保証する。
【0022】
図2Bでは、CC-Mem-OpsとMC-Mem-Opsとの間の順序付けは、以下でより詳細に説明されるレベル固有(LS)キャッシュフラッシュ、IC-フェンス及びCC-フェンスを使用して達成される。最後に、図2Dにおいて、CC-Mem-OpとCC-Mem-Opとの間の順序付けは、CC-フェンスを使用して達成され、これは、コアが、CC-Mem-Opの第1のセットがメモリコントローラにおいていつスケジュールされたかを認識し、次いで、CC-Mem-Opの第2のセットに進むことができるため、このシナリオに十分である。また、CC-フェンスは、完了レベルがコヒーレンスポイントの前であるMC-Mem-Opの適切な順序付けを保証するのに十分であり、その理由は、そのような動作が、低コストでコアに肯定応答を送信するように構成され得るからである。例えば、MC-Mem-Opsは、コヒーレンスポイントの前にキャッシュにおいて実行されてもよい。
【0023】
図2A、2C、2Dのステップ3、4及び図2Bのステップ4、5におけるスレッド間同期(CC-Mem-Op同期)は、1つ以上のコア中心メモリ動作を使用して達成されると仮定される。スレッド間同期は、1つのスレッドがメモリ動作のセットを完了したことを別のスレッドにシグナリングすることを可能にする任意の機構によって実行され得る。例えば、図2Aのステップ3のCC-Mem-Op-Syncにおいて、スレッドAは、ステップ1でMC-Mem-Opを完了したことをスレッドBに知らせる。CC-Mem-Op-syncの1つの非限定的な例は、図1A図1Dに示され、本明細書で上述されたようなフラグの使用、すなわち、スレッドAにおいてフラグを設定し、スレッドBにおいてフラグを読み取ることである。
【0024】
IC-フェンスは、説明のために順序付けプリミティブ又は命令として実装されるコンテキストで本明細書に記載されるが、実施形態はこの例に限定されず、IC-フェンスは、memfence、waitcnt、atomic LD/ST/RMW等の既存の同期命令に付加された新しいセマンティックによって実装されてもよい。
【0025】
IC-フェンス命令は、例えば、メモリ側キャッシュ、DRAM内PIM等において、コヒーレンスポイントを超える関連付けられた完了レベルを有する。完了レベルは、例えば、命令パラメータ値で指定され得る。完了レベルは、英数字値やコード等を介して指定することができる。ソフトウェア開発者は、IC-フェンス命令の完了レベルを、順序付けられる必要がある先行するメモリ動作の完了レベルであるように指定することができる。例えば、図1Dにおいて、IC-フェンス命令は、y及びxをそれぞれ更新するための先行する2つのPIMコマンド、例えば、メモリ側キャッシュ又はDRAMの完了レベルである完了レベルを指定し得る。
【0026】
一実施形態によれば、各IC-フェンス命令は、IC-フェンス命令に先行するメモリ動作がIC-フェンス命令に関連付けられた完了レベルでスケジュールされたことを確認する1つ以上の順序付け肯定応答が発行コアで受信されるまで、発行コアで追跡される。次いで、IC-フェンスは完了したと見なされ、それに応じてコアにおいて指定され、例えば、マークされ、コアがCC-Mem-Op同期を進めることを可能にする。他のCC-Mem-Op及び/又はCC-フェンスを追跡するために使用される同じ機構がIC-フェンス命令と共に使用され得る。
【0027】
完了レベルでは、メモリコントローラは、プログラム競合順序でIC-フェンスの後に順序付けられた任意のメモリ動作が、メモリへのパス上でIC-フェンスの前に順序付けられた別のメモリ動作をバイパスし得ないことを保証する。例えば、一実施形態によれば、メモリコントローラは、IC-フェンス命令の前に順序付けられた命令と同じアドレスにアクセスするIC-フェンス命令の後に順序付けられたメモリ動作が、IC-フェンス命令の前に再順序付けされないことを保証する。
【0028】
(A.順序付けトークン)
一実施形態によれば、順序付けトークンは、メモリパイプライン内のコンポーネントにおいてメモリ動作の順序付けを実施し、完了レベルにおける1つ以上のメモリコントローラに順序付け肯定応答トークンを発行させ、コアによってIC-フェンスを追跡させるために使用される。順序付けトークンは、英数字又は文字列やコード等の任意のタイプのデータによって実装することができる。
【0029】
IC-フェンスが、キャッシュされていないMC-Mem-Mem-OpsとキャッシュされていないCC-Mem-Ops(図2A)との間、又は、キャッシュされていないMC-Mem-Ops(図2C)とIC-フェンス命令との間の順序付けを提供するために使用され、IC-フェンス命令がコアC1によって発行される場合に、順序付けトークンT1は、IC-フェンス命令によって指定され、メモリパイプラインに挿入される完了レベル、例えば、メモリ側キャッシュ、DRAM PIM等でタグ付けされる。例えば、順序付けトークンT1のメタデータは、IC-フェンス命令からの完了レベルを指定することができる。順序付けトークンT1は、順序付けトークンが完了レベルに到達するまで、順序付けることを意図されたコアC1からの任意の前のメモリ動作と同じメモリパイプラインを流れる。例えば、IC-フェンス命令が前のMC-Mem-Ops(図2A図2C)を順序付けするように定義され、MC-Mem-Opsがキャッシュをバイパスする場合に、順序付けトークンT1もキャッシュをバイパスし、MC-Mem-Opsの完了レベルに流れる。一実施形態によれば、順序付けトークンT1は、完了レベル未満に流れない。例えば、完了レベルがメモリ側キャッシュである場合、順序付けトークンT1は、メモリ側キャッシュを通過してメメモリ内に流れない。
【0030】
メモリパイプライン全体にわたって、キャッシュコントローラ、メモリ側キャッシュコントローラ、メモリコントローラ、例えばメインメモリコントローラ等のメモリコンポーネントは、順序付けトークンT1の前のメモリ動作が、例えば再順序付けのために順序付けトークンT1に後れを取らないように、メモリ動作の順序付けを保証する。一実施形態によれば、メモリコンポーネントの処理ロジックは、順序付けトークンを認識し、順序付けトークンT1に関する上述した順序付けを防止する順序付け制約を実施するように構成される。IC-フェンス(メモリ側キャッシュの複数のスライス又は複数のメモリコントローラ)に関連付けられた完了レベルへのパスダイバーシティ、すなわち、複数のパスを使用するアーキテクチャでは、順序付けトークンT1は、これらのパスの各々にわたって複製される。例えば、メモリパイプライン分岐ポイントにおけるコンポーネントは、順序付けトークンT1を複製するように構成され得る。
【0031】
一実施形態によれば、パスダイバーシティのために順序付けトークンを複製することに起因するネットワークトラフィックは、ステータステーブルを使用して低減される。パス分岐ポイントにおいて、ステータステーブルは、分岐ポイントを通過したメモリ中心動作のタイプを追跡する。メモリ中心動作が、同じコアからの最新のIC-フェンス動作と同じタイプの発行コアからの特定のパス上で発行されていない場合、順序付けトークンT1は、特定のパス上で複製されず、代わりに、暗黙的な順序付け肯定応答トークンT2が、特定のパスに対して生成される。これは、必要とされる可能性が低い順序付けトークンT1を発行することを回避し、それによって、ネットワークトラフィックを低減する。ステータステーブルは、順序付け肯定応答トークンT2が受信された場合にリセットされてもよい。
【0032】
順序付けトークンT1、及び、順序付けトークンT1の任意の複製されたバージョンが、順序付けトークンT1に関連付けられた完了レベルに到達すると、順序付けトークンT1は、メモリコントローラキュー等のように、完了レベルで保留中のメモリ動作を追跡する構造内でキューに入れられる。一実施形態によれば、メモリコントローラは、例えば、順序付けトークンT1のメタデータを調べることによって、順序付けトークンT1の完了レベルを使用して、順序付けトークンが完了レベルに到達したかどうかを判定する。順序付けトークンT1は、完了レベルを超えてメモリパイプライン内のコンポーネントに提供されない。例えば、メモリ側キャッシュの関連付けられた完了レベルを有する順序付けトークンの場合、順序付けトークンはメインメモリコントローラに提供されない。
【0033】
複数のバンクキュー等のような、複数のそのような構造が存在する場合、順序付けトークンT1は、これらの構造の各々において複製される。順序付けトークンT1に先行するメモリ動作に関して、順序付けトークンT1の後のメモリ動作が順序付けトークンT1の前に再順序付けされないことを保証することによって、これらの構造に対して実行されるメモリ動作の任意の再順序付けは、順序付けトークンT1の順序付けを保存する。例えば、一実施形態によれば、メモリコントローラは、順序付けトークンT1の前に順序付けられた命令と同じアドレスにアクセスする順序付けトークンT1の後に順序付けられたメモリ動作が順序付けトークンT1の前に再順序付けされないことを保証する。これは、マルチキャストPIM動作のような複数のアドレスにわたる動作に対してマスクされたアドレス比較を実行することを含んでもよい。特定のメモリパイプラインアーキテクチャがエイリアシングをサポートし、アクセスがメモリへの途中で異なる経路を横断する場合、例えば、コア中心動作及びメモリ中心動作のための個別のキューがある場合、一実施形態によれば、順序付けトークンを全ての可能な経路に沿って伝搬させ、順序付けトークンがキューの先頭に到達した場合にキューをブロックすることによって、再順序付けが防止される。この状況では、キューは、関連付けられた再順序付けトークンが、このキューとエイリアスする可能性がある動作を含む任意の他のキュー(複数可)の先頭に達するまでブロックされる。
【0034】
順序付けトークンT1が完了レベルでキューに入れられると、順序付け肯定応答トークンT2が発行コアに送信される。例えば、完了レベルのメモリコントローラは、順序付けトークンT1を、保留中のメモリ動作を記憶するキューに記憶し、次に、順序付け肯定応答トークンT2をコアC1に発行する。一実施形態によれば、パスダイバーシティの場合、各マージポイントにおいて、順序確認応答トークンT2は、メモリコントローラからコアへのパス上でマージされる。
【0035】
IC-フェンス命令は、完了レベルまでの全てのパスから順序付け肯定応答トークンT2を受信した場合、又は、最後のマージされた順序付け肯定応答トークンT2トークンがコアC1によって受信された場合の何れかで完了したと見なされる。いくつかの実施形態では、静的な数のパスがあり、コアは、全てのパスから肯定応答トークンT2を受信するのを待つ。マージされた肯定応答トークンT2は、コアC1に最も近い分岐ポイントにおいて最終的なマージされた肯定応答トークンT2が生成されるまで、メモリパイプライン中の各分岐ポイントにおいて生成され得る。マージされた順序付け肯定応答トークンT2は、全てのパスからの順序付け肯定応答トークンT2を表す。コアC1が肯定応答トークンT2の全て又は最後のマージされた肯定応答トークンT2の何れかを受信すると、コアC1は、IC-フェンス命令を完了したものとして指定し、後続のメモリ動作をコミットし続ける。
【0036】
一実施形態によれば、順序付け肯定応答トークンは、IC-フェンス命令を識別して、順序付け肯定応答トークンが受信された場合に何れのIC-フェンス命令を完了としたものとして指定することができるかをコアが知ることを可能にする。これは、特定の実施形態に応じて変動し得る様々な方法で達成することができる。一実施形態によれば、各順序付けトークンは、対応するIC-フェンス命令を識別する命令識別データを含む。命令識別データは、IC-フェンス命令を識別するために使用され得る、番号、英数字コード等の任意のタイプのデータ又は基準であり得る。順序付け肯定応答トークンを発行するメモリコントローラは、命令識別データを順序付け肯定応答トークン内に、例えば、順序付け肯定応答トークンのメタデータ内に含める。次に、コアは、順序付け肯定応答トークン内の命令識別データを使用して、IC-フェンス命令を完了したものとして指定する。先の例では、コアC1が順序付けトークンT1を生成する場合、コアC1は、順序付けトークンT1又はそのメタデータに、特定のIC-フェンス命令を識別する命令識別データを含める。順序付けトークンT1の完了レベルにある特定のメモリコントローラが、順序付けトークンT1をその保留中のメモリ動作キューに記憶し、順序付け肯定応答トークンT2を生成する場合、特定のメモリコントローラは、順序付け肯定応答トークンT2内の順序付けトークンT1から特定のIC-フェンス命令を識別する命令識別データを含む。コアC1が順序付け肯定応答トークンを受け取ると、コアC1は、特定のIC-フェンス命令を識別する命令識別データを読み取り、特定のIC-フェンス命令を完了したものとして指定する。単一のIC-フェンス命令のみが各メモリレベルについて任意の所定の時間に保留中である実施形態では、命令識別データは必要とされず、メモリレベルは、何れのIC-フェンス命令が完了したものとして指定され得るかを識別する。
【0037】
このアプローチは、コアが、IC-フェンスと共に使用されるCC-フェンスと共に一般的に使用される既存の最適化を使用し続けることを可能にする技術的な恩恵及び効果を提供する。例えば、IC-フェンス命令がウィンドウ内投機を介して保留中である間に、IC-フェンスに後続するロード等のコア中心メモリ動作をキャッシュに発行することができる。したがって、IC-フェンス命令に対する後続のコア中心メモリ動作は遅延されず、投機的に発行することができる。
【0038】
(B.レベル固有キャッシュフラッシュ)
図2Bに関して本明細書で上述したように、IC-フェンスは、CC-Mem-OpとMC-Mem-Opとの間の適切な順序付けを提供するために使用され得る。しかしながら、メモリ側計算ユニットがCC-Mem-Opの結果を使用する必要がある場合であっても、CC-Mem-Opの結果が、コヒーレンスポイントの前にあり、したがってメモリ側計算ユニットにアクセス可能でないストアバッファやキャッシュ等のメモリコンポーネントに記憶される状況があり得る。
【0039】
一実施形態によれば、この技術的な問題は、CC-Mem-Opsの結果をメモリ側計算ユニットに利用可能にするためにレベル固有キャッシュフラッシュ動作を使用する技術的な解決策によって対処される。レベル固有キャッシュフラッシュ動作は、同期の完了レベルに対応する、メモリ側キャッシュやメインメモリ等の関連付けられたメモリレベルを有する。完了レベルの前にメモリコンポーネント、例えば、コア側ストアバッファ及びキャッシュに記憶されたダーティデータは、レベル固有キャッシュフラッシュ動作によって指定されたメモリレベルにプッシュされる。プログラマは、後続のMC-Mem-Opsが動作しているメモリレベルに基づいて、レベル固有キャッシュフラッシュ動作のためのメモリレベルを指定することができる。例えば、図2Bにおいて、ステップ7におけるMC-Mem-Opsがメモリ側キャッシュ内のデータに対して動作している場合、メモリ側キャッシュのレベルは、レベル固有キャッシュフラッシュのために指定される。ライトスルーキャッシュ(例えば、GPUで使用されるもの)は、指定されたコヒーレンスポイントまでダーティデータをフラッシュダウンするためのプリミティブを既にサポートしていることが多いことに留意されたい。我々の目的のために、動作は、完了ポイント(コヒーレンスポイントよりも遠くてもよい)までフラッシュダウンしなければならない。
【0040】
一実施形態において、レベル固有キャッシュフラッシュ動作は、完了レベルの前にメモリコンポーネントに現在記憶されているCC-Mem-Opsの結果(例えば、ダーティデータ)がコヒーレンスポイントを超えて関連付けられたメモリレベルに記憶されたという確認が受信されるまで、コアにおいて追跡される。確認が受信されると、コアは、レベル特定キャッシュフラッシュ動作を完了したものとして指定し、次の命令セットに進む。例えば、図2Bにおいて、ステップ2におけるレベル固有キャッシュフラッシュは、ステップ1においてスレッドAによって実行されたCC-Mem-Opsの結果がスレッドBにとって可視であることを保証する。
【0041】
一実施形態では、レベル固有キャッシュフラッシュ動作は、CC-Mem-Opsの結果、例えばダーティデータが指定されたキャッシュレベルにフラッシュダウンされたという確認が受信されるまで、コアにおいて追跡される(完了ポイントへのライトバック動作は依然として進行中であるが、必ずしも完了しているわけではない)。この場合、IC-フェンスは、指定されたキャッシュレベルより下の全てのキャッシュレベルにおいて、このフラッシュ動作によってトリガされた前の保留中のCCライトバック要求のそれ自体との再順序付けを防止する必要がある。これは、前のMC要求とそれ自体との間で防止する必要がある再順序付けに加えて行われる。
【0042】
レベル固有キャッシュフラッシュ動作は、特別なプリミティブ若しくは命令によって、又は、既存のキャッシュフラッシュ命令に対するセマンティックとして実装され得る。メモリ固有キャッシュフラッシュ動作は、CC-Mem-Opsの結果を、メモリ側キャッシュ等のように、メインメモリの前にあり得るコヒーレンスポイントを超えた特定のメモリレベルに提供するという技術的な恩恵及び利益を提供し、したがって、全てのダーティデータをメインメモリにプッシュする従来のキャッシュフラッシュに対して計算リソース及び時間を節約する。
【0043】
レベル固有キャッシュフラッシュ動作は、完了レベルの前の全てのメモリコンポーネントから、レベル固有キャッシュフラッシュ動作に関連付けられたメモリレベルに、全てのダーティデータを移動させ得る。例えば、全てのストアバッファ及びキャッシュからの全てのダーティデータは、レベル固有キャッシュフラッシュ動作によって指定されたメモリレベルにフラッシュされる。
【0044】
一実施形態によれば、レベル固有キャッシュフラッシュ動作は、完了レベルの前のメモリコンポーネントから、レベル固有キャッシュフラッシュ動作に関連付けられたメモリレベルまで、ダーティデータの全てより少ない部分、すなわち、ダーティデータのサブセットを記憶する。これは、特定のCC-Mem-Opsに関連付けられたアドレスを追跡する発行コアによって達成され得る。追跡されるアドレスは、CC-Mem-Opsによって指定されたアドレスから決定されてもよい。代替的に、追跡されるアドレスは、レベル特定キャッシュフラッシュ命令において提供されるヒント又は境界によって識別され得る。例えば、ソフトウェア開発者は、レベル固有のキャッシュフラッシュのための特定のアレイ、領域、アドレス範囲又は構造を指定することができ、特定のアレイ又は構造に関連付けられたアドレスが追跡される。
【0045】
次いで、レベル固有キャッシュフラッシュ動作は、追跡されたアドレスに関連付けられたダーティデータのみを、レベル固有キャッシュフラッシュ動作に関連付けられたメモリレベルに記憶する。これは、完了ポイントまでフラッシュされるダーティデータの量を低減し、これは、次に、レベル固有キャッシュフラッシュを実行するために必要とされる計算リソースの量及び時間を低減し、コアがより迅速に他の命令に進むことを可能にする。一実施形態によれば、キャッシュレベルベース、例えば、レベル1キャッシュ、レベル2キャッシュ、レベル3キャッシュ等でアドレストラッキングを実行することによって、更なる改善が提供される。これは、レベル固有キャッシュフラッシュ動作に関連付けられたメモリレベルに記憶されるダーティデータの量を更に低減する。
【0046】
図3は、IC-フェンスを使用してメモリ中心メモリ動作とコア中心メモリ動作との間の順序付けを実施するアプローチを示すフロー図300である。ステップ302において、コアスレッドは、第1のセットのメモリ動作を実行する。例えば、第1のセットのメモリ動作は、図2A~2CのスレッドAによって実行されるMC-Mem-Ops又はCC-Mem-Opsであってもよい。図2DのCC-Mem-Ops/CC-Mem-Opsシナリオは、そのシナリオがIC-フェンスを使用しないため、この例では考慮されない。
【0047】
第1のセットのメモリ動作が発行された後、ステップ304において、第1のセットのメモリ動作がCC-Mem-Opsであった場合、レベル固有キャッシュフラッシュ動作が実行される。例えば、図2Bに示されるように、スレッドAは、CC-Mem-Opsの後にレベル固有キャッシュフラッシュを実行するための命令を含む。レベル特定キャッシュフラッシュのために選択されるレベルは、IC-フェンスの後の命令のメモリレベルである。例えば、図1Dにおいて、スレッドBは、スレッドAによって書き込まれたフラグの値を見ることができる必要がある。スレッドAによって書き込まれたフラグの値がキャッシュに記憶されている場合、フラグ値は、スレッドBのメモリ動作によってアクセス可能なメモリレベルにフラッシュされる必要がある。それらのメモリ動作がMC-Mem-Opsである場合、レベル固有キャッシュフラッシュのレベルは、例えば、メモリ側キャッシュ又はメインメモリのレベルである。図2A及び図2Cに示すように、第1のセットのメモリ動作がMC-Mem-Opsであった場合、ステップ304のレベル固有キャッシュフラッシュ動作は実行される必要がない。
【0048】
ステップ306において、コアは、IC-フェンス命令を処理し、順序付けトークンをメモリパイプラインに挿入する。例えば、スレッドAの命令は、処理された場合に、関連付けられた完了レベルを有する順序付けトークンT1をメモリパイプラインに挿入させるIC-フェンス命令を含む。ステップ308において、順序付けトークンT1は、メモリパイプラインを流れ、複数のパスに対して複製される。
【0049】
ステップ310において、完了レベルにおける1つ以上のメモリコントローラは、順序付けトークンを受信してキューに入れ、順序付け制約を実施する。例えば、完了レベルのメモリコントローラは、順序付けトークンT1を、メモリコントローラが保留中のメモリ動作を記憶するために使用するキューに記憶する。メモリコントローラは、キュー内の順序付けトークンT1の前のメモリ動作が順序付けトークンT1の後に再順序付けされないこと、及び、キュー内の順序付けトークンT1の後のメモリ動作が順序付けトークンT1の前に再順序付けされないことを保証することによって、順序付け制約を実施する。
【0050】
ステップ312において、順序付けトークンをキューに入れた完了レベルのメモリコントローラは、順序付け肯定応答トークンをコアに発行する。例えば、完了レベルにおける各メモリコントローラは、順序付けトークンT1が、メモリコントローラが保留中のメモリ動作を記憶するために使用するキューに入れられたことに応じて、順序付け肯定応答トークンT2をコアに発行する。一実施形態によれば、順序付け肯定応答トークンT2は、順序付けトークンT1を発行させたIC-フェンス命令を識別する命令識別データを含む。複数のパスからの順序付け肯定応答トークンT2をマージして、マージされた順序付け肯定応答トークンを生成することができる。
【0051】
ステップ314において、コアは、順序付け肯定応答トークンT2を受信し、最後の順序付け肯定応答トークンT2又はマージされた順序付け肯定応答トークンT2の何れかを受信すると、例えば、IC-フェンス命令を完了としてマークすることによって、IC-フェンス命令を完了したものとして指定する。順序付け肯定応答トークン(複数可)T2の受信を待機している間、コアは、少なくとも非投機的ベースではなく、IC-フェンス命令を超える命令を処理しない。これは、コアがIC-フェンスの後の命令の処理に進む前に、IC-フェンスの前の命令が少なくとも完了レベルでメモリコントローラにおいてスケジューリングされることを保証する。
【0052】
ステップ316において、コアは、IC-フェンスの後の命令の処理に進む。図2A図2Cにおいて、CC-Mem-Op-syncは、例えば、図1Dに関して上述したように、フラグの値を設定するために実行され、次いで、CC-フェンス命令及び後続のCC-Mem-Ops(図2A)又はMC-Mem-Ops(図2B図2C)の実行を可能にする。
図1A
図1B
図1C
図1D
図2A
図2B
図2C
図2D
図3
【手続補正書】
【提出日】2023-11-22
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
プロセッサであって、
順序付けトークンを発行することと、
順序付け肯定応答トークンに応じて、順序付け命令を完了したものとして指定することと、
を行うように構成されている、
プロセッサ。
【請求項2】
前記順序付けトークンは、1つ以上の先行するメモリ動作の完了レベルと同じである、関連付けられた完了レベルを有する、
請求項1のプロセッサ。
【請求項3】
メモリパイプライン内の1つ以上のメモリコンポーネントは、前記順序付けトークンの前のメモリ動作が前記順序付けトークンの後に再順序付けされるのを抑制する、
請求項1のプロセッサ。
【請求項4】
前記順序付けトークンは、メモリパイプライン内の複数のパスにわたって複製される、
請求項1のプロセッサ。
【請求項5】
前記順序付けトークンは、関連付けられた完了レベルを有し、
前記順序付け肯定応答トークンは、前記完了レベルで前記順序付けトークンを処理したメモリコントローラによって発行される、
請求項1のプロセッサ。
【請求項6】
前記順序付け肯定応答トークンは、メモリコントローラが、保留中のメモリ動作を記憶するキューに前記順序付けトークンを記憶したことに応じて、前記メモリコントローラによって発行される、
請求項1のプロセッサ。
【請求項7】
前記順序付け肯定応答トークンは、複製された複数の順序付け肯定応答トークンのうち最後の順序付け肯定応答トークン、又は、前記複製された複数の順序付け肯定応答トークンを表す、マージされた順序付け肯定応答トークンである、
請求項1のプロセッサ。
【請求項8】
前記プロセッサは、
順序付け命令を処理したことに応じて、前記順序付けトークンを発行することと、
前記順序付け命令に関してメモリ動作順序付け制約を実施することと、
を行うように構成されている、
請求項1のプロセッサ。
【請求項9】
前記プロセッサは、前記順序付けトークンを発行する前に、完了ポイントの前のメモリ位置に記憶された更新されたデータを、指定された完了レベルまで記憶させるように構成されている、
請求項1のプロセッサ。
【請求項10】
メモリコントローラであって、
順序付けトークンに基づいて順序付け制約を実施することと、
前記順序付けトークンを発行したプロセッサスレッドに順序付け肯定応答トークンを発行することと、
を行うように構成されている、
メモリコントローラ。
【請求項11】
前記順序付けトークンに基づいて順序付け制約を実施することは、前記順序付けトークンの後に順序付けられた1つ以上のメモリ動作が前記順序付けトークンの前に再順序付けされるのを抑制することを含む、
請求項10のメモリコントローラ。
【請求項12】
方法であって、
プロセッサが、順序付けトークンを発行することと、
前記プロセッサが、順序付け肯定応答トークンに応じて、順序付け命令を完了したものとして指定することと、を含む、
方法。
【請求項13】
前記順序付けトークンは、1つ以上の先行するメモリ動作の完了レベルと同じである、関連付けられた完了レベルを有する、
請求項12の方法。
【国際調査報告】