(57)【要約】      （修正有）【課題】ネットワークによって相互接続されたデバイス間のコヒーレンシを制御するとともに、相互接続がデータ転送のボトルネックとならないデータ処理システムを提供する。【解決手段】データ送信を開始するマスターノードと、データ送信を受信する１つまたは複数のスレーブノードＳＮと、データ処理システムによって記憶されているデータ間でコヒーレンシを制御するホームノードＨＮとを備え、マスターノードから１つまたは複数のスレーブノードＳＮのうち１つへの少なくとも１つのデータ送信がホームノードＨＮを迂回するよう、データ処理システムが構成される。【選択図】図１
2018109965.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムであって、
データ送信を開始するマスターノードと、
データ送信を受信する１つまたは複数のスレーブノードと、
前記データ処理システムによって記憶されているデータ間でコヒーレンシを制御するホームノードとを備え、
前記マスターノードから前記１つまたは複数のスレーブノードのうち１つへの少なくとも１つのデータ送信が、前記ホームノードを迂回する、
データ処理システム。
【請求項２】
前記マスターノードが、前記１つまたは複数のスレーブノードのうち１つへのデータ送信を求める送信リクエストを前記ホームノードに対して発行するように構成され、
あるスレーブノードのあるメモリアドレスに書き込まれたデータが後続のアクセスリクエストに応答してあるメモリアドレスから読み出されるデータと整合するように、前記ホームノードが、前記１つまたは複数のスレーブノードへの送信リクエストとアクセスリクエストをシリアル化するように構成される、
請求項１に記載のシステム。
【請求項３】
前記ホームノードが、前記１つまたは複数のスレーブノードのうち所与の１つのスレーブノードへのデータ送信を求める所与の送信リクエストのシリアル化に応答して、前記所与の送信リクエストに対応する前記データ送信が前記所与のスレーブノードへ直接行われるべきであることを示す許可を発行するように構成される、
請求項２に記載のシステム。
【請求項４】
前記ホームノードによって発行される前記許可がソースノード識別子と目標ノード識別子とを含み、
前記ソースノード識別子が、前記所与のスレーブノードが前記許可の送信元であったことを示す、
請求項３に記載のシステム。
【請求項５】
前記データ送信に、前記ホームノードによって発行された前記許可の前記ソースノード識別子から導出された目標ノード識別子が含まれる、請求項４に記載のシステム。
【請求項６】
先にシリアル化された送信リクエストに関連する第１のデータ送信が完了するまでの間、後にシリアル化された送信リクエストに関連する第２のデータ送信が前記第１のデータ送信と同じメモリアドレスへデータを書き込むことを禁止するように、前記ホームノードが構成される、請求項２に記載のシステム。
【請求項７】
前記１つまたは複数のスレーブノードがそれぞれ、そのスレーブノードへ宛てられた個々の送信データを、そのスレーブノードへ宛てられた他のいかなる送信データとも独立に受容するように構成される、請求項１に記載のシステム。
【請求項８】
前記マスターノードと前記ホームノードおよび前記１つまたは複数のスレーブノードとの間にインタフェース回路を含み、
前記インタフェース回路が、前記マスターノードから第１のデータ伝送プロトコルに従って送信リクエストおよび送信データを受け取り、受け取った前記送信データからデータを前記所与のスレーブノードに別の第２のデータ伝送プロトコルに従って伝送するように構成される、
請求項３に記載のシステム。
【請求項９】
前記インタフェース回路が、前記所与のスレーブノードへ送信するための送信メッセージを生成するように構成され、前記送信メッセージが、受け取った前記送信リクエストからのメモリアドレス情報および受け取った前記送信データからのデータを少なくとも含む、請求項８に記載のシステム。
【請求項１０】
前記インタフェース回路が、受け取った前記送信リクエストからのアドレス情報と受け取った前記送信データからのデータのうち、少なくとも１つをバッファリングするバッファを備える、請求項９に記載のシステム。
【請求項１１】
前記マスターノードが関連のキャッシュメモリを有し、前記１つまたは複数のスレーブノードのうち少なくとも１つが上位のメモリを提供する請求項８に記載のシステムであって、
少なくとも１つの別のマスターノードを含み、
前記別のマスターノードからの、前記キャッシュメモリに格納されたメモリアドレスからデータを取り出すように求めるデータアクセスリクエストに応答して、前記インタフェース回路が前記キャッシュメモリから取り込んだデータを受け取って、受け取った前記データを前記別のマスターノードに提供するように構成される、
請求項８に記載のシステム。
【請求項１２】
前記キャッシュメモリに取り込まれた前記データが、前記上位のメモリ内の同じメモリアドレスに保持されているデータと異なる場合に、前記インタフェース回路が、取り込んだ前記データを前記上位メモリへの送信データとして送信するように構成される、請求項１１に記載のシステム。
【請求項１３】
前記マスターノードから前記スレーブノードのうちの前記１つへのデータ送信に関して、前記スレーブノードが前記データ伝送のための信用状を発行するように構成され、前記信用状が前記ホームノードを迂回するパスによって前記マスターノードに提供される、請求項１に記載のシステム。
【請求項１４】
前記スレーブノードが、前記信用状と記完了通知を含む単一のメッセージを発行するように構成される、請求項１３に記載のシステム。
【請求項１５】
前記スレーブノードのうち１つまたは複数が、前記マスターノードとは異なる通信プロトコルに従って動作するように構成される、請求項１に記載のシステム。
【請求項１６】
前記マスターノードがコヒーレント・ハブ・インタフェース・プロトコルに従って動作するように構成され、前記スレーブノードのうち１つまたは複数がアドバンスト・エクステンシブル・インタフェース・プロトコルに従って動作するように構成される、請求項１５に記載のシステム。
【請求項１７】
データ処理システムのマスターノード、ならびに、ホームノードおよび１つまたは複数のスレーブノードと情報を交換する回路を備え、前記ホームノードが前記データ処理システムによって記憶されているデータの間でコヒーレンシを制御するインタフェース回路であって、
前記マスターノードから第１のデータ伝送プロトコルに従って送信リクエストおよび送信データを受け取り、受け取った前記送信データからデータを別の第２のデータ伝送プロトコルに従って所与のスレーブノードに伝送するように構成される、
インタフェース回路。
【請求項１８】
所与のスレーブノードへ送信するための送信メッセージを生成するように構成され、前記送信メッセージが、前記マスターノードから受け取った前記送信リクエストからのメモリアドレスおよび、前記マスターノードから受け取った前記送信データからのデータを少なくとも含む、請求項１７に記載のインタフェース回路。
【請求項１９】
データ処理方法であって、
マスターノードが１つまたは複数のスレーブノードへのデータ送信を開始することと、
ホームノードが、前記１つまたは複数のスレーブノードの間でコヒーレンシを制御するここと、
前記マスターノードが、前記ホームノードを迂回して前記１つまたは複数のスレーブノードにデータを送信することとを含む、
データ処理方法。
【請求項２０】
方法であって、
データ処理システムのマスターノード、ならびに、ホームノードおよび１つまたは複数のスレーブノードと情報を交換するインタフェース回路を提供し、前記ホームノードが前記データ処理システムによって記憶されているデータの間でコヒーレンシを制御することと、
前記インタフェース回路が、前記マスターノードから第１のデータ伝送プロトコルに従って送信リクエストおよび送信データを受け取り、受け取った前記送信データからデータを別の第２のデータ伝送プロトコルに従って所与のスレーブノードに伝送することとを含む、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はデータ処理に関する。
【背景技術】
【０００２】
例えばシステム・オン・チップ（ＳｏＣ）またはネットワーク・オン・チップ（ＮｏＣ）システムとの関連において、相互接続回路を介して互いに接続されたデバイスまたはノードの間のデータ伝送の動作を、データ伝送プロトコルによって調整することができる。そのようなデータ伝送プロトコルの一例に、いわゆるＡＭＢＡ（アドバンスト・マイクロコントローラ・バス・アーキテクチャ）ＣＨＩ（コヒーレント・ハブ・インタフェース）プロトコルがある。
【０００３】
ＣＨＩプロトコルでは、ノードを、リクエストノード（ＲＮ）、ホームノード（ＨＮ）、スレーブノード（ＳＮ）に分類することができる。ノードは完全コヒーレントまたは入出力（Ｉ／Ｏ）コヒーレントであることができる。完全コヒーレントなＨＮまたはＲＮ（それぞれＨＮ−Ｆ、ＲＮ−Ｆ）にはコヒーレンス・キャッシュ・ストレージが含まれ、完全コヒーレントなＳＮ（ＳＮ−Ｆ）はＨＮ−Ｆとペアになる。ＨＮ−Ｆは、あるメモリ領域についてコヒーレンシ（コヒーレンス性）を管理することができる。
【０００４】
ここで、「コヒーレント」という用語は、コヒーレントなメモリシステム内のあるメモリアドレスに、あるノードによって書き込まれたデータが、そのコヒーレントなメモリシステムのそのメモリアドレスから別のノードによって読み出されたデータと整合することを意味する。よって、コヒーレンス機能に関連付けられたロジックの１つの役割は、データ処理トランザクションが行われる前に、アクセスされるデータ項目のバージョンが（同じデータ項目の別のコピーに加えられた修正に起因して）古くなっている場合には、まず、アクセスされるコピーを確実に最新版にしておくことである。同様に、データ処理トランザクションにデータ項目の修正が伴う場合には、コヒーレンスロジックは、そのデータ項目の、他の既存のコピーとの矛盾を回避する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＣＨＩプロトコルの目的は、書き込みデータチャネルが自由に流れるようにすることにより、相互接続がデータ伝送を阻むボトルネックにならないようにすることである。これは、ＣＨＩ準拠のシステムでは、ＨＮが、あるＲＮから、あるＳＮへのデータ書き込みに関する書き込みリクエストを受け取ったことに応答して、そのＲＮに完全なパケットバッファを割り当てることによって実現される。パケットバッファは、伝送に関係するすべてのデータフリット（ｆｌｉｔ：フロー制御ディジット）がＲＮから受け取られ、ＳＮへ送り終えられたときに解放される。この仕組みでは、かなりの大きさのバッファ空間がＨＮに必要になる。
【０００６】
プロトコルの例として他に、ＡＸＩ（アドバンスト・エクステンシブル・インタフェース）プロトコルや、ＡＣＥ  （ＡＸＩコヒーレンシ・エクステンション）プロトコルがある。いくつかの点で、ＣＨＩとＡＸＩ／ＡＣＥのプロトコルには互換性がない。例えば、ＡＣＥプロトコルはＨＮを使用しないがコヒーレンシを提供する。どのプロトコルでも、書き込みデータが自由に流れることが必要だが、相互接続（ＡＣＥプロトコルにおいてコヒーレンシを管理する）では、書き込みデータを書き込みリクエストと同じトランザクションの一部としてルーティングしなければならない。
【課題を解決するための手段】
【０００７】
ある構成例ではデータ処理システムが提供され、このシステムは、
データ送信を開始するマスターノードと、
データ送信を受信する１つまたは複数のスレーブノードと、
データ処理システムによって記憶されているデータ間でコヒーレンシを制御するホームノードとを備え、マスターノードから１つまたは複数のスレーブノードのうち１つへの少なくとも１つのデータ送信が、ホームノードを迂回する。
【０００８】
別の構成例ではインタフェース回路が提供され、この回路は、
データ処理システムのマスターノード、ならびにホームノードおよび１つまたは複数のスレーブノードと情報を交換する回路を備え、ホームノードはデータ処理システムによって記憶されているデータの間でコヒーレンシを制御し、
このインタフェース回路は、マスターノードから第１のデータ伝送プロトコルに従って送信リクエストおよびデータ送信を受け取り、受け取ったデータ送信から、別の第２のデータ伝送プロトコルに従って、データを所与のスレーブノードに伝送するように構成される。
【０００９】
別の構成例ではデータ処理方法が提供され、この方法は、
マスターノードが、１つまたは複数のスレーブノードへのデータ送信を開始することと、ホームノードが、１つまたは複数のスレーブノードの間でコヒーレンシを制御することと、
マスターノードが、ホームノードを迂回して１つまたは複数のスレーブノードにデータを送信することとを含む。
【００１０】
別の構成例では方法が提供され、この方法は、
データ処理システムのマスターノード、ならびに、ホームノードおよび１つまたは複数のスレーブノードと情報を交換するインタフェース回路を提供し、ホームノードがデータ処理システムによって記憶されているデータの間でコヒーレンシを制御することと、
インタフェース回路が、マスターノードから第１のデータ伝送プロトコルに従って送信リクエストおよびデータ送信を受け取り、受け取ったデータ送信から、別の第２のデータ伝送プロトコルに従って、データを所与のスレーブノードに伝送することとを含む。
【００１１】
本技術のさらなる態様および特徴がそれぞれ、添付の特許請求の範囲によって定められる。
【００１２】
本技法について、添付図面に示される実施形態を参照しながら、単に例として、さらに詳細に説明する。
【図面の簡単な説明】
【００１３】
【図１】データ処理装置の概略図である。
【図２】書き込みデータトランザクションの概略図である。
【図３】ホームノードを迂回する書き込みデータトランザクションの概略図である。
【図４】方法の概略フローチャートである。
【図５】ホームノードを迂回する書き込みデータトランザクションの概略図である。
【図６】トランザクションの間の識別子フィールドの概略図である。
【図７】トランザクションの間の識別子フィールドの概略図である。
【図８】ホームノードを迂回する書き込みデータトランザクションの概略図である。
【図９】ホームノードを迂回する書き込みデータトランザクションの概略図である。
【図１０】書き込みデータトランザクションの概略図である。
【図１１】ホームノードを迂回する書き込みデータトランザクションの概略図である。
【図１２】ホームノードを迂回する書き込みデータトランザクションの概略図である。
【図１３】ホームノードを迂回する書き込みデータトランザクションの概略図である。
【図１４】インタフェース回路の概略図である。
【図１５】方法の概略フローチャートである。
【図１６】方法の概略フローチャートである。
【発明を実施するための形態】
【００１４】
添付図面を参照しながら実施形態について説明する前に、実施形態について下記の説明を提供する。
【００１５】
ある実施形態の例ではデータ処理システムが提供され、このシステムは、
データ送信を開始するマスターノードと、データ送信を受信する１つまたは複数のスレーブノードと、
データ処理システムによって記憶されているデータ間でコヒーレンシを制御するホームノードとを備え、
マスターノードから１つまたは複数のスレーブノードのうち１つへの少なくとも１つのデータ送信が、ホームノードを迂回する。
【００１６】
複数の構成例で、ホームノードがコヒーレンシを監視できるようにしながらもマスターノードがスレーブノードに直接データ送信を発行できるようにすることによって、ホームノードでのバッファリングの必要を低減させ、かつ／または、書き込みデータトランザクションの間のデータトラフィックを低減させることができる。
【００１７】
いくつかの例では、システムは、マスターノードを、１つまたは複数のスレーブノードのうち１つへのデータ送信を求める送信リクエストをホームノードに対して発行するように構成することと、ホームノードを、スレーブノードのあるメモリアドレスに書き込まれたデータが後続のアクセスリクエストに応答してそのメモリアドレスから読み出されるデータと整合するように、送信リクエストと１つまたは複数のスレーブノードへのアクセスリクエストをシリアル化するように構成することとによって、コヒーレント技法を利用することができる。
【００１８】
いくつかの例では、迂回技法は、１つまたは複数のスレーブノードのうち所与の１つのスレーブノードへのデータ送信を求める所与の送信リクエストのシリアル化に応答して、ホームノードを、その所与の送信リクエストに対応するデータ送信がその所与のスレーブノードへ直接行われるべきであることを示す許可を発行するように構成することによって、実装することができる。複数の実装例で、ホームノードによって発行される許可はソースノード識別子と目標ノード識別子とを含み、このソースノード識別子は、所与のスレーブノードが許可の送信元であったことを示す。そのような例のいくつかでは、データ送信には、ホームノードによって発行された許可のソースノード識別子から導出された目標ノード識別子が含まれる。
【００１９】
いわゆるデータハザードを回避するために、いくつかの例では、先にシリアル化された送信リクエストに関連する第１のデータ送信が完了するまで、後にシリアル化された送信リクエストに関連する第２のデータ送信が第１のデータ送信と同じメモリアドレスにデータを書き込むことを禁止するように、ホームノードが構成される。
【００２０】
複数の例で、１つまたは複数のスレーブノードはそれぞれ、そのスレーブノードへ宛てられた個々のデータ送信を、そのスレーブノードへ宛てられた他のいかなるデータ送信とも独立に受容するように構成される。
【００２１】
これらの構成では、マスターノードと、ホームノードおよび１つまたは複数のスレーブノードとの間でインタフェース回路を使用し、このインタフェース回路を、マスターノードから第１のデータ伝送プロトコルに従って送信リクエストおよびデータ送信を受け取り、受け取ったデータ送信からのデータを所与のスレーブノードに別の第２のデータ伝送プロトコルに従って伝送するように構成することによって、複数のプロトコル形式にわたってデータ送信を好都合に提供することができる。
【００２２】
複数の例で、インタフェース回路は、その所与のスレーブノードへ送信するための送信メッセージを生成するように構成され、送信メッセージは、受け取った送信リクエストからのメモリアドレス情報および受け取ったデータ送信からのデータを少なくとも含む。インタフェース回路は、受け取った送信リクエストからのアドレス情報と受け取ったデータ送信からのデータのうち、少なくとも１つをバッファリングするバッファを備えてもよい。
【００２３】
ある構成によって、いわゆる汚れたコヒーレントデータのクリーニングを提供することができ、この構成では、マスターノードが関連のキャッシュメモリを有し、１つまたは複数のスレーブノードのうち少なくとも１つが上位のメモリを提供し、システムが少なくとも１つのさらなるマスターノードを備えている。この構成では、キャッシュメモリに記憶されたメモリアドレスからデータをキャッシュメモリに取り込むように求める、さらなるマスターノードからのデータアクセスリクエストに応答して、インタフェース回路が、取り込まれたデータをキャッシュメモリから受け取って、取り込まれたデータをさらなるマスターノードへ提供するように構成される。
【００２４】
少なくともいくつかの例では、キャッシュメモリに取り込まれたデータが、上位のメモリ内の同じメモリアドレスに保持されているデータと異なる場合には、インタフェース回路は、取り込んだデータを上位メモリへのデータ送信として送信するように構成される。
【００２５】
いくつかの例では、マスターノードからスレーブノードのうち１つへのデータ送信に関して、スレーブノードがデータ伝送のための信用状を発行するように構成され、その信用状がホームノードを迂回するパスによってマスターノードに提供されることによって、迂回技法を実現することができる。
【００２６】
好都合には、データトラフィックを低減させるために、信用状および確認通知を含む単一のメッセージを発行するようにスレーブノードを構成することができる。
【００２７】
少なくともいくつかの例では、スレーブノードのうち１つまたは複数は、マスターノードとは異なる通信プロトコルに従って動作するように構成される。例えば、マスターノードがコヒーレント・ハブ・インタフェース・プロトコルに従って動作するように構成され、スレーブノードのうち１つまたは複数がアドバンスト・エクステンシブル・インタフェース・プロトコルに従って動作するように構成されてもよい。
【００２８】
別の実施形態の例ではインタフェース回路が提供され、この回路は、
データ処理システムのマスターノードならびにホームノードおよび１つまたは複数のスレーブノードと情報を交換する回路を備え、ホームノードはデータ処理システムによって記憶されているデータの間でコヒーレンシを制御し、
このインタフェース回路は、マスターノードから第１のデータ伝送プロトコルに従って送信リクエストおよびデータ送信を受け取り、受け取ったデータ送信から、別の第２のデータ伝送プロトコルに従って、データを所与のスレーブノードに伝送するように構成される。
【００２９】
いくつかの例では、インタフェース回路は、所与のスレーブノードへ送信するための送信メッセージを生成するように構成され、送信メッセージは、マスターノードから受け取った送信リクエストからのメモリアドレスおよび、マスターノードから受け取ったデータ送信からのデータを少なくとも含む。
【００３０】
別の実施形態の例ではデータ処理方法が提供され、この方法は、
マスターノードが、１つまたは複数のスレーブノードへのデータ送信を開始することと、
ホームノードが、１つまたは複数のスレーブノードの間でコヒーレンシを制御することと、
マスターノードが、ホームノードを迂回して１つまたは複数のスレーブノードにデータを送信することとを含む。
【００３１】
別の実施形態の例では、ある方法が提供され、この方法は、
データ処理システムのマスターノード、ならびに、ホームノードおよび１つまたは複数のスレーブノードと情報を交換するインタフェース回路を提供し、ホームノードがデータ処理システムによって記憶されているデータの間でコヒーレンシを制御することと、
インタフェース回路が、マスターノードから第１のデータ伝送プロトコルに従って送信リクエストおよびデータ送信を受け取り、受け取ったデータ送信から、別の第２のデータ伝送プロトコルに従って、データを所与のスレーブノードに伝送することとを含む。
【００３２】
次に図面を参照すると、図１は、ネットワーク１００によって相互接続されたデバイスのネットワークとして具体化された処理装置を概略的に示す。装置は、いわゆるシステム・オン・チップ（ＳｏＣ）もしくはネットワーク・オン・チップ（ＮｏＣ）などの単一の集積回路として、または、相互接続された別々の複数デバイスとして提供されてもよい。
【００３３】
さまざまな、いわゆるノードがネットワーク１００を介して接続されている。それらのノードには、ネットワーク化されたシステム内のデータコヒーレンシを監督する、１つまたは複数のホームノード（ＨＮ）１１０ならびに、上位キャッシュメモリ１２０（「上位」とは、要求元のノードにより提供されるキャッシュメモリより高いレベルであることを指し、下記に説明する）、メインメモリ１３０、および周辺デバイス１４０などの１つまたは複数のスレーブノード（ＳＮ）が含まれる。図１に示されるスレーブノードの選択内容は一例であり、０個またはそれより多くの各タイプのスレーブノードが備わってもよい。
【００３４】
図１はさらに、複数のいわゆるリクエストノード（ＲＮ）１５０、１６０、１７０、１８０を示す。それらのうち、ＲＮ１６０、１７０はＣＨＩ（コヒーレント・ハブ・インタフェース）プロトコルに従って動作し、ＲＮ１８０はＡＸＩ（アドバンスト・エクステンシブル・インタフェース）標準に従って動作する。
【００３５】
ＲＮ１６０は、関連のキャッシュメモリ１６２を有する完全コヒーレントＲＮ（ＲＮ−Ｆ）である。ＲＮ１７０もまたＲＮ−Ｆであってもよく、キャッシュメモリ１７２を有してもよい。ＲＮ１５０は、いわゆるＡＣＥ−ｌｉｔｅプロトコルに従って動作する入出力コヒーレントなマスターである。
【００３６】
ノード１５０、１５０、１７０、１８０にはネットワークインタフェース（ＮＩ）が備わる。ノード１６０、１７０のＮＩはＣＨＩ−ＮＩ１６４、１７４で、ノード１５０、１８０のＮＩはＡＸＩ−ＮＩ１５４、１８４である。ネットワークインタフェースの動作について下記で詳細に考察する。
【００３７】
前述したように、ノードは完全コヒーレントであることも、入出力（Ｉ／Ｏ）コヒーレントであることもできる。完全コヒーレントなＨＮまたはＲＮ（それぞれＨＮ−Ｆ、ＲＮ−Ｆ）は、コヒーレント・キャッシュストレージを含む。完全コヒーレントなＳＮ（ＳＮ−Ｆ）はＨＮ−Ｆとペアになる。ＨＮ−Ｆは、あるメモリ領域についてコヒーレンシ（コヒーレンス性）を管理することができる。
【００３８】
複数の構成例で、１つまたは複数のスレーブノードはそれぞれ、そのスレーブノードへ宛てられた個々のデータ送信を、そのスレーブノードへ宛てられた他のいかなるデータ送信とも独立に受容するように構成される。
【００３９】
下記で考察するように、ＮＩはマスターノードとホームおよび１つまたは複数のスレーブノードとの間にインタフェース回路の例を提供することができ、このインタフェース回路は、マスターノードから第１のデータ伝送プロトコルに従って送信リクエストおよびデータ送信を受け取り、受け取ったデータ送信からのデータを所与のスレーブノードに別の第２のデータ伝送プロトコルに従って伝送するように構成される。例えば、下記で図３を参照しながら考察するように、ＣＨＩ−ＮＩが、ＡＸＩ準拠のスレーブノードへの書き込みデータパケットを発行することができる。
【００４０】
したがって、少なくともいくつかの例では、図１は、スレーブノードのうち１つまたは複数が、マスターノードとは異なる通信プロトコルに従って動作するように構成される例を表す。例えば、マスターノードがコヒーレント・ハブ・インタフェース・プロトコルに従って動作するように構成され、スレーブノードのうち１つまたは複数がアドバンスト・エクステンシブル・インタフェース・プロトコルに従って動作するように構成されてもよい。下記で考察する例は、このマスターとスレーブの構成にも適用可能である。
【００４１】
図２は、従来提案されている、ＣＨＩプロトコルに従うデータ書き込みリクエストを表す概略図である。この図および、下記で考察する、対応する類似の図では、時間、または少なくとも処理の進行が、早期（図の上部）から後期（図の下部）に向けて垂直方向に示される。システム内のさまざまなノードが垂直線で表される。よって、図２の例には、書き込みトランザクションが、要求元ノードＲＮ−ＦからホームノードＨＮ−Ｆを介してスレーブノードＳＮ−Ｆにまで行われる様子が表されている。
【００４２】
時刻２００で、ＲＮ−ＦがＨＮ−Ｆに書き込みリクエスト２１０を送ることにより、ＲＮ−Ｆによって書き込みトランザクションが開始される。時刻２２０で、ＨＮ−Ｆが書き込みリクエストにバッファを割り当て、完了通知（ＣｏｍｐＤＢＩＤＲｅｓｐ）２３０をＲＮ−Ｆに返す。
【００４３】
その間、ＲＮ−Ｆは書き込みデータをローカルバッファに保持しているが、時刻２４０で、ＨＮ−Ｆから完了通知を受け取ると、書き込みデータをデータ２５０としてＨＮ−Ｆに送る。ＨＮ−ＦはＲＮ−Ｆからデータを受け取ると、割り当てられたバッファに書き込みデータを格納する。この時点で、ＨＮ−Ｆは、スヌープ検出無しの書き込み操作を示す書き込みリクエスト（ＷｒｉｔｅＮｏＳｎｐ）２６０をＳＮ−Ｆに送る。ＳＮ−Ｆは、書き込みリクエストの受領確認通知２７０で応答し、ＨＮ−Ｆは時刻２８０で、その確認通知を受け取ると、バッファリングした書き込みデータをデータ２９０としてＳＮ−Ｆに送る。
【００４４】
この構成では、ＲＮ−ＦとＨＮ−Ｆでバッファリングが必要である。トランザクションを完了するには、少なくとも時刻２００と２４０の間にＲＮ−Ｆにバッファ空間が割り当てられていなければならず、少なくとも時刻２１０と２８０の間にＨＮ−Ｆにバッファ空間が割り当てられていなければならない。
【００４５】
前述したように、ＣＨＩプロトコルには、ＲＮから見て、書き込みデータチャネルは、さらさら（free flowing）でなければならないという要件がある。図２に示されるように、この要件は、従来提案されているＣＨＩ構成では、保留中の書き込みリクエストについて、その都度ＨＮに完全なパケットバッファを割り当てることによって満たされる。しかし、その場合、莫大な量のローカルバッファメモリが必要になる可能性があり、いくつかの構成例では各データバッファの大きさは６４バイトなので、十分なバッファストレージを準備すると、集積回路の面積と消費電力に関して高額の費用がかかる可能性がある。
【００４６】
また、図２に概略的に示される、従来提案されているＣＨＩトランザクションはＡＸＩエンドポイントには適合しないことにも留意すべきである。
【００４７】
図３は、ＣＨＩ−ＮＩ（図１の１６４、１７４）が関与するトランザクションを概略的に表す。図３に示されるトランザクションは、要求元ノードＣＨＩ−ＲＮがスレーブノードＳＮ−Ｆへの書き込みトランザクションを行うことに関する。前の図と同様に、時間、または処理の進行が、図の上部の早期から図の下部の後期に向けて垂直方向に示される。
【００４８】
図３を参照すると、ＣＨＩ−ＲＮがＣＨＩ−ＮＩに対して書き込みリクエスト３００を発行する。ＣＨＩ−ＮＩは書き込みトランザクションのアドレスを記憶し、また、書き込みリクエスト３００から導出した書き込みリクエスト３０２をＨＮに転送する。
【００４９】
このリクエストが、先行するいずれかのリクエストと共にシリアル化されたときに、時刻３１０で、ＨＮが応答を返す。ただし、図２に示される構成とは異なり、応答３２０は、書き込みデータをＨＮではなく最終的な目標ノードＳＮ−Ｆに送るようにＣＨＩ−ＮＩに命じる。この例では、ホームノードは、１つまたは複数のスレーブノードのうち所与の１つのスレーブノードへのデータ送信を求める所与の送信リクエストのシリアル化に応答して、その所与の送信リクエストに対応するデータ送信がその所与のスレーブノードへ直接行われるべきであることを示す許可を発行するように構成される。これを（メッセージ内のソースアドレスおよび／または目標アドレスを変更することにより）実現させるための技法の一例について、下記で考察する。
【００５０】
ＣＨＩ−ＮＩは応答３２０から導出した応答３２２をＣＨＩ−ＲＩに転送し、さらに、このトランザクションに属するすべての書き込みデータフリット（フロー制御ディジット）の受容を保証するために、そのＣＨＩ−ＮＩにローカルのパケットバッファを割り当てる。応答３２２を受け取ったことに応答して、ＣＨＩ−ＲＮは書き込みデータをデータ３３０としてＣＨＩ−ＮＩに送る。
【００５１】
同じトランザクションに属するすべての書き込みデータフリットをパケットバッファに受け取ったら、ＣＨＩ−ＮＩは、完全な書き込みパケットを、この例ではＡＸＩ完全書き込みパケット３４０として最終目標ノードに送る。したがって、この例では、インタフェース回路は、その所与のスレーブノードへ送信するための送信メッセージを生成するように構成され、送信メッセージは、受け取った送信リクエストからのメモリアドレス情報および受け取ったデータ送信からのデータを少なくとも含む。ＣＨＩ−ＮＩはパケットバッファおよびトランザクションアドレス追跡の割り当てを解除するが、ＣＨＩ−ＮＩと目標ノードＳＮ−Ｆの間のトランザクションに関連するトランザクション識別子（ＩＤ）を追跡することができる。
【００５２】
目標ノードは、他のリクエストとの依存関係を一切もたずに、その書き込みパケット（デッドロックを回避するために、それ以前にＨＮに送られた書き込みリクエストとは別のチャネルで送信される）を受容する。目標ノードは、トランザクションが終了すると、ＣＨＩ−ＮＩに応答３５０を送る。ＣＨＩ−ＮＩは受け取った応答をＲＮに転送し、終了確認通知３６０をＨＮに送ることができる。ＣＨＩ−ＮＩはさらに、この時点で、そのリクエストの割り当てをＩＤ追跡から解除する。
【００５３】
いくつかの例では、ＲＮからＨＮへの確認通知が要求されてもよく（特定のプロトコルを使用して）、その場合、ＣＨＩ−ＮＩは、ＲＮからの確認通知を受け取るまで待機してから、確認通知３６０を発行する。
【００５４】
確認通知３６０を受け取ると、ＨＮは、そのＨＮの追跡対象からそのリクエストの割り当てを解除し、そのリクエストに関連する「ハザード」を削除する（すなわち、そのリクエストは、共に保留されている複数のリクエストのシリアル化に無関係になる）。
【００５５】
バッファリング要件に関して、ＣＨＩ−ＮＩとＲＮの間の遅延をカバーするためにパケットバッファが必要である。リクエストバッファに必要なことは、ＣＨＩ−ＮＩのリクエストとＨＮの応答の間のラウンドトリップ遅延を補償することだけである。
【００５６】
したがって、図３の例によって動作する図１の構成は、次のものを有するデータ処理システムの例を示し、このデータ処理システムは、
データ送信を開始するマスターノードと、
データ送信を受信する１つまたは複数のスレーブノードと、
データ処理システムによって記憶されているデータ間でコヒーレンシを制御するホームノードとを備え、マスターノードから１つまたは複数のスレーブノードのうち１つへの少なくとも１つのデータ送信が、ホームノードを迂回する。
【００５７】
図４は、前述した書き込みデータトランザクションの文脈でのホームノード（ＨＮ）の動作を示す概略フローチャートである。
【００５８】
ステップ４００で、ＨＮが、そのトランザクションを他の保留中のトランザクションの間でシリアル化して、そのトランザクションが同じまたは重複するメモリ領域にアクセスする他のトランザクションに対して正しい依存関係の順序で遂行されるようにする。
【００５９】
ステップ４１０で、ＨＮはいわゆるハザードを生成する。この文脈（context）では、ハザードとは、あるラインのための特定のメモリ領域が、そのラインの状況を変えることのある保留中のトランザクションの対象であることを示す、ＨＮによって保持される指示子であり、よって、そのハザードはＨＮに、現在のトランザクションが完了するまで他のトランザクションにそのラインのアクセスを許可しないように指示する。
【００６０】
ステップ４２０で、ＨＮは、そのトランザクションが行われるための許可を与える。図３の状況では、これは応答３２０である。
【００６１】
ステップ４３０で、ＨＮはトランザクション終了の確認通知を受け取り、これは、図３の状況では確認通知３６０で表される。次に、ステップ４４０で、ＨＮは、その特定のメモリ領域またはラインに関連付けられたハザードを解除する。
【００６２】
よって、ＨＮは異なるアドレス間でコヒーレンシおよびハザード発令の制御を維持するが、図３を参照しながら考察するように、そのとき、要求元ノードと目標ノードの間で書き込みトランザクションを行うことができることが分かる。
【００６３】
したがって、そのような例では、マスターノードは、１つまたは複数のスレーブノードのうち１つへのデータ送信を求める送信リクエストをホームノードに対して発行するように構成され、ホームノードは、スレーブノードのあるメモリアドレスに書き込まれたデータが後続のアクセスリクエストに応答してそのメモリアドレスから読み出されるデータと整合するように、送信リクエストと１つまたは複数のスレーブノードへのアクセスリクエストをシリアル化するように構成される。
【００６４】
図５は、図１のＲＮ（ＡＸＩ）１８０と、ＳＮ−Ｆなどの目標ノードとの間の書き込みトランザクションに適したフローの概略的な表現である。その形式は、図３に示されたフローと類似しており、時間、または処理の進行は、図の上部の早期から図の下部の後期に向けて進む。
【００６５】
ＲＮ（ＡＸＩ）が、書き込みパケット５００をＡＸＩ−ＮＩに送ることによって書き込み動作を開始する。ＡＸＩプロトコルの場合、書き込みパケットは、目標アドレスとすべての書き込みデータとを含む。
【００６６】
ＡＸＩ−ＮＩは、ＲＮ（ＡＸＩ）から受け取った書き込みパケットをバッファリングして、ＨＮに書き込みリクエスト５１０を送る。ＡＸＩ書き込みパケット５００とは異なり、書き込みリクエスト５１０は、単にリクエストであって、書き込みデータではない。
【００６７】
ＨＮはその書き込みリクエストをＣＨＩ準拠の要求元ノードからのものであるかのように処理して、応答５２０を返す。この応答は、そのリクエストの受領を確認し、書き込みデータを目標ノードへ送ることを許可する。応答５２０に応答して、ＡＸＩ−ＮＩは完全書き込みパケット（リクエストとデータ）５３０を目標ノードに送り、それに応答して目標ノードが完了の確認通知５４０を返す。ＡＸＩ−ＮＩはその確認通知を確認通知５５０としてＲＮ（ＡＸＩ）に送り、さらに、完了確認通知５５０をＨＮに送る。
【００６８】
図６および７は、図３および５の構成でパケットアドレス指定がどのように処理されるかを示す概略図である。
【００６９】
図６は、上記にて考察した、図３に示される構成に関連する。ＣＨＩ−ＮＩからのオリジナルのリクエストには、ソース識別子６００、目標識別子（最終目標（ＳＮ）を特定する）６０２、およびトランザクションＩＤ６０４を含め、さまざまな識別子フィールドがある。ＣＨＩ−ＮＩは、これらの識別子フィールドを受け取って、ＡＸＩ−ＩＤ６１０と関連付ける。ＣＨＩ−ＮＩから送られる書き込みリクエスト３００は、ＲＮにより提供されるものと同じソースＩＤ、目標ＩＤ、およびトランザクションＩＤを引き渡す。
【００７０】
図３の３１０の時点で、ＨＮは、ＣＨＩ−ＮＩに応答を返す。この応答の中では、同じトランザクションＩＤが維持され、ソースＩＤ６００が応答３２０の目標ＩＤ６２０になり（換言すれば、応答を元のＲＮに向けて戻す）、ＨＮは独自にソースＩＤ６２２を追加する。ただし、このソースＩＤはこのＨＮをメッセージのソースとして示すのではなく、目標ＳＮをソースとして示す。このことは、書き込みデータが返されるとき、それがＨＮではなくＳＮに送られることを意味する。この例では、ホームノードは、１つまたは複数のスレーブノードのうち所与の１つのスレーブノードへのデータ送信を求める所与の送信リクエストのシリアル化に応答して、その所与の送信リクエストに対応するデータ送信がその所与のスレーブノードへ直接行われるべきであることを示す許可を発行するように構成される。具体的には、これらの例では、ホームノードによって発行される許可はソースノード識別子と目標ノード識別子とを含み、このソースノード識別子は、所与のスレーブノードが許可の送信元であったことを示す。これを動作させることのできる１つの方法は、ホームノードによって発行された許可のソースノード識別子から導出された目標ノード識別子を、データ送信に含ませることである。
【００７１】
ＣＨＩ−ＮＩは応答３２０を受け取って、応答３２０と同じ識別子フィールドを、ＤＢＩＤとして複製されたトランザクションＩＤと共にＲＮに転送する。
【００７２】
上記で、図３を参照しながら、次の段階として、ＣＨＩ−ＮＩが書き込みデータ３３０を転送することについて説明した。ここでも、データには、そのデータに関連するソースＩＤ、目標ＩＤ、およびトランザクションＩＤが含まれる。ソースＩＤ６３０は受け取った応答の目標ＩＤフィールドからとられ、ＣＨＩ−ＮＩを表すＩＤである。書き込みデータ３３０の目標ＩＤ６３２は、受け取った応答３２０のソースＩＤからとられ、書き込みデータ３３０のトランザクションＩＤ６３４は応答３２０のＤＢＩＤからとられる。書き込みデータ３３０がＣＨＩ−ＮＩに送られる。
【００７３】
ＣＨＩ−ＮＩは次に図３のパケット３４０を生成し、その中ではＣＨＩ−ＲＮから受け取ったトランザクションＩＤがＡＸＩ−ＩＤ６１０に置き換えられるが、ソースＩＤ６３０と目標ＩＤ６３２はそのまま転送される。
【００７４】
目標ＩＤ６３２は、前述したようにＳＮを定めるので、パケット３４０はそのＳＮにルーティングされ、そのＳＮが書き込みパケットを受け取って、要求された書き込み動作を行う。ＳＮは次に、受け取ったパケット３４０のソースＩＤと目標ＩＤを交換することにより特定する完了確認通知３５０を生成する。これにより、確認通知がＣＨＩ−ＮＩに戻るようにルーティングされる。
【００７５】
ＣＨＩ−ＮＩは確認通知３５０を受け取り、ＡＸＩ−ＩＤを参照してオリジナルのトランザクションＩＤ６０４を再挿入する。受け取られた確認通知（ＣＨＩ−ＮＩを特定する）の目標ＩＤが、確認通知３６０のソースＩＤ６４０となり、確認通知３６０の目標ＩＤ６４２は、オリジナルのリクエストの目標ＩＤ６０２からとられる。これは、確認通知３６０がホームノードに戻るようにルーティングされることを意味する。
【００７６】
図７は、前述した図５のトランザクションに対応する類似の構成を概略的に示す。
【００７７】
図７で、書き込みリクエスト５１０は、ＡＸＩ−ＮＩによって生成されたソースＩＤ５１２、目標ＩＤ５１４、トランザクションＩＤ５１６、およびＡＸＩ−ＩＤ５１８を含む。
【００７８】
ホームノードで応答５２０が形成され、この中でトランザクションＩＤ５１６は維持され、応答の目標ＩＤ５２２はパケット５１０のソースＩＤからとられる。応答のソースＩＤ５２４はＨＮで生成され、ＨＮ自体ではなく目標（ＳＮ）を表す。
【００７９】
図５を参照しながら考察したように、ＡＸＩ−ＮＩが生成する書き込みパケット５３０は、ＡＸＩ−ＮＩのオリジナルのソースＩＤ５１２、ソースＩＤ５２４からとられた目標ＩＤ、およびＡＸＩ−ＩＤ５１８に等しいトランザクションＩＤ５３２を含む。このパケットは目標（ＳＮ）に直接送られ、そこでソースＩＤと目標ＩＤが交換されて確認通知５４０が形成され、それがＡＸＩ−ＮＩに送り返される。
【００８０】
ＡＸＩ−ＮＩで、ＨＮに送るための確認通知５６０が生成される。この通知は、受け取った確認通知５４０の目標ＩＤをソースＩＤ５５０としてもち、オリジナルの目標ＩＤ５１４を目標ＩＤ５５２としてもち、オリジナルのトランザクションＩＤ５１６をトランザクションＩＤ５５４としてもつ。確認通知５６０は、前述したように、ホームノードに戻るようにルーティングされる。
【００８１】
図８に概略的に示される構成には、「汚れている」可能性のあるデータ（ローカルキャッシュで修正されてから、まだメモリに書き戻されていないデータ）が存在する。
【００８２】
図８で、要求元ノード８００（ＮＩを有するＲＮ−Ｆなど）および、完全コヒーレントなＲＮ８１０がシステムに関連しており、ＲＮ−Ｆ８１０がローカルキャッシュにコピーを保持しているデータを、ＲＮ−Ｆ８００が参照すると仮定する。
【００８３】
ＲＮは、考察の対象である特定のデータのクリーンな（汚れていない）コピーを求めてリクエスト８２０を発行する。このリクエストはＨＮに伝えられ、ＨＮはデータをクリーニングする命令８３０を発行する。これは、いわば、データが汚れていればクリーニングする命令である。命令８３０は、すべてのノードに対するブロードキャスト方式で発行することもでき、または、ＨＮが保持するディレクトリもしくは他のデータのセットに基づいて、該当データのローカルコピーをもつ（または、もつ可能性のある）ノードへ選択的に送ることもできる。
【００８４】
ＲＮ−Ｆ８１０に関連するＣＨＩ−ＮＩが命令８３０を受け取り、それを命令８３２として、そのＲＮ−Ｆに転送する。
【００８５】
ＲＮ−Ｆ８１０は、応答として３つのデータ項目を返す。問題のデータを含めて、確認通知８４０がＣＨＩ−ＮＩに送られ、ＣＨＩ−ＮＩはその通知を、そのデータが記憶されている発信元のＲＮ−８００に転送する。ＨＮが現在の動作の完了を示すためには２つの確認通知を待ち受けなければならないことを示す応答メッセージが（データ８４６に応答して）、ＣＨＩ−ＮＩからＨＮに送られる。データそのものである８４６がＣＨＩ−ＮＩに送られ、ＣＨＩ−ＮＩは、そのデータを、目標アドレスを含む書き込みデータパケット８４８として直接ＳＮ（メインメモリなど）に対して発行し、ＳＮは次に、ＣＨＩ−ＮＩに確認通知８５０を送る。
【００８６】
次に２つの確認通知が、１つはＲＮによって（８５２）、もう１つはＣＨＩ−ＮＩによって（８５４）、ＨＮに送られる。後者を受け取ると、ＨＮはトランザクションを閉じて、ハザードを解除する。
【００８７】
図９は、ＨＮが、特定のデータ項目に対する読み出しリクエストを、別のＲＮによって（メインメモリなどのスレーブノードへの）書き戻しリクエストが発行されるのとほぼ同時に受け取る状況を概略的に示す。
【００８８】
図９を参照すると、ＲＮ−Ｆ０とＲＮ−Ｆ１の２つのＲＮが示されており、この例ではその両方が完全コヒーレントである。
【００８９】
ＲＮ−Ｆ１はＨＮに対し、読み出しリクエスト９００を、ＲＮ−Ｆ０によって発行される書き戻しリクエスト９１０と重複して発行する。
【００９０】
ＨＮは読み出しリクエスト９００を受け取り、該当データのコピーがＲＮ−Ｆ０に保持されているので、ＲＮ−Ｆ０に対していわゆるスヌープリクエスト９０２を発行する。そのリクエストはＲＮ−Ｆ０に関連するＣＨＩ−ＮＩによって受け取られ、リクエスト９０４として転送される。一方で、書き戻しリクエスト９１０は、読み出しリクエスト９００が満了するまでＨＮによって待たされる（stalled）。
【００９１】
該当データのコピー９２０が、ＲＮ−Ｆ０によってＣＨＩ−ＮＩに返される。ＣＨＩ−ＮＩは次に、２つの動作を行う。１つは、スヌープ応答をリクエスト元のＲＮ（ＲＮ−Ｆ１）に転送済みであることを示す通知９３０をＨＮに送ることである。他方は、スヌープ結果のデータ９２２をＲＮ−Ｆ１に送ることで、その次にＲＮ−Ｆ１が確認通知９４０をＨＮに送る。確認通知９４０と通知９３０の両方の受け取りを終えたら、書き戻しリクエスト９１０の停止をＨＮによって解除することが可能になるので、ＨＮは応答９５０をＣＨＩ−ＮＩに送り、ＣＨＩ−ＮＩは応答９５２をＲＮ−Ｆ０に転送する。
【００９２】
ＲＮ−Ｆ０は、書き戻しデータ９６０をＣＨＩ−ＮＩに返す。しかし、ＣＨＩ−ＮＩは、その前にデータ９２２を発行したことから、該当するデータが書き戻しのためにすでにＨＮへ返されていることを知っているので、ＣＨＩ−ＮＩは完了確認通知９６２だけをＨＮに送り、書き込みトランザクションを閉じる。
【００９３】
したがって、図９に提供される例では、先にシリアル化された送信リクエストに関連する第１のデータ送信が完了するまでの間、後にシリアル化された送信リクエストに関連する第２のデータ送信が第１のデータ送信と同じメモリアドレスへデータを書き込むことを禁止するように、ホームノードが構成される。
【００９４】
また、図８および９に提供される例では、マスターノードに関連付けられたキャッシュメモリがあり、１つまたは複数のスレーブノードのうち少なくとも１つが上位のメモリを提供する。システムは少なくとも１つの別のマスターノードを含む。その別のマスターノードからの、キャッシュメモリに格納されたメモリアドレスからデータを取り出すように求めるデータアクセスリクエストに応答して、インタフェース回路がキャッシュメモリから取り込んだデータを受け取って、受け取ったデータをその別のマスターノードに提供するように構成される。図８で、キャッシュメモリに取り込まれたデータが、上位のメモリ内の同じメモリアドレスに保持されているデータと異なる場合には、インタフェース回路は取り込んだデータを上位メモリへのデータ送信（８４８など）として送信するように構成される。
【００９５】
図１０は、上記で考察した図２と似た形の略図で、ここでは要求元ノードＲＮはホームノードを介してスレーブノードに対するデータ書き込みトランザクションを行い、この例ではスレーブノードはメモリコントローラ（ＭＣ）である。
【００９６】
制御の流れは図２に示される流れと類似する。書き込みリクエスト１０００がＲＮからＭＣへ、ホームノードを通して転送される。書き込みに関連するデータは、書き込みリクエスト同じ経路に従うか、または別のメッセージ１０１０として送られる。
【００９７】
書き込みデータが書き込みリクエストと同じ経路に従う場合は、要求の送り元（ＲＮ）は、リクエストとデータの両方について、その次の宛先から暗示的または明示的な「信用状」を取得しなければならない。一方、書き込みデータが独立に送られる場合は（図１０に概略的に示される）、通常、書き込みリクエストは正しいデータに対する信用状を暗黙のうちに要求しているものとして、ホームノードとメモリコントローラによって扱われる。ＲＮによってホームノードから信用状１０１５が受け取られると、書き込みデータ１０１０がＲＮによってホームノードに送られる。同様に、書き込みデータがホームノードからＭＣへ転送される前に、ホームノードはＭＣから信用状１０２０を受け取らなければならない。
【００９８】
実施形態の複数の例では、リクエストがＲＮからホームノードへ送られ、次に、ホームノードがリクエストをメモリコントローラへ転送することが伴う。このリクエストは、要求元からメモリコントローラへの信用状を求めるリクエストとして使用される。次に、メモリコントローラが信用状応答を要求元（ＲＮ）に直接送る。要求元は、信用状を受け取った後、データをメモリコントローラに直接送る。
【００９９】
図１１は、この技法の例を概略的に示す。図１１を参照すると、要求元ノード（完全コヒーレントな要求元ノードＲＮ−Ｆなど）が、書き込みリクエスト１１００を完全コヒーレントなホームノードに送り、次にホームノードが書き込みリクエスト１１００を目標ノード（ＳＮ−Ｆ）に送り、さらに完了通知１１１０をＲＮ−Ｆに返送する。ＳＮ−Ｆはデータ信用状を直接ＲＮ−Ｆに送り、ＲＮ−Ｆはそれに応答して書き込みデータ１１３０を直接ＳＮ−Ｆに送る。
【０１００】
構成の複数の例では、ＲＮ−Ｆへのデータ信用状メッセージに加えて、受け取りノードＳＮ−Ｆはさらに、リクエストの受け取りの完了を確認する完了通知メッセージ１１４０をＨＮ−Ｆに送る。
【０１０１】
要求元ＲＮ−Ｆが完了通知１１１０をホームノードから受け取った後に、ＲＮ−Ｆからホームノードに、さらなる確認通知１１５０を送ることができる。
【０１０２】
したがって、図１１の例によって動作する図１の構成は、
データ送信を開始するマスターノードと、
データ送信を受信する１つまたは複数のスレーブノードと、データ処理システムによって記憶されているデータの間でコヒーレンシを制御するホームノードとを備え、
マスターノードから１つまたは複数のスレーブノードのうち１つへの少なくとも１つのデータ送信が、ホームノードを迂回する。
【０１０３】
したがって図１１（および、下記で考察する図１２、１３）が提供する例では、マスターノードからスレーブノードの１つへのデータ送信に関して、スレーブノードがデータ伝送のための信用状を発行するように構成され、その信用状がホームノードを迂回するパスによってマスターノードに提供される。
【０１０４】
図１２および１３は、この技法の変形形態を概略的に示す。
【０１０５】
図１２で、書き込みリクエスト１２００がＲＮからホームノードに送られ、上記の例と同じくＭＣに転送され、次にＭＣが、データ信用状と完了通知を含む単一の信用状メッセージ１２１０を送る。それに応答して、ＲＮが書き込みデータ１２２０を直接ＭＣに送り、確認通知１２３０をホームノードに送る。したがって、この例では、スレーブノードは、信用状と完了通知を含む単一のメッセージを発行するように構成される。
【０１０６】
図１３を参照すると、ここでも、書き込みリクエスト１３００がＲＮからホームノードへ送られ、この書き込みリクエストをホームノードがＭＣに転送する。図１２と同様に、データ信用状と完了通知を含む単一のメッセージ１３１０がＭＣによってＲＮに送られ、ＲＮは応答して書き込みデータ１３２０を送る。この例では、次に完了通知１３３０をホームノードに返送してプロセスを閉じるのは、ＭＣである。
【０１０７】
これらの構成は、コヒーレントなデータ書き込み（ｗｒｉｔｅ  ｕｎｉｑｕｅ）と非コヒーレントな書き込み（ｗｒｉｔｅ  ｎｏ  ＳＮＰ）の両方に適用することができる。
【０１０８】
これらの実施形態の例には、多くの利点が考えられる。
【０１０９】
ホームノードが書き込みデータを処理する必要がなく、それによって、ホームノードで必要な処理リソースおよび／またはバッファリングを減少させることができる。
【０１１０】
各回の書き込み動作のための相互接続およびいくつかのインスタンスで、データメッセージの数が半減される可能性がある。
【０１１１】
ホームノードとの間のデータのアップロードおよびダウンロードを回避することにより、データのインタリーブが減少する可能性がある。受け取りノード（メモリコントローラまたはＳＮ−Ｆなど）のデータパケット受信ロジックが、非インターリーブドデータに関してより効率的に動作することができる。
【０１１２】
より効率的な書き込みデータの流れが得られる可能性があるので、ホームノードを介したリクエストのスループットが高まると共に、相互接続を介したデータのスループットが高まる可能性がある。
【０１１３】
図１４はインタフェース回路を概略的に示し、このインタフェース回路は、対応するマスターノードとデータを交換するインタフェース１４００と、マスターノードから受け取った送信リクエストからの少なくとも１つのアドレス情報および受け取ったデータ送信からのデータをバッファリングするバッファ１４１０と、他のノードとデータを交換するインタフェース１４２０とを備える。上記で考察したように、インタフェース１４００、１４１０はデータ処理システムのマスターノード、ならびにホームノードおよび１つまたは複数のスレーブノードと情報を交換する回路の例を提供することができ、ホームノードはデータ処理システムによって記憶されているデータの間でコヒーレンシを制御する。このインタフェース回路は、マスターノードから第１のデータ伝送プロトコルに従って送信リクエストおよびデータ送信を受け取り、受け取ったデータ送信から、別の第２のデータ伝送プロトコルに従って、データを所与のスレーブノードに伝送するように構成されてもよい。いくつかの例では、インタフェース回路は、所与のスレーブノードへ送信するための送信メッセージを生成するように構成されてもよく、送信メッセージは、マスターノードから受け取った送信リクエストからのメモリアドレスおよびマスターノードから受け取ったデータ送信からのデータを少なくとも含む。
【０１１４】
図１５はデータ処理方法を示す概略フローチャートであり、この方法は、（ステップ１５００で）マスターノードが１つまたは複数のスレーブノードへのデータ送信を開始することと、（ステップ１５１０で）ホームノードが、１つまたは複数のスレーブノードの間でコヒーレンシを制御するここと、（ステップ１５２０で）マスターノードが、ホームノードを迂回して１つまたは複数のスレーブノードにデータを送信することとを含む。
【０１１５】
図１６は、ある方法を示す概略フローチャートであり、この方法は、（ステップ１６００で）データ処理システムのマスターノード、ならびに、ホームノードおよび１つまたは複数のスレーブノードと情報を交換するインタフェース回路を提供し、ホームノードがデータ処理システムによって記憶されているデータの間でコヒーレンシを制御することと、（ステップ１６１０で）インタフェース回路が、マスターノードから第１のデータ伝送プロトコルに従って送信リクエストおよびデータ送信を受け取り、受け取ったデータ送信からデータを別の第２のデータ伝送プロトコルに従って所与のスレーブノードに伝送することとを含む。
【０１１６】
本出願において、「〜ように構成される」という表記は、装置の要素が、定められた動作を行うことが可能な構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェアまたはソフトウェアの相互接続の配置または様式を意味する。例えば、装置が定められた動作を提供する専用のハードウェアを有するか、または、プロセッサもしくは他の処理デバイス（上記で考察した処理要素など）がその機能を行うようにプログラムされていてもよい。「〜ように構成される」とは、定められた動作を提供するために、その装置の要素を変更する必要が決してないことを暗に示す。
【０１１７】
本明細書では本技法の説明的な実施形態について、添付の図面を参照しながら詳しく説明してきたが、本技法がそれらの厳密な実施形態に制限されず、当業者によって、添付の特許請求の範囲によって定められる技法の範囲および趣旨を逸脱することなく、さまざまな変更、追加、修正がそこに加えられてもよいことが理解される。例えば、本技法の範囲を逸脱することなく、従属請求項の特徴のさまざまな組み合わせが独立請求項の特徴と共に作成されることもできる。
【符号の説明】
【０１１８】
１００  ネットワーク
１１０  ホームノード
１２０  上位キャッシュメモリ
１３０  メインメモリ
１４０  周辺デバイス
１５０  リクエストノード
１５４  ＡＸＩ−ＮＩ
１６０  リクエストノード
１６２  キャッシュメモリ
１６４  ＣＨＩ−ＮＩ
１７０  リクエストノード
１７２  キャッシュメモリ
１７４  ＣＨＩ−ＮＩ
１８０  リクエストノード
１８４  ＡＸＩ−ＮＩ
【図１】
2018109965.tif 000003
【図２】
2018109965.tif 000004
【図３】
2018109965.tif 000005
【図４】
2018109965.tif 000006
【図５】
2018109965.tif 000007
【図６】
2018109965.tif 000008
【図７】
2018109965.tif 000009
【図８】
2018109965.tif 000010
【図９】
2018109965.tif 000011
【図１０】
2018109965.tif 000012
【図１１】
2018109965.tif 000013
【図１２】
2018109965.tif 000014
【図１３】
2018109965.tif 000015
【図１４】
2018109965.tif 000016
【図１５】
2018109965.tif 000017
【図１６】
2018109965.tif 000018
【外国語明細書】
2018109965000001.pdf