【手続補正書】
【提出日】平成17年3月22日(2005.3.22)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】          明細書
【発明の名称】      データパケットのルーティング用スイッチ
【特許請求の範囲】
【請求項１】  宛先アドレッシング情報と優先情報を持つデータパケットのルーティング用スイッチであって、
入力源からのデータパケットを受信する複数の入力ポートと出力宛先にデータパケットを送信する複数の出力ポートを有し、
複数の入力ポートで受信されたデータパケットを複数の出力ポートに送る論理群のネットワークを有し、前記論理群のネットワークは交差する論理群の列と論理群の行を形成し、論理群の行はデータパケットを受信する出力列を選択する論理を含み、論理群の列は前記入力ポートで受信したどのデータパケットを前記出力ポートに送出するかを決定するために優先情報に従いデータパケットを順序付ける論理を含む、
宛先アドレッシング情報と優先情報を持つデータパケットのルーティング用スイッチ。
【請求項２】  論理群の各行が、各行に連結されている入力ポートから送信されるデータパケットの宛先アドレッシング情報を、複数の出力ポートのアドレスに整合する論理を含むことを特徴とする、請求項１記載のスイッチ。
【請求項３】  論理群の各列が、交差する論理群の行から受信される「ｋ」個までのデータパケットを、各列につながっている出力ポートに送る論理を含む、請求項１記載のスイッチ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は一般に高速通信ネットワークに関し、特に、ＡＴＭ( 非同期転送モード）スイッチにおけるスイッチングファブリックとして使用するに好適な自動調停クロスバースイッチに関する。
【０００２】
【従来の技術】
「無閉塞」のスイッチングファブリックでは、多数の入力ポートや出力ポートに対し規模を変化することが困難になりがちである。例えば、クロスバースイッチは、各々の入力ポートが各々の出力ポートに直接に接続されているスイッチングファブリックを有し、従って無閉塞である。しかし、これらのクロスバースイッチには、クロスバーファブリックの面積がポートの数の２乗まで増大するという難点があった。これに対し、バッチャ（Ｂａｔｃｈｅｒ）ソーティングネットワークとバニャン（Ｂａｎｙａｎ）ルーティングネットワークを含むバッチャ−バニャン（Ｂａｔｃｈｅｒ−Ｂａｎｙａｎ）ファブリックの一般的方式では、スイッチングファブリックの入力ポートと出力ポートの数が増加するにつれ、前記のクロスバースイッチ方式よりも必要とする回路が徐々に減少する。しかし、回路の減少は、バッチャ−バニャンスイッチングファブリックをより複雑にし、クロスバーファブリックに関連した故障隔離をより困難にする。
【０００３】
【発明が解決しようとする課題】
従って、容易に規模を変化でき、増大する帯域幅に対し適切に機能する能力のある、新たな改良されたスイッチングファブリックを提供することは有益である。さらに、調停機能をスイッチングファブリックに組み入れる、統合された方式の自動調停スイッチングファブリックを提供することは有益である。従って、この統合された方式とは変化する入力ポートの数に関して容易に規模を変化できるものである。さらに、このような統合された方式は簡単で小さく、回路部分を最小にでき有益である。この小さいサイズはスイッチングファブリックを経済的に製造するにも有益である。
【０００４】
【課題を解決するための手段】
本発明によれば、宛先アドレッシング情報と優先情報を持つデータパケットのルーティング用スイッチが提供される。このスイッチは、入力源からデータパケットを受信する複数の入力ポートと、出力宛先へデータパケットを送信する複数の出力ポートを含む。
【０００５】
本発明の態様の一つによれば、論理群のネットワークは、複数の入力ポートで受信したデータパケットを複数の出力ポートへ送る。論理群のネットワークは、交差する論理群の列と論理群の行を形成する。論理群の行は、宛先アドレッシング情報に従って、複数の入力ポートで受信したデータパケットをソートする論理を含み、論理群の列は、どのデータパケットを出力ポートに送るかを決定するために、優先情報に従って、宛先アドレッシング情報によりソートされたデータパケットを順序付けする論理を含む。
【０００６】
本発明の他の様態によれば、各論理群は論理群の単一の列と論理群の単一の行に存在する。論理群の各行は、その行に連結された入力ポートから送信されたデータパケットの宛先アドレッシング情報を、複数の出力ポートのアドレスに整合させる（突き合わせる）論理を含む。論理群の各列は、交差する論理群の行からその列に連結された出力ポートが受信した、「ｋ」個までのデータパケットを送る論理を含む。上記の論理群の列と行は、スイッチの出力ポートに送ることに成功したデータパケットを識別する論理を含む。
【０００７】
【発明の実施の形態】
Ａ．システムの概要
図を用いて説明するが、この図示は本発明の実施の形態を説明するためのものであり、この実施の形態に限定するものではない。図は本発明における自動ルーティング・自動調停ＡＴＭスイッチ５を示す。スイッチ５は「セル」と呼ばれる固定サイズのデータパケットを、入力ポート６からクロスバースイッチングファブリック１０を介して出力ポート８へ送るようになっている。ＡＴＭセルがスイッチングファブリック１０に入力される前に、入力源から宛先へセルを移動させるため、入力源（図示せず）が「仮想回線」として知られる固定経路を決定させる。スイッチのネットワークを介してセルを送る一つの方法は、一跳びごと（ｈｏｐ−ｂｙ−ｈｏｐ）のアドレッシング方式を用いるものである。このアドレッシング方式によれば、いったんセルがスイッチ５の一つの入力ポートで受信されると、セルのヘッダからの仮想回線識別子（ＶＣＩ）が、ＶＣＩテーブルにおいて置き換えＶＣＩと出力ポートアドレスを識別するために使用される。セル用のＶＣＩテーブルから識別された出力アドレスは、どの出力ポート８がスイッチファブリック１０を介してセルを送るか指定する。
【０００８】
本発明の実施の形態におけるスイッチ５が、ＡＴＭネットワーク上での動作に限られず、その代わりにほとんどのパケット交換ネットワーク上で動作できるよう変更され得ることは、当業者が認め得る。また、本発明はスイッチ５が固定サイズのデータパケット（すなわちＡＴＭセル）を送ることを必要とせず、その代わりに様々なサイズのデータパケットを送ることができる点も認められる。
【０００９】
図１は、スイッチ５のスイッチングファブリック１０の構成を示す。スイッチングファブリック１０は、「Ｎ」を整数としたとき入力行１５と出力列群１６の「Ｎ×Ｎ」のアレイに構成される。Ｎ個の入力行１５の各々は入力ポート６（すなわちＩ［１］．．Ｉ［Ｎ］）に連結され、Ｎ個の出力列群１６の各々は出力ポート８( すなわちＯ［１］．．Ｏ［Ｎ］) に連結される。入力行１５の各々と出力列群１６の交点には論理群１８がある。スイッチングファブリック１０の各論理群１８は、アドレッシング論理、アービトレイション論理( 或いはルーティング論理) 及び応答論理を含む。一般に、アドレッシング論理は、データパケットが出力列群の連結されている出力ポートに送られるようになっているか否か確認する。アービトレイション論理は、データパケットが指定された出力ポートに送られるスイッチサイクル中に、同一の出力ポートを求め合う入力ポート同士間の競合を解決する。応答論理は、データパケットを指定された単数又は複数の出力ポートに送ることに成功したか否かを示す信号を入力ポートに送る。ここでスイッチサイクルは、データパケットを入力ポート６からスイッチングファブリックを介して出力ポート８に送るに十分なビットサイクルを持つよう画定されている。
【００１０】
図２は、図１の参照番号１９の部分である論理群の一般的な構成を示す。特に、各論理群１８は、論理ブロックＢ［ｉ, ｊ］（１）、Ｂ［ｉ, ｊ］（２）、Ｂ［ｉ, ｊ］（３）及びＢ［ｉ, ｊ］（４）から成る。スイッチングファブリック１０における各論理ブロック２２は、インデックス「ｉ」、「ｊ」および「ｍ」によってアドレス可能であり、「ｉ」は入力行１５に連結された入力ポート６を識別し、「ｊ」は出力列群１６に連結された出力ポート８を識別し、「ｍ」は出力群の出力列２０（すなわちＢ［ｉ, ｊ］（ｍ））を識別する。入力ポート６は、データパケットを指定された出力ポートに送ることに成功したと識別されるまで、入力源から受信したデータパケットを記憶しておくためのバッファを含む。
【００１１】
入力ポート６におけるキューブロッキングのヘッダが、スイッチのスループット全体で１グロス分効率低下することは広く知られている。各スイッチサイクルがキューブロッキングのヘッダを最小にする、係数「ｋ」倍による各出力ポートのスピードアップについての見解は、米国特許Ｎｏ．５，３０５，３１１に開示されている。出力ポート当たりのこの「ｋ」倍のスピードアップにより、ｋ＝１（すなわち入力キュー作成のみのスイッチ）でほぼ５８％から、ｋ＝２でほぼ８９％まで、またｋ＝４以上でほとんど１００％までスループットを増加させる。本発明は図１及び２に示すように、「ｋ」個の出力列２０を持つ各出力列群１６を定義することで、スピードアップを達成する。すなわち、各出力ポート８は「ｋ」個の出力列２０につながれており、従って、各スイッチサイクルで「ｋ」個までのデータパケットを受け取ることができる。特に、各出力ポート８は、ここでＯ［ｊ］（１），Ｏ［ｊ］（２）．．Ｏ［ｊ］（ｋ）と定義されている「ｋ」個の出力列２０につながれている。従って、「ｋ」個の出力列２０を持つスイッチングファブリックは、論理群１８当たり「ｋ」個の論理ブロック２２（すなわちＢ［ｉ，ｊ］（１），Ｂ［ｉ，ｊ］（ｍ）．．Ｂ［ｉ，ｊ］（ｋ））を持つ。さらに、出力ポート８は、スイッチサイクル中に出力ポートで出力列２０を介して同時に受け取られるキュー作成データパケット用のバッファを含む。バッファは、一つを超えるデータパケットがスイッチサイクル中に一つの出力ポートで受け取られるとき、ネットワーク（図示せず）の隣接リンクを介して送られるまでに、これらのデータパケットのいくつかを記憶することを保証する。
【００１２】
図３は、スイッチングファブリックの動作の３段階を示したフロー図である。はじめにステップ１００において、スイッチングファブリック１０は、入力ポート６でバッファされたデータパケットの指定された出力アドレスが、出力列群１６のアドレスに突き合わされているとき、アドレッシング段階で作動する。ステップ１０２において、スイッチングファブリックはルーティング或いはアービトレイション段階で作動する。アービトレイション段階では、出力列群１６に整合するアドレスを持つデータパケットが、出力列群の連結されている出力ポート８のために調停を行う。ステップ１０４において、スイッチングファブリック１０は、指定された単数又は複数の出力ポートへのデータパケットの送信が成功したかどうかを知らせる信号を入力ポートが受信するとき、応答段階で作動する。指定された単数又は複数の出力ポートへの送信に成功しなかったデータパケットは、次のスイッチサイクルの間、スイッチングファブリック１０に再度依頼される。動作の３段階それぞれを詳しく述べた発明の実施の形態は以下に順番に検討する。
【００１３】
Ｂ．アドレッシング論理
図４は、スイッチングファブリック１０のアドレッシング段階を実行するアドレッシング論理を含む、論理ブロック２２同士の間のコネクションのブロック図を示す。スイッチサイクルの最初に、入力源から受信され入力ポート６に記憶されたデータパケットが、同期的にスイッチングファブリック１０に送られる。前述したように、データパケットのヘッダにおいて示されたルーティング情報は、データパケットが送られるべきスイッチ５の指定された出力ポート８を、ＶＣＩテーブルにおいて識別する。データパケットは、データパケットがマルチキャスト（同報通信）或いはユニキャスト（単一通信）か否かによって、一つあるいは複数の出力ポート８に送られる。
【００１４】
アドレッシング段階では、入力線２４上で逐次送られる各データパケットの出力ポートアドレスは、アドレス線２６上で垂直に送られる各出力列群１６のアドレス（すなわちＡ［ｊ］）に整合される。特に、アドレッシング段階のあいだ各入力ポート６は、入力線２６を介して出力ポートアドレスベクトル、優先ベクトル及びＡＴＭセルのようなデータパケットを逐次送信する。スイッチングファブリックにおける各入力線２４は、入力行１５を形成するために、入力ポート及び各出力列群１６からの論理群１８に連結されている。スイッチサイクルの初めにおいて、バッファされたデータパケットを持たない入力ポート６は、スイッチ５の出力ポート８のどのアドレスにも整合しない出力ポートアドレスを持つ、アイドルパケットを送信する。各入力ポート６が入力線２４に沿ったアドレスベクトルを送信すると同時に、各出力ポート８はアドレス線２６（すなわちＡ［ｊ］）に沿ってアドレスを持つアドレスベクトルを逐次送信する。各アドレス線２６は各入力行１５の論理群１８を出力ポート８と連結する。入力線２４とアドレス線２６を介してアドレスベクトルを同時に受信するあいだ、各論理群１８は出力ポートアドレスが等しいか否かを決定する。アドレス線２６のない代わりの実施の形態では、論理群１８に組み込まれたアドレスベクトルと、入力線２４を介して受信されたアドレスベクトルを突き合わせることにより、この決定がなされる。各論理群１８に組み込まれたアドレスベクトルは、その論理群が連結されている出力ポートのアドレスに対応する。
【００１５】
図５はスイッチングファブリック１０の動作がアドレッシング段階にある場合の、各論理ブロック２２内で作動する有限状態機械のさまざまな状態を定義する。図５に示されているように、２つの状態（すなわち「ＭＡＹＢＥ」状態と「ＮＯ」状態）があり、新しいスイッチサイクルの初めに「ＭＡＹＢＥ」状態に初期化された後に、論理ブロック２２が入力される。初期化の後、論理群１８の「ｋ」個の論理ブロック２２は、入力線２４上で水平に送信されたアドレスビットがアドレス線２６上で送信されたアドレスビットに整合するとき（すなわちＩ［ｉ］＝Ａ［ｊ］）、「ＭＡＹＢＥ」状態から移行しない。しかし、論理群１８の「ｋ」個の論理ブロック２２は、アドレスビットが等しくないとき（すなわちＩ［ｉ］≠Ａ［ｊ］）、「ＮＯ」状態に移行する。スイッチングファブリックのアドレッシング段階を実行する有限状態機械のより詳細な説明は、米国特許Ｎｏ．５，６０２，８４４に開示されている。
【００１６】
例えば、入力ポートＩ［ｉ］がバイナリアドレスベクトル「１０１０」を送信し、アドレス線Ａ［ｊ］がバイナリアドレスベクトル「１０１１」を送信されたと仮定する。本例のアドレスベクトルは４ビットであるので、アドレス段階を完了させる長さは４ビットサイクルである。動作においては、入力ポートＩ［ｉ］とアドレス線Ａ［ｊ］は、各ビットサイクルが最上位のビットで始まるアドレスビットを、入力ポートＩ［ｉ］とアドレス線Ａ［ｊ］に連結されている論理ブロック２２に送信する。本例では、有限状態機械が「ＮＯ」状態に移行するときに最下位のビットが受信されるまでは、論理ブロック２２の有限状態機械は「ＭＡＹＢＥ」状態のままである。しかし、アドレスが等しかった場合は有限状態機械は「ＭＡＹＢＥ」状態のままとなる。
【００１７】
Ｃ．アービトレイション論理
これまでに述べてきたように、各入力ポートはスイッチサイクル中に、アドレスベクトル、優先ベクトル及びデータパケットを逐次送信する。スイッチサイクルのアドレッシング段階後に、各入力ポートからの出力ポートアドレスは各論理群１８に送信されている。スイッチサイクルのアービトレイション段階で、優先ベクトルは各論理群によって受信され評価される。
【００１８】
データパケットの優先順位を表す値は、スイッチサイクルの初めにおいて指定され、アドレスベクトルに引き続いて送信される優先ベクトルに挿入される。初期優先値は、データパケットのヘッダにおいて示される優先距離（ｐｒｉｏｒｉｔｙ ｍｅｔｒｉｃ）からの優先ベクトル内に指定される。例えば、ＡＴＭセルヘッダは、トラフィックの異なるクラスを示す優先距離を含む。トラフィックの異なるクラスは、例えばリアルタイムトラフィックと最高任務（ｂｅｓｔ ｅｆｆｏｒｔ）トラフィックを区別する。データパケットをスイッチサイクル中にスイッチングファブリックを介して送ることに失敗した場合、優先ベクトル内の優先値は増加するか、そうでない場合はスイッチングネットワークに再度依頼する前に次のスイッチサイクル中に上記のデータパケットのために変更される。
【００１９】
図６は、スイッチングファブリック１０のアービトレイション段階を実行するアービトレイション論理を含む論理ブロック２２同士の間のコネクションを示す。アドレス段階中に出力列群１６へのアドレスに成功したデータパケットは、優先順序の高いデータパケットに遭遇することなく、アービトレイション段階中に出力列２０に沿って垂直に送られる。２つのデータパケットの２つの優先ベクトルが論理ブロック２２において出会ったとき、２つのデータパケットの優先順位の高い優先ベクトルが出力列２０に沿って垂直に送られ、優先順位の低いデータパケットが論理群１８の中で水平に送られる。上記の垂直及び水平のルーティングは、指定された優先順位に従って、同一の出力ポートにあるアドレスを有するデータパケットをソートする。
【００２０】
図７は、１つの論理ブロック２２と、アービトレイション段階中に作動する前記論理ブロックのコネクションを示す。論理ブロック２２（すなわちＢ［ｉ，ｊ］（ｍ））は、入力水平コネクション２８（すなわちＨ［ｉ，ｊ］（ｍ−１））と出力水平コネクション３０（すなわちＨ［ｉ，ｊ］（ｍ））を持つ。論理群１８の論理ブロック２２は、図６に示したように入力行１５の一部となるよう水平に直列に接続されている。しかし、論理ブロック２２同士の間の水平コネクション２８及び３０は、各出力列群１６を超えて延びることはない。特に、入力行１５内の最左入力水平コネクション２８（すなわちＨ［ｉ，ｊ］（０））は入力線２４に連結され、入力行１５内の最右出力水平コネクション３０（すなわちＨ［ｉ，ｊ］（４））で終結する。更に、各出力列２０の論理ブロック２２は、入力垂直コネクション３２（すなわちＶ［ｉ，ｊ］（ｍ−１））と出力垂直コネクション３４（すなわちＶ［ｉ，ｊ］（ｍ））により、論理群１８間で直列に接続されている。これらの垂直接続論理群は図６に示すように出力列２０をなす。
【００２１】
再度図６を用いて説明すると、アービトレイション段階中で、１スイッチサイクル中に、２つ以上の入力ポートがデータパケットを同一の出力ポートに送ろうとした場合、競合は複数の出力ポート８の間で解決される。各出力列群１６は出力列群１６に連結されている出力ポートの独立調停装置として働く。言い換えると、各出力列群１６は、アービトレイション段階で１出力ポートに向かうデータパケット同士の間で個々に調停を行う。要するに、アドレッシング段階とアービトレイション段階は、スイッチサイクル中に出力ポートに送られるデータパケットを識別するために、出力ポートアドレスとデータパケット優先順位にそれぞれ従って、連続してデータパケットをソートする。
【００２２】
特に、アドレス段階中に出力列群Ｏ［ｊ］のアドレスに整合する出力ポートアドレスを持つ入力ポートＩ［ｊ］から送信されたデータパケットは、アービトレイション段階中に論理ブロック（すなわちＢ［ｉ，ｊ］（１））に初めに送られる。出力列２０の各論理ブロック２２において、データパケットを水平に送るか垂直に送るかの決定がなされる。データパケットが水平に「ｋ」個より多くの論理ブロック２２まで送られるあるいは移される場合は、論理群１８の「ｋ」番目の論理ブロック２２の出力水平コネクション３０（すなわちＨ［ｉ，ｊ］（４））が終結するので、データパケットを指定された出力ポートに送ることは成功しない。すなわち、論理ブロックＢ［ｉ，ｊ］（４）から水平に送られたデータパケットは、現在のスイッチサイクル中に落とされ、次のスイッチサイクル中に再送信される。これまでに述べてきたように、現在のスイッチサイクル中に送信に失敗したデータパケットの優先順位は、データパケットが指定された出力ポートに届く可能性を高めるために、次のスイッチサイクル中に上昇する。
【００２３】
図８は、組合せ論理２１と、アービトレイション段階を実行するスイッチングファブリック１０の各論理ブロック２２内で作動する有限状態機械２３を示す。図９は、図８に示した有限状態機械２３の状態遷移図である。図９に示したように、組合せ論理２１は、有限状態機械２３の現在の状態に従って３状態のうちの１つにおいて作動する。有限状態機械２３の３状態は、「ＮＯ」、「ＭＡＹＢＥ」及び「ＹＥＳ」である。有限状態機械は「ＭＡＹＢＥ」状態に初期化される。データパケットの優先ベクトルが入力線２４に沿って逐次送られるので、論理ブロック２２はどのデータパケットがより高い優先順位を持っているのか常に即座に決定できるとは限らないため、「ＭＡＹＢＥ」状態が存在する。従って、水平及び垂直コネクションから受信した優先ビットが一致する限りは、論理ブロック２２は「ＭＡＹＢＥ」状態のままとなる。有限状態機械が「ＮＯ」或いは「ＹＥＳ」状態のときは、入力垂直コネクション３２（すなわちＶ［ｉ，ｊ］（ｍ−１））に沿って垂直に、また入力水平コネクション２８（すなわちＨ［ｉ，ｊ］（ｍ−１））に沿って水平に送られたデータパケットの優先順位は既に決定されている。
【００２４】
中間にある「ＭＡＹＢＥ」状態では、優先順位の決定ができないとき、有限状態機械２３の次の移行の前に、図８に示した組合せ論理２１が現優先ビットを即座に調停して送る。アービトレイション段階の最後で有限状態機械が「ＭＡＹＢＥ」状態のままである場合、垂直に送られたデータパケットは、水平に送られたデータパケットと同一の優先順位を持つ。このようにデータパケット同士間の優先順位が同じであるという問題は、データパケット優先ベクトルが完全に受信された後、有限状態機械が「ＭＡＹＢＥ」状態から「ＹＥＳ」状態に移行することで、水平に送られたセルの方が選ばれて解決する。また、優先順位が同じである問題が垂直に送られたセルの方を選んでも解決することは、当業者は理解し得る。
【００２５】
要約すると、図１０は有限状態機械２３の３状態それぞれ（すなわち、ＭＡＹＢＥ，ＮＯ及びＹＥＳ）の、論理ブロック２２内で作り出された仮想コネクションを示す。「ＭＡＹＢＥ」状態では、優先順位の決定がなされなかったとき、垂直及び水平に送られたデータパケットからのビットは、同一であるため垂直及び水平に送られる。水平に送られたデータパケット及び垂直に送られたデータパケットの間で、いったん優先順位の決定がなされたら、有限状態機械２３は「ＮＯ」状態または「ＹＥＳ」状態に移行する。「ＮＯ」状態では、図８に示した組合せ論理２１が、入力水平コネクション２８と出力水平コネクション３０との間の仮想コネクションと、入力垂直コネクション３２と出力垂直コネクション３４との間の仮想コネクションを定義する。「ＹＥＳ」状態では、組合せ論理２１が、入力水平コネクション２８と出力垂直コネクション３４間の仮想コネクションと、入力垂直コネクション３２と出力水平コネクション３０間の仮想コネクションを定義する。図１１及び１２は、アービトレイション段階中に水平及び垂直にデータパケットを送る論理群１８内で組み合わされた、さまざまな論理ブロック２２の例を示す。
【００２６】
Ｄ．応答論理
図１３は、スイッチングファブリックの応答段階で作動するスイッチングファブリック１０の論理ブロック２２同士間のコネクションのブロック図である。アービトレイション段階の終了の後、入力ポートは、データパケットをスイッチの指定された出力ポートに送ることに成功した或いは成功しなかったことを示す、応答信号を受信する。すなわち、応答段階では、スイッチングファブリック１０を介しスイッチの指定された出力ポートにデータパケットを送ることに成功したか否かを示す信号を、入力ポート６が応答線３８を介して受信する。図１に示したように、アービトレイション段階の最初に出力列群の受信したデータパケットが最大インデックス値（Ｎ）を持つ入力行に伝達されるとすぐに、応答段階が開始される。従って、アービトレイション段階が現在のスイッチサイクル中に出力ポートへのアクセスに成功したデータパケットのデータのルーティングを完了する間に、応答段階が作動する。
【００２７】
図１４は、スイッチングファブリック１０の応答段階で作動する一つの論理ブロック２２とそのコネクションを示す。複数の論理ブロック２２は出力列群において垂直応答コネクション３６によって互いに連結されている。さらに、各出力ポート６は、論理ブロック２２の入力行１５において水平応答線３８により論理ブロック２２に連結している。例えば、データパケットが宛先出力ポートに正確に送られるとき、入力ポートＩ［ｉ］は応答線３８から「１」に等しい応答信号Ｓ［ｉ］を受信する。これに対し、データパケットを宛先出力ポートに送ることに成功しないとき、入力ポートＩ［ｉ］は「０」に等しい応答信号Ｓ［ｉ］を受信する。現在のスイッチサイクル中に宛先出力ポートに送ることに成功しなかったデータパケットは、次のスイッチサイクル中にスイッチングファブリック１０に再度依頼される。
【００２８】
図１５は、スイッチサイクルの応答段階中の論理ブロック２２内で作動する組合せ論理３５と有限状態機械２３を示す。応答段階の最初に、入力行Ｉ［Ｎ］（すなわち最大インデックス値（Ｎ）を持つ入力行）における論理ブロックへの垂直信号「Ｕ」は、「０」に初期化される。（入力行Ｉ［Ｎ］は図１に示すように、スイッチ５の出力ポート８に直接連結されている入力行である。）スイッチングファブリック１０の各論理ブロック２２における組合せ論理は、スイッチサイクル中に宛先出力ポートに送ることに成功した「ｋ」個の最高優先順位データパケット用に、応答信号「Ｓ」を発生する。さらに、組合せ論理は、垂直信号「Ｕ」が次に続く入力行１５（すなわちＩ［Ｎ］，Ｉ［Ｎ−１］，Ｉ［Ｎ−２］，．．．）へ伝達されることを保証する。動作中は、応答信号に転換されるまで垂直信号は「０」のままである。言い換えると、入力ポートの水平応答信号「Ｓ」は、対応する入力行１５の論理群１８が「１」に移行する垂直信号「Ｕ」を持つまで、「０」のままである。さらに、水平「Ｕ＝０」信号は右から左の順序で水平応答信号に転換するので、「Ｕ」信号は論理群の中では常に単調である。
【００２９】
出力ポート８へのデータパケット送付の応答以外には、応答論理は出力ポートフローコントロールの形態としても働く。フローコントロールを提供することで、スイッチサイクル中に受信するデータパケットの数を各出力ポート８で独立に制限できる。例えば、出力ポート８は、出力ポートのバッファがいっぱいであるとき、スイッチサイクル中に受信するデータパケットの数を制限するのにフローコントロールを使用することができる。フローコントロールとして応答論理を使用するには、出力ポートがスイッチサイクル中に受け取りたいデータパケットの数によって、出力ポートが入力行Ｉ［Ｎ］における論理ブロックの「ｋ」個の垂直信号「Ｕ」の一部あるいはすべてを、「０」の代わりに「１」に初期化する。入力行Ｉ［Ｎ］における論理ブロックの「０」に初期化された垂直信号「Ｕ」の数は、出力ポートがスイッチサイクル中にいくつのデータパケットを受け取るかを指示する。出力ポートが「ｋ」個より少ないデータパケットを受け取るとき、入力行Ｉ［Ｎ］の「ｋ」個の垂直信号「Ｕ」は右から左へゼロから１の単調な順序付けに初期化される。前記の単調な順序付けは最高の優先順位を持つデータパケットを最初に受信することを保証する。
【００３０】
前述したように、出力列群１６の各論理ブロック２２の有限状態機械２３は、アービトレイション段階の最後では「ＹＥＳ」状態あるいは「ＮＯ」状態のどちらかである。図１１と図１２の２つの例に示したように、論理ブロック２２の状態は、出力列群の中で送られたデータパケットが水平に送られるか垂直に送られるかを指示する。より高い優先順位を持つデータパケットは垂直に送られ、スイッチサイクル中に「ｋ」個の論理ブロック２２よりも多く水平に送られたデータパケットは、次のスイッチサイクル中に再度依頼されなくてはならないのである。
【００３１】
応答段階の動作中は、組合せ論理３５は論理群１８の出力列２０における「０」に等しい値を持つ最右垂直信号「Ｕ」を検出する。その後、論理ブロックの状態が「ＹＥＳ」状態である場合、組み合わせ論理３５は、入力行の垂直信号「Ｕ」を「１」に等しい値に変え、出力列２０の応答信号「Ｓ」を「１」に等しい値に変える。論理ブロックの組合せ論理３５は、垂直信号「Ｕ」を変更することも、論理ブロックが「ＮＯ」状態のときに「１」に等しい水平応答信号「Ｓ」を出すこともない。実際には組合せ論理３５は、論理群１８において「０」に等しい値を持つ垂直信号「Ｕ」が、スイッチファブリック１０のより高い優先順位の行に送られることを保証する。
【００３２】
アービトレイション段階が図１５に示した組合せ論理３５を用いて正確に作動するために、アービトレイション段階論理は、論理群１８の論理ブロック２２の状態が単調な一連の「ＹＥＳ」状態および「ＮＯ」状態（例えばＮＯ，ＹＥＳ，ＹＥＳ，ＹＥＳ−図１１参照）を定義するよう、競合するデータパケットをソートする。単調な順序付けは、同一の出力ポートに向かうより低い入力インデックスを持つより高い優先順位のデータパケットと同数の、シーケンスの最初における「ＮＯ」状態の論理ブロックがあることを保証する。前述したように、データパケットにより低い入力インデックスを持つより低い優先順位のセルが現在の入力行へ移されたとき、「ＹＥＳ」および「ＮＯ」状態のシーケンスの論理ブロックは「ＹＥＳ」状態にある。論理群に入力されたパケットがすべて優先順位によってソートされるので、「ＹＥＳ」および「ＮＯ」状態は単調に順序付けされる。論理群１８の「ＹＥＳ」および「ＮＯ」の両状態および「Ｕ」状態が論理群１８において単調に順序付けされるので、利用可能な出力ポートの数と、より低い入力インデックスを持つより高い優先順位の入力ポートの数を比較することは簡単である。
【００３３】
図１６および図１７は、アービトレイション段階を完了した２つの異なる論理群を示す。図１６および図１７は、アービトレイション段階を完了した図１１および図１２に示した論理群に対応する。最初に述べたように、ゼロ値を持つ最右入力垂直信号「Ｕ」が論理群１８において定められている。最右「Ｕ」信号は図１６および図１７の４６で示されている。図１６は、データパケットを応答線Ｓ［ｉ］につながっている入力ポートから送ることに成功した例を示す。４８で示される論理ブロックは「ＹＥＳ」状態にあり、水平応答信号「Ｓ」および垂直信号「Ｕ」は「０」に等しい値から「１」に等しい値に変更される。対照的に図１７は、データパケットを応答線Ｓ［ｉ］につながっている入力ポートから送ることに成功しなかった例を示す。ゼロである最右垂直信号「Ｕ」（４６で示されている）を持つ論理ブロックが「ＮＯ」状態にある論理ブロック（４９で示されている）に入力されるため、水平応答信号「Ｓ」および垂直信号「Ｕ」のどちらも最初の「０」値から変更されない。
【００３４】
Ｅ．結論
要約すると、本発明におけるスイッチの構成は大規模スイッチの開発に使用するのに有益である。本発明のスイッチングファブリックは規則正しく繰り返し作動するので、有益であることは理解され得る。本発明のスイッチには変化するポートの数に対して容易に規模を変化できる有益な点があるので、規則正しく繰り返し作動するファブリックはカスタム実施に理想的である。さらに、ここに開示されたスイッチングファブリックには、論理ブロック２２同士間のコネクションのほとんどが局所的である（例えば入力垂直コネクション３２、出力垂直コネクション３４、入力水平コネクション２８および出力水平コネクション３０）という付加的な有益な点がある。論理ブロック同士間で膨大な非局所的コネクション（例えば入力線２４）を必要としないので、前記の付加的な有益な点によりチップの表面への論理ブロックの貼り付け（ｔｉｌｉｎｇ）が容易になる。
【００３５】
本発明がデータパケットをスイッチングファブリックを介して逐次送信することを必要とせず、その代わりにさまざまな類似の程度を組み入れるようにスイッチングファブリックを変更できる点は、当業者が理解し得る。例えば、データ送信と共にアドレッシングとアービトレイションを送れるように、図４に示した入力線２４は２本の線を含む。一方の線は現在のセルにデータを送るために使用され、他方の線は次のセルに対しアドレッシングとアービトレイションを実行するために使用される。
【００３６】
さらに、スイッチの入力線あるいは出力線の方向づけにおいて、入力線を水平方向に、また出力線を垂直方向に定義することが物理的に制限されていない点は、当業者が理解し得る。例えば、入力線は垂直に方向づけでき、また出力線は水平に方向づけできる。
【図面の簡単な説明】
【図１】
本発明におけるスイッチのスイッチングファブリックの構成を示す。
【図２】
図１の参照番号１９の部分である論理群の一般的な構成を示す。
【図３】
スイッチングファブリックの操作の３段階を示したフロー図である。
【図４】
スイッチングファブリックのアドレッシング段階を実行する論理ブロック間のコネクションのブロック図である。
【図５】
スイッチングファブリックの操作がアドレッシング段階にある場合の、各論理ブロック内で作動する有限状態機械のさまざまな状態を定義する。
【図６】
スイッチングファブリックのアービトレイション段階を実行する論理ブロック間のコネクションのブロック図である。
【図７】
一論理ブロックと、アービトレイション段階中に作動する前記論理ブロックのコネクションを示す。
【図８】
組合せ論理と、アービトレイション段階を実行するスイッチファブリックの論理ブロック内の有限状態機械を示す。
【図９】
図８に示した有限状態機械の状態遷移図である。
【図１０】
図９に示した有限状態機械の３状態それぞれの、論理ブロック内で作り出された仮想コネクションを示す。
【図１１】
アービトレイション段階中に水平及び垂直にデータパケットを送る論理群内の論理ブロックの組み合わせの例を示す。
【図１２】
アービトレイション段階中に水平及び垂直にデータパケットを送る論理群内の論理ブロックの組み合わせの別の例を示す。
【図１３】
スイッチングファブリックの応答段階を実行するスイッチングファブリックの論理ブロック間のコネクションのブロック図である。
【図１４】
スイッチングファブリックの応答段階を実行する一つの論理ブロックとそのコネクションを示す。
【図１５】
スイッチサイクルの応答段階中の論理ブロック内で作動する組合せ論理と有限状態機械を示す。
【図１６】
アービトレイション段階の完了後の論理群の一例を示す。
【図１７】
アービトレイション段階の完了後の論理群の別の一例を示す。
【符号の説明】
５  スイッチ
６  入力ポート
８  出力ポート
１０  スイッチングファブリック
１５  入力行
１６  出力列群
１８  論理群
２０  出力列
２１  組合せ論理
２２  論理ブロック
２３  有限状態機械
２４  入力線
２６  アドレス線
２８  入力水平コネクション
３０  出力水平コネクション
３２  入力垂直コネクション
３４  出力垂直コネクション
３５  組合せ論理
３６  垂直承認コネクション
３８  承認線
４６  最右垂直信号
４８  論理ブロック