(57)【要約】  相互接続機構を介して結合されたいくつかのデバイスを含むデータ処理ネットワークの、要求ノードとホームノードとの間のデータ転送のための、相互接続機構を通じて伝送される応答メッセージの数を最小限に抑える改善されたプロトコルが提供される。相互接続機構内に輻輳が検出されたときに、ホームノードが、要求ノードからの書き込み要求に対する組み合わせ応答を送信する。応答は、ホームノードにおいてデータバッファが利用可能になり、かつホームノードが関連する整合性アクションを完了するまで、遅延される。要求ノードが組み合わせ応答を受信したとき、書き込まれるデータと確認応答とがデータメッセージ内に合体される。
2021522608.tif 000002
【特許請求の範囲】
【請求項１】
相互接続機構を介して結合されたホームノードおよび要求ノードを備えるデータ処理ネットワークにおけるデータ転送の方法であって、
前記ホームノードによって、前記要求ノードから書き込み要求を受信するステップと、
前記相互接続機構内に輻輳があるかどうかを判定するステップと、
前記相互接続機構内に輻輳があると判定されたときに、
前記ホームノードにおいてデータバッファが利用可能になり、かつ前記ホームノードが整合性アクションを完了するときに、前記ホームノードから前記相互接続機構を介して前記要求ノードに、組み合わせ応答を送信するステップであって、前記組み合わせ応答が、前記データバッファの識別子、および前記整合性アクションが完了していることを示す標識を含む、ステップと
を含む方法。
【請求項２】
前記要求ノードによって、前記書き込み要求に対する応答を受信するステップであって、前記応答が、前記ホームノードから前記相互接続機構を介して送信される、ステップと、
前記応答が前記組み合わせ応答を含むときに、
前記要求ノードによって、完了確認応答メッセージを、前記ホームノードに書き込まれるデータの1つまたは複数のビートと合体させて、1つまたは複数の合体データビートを形成するステップと、
前記要求ノードから前記相互接続機構を介して前記ホームノードに、前記1つまたは複数の合体データビートを送信するステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記相互接続機構内に輻輳が検出されなかったときに、
前記ホームノードにおいて前記データバッファが利用可能になるときに、前記ホームノードから前記相互接続機構を介して前記要求ノードに、第1の応答を送信するステップであって、前記第1の応答が前記データバッファの識別子を含む、ステップと、
前記ホームノードが前記整合性アクションを完了するときに、前記相互接続機構を介して前記要求ノードに、第2の応答を送信するステップであって、前記第2の応答が、前記整合性アクションが完了していることを示す標識を含む、ステップと
をさらに含む、請求項2に記載の方法。
【請求項４】
前記応答が前記第1の応答を含むときに、
前記要求ノードから前記相互接続機構を介して前記ホームノードに、前記書き込まれるデータを1つまたは複数のデータビートとして送信するステップと、
前記要求ノードから前記相互接続機構を介して前記ホームノードに、前記完了確認応答メッセージを送信するステップと
をさらに含む、請求項3に記載の方法。
【請求項５】
前記要求ノードからの前記書き込み要求に応答して前記ホームノードが前記整合性アクションを実施するステップをさらに含み、前記整合性アクションを実施するステップが、前記相互接続機構を介して前記データ処理ネットワークの他のノードと1つまたは複数のスヌープメッセージをやりとりすることを含む、請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記書き込み要求が、データストリーミングトランザクションの複数の書き込み要求のうちの1つである、請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記相互接続機構内に輻輳があるかどうかを判定するステップが、前記相互接続機構内のリンククレジットの利用可能性を検出するステップを含む、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記相互接続機構内に輻輳があるかどうかを判定するステップが、前記相互接続機構のクロスポイントにおけるデータバッファの利用可能性を検出するステップを含む、請求項1から7のいずれか一項に記載の方法。
【請求項９】
前記相互接続機構内に輻輳があるかどうかを判定するステップが、前記相互接続機構の応答チャネルにおけるバックプレッシャの履歴に依存する、請求項1から8のいずれか一項に記載の方法。
【請求項１０】
データ処理ネットワークであって、
メモリ領域の範囲に対する整合性ポイントを提供するホームノードであって、第1のトランザクションコントローラを備える、ホームノードと、
第2のトランザクションコントローラを備える要求ノードと、
前記要求ノードを前記ホームノードに結合する相互接続機構であって、前記第1のトランザクションコントローラと前記第2のトランザクションコントローラとの間のデータチャネルおよび応答チャネルを提供する、相互接続機構と
を備え、
前記要求ノードが、前記ホームノードに書き込み要求を送信することを行うように構成され、
前記ホームノードが、
前記書き込み要求に関連するデータを受信するための前記ホームノードのデータバッファを識別することと、
前記相互接続機構の前記応答チャネル内の輻輳を検出することと、
前記相互接続機構の前記応答チャネル内に輻輳が検出されたときに、
前記書き込み要求に関連する整合性アクションを実施することと、
前記要求ノードに組み合わせメッセージを送信することであって、前記組み合わせメッセージが、前記書き込み要求に関連する前記整合性アクションが完了しているときの前記識別されたデータバッファの識別子を含む、前記送信することと
を行うように構成される、データ処理ネットワーク。
【請求項１１】
前記要求ノードが、
前記書き込み要求に対する応答を受信することであって、前記応答が、前記ホームノードから前記相互接続機構を介して送信される、前記受信することと、
前記応答が前記組み合わせメッセージを含むときに、
前記要求ノードによって、完了確認応答メッセージを、前記ホームノードに書き込まれるデータの1つまたは複数のビートと合体させて、1つまたは複数の合体データビートを形成することと、
前記要求ノードから前記相互接続機構を介して前記ホームノードに、前記1つまたは複数の合体データビートを送信することと
を行うようにさらに構成される、請求項10に記載のデータ処理ネットワーク。
【請求項１２】
前記ホームノードが、
前記相互接続機構の前記応答チャネル内に輻輳が検出されなかったときに、
前記要求ノードにデータバッファ識別子(DBID)メッセージを送信することと、
前記書き込み要求に関連する整合性アクションを実施することと、
前記書き込み要求に関連する前記整合性アクションが完了するときに、前記要求ノードに整合性アクション完了(COMP)メッセージを送信することと
を行うようにさらに構成される、請求項10または11に記載のデータ処理ネットワーク。
【請求項１３】
前記要求ノードが、
前記応答が前記DBIDメッセージを含むときに、
前記要求ノードから前記相互接続機構を介して前記ホームノードに、前記書き込まれるデータを1つまたは複数のデータビートとして送信することと、
前記書き込まれるデータを送信することに続いて、前記要求ノードから前記相互接続機構を介して前記ホームノードに、前記完了確認応答メッセージを送信することと
を行うようにさらに構成される、請求項12に記載のデータ処理ネットワーク。
【請求項１４】
前記ホームノードがスヌープコントローラをさらに備え、前記ホームノードによって前記整合性アクションを実施することが、前記相互接続機構を介して前記データ処理ネットワークの他のノードと1つまたは複数のスヌープメッセージをやりとりすることを含む、請求項10から13のいずれか一項に記載のデータ処理ネットワーク。
【請求項１５】
前記要求ノードからの前記書き込み要求が、データストリーミングトランザクションの複数の書き込み要求のうちの1つである、請求項10から14のいずれか一項に記載のデータ処理ネットワーク。
【請求項１６】
前記要求ノードが、外部入力デバイスからストリーミングデータを受信するためのインターフェースをさらに備える、請求項15に記載のデータ処理ネットワーク。
【請求項１７】
前記相互接続機構がメッシュネットワークを備える、請求項10から16のいずれか一項に記載のデータ処理ネットワーク。
【請求項１８】
請求項10から17のいずれか一項に記載のデータ処理ネットワークを記述したハードウェア記述言語命令を記憶した、非一時的コンピュータ可読媒体。
【請求項１９】
請求項10から17のいずれか一項に記載のデータ処理ネットワークのネットリスト記述を記憶した、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理ネットワークに関する。
【背景技術】
【０００２】
システムオンチップ(SoC)などのデータ処理システムは、複数のプロセッサコア、複数のデータキャッシュ、および共有データリソースを収容することができる。例えば、共有メモリシステムでは、それぞれのプロセッサコアが、単一の共有アドレス空間に対して読み出しおよび書き込みを行うことができる。キャッシュの整合性は、1つまたは複数のキャッシュ、および単一のキャッシュされるエリア内のデータを共有する2つ以上のデバイスを収容した、どんなシステムにおいても問題である。キャッシュを収容したシステムに関して、2つの潜在的な問題がある。第1に、キャッシュされるデバイスがコピーした後で、メモリが別のデバイスによって更新されることがある。この時点で、キャッシュ内のデータは、最新ではないかまたは無効であり、最新データをもはや収容していない。第2に、ライトバックキャッシュを収容したシステムは、ローカルにキャッシュされたコピーにデバイスが書き込んだ時点でメモリにはもはや最新データが収容されていない、というケースに対処しなければならない。メモリを読み出す第2のデバイスには、最新ではないデータが見えることになる。
【発明の概要】
【課題を解決するための手段】
【０００３】
データ処理システムは、相互接続システムを介して一緒に結合されてネットワークを形成する、いくつかのノードとして構成され得る。キャッシュの整合性を維持するためのプロトコルの一例は、スヌープ要求を使用するものである。ネットワークのあるノードが、特定のアドレスに関連するデータにアクセスしたいとき、要求されたデータのコピーがローカルキャッシュ内に記憶されている他のノードに、スヌープメッセージが送信される。
【０００４】
一般に、整合性は、共有リソースを有するデータ処理システムにおいて、メッセージングプロトコルを実装することによって維持される。システムの性能は、相互接続機構のメッセージ伝送能力、および各トランザクションを完了するために必要となるメッセージの数によって制約される。インターコネクションを介したデータのストリーミング転送などのいくつかの応用例では、相互接続機構が輻輳状態になり、それにより、システムの性能が制限されることがある。
【０００５】
添付の図面は、さまざまな代表的実施形態についてより完全に説明するために使用され、また開示する代表的実施形態およびその固有の利点をより一層理解するために当業者によって使用され得る、視覚的表現を提供する。これらの図面では、同様の参照番号が、対応する要素を識別する。
【図面の簡単な説明】
【０００６】
【図１】さまざまな代表的実施形態による、データ処理ネットワークのブロック図である。
【図２】本開示の実施形態による、データ処理装置におけるデータ書き込みトランザクションのトランザクションフロー図である。
【図３】本開示の実施形態による、データ処理装置におけるデータ書き込みトランザクションのトランザクションフロー図である。
【図４】さまざまな代表的実施形態による、データ処理ネットワークのノード間の通信チャネルを示す図である。
【図５】本開示の実施形態による、データ処理装置におけるデータ書き込みトランザクションのトランザクションフロー図である。
【図６】さまざまな代表的実施形態による、データ書き込みトランザクションを処理する際のホームノードの動作の方法のフローチャートである。
【図７】さまざまな代表的実施形態による、データ書き込みトランザクションを処理する際の要求ノードの動作の方法のフローチャートである。
【発明を実施するための形態】
【０００７】
本開示は、多くの異なる形態での具現化が可能であるが、本開示は本開示の原理の一例とみなすべきであり、図示し説明する特定の実施形態に本開示を限定するものではない、という理解の下に、特定の実施形態が図面中に示され、本明細書において詳細に説明される。下の説明では、同様の参照番号が、図面のいくつかの図中の同じ部分、類似の部分、または対応する部分について説明するために使用されていることがある。
【０００８】
本文献では、第1のおよび第2の、上部および下部などの関係性の用語が、あるエンティティまたはアクションと別のエンティティまたはアクションとを、そのようなエンティティ間またはアクション間の実際のそのような任意の関係または順序を必ずしも必要とするかまたは示唆することなく、単に区別するために使用されていることがある。「備える(comprises)」、「備える(comprising)」、「含む(includes)」、「含む(including)」、「有する(has)」、「有する(having)」いう用語、またはそれらの他の任意の変形は、要素のリストを含むプロセス、方法、物品、または装置が、それらの要素のみを含むのではなく、明示的にリストされていないかまたはそのようなプロセス、方法、物品、もしくは装置に固有ではない他の要素も含むことのできるような、非排他的包含をカバーすることが意図される。「〜を備える(comprises  …a)」に続く要素は、それ以上の制約なく、その要素を含むプロセス、方法、物品、または装置における追加の同一要素の存在を排除するものではない。
【０００９】
本文献全体を通して、「1つの実施形態」、「いくつかの実施形態」、「一実施形態」、「実装形態」、「態様」、または類似の用語に言及する場合、実施形態に関して説明される特定の特徴、構造、または特性が、本開示の少なくとも1つの実施形態に含まれている、ということを意味する。したがって、そのような句が出現する場合、または本明細書全体を通してさまざまな場所にそのような句が出現する場合、必ずしも全てが、同じ実施形態に言及しているとは限らない。さらに、特定の特徴、構造、または特性が、1つまたは複数の実施形態において、制限なく、任意の適切な様式で組み合わされてもよい。
【００１０】
「または」という用語は、本明細書では、包含的なものとして、またはいずれか1つもしくはいずれかの組み合わせを意味するものとして、解釈すべきである。したがって、「A、B、またはC」は、「次のうちのいずれか、すなわちA;B;C;AおよびB;AおよびC;BおよびC;A、B、およびC」を意味する。この定義の例外は、要素、機能、ステップ、または行為の組み合わせが何らかの形で本質的に相互に排他的であるときにのみ起こる。また、文法的接続詞は、別段の定めのない限り、または文脈から明らかでない限り、等位接続される節、文、語などのありとあらゆる選言的および連言的な組み合わせを表すことが意図される。したがって、「または」という用語は、一般に、「および/または」などを意味するものと理解されたい。
【００１１】
本明細書において述べるあらゆる文献は、参照によりその全体がここに組み込まれる。別段の明示的な定めのない限り、または本文から明らかでない限り、単数形の項目に言及する場合、それは、複数形の項目も含むと理解されたく、また逆も同様である。
【００１２】
本明細書において値の範囲を列挙する場合、それは、別段の指示のない限り、限定的であることを意図したものではなく、その代わりに、その範囲に含まれるありとあらゆる値を個々に参照しており、そのような範囲内の各個別の値は、本明細書においてそれが個々に列挙されるかのように、本明細書に組み込まれる。「約」、「およそ」、「実質的に」などという語は、数値を伴うとき、当業者には理解されるように、意図した目的のために満足のいくように動作するためのずれを示すものと解釈すべきである。値および/または数値の範囲は、本明細書において例として提供されているにすぎず、説明する実施形態の範囲に対する制限を設けるものではない。本明細書において提供されるありとあらゆる例または例示的文言(「例えば」、「など」など)の使用は、実施形態をより一層明らかにすることが意図されているにすぎず、実施形態の範囲に制限を課すものではない。本明細書中のどんな文言も、特許請求されない任意の要素を実施形態の実践にとって不可欠であると示すものと解釈すべきではない。
【００１３】
例示を簡単かつ明確にする目的で、図の間で、対応する要素または類似の要素を示すために参照番号が繰り返されることがある。本明細書において説明する実施形態の理解をもたらすために、多数の詳細が記載される。実施形態は、これらの詳細なしでも実践することができる。他の場合には、説明する実施形態を曖昧にしないように、よく知られた方法、手順、およびコンポーネントについて詳細に説明されていない。説明は、本明細書において説明する実施形態の範囲に限定されるものとみなすべきではない。
【００１４】
以下の説明の中で、「第1の」、「第2の」、「上部」、「下部」、「上方に」、「下方に」、「上に」、「下に」などの用語は、便宜上の語であり、限定的な用語と解釈すべきではない、ということが理解されよう。また、装置およびデバイスという用語は、本文においては、交換可能に使用され得る。
【００１５】
本明細書において使用するとき、「結合された」、「接続された」という用語、および/または類似の用語は、一般的に使用される。これらの用語は同義語として意図されているのではない、ということを理解されたい。そうではなく、「接続された」は、2つ以上のコンポーネントが、例えば、電気的なものを含めて、物理的に直接接触した状態にあることを示すために一般的に使用され、一方、「結合された」は、2つ以上のコンポーネントが、電気的なものを含めて、潜在的に物理的に直接接触した状態にある可能性があることを意味するために一般的に使用される。しかし、「結合された」はまた、2つ以上のコンポーネントが必ずしも直接接触した状態にあるとは限らないが、それでもなお協働および/または相互作用することができる、ということを意味するためにも一般的に使用される。「結合された」という用語はまた、適切な文脈では、例えば、間接的に接続された、を意味するものと一般的に理解される。
【００１６】
本明細書において提示する本開示のさまざまな実施形態および例は、本開示を限定するものではなく本開示を例示するものと理解され、また本開示の範囲に関して非限定的である。
【００１７】
本開示のさらなる特定の好ましい態様が、添付の独立請求項および従属請求項内に記載される。従属請求項の特徴は独立請求項の特徴と、特許請求の範囲に明示的に記載された組み合わせ以外の組み合わせで、適宜組み合わされてよい。
【００１８】
本開示は、システムオンチップ(SoC)などのデータ処理ネットワークにおける効率的なデータ転送を、より少ない応答メッセージを使用するプロトコルを実装することにより達成することを対象とする。このプロトコルは、ハードウェアの形で実装され、ネットワーク相互接続機構におけるメッセージ輻輳を低減させ、それにより、データ処理ネットワークの動作を改善する。
【００１９】
データ処理装置は、性能を拡大し、レーテンシを低減させるために、チップ内に複数のプロセッサデバイスを使用することができる。プログラムまたはタスクは、複数のデバイスによって並列に実行され得る独立したステップに分けることができる。これらのデバイスは、データまたは制御情報を共有する必要があるとき、オンチップ相互接続を通じて互いに通信する。
【００２０】
データは、オフチップで(DRAMなどの)主メモリ内に記憶させることができるが、主メモリは、アクセスに時間がかかり、大量の電力を消費する。他のオンチッププロセッサデバイスによってアクセス可能な、各プロセッサデバイス内のローカルL2キャッシュを使用することによって、効率が改善される。これにより、プロセッサ間通信の速度が上がり、電力消費が低減する。加えて、データは、入力デバイスから処理デバイスにおいて受信されることもあり、処理デバイスから出力に書き出されることもある。
【００２１】
しかし、共有リソースの場合、最新ではないデータつまり古いデータではなく、最新データを任意のプロセッサが確実に得るようにするためのメカニズムが必要となる。1つの手法は、相互接続内の1つまたは複数のホームノードを使用して、キャッシュ内容を常時把握し、メモリアクセス要求を管理する、というものである。ホームノードは、相互接続内にあるかまたは相互接続に取り付けられているとみなすことのできるデータハンドリングモジュールである。各ホームノードは、共有メモリ(またはメモリにマッピングされた入力/出力(I/O)デバイス)の領域に対する要求を管理する。処理デバイスが、適切なホームノードにデータ要求を送信し、ホームノードは、その要求がどのように処理されるかを管理する。処理デバイスは要求ノードと呼ばれる。ホームノードは、全ての要求ノードからの要求を直列化し、それらを順番に実行し、それによって、データの整合性を維持することができる。メモリ空間は、ホームノード間で分割される。
【００２２】
要求ノードは、データにアクセスしたいとき、そのアドレスに関連付けられた相互接続のホームノードに要求を送信する。ホームノードは、例えば、どのノードがローカルキャッシュ内にキャッシュラインのコピーを有しているかの、スヌープフィルタの形態をとるレコードを維持しており、データを要求する、スヌープ要求と呼ばれるメッセージを、1つまたは複数の特定されたノード(ターゲットノード)に送信する。ローカルキャッシュ内に記憶されていないデータは、例えばメモリコントローラを介して主メモリから取り出され得る。ホームノード自体には、メモリアクセスの回数を低減させるために、キャッシュが設けられていてよい。
【００２３】
相互接続は、データ、要求/応答メッセージ、およびスヌープメッセージ用の並列チャネルを提供することができる。
【００２４】
本開示の実施形態によれば、相互接続を介して結合されたいくつかのノードを含むデータ処理装置が、データの整合性を維持するために必要となるメッセージの数を低減させることにより、効率的なデータ転送を行うように構成される。
【００２５】
図1は、さまざまな実施形態による、データ処理装置100のブロック図である。システムオンチップ(SoC)などのデータ処理システムは、複数の処理デバイスおよび共有データリソースを収容することができる。システム100は、例えば、システムオンチップ(SoC)集積回路の形で実装することができる。図示の簡略化された例では、システム100は、いくつかのノードが相互接続システムを介して一緒に接続されたネットワークとして構成される。ノードは、例えばプロセッサ、I/Oデバイス、またはメモリコントローラなどの、機能ブロックまたは機能デバイスである。図示のように、デバイスは、要求ノード102、104、ならびにホームノード106および108を含む。デバイスは相互接続に、相互接続システム110のクロスポイントにおいて結合される。クロスポイントは、メッセージバッファ、およびデバイス間でメッセージをルーティングするのに使用されるスイッチを収容している。システム100は、入力/出力(I/O)デバイス112および114も含む。図を見やすくするため、システムの他の要素は、図1では割愛されている。デバイスは、例えば、処理コア、処理コアクラスタ、グラフィックポストプロセッサ(GPP)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、または特定用途向け集積回路(ASIC)デバイスとすることができる。図1に示す例では、デバイス102(RN-F)および104(RN-I)は、プロセッサや処理クラスタなどの要求ノードである。デバイス104(RN-I)は、I/Oデバイス114へのインターフェースを提供する。例えば、ペリフェラルコンポーネント相互接続(PCI)エクスプレス対応デバイスとリンクするために、Arm Limited、U.K.によって仕様化されたArm(登録商標) AMBA(登録商標)アドバンストエクステンシブルインターフェース(AXI)が設けられてよい。デバイス106(HN-0)および108(HN-1)は、指定されたシステムアドレス範囲に対する整合点としての働きをするホームノードである。
【００２６】
デバイス102および104は、相互接続システム110を介して、ホームノード(HN)106および108に、互いに、また共有メモリ118にアクセスするためのメモリコントローラ116などのデータリソースに、結合される。デバイス102、104は、データアクセス要求を生成することができ、本明細書では要求ノード(RN)と呼ばれる。複数のノードがデータリソースまたはメモリリソースを共有するとき、整合プロトコルを使用することができ、デバイスは、完全に整合(例えばRN-F)と言うことができる。他のデバイス(例えばRN-I)が、別の集積回路への接続を提供することができる。図を見やすくするため、クロックなど、SoCの多くの要素は、図1から割愛されていることに留意されたい。
【００２７】
例えば「読み出し」や「書き込み」などのデータトランザクションの要求を生成するノードは、要求ノードと呼ばれ、そのようなトランザクションのエンドポイントである。要求に応答するノードは、ターゲットノードと呼ばれる。例えば、図1では、デバイス102および104が要求ノードであり、デバイス106および108がターゲットノードである。要求ノード102および104によって要求されるデータが、ターゲットノード106または108に存在するとき、データは相互接続システム110を介して要求ノードに戻される。データが存在しないとき、データは適切なリソースから取り出される。データが要求ノードによって書き込まれるとき、ホームノードは、確実にオリジナルデータのコピーがシステム内の他のロケーションに残らないようにすることを担い、というのも、これらのコピーは、新たなデータが書き込まれると古くなってしまうためである。
【００２８】
データトランザクションにおいては、要求ノードが、1つまたは複数のパケットを含むメッセージを作成し、それを相互接続に、その送信先に送信するために投入する。パケットは、メモリアドレス、メモリからのデータ、またはその両方を収容することができ、制御ビットまたはルーティングビットを保持することもできる。データ読み出し要求などの制御パケットは、アドレス情報および制御ビットのみを収容することができる。オンチップネットワークでは、「パケット」は、キャッシュ整合性プロトコルなどの上位層プロトコルの、意味のある単位である。パケットサイズが、相互接続110におけるチャネル幅よりも大きいとき、パケットは、複数のピースまたはビートに分割され、その結果、パケットが完全に通過するためにさらに時間がかかる。例えば、パケットが256ビットであり、チャネルが64ビット／サイクルの幅である場合、直列化は4サイクルである。
【００２９】
キャッシュの整合性は、1つもしくは複数のキャッシュ、または他の分散ストレージ、および単一データリソース内のデータを共有する2つ以上のデバイスを収容した、どんなシステムにおいても問題である。キャッシュを収容したシステムに関して、2つの潜在的な問題がある。第1に、キャッシュされるデバイスがコピーした後で、メモリが別のデバイスによって更新されることがある。この時点で、キャッシュ内のデータは、最新ではないかまたは無効であり、最新データをもはや収容していない。第2に、ライトバックキャッシュを収容したシステムは、ローカルにキャッシュされたコピーをデバイスが更新した時点でメモリにはもはや最新データが収容されていない、というケースに対処しなければならない。メモリを読み出す第2のデバイスには、最新ではない(古い)データが見えることになる。キャッシュの整合性は、例えばノード102、104などの処理デバイス間での「スヌープ」メッセージのやりとりを通じて維持され得る。整合性を維持するために、各処理デバイスはスヌープコントロールユニットを含み、スヌープコントロールユニットは、整合性要求および整合性応答、すなわちスヌープメッセージを発行し、他のデバイスから相互接続システム110を介して受信する。
【００３０】
スヌープ要求およびスヌープ応答は、ホームノードによって管理される。ホームノードは、データアクセス要求を受信し、対応するスヌープメッセージを生成し、データを受信または転送する。整合性を確実なものにするためのメッセージおよびデータのやりとりは、整合性アクションと呼ばれる。
【００３１】
図2は、最適化されていないシステムにおける、要求ノードおよびタイムライン202とホームノードおよびタイムライン204との間の例示的書き込みトランザクションのフロー図である。トランザクションは、要求ノードにおける期間T1〜T2およびホームノードにおける期間T3〜T6を占有する。時間T1において、要求ノードから相互接続システムを介してホームノードに、書き込み要求メッセージ206(WRITE(REQ))が送信される。時間T3に受信される要求に応答してホームノードは、時間T4において、第1の応答メッセージ208(DBID(RSP))を要求ノードに送り返す。応答メッセージ208は、データの受信のためにホームノードにおいてデータバッファが利用可能であること、およびこの書き込み動作の完了が、より新しいどんな書き込み動作にも依存しないことを示す。応答メッセージ208は、データバッファの識別子も示す。書き込み動作に備えて、新鮮ではないデータがローカルキャッシュ内に記憶されないようにすることを確実にすることによって整合性を維持するために、ホームノードは他のノードとスヌープメッセージを介して通信する。この整合性アクションが完了すると、ホームノードは、時間T5において、整合性アクションが完了していることを示すために、第2の応答メッセージ210(COMP(RSP))を送信する。DBID応答208が要求ノードによって受信されると、要求ノードは、データビート212および214によって示されるように、ホームノードにデータを送信することができる。この例では、データは2つのデータビートにおいて転送される。例えば、64バイトの転送は、32バイト相互接続データバス上の2つのデータビートを使用して行われてよい。全てのデータが送信されると、要求ノードは、トランザクションの完了を示すために、ホームノードにCOMP_ACK応答メッセージ216を送信する。したがって、3つの応答メッセージ(208、210、および216)が、各書き込みトランザクションの実施に使用される。
【００３２】
図2に示す手法は、データストリーミングに使用することができる。
【００３３】
図3は、最適化されていないシステムにおける、要求ノードおよびタイムライン302とホームノードおよびタイムライン304との間の例示的書き込みトランザクションのフロー図である。この例では、書き込み要求306が要求ノードから受信されると、ホームノード内でデータバッファが利用可能ではない。ホームノードは、時間T3において、データバッファが利用可能ではないことを示すために、要求ノードに応答メッセージ308(RETRY_ACK)を送信する。時間T4において、ホームノードにおいてデータバッファが利用可能になり、書き込み要求がリトライされてよいことを信号伝達するために、要求ノードにクレジットグラント(CRD_GNT)応答メッセージ310が送信される。次いで、メッセージ206、208、210、212、214、および216が、上で図2を参照して説明したように進行する。したがって、リトライが使用されるとき、2つの要求メッセージ(306、206)および2つのデータメッセージ(212、214)に加えて、5つの応答メッセージ(308、310、208、210、および216)が、各書き込みトランザクションの実施に使用される。
【００３４】
上の説明から、データ処理システムの相互接続機構における応答メッセージフローが輻輳を増大させている、ということが明らかである。これは、ストリーミングデータ転送のケースに、特に当てはまる。輻輳が起こるとき、トランザクションを完了するのに時間がかかり、要求ノードとホームノードの両方のリソースがより長い時間にわたって占有される。その結果として、データ処理システムの性能が劣化する。加えて、多数の応答メッセージが輻輳を引き起こし、それが他の無関係なトランザクションを圧迫することがあり、というのも、応答チャネルはシステム内の他のデバイスと共有されているためである。この輻輳により、システム内の全てのデバイスから見ると、全体的な帯域幅の減少という結果になる。
【００３５】
図4は、本開示の実施形態による、データ処理システムにおける要求ノード102とホームノード106との間の通信を示す図である。要求ノード102は、1つまたは複数の処理コア402、ならびに(1つまたは複数のキャッシュおよびデータバッファなどの)データ記憶404を含む。データ記憶404は、データを受信または送信するために、リンク406を介して外部I/Oデバイスと通信することができ、またコア402およびトランザクションコントローラ408と通信する。要求ノード102は、スヌープコントローラ410も含む。スヌープコントローラ410は、リンク412を介してホームノード106とスヌープメッセージをやりとりする。これらのメッセージは、データ処理システムにおいて整合性を維持するのに必要なアクションを起動する。トランザクションコントローラ408は、リンク414を介してホームノード106とトランザクションメッセージ414をやりとりし、データリンク416を介してホームノード106とデータもやりとりする。リンク412、414、および416は、データ処理ネットワーク内のデバイス同士を結合する相互接続機構によって提供される。個々のメッセージは、相互接続を通じてさまざまな経路をとることができるので、これらのリンクは仮想リンクである。
【００３６】
ホームノード106は、データアクセスの前に、スヌープコントローラ420を使用してデータ処理ネットワーク内の他のデバイスを相手にスヌープメッセージ418を送信および受信することによって、整合性アクションを実行する。ホームノード106は、要求ノードとメッセージをやりとりするためのトランザクションコントローラ422も含む。要求ノード102およびホームノード106の動作については、下で書き込み動作に即して説明する。1つの実施形態では、動作は、トランザクションコントローラ408および422のハードウェアによって実施される。
【００３７】
図5は、本開示の実施形態による、要求ノードおよびタイムライン502とホームノードおよびタイムライン504との間の例示的書き込みトランザクションのフロー図である。本開示の一態様によれば、要求ノードとホームノードは、メッセージ同士を合体させるように協調して働き、それにより、両方向に送信されるメッセージの数を低減させる。最終結果は、書き込み動作において送信されるメッセージの数が2つ低減する、というものである。これにより、ストリーミングデータ書き込みのための帯域幅が大幅に増大する。
【００３８】
ホームノードは、相互接続機構のトランザクション応答チャネル内の輻輳を検出するように構成される。これは、例えば、ネットワーククロスポイントにおけるデータバッファの使用を監視することによって行われ得る。クロスポイントの全てのデータバッファが使用中であるとき、それは、ネットワークが輻輳していることの現れであり、というのも、新たな転送は空きバッファが利用可能になるまで遅延されるためである。本開示から逸脱することなく、相互接続輻輳を検出するための他の方法を使用することができる。例えば、バイポーラプレディクタを使用して、応答チャネルバックプレッシャの履歴を維持し、ヒューリスティクスを使用して、いつ応答メッセージ同士を組み合わせるべきかを決定することができる。図5を参照すると、書き込み要求506が要求ノードからホームノードにおいて受信される。時間T3において、書き込みデータの受信のためにデータバッファが利用可能である。しかし、時間T3において相互接続が輻輳している場合、DBID応答メッセージ508は送信されない。その代わりに、時間T4において整合性アクションが完了するまで、メッセージは遅延される。時間T4において、COMPメッセージとDBIDメッセージとが組み合わされて、COMP_DBID(RSP)と表記された単一メッセージ510になる。したがって、ホームノードからの応答の数は、2から1に低減される。要求ノードは、メッセージ510を受信すると、書き込みデータメッセージとCOMP_ACKメッセージとを組み合わせて、データチャネル上の1つのメッセージにする。WRITE_COMP_ACK(DAT)と表記されたデータおよび応答は、相互接続のデータチャネル上で2つのビート(512および514)として送信される。したがって、応答チャネル上で別途のCOMP_ACKメッセージを送信する必要がなく、それにより、相互接続の応答チャネル上のトラフィックが低減する。加えて、別途のCOMP_ACKメッセージが送信されないので、トランザクションがより迅速に完了し、要求ノード内のリソースが解放される。典型的には、データビートは、データ自体に加えていくつかのビットを収容する。これらのビットは、例えばメタデータおよびルーティング情報を示す。本開示によれば、ビートは、メッセージCOMP_ACKを示す1つまたは複数
のビットを収容する。
【００３９】
図5は、相互接続機構内に輻輳が検出されたときに実施される、データ処理ネットワークにおけるデータ転送方法の一実施形態を示す。輻輳が検出されなかったときは、図2(リトライなし)または図3(リトライあり)に示す方法を使用することができる。書き込み要求が受信されると、ホームノードは、相互接続内の輻輳のレベルを判定し、どのプロトコルを使用するかを選択する。相互接続機構内に輻輳が検出されたとき、図5に示すように、ホームノードから相互接続機構を介して要求ノードに、組み合わせ応答(COMP_DBID)510が送信される。応答は、ホームノードにおいてデータバッファが利用可能になり、かつホームノードが整合性アクションを完了するまで、送信されない。組み合わせ応答510は、データバッファの識別子、および整合性アクションが完了していることを示す標識を含むことができる。
【００４０】
相互接続機構が輻輳していないとき、図2および図3に示すように、ホームノードは、ホームノードにおいてデータバッファが利用可能になると、相互接続機構を介して要求ノードに、第1の応答(DBID)(図2の208)を送信する。ホームノードは、ホームノードが整合性アクションを完了すると、整合性アクションが完了していることを示すために、相互接続機構を介して要求ノードに、第2の応答(COMP)(図2の210)を送信する。
【００４１】
ホームノード応答は、要求ノードにおいて受信される。応答が組み合わせ応答(COMP_DBID)(図5の510)を含むとき、要求ノードは、完了確認応答メッセージを、ホームノードに書き込まれるデータの1つまたは複数のビートと合体させて、1つまたは複数の合体データビートを形成し、要求ノードから相互接続機構を介してホームノードに、1つまたは複数の合体データビート(512および514)を送信する。しかし、応答が第1の応答を含むとき、書き込まれるデータは、要求ノードから相互接続機構を介してホームノードに、1つまたは複数のデータビート(WRITE)(図2の212および214)として送信される。次いで、完了確認応答メッセージ(図2の216)が送信される。
【００４２】
図6は、本開示の実施形態による、書き込み動作に参加するホームノードの動作の方法600のフローチャートである。開始ブロック602に続き、ブロック604において、新たな書き込み要求がホームノードにおいて受信される。ホームノードは、判定ブロック606において、要求側ノードからのデータの受信のためにホームノードにおいてデータバッファが利用可能になるまで待つ。データバッファが利用可能になると、判定ブロック606からの肯定分岐によって示されるように、判定ブロック608において、リンククレジットの利用可能性が確認される。リンククレジットの利用可能性は、相互接続機構内の輻輳レベルの表れである。リンククレジットが利用可能である場合、判定ブロック608からの肯定分岐によって示されるように、ブロック610において、要求側ノードにDBID応答メッセージが送信される。DBIDメッセージは、要求側ノードからのデータの受信のために利用可能であるデータバッファを識別する。次いで、ブロック612において、ホームノードが書き込みデータを受信し、ブロック614において、方法が終了する。リンククレジットが利用可能ではない場合、判定ブロック608からの否定分岐によって示されるように、ブロック616において、データバッファ識別子(DBID)のためのトラッカが記憶される。ブロック618において、ホームノードが、書き込み要求に関連する整合性アクションが完了する(かつリンククレジットが利用可能になる)まで待つ。整合性アクションが完了すると、判定ブロック618からの肯定分岐によって示されるように、ブロック620において、DBID応答とCOMP応答とが組み合わされて、単一メッセージになり、ブロック622において、要求ノードに送信される。次いで、ブロック612において、ホームノードが書き込みデータを受信し、ブロック614において、方法が終了する。
【００４３】
図6に示す実施形態では、ホームノードが、リンククレジットの利用可能性に基づいて、DBID応答を遅延させ、それをCOMP応答と組み合わせるどうかの判定を行う。オプションで、これらのメッセージは常に組み合わされてもよい。しかし、これらのメッセージが組み合わされるとき、整合性アクションとホームノードにおいてデータをデータバッファに書き込むアクションが直列に実施される。別々のDBIDメッセージとCOMPメッセージが送信されるとき、これらの2つのアクションは並列に実施され得る。したがって、図6に示す実施形態では、メッセージ同士を組み合わせるのは、利益またはそのようにすること(例えば相互接続の輻輳を低減させること)が、不利益(ホームノードへの書き込みの遅延)に勝るときにのみ、使用される。
【００４４】
図7は、本開示の実施形態による、書き込み動作に参加する要求ノードの動作の方法700のフローチャートである。開始ブロック702に続き、ブロック704において、要求ノードが書き込み要求に対する応答を受信する。判定ブロック706において、メッセージがデコードされる。メッセージがCOMPメッセージである場合、判定ブロック706からの、整合性アクションがホームノードによって完了されたことを示す右分岐によって示されるように、フローはブロック704に戻る。応答が組み合わせ応答COMP_DBIDである場合、判定ブロック706からの左分岐によって示されるように、ブロック708において、書き込まれるデータとCOMP_ACK応答とが組み合わされる。ブロック710において、組み合わせられたWRITE_COMP_ACKメッセージが送信される。組み合わせメッセージは、相互接続のデータチャネル経由で送信され、それにより、相互接続の応答チャネル内のトラフィックが低減し得る。ブロック712において、方法が終了する。判定ブロック706からの下方分岐によって示されるように、応答がDBIDである場合、フローは判定ブロック714に進む。要求ノードによってCOMPメッセージが受信されている場合、判定ブロック714からの肯定分岐によって示されるように、フローはブロック708に進み、そこでデータとCOMP_ACKメッセージとが組み合わされる。COMPメッセージがまだ受信されていない場合、判定ブロック714からの否定分岐によって示されるように、ブロック716において、要求ノードからホームノードにデータが送信される。ブロック718において、要求ノードにおいてCOMPメッセージが受信された後でホームにCOMP_ACKが送信される。ブロック712において、方法が終了する。COMPメッセージとDBIDメッセージは、相互接続を通じて異なるルートをとることができるので、順不同で到着し得ることに留意されよう。
【００４５】
図6に示すホームノードのアクションと、図7に示す要求ノードのアクションとが相まって、データ処理システムにおいて書き込み動作を効率的に実行するためのプロトコルの一実施形態が提供される。このプロトコルは、ホームノードおよび要求ノード内の専用ハードウェアによって実施される。
【００４６】
応答メッセージの低減について、下のTable 1(表1)に要約する。
【００４７】
【表１】
2021522608.tif 000003
【００４８】
開示した手法の他の利益は、次の通りである。
・COMP_ACKメッセージが別途のメッセージとして送信されないので、ホームノードにおけるトラッカライフタイム(完全なトランザクションにかかる時間)が低減される。
・輻輳状況下で、COMP_ACKメッセージが別途のメッセージとして送信されないので、要求ノードにおけるトラッカライフタイムが低減される。
・輻輳状況下で、相互接続の応答チャネル内のトラフィックが低減され、したがって、他のトランザクションにとって利用可能となる。
・輻輳状況下で、応答チャネルが効率的に利用される結果、システム帯域幅が改善される。
・相互接続における応答メッセージの低減の結果、電力消費が低下する。
【００４９】
本開示は、専用ハードウェアコンポーネントを使用して実装できることを、当業者は認識されよう。加えて、本開示は、プログラムされたプロセッサ、再構成可能なハードウェアコンポーネント、専用ハードウェアコンポーネント、またはそれらの組み合わせを使用して実装することもできる。
【００５０】
専用ハードウェアコンポーネントまたは再構成可能なハードウェアコンポーネントは、ハードウェア記述言語の命令によって、またはコンポーネントおよび接続性のネットリストによって、記述することができる。命令またはネットリストは、本開示から逸脱することなく、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、不揮発性メモリ(NVM)、ハードディスクドライブ、フロッピーディスクドライブ、光ディスクドライブなどの大容量ストレージ、光記憶要素、磁気記憶要素、光磁気記憶要素、フラッシュメモリ、コアメモリ、および/または他の等価な記憶技術などの非一時的コンピュータ可読媒体上に記憶させることができる。そのような代替記憶デバイスは、等価物とみなすべきである。
【００５１】
本明細書において詳細に説明してきたさまざまな代表的実施形態は、限定としてではなく例として提示されている。説明した実施形態の形態および細部に、添付の特許請求の範囲に記載の範囲内に留まる等価な実施形態をもたらす結果となるさまざまな変更を加えられることが、当業者には理解されよう。
【００５２】
したがって、開示した実施形態のいくつかの態様および特徴について、以下の番号付けした項目に記載する。
【００５３】
項目1。相互接続機構を介して結合されたホームノードおよび要求ノードを備えるデータ処理ネットワークにおけるデータ転送の方法であって、ホームノードによって、要求ノードから書き込み要求を受信することと、相互接続機構内に輻輳があるかどうかを判定することと、相互接続機構内に輻輳があると判定されたときに、ホームノードにおいてデータバッファが利用可能になり、かつホームノードが整合性アクションを完了すると、ホームノードから相互接続機構を介して要求ノードに、組み合わせ応答を送信することであって、組み合わせ応答が、データバッファの識別子、および整合性アクションが完了していることを示す標識を含む、送信することとを含む、方法。
【００５４】
項目2。要求ノードによって、書き込み要求に対する応答を受信することであって、応答が、ホームノードから相互接続機構を介して送信される、受信することと、応答が組み合わせ応答を含むときに、要求ノードによって、完了確認応答メッセージを、ホームノードに書き込まれるデータの1つまたは複数のビートと合体させて、1つまたは複数の合体データビートを形成することと、要求ノードから相互接続機構を介してホームノードに、1つまたは複数の合体データビートを送信することとをさらに含む、項目1に記載の方法。
【００５５】
項目3。相互接続機構内に輻輳が検出されなかったときに、ホームノードにおいてデータバッファが利用可能になると、ホームノードから相互接続機構を介して要求ノードに、第1の応答を送信することであって、第1の応答がデータバッファの識別子を含む、送信することと、ホームノードが整合性アクションを完了すると、相互接続機構を介して要求ノードに、第2の応答を送信することであって、第2の応答が、整合性アクションが完了していることを示す標識を含む、送信することとをさらに含む、項目2に記載の方法。
【００５６】
項目4。応答が第1の応答を含むときに、要求ノードから相互接続機構を介してホームノードに、書き込まれるデータを1つまたは複数のデータビートとして送信することと、要求ノードから相互接続機構を介してホームノードに、完了確認応答メッセージを送信することとをさらに含む、項目3に記載の方法。
【００５７】
項目5。要求ノードからの書き込み要求に応答してホームノードが整合性アクションを実施することをさらに含み、整合性アクションを実施することが、相互接続機構を介してデータ処理ネットワークの他のノードと1つまたは複数のスヌープメッセージをやりとりすることを含む、項目1から4のいずれか一項に記載の方法。
【００５８】
項目6。書き込み要求が、データストリーミングトランザクションの複数の書き込み要求のうちの1つである、項目1から5のいずれか一項に記載の方法。
【００５９】
項目7。相互接続機構内に輻輳があるかどうかを判定することが、相互接続機構内のリンククレジットの利用可能性を検出することを含む、項目1から6のいずれか一項に記載の方法。
【００６０】
項目8。相互接続機構内に輻輳があるかどうかを判定することが、相互接続機構のクロスポイントにおけるデータバッファの利用可能性を検出することを含む、項目1から7のいずれか一項に記載の方法。
【００６１】
項目9。相互接続機構内に輻輳があるかどうかの判定が、相互接続機構の応答チャネルにおけるバックプレッシャの履歴に依存する、項目1から8のいずれか一項に記載の方法。
【００６２】
項目10。データ処理ネットワークであって、メモリ領域の範囲のための整合性ポイント(point of coherence)を提供するホームノードであって、第1のトランザクションコントローラを備える、ホームノードと、第2のトランザクションコントローラを備える要求ノードと、要求ノードをホームノードに結合する相互接続機構であって、第1のトランザクションコントローラと第2のトランザクションコントローラとの間のデータチャネルおよび応答チャネルを提供する、相互接続機構とを備え、要求ノードが、ホームノードに書き込み要求を送信することを行うように構成され、ホームノードが、書き込み要求に関連するデータを受信するためのホームノードのデータバッファを識別することと、相互接続機構の応答チャネル内の輻輳を検出することと、相互接続機構の応答チャネル内に輻輳が検出されたときに、書き込み要求に関連する整合性アクションを実施することと、要求ノードに組み合わせメッセージを送信することであって、組み合わせメッセージが、書き込み要求に関連する整合性アクションが完了しているときの識別されたデータバッファの識別子を含む、送信することとを行うように構成される、データ処理ネットワーク。
【００６３】
項目11。要求ノードが、書き込み要求に対する応答を受信することであって、応答が、ホームノードから相互接続機構を介して送信される、受信することと、応答が組み合わせメッセージを含むときに、要求ノードによって、完了確認応答メッセージを、ホームノードに書き込まれるデータの1つまたは複数のビートと合体させて、1つまたは複数の合体データビートを形成することと、要求ノードから相互接続機構を介してホームノードに、1つまたは複数の合体データビートを送信することとを行うようにさらに構成される、項目10に記載のデータ処理ネットワーク。
【００６４】
項目12。ホームノードが、相互接続機構の応答チャネル内に輻輳が検出されなかったときに、要求ノードにデータバッファ識別子(DBID)メッセージを送信することと、書き込み要求に関連する整合性アクションを実施することと、書き込み要求に関連する整合性アクションが完了すると、要求ノードに整合性アクション完了(COMP)メッセージを送信することとを行うようにさらに構成される、項目10または11に記載のデータ処理ネットワーク。
【００６５】
項目13。要求ノードが、応答がDBIDメッセージを含むときに、要求ノードから相互接続機構を介してホームノードに、書き込まれるデータを1つまたは複数のデータビートとして送信することと、書き込まれるデータを送信することに続いて、要求ノードから相互接続機構を介してホームノードに、完了確認応答メッセージを送信することとを行うようにさらに構成される、項目12に記載のデータ処理ネットワーク。
【００６６】
項目14。ホームノードがスヌープコントローラをさらに備え、ホームノードによって整合性アクションを実施することが、相互接続機構を介してデータ処理ネットワークの他のノードと1つまたは複数のスヌープメッセージをやりとりすることを含む、項目10から13のいずれか一項に記載のデータ処理ネットワーク。
【００６７】
項目15。要求ノードからの書き込み要求が、データストリーミングトランザクションの複数の書き込み要求のうちの1つである、項目10から14のいずれか一項に記載のデータ処理ネットワーク。
【００６８】
項目16。要求ノードが、外部入力デバイスからストリーミングデータを受信するためのインターフェースをさらに備える、項目15に記載のデータ処理ネットワーク。
【００６９】
項目17。相互接続機構がメッシュネットワークを備える、項目10から16のいずれか一項に記載のデータ処理ネットワーク。
【００７０】
項目18。項目10から17のいずれか一項に記載のデータ処理ネットワークを記述したハードウェア記述言語の命令を記憶した、非一時的コンピュータ可読媒体。
【００７１】
項目19。項目10から17のいずれか一項に記載のデータ処理ネットワークのネットリスト記述を記憶した、非一時的コンピュータ可読媒体。
【符号の説明】
【００７２】
100  データ処理装置、システム
102  要求ノード、デバイス
104  要求ノード、デバイス
106  ホームノード(HN)、デバイス、ターゲットノード
108  ホームノード(HN)、デバイス、ターゲットノード
110  相互接続システム、相互接続
112  入力/出力(I/O)デバイス
114  入力/出力(I/O)デバイス
116  メモリコントローラ
118  共有メモリ
202  タイムライン
204  タイムライン
206  書き込み要求メッセージ
208  第1の応答メッセージ、DBID応答、第1の応答(DBID)
210  第2の応答メッセージ、第2の応答(COMP)
212  データメッセージ、データビート(WRITE)
214  データメッセージ、データビート(WRITE)
216  COMP_ACK応答メッセージ、完了確認応答メッセージ
302  タイムライン
304  タイムライン
306  書き込み要求、要求メッセージ
308  応答メッセージ
310  クレジットグラント(CRD_GNT)応答メッセージ
402  処理コア
404  データ記憶
406  リンク
408  トランザクションコントローラ
410  スヌープコントローラ
412  リンク
414  トランザクションメッセージ、リンク
416  データリンク
418  スヌープメッセージ
420  スヌープコントローラ
422  トランザクションコントローラ
502  タイムライン
504  タイムライン
506  書き込み要求
508  DBID応答メッセージ
510  単一メッセージ、組み合わせ応答(COMP_DBID)
512  合体データビート
514  合体データビート
600  方法
700  方法
T1  時間、期間
T3  時間、期間
T4  時間、期間
T5  時間、期間
【図１】
2021522608.tif 000004
【図２】
2021522608.tif 000005
【図３】
2021522608.tif 000006
【図４】
2021522608.tif 000007
【図５】
2021522608.tif 000008
【図６】
2021522608.tif 000009
【図７】
2021522608.tif 000010
【手続補正書】
【提出日】令和3年1月5日(2021.1.5)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理ネットワークに関する。
【背景技術】
【０００２】
システムオンチップ(SoC)などのデータ処理システムは、複数のプロセッサコア、複数のデータキャッシュ、および共有データリソースを収容することができる。例えば、共有メモリシステムでは、それぞれのプロセッサコアが、単一の共有アドレス空間に対して読み出しおよび書き込みを行うことができる。キャッシュの整合性は、1つまたは複数のキャッシュ、および単一のキャッシュされるエリア内のデータを共有する2つ以上のデバイスを収容した、どんなシステムにおいても問題である。キャッシュを収容したシステムに関して、2つの潜在的な問題がある。第1に、キャッシュされるデバイスがコピーした後で、メモリが別のデバイスによって更新されることがある。この時点で、キャッシュ内のデータは、最新ではないかまたは無効であり、最新データをもはや収容していない。第2に、ライトバックキャッシュを収容したシステムは、ローカルにキャッシュされたコピーにデバイスが書き込んだ時点でメモリにはもはや最新データが収容されていない、というケースに対処しなければならない。メモリを読み出す第2のデバイスには、最新ではないデータが見えることになる。
【発明の概要】
【課題を解決するための手段】
【０００３】
データ処理システムは、相互接続システムを介して一緒に結合されてネットワークを形成する、いくつかのノードとして構成され得る。キャッシュの整合性を維持するためのプロトコルの一例は、スヌープ要求を使用するものである。ネットワークのあるノードが、特定のアドレスに関連するデータにアクセスしたいとき、要求されたデータのコピーがローカルキャッシュ内に記憶されている他のノードに、スヌープメッセージが送信される。
【０００４】
一般に、整合性は、共有リソースを有するデータ処理システムにおいて、メッセージングプロトコルを実装することによって維持される。システムの性能は、相互接続機構のメッセージ伝送能力、および各トランザクションを完了するために必要となるメッセージの数によって制約される。インターコネクションを介したデータのストリーミング転送などのいくつかの応用例では、相互接続機構が輻輳状態になり、それにより、システムの性能が制限されることがある。
【０００５】
添付の図面は、さまざまな代表的実施形態についてより完全に説明するために使用され、また開示する代表的実施形態およびその固有の利点をより一層理解するために当業者によって使用され得る、視覚的表現を提供する。これらの図面では、同様の参照番号が、対応する要素を識別する。
【図面の簡単な説明】
【０００６】
【図１】さまざまな代表的実施形態による、データ処理ネットワークのブロック図である。
【図２】本開示の実施形態による、データ処理装置におけるデータ書き込みトランザクションのトランザクションフロー図である。
【図３】本開示の実施形態による、データ処理装置におけるデータ書き込みトランザクションのトランザクションフロー図である。
【図４】さまざまな代表的実施形態による、データ処理ネットワークのノード間の通信チャネルを示す図である。
【図５】本開示の実施形態による、データ処理装置におけるデータ書き込みトランザクションのトランザクションフロー図である。
【図６】さまざまな代表的実施形態による、データ書き込みトランザクションを処理する際のホームノードの動作の方法のフローチャートである。
【図７】さまざまな代表的実施形態による、データ書き込みトランザクションを処理する際の要求ノードの動作の方法のフローチャートである。
【発明を実施するための形態】
【０００７】
本開示は、多くの異なる形態での具現化が可能であるが、本開示は本開示の原理の一例とみなすべきであり、図示し説明する特定の実施形態に本開示を限定するものではない、という理解の下に、特定の実施形態が図面中に示され、本明細書において詳細に説明される。下の説明では、同様の参照番号が、図面のいくつかの図中の同じ部分、類似の部分、または対応する部分について説明するために使用されていることがある。
【０００８】
本文献では、第1のおよび第2の、上部および下部などの関係性の用語が、あるエンティティまたはアクションと別のエンティティまたはアクションとを、そのようなエンティティ間またはアクション間の実際のそのような任意の関係または順序を必ずしも必要とするかまたは示唆することなく、単に区別するために使用されていることがある。「備える(comprises)」、「備える(comprising)」、「含む(includes)」、「含む(including)」、「有する(has)」、「有する(having)」いう用語、またはそれらの他の任意の変形は、要素のリストを含むプロセス、方法、物品、または装置が、それらの要素のみを含むのではなく、明示的にリストされていないかまたはそのようなプロセス、方法、物品、もしくは装置に固有ではない他の要素も含むことのできるような、非排他的包含をカバーすることが意図される。「〜を備える(comprises  …a)」に続く要素は、それ以上の制約なく、その要素を含むプロセス、方法、物品、または装置における追加の同一要素の存在を排除するものではない。
【０００９】
本文献全体を通して、「1つの実施形態」、「いくつかの実施形態」、「一実施形態」、「実装形態」、「態様」、または類似の用語に言及する場合、実施形態に関して説明される特定の特徴、構造、または特性が、本開示の少なくとも1つの実施形態に含まれている、ということを意味する。したがって、そのような句が出現する場合、または本明細書全体を通してさまざまな場所にそのような句が出現する場合、必ずしも全てが、同じ実施形態に言及しているとは限らない。さらに、特定の特徴、構造、または特性が、1つまたは複数の実施形態において、制限なく、任意の適切な様式で組み合わされてもよい。
【００１０】
「または」という用語は、本明細書では、包含的なものとして、またはいずれか1つもしくはいずれかの組み合わせを意味するものとして、解釈すべきである。したがって、「A、B、またはC」は、「次のうちのいずれか、すなわちA;B;C;AおよびB;AおよびC;BおよびC;A、B、およびC」を意味する。この定義の例外は、要素、機能、ステップ、または行為の組み合わせが何らかの形で本質的に相互に排他的であるときにのみ起こる。また、文法的接続詞は、別段の定めのない限り、または文脈から明らかでない限り、等位接続される節、文、語などのありとあらゆる選言的および連言的な組み合わせを表すことが意図される。したがって、「または」という用語は、一般に、「および/または」などを意味するものと理解されたい。
【００１１】
本明細書において述べるあらゆる文献は、参照によりその全体がここに組み込まれる。別段の明示的な定めのない限り、または本文から明らかでない限り、単数形の項目に言及する場合、それは、複数形の項目も含むと理解されたく、また逆も同様である。
【００１２】
本明細書において値の範囲を列挙する場合、それは、別段の指示のない限り、限定的であることを意図したものではなく、その代わりに、その範囲に含まれるありとあらゆる値を個々に参照しており、そのような範囲内の各個別の値は、本明細書においてそれが個々に列挙されるかのように、本明細書に組み込まれる。「約」、「およそ」、「実質的に」などという語は、数値を伴うとき、当業者には理解されるように、意図した目的のために満足のいくように動作するためのずれを示すものと解釈すべきである。値および/または数値の範囲は、本明細書において例として提供されているにすぎず、説明する実施形態の範囲に対する制限を設けるものではない。本明細書において提供されるありとあらゆる例または例示的文言(「例えば」、「など」など)の使用は、実施形態をより一層明らかにすることが意図されているにすぎず、実施形態の範囲に制限を課すものではない。本明細書中のどんな文言も、特許請求されない任意の要素を実施形態の実践にとって不可欠であると示すものと解釈すべきではない。
【００１３】
例示を簡単かつ明確にする目的で、図の間で、対応する要素または類似の要素を示すために参照番号が繰り返されることがある。本明細書において説明する実施形態の理解をもたらすために、多数の詳細が記載される。実施形態は、これらの詳細なしでも実践することができる。他の場合には、説明する実施形態を曖昧にしないように、よく知られた方法、手順、およびコンポーネントについて詳細に説明されていない。説明は、本明細書において説明する実施形態の範囲に限定されるものとみなすべきではない。
【００１４】
以下の説明の中で、「第1の」、「第2の」、「上部」、「下部」、「上方に」、「下方に」、「上に」、「下に」などの用語は、便宜上の語であり、限定的な用語と解釈すべきではない、ということが理解されよう。また、装置およびデバイスという用語は、本文においては、交換可能に使用され得る。
【００１５】
本明細書において使用するとき、「結合された」、「接続された」という用語、および/または類似の用語は、一般的に使用される。これらの用語は同義語として意図されているのではない、ということを理解されたい。そうではなく、「接続された」は、2つ以上のコンポーネントが、例えば、電気的なものを含めて、物理的に直接接触した状態にあることを示すために一般的に使用され、一方、「結合された」は、2つ以上のコンポーネントが、電気的なものを含めて、潜在的に物理的に直接接触した状態にある可能性があることを意味するために一般的に使用される。しかし、「結合された」はまた、2つ以上のコンポーネントが必ずしも直接接触した状態にあるとは限らないが、それでもなお協働および/または相互作用することができる、ということを意味するためにも一般的に使用される。「結合された」という用語はまた、適切な文脈では、例えば、間接的に接続された、を意味するものと一般的に理解される。
【００１６】
本明細書において提示する本開示のさまざまな実施形態および例は、本開示を限定するものではなく本開示を例示するものと理解され、また本開示の範囲に関して非限定的である。
【００１７】
本開示のさらなる特定の好ましい態様が、添付の独立請求項および従属請求項内に記載される。従属請求項の特徴は独立請求項の特徴と、特許請求の範囲に明示的に記載された組み合わせ以外の組み合わせで、適宜組み合わされてよい。
【００１８】
本開示は、システムオンチップ(SoC)などのデータ処理ネットワークにおける効率的なデータ転送を、より少ない応答メッセージを使用するプロトコルを実装することにより達成することを対象とする。このプロトコルは、ハードウェアの形で実装され、ネットワーク相互接続機構におけるメッセージ輻輳を低減させ、それにより、データ処理ネットワークの動作を改善する。
【００１９】
データ処理装置は、性能を拡大し、レーテンシを低減させるために、チップ内に複数のプロセッサデバイスを使用することができる。プログラムまたはタスクは、複数のデバイスによって並列に実行され得る独立したステップに分けることができる。これらのデバイスは、データまたは制御情報を共有する必要があるとき、オンチップ相互接続を通じて互いに通信する。
【００２０】
データは、オフチップで(DRAMなどの)主メモリ内に記憶させることができるが、主メモリは、アクセスに時間がかかり、大量の電力を消費する。他のオンチッププロセッサデバイスによってアクセス可能な、各プロセッサデバイス内のローカルL2キャッシュを使用することによって、効率が改善される。これにより、プロセッサ間通信の速度が上がり、電力消費が低減する。加えて、データは、入力デバイスから処理デバイスにおいて受信されることもあり、処理デバイスから出力に書き出されることもある。
【００２１】
しかし、共有リソースの場合、最新ではないデータつまり古いデータではなく、最新データを任意のプロセッサが確実に得るようにするためのメカニズムが必要となる。1つの手法は、相互接続内の1つまたは複数のホームノードを使用して、キャッシュ内容を常時把握し、メモリアクセス要求を管理する、というものである。ホームノードは、相互接続内にあるかまたは相互接続に取り付けられているとみなすことのできるデータハンドリングモジュールである。各ホームノードは、共有メモリ(またはメモリにマッピングされた入力/出力(I/O)デバイス)の領域に対する要求を管理する。処理デバイスが、適切なホームノードにデータ要求を送信し、ホームノードは、その要求がどのように処理されるかを管理する。処理デバイスは要求ノードと呼ばれる。ホームノードは、全ての要求ノードからの要求を直列化し、それらを順番に実行し、それによって、データの整合性を維持することができる。メモリ空間は、ホームノード間で分割される。
【００２２】
要求ノードは、データにアクセスしたいとき、そのアドレスに関連付けられた相互接続のホームノードに要求を送信する。ホームノードは、例えば、どのノードがローカルキャッシュ内にキャッシュラインのコピーを有しているかの、スヌープフィルタの形態をとるレコードを維持しており、データを要求する、スヌープ要求と呼ばれるメッセージを、1つまたは複数の特定されたノード(ターゲットノード)に送信する。ローカルキャッシュ内に記憶されていないデータは、例えばメモリコントローラを介して主メモリから取り出され得る。ホームノード自体には、メモリアクセスの回数を低減させるために、キャッシュが設けられていてよい。
【００２３】
相互接続は、データ、要求/応答メッセージ、およびスヌープメッセージ用の並列チャネルを提供することができる。
【００２４】
本開示の実施形態によれば、相互接続を介して結合されたいくつかのノードを含むデータ処理装置が、データの整合性を維持するために必要となるメッセージの数を低減させることにより、効率的なデータ転送を行うように構成される。
【００２５】
図1は、さまざまな実施形態による、データ処理装置100のブロック図である。システムオンチップ(SoC)などのデータ処理システムは、複数の処理デバイスおよび共有データリソースを収容することができる。システム100は、例えば、システムオンチップ(SoC)集積回路の形で実装することができる。図示の簡略化された例では、システム100は、いくつかのノードが相互接続システムを介して一緒に接続されたネットワークとして構成される。ノードは、例えばプロセッサ、I/Oデバイス、またはメモリコントローラなどの、機能ブロックまたは機能デバイスである。図示のように、デバイスは、要求ノード102、104、ならびにホームノード106および108を含む。デバイスは相互接続に、相互接続システム110のクロスポイントにおいて結合される。クロスポイントは、メッセージバッファ、およびデバイス間でメッセージをルーティングするのに使用されるスイッチを収容している。システム100は、入力/出力(I/O)デバイス112および114も含む。図を見やすくするため、システムの他の要素は、図1では割愛されている。デバイスは、例えば、処理コア、処理コアクラスタ、グラフィックポストプロセッサ(GPP)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、または特定用途向け集積回路(ASIC)デバイスとすることができる。図1に示す例では、デバイス102(RN-F)および104(RN-I)は、プロセッサや処理クラスタなどの要求ノードである。デバイス104(RN-I)は、I/Oデバイス114へのインターフェースを提供する。例えば、ペリフェラルコンポーネント相互接続(PCI)エクスプレス対応デバイスとリンクするために、Arm Limited、U.K.によって仕様化されたArm(登録商標) AMBA(登録商標)アドバンストエクステンシブルインターフェース(AXI)が設けられてよい。デバイス106(HN-0)および108(HN-1)は、指定されたシステムアドレス範囲に対する整合点としての働きをするホームノードである。
【００２６】
デバイス102および104は、相互接続システム110を介して、ホームノード(HN)106および108に、互いに、また共有メモリ118にアクセスするためのメモリコントローラ116などのデータリソースに、結合される。デバイス102、104は、データアクセス要求を生成することができ、本明細書では要求ノード(RN)と呼ばれる。複数のノードがデータリソースまたはメモリリソースを共有するとき、整合プロトコルを使用することができ、デバイスは、完全に整合(例えばRN-F)と言うことができる。他のデバイス(例えばRN-I)が、別の集積回路への接続を提供することができる。図を見やすくするため、クロックなど、SoCの多くの要素は、図1から割愛されていることに留意されたい。
【００２７】
例えば「読み出し」や「書き込み」などのデータトランザクションの要求を生成するノードは、要求ノードと呼ばれ、そのようなトランザクションのエンドポイントである。要求に応答するノードは、ターゲットノードと呼ばれる。例えば、図1では、デバイス102および104が要求ノードであり、デバイス106および108がターゲットノードである。要求ノード102および104によって要求されるデータが、ターゲットノード106または108に存在するとき、データは相互接続システム110を介して要求ノードに戻される。データが存在しないとき、データは適切なリソースから取り出される。データが要求ノードによって書き込まれるとき、ホームノードは、確実にオリジナルデータのコピーがシステム内の他のロケーションに残らないようにすることを担い、というのも、これらのコピーは、新たなデータが書き込まれると古くなってしまうためである。
【００２８】
データトランザクションにおいては、要求ノードが、1つまたは複数のパケットを含むメッセージを作成し、それを相互接続に、その送信先に送信するために投入する。パケットは、メモリアドレス、メモリからのデータ、またはその両方を収容することができ、制御ビットまたはルーティングビットを保持することもできる。データ読み出し要求などの制御パケットは、アドレス情報および制御ビットのみを収容することができる。オンチップネットワークでは、「パケット」は、キャッシュ整合性プロトコルなどの上位層プロトコルの、意味のある単位である。パケットサイズが、相互接続110におけるチャネル幅よりも大きいとき、パケットは、複数のピースまたはビートに分割され、その結果、パケットが完全に通過するためにさらに時間がかかる。例えば、パケットが256ビットであり、チャネルが64ビット／サイクルの幅である場合、直列化は4サイクルである。
【００２９】
キャッシュの整合性は、1つもしくは複数のキャッシュ、または他の分散ストレージ、および単一データリソース内のデータを共有する2つ以上のデバイスを収容した、どんなシステムにおいても問題である。キャッシュを収容したシステムに関して、2つの潜在的な問題がある。第1に、キャッシュされるデバイスがコピーした後で、メモリが別のデバイスによって更新されることがある。この時点で、キャッシュ内のデータは、最新ではないかまたは無効であり、最新データをもはや収容していない。第2に、ライトバックキャッシュを収容したシステムは、ローカルにキャッシュされたコピーをデバイスが更新した時点でメモリにはもはや最新データが収容されていない、というケースに対処しなければならない。メモリを読み出す第2のデバイスには、最新ではない(古い)データが見えることになる。キャッシュの整合性は、例えばノード102、104などの処理デバイス間での「スヌープ」メッセージのやりとりを通じて維持され得る。整合性を維持するために、各処理デバイスはスヌープコントロールユニットを含み、スヌープコントロールユニットは、整合性要求および整合性応答、すなわちスヌープメッセージを発行し、他のデバイスから相互接続システム110を介して受信する。
【００３０】
スヌープ要求およびスヌープ応答は、ホームノードによって管理される。ホームノードは、データアクセス要求を受信し、対応するスヌープメッセージを生成し、データを受信または転送する。整合性を確実なものにするためのメッセージおよびデータのやりとりは、整合性アクションと呼ばれる。
【００３１】
図2は、最適化されていないシステムにおける、要求ノードおよびタイムライン202とホームノードおよびタイムライン204との間の例示的書き込みトランザクションのフロー図である。トランザクションは、要求ノードにおける期間T1〜T2およびホームノードにおける期間T3〜T6を占有する。時間T1において、要求ノードから相互接続システムを介してホームノードに、書き込み要求メッセージ206(WRITE(REQ))が送信される。時間T3に受信される要求に応答して、ホームノードは、時間T4において、第1の応答メッセージ208(DBID(RSP))を要求ノードに送り返す。応答メッセージ208は、データの受信のためにホームノードにおいてデータバッファが利用可能であること、およびこの書き込み動作の完了が、より新しいどんな書き込み動作にも依存しないことを示す。応答メッセージ208は、データバッファの識別子も示す。書き込み動作に備えて、新鮮ではないデータがローカルキャッシュ内に記憶されないようにすることを確実にすることによって整合性を維持するために、ホームノードは他のノードとスヌープメッセージを介して通信する。この整合性アクションが完了すると、ホームノードは、時間T5において、整合性アクションが完了していることを示すために、第2の応答メッセージ210(COMP(RSP))を送信する。DBID応答208が要求ノードによって受信されると、要求ノードは、データビート212および214によって示されるように、ホームノードにデータを送信することができる。この例では、データは2つのデータビートにおいて転送される。例えば、64バイトの転送は、32バイト相互接続データバス上の2つのデータビートを使用して行われてよい。全てのデータが送信されると、要求ノードは、トランザクションの完了を示すために、ホームノードにCOMP_ACK応答メッセージ216を送信する。したがって、3つの応答メッセージ(208、210、および216)が、各書き込みトランザクションの実施に使用される。
【００３２】
図2に示す手法は、データストリーミングに使用することができる。
【００３３】
図3は、最適化されていないシステムにおける、要求ノードおよびタイムライン302とホームノードおよびタイムライン304との間の例示的書き込みトランザクションのフロー図である。この例では、書き込み要求306が要求ノードから受信されるとき、ホームノード内でデータバッファが利用可能ではない。ホームノードは、時間T3において、データバッファが利用可能ではないことを示すために、要求ノードに応答メッセージ308(RETRY_ACK)を送信する。時間T4において、ホームノードにおいてデータバッファが利用可能になり、書き込み要求がリトライされてよいことを信号伝達するために、要求ノードにクレジットグラント(CRD_GNT)応答メッセージ310が送信される。次いで、メッセージ206、208、210、212、214、および216が、上で図2を参照して説明したように進行する。したがって、リトライが使用されるとき、2つの要求メッセージ(306、206)および2つのデータメッセージ(212、214)に加えて、5つの応答メッセージ(308、310、208、210、および216)が、各書き込みトランザクションの実施に使用される。
【００３４】
上の説明から、データ処理システムの相互接続機構における応答メッセージフローが輻輳を増大させている、ということが明らかである。これは、ストリーミングデータ転送のケースに、特に当てはまる。輻輳が起こるとき、トランザクションを完了するのに時間がかかり、要求ノードとホームノードの両方のリソースがより長い時間にわたって占有される。その結果として、データ処理システムの性能が劣化する。加えて、多数の応答メッセージが輻輳を引き起こす。これが他の無関係なトランザクションを圧迫することがあり、というのも、応答チャネルはシステム内の他のデバイスと共有されているためである。この輻輳により、システム内の全てのデバイスから見ると、全体的な帯域幅の減少という結果になる。
【００３５】
図4は、本開示の実施形態による、データ処理システムにおける要求ノード102とホームノード106との間の通信を示す図である。要求ノード102は、1つまたは複数の処理コア402、ならびに(1つまたは複数のキャッシュおよびデータバッファなどの)データ記憶404を含む。データ記憶404は、データを受信または送信するために、リンク406を介して外部I/Oデバイスと通信することができ、またコア402およびトランザクションコントローラ408と通信する。要求ノード102は、スヌープコントローラ410も含む。スヌープコントローラ410は、リンク412を介してホームノード106とスヌープメッセージをやりとりする。これらのメッセージは、データ処理システムにおいて整合性を維持するのに必要なアクションを起動する。トランザクションコントローラ408は、リンク414を介してホームノード106とトランザクションメッセージ414をやりとりし、データリンク416を介してホームノード106とデータもやりとりする。リンク412、414、および416は、データ処理ネットワーク内のデバイス同士を結合する相互接続機構によって提供される。個々のメッセージは、相互接続を通じてさまざまな経路をとることができるので、これらのリンクは仮想リンクである。
【００３６】
ホームノード106は、データアクセスの前に、スヌープコントローラ420を使用してデータ処理ネットワーク内の他のデバイスを相手にスヌープメッセージ418を送信および受信することによって、整合性アクションを実行する。ホームノード106は、要求ノードとメッセージをやりとりするためのトランザクションコントローラ422も含む。要求ノード102およびホームノード106の動作については、下で書き込み動作に即して説明する。1つの実施形態では、動作は、トランザクションコントローラ408および422のハードウェアによって実施される。
【００３７】
図5は、本開示の実施形態による、要求ノードおよびタイムライン502とホームノードおよびタイムライン504との間の例示的書き込みトランザクションのフロー図である。本開示の一態様によれば、要求ノードとホームノードは、メッセージ同士を合体させるように協調して働き、それにより、両方向に送信されるメッセージの数を低減させる。最終結果は、書き込み動作において送信されるメッセージの数が2つ低減する、というものである。これにより、ストリーミングデータ書き込みのための帯域幅が大幅に増大する。
【００３８】
ホームノードは、相互接続機構のトランザクション応答チャネル内の輻輳を検出するように構成される。これは、例えば、ネットワーククロスポイントにおけるデータバッファの使用を監視することによって行われ得る。クロスポイントの全てのデータバッファが使用中であるとき、それは、ネットワークが輻輳していることの現れであり、というのも、新たな転送は空きバッファが利用可能になるまで遅延されるためである。本開示から逸脱することなく、相互接続輻輳を検出するための他の方法を使用することができる。例えば、バイポーラプレディクタを使用して、応答チャネルバックプレッシャの履歴を維持し、ヒューリスティクスを使用して、いつ応答メッセージ同士を組み合わせるべきかを決定することができる。図5を参照すると、書き込み要求506が要求ノードからホームノードにおいて受信される。時間T3において、書き込みデータの受信のためにデータバッファが利用可能である。しかし、時間T3において相互接続が輻輳している場合、DBID応答メッセージ508は送信されない。その代わりに、時間T4において整合性アクションが完了するまで、メッセージは遅延される。時間T4において、COMPメッセージとDBIDメッセージとが組み合わされて、COMP_DBID(RSP)と表記された単一メッセージ510になる。したがって、ホームノードからの応答の数は、2から1に低減される。要求ノードは、メッセージ510を受信すると、書き込みデータメッセージとCOMP_ACKメッセージとを組み合わせて、データチャネル上の1つのメッセージにする。WRITE_COMP_ACK(DAT)と表記されたデータおよび応答は、相互接続のデータチャネル上で2つのビート(512および514)として送信される。したがって、応答チャネル上で別途のCOMP_ACKメッセージを送信する必要がなく、それにより、相互接続の応答チャネル上のトラフィックが低減する。加えて、別途のCOMP_ACKメッセージが送信されないので、トランザクションがより迅速に完了し、要求ノード内のリソースが解放される。典型的には、データビートは、データ自体に加えていくつかのビットを収容する。これらのビットは、例えばメタデータおよびルーティング情報を示す。本開示によれば、ビートは、メッセージCOMP_ACKを示す1つまたは複数
のビットを収容する。
【００３９】
図5は、相互接続機構内に輻輳が検出されたときに実施される、データ処理ネットワークにおけるデータ転送方法の一実施形態を示す。輻輳が検出されなかったときは、図2(リトライなし)または図3(リトライあり)に示す方法を使用することができる。書き込み要求が受信されると、ホームノードは、相互接続内の輻輳のレベルを判定し、どのプロトコルを使用するかを選択する。相互接続機構内に輻輳が検出されたとき、図5に示すように、ホームノードから相互接続機構を介して要求ノードに、組み合わせ応答(COMP_DBID)510が送信される。応答は、ホームノードにおいてデータバッファが利用可能になり、かつホームノードが整合性アクションを完了するまで、送信されない。組み合わせ応答510は、データバッファの識別子、および整合性アクションが完了していることを示す標識を含むことができる。
【００４０】
相互接続機構が輻輳していないとき、図2および図3に示すように、ホームノードは、ホームノードにおいてデータバッファが利用可能になると、相互接続機構を介して要求ノードに、第1の応答(DBID)(図2の208)を送信する。次いで、ホームノードは、ホームノードが整合性アクションを完了すると、整合性アクションが完了していることを示すために、相互接続機構を介して要求ノードに、第2の応答(COMP)(図2の210)を送信する。
【００４１】
ホームノード応答は、要求ノードにおいて受信される。応答が組み合わせ応答(COMP_DBID)(図5の510)を含むとき、要求ノードは、完了確認応答メッセージを、ホームノードに書き込まれるデータの1つまたは複数のビートと合体させて、1つまたは複数の合体データビートを形成し、要求ノードから相互接続機構を介してホームノードに、1つまたは複数の合体データビート(512および514)を送信する。しかし、応答が第1の応答を含むとき、書き込まれるデータは、要求ノードから相互接続機構を介してホームノードに、1つまたは複数のデータビート(WRITE)(図2の212および214)として送信される。次いで、完了確認応答メッセージ(図2の216)が送信される。
【００４２】
図6は、本開示の実施形態による、書き込み動作に参加するホームノードの動作の方法600のフローチャートである。開始ブロック602に続き、ブロック604において、新たな書き込み要求がホームノードにおいて受信される。ホームノードは、判定ブロック606において、要求側ノードからのデータの受信のためにホームノードにおいてデータバッファが利用可能になるまで待つ。データバッファが利用可能になると、判定ブロック606からの肯定分岐によって示されるように、判定ブロック608において、リンククレジットの利用可能性が確認される。リンククレジットの利用可能性は、相互接続機構内の輻輳レベルの表れである。リンククレジットが利用可能である場合、判定ブロック608からの肯定分岐によって示されるように、ブロック610において、要求側ノードにDBID応答メッセージが送信される。DBIDメッセージは、要求側ノードからのデータの受信のために利用可能であるデータバッファを識別する。次いで、ブロック612において、ホームノードが書き込みデータを受信し、ブロック614において、方法が終了する。リンククレジットが利用可能ではない場合、判定ブロック608からの否定分岐によって示されるように、ブロック616において、データバッファ識別子(DBID)のためのトラッカが記憶される。ブロック618において、ホームノードが、書き込み要求に関連する整合性アクションが完了する(かつリンククレジットが利用可能になる)まで待つ。整合性アクションが完了すると、判定ブロック618からの肯定分岐によって示されるように、ブロック620において、DBID応答とCOMP応答とが組み合わされて、単一メッセージになり、ブロック622において、要求ノードに送信される。次いで、ブロック612において、ホームノードが書き込みデータを受信し、ブロック614において、方法が終了する。
【００４３】
図6に示す実施形態では、ホームノードが、リンククレジットの利用可能性に基づいて、DBID応答を遅延させ、それをCOMP応答と組み合わせるどうかの判定を行う。オプションで、これらのメッセージは常に組み合わされてもよい。しかし、これらのメッセージが組み合わされるとき、整合性アクションとホームノードにおいてデータをデータバッファに書き込むアクションが直列に実施される。別々のDBIDメッセージとCOMPメッセージが送信されるとき、これらの2つのアクションは並列に実施され得る。したがって、図6に示す実施形態では、メッセージ同士を組み合わせるのは、利益またはそのようにすること(例えば相互接続の輻輳を低減させること)が、不利益(ホームノードへの書き込みの遅延)に勝るときにのみ、使用される。
【００４４】
図7は、本開示の実施形態による、書き込み動作に参加する要求ノードの動作の方法700のフローチャートである。開始ブロック702に続き、ブロック704において、要求ノードが書き込み要求に対する応答を受信する。判定ブロック706において、メッセージがデコードされる。メッセージがCOMPメッセージである場合、判定ブロック706からの、整合性アクションがホームノードによって完了されたことを示す右分岐によって示されるように、フローはブロック704に戻る。応答が組み合わせ応答COMP_DBIDである場合、判定ブロック706からの左分岐によって示されるように、ブロック708において、書き込まれるデータとCOMP_ACK応答とが組み合わされる。ブロック710において、組み合わせられたWRITE_COMP_ACKメッセージが送信される。組み合わせメッセージは、相互接続のデータチャネル経由で送信され、それにより、相互接続の応答チャネル内のトラフィックが低減し得る。ブロック712において、方法が終了する。判定ブロック706からの下方分岐によって示されるように、応答がDBIDである場合、フローは判定ブロック714に進む。要求ノードによってCOMPメッセージが受信されている場合、判定ブロック714からの肯定分岐によって示されるように、フローはブロック708に進み、そこでデータとCOMP_ACKメッセージとが組み合わされる。COMPメッセージがまだ受信されていない場合、判定ブロック714からの否定分岐によって示されるように、ブロック716において、要求ノードからホームノードにデータが送信される。ブロック718において、要求ノードにおいてCOMPメッセージが受信された後でホームにCOMP_ACKが送信される。ブロック712において、方法が終了する。COMPメッセージとDBIDメッセージは、相互接続を通じて異なるルートをとることができるので、順不同で到着し得ることに留意されよう。
【００４５】
図6に示すホームノードのアクションと、図7に示す要求ノードのアクションとが相まって、データ処理システムにおいて書き込み動作を効率的に実行するためのプロトコルの一実施形態が提供される。このプロトコルは、ホームノードおよび要求ノード内の専用ハードウェアによって実施される。
【００４６】
応答メッセージの低減について、下のTable 1(表1)に要約する。
【００４７】
【表１】
2021522608.tif 000011
【００４８】
開示した手法の他の利益は、次の通りである。
・COMP_ACKメッセージが別途のメッセージとして送信されないので、ホームノードにおけるトラッカライフタイム(完全なトランザクションにかかる時間)が低減される。
・輻輳状況下で、COMP_ACKメッセージが別途のメッセージとして送信されないので、要求ノードにおけるトラッカライフタイムが低減される。
・輻輳状況下で、相互接続の応答チャネル内のトラフィックが低減され、したがって、他のトランザクションにとって利用可能となる。
・輻輳状況下で、応答チャネルが効率的に利用される結果、システム帯域幅が改善される。
・相互接続における応答メッセージの低減の結果、電力消費が低下する。
【００４９】
本開示は、専用ハードウェアコンポーネントを使用して実装できることを、当業者は認識されよう。加えて、本開示は、プログラムされたプロセッサ、再構成可能なハードウェアコンポーネント、専用ハードウェアコンポーネント、またはそれらの組み合わせを使用して実装することもできる。
【００５０】
専用ハードウェアコンポーネントまたは再構成可能なハードウェアコンポーネントは、ハードウェア記述言語の命令によって、またはコンポーネントおよび接続性のネットリストによって、記述することができる。命令またはネットリストは、本開示から逸脱することなく、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、不揮発性メモリ(NVM)、ハードディスクドライブ、フロッピーディスクドライブ、光ディスクドライブなどの大容量ストレージ、光記憶要素、磁気記憶要素、光磁気記憶要素、フラッシュメモリ、コアメモリ、および/または他の等価な記憶技術などの非一時的コンピュータ可読媒体上に記憶させることができる。そのような代替記憶デバイスは、等価物とみなすべきである。
【００５１】
本明細書において詳細に説明してきたさまざまな代表的実施形態は、限定としてではなく例として提示されている。説明した実施形態の形態および細部に、添付の特許請求の範囲に記載の範囲内に留まる等価な実施形態をもたらす結果となるさまざまな変更を加えられることが、当業者には理解されよう。
【００５２】
一実施形態は、相互接続機構を介して結合されたホームノードおよび要求ノードを備えるデータ処理ネットワークにおけるデータ転送の方法を実現する。この方法は、ホームノードによって、要求ノードから書き込み要求を受信することと、相互接続機構内に輻輳があるかどうかを判定することと、相互接続機構内に輻輳があると判定されたときに、ホームノードにおいてデータバッファが利用可能になり、かつホームノードが整合性アクションを完了すると、ホームノードから相互接続機構を介して要求ノードに、組み合わせ応答を送信することであって、組み合わせ応答が、データバッファの識別子、および整合性アクションが完了していることを示す標識を含む、送信することとを含む。
【００５３】
この方法は、要求ノードによって、書き込み要求に対する応答を受信することであって、応答が、ホームノードから相互接続機構を介して送信される、受信することと、応答が組み合わせ応答を含むときに、要求ノードによって、完了確認応答メッセージを、ホームノードに書き込まれるデータの1つまたは複数のビートと合体させて、1つまたは複数の合体データビートを形成することと、要求ノードから相互接続機構を介してホームノードに、1つまたは複数の合体データビートを送信することとを含んでもよい。
【００５４】
加えて、この方法は、相互接続機構内に輻輳が検出されなかったときに、ホームノードにおいてデータバッファが利用可能になると、ホームノードから相互接続機構を介して要求ノードに、第1の応答を送信することであって、第1の応答がデータバッファの識別子を含む、送信することと、ホームノードが整合性アクションを完了すると、相互接続機構を介して要求ノードに、第2の応答を送信することであって、第2の応答が、整合性アクションが完了していることを示す標識を含む、送信することとを含んでもよい。
【００５５】
この方法は、応答が第1の応答を含むときに、要求ノードから相互接続機構を介してホームノードに、書き込まれるデータを1つまたは複数のデータビートとして送信することと、要求ノードから相互接続機構を介してホームノードに、完了確認応答メッセージを送信することとを含んでもよい。
【００５６】
要求ノードからの書き込み要求に応答してホームノードが整合性アクションを実施することをさらに含んでもよく、整合性アクションを実施することが、相互接続機構を介してデータ処理ネットワークの他のノードと1つまたは複数のスヌープメッセージをやりとりすることを含む。
【００５７】
一実施形態において、書き込み要求が、データストリーミングトランザクションの複数の書き込み要求のうちの1つである。
【００５８】
一実施形態において、相互接続機構内に輻輳があるかどうかを判定することが、相互接続機構内のリンククレジットの利用可能性を検出することを含む。
【００５９】
一実施形態において、相互接続機構内に輻輳があるかどうかを判定することが、相互接続機構のクロスポイントにおけるデータバッファの利用可能性を検出することを含む。
【００６０】
相互接続機構内に輻輳があるかどうかの判定が、相互接続機構の応答チャネルにおけるバックプレッシャの履歴に依存してもよい。
【００６１】
さらなる実施形態は、データ処理ネットワークであって、メモリ領域の範囲のための整合性ポイント(point of coherence)を提供するホームノードであって、第1のトランザクションコントローラを備える、ホームノードと、第2のトランザクションコントローラを備える要求ノードと、要求ノードをホームノードに結合する相互接続機構であって、第1のトランザクションコントローラと第2のトランザクションコントローラとの間のデータチャネルおよび応答チャネルを提供する、相互接続機構とを備え、要求ノードが、ホームノードに書き込み要求を送信することを行うように構成され、ホームノードが、書き込み要求に関連するデータを受信するためのホームノードのデータバッファを識別することと、相互接続機構の応答チャネル内の輻輳を検出することと、相互接続機構の応答チャネル内に輻輳が検出されたときに、書き込み要求に関連する整合性アクションを実施することと、要求ノードに組み合わせメッセージを送信することであって、組み合わせメッセージが、書き込み要求に関連する整合性アクションが完了しているときの識別されたデータバッファの識別子を含む、送信することとを行うように構成される、データ処理ネットワークを提供する。
【００６２】
要求ノードが、書き込み要求に対する応答を受信することであって、応答が、ホームノードから相互接続機構を介して送信される、受信することと、応答が組み合わせメッセージを含むときに、要求ノードによって、完了確認応答メッセージを、ホームノードに書き込まれるデータの1つまたは複数のビートと合体させて、1つまたは複数の合体データビートを形成することと、要求ノードから相互接続機構を介してホームノードに、1つまたは複数の合体データビートを送信することとを行うように構成されてもよい。
【００６３】
ホームノードが、相互接続機構の応答チャネル内に輻輳が検出されなかったときに、要求ノードにデータバッファ識別子(DBID)メッセージを送信することと、書き込み要求に関連する整合性アクションを実施することと、書き込み要求に関連する整合性アクションが完了すると、要求ノードに整合性アクション完了(COMP)メッセージを送信することとを行うように構成されてもよい。
【００６４】
加えて、要求ノードが、応答がDBIDメッセージを含むときに、要求ノードから相互接続機構を介してホームノードに、書き込まれるデータを1つまたは複数のデータビートとして送信することと、書き込まれるデータを送信することに続いて、要求ノードから相互接続機構を介してホームノードに、完了確認応答メッセージを送信することとを行うように構成されてもよい。
【００６５】
ホームノードがスヌープコントローラを含んでもよく、ホームノードによって整合性アクションを実施することが、相互接続機構を介してデータ処理ネットワークの他のノードと1つまたは複数のスヌープメッセージをやりとりすることを含む。
【００６６】
要求ノードからの書き込み要求が、データストリーミングトランザクションの複数の書き込み要求のうちの1つであってもよい。
【００６７】
要求ノードが、外部入力デバイスからストリーミングデータを受信するためのインターフェースを含んでもよい。
【００６８】
相互接続機構がメッシュネットワークを含んでもよい。
【００６９】
データ処理ネットワークを記述したハードウェア記述言語の命令を記憶するために、またはデータ処理ネットワークのネットリスト記述を記憶するために、非一時的コンピュータ可読媒体が提供されてもよい。
【符号の説明】
【００７０】
100  データ処理装置、システム
102  要求ノード、デバイス
104  要求ノード、デバイス
106  ホームノード(HN)、デバイス、ターゲットノード
108  ホームノード(HN)、デバイス、ターゲットノード
110  相互接続システム、相互接続
112  入力/出力(I/O)デバイス
114  入力/出力(I/O)デバイス
116  メモリコントローラ
118  共有メモリ
202  タイムライン
204  タイムライン
206  書き込み要求メッセージ
208  第1の応答メッセージ、DBID応答、第1の応答(DBID)
210  第2の応答メッセージ、第2の応答(COMP)
212  データメッセージ、データビート(WRITE)
214  データメッセージ、データビート(WRITE)
216  COMP_ACK応答メッセージ、完了確認応答メッセージ
302  タイムライン
304  タイムライン
306  書き込み要求、要求メッセージ
308  応答メッセージ
310  クレジットグラント(CRD_GNT)応答メッセージ
402  処理コア
404  データ記憶
406  リンク
408  トランザクションコントローラ
410  スヌープコントローラ
412  リンク
414  トランザクションメッセージ、リンク
416  データリンク
418  スヌープメッセージ
420  スヌープコントローラ
422  トランザクションコントローラ
502  タイムライン
504  タイムライン
506  書き込み要求
508  DBID応答メッセージ
510  単一メッセージ、組み合わせ応答(COMP_DBID)
512  合体データビート
514  合体データビート
600  方法
700  方法
T1  時間、期間
T3  時間、期間
T4  時間、期間
T5  時間、期間
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
相互接続機構を介して結合されたホームノードおよび要求ノードを備えるデータ処理ネットワークにおけるデータ転送の方法であって、
前記ホームノードによって、前記要求ノードから書き込み要求を受信するステップと、
前記相互接続機構内に輻輳があるかどうかを判定するステップと、
前記相互接続機構内に輻輳があると判定されたときに、
前記ホームノードにおいてデータバッファが利用可能になり、かつ前記ホームノードが整合性アクションを完了するときに、前記ホームノードから前記相互接続機構を介して前記要求ノードに、組み合わせ応答を送信するステップであって、前記組み合わせ応答が、前記データバッファの識別子、および前記整合性アクションが完了していることを示す標識を含む、ステップと
を含む方法。
【請求項２】
前記要求ノードによって、前記書き込み要求に対する応答を受信するステップであって、前記応答が、前記ホームノードから前記相互接続機構を介して送信される、ステップと、
前記応答が前記組み合わせ応答を含むときに、
前記要求ノードによって、完了確認応答メッセージを、前記ホームノードに書き込まれるデータの1つまたは複数のビートと合体させて、1つまたは複数の合体データビートを形成するステップと、
前記要求ノードから前記相互接続機構を介して前記ホームノードに、前記1つまたは複数の合体データビートを送信するステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記相互接続機構内に輻輳が検出されなかったときに、
前記ホームノードにおいて前記データバッファが利用可能になるときに、前記ホームノードから前記相互接続機構を介して前記要求ノードに、第1の応答を送信するステップであって、前記第1の応答が前記データバッファの識別子を含む、ステップと、
前記ホームノードが前記整合性アクションを完了するときに、前記相互接続機構を介して前記要求ノードに、第2の応答を送信するステップであって、前記第2の応答が、前記整合性アクションが完了していることを示す標識を含む、ステップと
をさらに含む、請求項2に記載の方法。
【請求項４】
前記応答が前記第1の応答を含むときに、
前記要求ノードから前記相互接続機構を介して前記ホームノードに、前記書き込まれるデータを1つまたは複数のデータビートとして送信するステップと、
前記要求ノードから前記相互接続機構を介して前記ホームノードに、前記完了確認応答メッセージを送信するステップと
をさらに含む、請求項3に記載の方法。
【請求項５】
前記要求ノードからの前記書き込み要求に応答して前記ホームノードが前記整合性アクションを実施するステップをさらに含み、前記整合性アクションを実施するステップが、前記相互接続機構を介して前記データ処理ネットワークの他のノードと1つまたは複数のスヌープメッセージをやりとりすることを含む、請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記書き込み要求が、データストリーミングトランザクションの複数の書き込み要求のうちの1つである、請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記相互接続機構内に輻輳があるかどうかを判定するステップが、前記相互接続機構内のリンククレジットの利用可能性を検出するステップを含む、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記相互接続機構内に輻輳があるかどうかを判定するステップが、前記相互接続機構のクロスポイントにおけるデータバッファの利用可能性を検出するステップを含む、請求項1から7のいずれか一項に記載の方法。
【請求項９】
前記相互接続機構内に輻輳があるかどうかを判定するステップが、前記相互接続機構の応答チャネルにおけるバックプレッシャの履歴に依存する、請求項1から8のいずれか一項に記載の方法。
【請求項１０】
データ処理ネットワークであって、
メモリ領域の範囲に対する整合性ポイントを提供するホームノードであって、第1のトランザクションコントローラを備える、ホームノードと、
第2のトランザクションコントローラを備える要求ノードと、
前記要求ノードを前記ホームノードに結合する相互接続機構であって、前記第1のトランザクションコントローラと前記第2のトランザクションコントローラとの間のデータチャネルおよび応答チャネルを提供する、相互接続機構と
を備え、
前記要求ノードが、前記ホームノードに書き込み要求を送信することを行うように構成され、
前記ホームノードが、
前記書き込み要求に関連するデータを受信するための前記ホームノードのデータバッファを識別することと、
前記相互接続機構の前記応答チャネル内の輻輳を検出することと、
前記相互接続機構の前記応答チャネル内に輻輳が検出されたときに、
前記書き込み要求に関連する整合性アクションを実施することと、
前記要求ノードに組み合わせメッセージを送信することであって、前記組み合わせメッセージが、前記書き込み要求に関連する前記整合性アクションが完了しているときの前記識別されたデータバッファの識別子を含む、前記送信することと
を行うように構成される、データ処理ネットワーク。
【請求項１１】
前記要求ノードが、
前記書き込み要求に対する応答を受信することであって、前記応答が、前記ホームノードから前記相互接続機構を介して送信される、前記受信することと、
前記応答が前記組み合わせメッセージを含むときに、
前記要求ノードによって、完了確認応答メッセージを、前記ホームノードに書き込まれるデータの1つまたは複数のビートと合体させて、1つまたは複数の合体データビートを形成することと、
前記要求ノードから前記相互接続機構を介して前記ホームノードに、前記1つまたは複数の合体データビートを送信することと
を行うようにさらに構成される、請求項10に記載のデータ処理ネットワーク。
【請求項１２】
前記ホームノードが、
前記相互接続機構の前記応答チャネル内に輻輳が検出されなかったときに、
前記要求ノードにデータバッファ識別子(DBID)メッセージを送信することと、
前記書き込み要求に関連する整合性アクションを実施することと、
前記書き込み要求に関連する前記整合性アクションが完了するときに、前記要求ノードに整合性アクション完了(COMP)メッセージを送信することと
を行うようにさらに構成される、請求項10または11に記載のデータ処理ネットワーク。
【請求項１３】
前記要求ノードが、
前記応答が前記DBIDメッセージを含むときに、
前記要求ノードから前記相互接続機構を介して前記ホームノードに、前記書き込まれるデータを1つまたは複数のデータビートとして送信することと、
前記書き込まれるデータを送信することに続いて、前記要求ノードから前記相互接続機構を介して前記ホームノードに、前記完了確認応答メッセージを送信することと
を行うようにさらに構成される、請求項12に記載のデータ処理ネットワーク。
【請求項１４】
前記ホームノードがスヌープコントローラをさらに備え、前記ホームノードによって前記整合性アクションを実施することが、前記相互接続機構を介して前記データ処理ネットワークの他のノードと1つまたは複数のスヌープメッセージをやりとりすることを含む、請求項10から13のいずれか一項に記載のデータ処理ネットワーク。
【請求項１５】
前記要求ノードからの前記書き込み要求が、データストリーミングトランザクションの複数の書き込み要求のうちの1つである、請求項10から14のいずれか一項に記載のデータ処理ネットワーク。
【請求項１６】
前記要求ノードが、外部入力デバイスからストリーミングデータを受信するためのインターフェースをさらに備える、請求項15に記載のデータ処理ネットワーク。
【請求項１７】
前記相互接続機構がメッシュネットワークを備える、請求項10から16のいずれか一項に記載のデータ処理ネットワーク。
【請求項１８】
請求項10から17のいずれか一項に記載のデータ処理ネットワークを記述したハードウェア記述言語の命令を記憶した、非一時的コンピュータ可読媒体。
【請求項１９】
請求項10から17のいずれか一項に記載のデータ処理ネットワークのネットリスト記述を記憶した、非一時的コンピュータ可読媒体。
【国際調査報告】
2021522608.tif 000012
2021522608.tif 000013