説明

クロスバースイッチ、情報処理装置および転送方法

【課題】スループットを低下させることなく高周波動作が可能なクロスバースイッチを提供する。
【解決手段】ポート入力部200は、ノード100からの2つのフリットを第1のレジスタ014と第2のレジスタ300とに格納し、2つの調停要求信号を生成する。また、いずれかの要求先への第1の調停要求信号があるか否かを通知するための第1の通知信号335を生成する。レジスタ322、323を備えた調停部は、複数のポート入力部からの2つの調停要求信号および第1の通知信号335と、第2の通知信号405〜406とに基づき調停回路320にて調停を行う。ポート入力部200は、調停結果信号に従って第1のレジスタ301からフリットを出力する。ポート出力部210は、調停結果信号に従って、いずれかのポート入力部の第1のレジスタ301から出力されたフリットをノード100に順次出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のノードが相互に送受信するデータをノード間で転送するクロスバースイッチに関する。
【背景技術】
【0002】
クロスバースイッチは、複数のプロセッサノードと複数のIOノードを有する情報処理装置の内部に備えられ、複数のプロセッサノードと複数のIOノードのそれぞれに接続する複数のポートを有している。そして、クロスバースイッチは、所望のポート入力部およびポート出力部を動的に選択して接続することにより、所望のプロセッサノードと所望のIOノードの間のデータ転送を可能にする。どのポート入力部とどのポート出力部を接続するかは調停回路により決定される(例えば特許文献1参照)。
【0003】
クロスバースイッチはデータをパケット単位で転送するので、調停回路はパケット単位でポート間の調停を行なう。パケットは1個以上のフリットから構成される。フリットとは、1サイクルで転送される固定幅のデータである。転送するパケットが1フリットからなる最小のものであれば、クロスバースイッチは、スループットを保ってデータを処理するためには調停をサイクル毎に実施する必要がある。この種のクロスバースイッチでは、調停回路から出力される調停結果信号はポート入力部およびポート出力部の双方の制御に必要である。
【特許文献1】特開2004−102607号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
クロスバースイッチの一例として、調停回路を各ポート出力部内に配置した構成がある。この構成では、ポート入力部からの調停要求信号をポート出力部内の調停回路に伝送する経路と、調停回路からの調停結果信号をポート入力部に伝送する経路が必要となる。そして、これらの経路を信号が1サイクルで往復する必要がある。そのため、例えばクロスバースイッチを1つのLSIに実装する構成においてポート入力部とポート出力部のレイアウト上の距離が長い部分があるので、高周波動作が困難であるという問題があった。
【0005】
また、ポート入力部とポート出力部を1サイクルで往復する経路を無くすために経路の途中に信号を格納するレジスタを設けると、1サイクルの経路長は短くなるが、信号をレジスタに格納して読み出すサイクル分の遅延が生じることとなる。そのため、サイクル毎の調停が困難となり、データのスループットが低下してしまうという問題があった。
【0006】
また、他の構成においても、調停回路とポート入力部およびポート出力部との間の経路長によっては、高周波動作あるいはスループットの維持が困難になる可能性があった。
【0007】
本発明の目的は、スループットを低下させることなく高周波動作が可能なクロスバースイッチを提供することである。
【課題を解決するための手段】
【0008】
上記目的を達成するために、本発明のクロスバースイッチは、
複数のノード間にあって、少なくとも1つのフリットからなるパケットを前記ノード間で転送するクロスバースイッチであって、
いずれか1つのノードに接続されており、該ノードからの先頭の2つのフリットを、出力段となる第1のレジスタとその前段となる第2のレジスタとに格納し、前記第1のレジスタにパケット先頭の先頭フリットが格納されたとき所望の要求先への第1の調停要求信号を生成し、前記第2のレジスタに前記先頭フリットが格納されたとき所望の要求先への第2の調停要求信号を生成し、さらに、いずれかの要求先への前記第1の調停要求信号があるか否かを通知するための第1の通知信号を生成し、前記第1の調停要求信号、前記第2の調停要求信号、および前記第1の通知信号を用いた調停による調停結果信号が得られると、該調停結果信号に従って前記第1のレジスタからフリットを出力すると共に前記第1のレジスタおよび前記第2のレジスタに格納するフリットを順次進める複数のポート入力部と、
いずれか1つのノードおよび前記複数のポート入力部の全てに接続され、前記調停結果信号が得られると、該調停結果信号に従って、いずれかのポート入力部の前記第1のレジスタから出力されたフリットを前記ノードに順次出力する複数のポート出力部と、
前記ポート出力部に対応して設けられ、伝送経路により生じる前記調停結果信号の遅延を所定範囲に抑えるためのレジスタを調停回路の前または後に備え、前記複数のポート入力部から自身宛の前記第1の調停要求信号および前記第2の調停要求信号と前記第1の通知信号とを受け、各々の調停結果信号を第2の通知信号として相互に送受信し、前記第1の調停要求信号、前記第2の調停要求信号、前記第1の通知信号、および前記第2の通知信号に基づき前記調停回路にて調停を行い、前記調停結果信号を前記ポート入力部および前記ポート出力部に与える複数の調停部と、を有している。
【0009】
したがって、本発明によれば、伝送経路による遅延を所定範囲に抑えるためのレジスタを調停回路に備えて高周波動作を可能とすると共に、前段の第2のレジスタに対応する第2の調停要求信号を調停に用いることにより、1フリットのパケットが連続したときでもスループットを低下させることなく調停を行なうことができる。
【0010】
また、前記調停部は、前記ポート入力部の各々について、前記第1の調停要求信号があり、かつ該第1の調停要求信号に対する送信許可が与えられていないとき、あるいは前記第1の調停要求信号がないかまたは前記第1の調停要求信号があるが該第1の調停要求信号に対する送信許可が既に与えられており、かつ前記第2の調停要求信号があるとき、前記ポート入力部からの調停要求を有効として前記調停回路に与えるポートリクエスト生成回路を有することとしてもよい。
【0011】
また、複数の前記ポート出力部と複数の前記ポート入力部は1対1の対をなして同じノードに接続されており、
前記ポート出力部と前記ポート入力部の対に関連する故障を診断するポート診断部を更に有し、
前記調停部は、対応するポート出力部とポート入力部の対に関連する故障の通知を前記ポート診断部から受けると、自身への前記第1の調停要求に対して強制的に送信許可を与えることとしてもよい。
【0012】
これによれば、ポートに関連する故障が発生すると、正常に動作している他のパーティションに属するポートからの第1の調停要求信号に対して無条件で送信許可を与えるので、故障に関連するポート出力部を共有する他のポート入力部のパケットを吐き出させて廃棄することによりパケットのつまりを防止することができる。
【0013】
また、前記ポート入力部は、該ポート入力部内の故障を検出し前記ポート出力部に通知する故障検出回路を有し、
前記ポート出力部は、故障の発生したポート入力部からパケットが転送されている途中であれば、前記ノードに送出中の該パケットに残りのフリットを疑似するダミーフリットを挿入し、該パケットの前記ノードへの送出を完了させることとしてもよい。
【0014】
これによれば、ポート入力部の故障により、ポート入力部からポート出力部へフリットを送信できない場合でも、ポート出力部が転送中のパケットにダミーフリットを挿入して送出を完了させるので、ポート出力部にて残りフリットを待ち続けることを防止し、そのポート出力部を共有する他のポート入力部のダウンを防止することができる。
【0015】
また、前記ポート出力部は、故障が発生したとき前記ポート入力部から転送中の前記パケットの前記ノードへの送出を開始していなければ、該パケットを送出することなく送出完了の状態にすることとしてもよい。
【0016】
これによれば、ポート入力部の故障により内容が破壊された可能性のあるヘッダーを含むパケットが送出され、ノードに悪影響を与えるのを防止することができる。
【0017】
また、前記ポート出力部は、前記故障が前記パケットの先頭フリットと同時に通知されてきたとき、該パケットの送出を開始していないと判定することとしてもよい。
【0018】
また、前記ポート出力部は、前記先頭フリットに含まれているヘッダーから挿入すべきダミーフリットの数を求めることとしてもよい。
【0019】
また、複数の前記ノードが複数のパーティションに分割して使用されていることとしてもよい。
【0020】
また、前記第1の通知信号は、全ての調停部に宛てた第1の調停要求信号を論理和した信号であることとしてもよい。
【0021】
これによれば、全てのポート出力部に宛てた調停要求信号を論理和した信号を第1の通知信号としているので、全てのポート出力部への信号を共通のOR回路で生成可能とすると共に、ポート入力部とポート出力部の間の信号線数を少なくすることにより、回路規模を小さくすることができる。
【0022】
また、前記調停部の各々が対応する前記ポート出力部の内部に配置されていることとしてもよい。
【0023】
これによれば、ポート出力部内に調停部を配置した、信号経路が長くなり易いな構成において、スループット低下の防止と高周波動作を両立させることができる。
【0024】
また、前記ポート入力部の一部および前記ポート出力部の一部を前記ノードに代えて前記クロスバースイッチ同士で相互接続することとしてもよい。
【発明の効果】
【0025】
本発明によれば、伝送経路による遅延を所定範囲に抑えるためのレジスタを調停回路に備えて高周波動作を可能とすると共に、前段の第2のレジスタに対応する第2の調停要求信号を調停に用いることにより、1フリットのパケットが連続したときでもスループットを低下させることなく調停を行なうことができる。
【発明を実施するための最良の形態】
【0026】
本発明を実施するための形態について図面を参照して詳細に説明する。
【0027】
(第1の実施形態)
図1は、本発明の第1の実施形態によるクロスバースイッチを用いた情報処理装置の構成例を示す図である。図1を参照すると、本実施形態の情報処理装置は、16個のプロセッサノード100〜115、8個のIOノード120〜127、および4個のクロスバースイッチ130〜133を有している。プロセッサノード100〜115とIOノード120〜127はクロスバースイッチ130〜133を介して相互に接続されている。
【0028】
4個のクロスバースイッチ130〜133の各々には4個のプロセッサノードと2個のIOノードが接続されている。そして、4個のクロスバースイッチは、互いに、1対1で接続されている。
【0029】
例えば、クロスバースイッチ130には、プロセッサ100が信号線140で接続され、プロセッサ101が信号線141で接続され、プロセッサ102が信号線142で接続され、プロセッサ103が信号線143で接続されている。さらに、クロスバースイッチ130には、IOノード120が信号線160で接続され、IOノード120が信号線160で接続されている。クロスバースイッチ130は、クロスバースイッチ131と信号線134で接続され、クロスバースイッチ132と信号線136で接続され、クロスバースイッチ133と信号線138で接続されている。
【0030】
プロセッサノード100〜115は、ひとつまたは複数のプロセッサ(不図示)と、主記憶(不図示)から構成される。また、IOノード120〜127は、IO制御装置(不図示)やIOデバイス(不図示)などで構成される。
【0031】
なお、情報処理装置は図1に例示した構成以外の構成であってもよい。例えば、2個のプロセッサノードおよび1個のIOノードが1個のクロスバースイッチにより接続される小規模な構成であってもよい。また、64個のプロセッサノードおよび32個のIOノードが16個のクロスバースイッチにより接続される大規模な構成であってもよい。
【0032】
また、本実施形態ではプロセッサノードとIOノードをそれぞれに定義したが、本発明はこの構成に限定されるものではない。他の例として、プロセッサ、主記憶、IO制御装置、IOデバイスなどで構成されたノードを定義し、複数のノードをクロスバースイッチによって接続する構成の情報処理装置であってもよい。
【0033】
図2は、第1の実施形態におけるクロスバースイッチの構成を示すブロック図である。クロスバースイッチ130〜133は全て同様の構成なので、ここではクロスバースイッチ130について説明する。図2を参照すると、クロスバースイッチ130は、9個のポート入力部200〜208および9個のポート出力部210〜218を有している。ポート入力部200〜208の各々とポート出力部210〜218の各々とは全て1対1で接続されている。また、ポート入力部200〜208とポート出力部210〜218は1対1の対をなしており、対をなすポート入力部の接続先とポート出力部の接続先とは同じである。
【0034】
ここではポート入力部とポート出力部の対をポートと定義する。例えば、プロセッサノード100に接続されるポートは、ポート入力部200とポート出力部210からなる対である。図2において、ポート入力部200とプロセッサ100を接続する信号線220と、ポート出力部210とプロセッサ100を接続する信号線230との対が図1に示した信号線140に対応している。
【0035】
すなわち、クロスバースイッチ130の9個のポートの各々はプロセッサノード100〜103、IOノード120〜121、クロスバースイッチ131〜133の各々接続されている。なお、9個のポートは互いに同じ構成なので他の接続の組み合わせは任意であり、他の接続も可能である。
【0036】
図3は、図1に示した情報処理装置を2つのパーティションに分割した構成例を示す図である。図3を参照すると、パーティション700には、プロセッサ100、101、104、105、IOノード120、122、クロスバースイッチ130、131が属している。また、パーティション701には、プロセッサ102、103、106、107、108〜115、IOノード121、123〜127、クロスバースイッチ130〜133が属している。ここでは情報処理装置を2個のパーティションに分割しているが更に細かく分割してもよい。
【0037】
パーティション700とパーティション701の各々では独立のオペレーティングシステム(OS)が動作するので、一方のパーティションの故障により他方のパーティションがダウンしないことが好ましい。特に、クロスバースイッチ130、131はパーティション700とパーティション701の双方に属するために、故障の影響をポートに閉じたものとすることが好ましい。
【0038】
図4は、情報処理装置内の転送フォーマットの一例を示す図である。ここで、論理的な転送単位をパケットとし、また、パケットは1つ以上のフリットから構成されるものとする。フリットは固定のビット幅を持ち、本実施形態では68ビット幅であるとする。フリットには、ヘッダー1フリット、ヘッダー2フリット、データフリットの3種類があり、図4にはそれら3種類のフリットの転送フォーマットを示してある。
【0039】
図4を参照すると、全てのフリットのビット67〜65はストローブであり、フリットが有効か無効であるか、およびそのフリットの種類を示す。“000(2進数)”はフリットが無効であることを示す。また、“100(2進数)”はフリットが有効かつヘッダー1フリットであることを示す。“010(2進数)”はフリットが有効かつヘッダー2フリットであることを示す。“001(2進数)”はフリットが有効かつデータフリットであることを示す。なお、この定義は一例であり、他の例としてエンコードした2ビットでストローブの情報を表現してもよい。
【0040】
パケットには、ヘッダー1フリットが1個含まれ、ヘッダー2フリットが0個または1個含まれ、データフリットが0個、1個、2個、4個、8個または16個含まれる。したがって、最小のパケットは1個のフリットのみから構成されたものである。また、最大のパケットは18個のフリットから構成されたものとなる。
【0041】
図4に戻り、全てのフリットのビット64はラストフラグであり、そのフリットがパケットの最後のフリットであるか否かを示す。“0”はパケットの最後のフリットではないことを示し、“1”はパケットの最後のフリットであることを示す。なお、ここでは回路構成を簡略化するためにラストフラグを定義したが、ラストフラグは必須ではない。ラストフラグが無くても、例えば後述するヘッダータイプとデータレングスから最後のフリットを求めることができる。また、フリットには、誤り検出あるいは訂正のために、ECC(Error Correction Code)またはパリティが付加されてもよい。
【0042】
ヘッダー1フリットのビット63〜0には、8ビットを単位として8個のフィールドが定義されている。以下に各フィールドについて説明する。ただし、これらのフィールド定義は一例であり、情報処理装置に備えられているリソース、用いられるプロトコル、および採用されているトポロジーに依存して決定できる。
【0043】
ヘッダータイプは、パケットがヘッダー2フリットを含むか否かを示すフィールドである。“00(16進数)”はヘッダー2フリットを含まないことを示し、“01(16進数)”はヘッダー2フリットを含むことを示す。その他の値は未定義である。
【0044】
データレングスは、パケットに含まれるデータフリットの数を示すフィールドである。“00(16進数)”はデータフリットを含まないことを示し、“01(16進数)”は1個のデータフリットを含むことを示し、“02(16進数)”は2個のデータフリットを含むことを示し、“03(16進数)”は4個のデータフリットを含むことを示し、“04(16進数)”は8個のデータフリットを含むことを示し、“05(16進数)”は16個のデータフリットを含むことを示す。その他の値は未定義である。
【0045】
コマンドコードは、例えばメモリーリードやIOライトやリプライといった、ターゲットの装置に対する動作を指定するコードが格納されるフィールドである。
【0046】
ソースノードIDは、パケットの転送元のプロセッサノードまたはIOノードを識別する番号が格納されるフィールドである。
【0047】
ソース装置IDは、パケットの転送元の装置を識別する番号が格納されるフィールドである。パケットの転送元の装置としては、例えば、プロセッサ、IOコントローラー、主記憶装置などがある。
【0048】
ターゲットノードIDは、パケットの転送先のプロセッサノードまたはIOノードを識別する番号が格納されるフィールドである。
【0049】
ターゲット装置IDは、パケットの転送先の装置種別を識別する番号が格納されるフィールドである。パケットの転送先の装置としては、例えば、プロセッサ、IOコントローラー、主記憶装置などがある。
【0050】
ヘッダー2フリットのビット63〜50は未使用である。
【0051】
ビット49〜0はアドレスであり、リクエストのターゲットを格納するフィールドである。例えば、コマンドコードがメモリーリードであれば、アドレスは、主記憶装置内のリード対象のメモリーを指定する。なお、本実施形態では、アドレスをヘッダー2フリットに定義しているが、これは一例であり、アドレスを含む必要な情報が全てヘッダー1フリットに収まるならばヘッダー2フリットを定義しなくてもよい。
【0052】
データフリットのビット63〜0は、データを格納するフィールドである。
【0053】
図5は、第1の実施形態におけるクロスバースイッチのポート入力部およびポート出力部の詳細な構成を示すブロック図である。図5を参照すると、ポート入力部200は、レジスタ300〜303、OR回路304、305、ビット分割部306、307、および出力ポート生成回路308を有している。また、ポート出力部210は、ポートリクエスト生成回路310〜313、調停回路320、レジスタ321〜323、セレクター324、ビットOR回路325、およびビット分割部326を有している。
【0054】
レジスタ300および301は、68ビット幅であり、プロセッサノード100から入力したパケットのフリットを格納する。なお、プロセッサノード100とレジスタ300の間には、ECCチェック回路やパリティチェック回路、受信バッファーなどが設けられてもよい。
【0055】
プロセッサノード100から出力されたフリット信号220はレジスタ300および出力ポート生成回路308に入力する。レジスタ300から出力されたフリット信号333はレジスタ301へ入力する。レジスタ301から出力されたフリット信号334は、ポート入力部200に1対9接続された9個のポート出力部210〜218内のセレクター324へ送られる。
【0056】
出力ポート生成回路308は、プロセッサノード100から出力されたフリット信号220をデコードし、ヘッダー1フリットの出力先を示す9ビットの調停要求信号250を生成し、レジスタ302に出力する。フリット信号220がヘッダー1フリットでなければ、すなわちフリット信号220のビット67〜65が“100(2進数)”でなければ、調停要求信号250は“000000000(2進数)”となる。9ビットの調停要求信号250は、そのビット0〜8の各々がポート出力部210〜218に対応する。例えば、ヘッダー1フリットの出力先がポート出力部210であれば、調停要求信号250は“000000001(2進数)”となる。また、ヘッダー1フリットの出力先がポート出力部211であれば“000000010(2進数)”となり、ヘッダー1フリットの出力先がポート出力部218であれば“100000000(2進数)”となる。ヘッダー1フリットから調停要求信号250を生成する方法としては、例えば、プログラム可能なテーブルを予め備えておき、ターゲットノードIDおよびターゲット装置IDからテーブルを参照して生成する方法が考えられる。
【0057】
出力ポート生成回路308から出力された調停要求信号250は、レジスタ302に入力される。
【0058】
レジスタ302およびレジスタ303は、9ビット幅であり、調停要求を格納する。レジスタ302に格納される調停要求は、レジスタ300に格納されるヘッダー1フリットに対応する。レジスタ303に格納される調停要求は、レジスタ301に格納されるヘッダー1フリットに対応する。例えば、レジスタ300にポート出力部210行きのヘッダー1フリットが格納されれば、レジスタ302には“000000001(2進数)”が格納される。また、レジスタ300にポート出力部211行きのヘッダー1フリットが格納されれば、レジスタ302には“000000010(2進数)”が格納される。レジスタ300にポート出力部218行きのヘッダー1フリットが格納されれば、レジスタ302には“100000000(2進数)”が格納される。レジスタ300にヘッダー1フリットが格納されなければ、レジスタ302には“000000000(2進数)”が格納される。
【0059】
レジスタ303もレジスタ302と同様に、例えば、レジスタ301にポート出力部210行きのヘッダー1フリットが格納されれば、レジスタ303には“000000001(2進数)”が格納される。また、レジスタ301にポート出力部211行きのヘッダー1フリットが格納されれば、レジスタ303には“000000010(2進数)”が格納される。レジスタ301にポート出力部218行きのヘッダー1フリットが格納されれば、レジスタ303には“100000000(2進数)”が格納される。レジスタ301にヘッダー1フリットが格納されなければ、レジスタ303には“000000000(2進数)”が格納される。
【0060】
レジスタ300およびレジスタ301は、レジスタ301にヘッダー1フリットが格納されており、かつOR回路304から出力される送出許可信号330が“0”であれば、そのヘッダー1フリットから始まるパケットを送信できないので、格納している値を保持する。それ以外の場合、レジスタ300およびレジスタ301は、入力したフリット信号をセットする。
【0061】
レジスタ302およびレジスタ303は、レジスタ301にヘッダー1フリットが格納されており、かつOR回路304から出力される送出許可信号330が“0”であれば、格納している値を保持する。それ以外の場合、レジスタ302およびレジスタ303は、入力する調停要求信号250および331をセットする。
【0062】
レジスタ301にヘッダー1フリットが格納されていることは、レジスタ301のビット67〜65が“100(2進数)”であることによって判断することができる。
【0063】
OR回路304は、ポート出力部210〜218から入力する送出許可信号430、440、…、450の論理和をとり、送出許可信号330としてレジスタ300〜303へ出力する。
【0064】
レジスタ302から出力される調停要求信号331は9ビットの信号であり、ビット分割部307で各ビット0〜8に分割される。ビット0〜8はポート出力部210〜218の各々に入力される。ビット0は調停要求信号340としてポート出力部210のポートリクエスト生成回路310へ入力される。ビット1は調停要求信号341としてポート出力部211へ入力される。また、ビット8は調停要求信号348としてポート出力部218へ入力される。不図示のビット2〜7はポート出力部212〜217の各々に入力される。
【0065】
レジスタ303から出力される調停要求信号332は9ビットの信号であり、ビット分割部306で各ビット0〜8に分割される。ビット0〜8の各々はポート出力部210〜218へ入力される。ビット0は調停要求信号350としてポート出力部210のポートリクエスト生成回路310へ入力される。ビット1は調停要求信号351としてポート出力部211へ入力される。ビット8は調停要求信号358としてポート出力部218へ入力される。不図示のビット2〜7はポート出力部212〜217の各々に入力される。
【0066】
レジスタ303から出力される調停要求信号332はOR回路305へも入力される。
【0067】
OR回路305は、入力する調停要求信号332の9ビットの論理和をとり、1ビットの調停要求OR信号335として出力する。調停要求OR信号335は、ポート入力部200に1対9接続されたポート出力部210〜218に入力される。
【0068】
ポート出力部210において、ポートリクエスト生成回路310は、ポート入力部200から入力する調停要求信号340、調停要求信号350、および調停要求OR信号335と、レジスタ323から入力する送出許可信号430と、ビットOR回路325から入力する送出許可OR信号420とから、ポート入力部200の調停要求信号410を生成して調停回路320へ出力する。
【0069】
ポートリクエスト生成回路311は、ポート入力部201から入力する調停要求信号360、調停要求信号370、調停要求OR信号337と、レジスタ323から入力する送出許可信号431と、ビットOR回路325から入力する送出許可OR信号421とから、ポート入力部201の調停要求信号411を生成して調停回路320へ出力する。
【0070】
ポートリクエスト生成回路318は、ポート入力部208から入力する調停要求信号380、調停要求信号390、調停要求OR信号339と、レジスタ323から入力する送出許可信号438と、ビットOR回路325から入力する送出許可OR信号428とから、ポート入力部208の調停要求信号418を生成して調停回路320へ出力する。
【0071】
ポート入力部202〜207に対応するポートリクエスト生成回路は図示しないが、ポートリクエスト生成回路310、311、318と同様の構成で、調停要求信号412〜417を出力する。
【0072】
調停回路320は、ポート入力部200〜208に対応する調停要求信号410〜418について調停を行い、9ビットの調停結果信号400を出力する。調停結果信号400のビット0〜8はポート入力部200〜208に対応しており、調停により権限を獲得したポート入力部に対応するビットのみが“1”になる。例えば、ポート入力部200が権限を獲得したならば、調停結果信号400は“000000001(2進数)”になる。ポート入力部201が権限を獲得したならば、調停結果信号400は“000000010(2進数)”になる。ポート入力部208が権限を獲得したならば、調停結果信号400は“100000000(2進数)”になる。
【0073】
ポート入力部200〜208に対応する調停要求410〜418が全て“0”であれば、調停結果信号400は“000000000(2進数)”になる。レジスタ322の格納する値が“000000000(2進数)”以外であり、かつフリット信号404のラストフラグ(ビット64)が“0”であればパケットの転送中なので、調停結果信号400は“000000000(2進数)”になる。
【0074】
調停結果信号400は、レジスタ322とレジスタ323へ入力される。なお、ここで調停要求に対する調停は、例えばラウンドロビン方式の既知の回路などによって実現可能である。
【0075】
レジスタ322は、自身の格納している値が“000000000(2進数)”であるか、フリット信号404のラストフラグが“1”であれば、調停回路320の出力する調停結果信号400をセットし、それ以外であれば値を保持する。
【0076】
レジスタ322の出力するポート選択信号403は、セレクター324へ入力する。
【0077】
レジスタ323は、サイクル毎に無条件で調停回路320の出力する調停結果信号400をセットする。
【0078】
セレクター324は、ポート選択信号403に従って、ポート入力部200〜208から入力するフリット信号334、336、…、338のいずれかを選択し、フリット信号404として出力する。不図示のポート入力部202〜207からもセレクター324へフリット信号が入力される。ポート選択信号403のビット0〜8は、ポート入力部200〜208から出力されるフリット信号334、335、…、338に対応する。例えば、ポート選択信号403が“000000001(2進数)”であれば、セレクター324は、ポート入力部200から入力するフリット信号334を選択する。また、ポート選択信号403が“000000010(2進数)”であれば、セレクター322は、ポート入力部201から入力するフリット信号336を選択する。ポート選択信号403が“100000000(2進数)”の場合は、ポート入力部208から入力するフリット信号338を選択し、フリット信号404として出力する。
【0079】
レジスタ323の出力する送出許可信号401は、ビットOR回路325と他のポート出力部211〜218へ入力される。また、他のポート出力部211〜218から出力された送出許可信号405、…、406は、ポート出力部210のビットOR回路325へ入力される。不図示のポート出力部212〜217からもビットOR回路325へ送出許可信号が入力する。
【0080】
レジスタ323の出力する送出許可信号401は、ビット分割部326で各ビット0〜8に分割され、各ビット0〜8が送出許可信号430〜438として出力される。送出許可信号430は、ポート入力部200とポートリクエスト生成回路310へ入力する。送出許可信号431は、ポート入力部201とポートリクエスト生成回路311へ入力する。送出許可信号438は、ポート入力部208とポートリクエスト生成回路318へ入力する。不図示のポート出力部212〜217についても同様である。
【0081】
ビットOR回路325は、入力する各9ビットの送出許可信号について、ビット毎に、論理和を取って9ビットの送出許可OR信号420〜428を生成する。例えば、送出許可信号401が“000000001(2進数)”で、送出許可信号405が“000000010”で、送出許可信号406が“100000000(2進数)”であれば、送出許可OR信号420は“1”となり、送出許可OR信号421は“1”となり、不図示の送出許可OR信号422〜427は“0”となり、送出許可OR信号428は“1”となる。
【0082】
送出許可OR信号420はポートリクエスト生成回路310へ入力し、送出許可OR信号421はポートリクエスト生成回路311へ入力し、不図示の送出許可OR信号422〜427はポートリクエスト生成回路312〜317へ入力し、送出許可OR信号428はポートリクエスト生成回路318へ入力する。
【0083】
レジスタ321はセレクター324の出力するフリット信号404をサイクル毎にセットする。レジスタ321の出力するフリット信号230はプロセッサノード100へ入力される。なお、レジスタ321とプロセッサノード100の間には、ECC生成回路や送信バッファーなどが設けられてもよい。
【0084】
図6は、第1の実施形態におけるポートリクエスト生成回路の詳細な構成を示すブロック図である。
【0085】
図6を参照すると、ポート入力部200からの調停要求OR信号335は、NOT回路503で反転されてOR回路504に入力される。OR回路504は、NOT回路503からの信号と、ビットOR回路325からの調停獲得信号420との論理和をとって信号513としてAND回路505に出力する。AND回路は、信号513と、ポート入力部200からの調停要求信号340との論理積をとって信号514としてOR回路502に出力する。
【0086】
つまり、図5のレジスタ300にポート出力部210行きのヘッダー1フリットが格納されておりかつ図5のレジスタ301にヘッダー1フリットが格納されていない場合、またはレジスタ300にポート出力部210行きのヘッダー1フリットが格納されておりかつレジスタ301に格納されているヘッダー1フリットに対する送出許可信号が“1”である場合には信号514が“1”となる。
【0087】
ポート入力部200からの調停要求信号350はAND回路501に入力される。また、送信許可信号430は、NOT回路500で反転されて信号510としてAND回路501に入力される。AND回路501は、それらの論理積をとって信号511としてOR回路502に出力する。
【0088】
つまり、図5のレジスタ301にポート出力部210行きのヘッダー1フリットが格納されておりかつそのヘッダー1フリットに対する送出許可信号が“0”であれば、信号511が“1”となる。そして、信号511と信号514はOR回路502で論理和がとられ、ポート入力部200の調停要求信号410が生成される。
【0089】
OR回路502は、信号514と信号511の論理和をとって、ポート入力部の調停要求信号410として調停回路320に出力する。
【0090】
以上の構成により、本実施形態のクロスバースイッチは、ポート入力部210〜218に接続されたノードからの調停要求が有効か否か判定し、有効な調停要求に基づいて調停処理を行なう。
【0091】
次に、本実施形態のクロスバースイッチにおける調停要求の有効性判定について説明する。図7は、第1の実施形態によるクロスバースイッチの判定動作を示すフローチャートである。この動作はポート入力部毎に行われる。
【0092】
図7を参照すると、各ポート入力部210〜208は、ノード等からのパケットを構成するフリットを、出力段と前段の2つのレジスタ300、301によって2サイクル分保持する(ステップ1001)。
【0093】
そして、各ポート入力部210〜208は、出力段のレジスタ301のフリットを各ポート出力部210〜218に送ると共に、2種類の調停要求信号およびOR信号
を生成し、所望のポート出力部に送る(ステップ1002)。
【0094】
出力段のレジスタ301にヘッダー1フリットが来たとき、ポート入力部200〜208は、その旨を示す調停要求信号を生成して所望のポート出力部に送る。前段のレジスタ300にヘッダー1フリットが来たとき、ポート入力部200〜208は、その旨を示す調停要求信号を生成して所望のポート出力部に送る。また、ポート入力部200〜208は、出力段の調停要求信号をポート出力部210〜218のいずれかに送っていることを示すOR信号を全てのポート出力部210〜218に送る。
【0095】
一方、各ポート出力部210〜218は、図5、6に示した通り、各ポート入力部200〜208からの2種類の調停要求信号およびOR信号を入力とする他に、他のポート出力部の調停結果である送信許可信号を入力としている。そして、ポート出力部210〜218は、ポート入力部200〜208に対応する9つのポートリクエスト生成回路310〜318を有している。
【0096】
ポートリクエスト生成回路310〜318は、対応するポート入力部からの2種類の調停要求信号およびOR信号と、全てのポート出力部210〜218による送信許可信号のOR信号とから、以下に示す2つの条件のいずれかが満足されているか否か判定する(ステップ1003)。第1の条件は、出力段のレジスタに要求があり、かつその要求について送信許可を与えていないという条件である。第2の条件は、出力段のレジスタに要求が無いかあるいは出力段の要求に既に送信許可を与えており、かつ前段のレジスタに要求があるという条件である。
【0097】
そして、ポートリクエスト生成回路310〜318は、いずれかの条件が満足されていれば調停要求を有効とし(ステップ1004)、いずれの条件も満足されていなければ調停要求を無効とする(ステップ1005)。
【0098】
調停回路320は、このように判定されたポート入力部210〜218からの調停要求に基づいてポート間の調停を行い、調停結果である送信許可信号を生成する。調停回路320の生成した送信許可信号は、レジスタ322を介してポート出力部での制御に用いられると共に、レジスタ323を介して各ポート入力部210〜218に送られ、制御に用いられる。
【0099】
これにより、出力段レジスタ301に調停要求が無いか、あるいは調停要求があってもそのパケットは次に出力される予定のとき、次に出力段レジスタ301に来る前段レジスタ300の調停要求を調停回路320に与えておくことにより、例えば1フリットのパケットが連続し、フリット毎に調停が必要となる状態でもスループットの低下を防止することができる。
【0100】
次に、本実施形態のクロスバースイッチの動作例について説明する。
【0101】
図8は、第1の実施形態のクロスバースイッチの動作を説明するためのタイムチャートである。図8を参照すると、最初のサイクルT0で、レジスタ300には、ポート出力部210行きのヘッダー1フリットが格納され、レジスタ301には、フリットは格納されないものとする。レジスタ300に格納されるヘッダー1フリットは、そのヘッダー1フリットのみで1つのパケットを構成するものとする。
【0102】
レジスタ302には“000000001(2進数)”が格納され、レジスタ303には“000000000(2進数)”が格納される。そして、ポート入力部200からポート出力部210への調停要求信号340が“1”になり、調停要求信号350が“0”になり、調停要求OR信号335が“0”になる。
【0103】
ポート出力部210のポートリクエスト生成回路310は、調停要求信号340が“1”で、調停要求OR信号335が“0”なので、信号514が“1”になり、よってポート入力部200の調停要求信号410が“1”になる。
【0104】
ここで、調停回路320による調停でポート入力部200が選択されたとすると、調停結果信号400は“000000001(2進数)”になる。また、サイクルT0では、レジスタ322は“000000000(2進数)”であるとする。
【0105】
サイクルT1で、レジスタ300に格納されていたヘッダー1フリットがレジスタ301にセットされる。また、レジスタ300には、新たにポート出力部210行きのヘッダー1フリットがセットされるものとする。このフリットを含むパケットは、ヘッダー1フリット、ヘッダー2フリット、および2個のデータフリットから構成されるものとする。
【0106】
レジスタ302には“000000001(2進数)”がセットされ、レジスタ303には“000000001(2進数)”がセットされる。
【0107】
また、ポート入力部200からポート出力部210への調停要求信号340が“1”になり、調停要求信号350が“1”になり、調停要求OR信号335が“1”になる。
【0108】
レジスタ322とレジスタ323には、調停結果信号400の値“000000001(2進数)”がセットされる。この結果、送出許可信号430が“1”になる。また、送出許可信号401が“000000001(2進数)”になるので、ビットOR回路325から出力される送出許可OR信号420は1になる。
【0109】
ポート出力部210のポートリクエスト生成回路310では、調停要求信号340が“1”で調停獲得信号420が“1”なので、調停要求信号410が“1”になる。
【0110】
ここで、調停回路320による調停で再びポート入力部200が選択されたとすると、調停結果信号400は“000000001(2進数)”になる。
【0111】
セレクター324は、レジスタ322から入力するポート選択信号403が“000000001(2進数)”なので、ポート入力部200の出力するフリット信号334を選択して出力する。このとき、レジスタ301に格納されるヘッダー1フリットはパケットの最後のフリットなので、フリット信号404のビット64のラストフラグは“1”となる。
【0112】
サイクルT2で、レジスタ301に格納されていたヘッダー1フリットがレジスタ321にセットされる。これで、最初のパケットに関して、ポート入力部200からポート出力部210への転送が完了する。
【0113】
レジスタ300に格納されていた2番目のヘッダー1フリットがレジスタ301にセットされる。レジスタ300には次のヘッダー2フリットがセットされる。
【0114】
レジスタ302には“000000000(2進数)”がセットされ、レジスタ303には“000000001(2進数)”がセットされる。
【0115】
ポート入力部200からポート出力部210へ出力される調停要求信号340が“0”になり、調停要求信号350が“1”になり、調停要求OR信号335が“1”になる。
【0116】
レジスタ322には、フリット信号404のビット64のラストフラグが“1”なので、調停結果信号400の値“000000001(2進数)”がセットされる。
【0117】
レジスタ323には、調停結果信号400の値“000000001(2進数)”がセットされる。この結果、送出許可信号430が“1”になる。また、送出許可信号401が“000000001(2進数)”になるので、ビットOR回路325から出力される送出許可OR信号420は“1”になる。
【0118】
ポート出力部210のポートリクエスト生成回路310では、調停要求340が“0”で、送出許可OR信号420が“1”なので、調停要求信号410が“0”になる。
【0119】
サイクルT3で、レジスタ301に格納されている2番目のヘッダー1フリットがレジスタ321にセットされる。また、レジスタ300に格納されているヘッダー2フリットがレジスタ301にセットされる。レジスタ300には1個目のデータフリットがセットされる。
【0120】
レジスタ302には“000000000(2進数)”がセットされ、レジスタ303には“000000000(2進数)”がセットされる。
【0121】
ポート入力部200からポート出力部210へ出力される調停要求信号340が“0”になり、調停要求信号350が“0”になり、調停要求OR信号335が“0”になる。
【0122】
フリット信号404のラストフラグ(ビット64)が“0”で、レジスタ322の値が“000000001(2進数)”なので、レジスタ322は“000000001(2進数)”をホールドする。レジスタ323には、調停結果信号400の値“000000000(2進数)”がセットされる。
【0123】
サイクルT4で、レジスタ301に格納されているヘッダー2フリットがレジスタ321にセットされる。また、レジスタ300に格納されているデータフリットがレジスタ301にセットされる。レジスタ300には2個目のデータフリットがセットされる。
【0124】
レジスタ302およびレジスタ303には“000000000(2進数)”がセットされる。
【0125】
フリット信号404のラストフラグが“0”で、レジスタ322の値が“000000001(2進数)”なので、レジスタ322は“000000001(2進数)”をホールドする。レジスタ323には、調停結果信号400の値“000000000(2進数)”がセットされる。
【0126】
サイクルT5で、レジスタ301に格納されているデータフリットがレジスタ321にセットされる。また、レジスタ300に格納されている2番目のデータフリットがレジスタ301にセットされる。レジスタ300には無効なフリットがセットされる。
【0127】
レジスタ302およびレジスタ303には“000000000(2進数)”がセットされる。
【0128】
フリット信号404のラストフラグが“0”で、レジスタ322の値が“000000001(2進数)”なので、レジスタ322は“000000001(2進数)”をホールドする。レジスタ323には、調停結果信号400の値“000000000(2進数)”がセットされる。
【0129】
サイクルT6で、レジスタ301に格納されている2番目のデータフリットがレジスタ321にセットされる。レジスタ300およびレジスタ301には無効なフリットがセットされる。
【0130】
レジスタ302およびレジスタ303には“000000000(2進数)”がセットされる。
【0131】
フリット信号404のラストフラグが“1”なので、レジスタ322には、調停結果信号400の値“000000000(2進数)”がセットされる。レジスタ323にも、調停結果信号400の値“000000000(2進数)”がセットされる。ここで、2番目のパケットに関して、ポート入力部200からポート出力部210への転送が完了する。
【0132】
以上説明したように、本実施形態によれば、ポート出力部に調停回路を備え、ポート入力部にて、先頭の2つのフリットをレジスタ301、300に格納し、ポート入力部からポート出力部へ3個の調停要求信号(2段の調停要求信号および調停要求OR信号)を送り、ポート出力部間で調停結果(送出許可信号)を相互に送受信する構成により、伝送経路による遅延を所定範囲に抑えるためのレジスタ322、323を調停回路320に備えて高周波動作を可能とすると共に、前段のレジスタ300に対応する調停要求を調停に用いることにより、1フリットのパケットが連続したときでもスループットを低下させることなく調停を行なうことができる。
【0133】
また、本実施形態では、いずれかの要求先への調停要求があるかことを通知するための調停要求OR信号335を、全てのポート出力部210〜218に宛てた調停要求信号を論理和した信号としているので、全てのポート出力部210〜218への信号を共通のOR回路305で生成可能とすると共に、ポート入力部とポート出力部の間の信号線数を少なくすることにより、回路規模を小さくすることができる。
【0134】
また、本実施形態では、本発明の典型的な構成としてポート出力部210内に調停回路320等を配置した、信号経路が長くなり易い構成において、スループット低下の防止と高周波動作を両立させることができる。
【0135】
なお、本実施形態では、OR回路305にて全てのポート出力部210〜218への調停要求信号のORを求めて全てのポート出力部210〜218の全てに共通に送ることとしたが、本発明はこの構成に限定されるものではない。ポート出力部に対する調停要求信号は、OR回路305の出力とは別に、ビット分割部306から送られているので、ポート出力部にてORを求めることとし、そのポート出力部に対する調停要求信号をポート入力部にてORする必要はない。そこで、各ポート出力部へのOR信号を個々に生成することとし、各OR信号からを生成するOR回路に、送信先のポート出力部への調停要求信号を入力しないこととしてもよい。
【0136】
また、本実施形態では、OR回路305にて求めたOR信号335を各ポート出力部210〜218に送ることとしたが、本発明はこの構成に限定されるものではない。ORする前の信号(OR回路305の入力信号)を個々に各ポート出力部に送り、ポート出力部にてORすることとしてもよい。
【0137】
また、図1に示したように、本実施形態のクロスバースイッチのポートには、ノードが接続されたものと、他のクロスバースイッチが接続されたものとがあるが、説明は主にノードの接続されたポートについてなされている。本実施形態のクロスバースイッチは、他のクロスバースイッチに接続されたポートについて、ノードに接続されたポートと同様の構成および動作で扱うことができる。
【0138】
また、本実施形態では、ポートリクエスト生成回路310〜318、ビットOR回路325、調停回路320、レジスタ322、323を含む調停部がポート出力部210の内部に構成された例を示したが、本発明はこれに限定されるものではない。調停部はポート出力部の外部にあってもよい。例えば、各ポート出力部の付近に対応する調停部をそれぞれ配置してもよく、また、ポート入力部とポート出力部の中央に調停部を配置してもよい。
【0139】
(第2の実施形態)
複数のプロセッサノードと複数のIOノードを有する情報処理装置は、プロセッサノードおよびIOノードを複数のパーティションに分割して使用されることがある。そのような情報処理装置に備えられたクロスバースイッチは、複数のパーティションにより分割して使用される。そして、クロスバースイッチの有するポート入力部またはポート出力部が複数のパーティションに共有される場合がある。
【0140】
クロスバースイッチが複数のパーティションに分割して使用される場合、1つのパーティションに故障が発生し、そのパーティションでパケットを受信できない状態になると、そのパーティションを含む複数のパーティションに共有されるポート入力部にて、送信できないパケットが詰まってしまうことがある。そうなると、正常に動作しているパーティションのパケットも処理できなくなり、複数のパーティションがダウンしてしまうという問題があった。第2の実施形態ではこの点を改善している。
【0141】
第2の実施形態の情報処理装置は図1に示したものと同様の構成である。
【0142】
図9は、第2の実施形態におけるクロスバースイッチの構成を示すブロック図である。図9を参照すると、第2の実施形態のクロスバースイッチは、ポート入力部200〜208およびポート出力部210〜218の診断を行うポート診断部600〜608を有する点で第1の実施形態と異なる。ポート診断部600〜608は全て同様の構成なので、ここではポート診断部600のみについて説明する。
【0143】
ポート診断部600は、ポート入力部200とポート出力部210の対に関連する故障の診断を行う。ポート診断部600は、ポート入力部200またはポート出力部210に致命的な故障を検出したとき、あるいはポート入力部200およびポート出力部210の属するパーティション内に致命的な故障を検出したとき、故障通知信号630を“1”にする。ここでは、故障によりパーティションが動作できない期間は、故障通知信号630は“1”に保たれるものとする。
【0144】
パーティション内の致命的な故障には、パーティションに属するプロセッサノード、パーティションに属するIOノード、パーティションに属する同じクロスバースイッチ内の他のポート、パーティションに属する他のクロスバースイッチ内のポートにおける致命的な故障が含まれる。
【0145】
ポート入力部、ポート出力部、プロセッサノード、IOノードなどにおける故障の検出は一般的に用いられている方法によればよい。当業者にとって自明な方法としてハードウェア的な方法やソフトウェア的な方法など様々な方法があるがどのような方法であってもよい。
【0146】
プロセッサノード、IOノード、他のクロスバースイッチ、同じクロスバースイッチの他のポートからポート診断部600へ故障の発生を通知する方法についても特定の方法に限定されるものではない。故障通知のための専用のパケットを用いる方法、専用のインターフェースを設ける方法などが当業者にとってよく知られている。
【0147】
また、第2の実施形態のクロスバースイッチは、ポート出力部の構成が図5、6に示したものと異なる。
【0148】
図10は、第2の実施形態におけるポート出力部の詳細な構成を示すブロック図である。図10を参照すると、第2の実施形態のポート出力部210は、ポートリクエスト生成回路610、調停回路320、ビットOR回路325、AND回路626、ビットOR回路627、レジスタ323、ビット結束部625、およびビット分割部326を有している。
【0149】
図10のポーリングリクエスト生成回路610おいて、NOT回路503、500、OR回路502、504、AND回路501、505からなる部分は図6に示したポーリングリクエスト生成回路310と同じものである。
【0150】
AND回路620は、故障通知信号630と信号511の論理積をとって信号631としてレジスタ621に出力する。レジスタ621は、AND回路620の出力信号631をサイクル毎にセットし、それを信号632としてAND回路623に出力する。
【0151】
AND回路623は、信号630と出力信号632と信号510の論理積をとり、信号633としてビット結束部625に出力する。ビット結束部625は、信号633と他の8個のポートリクエスト生成回路からの同様の信号とを束ねて9ビットの信号634とし、ビットOR回路627に出力する。
【0152】
また、AND回路626は、故障通知信号630がNOT回路624で反転された信号637と、調停回路320からの調停結果信号400との論理積をとり、信号635としてビットOR回路627に出力する。調停回路320からの調停結果信号400は9ビットの信号なので、AND回路626は、9ビットの各々ついて信号637と論理積をとる。したがって信号635も9ビットの信号である。ビットOR回路627は、9ビットの信号634と9ビットの信号635とのビット毎の論理和をとり、9ビットの信号636としてレジスタ323に出力する。
【0153】
図11は、第2の実施形態によるクロスバースイッチの動作を示すフローチャートである。図11を参照すると、本実施形態のクロスバースイッチは、ポート診断部600にて、ポート毎にそのポートの属するパーティションがダウンしているか否か判定する(ステップ2001)。パーティションのダウンが検出されると、そのパーティションに属するポート出力部のポートリクエスト生成回路は、自身への調停要求に対して強制的に送信許可を与える(ステップ2002)。これにより他のパーティションにも属しているポート入力部からの障害パーティションのパケットを吐き出させ、廃棄することができる。
【0154】
いずれのパーティションのダウンも検出されなければ、ポートリクエスト回路は、図7に示したような通常の判定および調停を行なう(ステップ2003)。この一連の動作はポート出力部毎に行われる。
【0155】
次に、本実施形態のクロスバースイッチの動作例について説明する。
【0156】
図12は、第2の実施形態のクロスバースイッチの動作を説明するためのタイムチャートである。図12を参照すると、サイクルT3以降、ポート診断部600からの故障通知信号630が“1”になる。
【0157】
サイクルT0で、調停要求信号350が“1”になり、その同じサイクルで、その調停要求に対する送出許可信号430が“1”になる。
【0158】
サイクルT1で、調停要求信号350が“1”になり、次のサイクルT2で、その調停要求に対する送出許可信号430が“1”になる。ここまでは故障のない正常時の動作である。
【0159】
故障発生後のサイクルT4で、調停要求信号350が“1”になる。故障通知信号630が“1”なので、AND回路626の出力信号635は、調停回路320の出力する調停結果信号400の値に依存せず、“000000000(2進数)”になる。
【0160】
サイクルT5で、調停要求信号350の値“1”がレジスタ621にセットされ、また送出許可信号430が“0”なので、信号633が“1”になる。
【0161】
ここで他のポートリクエスト生成回路の信号633に相当する信号が全て“0”ならば、信号634は“000000001(2進数)”になる。
【0162】
ビットOR回路は、“000000000(2進数)”と“000000001(2進数)”のビット毎の論理和をとるので、信号636は“000000001(2進数)”になる。
【0163】
サイクルT6で、信号636の値“000000001(2進数)”がレジスタ323にセットされ、送出許可信号430が“1”になる。これにより、ポート入力部200はサイクルT6からパケットの転送を開始することとなる。
【0164】
以上説明したように、本実施形態のポート出力部210のポートリクエスト生成回路610は、ポート出力部210の属するパーティションがダウンすると、正常に動作している他のパーティションに属するポート入力部からの調停要求に対して無条件で権限獲得(送信許可)を示す信号を“1”にし、ダウンしたパーティションを共有するポート入力部のパケットを吐き出させて廃棄するので、ダウンしたパーティションとポート出力部を共有する他のパーティションのポート入力部におけるパケットのつまりを防止することができる。
【0165】
(第3の実施形態)
上述したように、複数のプロセッサノードと複数のIOノードを有する情報処理装置は、プロセッサノードおよびIOノードを複数のパーティションに分割して使用されることがある。そのような情報処理装置に備えられたクロスバースイッチは、複数のパーティションにより分割して使用される。そして、クロスバースイッチの有するポート入力部またはポート出力部が複数のパーティションに共有される場合がある。
【0166】
そのようなクロスバースイッチは、ポート入力部からポート出力部へパケットを転送している途中に、そのポート入力部が故障してフリットの送信ができなくなると、ポート出力部は未受信の残りのフリットを待ち続けることとなる。そうなると、クロスバースイッチのそのポート出力部を共用する他のパーティションのパケットが処理されなくなり、複数のパーティションがダウンしてしまうという問題があった。第3の実施形態ではこの点を改善している。
【0167】
第3の実施形態におけるクロスバースイッチは図2に示した第1の実施形態のものと同様の構成である。
【0168】
図13は、第3の実施形態におけるクロスバースイッチのポート入力部およびポート出力部の詳細な構成を示すブロック図である。図13は、理解を容易にするために、図5に示した第1の実施形態と同じ構成の部分が省略されている。図13中で点線で囲われている部分が第3の実施形態に特有の部分である。
【0169】
第3の実施形態におけるポート入力部200は、故障検出回路800を有している点で第1の実施形態のものと異なる。故障検出回路800は、ポート入力部200内に致命的な故障を検出すると、故障通知信号810を“1”にする。
【0170】
故障通知信号810はポート出力部210のセレクター809に入力されている。図示していないが、セレクター809には、ポート入力部200からの故障通知信号810の他に、他の全てのポート入力部201〜208から同様の故障通知信号が接入力される。
【0171】
セレクター809は、上述したセレクター324と同様にレジスタ322からのポート選択信号403に従って、調停によりパケットの送出を許可されたポート入力部の信号を選択し、信号818としてレジスタ806、322、323に出力する。つまり、ポート入力部からポート出力部に対してパケットを転送しているとき、そのポート入力部に致命的なエラーが発生すると信号818が“1”になる。
【0172】
レジスタ806は信号818をサイクル毎にセットする。
【0173】
本実施形態ではレジスタ322およびレジスタ323は、信号818と信号821の少なくとも一方が“1”となれば、次のサイクルで“000000000(2進数)”にリセットされる。
【0174】
パケット情報抽出回路802は、OR回路808の出力信号821、レジスタ321の出力信号811、ダミーフリット生成回路805の出力信号817、レジスタ804の出力信号816から、転送中のパケットの残りフリット数を算出する。そして、パケット情報抽出回路802は、転送中のパケットの今後転送されるフリットの中にヘッダー2フリットが含まれているか否かを示す1ビットの信号813をレジスタ803に出力する。また、パケット情報抽出回路802は、転送中のパケットの今後転送されるフリットの中に含まれるデータフリットの個数を示す信号815をレジスタ804に出力する。
【0175】
レジスタ803は、1ビット幅であり、転送中のパケットの今後転送されるフリットの中にヘッダー2フリットが含まれるか否かを示す。“0”でヘッダー2フリットが含まれないことを示し、“1”でヘッダー2フリットが含まれることを示す。
【0176】
レジスタ803は、信号821が“0”で、レジスタ321のビット67〜65のストローブが“100(2進数)”のとき、レジスタ321のビット63〜56のヘッダータイプをデコードした値がセットされる。ヘッダータイプが“00(16進数)”ならばレジスタ803は“0”にセットされ、“01(16進数)”ならば“1”にセットされる。
【0177】
レジスタ803は、信号821が“0”で、レジスタ321のビット67〜65のストローブがヘッダー2フリットを示す“010(2進数)”のとき、“0”にリセットされる。
【0178】
また、レジスタ803は、信号821が“1”で、信号817のビット67〜65のストローブがヘッダー2フリットを示す“010(2進数)”のとき、“0”にリセットされる。
【0179】
レジスタ804は、5ビット幅であり、転送中のパケットの今後転送されるフリットの中に含まれるデータフリットの個数を示す。パケットに含まれるデータフリットの数は最大で16個なので、レジスタ804は“00000(2進数)”〜“10000(2進数)”の範囲の値となりうる。
【0180】
レジスタ804は、信号821が“0”で、レジスタ321のビット67〜65のストローブが“100(2進数)”のとき、レジスタ321のビット55〜48のデータレングスをデコードした値がセットされる。データレングスが“00(16進数)”ならばレジスタ804は“00000(2進数)”にセットされ、データレングスが“01(16進数)”ならば“00001(2進数)”にセットされ、データレングスが“02(16進数)”ならば“00010(2進数)”にセットされ、データレングスが“03(16進数)”ならば“00100(2進数)”にセットされ、データレングスが“04(16進数)”ならば“01000(2進数)”にセットされ、データレングスが“05(16進数)”ならば“10000(2進数)”にセットされる。
【0181】
レジスタ804は、信号821が“0”で、レジスタ321のビット67〜65のストローブが“001(2進数)”のとき、レジスタ804の出力信号816から“1”だけ減算した値がセットされる。例えば、信号821が“0”で、レジスタ321のビット67〜65のストローブが“001(2進数)”で、レジスタ804は“10000(2進数)”を格納していれば、次のサイクルでレジスタ804には“01111(2進数)”がセットされる。
【0182】
レジスタ804は、信号821が“1”で、信号817のビット67〜65のストローブが“001(2進数)”のとき、レジスタ804の出力信号816から“1”だけ減算した値がセットされる。
【0183】
ダミーフリット生成回路805には、レジスタ803の出力信号814と、レジスタ804の出力信号816と、OR回路808の出力信号821が入力する。ダミーフリット生成回路805は、パケットを送信中のポート入力部が故障により転送できなくなった残りフリットと同数のダミーフリットを生成し、68ビットのフリット信号817としてセレクター801に出力する。
【0184】
信号821が“0”のとき、フリット信号817は“00000000000000000(16進数)”であり、すなわちダミーフリット生成回路805は、無効なフリットを出力する。
【0185】
信号821が“1”のとき、レジスタ803とレジスタ804の値に応じて、フリット信号817のビット67〜65(ストローブ)と、ビット64(ラストフラグ)の値が決まる。レジスタ803が“1”で、レジスタ804が“00000(2進数)”のとき、フリット信号817のビット67〜65のストローブは“010(2進数)”で、ビット64のラストフラグは“1”である。レジスタ803が“1”で、レジスタ804が“00001〜10000(2進数)”のとき、フリット信号817のビット67〜65のストローブは“010(2進数)”で、ビット64のラストフラグは“0”である。レジスタ803が“0”で、レジスタ804が“00010〜10000(2進数)”のとき、フリット信号817のビット67〜65のストローブは“001(2進数)”で、ビット64のラストフラグは“0”である。レジスタ803が“0”で、レジスタ804が“00001(2進数)”のとき、フリット信号817のビット67〜65のストローブは“001(2進数)”で、ビット64のラストフラグは“1”である。レジスタ803が“0”で、レジスタ804が“00000(2進数)”のとき、フリット信号817のビット67〜65のストローブは“000(2進数)”で、ビット64のラストフラグは“0”である。
【0186】
信号821が“1”のとき、フリット信号817のビット63〜0は、例えば“0000000000000000(16進数)”などの任意の固定値でよい。また、このビット63〜0を、ECCコードとの組み合わせで特殊なコードとし、情報処理装置の障害処理で利用してもよい。
【0187】
セレクター801は、OR回路808の出力信号821の値に従って、レジスタ321の出力するフリット信号811と、ダミーフリット生成回路の出力するフリット信号817のいずれかを選択し、フリット信号812としてプロセッサ100に出力する。セレクター801は、信号821が“0”ならばフリット信号811を選択し、信号821が“1”ならばフリット信号817を選択する。
【0188】
レジスタ807は、1ビット幅である。レジスタ807は、レジスタ806の出力信号819が“1”のとき、1ビットのレジスタ803と5ビットのレジスタ804の中で少なくとも1ビットが“1”ならば“1”にセットされる。レジスタ807は、“1”を格納しているとき、レジスタ803が“0”かつレジスタ804が“00000(2進数)”となれば“0”にリセットされ、それ以外の場合は“1”を保持する。
【0189】
OR回路808は、レジスタ806の出力信号819と、レジスタ807の出力信号820の論理和をとり、信号821としてパケット情報抽出回路802、ダミーフリット生成回路805、セレクター801、およびレジスタ322、323に出力する。
【0190】
次に、本実施形態のクロスバースイッチにおける動作について説明する。図14は、第3の実施形態によるクロスバースイッチの動作を示すフローチャートである。図14を参照すると、クロスバースイッチは、故障検出回路800にてポート入力部200の故障の有無を判定する(ステップ3001)。ポート入力部200に故障があれば、ポート出力部210は、そのポート入力部200がパケット転送中か否か判定する(ステップ3002)。
【0191】
パケット転送中であれば、ポート出力部210は、そのパケットのヘッダー1フリットを既にポートに送出済か否か判定する(ステップ3003)。図13の例では、ポート入力部200からのヘッダー1フリットの転送と故障通知信号のアサートとが同サイクルであれば、ヘッダー1フリットが未送出と判定する。
【0192】
ヘッダー1フリットを送出済であれば、ポート出力部210は、ダミーフリット生成回路805にて残りのフリットを疑似するダミーフリットを挿入してパケット送出を完了させる(ステップ304)。一方、ヘッダー1フリットを未送出であれば、ポート出力部210は、そのヘッダー1フリットを含むパケットを送出することなく、そのパケット送出を完了した状態とする(ステップ3005)。
【0193】
次に、本実施形態のクロスバースイッチの動作例について説明する。
【0194】
図15は、第3の実施形態のクロスバースイッチの動作を説明するためのタイムチャートである。図15には、パケットのノードへの出力を開始する前にポート入力部に故障が発生したときの動作が示されている。
【0195】
図15を参照すると、最初のサイクルT0で、ポート入力部200は、フリット信号334としてヘッダー1フリットを出力するが、それと同時にポート入力部200内部で故障を検出し、故障通知信号810を“1”にアサートする。
【0196】
サイクルT1で、レジスタ322が“000000000(2進数)”にリセットされ、それによりセレクター809の出力信号818が“0”になる。レジスタ321には、サイクルT0でポート入力部200から出力されたフリット信号334が、セレクター324を経由してセットされる。
【0197】
サイクルT1で信号821が“1”になるため、セレクター801はダミーフリット生成回路805の出力するフリット信号817を選択する。このとき、レジスタ803は“0”で、レジスタ804は“00000(2進数)”なので、フリット信号817は“00000000000000000(16進数)”の無効なフリットとなる。
【0198】
サイクルT1で、信号821が“1”になるため、サイクルT2ではレジスタ803とレジスタ804には値がセットされない。
【0199】
サイクルT1で、レジスタ803が“0”かつレジスタ804が“00000(2進数)”なので、サイクルT2で、レジスタ807には値がセットされない。
【0200】
サイクルT2で、信号821が“0”になるので、新規の調停要求を受け付けるようになる。
【0201】
これらの動作により、ヘッダー1フリットと同時に故障通知信号810がアサートされれば、障害を検出したポート入力部からのパケットをプロセッサ100に出力し始める前に廃棄することができる。
【0202】
図16は、第3の実施形態のクロスバースイッチの他の動作を説明するためのタイムチャートである。図16には、パケットのノードへの出力を開始した後にポート入力部に故障が発生したときの動作が示されている。
【0203】
図16を参照すると、最初のサイクルT0で、ポート入力部200は、フリット信号334としてヘッダー1フリットを出力する。このパケットは、ヘッダー1フリット、ヘッダー2フリット、および2個のデータフリットから構成されるものとする。
【0204】
サイクルT1で、ポート入力部200は、フリット信号334としてヘッダー2フリットを出力するが、それと同時にポート入力部200内部で致命的な故障を検出し、信号810を“1”にアサートする。レジスタ322が“000000001(2進数)”なので、セレクター809は信号810を選択し、信号818が“1”になる。レジスタ321には、サイクルT0でフリット信号334として出力されたヘッダー1フリットがセットされる。
【0205】
サイクルT2で、レジスタ322が“000000000(2進数)”にリセットされ、それによりセレクター809の出力信号818が“0”になる。レジスタ806は信号818をセットして“1”になる。これにより、OR回路808の出力信号821が“1”になる。
【0206】
サイクルT1ではOR回路808からの出力信号821が“0”なので、サイクルT2では、レジスタ803およびレジスタ804に、レジスタ321に格納されるヘッダー1フリットをデコードした値がセットされる。パケットはヘッダー2フリットと2個のデータフリットを含むので、レジスタ803は“1”にセットされ、レジスタ804は“00010(2進数)”にセットされる。これにより、ダミーフリット生成回路の出力するフリット信号817は、ビット67〜65のストローブが“010(2進数)”で、ビット64のラストフラグが“0”で、ビット63〜0が“0000000000000000(16進数)”というダミーのヘッダー2フリットとなる。信号821が“1”なので、セレクター801はフリット信号817を選択する。その結果、フリット信号812としてダミーフリット生成回路805からのヘッダー2フリットがプロセッサ100に出力される。
【0207】
サイクルT3で、レジスタ807には、レジスタ806が出力する値がセットされ“1”になる。そのため、信号821は“1”のままとなる。サイクルT2で、フリット信号817からヘッダー2フリットを出力したので、レジスタ803は“0”になる。ダミーフリット生成回路805の出力するフリット信号817は、ビット67〜65のストローブが“001(2進数)”で、ビット64のラストフラグが“0”で、ビット63〜0が“0000000000000000(16進数)”というダミーのデータフリットとなる。信号821が“1”なので、セレクター801はフリット信号817を選択し、よって、フリット信号812は、ダミーフリット生成回路805から出力されるデータフリットになる。
【0208】
サイクルT4で、レジスタ807は“1”を保持し続けるので、信号821は“1”のままとなる。サイクルT3で、フリット信号817からデータフリットを出力したので、レジスタ804は“1”だけ減算されて“00001(2進数)”になる。ダミーフリット生成回路805からのフリット信号817は、ビット67〜65のストローブが“001(2進数)”で、ビット64のラストフラグが“1”で、ビット63〜0が“0000000000000000(16進数)”というダミーのフリットとなる。信号821が“1”なので、セレクター801はフリット信号817を選択する。その結果、フリット信号812は、ダミーフリット生成回路805からのデータフリットになる。
【0209】
サイクルT5で、レジスタ807は“1”を保持し続けるので、信号821は“1”のままとなる。サイクルT4でフリット信号817からデータフリットを出力したので、レジスタ804は“1”だけ減算して“00000(2進数)”になる。ダミーフリット生成回路の出力するフリット信号817は、レジスタ803が“0”でかつレジスタ804が“00000(2進数)”であるので、“00000000000000000(16進数)”という無効なフリットになる。信号821が“1”なので、セレクター801はフリット信号817を選択する。その結果、フリット信号812は、ダミーフリット生成回路805からの無効なフリットになる。
【0210】
サイクルT6で、レジスタ807は“0”にリセットされる。これによりサイクルT7からは通常の調停が再開される。
【0211】
以上説明したように、本実施形態によれば、ポート入力部からポート出力部へフリットを送信できない状態を通知し、ポート出力部が、転送中のパケットの残りフリットを疑似するダミーフリットを生成し、出力するので、ポート出力部にて残りフリットを待ち続けることを防止し、そのポート出力部を共有する他のパーティションのダウンを防止することができる。
【0212】
その際、ポート出力部は、ポート入力部からの故障の通知が、そのパケットのヘッダー1フリットと同時であれば、そのパケットを出力することなく廃棄すると共に調停結果を格納するレジスタをリセットする。これにより、ポート入力部の故障により内容が破壊された可能性のあるヘッダーを含むパケットの送出により、ノードへ悪影響を与えるのを防止することができる。一方、パケットの出力を開始した後であれば、そのパケットの残りフリットを疑似するダミーフリットを出力すると共に調停結果を格納するレジスタをリセットする。
【0213】
なお、内容の破壊された可能性のあるヘッダーを含むパケットの送出防止を考慮しなければ、ヘッダー1フリットの送出が済んでいるか否かに関わらず、残りフリットを疑似したダミーフリットでパケットを完了させることとしてもよい。
【図面の簡単な説明】
【0214】
【図1】第1の実施形態によるクロスバースイッチを用いた情報処理装置の構成例を示す図である。
【図2】第1の実施形態におけるクロスバースイッチの構成を示すブロック図である。
【図3】図1に示した情報処理装置を2つのパーティションに分割した構成例を示す図である。
【図4】情報処理装置内の転送フォーマットの一例を示す図である。
【図5】第1の実施形態におけるクロスバースイッチのポート入力部およびポート出力部の詳細な構成を示すブロック図である。
【図6】第1の実施形態におけるポートリクエスト生成回路の詳細な構成を示すブロック図である。
【図7】第1の実施形態によるクロスバースイッチの判定動作を示すフローチャートである。
【図8】第1の実施形態のクロスバースイッチの動作を説明するためのタイムチャートである。
【図9】第2の実施形態におけるクロスバースイッチの構成を示すブロック図である。
【図10】第2の実施形態におけるポート出力部の詳細な構成を示すブロック図である。
【図11】第2の実施形態によるクロスバースイッチの動作を示すフローチャートである。
【図12】第2の実施形態のクロスバースイッチの動作を説明するためのタイムチャートである。
【図13】第3の実施形態におけるクロスバースイッチのポート入力部およびポート出力部の詳細な構成を示すブロック図である。
【図14】第3の実施形態によるクロスバースイッチの動作を示すフローチャートである。
【図15】第3の実施形態のクロスバースイッチの動作を説明するためのタイムチャートである。
【図16】第3の実施形態のクロスバースイッチの他の動作を説明するためのタイムチャートである。
【符号の説明】
【0215】
100〜115 プロセッサノード
120〜127 IOノード
130〜133 クロスバースイッチ
134〜139、140〜155、160〜167、220〜228、230〜238 信号線
200〜208 ポート入力部
210〜218 ポート出力部
300〜303 レジスタ
304、305 OR回路
306、307 ビット分割部
308 出力ポート生成回路
310〜318 ポートリクエスト生成回路
320 調停回路
321〜323 レジスタ
324 セレクター
325 ビットOR回路
326 ビット分割部
330、401〜406、430〜438、440〜448、450〜458 送出許可信号
332、331、340〜348、350〜358、360、370、410 調停要求信号
333、334 フリット信号
400 調停結果信号
420〜428 送出許可OR信号
500、503、624 NOT回路
502、504 OR回路
501、505、620、623 AND回路
510〜514 信号
600〜608 ポート診断部
630、626 故障通知信号
631〜637 信号
700、701 パーティション
800 故障検出回路
801 セレクター
802 パケット情報抽出回路
805 ダミーフリット生成回路
812 セレクター
814〜821 信号
1001〜1005、2001〜2003、3001〜3005 ステップ

【特許請求の範囲】
【請求項1】
複数のノード間にあって、少なくとも1つのフリットからなるパケットを前記ノード間で転送するクロスバースイッチであって、
いずれか1つのノードに接続されており、該ノードからの2つのフリットを、出力段となる第1のレジスタとその前段となる第2のレジスタとに格納し、前記第1のレジスタにパケット先頭の先頭フリットが格納されたとき所望の要求先への第1の調停要求信号を生成し、前記第2のレジスタに前記先頭フリットが格納されたとき所望の要求先への第2の調停要求信号を生成し、さらに、いずれかの要求先への前記第1の調停要求信号があるか否かを通知するための第1の通知信号を生成し、前記第1の調停要求信号、前記第2の調停要求信号、および前記第1の通知信号を用いた調停による調停結果信号が得られると、該調停結果信号に従って前記第1のレジスタからフリットを出力すると共に前記第1のレジスタおよび前記第2のレジスタに格納するフリットを順次進める複数のポート入力部と、
いずれか1つのノードおよび前記複数のポート入力部の全てに接続され、前記調停結果信号が得られると、該調停結果信号に従って、いずれかのポート入力部の前記第1のレジスタから出力されたフリットを前記ノードに順次出力する複数のポート出力部と、
前記ポート出力部に対応して設けられ、伝送経路により生じる前記調停結果信号の遅延を所定範囲に抑えるためのレジスタを調停回路の前または後に備え、前記複数のポート入力部から自身宛の前記第1の調停要求信号および前記第2の調停要求信号と前記第1の通知信号とを受け、各々の調停結果信号を第2の通知信号として相互に送受信し、前記第1の調停要求信号、前記第2の調停要求信号、前記第1の通知信号、および前記第2の通知信号に基づき前記調停回路にて調停を行い、前記調停結果信号を前記ポート入力部および前記ポート出力部に与える複数の調停部と、を有するクロスバースイッチ。
【請求項2】
前記調停部は、前記ポート入力部の各々について、前記第1の調停要求信号があり、かつ該第1の調停要求信号に対する送信許可が与えられていないとき、あるいは前記第1の調停要求信号がないかまたは前記第1の調停要求信号があるが該第1の調停要求信号に対する送信許可が既に与えられており、かつ前記第2の調停要求信号があるとき、前記ポート入力部からの調停要求を有効として前記調停回路に与えるポートリクエスト生成回路を有する、請求項1記載のクロスバースイッチ。
【請求項3】
複数の前記ポート出力部と複数の前記ポート入力部は1対1の対をなして同じノードに接続されており、
前記ポート出力部と前記ポート入力部の対に関連する故障を診断するポート診断部を更に有し、
前記調停部は、対応するポート出力部とポート入力部の対に関連する故障の通知を前記ポート診断部から受けると、自身への前記第1の調停要求に対して強制的に送信許可を与える、請求項1または2に記載のクロスバースイッチ。
【請求項4】
前記ポート入力部は、該ポート入力部内の故障を検出し前記ポート出力部に通知する故障検出回路を有し、
前記ポート出力部は、故障の発生したポート入力部からパケットが転送されている途中であれば、前記ノードに送出中の該パケットに残りのフリットを疑似するダミーフリットを挿入し、該パケットの前記ノードへの送出を完了させる、請求項1〜3のいずれか1項に記載のクロスバースイッチ。
【請求項5】
前記ポート出力部は、故障が発生したとき前記ポート入力部から転送中の前記パケットの前記ノードへの送出を開始していなければ、該パケットを送出することなく送出完了の状態にする、請求項4に記載のクロスバースイッチ。
【請求項6】
前記ポート出力部は、前記故障が前記パケットの先頭フリットと同時に通知されてきたとき、該パケットの送出を開始していないと判定する、請求項5に記載のクロスバースイッチ。
【請求項7】
前記ポート出力部は、前記先頭フリットに含まれているヘッダーから挿入すべきダミーフリットの数を求める、請求項4〜6のいずれか1項に記載のクロスバースイッチ。
【請求項8】
複数の前記ノードが複数のパーティションに分割して使用されている、請求項3〜7のいずれか1項に記載のクロスバースイッチ。
【請求項9】
前記第1の通知信号は、全ての調停部に宛てた第1の調停要求信号を論理和した信号である、請求項1〜8のいずれか1項に記載のクロスバースイッチ。
【請求項10】
前記調停部の各々が対応する前記ポート出力部の内部に配置されている、請求項1〜9のいずれか1項に記載のクロスバースイッチ。
【請求項11】
前記ポート入力部の一部および前記ポート出力部の一部を前記ノードに代えて前記クロスバースイッチ同士で相互接続する、請求項1〜10のいずれか1項に記載のクロスバースイッチ。
【請求項12】
少なくとも1つのフリットからなるパケットを相互に送受信する複数のノードと、
いずれか1つのノードに接続されており、該ノードからの2つのフリットを、出力段となる第1のレジスタとその前段となる第2のレジスタとに格納し、前記第1のレジスタにパケット先頭の先頭フリットが格納されたとき所望の要求先への第1の調停要求信号を生成し、前記第2のレジスタに前記先頭フリットが格納されたとき所望の要求先への第2の調停要求信号を生成し、さらに、いずれかの要求先への前記第1の調停要求信号があるか否かを通知するための第1の通知信号を生成し、前記第1の調停要求信号、前記第2の調停要求信号、および前記第1の通知信号を用いた調停による調停結果信号が得られると、該調停結果信号に従って前記第1のレジスタからフリットを出力すると共に前記第1のレジスタおよび前記第2のレジスタに格納するフリットを順次進める複数のポート入力部と、いずれか1つのノードおよび前記複数のポート入力部の全てに接続され、前記調停結果信号が得られると、該調停結果信号に従って、いずれかのポート入力部の前記第1のレジスタから出力されたフリットを前記ノードに順次出力する複数のポート出力部と、前記ポート出力部に対応して設けられ、伝送経路により生じる前記調停結果信号の遅延を所定範囲に抑えるためのレジスタを調停回路の前または後に備え、前記複数のポート入力部から自身宛の前記第1の調停要求信号および前記第2の調停要求信号と前記第1の通知信号とを受け、各々の調停結果信号を第2の通知信号として相互に送受信し、前記第1の調停要求信号、前記第2の調停要求信号、前記第1の通知信号、および前記第2の通知信号に基づき前記調停回路にて調停を行い、前記調停結果信号を前記ポート入力部および前記ポート出力部に与える複数の調停部と、を有し、前記ノード間で前記パケットを転送するクロスバースイッチと、を有する情報処理装置。
【請求項13】
前記調停部は、前記ポート入力部の各々について、前記第1の調停要求信号があり、かつ該第1の調停要求信号に対する送信許可が与えられていないとき、あるいは前記第1の調停要求信号がないかまたは前記第1の調停要求信号があるが該第1の調停要求信号に対する送信許可が既に与えられており、かつ前記第2の調停要求信号があるとき、前記ポート入力部からの調停要求を有効として前記調停回路に与えるポートリクエスト生成回路を有する、請求項12記載の情報処理装置。
【請求項14】
複数の前記ポート出力部と複数の前記ポート入力部は1対1の対をなして同じノードに接続されており、
前記クロスバースイッチは、前記ポート出力部と前記ポート入力部の対に関連する故障を診断するポート診断部を更に有し、
前記調停部は、対応するポート出力部とポート入力部の対に関連する故障の通知を前記ポート診断部から受けると、自身への前記第1の調停要求に対して強制的に送信許可を与える、請求項12または13に記載の情報処理装置。
【請求項15】
前記ポート入力部は、該ポート入力部内の故障を検出し前記ポート出力部に通知する故障検出回路を有し、
前記ポート出力部は、故障の発生したポート入力部からパケットが転送されている途中であれば、前記ノードに送出中の該パケットに残りのフリットを疑似するダミーフリットを挿入し、該パケットの前記ノードへの送出を完了させる、請求項12〜14のいずれか1項に記載の情報処理装置。
【請求項16】
前記ポート出力部は、故障が発生したとき前記ポート入力部から転送中の前記パケットの前記ノードへの送出を開始していなければ、該パケットを送出することなく送出完了の状態にする、請求項15に記載の情報処理装置。
【請求項17】
複数のノードが接続されたクロスバースイッチによって、少なくとも1つのフリットからなるパケットを前記ノード間で転送するための転送方法であって、
複数のポートに接続された複数の前記ノードからの2つのフリットを、出力段となる第1のレジスタとその前段となる第2のレジスタとに格納するステップと、
前記第1のレジスタにパケット先頭の先頭フリットが格納されたとき所望のポートへの第1の調停要求信号を生成し、前記第2のレジスタに前記先頭フリットが格納されたとき所望のポートへの第2の調停要求信号を生成し、さらに、いずれかの要求先への前記第1の調停要求信号があるか否かを通知するための第1の通知信号を生成するステップと、
伝送経路により生じる信号の遅延を所定範囲に抑えるためのレジスタを調停回路の前または後に備えた調停部にて、前記第1の調停要求信号、前記第2調停要求信号、および前記第1の通知信号と、他のポートの調停結果を含む第2の通知信号とに基づき前記調停回路にてポート毎の調停を行い、調停結果に従ってポート間でパケットを転送するステップと、を有する転送方法。
【請求項18】
前記第1の調停要求信号があり、かつ該第1の調停要求信号に対する送信許可が与えられていない、あるいは前記第1の調停要求信号がないかまたは前記第1の調停要求信号があるが該第1の調停要求信号に対する送信許可が既に与えられており、かつ前記第2の調停要求信号があるポートからの調停要求を前記調停回路に対して有効とする、請求項17記載の転送方法。
【請求項19】
前記ポートに関連する故障が起こると、該ポートへの第1の調停要求に対して強制的に送信許可を与える、請求項17または18に記載の転送方法。
【請求項20】
パケットの入力しているポートに故障が起きたとき、ノードに送出中の該ポートからの該パケットに残りのフリットを疑似するダミーフリットを挿入し、該パケットの前記ノードへの送出を完了させる、請求項17〜19のいずれか1項に記載の転送方法。
【請求項21】
故障が発生した前記ポートからの前記パケットの前記ノードへの送出を開始していなければ、該パケットを送出することなく送出完了の状態にする、請求項19に記載の転送方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2007−102476(P2007−102476A)
【公開日】平成19年4月19日(2007.4.19)
【国際特許分類】
【出願番号】特願2005−291368(P2005−291368)
【出願日】平成17年10月4日(2005.10.4)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】