(57)【特許請求の範囲】
【請求項１】
入力回線毎に、出力回線対応バッファを備えたスケジューリング制御装置において、
スケジューリング対象の各入力回線の、所望の出力回線に対する送出要求情報を保持する要求管理部と、
スケジューリング開始入力回線を示すハイウェイ間ポインタを保持するハイウェイ間ポインタ制御部と、
各入力回線の前記送出要求情報において、所望の出力回線のうち検索開始出力回線を示すハイウェイ内ポインタを保持するハイウェイ内ポインタ制御部と、
複数の前記送出要求情報の中からハイウェイ内ポインタが示す前記検索開始出力回線から検索を開始し、他の入力回線の前記送出要求情報において選択されていない出力回線を選択するスケジューリング処理部とからなり、
前記スケジューリング処理部は、スケジューリング終了後のハイウェイ間ポインタを更新するときに、スケジューリング周期毎に、順方向の隣接回線へ更新する処理と、逆方向の隣接回線へ更新する処理を交互に行うスケジューリング制御装置。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明はスケジューリング制御装置に関し、特に大規模ＡＴＭスイッチの一構成法である入力バッファ型スイッチにおけるスケジューリング制御装置に適用して有効な技術である。
【０００２】
【従来の技術】
近年、インターネットの爆発的な普及や大容量・高品質な情報を扱うメディアの登場により、大容量データを柔軟に扱うことのできる大規模な通信インフラの整備に期待が寄せられている。そして、実現の鍵となる数百ギガ〜数テラオーダの容量をもつ交換機に関心が集まっている。
【０００３】
入力方路毎に単一バッファをもつ基本的な入力バッファ型スイッチ（図２の左側）は、ＨＯＬ（Ｈｅａｄ  Ｏｆ  Ｌｉｎｅ）ブロッキングの問題があり、スループットが約５８．６％までにしか上がらないことが知られている。
【０００４】
ＨＯＬブロッキングを回避する手段として、図３に示すように、入力バッファ部を論理的に出力方路毎に分割し、所定のアルゴリズムにしたがって送出権をスケジューリングする方式がいくつか提案されている。その一つとして入力と出力間でＲｅｑｕｅｓｔ／Ａｃｋｎｏｗｌｅｄｇｅ（要求・確認）制御を行う方式が知られているが、この方式は、入力−出力間で何度も情報のやりとりを行って、スケジューリング処理を行っていた。また、入力と出力間の組み合わせが最大となるような組み合わせを求める別の方式では、最適な組み合わせを求めるために複雑な演算処理を繰り返し行っていた。
【０００５】
入力バッファ部は出力回線分の論理バッファをもつが、サービス品質（ＱｏＳ：Ｑｕａｌｉｔｙ  Ｏｆ  Ｓｕｒｖｉｖｅ）での帯域制御を行うために、従来はその出力回線毎にＱｏＳ帯域制御用のリーキバケットカウンタ（ＬＢカウンタ）が必要になった。例えば出力回線が１２８回線でＱｏＳクラスが１６クラスの場合、帯域制御用ＬＢカウンタ数は２０４８個にもなる。
【０００６】
従来、大規模入力バッファ型スイッチ向けスイッチ部の構成方法として、単位スイッチをクロスバー形式にする方式（図４）、バッチャソータ方式（図５）、バッチャバンヤン方式（図６）などがある。
【０００７】
また、セルの同期方式としては、図７のようなセルの先頭を示すフレームパルスとデータを並送させることにより、セルの先頭の同期をとる方式がある。
【０００８】
【発明が解決しようとする課題】
上述のＲｅｑｕｅｓｔ／Ａｃｋｎｏｗｌｅｄｇｅ制御を用いた方式では、特性向上のための入出力間で情報の受け渡しを繰り返し行う必要があることから、１パケット時間内に処理を完了させるために高速なデバイスが必要であった。また、最大の組み合わせを求める様な方式は、複雑な論理演算が必要となり、これをハードウェアで実現することは困難であった。
【０００９】
さらに、スケジューリング処理において、出力回線の決定に単純なラウンドロビン制御を用いる方式では、ラウンドロビン制御によって各回線が常に均等に割り当てられてしまい、一つの出力回線に対して、異なる入力負荷（不均等負荷）で複数回線から送出要求があった場合に、高負荷の入力回線からの送出遅延が著しく低下する問題があった。
【００１０】
また、多数回線を収容する大規模スイッチにおいて、ロジックで帯域制御用のＬＢカウンタを構成するとハードウェア量が膨大になってしまう。また、これをメモリを使って構成すると１パケット時間に同時にアクセスすることが難しくなるという問題があった。
【００１１】
また、複数のＬＳＩ、またはパッケージで大規模スイッチを構成する際、クロスバーだとＬＳＩ、またはパッケージ間のＩ／Ｏ数がセルハイウェイの４倍分だけ必要となり、Ｉ／Ｏ（  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）数がボトルネックとなる。
【００１２】
また、バッチャソータ方式ではＩ／Ｏ数はセルハイウェイの２倍分で足りるが、各ブロック毎の構成が異なり、またＩ／Ｏの長さも異なるため複数品種のＬＳＩ、またはパッケージを構成する必要が生じたり、位相調整が必要となるという問題もあった。
【００１３】
また、複数ＬＳＩ、またはパッケージで大規模スイッチを構成する際、バッチャソータ方式等では、スイッチ規模を拡張していく際に、最小規模時のパスに単位スイッチを挿入していく必要があるため、パスの張り替えが必要となり拡張時にシステムを停止させなければならないという問題があった。
【００１４】
また複数ＬＳＩ、またはパッケージで大規模スイッチを構成する際、スイッチ部を単位ソータのみで構成するには、全入力回線から重複なく異なる出回線番号をもつセルを常にスイッチ部に転送する必要があることから、送るべきセルがないとき、空きセルに対しても入力バッファ側で出回線番号をダミーで付与する必要がある。
【００１５】
この点について、空きセルに対して入力バッファ側で出回線番号を付与することが、特開平３−３６８４１号公報で提案されているが、この技術では、出力回線番号順に対応する入力回線を決定している。そのため、入力バッファを出方路毎の論理キューで構成し、競合制御により各入力バッファに対する出方路を決定するような出回線番号順に一意に入力回線を決定できないスケジューリング方式には適用できないという問題があった。
【００１６】
またスイッチや入力バッファやスケジューラが複数のパッケージにまたがって構成されている場合、各パッケージ間でのセルレベルの同期外れが発生するが、図７に示したようなセルの先頭を示すフレームとデータを並送させる方式では、セルレベルの非同期は検出できないという問題があった。
【００１７】
本発明は、これらの点に鑑みてなされたものであり、均等、不均等負荷のもとでも特性の劣化がなく、かつ、高速な繰り返しスケジューリングや複雑な演算処理を必要とせず、簡素でかつ処理速度がデバイス能力に依存しないスケジューリング装置の実現を目的としている。
【００１８】
【課題を解決するための手段】
図１および図８に本発明の基本的な構成を示す。
スケジューラ装置は、入力バッファ部からの送出要求に基づき、適切な出力方路を決定するものであり、各入力バッファから送出されるパケットを各々異なる出力方路にルーチングされるようにスケジューリングするものである。
【００１９】
図８は本発明の原理構成図を示したものである。
要求情報管理部は、各入力回線が所望する出力回線への送出要求を入力回線毎に管理するものであり、送出要求数を管理するとともに、送出要求の有無を”０”，  “１”で表す。
【００２０】
負荷観測部は、一定周期内に到着した要求情報の数を、論理出力キュー毎に計測し、負荷を計測するものである。
ハイウェイ間ポインタ（ＰＨＷ）は、ハイウェイ間ポインタ制御部に保持されており、スケジューリングの際に、どの入力回線からスケジューリングを開始するかを示す。このハイウェイ間ポインタ（ＰＨＷ）が示す入力回線から順にＮ入力回線分のスケジューリングを行う。
【００２１】
ハイウェイ内ポインタ（ＰＯ＃ｊ：ｊは回線番号）は、ハイウェイ内ポインタ制御部に保持され、所望する複数の出力回線の中から一つを選択する際に、どの出力回線から検索を行うかを示すものである。スケジューリング処理部はこのハイウェイ内ポインタ（ＰＯ＃ｊ）が示す出力回線から順に検索を行い、最初に見つかった回線に対して送出権を与えるようになっている。
【００２２】
スケジューリング処理部は、ハイウェイ内ポインタとハイウェイ間ポインタが示す回線から検索を開始し、負荷観測部で得られた負荷に応じて、スケジューリングを行う。
【００２３】
スケジューリングは、送出要求のある回線で、ポインタ制御によって最初に見つかった回線（但し、他の回線に選択されていないこと）に対して送出権を与える。そして、送出権を与えた回線を次回のスケジューリング処理に低優先になるようにポインタを更新するようになっている。
【００２４】
ポインタの更新は、以下の手順で行われる。
図１に本発明の特徴的な一つのポインタ制御の動作を示す。ハイウェイ間ポインタは、全回線分のスケジューリングが終わった時点で、隣接する回線（右隣）に更新される。このとき、同一方向（時計回り）へＮ回更新された場合は、次のＮ回のスケジューリング処理は逆方向（反時計回り）の隣接回線へ更新するようになっている。
【００２５】
ハイウェイ内ポインタは、スケジューリング処理部が決定した回線の次の回線にハイウェイ内ポインタ値を更新する。但し、ハイウェイ内ポインタが示す回線に要求がありかつその回線が既に他の回線によってスケジューリングされている場合には更新を行わないようになっている。
【００２６】
本発明（請求項１および２に対応）によれば、ハイウェイ間ポインタが示す回線からスケジューリングを開始し、各回線におけるスケジューリング処理は、他の回線が使用していない回線を選択することにより、無駄なスケジューリング処理を回避し、かつ効率のよい（空きの少ない）スケジューリングが可能になる。
【００２７】
また、スケジューリングされる入力回線の順番がＨＷポインタの反転制御によって、スケジューリング周期毎に反転するため、２つの入力回線で見たときに、スケジューリングが行われる順序が均等に与えられる。
【００５６】
【発明の実施の形態】
以下、図面に基づいて、本発明の実施の形態を説明する。
【００５７】
【実施例１】
図１７は、本システムの全体構成を示している。
同図に示すように、本実施例では、入力回線から到着したセルは入力バッファに保持され、スケジューラからの指示によりＮ×Ｎ構成のスイッチに入力され、Ｎ本の出力回線より出力される。
【００５８】
ここで、図１８を用いて、ハイウェイ間ポインタの反転制御の説明を行う。図１８では、４×４個構成のスイッチを想定している。
同図において、１回目のスケジューリングは、入力回線＃０から順に入力回線＃０，＃１，＃２，＃３の順でスケジューリングが行われる。
【００５９】
もし、スケジューリング順序が一方向のみの場合、２回目はハイウェイ間ポインタが順方向に移動して、入力回線＃２から順に、＃２，＃３，＃０，＃１の順でスケジューリングが行われる。ここで、入力回線＃０と入力回線＃１に着目してスケジューリング順序について見た場合、若番の入力回線の方が多く先にスケジューリングされてしまい不均等なスケジューリングになる（図中、入力回線＃０と回線＃１との間で先にスケジューリングされるものを四角で囲った）。
【００６０】
一方、これに対して本実施例では、反転制御を用いる場合の２回目のスケジューリングにおいて、反転制御によって、ＨＷポインタが逆方向に働き、入力回線＃３から順に＃３，＃２，＃１，＃０の順でスケジューリングが行われる。
【００６１】
このように、スケジューリング周期毎に反転制御を行うことで、スケジューリング周囲毎にスケジューリング順序が入れ替わり、２周期のスパンで見たときに、均等なスケジューリングを実現できる。
【００６２】
【実施例２】
以下に上記反転制御を用いたパイプライン処理系の実施例を示す。
上記実施例１では、４×４のスイッチ構成を例にあげており、１パケット時間内に４つの入力回線についてスケジューリングを行えばよいが、多くの回線を収容する場合には、１パケット時間内に全ての回線の処理を終えることが難しくなる。
【００６３】
そこで、スケジューリング開始入力回線を時間的にずらしてパイプライン処理構成を形成することにより、処理速度面の課題を回避するのが本実施例である。図１９にパイプラインシーケンスを示す。各パイプラインの開始番号は時間的にずれており、競合が起こりにくくなっている。図中の数字は、スケジューリング対象となる入力回線番号を示しており、この例では１パケット時間中に２つの回線のスケジューリングを実行する。そして、１回のスケジューリング周期が８パケット時間で完了するように組まれている。
【００６４】
パイプライン＃１では、Ｔｉｍｅ１〜Ｔｉｍｅ８までが１周期のスケジューリングとなっており、上記実施例１で述べたように、Ｔｉｍｅ９〜Ｔｉｍｅ１６が反転周期のスケジューリング周期となっている（白抜き部分が順方向の処理、黒塗り部分が逆方向の処理）。
【００６５】
パイプライン＃２も同様であるが、スケジューリング開始回線が入力回線＃２になっている（Ｔｉｍｅ＝２）。これは、パイプライン処理＃１の開始番号から２個シフトした値である。
【００６６】
実施例ではシフト量を２にしているが１個シフトでもよい。実施例では２個シフトする代わりに、パイプライン処理４以降で、１パケット時間内の処理順序を反転させている。
【００６７】
パイプライン処理において、公平なスケジューリングを行うため、各パイプライン処理毎にハイウェイ間ポインタとハイウェイ内ポインタとをそれぞれ備えている。ここで本実施例のハードウェア構成は、図２０および図２１に示す通りとなる。図２０はスケジューリング部を集中的に管理する場合のイメージであるが、図２１のように各入力回線毎に分散的に配置することもできる。
【００６８】
次に、ハイウェイ間ポインタの動作について説明する。
例えばＴｉｍｅ＝１のパイプライン処理＃６における入力回線＃０のスケジューリングにおいて、出力回線が回線＃２に決定されたとする。このとき、次の入力回線＃０のスケジューリング時に出力回線＃２が低優先で送出されるようにパイプライン処理＃６のハイウェイ内ポインタ（Ｐ  ＨＷ＃０＿ｐｉｐｅ＃６）を３に更新する。
【００６９】
Ｔｉｍｅ＝３において、全体で見た場合の入力回線＃０のスケジューリングが存在するが、このｐｉｐｅｌｉｎｅ＃４と前述のｐｉｐｅｌｉｎｅ＃６は完全に独立に動作しており、Ｔｉｍｅ＝３ではｐｉｐｅｌｉｎｅ＃４のハイウェイ内ポインタにしたがってスケジューリングされる。
【００７０】
ここで、ｐｉｐｅｌｉｎｅ＃６に着目してみると、Ｔｉｍｅ＝１１において、次の入力回線＃０のスケジューリング処理が存在する。これは、Ｔｉｍｅ＝１で更新されたハイウェイ内ポインタ値（＝３）にしたがって、出力回線＃３から検索が行われる。
【００７１】
このように時系列で見た場合には、各入力回線内の送出ポインタが均等に廻っていないようにみえるが、一つのパイプライン処理の中では均等にポインタが廻っており、全体として、均等な読み出しスケジューリングが実行されている。
【００７２】
パイプライン処理におけるタイムテーブルの順序は、上記実施例の順序に限らず、どのようなパターンでもよく、パイプライン処理毎に一つずつ開始回線番号をずらすようにしてもよい。また、１パケット時間に複数の入力回線のスケジューリングを行ってもよいし、一つのスケジューリング周期の中で１パケット時間おきにスケジューリングを実行しないようにしてもよい。
【００７３】
【実施例３】
次に、入力負荷に応じたスケジューリング方式の実施例を示す。
図２２に不均等負荷時の例を示す。入力＃０から出力＃０に対する入力トラヒックが０．１の負荷で入力され、入力＃１から出力＃０に対する入力トラヒックが０．９の負荷で入力されているとする。
【００７４】
この例に対して、ラウンドロビン制御を用いてスケジューリングを行った場合、入力＃０と＃１の選択される確率（すなわち読み出し確率）は各々０．５となり、パス＃１−＃０は入力が０．９であることから、出力負荷に対して入力負荷が高いため、キューイングされるパケットが増加し、キューイング遅延が大きくなってしまう。
【００７５】
このような不均等負荷の場合にも、負荷に対して均等にスケジューリングする様に、負荷観測結果に基づいてスケジューリングを行う実施例を、図２３を用いて説明する。
【００７６】
スケジューリング装置は、一定周期毎に各論理出力キューに対する到着パケット数を計測する。ここでは、例として負荷観測周期を１０パケット時間とし、到着パケット数が各々以下であるとする。
【００７７】
入力＃０に到着し出力＃０に送出要求のあるパケット：１個（負荷０．１）入力＃１に到着し出力＃０に送出要求のあるパケット：９個（負荷０．９）次の周期（一定周期）では、上記到着パケット数に基づいてスケジューリングを行う。
【００７８】
一定周期に送出可能なパケット数を前周期の到着パケット数に制限することにより、不均等負荷の場合でも高負荷パスの遅延は大きくなることはない。この例では、１０パケット時間の間にパス＃０−＃０のパケットは、いくら送出要求数が多くても、１パケットしか出すことができない。そして、パス＃１−＃０は９個までは送出することができるため、不均等負荷時にも高負荷パスのキューイング遅延が大きくなることはない。
【００７９】
すなわち、負荷の少ない回線に対して、大量に読み出されないように規制を行っている。
実際の動作例を、図２４のフローチャートを用いて説明する。
【００８０】
パケット（あるいは送出要求情報）が到着したとき、対応するパスの負荷観測カウンタをインクリメントし、一定周期毎に、負荷観測カウンタの値をワーク用の到着パケット数ワークカウンタに加算する。これは、競合制御等によって、前周期に到着したパケット数分のパケットが全て送出しきれなかった場合に、残りの到着パケット数を次周期のスケジューリングで読み出すための処理である（図２４（ａ））。
【００８１】
次に図２４（ｂ）を用いて、スケジューリング時の動作について説明する。
スケジューリング時は、ハイウェイ内ポインタが示す出力回線の到着パケット数ワークカウンタをチェックし、１以上で、かつ、送出要求があればその回線に送出権を与える。このとき、当然ながら、他の入力回線に確保されていないことが必要である。そして、到着パケット数ワークカウンタをデクリメント（−１）する。
【００８２】
一方、到着パケット数ワークカウンタが０であれば、送出要求の有無に関わらず、送出要求はないものと見なし、他の出力回線の送出が可能かをチェックする。
【００８３】
このように、スケジューリング時は、この到着パケット数ワークカウンタを用いて、入力負荷以上とならないように送出パケット数に制限を設けている。
【００８４】
【実施例４】
実施例３では、到着パケット数に応じて送出パケット数を制限することによって、不均等負荷時の均等読み出しを実現したが、送出パケット数に制限をかけずに、出力回線の割合を到着パケット数にしたがわせてもよい。以下に動作例を示す。
【００８５】
到着パケット数の計測は実施例３と同様であるが、到着パケット数が、次周期の最優先選択回線の割合を決定するために用いられる点で異なる。
例えば、上記実施例と同様の到着パケット数があったとする。
【００８６】
入力＃０に到着し出力＃０に送出要求のあるパケット：１個（負荷０．１）
入力＃１に到着し出力＃０に送出要求のあるパケット：９個（負荷０．９）
この場合、次周期の最優先出力回線は、パス＃０−＃０：１回、パス＃１−＃０：９回となる。
【００８７】
最優先出力回線は、到着パケット数に応じて決定され、最優先ポインタによって示される。最優先ポインタは、ハイウェイ内ポインタよりも上位のレベルに位置づけられ、スケジューラは、スケジューリングを行う際に、まず最優先送出ポインタをチェックする。
【００８８】
このとき、最優先ポインタが示す回線に送出要求があれば、その回線を出力回線と決定（但し、送出要求があり他の回線に使用されていないこと）し、なければ、ハイウェイ内ポインタにしたがって、通常通りのスケジューリングを行い出力回線を決定する。
【００８９】
次に、図２５に実施例３との違いを示す例を示す。
0003684308.tif 000002
実施例３の場合は、現周期に送出可能なパケットは、前周期の到着パケット数に制限されるため入力＃０＝１個、入力＃１＝３個までである。そしてこの場合では、たとえ現周期において空きがあっても、これらの数以上のパケットは送出することができず、現時刻までに到着した入力＃０＝２個、入力＃１＝４個のパケットは送出することができない。
【００９０】
一方、本実施例は、現周期内で入力＃０＝１個，入力＃１＝３までは最優先で送出されるが、残りはＨＷポインタにしたがって均等に送出されるため、回線が空いていれば現周期に到着したパケットも送出することが可能である。
【００９１】
図２５の下線部の数（パス＃０−＃０：２個、パス＃１−＃０：４個）が空きのときに送出された数である。このときの現周期の到着パケット数は、パス＃０−＃０：２個、パス＃１−＃０：６個である。
【００９２】
この場合、次周期の最優先で送出される数は、現周期に到着した数−前周期に最優先以外で送出された数となり、以下の式を適用するとパス＃０−＃０の場合、パス＃１−＃０の場合で以下のようになる。
【００９３】
（現周期到着パケット数）−（前周期に最優先以外で送出された数）＝次周期の最優先数
パス＃０−＃０：  ２−２＝０
パス＃１−＃０：  ６−４＝２
最優先送出ポインタを用いたスケジューリングフローを図２６に示す。
【００９４】
第一に最優先ポインタ（パイプライン共通）が示す回線に送出要求があれば、送出確定とする。最優先ポインタが示す回線に要求がないか、あるいは到着パケット数ワークカウンタが０であれば、ハイウェイ内ポインタにしたがってスケジューリングを行う。
【００９５】
出力回線が決定した後、出力回線に対応する到着パケット数ワークカウンタをデクリメントし、ポインタの更新を行う（図２６中の右側フロー図）。
最優先ポインタの更新：  最優先ポインタが示す回線が送出確定になったとき、到着パケットワークカウンタをデクリメント（−１）し、最優先ポインタを現最優先ポインタの次に見つかる回線で、到着パケット数ワークカウンタが１以上の回線に更新する。
【００９６】
例えば、最優先ポインタが示す回線が＃１で送出確定回線も＃１であり、到着パケットワークカウンタが以下の通りであった場合は、次に見つかるカウンタ値０以上の回線は出力回線＃４であることから、最優先ポインタは４に更新される。
【００９７】
出力回線＃０ワークカウンタ        ：４
出力回線＃１ワークカウンタ        ：３
出力回線＃２  ワークカウンタ        ：０
出力回線＃３  ワークカウンタ        ：０
出力回線＃４  ワークカウンタ        ：５
出力回線＃５  ワークカウンタ        ：３
なお、ハイウェイ内ポインタは通常通り出力回線の次の回線、すなわち回線＃２に更新される。
【００９８】
最優先ポインタの動作を整理すると、ワークカウンタの値がそれぞれ以下の様な値であった場合、スケジューリング周期毎に最優先ポインタは下図のように変化する。
【００９９】
0003684308.tif 000003
上記において、下線部は最優先ポインタが＃３になっているが、ワークカウンタが０であるため、通常のハイウェイ内ポインタにしたがってスケジューリングされる。
【０１００】
【実施例５】
上記実施例では、一定周期内に到着したセル数をベースとして、次の周期のスケジューリングを行っているが、一定周期毎に、入力バッファに蓄積されているパケット量、すなわちキュー長をもって、次の周期のスケジューリングを行ってもよい。図２７に処理例を示す。
【０１０１】
一定周期毎に入力バッファ部のキュー長をチェックし、そのキュー長に応じて、最優先出力回線を決定する方法を示す。入力回線＃０−出力回線０のキュー長が１０個、入力回線＃１−出力回線＃０のキュー長が５個であった場合、上記到着パケット数ベースの実施例における、到着パケット数ワークカウンタにこの値をセットする（ここでは、到着パケット数ワークカウンタとしてではなく、キュー長ワークカウンタとして用いられる）。
【０１０２】
そして、最優先ポインタの決定時に本ワークカウンタをチェックし、キュー長ワークカウンタが０以上の回線を最優先ポインタにセットする。
図２８（ａ）にワークカウンタ決定フローを、図２９（ａ）にワークカウンタ設定例を示す。
【０１０３】
また別のやり方として、キュー長の割合から次周期のキュー長ワークカウンタを決定してもよい。フローチャートを図２８（ｂ）および（ｃ）に示す。
全キュー長（同一出力方路のキュー長の和）に対して、自キュー長が占めている割合で次周期のワークカウンタ値を決定する方法を示す。
【０１０４】
図２９（ｂ）では、一定周期を２０パケット時間としており、例えば、入力回線＃０のワークカウンタ設定値は、自キュー長＝１０パケット、全キュー長＝２７であり、割合は、約０．３７…となる。
【０１０５】
そして、次周期内における割合は、０．３７×２０＝７．４として７が求められる。小数点以下は、切り捨ててもよいし、切り上げてもよい。同様に全入力回線について、次周期のワークカウンタ値を決定する。
【０１０６】
また、自キューのキュー長の大小関係で、次周期のワークカウンタの値を決定してもよい。ここでは、キュー長０〜３までを０．０５の割合、３〜１０までを０．１の割合、１０〜２０を０．２の割合を与えるとする。そして、一定周期を２０パケット時間とする。
【０１０７】
そして、一定周期毎にキュー長をチェックし、現キュー長がどの範囲に入っているかを確認し、キュー長に応じた割合を得る。例えば、図２９（ｃ）の入力回線＃０については、現キュー長＝１０であり、範囲３〜１０のため割合は、０．１が得られる。そして、次周期における割合は、０．１×２０で得られ、２が求められる。
【０１０８】
上記実施例の範囲とその割合は、任意に設定できるものであり、実トラヒックに応じて決定してもよいし、あるトラヒック条件下のもと、適切に割合が振り分けられるように設定してもよい。
【０１０９】
キュー長ワークカウンタが決定された後は、上記実施例４と同様に最優先ポインタが更新される。フローチャートを図３０に示す。動作は実施例４と全く同じである。
【０１１０】
【実施例６】
次にスケジューラの分散拡張方式について説明する。
これまで説明してきたスケジューリング装置は、図３１のように各入力回線毎に分散して配置することができる。各入力回線毎のスケジューラは、自回線の要求情報管理部と、自回線のハイウェイ間ポインタと、パイプライン処理毎のハイウェイ内ポインタを有し、自回線のスケジューリングを行う。
【０１１１】
ここで、集中的にスケジューラが配置される場合（図２０に示したような場合）は、次にどの入力回線のスケジューリングを行うかを決定するために、ハイウェイ間ポインタが必要になるが、分散的に配備される場合、ハイウェイ間ポインタの値は常に自回線となり、ポインタとしては使用されない。その代わり、いつ自回線のスケジューリングを行うかの判定を、あらかじめ決められたタイムテーブルの自スロット位置で判断している。
【０１１２】
このような分散配備の場合には、スケジューリングの際に他の入力回線によって、送出要求のある出力回線が既に確定されているか否かを知るためにスケジューラ間で情報の受け渡しが必要となる。
【０１１３】
図３２に分散配備時の接続構成例を示す。図３２（ａ）のリング型接続は、各スケジューラを数珠つなぎ状に接続する。この場合、最下位のスケジューラと最上位のスケジューラ間の伝搬距離が長くなる。また、スケジューラ増設の度に、スケジューラ間の情報伝達リンクを張り替える必要がある。一方、図３２（ｂ）の様に、情報伝達リング状に均等にスケジューラが配置されるようにした場合、各スケジューラ間の伝搬遅延が等しくなり、またオンラインで張り替え無しに拡張することが可能となる。
【０１１４】
以下にスケジューラ接続の詳細を示す。
図３３は、複数のスケジューラからなる拡張ユニットの構成と、その拡張方法を示したものである。
【０１１５】
図３３は、４×４個構成のスイッチを８×８個構成から１２×１２個構成に拡張する方法を示している。
増設は、複数のスケジューラが集まった拡張ユニット毎に行われる。この例では、増設単位を４×４として、一つの拡張ユニットの中に４つのスケジューラを備える（図中では、２回線分のスケジューラを一つのブロックで表しているため、ブロックとしては２個であるが、論理的には４つである）。
【０１１６】
拡張ユニットは、これらのスケジューラをリング接続するとともに、他の拡張ユニットとの外部インタフェースを有し、外部インタフェースと内部リングとを切り替えるためのセレクタを有している。また内部リング上にスケジューラ間の情報伝達を遅らせる遅延ブロックを有する。例えば、図３３の左側図では、拡張ユニットが一つのため、セレクタ部は、全て内部リング側を選択するようになっている。そして、スケジューリングを行う回線の順序は、回線＃０→回線１→回線＃２→回線＃３で行われる。遅延制御ブロックは、回線１と回線＃２の間にあり、回線＃１のスケジューリング結果は、遅延ブロックにおいて一定時間遅らされて、回線＃２のスケジューラに受け渡される。
【０１１７】
次に拡張ユニットを２個に拡張して、８×８のスイッチを構成する場合を示す。
拡張ユニットが増設された場合には、外部インタフェースにクロック、フレーム信号等が流れ始め、これらの信号の検出を行うことにより、各拡張ユニットのセレクタは、外部インタフェース側を選択するようになる。そして、元々存在していた拡張ユニットの遅延ブロックは使われなくなり、代わりに新しく増設された方の拡張ユニットの遅延ブロックが働く。スケジューリング順序は、回線＃０→回線１→回線４→回線５→回線６→回線７→回線＃２→回線＃３の順で行われ、遅延ブロックは回線＃５と回線＃６の間で用いられる。
【０１１８】
１２×１２に増設する場合も同様の手順で行われる。このように、スケジューラ増設の際にオンラインで、かつスケジューラ間の情報リンクの張り替え無しに増設することが可能になる。
【０１１９】
次に、遅延ブロックの実際の動作について述べる。
図３４に遅延ブロックの働きを示す。ここでは、最大スイッチ構成を８×８と仮定した場合を例にとってあげる。
【０１２０】
まず、パイプラインシーケンスは、最大構成時を想定して図３４の下段図のように組まれたとする。各入力方路毎の分散スケジューラは、このパイプラインシーケンスの自回線番号のスロットにおいてスケジューリング動作を行う。
【０１２１】
回線数の増加等によって、接続回線数が変わる度に自タイムスロットが変更されることは、オンラインで増設する際の切り替え時の処理が複雑になったり、ハードウェアの作りが難しくなる。  そこで、最大構成時のスケジューリングシーケンスにあわせて、少ない回線時にも各スケジューラ間のデータ転送を遅らせることによって、自タイムスロットを常に固定化させている。
【０１２２】
図３４の上段図は、４×４のときのパイプラインシーケンスである。スケジューリング順序は回線＃０→回線＃１→回線＃２→回線＃３であるが、回線＃１のスケジューリング結果の情報を４パケット時間遅延させて回線＃２に送信する。このようにすることによって、自タイムススロットの位置を固定化することができる。図中、パイプライン＃１，２，３，５，６，７はスケジューリング情報を遅延させていないが、これは、遅延ブロックの一つ前のスケジューラがスケジューリング周期の最後の回線であるため、後段の回線に情報通知が不要のためである。
【０１２３】
各パイプラインシーケンスと遅延との関係を以下に示す。
4×4    0 1 ----------------> 2 3  （遅延８）
8×8    0 1 4 5 --------->6 7 2 3  （遅延４）
12×12   0 1 4 5 8 9 10 11 6 7 2 3  （遅延０）
【０１２４】
【実施例７】
入力バッファ、スケジューラ両方でＱｏＳ制御を行う場合の一実施例を示す。
【０１２５】
図３５に、入力バッファ部とスケジューラ部の関係を示す。入力バッファ部は、到着したパケットをＮ方路の論理出力キュー毎、かつｍクラスのＱｏＳクラス毎に管理する。そして、スケジューラ部へ、送出要求情報（所望する出力方路番号）とＱｏＳクラスを通知する。
【０１２６】
スケジューラの要求管理部は、論理出力キュー毎、かつＱｏＳクラス毎に、その情報を管理する。
スケジューラ部では、ＱｏＳクラスの遅延特性のみを考慮し、高優先クラスの送出要求からスケジューリングを行い、高優先クラスに送出対象がなければ、次の高優先クラス送出が可能かを判定し、高優先クラスから順にスケジューリングを行う。
【０１２７】
実際の処理順序を以下に示す。
例えば、出力回線＃１の  ＱｏＳクラス＃３と、出力回線＃２のＱｏＳクラス＃０とに要求があったとする。そして、ハイウェイ内ポインタは＃０を示しているとする（ＱｏＳクラス０が最高優先クラス）。
【０１２８】
まず、高優先クラスについてスケジューリングを行う。この例ではＱｏＳクラス＃０の要求があるのは、出力回線＃２のみのため、仮の送出許可出力回線を＃２と決定する。このとき、他の回線にも同じくＱｏＳクラス＃０の要求があった場合には、ハイウェイ間ポインタにしたがって、回線＃１から順に検索し、最初に見つかった回線に仮の送出許可出力回線を与える。
【０１２９】
そして、仮の送出許可出力回線は、ＱｏＳクラスとともに入力バッファに通知される。
入力バッファ部では、受け取った情報をもとに、仮出力回線のＱｏＳクラスの帯域制御を行い、所望の帯域で出力可能かをチェックし、帯域内であればバッファ部に対して読み出し指示を与える。ここで、仮に帯域外であったと判定された場合には、バッファからはパケットを送出せず、スケジューラ部へ帯域外であったことを通知する。
【０１３０】
帯域外である旨の通知を受け取ったスケジューラ部では、次の優先クラスのスケジューリングを行う。この例では、ＱｏＳクラス＃１と＃２の要求がないため、その次のＱｏＳクラス＃３のスケジューリングを行う。
【０１３１】
ＱｏＳクラス＃３の要求をもっているのは、入力回線＃１のみである。したが、再び入力バッファ部へ、仮の出力回線番号とＱｏＳクラスを通知し上記処理を繰り返す。
【０１３２】
これら一連の処理によって、スケジューラ部で遅延特性、入力バッファ部で帯域特性を保証することが可能になる。
この動作フローを図３６に示す。
【０１３３】
【実施例８】
上記実施例では、ＱｏＳクラスの最優先クラスから順にスケジューリングを行い、出力回線が確定するまで繰り返し処理を行っているが、下記に示す様な方法をとってもよい。
【０１３４】
入力バッファからは、送出要求情報とＱｏＳクラスをスケジューラ部に通知し、スケジューラ部は、このＱｏＳクラス毎の情報をＫ個のグループにマッピングする。
【０１３５】
例えば、６つのＱｏＳクラスを、ＱｏＳクラス＃０〜４番をグループ＃０、ＱｏＳクラス＃５をグループ＃１にマッピング。
要求管理部では、到着した要求情報を出力回線毎、かつグループ毎に管理する。
【０１３６】
そして、スケジューラはこのグループ中の最優先グループからスケジューリングを行い、上位のグループにおいて出力回線が確定しない場合に、その次の低位グループのスケジューリングを行う様に制御し、入力バッファ部へは、確定した送出許可出力回線番号とグループ番号を通知する。
【０１３７】
入力バッファのＱｏＳ制御部では、そのグループ内のＱｏＳクラスの中で、さらに最優先クラスのものから順に帯域制御を行い、帯域内であればバッファに読み出し指示を与える。
【０１３８】
この処理フローを図３７に示す。
上記実施例では、完全に出力回線が確定した後に、入力バッファへ送出許可回線番号を返却しているが、グループ数が少ない場合には、実施例６のように仮の送出許可回線番号を一旦入力バッファ部へ通知して、帯域外のとき、次のグループのスケジューリングを行うようにしてもよい。
【０１３９】
また、グループ数やマッピングされるＱｏＳの組み合わせは、上記実施例に限らず、１〜Ｎのグループに任意にマッピングしてもよい。
【０１４０】
【実施例９】
次に、別方法のＱｏＳ制御の一実施例を示す。
図３８に、入力バッファ部とスケジューラ部の関係を示す。入力バッファ部は、到着したパケットをＮ方路の論理出力キュー毎、かつｍクラスのＱｏＳクラス毎に管理する。そして、スケジューラ部へは、送出要求情報（所望する出力方路番号）のみを通知する。
【０１４１】
スケジューラの要求管理部は、論理出力キュー毎に、その情報を要求管理部で管理する。
スケジューラ部では、ＱｏＳクラスを考慮せず、要求出力回線にしたがってスケジューリングを行い、入力バッファに対して送出許可出力回線番号を通知する。
【０１４２】
送出許可回線を受け取った入力バッファ部では、その出力回線内のどのＱｏＳクラスのパケットを送出するかを決定すべく、ＱｏＳ制御部において、遅延クラスの高いクラスで所定の帯域内のクラスを選択し、そのクラスのパケットをバッファから送出する。
【０１４３】
ここで、どのクラスも所定の帯域外の場合には、バッファからはパケットを送出せず、帯域外であったことをスケジューラ部に通知する。
帯域外であった場合には、スケジューラ部の要求管理部の要求情報数をデクリメントしないように制御する。
【０１４４】
本ＱｏＳ制御方法の動作フローを図３９に示す。
フローは、スケジューラ部がスケジューリングを開始する部分から出力回線を決定するまでを示している。
【０１４５】
【実施例１０】
次に、スケジューラ側で一括してＱｏＳ制御を行う場合の実施例を示す。
図４０に入力バッファとスケジューラの関係を示す。
【０１４６】
入力バッファからは、到着パケットの送出要求情報とＱｏＳクラスをスケジューラに対して通知し、スケジューラ側で論理出力毎かつＱｏＳクラス毎に管理を行う。
【０１４７】
そして、スケジューラのＱｏＳ制御部において、優先度の高いＱｏＳクラスから順に帯域制御を行い、所定の帯域内のＱｏＳクラスを選定する。そして、それらの情報をもとにスケジューリングを行い、入力バッファへは、確定した出力回線番号とＱｏＳクラスを通知し、入力バッファ側では、受け取った情報にしたがってバッファからパケットを送出する。
【０１４８】
このフローを図４１に示す。
【０１４９】
【実施例１１】
上記実施例７〜１０では、帯域制御部において、帯域外のときは送出要求があっても、送出することができない。そのため、全ＱｏＳクラスの帯域制御において、全てのクラスが帯域外であった場合には、全くパケットを送出することができなくなってしまう。
【０１５０】
そこで、全ＱｏＳクラスの送出が確定しなかった場合に、帯域外であるが、あらかじめ設定されたＱｏＳクラスに送出要求があればそのクラスに送出権を与えてもよい。
【０１５１】
送出クラスは、全クラスに与えられてもよいし、特定のＱｏＳクラスにのみ与えられてもよい。また、設定クラスが複数あった場合には、スケジューリングする順序を最優先クラスから行ってもよいし、別途設けられた優先順序にしたがってもよい。
【０１５２】
このフローを図４２に示す。
【０１５３】
【実施例１２】
図４３に入力バッファ部の構成を、図４４にＱｏＳ制御部のブロック図を示す。
【０１５４】
ＱｏＳ制御部は、出力回線毎の代表カウンタと、出力回線・ＱｏＳ個別のリーキバケット（ＬＢ）カウンタを設ける。ＬＢカウンタは、スケジューラにより選択された回線のみが使用され、代表カウンタは、前回選択されてからの経過時間を回線毎にカウントする。ＬＢカウンタでの制御時に経過時間分のカウントアップをまとめて行うことで、多回線のＱｏＳ制御においても処理数が少なくて済む。
【０１５５】
図４５に、代表カウンタ部と演算部の構成例を示す。代表カウンタ部は、回線毎の経過時間を保持するカウンタをもち、１パケット時間毎に全カウンタが１ずつカウントアップされる。スケジューラが読み出し回線を決定し、代表カウンタ部に通知されると、代表カウンタは決定した回線の代表カウンタ値を選択し、演算部へ通知する。同時に、その回線の代表カウンタを１にリセットする。これにより、回線毎の代表カウンタが、前回選択されてからの経過時間を測定することができる。
【０１５６】
演算部はＱｏＳ毎に用意される。まず、帯域情報のうち加算値に対し、通知された代表カウンタ値を掛け合わせ、それをＬＢカウンタ値に加えることで、経過時間分の加算をまとめて行う。その演算結果について、０以上の場合に読み出し候補としてＱｏＳ選択部に読出要求を出す。
【０１５７】
ＱｏＳ選択部は、各ＱｏＳの演算部からの読み出し要求をもとに読み出しＱｏＳを決定し、決定したＱｏＳあるいは読み出し要求があるにも関わらずバッファが空であったＱｏＳを、減算対象として演算部に通知する。減算指示のあったＱｏＳの演算部はＬＢカウンタを減算し、その結果をＬＢカウンタ更新値としてＬＢカウンタ部に通知する。
【０１５８】
これにより、経過時間分のＬＢカウンタ処理を１パケット時間にまとめて行うことができる。本演算部のアルゴリズムを図４６に示す。なお、本例では読み出し要求があり、バッファが空きであったＱｏＳについては減算処理を行うが、これはシステムのポリシーにより減算を行わない、あるいはカウンタを止める等の処理を行ってもよい。
【０１５９】
ここで、経過時間カウンタがＭＡＸ値を越えてしまった場合に値が０に戻ってしまうと、十分時間がたっているのにも拘わらず加算値が小さくなり帯域外と判定される可能性がある。経過時間カウンタがＭＡＸ値を越えるということはその間入力パケットがないケースであると想定されるため、読み出し判定が遅れることも許容できるが、それを防ぎたい場合は、カウンタをＭＡＸ値で止めておくことで対処可能である。
【０１６０】
次に、図４７に代表カウンタの別の構成例を示す。ここではカウンタは用いず、前回選択した時間を保持しておくことで、経過時間を計測する。スケジューラより読み出し回線が通知されると、ＲＡＭより対応する回線の前回選択時間を読み出す。そしてその値と内部時計カウンタによって示される現在時刻の差分をとり、前回選択からの経過時間を求める。
【０１６１】
同時に、対応するＲＡＭの値を現時刻に書き換える。これにより代表カウンタと同等の動作を行うことができる。ＲＡＭのアクセス数は１パケット時間にＲ／Ｗ一回ずつであり、実現可能である。よって、ハードウェアの大きいカウンタではなくＲＡＭを用いて構成できるため、ハードウェア量が削減可能である。
【０１６２】
ここで、内部時計カウンタの周期を経過時間が越えてしまった場合、十分時間がたっているのにも拘わらず加算値が小さくなり帯域外と判定される可能性がある。経過時間が内部時計カウンタの周期を越えるということはその間入力パケットがないケースであると想定されるため、読み出し判定が遅れることも許容できる。しかしこれを防ぎたい場合は、経過時間保持ＲＡＭに有効フラグｂｉｔを追加し、有効フラグビットを周期監視することで対処可能である。
【０１６３】
図４８に周期監視方式例を示す。周期監視用の回線指示カウンタを用意し、その回線指示カウンタに対応する経過時間に対し、有効フラグが有効である場合、現在時刻からの差分（経過時間）を算出する。そしてその差分が判定しきい値を越えていた場合、有効フラグを無効に書き換える。そして読み出し回線の経過時間算出時、経過時間が無効時は経過時間を内部時計カウンタのＭＡＸ値として通知する。これにより、経過時間が小さくなってしまうことを防ぐことが可能である。周期監視用ＲＡＭアクセスはＲ／Ｗ一回ずつの増加で済む。
【０１６４】
また、別の方法として内部時計の１周期をいくつかの領域に分割し、現在時刻が属する領域にしたがって、クリア対象の領域に属する選択時間の有効フラグをクリアする方式がある。
【０１６５】
図２７の左半図Ａに、４つの領域に分割した場合の有効時間チェック方式の例を示す。例えば現在時刻がＡに続する場合は、Ｂの領域について有効フラグのクリアを行う。領域の分割数は、一つの領域以内で全回線のチェックが終わるだけの時間以上あればよい。例えば分割数が４の場合、上位２ｂｉｔだけをチェックすればよいので、回路が簡易化できる。
【０１６６】
また、入力パケットがしばらくなく経過時間が大きいケースにおいて、加算値後のＬＢカウンタが大きくなりすぎてしばらく読み出し対象になり続ける可能性がある。これに対し、ＬＢカウンタに上限値を設け、計算結果が上限値を越えた場合は上限値に戻す処理を行うことで回避できる。
【０１６７】
【実施例１３】
本実施例では、図９に示すように１チップまたは１パッケージあたりのｍ本の入力回線より入力されるセルをセルのヘッダ領域に付与される出回線情報に基づいて降順、または昇順にソーティングして、ｍ本の出力回線に出力できる単位ソータをＮ／ｍ個ならべて、Ｎ方路の入力バッファに接続する。
【０１６８】
当該単位ソータのｍ本のハイウェイ２分割して、図９のように次の段の単位ソータに接続する。このとき線長遅延調整用のダミーの単位ソータを除けば、この段は１段目より一つ分単位ソータが少ない。このような１段目と２段目を１組みとして、Ｎ／ｍ組み接続して、全体として、Ｎ入力Ｎ出力のソータ網を構成する。
【０１６９】
トータルのチップ数は線長遅延調整用のダミーの単位ソータを除けば、（２Ｎ／ｍ−１）×Ｎ／ｍ個で構成される。
また、線長遅延調整用のダミーの単位ソータは線長遅延を別の回路で調整するか線長遅延を単位ソータで吸収できるのならなくてもよい。
【０１７０】
【実施例１４】
本実施例では、図１０に示すように、１チップまたは１パッケージあたりの本数の入力回線より入力されるセルをセルのヘッダ領域に付与される出回線情報に基づいて降順、または昇順にソーティングして、ｍ本の出力回線に出力できる単位ソータをＮ／ｍ個ならべて、Ｎ方路の入力バッファに接続する。当該単位ソータのｍ本のハイウェイ２分割して、半分を運用用、残りの半分を拡張用として割り当て、図１０のように接続する。図１０の上段図と下段図とは等価構成を示している。
【０１７１】
また１単位ソータのみ使用する場合は単位ソータＡのみを使用し、拡張時は拡張用のハイウェイに単位ソータＢ，Ｃを接続し、順次単位ソータＥ，Ｄ，Ｆ、単位ソータＩ，Ｇ，Ｈ，Ｊという順に接続しながらソータ網の規模を拡大する。
【０１７２】
【実施例１５】
本実施例では、図１１および図４９で示すフロー図のように前述のスケジューリングにより、有効セルに対して、各入力回線より転送するセルの出回線番号を決定した後、出回線番号が決定しなかった各入力回線に対して、有効セル確定済出回線番号を除いて順次若番号より、空きセルに対する出回線番号を割り当て、あらかじめ出回線番号を割り当てた有効セルとともにソータ網へ転送する。
【０１７３】
このとき、空きセルに対する出回線番号の割り当ては有効セルに対する番号割り当てとは異なり競合制御や回線間のフェアネスの考慮は不要なので、一つのラウンドロビンポインタを最若番号から最古番号へ一巡する間に決定できる。
【０１７４】
また、有効セルに対する出回線番号の割り当ては、スケジューリング処理部が、優先度ポインタを示す優先度パターンからＮパターン分だけ順次スケジューリングを行い、次回のスケジューリング周期に該優先度パターンの開始番号を更新するようにしてもよい。
【０１７５】
【実施例１６】
本実施例では、図１２および図５０に示すフロー図のように全入力回線、出力回線に対して同一入力回線、または同一出力回線での優先度は異なるように優先度をあらかじめ割り当てておき、その優先度にしたがって、順次各入力回線に対する出回線番号を決定するスケジューリングを行うようにする。そして、最優先である優先度１のスケジューリング時、キューにデータがある入力回線は有効セルに対する読み出し回線として確定するが、キューにデータのない入力回線に対しても空きセルに対する仮の確定回線とする。
【０１７６】
次に優先度２に対するスケジューリングを行う際に、優先度２に対応するキューにデータがあり、既に有効セルに対して同一入力回線または同一出力回線が確定していた場合には、優先度２の有効セルの確定は行わないが、空きセルに対して同一入力回線または同一出力回線が確定していた場合には優先度２の有効セルの確定を行う。
【０１７７】
このとき優先度２と同一入力回線または同一出力回線の優先度1について空きセルに対する仮の確定が設定されている場合には仮確定をはずす。
その後、優先度２に対応するキューにデータがないものについて、同一入力回線、または同一出力回線について、有効セルに対する確定、または空きセルに対する仮の確定がないときは、当該優先度2を仮確定とする。
【０１７８】
以下同様の処理を全優先度について行い、最終的に有効セルに対する確定、または空きセルに対する仮の確定が行われているものを最終的に確定とする。
【０１７９】
【実施例１７】
本実施例では、図１４に示すようにシステムの初期状態やスイッチの増設時等のセルレベルでの位相同期が必要となった際、スケジューラ側より各入力バッファに対して順次出方路番号、およびシーケンス番号が増加するような同期用のセルパターンを送出する。
【０１８０】
この際に、隣り合う入力回線からのセルのシーケンス番号は一致させ、出方路番号は１ずつシフトしておく。単位スイッチの最小単位となるＡより位相同期をはじめる場合、入力回線＃１と入力回線＃２より到着するセルの位相差としてΔＳＮ−ΔＴを算出し、ΔＳＮ−ΔＴ＝０のときはＯＫとし、ΔＳＮ−ΔＴ≠０のときは、位相差を入力バッファ＃２へ通知し、入力バッファ＃２では受信した位相差に基づいて、セル送出位相を変更する。
【０１８１】
なお、ΔＳＮ−ΔＴ＝０の判定処理は、ΔＳＮ−ΔＴ＝０になるまで繰り返し行う。ΔＳＮ−ΔＴ＝０となったとき、上段の単位スイッチＢおよび右側の単位スイッチＤに対して位相調整完了通知を行う。
【０１８２】
以上の処理を全単位スイッチの同期がとるまで繰り返す。なお、位相調整を行う単位スイッチが入力バッファに対して最近接でないときは、前段の単位スイッチと当該単位スイッチ間の位相調整用バッファについて、入力バッファと同様の処理を行うことにより実施する。
【０１８３】
図１４は、あらかじめ各入力回線間の位相差が３，２，１のときの位相調整の動作例を示している。また同期の開始点は、拡張しない場合には、位相遅延の最も大きいＧ側から行ってもよい。
【０１８４】
なお、図１３では各格子点が２入力２出力の最小の単位スイッチとなっているが、Ｎ入力Ｎ出力のスイッチを単位スイッチとして置き換えてもよい。
【０１８５】
【実施例１８】
本実施例では、図１５に示すようにシステムの初期状態やスイッチの増設時等のセルレベルでの位相同期が必要となった際、スケジューラ側より各入力バッファに対して通常セルでは使用しない出方路番号（例えば出方路番号の最大値＋１）を付与することによりブロードキャストセルであることを示し、さらに各スケジューラより入力するセルにシーケンス番号を付与し、当該シーケンス番号は同一タイミングで挿入するセルに関しては全入力回線で一致させて順次インクリメントしながら送出する。
【０１８６】
ブロードキャストセルを受信した各単位スイッチでは、ブロードキャストセルに対しては、全ての出方路へ転送する。単位スイッチの最小単位となるＡより位相同期をはじめる場合、入力回線＃１と入力回線＃２より到着するセルの位相差としてΔＳＮを算出し、ΔＳＮ＝０のときはＯＫとし、ΔＳＮ≠０のときは、位相差を入力バッファ＃２へ通知し、入力バッファ＃２では受信した位相差に基づいて、セル送出位相を変更する。
【０１８７】
なお、ΔＳＮ＝０の判定処理は、ΔＳＮ＝０になるまで繰り返し行う。ΔＳＮ＝０となったとき、上段の単位スイッチＢおよび右側の単位スイッチＤに対して位相調整完了通知を行う。
【０１８８】
以上の処理を全単位スイッチの同期がとるまで繰り返す。なお、位相調整を行う単位スイッチが入力バッファに対して最近接でないときは、前段の単位スイッチと当該単位スイッチ間の位相調整用バッファについて、入力バッファと同様の処理を行うことにより実施する。
【０１８９】
また同期の開始点は、拡張しない場合には、位相遅延の最も大きいＧ側から行ってもよい。
なお、図１６では各格子点が２入力２出力の最小の単位スイッチとなっているが、Ｎ入力Ｎ出力のスイッチと単位スイッチとして置き換えてもよい。またスイッチ構成としてはクロスバー型ではなくソータ網を適用してもよい。
【０１９０】
【実施例１９】
本実施例では、図１６に示すように各格子点に位相同期用のバッファを保持し、セルレベルでの位相外れを吸収する。
【０１９１】
なお、後段の単位スイッチのバッファと前段の単位スイッチの読み出し時の優先制御方法としては、単に後段のバッファにセルがあるときには、前段の単位スイッチのバッファからの読み出しを停止するバックプレッシャー型でもよいし、前段と後段につながる単位スイッチの数を考慮して、１／ｋ：１−１／ｋ（但しｋ：全回線数−回線番号）の割合で読み出すようにしてもよい。
【０１９２】
【発明の効果】
以上述べたように、本発明では、均等、不均等負荷のもとでも特性の劣化がなく、かつ、高速な繰り返しスケジューリングや複雑な演算処理を必要とせず、簡素でかつ処理速度がデバイス能力に依存しないスケジューリングシステムを実現できる。
【０１９３】
【図面の簡単な説明】
【図１】 本発明の基本原理図
【図２】 従来技術における入力バッファ型スイッチの問題点を説明するための図
【図３】 従来技術における入力バッファ型スイッチの構成図
【図４】 従来技術におけるクロスバー方式の説明図
【図５】 従来技術におけるバッチャーソータ方式の説明図
【図６】 従来技術におけるバンヤン網の説明図
【図７】 従来技術におけるセルとフレームパルスとを同期させる技術の説明図
【図８】 本発明のスケジューラ装置のブロック構成図
【図９】 本発明の原理図（１７）
【図１０】 本発明の原理図（１８）
【図１１】 本発明の原理図（１９）
【図１２】 本発明の原理図（２０）
【図１３】 本発明の原理図（２１）
【図１４】 本発明の原理図（２１）
【図１５】 本発明の原理図（２２）
【図１６】 本発明の原理図（２３）
【図１７】 実施例１のシステム構成を示すブロック図
【図１８】 実施例１におけるハイウェイ間ポインタの反転制御を説明するための図
【図１９】 実施例２におけるパイプライン処理時のポインタ制御を説明するための図
【図２０】 実施例２におけるスケジューリング処理部を集中背部した場合のブロック図
【図２１】 実施例２におけるスケジューリング処理部を分散配備した場合のブロック図
【図２２】 実施例３における不均等負荷時における入力回線と出力回線との関係を示す説明図
【図２３】 実施例３における送出セル数を到着セル数に制限する場合のフロー図
【図２４】 実施例３における送出セル数を規制する場合のフロー図
【図２５】 実施例４における最優先送出回線を到着セル数の割合で決定する方法を説明する図
【図２６】 実施例４における最優先送出ポインタを用いたスケジューリングフロー図
【図２７】 実施例５においてキュー長を用いた最優先送出回線決定方法を説明するための図
【図２８】 実施例５におけるキュー長ベースの負荷観測のためのフロー図
【図２９】 実施例５においてキュー長ワークカウンタ設定値の決定方法についての説明図
【図３０】 実施例５におけるキュー長ベースの最優先送出ポインタを用いた制御フロー図
【図３１】 実施例６における分散スケジューラ型入力バッファスイッチを説明するための図
【図３２】 実施例６におけるスケジューラの拡張方法を説明するための図
【図３３】 実施例６における分散スケジューラ拡張構成を説明するための図
【図３４】 実施例６における遅延ブロックの動き示す説明図
【図３５】 実施例７におけるＱｏＳ制御のためのブロック図
【図３６】 実施例７におけるＱｏＳ制御のフロー図
【図３７】 実施例８におけるＱｏＳ制御のフロー図
【図３８】 実施例９におけるＱｏＳ制御のためのブロック図
【図３９】 実施例９におけるＱｏＳ制御のフロー図
【図４０】 実施例１０におけるＱｏＳ制御のためのブロック図
【図４１】 実施例１０における帯域制御フロー図
【図４２】 実施例１１における帯域制御フロー図
【図４３】 実施例１２における入力バッファの構成図
【図４４】 実施例１２における入力バッファのＱｏＳ制御部のブロック構成図
【図４５】 実施例１２における代表カウンタと演算部のブロック構成図
【図４６】 実施例１２における演算部の動作アルゴリズムを示すフロー図
【図４７】 実施例１２における代表カウンタの構成例を示す図
【図４８】 実施例１２における選択時間の周期監視の説明図
【図４９】 実施例１５における処理フロー図
【図５０】 実施例１６における処理フロー図
【図１】
0003684308.tif 000004
【図２】
0003684308.tif 000005
【図３】
0003684308.tif 000006
【図４】
0003684308.tif 000007
【図５】
0003684308.tif 000008
【図６】
0003684308.tif 000009
【図７】
0003684308.tif 000010
【図８】
0003684308.tif 000011
【図９】
0003684308.tif 000012
【図１０】
0003684308.tif 000013
【図１１】
0003684308.tif 000014
【図１２】
0003684308.tif 000015
【図１３】
0003684308.tif 000016
【図１４】
0003684308.tif 000017
【図１５】
0003684308.tif 000018
【図１６】
0003684308.tif 000019
【図１７】
0003684308.tif 000020
【図１８】
0003684308.tif 000021
【図１９】
0003684308.tif 000022
【図２０】
0003684308.tif 000023
【図２１】
0003684308.tif 000024
【図２２】
0003684308.tif 000025
【図２３】
0003684308.tif 000026
【図２４】
0003684308.tif 000027
【図２５】
0003684308.tif 000028
【図２６】
0003684308.tif 000029
【図２７】
0003684308.tif 000030
【図２８】
0003684308.tif 000031
【図２９】
0003684308.tif 000032
【図３０】
0003684308.tif 000033
【図３１】
0003684308.tif 000034
【図３２】
0003684308.tif 000035
【図３３】
0003684308.tif 000036
【図３４】
0003684308.tif 000037
【図３５】
0003684308.tif 000038
【図３６】
0003684308.tif 000039
【図３７】
0003684308.tif 000040
【図３８】
0003684308.tif 000041
【図３９】
0003684308.tif 000042
【図４０】
0003684308.tif 000043
【図４１】
0003684308.tif 000044
【図４２】
0003684308.tif 000045
【図４３】
0003684308.tif 000046
【図４４】
0003684308.tif 000047
【図４５】
0003684308.tif 000048
【図４６】
0003684308.tif 000049
【図４７】
0003684308.tif 000050
【図４８】
0003684308.tif 000051
【図４９】
0003684308.tif 000052
【図５０】
0003684308.tif 000053