(57)【特許請求の範囲】
【請求項１】
複数のノード間にあって、少なくとも１つのフリットからなるパケットを前記ノード間で転送するクロスバースイッチであって、
いずれか１つのノードに接続されており、該ノードからの２つのフリットを、出力段となる第１のレジスタとその前段となる第２のレジスタとに格納し、前記第１のレジスタにパケット先頭の先頭フリットが格納されたとき所望の要求先への第１の調停要求信号を生成し、前記第２のレジスタに前記先頭フリットが格納されたとき所望の要求先への第２の調停要求信号を生成し、さらに、いずれかの要求先への前記第１の調停要求信号があるか否かを通知するための第１の通知信号を生成し、前記第１の調停要求信号、前記第２の調停要求信号、および前記第１の通知信号を用いた調停による調停結果信号が得られると、該調停結果信号に従って前記第１のレジスタからフリットを出力すると共に前記第１のレジスタおよび前記第２のレジスタに格納するフリットを順次進める複数のポート入力部と、
いずれか１つのノードおよび前記複数のポート入力部の全てに接続され、前記調停結果信号が得られると、該調停結果信号に従って、いずれかのポート入力部の前記第１のレジスタから出力されたフリットを前記ノードに順次出力する複数のポート出力部と、
前記ポート出力部に対応して設けられ、伝送経路により生じる前記調停結果信号の遅延を所定範囲に抑えるためのレジスタを調停回路の前または後に備え、前記複数のポート入力部から自身宛の前記第１の調停要求信号および前記第２の調停要求信号と前記第１の通知信号とを受け、各々の調停結果信号を第２の通知信号として相互に送受信し、前記第１の調停要求信号、前記第２の調停要求信号、前記第１の通知信号、および前記第２の通知信号に基づき前記調停回路にて調停を行い、前記調停結果信号を前記ポート入力部および前記ポート出力部に与える複数の調停部と、を有するクロスバースイッチ。
【請求項２】
前記調停部は、前記ポート入力部の各々について、前記第１の調停要求信号があり、かつ該第１の調停要求信号に対する送信許可が与えられていないとき、あるいは前記第１の調停要求信号がないかまたは前記第１の調停要求信号があるが該第１の調停要求信号に対する送信許可が既に与えられており、かつ前記第２の調停要求信号があるとき、前記ポート入力部からの調停要求を有効として前記調停回路に与えるポートリクエスト生成回路を有する、請求項１記載のクロスバースイッチ。
【請求項３】
複数の前記ポート出力部と複数の前記ポート入力部は１対１の対をなして同じノードに接続されており、
前記ポート出力部と前記ポート入力部の対に関連する故障を診断するポート診断部を更に有し、
前記調停部は、対応するポート出力部とポート入力部の対に関連する故障の通知を前記ポート診断部から受けると、自身への前記第１の調停要求に対して強制的に送信許可を与える、請求項１または２に記載のクロスバースイッチ。
【請求項４】
前記ポート入力部は、該ポート入力部内の故障を検出し前記ポート出力部に通知する故障検出回路を有し、
前記ポート出力部は、故障の発生したポート入力部からパケットが転送されている途中であれば、前記ノードに送出中の該パケットに残りのフリットを疑似するダミーフリットを挿入し、該パケットの前記ノードへの送出を完了させる、請求項１〜３のいずれか１項に記載のクロスバースイッチ。
【請求項５】
前記ポート出力部は、故障が発生したとき前記ポート入力部から転送中の前記パケットの前記ノードへの送出を開始していなければ、該パケットを送出することなく送出完了の状態にする、請求項４に記載のクロスバースイッチ。
【請求項６】
前記ポート出力部は、前記故障が前記パケットの先頭フリットと同時に通知されてきたとき、該パケットの送出を開始していないと判定する、請求項５に記載のクロスバースイッチ。
【請求項７】
前記ポート出力部は、前記先頭フリットに含まれているヘッダーから挿入すべきダミーフリットの数を求める、請求項４〜６のいずれか１項に記載のクロスバースイッチ。
【請求項８】
複数の前記ノードが複数のパーティションに分割して使用されている、請求項３〜７のいずれか１項に記載のクロスバースイッチ。
【請求項９】
前記第１の通知信号は、全ての調停部に宛てた第１の調停要求信号を論理和した信号である、請求項１〜８のいずれか１項に記載のクロスバースイッチ。
【請求項１０】
前記調停部の各々が対応する前記ポート出力部の内部に配置されている、請求項１〜９のいずれか１項に記載のクロスバースイッチ。
【請求項１１】
前記ポート入力部の一部および前記ポート出力部の一部を前記ノードに代えて前記クロスバースイッチ同士で相互接続する、請求項１〜１０のいずれか１項に記載のクロスバースイッチ。
【請求項１２】
少なくとも１つのフリットからなるパケットを相互に送受信する複数のノードと、
いずれか１つのノードに接続されており、該ノードからの２つのフリットを、出力段となる第１のレジスタとその前段となる第２のレジスタとに格納し、前記第１のレジスタにパケット先頭の先頭フリットが格納されたとき所望の要求先への第１の調停要求信号を生成し、前記第２のレジスタに前記先頭フリットが格納されたとき所望の要求先への第２の調停要求信号を生成し、さらに、いずれかの要求先への前記第１の調停要求信号があるか否かを通知するための第１の通知信号を生成し、前記第１の調停要求信号、前記第２の調停要求信号、および前記第１の通知信号を用いた調停による調停結果信号が得られると、該調停結果信号に従って前記第１のレジスタからフリットを出力すると共に前記第１のレジスタおよび前記第２のレジスタに格納するフリットを順次進める複数のポート入力部と、いずれか１つのノードおよび前記複数のポート入力部の全てに接続され、前記調停結果信号が得られると、該調停結果信号に従って、いずれかのポート入力部の前記第１のレジスタから出力されたフリットを前記ノードに順次出力する複数のポート出力部と、前記ポート出力部に対応して設けられ、伝送経路により生じる前記調停結果信号の遅延を所定範囲に抑えるためのレジスタを調停回路の前または後に備え、前記複数のポート入力部から自身宛の前記第１の調停要求信号および前記第２の調停要求信号と前記第１の通知信号とを受け、各々の調停結果信号を第２の通知信号として相互に送受信し、前記第１の調停要求信号、前記第２の調停要求信号、前記第１の通知信号、および前記第２の通知信号に基づき前記調停回路にて調停を行い、前記調停結果信号を前記ポート入力部および前記ポート出力部に与える複数の調停部と、を有し、前記ノード間で前記パケットを転送するクロスバースイッチと、を有する情報処理装置。
【請求項１３】
前記調停部は、前記ポート入力部の各々について、前記第１の調停要求信号があり、かつ該第１の調停要求信号に対する送信許可が与えられていないとき、あるいは前記第１の調停要求信号がないかまたは前記第１の調停要求信号があるが該第１の調停要求信号に対する送信許可が既に与えられており、かつ前記第２の調停要求信号があるとき、前記ポート入力部からの調停要求を有効として前記調停回路に与えるポートリクエスト生成回路を有する、請求項１２記載の情報処理装置。
【請求項１４】
複数の前記ポート出力部と複数の前記ポート入力部は１対１の対をなして同じノードに接続されており、
前記クロスバースイッチは、前記ポート出力部と前記ポート入力部の対に関連する故障を診断するポート診断部を更に有し、
前記調停部は、対応するポート出力部とポート入力部の対に関連する故障の通知を前記ポート診断部から受けると、自身への前記第１の調停要求に対して強制的に送信許可を与える、請求項１２または１３に記載の情報処理装置。
【請求項１５】
前記ポート入力部は、該ポート入力部内の故障を検出し前記ポート出力部に通知する故障検出回路を有し、
前記ポート出力部は、故障の発生したポート入力部からパケットが転送されている途中であれば、前記ノードに送出中の該パケットに残りのフリットを疑似するダミーフリットを挿入し、該パケットの前記ノードへの送出を完了させる、請求項１２〜１４のいずれか１項に記載の情報処理装置。
【請求項１６】
前記ポート出力部は、故障が発生したとき前記ポート入力部から転送中の前記パケットの前記ノードへの送出を開始していなければ、該パケットを送出することなく送出完了の状態にする、請求項１５に記載の情報処理装置。
【請求項１７】
複数のノードが接続されたクロスバースイッチによって、少なくとも１つのフリットからなるパケットを前記ノード間で転送するための転送方法であって、
いずれか１つのノードに接続された複数のポート入力部が、複数のポートに接続された複数の前記ノードからの２つのフリットを、出力段となる第１のレジスタとその前段となる第２のレジスタとに格納するステップと、
前記ポート入力部が、前記第１のレジスタにパケット先頭の先頭フリットが格納されたとき所望のポートへの第１の調停要求信号を生成し、前記第２のレジスタに前記先頭フリットが格納されたとき所望のポートへの第２の調停要求信号を生成し、さらに、いずれかの要求先への前記第１の調停要求信号があるか否かを通知するための第１の通知信号を生成するステップと、
いずれか１つのノードおよび前記複数のポート入力部の全てに接続された複数のポート出力部に対応して設けられ、伝送経路により生じる信号の遅延を所定範囲に抑えるためのレジスタを調停回路の前または後に備えた複数の調停部が、前記第１の調停要求信号、前記第２調停要求信号、および前記第１の通知信号と、他のポートの調停結果を含む第２の通知信号とに基づき前記調停回路にてポート毎の調停を行い、
前記ポート入力部と前記ポート出力部が、調停結果に従ってポート間でパケットを転送するステップと、を有する転送方法。
【請求項１８】
前記調停部は、前記ポート入力部の各々について、前記第１の調停要求信号があり、かつ該第１の調停要求信号に対する送信許可が与えられていない、あるいは前記第１の調停要求信号がないかまたは前記第１の調停要求信号があるが該第１の調停要求信号に対する送信許可が既に与えられており、かつ前記第２の調停要求信号があるポートからの調停要求を前記調停回路に対して有効とする、請求項１７記載の転送方法。
【請求項１９】
前記ポートに関連する故障が起こると、前記調停部は、該ポートへの第１の調停要求に対して強制的に送信許可を与える、請求項１７または１８に記載の転送方法。
【請求項２０】
前記ポート入力部がパケットの入力しているポートに故障が起きたことを検出すると、前記ポート出力部がノードに送出中の該ポートからの該パケットに残りのフリットを疑似するダミーフリットを挿入し、該パケットの前記ノードへの送出を完了させる、請求項１７〜１９のいずれか１項に記載の転送方法。
【請求項２１】
前記ポート出力部は、故障が発生した前記ポートからの前記パケットの前記ノードへの送出を開始していなければ、該パケットを送出することなく送出完了の状態にする、請求項２０に記載の転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードが相互に送受信するデータをノード間で転送するクロスバースイッチに関する。
【背景技術】
【０００２】
クロスバースイッチは、複数のプロセッサノードと複数のＩＯノードを有する情報処理装置の内部に備えられ、複数のプロセッサノードと複数のＩＯノードのそれぞれに接続する複数のポートを有している。そして、クロスバースイッチは、所望のポート入力部およびポート出力部を動的に選択して接続することにより、所望のプロセッサノードと所望のＩＯノードの間のデータ転送を可能にする。どのポート入力部とどのポート出力部を接続するかは調停回路により決定される（例えば特許文献１参照）。
【０００３】
クロスバースイッチはデータをパケット単位で転送するので、調停回路はパケット単位でポート間の調停を行なう。パケットは１個以上のフリットから構成される。フリットとは、１サイクルで転送される固定幅のデータである。転送するパケットが１フリットからなる最小のものであれば、クロスバースイッチは、スループットを保ってデータを処理するためには調停をサイクル毎に実施する必要がある。この種のクロスバースイッチでは、調停回路から出力される調停結果信号はポート入力部およびポート出力部の双方の制御に必要である。
【特許文献１】特開２００４−１０２６０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
クロスバースイッチの一例として、調停回路を各ポート出力部内に配置した構成がある。この構成では、ポート入力部からの調停要求信号をポート出力部内の調停回路に伝送する経路と、調停回路からの調停結果信号をポート入力部に伝送する経路が必要となる。そして、これらの経路を信号が１サイクルで往復する必要がある。そのため、例えばクロスバースイッチを１つのＬＳＩに実装する構成においてポート入力部とポート出力部のレイアウト上の距離が長い部分があるので、高周波動作が困難であるという問題があった。
【０００５】
また、ポート入力部とポート出力部を１サイクルで往復する経路を無くすために経路の途中に信号を格納するレジスタを設けると、１サイクルの経路長は短くなるが、信号をレジスタに格納して読み出すサイクル分の遅延が生じることとなる。そのため、サイクル毎の調停が困難となり、データのスループットが低下してしまうという問題があった。
【０００６】
また、他の構成においても、調停回路とポート入力部およびポート出力部との間の経路長によっては、高周波動作あるいはスループットの維持が困難になる可能性があった。
【０００７】
本発明の目的は、スループットを低下させることなく高周波動作が可能なクロスバースイッチを提供することである。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明のクロスバースイッチは、
複数のノード間にあって、少なくとも１つのフリットからなるパケットを前記ノード間で転送するクロスバースイッチであって、
いずれか１つのノードに接続されており、該ノードからの先頭の２つのフリットを、出力段となる第１のレジスタとその前段となる第２のレジスタとに格納し、前記第１のレジスタにパケット先頭の先頭フリットが格納されたとき所望の要求先への第１の調停要求信号を生成し、前記第２のレジスタに前記先頭フリットが格納されたとき所望の要求先への第２の調停要求信号を生成し、さらに、いずれかの要求先への前記第１の調停要求信号があるか否かを通知するための第１の通知信号を生成し、前記第１の調停要求信号、前記第２の調停要求信号、および前記第１の通知信号を用いた調停による調停結果信号が得られると、該調停結果信号に従って前記第１のレジスタからフリットを出力すると共に前記第１のレジスタおよび前記第２のレジスタに格納するフリットを順次進める複数のポート入力部と、
いずれか１つのノードおよび前記複数のポート入力部の全てに接続され、前記調停結果信号が得られると、該調停結果信号に従って、いずれかのポート入力部の前記第１のレジスタから出力されたフリットを前記ノードに順次出力する複数のポート出力部と、
前記ポート出力部に対応して設けられ、伝送経路により生じる前記調停結果信号の遅延を所定範囲に抑えるためのレジスタを調停回路の前または後に備え、前記複数のポート入力部から自身宛の前記第１の調停要求信号および前記第２の調停要求信号と前記第１の通知信号とを受け、各々の調停結果信号を第２の通知信号として相互に送受信し、前記第１の調停要求信号、前記第２の調停要求信号、前記第１の通知信号、および前記第２の通知信号に基づき前記調停回路にて調停を行い、前記調停結果信号を前記ポート入力部および前記ポート出力部に与える複数の調停部と、を有している。
【０００９】
したがって、本発明によれば、伝送経路による遅延を所定範囲に抑えるためのレジスタを調停回路に備えて高周波動作を可能とすると共に、前段の第２のレジスタに対応する第２の調停要求信号を調停に用いることにより、１フリットのパケットが連続したときでもスループットを低下させることなく調停を行なうことができる。
【００１０】
また、前記調停部は、前記ポート入力部の各々について、前記第１の調停要求信号があり、かつ該第１の調停要求信号に対する送信許可が与えられていないとき、あるいは前記第１の調停要求信号がないかまたは前記第１の調停要求信号があるが該第１の調停要求信号に対する送信許可が既に与えられており、かつ前記第２の調停要求信号があるとき、前記ポート入力部からの調停要求を有効として前記調停回路に与えるポートリクエスト生成回路を有することとしてもよい。
【００１１】
また、複数の前記ポート出力部と複数の前記ポート入力部は１対１の対をなして同じノードに接続されており、
前記ポート出力部と前記ポート入力部の対に関連する故障を診断するポート診断部を更に有し、
前記調停部は、対応するポート出力部とポート入力部の対に関連する故障の通知を前記ポート診断部から受けると、自身への前記第１の調停要求に対して強制的に送信許可を与えることとしてもよい。
【００１２】
これによれば、ポートに関連する故障が発生すると、正常に動作している他のパーティションに属するポートからの第１の調停要求信号に対して無条件で送信許可を与えるので、故障に関連するポート出力部を共有する他のポート入力部のパケットを吐き出させて廃棄することによりパケットのつまりを防止することができる。
【００１３】
また、前記ポート入力部は、該ポート入力部内の故障を検出し前記ポート出力部に通知する故障検出回路を有し、
前記ポート出力部は、故障の発生したポート入力部からパケットが転送されている途中であれば、前記ノードに送出中の該パケットに残りのフリットを疑似するダミーフリットを挿入し、該パケットの前記ノードへの送出を完了させることとしてもよい。
【００１４】
これによれば、ポート入力部の故障により、ポート入力部からポート出力部へフリットを送信できない場合でも、ポート出力部が転送中のパケットにダミーフリットを挿入して送出を完了させるので、ポート出力部にて残りフリットを待ち続けることを防止し、そのポート出力部を共有する他のポート入力部のダウンを防止することができる。
【００１５】
また、前記ポート出力部は、故障が発生したとき前記ポート入力部から転送中の前記パケットの前記ノードへの送出を開始していなければ、該パケットを送出することなく送出完了の状態にすることとしてもよい。
【００１６】
これによれば、ポート入力部の故障により内容が破壊された可能性のあるヘッダーを含むパケットが送出され、ノードに悪影響を与えるのを防止することができる。
【００１７】
また、前記ポート出力部は、前記故障が前記パケットの先頭フリットと同時に通知されてきたとき、該パケットの送出を開始していないと判定することとしてもよい。
【００１８】
また、前記ポート出力部は、前記先頭フリットに含まれているヘッダーから挿入すべきダミーフリットの数を求めることとしてもよい。
【００１９】
また、複数の前記ノードが複数のパーティションに分割して使用されていることとしてもよい。
【００２０】
また、前記第１の通知信号は、全ての調停部に宛てた第１の調停要求信号を論理和した信号であることとしてもよい。
【００２１】
これによれば、全てのポート出力部に宛てた調停要求信号を論理和した信号を第１の通知信号としているので、全てのポート出力部への信号を共通のＯＲ回路で生成可能とすると共に、ポート入力部とポート出力部の間の信号線数を少なくすることにより、回路規模を小さくすることができる。
【００２２】
また、前記調停部の各々が対応する前記ポート出力部の内部に配置されていることとしてもよい。
【００２３】
これによれば、ポート出力部内に調停部を配置した、信号経路が長くなり易いな構成において、スループット低下の防止と高周波動作を両立させることができる。
【００２４】
また、前記ポート入力部の一部および前記ポート出力部の一部を前記ノードに代えて前記クロスバースイッチ同士で相互接続することとしてもよい。
【発明の効果】
【００２５】
本発明によれば、伝送経路による遅延を所定範囲に抑えるためのレジスタを調停回路に備えて高周波動作を可能とすると共に、前段の第２のレジスタに対応する第２の調停要求信号を調停に用いることにより、１フリットのパケットが連続したときでもスループットを低下させることなく調停を行なうことができる。
【発明を実施するための最良の形態】
【００２６】
本発明を実施するための形態について図面を参照して詳細に説明する。
【００２７】
（第１の実施形態）
図１は、本発明の第１の実施形態によるクロスバースイッチを用いた情報処理装置の構成例を示す図である。図１を参照すると、本実施形態の情報処理装置は、１６個のプロセッサノード１００〜１１５、８個のＩＯノード１２０〜１２７、および４個のクロスバースイッチ１３０〜１３３を有している。プロセッサノード１００〜１１５とＩＯノード１２０〜１２７はクロスバースイッチ１３０〜１３３を介して相互に接続されている。
【００２８】
４個のクロスバースイッチ１３０〜１３３の各々には４個のプロセッサノードと２個のＩＯノードが接続されている。そして、４個のクロスバースイッチは、互いに、１対１で接続されている。
【００２９】
例えば、クロスバースイッチ１３０には、プロセッサ１００が信号線１４０で接続され、プロセッサ１０１が信号線１４１で接続され、プロセッサ１０２が信号線１４２で接続され、プロセッサ１０３が信号線１４３で接続されている。さらに、クロスバースイッチ１３０には、ＩＯノード１２０が信号線１６０で接続され、ＩＯノード１２０が信号線１６０で接続されている。クロスバースイッチ１３０は、クロスバースイッチ１３１と信号線１３４で接続され、クロスバースイッチ１３２と信号線１３６で接続され、クロスバースイッチ１３３と信号線１３８で接続されている。
【００３０】
プロセッサノード１００〜１１５は、ひとつまたは複数のプロセッサ（不図示）と、主記憶（不図示）から構成される。また、ＩＯノード１２０〜１２７は、ＩＯ制御装置（不図示）やＩＯデバイス（不図示）などで構成される。
【００３１】
なお、情報処理装置は図１に例示した構成以外の構成であってもよい。例えば、２個のプロセッサノードおよび１個のＩＯノードが１個のクロスバースイッチにより接続される小規模な構成であってもよい。また、６４個のプロセッサノードおよび３２個のＩＯノードが１６個のクロスバースイッチにより接続される大規模な構成であってもよい。
【００３２】
また、本実施形態ではプロセッサノードとＩＯノードをそれぞれに定義したが、本発明はこの構成に限定されるものではない。他の例として、プロセッサ、主記憶、ＩＯ制御装置、ＩＯデバイスなどで構成されたノードを定義し、複数のノードをクロスバースイッチによって接続する構成の情報処理装置であってもよい。
【００３３】
図２は、第１の実施形態におけるクロスバースイッチの構成を示すブロック図である。クロスバースイッチ１３０〜１３３は全て同様の構成なので、ここではクロスバースイッチ１３０について説明する。図２を参照すると、クロスバースイッチ１３０は、９個のポート入力部２００〜２０８および９個のポート出力部２１０〜２１８を有している。ポート入力部２００〜２０８の各々とポート出力部２１０〜２１８の各々とは全て１対１で接続されている。また、ポート入力部２００〜２０８とポート出力部２１０〜２１８は１対１の対をなしており、対をなすポート入力部の接続先とポート出力部の接続先とは同じである。
【００３４】
ここではポート入力部とポート出力部の対をポートと定義する。例えば、プロセッサノード１００に接続されるポートは、ポート入力部２００とポート出力部２１０からなる対である。図２において、ポート入力部２００とプロセッサ１００を接続する信号線２２０と、ポート出力部２１０とプロセッサ１００を接続する信号線２３０との対が図１に示した信号線１４０に対応している。
【００３５】
すなわち、クロスバースイッチ１３０の９個のポートの各々はプロセッサノード１００〜１０３、ＩＯノード１２０〜１２１、クロスバースイッチ１３１〜１３３の各々接続されている。なお、９個のポートは互いに同じ構成なので他の接続の組み合わせは任意であり、他の接続も可能である。
【００３６】
図３は、図１に示した情報処理装置を２つのパーティションに分割した構成例を示す図である。図３を参照すると、パーティション７００には、プロセッサ１００、１０１、１０４、１０５、ＩＯノード１２０、１２２、クロスバースイッチ１３０、１３１が属している。また、パーティション７０１には、プロセッサ１０２、１０３、１０６、１０７、１０８〜１１５、ＩＯノード１２１、１２３〜１２７、クロスバースイッチ１３０〜１３３が属している。ここでは情報処理装置を２個のパーティションに分割しているが更に細かく分割してもよい。
【００３７】
パーティション７００とパーティション７０１の各々では独立のオペレーティングシステム（ＯＳ）が動作するので、一方のパーティションの故障により他方のパーティションがダウンしないことが好ましい。特に、クロスバースイッチ１３０、１３１はパーティション７００とパーティション７０１の双方に属するために、故障の影響をポートに閉じたものとすることが好ましい。
【００３８】
図４は、情報処理装置内の転送フォーマットの一例を示す図である。ここで、論理的な転送単位をパケットとし、また、パケットは１つ以上のフリットから構成されるものとする。フリットは固定のビット幅を持ち、本実施形態では６８ビット幅であるとする。フリットには、ヘッダー１フリット、ヘッダー２フリット、データフリットの３種類があり、図４にはそれら３種類のフリットの転送フォーマットを示してある。
【００３９】
図４を参照すると、全てのフリットのビット６７〜６５はストローブであり、フリットが有効か無効であるか、およびそのフリットの種類を示す。“０００（２進数）”はフリットが無効であることを示す。また、“１００（２進数）”はフリットが有効かつヘッダー１フリットであることを示す。“０１０（２進数）”はフリットが有効かつヘッダー２フリットであることを示す。“００１（２進数）”はフリットが有効かつデータフリットであることを示す。なお、この定義は一例であり、他の例としてエンコードした２ビットでストローブの情報を表現してもよい。
【００４０】
パケットには、ヘッダー１フリットが１個含まれ、ヘッダー２フリットが０個または１個含まれ、データフリットが０個、１個、２個、４個、８個または１６個含まれる。したがって、最小のパケットは１個のフリットのみから構成されたものである。また、最大のパケットは１８個のフリットから構成されたものとなる。
【００４１】
図４に戻り、全てのフリットのビット６４はラストフラグであり、そのフリットがパケットの最後のフリットであるか否かを示す。“０”はパケットの最後のフリットではないことを示し、“１”はパケットの最後のフリットであることを示す。なお、ここでは回路構成を簡略化するためにラストフラグを定義したが、ラストフラグは必須ではない。ラストフラグが無くても、例えば後述するヘッダータイプとデータレングスから最後のフリットを求めることができる。また、フリットには、誤り検出あるいは訂正のために、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）またはパリティが付加されてもよい。
【００４２】
ヘッダー１フリットのビット６３〜０には、８ビットを単位として８個のフィールドが定義されている。以下に各フィールドについて説明する。ただし、これらのフィールド定義は一例であり、情報処理装置に備えられているリソース、用いられるプロトコル、および採用されているトポロジーに依存して決定できる。
【００４３】
ヘッダータイプは、パケットがヘッダー２フリットを含むか否かを示すフィールドである。“００（１６進数）”はヘッダー２フリットを含まないことを示し、“０１（１６進数）”はヘッダー２フリットを含むことを示す。その他の値は未定義である。
【００４４】
データレングスは、パケットに含まれるデータフリットの数を示すフィールドである。“００（１６進数）”はデータフリットを含まないことを示し、“０１（１６進数）”は１個のデータフリットを含むことを示し、“０２（１６進数）”は２個のデータフリットを含むことを示し、“０３（１６進数）”は４個のデータフリットを含むことを示し、“０４（１６進数）”は８個のデータフリットを含むことを示し、“０５（１６進数）”は１６個のデータフリットを含むことを示す。その他の値は未定義である。
【００４５】
コマンドコードは、例えばメモリーリードやＩＯライトやリプライといった、ターゲットの装置に対する動作を指定するコードが格納されるフィールドである。
【００４６】
ソースノードＩＤは、パケットの転送元のプロセッサノードまたはＩＯノードを識別する番号が格納されるフィールドである。
【００４７】
ソース装置ＩＤは、パケットの転送元の装置を識別する番号が格納されるフィールドである。パケットの転送元の装置としては、例えば、プロセッサ、ＩＯコントローラー、主記憶装置などがある。
【００４８】
ターゲットノードＩＤは、パケットの転送先のプロセッサノードまたはＩＯノードを識別する番号が格納されるフィールドである。
【００４９】
ターゲット装置ＩＤは、パケットの転送先の装置種別を識別する番号が格納されるフィールドである。パケットの転送先の装置としては、例えば、プロセッサ、ＩＯコントローラー、主記憶装置などがある。
【００５０】
ヘッダー２フリットのビット６３〜５０は未使用である。
【００５１】
ビット４９〜０はアドレスであり、リクエストのターゲットを格納するフィールドである。例えば、コマンドコードがメモリーリードであれば、アドレスは、主記憶装置内のリード対象のメモリーを指定する。なお、本実施形態では、アドレスをヘッダー２フリットに定義しているが、これは一例であり、アドレスを含む必要な情報が全てヘッダー１フリットに収まるならばヘッダー２フリットを定義しなくてもよい。
【００５２】
データフリットのビット６３〜０は、データを格納するフィールドである。
【００５３】
図５は、第１の実施形態におけるクロスバースイッチのポート入力部およびポート出力部の詳細な構成を示すブロック図である。図５を参照すると、ポート入力部２００は、レジスタ３００〜３０３、ＯＲ回路３０４、３０５、ビット分割部３０６、３０７、および出力ポート生成回路３０８を有している。また、ポート出力部２１０は、ポートリクエスト生成回路３１０〜３１３、調停回路３２０、レジスタ３２１〜３２３、セレクター３２４、ビットＯＲ回路３２５、およびビット分割部３２６を有している。
【００５４】
レジスタ３００および３０１は、６８ビット幅であり、プロセッサノード１００から入力したパケットのフリットを格納する。なお、プロセッサノード１００とレジスタ３００の間には、ＥＣＣチェック回路やパリティチェック回路、受信バッファーなどが設けられてもよい。
【００５５】
プロセッサノード１００から出力されたフリット信号２２０はレジスタ３００および出力ポート生成回路３０８に入力する。レジスタ３００から出力されたフリット信号３３３はレジスタ３０１へ入力する。レジスタ３０１から出力されたフリット信号３３４は、ポート入力部２００に１対９接続された９個のポート出力部２１０〜２１８内のセレクター３２４へ送られる。
【００５６】
出力ポート生成回路３０８は、プロセッサノード１００から出力されたフリット信号２２０をデコードし、ヘッダー１フリットの出力先を示す９ビットの調停要求信号２５０を生成し、レジスタ３０２に出力する。フリット信号２２０がヘッダー１フリットでなければ、すなわちフリット信号２２０のビット６７〜６５が“１００（２進数）”でなければ、調停要求信号２５０は“０００００００００（２進数）”となる。９ビットの調停要求信号２５０は、そのビット０〜８の各々がポート出力部２１０〜２１８に対応する。例えば、ヘッダー１フリットの出力先がポート出力部２１０であれば、調停要求信号２５０は“００００００００１（２進数）”となる。また、ヘッダー１フリットの出力先がポート出力部２１１であれば“０００００００１０（２進数）”となり、ヘッダー１フリットの出力先がポート出力部２１８であれば“１００００００００（２進数）”となる。ヘッダー１フリットから調停要求信号２５０を生成する方法としては、例えば、プログラム可能なテーブルを予め備えておき、ターゲットノードＩＤおよびターゲット装置ＩＤからテーブルを参照して生成する方法が考えられる。
【００５７】
出力ポート生成回路３０８から出力された調停要求信号２５０は、レジスタ３０２に入力される。
【００５８】
レジスタ３０２およびレジスタ３０３は、９ビット幅であり、調停要求を格納する。レジスタ３０２に格納される調停要求は、レジスタ３００に格納されるヘッダー１フリットに対応する。レジスタ３０３に格納される調停要求は、レジスタ３０１に格納されるヘッダー１フリットに対応する。例えば、レジスタ３００にポート出力部２１０行きのヘッダー１フリットが格納されれば、レジスタ３０２には“００００００００１（２進数）”が格納される。また、レジスタ３００にポート出力部２１１行きのヘッダー１フリットが格納されれば、レジスタ３０２には“０００００００１０（２進数）”が格納される。レジスタ３００にポート出力部２１８行きのヘッダー１フリットが格納されれば、レジスタ３０２には“１００００００００（２進数）”が格納される。レジスタ３００にヘッダー１フリットが格納されなければ、レジスタ３０２には“０００００００００（２進数）”が格納される。
【００５９】
レジスタ３０３もレジスタ３０２と同様に、例えば、レジスタ３０１にポート出力部２１０行きのヘッダー１フリットが格納されれば、レジスタ３０３には“００００００００１（２進数）”が格納される。また、レジスタ３０１にポート出力部２１１行きのヘッダー１フリットが格納されれば、レジスタ３０３には“０００００００１０（２進数）”が格納される。レジスタ３０１にポート出力部２１８行きのヘッダー１フリットが格納されれば、レジスタ３０３には“１００００００００（２進数）”が格納される。レジスタ３０１にヘッダー１フリットが格納されなければ、レジスタ３０３には“０００００００００（２進数）”が格納される。
【００６０】
レジスタ３００およびレジスタ３０１は、レジスタ３０１にヘッダー１フリットが格納されており、かつＯＲ回路３０４から出力される送出許可信号３３０が“０”であれば、そのヘッダー１フリットから始まるパケットを送信できないので、格納している値を保持する。それ以外の場合、レジスタ３００およびレジスタ３０１は、入力したフリット信号をセットする。
【００６１】
レジスタ３０２およびレジスタ３０３は、レジスタ３０１にヘッダー１フリットが格納されており、かつＯＲ回路３０４から出力される送出許可信号３３０が“０”であれば、格納している値を保持する。それ以外の場合、レジスタ３０２およびレジスタ３０３は、入力する調停要求信号２５０および３３１をセットする。
【００６２】
レジスタ３０１にヘッダー１フリットが格納されていることは、レジスタ３０１のビット６７〜６５が“１００（２進数）”であることによって判断することができる。
【００６３】
ＯＲ回路３０４は、ポート出力部２１０〜２１８から入力する送出許可信号４３０、４４０、…、４５０の論理和をとり、送出許可信号３３０としてレジスタ３００〜３０３へ出力する。
【００６４】
レジスタ３０２から出力される調停要求信号３３１は９ビットの信号であり、ビット分割部３０７で各ビット０〜８に分割される。ビット０〜８はポート出力部２１０〜２１８の各々に入力される。ビット０は調停要求信号３４０としてポート出力部２１０のポートリクエスト生成回路３１０へ入力される。ビット１は調停要求信号３４１としてポート出力部２１１へ入力される。また、ビット８は調停要求信号３４８としてポート出力部２１８へ入力される。不図示のビット２〜７はポート出力部２１２〜２１７の各々に入力される。
【００６５】
レジスタ３０３から出力される調停要求信号３３２は９ビットの信号であり、ビット分割部３０６で各ビット０〜８に分割される。ビット０〜８の各々はポート出力部２１０〜２１８へ入力される。ビット０は調停要求信号３５０としてポート出力部２１０のポートリクエスト生成回路３１０へ入力される。ビット１は調停要求信号３５１としてポート出力部２１１へ入力される。ビット８は調停要求信号３５８としてポート出力部２１８へ入力される。不図示のビット２〜７はポート出力部２１２〜２１７の各々に入力される。
【００６６】
レジスタ３０３から出力される調停要求信号３３２はＯＲ回路３０５へも入力される。
【００６７】
ＯＲ回路３０５は、入力する調停要求信号３３２の９ビットの論理和をとり、１ビットの調停要求ＯＲ信号３３５として出力する。調停要求ＯＲ信号３３５は、ポート入力部２００に１対９接続されたポート出力部２１０〜２１８に入力される。
【００６８】
ポート出力部２１０において、ポートリクエスト生成回路３１０は、ポート入力部２００から入力する調停要求信号３４０、調停要求信号３５０、および調停要求ＯＲ信号３３５と、レジスタ３２３から入力する送出許可信号４３０と、ビットＯＲ回路３２５から入力する送出許可ＯＲ信号４２０とから、ポート入力部２００の調停要求信号４１０を生成して調停回路３２０へ出力する。
【００６９】
ポートリクエスト生成回路３１１は、ポート入力部２０１から入力する調停要求信号３６０、調停要求信号３７０、調停要求ＯＲ信号３３７と、レジスタ３２３から入力する送出許可信号４３１と、ビットＯＲ回路３２５から入力する送出許可ＯＲ信号４２１とから、ポート入力部２０１の調停要求信号４１１を生成して調停回路３２０へ出力する。
【００７０】
ポートリクエスト生成回路３１８は、ポート入力部２０８から入力する調停要求信号３８０、調停要求信号３９０、調停要求ＯＲ信号３３９と、レジスタ３２３から入力する送出許可信号４３８と、ビットＯＲ回路３２５から入力する送出許可ＯＲ信号４２８とから、ポート入力部２０８の調停要求信号４１８を生成して調停回路３２０へ出力する。
【００７１】
ポート入力部２０２〜２０７に対応するポートリクエスト生成回路は図示しないが、ポートリクエスト生成回路３１０、３１１、３１８と同様の構成で、調停要求信号４１２〜４１７を出力する。
【００７２】
調停回路３２０は、ポート入力部２００〜２０８に対応する調停要求信号４１０〜４１８について調停を行い、９ビットの調停結果信号４００を出力する。調停結果信号４００のビット０〜８はポート入力部２００〜２０８に対応しており、調停により権限を獲得したポート入力部に対応するビットのみが“１”になる。例えば、ポート入力部２００が権限を獲得したならば、調停結果信号４００は“００００００００１（２進数）”になる。ポート入力部２０１が権限を獲得したならば、調停結果信号４００は“０００００００１０（２進数）”になる。ポート入力部２０８が権限を獲得したならば、調停結果信号４００は“１００００００００（２進数）”になる。
【００７３】
ポート入力部２００〜２０８に対応する調停要求４１０〜４１８が全て“０”であれば、調停結果信号４００は“０００００００００（２進数）”になる。レジスタ３２２の格納する値が“０００００００００（２進数）”以外であり、かつフリット信号４０４のラストフラグ（ビット６４）が“０”であればパケットの転送中なので、調停結果信号４００は“０００００００００（２進数）”になる。
【００７４】
調停結果信号４００は、レジスタ３２２とレジスタ３２３へ入力される。なお、ここで調停要求に対する調停は、例えばラウンドロビン方式の既知の回路などによって実現可能である。
【００７５】
レジスタ３２２は、自身の格納している値が“０００００００００（２進数）”であるか、フリット信号４０４のラストフラグが“１”であれば、調停回路３２０の出力する調停結果信号４００をセットし、それ以外であれば値を保持する。
【００７６】
レジスタ３２２の出力するポート選択信号４０３は、セレクター３２４へ入力する。
【００７７】
レジスタ３２３は、サイクル毎に無条件で調停回路３２０の出力する調停結果信号４００をセットする。
【００７８】
セレクター３２４は、ポート選択信号４０３に従って、ポート入力部２００〜２０８から入力するフリット信号３３４、３３６、…、３３８のいずれかを選択し、フリット信号４０４として出力する。不図示のポート入力部２０２〜２０７からもセレクター３２４へフリット信号が入力される。ポート選択信号４０３のビット０〜８は、ポート入力部２００〜２０８から出力されるフリット信号３３４、３３５、…、３３８に対応する。例えば、ポート選択信号４０３が“００００００００１（２進数）”であれば、セレクター３２４は、ポート入力部２００から入力するフリット信号３３４を選択する。また、ポート選択信号４０３が“０００００００１０（２進数）”であれば、セレクター３２２は、ポート入力部２０１から入力するフリット信号３３６を選択する。ポート選択信号４０３が“１００００００００（２進数）”の場合は、ポート入力部２０８から入力するフリット信号３３８を選択し、フリット信号４０４として出力する。
【００７９】
レジスタ３２３の出力する送出許可信号４０１は、ビットＯＲ回路３２５と他のポート出力部２１１〜２１８へ入力される。また、他のポート出力部２１１〜２１８から出力された送出許可信号４０５、…、４０６は、ポート出力部２１０のビットＯＲ回路３２５へ入力される。不図示のポート出力部２１２〜２１７からもビットＯＲ回路３２５へ送出許可信号が入力する。
【００８０】
レジスタ３２３の出力する送出許可信号４０１は、ビット分割部３２６で各ビット０〜８に分割され、各ビット０〜８が送出許可信号４３０〜４３８として出力される。送出許可信号４３０は、ポート入力部２００とポートリクエスト生成回路３１０へ入力する。送出許可信号４３１は、ポート入力部２０１とポートリクエスト生成回路３１１へ入力する。送出許可信号４３８は、ポート入力部２０８とポートリクエスト生成回路３１８へ入力する。不図示のポート出力部２１２〜２１７についても同様である。
【００８１】
ビットＯＲ回路３２５は、入力する各９ビットの送出許可信号について、ビット毎に、論理和を取って９ビットの送出許可ＯＲ信号４２０〜４２８を生成する。例えば、送出許可信号４０１が“００００００００１（２進数）”で、送出許可信号４０５が“０００００００１０”で、送出許可信号４０６が“１００００００００（２進数）”であれば、送出許可ＯＲ信号４２０は“１”となり、送出許可ＯＲ信号４２１は“１”となり、不図示の送出許可ＯＲ信号４２２〜４２７は“０”となり、送出許可ＯＲ信号４２８は“１”となる。
【００８２】
送出許可ＯＲ信号４２０はポートリクエスト生成回路３１０へ入力し、送出許可ＯＲ信号４２１はポートリクエスト生成回路３１１へ入力し、不図示の送出許可ＯＲ信号４２２〜４２７はポートリクエスト生成回路３１２〜３１７へ入力し、送出許可ＯＲ信号４２８はポートリクエスト生成回路３１８へ入力する。
【００８３】
レジスタ３２１はセレクター３２４の出力するフリット信号４０４をサイクル毎にセットする。レジスタ３２１の出力するフリット信号２３０はプロセッサノード１００へ入力される。なお、レジスタ３２１とプロセッサノード１００の間には、ＥＣＣ生成回路や送信バッファーなどが設けられてもよい。
【００８４】
図６は、第１の実施形態におけるポートリクエスト生成回路の詳細な構成を示すブロック図である。
【００８５】
図６を参照すると、ポート入力部２００からの調停要求ＯＲ信号３３５は、ＮＯＴ回路５０３で反転されてＯＲ回路５０４に入力される。ＯＲ回路５０４は、ＮＯＴ回路５０３からの信号と、ビットＯＲ回路３２５からの調停獲得信号４２０との論理和をとって信号５１３としてＡＮＤ回路５０５に出力する。ＡＮＤ回路は、信号５１３と、ポート入力部２００からの調停要求信号３４０との論理積をとって信号５１４としてＯＲ回路５０２に出力する。
【００８６】
つまり、図５のレジスタ３００にポート出力部２１０行きのヘッダー１フリットが格納されておりかつ図５のレジスタ３０１にヘッダー１フリットが格納されていない場合、またはレジスタ３００にポート出力部２１０行きのヘッダー１フリットが格納されておりかつレジスタ３０１に格納されているヘッダー１フリットに対する送出許可信号が“１”である場合には信号５１４が“１”となる。
【００８７】
ポート入力部２００からの調停要求信号３５０はＡＮＤ回路５０１に入力される。また、送信許可信号４３０は、ＮＯＴ回路５００で反転されて信号５１０としてＡＮＤ回路５０１に入力される。ＡＮＤ回路５０１は、それらの論理積をとって信号５１１としてＯＲ回路５０２に出力する。
【００８８】
つまり、図５のレジスタ３０１にポート出力部２１０行きのヘッダー１フリットが格納されておりかつそのヘッダー１フリットに対する送出許可信号が“０”であれば、信号５１１が“１”となる。そして、信号５１１と信号５１４はＯＲ回路５０２で論理和がとられ、ポート入力部２００の調停要求信号４１０が生成される。
【００８９】
ＯＲ回路５０２は、信号５１４と信号５１１の論理和をとって、ポート入力部の調停要求信号４１０として調停回路３２０に出力する。
【００９０】
以上の構成により、本実施形態のクロスバースイッチは、ポート入力部２１０〜２１８に接続されたノードからの調停要求が有効か否か判定し、有効な調停要求に基づいて調停処理を行なう。
【００９１】
次に、本実施形態のクロスバースイッチにおける調停要求の有効性判定について説明する。図７は、第１の実施形態によるクロスバースイッチの判定動作を示すフローチャートである。この動作はポート入力部毎に行われる。
【００９２】
図７を参照すると、各ポート入力部２１０〜２０８は、ノード等からのパケットを構成するフリットを、出力段と前段の２つのレジスタ３００、３０１によって２サイクル分保持する（ステップ１００１）。
【００９３】
そして、各ポート入力部２１０〜２０８は、出力段のレジスタ３０１のフリットを各ポート出力部２１０〜２１８に送ると共に、２種類の調停要求信号およびＯＲ信号
を生成し、所望のポート出力部に送る（ステップ１００２）。
【００９４】
出力段のレジスタ３０１にヘッダー１フリットが来たとき、ポート入力部２００〜２０８は、その旨を示す調停要求信号を生成して所望のポート出力部に送る。前段のレジスタ３００にヘッダー１フリットが来たとき、ポート入力部２００〜２０８は、その旨を示す調停要求信号を生成して所望のポート出力部に送る。また、ポート入力部２００〜２０８は、出力段の調停要求信号をポート出力部２１０〜２１８のいずれかに送っていることを示すＯＲ信号を全てのポート出力部２１０〜２１８に送る。
【００９５】
一方、各ポート出力部２１０〜２１８は、図５、６に示した通り、各ポート入力部２００〜２０８からの２種類の調停要求信号およびＯＲ信号を入力とする他に、他のポート出力部の調停結果である送信許可信号を入力としている。そして、ポート出力部２１０〜２１８は、ポート入力部２００〜２０８に対応する９つのポートリクエスト生成回路３１０〜３１８を有している。
【００９６】
ポートリクエスト生成回路３１０〜３１８は、対応するポート入力部からの２種類の調停要求信号およびＯＲ信号と、全てのポート出力部２１０〜２１８による送信許可信号のＯＲ信号とから、以下に示す２つの条件のいずれかが満足されているか否か判定する（ステップ１００３）。第１の条件は、出力段のレジスタに要求があり、かつその要求について送信許可を与えていないという条件である。第２の条件は、出力段のレジスタに要求が無いかあるいは出力段の要求に既に送信許可を与えており、かつ前段のレジスタに要求があるという条件である。
【００９７】
そして、ポートリクエスト生成回路３１０〜３１８は、いずれかの条件が満足されていれば調停要求を有効とし（ステップ１００４）、いずれの条件も満足されていなければ調停要求を無効とする（ステップ１００５）。
【００９８】
調停回路３２０は、このように判定されたポート入力部２１０〜２１８からの調停要求に基づいてポート間の調停を行い、調停結果である送信許可信号を生成する。調停回路３２０の生成した送信許可信号は、レジスタ３２２を介してポート出力部での制御に用いられると共に、レジスタ３２３を介して各ポート入力部２１０〜２１８に送られ、制御に用いられる。
【００９９】
これにより、出力段レジスタ３０１に調停要求が無いか、あるいは調停要求があってもそのパケットは次に出力される予定のとき、次に出力段レジスタ３０１に来る前段レジスタ３００の調停要求を調停回路３２０に与えておくことにより、例えば１フリットのパケットが連続し、フリット毎に調停が必要となる状態でもスループットの低下を防止することができる。
【０１００】
次に、本実施形態のクロスバースイッチの動作例について説明する。
【０１０１】
図８は、第１の実施形態のクロスバースイッチの動作を説明するためのタイムチャートである。図８を参照すると、最初のサイクルＴ０で、レジスタ３００には、ポート出力部２１０行きのヘッダー１フリットが格納され、レジスタ３０１には、フリットは格納されないものとする。レジスタ３００に格納されるヘッダー１フリットは、そのヘッダー１フリットのみで１つのパケットを構成するものとする。
【０１０２】
レジスタ３０２には“００００００００１（２進数）”が格納され、レジスタ３０３には“０００００００００（２進数）”が格納される。そして、ポート入力部２００からポート出力部２１０への調停要求信号３４０が“１”になり、調停要求信号３５０が“０”になり、調停要求ＯＲ信号３３５が“０”になる。
【０１０３】
ポート出力部２１０のポートリクエスト生成回路３１０は、調停要求信号３４０が“１”で、調停要求ＯＲ信号３３５が“０”なので、信号５１４が“１”になり、よってポート入力部２００の調停要求信号４１０が“１”になる。
【０１０４】
ここで、調停回路３２０による調停でポート入力部２００が選択されたとすると、調停結果信号４００は“００００００００１（２進数）”になる。また、サイクルＴ０では、レジスタ３２２は“０００００００００（２進数）”であるとする。
【０１０５】
サイクルＴ１で、レジスタ３００に格納されていたヘッダー１フリットがレジスタ３０１にセットされる。また、レジスタ３００には、新たにポート出力部２１０行きのヘッダー１フリットがセットされるものとする。このフリットを含むパケットは、ヘッダー１フリット、ヘッダー２フリット、および２個のデータフリットから構成されるものとする。
【０１０６】
レジスタ３０２には“００００００００１（２進数）”がセットされ、レジスタ３０３には“００００００００１（２進数）”がセットされる。
【０１０７】
また、ポート入力部２００からポート出力部２１０への調停要求信号３４０が“１”になり、調停要求信号３５０が“１”になり、調停要求ＯＲ信号３３５が“１”になる。
【０１０８】
レジスタ３２２とレジスタ３２３には、調停結果信号４００の値“００００００００１（２進数）”がセットされる。この結果、送出許可信号４３０が“１”になる。また、送出許可信号４０１が“００００００００１（２進数）”になるので、ビットＯＲ回路３２５から出力される送出許可ＯＲ信号４２０は１になる。
【０１０９】
ポート出力部２１０のポートリクエスト生成回路３１０では、調停要求信号３４０が“１”で調停獲得信号４２０が“１”なので、調停要求信号４１０が“１”になる。
【０１１０】
ここで、調停回路３２０による調停で再びポート入力部２００が選択されたとすると、調停結果信号４００は“００００００００１（２進数）”になる。
【０１１１】
セレクター３２４は、レジスタ３２２から入力するポート選択信号４０３が“００００００００１（２進数）”なので、ポート入力部２００の出力するフリット信号３３４を選択して出力する。このとき、レジスタ３０１に格納されるヘッダー１フリットはパケットの最後のフリットなので、フリット信号４０４のビット６４のラストフラグは“１”となる。
【０１１２】
サイクルＴ２で、レジスタ３０１に格納されていたヘッダー１フリットがレジスタ３２１にセットされる。これで、最初のパケットに関して、ポート入力部２００からポート出力部２１０への転送が完了する。
【０１１３】
レジスタ３００に格納されていた２番目のヘッダー１フリットがレジスタ３０１にセットされる。レジスタ３００には次のヘッダー２フリットがセットされる。
【０１１４】
レジスタ３０２には“０００００００００（２進数）”がセットされ、レジスタ３０３には“００００００００１（２進数）”がセットされる。
【０１１５】
ポート入力部２００からポート出力部２１０へ出力される調停要求信号３４０が“０”になり、調停要求信号３５０が“１”になり、調停要求ＯＲ信号３３５が“１”になる。
【０１１６】
レジスタ３２２には、フリット信号４０４のビット６４のラストフラグが“１”なので、調停結果信号４００の値“００００００００１（２進数）”がセットされる。
【０１１７】
レジスタ３２３には、調停結果信号４００の値“００００００００１（２進数）”がセットされる。この結果、送出許可信号４３０が“１”になる。また、送出許可信号４０１が“００００００００１（２進数）”になるので、ビットＯＲ回路３２５から出力される送出許可ＯＲ信号４２０は“１”になる。
【０１１８】
ポート出力部２１０のポートリクエスト生成回路３１０では、調停要求３４０が“０”で、送出許可ＯＲ信号４２０が“１”なので、調停要求信号４１０が“０”になる。
【０１１９】
サイクルＴ３で、レジスタ３０１に格納されている２番目のヘッダー１フリットがレジスタ３２１にセットされる。また、レジスタ３００に格納されているヘッダー２フリットがレジスタ３０１にセットされる。レジスタ３００には１個目のデータフリットがセットされる。
【０１２０】
レジスタ３０２には“０００００００００（２進数）”がセットされ、レジスタ３０３には“０００００００００（２進数）”がセットされる。
【０１２１】
ポート入力部２００からポート出力部２１０へ出力される調停要求信号３４０が“０”になり、調停要求信号３５０が“０”になり、調停要求ＯＲ信号３３５が“０”になる。
【０１２２】
フリット信号４０４のラストフラグ（ビット６４）が“０”で、レジスタ３２２の値が“００００００００１（２進数）”なので、レジスタ３２２は“００００００００１（２進数）”をホールドする。レジスタ３２３には、調停結果信号４００の値“０００００００００（２進数）”がセットされる。
【０１２３】
サイクルＴ４で、レジスタ３０１に格納されているヘッダー２フリットがレジスタ３２１にセットされる。また、レジスタ３００に格納されているデータフリットがレジスタ３０１にセットされる。レジスタ３００には２個目のデータフリットがセットされる。
【０１２４】
レジスタ３０２およびレジスタ３０３には“０００００００００（２進数）”がセットされる。
【０１２５】
フリット信号４０４のラストフラグが“０”で、レジスタ３２２の値が“００００００００１（２進数）”なので、レジスタ３２２は“００００００００１（２進数）”をホールドする。レジスタ３２３には、調停結果信号４００の値“０００００００００（２進数）”がセットされる。
【０１２６】
サイクルＴ５で、レジスタ３０１に格納されているデータフリットがレジスタ３２１にセットされる。また、レジスタ３００に格納されている２番目のデータフリットがレジスタ３０１にセットされる。レジスタ３００には無効なフリットがセットされる。
【０１２７】
レジスタ３０２およびレジスタ３０３には“０００００００００（２進数）”がセットされる。
【０１２８】
フリット信号４０４のラストフラグが“０”で、レジスタ３２２の値が“００００００００１（２進数）”なので、レジスタ３２２は“００００００００１（２進数）”をホールドする。レジスタ３２３には、調停結果信号４００の値“０００００００００（２進数）”がセットされる。
【０１２９】
サイクルＴ６で、レジスタ３０１に格納されている２番目のデータフリットがレジスタ３２１にセットされる。レジスタ３００およびレジスタ３０１には無効なフリットがセットされる。
【０１３０】
レジスタ３０２およびレジスタ３０３には“０００００００００（２進数）”がセットされる。
【０１３１】
フリット信号４０４のラストフラグが“１”なので、レジスタ３２２には、調停結果信号４００の値“０００００００００（２進数）”がセットされる。レジスタ３２３にも、調停結果信号４００の値“０００００００００（２進数）”がセットされる。ここで、２番目のパケットに関して、ポート入力部２００からポート出力部２１０への転送が完了する。
【０１３２】
以上説明したように、本実施形態によれば、ポート出力部に調停回路を備え、ポート入力部にて、先頭の２つのフリットをレジスタ３０１、３００に格納し、ポート入力部からポート出力部へ３個の調停要求信号（２段の調停要求信号および調停要求ＯＲ信号）を送り、ポート出力部間で調停結果（送出許可信号）を相互に送受信する構成により、伝送経路による遅延を所定範囲に抑えるためのレジスタ３２２、３２３を調停回路３２０に備えて高周波動作を可能とすると共に、前段のレジスタ３００に対応する調停要求を調停に用いることにより、１フリットのパケットが連続したときでもスループットを低下させることなく調停を行なうことができる。
【０１３３】
また、本実施形態では、いずれかの要求先への調停要求があるかことを通知するための調停要求ＯＲ信号３３５を、全てのポート出力部２１０〜２１８に宛てた調停要求信号を論理和した信号としているので、全てのポート出力部２１０〜２１８への信号を共通のＯＲ回路３０５で生成可能とすると共に、ポート入力部とポート出力部の間の信号線数を少なくすることにより、回路規模を小さくすることができる。
【０１３４】
また、本実施形態では、本発明の典型的な構成としてポート出力部２１０内に調停回路３２０等を配置した、信号経路が長くなり易い構成において、スループット低下の防止と高周波動作を両立させることができる。
【０１３５】
なお、本実施形態では、ＯＲ回路３０５にて全てのポート出力部２１０〜２１８への調停要求信号のＯＲを求めて全てのポート出力部２１０〜２１８の全てに共通に送ることとしたが、本発明はこの構成に限定されるものではない。ポート出力部に対する調停要求信号は、ＯＲ回路３０５の出力とは別に、ビット分割部３０６から送られているので、ポート出力部にてＯＲを求めることとし、そのポート出力部に対する調停要求信号をポート入力部にてＯＲする必要はない。そこで、各ポート出力部へのＯＲ信号を個々に生成することとし、各ＯＲ信号からを生成するＯＲ回路に、送信先のポート出力部への調停要求信号を入力しないこととしてもよい。
【０１３６】
また、本実施形態では、ＯＲ回路３０５にて求めたＯＲ信号３３５を各ポート出力部２１０〜２１８に送ることとしたが、本発明はこの構成に限定されるものではない。ＯＲする前の信号（ＯＲ回路３０５の入力信号）を個々に各ポート出力部に送り、ポート出力部にてＯＲすることとしてもよい。
【０１３７】
また、図１に示したように、本実施形態のクロスバースイッチのポートには、ノードが接続されたものと、他のクロスバースイッチが接続されたものとがあるが、説明は主にノードの接続されたポートについてなされている。本実施形態のクロスバースイッチは、他のクロスバースイッチに接続されたポートについて、ノードに接続されたポートと同様の構成および動作で扱うことができる。
【０１３８】
また、本実施形態では、ポートリクエスト生成回路３１０〜３１８、ビットＯＲ回路３２５、調停回路３２０、レジスタ３２２、３２３を含む調停部がポート出力部２１０の内部に構成された例を示したが、本発明はこれに限定されるものではない。調停部はポート出力部の外部にあってもよい。例えば、各ポート出力部の付近に対応する調停部をそれぞれ配置してもよく、また、ポート入力部とポート出力部の中央に調停部を配置してもよい。
【０１３９】
（第２の実施形態）
複数のプロセッサノードと複数のＩＯノードを有する情報処理装置は、プロセッサノードおよびＩＯノードを複数のパーティションに分割して使用されることがある。そのような情報処理装置に備えられたクロスバースイッチは、複数のパーティションにより分割して使用される。そして、クロスバースイッチの有するポート入力部またはポート出力部が複数のパーティションに共有される場合がある。
【０１４０】
クロスバースイッチが複数のパーティションに分割して使用される場合、１つのパーティションに故障が発生し、そのパーティションでパケットを受信できない状態になると、そのパーティションを含む複数のパーティションに共有されるポート入力部にて、送信できないパケットが詰まってしまうことがある。そうなると、正常に動作しているパーティションのパケットも処理できなくなり、複数のパーティションがダウンしてしまうという問題があった。第２の実施形態ではこの点を改善している。
【０１４１】
第２の実施形態の情報処理装置は図１に示したものと同様の構成である。
【０１４２】
図９は、第２の実施形態におけるクロスバースイッチの構成を示すブロック図である。図９を参照すると、第２の実施形態のクロスバースイッチは、ポート入力部２００〜２０８およびポート出力部２１０〜２１８の診断を行うポート診断部６００〜６０８を有する点で第１の実施形態と異なる。ポート診断部６００〜６０８は全て同様の構成なので、ここではポート診断部６００のみについて説明する。
【０１４３】
ポート診断部６００は、ポート入力部２００とポート出力部２１０の対に関連する故障の診断を行う。ポート診断部６００は、ポート入力部２００またはポート出力部２１０に致命的な故障を検出したとき、あるいはポート入力部２００およびポート出力部２１０の属するパーティション内に致命的な故障を検出したとき、故障通知信号６３０を“１”にする。ここでは、故障によりパーティションが動作できない期間は、故障通知信号６３０は“１”に保たれるものとする。
【０１４４】
パーティション内の致命的な故障には、パーティションに属するプロセッサノード、パーティションに属するＩＯノード、パーティションに属する同じクロスバースイッチ内の他のポート、パーティションに属する他のクロスバースイッチ内のポートにおける致命的な故障が含まれる。
【０１４５】
ポート入力部、ポート出力部、プロセッサノード、ＩＯノードなどにおける故障の検出は一般的に用いられている方法によればよい。当業者にとって自明な方法としてハードウェア的な方法やソフトウェア的な方法など様々な方法があるがどのような方法であってもよい。
【０１４６】
プロセッサノード、ＩＯノード、他のクロスバースイッチ、同じクロスバースイッチの他のポートからポート診断部６００へ故障の発生を通知する方法についても特定の方法に限定されるものではない。故障通知のための専用のパケットを用いる方法、専用のインターフェースを設ける方法などが当業者にとってよく知られている。
【０１４７】
また、第２の実施形態のクロスバースイッチは、ポート出力部の構成が図５、６に示したものと異なる。
【０１４８】
図１０は、第２の実施形態におけるポート出力部の詳細な構成を示すブロック図である。図１０を参照すると、第２の実施形態のポート出力部２１０は、ポートリクエスト生成回路６１０、調停回路３２０、ビットＯＲ回路３２５、ＡＮＤ回路６２６、ビットＯＲ回路６２７、レジスタ３２３、ビット結束部６２５、およびビット分割部３２６を有している。
【０１４９】
図１０のポーリングリクエスト生成回路６１０おいて、ＮＯＴ回路５０３、５００、ＯＲ回路５０２、５０４、ＡＮＤ回路５０１、５０５からなる部分は図６に示したポーリングリクエスト生成回路３１０と同じものである。
【０１５０】
ＡＮＤ回路６２０は、故障通知信号６３０と信号５１１の論理積をとって信号６３１としてレジスタ６２１に出力する。レジスタ６２１は、ＡＮＤ回路６２０の出力信号６３１をサイクル毎にセットし、それを信号６３２としてＡＮＤ回路６２３に出力する。
【０１５１】
ＡＮＤ回路６２３は、信号６３０と出力信号６３２と信号５１０の論理積をとり、信号６３３としてビット結束部６２５に出力する。ビット結束部６２５は、信号６３３と他の８個のポートリクエスト生成回路からの同様の信号とを束ねて９ビットの信号６３４とし、ビットＯＲ回路６２７に出力する。
【０１５２】
また、ＡＮＤ回路６２６は、故障通知信号６３０がＮＯＴ回路６２４で反転された信号６３７と、調停回路３２０からの調停結果信号４００との論理積をとり、信号６３５としてビットＯＲ回路６２７に出力する。調停回路３２０からの調停結果信号４００は９ビットの信号なので、ＡＮＤ回路６２６は、９ビットの各々ついて信号６３７と論理積をとる。したがって信号６３５も９ビットの信号である。ビットＯＲ回路６２７は、９ビットの信号６３４と９ビットの信号６３５とのビット毎の論理和をとり、９ビットの信号６３６としてレジスタ３２３に出力する。
【０１５３】
図１１は、第２の実施形態によるクロスバースイッチの動作を示すフローチャートである。図１１を参照すると、本実施形態のクロスバースイッチは、ポート診断部６００にて、ポート毎にそのポートの属するパーティションがダウンしているか否か判定する（ステップ２００１）。パーティションのダウンが検出されると、そのパーティションに属するポート出力部のポートリクエスト生成回路は、自身への調停要求に対して強制的に送信許可を与える（ステップ２００２）。これにより他のパーティションにも属しているポート入力部からの障害パーティションのパケットを吐き出させ、廃棄することができる。
【０１５４】
いずれのパーティションのダウンも検出されなければ、ポートリクエスト回路は、図７に示したような通常の判定および調停を行なう（ステップ２００３）。この一連の動作はポート出力部毎に行われる。
【０１５５】
次に、本実施形態のクロスバースイッチの動作例について説明する。
【０１５６】
図１２は、第２の実施形態のクロスバースイッチの動作を説明するためのタイムチャートである。図１２を参照すると、サイクルＴ３以降、ポート診断部６００からの故障通知信号６３０が“１”になる。
【０１５７】
サイクルＴ０で、調停要求信号３５０が“１”になり、その同じサイクルで、その調停要求に対する送出許可信号４３０が“１”になる。
【０１５８】
サイクルＴ１で、調停要求信号３５０が“１”になり、次のサイクルＴ２で、その調停要求に対する送出許可信号４３０が“１”になる。ここまでは故障のない正常時の動作である。
【０１５９】
故障発生後のサイクルＴ４で、調停要求信号３５０が“１”になる。故障通知信号６３０が“１”なので、ＡＮＤ回路６２６の出力信号６３５は、調停回路３２０の出力する調停結果信号４００の値に依存せず、“０００００００００（２進数）”になる。
【０１６０】
サイクルＴ５で、調停要求信号３５０の値“１”がレジスタ６２１にセットされ、また送出許可信号４３０が“０”なので、信号６３３が“１”になる。
【０１６１】
ここで他のポートリクエスト生成回路の信号６３３に相当する信号が全て“０”ならば、信号６３４は“００００００００１（２進数）”になる。
【０１６２】
ビットＯＲ回路は、“０００００００００（２進数）”と“００００００００１（２進数）”のビット毎の論理和をとるので、信号６３６は“００００００００１（２進数）”になる。
【０１６３】
サイクルＴ６で、信号６３６の値“００００００００１（２進数）”がレジスタ３２３にセットされ、送出許可信号４３０が“１”になる。これにより、ポート入力部２００はサイクルＴ６からパケットの転送を開始することとなる。
【０１６４】
以上説明したように、本実施形態のポート出力部２１０のポートリクエスト生成回路６１０は、ポート出力部２１０の属するパーティションがダウンすると、正常に動作している他のパーティションに属するポート入力部からの調停要求に対して無条件で権限獲得（送信許可）を示す信号を“１”にし、ダウンしたパーティションを共有するポート入力部のパケットを吐き出させて廃棄するので、ダウンしたパーティションとポート出力部を共有する他のパーティションのポート入力部におけるパケットのつまりを防止することができる。
【０１６５】
（第３の実施形態）
上述したように、複数のプロセッサノードと複数のＩＯノードを有する情報処理装置は、プロセッサノードおよびＩＯノードを複数のパーティションに分割して使用されることがある。そのような情報処理装置に備えられたクロスバースイッチは、複数のパーティションにより分割して使用される。そして、クロスバースイッチの有するポート入力部またはポート出力部が複数のパーティションに共有される場合がある。
【０１６６】
そのようなクロスバースイッチは、ポート入力部からポート出力部へパケットを転送している途中に、そのポート入力部が故障してフリットの送信ができなくなると、ポート出力部は未受信の残りのフリットを待ち続けることとなる。そうなると、クロスバースイッチのそのポート出力部を共用する他のパーティションのパケットが処理されなくなり、複数のパーティションがダウンしてしまうという問題があった。第３の実施形態ではこの点を改善している。
【０１６７】
第３の実施形態におけるクロスバースイッチは図２に示した第１の実施形態のものと同様の構成である。
【０１６８】
図１３は、第３の実施形態におけるクロスバースイッチのポート入力部およびポート出力部の詳細な構成を示すブロック図である。図１３は、理解を容易にするために、図５に示した第１の実施形態と同じ構成の部分が省略されている。図１３中で点線で囲われている部分が第３の実施形態に特有の部分である。
【０１６９】
第３の実施形態におけるポート入力部２００は、故障検出回路８００を有している点で第１の実施形態のものと異なる。故障検出回路８００は、ポート入力部２００内に致命的な故障を検出すると、故障通知信号８１０を“１”にする。
【０１７０】
故障通知信号８１０はポート出力部２１０のセレクター８０９に入力されている。図示していないが、セレクター８０９には、ポート入力部２００からの故障通知信号８１０の他に、他の全てのポート入力部２０１〜２０８から同様の故障通知信号が接入力される。
【０１７１】
セレクター８０９は、上述したセレクター３２４と同様にレジスタ３２２からのポート選択信号４０３に従って、調停によりパケットの送出を許可されたポート入力部の信号を選択し、信号８１８としてレジスタ８０６、３２２、３２３に出力する。つまり、ポート入力部からポート出力部に対してパケットを転送しているとき、そのポート入力部に致命的なエラーが発生すると信号８１８が“１”になる。
【０１７２】
レジスタ８０６は信号８１８をサイクル毎にセットする。
【０１７３】
本実施形態ではレジスタ３２２およびレジスタ３２３は、信号８１８と信号８２１の少なくとも一方が“１”となれば、次のサイクルで“０００００００００（２進数）”にリセットされる。
【０１７４】
パケット情報抽出回路８０２は、ＯＲ回路８０８の出力信号８２１、レジスタ３２１の出力信号８１１、ダミーフリット生成回路８０５の出力信号８１７、レジスタ８０４の出力信号８１６から、転送中のパケットの残りフリット数を算出する。そして、パケット情報抽出回路８０２は、転送中のパケットの今後転送されるフリットの中にヘッダー２フリットが含まれているか否かを示す１ビットの信号８１３をレジスタ８０３に出力する。また、パケット情報抽出回路８０２は、転送中のパケットの今後転送されるフリットの中に含まれるデータフリットの個数を示す信号８１５をレジスタ８０４に出力する。
【０１７５】
レジスタ８０３は、１ビット幅であり、転送中のパケットの今後転送されるフリットの中にヘッダー２フリットが含まれるか否かを示す。“０”でヘッダー２フリットが含まれないことを示し、“１”でヘッダー２フリットが含まれることを示す。
【０１７６】
レジスタ８０３は、信号８２１が“０”で、レジスタ３２１のビット６７〜６５のストローブが“１００（２進数）”のとき、レジスタ３２１のビット６３〜５６のヘッダータイプをデコードした値がセットされる。ヘッダータイプが“００（１６進数）”ならばレジスタ８０３は“０”にセットされ、“０１（１６進数）”ならば“１”にセットされる。
【０１７７】
レジスタ８０３は、信号８２１が“０”で、レジスタ３２１のビット６７〜６５のストローブがヘッダー２フリットを示す“０１０（２進数）”のとき、“０”にリセットされる。
【０１７８】
また、レジスタ８０３は、信号８２１が“１”で、信号８１７のビット６７〜６５のストローブがヘッダー２フリットを示す“０１０（２進数）”のとき、“０”にリセットされる。
【０１７９】
レジスタ８０４は、５ビット幅であり、転送中のパケットの今後転送されるフリットの中に含まれるデータフリットの個数を示す。パケットに含まれるデータフリットの数は最大で１６個なので、レジスタ８０４は“０００００（２進数）”〜“１００００（２進数）”の範囲の値となりうる。
【０１８０】
レジスタ８０４は、信号８２１が“０”で、レジスタ３２１のビット６７〜６５のストローブが“１００（２進数）”のとき、レジスタ３２１のビット５５〜４８のデータレングスをデコードした値がセットされる。データレングスが“００（１６進数）”ならばレジスタ８０４は“０００００（２進数）”にセットされ、データレングスが“０１（１６進数）”ならば“００００１（２進数）”にセットされ、データレングスが“０２（１６進数）”ならば“０００１０（２進数）”にセットされ、データレングスが“０３（１６進数）”ならば“００１００（２進数）”にセットされ、データレングスが“０４（１６進数）”ならば“０１０００（２進数）”にセットされ、データレングスが“０５（１６進数）”ならば“１００００（２進数）”にセットされる。
【０１８１】
レジスタ８０４は、信号８２１が“０”で、レジスタ３２１のビット６７〜６５のストローブが“００１（２進数）”のとき、レジスタ８０４の出力信号８１６から“１”だけ減算した値がセットされる。例えば、信号８２１が“０”で、レジスタ３２１のビット６７〜６５のストローブが“００１（２進数）”で、レジスタ８０４は“１００００（２進数）”を格納していれば、次のサイクルでレジスタ８０４には“０１１１１（２進数）”がセットされる。
【０１８２】
レジスタ８０４は、信号８２１が“１”で、信号８１７のビット６７〜６５のストローブが“００１（２進数）”のとき、レジスタ８０４の出力信号８１６から“１”だけ減算した値がセットされる。
【０１８３】
ダミーフリット生成回路８０５には、レジスタ８０３の出力信号８１４と、レジスタ８０４の出力信号８１６と、ＯＲ回路８０８の出力信号８２１が入力する。ダミーフリット生成回路８０５は、パケットを送信中のポート入力部が故障により転送できなくなった残りフリットと同数のダミーフリットを生成し、６８ビットのフリット信号８１７としてセレクター８０１に出力する。
【０１８４】
信号８２１が“０”のとき、フリット信号８１７は“０００００００００００００００００（１６進数）”であり、すなわちダミーフリット生成回路８０５は、無効なフリットを出力する。
【０１８５】
信号８２１が“１”のとき、レジスタ８０３とレジスタ８０４の値に応じて、フリット信号８１７のビット６７〜６５（ストローブ）と、ビット６４（ラストフラグ）の値が決まる。レジスタ８０３が“１”で、レジスタ８０４が“０００００（２進数）”のとき、フリット信号８１７のビット６７〜６５のストローブは“０１０（２進数）”で、ビット６４のラストフラグは“１”である。レジスタ８０３が“１”で、レジスタ８０４が“００００１〜１００００（２進数）”のとき、フリット信号８１７のビット６７〜６５のストローブは“０１０（２進数）”で、ビット６４のラストフラグは“０”である。レジスタ８０３が“０”で、レジスタ８０４が“０００１０〜１００００（２進数）”のとき、フリット信号８１７のビット６７〜６５のストローブは“００１（２進数）”で、ビット６４のラストフラグは“０”である。レジスタ８０３が“０”で、レジスタ８０４が“００００１（２進数）”のとき、フリット信号８１７のビット６７〜６５のストローブは“００１（２進数）”で、ビット６４のラストフラグは“１”である。レジスタ８０３が“０”で、レジスタ８０４が“０００００（２進数）”のとき、フリット信号８１７のビット６７〜６５のストローブは“０００（２進数）”で、ビット６４のラストフラグは“０”である。
【０１８６】
信号８２１が“１”のとき、フリット信号８１７のビット６３〜０は、例えば“００００００００００００００００（１６進数）”などの任意の固定値でよい。また、このビット６３〜０を、ＥＣＣコードとの組み合わせで特殊なコードとし、情報処理装置の障害処理で利用してもよい。
【０１８７】
セレクター８０１は、ＯＲ回路８０８の出力信号８２１の値に従って、レジスタ３２１の出力するフリット信号８１１と、ダミーフリット生成回路の出力するフリット信号８１７のいずれかを選択し、フリット信号８１２としてプロセッサ１００に出力する。セレクター８０１は、信号８２１が“０”ならばフリット信号８１１を選択し、信号８２１が“１”ならばフリット信号８１７を選択する。
【０１８８】
レジスタ８０７は、１ビット幅である。レジスタ８０７は、レジスタ８０６の出力信号８１９が“１”のとき、１ビットのレジスタ８０３と５ビットのレジスタ８０４の中で少なくとも１ビットが“１”ならば“１”にセットされる。レジスタ８０７は、“１”を格納しているとき、レジスタ８０３が“０”かつレジスタ８０４が“０００００（２進数）”となれば“０”にリセットされ、それ以外の場合は“１”を保持する。
【０１８９】
ＯＲ回路８０８は、レジスタ８０６の出力信号８１９と、レジスタ８０７の出力信号８２０の論理和をとり、信号８２１としてパケット情報抽出回路８０２、ダミーフリット生成回路８０５、セレクター８０１、およびレジスタ３２２、３２３に出力する。
【０１９０】
次に、本実施形態のクロスバースイッチにおける動作について説明する。図１４は、第３の実施形態によるクロスバースイッチの動作を示すフローチャートである。図１４を参照すると、クロスバースイッチは、故障検出回路８００にてポート入力部２００の故障の有無を判定する（ステップ３００１）。ポート入力部２００に故障があれば、ポート出力部２１０は、そのポート入力部２００がパケット転送中か否か判定する（ステップ３００２）。
【０１９１】
パケット転送中であれば、ポート出力部２１０は、そのパケットのヘッダー１フリットを既にポートに送出済か否か判定する（ステップ３００３）。図１３の例では、ポート入力部２００からのヘッダー１フリットの転送と故障通知信号のアサートとが同サイクルであれば、ヘッダー１フリットが未送出と判定する。
【０１９２】
ヘッダー１フリットを送出済であれば、ポート出力部２１０は、ダミーフリット生成回路８０５にて残りのフリットを疑似するダミーフリットを挿入してパケット送出を完了させる（ステップ３０４）。一方、ヘッダー１フリットを未送出であれば、ポート出力部２１０は、そのヘッダー１フリットを含むパケットを送出することなく、そのパケット送出を完了した状態とする（ステップ３００５）。
【０１９３】
次に、本実施形態のクロスバースイッチの動作例について説明する。
【０１９４】
図１５は、第３の実施形態のクロスバースイッチの動作を説明するためのタイムチャートである。図１５には、パケットのノードへの出力を開始する前にポート入力部に故障が発生したときの動作が示されている。
【０１９５】
図１５を参照すると、最初のサイクルＴ０で、ポート入力部２００は、フリット信号３３４としてヘッダー１フリットを出力するが、それと同時にポート入力部２００内部で故障を検出し、故障通知信号８１０を“１”にアサートする。
【０１９６】
サイクルＴ１で、レジスタ３２２が“０００００００００（２進数）”にリセットされ、それによりセレクター８０９の出力信号８１８が“０”になる。レジスタ３２１には、サイクルＴ０でポート入力部２００から出力されたフリット信号３３４が、セレクター３２４を経由してセットされる。
【０１９７】
サイクルＴ１で信号８２１が“１”になるため、セレクター８０１はダミーフリット生成回路８０５の出力するフリット信号８１７を選択する。このとき、レジスタ８０３は“０”で、レジスタ８０４は“０００００（２進数）”なので、フリット信号８１７は“０００００００００００００００００（１６進数）”の無効なフリットとなる。
【０１９８】
サイクルＴ１で、信号８２１が“１”になるため、サイクルＴ２ではレジスタ８０３とレジスタ８０４には値がセットされない。
【０１９９】
サイクルＴ１で、レジスタ８０３が“０”かつレジスタ８０４が“０００００（２進数）”なので、サイクルＴ２で、レジスタ８０７には値がセットされない。
【０２００】
サイクルＴ２で、信号８２１が“０”になるので、新規の調停要求を受け付けるようになる。
【０２０１】
これらの動作により、ヘッダー１フリットと同時に故障通知信号８１０がアサートされれば、障害を検出したポート入力部からのパケットをプロセッサ１００に出力し始める前に廃棄することができる。
【０２０２】
図１６は、第３の実施形態のクロスバースイッチの他の動作を説明するためのタイムチャートである。図１６には、パケットのノードへの出力を開始した後にポート入力部に故障が発生したときの動作が示されている。
【０２０３】
図１６を参照すると、最初のサイクルＴ０で、ポート入力部２００は、フリット信号３３４としてヘッダー１フリットを出力する。このパケットは、ヘッダー１フリット、ヘッダー２フリット、および２個のデータフリットから構成されるものとする。
【０２０４】
サイクルＴ１で、ポート入力部２００は、フリット信号３３４としてヘッダー２フリットを出力するが、それと同時にポート入力部２００内部で致命的な故障を検出し、信号８１０を“１”にアサートする。レジスタ３２２が“００００００００１（２進数）”なので、セレクター８０９は信号８１０を選択し、信号８１８が“１”になる。レジスタ３２１には、サイクルＴ０でフリット信号３３４として出力されたヘッダー１フリットがセットされる。
【０２０５】
サイクルＴ２で、レジスタ３２２が“０００００００００（２進数）”にリセットされ、それによりセレクター８０９の出力信号８１８が“０”になる。レジスタ８０６は信号８１８をセットして“１”になる。これにより、ＯＲ回路８０８の出力信号８２１が“１”になる。
【０２０６】
サイクルＴ１ではＯＲ回路８０８からの出力信号８２１が“０”なので、サイクルＴ２では、レジスタ８０３およびレジスタ８０４に、レジスタ３２１に格納されるヘッダー１フリットをデコードした値がセットされる。パケットはヘッダー２フリットと２個のデータフリットを含むので、レジスタ８０３は“１”にセットされ、レジスタ８０４は“０００１０（２進数）”にセットされる。これにより、ダミーフリット生成回路の出力するフリット信号８１７は、ビット６７〜６５のストローブが“０１０（２進数）”で、ビット６４のラストフラグが“０”で、ビット６３〜０が“００００００００００００００００（１６進数）”というダミーのヘッダー２フリットとなる。信号８２１が“１”なので、セレクター８０１はフリット信号８１７を選択する。その結果、フリット信号８１２としてダミーフリット生成回路８０５からのヘッダー２フリットがプロセッサ１００に出力される。
【０２０７】
サイクルＴ３で、レジスタ８０７には、レジスタ８０６が出力する値がセットされ“１”になる。そのため、信号８２１は“１”のままとなる。サイクルＴ２で、フリット信号８１７からヘッダー２フリットを出力したので、レジスタ８０３は“０”になる。ダミーフリット生成回路８０５の出力するフリット信号８１７は、ビット６７〜６５のストローブが“００１（２進数）”で、ビット６４のラストフラグが“０”で、ビット６３〜０が“００００００００００００００００（１６進数）”というダミーのデータフリットとなる。信号８２１が“１”なので、セレクター８０１はフリット信号８１７を選択し、よって、フリット信号８１２は、ダミーフリット生成回路８０５から出力されるデータフリットになる。
【０２０８】
サイクルＴ４で、レジスタ８０７は“１”を保持し続けるので、信号８２１は“１”のままとなる。サイクルＴ３で、フリット信号８１７からデータフリットを出力したので、レジスタ８０４は“１”だけ減算されて“００００１（２進数）”になる。ダミーフリット生成回路８０５からのフリット信号８１７は、ビット６７〜６５のストローブが“００１（２進数）”で、ビット６４のラストフラグが“１”で、ビット６３〜０が“００００００００００００００００（１６進数）”というダミーのフリットとなる。信号８２１が“１”なので、セレクター８０１はフリット信号８１７を選択する。その結果、フリット信号８１２は、ダミーフリット生成回路８０５からのデータフリットになる。
【０２０９】
サイクルＴ５で、レジスタ８０７は“１”を保持し続けるので、信号８２１は“１”のままとなる。サイクルＴ４でフリット信号８１７からデータフリットを出力したので、レジスタ８０４は“１”だけ減算して“０００００（２進数）”になる。ダミーフリット生成回路の出力するフリット信号８１７は、レジスタ８０３が“０”でかつレジスタ８０４が“０００００（２進数）”であるので、“０００００００００００００００００（１６進数）”という無効なフリットになる。信号８２１が“１”なので、セレクター８０１はフリット信号８１７を選択する。その結果、フリット信号８１２は、ダミーフリット生成回路８０５からの無効なフリットになる。
【０２１０】
サイクルＴ６で、レジスタ８０７は“０”にリセットされる。これによりサイクルＴ７からは通常の調停が再開される。
【０２１１】
以上説明したように、本実施形態によれば、ポート入力部からポート出力部へフリットを送信できない状態を通知し、ポート出力部が、転送中のパケットの残りフリットを疑似するダミーフリットを生成し、出力するので、ポート出力部にて残りフリットを待ち続けることを防止し、そのポート出力部を共有する他のパーティションのダウンを防止することができる。
【０２１２】
その際、ポート出力部は、ポート入力部からの故障の通知が、そのパケットのヘッダー１フリットと同時であれば、そのパケットを出力することなく廃棄すると共に調停結果を格納するレジスタをリセットする。これにより、ポート入力部の故障により内容が破壊された可能性のあるヘッダーを含むパケットの送出により、ノードへ悪影響を与えるのを防止することができる。一方、パケットの出力を開始した後であれば、そのパケットの残りフリットを疑似するダミーフリットを出力すると共に調停結果を格納するレジスタをリセットする。
【０２１３】
なお、内容の破壊された可能性のあるヘッダーを含むパケットの送出防止を考慮しなければ、ヘッダー１フリットの送出が済んでいるか否かに関わらず、残りフリットを疑似したダミーフリットでパケットを完了させることとしてもよい。
【図面の簡単な説明】
【０２１４】
【図１】第１の実施形態によるクロスバースイッチを用いた情報処理装置の構成例を示す図である。
【図２】第１の実施形態におけるクロスバースイッチの構成を示すブロック図である。
【図３】図１に示した情報処理装置を２つのパーティションに分割した構成例を示す図である。
【図４】情報処理装置内の転送フォーマットの一例を示す図である。
【図５】第１の実施形態におけるクロスバースイッチのポート入力部およびポート出力部の詳細な構成を示すブロック図である。
【図６】第１の実施形態におけるポートリクエスト生成回路の詳細な構成を示すブロック図である。
【図７】第１の実施形態によるクロスバースイッチの判定動作を示すフローチャートである。
【図８】第１の実施形態のクロスバースイッチの動作を説明するためのタイムチャートである。
【図９】第２の実施形態におけるクロスバースイッチの構成を示すブロック図である。
【図１０】第２の実施形態におけるポート出力部の詳細な構成を示すブロック図である。
【図１１】第２の実施形態によるクロスバースイッチの動作を示すフローチャートである。
【図１２】第２の実施形態のクロスバースイッチの動作を説明するためのタイムチャートである。
【図１３】第３の実施形態におけるクロスバースイッチのポート入力部およびポート出力部の詳細な構成を示すブロック図である。
【図１４】第３の実施形態によるクロスバースイッチの動作を示すフローチャートである。
【図１５】第３の実施形態のクロスバースイッチの動作を説明するためのタイムチャートである。
【図１６】第３の実施形態のクロスバースイッチの他の動作を説明するためのタイムチャートである。
【符号の説明】
【０２１５】
１００〜１１５    プロセッサノード
１２０〜１２７    ＩＯノード
１３０〜１３３    クロスバースイッチ
１３４〜１３９、１４０〜１５５、１６０〜１６７、２２０〜２２８、２３０〜２３８    信号線
２００〜２０８    ポート入力部
２１０〜２１８    ポート出力部
３００〜３０３    レジスタ
３０４、３０５    ＯＲ回路
３０６、３０７    ビット分割部
３０８    出力ポート生成回路
３１０〜３１８    ポートリクエスト生成回路
３２０    調停回路
３２１〜３２３    レジスタ
３２４    セレクター
３２５    ビットＯＲ回路
３２６    ビット分割部
３３０、４０１〜４０６、４３０〜４３８、４４０〜４４８、４５０〜４５８    送出許可信号
３３２、３３１、３４０〜３４８、３５０〜３５８、３６０、３７０、４１０    調停要求信号
３３３、３３４    フリット信号
４００    調停結果信号
４２０〜４２８    送出許可ＯＲ信号
５００、５０３、６２４    ＮＯＴ回路
５０２、５０４    ＯＲ回路
５０１、５０５、６２０、６２３    ＡＮＤ回路
５１０〜５１４    信号
６００〜６０８    ポート診断部
６３０、６２６    故障通知信号
６３１〜６３７    信号
７００、７０１    パーティション
８００    故障検出回路
８０１    セレクター
８０２    パケット情報抽出回路
８０５    ダミーフリット生成回路
８１２    セレクター
８１４〜８２１    信号
１００１〜１００５、２００１〜２００３、３００１〜３００５    ステップ
【図１】
0004546380.tif 000002
【図２】
0004546380.tif 000003
【図３】
0004546380.tif 000004
【図４】
0004546380.tif 000005
【図５】
0004546380.tif 000006
【図６】
0004546380.tif 000007
【図７】
0004546380.tif 000008
【図８】
0004546380.tif 000009
【図９】
0004546380.tif 000010
【図１０】
0004546380.tif 000011
【図１１】
0004546380.tif 000012
【図１２】
0004546380.tif 000013
【図１３】
0004546380.tif 000014
【図１４】
0004546380.tif 000015
【図１５】
0004546380.tif 000016
【図１６】
0004546380.tif 000017