JP2023527735A - コア間キャッシュスタッシング及びターゲット発見 - Google Patents

コア間キャッシュスタッシング及びターゲット発見 Download PDF

Info

Publication number
JP2023527735A
JP2023527735A JP2022569593A JP2022569593A JP2023527735A JP 2023527735 A JP2023527735 A JP 2023527735A JP 2022569593 A JP2022569593 A JP 2022569593A JP 2022569593 A JP2022569593 A JP 2022569593A JP 2023527735 A JP2023527735 A JP 2023527735A
Authority
JP
Japan
Prior art keywords
stash
data
processor core
core
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022569593A
Other languages
English (en)
Inventor
アルベルト ジョアン、ジョゼ
ホジェリオ ムック、ティアゴ
ランドール、ジョシュア
カッロ、アレハンドロ リコ
ジェイムズ マシューソン、ブルース
Original Assignee
アーム・リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2023527735A publication Critical patent/JP2023527735A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Abstract

第1のプロセッサコアから第2のプロセッサコアにデータを転送するための方法及び装置が開示される。第1のプロセッサコアは、データのデータアドレスに関連付けられた第1のオペランドを有するスタッシュ命令を実行する。第2のプロセッサコアは、データアドレス又は第2のオペランドに基づいて、スタッシュメッセージのスタッシュターゲットであると判定される。スタッシュメッセージが第2のプロセッサコアに送信され、書き込まれたデータを第2のプロセッサコアに通知する。スタッシュメッセージの受信に応答して、第2のプロセッサコアは、そのキャッシュにデータを記憶することを選択することができる。データは、スタッシュメッセージに含まれ得る、又は第2の処理コアによる読み出し要求に応答して取り出され得る。第2のプロセッサコアは、監視されるデータトランザクションに少なくとも部分的に基づく予測によって判定され得る。【選択図】図1

Description

マルチコアデータ処理システムにおいて、第1のプロセッサコア上で実行される処理スレッドによって作り出されたデータは、第2のプロセッサコア上で実行される処理スレッドによって消費され得る。動作中、プロデューサコアは、データをローカルキャッシュ又は共有メモリに書き込む。新たに書き込まれたデータに対する第2のプロセッサコアによる次の読み出し動作は、データが第2のプロセッサのローカルキャッシュにロードされていないので、キャッシュミスをもたらす。コンシューミングコアのローカルキャッシュへのデータの移動は、処理遅延又はレイテンシを引き起こす。
添付図面は、様々な代表的な実施形態をより完全に説明するために使用される視覚的表示を提供し、当業者が、開示される代表的な実施形態及びそれらの利点をより良く理解するために使用され得る。これらの図面では、同様の参照番号は対応する又は類似した要素を特定する。
様々な代表的な実施形態に係る、マルチコアデータ処理システムの簡略ブロック図である。 様々な代表的な実施形態に係る、マルチコアデータ処理システムにおけるデータ転送のための方法のフローチャートである。 様々な代表的な実施形態に係る、例示的なコア間スタッシュ動作の相互作用チャートである。 様々な代表的な実施形態に係る、コア間スタッシュ動作の更なる例についての相互作用チャートである。 様々な代表的な実施形態に係る、スタッシュターゲットテーブル(Stash Target Table、STT)の一例を示す。 様々な代表的な実施形態に係る、スタッシュターゲットテーブル(STT)の更なる例を示す。 様々な代表的な実施形態に係る、スタッシュターゲットテーブルを更新するための方法を示す相互作用チャートである。 様々な代表的な実施形態に係る、スタッシュターゲットテーブルを更新するための方法を示す相互作用チャートである。 様々な代表的な実施形態に係る、スタッシュターゲットテーブルを更新するための方法を示す相互作用チャートである。 様々な代表的な実施形態に係る、スタッシュターゲットテーブルを更新するための方法を示す相互作用チャートである。 様々な代表的な実施形態に係る、スタッシュターゲットテーブルを更新するための方法を示す相互作用チャートである。 様々な代表的な実施形態に係る、ホームエージェントによってスタッシュターゲットテーブルを作成及び更新するための方法のフローチャートである。 様々な代表的な実施形態に係る、例示的なコア間スタッシュ動作の相互作用チャートである。 様々な代表的な実施形態に係る、例示的なコア間スタッシュ動作の相互作用チャートである。 様々な代表的な実施形態に係る、例示的なスタッシュターゲット登録動作の相互作用チャートである。 様々な代表的な実施形態に係る、例示的なコア間スタッシュ動作の相互作用チャートである。
本明細書で説明される様々な装置、デバイス、及び方法は、マルチコアデータ処理システムにおけるコア間キャッシュスタッシングのメカニズムを提供する。
本開示は、多くの異なる形態の実施形態が可能であるが、本明細書に示され説明される実施形態は、本開示の原理の例を提供するものとみなされるべきであり、本開示を示され説明される特定の実施形態に限定することを意図するものではないという理解の下で、特定の実施形態が図面に示され、本明細書で詳細に説明される。以下の説明では、同様の参照番号は、図面中のいくつかの図において、同じ、類似の、又は対応する部分を説明するために使用される。例示の簡略化及び明確化のため、対応する要素又は類似の要素を示すために、図面の中で参照番号を繰り返してもよい。
本文書では、第1及び第2や頂部及び底部などの関係を示す用語は、そのような実体又はアクション間の実際のそのような関係又は順序を必ずしも要求したり示唆したりすることなく、ある実体又は動作を別の実体又はアクションと区別するためにのみ使用され得る。用語「備える(comprise)」、「備える(comprising)」、「含む(include)」、「含む(including)」、「有する(has)」、「有する(having)」、又はそれらの任意の他の変形は、非排他的な包含を網羅することを意図しており、そのため、要素のリストを含むプロセス、方法、物品、又は装置は、少なくともそれらの要素を含み、更に、明示的に列挙されていない、又はそのようなプロセス、方法、物品、若しくは装置に固有の他の要素も含んでよい。「・・・aを備える(comprise...a)」によって先行される要素は、更なる制約なしには、その要素を含むプロセス、方法、物品、又は装置における追加の同一要素の存在を排除するものではない。
本明細書全体を通して言及される「一実施形態」、「特定の実施形態」、「実施形態」、「実装形態(単数又は複数)」、「態様(単数又は複数)」、又は類似の用語は、実施形態に関連して説明される特定の特徴、構造、又は特性が、本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体を通して様々な場所におけるこのような語句の出現は、必ずしも同じ実施形態を指すものではない。更に、特定の特徴、構造、又は特性は、限定することなく、1つ以上の実施形態において任意の好適な方法で組み合わされてもよい。
本明細書で使用されるとき、用語「又は(or)」は、包括的に、又は任意の1つ若しくは任意の組み合わせを意味するものとして解釈されるべきである。したがって、「A、B、又はC」は、以下のいずれかを意味する。A;B;C;A及びB;A及びC;B及びC;A、B、及びC。この定義の例外は、要素、機能、工程、又は作用の組み合わせが、何らかの点で本質的に相互排他的である場合にのみ生じる。
本明細書で使用される場合、「ように構成される(configured to)」という用語は、要素に適用されるとき、その要素が指定された機能を実行するように設計若しくは構築され得ること、又はその要素がその機能を実行するように再構成若しくは適合されることを可能にするために必要とされる構造を有することを示す。
図1は、様々な代表的な実施形態に係る、マルチコアデータ処理システム100の簡略ブロック図である。送信側コア又はプロデューサコアとも呼ばれる第1のプロセッサコア102は、(例えば、そのコア又はコアのクラスタに対してプライベートであり得る)少なくとも1つのローカルキャッシュ104を含み、第2のプロセッサコア106は、少なくとも1つのローカルキャッシュ108を含む。第2のプロセッサコア106は、受信側コア又はコンシューマコアとも呼ばれる。一般に、データ処理システム100は、任意の数のプロセッサコアを含むことができ、プロセッサコアのうちのいくつかは、クラスタに構成され、下位レベルキャッシュを共有することができる。プロセッサコアはインターコネクトファブリック110によって結合され、インターコネクトファブリック110は、プロセッサコアと、インターコネクトファブリックに結合された他のデバイスとの間でメッセージを渡すように構成されている。インターコネクトファブリック110には、ホームエージェント112も結合されている。任意選択で、ホームエージェント112は、システムレベルキャッシュ114を含むことができる。共有メモリ116は、メモリコントローラ118を介してインターコネクトファブリック110に結合されている。プロセッサコアは、要求メッセージをホームエージェント112に送信することによって共有メモリ116にアクセスする。ホームエージェントは、メモリアドレスのセット又は範囲を管理して、データのコヒーレンシの地点及びシリアル化として機能し、キャッシュに記憶されたデータのコピーに一貫性があり最新であることを確実とする。I/Oデバイス、ネットワークインターフェース、追加のメモリ、処理アクセラレータなど、任意の数の他の構成要素をデータ処理システムに含めることができることは、当業者には明らかであろう。システムは、単一の集積モジュール、マルチチップモジュールに集積されてもよく、又は分散構成要素からなってもよい。
本開示の実施形態は、送信側プロセッサコア102によって書き込まれた、又は作り出されたデータを、第2のプロセッサコア106によって読み出される前に、第2のプロセッサコア106のキャッシュ108に転送することに関する。第2のプロセッサコアは、データを読み出す命令を実行するとき、データがすでにキャッシュ108に記憶されている場合、アクセス時間が大幅に短縮される。したがって、開示されたメカニズムは、データ処理システムの動作に改善をもたらす。データは、1つのキャッシュライン(例えば、64バイト)内の情報を含むことができ、データアドレスの上位ビット又は何らかの他の識別子によって特定することができる。本明細書では、「データアドレス」という用語は、アドレスを含むデータブロックの識別子(要素アドレスの上位ビットなど)であるデータ要素(例えば、ワード又はバイト)のアドレスを意味する。データブロックがインターコネクトファブリック内のデータチャネルの幅よりも大きい場合、データは、データチャネルを介して2つ以上のフリット(flow control digits、フロー制御ディジット)で転送され得る。
データは、データアドレスに関連付けられ得る。データアドレスは、例えば、バッキングメモリ又はストア内の物理アドレス、又は入力/出力デバイスのアドレスであり得る。プロセッサコアは、物理アドレス空間にマッピングされる仮想アドレス空間において動作することができる。仮想アドレスは、1つ以上の中間アドレスを介して物理アドレスにマッピングされてもよい。処理を高速化するために、データのコピーをデータ処理システム内の1つ以上のキャッシュに記憶することができる。そのようなデータは、データアドレスに「関連付けられる」と言われる。しかしながら、データは、プロセッサコアによって修正される又は書き込まれる場合があり、所与の時間において、関連付けられるアドレスに記憶されたデータと一致しない場合がある。
第1のプロセッサコア102上で実行されている処理スレッドによって作り出されたデータは、第2のプロセッサコア106上で実行されている処理スレッドによって消費され得る。以前のマルチコアデータ処理システムでは、プロデューサコアは、ローカルキャッシュ104、ホームエージェント114、又は共有メモリ116にデータを書き込む。新たに書き込まれたデータに対するコンシューミングコア106による読み出し動作は、キャッシュミスをもたらす。それからデータがコンシューミングコアのローカルキャッシュに移動されなければならず、処理遅延又はレイテンシを引き起こす。
コア間スタッシングは、本明細書で開示されるように、データが第2のプロセッサコアによって読み出される前に、第1のプロセッサコア102から第2のプロセッサコア106のローカルキャッシュ108にデータを転送するメカニズムを提供する。これにより、データ読み出し時のキャッシュヒットの確率が高くなる。
コア間スタッシングは、例えば、プロデューサ-コンシューマ通信パターンにおいてコンシューマプロセスにより生じるキャッシュミスによって引き起こされる性能低下を軽減する。一実施形態では、プロデューサコア102がキャッシュラインへの書き込みを完了すると、プロデューサコア102は、コンシューマコアのプライベートキャッシュ108へのキャッシュラインの転送を開始するスタッシュ命令を実行する。コンシューマコアがキャッシュラインに対する要求を発行する前に転送が完了すると、コンシューマはそのプライベートキャッシュ内でヒットし、キャッシュラインに対するアクセスレイテンシを大幅に短縮する。
いくつかの適用例では、プロデューサスレッドは、どのコアがコンシューマスレッドを実行しているかを知り、そのコアをスタッシュ動作のターゲットとして特定することができる。一実施形態では、スタッシュ動作のターゲットコアは、プロデューサプロセッサコアによって指定される。
他の適用例では、プロデューサスレッドがターゲットコアを判定すること、又はソフトウェアの複数のレイヤを通してその情報を伝播することは困難である又は費用がかかる場合がある。例えば、MPI(Message Passing Interface、メッセージパッシングインターフェース)ライブラリからUCX(Unified Communication X、ユニファイドコミュニケーションX)ライブラリのような低レベル通信ライブラリに情報を伝播することは困難であり得る。
更なる実施形態では、ターゲットコアは、プロセッサコアによる以前のデータ使用に基づいて自動的に特定される。この実施形態では、データをキャッシュに割り当て及び割り当て解除する、プロセッサコアからのトランザクションは、スタッシュターゲットテーブル(STT)制御回路120によって監視され、スタッシュターゲットテーブル122内の情報を更新するために使用することができる。スタッシュターゲットテーブル122は、セットアソシアティブ型キャッシュなどのメモリであってもよい。キャッシュは、キャッシュラインの物理アドレス又は中間アドレスでインデックス付けされ、完全に又は部分的にタグ付けされてもよい。スタッシュターゲットテーブルは、いくつかのエントリを記憶する。各エントリは、そのアドレスに対するスタッシュターゲット(単数又は複数)の識別子を記憶する。スタッシュターゲットテーブル制御回路120及びスタッシュターゲットテーブル122は、ホームエージェント又は1つ以上のプロセッサコア内に実装されてもよく、1つ以上のプロセッサコアを、指定されたデータアドレスに関連付けられたデータに対するスタッシュターゲットコアとして特定するために使用される。
ホームエージェント112は、データをキャッシュに割り当て及び割り当て解除する、プロセッサコアからのトランザクションも監視するスヌープフィルタ124も含むことができる。STT122は、スヌープフィルタのキャッシュ内のエントリに、予測されたスタッシュターゲットを特定する追加のフィールドを追加することによって実装され得る。
このようにして、本開示の実施形態によれば、データ処理システム100は、インターコネクトファブリック110を含み、複数のプロセッサコア(102、106)がインターコネクトファブリックによって相互接続されている。少なくとも1つのプロセッサコアが、第1のデータアドレスに関連付けられたデータをキャッシュに書き込み、第1のデータアドレスに対する第1のスタッシュ命令を実行するように構成されている。スタッシュターゲットテーブル制御回路120は、データをプロセッサコアのキャッシュに割り当て及び割り当て解除する、プロセッサコアからのトランザクションを監視し、スタッシュターゲットテーブル122内のエントリを作成及び更新するように構成されている。スタッシュターゲットテーブル制御回路120はまた、第1のスタッシュ命令に応答して、1つ以上のプロセッサコアが第1のデータアドレスに関連付けられたデータに対するスタッシュターゲットコアであると予測して、スタッシュメッセージは、第1のデータアドレスに関連付けられ、かつ第1のプロセッサコアによって作り出されたデータをスタッシュターゲットコアに通知するスタッシュメッセージを、スタッシュターゲットコアに送信するように構成されている。1つ以上のスタッシュターゲットコアのうちの第2のプロセッサコアは、スタッシュメッセージを受信したことに応答して、第1のデータアドレスに関連付けられたデータを第2のプロセッサコアのキャッシュに記憶するように構成されている。
図1に示すように、データ処理システムの実施形態は、インターコネクトファブリック110によってプロセッサコアに結合され、データ処理システムのコヒーレンスの地点及びシリアル化を提供する、ホームエージェント112も含むことができる。この実施形態では、ホームエージェントは、スタッシュターゲットテーブル制御回路120を含む。代替実施形態では、スタッシュターゲットテーブル制御回路120は、プロセッサコアのうちの1つ以上において実装されてもよい。
プロデューサスレッドによって実行されるスタッシュ命令は、データアドレスを指定する。命令は、また、意図されたスタッシュターゲットコアの識別子を指定してもよく、しなくてもよい。命令内に明示的なターゲットがない場合、スタッシュターゲットは様々な方法で判定され得る。例えば、受信側コアは、それ自体をスタッシュターゲットとしてホームエージェントに登録することができ、又はホームエージェントはスタッシュターゲットを予測することができる。いくつかの実施形態では、予測は、ホームエージェントが、データアドレスの共有から固有への遷移、固有から共有への遷移、及び以前にスタッシュされたデータアドレスに対する読み出し動作を監視することに基づく。
データ処理システムの第1のプロセッサコア(送信コア)が、第1のデータアドレスに関連付けられたデータを第1のキャッシュに書き込むデータ転送の方法が開示される。書き込みは、例えば、データを生成し、それをキャッシュ内の第1のデータアドレスに関連付けること、又は第1のアドレスに関連付けられたキャッシュ内のデータを修正することを含んでもよい。いずれの場合も、第1のプロセッサコアは、第1のアドレスに関連付けられたデータの所有権を要求し、他のキャッシュ内のデータのコピーを無効化させることができる。第1のデータアドレスは、例えば、仮想アドレス又は物理アドレスであってもよい。
図2は、様々な代表的な実施形態による、マルチコアデータ処理システムにおけるデータ転送のための方法のフローチャート200である。図2の開始ブロック202に続いて、スタッシング動作は、ブロック204におけるプロデューサプロセッサコアによるスタッシュ命令の実行で始まる。スタッシュ命令は、スタッシュされるデータアドレスを指定する1つの入力レジスタ又はオペランドと、任意選択で、スタッシュターゲット(単数又は複数)を特定する別の入力レジスタ又はオペランドとを有する。第1のプロセッサコアのキャッシュにおいて、そのアドレスに関連付けられたデータを保持するキャッシュラインが動作の対象となる。スタッシュ命令は、データ処理システムの命令セットアーキテクチャ(Instruction Set Architecture、ISA)に含まれてもよい。再び図2を参照すると、判断ブロック206からの肯定分岐によって示されるように、スタッシュ命令がスタッシュターゲットの識別子を含む場合、208において、インターコネクトファブリックを介して、スタッシュメッセージを特定されたスタッシュターゲット(受信側又はコンシューマプロセッサコア)に送信する。スタッシュメッセージは、データアドレスを特定して、アドレスに関連付けられたデータが利用可能であるという通知又はヒントをスタッシュターゲットに提供する。スタッシュメッセージは、直接的に又はホームエージェントを介して、スタッシュターゲットに送信され得る。ホームエージェントを介して送信される場合、ホームエージェントは、スタッシュメッセージを生成し、ターゲット識別子から、メッセージからの判定ターゲットをする。判断ブロック210からの肯定分岐によって示されるように、スタッシュターゲットがデータを受け入れることを選択する場合、ブロック212において、スタッシュターゲットは、データアドレスに関連付けられたデータをプリフェッチする。次いで、ブロック214に示すように、スタッシュ命令の実行が完了する。判断ブロック210からの否定分岐によって示されるように、実行は、スタッシュターゲットがデータを受け入れないと判定した場合にも完了する。
判断ブロック206からの否定分岐によって示されるように、スタッシュ命令がスタッシュターゲットの識別子を含まない場合、スタッシュターゲットが、データ処理システム内の以前のデータトランザクションから予測される。ブロック216において、データアドレスに基づいて、スタッシュターゲットテーブル(STT)にアクセスし、1つ以上のスタッシュターゲットを特定する。一実施形態では、プロデューサプロセッサコアによってSTTにアクセスする。更なる実施形態では、プロデューシングプロセッサコアは、スタッシュ要求を、インターコネクトファブリックを介してホームエージェントに送信し、ホームエージェントはSTTにアクセスする。スタッシュ要求は、第1のデータアドレスを含む。上述したように、ホームエージェントは、プロセッサコア間で共有されるメモリ又はデータ処理システムの他のアドレス指定可能要素に対するコヒーレンシの地点及びシリアル化として機能する。ホームエージェントは、データ処理システムの様々なキャッシュ内のデータの存在及びコヒーレンシ状態を記録するスヌープフィルタを含むことができる。スヌープフィルタのキャッシュ内のエントリは、データをそれらのキャッシュに割り当て及び割り当て解除する、プロセッサコアからのトランザクションを監視することによって更新される。ホームエージェントは、システムレベルキャッシュ又はラストレベルキャッシュを含むこともできる。ホームエージェントは、どのプロセッサコアがキャッシュラインのコピーを共有しているかを記録し(これは、例えば、存在ベクトルとして記録されてもよい)、かつ、該当がある場合、共有者のうちのどれがキャッシュラインの所有権を有するものとして指定されているかを記録する。
判断ブロック218からの肯定分岐によって示されるように、データアドレスに対するエントリがスタッシュターゲットテーブル内で見つかり、そのエントリが1つ以上の第2のプロセッサコアをターゲットとして特定する場合、フローはブロック208に続き、スタッシュメッセージをターゲットプロセッサコアのそれぞれに送信する。スタッシュメッセージは、新たに書き込まれた、第1のデータアドレスに関連付けられたデータが利用可能であることをターゲットプロセッサコアに通知する。ターゲットプロセッサコアは、スタッシュメッセージを更に無視すること、又は第1のデータアドレスに関連付けられたデータを第2のプロセッサコアのキャッシュ内にプリフェッチすることができる。これは、例えば、第2のプロセッサコアのローカル若しくはプライベートキャッシュ、又はコアのクラスタの下位レベルキャッシュであってもよい。第2のプロセッサコアが、データがキャッシュからエビクションされる前にデータを読み出す命令を実行する場合、キャッシュヒットが発生し、データを読み出す時間が短縮される。キャッシュヒットは、データに対する読み出し動作を実行する時間を短縮することによって、データ処理システムの性能を改善する。判断ブロック218からの否定分岐によって示されるように、データアドレスに対するエントリがスタッシュターゲットテーブル内に見つからない場合、又は見つかったエントリによりターゲットが特定されない場合、スタッシュ命令の実行はブロック214によって示されるように完了する。スタッシュターゲットテーブルは、しかしながら、以下に詳細に説明されるように更新されてもよい。
図3は、様々な代表的な実施形態に係る、例示的なコア間スタッシュ動作の相互作用チャート300である。このチャートは、送信側又はプロデューサコアSのタイムライン302、ホームエージェントのタイムライン304、及び受信側又はコンシューマコアRのタイムライン306を示しており、時間は下方に流れている。308において、送信側コアは、データアドレスAに関連付けられたデータを送信側コアのキャッシュラインに書き込む。310において、送信側コアは、コアRをスタッシュターゲットとして示す、データアドレスAに対するスタッシュ命令を実行する。スタッシュ命令は、次の形式をとることができる。
STASH data_address,target_id
式中、オペランドdata_addressは、仮想アドレス、仮想アドレスの範囲のインジケータ、又は1つ以上のデータアドレスの何らかの他のインジケータであり得る。オペランドtarget_idは、1つ以上のプロセッサコアをキャッシュターゲットとして特定する。それは、例えば、数値識別子又はビットベクトルであってもよい。ビットベクトルにおいて、ビット位置はスタッシュターゲットに対応する。
メッセージ312がホームエージェントに送信される。これに応答して、ホームエージェントは、スタッシュメッセージ316をターゲットコアRに送信する。スタッシュメッセージ316は、データアドレスAに関連付けられたデータが修正されたことを示す。コアRは、メッセージを無視すること、又はデータアドレスAに関連付けられたデータをプリフェッチすることを選択することができる。コアRが、データアドレスAに関連付けられたデータをプリフェッチすることを選択すると、コアRは、データに対する読み出し要求318をホームエージェントに送信する。ホームエージェントは、それに応答して、データアドレスAに関連付けられたデータがコアRに送信されることを要求するメッセージ320を送信側コアに送信する。ホームエージェントからプロセッサコアへのメッセージは、「スヌープ」メッセージと呼ばれることがある。送信側コアは、メッセージ322において、データアドレスAに関連付けられたデータを受信側コアであるコアRに送付することによってスタッシュ動作を完了する。送付されたデータは、コアRのローカルキャッシュに記憶される。受信側コアRが324において読み出し動作を実行するとき、データはすでにローカルキャッシュにあり、したがって、読み出しはキャッシュヒットをもたらし、データが最小レイテンシでロードされ得る。このようにして、データ処理システムの性能が改善される。
更なる実施形態では、スタッシュ命令がスタッシュターゲットを特定するとき、スタッシュメッセージは、送信側コアから直接的に受信側コアに送信され得る。この場合、データをコアRに送付した後、ホームエージェントがデータコヒーレンシを監視することを可能にするために、肯定応答を送信側コアからホームエージェントに送信する必要があり得る。
図4は、様々な代表的な実施形態に係る、コア間スタッシュ動作の更なる例についての相互作用チャート400である。このチャートは、送信側又はプロデューサコアSのタイムライン402、ホームエージェントのタイムライン404、及び受信側又はコンシューマコアRのタイムライン406を示しており、時間が下方に流れている。408において、送信側コアは、データアドレスAに関連付けられたデータを送信側コアのキャッシュラインに書き込む。410において、送信側コアは、スタッシュターゲットの指示なしで、データアドレスAに対するスタッシュ命令を実行する。スタッシュ命令は、次の形式をとることができる。
STASH data_address
式中、オペランドdata_addressは、例えば、仮想アドレスであってもよい。
図3において、ホームエージェントは、メッセージ312から直接的にスタッシュターゲットを判定した。しかしながら、図4において、メッセージ412は、データアドレスAを含むが、ターゲット識別子を含まない。この実施形態では、ホームエージェントは、スタッシュメッセージ412に示されたデータアドレスAに基づいて、414においてスタッシュターゲットテーブルにアクセスすることによって、スタッシュターゲット(単数又は複数)を判定する。テーブルがデータアドレスAのエントリを含み、そのエントリが1つ以上のスタッシュターゲットを特定する場合、スタッシュメッセージ416は、データアドレスAに対して特定された受信側コアに送信される。方法は、図3を参照して説明されたように続き、相互作用418~424が要素318~324に対応する。コアRが、データアドレスAに関連付けられたデータをプリフェッチすることを選択すると、コアRは、データに対する読み出し要求418をホームエージェントに送信する。ホームエージェントは、それに応答して、データアドレスAに関連付けられたデータがコアRに送信されることを要求するメッセージ420を送信側コアに送信する。送信側コアは、データアドレスAに関連付けられたデータを、メッセージ422において受信側コアであるコアRに送付することによってスタッシュ動作を完了する。送付されたデータは、コアRのローカルキャッシュに記憶される。受信側コアであるコアRが424において読み出し動作を実行するとき、データはすでにローカルキャッシュにあり、したがって、読み出しはキャッシュヒットをもたらし、データが最小レイテンシでロードされ得る。
図3を参照して説明された手法では、スタッシュメッセージ内の識別子を使用してスタッシュターゲットが判定される一方、図4を参照して説明された手法では、スタッシュターゲットテーブルを使用してスタッシュターゲットが判定される。スタッシュターゲットテーブルの生成及び維持のためのいくつかの例示的なメカニズムが、図7~図11を参照して以下で説明される。一般に、ホームエージェントは、データ転送及びデータアドレスに対するデータコヒーレンシ動作を監視することによって、スタッシュターゲットを生成し、維持する。
したがって、図3及び図4は、データ処理システムにおけるデータ転送の方法の例を示す。この方法によれば、第1のプロセッサコアは、第1のデータアドレスに関連付けられたデータを第1のキャッシュに書き込み、第1のデータアドレスを含む第1のスタッシュ要求をデータ処理システムのホームエージェントに送信する。ホームエージェント又はプロデューサコアは、第1のスタッシュ要求に少なくとも部分的に基づいて、スタッシュメッセージを受信する第2のプロセッサコアを判定し、スタッシュメッセージを第2のプロセッサコアに送信する。スタッシュメッセージを受信すると、第2のプロセッサコアは、第1のデータアドレスに関連付けられたデータを第2のプロセッサコアのキャッシュ内にプリフェッチすることを選択し得る。一実施形態では、第1のスタッシュ要求は、第2のプロセッサコアの識別子を含む。更なる実施形態では、スタッシュターゲットは、スタッシュターゲットテーブル内の、第1のデータアドレスに関連付けられている第1のエントリにアクセスすることによって判定される。
図5は、様々な代表的な実施形態に係る、スタッシュターゲットテーブル(STT)500の一例を示す。テーブル500内の各エントリは、1つ以上のスタッシュターゲットのデータアドレス502及び識別子504を含む。最初に、エントリは、データアドレスを有し得るが、スタッシュターゲットを有しない。データアドレス502は、物理アドレスであってもよく、見かけ上の物理アドレス又はゴースト物理アドレスなどの中間アドレスであってもよい。データアドレスは、例えば、キャッシュライン又はキャッシュページの識別子であってもよい。より一般的には、メモリは、領域内で、(キャッシュラインよりも小さい、大きい、又はキャッシュラインに等しい)指定された粒度で論理的に分割されていてもよく、その場合、データアドレスは領域の識別子であってもよい。データ処理システムは、異なる粒度を使用する複数のSSTを含むことができる。
図6は、様々な代表的な実施形態に係る、スタッシュターゲットテーブル(STT)600の更なる例を示す。テーブル内の各エントリは、ベースデータアドレス602、1つ以上のスタッシュターゲットの識別子604、及びサイズ606を含む。ベースアドレス及びサイズは併せて、base_addressからbase_addess+size-1までのサイズアドレスの範囲(例えば、サイズキャッシュライン数、サイズワード数、又はサイズバイト数)を示す。したがって、STT600内の第1のエントリは、アドレスA、A+1、A+2、及びA+3に対するスタッシュターゲットを示し、図5のテーブル500内の最初の4つのエントリと等価である。この例では、スタッシュターゲットはビットベクトルとして特定される。例えば、テーブル600の第2のエントリの識別子はビットベクトル00001010であり、1の位置はデータアドレスBに対するスタッシュターゲット2及び4を示す。
ベースデータアドレス602及びサイズ606によって指定されるエントリの範囲は、指定されたメモリ境界を越えないように制限され得る。これは、各テーブルルックアップ動作に対して1つのセットのみの検索を要する、セットアソシアティブ型テーブルとしての実装を可能とする。
STTは、ホームエージェントに又はいくつかのプロセッサコアの各々に配置されてもよい。代替的に、スタッシュターゲット情報は、ホームエージェントのスヌープフィルタキャッシュに記憶されてもよい。各キャッシュラインに対して、スヌープフィルタキャッシュは、いくつかのキャッシュラインについての共有者、所有者、及びコヒーレンシ状態を記録するデータフィールドを有するエントリを含み得る。キャッシュラインに対するスタッシュターゲットを記録するために追加のフィールドが提供されてもよい。これは、キャッシュラインの大部分がキャッシュターゲットを有する適用例に対しては効率的であるが、キャッシュラインのわずかな割合のみがスタッシュターゲットを有する適用例に対してはあまり効率的ではない。
この続きにおいて、STTを作成及び更新するための様々な例示的な方法が開示される。これらの例は、ホームエージェントを参照して説明される。しかしながら、等価の方法を使用してプロセッサコアにおいてSTTを維持してもよい。
図7は、様々な代表的な実施形態に係る、スタッシュターゲットテーブルを更新する方法の相互作用チャート700である。この方法によれば、受信側プロセッサコアは、データアドレスに対するターゲット登録メッセージをホームエージェントに送信する。これに応答して、ホームエージェントは、スタッシュターゲットテーブル内にエントリを生成し、第1のエントリは、受信側プロセッサコアをデータアドレスに関連付けられたデータのターゲットとして特定する。図7を参照すると、チャートは、送信側又はプロデューサコアSのタイムライン702、ホームエージェントのタイムライン704、及び受信側又はコンシューマコアRのタイムライン706を示し、時間は下方に流れている。708において、受信側コアRは、受信側コア(将来のターゲット)上で実行されているソフトウェアが、別のコアによってスタッシュされることになるデータを読み出すことを予期することをハードウェアに示すレジスタ命令を実行する。データが仮想アドレスにより指定されてもよい。例えば、レジスタ命令は以下の形式をとることができる。
STASH_TARGET virtual_address
この命令を実行するコアは、この仮想アドレスに対応する物理アドレスを含むキャッシュラインに対する将来のスタッシュのターゲットとして特定される。
代替的に、STASH_TARGET命令は、例えば、以下の形式をとる仮想アドレス範囲を指定することができる。
STASH_TARGET base_virtual_address,size
この命令は、対応する物理アドレスに関連付けられたすべてのキャッシュラインを、STASH_TARGET命令を実行するコアをターゲットとするスタッシング動作の潜在的なターゲットとして特定する。
レジスタ命令の実行により、受信側コアRからホームエージェントにメッセージ710が送信される。仮想アドレスを中間アドレス又は物理アドレスに変換してメッセージ710に含めることができることに留意されたい。
いくつかの適用例では、スレッドはコアに固定される。他の適用例では、STASH_TARGET命令は、コンシューマスレッドが移動された後に実行又は再実行される必要があり得る。これは、実際のスタッシュ動作が実行されるとき、報告されたターゲットコアが正しいことを確実とするためである。データバッファを初期化、読み出し、又はリサイクルするとき、STASH_TARGET命令を実行する様々な機会が存在する。したがって、各スレッド移動の直後にSTASH_TARGET命令を先を見越して実行する必要がない場合がある。スレッドが、スタッシングに従うプログラム反復よりも長い間、コアによって実行されることは一般的である。その結果、先を見越して登録しないことによって失われるのはスタッシング機会のうちのわずかな割合だけである可能性がある。
712において、ホームエージェントは、受信側コアRをスタッシュターゲットとして示すデータアドレスAに対するエントリをスタッシュターゲットテーブル内に作成又は更新する。
この場合も、ホームエージェント内のスヌープフィルタは、各キャッシュラインに関連付けられたメタデータ(様々なキャッシュ内のキャッシュラインのコヒーレンシ状態、どのコアがキャッシュラインのコピーを有するか、該当がある場合、どのコアがキャッシュラインを所有するか、を含む)を記録するので、メタデータは、キャッシュラインに対するスタッシュターゲットを記憶するスタッシュターゲットフィールド(ビットベクトルなど)を含むように拡張され得る。
代替実施形態では、上述したスタッシュターゲットテーブルを使用して、報告されたターゲットコア情報を記録することができる。このスタッシュターゲットテーブルは、キャッシュラインがスタッシュされるためのデータを記録することだけを必要とし、このデータは、スヌープフィルタキャッシュに記憶されたキャッシュラインの総数の小部分であり得る。スタッシュターゲットテーブルは、キャッシュライン物理アドレスでインデックス付けされ、完全に又は部分的にタグ付けされ、各エントリに1つ又は複数のスタッシュターゲットを記憶するセットアソシアティブ型キャッシュであってもよい。最新性ベースのキャッシュ置換ポリシーを使用してもよく、その結果、テーブル内の使用されてから最も日が経っているエントリは、スレッド移動などによって古くなったエントリなどを含めて、最終的に置換される。古いエントリによる不正確なスタッシュターゲットによる唯一の潜在的な影響は、スタッシュなしで発生するであろうキャッシュミスと同じキャッシュミスの発生である。ターゲットは、コンシューマスレッドがラインに対する新しいSTASH_TARGET命令を再実行するときに訂正されることになる。
上述したように、スタッシュターゲットテーブルは、アドレス範囲を指定することができる。これは、例えば、大きなメッセージをスタッシュするとき、又は通信ライブラリが大きなバッファで動作するときに、必要とされるエントリの数を減少させる。アドレス範囲が指定されると、エントリ間のアドレス範囲重複が検出され、重複を防止するために古いエントリが更新及び/又は無効化され得る。
図8は、様々な代表的な実施形態に係る、スタッシュターゲットテーブルの更なる例示的な更新の相互作用チャート800である。このチャートは、送信側又はプロデューサコアSのタイムライン802、ホームエージェントのタイムライン804、及び受信側又はコンシューマコアRのタイムライン806を示しており、時間が下方に流れている。この実施形態では、ホームエージェントは、データのコヒーレンシ状態の変化が発生したときに、スタッシュターゲットテーブルを更新する。
キャッシュラインに書き込もうとしているコア(送信側)は、固有状態のラインを要求し、他のコアのプライベートキャッシュ内のラインのすべてのコピーを無効化しなければならない。これにより、コアは、キャッシュラインの所有権を有するものとして確立される。無効化メッセージを得るコア(ラインの共有者)は、ラインの以前の読み出し者又は書き込み者であり、したがって、送信側がラインに対してスタッシュ動作を実行するとき、新たに作り出されるキャッシュラインに対する潜在的なスタッシングターゲットである。通常、バッファキャッシュラインを書き込んでから、それをスタッシングするまでの時間は短く(しばしば、数千サイクル未満)、このことは、キャッシュラインのコピーが最近無効化されたコアを、後続のスタッシング動作のターゲットとして特定する機会を作り出す。
再び図8を参照すると、808において、送信側コアSは、データアドレスAに関連付けられたデータの書き込み動作を開始する。この例では、他のコアとキャッシュラインが共有されるので、メッセージ810をホームエージェントに送信して、コアSのための適切なキャッシュラインの所有権を要求する。これに応答して、ホームエージェントは、そのスヌープフィルタにアクセスし、受信側コアRをキャッシュラインの共有者として特定する。次に、ホームエージェントは、無効化メッセージ812を受信側コアRに送信して、受信側コアのキャッシュ内のキャッシュラインを無効化する。
このトランザクションから、送信側コアがデータアドレスAに関連付けられたデータのプロデューサである一方、受信側コアは、少なくとも以前に、データのコンシューマ(又はプロデューサ)であったことが明らかである。この知識に基づき、ホームエージェントは、814において、受信側コアRが、データアドレスAに関連付けられたデータの潜在的なスタッシュターゲットであることを示すエントリをスタッシュターゲットテーブル内に生成又はそれを更新する。動作は、受信側コアRが、メッセージ816においてホームエージェントへの無効化メッセージを肯定応答し、ホームエージェントが、メッセージ818において肯定応答を送信側コアSに送付することによって完了する。送信側コアSのローカルキャッシュ内のデータは、今や固有のコヒーレンシ状態にあり、送信側コアSはキャッシュラインの所有権を有する。
この手法は、コアがスタッシュターゲット又はスタッシュソースのアイデンティティを知る必要なしに、スタッシュターゲットテーブルがホームエージェントによって更新されることを可能にする。これは、例えば、仮想化環境においてなど、ソフトウェアがスタッシュターゲットIDにアクセスすることが困難である場合、及びネットワーキングスタックなどの複数のライブラリ層がある場合に有用である。
このメカニズムは、例えば、以前と同じ2つのコア間の通信のためにバッファを再使用する通信ライブラリと共に使用するのに有効である。この場合、スヌープフィルタは、所与のアドレス(キャッシュライン)に対する、同じ共有から固有への遷移を繰り返し見ることになる。
ホームエージェントにおいて固有化要求が受信されたときに2つ以上の共有者がある場合、ホームエージェントは、複数のターゲットをスタッシュターゲットテーブルに挿入することができる。
図9に示すように、スタッシュターゲットを予測する別の機会が、ダーティキャッシュライン(すなわち、書き込まれたが、まだメモリに書き記憶されていないデータを含むキャッシュライン)が別のコアにより要求され、送付されるときに存在する。要求コアは、スタッシング動作の潜在的なスタッシュターゲットである。ホームエージェントは、キャッシュコヒーレンスプロトコルに従って送信側から送付に対する肯定応答を受信すると、スタッシュターゲットテーブルにスタッシュターゲットを挿入することができる。
図9は、様々な代表的な実施形態に係る、スタッシュターゲットテーブルを更新する更なる方法の相互作用チャート900である。このチャートは、送信側又はプロデューサコアSのタイムライン902、ホームエージェントのタイムライン904、及び受信側又はコンシューマコアRのタイムライン906を示しており、時間が下方に流れている。この実施形態では、ホームエージェントは、データのコヒーレンシ状態の変化が発生したときに、スタッシュターゲットテーブルを再び更新する。しかし、この場合、キャッシュが固有のダーティ状態から共有ダーティ状態に遷移するときに、テーブルが更新される。
図9を参照すると、受信側コアRは、908において、要求910をホームエージェントに送信することによって、データアドレスAに関連付けられたデータを要求する。ホームエージェントは、そのスヌープフィルタにアクセスし、キャッシュラインの所有者として送信側コアSを特定し、スヌープ要求912を送信側コアSに送信する。それに応じて、送信側コアSは、メッセージ914においてキャッシュラインを受信側コアRに送付し、メッセージ916においてトランザクションをホームエージェントに肯定応答する。このトランザクションと、データが「ダーティ」である(すなわち、変更されている)という知識とから、送信側コアSがデータアドレスAに関連付けられたデータのプロデューサであり、受信側コアRがデータのコンシューマであることが明らかである。したがって、918において、ホームエージェントは、受信側コアRをスタッシュターゲットとして特定するデータアドレスAに対するエントリをスタッシュターゲットテーブル内に作成する。
図9の手法は、更新されたスタッシュターゲットテーブルエントリは、送信側がキャッシュラインに書き込み、スタッシュ命令を実行する時までに、スタッシュターゲットテーブルからエビクションされていない場合に有効である。しかしながら、すべての送付されたキャッシュラインが将来のスタッシング動作の実際のターゲットになるわけではないことが認識される。
図10は、様々な代表的な実施形態に係る、スタッシュターゲットテーブルの更なる例示的な更新の相互作用チャート1000である。このチャートは、送信側又はプロデューサコアSのタイムライン1002、ホームエージェントのタイムライン1004、及び受信側又はコンシューマコアRのタイムライン1006を示しており、時間が下方に流れている。スタッシュターゲットなしのスタッシュ命令が1008において実行されると、対応するメッセージ1010がホームエージェントに送信される。スタッシュターゲットテーブルが1012においてアクセスされ、受信側コアRがスタッシュターゲットであると判定される。スタッシュメッセージ1014がスタッシュターゲットに送信される。この例では、受信側コアRは、スタッシュメッセージを拒否することを選択し、スタッシュメッセージの受信を肯定応答し、データアドレスAに関連付けられたデータを拒否するメッセージ1016を送信する。ホームエージェントは、1018において、データアドレスAのスタッシュターゲットとしての受信側コアRを除去するようにスタッシュターゲットテーブルを更新する。
図11は、様々な代表的な実施形態に係る、スタッシュターゲットテーブルを更新するための更なる方法の相互作用チャート1100である。図示の手法では、スタッシュターゲットテーブルへのエントリの挿入は、スタッシュ命令で指定されたキャッシュラインに対してのみ行われる。このチャートは、送信側又はプロデューサコアSのタイムライン1102、ホームエージェントのタイムライン1104、及び受信側又はコンシューマコアRのタイムライン1106を示しており、時間が下方に流れている。スタッシュターゲットなしのスタッシュ命令が1108において実行されると、対応するメッセージ1110がホームエージェントに送信される。図11に示す例では、キャッシュラインは、固有のダーティ状態にある。すなわち、送信側コアのみがデータの有効なコピーを有する。データはまだメモリに書き戻されていないのでダーティである。スタッシュメッセージに応答して、ホームエージェントは、1112において、データアドレスAに対するエントリをスタッシュターゲットテーブル内に生成する(そのようなエントリがまだ存在しないと仮定する)。しかし、1112において作成された新しいエントリは、いずれのスタッシュターゲットも特定しない。
後に、1114において、受信側コアRが読み出し動作を開始する。データは、コアRのローカルキャッシュ内にないので、データに対する要求1116がホームエージェントに送信される。ホームエージェントは、スヌープメッセージ1118を送信側コアSに送信し、送信側コアSは、要求されたデータをメッセージ1120において受信側コアRに送付する。次に、送信側コアSは、メッセージ1122において、ホームエージェントにトランザクションを肯定応答する。1124において、ホームエージェントは、受信側コアRをデータアドレスAのスタッシュターゲットとして示すようにデータアドレスAのエントリを更新する。
他のイベントを使用してスタッシュターゲットテーブルのターゲットを特定できることが、当業者には明らかであろう。イベントは、例えば、受信側のプライベートキャッシュからのデータのエビクション、共有から固有への遷移、及びダーティキャッシュラインの送付を含む。その結果、ターゲットは、将来のスタッシュ命令のために利用可能となる。
スタッシュターゲットテーブル内のスタッシュターゲットは、指定された数のスタッシュ命令の実行時にリセットされてもよく、システムが次の反復のためにスタッシュターゲットを再学習することが可能とされる。代替的に、これは、スタッシュが有用であったかどうかに関する受信側からのフィードバックを用いて行われ得る。
スタッシュターゲットテーブルの容量は制限されているので、それは、エントリに関する最新性ベースの置換ポリシー(Least Recently Usedなど)に従うことができる。ソフトウェアは、スタッシュターゲットを指定することなく、いくつのラインを合理的にスタッシュできるかを判断する際に、スタッシュターゲットテーブル容量を考慮することができる。
図12は、様々な代表的な実施形態による、ホームエージェントによってスタッシュターゲットテーブルを作成及び更新するための方法のフローチャート1200である。ブロック1202において、ホームエージェントは、データアドレスを指定するメッセージをプロセッサコアから受信する。ホームエージェントが、判断ブロック1204からの否定分岐によって示されるように、現在、スタッシュターゲットテーブル内にデータアドレスに関連付けられたエントリがないと判定した場合、フローは判断ブロック1206に進む。判断ブロック1206からの否定分岐によって示されるように、プロセッサコアから受信されたメッセージがスタッシュメッセージでもレジスタターゲットメッセージでもない場合、ブロック1208によって示されるように、スタッシュターゲットテーブルに対する更新は行われない。プロセッサコアからのメッセージがスタッシュメッセージ又はターゲット登録メッセージである場合、判断ブロック1206からの肯定分岐によって示されるように、ブロック1210においてデータアドレスの新しいエントリがスタッシュターゲットテーブルを作成し、フローは判断ブロック1212に進む。判断ブロック1204からの肯定分岐によって示されるように、データアドレスのエントリがすでにテーブル内に存在する場合も、フローは判断ブロック1212に進む。
判断ブロック1212からの肯定分岐によって示されるように、受信されたメッセージが、プロデューサコアからの変更されたデータ又はダーティデータを読み出す要求、又はコアをスタッシュターゲットとして登録する明示的な要求である場合、ブロック1214において、メッセージをホームエージェントに送信したコアの識別子を、スタッシュターゲットテーブル内の指定されたデータアドレスのエントリに挿入する。
判断ブロック1216からの肯定分岐によって示されるように、受信されたメッセージが、キャッシュラインの所有権を求めるプロデューサコアからの要求(すなわち、キャッシュラインを固有にする要求)、又はプロデューサコアからのスタッシュ要求である場合、ホームエージェントは、スヌープフィルタから、該当がある場合、どの他のコアがキャッシュラインを共有しているかを判定し、ブロック1218において、それらのコアの識別子をデータアドレスに対するスタッシュターゲットテーブルエントリに挿入する。メッセージが何らかの他のメッセージである場合、判断ブロック1216からの否定分岐によって示されるように、スタッシュターゲットテーブルの更新は、受信されたメッセージについて、ブロック1220によって示されるように完了する。
このようにして、スタッシュターゲットテーブルは、プロセッサコアから受信されたメッセージに応答して、ホームエージェントによって作成及び更新されてもよい。送信側コアがスタッシュ動作のターゲットを知っている場合、ターゲットの識別子をスタッシュメッセージに含めることができる。スタッシュ動作の受信側が更新されたデータのソースを知っている場合、受信側はホームエージェントに登録することができる。他の場合には、ホームエージェントは、プロセッサコア間の相互作用に基づいてスタッシュターゲットを判定する。
一実施形態では、ホームエージェントは、データアドレスに対するスタッシュ要求を第1のプロセッサコアから受信したことに応答して、データアドレスに対するエントリをスタッシュターゲットテーブル内に生成する。データアドレスに関連付けられたデータが1つ以上の第2のプロセッサコアのキャッシュに記憶されているとき、キャッシュ内のデータは、第1のプロセッサコアのキャッシュ内のデータを固有にする、第1のプロセッサコアによる要求に応答して無効化される。ホームエージェントは、データアドレスに対する将来のスタッシュ要求のターゲットとして1つ以上の第2のプロセッサコアを特定するように、エントリを更新する。
データアドレスに関連付けられたデータに対する読み出し要求がホームエージェントによって第2のプロセッサコアから第1のプロセッサコアに送付されるときにも、また、エントリが作成又は更新されてもよい。更新されたエントリは、第2のプロセッサコアを、データアドレスに対するスタッシュ要求のターゲットとして特定する。
より一般的には、第1のプロセッサコアのキャッシュにおいて、第1のデータアドレスに関連付けられたデータのコヒーレンシ状態が固有から共有に、又は共有から固有に変化したことに応答して、ホームエージェントによって、第1のデータアドレスに対するスタッシュターゲットテーブル内のエントリが更新される。
例えば、ホームエージェントは、第1のプロセッサコアからのスタッシュメッセージに応答して、データアドレスに対するスタッシュターゲットテーブル内にエントリを生成し、後で、データアドレスに関連付けられたデータを第2のプロセッサコアに送付することに応答して、第2のプロセッサコアをデータアドレスに対するスタッシュターゲットとして特定するように、エントリを更新することができる。
図13は、様々な代表的な実施形態に係る、コア間スタッシュ動作の相互作用チャート1300である。このチャートは、送信側コア又はプロデューサコアSのタイムライン1302、第1の受信側コアR1のタイムライン1304、及び第2の受信側コアR2のタイムライン1306を示しており、時間が下方に流れている。1308において、送信側コアは、データアドレスAに関連付けられたデータを送信側コアのキャッシュラインに書き込む。1310において、送信コアは、コアR1及びR2をスタッシュターゲットとして示す、データアドレスAに対するスタッシュ命令を実行する。送信側コアSは、スタッシュメッセージ1312を受信側コアR1に送信し、スタッシュメッセージ1314を受信側コアR2に送信する。代替的に、スタッシュメッセージは、すべての他の受信側コアにブロードキャストされ得る。スタッシュメッセージは、アドレスAに関連付けられたデータが送信側コアSにおいて利用可能であるという通知又はヒントを受信側コアに提供する。示される例では、受信側コアR1は、1316において、データを拒否することを選択する一方、受信側コアR2は、1318において、データを受け入れることを選択する。受信側コアR2は、メッセージ1320においてデータを要求し、データは、送付メッセージ1322において送信側コアSから返される。その後、1324において、受信側コアR2は、アドレスAに関連付けられたデータの読み出し命令を実行する。データが受信側コアR2のローカルキャッシュにすでにスタッシュされているので、命令はキャッシュヒットをもたらす。この実施形態では、ホームエージェントは必要とされない。各コアは、データトランザクションを監視して、データコヒーレンシを追跡することができる。更に、各コアは、スタッシュターゲットテーブルを維持することができる。
図14は、様々な代表的な実施形態に係る、更なるコア間スタッシュ動作の相互作用チャート1400である。このチャートは、送信側コア又はプロデューサコアSのタイムライン1402、第1の受信側コアR1のタイムライン1404、及び第2の受信側コアR2のタイムライン1406を示しており、時間が下方に流れている。1408において、送信側コアは、データアドレスAに関連付けられたデータを送信側コアのキャッシュラインに書き込む。1410において、送信側コアは、スタッシュターゲットの特定なしで、データアドレスAに対するスタッシュ命令を実行する。1412において、送信側コアは、スタッシュターゲットテーブルにアクセスする。データアドレスAに対するスタッシュターゲットテーブル内にエントリが存在する場合、スタッシュメッセージは、エントリ内で特定されたスタッシュターゲットの各々に送信される。図示の例では、エントリは、受信側コアR1を唯一のターゲットとして特定し、スタッシュメッセージ1414が受信側コアR1に送信される。この実施形態では、スタッシュメッセージは、1408において書き込まれたデータを含む。1416において、受信側コアR1は、データを受け入れ、それをローカルキャッシュに記憶するか、又はデータを拒否するかを選択することができる。代替的に、受信側コアR1は、データを拒否することを選択することができ、その場合、肯定応答などの応答がプロトコルによって指定され得る。
図13のスタッシュメッセージは代替的に通知ではなくデータを含むことができ、図14のスタッシュメッセージは代替的にデータではなく通知を含むことができることは、当業者には明らかであろう。
図15は、様々な代表的な実施形態に係る、例示的なスタッシュターゲット登録動作の相互作用チャート1500である。このチャートは、第1のプロセッサコアのタイムライン1502、第2のプロセッサコアのタイムライン1504、及び第3のプロセッサコアのタイムライン1506を示しており、時間が下方に流れている。1508において、コア3は、データアドレスAのスタッシュターゲットとして他のコアに登録するための登録命令を実行する。次いで、登録メッセージが、処理システム内の他のコアにブロードキャストされる。この例では、登録メッセージ1510はコア2に送信され、登録メッセージ1512はコア1に送信される。メッセージを受信すると、コアは、それぞれのスタッシュターゲットテーブル(1514においてコア2及び1516においてコア1)にデータアドレスを記録する。次に、アドレスAに対するテーブルエントリは、コア3をスタッシュターゲットとして特定する。このようにして、スタッシュテーブルを各コアで作成することができる。同様に、コア間のデータトランザクションが監視され、どのコアがデータ又はスタッシュ通知を受信することから利益を得るかを予測するために使用され得る。
上述したように、スタッシュメッセージは、データ又はスタッシュ通知を含むことができる。一例を図16に示す。
図16は、様々な代表的な実施形態に係る、コア間スタッシュ動作の更なる例の相互作用チャート1600である。このチャートは、送信側又はプロデューサコアSのタイムライン1602、ホームエージェントのタイムライン1604、及び受信側又はコンシューマコアRのタイムライン1606を示しており、時間が下方に流れている。1608において、送信側コアは、データアドレスAに関連付けられたデータを送信側コアのキャッシュラインに書き込む。1610において、送信側コアは、スタッシュターゲットの指示なしで、データアドレスAに対するスタッシュ命令を実行する。スタッシュ命令は、次の形式をとることができる。
STASH data_address
式中、オペランドdata_addressは、仮想アドレス又はキャッシュラインの何らかの他のインジケータ(アドレスタグなど)であってもよく、あるいは、スタッシュ命令は、1つ以上のスタッシュターゲットを特定してもよい。
図16に示す例では、メッセージ1612は、データアドレスAと、データアドレスAに関連付けられたデータとを含むが、ターゲット識別子は含まない。したがって、1614において、データは、ホームエージェントのシステムキャッシュに記憶される。また、1614において、ホームエージェントは、スタッシュメッセージ1612で特定されたデータアドレスAに基づいてスタッシュターゲットテーブルにアクセスすることによって、スタッシュターゲット(単数又は複数)を判定する。テーブルがデータアドレスAに対するエントリを含み、そのエントリが1つ以上のスタッシュターゲットを特定する場合、スタッシュメッセージ1616は、データアドレスAに対して特定された受信側コアに送信される。コアRがデータアドレスAに関連付けられたデータをプリフェッチすることを選択するとき、コアRは、データに対する読み出し要求1618をホームエージェントに送信する。ホームエージェントは、これに応答して、メッセージ1620において要求データを受信側コアRに送信する。データは、コアRのローカルキャッシュに記憶される。受信側コア、コアRが1622において読み出し動作を実行するとき、データはすでにローカルキャッシュにあり、したがって、読み出しはキャッシュヒットをもたらし、データは最小レイテンシでロードされ得る。
本明細書に記載される実施形態の理解を提供するために、多数の詳細について説明してきた。実施形態は、これらの詳細を伴わずに実施されてもよい。他の例では、記載される実施形態を不明瞭にすることを避けるために、周知の方法、手順、及び構成要素については詳細に説明していない。本開示は、本明細書に記載された実施形態の範囲に限定されるものとみなされるべきではない。
当業者は、本開示が実施例によって説明されていることを認識するであろう。本開示は、説明及び特許請求される本開示の均等物である専用ハードウェア及び/又は専用プロセッサなどのハードウェア構成要素の等価物を使用して実装され得る。同様に、専用プロセッサ及び/又は専用ハードワイヤードロジックを使用して、本開示の代替的な等価の実施形態を構築することができる。
開示されるメカニズムを実装するために使用される専用又は再構成可能ハードウェア構成要素は、例えば、VHDL、Verilog、若しくはRTL(Register Transfer Language、レジスタ転送言語)なのハードウェア記述言語(hardware description language、HDL)の命令によって、又は構成要素及び接続のネットリストによって、記述されてもよい。命令は、機能レベル、論理レベル、又はそれらの組み合わせであってもよい。命令又はネットリストは、命令を解釈し、説明された機能又は論理を実装するデジタルハードウェアを作成する、自動化された設計プロセス又は製造プロセス(高レベル合成と呼ばれることもある)に入力され得る。
HDL命令又はネットリストは、電気的消去可能プログラマブル読み出し専用メモリ(Electrically Erasable Programmable Read Only Memory、EEPROM);不揮発性メモリ(non-volatile memory、NVM);ハードディスクドライブ、フロッピーディスクドライブ、光ディスクドライブなどの大容量記憶装置;光記憶素子、磁気記憶素子、光磁気記憶素子、フラッシュメモリ、コアメモリ、及び/又は本開示から逸脱しない他の等価の記憶技術などの非一時的コンピュータ可読媒体に記憶され得る。そのような代替的な記憶装置は、等価物とみなされるべきである。
本明細書で説明される様々な実施形態は、任意の好適な電子記憶媒体上に記憶され得る、又は任意の好適な電子通信媒体を介して送信され得る、フローチャート形式で大まかに説明されるプログラミング命令を実行する専用ハードウェア、構成可能ハードウェア、又はプログラムされたプロセッサを使用して実装される。これらの要素の組み合わせを使用してもよい。当業者であれば、上述のプロセス及びメカニズムは、本開示から逸脱することなく任意の数の変形形態で実装され得ることを理解するであろう。例えば、本開示から逸脱することなく、実行される特定の動作の順序をしばしば変更することができ、追加の動作を追加することができ、又は動作を削除することができる。そのような変形は、想到され、等価であるとみなされる。
本明細書で詳細に説明されている様々な代表的な実施形態は、例として提示されており、限定として提示されていない。当業者であれば、説明される実施形態の形態及び詳細において様々な変更がなされ得、添付の特許請求の範囲内に留まる等価な実施形態をもたらすことが理解されるであろう。

Claims (23)

  1. データ処理システムの第1のプロセッサコアによって、第1のデータアドレスに関連付けられたデータを第1のキャッシュに書き込むことと、
    前記第1のプロセッサコアによって、前記第1のデータアドレスに対応する仮想アドレスを第1のオペランドとして有するスタッシュ命令を実行することと、
    前記スタッシュ命令の前記第1のデータアドレス又は第2のオペランドに少なくとも部分的に基づいて、前記データ処理システムの第2のプロセッサコアがスタッシュメッセージのスタッシュターゲットであると判定することと、
    前記第1のデータアドレスを含む前記スタッシュメッセージを前記第2のプロセッサコアに送信することと
    前記スタッシュメッセージを受信したことに応答して、前記第2のプロセッサコアが、前記第1のデータアドレスに関連付けられた前記データを前記第2のプロセッサコア内のキャッシュに記憶することと、
    を含む、データ転送の方法。
  2. 前記第1のプロセッサコアが、前記第2のプロセッサコアが前記スタッシュターゲットであると判定することと、前記スタッシュメッセージを前記第2のプロセッサコアに送信することと、を更に含む、請求項1に記載の方法。
  3. 前記スタッシュ命令の前記第2のオペランドは、前記第2のプロセッサコアの識別子を含む、請求項1に記載の方法。
  4. 前記スタッシュメッセージは、前記第1のデータアドレスに関連付けられた前記データを含む、請求項1に記載の方法。
  5. 前記第1のキャッシュは前記第1のプロセッサコアのキャッシュであり、
    前記第2のプロセッサコアが、前記第1のデータアドレスに関連付けられた前記データを前記第2のプロセッサコアの前記キャッシュに記憶することは、
    前記第2のプロセッサコアが、前記第1のデータアドレスに関連付けられた前記データを要求することと、
    前記第1のプロセッサコアが、前記第1のデータアドレスに関連付けられた前記データを前記第2のプロセッサコアに送付することと、
    を含む、請求項1に記載の方法。
  6. 前記判定することは、スタッシュターゲットテーブル内の、前記第1のデータアドレスに関連付けられている第1のエントリにアクセスすることを含む、請求項1に記載の方法。
  7. 前記判定することに先立って、
    前記第2のプロセッサコアによって、前記第1のデータアドレスに対するターゲット登録メッセージを送信することと、
    前記スタッシュターゲットテーブル内に、前記第1のエントリを生成することであって、前記第1のエントリが、前記第2のプロセッサコアを前記第1のデータアドレスに関連付けられたデータのターゲットとして特定する、ことと、
    を更に含む、請求項6に記載の方法。
  8. 前記判定することに先立って、
    前記第1のデータアドレスを求める事前のスタッシュ要求を前記第1のプロセッサコアから受信したことに応答して、前記第1のデータアドレスに対する前記スタッシュターゲットテーブル内に前記第1のエントリを生成することを更に含む、請求項6に記載の方法。
  9. 前記第1のプロセッサコアのキャッシュにおいて、前記第1のデータアドレスに関連付けられた前記データのコヒーレンシ状態が固有から共有に、又は共有から固有に変化したことに応答して、前記スタッシュターゲットテーブル内の前記第1のエントリを更新すること、
    を更に含む、請求項6に記載の方法。
  10. 前記書き込むことに先立って、
    前記第1のデータアドレスに関連付けられた前記データの所有権を求める前記第1のプロセッサコアによる要求に応答して、前記1つ以上の第3のプロセッサコアのキャッシュに記憶された前記第1のデータアドレスに関連付けられたデータを無効化することと、
    前記1つ以上の第3のプロセッサコアを前記第1のデータアドレスに対するスタッシュターゲットとして特定するように、前記スタッシュターゲットテーブル内の前記第1のエントリを更新することと、
    を更に含む、請求項6に記載の方法。
  11. 前記第1のプロセッサコアによって、第1のスタッシュ要求を前記データ処理システムのホームエージェントに送信することを更に含み、前記第1のスタッシュ要求は、前記第1のデータアドレスと、前記データ処理システムの前記第2のプロセッサコアが前記スタッシュメッセージの前記スタッシュターゲットであると前記判定することと、前記スタッシュメッセージを前記第2のプロセッサコアに前記送信することと、を行うように構成された前記ホームエージェントとを含む、
    請求項1に記載の方法。
  12. 前記判定することは、スタッシュターゲットテーブル内の、前記第1のデータアドレスに関連付けられている第1のエントリにアクセスすることを含む、請求項11に記載の方法。
  13. 前記判定することに先立って、
    前記第1のデータアドレスを求める事前のスタッシュ要求を前記第1のプロセッサコアから受信したことに応答して、前記ホームエージェントによって、前記第1のデータアドレスに対する前記スタッシュターゲットテーブル内に前記第1のエントリを生成すること
    を更に含む、
    請求項12に記載の方法。
  14. 前記判定することに先立って、
    前記ホームエージェントによって、前記第1のデータアドレスに関連付けられた前記データに対する読み出し要求を、前記第2のプロセッサコアから前記第1のプロセッサコアに送付することと、
    前記ホームエージェントによって、前記スタッシュターゲットテーブル内の前記第1のエントリを更新又は作成して、前記第2のプロセッサコアを前記第1のデータアドレスのスタッシュターゲットとして特定することと、
    前記第1のプロセッサコアによって、前記第2のプロセッサコアの前記キャッシュに記憶するために、前記第1のデータアドレスに関連付けられた前記データを前記第2のプロセッサコアに送付ことと、
    を更に含む、請求項13に記載の方法。
  15. 前記第1のプロセッサコアのキャッシュにおいて、前記第1のデータアドレスに関連付けられた前記データのコヒーレンシ状態が固有から共有に、又は共有から固有に変化したことに応答して、前記スタッシュターゲットテーブル内の前記第1のエントリを更新すること、
    を更に含む、請求項13に記載の方法。
  16. 前記第2のプロセッサコアが、前記第1のデータアドレスに関連付けられた前記データを前記第2のプロセッサコアの前記キャッシュに記憶することは、
    前記第2のプロセッサコアによって、前記ホームエージェントに要求を送信することと、
    前記ホームエージェントが、前記第1のプロセッサコアにメッセージを送信することと、
    前記第1のプロセッサコアが、前記第1のデータアドレスに関連付けられた前記データを前記第2のプロセッサコアに送付することと、
    を含む、請求項11に記載の方法。
  17. 前記複数のプロセッサコアのキャッシュへのデータ割り当て及び割り当て解除する、データ処理システムの複数のプロセッサコアからのトランザクションを監視することと、
    前記監視されたトランザクションに少なくとも部分的に基づいて、前記複数のプロセッサコアのうちの1つ以上のプロセッサコアが、第1のデータアドレスに関連付けられたデータに対するスタッシュターゲットコアであると予測することと、
    前記複数のプロセッサコアのうちの第1のプロセッサコアによって、前記第1のデータアドレスに対する第1のスタッシュ命令を実行することと、
    前記スタッシュターゲットコアに、前記第1のデータアドレスに関連付けられ、かつ前記第1のプロセッサコアによって作り出された前記データを通知するスタッシュメッセージを、前記スタッシュターゲットコアに送信することと、
    前記スタッシュメッセージを受信したことに応答して、前記1つ以上のスタッシュターゲットコアのうちの第2のプロセッサコアが、前記第1のデータアドレスに関連付けられた前記データを前記第2のプロセッサコアのキャッシュに記憶することと、
    を含む、データ転送の方法。
  18. 前記第1のスタッシュ命令を実行することに先立って、
    前記第1のプロセッサコアによって、前記第1のデータアドレスに対する第2のスタッシュ命令を実行することと、
    前記第2のスタッシュ命令の実行に応答して、前記第1のデータアドレスに対するスタッシュターゲットテーブル内にエントリを記憶することと、
    前記第2のプロセッサコアが前記第1のデータアドレスに関連付けられた前記データの共有者になること、又は共有者でなくなることに応答して、前記第2のプロセッサコアをスタッシュターゲットコアとして特定するように、前記スタッシュターゲットテーブル内の前記エントリを更新することと、
    を更に含む方法であって、
    前記複数のプロセッサコアのうちの1つ以上のプロセッサコアが、前記第1のデータアドレスに関連付けられたデータに対するスタッシュターゲットコアであると前記予測することは、前記第1のデータアドレスに対する前記スタッシュターゲットテーブル内の前記エントリにアクセスすることを含む、
    請求項17に記載の方法。
  19. 前記第1のスタッシュ命令を実行することに先立って、
    前記第2のプロセッサコアによって、前記第1のデータアドレスに対するレジスタ命令を実行することと、
    前記レジスタ命令に応答して、スタッシュターゲットテーブル内に、前記第1のデータアドレスに対するスタッシュターゲットコアとして前記第2のプロセッサコアを特定するエントリを作成又は更新することと、
    を更に含む方法であって、
    前記複数のプロセッサコアのうちの1つ以上のプロセッサコアが、前記第1のデータアドレスに関連付けられたデータに対するスタッシュターゲットコアであると前記予測することは、前記第1のデータアドレスに対する前記スタッシュターゲットテーブル内の前記エントリにアクセスすることを含む、
    請求項17に記載の方法。
  20. データ処理システムであって、
    インターコネクトファブリックと、
    前記インターコネクトファブリックによって相互接続された複数のプロセッサコアであって、前記複数のプロセッサコアのうちの第1のプロセッサコアは、第1のデータアドレスに関連付けられたデータをキャッシュに書き込み、前記第1のデータアドレスに対する第1のスタッシュ命令を実行するように構成されている、複数のプロセッサコアと、
    スタッシュターゲットテーブル制御回路であって、
    複数のプロセッサコアのキャッシュにデータ割り当て及び割り当て解除する、データ処理システムの前記複数のプロセッサコアからのトランザクションを監視し、
    スタッシュターゲットテーブル内にエントリを作成及び更新し、
    前記第1のスタッシュ命令に応答して、前記複数のプロセッサコアのうちの1つ以上のプロセッサコアが、第1のデータアドレスに関連付けられたデータに対するスタッシュターゲットコアであると予測し、
    前記スタッシュメッセージは、前記第1のデータアドレスに関連付けられ、かつ前記第1のプロセッサコアによって作り出された前記データを、前記スタッシュターゲットコアに通知するように構成されたスタッシュメッセージを、前記スタッシュターゲットコアに送信する、
    ように構成されている、スタッシュターゲットテーブル制御回路と、
    を備え、
    前記1つ以上のスタッシュターゲットコアのうちの第2のプロセッサコアは、前記スタッシュメッセージを受信したことに応答して、前記第1のデータアドレスに関連付けられた前記データを前記第2のプロセッサコアのキャッシュに記憶するように構成されている、
    データ処理システム。
  21. 前記インターコネクトファブリックによって前記複数のプロセッサコアに結合され、前記データ処理システムのコヒーレンスの地点及びシリアル化を提供するように構成されている、ホームエージェントを更に備え、
    前記ホームエージェントは、前記スタッシュターゲットテーブル制御回路を含む、
    請求項20に記載のデータ処理システム。
  22. 前記第1のプロセッサコアは、前記スタッシュターゲットテーブル制御回路を含む、請求項20に記載のデータ処理システム。
  23. 前記スタッシュターゲットテーブル制御回路は、
    前記第1のプロセッサコアからのスタッシュ命令又は前記第2のプロセッサコアからのレジスタ要求に応答して、前記スタッシュターゲットテーブル内にエントリを作成し、
    前記第2のプロセッサコアから送信された読み出し要求又はスタッシュレジスタ要求に応答して、前記第2のプロセッサコアをスタッシュターゲットとして前記エントリに挿入し、
    前記第1のプロセッサコアからのスタッシュ命令、又は前記第1のプロセッサコアによる共有から所有への第1のデータアドレスに関連付けられた前記データのコヒーレンシ状態の変更に応答して、前記第1のプロセッサコア以外の前記データの共有者をスタッシュターゲットとして前記エントリに挿入する
    ように構成されている、請求項20に記載のデータ処理システム。
JP2022569593A 2020-05-27 2021-05-25 コア間キャッシュスタッシング及びターゲット発見 Pending JP2023527735A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/884,359 2020-05-27
US16/884,359 US11263137B2 (en) 2020-05-27 2020-05-27 Core-to-core cache stashing and target discovery
PCT/GB2021/051262 WO2021240140A2 (en) 2020-05-27 2021-05-25 Core-to-core cache stashing and target discovery

Publications (1)

Publication Number Publication Date
JP2023527735A true JP2023527735A (ja) 2023-06-30

Family

ID=76305944

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022569593A Pending JP2023527735A (ja) 2020-05-27 2021-05-25 コア間キャッシュスタッシング及びターゲット発見

Country Status (6)

Country Link
US (1) US11263137B2 (ja)
EP (1) EP4158487A2 (ja)
JP (1) JP2023527735A (ja)
KR (1) KR20230017244A (ja)
CN (1) CN115605849A (ja)
WO (1) WO2021240140A2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11888938B2 (en) * 2021-07-29 2024-01-30 Elasticflash, Inc. Systems and methods for optimizing distributed computing systems including server architectures and client drivers
US20240061613A1 (en) * 2022-08-18 2024-02-22 Arm Limited Technique for controlling stashing of data

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8370294B2 (en) * 2009-05-06 2013-02-05 Microsoft Corporation File stashing for storage media
US8244764B2 (en) * 2009-07-31 2012-08-14 Microsoft Corporation Stashing of locally persisted data to network accessible storage
KR101598746B1 (ko) * 2012-10-22 2016-02-29 인텔 코포레이션 고성능 상호연결 물리 계층
US10146595B2 (en) * 2014-10-20 2018-12-04 Mediatek Inc. Computer system for notifying signal change event through cache stashing
US9720830B2 (en) * 2015-07-10 2017-08-01 Macom Connectivity Solutions, Llc Systems and methods facilitating reduced latency via stashing in system on chips
GB2567466B (en) * 2017-10-12 2020-01-22 Advanced Risc Mach Ltd Cache stashing in a data processing system
US10733106B2 (en) * 2017-11-02 2020-08-04 Arm Ltd I/O driven data routing and cache allocation
US10664419B2 (en) * 2017-11-02 2020-05-26 Arm Limited I/O driven data transfer in a data processing network
US10860487B2 (en) 2019-04-17 2020-12-08 Chengdu Haiguang Integrated Circuit Design Co. Ltd. Multi-core processing device and method of transferring data between cores thereof
US10949292B1 (en) * 2019-10-07 2021-03-16 Arm Limited Memory interface having data signal path and tag signal path

Also Published As

Publication number Publication date
US11263137B2 (en) 2022-03-01
CN115605849A (zh) 2023-01-13
US20210374059A1 (en) 2021-12-02
WO2021240140A2 (en) 2021-12-02
WO2021240140A3 (en) 2022-02-10
EP4158487A2 (en) 2023-04-05
KR20230017244A (ko) 2023-02-03

Similar Documents

Publication Publication Date Title
US7669010B2 (en) Prefetch miss indicator for cache coherence directory misses on external caches
US7657710B2 (en) Cache coherence protocol with write-only permission
EP2430551B1 (en) Cache coherent support for flash in a memory hierarchy
US7698508B2 (en) System and method for reducing unnecessary cache operations
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
US5848254A (en) Multiprocessing system using an access to a second memory space to initiate software controlled data prefetch into a first address space
US20150106567A1 (en) Computer Processor Employing Cache Memory With Per-Byte Valid Bits
US20020053004A1 (en) Asynchronous cache coherence architecture in a shared memory multiprocessor with point-to-point links
US8762651B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US20050188159A1 (en) Computer system supporting both dirty-shared and non dirty-shared data processing entities
US20100235577A1 (en) Victim cache lateral castout targeting
US8423736B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US7620954B2 (en) Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors
JP2008513907A (ja) 統合キャッシュにおける望ましくない置換動作を低減するための先行犠牲選択のための方法及び装置
US6345341B1 (en) Method of cache management for dynamically disabling O state memory-consistent data
JP2023527735A (ja) コア間キャッシュスタッシング及びターゲット発見
CN110554975A (zh) 提供死块预测以用于确定是否在cache设备中对数据高速缓存
US6615321B2 (en) Mechanism for collapsing store misses in an SMP computer system
US7024520B2 (en) System and method enabling efficient cache line reuse in a computer system
JP5319049B2 (ja) キャッシュシステム
US6397303B1 (en) Data processing system, cache, and method of cache management including an O state for memory-consistent cache lines
US6895476B2 (en) Retry-based late race resolution mechanism for a computer system
US11314645B1 (en) Cache stash relay
US6349368B1 (en) High performance mechanism to support O state horizontal cache-to-cache transfers
US20020112130A1 (en) Store collapsing mechanism for SMP computer system

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20221205

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20230315

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240417