(57)【要約】【課題】環状のバスであるリングバスを介して接続される複数の情報処理装置を有する情報処理システムにおいて、高速なメモリライトリクエストの完了保証を実現する。【解決手段】環状のバスであるリングバスを介して接続される複数の情報処理装置のある情報処理装置が、情報処理システム内のメモリに対するライトリクエストを発行した後、その完了確認用の確認リクエストを発行し、各情報処理装置が、前段の情報処理装置から受信したリクエストが、確認リクエストとは異なる他の情報処理装置へのリクエストである場合、次段の情報処理装置に送信し、他の情報処理装置への確認リクエストである場合、該確認リクエストと自身のメモリに対するリクエストとの調停をとって次段の情報処理装置に送信し、自身への確認リクエストである場合、確認リクエストに応じた処理を行って完了応答を返すことで高速なメモリライトリクエストの完了保証を実現する。【選択図】図１
2019016054.tif 000002
【特許請求の範囲】
【請求項１】
環状のバスであるリングバスを介して接続される複数の情報処理装置を有する情報処理システムにおいて、
前記情報処理装置は、
メモリと、
前記複数の情報処理装置が有するメモリに対するライトリクエストを発行し、前記ライトリクエストの発行後に該ライトリクエストの完了確認に用いる確認リクエストを発行する発行部と、
前記確認リクエストに応じた処理を行い、前記処理の完了応答を前記発行部に返す処理部と、
自身の前記発行部から受信した前記確認リクエストを次段の情報処理装置に送信し、前段の情報処理装置から受信したリクエストが、前記確認リクエストとは異なる他の情報処理装置へのリクエストである場合、次段の情報処理装置に送信し、他の情報処理装置への前記確認リクエストである場合、該確認リクエストと自身の前記メモリに対するリクエストとを受信した順序で出力するようにして次段の情報処理装置に送信し、自身への前記確認リクエストである場合、前記処理部に送信する制御部とを有することを特徴とする情報処理システム。
【請求項２】
前記制御部は、
前記確認リクエストと自身の前記メモリに対するリクエストとの調停をとって、受信した順序で出力する調停回路と、
前記調停回路から出力されたリクエストを受けて、該リクエストが前記確認リクエストである場合、次段の情報処理装置に転送する第１の転送回路と、
前段の情報処理装置からのリクエストを受信し、受信したリクエストが他の情報処理装置への前記確認リクエスト又は自身の前記メモリに対するリクエストである場合、前記調停回路に転送し、受信したリクエストが自身への前記確認リクエストである場合、前記処理部に転送する第２の転送回路とを有することを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記確認リクエストは、自身が有するレジスタへのアクセスリクエストであることを特徴とする請求項１又は２記載の情報処理システム。
【請求項４】
前記確認リクエストは、自身の前記メモリへのアクセスリクエストであることを特徴とする請求項１又は２記載の情報処理システム。
【請求項５】
前記メモリに対するライトリクエストは、完了応答なしのリクエストであることを特徴とする請求項１〜４の何れか１項に記載の情報処理システム。
【請求項６】
環状のバスであるリングバスを介して他の情報処理装置に接続される情報処理装置において、
メモリと、
各情報処理装置が有するメモリに対するライトリクエストを発行し、前記ライトリクエストの発行後に該ライトリクエストの完了確認に用いる確認リクエストを発行する発行部と、
前記確認リクエストに応じた処理を行い、前記処理の完了応答を前記発行部に返す処理部と、
前記発行部から受信した前記確認リクエストを前記リングバスを介して接続される次段の情報処理装置に送信し、前記リングバスを介して接続される前段の情報処理装置から受信したリクエストが、前記確認リクエストとは異なる他の情報処理装置へのリクエストである場合、前記リングバスを介して接続される次段の情報処理装置に送信し、他の情報処理装置への前記確認リクエストである場合、該確認リクエストと自身の前記メモリに対するリクエストとを受信した順序で出力するようにして前記リングバスを介して接続される次段の情報処理装置に送信し、自身への前記確認リクエストである場合、前記処理部に送信する制御部とを有することを特徴とする情報処理装置。
【請求項７】
環状のバスであるリングバスを介して接続される複数の情報処理装置を有する情報処理システムの制御方法において、
前記複数の情報処理装置の内の第１の情報処理装置の発行部が、前記複数の情報処理装置が有するメモリに対するライトリクエストを発行し、前記ライトリクエストの発行後に該ライトリクエストの完了確認に用いる確認リクエストを発行し、
前記第１の情報処理装置の制御部が、前記発行部からの前記確認リクエストを次段の情報処理装置に送信し、
前記第１の情報処理装置とは異なる前記複数の情報処理装置の各々の制御部が、前段の情報処理装置から受信したリクエストが、前記確認リクエストとは異なる他の情報処理装置へのリクエストである場合、次段の情報処理装置に送信し、他の情報処理装置への前記確認リクエストである場合、該確認リクエストと自身の前記メモリに対するリクエストとを受信した順序で出力するようにして次段の情報処理装置に送信し、
前記第１の情報処理装置の前記制御部が、前段の情報処理装置から受信した自身への前記確認リクエストを前記第１の情報処理装置の処理部に送信し、
前記第１の情報処理装置の前記処理部が、前記確認リクエストに応じた処理を行い、前記処理の完了応答を前記第１の情報処理装置の前記発行部に返すことを特徴とする情報処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、及び情報処理システムの制御方法に関する。
【背景技術】
【０００２】
複数の情報処理装置を有する情報処理システムでは、メモリに対するライトリクエスト（書き込み要求）の完了保証がない場合、図７に一例を示すように、当該ライトリクエストにより更新される前のデータへのアクセスが発生しうる。図７には、ＣＰＵ  Ａ７０１がＣＰＵ  Ｂ７０２の書いたメモリ７０４上のデータの読み出しを行う場合を示している。
【０００３】
まず、ＣＰＵ  Ｂ７０２が、メモリ７０４に対するライトリクエストをメモリコントローラ７０３に発行し（７１１）、自身のレジスタ（ＲＥＧ  Ｂ）に“メモリ更新済み”と書き込む。その後、ＣＰＵ  Ａ７０１が、ＣＰＵ  Ｂ７０２のレジスタ（ＲＥＧ  Ｂ）に対するリードリクエスト（読み出し要求）をＣＰＵ  Ｂ７０２に発行する（７１２）。そして、リードリクエストを受けたＣＰＵ  Ｂ７０２が、リードコンプリーションでレジスタ（ＲＥＧ  Ｂ）の内容“メモリ更新済み”をリードデータとしてＣＰＵ  Ａ７０１に返す（７１３）。
【０００４】
ＣＰＵ  Ｂ７０２から“メモリ更新済み”の応答を受けたＣＰＵ  Ａ７０１は、メモリ７０４上のデータが更新済みであると判断し、メモリ７０４に対するリードリクエストをメモリコントローラ７０３に発行する（７１４）。ここで、ＣＰＵ  Ａ７０１からのリードリクエスト（７１４）が、ＣＰＵ  Ｂ７０２からのライトリクエスト（７１１）より先にメモリコントローラ７０３に到着したとする。
【０００５】
この場合、メモリコントローラ７０３は、リードコンプリーションでリードデータをＣＰＵ  Ａ７０１に返す（７１５）が、ＣＰＵ  Ｂ７０２からのライトリクエストがメモリコントローラ７０３に届いていないのでメモリ７０４上のデータは更新されていない。つまり、リードコンプリーションではメモリ７０４上の更新前のデータがＣＰＵ  Ａ７０１に返されることとなり、ＣＰＵ  Ａ７０１は、ＣＰＵ  Ｂ７０２がメモリ７０４に書く更新後のデータを読むことができない。
【０００６】
このようにメモリに対するライトリクエストの完了保証がないと、更新される前のデータへのアクセスが発生し、データの整合性に問題が生じうる。メモリに対するライトリクエストの完了を保証するには、例えばメモリライト処理の完了を確認すればよい。図８に示す情報処理システムを例に、従来のメモリライト処理完了の確認方法について説明する。
【０００７】
図８には、複数のノードを環状に接続するリングバスを介して複数のノード（情報処理装置）８１０が接続された情報処理システムを示している。各ノード８１０は、ＣＰＵ（Central Processing Unit）８１１、メモリ８１２、メモリコントローラ８１３、及びクロスバ部（ＸＢ）８１４を有する。ＣＰＵ８１１は、演算処理を行ったりリクエストを発行したりする。メモリコントローラ８１３は、受信したリクエストに応じて、メモリ８１２に対しデータの書き込み（データライト）や読み出し（データリード）を行う。クロスバ部（ＸＢ）８１４は、リングバスを介して伝送されるリクエスト等のパケットの宛先判定を行い、パケットの伝送制御を行う。
【０００８】
図８に示した情報処理システムにおいて、各ノード８１０内のＣＰＵ８１１が、自ノードのメモリ８１２及び他ノードのＣＰＵ８１１、メモリ８１２へアクセスする際には、クロスバ部（ＸＢ）８１４を経由する。また、クロスバ部（ＸＢ）８１４同士がリング状に接続されており、あるノード８１０から発行されたリクエストは一方の方向のみに伝搬する。本例では、ノードＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ａ、・・・の方向に伝搬するものとする。したがって、例えばノードＡ８１０−ＡからノードＨ８１０−Ｈにリクエストを発行する場合、ノードＡ８１０−Ａから発行されたリクエストは、ノードＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈのすべてのクロスバ部（ＸＢ）８１４−Ａ〜８１４−Ｈを通過してノードＨ８１０−Ｈに到達する。また、発行元が同じリクエストは順序通り転送される。
【０００９】
例えば、ノードＡのＣＰＵ８１１−Ａが、ノードＢ〜Ｈのメモリ８１２−Ｂ〜８１２−Ｈに対するデータのライトリクエスト（書き込み要求）を発行し、メモリライト処理の完了を確認する場合の動作は、図９に示すようになる。まず、ステップＳ９０１にて、ノードＡのＣＰＵ８１１−Ａは、データを書き込むメモリに対するＮｏｎ−Ｐｏｓｔｅｄメモリライトリクエストを発行する。
【００１０】
このステップＳ９０１の処理は、ステップＳ９０２にて、ノードＡのＣＰＵ８１１−Ａが、データの書き込みを行うすべてのメモリに対して発行済みであると判断するまで繰り返される。この例では、ノードＢ〜Ｈのメモリ８１２−Ｂ〜８１２−Ｈに対する７つのＮｏｎ−Ｐｏｓｔｅｄメモリライトリクエスト８２１〜８２７を発行する。なお、Ｎｏｎ−Ｐｏｓｔｅｄメモリライトリクエストは、リクエストを受信したメモリコントローラ８１３がリクエストの発行元に対してライト完了応答を返すリクエストである。
【００１１】
次に、ステップＳ９０３にて、ノードＡのＣＰＵ８１１−Ａは、発行したＮｏｎ−Ｐｏｓｔｅｄメモリライトリクエストのライト完了応答の確認を行う。そして、ライト完了応答を待ち続けて、ステップＳ９０４にて、ノードＡのＣＰＵ８１１−Ａが、対象のすべてのメモリからのライト完了応答（この例では７つのライト完了応答８３１〜８３７）を確認したと判断すると、自身が発行したメモリライトリクエストのメモリライト処理が完了したと確認して終了する。
【００１２】
また、複数のモジュールがリングバスで接続されるシステムにおいて、あるリクエストがリングバスを１周するのに必要な最大時間を利用してリクエストの順序を保証する技術が提案されている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２０１１−１２８９８９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
前述したメモリライト処理完了の確認方法では、メモリライトリクエストの発行元がメモリライト処理完了を確認するには、すべての発行先からのライト完了応答を待つ必要がある。ノード数が増えるほどライト完了応答の数が増え、それらが同一の宛先（リクエストの発行元）に返ってくるので、発行元への伝送経路を占めることになる。つまり、システムが大きくなるほどメモリライト処理完了の確認に要する時間が増大し、他のリクエスト等の伝送を阻害することになる。１つの側面では、本発明の目的は、環状のバスであるリングバスを介して接続される複数の情報処理装置を有する情報処理システムにおいて、高速なメモリライトリクエストの完了保証を実現することにある。
【課題を解決するための手段】
【００１５】
情報処理システムの一態様は、環状のバスであるリングバスを介して接続される複数の情報処理装置を有し、情報処理装置は、メモリと、複数の情報処理装置が有するメモリに対するライトリクエストを発行し、ライトリクエストの発行後に該ライトリクエストの完了確認に用いる確認リクエストを発行する発行部と、確認リクエストに応じた処理を行い、処理の完了応答を発行部に返す処理部と、自身の発行部から受信した確認リクエストを次段の情報処理装置に送信する制御部とを有する。制御部は、さらに前段の情報処理装置から受信したリクエストが、確認リクエストとは異なる他の情報処理装置へのリクエストである場合、次段の情報処理装置に送信し、他の情報処理装置への確認リクエストである場合、該確認リクエストと自身のメモリに対するリクエストとを受信した順序で出力するようにして次段の情報処理装置に送信し、自身への確認リクエストである場合、処理部に送信する。
【発明の効果】
【００１６】
発明の一態様においては、環状のバスであるリングバスを介して接続される複数の情報処理装置を有する情報処理システムにおいて、メモリライトリクエストの完了保証を高速に行うことが可能となる。
【図面の簡単な説明】
【００１７】
【図１】図１は、本実施形態における情報処理システムの構成例を示す図である。
【図２】図２は、本実施形態におけるクロスバ部の構成例を示す図である。
【図３】図３（Ａ）〜図３（Ｄ）は、本実施形態におけるパケットの例を示す図である。
【図４】図４は、本実施形態におけるメモリライト処理完了の確認方法を説明する図である。
【図５】図５は、本実施形態におけるメモリライト動作の例を示すフローチャートである。
【図６】図６は、本実施形態における情報処理システムの動作例を示すフローチャートである。
【図７】図７は、メモリに対するライトリクエストの完了保証がない場合の処理例を示す図である。
【図８】図８は、リングバスを適用した情報処理システムの例を示す図である。
【図９】図９は、図８に示した情報処理システムでのメモリライト動作の例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態を図面に基づいて説明する。
【００１９】
図１は、本発明の一実施形態における情報処理システムの構成例を示すブロック図である。本実施形態における情報処理システムは、複数のノードを環状に接続するリングバスを介して接続される複数の情報処理装置としてのノード１０を有する。なお、図１には、８つのノード１０−Ａ〜１０−Ｈがリングバスを介して接続される構成を示しているが、これに限定されるものではなく、リングバスを介して接続されるノードの数は任意の複数である。
【００２０】
各ノード１０は、ＣＰＵ（Central Processing Unit）１１、メモリ１２、メモリコントローラ１３、及びクロスバ部（ＸＢ）１４を有する。なお、図１においては、説明の便宜上、各ノード１０が有する機能部として、ＣＰＵ１１、メモリ１２、メモリコントローラ１３、及びクロスバ部（ＸＢ）１４を示したが、他の機能部を有していてもよい。
【００２１】
ＣＰＵ１１は、演算処理を行ったりリクエストを発行したりする。また、ＣＰＵ１１は、自身が発行したメモリライトアクセスに応じたメモリライト処理完了の確認に使用する確認用レジスタ１５を有する。メモリコントローラ１３は、受信したリクエストに応じて、メモリ１２に対しデータの書き込み（データライト）や読み出し（データリード）を行う。クロスバ部（ＸＢ）１４は、リングバスを介して伝送されるリクエスト等のパケットの宛先判定を行い、パケットの伝送制御を行う。
【００２２】
本実施形態における情報処理システムにおいて、各ノード１０内のＣＰＵ１１が、自ノードのメモリ１２及び他ノードのＣＰＵ１１、メモリ１２へアクセスする際には、クロスバ部（ＸＢ）１４を経由する。また、クロスバ部（ＸＢ）１４同士がリング状に接続されており、あるノード１０から発行されたリクエストは単方向（一方の方向のみ）に伝搬する。本実施形態では、ノードＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ａ、・・・の方向に伝搬するものとするが、逆であってもよい。また、発行元が同じリクエストは順序通り転送され、システム内部ではリクエストの追い越しは発生しない。
【００２３】
本実施形態におけるＣＰＵ１１は、自ノードのメモリ１２及び他ノードのＣＰＵ１１、メモリ１２に対するリクエストに加え、自ノードの確認用レジスタ１５に対するリクエストが発行可能である。確認用レジスタ１５に対するリクエストは、自身が発行した先行のメモリに対するリクエストを追い抜かずにリングバスを１周して自ノードに返ってくる。ＣＰＵ１１は、１つ又は複数のメモリライトアクセスを発行した後、確認用レジスタ１５に対するリクエストを１つ発行し、リングバスを１周した確認用レジスタ１５に対するリクエストに応じた確認用レジスタ１５へのアクセスの完了応答により、自身が発行したメモリライトリクエストのメモリライト処理完了を確認する。
【００２４】
図２は、本実施形態におけるクロスバ部（ＸＢ）１４の構成例を示す図である。クロスバ部（ＸＢ）１４は、４つの転送部１０１、１０２、１０３、１０４、及び４つの調停部１１１、１１２、１１３、１１４を有する。転送部１０１〜１０４は、リクエスト等のパケット内の宛先（発行先）情報に基づいてパケットを転送する。なお、転送部１０１〜１０４は、１つのパケットを１つの転送先に転送し、複数の転送先に転送することはない。調停部１１１〜１１４は、パケット同士の調停を取って、決められた配送先にパケットを配送する。調停部１１１〜１１４は、自身のバッファ（キュー）に格納された順序に従ってパケットを出力する。
【００２５】
第１の転送部１０１は、自ノードのＣＰＵ１１からのパケットを自ノードのメモリコントローラ１３又は次段の（１つ後の）他ノードに転送するための回路である。第１の転送部１０１は、パケットの宛先が自ノードのメモリコントローラ１３又は自ノードの確認用レジスタ１５である場合、パケットを第２の調停部１１２へ転送し、パケットの宛先が他ノードである場合、パケットを第３の調停部１１３へ転送する。
【００２６】
第２の転送部１０２は、前段の（１つ前の）他ノードからのパケットを自ノードのＣＰＵ１１、自ノードのメモリコントローラ１３、及び次段の他ノードのいずれかに転送するための回路である。第２の転送部１０２は、パケットの宛先が自ノードのＣＰＵ１１又は自ノードの確認用レジスタ１５である場合、パケットを第１の調停部１１１へ転送し、パケットの宛先が自ノードのメモリコントローラ１３又は他ノードの確認用レジスタ１５である場合、パケットを第２の調停部１１２へ転送し、パケットの宛先が他ノードである場合、パケットを第３の調停部１１３へ転送する。
【００２７】
第３の転送部１０３は、自ノードのメモリコントローラ１３からのパケットを自ノードのＣＰＵ１１又は次段の他ノードに転送するための回路である。第３の転送部１０３は、パケットの宛先が自ノードのＣＰＵ１１である場合、パケットを第１の調停部１１１へ転送し、パケットの宛先が他ノードである場合、パケットを第３の調停部１１３へ転送する。
【００２８】
第４の転送部１０４は、第２の調停部１１２からのパケットを自ノードのメモリコントローラ１３又は次段の他ノードに転送するための回路である。第４の転送部１０４は、パケットの宛先が自ノードのメモリコントローラ１３である場合、パケットを自ノードのメモリコントローラ１３へ転送し、パケットの宛先が自ノードの確認用レジスタ１５又は他ノードである場合、パケットを第４の調停部１１４へ転送する。
【００２９】
第１の調停部１１１は、自身のバッファ（キュー）に格納された自ノードのメモリコントローラ１３からのパケットと前段の他ノードからのパケットとの調停を取って自ノードのＣＰＵ１１へ配送する。第２の調停部１１２は、自身のバッファ（キュー）に格納された自ノードのＣＰＵ１１からのパケットと前段の他ノードからのパケットとの調停を取って第４の転送部１０４へ配送する。
【００３０】
第３の調停部１１３は、自身のバッファ（キュー）に格納された自ノードのＣＰＵ１１からのパケットと自ノードのメモリコントローラ１３からのパケットと前段の他ノードからのパケットとの調停を取って第４の調停部１１４へ配送する。第４の調停部１１４は、自身のバッファ（キュー）に格納された第４の転送部１１４からのパケットと第３の調停部１１３からのパケットとの調停を取って次段の他ノードに配送する。
【００３１】
図３は、本実施形態において伝送されるパケットの例を示す図である。図３（Ａ）に示すデータが１サイクル目に伝送され、図３（Ｂ）に示すデータが２サイクル目に伝送される。また、図３（Ｃ）に示すデータが１サイクル目に伝送され、図３（Ｄ）に示すデータが２サイクル目に伝送される。
【００３２】
タグ（ＴＡＧ）フィールドには、パケット種を示す情報が格納される。タグフィールドの情報により、ライトパケットのヘッダであるのかリードパケットのヘッダであるのかや、何サイクル目の情報であるかを判断することが可能である。ノードＩＤ（Ｎｏｄｅ−ＩＤ）フィールドには、パケットの宛先のノードを示す情報が格納される。モジュールＩＤ（Ｍｏｄｕｌｅ−ＩＤ）フィールドには、パケットの宛先がノード内のＣＰＵであるのかメモリコントローラであるのかクロスバ部であるのかを示す情報が格納され、サブＩＤ（Ｓｕｂ−ＩＤ）フィールドには、パケットの宛先が確認用レジスタであるか否かを示す情報が格納される。
【００３３】
クロスバ部（ＸＢ）１４の転送部１０１〜１０４は、例えばタグフィールドの情報により１サイクル目のライトパケットであることを判断し、ノードＩＤフィールド、モジュールＩＤフィールド、及びサブＩＤフィールドの情報からパケットの宛先を判定してパケットを転送する。なお、データ長フィールドにはデータ長を示す情報が格納される。また、アドレスフィールドには、アクセス先のアドレスを示す情報が格納され、データフィールドにはアクセスに係るデータが格納される。
【００３４】
次に、本実施形態における情報処理システムの動作について説明する。以下では、図４に示すように、ノードＡのＣＰＵ１１−Ａが、ノードＢ〜Ｈのメモリ１２−Ｂ〜１２−Ｈに対するデータのライトリクエスト（書き込み要求）を発行し、メモリライト処理の完了を確認する場合の動作を例に説明する。図５は、本実施形態における情報処理システムでのメモリライト動作の例を示すフローチャートである。
【００３５】
まず、ステップＳ５０１にて、ノードＡのＣＰＵ１１−Ａは、データを書き込むメモリに対するＰｏｓｔｅｄメモリライトリクエストを発行する。ステップＳ５０１の処理は、ステップＳ５０２にて、ノードＡのＣＰＵ１１−Ａが、データの書き込みを行う対象のすべてのメモリに対してリクエストを発行済みであると判断するまで繰り返される。
【００３６】
この例では、ノードＢ〜Ｈのメモリ１２−Ｂ〜１２−Ｈに対する７つのＰｏｓｔｅｄメモリライトリクエスト（図４に示す４０１〜４０７）を発行する。なお、Ｐｏｓｔｅｄメモリライトリクエストは、リクエストを受信したメモリコントローラ１３からリクエストの発行元に対してライト完了応答を返さないリクエストである。
【００３７】
対象のすべてのメモリに対してメモリライトリクエストを発行した後、ステップＳ５０３にて、ノードＡのＣＰＵ１１−Ａは、自身の確認用レジスタ１５に対するＮｏｎ−Ｐｏｓｔｅｄレジスタライトリクエストを発行する。このレジスタライトリクエストは、自ノードＡ内のレジスタへのアクセスを要求するものであるが、自ノードＡ外に発行される。
【００３８】
そして、ノードＡ１１−Ａから発行された確認用レジスタ１５に対するレジスタライトリクエストは、ノードＢ〜Ｈの各ノードのクロスバ部（ＸＢ）１４において、メモリコントローラ１３宛てのパケット（リクエスト）の調停を行う第２の調停部１１２を経由してリングバスを１周し、ノード１１−Ａへ返ってくる。リングバスを１周してノード１１−Ａへ返ってきたレジスタライトリクエストに応じて確認用レジスタ１５に対するライトアクセスが実行され、ステップＳ５０４にて、ノードＡのＣＰＵ１１−Ａが、確認用レジスタ１５からのライト完了応答を確認すると動作を終了する。
【００３９】
ここで、本実施形態では、発行元が同じリクエストは順序通り転送され、システム内部ではリクエストの追い越しは発生しないので、確認用レジスタ１５に対するレジスタライトリクエストがリングバスを１周まわって元のノード（この例ではノードＡ）に到達したときには、それより前に発行したメモリライトリクエストはすべて完了していることとなる。したがって、確認用レジスタ１５に対するＮｏｎ−Ｐｏｓｔｅｄレジスタライトリクエストのライト完了応答を確認することで、自身が発行したメモリライトリクエストのメモリライト処理完了を確認することができ、メモリライトリクエストの完了保証を高速に行うことが可能になる。また、少ないトラフィック数で高速なメモリライトリクエストの完了保証を実現できることで、伝送経路のトラフィックを削減することができ、情報処理システムの性能を向上させることができる。
【００４０】
図６を参照して、本実施形態における情報処理システムでのクロスバ部（ＸＢ）１４等の動作について説明する。ステップＳ６０１にて、あるノードのＣＰＵ１１がリクエストを生成する。このとき、そのＣＰＵ１１は、ステップＳ６０２にて、生成するリクエストが自身が過去に発行したメモリライトアクセスの完了確認用のリクエストであるか否かを判断する。
【００４１】
判断の結果、生成するリクエストがメモリライトアクセスの完了確認用のリクエストであれば、ステップＳ６０３にて、ＣＰＵ１１は、自ＣＰＵ１１内の確認用レジスタ１５を宛先に設定したＮｏｎ−Ｐｏｓｔｅｄレジスタライトリクエストを生成して自ノードのクロスバ部（ＸＢ）１４へ発行する。また、生成するリクエストがメモリライトアクセスの完了確認用のリクエストでなければ、ステップＳ６０４にて、ＣＰＵ１１は、リクエストの発行先を宛先にしたリクエストを生成して自ノードのクロスバ部（ＸＢ）１４へ発行する。
【００４２】
次に、ステップＳ６０５にて、自ノードのクロスバ部（ＸＢ）１４内の第１の転送部１０１は、自ノードのＣＰＵ１１から発行されたパケット（リクエスト）の宛先を判別する。このとき、クロスバ部（ＸＢ）１４内の第１の転送部１０１は、ステップＳ６０６にて、パケットの宛先が自ノードの確認用レジスタ１５であるか否かを判別する。
【００４３】
ステップ６０６での判別の結果、パケットの宛先が自ノードの確認用レジスタ１５でないと判別した場合には、ステップＳ６０７にて、指定された宛先へパケットが配送されるように各ノードのクロスバ部（ＸＢ）１４を制御して指定された宛先へパケットを配送する。一方、パケットの宛先が自ノードの確認用レジスタ１５であると判別した場合には、ステップＳ６０８にて、クロスバ部（ＸＢ）１４内の第１の転送部１０１は、第２の調停部１１２へパケットを転送する。
【００４４】
続いて、ステップＳ６０９にて、クロスバ部（ＸＢ）１４内の第２の調停部１１２は、ステップＳ６０８において転送されたパケットが第４の転送部１０４へ配送可能であるか否かを判断する。その結果、第４の転送部１０４へ配送可能と判断されるまで、ステップＳ６０９の処理を継続し、第４の転送部１０４へ配送可能と判断されるとパケットを第４の転送部１０４へ配送する。
【００４５】
次に、ステップＳ６１０にて、第４の転送部１０４がパケット（リクエスト）の宛先が確認用レジスタ１５であると判別すると、ステップＳ６１１にて、第４の転送部１０４は、そのパケットを第４の調停部１１４へ転送する。続いて、ステップＳ６１２にて、第４の調停部１１４は、パケットの調整を行って、次段の（１つ後の）ノードのクロスバ部（ＸＢ）１４へ配送する。
【００４６】
前段の（１つ前の）他ノードからパケット（リクエスト）を受信した第２の転送部１０２は、ステップＳ６１３にて、リクエストの宛先が自ノードであるか否かを判別する。その結果、宛先が自ノードでない場合（Ｓ６１４のＮＯ）にはステップＳ６０６へ戻り、前述した処理を繰り返す。
【００４７】
一方、ステップＳ６１４での判別の結果、リクエストの宛先が自ノードである場合、すなわちリングバスを１周して戻ってきた場合、ステップＳ６１５へ進み、第２の転送部１０２は、自ノードの第１の調停部１１１へパケットを転送する。そのノードでは、ステップＳ６１６にて、第１の調停部１１１がパケットの調停を取って、自ノードのＣＰＵ１１へリクエストを配送する。そして、自ノードのＣＰＵ１１において確認用レジスタ１５へのライトアクセスの完了応答が返り、自ノードのＣＰＵ１１は、メモリライトアクセス処理の完了を確認することができる。
【００４８】
なお、前述した例では、ＣＰＵ１１が有する確認用レジスタ１５に対するレジスタライトリクエストの完了応答により、先行して発行したメモリアクセスの処理完了を確認するようにしている。しかし、これに限定されるものではなく、例えば、確認用レジスタ１５からの完了応答があれば良いので、確認用レジスタ１５に対するＮｏｎ−Ｐｏｓｔｅｄレジスタリードアクセスを発行し、その完了応答によりメモリアクセスの処理完了を確認するようにすることも可能である。また、確認用レジスタ１５に対するアクセスの完了ではなく、データ書き込みを行うメモリライトリクエストの後に、完了応答の通知を確認するためのメモリアクセスのリクエストを発行しても同様の効果を得ることができる。
【００４９】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００５０】
１０  ノード（情報処理装置）
１１  ＣＰＵ
１２  メモリ
１３  メモリコントローラ
１４  クロスバ部
１５  確認用レジスタ
１０１〜１０４  転送部
１１１〜１１４  調停部
【図１】
2019016054.tif 000003
【図２】
2019016054.tif 000004
【図３】
2019016054.tif 000005
【図４】
2019016054.tif 000006
【図５】
2019016054.tif 000007
【図６】
2019016054.tif 000008
【図７】
2019016054.tif 000009
【図８】
2019016054.tif 000010
【図９】
2019016054.tif 000011