(57)【要約】【課題】データ転送処理を効率よく行う並列計算機システムを提供する。【解決手段】リクエスト送信部１１１は、出力ポート６２に調停リクエストを送信する。データ送信部１１３は、アイドル状態のマスターポートに対して調停リクエストを送信した場合、マスターポートに対してデータを送信し、それ以外の場合、送信許可を返信した出力ポート６２に対してデータを送信する。サイクル数通知部１１４は、待機時間を各出力ポートに通知する。調停回路１６１は、アイドル状態でマスタノードから調停リクエストを受信すると対のノードを選択し、それ以外の場合、前記調停リクエストを受信したノードから一つを選択し送信許可を返信する。データ転送部１６２は、選択されたノードからデータを受信し、他のノードに対して受信したデータを転送する。タイミング調整部１６５は、待機時間が経過した後に調停回路１６１に対してノードの選択を許可する。【選択図】図２
2014035696.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードと複数のポートを有するクロスバスイッチとを有する並列計算機システムであって、
前記ノードは、
前記ポートにデータ送信要求である調停リクエストを送信するリクエスト送信部と、
所定の状態にある予め決められた対のポートに対して前記リクエスト送信部が調停リクエストを送信した場合、前記対のポートに対してデータを送信し、それ以外の場合、前記調停リクエストに対する送信許可を返信した前記ポートに対してデータを送信するデータ送信部と、
前記データに基づく待機時間を前記ポートに通知する待機時間通知部とを備え、
前記クロスバスイッチの各前記ポートは、
前記所定の状態で前記対のノードから調停リクエストを受信すると前記対のノードを選択し、それ以外の場合、前記ノードから前記調停リクエストを受け付け、前記調停リクエストを受け付けたノードから一つを選択し、選択したノードに対して送信許可を返信する調停部と、
前記調停部により選択されたノードからデータを受信し、他のノードに対して受信したデータを転送するデータ転送部と、
前記待機時間を前記ノードから受信し、受信した待機時間が経過した後に前記調停部に対してノードの選択を許可するタイミング調整部とを備えた
ことを特徴とする並列計算機システム。
【請求項２】
前記待機時間通知部は、前記データの送信が完了するまでの時間を前記待機時間として求めることを特徴とする請求項１に記載の並列計算機システム。
【請求項３】
前記待機時間通知部は、前記データを送信しているポート以外のポートに前記待機時間を通知することを特徴とする請求項１又は請求項２に記載の並列計算機システム。
【請求項４】
前記タイミング調整部は、前記ノードのうち複数から前記待機時間を受信した場合、受信した待機時間のうち最短の待機時間が経過した後に前記調停部に対して前記調停リクエストの受付を許可することを特徴とする請求項１〜３のいずれか一つに記載の並列計算機システム。
【請求項５】
前記所定の状態とは、前記データ転送部がデータの転送を行っていないか又は前記調停部が前記調停リクエストを受信していない状態であることを特徴とする請求項１〜４のいずれか一つに記載の並列計算機システム。
【請求項６】
複数のポートを有するクロスバスイッチであって、
前記ポートは
所定の状態で予め決められた対のノードから調停リクエストを受信すると前記対のノードを選択し、それ以外の場合、各ノードからデータ送信要求である調停リクエストを受け付け、前記調停リクエストを受け付けたノードから一つを選択し、選択したノードに対して送信許可を返信する調停部と、
前記調停部により選択されたノードからデータを受信し、他のノードに対して受信したデータを転送するデータ転送部と、
データを他のポートに送信しているノードから、当該送信しているデータに基づく待機時間を受信し、受信した待機時間が経過した後に前記調停部に対してノードの選択を許可するタイミング調整部とを備えた
ことを特徴とするクロスバスイッチ。
【請求項７】
複数のノードと複数のポートを有するクロスバスイッチとを有する並列計算機システムの制御方法であって、
前記ノードのうちデータの送信を行っているノードに、前記データに基づく待機時間を前記ポートに通知させ、
前記ノードに、前記ポートにデータ送信要求である調停リクエストを送信させ、
前記ポートに、前記ノードから前記調停リクエストを受信させ、
前記ポートが前記待機時間を受信していない場合、所定の状態で予め決められた対のノードから調停リクエストを受信すると、前記対のノードを選択させ、それ以外では、前記調停リクエストを受け付けたノードから一つを選択させ、選択したノードに対して送信許可を返信させ、
前記ポートが前記待機時間を受信している場合、前記待機時間が経過した後に、前記調停リクエストを送信してきた前記ノードの中から１つのノードを選択させ、選択したノードに対して送信許可を返信させ、
前記ノードが前記所定の状態の前記対となるポートに調停リクエストを送信した場合、前記ノードに前記対となるポートに対してデータを送信させ、
前記所定の状態の前記対となるポートに調停リクエストを送信する以外の場合、前記ノードに、前記調停リクエストに対する送信許可を返信した前記ポートに対してデータを送信させ、
前記ポートに、選択したノードからデータを受信させ、他のノードに対して受信したデータを転送させる
ことを特徴とする並列計算機システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算機システム、クロスバスイッチ及び並列計算機システムの制御方法に関する。
【背景技術】
【０００２】
並列計算機などでは、ＣＰＵ（Central  Processing  Unit）などのノードを複数接続してシステム全体の性能向上を図ることが行われている。このような複数ノードを有する並列計算機で用いられるネットワークには、複数のノードをスイッチで繋いで構成されるものがある。このスイッチには、クロスバスイッチなどが用いられる場合がある。
【０００３】
クロスバスイッチには、ポートにバッファを有するものと、物量の制限などからポートにバッファを有さないものがある。ポートにバッファを有さないクロスバスイッチを用いた場合、クロスバスイッチのポートとそのポートへデータを供給するノードなどの送信元との間でデータを同期させるなどのハンドシェイクが行われる。ハンドシェイクの方式の一例として、送信元からクロスバスイッチに対して調停リクエストを送信し、それを受信したクロスバスイッチが送信許可を送信元へ応答するという手順を経た後に、送信元がクロスバスイッチに対してデータパケットを送信する方式がある。また、複数のノードがポートに対して順番に一定期間データ送信を許可する方式がある。
【０００４】
調停リクエストを用いる場合、クロスバスイッチは、複数のノードからデータの調停リクエストを受信すると、どのノードからの調停リクエストを受け付けるかを決定する調停処理を行う。選択されたノードは、選択を行ったポートとの間の送信許可を得て、送信許可を受けたポートにデータパケットを送信する。このような調停処理において、あるポートから選択されたノードが他のポートへ出力している調停リクエストを１度削除する方法と、あるポートから選択されたノードが他のポートへ出力した調停リクエストを出し続ける方法とが考えられる。
【０００５】
また、ポート毎に調停までの待ち時間を作成し、調停装置が待ち時間の待機後に調停を行い、クロスバスイッチのデッドサイクルの発生を抑える従来技術が提供されている（例えば、特許文献１参照）。その他にも、データ転送許可信号を発信後にデータの長さをカウンタにセットして定期的にカウンタをデクリメントしカウンタが０になった場合に次の調停処理を行う従来技術などがある（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−７３４０３号公報
【特許文献２】特開２００１−２２７１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の方式では、調停リクエストを出し続ける方法を用いた場合、あるノード（以下では、「特定ノード」という。）が一つのポートから選択されたときに、他のポートも調停を行いその特定ノードを選択してしまうことが考えられる。その場合、特定ノードは、選択を受けた各ポートから送信許可を受けるが、データパケットを送信するのは最初に送信許可を受けたポートに対してである。データパケットの送信は１度に１つのポートに対してしか行えないため、特定ノードは、他の送信を許可したポートに対してデータパケットを送信することはできない。この間、他のポートは既に送信許可を特定ノードに対して発行しているため、他のノードに対して送信許可を発行することができない。そのため、他のポートは、送信可能なノードが他にあるにも関わらず、特定ノードのデータパケットの送信が終わるまで待機する。
【０００８】
特に、通信頻度の高い出力ポートと低い出力ポートとの優劣にあわせて処理を高速に行うために、ノードと出力ポートとで通信頻度が高い組合せをグループとして優先順位を高めることが考えられる。この場合、あるノードに対してグループとされている出力ポートは優先して選択される。そこで、グループのノードが対の出力ポートにデータを送っている場合、他の出力ポートがそのノードに送信許可を出して待機しているにもかかわらず、対の出力ポートが何度も選ばれることが考えられる。この場合、対の出力ポートへのデータ送信全てが完了するまで、他の出力ポートが待機することが考えられる。その結果、データ転送処理が遅滞するおそれがある。
【０００９】
これは、ポート毎に調停までの待ち時間を作成する従来技術でも、通信頻度が高い組合せをグループとした場合を考慮してはおらず、グループとなっているノードと入出力ポートがバスを専有してしまうことを回避することは困難である。また、データの長さをカウンタにセットして、そのカウンタに基づいて調停を行う従来技術でも、通信頻度が高い組合せをグループとした場合を考慮してはおらず、グループとなっているノードと入出力ポートがバスを専有してしまうことを回避することは困難である。
【００１０】
開示の技術は、上記に鑑みてなされたものであって、データ転送処理を効率よく行う並列計算機システム、クロスバスイッチ及び並列計算機システムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本願の開示する並列計算機システム、クロスバスイッチ及び並列計算機の制御方法は、一つの態様において、複数のノードと複数のポートを有するクロスバスイッチとを有する。前記ノードは、前記ポートにデータ送信要求である調停リクエストを送信するリクエスト送信部と、所定の状態にある予め決められた対のポートに対して前記リクエスト送信部が調停リクエストを送信した場合、前記所定ポートに対してデータを送信し、それ以外の場合、前記調停リクエストに対する送信許可を返信した前記ポートに対してデータを送信するデータ送信部と、前記データに基づく待機時間を前記ポートに通知する待機時間通知部とを備える。前記クロスバスイッチの各前記ポートは、前記所定の状態で前記対のノードから調停リクエストを受信すると前記対のノードを選択し、それ以外の場合、前記ノードから前記調停リクエストを受け付け、前記調停リクエストを受け付けたノードから一つを選択して選択したノードに対して送信許可を返信する調停部と、前記調停部により選択されたノードからデータを受信し、他のノードに対して受信したデータを転送するデータ転送部と、前記待機時間を前記ノードから受信し、受信した待機時間が経過した後に前記調停部に対してノードの選択を許可するタイミング調整部とを備える。
【発明の効果】
【００１２】
本願の開示する並列計算機システム、クロスバスイッチ及び並列計算機システムの制御方法の一つの態様によれば、データ転送処理を効率よく行うことができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例に係る並列計算機の構成図である。
【図２】図２は、実施例に係る並列計算機の詳細を表すブロック図である。
【図３】図３は、調停リクエストが送信された段階の状態を表す図である。
【図４】図４は、通信許可通知が送信された段階の状態を表す図である。
【図５】図５は、データ及びサイクル数が送信された段階の状態を表す図である。
【図６】図６は、再度調停が行われ調停リクエストが送信された段階の状態を表す図である。
【図７】図７は、再度の調停後にデータ及びサイクル数が送信された段階の状態を表す図である。
【図８】図８は、実施例に係る並列計算機によるデータ送信処理のタイミングチャートである。
【図９】図９は、従来の並列計算機によるデータ送信処理のタイミングチャートである。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する並列計算機システム、クロスバスイッチ及び並列計算機システムの制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する並列計算機システム、クロスバスイッチ及び並列計算機システムの制御方法が限定されるものではない。
【実施例】
【００１５】
図１は、実施例に係る並列計算機の構成図である。図１に示すように、本実施例に係る並列計算機は、ＣＰＵ１〜４及びそれらのＣＰＵを接続するクロスバスイッチ５を有する。ここで、本実施例では、４つのＣＰＵを用いて説明するが、並列計算機に設けられるＣＰＵの数はこれに限らず、４つ未満でも５つ以上でもよい。また、本実施例では、クロスバスイッチ５は、ＣＰＵの数にあわせて４つの入力ポート及び出力ポートを有しているが、ポート数はこれに限らない。また、クロスバスイッチ５のポート数はＣＰＵの数と異なってもよい。
【００１６】
ＣＰＵ１は、他のＣＰＵとの間での通信を制御するルータ部１０を有している。ルータ部１０は、送信部１１及び受信部１２を有している。送信部１１は、クロスバスイッチ５に対する通信の要求である調停リクエスト及び他のＣＰＵへのデータの送信を行う。受信部１２は、クロスバスイッチ５からの通信許可通知及び他のＣＰＵから送られてきたデータを受信する。
【００１７】
ＣＰＵ２〜４は、ＣＰＵ１と同様の構成を有するので説明を省略する。
【００１８】
クロスバスイッチ５は、入力ポート５１〜５４及び出力ポート６１〜６４を有している。入力ポート５１と出力ポート６１とは一対のポートである。同様に、入力ポート５２〜５４も、それぞれ出力ポート６２〜６４と対になっている。
【００１９】
入力ポート５１は、対になっている出力ポート６１以外の出力ポート６２〜６４のいずれとも接続することができる。さらに、入力ポート５１は、ＣＰＵ１の送信部１１に接続されている。入力ポート５１は、ＣＰＵ１の送信部１１から送出されたデータや調停リクエストの入力を受ける。そして、入力ポート５１は、出力ポート６２〜６４のうちの、調停リクエストで通信を要求する通信先のＣＰＵが接続されている出力ポートにデータを転送する。また、入力ポート５１は、調停リクエストに対する出力ポートからの応答である通信許可通知を受信し、送信部１１へ出力する。さらに、入力ポート５１は、出力ポート６２〜６４のうちの、送信部１１から送出されたデータの宛先のＣＰＵが接続されている出力ポートに対して、送信部１１から受信したデータを転送する。
【００２０】
入力ポート５２〜５４も、入力ポート５１と同様の機能を有し、同様の動作を行うので説明を省略する。入力ポート５１〜５４については、後でさらに詳しく説明する。
【００２１】
出力ポート６１は、対になっている入力ポート５１以外の入力ポート５２〜５４のいずれとも接続することができる。さらに、出力ポート６１は、ＣＰＵ１の受信部１２に接続されている。出力ポート６１は、ＣＰＵ２〜４からの調停リクエストを受信し、データの送信をいずれのＣＰＵに許可するかを決定する調停を行う。そして、出力ポート６１は、調停により決定したＣＰＵが接続している入力ポートに対して通信許可通知を出力する。また、出力ポート６１は、ＣＰＵ２〜４から送られてきたデータをＣＰＵ１の受信部１２へ出力する。
【００２２】
出力ポート６２〜６４も、出力ポート６１と同様の機能を有し、同様の動作を行うので説明を省略する。出力ポート６１〜６４については、後でさらに詳しく説明する。
【００２３】
出力ポート６１がデータ転送を行っていない場合又は調停リクエストを受信していない場合をアイドル状態という。出力ポート６１は、アイドル状態でＣＰＵ１からの調停リクエストを受信すると、調停を行わずに直ぐにＣＰＵ１からのデータ転送を行うように設定されている。このように、出力ポート６１とＣＰＵ１とは、優先的にデータの転送を行う１対のグループとして設定されている。このグループにおけるＣＰＵに対する出力ポートを以下では、「マスターポート」と呼ぶ。すなわち、出力ポート６２は、ＣＰＵ１のマスターポートに設定されている。また、出力ポート６３は、ＣＰＵ２のマスターポートに設定されている。また、出力ポート６４は、ＣＰＵ３のマスターポートに設定されている。出力ポート６１は、ＣＰＵ４のマスターポートに設定されている。
【００２４】
また、ＣＰＵ１〜４が、ＣＰＵ１〜４のうちの他のＣＰＵへデータを送信する場合、データはサイズが大きいため、データを送信する経路は１つのみ確保できる。すなわち、ＣＰＵ１〜４は、１度のデータ送信において、いずれか１つのＣＰＵに対してデータを送信することになる。これに対して、調停リクエストなどはサイズが小さいため、ＣＰＵ１〜４は、１度の送信において複数の経路を確保できる。すなわち、ＣＰＵ１〜４は、複数のＣＰＵに対して同時に調停リクエストを送ることができる。
【００２５】
さらに、図２を参照して、本実施例に係る並列計算機についてさらに詳しく説明する。図２は、実施例に係る並列計算機の詳細を表すブロック図である。ここでは、ＣＰＵ１がＣＰＵ２及び３に対するデータの送信要求を行い、ＣＰＵ２及び４がＣＰＵ３に対するデータの送信要求を行う場合を例に説明する。図２では、説明に使用する送信部、入力ポート及び出力ポートを記載し、他の部分については記載を省略している。
【００２６】
送信部１１は、リクエスト送信部１１１、調停回路１１２及びデータ送信部１１３を有している。また、送信部２１は、リクエスト送信部１２１、調停回路１２２及びデータ送信部１２３を有している。また、送信部４１は、リクエスト送信部１４１、調停回路１４２及びデータ送信部１４３を有している。ここで、送信部３１は図には図示していないが、送信部３１も同様の機能を有している。
【００２７】
リクエスト送信部１１１は、ＣＰＵ１が他のＣＰＵ２〜４のいずれかへデータを送信する場合、調停リクエストを入力ポート５１へ送出する。リクエスト送信部１１１からの調停リクエストは同時に複数のＣＰＵに対して送信されてもよい。また、調停リクエストには、データの送信先であるＣＰＵの情報が付加されている。
【００２８】
ここでは、リクエスト送信部１１１は、ＣＰＵ２に対するデータ送信の調停リクエストを入力ポート５１へ出力する。また、リクエスト送信部１１１は、ＣＰＵ３に対するデータ送信の調停リクエストを入力ポート５１へ出力する。この後、調停回路１１２は、調停リクエストを送信した出力ポートから調停リクエストに応じたデータ送信がデータ送信部１１３により開始されるまで、調停リクエストを同じ出力ポートに対して送信し続ける。調停リクエストに応じたデータ送信が開始した旨の通知をデータ送信部１１３から受信すると、リクエスト送信部１１１は、その調停リクエストの送信を停止する。
【００２９】
さらに、リクエスト送信部１１１は、調停リクエストを送信したという情報を、その調停リクエストで指定しているデータの送信先のＣＰＵの情報と共に調停回路１１２へ送信する。
【００３０】
また、リクエスト送信部１１１は、調停リクエストの応答として後述する通信許可通知を返信してきたＣＰＵの中で、調停回路１１２が自ＣＰＵからのデータの送信先として選択しなかったＣＰＵの情報の入力を調停回路１１２から受ける。以下では、自ＣＰＵが通信許可通知を出力ポートから受信したが自ＣＰＵからのデータの送信先として選択しなかったＣＰＵを、「未選択ＣＰＵ」という。例えば、後述するように、自ＣＰＵからのデータの送信先としてＣＰＵ３が調停回路１１２によって選択された場合、リクエスト送信部１１１は、未選択ＣＵＰとしてＣＰＵ２の情報の入力を調停回路１１２から受ける。
【００３１】
また、リクエスト送信部１１１は、現在行っているデータ送信が終了するまでのクロック数であるサイクル数をサイクル数通知部１１４から受信する。そして、サイクル数を受信した後にそのサイクル数が経過するまでの間に、調停リクエストを送信する場合、リクエスト送信部１１１は、調停リクエストにサイクル数の情報を付加して送信する。また、サイクル数を受信した時点で、未選択ＣＰＵの情報を受信している場合、リクエスト送信部１１１は、調停リクエストにサイクル数を付加して再度未選択ＣＰＵが接続されている出力ポートへ送信する。
【００３２】
リクエスト送信部１２１は、ＣＰＵ２に対するデータ送信の調停リクエストを入力ポート５２へ出力する。また、リクエスト送信部１４１は、ＣＰＵ２に対するデータ送信の調停リクエストを入力ポート５４へ出力する。
【００３３】
調停回路１１２は、出力ポート６２がデータの転送を行っていないアイドル状態の場合、マスターポートである出力ポート６２からの通信許可通知を入力ポート５１から受信し続ける。そして、この状態でリクエスト送信部１１１からＣＰＵ２へのデータ送信の調停リクエストの送信の通知を受けると、調停回路１１２は、リクエスト送信部１１１が送信した調停リクエストに対応するデータの送信をデータ送信部１１３に指示する。
【００３４】
また、出力ポート６２がアイドル状態でない場合、調停回路１１２は、リクエスト送信部１１１からの調停リクエストへの応答として出力ポート６２から送出された通信許可通知を入力ポート５１から受ける。また、アイドル状態であるかないかに関わらず、調停回路１１２は、調停リクエストへの応答としてマスターポート以外の出力ポート６３及び６４から送出された通信許可通知を入力ポート５１から受ける。調停回路１１２は、複数の通信許可通知を受信した場合、最初に受信した通信許可通知を送信してきた出力ポートに接続されているＣＰＵに対するデータ送信をデータ送信部１１３に指示する。
【００３５】
例えば、調停回路１１２は、出力ポート６２から送出された通信許可通知を入力ポート５１から受ける。次に、出力ポート６３から送出された通信許可通知を入力ポート５１から受ける。そして、調停回路１１２は、最初に取得した通信許可通知に対応するＣＰＵ２へのデータの送信をデータ送信部１１３に指示する。さらに、調停回路１１２は、データの送信を行うＣＰＵ２以外のＣＰＵへの調停リクエストが選択されなかったことをリクエスト送信部１１１へ通知する。ここでは、調停回路１１２は、ＣＰＵ３への調停リクエストが選択されなかったこと、すなわちＣＰＵ３が未選択ＣＰＵであることをリクエスト送信部１１１へ通知する。そして、調停回路１１２は、最初に取得した通信許可通知以外の通信許可通知を破棄する。ここでは、調停回路１１２は、出力ポート６３からの通信許可通知を破棄する。
【００３６】
送信部２１の調停回路１２２及び送信部４１の調停回路１４２は、調停回路１１２と同様の動作を行う。ここでは、送信部２１の調停回路１２２及び送信部４１の調停回路１４２は、出力ポート６３が調停によりデータ送信を許可するＣＰＵとしてＣＰＵ１を選択したため、通信許可通知を取得しない。
【００３７】
データ送信部１１３は、データの送信先として選択されたＣＰＵに対するデータ送信の指示を調停回路１１２から受信する。そして、データ送信部１１３は、指定されたＣＰＵに対してデータを送信する。さらに、データ送信部１１３は、送信しているデータのデータ長をサイクル数通知部１１４へ通知する。
【００３８】
例えば、データ送信部１１３は、ＣＰＵ２に対するデータの送信の指示を調停回路１１２から受信する。そして、データ送信部１１３は、ＣＰＵ３宛てのデータを入力ポート５１へ送信する。さらに、データ送信部１１３は、ＣＰＵ２へ送信するデータのデータ長をサイクル数通知部１１４に通知する。
【００３９】
また、データ送信部１１３は、データの送信を開始すると、その旨をリクエスト送信部１１１に通知する。
【００４０】
サイクル数通知部１１４は、送信しているデータのデータ長の通知をデータ送信部１１３から受ける。そして、サイクル数通知部１１４は、受信したデータ長からデータ送信が終了するまでのクロック数であるサイクル数を算出する。例えば、サイクル数通知部１１４は、ＣＰＵ２へ送信するデータのデータ長をデータ送信部１１３から取得する。そして、サイクル数通知部１１４は、ＣＰＵ２へ送信するデータのデータ長から、ＣＰＵ２へのデータ送信が終了するまでのクロック数であるサイクル数を算出する。ここで、本実施例では、データ長からサイクル数を計算しているが、データの送信が終わるまでの時間が求まれば他の方法でもよく、例えば、リードやライドなどの実行する処理の種類からその処理が終わるまでのサイクル数を求めても良い。
【００４１】
次に、サイクル数通知部１１４は、求めたサイクル数をリクエスト送信部１１１に送信する。
【００４２】
入力ポート５１は、データの送信先であるＣＰＵに対する調停リクエストをリクエスト送信部１１１から受信する。そして、入力ポート５１は、受信した調停リクエストをデータの送信先のＣＰＵが接続されている出力ポートに送信する。
【００４３】
例えば、入力ポート５１は、ＣＰＵ３に対するデータ送信の調停リクエストをリクエスト送信部１１１から受信する。そして、入力ポート５１は、ＣＰＵ３が接続されている出力ポート６３に調停リクエストを送信する。次に、入力ポート５１は、ＣＰＵ２に対するデータ送信の調停リクエストをリクエスト送信部１１１から受信する。そして、入力ポート５１は、ＣＰＵ２が接続されている出力ポート６２に調停リクエストを送信する。
【００４４】
出力ポート６２がデータの転送を行っていないアイドル状態の場合、入力ポート５１は、通信許可通知を出力ポート６２の調停回路１６１から受信し続ける。そして、入力ポート５１は、調停回路１６１からの通信許可通知を調停回路１１２へ送信する。
【００４５】
これに対して、出力ポート６２がデータの転送を行っていないアイドル状態でない場合、他の出力ポート６３及び６４に対して、入力ポート５１は、次のような動作を行う。入力ポート５１は、調停リクエストを送った出力ポートにおいてデータ送信が許可された場合、通信許可通知をその調停リクエストを送った出力ポートから受信する。例えば、入力ポート５１は、出力ポート６２の調停回路１６１から通信許可通知を受信する。そして、入力ポート５１は、調停回路１６１からの通信許可通知を調停回路１１２へ送信する。また、入力ポート５１は、出力ポート６３の調停回路１６３から通信許可通知を受信する。そして、入力ポート５１は、調停回路１６３からの通信許可通知を調停回路１１２へ送信する。
【００４６】
さらに、入力ポート５１は、通信許可通知を受けた調停リクエストに応じた他のＣＰＵ宛のデータをデータ送信部１１３から受信する。そして、入力ポート５１は、受信したデータをそのデータの送信先のＣＰＵが接続されている出力ポートへ送信する。例えば、入力ポート５１は、ＣＰＵ２宛てのデータをデータ送信部１１３から受信する。そして、入力ポート５１は、ＣＰＵ２宛てのデータを出力ポート６２のデータ転送部１６２へ送信する。
【００４７】
出力ポート６２は、調停回路１６１及びデータ転送部１６２を有する。出力ポート６３も同様に、調停回路１６３及びデータ転送部１６４を有している。そして、調停回路１６１及び１６３は、それぞれタイミング調整部１６５及び１６６を有している。
【００４８】
出力ポート６２がアイドル状態でない場合、調停回路１６１は、ＣＰＵ２を送信先とするデータの送信要求についての調停リクエストを入力ポート５１，５３及び５４から受信する。そして、調停リクエストが複数有る場合、調停回路１６１は、予め決められた条件を用いて、調停リクエストを送ってきたＣＰＵの中から優先順位が最も高いＣＰＵを選択する。例えば、調停回路１６１は、ＣＰＵ１，３及び４の優先順位を予め記憶しておく。そして、調停回路１６１は、調停リクエストを送信してきたＣＰＵの中で、記憶している優先順位のうち最も高い優先順位を有するＣＰＵを選択する。この他にも、例えば、調停回路１６１は、一度選択されたＣＰＵの優先順をさげるなどして、ＣＰＵの優先順位を変更しながら、優先順位の最も高いＣＰＵを選択してもよい。
【００４９】
調停回路１６１は、選択したＣＰＵが接続されている入力ポートに通信許可通知を送信する。たとえば、ＣＰＵ１を選択した場合、調停回路１６１は、入力ポート５１に通信許可通知を送信する。
【００５０】
出力ポート６２がアイドル状態の場合、調停回路１６１は、ＣＰＵ１への通信許可通知を入力ポート５１に対して送信し続ける。この時、ＣＰＵ１から調停リクエストを受信すると、調停回路１６１は直ぐにＣＰＵ１からのＣＰＵ２へのデータ転送を行う指示をデータ転送部１６２に指示する。一方、ＣＰＵ１以外からの調停リクエストを受信した場合、出力ポート６２は、ＣＰＵ１への送信許可通知の送信を停止する。そして、調停リクエストを複数受信している場合、調停回路１６１は、調停を行い、データ送信を許可するＣＰＵを決定する。その後、調停回路１６１は、決定したＣＰＵへの送信許可通知をそのＣＰＵが接続している入力ポートへ送信する。これに対して、調停リクエストを１つしか受信していなければ、調停回路１６１は、その調停リクエストを送信したＣＰＵへの送信許可通知をそのＣＰＵが接続している入力ポートへ送信する。
【００５１】
例えば、調停回路１６１は、アイドル状態で、ＣＰＵ１，３及び４から調停リクエストを受信した場合、調停回路１６１は、データ送信を許可するＣＰＵをマスターポートの組であるＣＰＵ１に決定する。この場合、ＣＰＵ３及び４はデータ送信を許可するＣＰＵとしては選択されない。
【００５２】
また、例えば、調停回路１６１は、アイドル状態でない状態で、ＣＰＵ１，３及び４から調停リクエストを受信した場合、調停回路１６１は、調停を行い、データ送信を許可するＣＰＵを決定する。
【００５３】
また、他の出力ポートにおいても同様に調停が行われ、データの送信を許可するＣＰＵが選択され、通信許可通知をそのＣＰＵが接続されている入力ポートにそのＣＰＵ宛の通信許可通知が送信される。例えば、同じＣＰＵに対して、異なる出力ポートから通信許可が送信される場合もある。
【００５４】
出力ポート６３の調停回路１６３は、例えば、ＣＰＵ１から調停リクエストを受信する。そして、調停回路１６３は、データ送信を許可するＣＰＵとしてＣＰＵ１を選択する。そして、調停回路１６３は、ＣＰＵ１への通信許可通知を入力ポート５１へ送信する。ただし、この場合、調停回路１６３からの出力許可通知はＣＰＵ１の調停回路１１２へ送信されるが、先に出力ポート６２が通信許可通知をＣＰＵ１へ送信しているため、ＣＰＵ３は、データ送信の送信先として選択されない。
【００５５】
その後、送信許可通知をＣＰＵ１に送信したが、データの送信先として選ばれなかったＣＰＵ２が接続されている出力ポート６３の調停回路１６３は、サイクル数が付加された調停リクエストをそのＣＰＵ１のリクエスト送信部１１１から受信する。
【００５６】
そして、サイクル数が付加された調停リクエストを受信した場合、調停回路１６３は、送信許可通知を出している調停リクエスト１１１に対する送信許可通知の送信を停止する。そして、調停回路１６３は、マスターポートの組となっているＣＰＵ２を、データ送信を許可するポートとして選択し、通信許可通知を送信する。
【００５７】
その後、調停回路１６３は、マスターポートの組になっているＣＰＵ２から調停リクエストを受信した場合、ＣＰＵ２からのデータの転送を行う。一方、マスターポートの組であるＣＰＵ２以外のＣＰＵ３又は４から調停リクエストを受信した場合、タイミング調整部１６５は、サイクル数を１つずつデクリメントしながらカウントする。そして、タイミング調整部１６５は、サイクル数が０になる、すなわちサイクル数分の時間が経過すると、調停回路１６３にサイクル数の時間の経過を通知する。調停回路１６３は、サイクル数の時間の経過の通知をタイミング調整部１６５から受信すると、調停リクエストを送ってきたＣＰＵの間で調停を行い、データ送信を許可するＣＰＵを選択する。
【００５８】
また、調停リクエストがどこからも来なかった場合、調停回路１６３は、サイクル数の時間の経過の通知をタイミング調整部１６５から受信すると、データ送信を許可するＣＰＵとしてサイクル数を付加した調停リクエストを送信してきたＣＰＵ１を選択する。そして、調停回路１６３は、選択したＣＰＵ１に対して通信許可通知を送信する。
【００５９】
また、タイミング調整部１６５は、既にサイクル数をいずれかのＣＰＵから受信している状態で、他のＣＰＵからサイクル数を受信した場合、残りの時間が短い、すなわちデータ送信が先に完了するサイクル数を選択する。そして、タイミング調整部１６５は、選択したサイクル数をカウントし、選択したサイクル数の時間が経過すると、調停回路１６３にサイクル数の時間の経過を通知する。調停回路１６３は、サイクル数の時間の経過の通知をタイミング調整部１６５から受信すると、調停リクエストを送ってきたＣＰＵの間で調停を行い、データ送信を許可するＣＰＵを選択する。そして、調停回路１６３は、選択したＣＰＵ１に対して通信許可通知を送信する。
【００６０】
例えば、出力ポート６３が通信許可通知をＣＰＵ１に送信したが、ＣＰＵ１がデータの送信先のＣＰＵとしてＣＰＵ２を選んだ場合について説明する。調停回路１６３は、ＣＰＵ１がＣＰＵ２へのデータ送信が終了するまでのサイクル数が付加された調停リクエストをリクエスト送信部１１１から入力ポート５１を介して再度受信する。そして、調停回路１６３は、ＣＰＵ１への通信許可通知の送信を停止する。さらに、調停回路１６３は、マスターポートの組であるＣＰＵ２をデータ送信を許可するＣＰＵとして選択する。そして、タイミング調整部１６５は、サイクル数を１つずつデクリメントするようにカウントする。この間、いずれのＣＰＵからも調停リクエストが来なければ、カウントが０になった時点で、タイミング調整部１６５からの通知を受けて、調停回路１６３は、ＣＰＵ１に対して再度通信許可通知を送信する。また、カウント中に、他のＣＰＵ、例えばＣＰＵ４から調停リクエストを受けた場合、タイミング調整部１６５からの通知を受けて、調停回路１６３は、ＣＰＵ４とＣＰＵ１との間で調停を行う。そして、調停回路１６３は、ＣＰＵ４又はＣＰＵ１をデータの送信を許可するＣＰＵとして選択し、選択したＣＰＵに通信許可通知を送信する。
【００６１】
データ転送部１６２は、送信部１１がＣＰＵ２へのデータ送信を行う場合、送信部１１のデータ送信部１１３が送信したデータを入力ポート５１から受信する。そして、データ転送部１６２は、受信したデータをＣＰＵ２の受信部２２へ送信する。
【００６２】
受信部２２は、送信部１１がＣＰＵ２に対してデータ送信を行う場合、送信部１１が送信したデータをデータ転送部１６２から受信する。ＣＰＵ２は、受信部２２で受信したデータを用いて処理を行う。
【００６３】
次に、図３〜図７を参照して、本実施例に係るデータ送信要求の調停の全体の流れについて説明する。図３は、調停リクエストが送信された段階の状態を表す図である。図４は、通信許可通知が送信された段階の状態を表す図である。図５は、データ及びサイクル数が送信された段階の状態を表す図である。図６は、再度調停が行われ調停リクエストが送信された段階の状態を表す図である。図７は、再度の調停後にデータ及びサイクル数が送信された段階の状態を表す図である。各送信部からの信号は対応する入力ポートを介して出力ポートに送信され、出力ポートからの信号は各送信部に対して対応する入力ポートを介して送信されるので、送信部と出力ポートとの間の信号を、入力ポートと出力ポートとの間の信号を用いて説明する。
【００６４】
図３における一点鎖線で囲われた送信部と出力ポートとの組がマスターポートの組みを表している。例えば、送信部１１のマスターポートは出力ポート６２である。この場合、出力ポート６２は、データ送信や調停を行っておらずアイドル状態である。そこで、出力ポート６２は、送信部１１に対して送信許可通知２０１を送信し続けている。図３に示すように、送信部１１は、出力ポート６２〜６４に調停リクエスト２０２〜２０４を送信する。
【００６５】
この調停リクエスト２０２〜２０４を受けて、出力ポート６２〜６４は調停を行う。ここでは、出力ポート６２〜６４は、送信部１１からの調停リクエストしか受けていないので、データの送信を許可するＣＰＵとして送信部１１を有するＣＰＵ１を選択する。
【００６６】
ここで、出力ポート６２は、マスターポートであり、送信部１１から調停リクエストを受けて直ぐにデータを転送できる状態になる。また、送信部１１は、調停リクエストを出して直ぐに、受信部２２を有するＣＰＵ２へのデータの送信を開始する。これに対して、出力ポート６３及び６４も、図４に示すように送信部１１へ送信許可通知２０５及び２０６を送信する。しかし、送信部１１はマスターポートである出力ポート６２に接続されている受信部２２を有するＣＰＵ２をデータの送信先として選択しているので、出力ポート６３及び６４の通信許可通知は送信部１１で選択されない。
【００６７】
次に、図５に示すように、送信部１１は、受信部２２へのデータ２０７を出力ポート６２へ送信する。さらに、送信部１１は、データ２０７の送信が完了するまでのサイクル数を求め、求めたサイクル数を負荷した調停リクエスト２０８及び２０９を出力ポート６３及び６４へ送信する。出力ポート６３及び６４は、送信部１１への通信許可通知の送信を停止し、サイクル数のカウントを開始する。この時、送信部３１から出力ポート６３へ調停リクエスト２１０が送られたものとする。
【００６８】
そして、サイクル数の経過後、出力ポート６３は、送信部１１及び送信部３１からの調停リクエストに基づいて調停を行う。ここでは、出力ポート６３は、送信部３１を有するＣＰＵ３を選択したものとする。この場合、図６に示すように、出力ポート６３は、通信許可通知２１１を送信部３１に送る。一方、出力ポート６４は、他の調停リクエストを受け付けていないので、送信部１１を有するＣＰＵ１を選択する。そして、出力ポート６４は、図６に示すように、通信許可通知２１２を送信部１１に送る。
【００６９】
その後、図７に示すように、送信部１１は、受信部２４へのデータ２１３を出力ポート６４へ送信する。また、送信部３１は、受信部２３へのデータ２１４を出力ポート６３へ送信する。
【００７０】
次に、図８を参照して、本実施例に係る並列計算機によるデータ送信処理の一連の流れについて説明する。図８は、実施例に係る並列計算機によるデータ送信処理のタイミングチャートである。
【００７１】
グラフ３００は、並列計算機の動作クロックを表している。また、グラフ３０１〜３１２の左側に記載している調停リクエストは調停リクエストの送信のグラフであることを表しており、調停リクエストに続く数字はどの送信部からどの出力ポートへの調停リクエストの送信かを表している。ここで、調停リクエストは、Ｈｉｇｈのときに調停リクエストが送られており、Ｌｏｗのときに調停リクエストが送られていないことを表している。また、次回サイクル数は、次の調停が開始できるようになるまでのサイクル数の遷移のグラフであることを表している。そして、次回サイクル数に続く数字は対応する出力ポートを表している。
【００７２】
具体的には、グラフ３０１は、送信部１１から出力ポート６２への調停リクエストの送信を表している。グラフ３０２は、送信部１１からのデータ送信に応じた出力ポート６２における次の調停が開始できるようになるまでのサイクル数の遷移を表している。グラフ３０３は、送信部１１から出力ポート６３への調停リクエストの送信を表している。グラフ３０４は、送信部１１からのデータ送信に応じた出力ポート６３における次の調停が開始できるようになるまでのサイクル数の遷移を表している。グラフ３０５は、送信部１１から出力ポート６４への調停リクエストの送信を表している。グラフ３０６は、送信部１１からのデータ送信に応じた出力ポート６４における次の調停が開始できるようになるまでのサイクル数の遷移を表している。
【００７３】
また、グラフ３０７は、送信部１１からのデータ送信を表している。グラフ３０７におけるｔｏに続く番号はデータを送信している出力ポートの符号を表している。例えば、「
ｔｏ  ６２」は、出力ポート６２へデータを送信していることを表している。さらに、グラフ３０７の「０」は、データの送信を行っていないことを表している。
【００７４】
また、グラフ３０８は、送信部３１から出力ポート６２への調停リクエストの送信を表している。グラフ３０９は、送信部３１からのデータ送信に応じた出力ポート６２における次の調停が開始できるようになるまでのサイクル数の遷移を表している。グラフ３１０は、送信部３１から出力ポート６４への調停リクエストの送信を表している。グラフ３１１は、送信部３１からのデータ送信に応じた出力ポート６４における次の調停が開始できるようになるまでのサイクル数の遷移を表している。グラフ３１２は、送信部３１から出力ポート６１への調停リクエストの送信を表している。グラフ３１３は、送信部３１からのデータ送信に応じた出力ポート６１における次の調停が開始できるようになるまでのサイクル数の遷移を表している。
【００７５】
また、グラフ３１４は、送信部３１からのデータ送信を表している。グラフ３１４におけるｔｏに続く番号はデータを送信している出力ポートの符号を表している。さらに、グラフ３１４の「０」は、データの送信を行っていないことを表している。
【００７６】
さらに、グラフ３１５は、出力ポート６２による通信許可通知の送信先を表している。また、グラフ３１６は、出力ポート６３による通信許可通知の送信先を表している。また、グラフ３１７は、出力ポート６４による通信許可通知の送信先を表している。また、グラフ３１８は、出力ポート６１による通信許可通知の送信先を表している。そして、グラフ３１５〜３１８の中に記載された数字は、通信許可通知を送信している送信部の符号を表している。さらに、グラフ３１５〜３１８の中の「通信中」の記載は、データ転送を行っていることを示している。
【００７７】
出力ポート６２〜６４は、グラフ３１５〜３１８に示すように、最初はマスターポートの組である送信部１１〜４１にそれぞれ送信許可を出している。
【００７８】
そして、送信部１１は、グラフ３０１，３０３及び３０５で示すように、同じタイミング３２１，３２２，３２３で出力ポート６２，６３及び６４に調停リクエストを送信する。
【００７９】
この時、出力ポート６２が送信部１１のマスターポートであるので、送信部１１は、直ちに出力ポート６２をデータの送信先として選択し、グラフ３０７で示すように、タイミング３２４で出力ポート６２対してデータの送信を開始する。これに対して、グラフ３１６のタイミング３２５で出力ポート６３は、調停を行い送信部１１からのデータの送信を許可すると決定する。そして、タイミング３２６で、出力ポート６３は、送信部１１に通信許可通知を送信する。グラフ３１７のタイミング３２７で出力ポート６４は、調停を行い送信部１１からのデータの送信を許可すると決定する。そして、タイミング３２８で、出力ポート６４は、送信部１１に通信許可通知を送信する。
【００８０】
この通信許可を受けて、送信部１１は、出力ポート６２へのデータ送信の完了までのサイクル数を求める。そして、送信部１１は、求めたサイクル数を出力ポート６３及び６４に通知し、出力ポート６３及び６４は次の調停までのサイクル数をカウントする。ここでは、タイミング３２９及び３３０で示すように、出力ポート６３及び６４は、３サイクル後に次回の調停を行うことになる。そして、出力ポート６３及び６４は、サイクルをカウントダウンしていく。
【００８１】
サイクル数を付加した調停リクエストを送信部１１から受けて、グラフ３１６のタイミング３３１で、出力ポート６３は、送信部１１に対する送信許可通知を停止し、マスターポートの組である送信部２１に対する送信許可通知の送信を開始する。同様に、グラフ３１７のタイミング３３２で、出力ポート６４は、送信部１１に対する送信許可通知を停止し、マスターポートの組である送信部３１に対する送信許可通知の送信を開始する。
【００８２】
さらに、出力ポート６３及び６４が、送信部１１のデータ伝送完了までのサイクル数をカウントしている間に、グラフ３０８，３１０及び３１２で示すように、送信部３１は、同じタイミング３３３，３３４及び３３５で出力ポート６２，６４及び６１に調停リクエストを送信する。この時、出力ポート６４は、送信部３１のマスターポートとなっているので、送信部３１は、直ちに出力ポート６４をデータの送信先として選択し、グラフ３１４で示すように、タイミング３３６で出力ポート６４対してデータの送信を開始する。これに対して、グラフ３１８のタイミング３３７で出力ポート６１は、調停を行い送信部３１からのデータの送信を許可すると決定する。
【００８３】
出力ポート６１からの通信許可を受けて、送信部３１は、出力ポート６４へのデータ送信の完了までのサイクル数を求める。そして、送信部１１は、求めたサイクル数を出力ポート６１及び６２に通知し、出力ポート６１及び６２は次の調停までのサイクル数をカウントする。ここでは、タイミング３３９及び３４０で示すように、出力ポート６２及び６１は、７サイクル後に次回の調停を行うことになる。そして、出力ポート６１及び６２は、サイクルをカウントダウンしていく。
【００８４】
サイクル数を付加した調停リクエストを送信部３１から受けて、グラフ３１６のタイミング３３１で、出力ポート６３は、送信部１１に対する送信許可通知を停止し、マスターポートの組である送信部４１に対する送信許可通知の送信を開始する。
【００８５】
出力ポート６３は、３サイクルのカウントダウン終了後に、グラフ３１６のタイミング３４１で調停を行う。このとき、出力ポート６３は、送信部１１からのみ調停リクエストを受けているので、タイミング３４２で送信部１１に対して送信許可を送信する。これを受けて、送信部１１は、グラフ３０７のタイミング３４３で出力ポート６３にデータを送信する。一方、タイミング３４４において、出力ポート６２も調停を行い、データの送信を許可する対象として送信部１１を選択する。しかし、この場合、すでに出力ポート６３が送信部１１に通信許可通知を送信している。そのため、出力ポート６２は、グラフ３１５のタイミング３４５で送信部１１に通信許可通知を出すが、その後、送信部１１からサイクル数が付加された調停リクエストを再度受信する。この場合、出力ポート６２は、送信部１１のマスターポートであるので、調停リクエストの再受信による通信許可通知の送信停止は行わず、通信許可通知を送信部１１に送り続ける。そして、グラフ３１５のタイミング３４６で、送信部１１のデータ送信のサイクル数が経過するので、出力ポート６２は、調停を行い、送信部１１を選択し、タイミング３４７で送信部１１に通信許可通知を送信する。これを受けて、送信部１１は、グラフ３０７のタイミング３４８で、出力ポート６２へのデータ送信を開始する。
【００８６】
また、グラフ３１８のタイミング３４９で、送信部３１のデータ送信のサイクル数が経過するので、出力ポート６１は、調停を行う。そして、出力ポート６１は、タイミング３５０で送信部３１に通信許可通知を送信する。これを受けて、送信部３１は、グラフ３１４のタイミング３５１で出力ポート６１へのデータ送信を開始する。
【００８７】
これに対して、図９は、従来の並列計算機によるデータ送信処理のタイミングチャートである。グラフ４０１〜４０３は、送信部１１から各出力ポートへの調停リクエストの送信を示す。また、グラフ４０４は、送信部１１からのデータ送信を表す。グラフ４０５〜４０７は、送信部３１から各出力ポートへの調停リクエストの送信を示す。また、グラフ４０８は、送信部３１からのデータ送信を表す。そして、グラフ４０９〜４１２は、出力ポート６１〜６４による送信許可通知の送信先及びデータ転送を表す。
【００８８】
この場合も、グラフ４０１〜４０３で示すように、送信部１１が出力ポート６２〜６４に調停リクエストを送信する。出力ポート６２は送信部１１のマスターポートであるため、送信部１１は、グラフ４０４及び４０９のように、直ちにデータの送信先として出力ポート６２を選択し、データの送信を開始する。この時、出力ポート６３及び６４は、送信部１１の調停リクエストを受けて、グラフ４１０及び４１１のタイミング４２０及び４２１で調停を行う。そして、出力ポート６３及び６４は、送信部１１に対して通信許可通知を送信する。この後、グラフ４０５及び４０６に示すように、送信部３１は、出力ポート６２及び６４へ調停リクエストを送信する。しかし、出力ポート６２はデータ転送中であり、また、出力ポート６４は送信部３１に対して通信許可通知を送信しているので、送信部３１は、出力ポート６２及び６４のいずれからも通信許可通知を得られない。その後、グラフ４０９のタイミング４２３で出力ポートのデータ送信が終わり、出力ポート６２は、調停を開始するが、この時に、また送信部１１に対して通信許可通知を出してしまう場合がある。このようなことにより、グラフ４１０及び４１１に示すように、出力ポート６３及び６４は、長期間に亘ってデータの転送を行えない状態が続くおそれがある。
【００８９】
このように、従来は、図９に示すようにデータを送信してしまっているＣＰＵを選択してしまうことで、長期間に亘ってデータの転送が行えない出力ポートが発生していた。これに対して、本実施例にかかる並列計算機は、図８に示すように、マスターポートを続けて選択することが回避でき、長期間に亘ってデータの転送が行えない出力ポートの発生を軽減できる。
【００９０】
以上に説明したように、本実施例に係る並列計算機システムでは、通信許可通知を受けてもデータの送信ができない場合に、実施しているデータ送信が完了するまでサイクル数を通知し、通知を受けた出力ポートはそのサイクル数後に再度調停を行う。すなわち、指定された調停開始のサイクルにしたがって出力ポートが調停を行うため、マスターポートからの通信許可通知が先に届くことが軽減でき、マスターポートによるバス専有を抑制できる。また、本実施例に係る並列計算機システムは、サイクル数をカウントしている間にマスターポートの組のＣＰＵから調停リクエストを受けた場合には、そのＣＰＵに通信許可通知を送信する。また、データ送信が完了するまでのサイクル数が少ないＣＰＵにあわせて調停を行うことができる。そのため、データを送信しているＣＰＵに対して送信許可通知を送ってしまった場合にも、その送信許可通知を無効にして、他のＣＰＵに対して送信許可通知を送ることができる。このようなことから、本実施例に係る並列計算機システムは、データ転送処理を効率よく行うことができる。
【符号の説明】
【００９１】
１〜４  ＣＰＵ
５  クロスバスイッチ
１０，２０，３０，４０  ルータ部
１１，２１，３１，４１  送信部
１２，２２，３２，４２  受信部
５１〜５４  入力ポート
６１〜６４  出力ポート
１１１，１２１，１３１，１４１  リクエスト送信部
１１２，１２２，１３２，１４２  調停回路
１１３，１２３，１３３，１４３  データ送信部
１１４，１２４，１３４，１４４  サイクル数通知部
１６１，１６３  調停回路
１６２，１６４  データ転送部
１６５，１６６  タイミング調整部
【図１】
2014035696.tif 000003
【図２】
2014035696.tif 000004
【図３】
2014035696.tif 000005
【図４】
2014035696.tif 000006
【図５】
2014035696.tif 000007
【図６】
2014035696.tif 000008
【図７】
2014035696.tif 000009
【図８】
2014035696.tif 000010
【図９】
2014035696.tif 000011