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