(57)【要約】【課題】リングバスを介して接続される複数の情報処理装置を有する情報処理システムにおいて、デッドロックの発生を防止する。【解決手段】環状のバスであるリングバスを介して接続される複数の情報処理装置のある情報処理装置が、リングバスを介して受信する他の情報処理装置へのリクエストを第１の保持部に格納し、他の情報処理装置へのリクエストを次段の情報処理装置へ順次送信し、第１の保持部におけるエントリの使用数が第１の閾値以上である状態が第１の時間より長く継続し、かつ次段の情報処理装置へのリクエストの送信が抑止された状態が第２の時間より長く継続した場合、第１の保持部におけるエントリの使用可能数を第１の閾値より大きい第２の閾値に変更し、エントリの使用可能数が第２の閾値である場合、リングバスへの第２のリクエストの送信を抑止する。【選択図】図１
2019020808.tif 000002
【特許請求の範囲】
【請求項１】
環状のバスであるリングバスを介して接続される複数の情報処理装置を有する情報処理システムにおいて、
前記情報処理装置は、
前記リングバスを介して受信する他の情報処理装置への第１のリクエストを格納する複数のエントリを有する第１の保持部と、
前記第１の保持部に格納した前記第１のリクエスト及び自身が発行する他の情報処理装置への第２のリクエストを次段の情報処理装置へ順次送信する送信部と、
前記第１の保持部における前記エントリの使用数が第１の閾値以上である状態が第１の時間より長く継続し、かつ次段の情報処理装置への前記リクエストの送信が抑止された状態が第２の時間より長く継続した場合、前記第１の保持部における前記エントリの使用可能数を前記第１の閾値より大きい第２の閾値に変更する制御部と、
前記第１の保持部における前記エントリの使用可能数が前記第２の閾値である場合、前記リングバスへの前記第２のリクエストの送信を抑止する抑止部とを有することを特徴とする情報処理システム。
【請求項２】
前記制御部は、前記第１の保持部における前記エントリの使用可能数が前記第２の閾値であり、かつ前記第１の保持部における前記エントリの使用数が前記第１の閾値より小さい第３の閾値未満になった場合、前記第１の保持部における前記エントリの使用可能数を前記第１の閾値に変更することを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記第２のリクエストを格納する複数のエントリを有する第２の保持部を有し、
前記抑止部は、前記第２の保持部から前記送信部への前記第２のリクエストの送信を抑止することを特徴とする請求項１又は２記載の情報処理システム。
【請求項４】
前記情報処理装置は、
前記第１の保持部における前記エントリの使用数が前記第１の保持部における前記エントリの使用可能数以上である場合、前段の情報処理装置から自身への前記リクエストの送信を抑止させることを特徴とする請求項１〜３の何れか１項に記載の情報処理システム。
【請求項５】
前記第２のリクエストを発行する発行部と、
自身への前記第１のリクエスト及び前記第２のリクエストに応じて処理を行う処理部とを有することを特徴とする請求項１〜４の何れか１項に記載の情報処理システム。
【請求項６】
前記リングバスに接続された情報処理装置に接続される前記リングバスの外部の情報処理装置を有し、
前記外部の情報処理装置に接続される前記リングバスに接続された情報処理装置の抑止部は、前記第１の保持部における前記エントリの使用可能数が前記第２の閾値である場合、前記第２のリクエスト及び前記外部の情報処理装置から受信したリクエストの前記リングバスへの送信を抑止することを特徴とする請求項１〜５の何れか１項に記載の情報処理システム。
【請求項７】
第１の前記リングバスに接続される複数の情報処理装置と、
前記第１のリングバスとは異なる第２のリングバスに接続される複数の情報処理装置とを有し、
前記第１のリングバスから前記第２のリングバスに対してリクエストが発行可能であり、
前記第１のリングバス及び前記第２のリングバスに接続される情報処理装置の抑止部は、前記第２のリングバスに係る前記第１の保持部における前記エントリの使用可能数が前記第２の閾値である場合、前記第２のリクエスト及び前記第１のリングバスから受信したリクエストの前記第２のリングバスへの送信を抑止することを特徴とする請求項１〜６の何れか１項に記載の情報処理システム。
【請求項８】
環状のバスであるリングバスを介して他の情報処理装置に接続される情報処理装置において、
前記リングバスを介して受信する他の情報処理装置への第１のリクエストを格納する複数のエントリを有する第１の保持部と、
前記第１の保持部に格納した前記第１のリクエスト及び自身が発行する他の情報処理装置への第２のリクエストを次段の情報処理装置へ順次送信する送信部と、
前記第１の保持部における前記エントリの使用数が第１の閾値以上である状態が第１の時間より長く継続し、かつ次段の情報処理装置への前記リクエストの送信が抑止された状態が第２の時間より長く継続した場合、前記第１の保持部における前記エントリの使用可能数を前記第１の閾値より大きい第２の閾値に変更する制御部と、
前記第１の保持部における前記エントリの使用可能数が前記第２の閾値である場合、前記リングバスへの前記第２のリクエストの送信を抑止する抑止部とを有することを特徴とする情報処理装置。
【請求項９】
環状のバスであるリングバスを介して接続される複数の情報処理装置を有する情報処理システムの制御方法において、
前記複数の情報処理装置の内の第１の情報処理装置の第１の保持部が、前記リングバスを介して受信する他の情報処理装置への第１のリクエストを格納し、
前記第１の情報処理装置の送信部が、前記第１の保持部に格納した前記第１のリクエスト及び自身が発行する他の情報処理装置への第２のリクエストを次段の情報処理装置へ順次送信し、
前記第１の情報処理装置の制御部が、前記第１の保持部におけるエントリの使用数が第１の閾値以上である状態が第１の時間より長く継続し、かつ次段の情報処理装置への前記リクエストの送信が抑止された状態が第２の時間より長く継続した場合、前記第１の保持部における前記エントリの使用可能数を前記第１の閾値より大きい第２の閾値に変更し、
前記第１の情報処理装置の抑止部が、前記第１の保持部における前記エントリの使用可能数が前記第２の閾値である場合、前記リングバスへの前記第２のリクエストの送信を抑止することを特徴とする情報処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、及び情報処理システムの制御方法に関する。
【背景技術】
【０００２】
図１１に、複数のノードを環状に接続するリングバスＲＩＮＧを介して複数のノード（情報処理装置）１１０が接続された情報処理システムを示す。各ノード１１０は、ＣＰＵ（Central Processing Unit）１１１、メモリ１１２、メモリコントローラ１１３、及びクロスバ部（ＸＢ）１１４を有する。ＣＰＵ１１１は、演算処理を行うとともに、リクエストを発行する。メモリコントローラ１１３は、受信したリクエストに応じて、メモリ１１２に対しデータの書き込み（データライト）や読み出し（データリード）を行う。クロスバ部（ＸＢ）１１４は、リングバスＲＩＮＧを介して伝送されるリクエスト等のパケットの宛先判定を行い、パケットの伝送制御を行う。
【０００３】
クロスバ部（ＸＢ）１１４同士がリング状に接続されており、各ノード１１０は、リングバスＲＩＮＧを介して接続される任意のノードのメモリ１１２にアクセス可能である。各ノード１１０のクロスバ部（ＸＢ）１１４は、他ノード宛のリクエストを保持部であるキュー（バッファ）Ｑ１１、Ｑ１２に格納し、調停部１１５で調停を取って次段の他ノードに送信する。また、クロスバ部（ＸＢ）１１４は、自ノード宛のリクエストをキュー（バッファ）Ｑ２１、Ｑ２２に格納し、調停部１１６で調停を取ってメモリコントローラ１１３に送信する。このようにして各ノード１１０は、自ノード宛のリクエストを受け取って処理を行い、自ノード宛ではないリクエストを次段の他ノードに送信する。
【０００４】
ここで、図１１に示したようなリングバスＲＩＮＧを介して接続される複数のノード１１０を有する情報処理システムでは、あるノードがビジー状態になり前段のノードからのリクエストの受信を抑止すると、前段のノードにリクエストが溜まっていき、最終的には最初にビジー状態となったノードの次段のノードもビジー状態となって、デッドロックが発生する。
【０００５】
例えば、図１１に示したノード（Ａ）１１０−Ａからノード（Ｃ）１１０−Ｃへのメモリアクセスリクエストにおいて、ノード（Ｃ）１１０−Ｃのメモリコントローラ１１３−Ｃの処理が遅く、ノード（Ｂ）１１０−Ｂがビジー状態になると、ノード（Ａ）１１０−Ａの他ノードからのリクエストも発行できなくなる。そして、ノード（Ａ）１１０−Ａがビジー状態になると、ノード（Ｄ）１１０−Ｄの他ノードからのリクエストも発行できなくなりビジー状態となってデッドロックが発生する。このようにリングバスＲＩＮＧを介して接続される複数のノード１１０を有する情報処理システムでは、あるノードがビジー状態になることによってデッドロックが発生してしまうことがある。
【０００６】
デッドロックの状況を検出したときに、キューではなく、メモリにリクエストを格納することでデッドロックの状況を解決する技術が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−６７０２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
１つの側面では、本発明の目的は、リングバスを介して接続される複数の情報処理装置を有する情報処理システムにおいて、デッドロックの発生を防止することにある。
【課題を解決するための手段】
【０００９】
情報処理システムの一態様は、環状のバスであるリングバスを介して接続される複数の情報処理装置を有し、情報処理装置は、リングバスを介して受信する他の情報処理装置への第１のリクエストを格納する複数のエントリを有する第１の保持部と、第１の保持部に格納した第１のリクエスト及び自身が発行する他の情報処理装置への第２のリクエストを次段の情報処理装置へ順次送信する送信部と、第１の保持部におけるエントリの使用可能数を制御する制御部と、第２のリクエストの送信を制御する抑止部とを有する。制御部は、第１の保持部におけるエントリの使用数が第１の閾値以上である状態が第１の時間より長く継続し、かつ次段の情報処理装置へのリクエストの送信が抑止された状態が第２の時間より長く継続した場合、第１の保持部におけるエントリの使用可能数を第１の閾値より大きい第２の閾値に変更し、抑止部は、第１の保持部におけるエントリの使用可能数が第２の閾値である場合、リングバスへの第２のリクエストの送信を抑止する。
【発明の効果】
【００１０】
発明の一態様においては、リングバスを介して接続される複数の情報処理装置を有する情報処理システムにおいて、デッドロックの発生を防止することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１の実施形態における情報処理システムの構成例を示す図である。
【図２】図２は、第１の実施形態におけるノードの構成例を示す図である。
【図３】図３は、第１の実施形態におけるリモートキューを説明する図である。
【図４】図４は、第１の実施形態におけるデッドロック制御部の構成例を示す図である。
【図５】図５は、第１の実施形態におけるデッドロック制御部の動作例を示すフローチャートである。
【図６】図６は、第１の実施形態におけるノードの動作例を示すフローチャートである。
【図７】図７は、第２の実施形態における情報処理システムの構成例を示す図である。
【図８】図８は、第２の実施形態におけるノードの構成例を示す図である。
【図９】図９は、第３の実施形態における情報処理システムの構成例を示す図である。
【図１０】図１０は、第３の実施形態におけるノードの構成例を示す図である。
【図１１】図１１は、情報処理システムの構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を図面に基づいて説明する。
【００１３】
（第１の実施形態）
本発明の第１の実施形態について説明する。
図１は、第１の実施形態における情報処理システムの構成例を示す図である。第１の実施形態における情報処理システムは、複数のノードを環状に接続するリングバスＲＩＮＧを介して接続される複数の情報処理装置としてのノード１０を有する。図２にノード１０内部の構成例を示す。
【００１４】
本実施形態では、あるノード１０から発行されたリクエストは単方向（一方の方向のみ）に伝搬し、本例では、ノードＡ、Ｂ、Ｃ、Ｄ、Ａ、Ｂ、・・・の方向に伝搬するものとするが、逆であってもよい。なお、図１には、４つのノード１０−Ａ〜１０−ＤがリングバスＲＩＮＧを介して接続される構成を示しているが、これに限定されるものではなく、リングバスＲＩＮＧを介して接続されるノードの数は任意の複数である。
【００１５】
図２は、第１の実施形態におけるノード１０の構成例を示す図である。ノード１０は、ＣＰＵ（Central Processing Unit）１１、メモリ１２、メモリコントローラ１３、及びクロスバ部（ＸＢ）１４を有する。なお、図２においては、説明の便宜上、ノード１０が有する機能部として、ＣＰＵ１１、メモリ１２、メモリコントローラ１３、及びクロスバ部（ＸＢ）１４を示したが、他の機能部を有していてもよい。
【００１６】
ＣＰＵ１１は、演算処理を行うとともに、リクエストを発行する。メモリコントローラ１３は、受信したリクエストに応じて、メモリ１２に対しデータの書き込み（データライト）や読み出し（データリード）を行う。クロスバ部（ＸＢ）１４は、リングバスＲＩＮＧを介して伝送されるリクエスト等のパケットの宛先判定を行い、パケットの伝送制御を行う。また、クロスバ部（ＸＢ）１４は、デッドロック状態の検出を行い、デッドロックが発生することを防止するための制御を行う。
【００１７】
クロスバ部（ＸＢ）１４は、それぞれ保持部に該当する４つのキュー（バッファ）Ｑ１１、Ｑ１２、Ｑ２１、Ｑ２２、調停部（セレクタ）１５、１８、デッドロック制御部１６、及び抑止部１７を有する。クロスバ部（ＸＢ）１４に入力されたリクエストＲＥＱＦ、ＲＥＱＮは、リクエスト内の宛先（発行先）情報に基づいてキュー（バッファ）Ｑ１１、Ｑ１２、Ｑ２１、Ｑ２２の何れかに格納される。キュー（バッファ）Ｑ１１、Ｑ１２、Ｑ２１、Ｑ２２は、それぞれ複数のエントリを有する。
【００１８】
第１の保持部としてのリモートキューＱ１１は、前段の（１つ前の）他ノードから受信するリクエストＲＥＱＦの内の他ノード宛のリクエストを格納するキューである。リモートキューＱ１１は、リクエストがエントリに書き込まれたときに信号Ｑ１１Ｗを出力（値“１”に）し、リクエストがエントリから読み出されたときに信号Ｑ１１Ｒを出力（値“１”に）する。
【００１９】
ここで、リモートキューＱ１１は、図３に一例を示すように、通常モード及びデッドロック解消モードで動作時に使用される通常エントリ３０１とデッドロック解消モードで動作時に使用される拡張エントリ３０２とを有する。つまり、リモートキューＱ１１は、通常モードでは、通常エントリ３０１である閾値Ａの個数のエントリが使用可能となり、デッドロック解消モードでは、通常エントリ３０１と拡張エントリ３０２とを合わせた閾値Ｂの個数のエントリが使用可能となる。なお、デッドロック解消モードでの動作時に、使用しているエントリ数が閾値Ｃ未満となると、デッドロック解消モードから通常モードに遷移する。
【００２０】
第２の保持部としてのローカルキューＱ１２は、自ノードのＣＰＵ１１が発行したリクエストＲＥＱＮの内の他ノード宛のリクエストを格納するキューである。リモートキューＱ１１及びローカルキューＱ１２に格納されたリクエストは、調停部１５での調停後、リクエストＲＥＱＳとして次段の（１つ後の）他ノードに送信される。なお、調停部１５は、次段の他ノードから入力されるビジー信号ＢＳＹＩが“１”である場合、次段の他ノードへのリクエストの送信を抑止する。
【００２１】
キューＱ２１は、前段の他ノードから受信するリクエストＲＥＱＦの内の自ノードのメモリ１２に対するリクエストを格納するキューである。キューＱ２２は、自ノードのＣＰＵ１１が発行したリクエストＲＥＱＮの内の自ノードのメモリ１２に対するリクエストを格納するキューである。キューＱ２１、Ｑ２２に格納されたリクエストは、調停部１８での調停後、メモリコントローラ１３に送信される。
【００２２】
デッドロック制御部１６は、次段の他ノードから入力されるビジー信号ＢＳＹＩ及びリモートキューＱ１１から出力される信号Ｑ１１Ｗ、Ｑ１１Ｒに基づいて、デッドロック状態であるか否かを判定する。デッドロック制御部１６は、デッドロック状態であると判定した場合、デッドロック解消モードへ遷移して、自ノードからのリクエストのリングバスへの新規発行を抑止する抑止信号ＱＡＳを出力（値“１”に）する。また、デッドロック制御部１６は、リモートキューＱ１１で使用しているエントリ数が使用可能なエントリ数に達した場合、前段の他ノードにビジー信号ＢＳＹＯを出力（値“１”に）する。
【００２３】
抑止部１７は、デッドロック制御部１６から出力される抑止信号ＱＡＳに応じて、ローカルキューＱ１２から調停部１５へのリクエストの転送を制御する。抑止部１７は、抑止信号ＱＡＳの値が“１”である場合、ローカルキューＱ１２から調停部１５へのリクエストの転送を抑止し、リングバスへの新規リクエストの発行を抑止する。
【００２４】
図４は、第１の実施形態におけるデッドロック制御部１６の構成例を示す図である。デッドロック制御部１６は、カウンタ４０１、４０２、４１１、論理和演算回路（ＯＲ回路）４０３、４０４、閾値保持回路４０５、４１２、４１３、４１４、比較回路４０６、４０７、４１５、４１６、４１７、論理積演算回路（ＡＮＤ回路）４０８、フラグ保持回路４０９、及びセレクタ４１８を有する。
【００２５】
カウンタ４０１は、次段の他ノードからビジー信号ＢＳＹＩが出力されている（値が“１”である）期間をカウントしてカウント値ＣＮＴＡを出力する。また、カウンタ４０２は、自ノードからビジー信号ＢＳＹＯを出力している（値が“１”である）期間をカウントしてカウント値ＣＮＴＢを出力する。カウンタ４０１は、例えばビジー信号ＢＳＹＩが“１”である場合、図示しないクロック信号の１サイクル毎にカウント値ＣＮＴＡを１増加させ、ＯＲ回路４０３の出力が“１”となった場合、カウント値ＣＮＴＡを０にクリアする。また、カウンタ４０２は、例えばビジー信号ＢＳＹＯが“１”である場合、図示しないクロック信号の１サイクル毎にカウント値ＣＮＴＢを１増加させ、ＯＲ回路４０４の出力が“１”となった場合、カウント値ＣＮＴＢを０にクリアする。
【００２６】
ＯＲ回路４０３には、ビジー信号ＢＳＹＩの反転信号及びＡＮＤ回路４０８の出力が入力され、ＯＲ回路４０４には、ビジー信号ＢＳＹＯの反転信号及びＡＮＤ回路４０８の出力が入力される。したがって、カウンタ４０１は、ビジー信号ＢＳＹＩが“０”である場合、又はＡＮＤ回路４０８の出力が“１”となった場合、カウント値ＣＮＴＡを０にクリアし、カウンタ４０２は、ビジー信号ＢＳＹＯが“０”である場合、又はＡＮＤ回路４０８の出力が“１”となった場合、カウント値ＣＮＴＢを０にクリアする。
【００２７】
閾値保持回路４０５は、閾値Ｔを保持する。比較回路４０６は、カウンタ４０１から出力されるカウント値ＣＮＴＡと閾値保持回路４０５により保持される閾値Ｔとを比較して比較結果を出力する。比較回路４０６は、カウント値ＣＮＴＡが閾値Ｔより大きい場合、出力を“１”にし、カウント値ＣＮＴＡが閾値Ｔ以下である場合、出力を“０”にする。また、比較回路４０７は、カウンタ４０２から出力されるカウント値ＣＮＴＢと閾値保持回路４０５により保持される閾値Ｔとを比較して比較結果を出力する。比較回路４０７は、カウント値ＣＮＴＢが閾値Ｔより大きい場合、出力を“１”にし、カウント値ＣＮＴＢが閾値Ｔ以下である場合、出力を“０”にする。
【００２８】
ＡＮＤ回路４０８は、比較回路４０６、４０７の出力、及び抑止信号ＱＡＳの反転信号が入力され、その演算結果を出力する。すなわち、ＡＮＤ回路４０８は、カウント値ＣＮＴＡ、ＣＮＴＢがともに閾値Ｔより大きく、かつ抑止信号ＱＡＳが“０”である場合、出力を“１”にし、そうでない場合、出力を“０”にする。
【００２９】
フラグ保持回路４０９は、デッドロック解消モードであるか否かを示すフラグを保持するとともに、フラグに応じた抑止信号ＱＡＳを出力する。フラグ保持回路４０９は、ＡＮＤ回路４０８の出力が“１”になったとき、フラグを“１”（デッドロック解消モードである）に設定し、比較回路４１７の出力が“１”になったとき、フラグを“０”（デッドロック解消モードでない）に設定する。また、フラグ保持回路４０９は、フラグが“１”であれば出力する抑止信号ＱＡＳを“１”にし、フラグが“０”であれば出力する抑止信号ＱＡＳを“０”にする。
【００３０】
ここで、比較回路４１７の出力は、リモートキューＱ１１で使用しているエントリ数が閾値Ｃ未満であるときに“１”となる。したがって、フラグ保持回路４０９は、抑止信号ＱＡＳが“０”であって、かつカウント値ＣＮＴＡ、ＣＮＴＢがともに閾値Ｔより大きくなった場合、フラグを“１”に設定し、リモートキューＱ１１で使用しているエントリ数が閾値Ｃ未満になった場合、フラグを“０”に設定する。
【００３１】
カウンタ４１１は、リモートキューＱ１１でのエントリの使用数をカウントしてカウント値ＣＮＴＣを出力する。カウンタ４１１は、リモートキューＱ１１からの信号Ｑ１１Ｗが“１”になるとカウント値ＣＮＴＣを１増加させ、リモートキューＱ１１からの信号Ｑ１１Ｒが“１”になるとカウント値ＣＮＴＣを１減少させる。閾値保持回路４１２は閾値Ａを保持し、閾値保持回路４１３は閾値Ｂを保持し、閾値保持回路４１４は閾値Ｃを保持する。ここで、図３に示したように、閾値Ａは通常モードにおけるリモートキューＱ１１のエントリの使用可能数であり、閾値Ｂはデッドロック解消モードにおけるリモートキューＱ１１のエントリの使用可能数であり、閾値Ｃはデッドロック解消モードから通常モードへ遷移する条件となるリモートキューＱ１１のエントリ数である。
【００３２】
比較回路４１５〜４１７は、カウンタ４１１から出力されるカウント値ＣＮＴＣと、閾値保持回路４１２〜４１４により保持される閾値Ａ〜Ｃとを比較して比較結果を出力する。比較回路４１５は、カウント値ＣＮＴＣが閾値Ａ以上である場合、出力を“１”にし、カウント値ＣＮＴＣが閾値Ａ未満である場合、出力を“０”にする。比較回路４１６は、カウント値ＣＮＴＣが閾値Ｂ以上である場合、出力を“１”にし、カウント値ＣＮＴＣが閾値Ｂ未満である場合、出力を“０”にする。また、比較回路４１７は、カウント値ＣＮＴＣが閾値Ｃ未満である場合、出力を“１”にし、カウント値ＣＮＴＣが閾値Ｃ以上である場合、出力を“０”にする。
【００３３】
セレクタ４１８は、抑止信号ＱＡＳに応じて、比較回路４１５の出力又は比較回路４１６の出力の一方の出力をビジー信号ＢＳＹＯとして出力する。セレクタ４１８は、抑止信号ＱＡＳが“０”である場合、比較回路４１５の出力をビジー信号ＢＳＹＯとして出力し、抑止信号ＱＡＳが“１”である場合、比較回路４１６の出力をビジー信号ＢＳＹＯとして出力する。
【００３４】
すなわち、通常モードにおいては、カウント値ＣＮＴＣと閾値Ａとの比較結果がビジー信号ＢＳＹＯとして出力され、デッドロック解消モードにおいては、カウント値ＣＮＴＣと閾値Ｂとの比較結果がビジー信号ＢＳＹＯとして出力される。これにより、通常モードにおいて、リモートキューＱ１１のエントリの使用数が閾値Ａになると前段の他ノードから自ノードへのリクエストの送信が抑止される。また、デッドロック解消モードにおいて、リモートキューＱ１１のエントリの使用数が閾値Ｂになると前段の他ノードから自ノードへのリクエストの送信が抑止される。
【００３５】
次に、図５を参照してデッドロック制御部１６の動作を説明する。図５は、デッドロック制御部１６の動作例を示すフローチャートである。各ノード１０のデッドロック制御部１６が、図５に示す動作をそれぞれ実行する。
【００３６】
まず、ステップＳ５０１にて、デッドロック制御部１６は、デッドロック状態であるか否かの判定を行う。デッドロック制御部１６は、通常モードにおいて、カウンタ４０１、４０２のカウント値ＣＮＴＡ、ＣＮＴＢがともに閾値Ｔより大きい場合、デッドロック状態であると判定し、ステップＳ５０２へ進む。つまり、デッドロック制御部１６は、通常モードにおいて、ビジー信号ＢＳＹＩ、ＢＳＹＯが閾値Ｔよりも長く継続して出力されている場合、自ノード及び次段の他ノードのリモートキューＱ１１が詰まっているとしてデッドロック状態であると判定する。
【００３７】
次に、ステップＳ５０２にて、デッドロック制御部１６は、フラグ保持回路４０９により保持される、デッドロック解消モードであることを示すフラグを“１”に変更し、デッドロック解消モード（エントリ拡張モード）へ遷移する。続いて、ステップＳ５０３にて、デッドロック制御部１６は、フラグ保持回路４０９により保持されるフラグを“１”に変更したことに伴って、抑止信号ＱＡＳを“１”にして自ノードからリングバスへの新規リクエストの発行を抑止する。
【００３８】
また、ステップＳ５０４にて、デッドロック制御部１６は、リモートキューＱ１１におけるエントリの使用可能数が増加（拡張）されたことを受けて、ビジー信号ＢＳＹＯを“０”にしてリングバスを介したリクエストの受け付け抑止状態を解除し、前段の他ノードからのリクエストを受け付ける。そして、ステップＳ５０５にて、デッドロック制御部１６は、リクエストが順次処理され、リモートキューＱ１１におけるエントリの使用数が閾値Ｃ未満になるまで待つ。リモートキューＱ１１におけるエントリの使用数が閾値Ｃ未満になると、ステップＳ５０６にて、デッドロック制御部１６は、フラグ保持回路４０９により保持されるフラグを“０”に変更し、デッドロック解消モードから通常モードへ遷移する。
【００３９】
図６は、第１の実施形態におけるノードの動作例を示すフローチャートである。なお、図６においては、リングバスＲＩＮＧを介してリクエストを転送するときのノード１０の動作を示している。
【００４０】
ステップＳ６０１にて、ノード１０のクロスバ部（ＸＢ）１４は、前段の他ノードから自ノード宛ではないリクエストを受信すると、受信したリクエストをリモートキューＱ１１に格納する。このとき、リモートキューＱ１１から出力される信号Ｑ１１Ｗが“１”となり、デッドロック制御部１６が有するカウンタ４１１のカウント値ＣＮＴＣが１増加する。
【００４１】
次に、ステップＳ６０２にて、クロスバ部（ＸＢ）１４は、次段の他ノードから入力されるビジー信号ＢＳＹＩが“１”であるか否かを判定する。ビジー信号ＢＳＹＩが“１”ではないと判定した場合、ステップＳ６０３にて、クロスバ部（ＸＢ）１４は、リモートキューＱ１１が調停部１５での調停に勝利することで、リモートキューＱ１１に格納されているリクエストを次段の他ノードへ発行し、ステップＳ６０１へ戻る。このとき、リモートキューＱ１１から出力される信号Ｑ１１Ｒが“１”となり、デッドロック制御部１６が有するカウンタ４１１のカウント値ＣＮＴＣが１減少する。
【００４２】
一方、ステップＳ６０２での判定の結果、ビジー信号ＢＳＹＩが“１”であると判定した場合、ステップＳ６０４にて、デッドロック制御部１６は、リモートキューＱ１１におけるエントリの使用数が閾値Ａ以上であるか否かを判定する。その結果、リモートキューＱ１１におけるエントリの使用数が閾値Ａ以上である場合、ステップＳ６０５へ進み、そうでない場合、ステップＳ６０１へ戻る。
【００４３】
ステップＳ６０５にて、デッドロック制御部１６は、カウンタ４０１、４０２のカウント値ＣＮＴＡ、ＣＮＴＢがともに閾値Ｔより大きいか否かを判定する。すなわち、デッドロック制御部１６は、デッドロック状態であるか否かを判定する。その結果、カウンタ４０１、４０２のカウント値ＣＮＴＡ、ＣＮＴＢの少なくとも一方が閾値Ｔ以下である、すなわちデッドロック状態でないと判定した場合、ステップＳ６０２へ戻る。
【００４４】
一方、カウンタ４０１、４０２のカウント値ＣＮＴＡ、ＣＮＴＢがともに閾値Ｔより大きい、すなわちデッドロック状態であると判定した場合、デッドロック制御部１６は、フラグ保持回路４０９により保持される、デッドロック解消モードであることを示すフラグを“１”に変更する。これにより、デッドロック制御部１６は、デッドロック解消モードに遷移して、拡張エントリ３０２を使用可能にする。
【００４５】
次に、ステップＳ６０７にて、クロスバ部（ＸＢ）１４は、次段の他ノードから入力されるビジー信号ＢＳＹＩが“１”であるか否かを判定する。ビジー信号ＢＳＹＩが“１”ではないと判定すると、ステップＳ６０８にて、クロスバ部（ＸＢ）１４は、リモートキューＱ１１が調停部１５での調停に勝利することで、リモートキューＱ１１に格納されているリクエストを次段の他ノードへ発行する。このとき、リモートキューＱ１１から出力される信号Ｑ１１Ｒが“１”となり、デッドロック制御部１６が有するカウンタ４１１のカウント値ＣＮＴＣが１減少する。
【００４６】
続いてステップＳ６０９にて、デッドロック制御部１６は、リモートキューＱ１１におけるエントリの使用数が閾値Ｃ未満であるか否かを判定する。その結果、リモートキューＱ１１におけるエントリの使用数が閾値未満でない場合、ステップＳ６０７へ戻り、エントリの使用数が閾値未満である場合、ステップＳ６１０へ進む。ステップＳ６１０にて、デッドロック制御部１６は、フラグ保持回路４０９により保持される、デッドロック解消モードであることを示すフラグを“０”に変更する。これにより、デッドロック制御部１６は、通常モードに遷移して、拡張エントリ３０２を使用不可にする。そして、ステップＳ６０１へ戻る。
【００４７】
第１の実施形態によれば、デッドロック制御部１６が、デッドロック状態であると判定した場合、リングバスへの新規のリクエストの発行を抑止する。また、リモートキューＱ１１にて使用可能なエントリ数を増加することで、前段のノードからのリクエストを受信可能にする。これにより、各ノード１０のリモートキューＱ１１に格納されたリクエストを循環可能にし、デッドロック状態を解消してデッドロックの発生を防止することができる。
【００４８】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
図７は、第２の実施形態における情報処理システムの構成例を示す図である。第２の実施形態における情報処理システムは、第１の実施形態と同様に複数のノード（Ａ〜Ｄ）１０−Ａ〜１０−Ｄが複数のノードを環状に接続するリングバスＲＩＮＧを介して接続され、さらにノード（Ａ）１０−Ａに対してリングバスＲＩＮＧ外からリクエストを発行するノード（Ｅ）１０−Ｅが接続される。
【００４９】
なお、第２の実施形態におけるノード（Ａ〜Ｅ）１０−Ａ〜１０−Ｅのうち、ノード（Ｂ〜Ｅ）１０−Ｂ〜１０−Ｅの構成は、図２に示した第１の実施形態におけるノード１０の構成と同様であるので説明は省略し、以下では第２の実施形態におけるノード（Ａ）１０−Ａについて説明する。図８は、第２の実施形態におけるノード（Ａ）１０−Ａの構成例を示す図である。図８において、図２に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
【００５０】
ノード１０−Ａは、ＣＰＵ１１、メモリ１２、メモリコントローラ１３、及びクロスバ部（ＸＢ）１４を有する。また、クロスバ部（ＸＢ）１４は、それぞれ保持部に該当する４つのキュー（バッファ）Ｑ１１、Ｑ１２、Ｑ２１、Ｑ２２、調停部（セレクタ）１５、１８、デッドロック制御部１６、及び抑止部１７に加え、さらに２つのキューＱ１３、Ｑ２３を有する。キューＱ１３、Ｑ２３もそれぞれ複数のエントリを有する。
【００５１】
キューＱ１３は、ノード（Ｅ）１０−Ｅから受信するリクエストＲＥＱＥの内の他ノード宛のリクエストを格納するキューである。キューＱ１１〜Ｑ１３に格納されたリクエストは、調停部１５での調停後、リクエストＲＥＱＳとして次段の他ノードに送信される。なお、調停部１５は、次段の他ノードから入力されるビジー信号ＢＳＹＩが“１”である場合、次段の他ノードへのリクエストの送信を抑止する。
【００５２】
また、キューＱ２３は、ノード（Ｅ）１０−Ｅから受信するリクエストＲＥＱＥの内の自ノードのメモリ１２に対するリクエストを格納するキューである。キューＱ２１〜Ｑ２３に格納されたリクエストは、調停部１８での調停後、メモリコントローラ１３に送信される。
【００５３】
抑止部１９は、デッドロック制御部１６から出力される抑止信号ＱＡＳに応じて、キューＱ１３から調停部１５へのリクエストの転送を制御する。抑止部１９は、抑止信号ＱＡＳの値が“１”である場合、ローカルキューＱ１３から調停部１５へのリクエストの転送を抑止し、リングバスへの新規リクエストの発行を抑止する。つまり、第２の実施形態では、抑止信号ＱＡＳの値が“１”である（デッドロック解消モードである）場合、キューＱ１２、Ｑ１３から調停部１５へのリクエストの転送を抑止し、リングバスへの新規リクエストの発行を抑止する。
【００５４】
第２の実施形態によれば、デッドロック状態と判定したときに、リングバスＲＩＮＧ外のノード（Ｅ）１０−ＥからリングバスＲＩＮＧに対して発行されるリクエストを、自身のＣＰＵ１１が発行するリクエストと同様にローカルのリクエストとして抑止することで、第１の実施形態と同様の効果が得られる。
【００５５】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。
図９は、第３の実施形態における情報処理システムの構成例を示す図である。第３の実施形態における情報処理システムは、複数のノードを環状に接続するリングバスＲＩＮＧ０を介してノード（Ａ〜Ｄ）１０−Ａ〜１０−Ｄが接続されるとともに、さらにリングバスＲＩＮＧ０とは異なるリングバスＲＩＮＧ１を介してノード（Ａ）１０−Ａ及びノード（Ｅ〜Ｇ）１０−Ｅ〜１０−Ｇが接続される。
【００５６】
すなわち、第３の実施形態における情報処理システムでは、ノード（Ａ）１０−Ａは、２つのリングバスＲＩＮＧ０、ＲＩＮＧ１に接続されている。なお、図９において、破線で示すように、リングバスＲＩＮＧ０に接続されるノード（Ａ〜Ｄ）１０−Ａ〜１０−ＤからリングバスＲＩＮＧ１のみに接続されるノード（Ｅ〜Ｇ）１０−Ｅ〜１０−Ｇ宛へのリクエストは発行可能であるが、リングバスＲＩＮＧ１のみに接続されるノード（Ｅ〜Ｇ）１０−Ｅ〜１０−ＧからリングバスＲＩＮＧ０のみに接続されるノード（Ｂ〜Ｄ）１０−Ｂ〜１０−Ｄ宛へのリクエストは発行可能ではないものとする。
【００５７】
なお、第３の実施形態におけるノード（Ａ〜Ｇ）１０−Ａ〜１０−Ｇのうち、ノード（Ｂ〜Ｇ）１０−Ｂ〜１０−Ｇの構成は、図２に示した第１の実施形態におけるノード１０の構成と同様であるので説明は省略し、以下では第３の実施形態におけるノード（Ａ）１０−Ａについて説明する。図１０は、第３の実施形態におけるノード（Ａ）１０−Ａの構成例を示す図である。図１０において、図２及び図８に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。また、図１０において、添え字“０”を付加した構成要素は、リングバスＲＩＮＧ０に係る構成要素であり、添え字“１”を付加した構成要素は、リングバスＲＩＮＧ１に係る構成要素であることを示す。
【００５８】
ノード１０−Ａは、ＣＰＵ１１、メモリ１２、メモリコントローラ１３、クロスバ部（ＸＢ）１４−０、１４−１、及び転送部３１を有する。クロスバ部（ＸＢ）１４−０は、図２に示したノード１０のクロスバ部（ＸＢ）１４と同様に構成され、リングバスＲＩＮＧ０を介して転送されるリクエストを処理する。また、クロスバ部（ＸＢ）１４−１は、キューＱ１３、Ｑ２３にかえてキューＱ１４、Ｑ２４を有し、図８に示したノード１０−Ａのクロスバ部（ＸＢ）１４と同様に構成され、リングバスＲＩＮＧ１を介して転送されるリクエストを処理する。
【００５９】
転送部３１は、リングバスＲＩＮＧ０を介して入力されるリクエストＲＥＱＦ−０を、リクエスト内の宛先（発行先）情報に基づいてリングバスＲＩＮＧ０又はリングバスＲＩＮＧ１の一方に転送する。転送部３１は、入力されるリクエストＲＥＱＦ−０がリングバスＲＩＮＧ０に接続されたノード宛のリクエストである場合、他ノードからのリクエストＲＥＱＦ−００としてクロスバ部（ＸＢ）１４−０に出力する。また、転送部３１は、入力されるリクエストＲＥＱＦ−０がリングバスＲＩＮＧ１に接続されたノード宛のリクエストである場合、他ノードからのリクエストＲＥＱＦ−０１としてクロスバ部（ＸＢ）１４−１に出力する。
【００６０】
第３の実施形態によれば、リングバスＲＩＮＧ０に接続されたノード宛のリクエストは第１の実施形態と同様に処理し、リングバスＲＩＮＧ０に接続されたノードからリングバスＲＩＮＧ１に接続されたノード宛のリクエストは第２の実施形態と同様にローカルのリクエストとして処理する。これにより、他のノードに対するリクエストを順次処理することが可能となり、デッドロックの発生を防止することができる。
【００６１】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６２】
１０  ノード（情報処理装置）
１１  ＣＰＵ
１２  メモリ
１３  メモリコントローラ
１４  クロスバ部
１５、１８  調停部
１６  デッドロック制御部
１７、１９  抑止部
３１  転送部
Ｑ１１、Ｑ１２、Ｑ１３、Ｑ２１、Ｑ２２、Ｑ２３  キュー（バッファ）
４０１、４０２、４１１  カウンタ
４０３、４０４  論理和演算回路
４０５、４１２〜４１４  閾値保持回路
４０６、４０７、４１５〜４１７  比較回路
４０８  論理積演算回路
４０９  フラグ保持回路
４１８  セレクタ
【図１】
2019020808.tif 000003
【図２】
2019020808.tif 000004
【図３】
2019020808.tif 000005
【図４】
2019020808.tif 000006
【図５】
2019020808.tif 000007
【図６】
2019020808.tif 000008
【図７】
2019020808.tif 000009
【図８】
2019020808.tif 000010
【図９】
2019020808.tif 000011
【図１０】
2019020808.tif 000012
【図１１】
2019020808.tif 000013