(57)【要約】（課題）バッファ容量を大きくすること無く、クロスバーの効率的な伝送を行うことが出来る情報処理装置及び情報処理装置の制御方法を提供することを目的とする。（解決手段）  複数のプロセッサと、複数のプロセッサ間のパケットを中継するクロスバースイッチと、各々が複数のプロセッサのひとつに対応し、クロスバースイッチ経由で受信した対応プロセッサ宛のパケットを、送信元のプロセッサ毎に記憶する複数の出力バッファと、複数のプロセッサの各々に対応して設けられ、対応するプロセッサから送信される他のプロセッサ宛のパケットを記憶する入力バッファと、各々の出力バッファに対応して設けられ、対応する出力バッファの空き容量に応じた指示を前記各入力バッファへ行う指示部と、を有する。
2013027247.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記複数のプロセッサ間のパケットを中継するクロスバースイッチと、
各々が前記複数のプロセッサのひとつに対応し、前記クロスバースイッチ経由で受信した対応プロセッサ宛のパケットを、送信元のプロセッサ毎に記憶する複数の出力バッファと、
前記複数のプロセッサの各々に対応して設けられ、前記対応するプロセッサから送信される他のプロセッサ宛のパケットを記憶する入力バッファと、
各々の出力バッファに対応して設けられ、対応する出力バッファの空き容量に応じた指示を前記各入力バッファへ行う指示部と、
前記指示部からの指示に基づき、前記出力バッファの空き容量が所定以下の場合、対応するプロセッサからのパケットを前記入力バッファに記憶した後に前記クロスバースイッチへ送信を行い、前記出力バッファの空き容量が所定以下ではない場合、前記対応するプロセッサからのパケットの前記入力バッファへの記憶を行わず前記クロスバースイッチへ送信を行う制御部と、
を有する情報処理装置。
【請求項２】
前記入力バッファの容量は、前記出力バッファの容量以下であることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記入力バッファの容量は、前記出力バッファの容量と等しいことを特徴とする請求項１記載の情報処理装置。
【請求項４】
複数のプロセッサと、前記複数のプロセッサ間のパケットを中継するクロスバースイッチと、各々が前記複数のプロセッサのひとつに対応し、前記クロスバースイッチ経由で受信した対応プロセッサ宛のパケットを、送信元のプロセッサ毎に記憶する複数の出力バッファと、前記複数のプロセッサ各々に対応して設けられた入力バッファと、各々の出力バッファに対応して設けられた指示部と、前記指示部からの指示に基づいてパケットの送信を制御する制御部と、を有する情報処理装置の制御方法であって、
対応する前記出力バッファの空き状況に応じて、前記指示部より前記各入力バッファへ指示を行い、
前記指示部からの指示に基づき、パケットの宛先に対応する出力バッファの空き容量が所定以下の場合には、パケットを前記入力バッファに記憶した後に前記クロスバースイッチへ送信を行い、パケットの宛先に対応する出力バッファの空き容量が所定以下でない場合には、パケットを前記入力バッファへの記憶を行わずに前記クロスバースイッチへ送信することを特徴とする情報処理装置の制御方法。
【請求項５】
前記入力バッファの容量は、前記出力バッファの容量以下であることを特徴とする請求項４記載の情報処理装置の制御方法。
【請求項６】
前記入力バッファの容量は、前記出力バッファの容量と等しいことを特徴とする請求項４記載の情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
従来から、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を搭載した複数のノードを、クロスバーで接続する情報処理装置が知られている。このような情報処理装置に於いて、クロスバーは、各々のノードが接続される複数のＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）ポートと、各Ｉ／Ｏポートが接続され、各々のＩ／Ｏポート間のデータ交換を行うためのデータクロスバーを有する。各Ｉ／Ｏポートには、接続されたノードからのパケットをデータクロスバーへ送る入力ポートと、データクロスバーから送られてきたパケットを、接続されているノードへ送信する出力ポートを有する。【０００３】
このようなクロスバーを有する情報処理装置は、各ノードが接続された入力ポート、もしくは、出力ポートにパケットを一時的に保持するバッファを設けていることが多い。【０００４】
なお、このバッファをクロスバーの各Ｉ／Ｏポートの入力ポート側に設け、複数のノード間におけるパケット転送の順序を調停する情報処理装置が知られている。【０００５】
【特許文献１】特開平１１−２３２２３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
情報処理装置の各入力ポート側にバッファを設けた場合、各出力ポートは、パケットを蓄積しないため、接続されているノードへのパケット送信が可能となった時点で他のＩ／Ｏポートの入力ポートへパケットの出力要求を送信し、このリクエストに対して送信されたいずれかの入力ポートからのパケットを、接続されているノードへ送信することになる。即ち、バッファから出力ポート側へデータを転送するには、出力ポートからのリクエスト・入力バッファからのパケット転送の２回の通信を行うことになる。【０００７】
対して、情報処理装置の各出力ポート側にバッファを設けた場合は、入力ポートではパケットを貯められない事から、入力ポートが受信したパケットは、そのまま出力ポートへ送信されることになる。即ち、入力ポートにバッファを設けた場合のように、出力ポートからのリクエストが必要なく、入力ポートにバッファを設けた場合に比べて、通信回数が少なくて済む。【０００８】
しかしながら、情報処理装置におけるノードからのパケットは所定数連続して意味を成すものが多いため、各々の出力ポートには、他の入力ポート各々に対応した数のバッファを設けておく必要がある。このため、出力ポートにバッファを設ける場合には、入力ポートにバッファを設ける場合に対して、バッファの容量が大きくなってしまう。【０００９】
1つの側面では、本発明は、クロスバーの効率的な伝送を行うことを目的とする。
【課題を解決するための手段】
【００１０】
本発明の課題を解決するため、開示の技術の第１の側面によれば、
複数のプロセッサと、
前記複数のプロセッサ間のパケットを中継するクロスバースイッチと、
各々が前記複数のプロセッサのひとつに対応し、前記クロスバースイッチ経由で受信した対応プロセッサ宛のパケットを、送信元のプロセッサ毎に記憶する複数の出力バッファと、
前記複数のプロセッサの各々に対応して設けられ、前記対応するプロセッサから送信される他のプロセッサ宛のパケットを記憶する入力バッファと、
各々の出力バッファに対応して設けられ、対応する出力バッファの空き容量に応じた指示を前記各入力バッファへ行う指示部と、
前記指示部からの指示に基づき、前記出力バッファの空き容量が所定以下の場合、対応するプロセッサからのパケットを前記入力バッファに記憶した後に前記クロスバースイッチへ送信を行い、前記出力バッファの空き容量が所定以下ではない場合、前記対応するプロセッサからのパケットの前記入力バッファへの記憶を行わず前記クロスバースイッチへ送信を行う制御部と、
を有する情報処理装置が提供される。
【発明の効果】
【００１１】
開示の技術によれば、クロスバーの効率的な伝送が可能となる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本実施例における情報処理装置の構成の概略を示すブロック図である。
【図２】図２は、本実施例におけるクロスバーの説明図である。
【図３】図３は、本実施例における入力ポートの構成を示す図である。
【図４】図４は、本実施例にバッファの構成を示す図である。
【図５】図５は、本実施例における出力ポートの構成を示す図である。
【図６】図６は、本実施例における入力ポートの動作を説明する為の図である。
【図７】図７は、本実施例における入力ポートの動作を説明する為の図である。
【図８】図８は、本実施例における入力ポートにパケットが到達した時の処理を示すシーケンス図である。
【図９】図９は、本実施例における入力ポートの動作を説明する為のシーケンス図である。
【図１０】図１０は、本実施例における入力ポートの動作を説明する為のシーケンス図である。
【図１１】図１１は、本実施例における入力ポートの動作を説明する為の図である。
【図１２】図１２は、本実施例における入力ポートの動作を説明する為のシーケンス図である。
【図１３】図１３は、本実施例における入力ポートの動作を説明する為のシーケンス図である。
【図１４】図１４は、本実施例における入力ポートの動作を説明する為のシーケンス図である。
【図１５】図１５は、本実施例における出力ポート数とバッファ削減比率との関係を説明する図である。
【発明を実施するための形態】
【００１３】
以下、開示の技術について、図面を用いて詳細に説明する。
図１は、本実施例における情報処理装置の構成の概略を示すブロック図である。図１に示すように、情報処理装置１０は、クロスバー１００を有している。このクロスバー１００は、各々、ノードＡ６００、ノードＢ７００、ノードＣ８００、及び、ノードＤ９００が接続されるＩ／ＯポートＡ２００、Ｉ／ＯポートＢ３００、Ｉ／ＯポートＣ４００、及び、Ｉ／ＯポートＤ５００を有している。
【００１４】
また、各々のＩ／ＯポートＡ２００、Ｉ／ＯポートＢ３００、Ｉ／ＯポートＣ４００、及び、Ｉ／ＯポートＤ５００は、クロスバー１００内のデータクロスバー１１０に接続されている。
【００１５】
以下にノードＡ６００について説明する。なお、ノードＢ７００、ノードＣ８００、及び、ノードＤ９００は、ノードＡ６００と同様の構成を有しているものとし、説明を省略する。
【００１６】
ノードＡ６００では、演算処理装置の一種であるＣＰＵ６１０及びＣＰＵ６２０、並びに、メモリ６３０及びメモリ６４０がノードコントローラ６５０に接続される。メモリ６３０及びメモリ６４０は、ＣＰＵ６１０及びＣＰＵ６２０が行った演算結果を記憶する記憶部である。又、メモリ６３０及びメモリ６４０は、ノードＢ７００、ノードＣ８００、及び／又は、ノードＤ９００から転送されるパケットを記憶する。
【００１７】
ノードコントローラ６５０は、ノードＡ６００全体の制御を司る制御回路である。このノードコントローラ６５０は、ＣＰＵ６１０及びＣＰＵ６２０、又は、メモリ６３０及びメモリ６４０とクロスバー１００との間で送受信される各種パケットリクエストなどの各種パケットを記憶する受信バッファ６５２及び送信バッファ６５１を含む。
【００１８】
送信バッファ６５１は、ＣＰＵ６１０及びＣＰＵ６２０から他のノード若しくはＩ／Ｏポートへ出力される各種パケットリクエストを一時記憶するバッファである。送信バッファ６５１に一時記憶されるパケットリクエストは、後述するクロスバー１００のＩ／ＯポートＡ２００の入力ポート２１０へ送信される。ここで、パケットリクエストとは、パケットの送受信に関するリクエストである。
【００１９】
受信バッファ６５２は、後述するクロスバー１００から受信したパケットを一時記憶する。パケットは、パケットリクエスト及びパケットリクエストに対応して送受信される実データを含む。受信バッファ６５２に一時記憶されるパケットは、ＣＰＵ６１０及び／又はＣＰＵ６２０、メモリ６３０及びメモリ６４０にそれぞれ出力される。
【００２０】
なお、クロスバー１００に接続されるノードの数は、上記したノードＡ６００、ノードＢ７００、ノードＣ８００及びノードＤ９００の４つに限定されるものではない。また、ノードは、それぞれ２つのＣＰＵ及び２つのメモリを含むが、それぞれ「２つ」に限定されるものではなく、また、ＣＰＵ及びメモリ以外の機能部を含んでもよい。
【００２１】
クロスバー１００は、データクロスバー（クロスバースイッチに相当）１１０、Ｉ／ＯポートＡ２００及びＩ／ＯポートＢ３００、Ｉ／ＯポートＣ４００及びＩ／ＯポートＤ５００を含む。
【００２２】
データクロスバー１１０は、クロスバー１００内の各Ｉ／ＯポートＡ２００，Ｂ３００，Ｃ４００，Ｄ５００から出力されるパケットリクエストの内、出力ポート２２０のアービタ部２２１、出力ポート３２０のアービタ部３２１、出力ポート４２０が有するアービタ部４２１及び出力ポート５２０が有するアービタ部５２１間における調停に勝ったパケットリクエストに対応するパケットを宛先のポートへ出力する。ここで、「調停に勝つ」とは、出力ポート２２０のアービタ部２２１、アービタ部３２１、アービタ部４２１及びアービタ部５２１間の調停においてパケットリクエストが実際のパケットリクエストを行う権利を獲得することを意味する。ここで、調停に勝ったパケットリクエストは、データクロスバー１１０から、宛先のポートへ出力されることになる。一方、「調停に負ける」とは、調停においてパケットリクエストが実際のパケットリクエストを行う権利を獲得出来なかったことを意味する。すなわち、調停に負けたパケットリクエストは、データクロスバー１１０から、宛先のポートへは出力されない。
【００２３】
Ｉ／ＯポートＡ２００は、入力ポート２１０及び出力ポート２２０を含む。入力ポート２１０は、ノードＡ６００のノードコントローラ６５０の送信バッファ６５１から受信したパケットリクエスト及びパケットをデータクロスバー１１０に出力する。
【００２４】
図２は、本実施例におけるクロスバー１００の説明図である。詳しくは、図２では、クロスバー１００の構成のうち、データクロスバー１１０，Ｉ／ＯポートＡの入力ポート２１０、Ｉ／ＯポートＢ３００，Ｃ４００，Ｄ５００の各出力ポート３２０，４２０，５２０、及び、アービタ部３２１，４２１，５２１を抽出した図である。
なお、図示はしていないが、本実施の形態に於いて、Ｉ／ＯポートＡ２００の出力ポート２２０は、他の出力ポート３２０、４２０，及び５２０と同じ構成を有しているものとする。同様に、Ｉ／ＯポートＢ３００，Ｃ４００，Ｄ５００の入力ポート３１０，４１０，５１０は、Ｉ／ＯポートＡ２００の入力ポート２１０と同じ構成であるものとする。
【００２５】
図２に示すように、クロスバー１００は、データクロスバー１１０、Ｉ／ＯポートＡ２００の入力ポート２１０、Ｉ／ＯポートＢ３００の出力ポート３２０、Ｉ／ＯポートＣ４００の出力ポート４２０及びＩ／ＯポートＤ５００の出力ポート５２０を有する。なお、Ｉ／ＯポートＢ３００の出力ポート３２０は、Ｉ／ＯポートＣ４００の出力ポート４２０及びＩ／ＯポートＤ５００の出力ポート５２０と同一の構成である。符号を除き名称が一致する機能部は、同一の機能を有し、同一の処理を行う。なお、本実施の形態では、ノードＡ６００から、ノードＢ７００、ノードＣ８００及びノードＤ９００に対して送信できるパケット送信数（クレジット数）は、４と設定されている。
【００２６】
入力ポート２１０は、入力バッファ部２１１、セレクタ制御部２１２及びカウンタ２１３を有する。入力バッファ部２１１、セレクタ制御部２１２及びカウンタ２１３は、バス２１４を介して互いに接続されている。
【００２７】
入力バッファ部２１１は、バッファ２１１ａ、セレクタ２１１ｂ、バッファ２１１ｃ、バイパスパス２１１ｄ及びバッファ用バス２１１ｅを有する。
【００２８】
バッファ２１１ａは、ノードＡ６００から送信されたパケットを一時的に記憶し、一時的に記憶したパケットを、セレクタ２１１ｂへ伝送する。
【００２９】
セレクタ２１１ｂは、セレクタ制御部２１２からの指示に基づいて、バッファ２１１ａから伝送されたパケットを、バッファ２１１ｃ又はバイパスパス２１１ｄに切替えて伝送する。
【００３０】
バッファ２１１ｃは、セレクタ２１１ｂから伝送されたパケットを一時的に記憶する。バッファ２１１ｃは、一時的に記憶したパケットを、データクロスバー１１０に伝送する。又、バッファ２１１ｃの容量は、後述するＩ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ、Ｉ／ＯポートＡ用バッファ５２３ａの容量以下であることが望ましい。バッファ２１１ｃは、ノードＡ６００から送信できるパケット送信数の１／２以下の容量を有することが望ましい。
【００３１】
バイパスパス２１１ｄは、セレクタ２１１ｂから伝送されたパケットをデータクロスバー１１０に伝送する。
【００３２】
バッファ用バス２１１ｅは、セレクタ２１１ｂ及びバッファ２１１ｃを接続する。セレクタ２１１ｂから伝送されたパケットは、バッファ用バス２１１ｅを介してバッファ２１１ｃに伝送される。
【００３３】
セレクタ制御部２１２は、セレクタ２１１ｂを制御して、ノードＡ６００から送信されたパケットの送信先をバッファ２１１ｃ又はバイパスパス２１１ｄに切替える。
【００３４】
カウンタ２１３は、Ｉ／ＯポートＢ用カウンタ２１３ａ、Ｉ／ＯポートＣ用カウンタ２１３ｂ及びＩ／ＯポートＤ用カウンタ２１３ｃを有する。
【００３５】
Ｉ／ＯポートＢ用カウンタ２１３ａは、入力ポート２１０を介してクロスバー１００に伝送されたパケットの内、Ｉ／ＯポートＢ３００を介してノードＢ７００へ出力待ちとなっているパケット数をカウントする。Ｉ／ＯポートＢ用カウンタ２１３ａは、セレクタ制御部２１２からの指示に基づいてパケット数の加算又は減算を行う。
【００３６】
Ｉ／ＯポートＣ用カウンタ２１３ｂは、入力ポート２１０を介してクロスバー１００に伝送されたパケットの内、Ｉ／ＯポートＣ４００を介してノードＣ８００へ出力待ちとなっているパケット数をカウントする。Ｉ／ＯポートＣ用カウンタ２１３ｂは、セレクタ制御部２１２からの指示に基づいてパケット数加算又は減算を行う。
【００３７】
Ｉ／ＯポートＤ用カウンタ２１３ｃは、入力ポート２１０を介してクロスバー１００に伝送されたパケットの内、Ｉ／ＯポートＤ５００を介してノードＣ８００へ出力待ちとなっているパケット数をカウントする。Ｉ／ＯポートＤ用カウンタ２１３ｃは、セレクタ制御部２１２からの指示に基づいてパケット数の加算又は減算を行う。
【００３８】
出力ポート３２０は、アービタ部３２１、出力バッファ制御部３２２、出力バッファ部３２３及びバス３２４を有する。アービタ部３２１、出力バッファ制御部３２２及び出力バッファ部３２３は、バス３２４を介して互いに接続されている。
【００３９】
アービタ部３２１は、ノードＢ７００に対して送信できるパケット数の管理を行う。アービタ部３２１は、不図示のカウンタに記憶されているノードＢ７００に対して送信できるパケット数を確認する。アービタ部３２１は、ノードＢ７００に対して送信できるパケットが存在する場合、出力バッファ制御部３２２が取得するＩ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＣ用バッファ３２３ｂ及びＩ／ＯポートＤ用バッファ３２３ｃから、ノードＢ７００に対してパケットを送信するリクエストの１つを選択する。例えば、Ｉ／ＯポートＡ用バッファ３２３ａ及びＩ／ＯポートＤ用バッファ３２３ｃにパケットが記憶されている場合、出力バッファ制御部３２２からのアービタ部３２１に対するパケットリクエストは、「Ｉ／ＯポートＡ２００又はＩ／ＯポートＤ５００からのパケットを送信する」パケットリクエストになる。
【００４０】
アービタ部３２１は、「Ｉ／ＯポートＡ２００又はＩ／ＯポートＤ５００からのパケットを送信」というパケットリクエストのうち、どちらかのポート（Ｉ／ＯポートＡ２００又はＩ／ＯポートＤ５００）からのパケットを送信するか調停する。アービタ部３２１は、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔ  Ｕｓｅｄ）又はラウンドロビンアルゴリズム等の優先制御に従って、Ｉ／ＯポートＡ２００、Ｉ／ＯポートＢ３００、Ｉ／ＯポートＣ４００及びＩ／ＯポートＤ５００からのパケット送受信に関するパケットリクエストを調停する。調停の結果、「Ｉ／ＯポートＡ２００からのパケットを送信する」パケットリクエストが調停に勝った場合、アービタ部３２１は、出力バッファ制御部３２２を介して調停結果をＩ／ＯポートＡ用バッファ３２３ａに通知する。
【００４１】
出力バッファ制御部３２２は、データクロスバー１１０を介してＩ／ＯポートＡ２００、Ｉ／ＯポートＣ４００又はＩ／ＯポートＤ５００からパケットが伝送されると、出力バッファ部３２３が対応するＩ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＣ用バッファ３２３ｂ又はＩ／ＯポートＤ用バッファ３２３ｃに対してパケットの記憶指示を行う。出力バッファ制御部３２２は、データクロスバー１１０を介してＩ／ＯポートＡ２００、Ｉ／ＯポートＣ４００又はＩ／ＯポートＤ５００からパケットが伝送されると、アービタ部３２１に対してパケット送信の調停を行う旨のパケットリクエストを行う。出力バッファ制御部３２２は、アービタ部３２１から通知された調停結果に基づいて、調停に勝ったパケットリクエストに対応するＩ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＣ用バッファ３２３ｂ又はＩ／ＯポートＤ用バッファ３２３ｃのうち何れかのバッファに対しパケットの転送指示を行う。出力バッファ制御部３２２は、調停に勝ったポートの入力ポート２１０、入力ポート３１０、入力ポート４１０及び入力ポート５１０に対して、パケットを送信できる数の返却通知（クレジット返却通知）を行う。
【００４２】
出力バッファ部３２３は、Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＣ用バッファ３２３ｂ、Ｉ／ＯポートＤ用バッファ３２３ｃ及びバス３２３ｄを有する。Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＣ用バッファ３２３ｂ及びＩ／ＯポートＤ用バッファ３２３ｃは、バス３２３ｄを介して互いに接続されている。
【００４３】
Ｉ／ＯポートＡ用バッファ３２３ａは、Ｉ／ＯポートＡ２００から伝送できるパケットを一時的に記憶する。Ｉ／ＯポートＡ用バッファ３２３ａは、ノードＡ６００から送信されたパケット送信数の１／２以上の容量を有することが望ましい。Ｉ／ＯポートＡ用バッファ３２３ａは、一時的に記憶したパケットを、バス３２３ｄを介してノードＢ７００に伝送する。
【００４４】
Ｉ／ＯポートＣ用バッファ３２３ｂは、Ｉ／ＯポートＣ４００から伝送できるパケットを一時的に記憶する。Ｉ／ＯポートＣ用バッファ３２３ｂは、ノードＣ８００から送信されたパケット送信数の１／２以上の容量を有することが望ましい。Ｉ／ＯポートＣ用バッファ３２３ｂは、一時的に記憶したパケットを、バス３２３ｄを介してノードＢ７００に伝送する。
【００４５】
Ｉ／ＯポートＤ用バッファ３２３ｃは、Ｉ／ＯポートＤ５００から伝送できるパケットを一時的に記憶する。Ｉ／ＯポートＤ用バッファ３２３ｃは、ノードＤ９００から送信されたパケット送信数の１／２以上の容量を有することが望ましい。Ｉ／ＯポートＤ用バッファ３２３ｃは、一時的に記憶したパケットを、バス３２３ｄを介してノードＢ７００に伝送する。
【００４６】
出力ポート４２０は、アービタ部４２１、出力バッファ制御部４２２、出力バッファ部４２３及びバス４２４を有する。アービタ部４２１、出力バッファ制御部４２２及び出力バッファ部４２３は、バス４２４を介して互いに接続されている。なお、本実施の形態では、符号を除き名称が一致するものは、同一の機能を有し、同一の処理を行うものとする。
【００４７】
出力ポート５２０は、アービタ部５２１、出力バッファ制御部５２２、出力バッファ部５２３及びバス５２４を有する。アービタ部５２１、出力バッファ制御部５２２及び出力バッファ部５２３は、バス５２４を介して互いに接続されている。なお、本実施の形態では、符号を除き名称が一致する機能部は、出力ポート３２０における機能部と同一の機能を有し、同一の処理を行うものとする。
【００４８】
図３は、本実施例における入力ポート２１０の構成を示す図である。なお、図３において、図１及び図２で説明した構成と同様の構成には同一符号を付し、説明を省略する。
【００４９】
セレクタ制御部２１２は、データクロスバー先デコーダ２１２ａ、セレクタ・バッファ制御部２１２ｂ、レジスタ２１２ｃ及びカウンタ２１２ｄを有する。
【００５０】
データクロスバー先デコーダ２１２ａは、ノードＡ６００から伝送されたパケットの伝送先となる出力ポート３２０、出力ポート４２０及び出力ポート５２０のうち、何れかの出力ポートを選択し、セレクタ・バッファ制御部２１２ｂに通知する。
【００５１】
レジスタ２１２ｃは、Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値が記憶されている。Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値は予め設定されている。レジスタ２１２ｃは、セレクタ・バッファ制御部２１２ｂに対して常に閾値を通知している。
【００５２】
カウンタ２１２ｄは、入力ポート２１０に伝送されたパケットにおいて、バッファ２１１ｃに書き込む際の番地（ＷＰ：Ｗｒｉｔｉｎｇ  Ｐｏｉｎｔｅｒ）の情報を記憶している。カウンタ２１２ｄは、バッファ２１１ｃからパケットを読み出す際の番地（ＲＰ：Ｒｅａｄｉｎｇ  Ｐｏｉｎｔｅｒ）の情報が記憶されている。カウンタ２１２ｄは、セレクタ・バッファ制御部２１２ｂからの指示により、ＷＰ及びＲＰの加算（＋１）を行う。
【００５３】
セレクタ・バッファ制御部２１２ｂは、データクロスバー先デコーダ２１２ａからの出力ポート選択通知により、バッファ２１１ｃのカウンタ値をカウンタ２１２ｄから読み出す。又、セレクタ・バッファ制御部２１２ｂは、データクロスバー先デコーダ２１２ａからの出力ポート選択通知により、通知された出力ポート３２０、出力ポート４２０及び出力ポート５２０のいずれかの、Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａもしくは、Ｉ／ＯポートＡ用バッファ５２３ａが有する容量の閾値を読み出す。セレクタ・バッファ制御部２１２ｂは、読み出された出力ポートのカウンタ部２１３のカウンタ値及びＩ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値を比較する。
【００５４】
セレクタ・バッファ制御部２１２ｂは、カウンタ部２１３のカウンタ値が、Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値以上であった場合、入力バッファ部２１１のセレクタ２１１ｂに対し、バッファ用バス２１１ｅの選択指示を行う。即ち、セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１に対してバッファ２１１ｃのパケット書き込み指示を行う。又、セレクタ・バッファ制御部２１２ｂは、カウンタ２１２ｄに対して、バッファ２１１ｃのＷＰのカウンタ値の加算（＋１）指示を行う。セレクタ・バッファ制御部２１２ｂは、カウンタ２１３に対して、通知された出力ポートに対応するＷＰのカウンタの加算（＋１）指示を行う。なお、ＲＰ／ＷＰのカウンタ値が、Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値以上であった場合とは、選択された出力ポートのバッファに、パケットを一時的に記憶する容量が無い場合である。
【００５５】
又、セレクタ・バッファ制御部２１２ｂは、カウンタ部２１３のカウンタ値が、Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値より小さい場合、入力バッファ部２１１のセレクタ２１１ｂに対し、バイパスパス２１１ｄの選択指示を行う。又、この際、セレクタ・バッファ制御部２１２ｂは、通知された出力ポートに対応するＩ／ＯポートＢ用カウンタ２１３ａ、Ｉ／ＯポートＣ用カウンタ２１３ｂ及びＩ／ＯポートＤ用カウンタ２１３ｃに対し、ＷＰのカウンタ値の加算（＋１）指示を行う。なお、ＲＰ／ＷＰのカウンタ値が、Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値より小さい場合とは、選択された出力ポートのバッファに、パケットを一時的に記憶する容量がある場合である。
【００５６】
加えて、セレクタ・バッファ制御部２１２ｂは、出力ポート３２０、出力ポート４２０及び出力ポート５２０からクレジット返却通知があった場合、通知された出力ポート３２０、出力ポート４２０及び出力ポート５２０のうち、バッファ２１１ｃのカウンタ値をカウンタ２１２ｄから読み出しを行う。又、この際、セレクタ・バッファ制御部２１２ｂは、データクロスバー先デコーダ２１２ａからの出力ポート選択通知により、通知された出力ポート３２０、出力ポート４２０及び出力ポート５２０のうち、Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値を読み出す。セレクタ・バッファ制御部２１２ｂは、読み出された出力ポートのカウンタ値及びＩ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値を比較する。
【００５７】
更に、セレクタ・バッファ制御部２１２ｂは、カウンタ部２１３のカウンタ値が、Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値より大きい場合、カウンタ部２１３ｄに対して、カウンタ部２１３ｄが保持するＲＰのカウンタ数の読み出し指示を行う。セレクタ・バッファ制御部２１２ｂは、カウンタ部２１３に対して、通知された出力ポート３２０、出力ポート４２０及び出力ポート５２０に対応するＩ／ＯポートＢ用カウンタ２１３ａ、Ｉ／ＯポートＣ用カウンタ２１３ｂ及びＩ／ＯポートＤ用カウンタ２１３ｃが保持するカウンタ数の減算（−１）指示を行う。そして、セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１のセレクタ２１１ｂに対し、バッファ用バス２１１ｅの選択指示を行う。即ち、セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１に対してバッファ２１１ｃのパケット読出し指示を行う。なお、カウンタ部２１３のカウンタ値が、Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値より大きい場合とは、選択された出力ポートのバッファに、パケットが一時的に記憶されている場合である。
【００５８】
セレクタ・バッファ制御部２１２ｂは、カウンタ部２１３のカウンタ値が、Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値以下の場合、
カウンタ部２１３に対して、通知された出力ポート３２０、出力ポート４２０及び出力ポート５２０に対応するＩ／ＯポートＢ用カウンタ２１３ａ、Ｉ／ＯポートＣ用カウンタ２１３ｂ及びＩ／ＯポートＤ用カウンタ２１３ｃが保持するカウンタ数の減算（−１）指示を行う。なお、カウンタ部２１３のカウンタ値が、Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値より大きい場合とは、選択された出力ポートのバッファに、パケットが一時的に記憶されていない場合である。
【００５９】
カウンタ２１３は、通知された出力ポートに対応するＩ／ＯポートＢ用カウンタ２１３ａ、Ｉ／ＯポートＣ用カウンタ２１３ｂ及びＩ／ＯポートＤ用カウンタ２１３ｃを有する。
【００６０】
Ｉ／ＯポートＢ用カウンタ２１３ａは、Ｉ／ＯポートＢ３００に対応する。Ｉ／ＯポートＢ用カウンタ２１３ａは、Ｉ／ＯノードＡ６００から伝送され、Ｉ／ＯポートＢ３００に出力されるパケットが、クロスバー１００内に蓄積されているカウンタ数を示す。Ｉ／ＯポートＢ用カウンタ２１３ａは、セレクタ制御部２１２からの指示により、カウンタ数の加算又は減算を行う。
【００６１】
Ｉ／ＯポートＣ用カウンタ２１３ｂは、Ｉ／ＯポートＣ４００に対応する。Ｉ／ＯポートＣ用カウンタ２１３ａは、Ｉ／ＯノードＡ６００から伝送され、Ｉ／ＯポートＣ４００に出力されるパケットが、クロスバー１００内に蓄積されているカウンタ数を示す。Ｉ／ＯポートＣ用カウンタ２１３ｂは、セレクタ制御部２１２からの指示により、カウンタ数の加算又は減算を行う。
【００６２】
Ｉ／ＯポートＤ用カウンタ２１３ｃは、Ｉ／ＯポートＤ５００に対応する。Ｉ／ＯポートＤ用カウンタ２１３ｃは、Ｉ／ＯノードＡ６００から伝送され、Ｉ／ＯポートＤ５００に出力されるパケットが、クロスバー１００内に蓄積されているカウンタ数を示す。Ｉ／ＯポートＤ用カウンタ２１３ｃは、セレクタ制御部２１２からの指示により、カウンタ数の加算又は減算を行う。
【００６３】
図４は、本実施例におけるバッファ２１１ｃの構成を示す図である。なお、図４において、図１〜図３で説明した構成と同様の構成には同一符号を付し、説明を省略する。
【００６４】
図４に示すように、バッファ２１１ｃは、２パケットを一時的に記憶できるバッファ構造を有する。バッファ２１１ｃは、ＦＩＦＯ（Ｆｉｒｓｔ  ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）構造となっている。バッファ２１１ｃは、セレクタ・バッファ制御部２１２ｂからの書き込む番地（ＷＰ：Ｗｒｉｔｅ  Ｐｏｉｎｔｅｒ）に対する書込み指示により、パケットの書込みが行われる。又、バッファ２１１ｃは、セレクタ・バッファ制御部２１２ｂからの読み出す番地（ＲＰ：Ｒｅａｄ  Ｐｏｉｎｔｅｒ）に対する読出し指示により、パケットの読出しが行われる。
【００６５】
図５は、本実施例における出力ポート４２０の構成を示す図である。なお、図５において、図１〜図４で説明した構成と同様の構成には同一符号を付し、説明を省略する。
【００６６】
出力バッファ制御部４２２は、データクロスバー１１０を介してＩ／ＯポートＡ２００、Ｉ／ＯポートＢ３００又はＩ／ＯポートＤ５００からパケットが伝送されると、出力バッファ部４２３の対応するＩ／ＯポートＡ用バッファ４２３ａ、Ｉ／ＯポートＢ用バッファ４２３ｂ又はＩ／ＯポートＤ用バッファ４２３ｃに対してパケットの書込み指示を行う。出力バッファ制御部４２２は、データクロスバー１１０を介してＩ／ＯポートＡ２００、Ｉ／ＯポートＢ３００又はＩ／ＯポートＤ５００からパケットが伝送されると、アービタ部４２１に対してパケット送信の調停を行う旨のパケットリクエストを行う。出力バッファ制御部４２２は、アービタ部４２１から通知された調停結果に基づいて、調停に勝ったパケットリクエストに対応するＩ／ＯポートＡ用バッファ４２３ａ、Ｉ／ＯポートＢ用バッファ４２３ｂ又はＩ／ＯポートＤ用バッファ４２３ｃのうち何れかのバッファに対しパケットの読出し指示を行う。出力バッファ制御部４２２は、調停に勝ったポートの入力ポート２１０、入力ポート３１０、入力ポート４１０及び入力ポート５１０に対して、パケットを送信できる数の返却通知を行う。
【００６７】
出力バッファ制御部４２２は、Ｉ／ＯポートＡ用バッファ４２３ａ、Ｉ／ＯポートＢ用バッファ４２３ｂ又はＩ／ＯポートＤ用バッファ４２３ｃのうち何れかのバッファにパケットを記憶すると、アービタ部４２１に対して通知を行う。
【００６８】
図６は、本実施例における入力ポート２１０の動作を示す図である。なお、図６において、図１〜図５で説明した構成と同様の構成には同一符号を付し、説明を省略する。図６は、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送されたときの動作を説明する為の図である。なお、図６において、ノードＡ６００から送信できるパケット数（クレジット数）が２であり、且つ、Ｉ／ＯポートＡ用バッファ４２３ａが空であることを前提とする。
【００６９】
図６に示すように、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送される。
【００７０】
次いで、データクロスバー先デコーダ２１２ａは、伝送されたパケットの宛先がノードＣ８００であると判断する。
【００７１】
データクロスバー先デコーダ２１２ａは、セレクタ・バッファ制御部２１２ｂに対して、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送されたことを通知する。
【００７２】
そして、セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＡ用バッファ４２３ａの容量の閾値である「２」と、Ｉ／ＯポートＣ用カウンタ２１３ｂから受信しているＩ／ＯポートＣ用カウンタ値である「０」とを比較する。
【００７３】
次に、セレクタ・バッファ制御部２１２ｂは、この比較結果から、Ｉ／ＯポートＣ用カウンタ値はＩ／ＯポートＡ用バッファ４２３ａの容量の閾値より小さいと判断する。即ち、セレクタ・バッファ制御部２１２ｂは、出力ポート４２０のＩ／ＯポートＣ用バッファ４２３ａに空きがあると判断する。
【００７４】
そして、セレクタ・バッファ制御部２１２ｂは、通知されたカウンタ２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、カウンタ値の加算（＋１）指示を行う。又、セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１のセレクタ２１１ｂに対し、バイパスパス２１１ｄを選択してパケットの伝送を行う旨の指示を行う。
【００７５】
カウンタ２１３は、セレクタ・バッファ制御部２１２ｂからの指示により、Ｉ／ＯポートＣ用カウンタ２１３ｂの加算（＋１）を行う。
【００７６】
また、セレクタ２１１ｂは、セレクタ・バッファ制御部２１２ｂからの指示により、バッファ２１１ａから伝送されたパケットを、バイパスパス２１１ｄに切替えて伝送する。伝送されたパケットは、バイパスパス２１１ｄを経由してデータクロスバー１１０に伝送される。
【００７７】
図７は、本実施例における入力ポート２１０の動作を示す図である。なお、図７において、図１〜図６で説明した構成と同様の構成には同一符号を付し、説明を省略する。図７は、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送されたときの動作を説明する為の図である。なお、図７において、ノードＡ６００から送信できるパケット数（クレジット数）が１であり、且つ、Ｉ／ＯポートＡ用バッファ４２３ａに２個のパケットが一時的に記憶されていることを前提とする。即ち、Ｉ／ＯポートＡ用バッファ４２３ａには、パケットを記憶する為の空きが無いことを前提とする。
【００７８】
図７に示すように、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送される。
【００７９】
次いで、データクロスバー先デコーダ２１２ａは、伝送されたパケットの宛先がノードＣ８００であると判断する。
【００８０】
データクロスバー先デコーダ２１２ａは、セレクタ・バッファ制御部２１２ｂに対して、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送されたことを通知する。
【００８１】
セレクタ・バッファ制御部２１２ｂは、レジスタ２１２ｃに対して出力ポート４２０のＩ／ＯポートＢ用バッファ４２３ｂの閾値を問合せる。セレクタ・バッファ制御部２１２ｂは、レジスタ２１２ｃから、Ｉ／ＯポートＢ用バッファ４２３ｂの容量の閾値である「２」を受信する。
【００８２】
セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＣ用カウンタ２１３ｂに対して、Ｉ／ＯポートＣ４００に対して出力待ちとなっているパケット数を問合せる。
【００８３】
セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＡ用バッファ４２３ａの容量の閾値と、Ｉ／ＯポートＣ用カウンタ２１３ｂから受信しているＩ／ＯポートＣ用カウンタ値である「２」とを比較する。
【００８４】
セレクタ・バッファ制御部２１２ｂは、この比較の結果、Ｉ／ＯポートＣ用カウンタ２１３ｂのカウンタ値がＩ／ＯポートＡ用バッファ４２３ａの容量の閾値以上である場合、セレクタ・バッファ制御部２１２ｂは、出力ポート４２０のＩ／ＯポートＡ用バッファ４２３ａに空きがないと判断する。
【００８５】
また、比較の結果、Ｉ／ＯポートＣ用カウンタ２１３ｂのカウンタ値がＩ／ＯポートＡ用バッファ４２３ａの容量の閾値以上であった場合、セレクタ・バッファ制御部２１２ｂは、カウンタ２１２ｄに対し、バッファ２１１ｃにパケットが１個だけ一時的に記憶されたことを示すためのカウンタ値の加算（＋１）指示を行う。セレクタ・バッファ制御部２１２ｂは、通知された出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、ＷＰのカウンタ値の加算（＋１）指示を行う。セレクタ・バッファ制御部２１２ｂは、カウンタ２１２ｄが「０」の場合、バッファ２１１ｃに対して、カウンタ２１２ｄが保持するカウンタ数の書込み指示を行う。セレクタ・バッファ制御部２１２ｂは、通知されたカウンタ２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、カウンタ値の加算（＋１）指示を行う。
【００８６】
カウンタ２１３は、セレクタ・バッファ制御部２１２ｂからの指示により、Ｉ／ＯポートＣ用カウンタ２１３ｂの加算（＋１）処理を行う。
【００８７】
セレクタ２１１ｂは、セレクタ・バッファ制御部２１２ｂからの指示により、バッファ２１１ａから伝送されたパケットを、バッファ用バス２１１ｅ経由でバッファ２１１ｃに一時的に記憶する。セレクタ２１１ｂは、カウンタ数が「０」のアドレスに、パケットを一時的に記憶する。
【００８８】
図８〜図１０は、本実施例における入力ポート２１０の動作を説明する為のシーケンス図である。図８のＡに示す処理は図９のＡに続いている。図８のＢに示す処理は図１０のＢに続いている。なお、図８〜図１０において、図１〜図７で説明した構成と同様の構成には同一符号を付し、説明を省略する。図８〜図１０は、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送されたときの動作を説明する為のシーケンス図である。
【００８９】
図８に示すように、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送されると（ＯＰ１）、データクロスバー先デコーダ２１２ａは、伝送されたパケットを受信する（ＯＰ２）。
【００９０】
データクロスバー先デコーダ２１２ａは、伝送されたパケットをデコードし（ＯＰ３）、伝送されたパケットの宛先がノードＣ８００であると判断する。
【００９１】
セレクタ・バッファ制御部２１２ｂは、カウンタ２１２ｄが「０」の場合、バッファ２１１ｃに対して、カウンタ２１２ｄが保持するカウンタ数の書込み指示を行う。セレクタ２１１ｂは、カウンタ数が「０」のアドレスに、パケットを一時的に記憶する。セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１のセレクタ２１１ｂに対し、バッファ用バス２１１ｅを選択する旨の指示を行う。
【００９２】
データクロスバー先デコーダ２１２ａは、セレクタ・バッファ制御部２１２ｂに対して、パケットの宛先情報を通知する（ＯＰ４）。
【００９３】
セレクタ・バッファ制御部２１２ｂは、セレクタ・バッファ制御部２１２ｂから、パケットの宛先情報を受信する（ＯＰ５）。
【００９４】
セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＣ用カウンタ値が、Ｉ／ＯポートＡ用バッファ４２３ａの容量の閾値以上であるか判断する（ＯＰ６）。
【００９５】
セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＣ用カウンタ値がＩ／ＯポートＡ用バッファ４２３ａの容量の閾値より小さい場合（ＯＰ６：ＮＯ）、セレクタ・バッファ制御部２１２ｂは、通知されたカウンタ２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、Ｉ／ＯポートＣ用カウンタ値の加算指示を行う（ＯＰ２１）。即ち、セレクタ・バッファ制御部２１２ｂは、出力ポート４２０のＩ／ＯポートＡ用バッファ４２３ａに空きがあると判断する。
【００９６】
一方、セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＣ用カウンタ値がＩ／ＯポートＡ用バッファ４２３ａの容量の閾値以上である場合（ＯＰ６：ＹＥＳ）、入力バッファ部２１１のセレクタ２１１ｂに対し、バッファ用バス２１１ｅを選択する旨の指示を行う（ＯＰ３１）。即ち、セレクタ・バッファ制御部２１２ｂは、出力ポート４２０のＩ／ＯポートＡ用バッファ４２３ａに空きがないと判断する。
【００９７】
セレクタ・バッファ制御部２１２ｂは、通知されたカウンタ２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、ＷＰのカウンタ値の加算指示を行う（ＯＰ３２）。
【００９８】
Ｉ／ＯポートＣ用カウンタ２１３ｂは、セレクタ・バッファ制御部２１２ｂから、カウンタ値の加算指示を受信する（ＯＰ２２）。Ｉ／ＯポートＣ用カウンタ２１３ｂは、カウンタ値の加算処理を行う（ＯＰ２３）。
【００９９】
セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１のセレクタ２１１ｂに対し、バイパスパス２１１ｄを選択してパケットの伝送を行う旨の指示を行う（ＯＰ２４）。
【０１００】
入力バッファ部２１１は、セレクタ・バッファ制御部２１２ｂから、セレクタ２１１ｂによってバイパスパス２１１ｄを選択してパケットの伝送を行う旨の指示を受信する（ＯＰ２５）。入力バッファ部２１１のセレクタ２１１ｂは、セレクタ２１１ｂによってバイパスパス２１１ｄを選択し（ＯＰ２６）、伝送されたパケットを、バイパスパス２１１ｄを介して伝送する。
【０１０１】
ノードＡ６００からノードＣ８００宛のパケットは、Ｉ／ＯポートＡ２００の入力ポート２１０に伝送され（ＯＰ２７）、バイパスパス２１１ｄを介してパケットをデータクロスバー１１０へ伝送する（ＯＰ２８）。
【０１０２】
セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１のセレクタ２１１ｂに対し、バッファ用バス２１１ｅを選択する旨の指示を行う（ＯＰ３１）。
【０１０３】
入力バッファ部２１１は、セレクタ・バッファ制御部２１２ｂから、セレクタ２１１ｂによってバッファ用バス２１１ｅを選択する旨の指示を受信する（ＯＰ３２）。入力バッファ部２１１のセレクタ２１１ｂは、セレクタ２１１ｂによってバッファ用バス２１１ｅを選択する（ＯＰ３３）。
【０１０４】
ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送されると（ＯＰ３４）、入力バッファ部２１１のバッファ２１１ｃは、バッファ用バス２１１ｅを介してパケットをバッファ２１１ｃに伝送する（ＯＰ３５）。バッファ２１１ｃは、ノードＣ８００宛のパケットを一時的に記憶する（ＯＰ３６）。
【０１０５】
セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１のセレクタ２１１ｂに対し、バッファ用バス２１１ｅを選択する旨の指示を行った後（ＯＰ３１）、カウンタ２１２ｄが「０」の場合、バッファ２１１ｃに対して、カウンタ２１２ｄが保持するカウンタ数「０」の書込み指示を行う（ＯＰ３７）。
【０１０６】
カウンタ２１２ｄは、セレクタ・バッファ制御部２１２ｂから、カウンタ値の加算指示を受信する（ＯＰ３８）。
【０１０７】
カウンタ２１２ｄは、バッファ２１１ｃにパケットが一時的に記憶されたことを示すためのカウンタ値の加算処理を行う（ＯＰ３９）。
【０１０８】
セレクタ・バッファ制御部２１２ｂは、通知された出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、カウンタ値の加算指示を行う（ＯＰ４０）。Ｉ／ＯポートＣ用カウンタ２１３ｂは、セレクタ・バッファ制御部２１２ｂから、カウンタ値の加算指示を受信する（ＯＰ４１）。
【０１０９】
Ｉ／ＯポートＣ用カウンタ２１３ｂは、セレクタ・バッファ制御部２１２ｂから、カウンタ値の加算処理を行う（ＯＰ４２）。
【０１１０】
図１１は、本実施例における入力ポート２１０の動作を示す図である。なお、図１１において、図１〜図１０で説明した構成と同様の構成には同一符号を付し、説明を省略する。図１１は、入力ポート２１０が出力ポート４２０からクレジットの返却通知を受信したときの動作を説明する為の図である。
【０１１１】
図１１に示すように、Ｉ／ＯポートＣ４００の出力ポート４２０は、Ｉ／ＯポートＡ２００の入力ポート２１０に対して、ノードＣ８００宛のパケットに対するクレジット返却通知処理を行う。なお、図１１において、ノードＡ６００から送信できるパケット数（クレジット数）が０であり、且つ、出力ポート４２０から、ノードＣ８００宛のパケットがノードＣに対して転送されたことを前提とする。
【０１１２】
入力ポート２１０のセレクタ・バッファ制御部２１２ｂは、出力ポート４２０から、ノードＣ８００宛のパケットに対するクレジット返却通知を受信する。
【０１１３】
セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＡ用バッファ４２３ａの容量の閾値である「２」と、Ｉ／ＯポートＣ用カウンタ２１３ｂから受信しているＩ／ＯポートＣ用カウンタ値である「３」とを比較する。
【０１１４】
セレクタ・バッファ制御部２１２ｂは、比較結果から、Ｉ／ＯポートＣ用カウンタ値はＩ／ＯポートＡ用バッファ４２３ａの容量の閾値より大きいか判断する。即ち、セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１のＩ／ＯポートＡ用バッファ４２３ａにパケットが一時的に記憶されていると判断する。
【０１１５】
セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１に対し、バッファ２１１ｃに一時的に記憶されたパケットをＩ／ＯポートＣ４００の出力ポート４２０に伝送する指示を行う。セレクタ・バッファ制御部２１２ｂは、カウンタ２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、ＷＰのカウンタ値の減算（−１）指示を行う。又、セレクタ・バッファ制御部２１２ｂは、カウンタ２１２ｄに対し、ＲＰのカウンタ値の加算（＋１）指示を行う。
【０１１６】
入力バッファ部２１１は、バッファ２１１ｃのＲＰ＝０に一時的に記憶されたパケットを出力ポート４２０に伝送する。
【０１１７】
カウンタ２１３は、セレクタ・バッファ制御部２１２ｂからの指示により、Ｉ／ＯポートＣ用カウンタ２１３ｂの減算（−１）処理を行う。
【０１１８】
カウンタ２１２ｄは、セレクタ・バッファ制御部２１２ｂからの指示により、ＲＰのカウンタ値の加算（＋１）処理を行う。
【０１１９】
図１２〜図１４は、本実施例における入力ポート２１０の動作を示す図である。図１２のＡに示す処理は図１３のＡに続いている。図１２のＢに示す処理は図１４のＢに続いている。なお、図１２〜図１４において、図１〜図１１で説明した構成と同様の構成には同一符号を付し、説明を省略する。図１２〜図１４は、図１１は、入力ポート２１０が出力ポート４２０からクレジットの返却通知を受信したときの動作を説明する為のシーケンス図である。
【０１２０】
図１２に示すように、Ｉ／ＯポートＣ４００の出力ポート４２０は、Ｉ／ＯポートＡ２００の入力ポート２１０に対して、ノードＣ８００宛のパケットに対するクレジット返却通知処理を行う（ＯＰ５１）。
【０１２１】
入力ポート２１０のセレクタ・バッファ制御部２１２ｂは、出力ポート４２０から、ノードＣ８００宛のパケットに対するクレジット返却通知を受信する（ＯＰ５２）。
【０１２２】
セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＣ用カウンタ値が、Ｉ／ＯポートＡ用バッファ４２３ａの容量の閾値より大きいか判断する（ＯＰ５３）。
【０１２３】
セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＣ用カウンタ値が、Ｉ／ＯポートＡ用バッファ４２３ａの容量の閾値より大きい場合（ＯＰ５３：ＹＥＳ）、入力バッファ部２１１に対し、バッファ２１１ｃのＲＰ＝０に一時的に記憶されたパケットをＩ／ＯポートＣ４００の出力ポート４２０に伝送する指示を行う（ＯＰ７１）。即ち、セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１のバッファ２１１ｃにパケットが一時的に記憶されていると判断する。
【０１２４】
一方、セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＣ用カウンタ値が、Ｉ／ＯポートＡ用バッファ４２３ａの容量以下である場合（ＯＰ６１：ＮＯ）、セレクタ・バッファ制御部２１２ｂは、通知されたカウンタ２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、ＷＰのカウンタ値の減算指示を行う（ＯＰ９１）。即ち、セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１のバッファ２１１ｃにパケットが記憶されていないと判断する。
【０１２５】
入力バッファ部２１１は、セレクタ・バッファ制御部２１２ｂから、バッファ２１１ｃのＲＰ＝０に一時的に記憶されたパケットをＩ／ＯポートＣ４００の出力ポート４２０に伝送する指示を受信する（ＯＰ７２）。
【０１２６】
入力バッファ部２１１は、Ｉ／ＯポートＣ４００宛のパケットをバッファ２１１ｃのＲＰ＝０に一時的に記憶し（ＯＰ７３）、Ｉ／ＯポートＣ４００宛のパケットを出力ポート４２０に伝送する（ＯＰ７４）。伝送されたＩ／ＯポートＣ４００宛のパケットは、データクロスバー１１０へ伝送される（ＯＰ７５）。
【０１２７】
セレクタ・バッファ制御部２１２ｂは、カウンタ２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、カウンタ値の減算指示を行う（ＯＰ７６）。Ｉ／ＯポートＣ用カウンタ２１３ｂは、セレクタ・バッファ制御部２１２ｂから、Ｉ／ＯポートＣ用カウンタ２１３ｂに対するカウンタ値の減算指示を受信する（ＯＰ７７）。Ｉ／ＯポートＣ用カウンタ２１３ｂは、Ｉ／ＯポートＣ用カウンタ２１３ｂに対するＷＰのカウンタ値の減算処理を行う（ＯＰ７８）。
【０１２８】
セレクタ・バッファ制御部２１２ｂは、カウンタ２１２ｄに対し、ＲＰのカウンタ値の加算指示を行う（ＯＰ７９）。カウンタ２１２ｄは、セレクタ・バッファ制御部２１２ｂから、ＲＰのカウンタ値の加算指示を受信する（ＯＰ８０）。カウンタ２１２ｄは、ＲＰのカウンタ値の加算処理を行う（ＯＰ８１）。
【０１２９】
セレクタ・バッファ制御部２１２ｂが、通知されたカウンタ２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、カウンタ値の減算指示を行うと（ＯＰ９１）、Ｉ／ＯポートＣ用カウンタ２１３ｂは、セレクタ・バッファ制御部２１２ｂからカウンタ値の減算指示を受信する（ＯＰ９２）。Ｉ／ＯポートＣ用カウンタ２１３ｂは、カウンタ値の減算処理を行う（ＯＰ９３）。
【０１３０】
図１５は、本実施例における出力ポート数とバッファ削減比率との関係を説明する図である。出力ポート数とは、クロスバー１００が有する出力ポート２２０、出力ポート３２０、出力ポート４２０及び出力ポート５２０の総数を示す。バッファ削減比率とは、従来技術で説明した出力ポートのみにパケットを記憶する為のバッファを設けた場合と、本実施例における入力ポート及び出力ポートにパケットを記憶する為のバッファを設けた場合とにおけるバッファの削減比率を示す。
【０１３１】
図１５に示すように、出力ポート数が２個の場合におけるバッファ削減比率は２５％である。出力ポート数が３個の場合におけるバッファ削減比率は３３％である。出力ポート数が４個の場合におけるバッファ削減比率は３８％である。出力ポート数が５個の場合におけるバッファ削減比率４０％である。出力ポート数が６個の場合におけるバッファ削減比率は４２％である。出力ポート数が７個の場合におけるバッファ削減比率は４３％である。出力ポート数が８個の場合におけるバッファ削減比率は４４％である。出力ポート数が９個の場合におけるバッファ削減比率は４４％である。出力ポート数が１０個の場合におけるバッファ削減比率は４５％である。出力ポート数が１１個の場合におけるバッファ削減比率は４６％である。出力ポート数が１２個の場合におけるバッファ削減比率は４６％である。出力ポート数が１３個の場合におけるバッファ削減比率は４６％である。出力ポート数が１４個の場合におけるバッファ削減比率は４６％である。出力ポート数が１５個の場合におけるバッファ削減比率は４７％である。
【０１３２】
以上のように、本実施の形態におけるクロスバー１００を用いることで、出力ポート数が多くなるほど、従来技術と比較してバッファ削減比率が高くなることがわかる。なお、バッファ削減比率は、入力バッファの一種であるバッファ２１１ｃの容量と、出力バッファの一種であるＩ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ、Ｉ／ＯポートＡ用バッファ５２３ａの容量が等しく、且つそれぞれのバッファ容量がノードＡ６００が送信できるパケット送信数の半分の時に最も高くなる。
【産業上の利用可能性】
【０１３３】
本実施例に開示の技術によれば、制御部の一種であるセレクタ制御部２１２は、対応するプロセッサの一種であるノードＡ６００からのパケットのうち、ノードＡ６００に対応する宛先のパケットを、入力バッファの一種であるバッファ２１１ｃに記憶したあとにクロスバースイッチの一種であるデータクロスバー１１０に送信する指示を行う。一方、制御部の一種であるセレクタ制御部２１２は、指示がないプロセッサの一種であるノードＡ６００に対応する宛先のパケットを、バッファ２１１ｃへの記憶を行わずクロスバースイッチの一種であるデータクロスバー１１０へ送信する指示を行う。そのため、消費電力を上げること無く、クロスバーの効率的な伝送を行うことが出来る情報処理装置及び情報処理装置の制御方法を提供することが可能となる。
【符号の説明】
【０１３４】
１０  情報処理装置
１００  クロスバー
１１０  データクロスバー
２００  Ｉ／ＯポートＡ
２１０、３１０、４１０、５１０  入力ポート
２１１  入力バッファ部
２１１ａ  バッファ
２１１ｂ  セレクタ
２１１ｃ  バッファ
２１１ｄ  バイパスパス
２１１ｅ  バッファ用バス
２１２  セレクタ制御部
２１２ａ  データクロスバー先デコーダ
２１２ｂ  セレクタ・バッファ制御部
２１２ｃ  レジスタ
２１２ｄ  カウンタ
２１３  カウンタ
２１３ａ  Ｉ／ＯポートＢ用カウンタ
２１３ｂ  Ｉ／ＯポートＣ用カウンタ
２１３ｃ  Ｉ／ＯポートＤ用カウンタ
２１４  バス
２２０、３２０、４２０、５２０  出力ポート
３００  Ｉ／ＯポートＢ
２２１、３２１、４２１、５２１  アービタ部
３２２、４２２、５２２  出力バッファ制御部
３２３、４２３、５２３  出力バッファ部
３２３ａ  Ｉ／ＯポートＡ用バッファ
３２３ｂ  Ｉ／ＯポートＣ用バッファ
３２３ｃ  Ｉ／ＯポートＤ用バッファ
３２３ｄ、４１３ｄ、５２３ｄ  バス
３２４、４２４、５２４  バス
４００  Ｉ／ＯポートＣ
４２３ｂ  Ｉ／ＯポートＢ用バッファ
４２３ｃ  Ｉ／ＯポートＤ用バッファ
５００  Ｉ／ＯポートＤ５００
５２３ａ  Ｉ／ＯポートＡ用バッファ
５２３ｂ  Ｉ／ＯポートＢ用バッファ
５２３ｃ  Ｉ／ＯポートＣ用バッファ
６００  ノードＡ
６１０、６２０、７１０、７２０、８１０、８２０、９１０、９２０  ＣＰＵ
６３０、６４０、７３０、７４０、８３０、８４０、９３０、９４０  メモリ
６５０、７５０、８５０、９５０  ノードコントローラ
６５１、７５１、８５１、９５１  送信バッファ
６５２、７５２、８５２、９５２  受信バッファ
７００  ノードＢ
８００  ノードＣ
９００  ノードＤ
【図１】
2013027247.tif 000003
【図２】
2013027247.tif 000004
【図３】
2013027247.tif 000005
【図４】
2013027247.tif 000006
【図５】
2013027247.tif 000007
【図６】
2013027247.tif 000008
【図７】
2013027247.tif 000009
【図８】
2013027247.tif 000010
【図９】
2013027247.tif 000011
【図１０】
2013027247.tif 000012
【図１１】
2013027247.tif 000013
【図１２】
2013027247.tif 000014
【図１３】
2013027247.tif 000015
【図１４】
2013027247.tif 000016
【図１５】
2013027247.tif 000017
【手続補正書】
【提出日】平成26年3月18日(2014.3.18)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】明細書
【発明の名称】情報処理装置及び情報処理装置の制御方法
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
従来から、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を搭載した複数のノードを、クロスバーで接続する情報処理装置が知られている。このような情報処理装置に於いて、クロスバーは、各々のノードが接続される複数のＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）ポートと、各Ｉ／Ｏポートが接続され、各々のＩ／Ｏポート間のデータ交換を行うためのデータクロスバーを有する。各Ｉ／Ｏポートには、接続されたノードからのパケットをデータクロスバーへ送る入力ポートと、データクロスバーから送られてきたパケットを、接続されているノードへ送信する出力ポートを有する。
【０００３】
このようなクロスバーを有する情報処理装置は、各ノードが接続された入力ポート、もしくは、出力ポートにパケットを一時的に保持するバッファを設けていることが多い。
【０００４】
なお、このバッファをクロスバーの各Ｉ／Ｏポートの入力ポート側に設け、複数のノード間におけるパケット転送の順序を調停する情報処理装置が知られている。
【０００５】
【特許文献１】特開平１１−２３２２３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
情報処理装置の各入力ポート側にバッファを設けた場合、各出力ポートは、パケットを蓄積しないため、接続されているノードへのパケット送信が可能となった時点で他のＩ／Ｏポートの入力ポートへパケットの出力要求を送信し、このリクエストに対して送信されたいずれかの入力ポートからのパケットを、接続されているノードへ送信することになる。即ち、バッファから出力ポート側へデータを転送するには、出力ポートからのリクエスト・入力バッファからのパケット転送の２回の通信を行うことになる。
【０００７】
対して、情報処理装置の各出力ポート側にバッファを設けた場合は、入力ポートではパケットを貯められない事から、入力ポートが受信したパケットは、そのまま出力ポートへ送信されることになる。即ち、入力ポートにバッファを設けた場合のように、出力ポートからのリクエストが必要なく、入力ポートにバッファを設けた場合に比べて、通信回数が少なくて済む。
【０００８】しかしながら、情報処理装置におけるノードからのパケットは所定数連続して意味を成すものが多いため、各々の出力ポートには、他の入力ポート各々に対応した数のバッファを設けておく必要がある。このため、出力ポートにバッファを設ける場合には、入力ポートにバッファを設ける場合に対して、バッファの容量が大きくなってしまう。
【０００９】
１つの側面では、本発明は、クロスバーの効率的な伝送を行うことを目的とする。
【課題を解決するための手段】
【００１０】
本発明の課題を解決するため、開示の技術の第１の側面によれば、
複数のプロセッサと、
前記複数のプロセッサ間のパケットを中継するクロスバースイッチと、
各々が前記複数のプロセッサのひとつに対応し、前記クロスバースイッチ経由で受信した対応プロセッサ宛のパケットを、送信元のプロセッサ毎に記憶する複数の出力バッファと、
前記複数のプロセッサの各々に対応して設けられ、前記対応するプロセッサから送信される他のプロセッサ宛のパケットを記憶する入力バッファと、
各々の出力バッファに対応して設けられ、対応する出力バッファの空き容量に応じた指示を前記各入力バッファへ行う指示部と、
前記指示部からの指示に基づき、前記出力バッファの空き容量が所定以下の場合、対応するプロセッサからのパケットを前記入力バッファに記憶した後に前記クロスバースイッチへ送信を行い、前記出力バッファの空き容量が所定以下ではない場合、前記対応するプロセッサからのパケットの前記入力バッファへの記憶を行わず前記クロスバースイッチへ送信を行う制御部と、を有する情報処理装置が提供される。
【発明の効果】
【００１１】
開示の技術によれば、クロスバーの効率的な伝送が可能となる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本実施例における情報処理装置の構成の概略を示すブロック図である。
【図２】図２は、本実施例におけるクロスバーの説明図である。
【図３】図３は、本実施例における入力ポートの構成を示す図である。
【図４】図４は、本実施例にバッファの構成を示す図である。
【図５】図５は、本実施例における出力ポートの構成を示す図である。
【図６】図６は、本実施例における入力ポートの動作を説明する為の図である。
【図７】図７は、本実施例における入力ポートの動作を説明する為の図である。
【図８】図８は、本実施例における入力ポートにパケットが到達した時の処理を示すシーケンス図である。
【図９】図９は、本実施例における入力ポートの動作を説明する為のシーケンス図である。
【図１０】図１０は、本実施例における入力ポートの動作を説明する為のシーケンス図である。
【図１１】図１１は、本実施例における入力ポートの動作を説明する為の図である。
【図１２】図１２は、本実施例における入力ポートの動作を説明する為のシーケンス図である。
【図１３】図１３は、本実施例における入力ポートの動作を説明する為のシーケンス図である。
【図１４】図１４は、本実施例における入力ポートの動作を説明する為のシーケンス図である。
【図１５】図１５は、本実施例における出力ポート数とバッファ削減比率との関係を説明する図である。
【発明を実施するための形態】
【００１３】
以下、開示の技術について、図面を用いて詳細に説明する。
図１は、本実施例における情報処理装置の構成の概略を示すブロック図である。図１に示すように、情報処理装置１０は、クロスバー１００を有している。このクロスバー１００は、各々、ノードＡ６００、ノードＢ７００、ノードＣ８００、及び、ノードＤ９００が接続されるＩ／ＯポートＡ２００、Ｉ／ＯポートＢ３００、Ｉ／ＯポートＣ４００、及び、Ｉ／ＯポートＤ５００を有している。
【００１４】
また、各々のＩ／ＯポートＡ２００、Ｉ／ＯポートＢ３００、Ｉ／ＯポートＣ４００、及び、Ｉ／ＯポートＤ５００は、クロスバー１００内のデータクロスバー１１０に接続されている。
【００１５】
以下にノードＡ６００について説明する。なお、ノードＢ７００、ノードＣ８００、及び、ノードＤ９００は、ノードＡ６００と同様の構成を有しているものとし、説明を省略する。
【００１６】
ノードＡ６００では、演算処理装置の一種であるＣＰＵ６１０及びＣＰＵ６２０、並びに、メモリ６３０及びメモリ６４０がノードコントローラ６５０に接続される。メモリ６３０及びメモリ６４０は、ＣＰＵ６１０及びＣＰＵ６２０が行った演算結果を記憶する記憶部である。又、メモリ６３０及びメモリ６４０は、ノードＢ７００、ノードＣ８００、及び／又は、ノードＤ９００から転送されるパケットを記憶する。
【００１７】
ノードコントローラ６５０は、ノードＡ６００全体の制御を司る制御回路である。このノードコントローラ６５０は、ＣＰＵ６１０及びＣＰＵ６２０、又は、メモリ６３０及びメモリ６４０とクロスバー１００との間で送受信される各種パケットを記憶する受信バッファ６５２及び送信バッファ６５１を含む。
【００１８】
送信バッファ６５１は、ＣＰＵ６１０及びＣＰＵ６２０から他のノード若しくはＩ／Ｏポートへ出力される各種パケットを一時記憶するバッファである。送信バッファ６５１に一時記憶されるパケットは、後述するクロスバー１００のＩ／ＯポートＡ２００の入力ポート２１０へ送信される。
【００１９】
受信バッファ６５２は、後述するクロスバー１００から受信したパケットを一時記憶する。受信バッファ６５２に一時記憶されるパケットは、ＣＰＵ６１０及び／又はＣＰＵ６２０、メモリ６３０及びメモリ６４０にそれぞれ出力される。
【００２０】
なお、クロスバー１００に接続されるノードの数は、上記したノードＡ６００、ノードＢ７００、ノードＣ８００及びノードＤ９００の４つに限定されるものではない。また、ノードは、それぞれ２つのＣＰＵ及び２つのメモリを含むが、それぞれ「２つ」に限定されるものではなく、また、ＣＰＵ及びメモリ以外の機能部を含んでもよい。
【００２１】
クロスバー１００は、データクロスバー（クロスバースイッチに相当）１１０、Ｉ／ＯポートＡ２００及びＩ／ＯポートＢ３００、Ｉ／ＯポートＣ４００及びＩ／ＯポートＤ５００を含む。
【００２２】
データクロスバー１１０は、クロスバー１００内の各Ｉ／ＯポートＡ２００，Ｂ３００，Ｃ４００，Ｄ５００から出力されるパケットを、宛先となる各Ｉ／ＯポートＡ２００，Ｂ３００，Ｃ４００，Ｄ５００に対してルーティングを行う。
【００２３】
Ｉ／ＯポートＡ２００は、入力ポート２１０及び出力ポート２２０を含む。入力ポート２１０は、ノードＡ６００のノードコントローラ６５０の送信バッファ６５１から受信したパケットをデータクロスバー１１０に出力する。
【００２４】
図２は、本実施例におけるクロスバー１００の説明図である。詳しくは、図２では、クロスバー１００の構成のうち、データクロスバー１１０，Ｉ／ＯポートＡ２００の入力ポート２１０、Ｉ／ＯポートＢ３００，Ｃ４００，Ｄ５００の各出力ポート３２０，４２０，５２０、及び、アービタ部３２１，４２１，５２１を抽出した図である。
なお、図示はしていないが、本実施の形態に於いて、Ｉ／ＯポートＡ２００の出力ポート２２０は、他の出力ポート３２０、４２０，及び５２０と同じ構成を有しているものとする。同様に、Ｉ／ＯポートＢ３００，Ｃ４００，Ｄ５００の入力ポート３１０，４１０，５１０は、Ｉ／ＯポートＡ２００の入力ポート２１０と同じ構成であるものとする。
【００２５】
図２に示すように、クロスバー１００は、データクロスバー１１０、Ｉ／ＯポートＡ２００の入力ポート２１０、Ｉ／ＯポートＢ３００の出力ポート３２０、Ｉ／ＯポートＣ４００の出力ポート４２０及びＩ／ＯポートＤ５００の出力ポート５２０を有する。なお、Ｉ／ＯポートＢ３００の出力ポート３２０は、Ｉ／ＯポートＣ４００の出力ポート４２０及びＩ／ＯポートＤ５００の出力ポート５２０と同一の構成である。符号を除き名称が一致する機能部は、同一の機能を有し、同一の処理を行う。なお、本実施の形態では、ノードＡ６００から、ノードＢ７００、ノードＣ８００及びノードＤ９００に対して送信できるパケット送信数（クレジット数）は、４と設定されている。
【００２６】
入力ポート２１０は、入力バッファ部２１１、セレクタ制御部２１２及びカウンタ部２１３を有する。入力バッファ部２１１、セレクタ制御部２１２及びカウンタ部２１３は、バス２１４を介して互いに接続されている。
【００２７】
入力バッファ部２１１は、バッファ２１１ａ、セレクタ２１１ｂ、バッファ２１１ｃ、バイパスパス２１１ｄ及びバッファ用バス２１１ｅを有する。
【００２８】
バッファ２１１ａは、セレクタ制御部２１２からのセレクタ２１１ｂへの指示とノードＡ６００から送信されたパケットのセレクタ２１１ｂへの供給とのタイミングを合わせるために、該パケットを一時的に記憶する。タイミング調整後、バッファ２１１ａ内のパケットは、セレクタ２１１ｂへ伝送される。なお、このようなタイミング調整が必要とされない場合には、バッファ２１１ａはなくてもよい。
【００２９】
セレクタ２１１ｂは、セレクタ制御部２１２からの指示に基づいて、バッファ２１１ａから伝送されたパケットを、バッファ２１１ｃ又はデータクロスバー１１０に切替えて伝送する。
【００３０】
バッファ２１１ｃは、セレクタ２１１ｂから伝送されたパケットを一時的に記憶する。バッファ２１１ｃは、一時的に記憶したパケットを、データクロスバー１１０に伝送する。又、バッファ２１１ｃの容量は、後述するＩ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ、Ｉ／ＯポートＡ用バッファ５２３ａの容量以下であることが望ましい。バッファ２１１ｃは、ノードＡ６００から送信できるパケット送信数の１／２以下の容量を有することが望ましい。
【００３１】
バイパスパス２１１ｄは、セレクタ２１１ｂから伝送されたパケットをデータクロスバー１１０に伝送する。
【００３２】
バッファ用バス２１１ｅは、セレクタ２１１ｂ及びバッファ２１１ｃを接続する。セレクタ２１１ｂから伝送されたパケットは、バッファ用バス２１１ｅを介してバッファ２１１ｃに伝送される。
【００３３】
セレクタ制御部２１２は、セレクタ２１１ｂを制御して、ノードＡ６００から送信されたパケットの送信先をバッファ２１１ｃ又はデータクロスバー１１０に切替える。
【００３４】
カウンタ部２１３は、Ｉ／ＯポートＢ用カウンタ２１３ａ、Ｉ／ＯポートＣ用カウンタ２１３ｂ及びＩ／ＯポートＤ用カウンタ２１３ｃを有する。
【００３５】
Ｉ／ＯポートＢ用カウンタ２１３ａは、入力ポート２１０を介してクロスバー１００に伝送されたパケットの内、Ｉ／ＯポートＢ３００を介してノードＢ７００へ出力待ちとなっているパケット数をカウントする。Ｉ／ＯポートＢ用カウンタ２１３ａは、セレクタ制御部２１２からの指示に基づいてパケット数の加算又は減算を行う。
【００３６】
Ｉ／ＯポートＣ用カウンタ２１３ｂは、入力ポート２１０を介してクロスバー１００に伝送されたパケットの内、Ｉ／ＯポートＣ４００を介してノードＣ８００へ出力待ちとなっているパケット数をカウントする。Ｉ／ＯポートＣ用カウンタ２１３ｂは、セレクタ制御部２１２からの指示に基づいてパケット数加算又は減算を行う。
【００３７】
Ｉ／ＯポートＤ用カウンタ２１３ｃは、入力ポート２１０を介してクロスバー１００に伝送されたパケットの内、Ｉ／ＯポートＤ５００を介してノードＤ９００へ出力待ちとなっているパケット数をカウントする。Ｉ／ＯポートＤ用カウンタ２１３ｃは、セレクタ制御部２１２からの指示に基づいてパケット数の加算又は減算を行う。
【００３８】
出力ポート３２０は、アービタ部３２１、出力バッファ制御部３２２、出力バッファ部３２３及びバス３２４を有する。アービタ部３２１、出力バッファ制御部３２２及び出力バッファ部３２３は、バス３２４を介して互いに接続されている。
【００３９】
アービタ部３２１は、ノードＢ７００に対して送信できるパケット数の管理を行う。アービタ部３２１は、不図示のカウンタに記憶されているノードＢ７００に対して送信できるパケット数を確認する。アービタ部３２１は、ノードＢ７００に対して送信できるパケット数が存在する場合、出力バッファ制御部３２２が取得するＩ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＣ用バッファ３２３ｂ及びＩ／ＯポートＤ用バッファ３２３ｃから、ノードＢ７００に対してパケットを送信するリクエストの１つを選択する。例えば、Ｉ／ＯポートＡ用バッファ３２３ａ及びＩ／ＯポートＤ用バッファ３２３ｃにパケットが記憶されている場合、出力バッファ制御部３２２からのアービタ部３２１に対するパケットリクエストは、「Ｉ／ＯポートＡ２００又はＩ／ＯポートＤ５００からのパケットを送信する」パケットリクエストになる。ここで、パケットリクエストとは、パケットの送受信に関するリクエストである。
【００４０】
アービタ部３２１は、「Ｉ／ＯポートＡ２００又はＩ／ＯポートＤ５００からのパケットを送信」というパケットリクエストのうち、どちらかのポート（Ｉ／ＯポートＡ２００又はＩ／ＯポートＤ５００）からのパケットを送信するか調停する。アービタ部３２１は、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔ  Ｕｓｅｄ）又はラウンドロビンアルゴリズム等の優先制御に従って、Ｉ／ＯポートＡ２００、Ｉ／ＯポートＣ４００及びＩ／ＯポートＤ５００からのパケット送信に関するパケットリクエストを調停する。調停の結果、「Ｉ／ＯポートＡ２００からのパケットを送信する」パケットリクエストが調停に勝った場合、アービタ部３２１は、出力バッファ制御部３２２を介して調停結果をＩ／ＯポートＡ用バッファ３２３ａに通知する。ここで、「調停に勝つ」とは、アービタ部２２１、アービタ部３２１、アービタ部４２１及びアービタ部５２１間の調停においてパケットリクエストが実際のパケットリクエストを行う権利を獲得することを意味する。ここで、調停に勝ったパケットリクエストは、データクロスバー１１０から、宛先のポートへ出力されることになる。一方、「調停に負ける」とは、調停においてパケットリクエストが実際のパケットリクエストを行う権利を獲得出来なかったことを意味する。すなわち、調停に負けたパケットリクエストは、データクロスバー１１０から、宛先のポートへは出力されない。
【００４１】
出力バッファ制御部３２２は、データクロスバー１１０を介してＩ／ＯポートＡ２００、Ｉ／ＯポートＣ４００又はＩ／ＯポートＤ５００からパケットが伝送されると、出力バッファ部３２３が対応するＩ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＣ用バッファ３２３ｂ又はＩ／ＯポートＤ用バッファ３２３ｃに対してパケットの記憶指示を行う。出力バッファ制御部３２２は、データクロスバー１１０を介してＩ／ＯポートＡ２００、Ｉ／ＯポートＣ４００又はＩ／ＯポートＤ５００からパケットが伝送されると、アービタ部３２１に対してパケット送信の調停を行う旨のパケットリクエストを行う。出力バッファ制御部３２２は、アービタ部３２１から通知された調停結果に基づいて、調停に勝ったパケットリクエストに対応するＩ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＣ用バッファ３２３ｂ又はＩ／ＯポートＤ用バッファ３２３ｃのうち何れかのバッファに対しパケットの転送指示を行う。出力バッファ制御部３２２は、調停に勝ったポートの入力ポート２１０、入力ポート４１０及び入力ポート５１０に対して、パケットを送信できる数の返却通知（クレジット返却通知）を行う。
【００４２】
出力バッファ部３２３は、Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＣ用バッファ３２３ｂ、Ｉ／ＯポートＤ用バッファ３２３ｃ及びバス３２３ｄを有する。Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＣ用バッファ３２３ｂ及びＩ／ＯポートＤ用バッファ３２３ｃは、バス３２３ｄを介して互いに接続されている。
【００４３】
Ｉ／ＯポートＡ用バッファ３２３ａは、Ｉ／ＯポートＡ２００から伝送されたパケットを一時的に記憶する。Ｉ／ＯポートＡ用バッファ３２３ａは、ノードＡ６００から送信できるパケット送信数の１／２以上の容量を有することが望ましい。Ｉ／ＯポートＡ用バッファ３２３ａは、一時的に記憶したパケットを、バス３２３ｄを介してノードＢ７００に伝送する。
【００４４】
Ｉ／ＯポートＣ用バッファ３２３ｂは、Ｉ／ＯポートＣ４００から伝送されたパケットを一時的に記憶する。Ｉ／ＯポートＣ用バッファ３２３ｂは、ノードＣ８００から送信できるパケット送信数の１／２以上の容量を有することが望ましい。Ｉ／ＯポートＣ用バッファ３２３ｂは、一時的に記憶したパケットを、バス３２３ｄを介してノードＢ７００に伝送する。
【００４５】
Ｉ／ＯポートＤ用バッファ３２３ｃは、Ｉ／ＯポートＤ５００から伝送されたパケットを一時的に記憶する。Ｉ／ＯポートＤ用バッファ３２３ｃは、ノードＤ９００から送信できるパケット送信数の１／２以上の容量を有することが望ましい。Ｉ／ＯポートＤ用バッファ３２３ｃは、一時的に記憶したパケットを、バス３２３ｄを介してノードＢ７００に伝送する。
【００４６】
出力ポート４２０は、アービタ部４２１、出力バッファ制御部４２２、出力バッファ部４２３及びバス４２４を有する。アービタ部４２１、出力バッファ制御部４２２及び出力バッファ部４２３は、バス４２４を介して互いに接続されている。なお、本実施の形態では、符号を除き名称が一致するものは、出力ポート３２０における機能部と同一の機能を有し、同一の処理を行うものとする。
【００４７】
出力ポート５２０は、アービタ部５２１、出力バッファ制御部５２２、出力バッファ部５２３及びバス５２４を有する。アービタ部５２１、出力バッファ制御部５２２及び出力バッファ部５２３は、バス５２４を介して互いに接続されている。なお、本実施の形態では、符号を除き名称が一致する機能部は、出力ポート３２０における機能部と同一の機能を有し、同一の処理を行うものとする。
【００４８】
図３は、本実施例における入力ポート２１０の構成を示す図である。なお、図３において、図１及び図２で説明した構成と同様の構成には同一符号を付し、説明を省略する。
【００４９】
セレクタ制御部２１２は、データクロスバー先デコーダ２１２ａ、セレクタ・バッファ制御部２１２ｂ、レジスタ２１２ｃ及びカウンタ２１２ｄを有する。
【００５０】
データクロスバー先デコーダ２１２ａは、ノードＡ６００から伝送されたパケットの伝送先となる出力ポート３２０、出力ポート４２０及び出力ポート５２０のうち、何れかの出力ポートを選択し、セレクタ・バッファ制御部２１２ｂに通知する。
【００５１】
レジスタ２１２ｃは、Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値が記憶されている。Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ及びＩ／ＯポートＡ用バッファ５２３ａが有する容量の閾値は予め設定されている。レジスタ２１２ｃは、セレクタ・バッファ制御部２１２ｂに対して常に閾値を通知している。
【００５２】
カウンタ２１２ｄは、入力ポート２１０に伝送されたパケットにおいて、バッファ２１１ｃに書き込む際の番地（ＷＰ：Ｗｒｉｔｉｎｇ  Ｐｏｉｎｔｅｒ）の情報を記憶している。カウンタ２１２ｄは、バッファ２１１ｃからパケットを読み出す際の番地（ＲＰ：Ｒｅａｄｉｎｇ  Ｐｏｉｎｔｅｒ）の情報が記憶されている。カウンタ２１２ｄは、セレクタ・バッファ制御部２１２ｂからの指示により、ＷＰ及びＲＰの加算（＋１）を行う。
【００５３】
セレクタ・バッファ制御部２１２ｂは、データクロスバー先デコーダ２１２ａからの出力ポート通知により、バッファ２１１ｃのカウンタ値をカウンタ２１２ｄから読み出す。又、セレクタ・バッファ制御部２１２ｂは、データクロスバー先デコーダ２１２ａからの出力ポート通知により通知された出力ポート３２０、出力ポート４２０及び出力ポート５２０のいずれかに対応する、Ｉ／ＯポートＢカウンタ２１３ａ、Ｉ／ＯポートＣカウンタ２１３ｂ及びＩ／ＯポートＤカウンタ２１３ｃのカウンタ値を読み出す。セレクタ・バッファ制御部２１２ｂは、読み出されたカウンタ値とレジスタ２１２ｃの閾値とを比較する。
【００５４】
セレクタ・バッファ制御部２１２ｂは、読み出されたカウンタ値が、レジスタ２１２ｃ閾値以上であった場合、入力バッファ部２１１のセレクタ２１１ｂに対し、バッファ用バス２１１ｅの選択指示を行う。即ち、セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１に対してバッファ２１１ｃへのパケット書き込み指示を行う。その書き込み指示によってパケットが書き込まれるバッファ２１１ｃの番地は、カウンタ２１２ｄのＷＰ値で示される。又、セレクタ・バッファ制御部２１２ｂは、カウンタ２１２ｄに対して、バッファ２１１ｃのＷＰ値の加算（＋１）指示を行う。セレクタ・バッファ制御部２１２ｂは、データクロスバー先デコーダ２１２ａから通知された出力ポートに対応するＩ／ＯポートＢ用カウンタ２１３ａ、Ｉ／ＯポートＣ用カウンタ２１３ｂ及びＩ／ＯポートＤ用カウンタ２１３ｃに対し、カウンタ値の加算（＋１）指示を行う。なお、データクロスバー先デコーダ２１２ａから通知された出力ポートに対応したカウンタ部２１３のカウンタ値が、レジスタ２１２ｃの閾値以上であった場合とは、通知された出力ポートのバッファ(Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａもしくはＩ／ＯポートＡ用バッファ５２３ａ）に、パケットを一時的に記憶する容量が無い場合である。
【００５５】
又、セレクタ・バッファ制御部２１２ｂは、読み出されたカウンタ値が、レジスタ２１２ｃの閾値より小さい場合、入力バッファ部２１１のセレクタ２１１ｂに対し、バイパスパス２１１ｄの選択指示を行う。又、この際、セレクタ・バッファ制御部２１２ｂは、データクロスバー先デコーダ２１２ａから通知された出力ポートに対応するＩ／ＯポートＢ用カウンタ２１３ａ、Ｉ／ＯポートＣ用カウンタ２１３ｂ及びＩ／ＯポートＤ用カウンタ２１３ｃに対し、カウンタ値の加算（＋１）指示を行う。なお、データクロスバー先デコーダ２１２ａから通知された出力ポートに対応したカウンタ部２１３のカウンタ値が、レジスタ２１２ｃの閾値より小さい場合とは、通知された出力ポートのバッファ（Ｉ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａもしくはＩ／ＯポートＡ用バッファ５２３ａ）に、パケットを一時的に記憶する容量がある場合である。
【００５６】
加えて、セレクタ・バッファ制御部２１２ｂは、出力ポート３２０、出力ポート４２０及び出力ポート５２０からクレジット返却通知があった場合、クレジット返却通知をした出力ポート３２０、出力ポート４２０及び出力ポート５２０に対応する、Ｉ／ＯポートＢカウンタ２１３ａ、Ｉ／ＯポートＣカウンタ２１３ｂ、Ｉ／ＯポートＤカウンタ２１３ｃ、のカウンタ値を読み出す。セレクタ・バッファ制御部２１２ｂは、読み出されたカウンタ値とレジスタ２１２ｃの閾値とを比較する。
【００５７】
更に、セレクタ・バッファ制御部２１２ｂは、読み出されたカウンタ値が、レジスタ２１２ｃの閾値より大きい場合、入力バッファ部２１１に対して、バッファ２１１ｃのパケット読み出し指示を行う。その読み出し指示によってパケットが読み出されるバッファ２１１ｃの番地は、カウンタ２１２のＲＰ値で示される。セレクタ・バッファ制御部２１２ｂは、カウンタ部２１３に対して、クレジット返却通知をした出力ポート３２０、出力ポート４２０及び出力ポート５２０に対応するＩ／ＯポートＢ用カウンタ２１３ａ、Ｉ／ＯポートＣ用カウンタ２１３ｂ及びＩ／ＯポートＤ用カウンタ２１３ｃが保持するカウンタ値の減算（−１）指示を行う。なお、読み出されたカウンタ値が、レジスタ２１２ｃの閾値より大きい場合とは、出力ポート３２０、出力ポート４２０及び出力ポート５２０のなかでクレジット返却通知をした出力ポート宛のパケットがバッファ２１１ｃに記憶されている場合である。
【００５８】
セレクタ・バッファ制御部２１２ｂは、読み出されたカウンタ値がレジスタ２１２ｃの閾値以下の場合、カウンタ部２１３に対して、クレジット返却通知をした出力ポート３２０、出力ポート４２０及び出力ポート５２０に対応するＩ／ＯポートＢ用カウンタ２１３ａ、Ｉ／ＯポートＣ用カウンタ２１３ｂ及びＩ／ＯポートＤ用カウンタ２１３ｃが保持するカウンタ値の減算（−１）指示を行う。なお、カウンタ部２１３のカウンタ値が、レジスタ２１２ｃの閾値以下の場合とは、出力ポート３２０、出力ポート４２０及び出力ポート５２０のなかでクレジット返却通知をした出力ポート宛のパケットがバッファ２１１ｃに記憶されていない場合である。
【００５９】
カウンタ部２１３は、出力ポートに対応するＩ／ＯポートＢ用カウンタ２１３ａ、Ｉ／ＯポートＣ用カウンタ２１３ｂ及びＩ／ＯポートＤ用カウンタ２１３ｃを有する。
【００６０】
Ｉ／ＯポートＢ用カウンタ２１３ａは、Ｉ／ＯポートＢ３００に対応する。Ｉ／ＯポートＢ用カウンタ２１３ａは、Ｉ／ＯノードＡ６００から伝送され、ノードＢ７００に出力されるパケットが、クロスバー１００内に蓄積されている数を示す。Ｉ／ＯポートＢ用カウンタ２１３ａは、セレクタ制御部２１２からの指示により、カウンタ値の加算又は減算を行う。
【００６１】
Ｉ／ＯポートＣ用カウンタ２１３ｂは、Ｉ／ＯポートＣ４００に対応する。Ｉ／ＯポートＣ用カウンタ２１３ａは、Ｉ／ＯノードＡ６００から伝送され、ノードＣ８００に出力されるパケットが、クロスバー１００内に蓄積されている数を示す。Ｉ／ＯポートＣ用カウンタ２１３ｂは、セレクタ制御部２１２からの指示により、カウンタ値の加算又は減算を行う。
【００６２】
Ｉ／ＯポートＤ用カウンタ２１３ｃは、Ｉ／ＯポートＤ５００に対応する。Ｉ／ＯポートＤ用カウンタ２１３ｃは、Ｉ／ＯノードＡ６００から伝送され、ノードＤ９００に出力されるパケットが、クロスバー１００内に蓄積されている数を示す。Ｉ／ＯポートＤ用カウンタ２１３ｃは、セレクタ制御部２１２からの指示により、カウンタ値の加算又は減算を行う。
【００６３】
図４は、本実施例におけるバッファ２１１ｃの構成を示す図である。なお、図４において、図１〜図３で説明した構成と同様の構成には同一符号を付し、説明を省略する。
【００６４】
図４に示すように、バッファ２１１ｃは、２パケットを一時的に記憶できるバッファ構造を有する。バッファ２１１ｃは、ＦＩＦＯ（Ｆｉｒｓｔ  ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）構造となっている。バッファ２１１ｃは、セレクタ・バッファ制御部２１２ｂからの書き込む番地（ＷＰ：Ｗｒｉｔｅ  Ｐｏｉｎｔｅｒ）に対する書込み指示により、パケットの書込みが行われる。又、バッファ２１１ｃは、セレクタ・バッファ制御部２１２ｂからの読み出す番地（ＲＰ：Ｒｅａｄ  Ｐｏｉｎｔｅｒ）に対する読出し指示により、パケットの読出しが行われる。
【００６５】
図５は、本実施例における出力ポート４２０の構成を示す図である。なお、図５において、図１〜図４で説明した構成と同様の構成には同一符号を付し、説明を省略する。
【００６６】
出力バッファ制御部４２２は、データクロスバー１１０を介してＩ／ＯポートＡ２００、Ｉ／ＯポートＢ３００又はＩ／ＯポートＤ５００からパケットが伝送されると、出力バッファ部４２３の対応するＩ／ＯポートＡ用バッファ４２３ａ、Ｉ／ＯポートＢ用バッファ４２３ｂ又はＩ／ＯポートＤ用バッファ４２３ｃに対してパケットの書込み指示を行う。出力バッファ制御部４２２は、データクロスバー１１０を介してＩ／ＯポートＡ２００、Ｉ／ＯポートＢ３００又はＩ／ＯポートＤ５００からパケットが伝送されると、アービタ部４２１に対してパケット送信の調停を行う旨のパケットリクエストを行う。出力バッファ制御部４２２は、アービタ部４２１から通知された調停結果に基づいて、調停に勝ったパケットリクエストに対応するＩ／ＯポートＡ用バッファ４２３ａ、Ｉ／ＯポートＢ用バッファ４２３ｂ又はＩ／ＯポートＤ用バッファ４２３ｃのうち何れかのバッファに対しパケットの読出し指示を行う。出力バッファ制御部４２２は、調停に勝ったポートの入力ポート２１０、入力ポート３１０及び入力ポート５１０に対して、パケットを送信できる数の返却通知を行う。
【００６７】
出力バッファ制御部４２２は、Ｉ／ＯポートＡ用バッファ４２３ａ、Ｉ／ＯポートＢ用バッファ４２３ｂ又はＩ／ＯポートＤ用バッファ４２３ｃのうち何れかのバッファにパケットを記憶すると、アービタ部４２１に対して通知を行う。
【００６８】
図６は、本実施例における入力ポート２１０の動作を示す図である。なお、図６において、図１〜図５で説明した構成と同様の構成には同一符号を付し、説明を省略する。図６は、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送されたときの動作を説明する為の図である。なお、図６は、ノードＡ６００から送信されたパケットがクロスバー１００内に滞留していないことを前提とする。すなわち、入力バッファ部２１１のバッファ２１１ｃ、Ｉ／ＯポートＡ用バッファ３２３ａ、４２３ａ、５２３ａ内に、ノードＡ６００から送信されたパケットが記憶されていない状態である。また、パケットがクロスバー１００内に滞留していないので、ノードＡ６００から送信できるパケット数（クレジット数）は最大値の４である。
【００６９】
図６に示すように、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送される。
【００７０】
次いで、データクロスバー先デコーダ２１２ａは、伝送されたパケットの宛先がノードＣ８００であると判断する。
【００７１】
データクロスバー先デコーダ２１２ａは、セレクタ・バッファ制御部２１２ｂに対して、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送されたことを通知する。
【００７２】
そして、セレクタ・バッファ制御部２１２ｂは、レジスタ２１２ｃから通知されているＩ／ＯポートＡ用バッファ４２３ａの容量の閾値「２」と、Ｉ／ＯポートＣ用カウンタ２１３ｂから受信しているカウンタ値「０」とを比較する。
【００７３】
次に、セレクタ・バッファ制御部２１２ｂは、この比較結果から、Ｉ／ＯポートＣ用カウンタ２１３ｂの値はレジスタ２１２ｃから通知されているＩ／ＯポートＡ用バッファ４２３ａの容量の閾値より小さいと判断する。即ち、セレクタ・バッファ制御部２１２ｂは、出力ポート４２０のＩ／ＯポートＣ用バッファ４２３ａに空きがあると判断する。
【００７４】
そして、セレクタ・バッファ制御部２１２ｂは、通知されたカウンタ部２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、カウンタ値の加算（＋１）指示を行う。又、セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１のセレクタ２１１ｂに対し、バイパスパス２１１ｄを選択してパケットの伝送を行う旨の指示を行う。
【００７５】
カウンタ部２１３は、セレクタ・バッファ制御部２１２ｂからの指示により、Ｉ／ＯポートＣ用カウンタ２１３ｂの加算（＋１）を行う。これにより、Ｉ／ＯポートＣ用カウンタ２１３ｂの値は、「０」から「１」になる。これは、クロスバー１００内に、ノードＡ６００から送信されたノードＣ８００宛のパケットが１つ滞留していることを意味している。
【００７６】
また、セレクタ２１１ｂは、セレクタ・バッファ制御部２１２ｂからの指示により、バッファ２１１ａから伝送されたパケットを、バイパスパス２１１ｄに切替えて伝送する。伝送されたパケットは、バイパスパス２１１ｄとデータクロスバー１１０を経由し、Ｉ／ＯポートＣ４００の出力ポート４２０に伝送され、Ｉ／ＯポートＡ用バッファ４２３ａに記憶される。
【００７７】
図７は、本実施例における入力ポート２１０の動作を示す図である。なお、図７において、図１〜図６で説明した構成と同様の構成には同一符号を付し、説明を省略する。図７は、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送されたときの動作を説明する為の図である。図７において、ノードＡ６００から送信された２個のパケットが、Ｉ／ＯポートＡ用バッファ４２３ａに記憶されている。即ち、Ｉ／ＯポートＡ用バッファ４２３ａには、パケットを記憶する為の空きが無い。また、ノードＡ６００から送信できる最大パケット数（クレジット数）は４であるが、すでにＩ／ＯポートＡ用バッファ４２３ａが２個のパケット分の容量を消費しているため、送信できるパケット数は２である。
【００７８】
図７に示すように、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送される。
【００７９】
次いで、データクロスバー先デコーダ２１２ａは、伝送されたパケットの宛先がノードＣ８００であると判断する。
【００８０】
データクロスバー先デコーダ２１２ａは、セレクタ・バッファ制御部２１２ｂに対して、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送されたことを通知する。
【００８１】
セレクタ・バッファ制御部２１２ｂは、レジスタ２１２ｃに対して出力ポート４２０のＩ／ＯポートＢ用バッファ４２３ｂの閾値を問合せる。セレクタ・バッファ制御部２１２ｂは、レジスタ２１２ｃから、Ｉ／ＯポートＢ用バッファ４２３ｂの容量の閾値である「２」を受信する。
【００８２】
セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＣ用カウンタ２１３ｂに対して、ノードＣ８００に対して出力待ちとなっているパケット数を問合せる。
【００８３】
セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＡ用バッファ４２３ａの容量の閾値と、Ｉ／ＯポートＣ用カウンタ２１３ｂから受信しているカウンタ値「２」とを比較する。
【００８４】
セレクタ・バッファ制御部２１２ｂは、この比較の結果、Ｉ／ＯポートＣ用カウンタ２１３ｂのカウンタ値がレジスタ２１２ｃから通知されているＩ／ＯポートＡ用バッファ４２３ａの容量の閾値以上である場合、セレクタ・バッファ制御部２１２ｂは、出力ポート４２０のＩ／ＯポートＡ用バッファ４２３ａに空きがないと判断する。
【００８５】
また、比較の結果、Ｉ／ＯポートＣ用カウンタ２１３ｂのカウンタ値がレジスタ２１２ｃから通知されているＩ／ＯポートＡ用バッファ４２３ａの容量の閾値以上であった場合、セレクタ・バッファ制御部２１２ｂは、カウンタ２１２ｄに対し、バッファ２１１ｃにパケットが１個だけ一時的に記憶されたことを示すためのＷＰ値の加算（＋１）指示を行う。セレクタ・バッファ制御部２１２ｂは、カウンタ２１２ｄのＷＰ値が「０」の場合、バッファ２１１ｃに対して、カウンタ２１２ｄが保持するＷＰ値で示される番地への書込み指示を行う。セレクタ・バッファ制御部２１２ｂは、通知されたカウンタ部２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、カウンタ値の加算（＋１）指示を行う。
【００８６】
カウンタ部２１３は、セレクタ・バッファ制御部２１２ｂからの指示により、Ｉ／ＯポートＣ用カウンタ２１３ｂの加算（＋１）処理を行う。これにより、Ｉ／ＯポートＣ用カウンタ２１３ｂの値は、「２」から「３」となる。これは、クロスバー１００内に、ノードＡ６００から送信されたノードＣ８００宛のパケットが３つ滞留していることを意味している。
【００８７】
セレクタ２１１ｂは、セレクタ・バッファ制御部２１２ｂからの指示により、バッファ２１１ａから伝送されたパケットを、バッファ用バス２１１ｅ経由でバッファ２１１ｃに一時的に記憶する。バッファ２１１ｃは、ＷＰ値が「０」のアドレスに、パケットを一時的に記憶する。
【００８８】
図８〜図１０は、本実施例における入力ポート２１０の動作を説明する為のシーケンス図である。図８のＡに示す処理は図９のＡに続いている。図８のＢに示す処理は図１０のＢに続いている。なお、図８〜図１０において、図１〜図７で説明した構成と同様の構成には同一符号を付し、説明を省略する。図８〜図１０は、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送されたときの動作を説明する為のシーケンス図である。
【００８９】
図８に示すように、ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送されると（ＯＰ１）、データクロスバー先デコーダ２１２ａは、伝送されたパケットを受信する（ＯＰ２）。
【００９０】
データクロスバー先デコーダ２１２ａは、伝送されたパケットをデコードし（ＯＰ３）、伝送されたパケットの宛先がノードＣ８００であると判断する。
【００９２】
データクロスバー先デコーダ２１２ａは、セレクタ・バッファ制御部２１２ｂに対して、パケットの宛先情報を通知する（ＯＰ４）。
【００９３】
セレクタ・バッファ制御部２１２ｂは、データクロスバー先デコーダ２１２ａから、パケットの宛先情報を受信する（ＯＰ５）。
【００９４】
セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＣ用カウンタ２１３ｂの値が、レジスタ２１２ｃから通知されているＩ／ＯポートＡ用バッファ４２３ａの容量の閾値以上であるか判断する（ＯＰ６）。
【００９５】
セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＣ用カウンタ２１３ｂの値がレジスタ２１２ｃから通知されているＩ／ＯポートＡ用バッファ４２３ａの容量の閾値より小さい場合（ＯＰ６：ＮＯ）、入力バッファ部２１１のセレクタ２１１ｂに対し、バイパスパス２１１ｄを選択してパケットの伝送を行う旨の指示を行う（ＯＰ２１）。即ち、セレクタ・バッファ制御部２１２ｂは、出力ポート４２０のＩ／ＯポートＡ用バッファ４２３ａに空きがあると判断する。
【００９６】
入力バッファ部２１１は、セレクタ・バッファ制御部２１２ｂから、セレクタ２１１ｂによってバイパスパス２１１ｄを選択してパケットの伝送を行う旨の指示を受信する（ＯＰ２２）。入力バッファ部２１１のセレクタ２１１ｂは、セレクタ２１１ｂによってバイパスパス２１１ｄを選択し（ＯＰ２３）、伝送されたパケットを、バイパスパス２１１ｄを介して伝送する。
【００９７】
また、セレクタ・バッファ制御部２１２ｂは、通知されたカウンタ部２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、カウンタ値の加算指示を行う（ＯＰ２４）。
【００９８】
Ｉ／ＯポートＣ用カウンタ２１３ｂは、セレクタ・バッファ制御部２１２ｂから、カウンタ値の加算指示を受信する（ＯＰ２５）。Ｉ／ＯポートＣ用カウンタ２１３ｂは、カウンタ値の加算処理を行う（ＯＰ２６）。
【０１０１】
ノードＡ６００からのノードＣ８００宛のパケットは、Ｉ／ＯポートＡ２００の入力ポート２１０に伝送され（ＯＰ２７）、バイパスパス２１１ｄを介してデータクロスバー１１０へ伝送される（ＯＰ２８）。
【０１０２】
一方、セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＣ用カウンタ２１３ｂの値がレジスタ２１２ｃから通知されているＩ／ＯポートＡ用バッファ４２３ａの容量の閾値以上である場合（ＯＰ６：ＹＥＳ）、入力バッファ部２１１のセレクタ２１１ｂに対し、バッファ用バス２１１ｅを選択する旨の指示を行う（ＯＰ３１）。即ち、セレクタ・バッファ制御部２１２ｂは、出力ポート４２０のＩ／ＯポートＡ用バッファ４２３ａに空きがないと判断する。また、セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１のバッファ２１１ｃに対し、カウンタ２１２ｄのＷＰ値で示される番地への記憶指示を行う。
【０１０３】
入力バッファ部２１１は、セレクタ・バッファ制御部２１２ｂから、セレクタ２１１ｂによってバッファ用バス２１１ｅを選択する旨の指示を受信する（ＯＰ３２）。入力バッファ部２１１のセレクタ２１１ｂは、バッファ用バス２１１ｅを選択する（ＯＰ３３）。
【０１０４】
ノードＡ６００からノードＣ８００宛のパケットがＩ／ＯポートＡ２００の入力ポート２１０に伝送されると（ＯＰ３４）、入力バッファ部２１１のセレクタ２１１ｂは、バッファ用バス２１１ｅを介してパケットをバッファ２１１ｃに伝送する（ＯＰ３５）。バッファ２１１ｃは、ノードＣ８００宛のパケットを一時的に記憶する（ＯＰ３６）。
【０１０５】
セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１のセレクタ２１１ｂに対し、バッファ用バス２１１ｅを選択する旨の指示を行った後（ＯＰ３１）、カウンタ２１２ｄにＷＰ値の加算（＋１）指示を行う（ＯＰ３７）。
【０１０６】
カウンタ２１２ｄは、セレクタ・バッファ制御部２１２ｂから、ＷＰ値の加算指示を受信する（ＯＰ３８）。
【０１０７】
カウンタ２１２ｄは、バッファ２１１ｃにパケットが一時的に記憶されたことを示すためのＷＰ値の加算処理を行う（ＯＰ３９）。
【０１０８】
セレクタ・バッファ制御部２１２ｂは、通知された出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、カウンタ値の加算指示を行う（ＯＰ４０）。Ｉ／ＯポートＣ用カウンタ２１３ｂは、セレクタ・バッファ制御部２１２ｂから、カウンタ値の加算指示を受信する（ＯＰ４１）。
【０１０９】
Ｉ／ＯポートＣ用カウンタ２１３ｂは、セレクタ・バッファ制御部２１２ｂからの加算指示に基づいて、カウンタ値の加算処理を行う（ＯＰ４２）。
【０１１０】
図１１は、本実施例における入力ポート２１０の動作を示す図である。なお、図１１において、図１〜図１０で説明した構成と同様の構成には同一符号を付し、説明を省略する。図１１は、入力ポート２１０が出力ポート４２０からクレジットの返却通知を受信したときの動作を説明する為の図である。
【０１１１】
図１１に示すように、Ｉ／ＯポートＣ４００の出力ポート４２０は、Ｉ／ＯポートＡ２００の入力ポート２１０に対して、ノードＣ８００宛のパケットに対するクレジット返却通知処理を行う。このクレジット返却通知は、出力ポート４２０のＩ／ＯポートＡ用バッファ４２３ａに記憶されていたパケットがノードＣ８００へ送信されたことで、ノードＡ６００からのパケットを記憶するためのバッファに空きができたことを通知するものである。このクレジット返却通知は、入力ポート２１０と共にノードＡ６００にも通知される。ノードＡ６００は、このクレジット返却通知によって、パケット送信時に消費したクロスバー１００に送信できるパケット数を回復することができる。なお、図１１は、Ｉ／ＯポートＡ用バッファ４２３ａがノードＡ６００からの２つのパケットを記憶し、且つ、バッファ２１１ｃがノードＡ６００からの１つのパケットを記憶した状態で、Ｉ／ＯポートＡ用バッファ４２３ａ内の１つのパケットが出力ポート４２０からノードＣ８００に対して転送されたことで、出力ポート４２０からクレジットの返却通知を受信した時の動作を示している。なお、ノードＡ６００から送信できるパケット数（クレジット数）は１である。また、Ｉ／ＯポートＡ用バッファ４２３ａが２つのパケットを記憶し、バッファ２１１ｃが１つのパケットを記憶していたので、Ｉ／ＯポートＣ用カウンタ２１３ｂの値は３である。
【０１１２】
入力ポート２１０のセレクタ・バッファ制御部２１２ｂは、出力ポート４２０から、ノードＣ８００宛のパケットに対するクレジット返却通知を受信する。
【０１１３】
セレクタ・バッファ制御部２１２ｂは、レジスタ２１２ｃ空通知されているＩ／ＯポートＡ用バッファ４２３ａの容量の閾値である「２」と、Ｉ／ＯポートＣ用カウンタ２１３ｂから受信しているカウンタ値「３」とを比較する。
【０１１４】
セレクタ・バッファ制御部２１２ｂは、比較結果から、Ｉ／ＯポートＣ用カウンタ２１３ｂの値がレジスタ２１２ｃから通知されているＩ／ＯポートＡ用バッファ４２３ａの容量の閾値より大きいと判断する。即ち、セレクタ・バッファ制御部２１２ｂは、バッファ２１１ｃに出力ポート４２０宛のパケットが一時的に記憶されていると判断する。
【０１１５】
セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１に対し、カウンタ２１２ｄのＲＰ値に基づいてバッファ２１１ｃに一時的に記憶されたパケットをＩ／ＯポートＣ４００の出力ポート４２０に伝送する指示を行う。セレクタ・バッファ制御部２１２ｂは、カウンタ部２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、カウンタ値の減算（−１）指示を行う。又、セレクタ・バッファ制御部２１２ｂは、カウンタ２１２ｄに対し、ＲＰ値の加算（＋１）指示を行う。
【０１１６】
入力バッファ部２１１は、バッファ２１１ｃのＲＰ＝０に一時的に記憶されたパケットを出力ポート４２０に伝送する。
【０１１７】
カウンタ部２１３は、セレクタ・バッファ制御部２１２ｂからの指示により、Ｉ／ＯポートＣ用カウンタ２１３ｂの減算（−１）処理を行う。
【０１１８】
カウンタ２１２ｄは、セレクタ・バッファ制御部２１２ｂからの指示により、ＲＰ値の加算（＋１）処理を行う。
【０１１９】
図１２〜図１４は、本実施例における入力ポート２１０の動作を示す図である。図１２のＡに示す処理は図１３のＡに続いている。図１２のＢに示す処理は図１４のＢに続いている。なお、図１２〜図１４において、図１〜図１１で説明した構成と同様の構成には同一符号を付し、説明を省略する。図１２〜図１４は、図１１は、入力ポート２１０が出力ポート４２０からクレジットの返却通知を受信したときの動作を説明する為のシーケンス図である。
【０１２０】
図１２に示すように、Ｉ／ＯポートＣ４００の出力ポート４２０は、Ｉ／ＯポートＡ２００の入力ポート２１０に対して、ノードＣ８００宛のパケットに対するクレジット返却通知処理を行う（ＯＰ５１）。
【０１２１】
入力ポート２１０のセレクタ・バッファ制御部２１２ｂは、出力ポート４２０から、ノードＣ８００宛のパケットに対するクレジット返却通知を受信する（ＯＰ５２）。
【０１２２】
セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＣ用カウンタ２１３ｂの値が、レジスタ２１２ｃから通知されているＩ／ＯポートＡ用バッファ４２３ａの容量の閾値より大きいか判断する（ＯＰ５３）。
【０１２３】
セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＣ用カウンタ２１３ｂの値が、レジスタ２１２ｃから通知されているＩ／ＯポートＡ用バッファ４２３ａの容量の閾値より大きい場合（ＯＰ５３：ＹＥＳ）、入力バッファ部２１１に対し、カウンタ２１２ｄのＲＰ値で示されるバッファ２１１ｃの番地に一時的に記憶されたパケットをＩ／ＯポートＣ４００の出力ポート４２０に伝送する指示を行う（ＯＰ７１）。即ち、セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１のバッファ２１１ｃにパケットが一時的に記憶されていると判断する。
【０１２４】
一方、セレクタ・バッファ制御部２１２ｂは、Ｉ／ＯポートＣ用カウンタ２１３ｂの値が、レジスタ２１２ｃから通知されているＩ／ＯポートＡ用バッファ４２３ａの容量の閾値以下である場合（ＯＰ５３：ＮＯ）、セレクタ・バッファ制御部２１２ｂは、通知されたカウンタ部２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、カウンタ値の減算指示を行う（ＯＰ９１）。即ち、セレクタ・バッファ制御部２１２ｂは、入力バッファ部２１１のバッファ２１１ｃにパケットが記憶されていないと判断する。
【０１２５】
入力バッファ部２１１は、セレクタ・バッファ制御部２１２ｂから、カウンタ２１２ｄのＲＰ値で示されるバッファ２１１ｃの番地に一時的に記憶されたパケットをＩ／ＯポートＣ４００の出力ポート４２０に伝送する指示を受信する（ＯＰ７２）。
【０１２６】
入力バッファ部２１１は、バッファ２１１ｃのカウンタ２１２ｄのＲＰ値で示される番地に一時的に記憶されているＩ／ＯポートＣ４００宛のパケットを出力ポート４２０に伝送する（ＯＰ７４）。伝送されたＩ／ＯポートＣ４００宛のパケットは、データクロスバー１１０へ伝送される（ＯＰ７５）。
【０１２７】
セレクタ・バッファ制御部２１２ｂは、カウンタ部２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、カウンタ値の減算指示を行う（ＯＰ７６）。Ｉ／ＯポートＣ用カウンタ２１３ｂは、セレクタ・バッファ制御部２１２ｂから、Ｉ／ＯポートＣ用カウンタ２１３ｂに対するカウンタ値の減算指示を受信する（ＯＰ７７）。Ｉ／ＯポートＣ用カウンタ２１３ｂは、Ｉ／ＯポートＣ用カウンタ２１３ｂに対するカウンタ値の減算処理を行う（ＯＰ７８）。
【０１２８】
セレクタ・バッファ制御部２１２ｂは、カウンタ２１２ｄに対し、ＲＰ値の加算指示を行う（ＯＰ７９）。カウンタ２１２ｄは、セレクタ・バッファ制御部２１２ｂから、ＲＰ値の加算指示を受信する（ＯＰ８０）。カウンタ２１２ｄは、ＲＰ値の加算処理を行う（ＯＰ８１）。
【０１２９】
セレクタ・バッファ制御部２１２ｂが、通知されたカウンタ部２１３の出力ポートに対応するＩ／ＯポートＣ用カウンタ２１３ｂに対し、カウンタ値の減算指示を行うと（ＯＰ９１）、Ｉ／ＯポートＣ用カウンタ２１３ｂは、セレクタ・バッファ制御部２１２ｂからカウンタ値の減算指示を受信する（ＯＰ９２）。Ｉ／ＯポートＣ用カウンタ２１３ｂは、カウンタ値の減算処理を行う（ＯＰ９３）。
【０１３０】
図１５は、本実施例における出力ポート数とバッファ削減比率との関係を説明する図である。出力ポート数とは、クロスバー１００が有する出力ポート２２０、出力ポート３２０、出力ポート４２０及び出力ポート５２０の総数を示す。バッファ削減比率とは、従来技術で説明した出力ポートのみにパケットを記憶する為のバッファを設けた場合と、本実施例における入力ポート及び出力ポートにパケットを記憶する為のバッファを設けた場合とにおけるバッファの削減比率を示す。
【０１３１】
図１５に示すように、出力ポート数が２個の場合におけるバッファ削減比率は２５％である。出力ポート数が３個の場合におけるバッファ削減比率は３３％である。出力ポート数が４個の場合におけるバッファ削減比率は３８％である。出力ポート数が５個の場合におけるバッファ削減比率４０％である。出力ポート数が６個の場合におけるバッファ削減比率は４２％である。出力ポート数が７個の場合におけるバッファ削減比率は４３％である。出力ポート数が８個の場合におけるバッファ削減比率は４４％である。出力ポート数が９個の場合におけるバッファ削減比率は４４％である。出力ポート数が１０個の場合におけるバッファ削減比率は４５％である。出力ポート数が１１個の場合におけるバッファ削減比率は４６％である。出力ポート数が１２個の場合におけるバッファ削減比率は４６％である。出力ポート数が１３個の場合におけるバッファ削減比率は４６％である。出力ポート数が１４個の場合におけるバッファ削減比率は４６％である。出力ポート数が１５個の場合におけるバッファ削減比率は４７％である。
【０１３２】
以上のように、本実施の形態におけるクロスバー１００を用いることで、出力ポート数が多くなるほど、従来技術と比較してバッファ削減比率が高くなることがわかる。なお、バッファ削減比率は、入力バッファの一種であるバッファ２１１ｃの容量と、出力バッファの一種であるＩ／ＯポートＡ用バッファ３２３ａ、Ｉ／ＯポートＡ用バッファ４２３ａ、Ｉ／ＯポートＡ用バッファ５２３ａの容量が等しく、且つそれぞれのバッファ容量がノードＡ６００が送信できるパケット送信数の半分の時に最も高くなる。
【産業上の利用可能性】
【０１３３】
本実施例に開示の技術によれば、制御部の一種であるセレクタ制御部２１２は、対応するプロセッサの一種であるノードＡ６００からのパケットのうち、ノードＡ６００に対応する宛先のパケットを、入力バッファの一種であるバッファ２１１ｃに記憶したあとにクロスバースイッチの一種であるデータクロスバー１１０に送信する指示を行う。一方、制御部の一種であるセレクタ制御部２１２は、指示がないプロセッサの一種であるノードＡ６００に対応する宛先のパケットを、バッファ２１１ｃへの記憶を行わずクロスバースイッチの一種であるデータクロスバー１１０へ送信する指示を行う。そのため、消費電力を上げること無く、クロスバーの効率的な伝送を行うことが出来る情報処理装置及び情報処理装置の制御方法を提供することが可能となる。
【符号の説明】
【０１３４】
１０  情報処理装置
１００  クロスバー
１１０  データクロスバー
２００  Ｉ／ＯポートＡ
２１０、３１０、４１０、５１０  入力ポート
２１１  入力バッファ部
２１１ａ  バッファ
２１１ｂ  セレクタ
２１１ｃ  バッファ
２１１ｄ  バイパスパス
２１１ｅ  バッファ用バス
２１２  セレクタ制御部
２１２ａ  データクロスバー先デコーダ
２１２ｂ  セレクタ・バッファ制御部
２１２ｃ  レジスタ
２１２ｄ  カウンタ
２１３  カウンタ部
２１３ａ  Ｉ／ＯポートＢ用カウンタ
２１３ｂ  Ｉ／ＯポートＣ用カウンタ
２１３ｃ  Ｉ／ＯポートＤ用カウンタ
２１４  バス
２２０、３２０、４２０、５２０  出力ポート
３００  Ｉ／ＯポートＢ
２２１、３２１、４２１、５２１  アービタ部
３２２、４２２、５２２  出力バッファ制御部
３２３、４２３、５２３  出力バッファ部
３２３ａ  Ｉ／ＯポートＡ用バッファ
３２３ｂ  Ｉ／ＯポートＣ用バッファ
３２３ｃ  Ｉ／ＯポートＤ用バッファ
３２３ｄ、４２３ｄ、５２３ｄ  バス
３２４、４２４、５２４  バス
４００  Ｉ／ＯポートＣ
４２３ａ  Ｉ／ＯポートＡ用バッファ
４２３ｂ  Ｉ／ＯポートＢ用バッファ
４２３ｃ  Ｉ／ＯポートＤ用バッファ
５００  Ｉ／ＯポートＤ
５２３ａ  Ｉ／ＯポートＡ用バッファ
５２３ｂ  Ｉ／ＯポートＢ用バッファ
５２３ｃ  Ｉ／ＯポートＣ用バッファ
６００  ノードＡ
６１０、６２０、７１０、７２０、８１０、８２０、９１０、９２０  ＣＰＵ
６３０、６４０、７３０、７４０、８３０、８４０、９３０、９４０  メモリ
６５０、７５０、８５０、９５０  ノードコントローラ
６５１、７５１、８５１、９５１  送信バッファ
６５２、７５２、８５２、９５２  受信バッファ
７００  ノードＢ
８００  ノードＣ
９００  ノードＤ
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2013027247.tif 000018
【図２】
2013027247.tif 000019
【図３】
2013027247.tif 000020
【図４】
2013027247.tif 000021
【図５】
2013027247.tif 000022
【図６】
2013027247.tif 000023
【図７】
2013027247.tif 000024
【図８】
2013027247.tif 000025
【図９】
2013027247.tif 000026
【図１０】
2013027247.tif 000027
【図１１】
2013027247.tif 000028
【図１２】
2013027247.tif 000029
【図１３】
2013027247.tif 000030
【図１４】
2013027247.tif 000031
【図１５】
2013027247.tif 000032
【国際調査報告】
2013027247.tif 000033
2013027247.tif 000034
2013027247.tif 000035
2013027247.tif 000036