(57)【特許請求の範囲】
【請求項１】
複数のデータ入力ポートから所望の１つまたは複数のデータ出力ポートへ同時に接続するクロスバスイッチであって、
入力データを優先度毎に分類する入力バッファを優先度数と同数持つ複数の入力ポートと、
前記入力ポート数と優先度数の積に等しい数の、優先度毎に分類されたデータを出力先ごとに分類する仮想出力キューと、
出力データを優先度毎に保持する出力バッファを優先度数と同数持つ複数の出力ポートと、
前記仮想出力キューからの出力を適切な前記出力バッファに伝達する、前記出力ポート数と同数の多入力１出力のセレクタで構成される優先度数と同数のクロスバとを具備し、
前記セレクタは、小規模セレクタと、フリップフロップと、前記小規模セレクタ及び前記フリップフロップを制御する制御部とを木状に配すことでパイプラインセレクタを構成し、
前記制御部は、
前記入力データに含まれる調停要求を抽出して出力調停を行い、勝者となる入力を決定する機能と、
次のステージが次のサイクルに利用可能であるか否かを示す情報を監視することで、前記次のサイクルに利用可能である場合か前記フリップフロップが何も記録していない場合に前記小規模セレクタの勝者データを前記フリップフロップに記録し、前記以外の場合に現在の前記フリップフロップの値を保持する機能とを持ち、
前記仮想出力キューは、有効なデータを保持している場合に常に読み出しを行い、現在の有効なデータ出力が、接続される前記小規模セレクタの前記フリップフロップに記録されなかった場合に再度同じデータを読み出す機能を持ち、
前記入力バッファは、接続するデバイスの前記出力バッファとの間で仮想チャネルを形成し、
前記出力バッファは、接続するデバイスの前記入力バッファとの間で仮想チャネルを形成することを特徴とするクロスバスイッチ。
【請求項２】
複数のデータ入力ポートから所望の１つまたは複数のデータ出力ポートへ同時に接続するクロスバスイッチであって、
入力データを優先度毎に分類する入力バッファを優先度数と同数持つ複数の入力ポートと、
前記入力ポート数と優先度数の積に等しい数の、優先度毎に分類されたデータを出力先ごとに分類する仮想出力キューと、
出力データを優先度毎に保持する出力バッファを優先度数と同数持つ複数の出力ポートと、
前記仮想出力キューからの出力を適切な前記出力バッファに伝達する、前記出力ポート数と同数の多入力１出力のセレクタで構成される優先度数と同数のクロスバとを具備し、
前記セレクタは、小規模セレクタと、フリップフロップと、前記小規模セレクタ及び前記フリップフロップを制御する制御部とを木状に配すことでパイプラインセレクタを構成し、
前記制御部は、
前記入力データに含まれる調停要求を抽出して出力調停を行い、勝者となる入力を決定する機能と、
前記小規模セレクタの勝者データを前記フリップフロップに記録する機能と、
前記小規模セレクタの敗者データを提供した入力に対し敗者信号を生成する機能と、
出力データ側から前記敗者信号を受信した場合に前記フリップフロップの内容を消去する機能と、
前記敗者信号の発生したステージ数を考慮して前記敗者データを提供する入力バッファの巻き戻し要求数を決定して前記入力バッファまで伝達する機能とを持ち、
前記仮想出力キューは、前記出力バッファが受信不可でない場合に読み出しを行い、前記敗者信号を受信した場合に前記入力バッファの巻き戻し要求数分だけ読み出しポインタを巻き戻し、次の読み出し要求がある時に再度同じデータを読み出す機能を持ち、
前記入力バッファは、接続するデバイスの前記出力バッファとの間で仮想チャネルを形成し、
前記出力バッファは、接続するデバイスの前記入力バッファとの間で仮想チャネルを形成することを特徴とするクロスバスイッチ。
【請求項３】
複数のデータ入力ポートから所望の１つまたは複数のデータ出力ポートへ同時に接続するクロスバスイッチであって、
入力データを優先度毎に分類する入力バッファを優先度数と同数持つ複数の入力ポートと、
前記入力ポート数と優先度数の積に等しい数の、優先度毎に分類されたデータを出力先ごとに分類する仮想出力キューと、
出力データを優先度毎に保持する出力バッファを優先度数と同数持つ複数の出力ポートと、
前記仮想出力キューからの出力を適切な前記出力バッファに伝達する、前記出力ポート数と同数の多入力１出力のセレクタで構成される優先度数と同数のクロスバとを具備し、
前記セレクタは、小規模セレクタと、フリップフロップと、前記小規模セレクタ及び前記フリップフロップを制御する制御部とを木状に配すことでパイプラインセレクタを構成し、
前記制御部は、
前記入力データに含まれる調停要求を抽出して出力調停を行い、勝者となる入力を決定する機能と、
前記小規模セレクタの勝者データを前記フリップフロップに記録する機能と、
前記小規模セレクタの敗者データを提供した入力に対し敗者信号を生成する機能と、
前記敗者信号を、前記敗者データを提供する入力バッファまで伝達する機能とを持ち、
前記仮想出力キューは、クロスバ通過前の先頭データ読出しポインタを記録する巻き戻しバッファを持ち、前記出力バッファが受信不可でない場合に読み出しを行い、前記敗者信号を受信した場合に前記入力バッファの巻き戻しバッファにある読出しポインタを巻き戻し、次の読み出し要求がある時に再度同じデータを読み出す機能を持ち、
前記入力バッファは、接続するデバイスの前記出力バッファとの間で仮想チャネルを形成し、
前記出力バッファは、接続するデバイスの前記入力バッファとの間で仮想チャネルを形成することを特徴とするクロスバスイッチ。
【請求項４】
複数のデータ入力ポートから所望の１つまたは複数のデータ出力ポートへ同時に接続するクロスバスイッチであって、
入力データを出力先ごとに分類する仮想出力キューと、
出力ポート数個の多入力１出力のセレクタで構成されるデータ交換手段であるクロスバと、
出力データを保持する出力バッファとを具備し、
前記セレクタは、小規模セレクタと、フリップフロップと、前記小規模セレクタ及び前記フリップフロップを制御する制御部とを木状に配すことでパイプラインセレクタを構成し、
前記制御部は、
入力データに含まれる調停要求を抽出して出力調停を行い、勝者となる入力を決定する機能と、
次のステージが次のサイクルに利用可能であるか否かを示す情報を監視することで、次のサイクルに利用可能である場合か前記フリップフロップが何も記録していない場合に前記小規模セレクタの勝者データを前記フリップフロップに記録し、前記以外の場合に現在の前記フリップフロップの値を保持する機能とを持ち、
前記仮想出力キューは、有効なデータを保持している場合に常に読み出しを行い、現在の有効なデータ出力が、接続される前記小規模セレクタの前記フリップフロップに記録されなかった場合に再度同じデータを読み出す機能を持つことを特徴とするクロスバスイッチ。
【請求項５】
複数のデータ入力ポートから所望の１つまたは複数のデータ出力ポートへ同時に接続するクロスバスイッチであって、
入力データを出力先ごとに分類する仮想出力キューと、
出力ポート数個の多入力１出力のセレクタで構成されるデータ交換手段であるクロスバと、
出力データを保持する出力バッファとを具備し、
前記セレクタは、小規模のセレクタと、フリップフロップと、前記小規模セレクタ及び前記フリップフロップを制御する制御部とを木状に配すことでパイプラインセレクタを構成し、
前記制御部は、
前記入力データに含まれる調停要求を抽出して出力調停を行い、勝者となる入力を決定する機能と、
前記小規模セレクタの勝者データを前記フリップフロップに記録する機能と、
前記小規模セレクタの敗者データを提供した入力に対し敗者信号を生成する機能と、
出力データ側から前記敗者信号を受信した場合に前記フリップフロップの内容を消去する機能と、
前記敗者信号の発生したステージ数を考慮して前記敗者データを提供する入力バッファの巻き戻し要求数を決定して前記入力バッファまで伝達する機能とを持ち、
前記仮想出力キューは、前記出力バッファが受信不可でない場合に読み出しを行い、前記敗者信号を受信した場合に前記入力バッファの巻き戻し要求数分だけ読み出しポインタを巻き戻し、次の読み出し要求がある時に再度同じデータを読み出す機能を持つことを特徴とするクロスバスイッチ。
【請求項６】
複数のデータ入力ポートから所望の１つまたは複数のデータ出力ポートへ同時に接続するクロスバスイッチであって、
入力データを出力先ごとに分類する仮想出力キューと、
出力ポート数個の多入力１出力のセレクタで構成されるデータ交換手段であるクロスバと、
出力データを保持する出力バッファとを具備し、
前記セレクタは、小規模のセレクタと、フリップフロップと、前記小規模セレクタ及び前記フリップフロップを制御する制御部とを木状に配すことでパイプラインセレクタを構成し、
前記制御部は、
前記入力データに含まれる調停要求を抽出して出力調停を行い、勝者となる入力を決定する機能と、
前記小規模セレクタの勝者データを前記フリップフロップに記録する機能と、
前記小規模セレクタの敗者データを提供した入力に対し敗者信号を生成する機能と、
前記敗者信号を、前記敗者データを提供する入力バッファまで伝達する機能とを持ち、
前記仮想出力キューは、クロスバ通過前の先頭データの読出しポインタを記録する巻き戻しバッファを持ち、前記出力バッファが受信不可でない場合に読み出しを行い、前記敗者信号を受信した場合に前記入力バッファの巻き戻しバッファにある読出しポインタを巻き戻し、次の読み出し要求がある時に再度同じデータを読み出す機能を持つことを特徴とするクロスバスイッチ。
【請求項７】
請求項１もしくは２に記載のクロスバスイッチにおいて、
前記仮想出力キューが、前記入力ポート数のＰ倍個（Ｐは１以上優先度数未満の整数）であり、
前記クロスバの個数がＰ個であり、
複数の優先度を前記パイプラインクロスバで扱い、
前記小規模セレクタが出力調停をする際に、データ中の優先度情報を抽出し、優先度の高いデータを優先的に選択することを特徴とするクロスバスイッチ。
【請求項８】
請求項１もしくは２に記載のクロスバスイッチにおいて、
前記仮想出力キューの読み出し制御と、前記クロスバの制御と、出力バッファの書き込み制御とが、
前記入力バッファの読み書き制御と、前記仮想出力キューの書き込み制御と、前記出力バッファの読み出し制御とより高速に行われることを特徴とするクロスバスイッチ。
【請求項９】
請求項１〜６のいずれか１項に記載のクロスバスイッチおいて、
前記パイプラインセレクタを構成する前記小規模セレクタの出力調停が行われる際に、ラウンドロビン制御が行われ、各入力に対し公平な帯域割当が実施されることを特徴とするクロスバスイッチ。
【請求項１０】
請求項１〜６のいずれか１項に記載のクロスバスイッチおいて、
前記パイプラインセレクタを構成する前記小規模セレクタの出力調停が行われる際に、ラウンドロビン制御が行われ、各入力に対し公平な帯域割当を実施するとともに、
前記仮想出力キューの利用量が設定した閾値を超えた１つもしくは複数の入力がある場合、前記状態にある入力が優先的に選択されることを特徴とするクロスバスイッチ。
【請求項１１】
請求項１〜６のいずれか１項に記載のクロスバスイッチおいて、
前記パイプラインセレクタを構成する前記小規模セレクタの出力調停が行われる際に、ラウンドロビン制御が行われ、各入力に対し公平な帯域割当を実施するとともに、
前記仮想出力キューが有効なデータを保持していながら出力できない状態が設定した時間を超えた１つもしくは複数の入力がある場合、前記状態にある入力が優先的に選択されることを特徴とするクロスバスイッチ。
【請求項１２】
請求項１〜６のいずれか１項に記載のクロスバスイッチおいて、
前記パイプラインセレクタを構成する前記小規模セレクタの出力調停が行われる際に、ラウンドロビン制御が行われ、各入力に対し公平な帯域割当を実施するとともに、
前記仮想出力キューが有効なデータを保持していながら出力できない状態が設定した時間を超えた１つもしくは複数の入力がある場合、前記状態にあるいずれかの入力が優先的に選択されることを特徴とするクロスバスイッチ。
【請求項１３】
請求項１〜６のいずれか１項に記載のクロスバスイッチおいて、
前記入力バッファに接続される全ての前記仮想出力キューに空きエントリがある場合にのみ、前記入力バッファから対応する前記仮想出力キューにデータが移動されることを特徴とするクロスバスイッチ。
【請求項１４】
請求項１〜６のいずれか１項に記載のクロスバスイッチおいて、
前記入力バッファから対応する前記仮想出力キューに空きエントリがある場合に、前記入力バッファから対応する前記仮想出力キューにデータが移動されることを特徴とするクロスバスイッチ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロスバスイッチに関し、特に、ルータ、サーバ、ストレージ装置などにおいて、装置内部に有する複数の機能ブロックを動的に相互に接続するクロスバスイッチに適用して有効な技術に関する。
【背景技術】
【０００２】
本発明者が検討した技術として、例えば、クロスバスイッチにおいては、以下の技術が考えられる。【０００３】
ルータなどのネットワーク転送装置やサーバ装置、複数のディスクアレイを接続するストレージ装置などでは、装置内部の機能ブロック間でデータ交換を行うためにスイッチファブリックが利用される。【０００４】
スイッチファブリックの構成方法には多種多様な方式があり、かつては単一のデータバスに複数の機能ブロックを接続するバス方式が用いられていた。しかしながら、単一バスの処理がシステムのボトルネックとなるため、近年の高速・大容量交換向けのスイッチファブリックでは、共通バッファ型スイッチ方式や、出力バッファ型スイッチ方式、入出力バッファ型クロスバスイッチ方式が利用されるようになっている。【０００５】
共通バッファ型スイッチ方式とは、Ｎ個（Ｎは自然数）の入力ポートとＮ個の出力ポートを共通バッファ（単一のメモリ）に接続し、前記共通バッファに全入力を時分割で書き込み、また、読み出しを行い目的の出力ポートへ出力するスイッチ方式である。共通バッファ型スイッチ方式は、共通バッファ部にスイッチの全交換容量に比例した交換容量が要求されるため、入出力ポートの速度と回線数が上昇すると、メモリ性能が追いつかず、システムのボトルネックになりやすい。【０００６】
また、出力バッファ型スイッチ方式は、Ｎ個の入力ポートとＮ個の出力ポートと出力ポート毎に独立した出力バッファと全入力ポートと全出力ポートを接続する共通バスにより構成される。全入力は時分割で共通バスに渡され、宛先情報によりフィルタリングされて宛先の出力ポートの持つ出力バッファにキューイングされ、出力される。出力バッファ型スイッチ方式は、共通バス部にスイッチの全交換容量に比例した交換容量が要求されるため、入出力ポートの速度と回線数が上昇すると、バス転送性能が追いつかず、システムのボトルネックになりやすい。【０００７】
また、入出力バッファ型クロスバスイッチ方式は、Ｎ個の入力ポートとＮ個の出力ポート、入力ポート毎に独立した入力バッファ、出力ポート毎に独立した出力バッファ、全入力バッファと全出力バッファを接続するクロスバにより構成される。入出力バッファ型クロスバスイッチは、入力バッファ及び出力バッファのメモリアクセス速度が、スイッチの全交換容量に依存するのではなく、単一の入力速度、及び、単一の出力速度に依存するだけであるため、交換容量を容易に向上させやすい利点を持つ。【０００８】
しかしながら、前述の入出力バッファ型クロスバスイッチは、ＨＯＬ（Ｈｅａｄ  Ｏｆ  Ｌｉｎｅ）ブロッキングの問題があることが以前から知られており、入力ポート数を無限大とし、宛先が完全にランダムな入力を与えたとき、クロスバスイッチのスループットが約５８．６％という理論限界値に制限される。この問題を克服するために、ＶＯＱ（Ｖｉｒｔｕａｌ  Ｏｕｔｐｕｔ  Ｑｕｅｕｅ，仮想出力キューイング）と呼ばれる方式が入力バッファ用に提案されている（例えば、非特許文献１及び非特許文献２参照）。【０００９】
ＶＯＱとは、スイッチの各入力に、スイッチの各出力に対応する独立した出力を行えるバッファを設け、空き出力宛のデータが、別の出力に対する競合により進めない先頭データによってサービスをブロックされる可能性がなくなるようにするというものである。この場合、Ｎ×Ｎクロスバスイッチは入力ごとにＮ個のキュー、すなわち、Ｎ2個のキューを有する。【００１０】
ＶＯＱを備えるクロスバスイッチにおいて、スケジューラは重要な設計ポイントである。高性能のスケジューラの設計により、ＶＯＱ入力バッファ型スイッチは、１００％のスループットが達成可能であることが示されている（例えば、非特許文献３参照）。【００１１】
ＶＯＱの場合、スケジューラは、通常の先入力先出力（ＦＩＦＯ）入力バッファ型スイッチの場合よりも、入力から出力へデータを交換するのに、はるかに多くの選択肢を有する。ＶＯＱスケジューリングとは、この多くの選択肢の中から、できるだけ多くのデータを、公平に交換することである。【００１２】
さらに、スケジューリング計算時間が通信装置のボトルネックとならないようにするために、スケジューリングは、通信装置のデータの交換時間に依存した、ある限られた時間内で行われなければならない。【００１３】
上記のような制約条件を満たす近似解法として、ＶＯＱスケジューリングを行う手法が幾つか考えられている。例として、入力と出力間でRequest/Acknowledge（要求・確認）制御を行うＳＬＩＰ方式（例えば、非特許文献４参照）、単純なラウンドロビン制御を用いる方式（例えば、非特許文献５参照）、各入力のスケジューリング情報をメッセージパッシングして、ラウンドロビンで次のポートに渡すＲＲＧＳ（Round−Robin Greedy Scheduler）方式（例えば、特許文献１参照）等がある。【００１４】
スケジューリングの後、データを交換するＮ×Ｎクロスバスイッチ（Ｎ入力Ｎ出力をＮ×Ｎと表現する）では、集中型のスケジューラがボトルネックとなるため、特許文献３に示されるように、クロスバのＮ×１のセレクタをＮ個に分解し、Ｎ×１セレクタごとに分散したスケジューラを利用する手法を用いてスケジューラの負荷を分散することが多い。【００１５】
スイッチデバイスのスループットは、ポート数、データパスのビット幅、動作周波数の積で決まり、このうち、ポート数はＬＳＩのパッケージのピン数により制限される。よって、データパスのビット幅と動作周波数を極大化するための手法が高スループット化には重要であり、多ビット幅のデータパスを高い動作周波数で制御することが高スループット化のために重要となる。パイプライン処理には粗粒度のパイプライン処理と細粒度のパイプライン処理がある。ここで、粗粒度処理とは、複数のマシンサイクルを単位時間として処理を進めること、細粒度処理とは、１マシンサイクルを単位時間として処理を進めることを意味する。【００１６】
粗粒度のパイプライン処理として、例えば、特許文献２が挙げられる。特許文献２では、経路予約処理と情報転送処理に独立にタイムスロットを割り当て、数スロット先の転送を予約し、然るべきスロット時間に達したら予約をしておいてデータの転送を行う。すなわち、予約と転送を比較的長めの単位時間でオーバラップして行うことで粗粒度のパイプライン処理を実現している。この手法は、調停に比較的長い時間をかけることができ、スループットも向上させやすいが、調停実施からデータの転送までに時間がかかることからレイテンシが長い点がデメリットと考えられる。【００１７】
細粒度のパイプライン処理として、例えば、特許文献３が挙げられる。特許文献３では、実施例の一つとしてＮ×１セレクタをＯＲツリーで構成し、ＯＲツリーの途中段にレジスタ（フリップフロップ）を挿入することで細粒度のパイプライン化を行っている。より具体的には、Ｎ×１セレクタの入力フリップフロップ（入力レジスタ）からデータが入力され、初段で全入力の調停結果から勝者を一つだけ選び、前記入力データとＡＮＤをとってフリップフロップ（ＭＡＳＫレジスタ）に記録する。次のステージでは前記ＭＡＳＫレジスタ群からの出力のＯＲをとり、結果を当該ステージのフリップフロップ（ＯＲレジスタ）に記録する。最終ステージでは前記ＯＲレジスタ群の出力のＯＲをとってフリップフロップ（出力レジスタ）に記録することで、出力データを通過させる。このため、ＯＲツリーで構成されるパイプラインセレクタの中は常に一つの勝者データだけが進行する。この細粒度パイプライン型のセレクタは単純にデータパスだけをパイプライン化しており、最初に全入力の中から勝者を一つだけ選択する処理がボトルネックとなりうる。【００１８】
細粒度のパイプライン処理の別の例として、特許文献４が挙げられる。特許文献４では、１６×１セレクタを構成する際に、４×１セレクタを２段ツリー状に接続し、４×１セレクタ間にフリップフロップを挿入する実施例が示されている。特許文献３同様に初段ステージで唯一の勝者が選ばれ、パイプラインツリーの中を常に一つの勝者データだけが進行する。この細粒度パイプライン型のセレクタも、特許文献３と同様、単純にデータパスだけをパイプライン化しており、最初に全入力の中から勝者を一つだけ選択する処理がボトルネックとなりうる。【００１９】
細粒度のパイプライン処理のさらに別の例として、特許文献５が挙げられる。特許文献５では、Ｎ×１セレクタを構成するために２進木構造を持つアービタをツリー状に接続し、葉の部分からの要求入力及びデータ入力を枝部分に配する要求セレクタで順次選択、進行させ、各枝にフリップフロップを配置することでパイプラインセレクタを実現する実施例を示している。
【特許文献１】特開２０００−１７４８１７号公報
【特許文献２】特許第３４７３６８７号公報
【特許文献３】特許第３２０６１２６号公報
【特許文献４】米国特許第６６３６９３２号明細書
【特許文献５】特開２００４−１４０５３８号公報
【非特許文献１】タミール（Y.Tamir）、フラジール（G.Frazier）、「ハイ・パフォーマンス・マルチ・キュー・バッファーズ・フォー・ブイエルエスアイ・コミュニケーション・スイッチーズ（High Performance Multi−queue Buffers for VLSI Communication Switches）」、プロシーディングス・ オブ・１５ス・アニュアル・シンポジウム・オン・コンピュータ・アーキテクチャ（Proceedings of 15th Ann. Symp. on Comp. Arch.）、１９８８年６月、 Ｐ．３４３−３５４
【非特許文献２】アンダーソン（T. Anderson）、オウィッキ（ S. Owicki）、サクセ（J. Saxe）、タッカー（C. Thacker）、「ハイ・スピード・スイッチ・スケジューリング・フォー・ローカル・エリア・ネットワークス（High Speed Switch Scheduling for Local Area Networks）」、エイシーエム・トランザクションズ・オン・コンピュータシルテムズ（ACM Transactions on ComputerSystems）、１９９３年１１月、Ｐ．３１９−３５２
【非特許文献３】メッキティクル（A. Mekkittikul）、マクケオウン（N. McKeown）、「ア・プラクティカル・スケジューリング・アルゴリズム・テュー・アーカイブ・１００パーセント・スループット・イン・インプット・キューデュ・スイッチーズ（A Practical Scheduling Algorithm to Achieve 100％ Throughput in Input−Queued Switches）」、プロシーディングス・オブ・インフォコム９８（Proceedings of Infocom98）、１９９８年４月
【非特許文献４】マクケオウン（N. McKeown）、イザード（M. Izzard）、メッキティクル（A. Mekkittikul）、エレーシック（W. Ellersick）、ホーイッツ（M. Horowitz）、「ザ・タイニイ・テラ・ア・パケット・スイッチ・コア（The Tiny Tera:A Packet Switch Core）」、アイイーイーイー・マイクロ（IEEE Micro）、１９９７年２月、ｐ．２６−３２
【非特許文献５】タミール（Y. Tamir）、チ（H. C. Chi）、「シメトリック・クロスバ・アービターズ・フォー・ブイエルエスアイ・コミュニケーション・スイッチーズ（Symmetric Crossbar Arbiters for VLSI Communication Switches）」、アイイーイーイー・トランザクションズ・オン・パラレル・アンド・ディステュリビューティド・システムズ（IEEE Transactions on Parallel and Distributed Systems）、１９９３年、第４巻、第１号、ｐ．１３−２７
【発明の開示】
【発明が解決しようとする課題】
【００２０】
ところで、前記のようなクロスバスイッチの技術について、本発明者が検討した結果、以下のようなことが明らかとなった。【００２１】
例えば、サーバ、ルータ、ストレージ装置などの内部において、高スループットでデータ交換を行うこと、及び、高スループットを維持すること、及び、重要度の高いデータを重要度の低いデータより低レイテンシで通過させること、以上が実現できるクロスバスイッチを提供することが課題である。ここでは、より具体的に問題を分解して課題を明確化する。【００２２】
高スループットを得るために、特許文献３，４，５の実施例で示される細粒度のパイプラインクロスバスイッチ方式が挙げられる。小規模セレクタをツリー状に多段に接続し、ステージ間にフリップフロップを配置したパイプラインセレクタを出力ポート数分用意したパイプラインクロスバを用いて、他ビット幅データを高周波数で動作させることにより高スループットを得るスイッチ方式である。【００２３】
ところが、特許文献３，４のパイプラインクロスバスイッチでは、データパスだけが細粒度パイプライン化されており、制御部は細粒度パイプライン化されていないため、粗粒度のパイプライン処理の場合と同様に、調停回路が複雑化して調停に時間がかかること、及び、調停からデータの転送までのレイテンシが大きくなってしまうことが課題である。【００２４】
また、特許文献５では、制御部も含めて細粒度パイプライン化する実施例が記載されている。制御部のパイプライン化は短時間調停に有効であるが、特許文献５では、その手段が「各要求セレクタや、一部の要求セレクタにバッファを設けることでパイプライン動作する交換アービタが構築可能である。」という一文によって示されているのみであり、調停に敗北したデータの進行をステージの途中で停止する方法、もしくは、調停に敗北したデータを消去して再度投入しなおす方法に関して記載がなく、具体的な処理手段が不明瞭である。すなわち、細粒度パイプラインの制御において、調停後、途中ステージで敗北したデータの扱いに関して具体的な手段を提供することが課題である。【００２５】
高スループットを維持するために、非特許文献１，２，３，４，５、特許文献１で示したように、空き出力ポート行きのデータが、別のポートに対する競合により進めない先頭データによって進行を停止させられる状況を防ぐためのバッファＶＯＱ（Ｖｉｒｔｕａｌ  Ｏｕｔｐｕｔ  Ｑｕｅｕｅ）が有効であるが、細粒度パイプラインクロスバスイッチと組み合わせて利用する場合、その読み出し制御が課題となる。【００２６】
重要度の高いデータを低レイテンシで通過させるために、ＶＣ（Ｖｉｒｔｕａｌ  Ｃｈａｎｎｅｌ）と呼ぶ技術がスイッチデバイス間で利用可能である。ＶＣとは、入力ポート毎に複数の入力バッファと、出力ポート毎に前記入力バッファと同数の出力バッファを設け、デバイス間の通信リンク（チャネル）をそれらのバッファで共有する技術である。また、スイッチデバイス内部のクロスバ調停（宛先調停）の際に優先度を考慮した調停を行う技術も利用可能である。【００２７】
しかしながら、ＶＣと優先度考慮のクロスバ調停（宛先調停）だけでは、重要度の高いデータがスイッチデバイス内部で重要度の低いデータの直後に続く場合に、重要度の高いデータがクロスバスイッチを即座に通過できず、レイテンシが伸びてしまう点が課題である。【００２８】
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００２９】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。【００３０】
まず、高スループットを得るための細粒度パイプラインクロスバスイッチを実現するために、小規模セレクタをツリー状に多段に接続し、ステージ間にフリップフロップを配置したパイプラインセレクタを出力ポート数分用意してパイプラインクロスバを構成する。調停要求はデータ内に埋め込み、前記小規模セレクタ毎に独立した調停器（アービタ）を配置する。【００３１】
前記調停器は、入力データに埋め込まれている調停要求と必要であれば入力データの優先順位を抽出して勝者入力を決定する。また、入力データの滞留状況を監視し、滞留量が多い場合、もしくは滞留時間が長い場合に優先的に滞留量の多い入力を選択するオプション機能を持つ。【００３２】
パイプラインセレクタは、毎サイクルデータを受信し、調停と勝者入力データの転送を同時に行う。勝者入力データの転送は、２つの実現方法がある。【００３３】
１つ目の実現方法によれば、フリップフロップの前方のステージが次のサイクルに利用可能である場合か、フリップフロップが何も記録していない場合に勝者入力データをフリップフロップに記録することで行う。すなわち、フリップフロップは、前記小規模セレクタの入力の勝者もしくは、フリップフロップの出力自身を入力とする。よって、パイプラインセレクタの各ステージには、勝者データが進行可能なステージまで進み、進めなくなった時点で待機することになる。【００３４】
１つ目の実現方法によれば、フリップフロップの前方のステージが次のサイクルに利用可能であるか否かは、パイプラインクロスバの最終段では、出力バッファに書き込みスペースがある（利用可能）か否（利用不可能）かで判断する。パイプラインクロスバの途中ステージでは、出力に近い側のステージでの入力データの調停結果が勝利し、なお且つ進行可能である（利用可能）か否（利用不可能）かで判断する。【００３５】
２つ目の実現方法によれば、フリップフロップには常に勝者入力データを記録する。そして、敗者データに対しては、敗者と判明した時点で後方ステージ（入力側のステージ）のフリップフロップのデータをクリアし、パイプラインセレクタへデータを供給するバッファのリードポインタを必要数分だけ巻き戻し次回のデータ入力時に正しい先頭データから読み出し可能にする。もしくは、パイプラインセレクタへデータを供給するバッファにおいて、クロスバ通過前の先頭データのリードポインタを記録しておき、敗者と判明した時点でリードポインタを記録した値に巻き戻し（置き換え）、次回のデータ入力時に正しい先頭データから読み出し可能にする。【００３６】
２つ目の実現方法によれば、パイプラインセレクタの最終ステージの前方に配置される出力バッファがデータ受付不能である場合は、データのオーバランを見越し、前記出力バッファのエントリ数からパイプラインセレクタのステージ数を減じた値に達したところでパイプラインセレクタへの入力を停止することで出力バッファ溢れを回避する。【００３７】
次に、高スループットを維持するために、ＶＯＱをパイプラインクロスバの入力毎に独立して設ける。前記ＶＯＱは、通常のＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）キュー制御とは異なり、ＶＯＱ読み出し直後に読み出しキャンセル要求をパイプラインクロスバから受けると、再度同じ値を読み出すようリードポインタを制御する。【００３８】
最後に、重要度の高いデータを低レイテンシで通過させるために、入力ポート毎に複数の入力バッファと、出力ポート毎に前記入力バッファと同数の出力バッファを設けＶＣを構成し、さらに、入力バッファと出力バッファと同数のパイプラインクロスバを設ける。そして、スイッチデバイス内で重要度の高いデータと低いデータを異なる入力バッファ、パイプラインクロスバ、出力バッファで制御し、スイッチデバイスからの出力時に優先度の高いデータの属する出力バッファを優先する。
【発明の効果】
【００３９】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下のとおりである。【００４０】
（１）本発明による細粒度パイプラインクロスバは、多ビット幅のデータパスを高い動作周波数で制御することが可能であるため、高スループットを実現できる。【００４１】
（２）本発明による細粒度パイプラインクロスバは、調停回路をクロスバの各ステージに分散配置するため、個々の調停回路を簡易化でき、高速動作を実現できる。【００４２】
（３）本発明による細粒度パイプラインクロスバは、調停と転送を同時に実現するため、調停から転送までに発生するレイテンシを極小化できる。【００４３】
（４）本発明による細粒度パイプラインクロスバは、ステージ間のフリップフロップが、勝利入力データに加えフリップフロップの出力をフリップフロップの入力として循環させて持つため、調停に敗北したデータを、パイプラインクロスバ内で次の出力機会の待ち合わせを行うことができる。すなわち、あるデータがパイプラインクロスバを通過後、パイプラインクロスバに空き状態（パイプラインバブルと呼ぶ）を発生させずに次の出力要求データを通過させることが可能であり、スループットの低下を防ぐことができる。【００４４】
（５）ＶＯＱによりＨＯＬブロッキングによるスループット低下を防ぐとともに、本発明によるＶＯＱの読み出し制御により、ＶＯＱにデータがあればパイプラインクロスバへ無条件でデータ入力し、パイプラインクロスバの初段ステージセレクタでの調停に敗北した場合か、前記調停に勝利しても前記セレクタに付随のフリップフロップがデータを受付不能状態にある場合に再度ＶＯＱから同一データの読み出しを行うことで、パイプラインクロスバのパイプラインバブル発生を抑止し、スループットの低下を防ぐことができる。【００４５】
（６）ＶＣと同数の本発明によるＶＯＱを入力に持つ細粒度パイプラインクロスバにより、複数のスイッチデバイスを接続したときにスイッチデバイス群全体での入力から出力までの経路上に、仮想的な専用経路を実現し、重要データを非重要データに邪魔されることなく小さいレイテンシで転送することが可能になる。
【図面の簡単な説明】
【００４６】
【図１】本発明の一実施の形態による仮想経路付き細粒度パイプラインクロスバスイッチの構成例を示すブロック図である。
【図２】本発明の前提として検討した入出力バッファ型クロスバスイッチの構成例を示すブロック図である。
【図３】異なる宛先データによるＨＯＬブロッキングの例を示す説明図である。
【図４】低優先度データによるＨＯＬブロッキングの例を示す説明図である。
【図５】異なる宛先データによるＨＯＬブロッキングの解消例を示す説明図である。
【図６】低優先度データによるＨＯＬブロッキングの解消例を示す説明図である。
【図７】本発明の一実施の形態によるＨＯＬブロッキングを解消するクロスバスイッチの構成例を示すブロック図である。
【図８】途中ステージでデータを停止させることのできない細粒度パイプラインクロスバの構成を示すブロック図である。
【図９】本発明の一実施の形態によるクロスバスイッチにおいて、途中ステージでデータを停止させることのできる細粒度パイプラインクロスバの構成を示すブロック図である。
【図１０】図９の細粒度パイプラインクロスバの基本構成要素を示すブロック図である。
【図１１】図９の細粒度パイプラインクロスバでのデータ進行例を示す説明図である。
【図１２】図８の細粒度パイプラインクロスバでのデータ進行例を示す説明図である。
【図１３】調停と転送がシーケンシャルに実施されている状況を示す説明図である。
【図１４】調停と転送がオーバラップされて実施されている状況を示す説明図である。
【図１５】本発明の一実施の形態によるクロスバスイッチにおいて、調停と転送がオーバラップされ、なお且つ同時に実施されている状況を示す説明図である。
【図１６】本発明の一実施の形態によるクロスバスイッチにおいて、ＴＣＩＱの読み出しとＶＯＱの書き込み制御を示すフローチャートである。
【図１７】本発明の一実施の形態によるクロスバスイッチにおいて、ＶＯＱの読み出し制御を示すフローチャートである。
【図１８】本発明の一実施の形態によるクロスバスイッチにおいて、パイプラインクロスバのフリップフロップの保持内容制御を示すフローチャートである。
【図１９】図８で制御部が分散配置されている細粒度パイプラインクロスバの構成を示すブロック図である。
【図２０】図１９の細粒度パイプラインクロスバの基本構成要素を示すブロック図である。
【図２１】図１９の細粒度パイプラインクロスバのＶＯＱの読み出し制御を示すフローチャートである。
【図２２】図１９の細粒度パイプラインクロスバでのデータ進行例を示す説明図である。
【図２３】本発明の一実施の形態によるクロスバを多重化しない仮想経路付き細粒度パイプラインクロスバスイッチの構成例を示すブロック図である。
【発明を実施するための最良の形態】
【００４７】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部材には原則として同一の符号を付し、その繰り返しの説明は省略する。【００４８】
（実施の形態１）
図１に、本発明を適用した仮想経路付き細粒度パイプラインクロスバスイッチ１００の一例の全体像を示す。【００４９】
図１の例では、２クラスのトラフィックを独立に扱うための２本のＶＣとして、入力ポート毎に２本のＴＣＩＱ（Ｔｒａｆｆｉｃ  Ｃｌａｓｓ  Ｉｎｐｕｔ  Ｑｕｅｕｅ）１０１Ａ−１〜４，１０１Ｂ−１〜４、出力ポート毎に２本のＴＣＯＱ（Ｔｒａｆｆｉｃ  Ｃｌａｓｓ  Ｏｕｔｐｕｔ  Ｑｕｅｕｅ）１０２Ａ−１〜４，１０２Ｂ−１〜４、入力にＶＯＱ１０３{Ａ，Ｂ}−{１〜４}{１〜４}を備える細粒度パイプラインクロスバ１０４Ａ，１０４Ｂを各ＶＣ用に１面ずつ合計２面備えた構成であり、全体で４入力４出力のスイッチデバイスを実現している。【００５０】
図２に、比較のために、代表的な従来の入出力バッファ型クロスバスイッチで４入力４出力スイッチを実現する例を示す。【００５１】
入出力型クロスバスイッチ２００は、入力ポート毎に１本の入力バッファ２０１−１〜４、出力ポート毎に出力バッファ２０２−１〜４、クロスバ２０４を搭載している。クロスバ２０４は、各出力バッファ２０２−１〜４に接続されたセレクタ２０５−１〜４により構成され、各セレクタが独立した出力調停器を備える。【００５２】
図２の構成は、入力バッファのＨＯＬブロッキングの問題が発生する。ＨＯＬブロッキングとは、空き出力ポート行きのデータの直前に、別のポート行きで競合により進めないデータが存在することによって、進行を停止させられる状態を指す。【００５３】
図３に、異なる宛先データによるＨＯＬブロッキングの例を示す。【００５４】
図３は、３入力３出力の入力バッファ付きスイッチにおいて、入力バッファ２０１−１に出力１行きデータが４つ、入力バッファ２０１−２に出力２行きデータが４つ、入力バッファ２０１−３の先頭に入力２行きデータが１つ、その後ろに出力３行きデータが３つある状態を示している。【００５５】
図３の各入力バッファ２０１−１〜３の先頭は出力１行きデータが１つ、出力２行きデータが２つあり、出力２行きデータが競合を起こしている。入力バッファ２０１−３は出力２行きの直後に出力３行きのデータがあり、先頭の出力２行きデータが競合を起こして出力できない状況にあるために、関係のない出力３行きのデータの出力が先頭の出力２行きデータが排出されるまで待機させられてしまい、結果的にスイッチデバイスのスループットが低下する。理論上、ポート数を無限大とし、宛先が完全にランダムなデータが入力されると、ＨＯＬブロッキングにより、スイッチデバイスのスループットは５８．６％まで低下することが知られている。【００５６】
図４に、低優先度データによるＨＯＬブロッキングの例を示す。【００５７】
図４は、３入力３出力の入力バッファ付きスイッチにおいて、入力バッファ２０１−１に出力１行きで優先度Ｂのデータが４つ、入力バッファ２０１−２に出力２行きで優先度Ａのデータが１つ、入力バッファ２０１−３の先頭に入力１行きで優先度Ｃのデータが１つ、その後ろに出力１行きで優先度Ａのデータが３つある状態を示している。なお、優先度は優先度Ａが最も高く、次いで優先度Ｂが高く、優先度Ｃが最も低いものとする。【００５８】
図４の各入力バッファ２０１−１〜３の先頭は出力１行きデータが２つ、出力２行きデータが１つあり、出力１行きデータが競合を起こしており、出力１には入力バッファ２０１−１の先頭にある優先度Ｂのデータが出力されている。ここで、入力バッファ２０１−３は先頭に出力１行きだが、優先度Ｃのデータがあるため、その直後にある出力１行き優先度Ａのデータが出力できない状況にある。このために、重要度の高いデータが、重要度の低いデータにブロックされてしまう状況が発生する。【００５９】
図５に、異なる宛先データによるＨＯＬブロッキングの解消法の例を示す。【００６０】
図５では、図３の異なる宛先パケットによるＨＯＬブロッキングを回避するために、宛先ポート毎に独立したＶＯＱ１０３−{１〜３（入力番号）}{１〜３（出力番号）}を導入する。ＶＯＱ１０３−{１〜３}{１〜３}により、図３の例でブロックされていた出力Ｃ行きのデータが、他出力行きデータ（図３の例では出力２行き）の競合状態によらず出力できるようになり、スループットの低下を回避できる。【００６１】
図６に、低優先度データによるＨＯＬブロッキングの解消法の例を示す。【００６２】
図６では、図４の低優先度データによるＨＯＬブロッキングを回避するために、トラフィッククラス（優先度）毎に独立したバッファＴＣＩＱ１０１{Ａ，Ｂ，Ｃ（優先度）}−{１〜３（入力番号）}を導入する。ＴＣＩＱ１０１{Ａ，Ｂ，Ｃ}−{１〜３}により、図４の例でブロックされていた優先度の高いデータ（図４の例では入力バッファ２０１−３の出力１行き優先度Ａ）が、優先度の低いデータ（図４の例では入力バッファ２０１−１の出力１行き優先度Ｂ）より先に出力できるようになり、優先度を遵守した転送が可能となる。【００６３】
図７に、図３、図４で示した２種類のＨＯＬブロッキングを同時に回避するための、ＴＣＩＱ１０１{Ａ，Ｂ，Ｃ(優先度)}−{１〜３(入力番号)}、ＶＯＱ１０３{Ａ，Ｂ，Ｃ(優先度)} −{１〜３(入力番号)}{１〜３(出力番号)}を組み合わせる本発明の一実施の形態によるクロスバスイッチの構成例を示す。【００６４】
図７の例では、クロスバスイッチ３００は、３入力３出力で３種類の優先度を扱う。入力は、まずＴＣＩＱ１０１{Ａ，Ｂ，Ｃ}−{１〜３}に接続する。ＴＣＩＱ１０１{Ａ，Ｂ，Ｃ}−{１〜３}は、優先度毎及び出力毎に用意するＶＯＱ１０３{Ａ，Ｂ，Ｃ}−{１〜３}{１〜３}に接続する。ＶＯＱ１０３{Ａ，Ｂ，Ｃ} −{１〜３}{１〜３}は、優先度毎に独立したクロスバ２０４{Ａ，Ｂ，Ｃ（優先度）}に接続する。各クロスバ２０４{Ａ，Ｂ，Ｃ}の各出力は、独立したタイミングでデータを出力するため、出力ポート側にＴＣＯＱ１０２{Ａ，Ｂ，Ｃ（優先度）}−{１〜３ (出力番号)}を配置し、クロスバ２０４{Ａ，Ｂ，Ｃ}が同時にデータを出力してもデータが消失しないようにする。【００６５】
図７において、ＴＣＩＱ１０１{Ａ，Ｂ，Ｃ}−{１〜３}とＴＣＯＱ１０２{Ａ，Ｂ，Ｃ}−{１〜３}はペアになっており、クロスバスイッチ３００、または出力にＴＣＯＱ１０２{Ａ，Ｂ，Ｃ}−{１〜３}、または入力にＴＣＩＱ１０１{Ａ，Ｂ，Ｃ}−{１〜３}を持つデバイスを複数接続する場合に、デバイス間でＶＣ(Ｖｉｒｔｕａｌ  Ｃｈａｎｎｅｌ)を実現する。すなわち、優先度Ａ，Ｂ，Ｃの３種類のデータで単独の回線を共有する。Ａ＞Ｂ＞Ｃのように優先度に重みをつけ、共有する回線を優先度の高いデータを優先的に通過させるよう制御してもよいし、優先度を利用可能帯域として、共有する回線を割当て帯域に応じて利用するよう制御してもよい。制御位置は、ＴＣＯＱ１０２{Ａ，Ｂ，Ｃ}−{１〜３}直後のセレクタにおいて実施する。本発明では、クロスバ２０４{Ａ，Ｂ，Ｃ}を優先度毎に独立させているため、クロスバスイッチ３００内におけるＨＯＬブロッキングを回避することでスループットの低下を防ぎ、正確な優先順位制御、または帯域制御が可能になる。【００６６】
本発明では、スループットの低下を防ぐだけでなく、スループット自体を向上させるために細粒度パイプラインクロスバを導入する。図７のクロスバ２０４{Ａ，Ｂ，Ｃ}を細粒度パイプラインクロスバに置き換え、４入力４出力、２種類の優先度を扱う例としたのが図１である。【００６７】
ここで、図１の細粒度パイプラインクロスバ１０４の詳細な構成について説明する。パイプラインクロスバ１０４は４×４（４入力４出力）の構成であり、４×１のパイプラインセレクタ１０５が４個で構成される。パイプラインセレクタ１０５は、小規模な２×１セレクタをツリー状に配置し、２×１セレクタの出力部にフリップフロップ（ＦＦ）を配置した構成である。【００６８】
図８に、８×８細粒度パイプラインクロスバの１出力分の構成、すなわち８×１細粒度パイプラインセレクタを示す。この細粒度パイプラインクロスバは、途中ステージでデータを停止させることのできないものである。【００６９】
図８の細粒度パイプラインセレクタは、入力データを選択するための２×１セレクタ４０１、勝者データを記録するためのフリップフロップ４０３のペアを基本構成要素とし、前記基本構成要素をツリー状に接続することで実現する。図８の構成は、特許文献４に公開されているパイプラインクロスバと同等であり、セレクタの選択信号は細粒度パイプラインセレクタの外部から与える構成である。初段ステージで唯一の勝者が選ばれ、パイプラインセレクタの中を常に１つの勝者データだけが進行する。つまり、データパスだけが細粒度パイプライン化されており、制御部は細粒度パイプライン化されていないため、粗粒度のパイプライン処理の場合と同様に、調停回路が複雑であり、なお且つ、調停から実際の転送までのレイテンシが大きくなってしまう点が問題である。【００７０】
図９に、本発明による細粒度パイプラインクロスバを構成するための細粒度パイプラインセレクタの例を示す。この細粒度パイプラインクロスバは、途中ステージでデータを停止させることのできるものである。【００７１】
図９の細粒度パイプラインセレクタは、入力データを選択するための２×１セレクタ４０１、現サイクルの勝者データと前サイクルのフリップフロップ記録データを選択するための２×１セレクタ４０２、セレクタ４０２の出力を記録するフリップフロップ４０３、セレクタ４０１，４０２の選択信号を生成する制御部４０４を基本構成要素とし、前記基本構成要素をツリー状に接続することで実現する。【００７２】
図１０に、図９のパイプラインクロスバの構成要素（特に制御部４０４）の詳細を示す。【００７３】
制御部４０４は、調停器（アービタ）４０５と、フリップフロップ４０３のデータを保持するための論理４０６と、入力データの滞留状況を伝達するための論理４０７とにより構成される。入力データは調停要求４１０を含み、調停器４０５は、入力データに埋め込まれている調停要求４１０を抽出し、公平な調停を実現するため、データ通過毎にラウンドロビン制御により勝者データを決定して選択信号４１１を生成し、セレクタ４０１の出力を選ぶ。また、調停器４０５は、入力データの滞留状況を監視するための信号４２０を利用し、滞留量が多い場合に優先的に滞留量の多い入力を選択するオプション機能を持つ。【００７４】
ここで、データの単位について述べる。データの単位として、本文中では、パケットとセルとフリットという用語を用いる。【００７５】
パケットとはルータなどの通信装置で利用される可変長のイーサフレーム等に装置内制御情報（例えば、スイッチファブリックの出力ポート番号や優先順位情報、整理番号等）を付加したデータである。セルとは、前記のパケットを固定長に区切り、装置内制御情報（パケットの場合の情報と同等の情報や、パケットに組み立てなおすときに必要となる整理番号や区切り情報等）を付加したデータである。なお、パケットはセルの整数倍とは限らないため、パケットの最後の端数部分にあたるデータにパディング（ゼロパディング）を行い、全てのセルサイズを固定化する。フリットとは、ハードウエアが１マシンサイクル（以下、「サイクル」と省略）で扱うことのできる分量に前記のセルを区切ったデータである。セルはフリットの整数倍である。【００７６】
スイッチデバイスには、ハードウエアで扱いやすい固定長のセル単位で入力する。調停器４０５での調停単位はパケット、もしくはセル単位である。調停単位をセル単位とする場合は、複数のパケットのセルがスイッチデバイス内で交じり合った状態で最終端受信デバイスに到達するため、最終端受信デバイスにパケット毎にセルを収集し、組み立てる仕組みが必要となる。調停単位をパケットとする場合は、複数のパケットのセルがスイッチデバイス内で混じりあうことはないため、最終端受信デバイスは到着セルを順番どおり組み立てるだけでよい。以下、本実施の形態では、調停単位をパケットとして説明を行う。【００７７】
また、図１０のフリップフロップ４０３のデータを保持するための論理４０６は、前方ステージからのデータ保持要求４３０があり、なお且つフリップフロップ４０３のデータの有効ビットが有効である場合に、フリップフロップ４０３の値を再度フリップフロップ４０３に書き込むための保持信号４３２を生成し、セレクタ４０２を制御することで、データをパイプライン中に保持する動作を実現する。さらに、保持信号４３２が有効である場合か、または、調停結果信号４１１により当該入力データが調停に敗北している場合、後方ステージにデータ保持要求４３３を伝達する。【００７８】
また、図１０の入力データの滞留状況を伝達するための論理４０７は、後方ステージから入力データの滞留状況を監視するための信号４２０を受信し、前記信号４２０のいずれかが予め設定された閾値を超えている場合、すなわち入力側にあるＶＯＱがほぼ満杯の状態であり、当該ＶＯＱの後続データの経路がビジー状態になっている可能性がある場合、次のサイクルに前方ステージへ、入力データの滞留状況を示す信号４２１を伝達する。【００７９】
次に、図１１に、本実施の形態による図１０の基本構成要素をもつ図９の細粒度パイプラインクロスバをデータが通過する様子を例示する。【００８０】
図１１では、８入力８出力の細粒度パイプラインクロスバを構成する８×１パイプラインセレクタのうちの１つを示しており、前記８×１パイプラインセレクタの全入力にデータがあると仮定する。上から入力ポート１番、２番と続き、一番下を入力ポート８番とし、最初の左上の図では入力１番からのデータが優先されて通過している様子を示している。丸印で囲まれた数字がフリットを示しており、丸印をさらに枠で囲んだものがパケットを示す。入力１番のデータが通過している最中も、他の入力からのデータは、細粒度パイプラインセレクタ中を進行できるステージまで進み、待機状態になっており、入力１番が通過したあとに、自身が選択されると出力ポートに向かって進行を開始する。図１１の例では、入力１番のあとに入力５番が、ついで入力３番、入力７番、入力２番、入力６番と続いて進行している様子を示している。【００８１】
図１１の例では、各基本構成要素のセレクタに付随の調停器は、ラウンドロビン制御に従い、パケットの最終フリットが通過後に異なる入力のパケットを選択している。【００８２】
比較のために、図１２に、従来の細粒度パイプラインクロスバをデータが通過する様子を例示する。図１２も８×１パイプラインセレクタの全ての入力にデータがある状況を示している。この細粒度パイプラインクロスバは、図８の構成をとっており、途中ステージにデータを保持することができない。例えば、特許文献４に示される細粒度パイプラインクロスバが図８の構成に相当する。その制御方法は、まず、全入力の調停を実施して勝者となる入力を決定したのち、勝利パケットだけがパイプライン中を進行していくというものである。図１２は、全入力をラウンドロビン制御により入力ポート番号の昇番順に選択している例である。【００８３】
ここで、データの調停と転送の様子をパイプラインチャートにして示す。図１３に、調停と転送がシーケンシャルに実施されている例を示す。【００８４】
すなわち、まず入力の間で調停を行い、勝利データが決定したのちにデータ転送を開始する。この方法は、調停を実施している間にデータを転送できないため、転送スループットが低下する点が問題である。【００８５】
図１４に、調停と転送がオーバラップされて実施されている例を示す。【００８６】
従来は、図１４に示すように、データの調停と転送をある一定時間（本文中ではフェーズと呼ぶ）で区切り、フェーズｋ番目のデータ転送中にフェーズｋ＋１番目の調停をオーバラップして行い、粗粒度のパイプライン処理を実現して入力にデータがある限り連続してデータ転送を行い、転送スループットを低下させないようにする。ただし、この方法は、あるデータだけに着目すると、調停フェーズと転送フェーズは順番に行われており、転送フェーズが始まるまでのレイテンシがあるため、調停から転送までのレイテンシが長い点が問題である。【００８７】
そこで、本発明では、図９に示すデータ保持機能付き細粒度パイプラインクロスバを利用することにより、図１５に示すように、データの調停と転送を同一フェーズで同時に行うことで、図１４に示す調停から転送までのレイテンシが長い問題を解消する。なお、データが図９の細粒度パイプラインクロスバを通過するのにかかるレイテンシは、ステージ数に比例する。ステージ間で調停と転送の動作はオーバラップさせることで転送スループットを確保する。【００８８】
本実施の形態では、基本構成要素の入力セレクタに２×１セレクタ４０１を利用した例を示したが、３×１セレクタ、もしくは４×１セレクタを基本構成要素として、同様の細粒度パイプラインクロスバを構成可能である。【００８９】
次に、図１に戻り、本発明の仮想経路付き細粒度パイプラインクロスバスイッチ１００の全体動作に関して説明する。入力データは、データ内に、２種類のトラフィッククラスＡ，Ｂ（ＡはＢより優先度が高い）と出力ポート番号が記録されているものと仮定する。また、ＴＣＩＱ１０１、ＶＯＱ１０３、ＴＣＯＱ１０２は書き込みポートと読み出しポートを持つデュアルポートメモリで構成する。【００９０】
細粒度パイプラインクロスバスイッチ１００に、データが入力されると、データは、トラフィッククラスに一致するＴＣＩＱ１０１に振り分けられ、書き込まれる。ＴＣＩＱ１０１は、フリット単位でデータを書き込み、エントリの管理はセル単位で行う。【００９１】
ＴＣＩＱ１０１にデータが入力されると、ＴＣＩＱ１０１は読み出し動作に入る。【００９２】
図１６に、ＴＣＩＱ１０１の読み出し動作とＴＣＩＱ１０１に接続されているＶＯＱ１０３への書き込み動作に関するフローチャートを示す。【００９３】
ＴＣＩＱ１０１にデータ（フリット）があり、当該ＴＣＩＱ１０１に接続される全てのＶＯＱ１０３に空きエントリがある場合（ステップＳ１６００）、データ（フリット）を読み出し、当該ＴＣＩＱ１０１のリードポインタを進める動作（ステップＳ１６０１）を繰り返す。読み出したデータは、当該ＴＣＩＱ１０１に接続される全てのＶＯＱ１０３に伝送され、宛先ポート番号が一致するＶＯＱ１０３にのみデータを書き込み、当該ＶＯＱ１０３のライトポインタを進める（ステップＳ１６０２→ステップＳ１６０３）。なお、出力先が複数指定されるマルチキャストの場合、複数のＶＯＱ１０３に同時に書き込みが行われる。該当しないＶＯＱ１０３には書き込みは行われない（ステップＳ１６０４）。      【００９４】
なお、制御は複雑になるが、ステップＳ１６００において、目的の宛先ＶＯＱ１０３の空き状態だけを見て制御する方式もありうる。【００９５】
次に、図１７のフローチャートを用いてＶＯＱ１０３からの読み出し動作を説明する。図１７は、ＶＯＱ１０３の読み出し制御を示すフローチャートである。【００９６】
ＶＯＱ１０３にデータが入力される（ステップＳ１７００）と、当該ＶＯＱ１０３では書き込まれた順にデータの読み出しが行われ、ＶＯＱ１０３のリードポインタが進められる（ステップＳ１７０１）。前記の読み出しデータは、パイプラインクロスバ１０４の該当するパイプラインセレクタ１０５に入力されるが、パイプラインセレクタ１０５の初段ステージの調停に敗北するか、パイプラインセレクタ１０５の前方のパイプラインステージで敗北するか、ＴＣＯＱ１０２が受け付け不能状態にあり、初段ステージのフリップフロップに記録できない場合、当該ＶＯＱ１０３のリードポインタの巻き戻しが行われ、当該読み出しデータの再読み出しが行われる（ステップＳ１７０２→ステップＳ１７０３→ステップＳ１７０１）。前記の読み出しデータがパイプラインセレクタ１０５の初段ステージで勝利し、初段ステージのフリップフロップに記録できる場合、続けて次のＶＯＱ１０３の読み出し動作に入る（ステップＳ１７０２→ステップＳ１７００）。【００９７】
次に、図１８のフローチャートを用いてパイプラインセレクタ１０５の動作を説明する。図１８は、パイプラインクロスバのフリップフロップの保持内容制御を示すフローチャートである。【００９８】
パイプラインセレクタ１０５にデータが入力されると、図１０に示す基本構成要素単位で調停が行われる。ここで、フリップフロップ４０３に有効な保持データがあり、データ保持要求４３０がない場合、当該ステージにデータ入力があれば勝利データをフリップフロップ４０３に記録し（ステップＳ１８０１→ステップＳ１８０２→ステップＳ１８０３）、当該ステージにデータ入力がなければフリップフロップ４０３の少なくとも有効ビットをゼロクリアする（ステップＳ１８０１→ステップＳ１８０２→ステップＳ１８０５）。また、フリップフロップ４０３に有効な保持データがないか、もしくはデータ保持要求４３０がある場合、フリップフロップ４０３は現在の値を保持する（ステップＳ１８０１→ステップＳ１８０４）。【００９９】
ＴＣＩＱ１０１の先にあるＶＯＱ１０３、パイプラインクロスバ１０４はトラフィッククラス毎に独立して存在するため、ある入力ポートからの低優先度データがパイプラインクロスバ１０４内で途中まで進んでいて、他の入力ポートからの時間的に後続の高優先度データがパイプラインクロスバ１０４内でブロックされてしまう状況を避けることができる。【０１００】
パイプラインセレクタ１０５の中を、勝利したデータが次々と通過し、対応するＴＣＯＱ１０２に記録される。当該ＴＣＯＱ１０２が一杯で書き込めない場合には、ＴＣＯＱ１０２は対応するパイプラインセレクタ１０５に対し、図１０中のデータ保持要求４３０相当の信号を渡し、当該ＴＣＯＱ１０２が再度受付可能になるまでデータ入力を抑止する。なお、ＴＣＯＱ１０２は、データを書き込むと自身のライトポインタを進め、データを読み出すと自身のリードポインタを進める。前記ライトポインタとリードポインタの差分が設定した閾値（例えば、ライトポインタとリードポインタの差分がＴＣＯＱ１０２のエントリ数と同じになった場合）に達すると、前記のデータ保持要求４３０相当の信号を有効にする。【０１０１】
ＴＣＯＱ１０２にデータが溜まると、細粒度パイプラインクロスバスイッチ１００から外部へデータを出力する。図１の例では、１つの出力ポートに対し、２つのＴＣＯＱ１０２が接続されているため、優先度の高いＴＣＯＱ１０２Ａにデータがある場合は、常にＴＣＯＱ１０２Ａからデータを出力する。ＴＣＯＱ１０２Ａが空の場合にＴＣＯＱ１０２Ｂからデータを出力する。前記の動作により、重要度の高いデータは重要度の低いデータより先に細粒度パイプラインクロスバスイッチ１００を通過できるようになる。ただし、最悪の場合、ＴＣＯＱ１０２Ｂのデータが異常に長い時間待機させられて、細粒度パイプラインクロスバスイッチ１００を通過できない可能性がある。このため、タイマを設け、ＴＣＯＱ１０２Ｂからの出力が抑止され始めたらタイマをスタートさせ、タイマが設定した閾値に達したときにＴＣＯＱ１０２Ｂのデータ出力を１パケット分有効にすることで、低優先度のデータの通過が異常に遅くなる事態を回避できる。【０１０２】
以上、本発明の実施の形態１による仮想経路付き細粒度パイプラインクロスバスイッチ１００の構成、動作について詳細な説明を行った。上記仮想経路付き細粒度パイプラインクロスバスイッチ１００の構成はあくまで一実施の形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。【０１０３】
本発明の実施の形態１による仮想経路付き細粒度パイプラインクロスバスイッチを用いることで、大容量交換を実現しつつ重要度の高いデータを非重要なデータより小さい低いレイテンシで転送可能なスイッチデバイスを提供可能になる。【０１０４】
（実施の形態２）
本発明によれば、パイプラインクロスバを構成するパイプラインセレクタ内に分散型の軽量の調停器を配置しつつ、パイプライン中でデータ保持をしない、細粒度パイプラインクロスバを構成することも可能であり、この構成を実施の形態２として、実施の形態１との差分をもとに示す。【０１０５】
図１９に、本発明の実施の形態２における細粒度パイプラインクロスバを構成する細粒度パイプラインセレクタを示す。【０１０６】
図１９の細粒度パイプラインセレクタは、入力データを選択するための２×１セレクタ４０１、セレクタ４０１の出力を記録するフリップフロップ４０３、セレクタ４０１、フリップフロップ４０３の制御信号を生成する制御部４１４を基本構成要素とし、前記基本構成要素をツリー状に接続することで実現する。【０１０７】
図２０に、図１９のパイプラインクロスバの構成要素（特に制御部４１４）の詳細を示す。【０１０８】
制御部４１４は、調停器（アービタ）４０５と、消去論理４１６と、入力データの滞留状況を伝達するための論理４０７とから構成される。入力データは調停要求４１０を含み、調停器４０５は、入力データに埋め込まれている調停要求４１０を抽出し、公平な調停を実現するため、データ通過毎にラウンドロビン制御により勝者データを決定して選択信号４１１を生成し、セレクタ４０１の出力を選ぶ。また、調停器４０５は、入力データの滞留状況を監視するための信号４２０を利用し、滞留量が多い場合に優先的に滞留量の多い入力を選択するオプション機能を持つ。【０１０９】
消去論理４１６は、調停器４０５から調停要求および調停結果を示す信号４１２を受け取り、巻き戻し要求生成論理４８０により、当該ステージで敗北した入力に対し消去要求信号４６３を生成し後方ステージへ伝達する。また、出力データの先に繋がれる前方ステージから消去要求信号４６０を受信した場合には、当該ステージのフリップフロップ４０３の値を信号４６２により消去しつつ、巻き戻し要求生成論理４８０が、入力データに接続される後方ステージすべてに消去要求信号４６３を伝達する。【０１１０】
さらに、消去論理４１６は加算器４７２を持ち、読み出しバッファ巻き戻し要求信号４７３を生成する。読み出しバッファ巻き戻し要求信号４７３は、後方ステージがパイプラインセレクタであれば、後方ステージの巻き戻し要求信号４７０に接続され、後方ステージが図１のＶＯＱ１０３であればＶＯＱ１０３の読み出し制御論理に接続される。【０１１１】
なお、消去要求信号４６０と巻き戻し要求信号４７０は、回路のディレイ悪化を避けるために消去論理４１６の内部で一旦フリップフロップ４６１，４７１にそれぞれ保持してから利用する。フリップフロップに保持しながら消去要求信号を伝達すると、消去要求信号がパイプラインセレクタ１０５の入口のＶＯＱ１０３に伝達するまでに複数サイクルかかってしまう。しかしながら、スイッチ内の各セレクタ調停はパケット単位で行い、パケットは十分大きな数のフリットによって構成されており、消去要求信号がパイプラインセレクタ１０５の入口のＶＯＱ１０３に伝達するまでにかかるサイクル数より、パケットを構成するフリットの数の方が一般に大きくなりやすいため、問題とはならない。なお、図２０のフリップフロップ４６１，４７１は、巻き戻し要求生成論理４８０と加算器４７２の出力側に置く変形例も可能である。【０１１２】
加算器４７２は、デフォルトでは数値１（巻き戻し数１を意味する）を巻き戻し要求信号４７３として出力する。ただし、前方ステージから消去要求信号４６０がある場合は、前方ステージからの巻き戻し要求信号４７０に２を足した値を加算した値を巻き戻し要求信号４７３として出力する。１ではなく２を加算するのは、パイプラインを逆向きに巻き戻し要求が進行中にも、大元のＶＯＱではデータ読み出しが続いているためである。【０１１３】
加算器４７２は、たかだかパイプラインセレクタ１０５のステージ数を表現できるまでの値を生成できればよく、図２２の例では最大値５までを計算できればよい。一般に、２Ｎ入力のスイッチを２×１セレクタでパイプラインセレクタとして構成する場合、加算器４７２はたかだか２（Ｎ−１）＋１ bitの計算ができればよいので、回路規模は非常に小さく高速動作が可能である。【０１１４】
消去要求信号４６３と巻き戻し要求信号４７３は、最後にＶＯＱ１０３の読み出し制御論理に到達し、ＶＯＱ１０３のリードポインタ巻き戻しに利用する。ＶＯＱ１０３は最初の要求で巻き戻しを行い、以降の巻き戻し要求をうけつけないため、多重の巻き戻し要求による誤制御は発生しない。【０１１５】
具体例として、図２２に、図２０のパイプラインセレクタ構成要素を利用した８×１パイプラインセレクタの動作例を示す。【０１１６】
８個全ての入力にデータが入力されたと仮定する。サイクル１において、入力１，３，５，７が勝利し、入力２，４，６，８が敗北する。すると、入力２，４，６，８に対して消去要求信号４６３と巻き戻し要求信号４７３として「１」が伝達される。入力２，４，６，８のＶＯＱは、リードポインタを１巻き戻し、以後、読み出し要求が発生するまで読み出し動作を停止する。【０１１７】
サイクル２において、サイクル１で勝利した入力１，３，５，７のうち、入力１，５が勝利し、入力３，７が敗北する。すると、入力３，７を伝達したパイプラインステージに対し、巻き戻し数１の要求が伝達され、さらに図２０の加算器４７２により巻き戻し数１＋２＝３が生成されて、サイクル３に入力３，４，７，８のＶＯＱに伝達される。このうち、入力４，８のＶＯＱは既に読み出し待機状態に入っているので、巻き戻し数３の巻き戻し要求は無視する。入力３，７のＶＯＱのみリードポインタを３巻戻す。【０１１８】
サイクル３において、サイクル２で勝利した入力１，５のうち、入力１が勝利し、入力５が敗北する。すると、入力５を伝達したパイプラインステージに対し、巻き戻し数１の要求が伝達され、さらに図２０の加算器４７２により巻き戻し数１＋２＝３が生成されて、サイクル４において、さらに後方ステージの加算器４７２により巻き戻し数３＋２＝５が生成されて、サイクル５において、入力５，６，７，８のＶＯＱに伝達される。このうち、入力６，７，８のＶＯＱは既に読み出し待機状態に入っているので、巻き戻し数５の巻き戻し要求は無視する。入力５のＶＯＱのみリードポインタを５巻戻す。【０１１９】
サイクル４以降、入力１のデータがパイプラインセレクタ内を次々と通過し始める。ここで、消去要求信号４６３が一旦セットされると解除されるまでセット値を維持する場合、最終段の巻き戻し要求生成論理４８０は、勝者の入力１のデータが通過を始めた時点で消去要求信号４６３を解除する。消去要求信号４６３の解除は、次々と後方ステージに伝達され、最後に全ての巻き戻し要求が解除され、次のデータ入力に備えられる。消去要求信号４６３が、事象が発生したときだけアサートされる信号の場合、前記の解除動作を実施する必要はない。【０１２０】
入力1のデータの末尾のフリットがパイプラインセレクタの初段ステージに到達したところ（図２２の右上図の状態）で、次の全入力からのデータ受付が再開される。図２２の下段では、入力５が勝利し通過していく様子を示している。【０１２１】
以上、全入力からデータが同時に入力される例を説明したが、データが異なるサイクルに入力されても全く同様の操作により、動作可能である。【０１２２】
なお、パイプラインセレクタの最終段は図１に示すＴＣＯＱ１０２に接続されている。ＴＣＯＱ１０２が一杯で受付不能である場合は、その旨をＴＣＯＱフル信号でＶＯＱ１０３に伝達する。ＴＣＯＱフル信号は、パイプラインセレクタ通過中のデータのオーバランを考慮し、ＴＣＯＱの総エントリ数からパイプラインセレクタのステージ数を減じた値を超えたときに有効にする。【０１２３】
図２１に、以上のＶＯＱの読み出し動作をフローチャートで示す。【０１２４】
ＶＯＱ１０３にデータがあり、ＴＣＯＱ１０２が受け付け可能である場合、ＶＯＱ１０３からデータを読み出し、ＶＯＱ１０３のリードポインタを進める（ステップＳ２１００→ステップＳ２１０１）。ステップＳ２１０２において、ＶＯＱ１０３の巻き戻し要求がない場合は、最初の状態に戻り次の動作に備える（ステップＳ２１０２→ステップＳ２１００）。ステップＳ２１０２において、ＶＯＱの巻き戻し要求がある場合は、ＶＯＱ１０３のリードポインタを要求される分だけ巻き戻し、パイプラインセレクタ中で無効化（クリア）されてしまったデータを再度読み出せるようにして、次の読み出し要求があるまで待機する（ステップＳ２１０３→ステップＳ２１０４繰り返し）。次の読み出し要求があるとステップＳ２１０１に遷移し、以下同様の制御を続ける。【０１２５】
以上、実施の形態２の詳細を、実施の形態１との差分によって詳細な説明を行った。実施の形態２の仮想経路付き細粒度パイプラインクロスバスイッチ１００の構成はあくまで一実施の形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。【０１２６】
本実施の形態２のメリットは、実施の形態１と同様の高スループットのパイプラインクロスバを、より少ない軽量な論理で構成できる点である。また、従来のパイプラインクロスバと異なり、パイプラインセレクタ内の制御論理を分散配置しているために、制御論理が簡易化でき、高周波数動作に適している点もメリットである。【０１２７】
（実施の形態３）
実施の形態１、実施の形態２ではパイプラインクロスバをトラフィッククラスの分だけ搭載することで、トラフィッククラス間のデータフローがお互いに影響を与えることを回避し、スループットの低下を避けている。ところが、論理規模はトラフィッククラス数に比例して増加するため、論理規模の増加を削減したい場合には不向きである。そこで、実施の形態３として、パイプラインクロスバをトラフィッククラスより少ない面数用意し、複数のトラフィッククラス間で共用する方式について説明する。【０１２８】
論理規模を最小に抑える場合、ＶＯＱおよびパイプラインクロスバは１面分だけ用意する。【０１２９】
図２３に、２レベルのトラフィッククラスを扱い、トラフィッククラス間でただひとつのパイプラインクロスバ１０４を共有する４×４スイッチ４００の構成例を示す。【０１３０】
各ポートは２組のＴＣＩＱ１０１とＴＣＯＱ１０２を持ち、入力されたデータは、トラフィッククラスにより適切なＴＣＩＱ１０１に保持され、優先度の高いＴＣＩＱ１０１から優先してＶＯＱ１０３に渡される。優先度の低いＴＣＩＱ１０１は、優先度の高いＴＣＩＱ１０１にデータがないときのみ、もしくは優先度の低いＴＣＩＱ１０１にデータが入った後、データを取り出せない時間が設定した閾値を越えたときにのみ、データがパケットの末尾に達するまで取り出しＶＯＱ１０３に渡される。【０１３１】
パイプラインクロスバ１０４の中のパイプラインセレクタ１０５は、図１９に示す実施の形態２と同様の構成である。その構成要素は図２０に示すものと基本的には同一であるが、図２０の調停器４０５が抽出する信号４１０が調停要求だけでなく、データのトラフィッククラスを含み、調停器４０５はトラフィッククラスを考慮して調停を行う点が異なる。トラフィッククラスを考慮した調停とは、優先度の高いトラフィッククラスを通常時、選択し続ける重み付きのラウンドロビンなどである。【０１３２】
パイプラインセレクタ１０５に、図９に示す途中ステージでデータの進行を停止・保持するパイプラインセレクタを用いないのは、途中ステージに優先度の低いデータが詰まっているときに、後続の他入力からの優先度の低いデータが優先度の低いデータに長時間、進行を妨げられうるからである。ただし、ある入力からの優先度の低いデータが、あるＶＯＱ１０３に溜まってしまっている状況では、前記入力から後続の高優先度データが前記低優先度データと同じ宛先である（同じＶＯＱ１０３に溜まる）場合には、高優先度データが低優先度データに進行を妨げられうる。低優先度データが消滅しても回復できる手段がスイッチ外部に設けられている場合は、設定した閾値時間が経過したのちに高優先度データの進行を邪魔している低優先度データを廃棄する手段をとることで高優先度データのスイッチ通過遅延が伸びることを防止できる。【０１３３】
トラフィッククラスを３以上用意するとき、細粒度パイプラインクロスバは２面用意する。そして、重要トラフィッククラスに細粒度パイプラインクロスバのうち１面を専用に割り当て、残りのトラフィッククラスでもうひとつの細粒度パイプラインクロスバで共有する。【０１３４】
以上、実施の形態３の詳細を、実施の形態１と実施の形態２との差分によって詳細な説明を行った。実施の形態３の仮想経路付き細粒度パイプラインクロスバスイッチ４００の構成はあくまで一実施の形態に過ぎず、本発明の技術的思想および技術的範囲から離れることなく、様々な変形が可能である。【０１３５】
本実施の形態３のメリットは、論理規模を大きく増大させることなく、レイテンシ重視のデータと単に宛先に届けばよいレイテンシ非重視（ベストエフォート）のデータを効率よく分離できることである。【０１３６】
（実施の形態４）
実施の形態４では、図１において、ＶＯＱ１０３の読み出し制御、及び、パイプラインクロスバ１０４の制御、及び、ＴＣＯＱ１０２の書き込み制御を、ＴＣＩＱ１０１の読み書き制御、及び、ＶＯＱ１０３の書き込み制御、及び、ＴＣＯＱ１０２の読み出し制御より速いクロックを利用して高速に行う例を示す。どこまで速いクロックにするかは利用するデバイスの半導体プロセスなどに依存する。【０１３７】
実施の形態４は、パイプラインクロスバを構成するパイプラインセレクタ内の構成要素の前後のステージをフリップフロップで完全に分離している実施の形態２に特に適合させやすい。【０１３８】
本実施の形態４によると、パイプラインクロスバ１０４は実施の形態２に比較して、短い時間でＶＯＱ１０３からの入力を消費できる。すなわち、複数の入力が同一の出力を目指して出力ポートの競合が発生する場合にも、出力調停に敗北した入力は、次回の出力機会待機時間を短縮することができるため、出力調停に敗北した入力のＶＯＱ１０３が溢れる可能性が低減し、ひいては細粒度パイプラインクロスバスイッチ１００のスループットの低下を回避できる。【０１３９】
別の言い方をすると、本実施の形態４によれば、図１の細粒度パイプラインクロスバスイッチ１００の内部のパイプラインクロスバ１０４の見かけの交換容量を大きくできるため、細粒度パイプラインクロスバスイッチ１００のスループット低下を防ぐことができる。【０１４０】
（実施の形態５）
実施の形態５は上述の実施の形態２を更に簡素化したハードウエアで実現するものである。以下、実施の形態２との差を中心に説明する。【０１４１】
本実施の形態５では、図２０に示す２×１セレクタの制御部４１４内部において、フリップフロップ４０３の内容を消去する信号４６２と加算器４７２が不要である。代わりにパイプラインクロスバ１０４へデータを入力するＶＯＱ１０３に、パイプラインクロスバ１０４通過前の先頭データの読出しポインタを記録する巻き戻しバッファを具備する。【０１４２】
この実施の形態５におけるＶＯＱ１０３とパイプラインクロス場１０４の動作に関して説明する。各入力からのデータは、対応するＶＯＱ１０３に記録され、同時にＶＯＱ１０３中でのデータの先頭位置がＶＯＱ１０３の前記巻き戻しバッファに記録される。前記データがパイプラインクロスバ１０４を通過する場合、宛先調停に敗北した時点で調停敗北信号（図２０の信号４６３に相当）が当該ＶＯＱ１０３まで戻されるれる。【０１４３】
前記調停敗北信号を受信したＶＯＱ１０３は、パイプラインクロスバ１０４へのデータ出力を停止し、現在の読出しポインタを前記巻き戻しバッファに記録されている読出しポインタで置き換える。宛先調停に勝利したデータがパイプラインクロスバ１０４を通過したのち、当該ＶＯＱ１０３は、前記の置き換えた読出しポインタからデータの読出しを再開する。【０１４４】
また、パイプラインクロスバ１０４中の図２０に示すフリップフロップ４０３では、出力データ側から調停敗北信号４６０を受信しても、フリップフロップ４０３の内容を消去する必要は無い。これは、出力データ側の次のステージにあたるセレクタ４０１には宛先調停の勝者のデータが入力されるように固定され、敗北側の入力データは参照されることが無く、どのようにデータが載っていてみ影響を与えないためである。【０１４５】
以上、実施の形態２との差分を説明することで実施の形態５を説明した。この実施の形態５についても、仮想経路付き細粒度パイプラインクロスバスイッチ４００の構成は一例に過ぎず、本発明の技術思想および技術的範囲から離れることなく、様々な変形が可能である。【０１４６】
本実施の形態５のメリットは、実施の形態２よりも論理規模を削減させながら実施の形態２と同様なデータ交換を行いえる点である。【０１４７】
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【０１４８】
本発明により、大容量交換を実現しつつ重要度の高いデータを重要度の低いデータより小さいレイテンシで転送することが可能なスイッチファブリックを実現できる。前記スイッチファブリックを内包するルータなどのネットワーク転送装置やサーバ装置、複数のディスクアレイを接続するストレージ装置などに利用することが可能である。
【図１】
0004566261.tif 000002
【図２】
0004566261.tif 000003
【図３】
0004566261.tif 000004
【図４】
0004566261.tif 000005
【図５】
0004566261.tif 000006
【図６】
0004566261.tif 000007
【図７】
0004566261.tif 000008
【図８】
0004566261.tif 000009
【図９】
0004566261.tif 000010
【図１０】
0004566261.tif 000011
【図１１】
0004566261.tif 000012
【図１２】
0004566261.tif 000013
【図１３】
0004566261.tif 000014
【図１４】
0004566261.tif 000015
【図１５】
0004566261.tif 000016
【図１６】
0004566261.tif 000017
【図１７】
0004566261.tif 000018
【図１８】
0004566261.tif 000019
【図１９】
0004566261.tif 000020
【図２０】
0004566261.tif 000021
【図２１】
0004566261.tif 000022
【図２２】
0004566261.tif 000023
【図２３】
0004566261.tif 000024