JP2021522610A - データ処理ネットワーク内の転送プロトコル - Google Patents

データ処理ネットワーク内の転送プロトコル Download PDF

Info

Publication number
JP2021522610A
JP2021522610A JP2020561745A JP2020561745A JP2021522610A JP 2021522610 A JP2021522610 A JP 2021522610A JP 2020561745 A JP2020561745 A JP 2020561745A JP 2020561745 A JP2020561745 A JP 2020561745A JP 2021522610 A JP2021522610 A JP 2021522610A
Authority
JP
Japan
Prior art keywords
data
request
node
snoop
received
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.)
Granted
Application number
JP2020561745A
Other languages
English (en)
Other versions
JP7284191B2 (ja
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 JP2021522610A publication Critical patent/JP2021522610A/ja
Application granted granted Critical
Publication of JP7284191B2 publication Critical patent/JP7284191B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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
    • 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)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0097Relays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

コヒーレント相互接続を介して結合された1つまたは複数のRequest NodeおよびHome Nodeを備えるデータ処理ネットワークにおいて、Request NodeがHome Nodeにデータを要求する。要求されたデータが、相互接続を介して、Request Nodeに複数のデータビートとして送られ、複数のデータビートのうちの最初のデータビートが第1の時刻に受信され、最後のデータビートが第2の時刻に受信される。前記最初のデータビートを受信したことに応答して、Request NodeがHome Nodeに確認メッセージを送る。確認メッセージの受信時に、Home Nodeは、読取りトランザクションに割り振られたリソースを解放する。さらに、Home Nodeは、要求されたデータのすべてのビートがRequest Nodeによって受信される前に、Request Nodeに対する、データを求めるスヌープ要求をRequest Nodeに送ることを可能にするように構成される。

Description

マルチプロセッサデータ処理システムが、コヒーレント相互接続を介して接続されたプロセッサ、アクセラレータ、IO、メモリなどの様々なタイプのノードを有するオンチップネットワークとして構成され得る。高レベルでは、要求側、ホーム、およびスレーブという3つの基本ノードタイプがある。Request Node(RN)は、読取りおよび書込みを含む、相互接続に対するプロトコルトランザクションを生成するノードである。これらのノードは、完全コヒーレントプロセッサまたはIOコヒーレントデバイスであり得る。Home Node(HN)は、RNからプロトコルトランザクションを受信するノードである。システム内の各アドレスは、そのアドレスに対する要求についてのPoint-of-Coherency(PoC)およびPoint of Serialization(PoS)として働くHomeを有する。典型的な実装では、ある範囲のアドレスについてのHomeが、Home Nodeとして共にグループ化される。これらのHome Nodeのそれぞれは、システムレベルキャッシュおよび/または冗長なスヌープを削減するためのスヌープフィルタを含み得る。
Slave Node(SN)は、HNから要求を受信し、要求を完了するノードである。SNは、周辺メモリまたはメインメモリから使用され得る。
共有データリソースからのデータが、いくつかの異なるプロセッサによってアクセスされ得、データのコピーが、迅速なアクセスのためにローカルキャッシュ内に記憶され得る。すべてのコピーが最新であることを保証するために、キャッシュコヒーレンスプロトコルが使用され得る。プロトコルは、アクセス中のデータのコピーを有するRNとスヌープメッセージを交換することを含み得るコヒーレンシアクションをHNが実施することを含み得る。
HNは、アドレスへのアクセスを先着順にシリアル化し得る。たとえば、現トランザクションが完了するまで、HNの指定のデバイスおよびリソースへのアクセスが予約され得る。この手法の欠点は、必要以上に長い間にわたってHNリソースが予約され得、それがシステム性能に悪影響を及ぼし得ることである。
添付の図面は、様々な代表的実施形態をより完全に記述するために使用され、開示される代表的実施形態およびその固有の利点をより良く理解するために当業者によって使用され得る視覚的表現を提供する。これらの図面では、同様の参照番号が、対応する要素を識別する。
様々な代表的実施形態によるデータ処理ネットワークのブロック図である。 データ処理ネットワーク内の従来型データアクセスについてのトランザクション流れ図である。 様々な代表的実施形態による、データアクセスについてのトランザクション流れ図である。 様々な代表的実施形態による、データアクセスについてのトランザクション流れ図である。 様々な代表的実施形態による、データ処理ネットワークのHome Nodeの動作の方法の流れ図である。 様々な代表的実施形態による、データ処理ネットワークのRequest Nodeの動作の方法の流れ図である。 様々な代表的実施形態による、データ処理ネットワークのRequest Nodeの動作の別の方法の流れ図である。 様々な代表的実施形態による、データ処理ネットワークのRequest Nodeの動作のさらに別の方法の流れ図である。
本明細書において説明される様々な装置およびデバイスは、データ処理システム内の着信データの自動ルーティングおよび割振りのための機構を提供する。
本開示は、多くの異なる形態の実施形態が可能であるが、本開示が本開示の原理の一例と見なされるべきであり、図示および説明される特定の実施形態に本開示を限定するものではないという理解と共に、特定の実施形態が図面に示され、本明細書において詳細に説明される。以下の説明では、図面のいくつかの図中の同一の部分、類似の部分、または対応する部分を説明するために同様の参照番号が使用される。
本文書では、単にあるエンティティまたはアクションを別のエンティティまたはアクションと区別するために、第1と第2、上端と下端などの相関的な用語が、そのようなエンティティまたはアクションの間の何らかの実際のそのような関係または順序を必ずしも必要することなく、または示唆することなく使用され得る。「備える」、「含む」という用語、またはそれらの任意の他の変形は、非排他的包含をカバーするものとし、したがって、要素のリストを含むプロセス、方法、物品、または装置がそれらの要素のみを含むのではなく、明白に列挙されない、またはそのようなプロセス、方法、物品、または装置に固有の他の要素を含み得る。「を備える(comprises ...a)」に先行する要素は、さらなる制約なしに、要素を含むプロセス、方法、物品、または装置内の追加の同一の要素の存在を除外しない。
本文書全体にわたる「一実施形態(one embodiment)」、「ある実施形態(certain embodiment)」、「一実施形態(an embodiment)」、または類似の用語への参照は、実施形態に関連して説明される特定の特徴、構造、または特性が本開示の少なくとも1つの実施形態内に含まれることを意味する。したがって、本明細書全体にわたる様々な場所でのそのような語句の出現は、必ずしもすべて同一の実施形態を参照しているわけではない。さらに、特定の特徴、構造、または特性が、限定なしに1つまたは複数の実施形態において任意の適切な方式で組み合わされ得る。
本明細書での「または」という用語は、いずれか1つまたはいずれかの組合せを意味する包含的論理和と解釈されるべきである。したがって、「A、B、またはC」は、「A; B; C; AおよびB; AおよびC; BおよびC; A、B、およびCのうちのいずれか」を意味する。要素、機能、ステップ、または動作の組合せが何らかの形で固有に相互排他的であるときにのみ、この定義の例外が生じる。
図を簡単にし、見やすくするために、対応する要素または類似の要素を示すために、各図の間で参照番号が繰り返され得る。本明細書において説明される実施形態の理解を与えるために多数の詳細が述べられる。実施形態は、これらの詳細なしに実施され得る。他の場合には、記載の実施形態を曖昧にするのを避けるために、周知の方法、手順、および構成要素が詳細には説明されていない。本明細書において説明される実施形態の範囲に説明が限定されると見なされるべきではない。
本開示は、データフェッチ動作を加速するためのデータ処理ネットワーク内の機構に関する。開示される機構は、相互接続内のデータフェッチトランザクションの存続時間を削減することに加えて、相互接続構成要素を完全に利用するのに必要とされるリソース数をも削減する。さらに、開示される機構は、相異なるソースからの要求応答対をチェーニングすることによって、相互接続内のトランザクションのスループットを改善する。
図1は、様々な代表的実施形態によるデータ処理システム100のブロック図である。いくつかの処理コアクラスタ102(Request Node(RN)と呼ばれる)が、コヒーレント相互接続104を介してデータリソースに結合される。データが入力/出力(I/O)要求側ノード(RN-I)を介して受信される。図示される例では、RN-I 106aが、ネットワーク108からデータを受信するネットワークインターフェースコントローラ(NCI)を備え、RN-I 106bがI/Oデバイス112からデータを受信する。I/Oデバイス112は、たとえばperipheral component interconnect express(PCIe)バス、直接メモリアクセス(DMA)ユニット、またはネットワークアクセラレータを介して結合され得る。データは、1つまたは複数のメモリコントローラ116を介してコヒーレント相互接続104に結合される1つまたは複数のメモリまたは記憶デバイス114内に記憶され得る。Home Node(HN)118および120がシステムレベルキャッシュを含み得る。各Home Node(HN)は、所与のシステムアドレスのセットに記憶されたデータのためのPoint of Serializationおよび/またはPoint of Coherenceとして働く。118などのHome Node(HN-F)は、ローカルリソースのためのホームであり得る。あるいは、120などのHome Node(HN-I)は、オフチップリソースまたはオンチップ周辺デバイスに対するインターフェースを提供し得る。Request Node 102によって要求されたデータが、HNのシステムレベルキャッシュから、別のRequest Nodeから、またはメモリコントローラ116を介してメモリ114から取り出され得る。メモリコントローラはSlave Node(SN)の例である。
複数のRNが同一のメモリ位置にアクセスしようと試みるときの競合を回避するために、Home Node 118は、読取り要求および他のトランザクションを先着順などシリアルに処理するPoint of Serializationとして働く。コヒーレント相互接続104は、ノード間のデータ(DAT)チャネルを介してデータを転送するために使用される。さらに、各アクセストランザクションを制御するためにメッセージングプロトコルが使用され、アクセストランザクションでは、要求および応答が、相互接続内のREQ RSPチャネルを介して送られる。最後に、データコヒーレンスを保証するために、「スヌープ」メッセージが相互接続内のSNPチャネルを介して送られる。
本開示の一態様は、データ処理ネットワークの性能および効率の改善を実現する、ノードのハードウェア内で実装された改良型のメッセージングおよびデータ転送機構に関する。
一実施形態では、データ処理ネットワークが、共有データリソース(たとえば114)にアクセスするように構成された1つまたは複数の要求ノード(102)と、共有データリソースのデータについてのPoint of Coherencyを提供するHome Node(たとえば118)と、1つまたは複数の要求ノードとHome Nodeとの間を結合するように構成されたコヒーレント相互接続(104)とを備える。共有データリソース内の第1のアドレスのデータを読み取るために、要求ノードはHome Nodeに要求を送る。たとえば、データは、1キャッシュラインのサイズを有するブロックで転送され得る。コヒーレント相互接続内のDATバスがキャッシュラインよりも小さい幅を有するとき、要求されたデータが、DATチャネル上の相互接続を通じて、複数のデータビートとして送られる。これらのデータビートは、相互接続を通る相異なる経路を取り得、データビートが送られた順序で到着するようには保証されない。たとえば、複数のデータビートのうちの最初のデータビートが第1の時刻に受信され、最後のデータビートが第1の時刻の後の第2の時刻に受信され得るが、これらは、相互接続に渡された最初および最後のビートに対応しないことがある。
本開示の一態様によれば、要求ノードは、最初のデータビートを受信したことに応答して、Home Nodeに確認メッセージを送る。一方、従来のシステムは、最後のデータビートが受信されるまで、確認を送ることを遅延させる。
Home Nodeに確認メッセージを送った後に、要求ノードはHome Nodeからスヌープメッセージを受諾する。要求ノードは、すべての要求したデータビートが到着したときを追跡するように構成され、その間に到着するスヌープを他のスヌープとは異なる方式で処理する。一方、従来のシステムでは、Request Nodeは、すべてのデータビートが受信されるまで確認を送らないように構成された。これは、Home Nodeがこの期間中にスヌープを送ることを妨げる。したがって、Home Nodeのリソースが、より長い時間枠にわたって利用される。
Home Nodeは、第3の時刻に、第1のアドレスのデータを読み取る要求を受信し、データ処理ネットワーク内の様々な場所の、要求されたデータのコピーの存在に応じて、第1のアドレスのデータについてのコヒーレンスアクションを実施する。次いで、Home Nodeは、要求されたデータを複数のデータビートとして要求ノードへ送信させる。第4の時刻に、確認メッセージが要求ノードから受信される。第3の時刻と第4の時刻との間の時間枠では、Home Nodeは、第1のアドレスのデータを求めるいかなるスヌープ要求もRequest Nodeに送らない。しかしながら、第4の時刻の後に、Home Nodeは、第1のアドレスのデータを求めるスヌープ要求をRequest Nodeに送ることを可能にする。
一実施形態では、第1のアドレスのデータを求めるHome Nodeからのスヌープ要求が第1の時刻と第2の時刻との間の時間枠内に受信されたとき、Request Nodeはスヌープ要求をバッファリングし得る。複数のデータビートのうちの最後のデータビートが受信された後、スヌープ要求に応答してデータが送られ得る。
別の実施形態では、第1のアドレスのデータを求めるHome Nodeからのスヌープ要求が第1の時刻と第2の時刻との間の時間枠内に受信されたとき、Request Nodeは、要求されたデータのデータビートが受信されたときにそれを転送する。
Home Nodeは、読取り要求が受信されたとき、Home Nodeのリソースを割り振り、複数のデータビートのうちの最初のビートの受信を確認する確認メッセージがRequest Nodeから受信されたとき、リソースを解放するように構成される。
これらの機構は、より短い時間枠にわたってHome Nodeリソースを割り振り、他のトランザクションのためのリソースを解放することを可能にする。これらの機構はまた、より少ない待ち時間で、複数のRequest Node間でデータを共有することを可能にする。
図2は、データ処理ネットワーク内の従来型データアクセスについてのトランザクション流れ図である。図2では、垂直バー202および204が、それぞれRequest Node(RN)およびHome Node(HN)についてのタイムラインを示し、時間が上端から下端に流れる。時刻T1に、RNが、読取りアドレスを求めてHome NodeにRead要求206を発行する。要求されたデータがHNのキャッシュ内にあると仮定すると、HNは、(図示される例では、CompData0、CompData1、CompData2、およびCompData3という4つのデータビートとして)要求されたデータ208をRNに送る。「CompData」メッセージは、データと、トランザクションがそのデータに関して完全であるという指示とを含む。すなわち、RNは、受信した読取りデータを修正し得るアクションがないので、読み取ったトランザクションが大域的に観測されると見なし得る。
すべての通信がコヒーレント相互接続を介して送信される。データは、相互接続を介して複数のデータビートとしてRNに送信され得る。要求されたデータのすべてがRNによって受信されると、完了確認(CompAck)メッセージ210がRNからHNに送られる。したがって、トランザクションの持続時間は、RNについてT1〜T2であり、HNについてT3〜T4である。期間T3〜T4の間、HNは、トランザクションのためのリソースを割り当てる(トラッカなど)。さらに、HNは、ReadトランザクションにおいてアクセスされたアドレスについてRNにスヌープメッセージを送ることを控える。さもなければ、たとえば、HNからのデータの到着より前に、スヌープ要求がRNに到着し得る。
データとスヌープは相互接続を通る相異なる経路を取り得、それによってスヌープはDataの一部の前にRNに到着するので、HNは、スヌープを送る前にCompAck応答210を待機しなければならない。
要求されたデータがHNのキャッシュ内に存在しない場合、メモリコントローラ、I/Oデバイス、またはオフチップデータリソースなどのSlave Node(SN)にデータが要求される。要求されたデータはSNから(コヒーレント相互接続を介して)直接的に送られ、またはHN(およびコヒーレント相互接続)を介してRNに送られ得る。
図3〜図4は、様々な代表的実施形態による、データ処理ネットワーク内のデータアクセスについての機構のトランザクション流れ図である。図および以下の関連する議論は、例示的トランザクション内に存在するトランザクション構造および依存関係を説明する。図は、別々のDataおよびHome応答を伴うトランザクションについての依存関係を示す。
図3は、様々な代表的実施形態による、データ処理ネットワーク内のデータアクセスについてのトランザクション流れ図である。図2と同様に、図3では、垂直バー302、304、および306が、それぞれRequest Node(RN)、Home Node(HN)、およびSlave Node(SN)についてのタイムラインを示し、時間が上端から下端に流れる。時刻T1に、RNが、読取りアドレスを求めてHome NodeにRead要求308を発行する。要求されたデータがHNのキャッシュ内にない場合、ReadNoSnp要求310が適切なSN(たとえば、メモリコントローラなど)に送られる。SNは、要求されたデータをRNに(4つのデータビート312、314、316、318として)送る。相互接続を通る相異なる経路を取って、ビートが異なる順番で到着し得ることに留意されたい。図2に示される機構では、RNは、第1のデータがRNに到着した時刻T2に、HNにCompAck 320を送る。HNがCompAck 320を受信したとき、HNは、Readトランザクションに割り振られたリソースを解放する。HNのリソースは時間枠T5〜T6にわたって使用される。一方、図2に示される機構では、CompAck 322が時刻T3に送られていることになる。HNのリソースは、時間枠T5〜T7にわたって占有されることになり、時間枠T5〜T7は、開示される機構についての期間T5〜T6よりもかなり長い。
トランザクションがHNにおいて(すなわち、時刻T6に)完了すると、HNは、RNに到着するスヌープメッセージを送信するように要求される場合、自由にそうすることができる。RNは、スヌープされたアドレスについてデータが要求されていることを認識しており、すべての要求されたデータがRNによって受信される時刻T3まで、スヌープメッセージの処理を遅延させる。RNがCompAck確認を与えるとき、RNは、その後にスケジューリングされる任意のトランザクションについてのスヌープ危険に対処する責任を受け入れることを示している。
前と同様に、要求されたデータがHNのキャッシュ内に存在する場合、データがHNからRNに直接的に送られ、SNとの間でメッセージは交換されない。
図3に示される機構は、HNのリソースがReadトランザクションに割り振られる時間枠を削減し、それによって全体のシステム性能の向上を可能にする。
図4は、様々な代表的実施形態による、データ処理ネットワーク内のデータアクセスについての別のトランザクション流れ図である。図4では、垂直バー402、404、および406が、Request Node RN1、RN2、およびRN3についてのタイムラインを示し、一方、垂直バー408および410が、それぞれHome Node(HN)およびSlave Node(SN)についてのタイムラインを示し、時間が上端から下端に流れる。時刻T1に、HNが、読取りアドレスを求めるRN1からReadShared要求412を受信する。その後で、HNは、RN2およびRN3から、ReadShared2およびReadShared3と示される要求をそれぞれ受信する。HNはPoint of Serialization(PoS)として働き、これらの要求を、受信された順序で処理する。HNはまた、Point of Coherency(PoC)として働き、要求412が受信されたとき、コヒーレンシアクションを実施する。図示される例では、HNはSlave NodeにReadNoSnpメッセージ414を送る。それに応答して、SNは、要求されたデータを、CompData0(416)、CompData1、CompData2、およびCompData3(418)と示される4つのビートとして要求側ノードRN1に送る。最初のデータビート(CompData0、416)がRN1において受信されたとき、図3を参照しながら上記で論じたように、RN1は、HNにCompAck 420メッセージを送る。HNは、時刻T2にCompAckメッセージ420を受信し、次いでReadトランザクションに割り振られたリソースを解放することができる。具体的には、HNは、Snoop2などのスヌープ要求をRN1に送ることが許可される。
RN2およびRN3がRN1と同一の共有データを要求したとき、データがRN1から転送される。CompData0がRN2に到着したとき、RN2は、CompAck2と示されるCompAckメッセージ422をHNに送る。HNは、時刻T3にCompAck2メッセージ422を受信し、次いでSnoop3などのスヌープ要求をRN2に送ることが許可される。同様に、CompData0がRN3に到着したとき、RN3は、CompAck3と示されるCompAckメッセージ424をHNに送る。HNは、時刻T4にCompAck3メッセージ424を受信し、次いでRN3にスヌープ要求を送ることが許可される。このようにして、HNのリソースが、時間枠T1〜T2にのみ割り振られる。
RN自体の要求についてデータのすべてのビートが受信される前のスヌープに応答して、RNがデータを提供するとき、受信されたデータは一定の制約と共に扱われる。これらの制約はスヌープのタイプに依存する。
スヌープが非無効化型(non-invalidating)であり、SnpOnceメッセージではないとき、Request Nodeにおいてラインが使用され、共有状態内にキャッシュされ得る。キャッシュされたコピーは、Request Nodeによって修正されてはならない。
スヌープがSnpOnceメッセージであるとき、Request Nodeにおいてラインが使用され得、任意の状態内にキャッシュされ、修正され得る。
スヌープが無効化型スヌープであるとき、受信されたデータが1度だけ使用され、削除され得、キャッシュされてはならない。
すべての上記のケースでは、Request Nodeの要求がコアからの記憶の結果であったとき、受信されたデータが修正され得るが、修正されたデータはスヌープ応答に転送されなければならず、スヌープが非無効化型である場合、修正されたデータがキャッシュされ得るが、修正されてはならない。スヌープが無効化型である場合、修正されたデータはキャッシュされるべきではない。
開示される機構は、危険を有するリソースおよび他のトランザクションリソースをHome Nodeが早期に解放することを可能にし、Home Nodeリソースを最小限のオーバヘッドで最適に利用することを可能にする。さらに、これはシステムサイズにうまくスケーリングする。相互接続サイズ、したがってデータパケット横断待ち時間の増大によって、それに比例してHome Nodeリソースを向上させる必要がないからである。
図5は、代表的実施形態による、データ処理ネットワーク内のHome Nodeの動作500の方法の流れ図である。開始ブロック502の後に、ブロック504において、読取り要求がHNによって受信される。ブロック506において、リソースがHN内で予約され、要求された読取りアドレスに対するスヌープがブロックされる。要求されたデータがHNのシステムキャッシュ内に存在しない場合、判定ブロック508からの否定的分岐によって示されるように、ブロック510において、データを求める要求(たとえば、ReadNoSnp)が適切なSlave Nodeに送られる。そうでない場合、判定ブロック508からの肯定的分岐によって示されるように、ブロック512において、システムキャッシュからのデータの転送が開始される。判定ブロック514において、HNは、第1のデータが到着したことを示すCompAckメッセージがRNから受信されるまで待機する。CompAckメッセージが受信されたとき、判定ブロック514からの肯定的分岐によって示されるように、ブロック516において、HNは、HNの割り振られたリソースを解放し、RNへのスヌープの送信を可能にする。次いで、トランザクションへのHNの参加が完了し、それが終了ブロック518によって示される。
図5は、データ処理ネットワーク内のデータ転送の方法の一実施形態を示す。Home Nodeは、第1の時刻に、ネットワーク内の第1のアドレスのデータを読み取る要求を受信し、要求は、データ処理ネットワークのRequest Nodeからコヒーレント相互接続を介して送られたものである。Home Nodeは、データ処理ネットワーク内の要求されたデータのコピーの存在に応じて、第1のアドレスのデータについてのコヒーレンスアクションを実施する。これは、要求されたデータのコピーを有するネットワークのデバイスにスヌープメッセージを送ることを含み得る。データコピーのコヒーレンス状態は変化し得、かつ/またはたとえばデータがメモリに書き戻され得る。次いで、Home Nodeは、要求されたデータを複数のデータビートとしてRequest Nodeへ送信させる。たとえば、データがHome Nodeのシステムキャッシュ内に存在するとき、データがHome Nodeから送信され得る。あるいは、データが、データのコピーを有する別のRequest Nodeから、またはメモリ管理ユニットなどのSlave Nodeから送信され得る。最初のデータビートがRequest Nodeによって受信されたとき、Request NodeはHome Nodeに確認メッセージを送る。第1の時刻と第2の時刻との間の時間枠において、Home Nodeは、第1のアドレスのデータを求める他のRequest Nodeからデータ要求を受信し得る。しかしながら、Home Nodeは、この時間枠の間、データを求めるRequest Nodeにいかなるスヌープ要求も送らない。
第2の時刻の後に、Home Nodeは、第1のアドレスのデータを求めるスヌープ要求がRequest Nodeに送られることを可能にする。
Home NodeがRequest Nodeから読取り要求を受信したとき、Home Nodeは、コヒーレンシアクションの実施およびスヌープメッセージの制御を可能にするようにHome Nodeのリソースを割り振る。複数のデータビートのうちの最初のビートの受信を確認する確認メッセージがRequest Nodeから受信されると、Home Nodeのリソースが解放される。
一方、従来のシステムでは、Request Nodeは、すべてのデータビートが受信されるまで、要求したデータの受信を確認しない。その結果、Home Nodeリソースが、より長い時間枠にわたって使用される。
読取り要求がHome Nodeによって受信されたとき、Home Nodeは、データ処理ネットワーク内の、要求されたデータのコピーが記憶される1つまたは複数の場所を決定する。この情報は、たとえばスヌープフィルタ内のエントリの存在ベクトル内に記憶され得る。要求されたデータがHome Nodeのキャッシュ内に記憶されるとき、複数のデータビートが、コヒーレント相互接続を介してHome NodeからRequest Nodeに転送される。要求されたデータが異なるネットワークノード(Slave Nodeや他のRequest Nodeなど)に記憶されるとき、Home Nodeは、そのノードからRequest Nodeに送られるべきデータビートを求める要求を送る。
図6は、代表的実施形態による、データ処理ネットワーク内のRequest Nodeの動作600の方法の流れ図である。開始ブロック602の後に、ブロック604において、読取り要求がHNに送られる。次いで、RNは、判定ブロック606において、読取り要求に応答して第1のデータが受信されるまで待機する。データはHNから、またはSNから直接的に受信され得る。第1のデータが受信されたとき、判定ブロック606からの肯定的分岐によって示されるように、ブロック608において、CompAckメッセージがHNに送られる。その後で、スヌープ要求が受信されたとき、判定ブロック610からの肯定的分岐によって示されるように、ブロック612においてスヌープがバッファリングされ、応答は行われない。読取り要求に関連するすべてのデータが受信されたとき、判定ブロック614からの肯定的分岐によって示されるように、ブロック616において、RNは、バッファリングされたスヌープメッセージがあればそれに応答し、ブロック618において方法は終了する。このようにして、すべてのデータが受信される前にCompAckメッセージが送られ、それによってHNがより早く解放される。
代替実施形態では、図7に示されるように、RN自体の要求についてデータのすべてのビートが受信される前のスヌープに応答して、RNはデータを提供し得、受信されたデータは一定の制約と共に扱われる。これらの制約はスヌープのタイプに依存する。
図7は、本開示の実施形態による、Request Nodeにおいてスヌープに応答するための方法700の流れ図である。図7の開始ブロック702の後に、ブロック704において、RNによるデータを求める要求に続いて、スヌープがRNによって受信される。要求したデータのすべてのビートが受信された場合、判定ブロック706からの肯定的分岐によって示されるように、ブロック708において、通常の方式でスヌープに応答される。そうでない場合、判定ブロック706からの否定的分岐によって示されるように、RNはデータに一定の制約を適用する。スヌープが無効化型スヌープまたはSnpOnce要求ではない場合、判定ブロック710からの否定的分岐によって示されるように、RNは、要求したデータを使用し得る。ブロック712に示されるように、データが共有としてキャッシュされ得、キャッシュされたデータをRNによって修正することはできない。スヌープがSnpOnceメッセージであるとき、判定ブロック714からの肯定的分岐によって示されるように、ブロック716に示されるように、データが使用され得、任意の状態にキャッシュされ、Request Nodeにおいて修正され得る。スヌープが無効化型スヌープであるとき、判定ブロック718からの肯定的分岐によって示されるように、ブロック720に示されるように、受信されたデータが1度だけ使用され、削除され得、キャッシュされてはならず、そうでない場合、方法はブロック722において終了する。すべての上記のケースにおいて、Request Nodeの要求がコアからの記憶の結果であったとき、受信されたデータが修正され得るが、修正されたデータをスヌープ応答に転送しなければならず、スヌープが非無効化型である場合、修正されたデータがキャッシュされ得るが、修正されてはならない。スヌープが無効化型である場合、キャッシュされてはならない。
図6および図7は、本開示に適合する、データ処理ネットワーク内のデータ転送の方法の実施形態を示す。本開示の実施形態によれば、データ処理ネットワークのRequest Nodeが、ネットワーク内の第1のアドレスのデータを読み取る要求を送る。要求は、コヒーレント相互接続を介して、データ処理ネットワークのHome Nodeに送られる。どのHome Nodeに要求を送るべきかを決定するためにシステムアドレスマップが使用され得る。要求に応答して、Request Nodeは、コヒーレント相互接続を介して、要求したデータの複数のデータビートを受信し、複数のデータビートのうちの最初のデータビートが第1の時刻に受信され、複数のデータビートのうちの最後のデータビートが、第1の時刻の後の第2の時刻に受信される。最初のデータビートを受信したことに応答して、Request Nodeは、コヒーレント相互接続を介してHome Nodeに確認メッセージを送り、Home Nodeに確認メッセージを送った後に、Request Nodeは、Home Nodeからスヌープメッセージを受諾する。
一方、従来のシステムでは、すべてのデータビートがRequest Nodeによって受信されるまで、確認メッセージが送られず、Home Nodeは、この期間中、第1のアドレスについてのスヌープをRequest Nodeに送ることを控える。
確認メッセージがHome Nodeによって受信された後に、ホームは、Request Nodeに第1のアドレス(または任意の他のアドレス)についてのスヌープメッセージを自由に送ることができる。一実施形態では、第1の時刻と第2の時刻との間の時間枠において、Request Nodeは、第1のアドレスのデータについてのHome Nodeからのスヌープ要求があればそれをバッファリングする。Request Nodeは、複数のデータビートのうちの最後のデータビートがRequest Nodeによって受信された後に、これらのスヌープメッセージを処理する。別の実施形態では、(第1の時刻と第2の時刻との間の時間枠の間に)第1のアドレスのデータについてスヌープ要求がHome Nodeから受信されたとき、Request Nodeは、要求したデータのデータビートがRequest Nodeによって受信さたときにそれを転送する。この実施形態では、転送されたデータは、Request Nodeまたはホームが、別の要求にサービスする前に、受信されるべきすべてのデータビートを待機した場合に到着したことになるよりも早く、そのターゲット宛先に到着する。
ある実施形態によれば、たとえば図7に示されるように、第1のアドレスのデータを求めるスヌープ要求が、第1の時刻と第2の時刻との間の時間枠の間に、Request Nodeによって受信され、受信されたデータは、Request Nodeによって様々な方式で処理される。スヌープ要求が「SnpOnce」要求でも、「無効化型」要求でもないとき、Request Nodeは、受信したデータを使用し、修正し、キャッシュするように構成される。スヌープ要求が「SnpOnce」要求であるとき、Request Nodeは、受信したデータを使用し、受信したデータを「共有」状態にキャッシュするが、データを修正しないように構成される。
スヌープ要求が「無効化型」要求であるとき、Request Nodeは、データを使用するがキャッシュしないように構成される。
図8は、様々な代表的実施形態による、データ処理ネットワークのRequest Nodeの動作800の方法の流れ図である。方法は、たとえば図4に示されるトランザクション流れ図中のRequest Node RN1の動作に対応する。
図8の開始ブロック802の後に、ブロック804において、読取り要求がHNに送られる。次いで、判定ブロック806において、RNは、読取り要求に応答して第1のデータが受信されるまで待機する。データは、HNから、またはSNもしくは別のRNから直接的に受信され得る。最初のデータビートが受信されたとき、判定ブロック806からの肯定的分岐によって示されるように、ブロック808においてCompAckメッセージがHNに送られる。その後で、(ブロック804において要求されたデータについて)新しいスヌープ要求が受信されたとき、判定ブロック810からの肯定的分岐によって示されるように、受信したデータビート(またはビート)は、ブロック812において、スヌープ内で示されるターゲットノードに転送される。その後で、追加のデータビートがRNによって受信されたとき、ブロック814によって示されるように、データビートがターゲットノードに転送される。読取り要求に関連するすべてのデータビートが受信されたとき、判定ブロック816からの肯定的分岐によって示されるように、ブロック818において、RNは、残りのデータビートがあればそれをスヌープターゲットに転送し、方法はブロック820において終了する。このようにして、すべてのデータが受信される前にCompAckメッセージが送られ、それによってHNがより早く解放される。
本開示が例示的実施形態に関して説明されたことを当業者は理解されよう。本開示は、説明され、特許請求される開示と等価な専用ハードウェアおよび/または専用プロセッサなどのハードウェア構成要素均等物を使用して実装され得る。同様に、専用プロセッサおよび/または専用ハードワイヤード論理が、本開示の代替の等価な実施形態を構築するために使用され得る。
開示される機構を実装するために使用される専用または再構成可能ハードウェア構成要素が、ハードウェア記述言語の命令によって、または構成要素および接続性のネットリストによって記述され得る。命令またはネットリストは、本開示から逸脱することなく、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、不揮発性メモリ(NVM)、ハードディスクドライブ、フロッピィディスクドライブ、光ディスクドライブなどのマスストレージ、光記憶素子、磁気記憶素子、光磁気記憶素子、フラッシュメモリ、コアメモリ、および/または他の等価なストレージ技術などの非一時的コンピュータ可読媒体上に記憶され得る。そのような代替記憶デバイスは均等物と見なされるべきである。
本明細書において説明された様々な実施形態は、任意の適切な電子記憶媒体上に記憶され、または任意の適切な電子通信媒体を介して伝送され得る、流れ図形式で大まかに説明されるプログラミング命令を実行する専用ハードウェア、構成可能ハードウェア、またはプログラムされたプロセッサを使用して実装される。これらの要素の組合せが使用され得る。本開示から逸脱することなく、前述のプロセスおよび機構が任意の数の変形形態として実装され得ることを当業者は理解されよう。たとえば、本開示から逸脱することなく、実施されるいくつかの動作の順序がしばしば変更され得、追加の動作が追加され得、動作が削除され得る。そのような変形形態が企図され、等価と見なされる。
本明細書において詳細に説明された様々な代表的実施形態は、限定ではなく、例として提示された。記載の実施形態の形態および細部において様々な変更が行われ得、開示される本開示内にとどまる等価な実施形態が得られることを当業者は理解されよう。
したがって、開示される実施形態のいくつかの態様および特徴が、以下の番号付きの項目において述べられる。
1.データ処理ネットワーク内のデータ転送の方法であって、データ処理ネットワークのRequest Nodeによって、ネットワーク内の第1のアドレスのデータを読み取る要求を送ることであって、要求が、コヒーレント相互接続を介して、第1のアドレスに関連するデータ処理ネットワークのHome Nodeに送られること、Request Nodeによって、コヒーレント相互接続を介して、要求したデータの複数のデータビートを受信することであって、複数のデータビートのうちの最初のデータビートが第1の時刻に受信され、複数のデータビートのうちの最後のデータビートが、第1の時刻の後の第2の時刻に受信されること、最初のデータビートを受信したことに応答して、Request Nodeがコヒーレント相互接続を介してHome Nodeに確認メッセージを送ること、およびHome Nodeに確認メッセージを送った後に、Request NodeがHome Nodeから第1のアドレスについてのスヌープメッセージを受諾することを含む方法。
2.Home Nodeから受信された第1のアドレスのデータを求めるスヌープ要求が第1の時刻と第2の時刻との間の時間枠内に受信されたとき、Request Nodeによってスヌープ要求をバッファリングすることをさらに含む項目1の方法。
3.複数のデータビートのうちの最後のデータビートの後のスヌープ要求がRequest Nodeによって受信されたことに応答して、Request Nodeがデータを送ることをさらに含む項目2の方法。
4.第1のアドレスのデータを求めるスヌープ要求がRequest Nodeによって第1の時刻と第2の時刻との間の時間枠内に受信されたことに応答して、Request Nodeによって受信された、要求されたデータのデータビートをRequest Nodeによって転送することをさらに含む項目1の方法。
5.複数のデータビートが、Request Nodeによって、コヒーレント相互接続を介して、データ処理システムのSlave Nodeから、データ処理システムの別のRequest Nodeから、またはHome Nodeから受信される項目1の方法。
6.Home Nodeによって、コヒーレント相互接続を介してSlave NodeからRequest Nodeに送られるべきデータを要求することをさらに含む項目5の方法。
7.スヌープメッセージがHome Nodeから別のRequest Nodeにおいて受信されたことに応答して、複数のデータビートがその別のRequest Nodeから送られる項目5の方法。
8.第1のアドレスのデータを求めるスヌープ要求がRequest Nodeによって第1の時刻と第2の時刻との間の時間枠内に受信されたことに応答して、スヌープ要求が「snoop once」要求でも、「無効化型」要求でもないとき、受信されたデータを使用し、修正し、キャッシュするようにRequest Nodeを構成すること、およびスヌープ要求が「snoop once」要求であるとき、受信されたデータを使用し、受信されたデータを「共有」状態にキャッシュするが、データを修正しないようにRequest Nodeを構成すること、およびスヌープ要求が「無効化型」要求であるとき、データを使用するがキャッシュしないようにRequest Nodeを構成することをさらに含む項目1の方法。
9.データ処理ネットワーク内のデータ転送の方法であって、第1の時刻に、データ処理ネットワークのHome Nodeによって、ネットワーク内の第1のアドレスのデータを読み取る要求を受信することであって、要求が、コヒーレント相互接続を介して、データ処理ネットワークのRequest Nodeから送られ、Home Nodeが第1のアドレスに関連付けられること、Home Nodeによって、データ処理ネットワーク内の要求されたデータのコピーの存在に応じて、第1のアドレスのデータについてのコヒーレンスアクションを実施すること、Home Nodeによって、要求されたデータを複数のデータビートとしてRequest Nodeへ送信させること、第2の時刻に、Home Nodeによって、複数のデータビートのうちの最初のビートの受信を確認する確認メッセージをRequest Nodeから受信すること、第1の時刻と第2の時刻との間の時間枠において、Home Nodeが第1のアドレスのデータを求めるいかなるスヌープ要求もRequest Nodeに送らないこと、および第2の時刻の後に、Home Nodeが、第1のアドレスのデータを求めるスヌープ要求をRequest Nodeに送ることを可能にすることを含む方法。
10.Home Nodeによって、要求を受信したことに応答して、Request Nodeからの読取り要求にHome Nodeのリソースを割り振ること、およびHome Nodeによって、複数のデータビートのうちの最初のビートの受信を確認する確認メッセージをRequest Nodeから受信したことに応答して、Home Nodeのリソースを解放することをさらに含む項目9の方法。
11.Home Nodeによって、データ処理ネットワーク内の要求されたデータの1つまたは複数の場所を決定すること、要求されたデータがHome Nodeのキャッシュ内に記憶されるとき、Home Nodeによって、コヒーレント相互接続を介してRequest Nodeに複数のデータビートを転送すること、および要求されたデータが別のノードに記憶されるとき、Home Nodeによって、データ処理ネットワークのその別のノードに要求を送ることをさらに含む項目9の方法。
12.別のノードが、要求されたデータのコピーを有する別のRequest Node、またはデータ処理ネットワークのSlave Nodeを含む項目11の方法。
13.共有データリソースにアクセスするように構成された1つまたは複数のRequest Nodeと、共有データリソースのデータについてのPoint of Coherencyを提供するHome Nodeと、1つまたは複数のRequest NodeとHome Nodeとの間を結合するように構成されたコヒーレント相互接続とを備えるデータ処理ネットワークであって、1つまたは複数のRequest NodeのうちのRequest Nodeが、共有データリソース内の第1のアドレスのデータを読み取る要求をHome Nodeに送ること、要求したデータの複数のデータビートを受信することであって、複数のデータビートのうちの最初のデータビートが第1の時刻に受信され、複数のデータビートのうちの最後のデータビートが、第1の時刻の後の第2の時刻に受信されること、最初のデータビートを受信したことに応答して、Home Nodeに確認メッセージを送ること、およびHome Nodeに確認メッセージを送った後に、Home Nodeからスヌープメッセージを受諾することを含む方法を実施するように構成され、Home Nodeが、第3の時刻に、第1のアドレスのデータを読み取る要求を受信すること、データ処理ネットワーク内の要求されたデータのコピーの場所に応じて、第1のアドレスのデータについてのコヒーレンスアクションを実施すること、要求されたデータを複数のデータビートとしてRequest Nodeへ送信させること、第4の時刻に、複数のデータビートのうちの最初のビートの受信を確認する確認メッセージをRequest Nodeから受信すること、第3の時刻と第4の時刻との間の時間枠において、Home Nodeが、第1のアドレスのデータを求めるいかなるスヌープ要求もRequest Nodeに送らないこと、および第4の時刻の後に、第1のアドレスのデータを求めるスヌープ要求をRequest Nodeに送ることを可能にすることを含む方法を実施するように構成される、データ処理ネットワーク。
14.スヌープ要求が第1の時刻と第2の時刻との間の時間枠内で受信されたとき、Request Nodeが、第1のアドレスのデータを求めるHome Nodeからのスヌープ要求をバッファリングするようにさらに構成される項目13のデータ処理ネットワーク。
15.複数のデータビートのうちの最後のデータビートが受信された後、Request Nodeが、スヌープ要求に応答してデータを送るようにさらに構成される項目14のデータ処理ネットワーク。
16.第1の時刻と第2の時刻との間の時間枠内で受信された第1のアドレスのデータを求めるHome Nodeからのスヌープ要求に応答して、Request Nodeが、要求されたデータのデータビートが受信されたときにそれを転送するようにさらに構成される項目13のデータ処理ネットワーク。
17.Home Nodeがさらに、要求を受信したことに応答して、Request Nodeからの読取り要求にHome Nodeのリソースを割り振るように構成され、複数のデータビートのうちの最初のビートの受信を確認する確認メッセージをRequest Nodeから受信したことに応答してリソースを解放するように構成される項目13のデータ処理ネットワーク。
18.ハードウェア記述言語の命令を記憶する非一時的コンピュータ可読媒体であって、命令が、項目13のデータ処理ネットワークを記述する、非一時的コンピュータ可読媒体。
19.項目13のデータ処理ネットワークの構成要素および接続性のネットリストを記憶する非一時的コンピュータ可読媒体。
100 データ処理システム
102 処理コアクラスタ(Request Node(RN))
104 コヒーレント相互接続
106 入力/出力(I/O)要求側ノード(RN-I)
108 ネットワーク
112 I/Oデバイス
114 メモリまたは記憶デバイス
116 メモリコントローラ
118 Home Node(HN)
120 Home Node(HN)
202 垂直バー
204 垂直バー
206 Read要求
208 要求されたデータ
210 完了確認(CompAck)メッセージ
302 垂直バー
304 垂直バー
306 垂直バー
308 Read要求
310 ReadNoSnp要求
312 データビート
314 データビート
316 データビート
318 データビート
320 CompAck
322 CompAck
402 垂直バー
404 垂直バー
406 垂直バー
408 垂直バー
410 垂直バー
412 ReadShared要求
414 ReadNoSnpメッセージ
416 CompData0
418 CompData3
420 CompAckメッセージ
422 CompAckメッセージ
424 CompAckメッセージ
RN1 Request Node
RN2 Request Node
RN3 Request Node
マルチプロセッサデータ処理システムが、コヒーレント相互接続を介して接続されたプロセッサ、アクセラレータ、IO、メモリなどの様々なタイプのノードを有するオンチップネットワークとして構成され得る。高レベルでは、要求側、ホーム、およびスレーブという3つの基本ノードタイプがある。Request Node(RN)は、読取りおよび書込みを含む、相互接続に対するプロトコルトランザクションを生成するノードである。これらのノードは、完全コヒーレントプロセッサまたはIOコヒーレントデバイスであり得る。Home Node(HN)は、RNからプロトコルトランザクションを受信するノードである。システム内の各アドレスは、そのアドレスに対する要求についてのPoint-of-Coherency(PoC)およびPoint of Serialization(PoS)として働くHomeを有する。典型的な実装では、ある範囲のアドレスについてのHomeが、Home Nodeとして共にグループ化される。これらのHome Nodeのそれぞれは、システムレベルキャッシュおよび/または冗長なスヌープを削減するためのスヌープフィルタを含み得る。
Slave Node(SN)は、HNから要求を受信し、要求を完了するノードである。SNは、周辺メモリまたはメインメモリから使用され得る。
共有データリソースからのデータが、いくつかの異なるプロセッサによってアクセスされ得、データのコピーが、迅速なアクセスのためにローカルキャッシュ内に記憶され得る。すべてのコピーが最新であることを保証するために、キャッシュコヒーレンスプロトコルが使用され得る。プロトコルは、アクセス中のデータのコピーを有するRNとスヌープメッセージを交換することを含み得るコヒーレンシアクションをHNが実施することを含み得る。
HNは、アドレスへのアクセスを先着順にシリアル化し得る。たとえば、現トランザクションが完了するまで、HNの指定のデバイスおよびリソースへのアクセスが予約され得る。この手法の欠点は、必要以上に長い間にわたってHNリソースが予約され得、それがシステム性能に悪影響を及ぼし得ることである。
添付の図面は、様々な代表的実施形態をより完全に記述するために使用され、開示される代表的実施形態およびその固有の利点をより良く理解するために当業者によって使用され得る視覚的表現を提供する。これらの図面では、同様の参照番号が、対応する要素を識別する。
様々な代表的実施形態によるデータ処理ネットワークのブロック図である。 データ処理ネットワーク内の従来型データアクセスについてのトランザクション流れ図である。 様々な代表的実施形態による、データアクセスについてのトランザクション流れ図である。 様々な代表的実施形態による、データアクセスについてのトランザクション流れ図である。 様々な代表的実施形態による、データ処理ネットワークのHome Nodeの動作の方法の流れ図である。 様々な代表的実施形態による、データ処理ネットワークのRequest Nodeの動作の方法の流れ図である。 様々な代表的実施形態による、データ処理ネットワークのRequest Nodeの動作の別の方法の流れ図である。 様々な代表的実施形態による、データ処理ネットワークのRequest Nodeの動作のさらに別の方法の流れ図である。
本明細書において説明される様々な装置およびデバイスは、データ処理システム内の着信データの自動ルーティングおよび割振りのための機構を提供する。
本開示は、多くの異なる形態の実施形態が可能であるが、本開示が本開示の原理の一例と見なされるべきであり、図示および説明される特定の実施形態に本開示を限定するものではないという理解と共に、特定の実施形態が図面に示され、本明細書において詳細に説明される。以下の説明では、図面のいくつかの図中の同一の部分、類似の部分、または対応する部分を説明するために同様の参照番号が使用される。
本文書では、単にあるエンティティまたはアクションを別のエンティティまたはアクションと区別するために、第1と第2、上端と下端などの相関的な用語が、そのようなエンティティまたはアクションの間の何らかの実際のそのような関係または順序を必ずしも必要することなく、または示唆することなく使用され得る。「備える」、「含む」という用語、またはそれらの任意の他の変形は、非排他的包含をカバーするものとし、したがって、要素のリストを含むプロセス、方法、物品、または装置がそれらの要素のみを含むのではなく、明白に列挙されない、またはそのようなプロセス、方法、物品、または装置に固有の他の要素を含み得る。「を備える(comprises ...a)」に先行する要素は、さらなる制約なしに、要素を含むプロセス、方法、物品、または装置内の追加の同一の要素の存在を除外しない。
本文書全体にわたる「一実施形態(one embodiment)」、「ある実施形態(certain embodiment)」、「一実施形態(an embodiment)」、または類似の用語への参照は、実施形態に関連して説明される特定の特徴、構造、または特性が本開示の少なくとも1つの実施形態内に含まれることを意味する。したがって、本明細書全体にわたる様々な場所でのそのような語句の出現は、必ずしもすべて同一の実施形態を参照しているわけではない。さらに、特定の特徴、構造、または特性が、限定なしに1つまたは複数の実施形態において任意の適切な方式で組み合わされ得る。
本明細書での「または」という用語は、いずれか1つまたはいずれかの組合せを意味する包含的論理和と解釈されるべきである。したがって、「A、B、またはC」は、「A; B; C; AおよびB; AおよびC; BおよびC; A、B、およびCのうちのいずれか」を意味する。要素、機能、ステップ、または動作の組合せが何らかの形で固有に相互排他的であるときにのみ、この定義の例外が生じる。
図を簡単にし、見やすくするために、対応する要素または類似の要素を示すために、各図の間で参照番号が繰り返され得る。本明細書において説明される実施形態の理解を与えるために多数の詳細が述べられる。実施形態は、これらの詳細なしに実施され得る。他の場合には、記載の実施形態を曖昧にするのを避けるために、周知の方法、手順、および構成要素が詳細には説明されていない。本明細書において説明される実施形態の範囲に説明が限定されると見なされるべきではない。
本開示は、データフェッチ動作を加速するためのデータ処理ネットワーク内の機構に関する。開示される機構は、相互接続内のデータフェッチトランザクションの存続時間を削減することに加えて、相互接続構成要素を完全に利用するのに必要とされるリソース数をも削減する。さらに、開示される機構は、相異なるソースからの要求応答対をチェーニングすることによって、相互接続内のトランザクションのスループットを改善する。
図1は、様々な代表的実施形態によるデータ処理システム100のブロック図である。いくつかの処理コアクラスタ102(Request Node(RN)と呼ばれる)が、コヒーレント相互接続104を介してデータリソースに結合される。データが入力/出力(I/O)要求側ノード(RN-I)を介して受信される。図示される例では、RN-I 106aが、ネットワーク108からデータを受信するネットワークインターフェースコントローラ(NIC)を備え、RN-I 106bがI/Oデバイス112からデータを受信する。I/Oデバイス112は、たとえばperipheral component interconnect express(PCIe)バス、直接メモリアクセス(DMA)ユニット、またはネットワークアクセラレータを介して結合され得る。データは、1つまたは複数のメモリコントローラ116を介してコヒーレント相互接続104に結合される1つまたは複数のメモリまたは記憶デバイス114内に記憶され得る。Home Node(HN)118および120がシステムレベルキャッシュを含み得る。各Home Node(HN)は、所与のシステムアドレスのセットに記憶されたデータのためのPoint of Serializationおよび/またはPoint of Coherenceとして働く。118などのHome Node(HN-F)は、ローカルリソースのためのホームであり得る。あるいは、120などのHome Node(HN-I)は、オフチップリソースまたはオンチップ周辺デバイスに対するインターフェースを提供し得る。Request Node 102によって要求されたデータが、HNのシステムレベルキャッシュから、別のRequest Nodeから、またはメモリコントローラ116を介してメモリ114から取り出され得る。メモリコントローラはSlave Node(SN)の例である。
複数のRNが同一のメモリ位置にアクセスしようと試みるときの競合を回避するために、Home Node 118は、読取り要求および他のトランザクションを先着順などシリアルに処理するPoints of Serializationとして働く。コヒーレント相互接続104は、ノード間のデータ(DAT)チャネルを介してデータを転送するために使用される。さらに、各アクセストランザクションを制御するためにメッセージングプロトコルが使用され、アクセストランザクションでは、要求および応答が、相互接続内のREQ RSPチャネルを介して送られる。最後に、データコヒーレンスを保証するために、「スヌープ」メッセージが相互接続内のSNPチャネルを介して送られる。
本開示の一態様は、データ処理ネットワークの性能および効率の改善を実現する、ノードのハードウェア内で実装された改良型のメッセージングおよびデータ転送機構に関する。
一実施形態では、データ処理ネットワークが、共有データリソース(たとえば114)にアクセスするように構成された1つまたは複数のRequest Nodes(102)と、共有データリソースのデータについてのPoint of Coherencyを提供するHome Node(たとえば118)と、1つまたは複数の要求ノードとHome Nodeとの間を結合するように構成されたコヒーレント相互接続(104)とを備える。共有データリソース内の第1のアドレスのデータを読み取るために、要求ノードはHome Nodeに要求を送る。たとえば、データは、1キャッシュラインのサイズを有するブロックで転送され得る。コヒーレント相互接続内のDATバスがキャッシュラインよりも小さい幅を有するとき、要求されたデータが、DATチャネル上の相互接続を通じて、複数の個別のデータ転送として送られ、本明細書およびArm LimitedのArm(登録商標)AMBA(登録商標)AXI通信プロトコルにおいて「データビート」と呼ばれる。これらのデータビートは、相互接続を通る相異なる経路を取り得、データビートが送られた順序で到着するようには保証されない。たとえば、複数のデータビートのうちの最初のデータビートが第1の時刻に受信され、最後のデータビートが第1の時刻の後の第2の時刻に受信され得るが、これらは、相互接続に渡された最初および最後のビートに対応しないことがある。
本開示の一態様によれば、要求ノードは、最初のデータビートを受信したことに応答して、Home Nodeに確認メッセージを送る。一方、従来のシステムは、最後のデータビートが受信されるまで、確認を送ることを遅延させる。
Home Nodeに確認メッセージを送った後に、要求ノードはHome Nodeからスヌープメッセージを受諾する。要求ノードは、すべての要求したデータビートが到着したときを追跡するように構成され、その間に到着するスヌープを他のスヌープとは異なる方式で処理する。一方、従来のシステムでは、Request Nodeは、すべてのデータビートが受信されるまで確認を送らないように構成された。これは、Home Nodeがこの期間中にスヌープを送ることを妨げる。したがって、Home Nodeのリソースが、より長い時間枠にわたって利用される。
Home Nodeは、第3の時刻に、第1のアドレスのデータを読み取る要求を受信し、データ処理ネットワーク内の様々な場所の、要求されたデータのコピーの存在に応じて、第1のアドレスのデータについてのコヒーレンスアクションを実施する。次いで、Home Nodeは、要求されたデータを複数のデータビートとして要求ノードへ送信させる。第4の時刻に、確認メッセージが要求ノードから受信される。第3の時刻と第4の時刻との間の時間枠では、Home Nodeは、第1のアドレスのデータを求めるいかなるスヌープ要求もRequest Nodeに送らない。しかしながら、第4の時刻の後に、Home Nodeは、第1のアドレスのデータを求めるスヌープ要求をRequest Nodeに送ることを可能にする。
一実施形態では、第1のアドレスのデータを求めるHome Nodeからのスヌープ要求が第1の時刻と第2の時刻との間の時間枠内に受信されたとき、Request Nodeはスヌープ要求をバッファリングし得る。複数のデータビートのうちの最後のデータビートが受信された後、スヌープ要求に応答してデータが送られ得る。
別の実施形態では、第1のアドレスのデータを求めるHome Nodeからのスヌープ要求が第1の時刻と第2の時刻との間の時間枠内に受信されたとき、Request Nodeは、要求されたデータのデータビートが受信されたときにそれを転送する。
Home Nodeは、読取り要求が受信されたとき、Home Nodeのリソースを割り振り、複数のデータビートのうちの最初のビートの受信を確認する確認メッセージがRequest Nodeから受信されたとき、リソースを解放するように構成される。
これらの機構は、より短い時間枠にわたってHome Nodeリソースを割り振り、他のトランザクションのためのリソースを解放することを可能にする。これらの機構はまた、より少ない待ち時間で、複数のRequest Node間でデータを共有することを可能にする。
図2は、データ処理ネットワーク内の従来型データアクセスについてのトランザクション流れ図である。図2では、垂直バー202および204が、それぞれRequest Node(RN)およびHome Node(HN)についてのタイムラインを示し、時間が上端から下端に流れる。時刻T1に、RNが、読取りアドレスを求めてHome NodeにRead要求206を発行する。要求されたデータがHNのキャッシュ内にあると仮定すると、HNは、(図示される例では、CompData0、CompData1、CompData2、およびCompData3という4つのデータビートとして)要求されたデータ208をRNに送る。「CompData」メッセージは、データと、トランザクションがそのデータに関して完全であるという指示とを含む。すなわち、RNは、受信した読取りデータを修正し得るアクションがないので、読み取ったトランザクションが大域的に観測されると見なし得る。
すべての通信がコヒーレント相互接続を介して送信される。データは、相互接続を介して複数のデータビートとしてRNに送信され得る。要求されたデータのすべてがRNによって受信されると、完了確認(CompAck)メッセージ210がRNからHNに送られる。したがって、トランザクションの持続時間は、RNについてT1〜T2であり、HNについてT3〜T4である。期間T3〜T4の間、HNは、トランザクションのためのリソースを割り当てる(トラッカなど)。さらに、HNは、ReadトランザクションにおいてアクセスされたアドレスについてRNにスヌープメッセージを送ることを控える。さもなければ、たとえば、HNからのデータの到着より前に、スヌープ要求がRNに到着し得る。
データとスヌープは相互接続を通る相異なる経路を取り得、それによってスヌープはDataの一部の前にRNに到着するので、HNは、スヌープを送る前にCompAck応答210を待機しなければならない。
要求されたデータがHNのキャッシュ内に存在しない場合、メモリコントローラ、I/Oデバイス、またはオフチップデータリソースなどのSlave Node(SN)にデータが要求される。要求されたデータはSNから(コヒーレント相互接続を介して)直接的に送られ、またはHN(およびコヒーレント相互接続)を介してRNに送られ得る。
図3〜図4は、様々な代表的実施形態による、データ処理ネットワーク内のデータアクセスについての機構のトランザクション流れ図である。図および以下の関連する議論は、例示的トランザクション内に存在するトランザクション構造および依存関係を説明する。図は、別々のDataおよびHome応答を伴うトランザクションについての依存関係を示す。
図3は、様々な代表的実施形態による、データ処理ネットワーク内のデータアクセスについてのトランザクション流れ図である。図2と同様に、図3では、垂直バー302、304、および306が、それぞれRequest Node(RN)、Home Node(HN)、およびSlave Node(SN)についてのタイムラインを示し、時間が上端から下端に流れる。時刻T1に、RNが、読取りアドレスを求めてHome NodeにRead要求308を発行する。要求されたデータがHNのキャッシュ内にない場合、ReadNoSnp要求310が適切なSN(たとえば、メモリコントローラなど)に送られる。SNは、要求されたデータをRNに(4つのデータビート312、314、316、318として)送る。相互接続を通る相異なる経路を取って、ビートが異なる順番で到着し得ることに留意されたい。図2に示される機構では、RNは、第1のデータがRNに到着した時刻T2に、HNにCompAck 320を送る。HNがCompAck 320を受信したとき、HNは、Readトランザクションに割り振られたリソースを解放する。HNのリソースは時間枠T5〜T6にわたって使用される。一方、図2に示される機構を用いて、CompAck 322が時刻T3に送られていることになる。HNのリソースは、時間枠T5〜T7にわたって占有されることになり、時間枠T5〜T7は、開示される機構についての期間T5〜T6よりもかなり長い。
トランザクションがHNにおいて(すなわち、時刻T6に)完了すると、HNは、RNに到着するスヌープメッセージを送信するように要求される場合、自由にそうすることができる。RNは、スヌープされたアドレスについてデータが要求されていることを認識しており、すべての要求されたデータがRNによって受信される時刻T3まで、スヌープメッセージの処理を遅延させる。RNがCompAck確認を与えるとき、RNは、その後にスケジューリングされる任意のトランザクションについてのスヌープ危険に対処する責任を受け入れることを示している。
前と同様に、要求されたデータがHNのキャッシュ内に存在する場合、データがHNからRNに直接的に送られ、SNとの間でメッセージは交換されない。
図3に示される機構は、HNのリソースがReadトランザクションに割り振られる時間枠を削減し、それによって全体のシステム性能の向上を可能にする。
図4は、様々な代表的実施形態による、データ処理ネットワーク内のデータアクセスについての別のトランザクション流れ図である。図4では、垂直バー402、404、および406が、Request Node RN1、RN2、およびRN3についてのタイムラインを示し、一方、垂直バー408および410が、それぞれHome Node(HN)およびSlave Node(SN)についてのタイムラインを示し、時間が上端から下端に流れる。時刻T1に、HNが、読取りアドレスを求めるRN1からReadShared要求412を受信する。その後で、HNは、RN2およびRN3から、ReadShared2およびReadShared3と示される要求をそれぞれ受信する。HNはPoint of Serialization(PoS)として働き、これらの要求を、受信された順序で処理する。HNはまた、Point of Coherency(PoC)として働き、要求412が受信されたとき、コヒーレンシアクションを実施する。図示される例では、HNはSlave NodeにReadNoSnpメッセージ414を送る。それに応答して、SNは、要求されたデータを、CompData0(416)、CompData1、CompData2、およびCompData3(418)と示される4つのビートとして要求側ノードRN1に送る。最初のデータビート(CompData0、416)がRN1において受信されたとき、図3を参照しながら上記で論じたように、RN1は、HNにCompAck 420メッセージを送る。HNは、時刻T2にCompAckメッセージ420を受信し、次いでReadトランザクションに割り振られたリソースを解放することができる。具体的には、HNは、Snoop2などのスヌープ要求をRN1に送ることが許可される。
RN2およびRN3がRN1と同一の共有データを要求したとき、データがRN1から転送される。CompData0がRN2に到着したとき、RN2は、CompAck2と示されるCompAckメッセージ422をHNに送る。HNは、時刻T3にCompAck2メッセージ422を受信し、次いでSnoop3などのスヌープ要求をRN2に送ることが許可される。同様に、CompData0がRN3に到着したとき、RN3は、CompAck3と示されるCompAckメッセージ424をHNに送る。HNは、時刻T4にCompAck3メッセージ424を受信し、次いでRN3にスヌープ要求を送ることが許可される。このようにして、HNのリソースが、時間枠T1〜T2にのみ割り振られる。
RN自体の要求についてデータのすべてのビートが受信される前のスヌープに応答して、RNがデータを提供するとき、受信されたデータは一定の制約と共に扱われる。これらの制約はスヌープのタイプに依存する。
スヌープが非無効化型(non-invalidating)であり、「snoop once」メッセージではないとき、Request Nodeにおいてラインが使用され、共有状態内にキャッシュされ得る。キャッシュされたコピーは、Request Nodeによって修正されてはならない。
スヌープが「snoop once」メッセージであるとき、Request Nodeにおいてラインが使用され得、任意の状態内にキャッシュされ、修正され得る。
スヌープが無効化型スヌープであるとき、受信されたデータが1度だけ使用され、削除され得、キャッシュされてはならない。
すべての上記のケースでは、Request Nodeの要求がコアからの記憶の結果であったとき、受信されたデータが修正され得るが、修正されたデータはスヌープ応答で送される必要がある。スヌープが非無効化型である場合、修正されたデータがキャッシュされ得るが、スヌープが無効化型である場合、修正されたデータはキャッシュされるべきではない。
開示される機構は、危険を有するリソースおよび他のトランザクションリソースをHome Nodeが早期に解放することを可能にし、Home Nodeリソースを最小限のオーバヘッドで最適に利用することを可能にする。さらに、これはシステムサイズにうまくスケーリングする。相互接続サイズ、したがってデータパケット横断待ち時間の増大によって、それに比例してHome Nodeリソースを向上させる必要がないからである。
図5は、代表的実施形態による、データ処理ネットワーク内のHome Nodeの動作500の方法の流れ図である。開始ブロック502の後に、ブロック504において、読取り要求がHNによって受信される。ブロック506において、リソースがHN内で予約され、要求された読取りアドレスに対するスヌープがブロックされる。要求されたデータがHNのシステムキャッシュ内に存在しない場合、判定ブロック508からの否定的分岐によって示されるように、ブロック510において、データを求める要求(たとえば、ReadNoSnp)が適切なSlave Nodeに送られる。そうでない場合、判定ブロック508からの肯定的分岐によって示されるように、ブロック512において、システムキャッシュからのデータの転送が開始される。判定ブロック514において、HNは、第1のデータが到着したことを示すCompAckメッセージがRNから受信されるまで待機する。CompAckメッセージが受信されたとき、判定ブロック514からの肯定的分岐によって示されるように、ブロック516において、HNは、HNの割り振られたリソースを解放し、RNへのスヌープの送信を可能にする。次いで、トランザクションへのHNの参加が完了し、それが終了ブロック518によって示される。
図5は、データ処理ネットワーク内のデータ転送の方法の一実施形態を示す。Home Nodeは、第1の時刻に、ネットワーク内の第1のアドレスのデータを読み取る要求を受信し、要求は、データ処理ネットワークのRequest Nodeからコヒーレント相互接続を介して送られたものである。Home Nodeは、データ処理ネットワーク内の要求されたデータのコピーの存在に応じて、第1のアドレスのデータについてのコヒーレンスアクションを実施する。これは、要求されたデータのコピーを有するネットワークのデバイスにスヌープメッセージを送ることを含み得る。データコピーのコヒーレンス状態は変化し得、かつ/またはたとえばデータがメモリに書き戻され得る。次いで、Home Nodeは、要求されたデータを複数のデータビートとしてRequest Nodeへ送信させる。たとえば、データがHome Nodeのシステムキャッシュ内に存在するとき、データがHome Nodeから送信され得る。あるいは、データが、データのコピーを有する別のRequest Nodeから、またはメモリ管理ユニットなどのSlave Nodeから送信され得る。最初のデータビートがRequest Nodeによって受信されたとき、Request NodeはHome Nodeに確認メッセージを送る。第1の時刻と第2の時刻との間の時間枠において、Home Nodeは、第1のアドレスのデータを求める他のRequest Nodeからデータ要求を受信し得る。しかしながら、Home Nodeは、この時間枠の間、データを求めるRequest Nodeにいかなるスヌープ要求も送らない。
第2の時刻の後に、Home Nodeは、第1のアドレスのデータを求めるスヌープ要求がRequest Nodeに送られることを可能にする。
Home NodeがRequest Nodeから読取り要求を受信したとき、Home Nodeは、コヒーレンシアクションの実施およびスヌープメッセージの制御を可能にするようにHome Nodeのリソースを割り振る。複数のデータビートのうちの最初のビートの受信を確認する確認メッセージがRequest Nodeから受信されると、Home Nodeのリソースが解放される。
一方、従来のシステムでは、Request Nodeは、すべてのデータビートが受信されるまで、要求したデータの受信を確認しない。その結果、Home Nodeリソースが、より長い時間枠にわたって使用される。
読取り要求がHome Nodeによって受信されたとき、Home Nodeは、データ処理ネットワーク内の、要求されたデータのコピーが記憶される1つまたは複数の場所を決定する。この情報は、たとえばスヌープフィルタ内のエントリの存在ベクトル内に記憶され得る。要求されたデータがHome Nodeのキャッシュ内に記憶されるとき、複数のデータビートが、コヒーレント相互接続を介してHome NodeからRequest Nodeに転送される。要求されたデータが異なるネットワークノード(Slave Nodeや他のRequest Nodeなど)に記憶されるとき、Home Nodeは、そのノードからRequest Nodeに送られるべきデータビートを求める要求を送る。
図6は、代表的実施形態による、データ処理ネットワーク内のRequest Nodeの動作600の方法の流れ図である。開始ブロック602の後に、ブロック604において、読取り要求がHNに送られる。次いで、RNは、判定ブロック606において、読取り要求に応答して第1のデータが受信されるまで待機する。データはHNから、またはSNから直接的に受信され得る。第1のデータが受信されたとき、判定ブロック606からの肯定的分岐によって示されるように、ブロック608において、CompAckメッセージがHNに送られる。その後で、スヌープ要求が受信されたとき、判定ブロック610からの肯定的分岐によって示されるように、ブロック612においてスヌープがバッファリングされ、応答は行われない。読取り要求に関連するすべてのデータが受信されたとき、判定ブロック614からの肯定的分岐によって示されるように、ブロック616において、RNは、バッファリングされたスヌープメッセージがあればそれに応答し、ブロック618において方法は終了する。このようにして、すべてのデータが受信される前にCompAckメッセージが送られ、それによってHNがより早く解放される。
代替実施形態では、図7に示されるように、RN自体の要求についてデータのすべてのビートが受信される前のスヌープに応答して、RNはデータを提供し得、受信されたデータは一定の制約と共に扱われる。これらの制約はスヌープのタイプに依存する。
図7は、本開示の実施形態による、Request Nodeにおいてスヌープに応答するための方法700の流れ図である。図7の開始ブロック702の後に、ブロック704において、RNによるデータを求める要求に続いて、スヌープがRNによって受信される。要求したデータのすべてのビートが受信された場合、判定ブロック706からの肯定的分岐によって示されるように、ブロック708において、通常の方式でスヌープに応答される。そうでない場合、判定ブロック706からの否定的分岐によって示されるように、RNはデータに一定の制約を適用する。スヌープが無効化型スヌープまたは「snoop once」要求ではない場合、判定ブロック710からの否定的分岐によって示されるように、RNは、要求したデータを使用し得る。ブロック712に示されるように、データが共有としてキャッシュされ得、キャッシュされたデータをRNによって修正することはできない。スヌープが「snoop once」メッセージであるとき、判定ブロック714からの肯定的分岐によって示されるように、ブロック716に示されるように、データが使用され得、任意の状態にキャッシュされ、Request Nodeにおいて修正され得る。スヌープが無効化型スヌープであるとき、判定ブロック718からの肯定的分岐によって示されるように、ブロック720に示されるように、受信されたデータが1度だけ使用され、削除され得、キャッシュされてはならず、そうでない場合、方法はブロック722において終了する。すべての上記のケースにおいて、Request Nodeの要求がコアからの記憶の結果であったとき、受信されたデータが修正され得るが、修正されたデータスヌープ応答転送される必要がある。スヌープが非無効化型である場合、修正されたデータがキャッシュされ得るが、スヌープが無効化型である場合、キャッシュされてはならない。
図6および図7は、本開示に適合する、データ処理ネットワーク内のデータ転送の方法の実施形態を示す。本開示の実施形態によれば、データ処理ネットワークのRequest Nodeが、ネットワーク内の第1のアドレスのデータを読み取る要求を送る。要求は、コヒーレント相互接続を介して、データ処理ネットワークのHome Nodeに送られる。どのHome Nodeに要求を送るべきかを決定するためにシステムアドレスマップが使用され得る。要求に応答して、Request Nodeは、コヒーレント相互接続を介して、要求したデータの複数のデータビートを受信し、複数のデータビートのうちの最初のデータビートが第1の時刻に受信され、複数のデータビートのうちの最後のデータビートが、第1の時刻の後の第2の時刻に受信される。最初のデータビートを受信したことに応答して、Request Nodeは、コヒーレント相互接続を介してHome Nodeに確認メッセージを送り、Home Nodeに確認メッセージを送った後に、Request Nodeは、Home Nodeからスヌープメッセージを受諾する。
一方、従来のシステムでは、すべてのデータビートがRequest Nodeによって受信されるまで、確認メッセージが送られず、Home Nodeは、この期間中、第1のアドレスについてのスヌープをRequest Nodeに送ることを控える。
確認メッセージがHome Nodeによって受信された後に、ホームは、Request Nodeに第1のアドレス(または任意の他のアドレス)についてのスヌープメッセージを自由に送ることができる。一実施形態では、第1の時刻と第2の時刻との間の時間枠において、Request Nodeは、第1のアドレスのデータについてのHome Nodeからのスヌープ要求があればそれをバッファリングする。Request Nodeは、複数のデータビートのうちの最後のデータビートがRequest Nodeによって受信された後に、これらのスヌープメッセージを処理する。別の実施形態では、(第1の時刻と第2の時刻との間の時間枠の間に)第1のアドレスのデータについてスヌープ要求がHome Nodeから受信されたとき、Request Nodeは、要求したデータのデータビートがRequest Nodeによって受信さたときにそれを転送する。この実施形態では、転送されたデータは、Request Nodeまたはホームが、別の要求にサービスする前に、受信されるべきすべてのデータビートを待機した場合に到着したことになるよりも早く、そのターゲット宛先に到着する。
ある実施形態によれば、たとえば図7に示されるように、第1のアドレスのデータを求めるスヌープ要求が、第1の時刻と第2の時刻との間の時間枠の間に、Request Nodeによって受信され、受信されたデータは、Request Nodeによって様々な方式で処理される。スヌープ要求が「snoop once」要求でも、「無効化型」要求でもないとき、Request Nodeは、受信したデータを使用し、修正し、キャッシュするように構成される。スヌープ要求が「snoop once」要求であるとき、Request Nodeは、受信したデータを使用し、受信したデータを「共有」状態にキャッシュするが、データを修正しないように構成される。
スヌープ要求が「無効化型」要求であるとき、Request Nodeは、データを使用するがキャッシュしないように構成される。
図8は、様々な代表的実施形態による、データ処理ネットワークのRequest Nodeの動作800の方法の流れ図である。方法は、たとえば図4に示されるトランザクション流れ図中のRequest Node RN1の動作に対応する。
図8の開始ブロック802の後に、ブロック804において、読取り要求がHNに送られる。次いで、判定ブロック806において、RNは、読取り要求に応答して第1のデータが受信されるまで待機する。データは、HNから、またはSNもしくは別のRNから直接的に受信され得る。最初のデータビートが受信されたとき、判定ブロック806からの肯定的分岐によって示されるように、ブロック808においてCompAckメッセージがHNに送られる。その後で、(ブロック804において要求されたデータについて)新しいスヌープ要求が受信されたとき、判定ブロック810からの肯定的分岐によって示されるように、受信したデータビート(またはビート)は、ブロック812において、スヌープ内で示されるターゲットノードに転送される。その後で、追加のデータビートがRNによって受信されたとき、ブロック814によって示されるように、データビートがターゲットノードに転送される。読取り要求に関連するすべてのデータビートが受信されたとき、判定ブロック816からの肯定的分岐によって示されるように、ブロック818において、RNは、残りのデータビートがあればそれをスヌープターゲットに転送し、方法はブロック820において終了する。このようにして、すべてのデータが受信される前にCompAckメッセージが送られ、それによってHNがより早く解放される。
本開示が例示的実施形態に関して説明されたことを当業者は理解されよう。本開示は、説明され、特許請求される開示と等価な専用ハードウェアおよび/または専用プロセッサなどのハードウェア構成要素均等物を使用して実装され得る。同様に、専用プロセッサおよび/または専用ハードワイヤード論理が、本開示の代替の等価な実施形態を構築するために使用され得る。
開示される機構を実装するために使用される専用または再構成可能ハードウェア構成要素が、ハードウェア記述言語の命令によって、または構成要素および接続性のネットリストによって記述され得る。命令またはネットリストは、本開示から逸脱することなく、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、不揮発性メモリ(NVM)、ハードディスクドライブ、フロッピィディスクドライブ、光ディスクドライブなどのマスストレージ、光記憶素子、磁気記憶素子、光磁気記憶素子、フラッシュメモリ、コアメモリ、および/または他の等価なストレージ技術などの非一時的コンピュータ可読媒体上に記憶され得る。そのような代替記憶デバイスは均等物と見なされるべきである。
本明細書において説明された様々な実施形態は、任意の適切な電子記憶媒体上に記憶され、または任意の適切な電子通信媒体を介して伝送され得る、流れ図形式で大まかに説明されるプログラミング命令を実行する専用ハードウェア、構成可能ハードウェア、またはプログラムされたプロセッサを使用して実装される。これらの要素の組合せが使用され得る。本開示から逸脱することなく、前述のプロセスおよび機構が任意の数の変形形態として実装され得ることを当業者は理解されよう。たとえば、本開示から逸脱することなく、実施されるいくつかの動作の順序がしばしば変更され得、追加の動作が追加され得、動作が削除され得る。そのような変形形態が企図され、等価と見なされる。
本明細書において詳細に説明された様々な代表的実施形態は、限定ではなく、例として提示された。記載の実施形態の形態および細部において様々な変更が行われ得、開示される本開示内にとどまる等価な実施形態が得られることを当業者は理解されよう。
一実施形態は、データ処理ネットワーク内のデータ転送の方法を提供する。方法は、データ処理ネットワークのRequest Nodeによって、ネットワーク内の第1のアドレスのデータを読み取る要求を送ることであって、要求が、コヒーレント相互接続を介して、第1のアドレスに関連するデータ処理ネットワークのHome Nodeに送られること、Request Nodeによって、コヒーレント相互接続を介して、要求したデータの複数のデータビートを受信することであって、複数のデータビートのうちの最初のデータビートが第1の時刻に受信され、複数のデータビートのうちの最後のデータビートが、第1の時刻の後の第2の時刻に受信されること、最初のデータビートを受信したことに応答して、Request Nodeがコヒーレント相互接続を介してHome Nodeに確認メッセージを送ること、およびHome Nodeに確認メッセージを送った後に、Request NodeがHome Nodeから第1のアドレスについてのスヌープメッセージを受諾することを含む方法。
方法は、Home Nodeから受信された第1のアドレスのデータを求めるスヌープ要求が第1の時刻と第2の時刻との間の時間枠内に受信されたとき、Request Nodeによってスヌープ要求をバッファリングすることも含んでもよい。
方法は、複数のデータビートのうちの最後のデータビートの後のスヌープ要求がRequest Nodeによって受信されたことに応答して、Request Nodeがデータを送ることも含んでもよい
方法は、第1のアドレスのデータを求めるスヌープ要求がRequest Nodeによって第1の時刻と第2の時刻との間の時間枠内に受信されたことに応答して、Request Nodeによって受信された、要求されたデータのデータビートをRequest Nodeによって転送することも含んでもよい
数のデータビートが、Request Nodeによって、コヒーレント相互接続を介して、データ処理システムのSlave Nodeから、データ処理システムの別のRequest Nodeから、またはHome Nodeから受信されてもよい
方法は、Home Nodeによって、コヒーレント相互接続を介してSlave NodeからRequest Nodeに送られるべきデータを要求することも含んでもよい
ヌープメッセージがHome Nodeから別のRequest Nodeにおいて受信されたことに応答して、複数のデータビートがその別のRequest Nodeから送られてもよい。
方法は、第1のアドレスのデータを求めるスヌープ要求がRequest Nodeによって第1の時刻と第2の時刻との間の時間枠内に受信されたことに応答して、スヌープ要求が「snoop once」要求でも、「無効化型」要求でもないとき、受信されたデータを使用し、修正し、キャッシュするようにRequest Nodeを構成すること、およびスヌープ要求が「snoop once」要求であるとき、受信されたデータを使用し、受信されたデータを「共有」状態にキャッシュするが、データを修正しないようにRequest Nodeを構成すること、およびスヌープ要求が「無効化型」要求であるとき、データを使用するがキャッシュしないようにRequest Nodeを構成することも含んでもよい
別の実施形態は、データ処理ネットワーク内のデータ転送の方法を実装する。方法は、第1の時刻に、データ処理ネットワークのHome Nodeによって、ネットワーク内の第1のアドレスのデータを読み取る要求を受信することであって、要求が、コヒーレント相互接続を介して、データ処理ネットワークのRequest Nodeから送られ、Home Nodeが第1のアドレスに関連付けられること、Home Nodeによって、データ処理ネットワーク内の要求されたデータのコピーの存在に応じて、第1のアドレスのデータについてのコヒーレンスアクションを実施すること、Home Nodeによって、要求されたデータを複数のデータビートとしてRequest Nodeへ送信させること、第2の時刻に、Home Nodeによって、複数のデータビートのうちの最初のビートの受信を確認する確認メッセージをRequest Nodeから受信すること、第1の時刻と第2の時刻との間の時間枠において、Home Nodeが第1のアドレスのデータを求めるいかなるスヌープ要求もRequest Nodeに送らないこと、および第2の時刻の後に、Home Nodeが、第1のアドレスのデータを求めるスヌープ要求をRequest Nodeに送ることを可能にすることを含む。
方法は、Home Nodeによって、要求を受信したことに応答して、Request Nodeからの読取り要求にHome Nodeのリソースを割り振ること、およびHome Nodeによって、複数のデータビートのうちの最初のビートの受信を確認する確認メッセージをRequest Nodeから受信したことに応答して、Home Nodeのリソースを解放することも含んでもよい
方法は、Home Nodeによって、データ処理ネットワーク内の要求されたデータの1つまたは複数の場所を決定すること、要求されたデータがHome Nodeのキャッシュ内に記憶されるとき、Home Nodeによって、コヒーレント相互接続を介してRequest Nodeに複数のデータビートを転送すること、および要求されたデータが別のノードに記憶されるとき、Home Nodeによって、データ処理ネットワークのその別のノードに要求を送ることも含んでもよい
のノードが、要求されたデータのコピーを有する別のRequest Node、またはデータ処理ネットワークのSlave Nodeであってもよい
別の実施形態は、データ処理ネットワークに関し、データ処理ネットワークは、共有データリソースにアクセスするように構成された1つまたは複数のRequest Nodeと、共有データリソースのデータについてのPoint of Coherencyを提供するHome Nodeと、1つまたは複数のRequest NodeとHome Nodeとの間を結合するように構成されたコヒーレント相互接続とを備え、1つまたは複数のRequest NodeのうちのRequest Nodeが、共有データリソース内の第1のアドレスのデータを読み取る要求をHome Nodeに送ること、要求したデータの複数のデータビートを受信することであって、複数のデータビートのうちの最初のデータビートが第1の時刻に受信され、複数のデータビートのうちの最後のデータビートが、第1の時刻の後の第2の時刻に受信されること、最初のデータビートを受信したことに応答して、Home Nodeに確認メッセージを送ること、およびHome Nodeに確認メッセージを送った後に、Home Nodeからスヌープメッセージを受諾することを含む方法を実施するように構成され、Home Nodeが、第3の時刻に、第1のアドレスのデータを読み取る要求を受信すること、データ処理ネットワーク内の要求されたデータのコピーの場所に応じて、第1のアドレスのデータについてのコヒーレンスアクションを実施すること、要求されたデータを複数のデータビートとしてRequest Nodeへ送信させること、第4の時刻に、複数のデータビートのうちの最初のビートの受信を確認する確認メッセージをRequest Nodeから受信すること、第3の時刻と第4の時刻との間の時間枠において、Home Nodeが、第1のアドレスのデータを求めるいかなるスヌープ要求もRequest Nodeに送らないこと、および第4の時刻の後に、第1のアドレスのデータを求めるスヌープ要求をRequest Nodeに送ることを可能にすることを含む方法を実施するように構成される。
ヌープ要求が第1の時刻と第2の時刻との間の時間枠内で受信されたとき、Request Nodeが、第1のアドレスのデータを求めるHome Nodeからのスヌープ要求をバッファリングするように構成されてもよい。
数のデータビートのうちの最後のデータビートが受信された後、Request Nodeが、スヌープ要求に応答してデータを送るように構成されてもよい。
1の時刻と第2の時刻との間の時間枠内で受信された第1のアドレスのデータを求めるHome Nodeからのスヌープ要求に応答して、Request Nodeが、要求されたデータのデータビートが受信されたときにそれを転送するように構成されてもよい。
Home Nodeが、要求を受信したことに応答して、Request Nodeからの読取り要求にHome Nodeのリソースを割り振るように構成され、複数のデータビートのうちの最初のビートの受信を確認する確認メッセージをRequest Nodeから受信したことに応答してリソースを解放するように構成されてもよい。
別の実施形態は、ハードウェア記述言語の命令を記憶する非一時的コンピュータ可読媒体を提供し、命令が、データ処理ネットワークを記述する。
さらに別の実施形態は、データ処理ネットワークの構成要素および接続性のネットリストを記憶する非一時的コンピュータ可読媒体を提供する
100 データ処理システム
102 処理コアクラスタ(Request Node(RN))
104 コヒーレント相互接続
106 入力/出力(I/O)要求側ノード(RN-I)
108 ネットワーク
112 I/Oデバイス
114 メモリまたは記憶デバイス
116 メモリコントローラ
118 Home Node(HN)
120 Home Node(HN)
202 垂直バー
204 垂直バー
206 Read要求
208 要求されたデータ
210 完了確認(CompAck)メッセージ
302 垂直バー
304 垂直バー
306 垂直バー
308 Read要求
310 ReadNoSnp要求
312 データビート
314 データビート
316 データビート
318 データビート
320 CompAck
322 CompAck
402 垂直バー
404 垂直バー
406 垂直バー
408 垂直バー
410 垂直バー
412 ReadShared要求
414 ReadNoSnpメッセージ
416 CompData0
418 CompData3
420 CompAckメッセージ
422 CompAckメッセージ
424 CompAckメッセージ
RN1 Request Node
RN2 Request Node
RN3 Request Node

Claims (19)

  1. データ処理ネットワーク内のデータ転送の方法であって、
    前記データ処理ネットワークのRequest Nodeによって、前記ネットワーク内の第1のアドレスのデータを読み取る要求を送るステップであって、前記要求が、コヒーレント相互接続を介して、前記第1のアドレスに関連する前記データ処理ネットワークのHome Nodeに送られる、ステップと、
    前記Request Nodeによって、前記コヒーレント相互接続を介して、要求したデータの複数のデータビートを受信するステップであって、前記複数のデータビートのうちの最初のデータビートが第1の時刻に受信され、前記複数のデータビートのうちの最後のデータビートが、前記第1の時刻の後の第2の時刻に受信される、ステップと、
    前記最初のデータビートを受信したことに応答して、前記Request Nodeが前記コヒーレント相互接続を介して前記Home Nodeに確認メッセージを送るステップと、
    前記Home Nodeに前記確認メッセージを送った後に、前記Request Nodeが前記Home Nodeから前記第1のアドレスについてのスヌープメッセージを受諾するステップと
    を含む、方法。
  2. 前記Home Nodeから受信された前記第1のアドレスのデータを求めるスヌープ要求が前記第1の時刻と前記第2の時刻との間の時間枠内に受信されたとき、前記Request Nodeによって前記スヌープ要求をバッファリングするステップをさらに含む、請求項1に記載の方法。
  3. 前記複数のデータビートのうちの前記最後のデータビートの後の前記スヌープ要求が前記Request Nodeによって受信されたことに応答して、前記Request Nodeがデータを送るステップをさらに含む、請求項2に記載の方法。
  4. 前記第1のアドレスのデータを求めるスヌープ要求が前記Request Nodeによって前記第1の時刻と前記第2の時刻との間の時間枠内に受信されたことに応答して、
    前記Request Nodeによって受信された、要求されたデータのデータビートを前記Request Nodeによって転送するステップをさらに含む、請求項1に記載の方法。
  5. 前記複数のデータビートが、前記Request Nodeによって、前記コヒーレント相互接続を介して、前記データ処理システムのSlave Nodeから、前記データ処理システムの別のRequest Nodeから、または前記Home Nodeから受信される、請求項1から4のいずれか一項に記載の方法。
  6. 前記Home Nodeによって、前記コヒーレント相互接続を介して前記Slave Nodeから前記Request Nodeに送られるべきデータを要求するステップをさらに含む、請求項5に記載の方法。
  7. スヌープメッセージが前記Home Nodeから前記別のRequest Nodeにおいて受信されたことに応答して、前記複数のデータビートが前記別のRequest Nodeから送られる、請求項5または6に記載の方法。
  8. 前記第1のアドレスのデータを求めるスヌープ要求が前記Request Nodeによって前記第1の時刻と前記第2の時刻との間の時間枠内に受信されたことに応答して、
    前記スヌープ要求が「snoop once」要求でも、「無効化型」要求でもないとき、受信されたデータを使用し、修正し、キャッシュするように前記Request Nodeを構成するステップと、
    前記スヌープ要求が「snoop once」要求であるとき、前記受信されたデータを使用し、前記受信されたデータを「共有」状態にキャッシュするが、前記データを修正しないように前記Request Nodeを構成するステップと、
    前記スヌープ要求が「無効化型」要求であるとき、前記データを使用するがキャッシュしないように前記Request Nodeを構成するステップと
    をさらに含む、請求項1に記載の方法。
  9. データ処理ネットワーク内のデータ転送の方法であって、
    第1の時刻に、前記データ処理ネットワークのHome Nodeによって、前記ネットワーク内の第1のアドレスのデータを読み取る要求を受信するステップであって、前記要求が、コヒーレント相互接続を介して、前記データ処理ネットワークのRequest Nodeから送られ、前記Home Nodeが前記第1のアドレスに関連付けられる、ステップと、
    前記Home Nodeによって、前記データ処理ネットワーク内の要求されたデータのコピーの存在に応じて、前記第1のアドレスの前記データについてのコヒーレンスアクションを実施するステップと、
    前記Home Nodeによって、前記要求されたデータを複数のデータビートで前記Request Nodeへ送信させるステップと、
    第2の時刻に、前記Home Nodeによって、前記複数のデータビートのうちの最初のビートの受信を確認する確認メッセージを前記Request Nodeから受信するステップと、
    前記第1の時刻と前記第2の時刻との間の時間枠において、前記Home Nodeが前記第1のアドレスのデータを求めるいかなるスヌープ要求も前記Request Nodeに送らないステップと、
    前記第2の時刻の後に、前記Home Nodeが、前記第1のアドレスのデータを求めるスヌープ要求を前記Request Nodeに送ることを可能にするステップと
    を含む、方法。
  10. 前記Home Nodeによって、前記要求を受信したことに応答して、前記Request Nodeからの読取り要求に前記Home Nodeのリソースを割り振るステップと、
    前記Home Nodeによって、前記複数のデータビートのうちの前記最初のビートの受信を確認する前記確認メッセージを前記Request Nodeから受信したことに応答して、前記Home Nodeの前記リソースを解放するステップと
    をさらに含む、請求項9に記載の方法。
  11. 前記Home Nodeによって、前記データ処理ネットワーク内の前記要求されたデータの1つまたは複数の場所を決定するステップと、
    前記要求されたデータが前記Home Nodeのキャッシュ内に記憶されるとき、前記Home Nodeによって、前記コヒーレント相互接続を介して前記Request Nodeに前記複数のデータビートを転送するステップと、
    前記要求されたデータが別のノードに記憶されるとき、前記Home Nodeによって、前記データ処理ネットワークの前記別のノードに要求を送るステップと
    をさらに含む、請求項9または10に記載の方法。
  12. 前記別のノードが、前記要求されたデータのコピーを有する別のRequest Node、または前記データ処理ネットワークのSlave Nodeを含む、請求項11に記載の方法。
  13. 共有データリソースにアクセスするように構成された1つまたは複数のRequest Nodeと、
    前記共有データリソースのデータについてのPoint of Coherencyを提供するHome Nodeと、
    前記1つまたは複数のRequest Nodeと前記Home Nodeとの間を結合するように構成されたコヒーレント相互接続と
    を備えるデータ処理ネットワークであって、
    前記1つまたは複数のRequest NodeのうちのRequest Nodeが、
    前記共有データリソース内の第1のアドレスのデータを読み取る要求を前記Home Nodeに送るステップと、
    要求したデータの複数のデータビートを受信するステップであって、前記複数のデータビートのうちの最初のデータビートが第1の時刻に受信され、前記複数のデータビートのうちの最後のデータビートが、前記第1の時刻の後の第2の時刻に受信される、ステップと、
    前記最初のデータビートを受信したことに応答して、前記Home Nodeに確認メッセージを送るステップと、
    前記Home Nodeに前記確認メッセージを送った後に、前記Home Nodeからスヌープメッセージを受諾するステップと
    を含む方法を実施するように構成され、
    前記Home Nodeが、
    第3の時刻に、前記第1のアドレスのデータを読み取る前記要求を受信するステップと、
    前記データ処理ネットワーク内の要求されたデータのコピーの場所に応じて、前記第1のアドレスの前記データについてのコヒーレンスアクションを実施するステップと、
    前記要求されたデータを前記複数のデータビートとして前記Request Nodeへ送信させるステップと、
    第4の時刻に、前記複数のデータビートのうちの前記最初のビートの受信を確認する前記確認メッセージを前記Request Nodeから受信するステップと、
    前記第3の時刻と前記第4の時刻との間の時間枠において、前記Home Nodeが、前記第1のアドレスのデータを求めるいかなるスヌープ要求も前記Request Nodeに送らないステップと、
    前記第4の時刻の後に、前記第1のアドレスのデータを求めるスヌープ要求を前記Request Nodeに送ることを可能にするステップと
    を含む方法を実施するように構成される、データ処理ネットワーク。
  14. 前記スヌープ要求が前記第1の時刻と前記第2の時刻との間の時間枠内で受信されたとき、前記Request Nodeが、前記第1のアドレスの前記データを求める前記Home Nodeからのスヌープ要求をバッファリングするようにさらに構成される、請求項13に記載のデータ処理ネットワーク。
  15. 前記複数のデータビートのうちの前記最後のデータビートが受信された後、前記Request Nodeが、前記スヌープ要求に応答してデータを送るようにさらに構成される、請求項14に記載のデータ処理ネットワーク。
  16. 前記第1の時刻と前記第2の時刻との間の時間枠内で受信された前記第1のアドレスの前記データを求める前記Home Nodeからのスヌープ要求に応答して、前記Request Nodeが、前記要求されたデータのデータビートが受信されたときにそれを転送するようにさらに構成される、請求項13または14に記載のデータ処理ネットワーク。
  17. 前記Home Nodeがさらに、前記要求を受信したことに応答して、前記Request Nodeからの読取り要求に前記Home Nodeのリソースを割り振るように構成され、前記複数のデータビートのうちの最初のビートの受信を確認する前記確認メッセージを前記Request Nodeから受信したことに応答して前記リソースを解放するように構成される、請求項13から16のいずれか一項に記載のデータ処理ネットワーク。
  18. ハードウェア記述言語の命令を記憶する非一時的コンピュータ可読媒体であって、前記命令が、請求項13から17のいずれか一項に記載のデータ処理ネットワークを記述する、非一時的コンピュータ可読媒体。
  19. 請求項13から17のいずれか一項に記載のデータ処理ネットワークの構成要素および接続性のネットリストを記憶する、非一時的コンピュータ可読媒体。
JP2020561745A 2018-05-03 2019-05-02 データ処理ネットワーク内の転送プロトコル Active JP7284191B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862666256P 2018-05-03 2018-05-03
US62/666,256 2018-05-03
US16/027,864 US10917198B2 (en) 2018-05-03 2018-07-05 Transfer protocol in a data processing network
US16/027,864 2018-07-05
PCT/GB2019/051215 WO2019211609A1 (en) 2018-05-03 2019-05-02 Transfer protocol in a data processing network

Publications (2)

Publication Number Publication Date
JP2021522610A true JP2021522610A (ja) 2021-08-30
JP7284191B2 JP7284191B2 (ja) 2023-05-30

Family

ID=68383972

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020561745A Active JP7284191B2 (ja) 2018-05-03 2019-05-02 データ処理ネットワーク内の転送プロトコル

Country Status (6)

Country Link
US (1) US10917198B2 (ja)
EP (1) EP3788494B1 (ja)
JP (1) JP7284191B2 (ja)
KR (1) KR20210005194A (ja)
CN (1) CN112136118A (ja)
WO (1) WO2019211609A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GR20180100189A (el) 2018-05-03 2020-01-22 Arm Limited Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming
US11741028B1 (en) * 2022-05-20 2023-08-29 Qualcomm Incorporated Efficiently striping ordered PCIe writes across multiple socket-to-socket links

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08263430A (ja) * 1994-12-14 1996-10-11 Internatl Business Mach Corp <Ibm> バス・ターンアラウンド・サイクルを省略する方法及びコンピュータ・システム
JP2002533812A (ja) * 1998-12-21 2002-10-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド コヒーレンシ維持のための柔軟なプローブ/プローブ応答経路制御
JP2012074036A (ja) * 2010-09-28 2012-04-12 Arm Ltd ライトバック順序付けによるコヒーレンス制御
JP2013041581A (ja) * 2011-08-08 2013-02-28 Arm Ltd 同時保留中データアクセスリクエストのためのデータハザード処理
JP2013041582A (ja) * 2011-08-08 2013-02-28 Arm Ltd スヌープフィルタおよび非包括的共有キャッシュメモリ
JP2017510921A (ja) * 2014-03-12 2017-04-13 シリコン グラフィックス インターナショナル コーポレイション 高性能コンピュータシステムにおけるプロトコル対立を解決する装置および方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5893160A (en) * 1996-04-08 1999-04-06 Sun Microsystems, Inc. Deterministic distributed multi-cache coherence method and system
US5864671A (en) * 1996-07-01 1999-01-26 Sun Microsystems, Inc. Hybrid memory access protocol for servicing memory access request by ascertaining whether the memory block is currently cached in determining which protocols to be used
US5887138A (en) * 1996-07-01 1999-03-23 Sun Microsystems, Inc. Multiprocessing computer system employing local and global address spaces and COMA and NUMA access modes
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US6954829B2 (en) * 2002-12-19 2005-10-11 Intel Corporation Non-speculative distributed conflict resolution for a cache coherency protocol
US7856534B2 (en) * 2004-01-15 2010-12-21 Hewlett-Packard Development Company, L.P. Transaction references for requests in a multi-processor network
US7779210B2 (en) * 2007-10-31 2010-08-17 Intel Corporation Avoiding snoop response dependency
US8250311B2 (en) * 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
US8799586B2 (en) * 2009-09-30 2014-08-05 Intel Corporation Memory mirroring and migration at home agent
US8775904B2 (en) * 2011-12-07 2014-07-08 International Business Machines Corporation Efficient storage of meta-bits within a system memory
CN103036717B (zh) * 2012-12-12 2015-11-04 北京邮电大学 分布式数据的一致性维护系统和方法
US10120809B2 (en) * 2015-09-26 2018-11-06 Intel Corporation Method, apparatus, and system for allocating cache using traffic class
CN106713250B (zh) * 2015-11-18 2019-08-20 杭州华为数字技术有限公司 基于分布式系统的数据访问方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08263430A (ja) * 1994-12-14 1996-10-11 Internatl Business Mach Corp <Ibm> バス・ターンアラウンド・サイクルを省略する方法及びコンピュータ・システム
JP2002533812A (ja) * 1998-12-21 2002-10-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド コヒーレンシ維持のための柔軟なプローブ/プローブ応答経路制御
JP2012074036A (ja) * 2010-09-28 2012-04-12 Arm Ltd ライトバック順序付けによるコヒーレンス制御
JP2013041581A (ja) * 2011-08-08 2013-02-28 Arm Ltd 同時保留中データアクセスリクエストのためのデータハザード処理
JP2013041582A (ja) * 2011-08-08 2013-02-28 Arm Ltd スヌープフィルタおよび非包括的共有キャッシュメモリ
JP2017510921A (ja) * 2014-03-12 2017-04-13 シリコン グラフィックス インターナショナル コーポレイション 高性能コンピュータシステムにおけるプロトコル対立を解決する装置および方法

Also Published As

Publication number Publication date
WO2019211609A1 (en) 2019-11-07
EP3788494C0 (en) 2023-12-27
KR20210005194A (ko) 2021-01-13
JP7284191B2 (ja) 2023-05-30
CN112136118A (zh) 2020-12-25
US10917198B2 (en) 2021-02-09
EP3788494A1 (en) 2021-03-10
US20190342034A1 (en) 2019-11-07
EP3788494B1 (en) 2023-12-27

Similar Documents

Publication Publication Date Title
US10169080B2 (en) Method for work scheduling in a multi-chip system
US9529532B2 (en) Method and apparatus for memory allocation in a multi-node system
US20020174229A1 (en) System and method of maintaining coherency in a distributed communication system
US20150254182A1 (en) Multi-core network processor interconnect with multi-node connection
JP7153441B2 (ja) データ処理
US9372800B2 (en) Inter-chip interconnect protocol for a multi-chip system
US10592459B2 (en) Method and system for ordering I/O access in a multi-node environment
KR100516286B1 (ko) 프로세싱 노드들 간의 패킷 전송 방법 및 장치
JP2007287142A (ja) チケット・ベースの動作の追跡をサポートするデータを処理するためのデータ処理システムおよび方法
JP2003510686A (ja) デッドロックのないコンピュータシステム動作のためのバーチャルチャネルおよび対応するバッファ割当て
EP3788492B1 (en) Separating completion and data responses for higher read throughput and lower link utilization in a data processing network
US10437725B2 (en) Master requesting missing segments of a cache line for which the master has coherence ownership
JP7284191B2 (ja) データ処理ネットワーク内の転送プロトコル
JP7419261B2 (ja) ストリーミングデータ転送のためのフロー圧縮を用いたデータ処理ネットワーク
US10642760B2 (en) Techniques for command arbitation in symmetric multiprocessor systems
JP3925105B2 (ja) マルチプロセッサシステム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210105

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230412

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230424

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230518

R150 Certificate of patent or registration of utility model

Ref document number: 7284191

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150