(57)【要約】  コヒーレント相互接続を介して結合された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に送ることを可能にするように構成される。
2021522610.tif 000002
【特許請求の範囲】
【請求項１】
データ処理ネットワーク内のデータ転送の方法であって、
前記データ処理ネットワークの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によって前記スヌープ要求をバッファリングするステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記複数のデータビートのうちの前記最後のデータビートの後の前記スヌープ要求が前記Request Nodeによって受信されたことに応答して、前記Request Nodeがデータを送るステップをさらに含む、請求項2に記載の方法。
【請求項４】
前記第1のアドレスのデータを求めるスヌープ要求が前記Request Nodeによって前記第1の時刻と前記第2の時刻との間の時間枠内に受信されたことに応答して、
前記Request Nodeによって受信された、要求されたデータのデータビートを前記Request Nodeによって転送するステップをさらに含む、請求項1に記載の方法。
【請求項５】
前記複数のデータビートが、前記Request Nodeによって、前記コヒーレント相互接続を介して、前記データ処理システムのSlave Nodeから、前記データ処理システムの別のRequest Nodeから、または前記Home Nodeから受信される、請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記Home Nodeによって、前記コヒーレント相互接続を介して前記Slave Nodeから前記Request Nodeに送られるべきデータを要求するステップをさらに含む、請求項5に記載の方法。
【請求項７】
スヌープメッセージが前記Home Nodeから前記別のRequest Nodeにおいて受信されたことに応答して、前記複数のデータビートが前記別のRequest Nodeから送られる、請求項5または6に記載の方法。
【請求項８】
前記第1のアドレスのデータを求めるスヌープ要求が前記Request Nodeによって前記第1の時刻と前記第2の時刻との間の時間枠内に受信されたことに応答して、
前記スヌープ要求が「snoop once」要求でも、「無効化型」要求でもないとき、受信されたデータを使用し、修正し、キャッシュするように前記Request Nodeを構成するステップと、
前記スヌープ要求が「snoop once」要求であるとき、前記受信されたデータを使用し、前記受信されたデータを「共有」状態にキャッシュするが、前記データを修正しないように前記Request Nodeを構成するステップと、
前記スヌープ要求が「無効化型」要求であるとき、前記データを使用するがキャッシュしないように前記Request Nodeを構成するステップと
をさらに含む、請求項1に記載の方法。
【請求項９】
データ処理ネットワーク内のデータ転送の方法であって、
第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の前記リソースを解放するステップと
をさらに含む、請求項9に記載の方法。
【請求項１１】
前記Home Nodeによって、前記データ処理ネットワーク内の前記要求されたデータの1つまたは複数の場所を決定するステップと、
前記要求されたデータが前記Home Nodeのキャッシュ内に記憶されるとき、前記Home Nodeによって、前記コヒーレント相互接続を介して前記Request Nodeに前記複数のデータビートを転送するステップと、
前記要求されたデータが別のノードに記憶されるとき、前記Home Nodeによって、前記データ処理ネットワークの前記別のノードに要求を送るステップと
をさらに含む、請求項9または10に記載の方法。
【請求項１２】
前記別のノードが、前記要求されたデータのコピーを有する別のRequest Node、または前記データ処理ネットワークのSlave Nodeを含む、請求項11に記載の方法。
【請求項１３】
共有データリソースにアクセスするように構成された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からのスヌープ要求をバッファリングするようにさらに構成される、請求項13に記載のデータ処理ネットワーク。
【請求項１５】
前記複数のデータビートのうちの前記最後のデータビートが受信された後、前記Request Nodeが、前記スヌープ要求に応答してデータを送るようにさらに構成される、請求項14に記載のデータ処理ネットワーク。
【請求項１６】
前記第1の時刻と前記第2の時刻との間の時間枠内で受信された前記第1のアドレスの前記データを求める前記Home Nodeからのスヌープ要求に応答して、前記Request Nodeが、前記要求されたデータのデータビートが受信されたときにそれを転送するようにさらに構成される、請求項13または14に記載のデータ処理ネットワーク。
【請求項１７】
前記Home Nodeがさらに、前記要求を受信したことに応答して、前記Request Nodeからの読取り要求に前記Home Nodeのリソースを割り振るように構成され、前記複数のデータビートのうちの最初のビートの受信を確認する前記確認メッセージを前記Request Nodeから受信したことに応答して前記リソースを解放するように構成される、請求項13から16のいずれか一項に記載のデータ処理ネットワーク。
【請求項１８】
ハードウェア記述言語の命令を記憶する非一時的コンピュータ可読媒体であって、前記命令が、請求項13から17のいずれか一項に記載のデータ処理ネットワークを記述する、非一時的コンピュータ可読媒体。
【請求項１９】
請求項13から17のいずれか一項に記載のデータ処理ネットワークの構成要素および接続性のネットリストを記憶する、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
マルチプロセッサデータ処理システムが、コヒーレント相互接続を介して接続されたプロセッサ、アクセラレータ、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
【図１】
2021522610.tif 000003
【図２】
2021522610.tif 000004
【図３】
2021522610.tif 000005
【図４】
2021522610.tif 000006
【図５】
2021522610.tif 000007
【図６】
2021522610.tif 000008
【図７】
2021522610.tif 000009
【図８】
2021522610.tif 000010
【手続補正書】
【提出日】令和3年1月5日(2021.1.5)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【背景技術】
【０００１】
マルチプロセッサデータ処理システムが、コヒーレント相互接続を介して接続されたプロセッサ、アクセラレータ、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
【国際調査報告】
2021522610.tif 000011
2021522610.tif 000012
2021522610.tif 000013