(57)【特許請求の範囲】
【請求項１】
複数のセルバッファ回路と、
前記セルバッファ回路それぞれに対応して設けられたセル有無フラグを送出する複数のセル有無フラグ送出回路と、
前記セルバッファ回路それぞれに対応して設けられたウエイト有無フラグを送出する複数のウエイト有無フラグ送出回路と、
前記セルバッファ回路それぞれに対応して設けられたカウント初期化フラグを送出する複数のカウント初期化フラグ送出回路と、
各セルバッファ回路に対応するウエイト値を記憶するウエイトメモリと、
各セルバッファ回路に対応するカウント値を記憶するカウントメモリと、
セル出力回路と、
を有し、
セルを受信するとそのセルに対応する前記セルバッファ回路に当該セルが書き込まれ、前記セル有無フラグ送出回路は対応するセルバッファ回路のセルの有無を記憶し、前記セル出力回路は全てのセル有無フラグ、ウエイト有無フラグ及びカウント初期化フラグの状態を入力し、前記セルバッファ回路内にセルがありかつウエイトがあるか、または前記セルバッファ回路内にセルがありかつカウント初期化フラグが有意の前記セルバッファ回路に対し、ラウンドロビンにより１つの前記セルバッファ回路を選択し、該セルバッファ回路からセルを出力し、また各セルバッファ回路全てについて、対応するセル有無フラグが前記セルバッファ回路内にセルが無いことを示しているか、またはウエイトフラグがウエイトが無いことを示している場合、全てのカウント初期化フラグを有意にし、前記セルバッファ回路に対応するカウント初期化フラグが無意の場合、出力するセルに対応する前記カウントメモリ内のカウント値を１減算し、減算した結果カウント値が０になったときは、ウエイトフラグをウエイトが無い状態にし、前記セルバッファ回路に対応するカウント初期化フラグが有意の場合、出力するセルに対応するカウント値を対応する前記ウエイトメモリ内のウエイト値とし、該ウエイト値から１を減算した値を対応するカウントメモリ内のカウント値とし、また対応するウエイトフラグをウエイトがある状態にすることを特徴とするウエイテッドラウンドロビン回路。
【請求項２】
複数のセルバッファ回路と、
前記セルバッファ回路それぞれに対応して設けられたセル有無フラグを送出する複数のセル有無フラグ送出回路と、
前記セルバッファ回路それぞれに対応して設けられたウエイト有無フラグを送出する複数のウエイト有無フラグ送出回路と、
前記セルバッファ回路それぞれに対応して設けられたカウント初期化フラグを送出する複数のカウント初期化フラグ送出回路と、
各セルバッファ回路に対応するウエイト値を記憶するウエイトメモリと、
各セルバッファ回路に対応するカウント値を記憶するカウントメモリと、
セル出力回路と、
を有し、
セルを受信するとそのセルに対応する前記セルバッファ回路にセルが書き込まれ、前記セル有無フラグ送出回路は対応する前記セルバッファ回路のセルの有無を記憶し、前記セル出力回路は全てのセル有無フラグ、ウエイト有無フラグ及びカウント初期化フラグの状態を入力し、前記セルバッファ回路内にセルがありかつウエイトがあるか、または前記セルバッファ回路内にセルがありかつカウント初期化フラグが有意の前記セルバッファ回路に対し、ラウンドロビンにより１つの前記セルバッファ回路を選択し、該セルバッファ回路からセルを出力し、また前記各セルバッファ回路全てについて、対応するセル有無フラグが前記セルバッファ回路内にセルが無いことを示しているか、またはウエイトフラグがウエイトが無いことを示している場合、全てのカウント初期化フラグを有意にし、前記セルバッファ回路に対応するカウント初期化フラグが無意の場合、出力するセルに対応する前記カウントメモリ内のカウント値を１加算し、加算した結果カウント値が対応する前記ウエイトメモリのウエイト値と等しくになったときは、ウエイトフラグをウエイトが無い状態にし、前記セルバッファ回路に対応するカウント初期化フラグが有意の場合、出力するセルに対応する前記カウントメモリ内のカウント値を０とし、０に１を加算した値を対応する前記カウントメモリのカウント値とし、また対応するウエイトフラグをウエイトがある状態にすることを特徴とするウエイテッドラウンドロビン回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＡＴＭ（Asynchronous Transfer Mode：非同期転送モード）セルを伝送する装置において、複数のサービスクラスを実現するウエイテッドラウンドロビン（Weighted Round-Robin）回路に関する。
【０００２】
【従来の技術】
図７は、信学技法TECHNICAL REPORT OF IEICE SSE96-95(1996-10）「ＡＢＲ、ＵＢＲクラスに対するスケジューリング方式の評価」に示されたウエイテッドラウンドロビンを説明するための図である。図７には、例えばそれぞれ異なるサービスに対応して設けられ、対応したサービスのセルを内部のセルバッファに蓄積するセルバッファ回路１，２と、セルバッファ回路１，２を制御し、ウエイテッドラウンドロビンの規則に従ってセルを出力するセル出力回路３とが示されている。
【０００３】
ウエイテッドラウンドロビンの規則では、セルバッファ回路１，２にセルが有るか無いかを、例えばセルバッファ回路１から検索し、セルがあった場合はそのセルバッファ回路１のセルを出力し、セルが無かった場合は次のセルバッファ回路２にセルがあるか無いかを検索し、セルがあった場合はそのセルバッファ回路２のセルを出力するものである。また、この規則では、セルバッファ回路１にセルがあった場合、次のセル時間での検索は、次のセルバッファ回路２から開始し、セルが無かった場合は、その次の、つまり最初に戻ってセルバッファ回路１の検索を行う。なお、１セル時間の間に次のセル出力のためにラウンドロビンを行いセルバッファ回路を選択することになる。更に、この規則では、各セルバッファ回路に対しウエイトを設定し、１セル出力する毎に対応するセルバッファ回路のウエイト値を１つずつ減算し、ウエイトを全て消費したセルバッファ回路は初期化によりウエイト値が回復されるまで選択されないようにする。
【０００４】
図７では、セルバッファ回路１のウエイトを２とし、セルバッファ回路２のウエイトを１とした場合を例示している。また、図７には図示されていないが、セルバッファ回路１，２それぞれに対応しカウントダウンを行うカウンタが設けられており、上記ウエイトはカウンタの初期値に反映される。つまり、セルバッファ回路１対応のカウンタの初期値は２、セルバッファ回路２対応のカウンタの初期値は１となる。また、セルバッファ回路１には、Ａ１からＡ６のセルが蓄積され、セルバッファ回路２にはＢ１からＢ３のセルが蓄積されているものとしている。この図７の例を用いて従来のウエイテッドラウンドロビン回路の動作について説明する。
【０００５】
セル出力回路３は、最初、セルバッファ回路１からセルが蓄積されているかを検索する。この例の場合、セルが蓄積されているので、セルバッファ回路１はＡ１を出力する。そして、セルバッファ回路１に対応するカウンタのカウント値を１減算して１にする。次に出力するセルは、ウエイテッドラウンドロビンの規則に従うとセルバッファ回路２に蓄積されているＢ１になる。このとき、セルバッファ回路２に対応するカウンタのカウント値を１減算して０にする。ウエイテットラウンドロビンの規則では、カウント値が０になったセルバッファ回路からはセルを出力させない。よって、次に出力するセルはセルバッファ回路１に蓄積されているＡ２となる。このとき、セルバッファ回路１に対応するカウンタの値を１減算して０にする。ウエイテッドラウンドロビンの規則では、全てのセルバッファ回路１，２においてカウント値が０またはセルバッファにセルが蓄積されていない状態になると、全てのカウンタのカウント値を初期値に戻すので、セルバッファ回路１に対応するカウンタのカウント値は初期状態の２となり、セルバッファ回路２に対応するカウンタのカウント値は初期状態の１となる。このようにして初期状態に戻ると、これ以降は上記と同様に動作してセルＡ３，Ｂ２，Ａ４，Ａ５，Ｂ３，Ａ６が順次出力される。
【０００６】
図７に示した例では、セル出力回路３から出力されているセルに関して、セルバッファ回路１から出力されたセル数とセルバッファ回路２から出力されたセル数の比が２対１になっており、これは、ウエイトの比に等しい。このように、ウエイテッドラウンドロビン回路では、ウエイトに比例してセルを出力することができ、サービス毎にウエイトを変えて使用すれば、サービスに優先度を持たせることができる。
【０００７】
図８にウエイテッドラウンドロビン回路のサービス例を示す。図８には、前述したセルバッファ回路１，２それぞれに対応させて接続された端末４，５が示されている。各端末４，５は、対応するセルバッファ回路１，２にセルを送ることになるが、この構成においてウエイト比を図７と同様に２対１にしておけば、端末４，５の各出力セルを１本の伝送路に多重するとき、端末４は端末５よりも倍のセルを出力することができ、より高速のサービスを受けていることになる。
【０００８】
ところで、前述したように、従来のウエイテッドラウンドロビン回路では、ウエイトを減算するカウンタを各セルバッファ回路に対応させて設けておく必要がある。従って、セルバッファ回路が増えた場合、これに比例してカウンタも増やす必要がある。セルバッファ回路が数個程度であれば、個別にカウンタを用意すれば良いが、セルバッファ回路を例えばコネクション毎に用意するような場合であってコネクション数が多い場合には、カウンタ数もこれに応じて多く用意する必要がある。このように、多数のカウンタを用意する必要がある場合は、メモリを使用してカウンタを構成することが一般的である。
【０００９】
図９は、従来からあるメモリを使用したカウンタの構成を示した図である。図９には、カウント値を記憶するカウントメモリ６と、カウント値を１ずつ減算する減算回路７とが示されている。カウントメモリ６は、Ｎ個のセルバッファ回路に対応させて＃１から＃Ｎまでカウント値をそれぞれ記憶している。次に、このカウントメモリ６を用いた動作について説明する。
【００１０】
例えば、＃２の内容をカウントダウンしたいときは、アドレスを＃２のアドレスとし、カウントメモリ６から＃２の値を読み出し、この値から減算回路７で１減算し、再び＃２のアドレスに書き込む。このように構成すれば、カウントメモリ６と減算回路７という規模の小さい構成でＮ個のカウンタを得ることができる。
【００１１】
【発明が解決しようとする課題】
しかしながら、ウエイテッドラウンドロビン回路では、全てのセルバッファ回路についてに対応するカウンタの値が０またはセルが蓄積されていない場合には全カウント値を一斉に初期値に戻す必要があるが、メモリでカウンタを構成するウエイテッドラウンドロビン回路では、カウンタ値を初期値に戻すためには１カウンタ（１アドレス）ずつ初期値を書き込んでいかなければならない。このため、カウンタ数が多くなると各カウンタへの初期値の書込み処理が次のセル時間の開始までに終了しない場合が発生する。例えば、ラウンドロビンを行いセルバッファ回路を選択するために必要な時間をα、カウント値を初期化するために必要な時間をβとすると、ウエイテッドラウンドロビン回路として正常に動作するためには、
α＋β＜１セル時間
という条件を満たす必要がある。例えば、１５０Ｍｂ／ｓ回線にセルを出力する場合、１セル時間は約２．７μ秒の固定時間となるが、セルバッファ回路数が増えればβが増えることになるので、そのセルバッファ回路数によっては上記条件式を満たすことができなくなってしまう。これにより、多数のセルバッファ回路を搭載するＡＴＭセルを伝送する装置には、メモリでカウンタを構成するウエイテッドラウンドロビン回路を使用できないという問題があった。
【００１２】
本発明は以上のような問題を解決するためになされたものであり、その目的は、メモリを使用してカウンタを構成した場合でもセルバッファ回路の数に関係なく使用することのできるウエイテッドラウンドロビン回路を提供することにある。
【００１３】
【課題を解決するための手段】
以上のような目的を達成するために、本発明に係るウエイテッドラウンドロビン回路は、複数のセルバッファ回路と、前記セルバッファ回路それぞれに対応して設けられたセル有無フラグを送出する複数のセル有無フラグ送出回路と、前記セルバッファ回路それぞれに対応して設けられたウエイト有無フラグを送出する複数のウエイト有無フラグ送出回路と、前記セルバッファ回路それぞれに対応して設けられたカウント初期化フラグを送出する複数のカウント初期化フラグ送出回路と、各セルバッファ回路に対応するウエイト値を記憶するウエイトメモリと、各セルバッファ回路に対応するカウント値を記憶するカウントメモリと、セル出力回路とを有し、セルを受信するとそのセルに対応する前記セルバッファ回路に当該セルが書き込まれ、前記セル有無フラグ送出回路は対応するセルバッファ回路のセルの有無を記憶し、前記セル出力回路は全てのセル有無フラグ、ウエイト有無フラグ及びカウント初期化フラグの状態を入力し、前記セルバッファ回路内にセルがありかつウエイトがあるか、または前記セルバッファ回路内にセルがありかつカウント初期化フラグが有意の前記セルバッファ回路に対し、ラウンドロビンにより１つの前記セルバッファ回路を選択し、該セルバッファ回路からセルを出力し、また各セルバッファ回路全てについて、対応するセル有無フラグが前記セルバッファ回路内にセルが無いことを示しているか、またはウエイトフラグがウエイトが無いことを示している場合、全てのカウント初期化フラグを有意にし、前記セルバッファ回路に対応するカウント初期化フラグが無意の場合、出力するセルに対応する前記カウントメモリ内のカウント値を１減算し、減算した結果カウント値が０になったときは、ウエイトフラグをウエイトが無い状態にし、前記セルバッファ回路に対応するカウント初期化フラグが有意の場合、出力するセルに対応するカウント値を対応する前記ウエイトメモリ内のウエイト値とし、該ウエイト値から１を減算した値を対応するカウントメモリ内のカウント値とし、また対応するウエイトフラグをウエイトがある状態にするものである。
【００１４】
他の発明に係るウエイテッドラウンドロビン回路は、複数のセルバッファ回路と、前記セルバッファ回路それぞれに対応して設けられたセル有無フラグを送出する複数のセル有無フラグ送出回路と、前記セルバッファ回路それぞれに対応して設けられたウエイト有無フラグを送出する複数のウエイト有無フラグ送出回路と、前記セルバッファ回路それぞれに対応して設けられたカウント初期化フラグを送出する複数のカウント初期化フラグ送出回路と、各セルバッファ回路に対応するウエイト値を記憶するウエイトメモリと、各セルバッファ回路に対応するカウント値を記憶するカウントメモリと、セル出力回路とを有し、セルを受信するとそのセルに対応する前記セルバッファ回路にセルが書き込まれ、前記セル有無フラグ送出回路は対応する前記セルバッファ回路のセルの有無を記憶し、前記セル出力回路は全てのセル有無フラグ、ウエイト有無フラグ及びカウント初期化フラグの状態を入力し、前記セルバッファ回路内にセルがありかつウエイトがあるか、または前記セルバッファ回路内にセルがありかつカウント初期化フラグが有意の前記セルバッファ回路に対し、ラウンドロビンにより１つの前記セルバッファ回路を選択し、該セルバッファ回路からセルを出力し、また前記各セルバッファ回路全てについて、対応するセル有無フラグが前記セルバッファ回路内にセルが無いことを示しているか、またはウエイトフラグがウエイトが無いことを示している場合、全てのカウント初期化フラグを有意にし、前記セルバッファ回路に対応するカウント初期化フラグが無意の場合、出力するセルに対応する前記カウントメモリ内のカウント値を１加算し、加算した結果カウント値が対応する前記ウエイトメモリのウエイト値と等しくになったときは、ウエイトフラグをウエイトが無い状態にし、前記セルバッファ回路に対応するカウント初期化フラグが有意の場合、出力するセルに対応する前記カウントメモリ内のカウント値を０とし、０に１を加算した値を対応する前記カウントメモリのカウント値とし、また対応するウエイトフラグをウエイトがある状態にするものである。
【００１５】
【発明の実施の形態】
以下、図面に基づいて、本発明の好適な実施の形態について説明する。
【００１６】
実施の形態１．
図１は、本発明に係るウエイテッドラウンドロビン回路の一実施の形態を示したブロック構成図である。図１には、３つのセルバッファ回路１０，２０，３０と各セルバッファ回路１０，２０，３０に対応させてセル有無フラグ送出回路１１，２１，３１、ウエイト有無フラグ送出回路１２，２２，３２及びカウント初期化フラグ送出回路１３，２３，３３がそれぞれ設けられている。また、各セルバッファ回路１０，２０，３０の優先度を表すウエイトが予め設定されているウエイトメモリ４１と、各セルバッファ回路１０，２０，３０のカウント値を保持するカウントメモリ４２とが示されている。このカウント値は、各セルバッファ回路１０，２０，３０のウエイトを初期値とし、該当するセルバッファ回路１０，２０，３０からセルが送出される度に減算される。更に、ウエイテッドラウンドロビン制御を行うセル出力回路４３が示されている。なお、セル出力回路４３が行うウエイテッドラウンドロビン制御の一つに、１セル時間内においてウエイテッドラウンドロビンの規則に従ってラウンドロビンを行うことで次のセル時間におけるセル出力のためにセルバッファ回路１０，２０，３０を選択し、その選択したセルバッファ回路１０，２０，３０からのセルを送出する処理が含まれる。
【００１７】
前述したセル有無フラグ送出回路１１，２１，３１は、対応するセルバッファ回路１０，２０，３０にセルが蓄積されているときには無意のセル有無フラグを、蓄積されているセルがないときには有意のセル有無フラグをセル出力回路４３へ送出する。ウエイト有無フラグ送出回路１２，２２，３２は、セル出力回路４３の制御に従い有意又は無意のウエイト有無フラグを送出する。具体的にいうと、カウントメモリ４２の対応するカウント値が減算された結果０になったときに、セル出力回路４３の制御に応じて有意のウエイト有無フラグを送出し、カウントメモリ４２の対応するカウント値が０でなくなったときにセル出力回路４３の制御に応じて無意のウエイト有無フラグを送出する。カウント初期化フラグ送出回路１３，２３，３３は、セル出力回路４３の制御に従い有意又は無意のカウント初期化フラグを送出する。具体的にいうと、同じセル時間内において必要に応じてウエイト有無フラグの値が切り替わった後、全てのセルバッファ回路１０，２０，３０においてセルバッファ回路１０，２０，３０それぞれに対応したセル有無フラグ又はウエイト有無フラグのいずれか一方または両方が有意であるときに全てのカウント初期化フラグ送出回路１３，２３，３３は揃って有意のカウント初期化フラグを送出する。つまり、カウント初期化フラグは、全部同時に無意から有意に切り替わる。また、セルバッファ回路１０，２０，３０がセルを送出した際に対応するカウント初期化フラグが有意であれば、無意のカウント初期化フラグに切り替えて送出する。
【００１８】
なお、本実施の形態における各回路１１〜３１，１２〜３２，１３〜３３は、フリップフロップ回路で実現するものとし、有意をＨｉｇｈ信号「Ｈ」、無意をＬｏｗ信号「Ｌ」で表すことにする。もちろん、フリップフロップ以外の回路で構成してもよいし、有意と無意を表す「Ｈ」と「Ｌ」を逆にしてもよい。また、本実施の形態では、便宜上、３つのセルバッファ回路１０，２０，３０を有する構成を例にして説明するが、２つでもよいしより多くのセルバッファ回路を設けるようにしてもよい。また、本実施の形態では、図９に示したカウンタをそのまま使用することができる。
【００１９】
以上の構成を有する本実施の形態において特徴的なことは、各セルバッファ回路１０，２０，３０に各回路１１〜３１，１２〜３２，１３〜３３を対応させて設け、後述するように各フラグの値の切替制御を行うことでカウントメモリ４２のカウント値を全て一斉に初期化しなくてもウエイテッドラウンドロビン制御を正常に行うことができるようにしたことである。これにより、カウントメモリ４２にカウント値を保持するようにしても多数のセルバッファ回路を搭載することができるようになる。
【００２０】
図２は、本実施の形態におけるウエイテッドラウンドロビン回路の動作を説明するときの初期状態の例を示した図である。図２に示した初期状態においてセルバッファ回路１０，２０，３０に蓄積されているセルを示す。図２によると、セルバッファ回路１０にはＡ１，Ａ２，Ａ３，Ａ４のセルが蓄積され、セルバッファ回路２０にはＢ１のセルが蓄積され、セルバッファ回路３０にはＣ１，Ｃ２，Ｃ３のセルが蓄積されているものとする。また、セルバッファ回路１０，２０，３０のウエイトは、それぞれ３，２，２としている。また、初期状態およびウエイトを元に戻したとき、ラウンドロビンはセルバッファ回路１０から始まり、セルバッファ回路２０、次にセルバッファ回路３０と昇順に回すものとして説明する。なお、セル入力をせず、対応するセル有無フラグをセルが無い状態（有意）に固定し、ウエイト有無フラグをカウント値が０の状態（有意）に固定し、カウント初期化フラグを無意に固定すれば、そのセルバッファ回路は、ラウンドロビンの対象に含まれないようにすることができる。また、カウントメモリ４２のセルバッファ回路１０，２０，３０に対応する各アドレスにＣＰＵ等からウエイト値３，２，２を初期値として予め設定しておく。更に、ウエイトメモリ４１のセルバッファ回路１０，２０，３０に対応する各アドレスにもそれぞれ３，２，２を予め設定しておく。
【００２１】
図３は、実施の形態１におけるウエイテッドラウンドロビン回路の動作に応じて遷移するセル数、カウント値及び各フラグの状態を示した図である。図３におけるセル時刻１〜９は、それぞれ１セル時間に相当する。本実施の形態では、セル時刻１〜８ではどのセルバッファ回路１０，２０，３０にもセルは入力されず、セル時刻９にてセルバッファ回路２０にセルが入力されるものとして説明する。
【００２２】
図４は、本実施の形態において１セル時間内に行われるセル出力回路４３の処理フローを示した図である。セル出力回路４３は、前回のウエイテッドラウンドロビンで出力することに決まったセルを１セル時間の最初から出力し、ウエイテッドラウンドロビン終了後、次セル時刻で出力するセルを該当するセルバッファ回路１０，２０，３０から入力する処理を開始するとともに、以下の動作を順次行う。
【００２３】
（１）現セル時刻で出力するセルに対応するウエイト有無フラグの設定処理
（２）カウント初期化フラグの設定処理
（３）ウエイテッドラウンドロビン
（４）次回出力するセルに対応するカウントメモリ４２からのカウント値の読出処理、または次回出力するセルに対応するウエイトメモリ４１からのウエイトの読出処理
（５）（４）で読み出したカウント値の１減算処理
（６）現セル時刻で出力するセルに対応するカウント値のカウントメモリ４２への書込処理
上記（１）におけるウエイト有無フラグの設定は、前述したように前セル時刻で行った（５）の処理結果が０以外のときセル有無フラグはセルが有る状態「Ｌ」にし、（５）の処理結果が０のときセル有無フラグはセルが無い状態「Ｈ」にする。
【００２４】
上記（２）におけるカウント初期化フラグの設定では、前述したように全てのセルバッファ回路１０，２０，３０においてセルバッファ回路１０，２０，３０それぞれに対応したセル有無フラグ又はウエイト有無フラグのいずれか一方または両方が有意であるときに全て揃って有意「Ｈ」にする。また、セルバッファ回路１０，２０，３０がセルを送出した際に有意であれば無意「Ｌ」にする。
【００２５】
上記（３）においてウエイテッドラウンドロビンの選択の対象となるのは、セルが蓄積されており（セル有無フラグが無意「Ｌ」）、かつウエイト有無フラグがウエイトが有る状態「Ｌ」を示しているか、あるいはカウント初期化フラグが有意「Ｈ」のセルバッファ回路１０，２０，３０である。以下、図３に基づき詳細な動作を説明する。なお、便宜上、以降の説明では、各回路１１〜３１，１２〜３２，１３〜３３が送出する各フラグに符号をつけることにする。
【００２６】
セル時刻１において、セル有無フラグ１１、２１、３１は、それぞれ「Ｌ」なので、各セルバッファ回路１０，２０，３０にセルが蓄積されていることを示している。また、ウエイト有無フラグ１２、２２、３２は、それぞれ「Ｌ」なので、各セルバッファ回路１０，２０，３０とも消費されていないウエイトが存在することを示している。よって、全てのセルバッファ回路１０，２０，３０ともラウンドロビンの対象となる。セル時刻１は初期状態なので、セル出力回路４３はセルバッファ回路１０を選択し、次のセル時刻２でセルＡ１を出力する準備をする。
【００２７】
セル時刻２において、セル出力回路４３はセルＡ１を出力する。これによりバッファ回路１０内のセル数は３となる。セル出力回路４３は、カウントメモリ４２の対応するアドレス内のカウント値を３から１を減算した値２とする。また、セル出力回路４３は、ウエイテッドラウンドロビンを行って次のセル出力のためにセルバッファ回路を選択する。ここでは、セル時刻１とウエイテッドラウンドロビンの対象となるセルバッファ回路に変更はないため、セルバッファ回路２０を選択し、セルＢ１をセル時刻３で出力する準備をする。セル時刻２においてその他の値に関して変更は無い。
【００２８】
セル時刻３において、セル出力回路４３はセルＢ１を出力する。これによりセルバッファ回路２０内のセル数は０となる。セル出力回路４３はカウントメモリ４２の対応するアドレス内のカウント値を２から１を減算した値１とする。また、セルバッファ回路２０にセルが無くなったので、セルバッファ回路２０はセル有無フラグ２１の値を有意「Ｈ」とし、セルが無い状態とする。この状態でセル出力回路４３はラウンドロビンを行うが、セル有無フラグ２１の状態からセルバッファ回路２０にセルが無いことを認識できるので、セルバッファ回路２０をウエイテッドラウンドロビンの対象から除外する。セル時刻２ではセルバッファ回路２０を選択したので、セル時刻３ではセルバッファ回路３０を選択してセル時刻４でセルＣ１を出力する準備をする。
【００２９】
セル時刻４において、セル出力回路４３はセルＣ１を出力する。これによりセルバッファ回路３０内のセル数は２となる。セル出力回路４３はカウントメモリ４２の対応するアドレス内のカウント値を２から１を減算した値１とする。その他の値に関して変更は無い。この状態でセル出力回路４３はウエイテッドラウンドロビンを行い、セルバッファ回路１０を選択しセル時刻５でセルＡ２を出力する準備をする。
【００３０】
セル時刻５において、セル出力回路４３はセルＡ２を出力する。これによりセルバッファ回路１０内のセル数は２となる。セル出力回路４３はカウントメモリ４２の対応するアドレス内のカウント値を２から１を減算した値１とする。その他の値に関して変更は無い。この状態でセル出力回路４３はウエイテッドラウンドロビンを行うが、セル有無フラグ２１の値がセルが無いことを示しているため、セルバッファ回路３０を選択しセル時刻６でセルＣ２を出力する準備をする。
【００３１】
セル時刻６において、セル出力回路４３はセルＣ２を出力する。これによりセルバッファ回路３０内のセル数は１となる。セル出力回路４３は、カウントメモリ４２の対応するアドレス内のカウント値を１から１を減算した値０とする。カウント値が０となったことで、セル出力回路４３はウエイト有無フラグ３２の値をウエイト無し状態を表す有意「Ｈ」とする。その他の値に関して変更は無い。この状態でセル出力回路４３はウエイテッドラウンドロビンを行いセルバッファ回路１０を選択しセル時刻７でセルＡ３を出力する準備をする。
【００３２】
セル時刻７において、セル出力回路４３はセルＡ３を出力する。これによりセルバッファ回路１０内のセル数は１となる。セル出力回路４３はカウントメモリ４２の対応するアドレス内のカウント値を１から１を減算した値０とする。カウント値が０となったことで、セル出力回路４３はウエイト有無フラグ１２の値をウエイト無し状態を表す有意「Ｈ」とする。この結果、カウント初期化フラグ１３，２３，３３を有意する前述した条件が満たされるので、セル出力回路４３は全カウント初期化フラグ１３，２３，３３を有意「Ｈ」とする。次に、セル出力回路４３は、この状態でウエイテッドラウンドロビンを行うが、カウント初期化フラグ１３，２３，３３が有意な場合、ウエイト有無フラグ１２，２２，３２に関係なく対応したセル有無フラグ１１，２１，３１にセルがあることを示しているセルバッファ回路１０，２０，３０をラウンドロビンの対象とするが、このセル時刻７のようにカウント初期化フラグ１３，２３，３３が全て有意であるときには、本実施の形態ではラウンドロビンの選択も初期化することとし、セルバッファ回路１０からラウンドロビンの選択を始める。このとき、セルバッファ回路１０にはセルが蓄積されているため、セル出力回路４３はセルバッファ回路１０を選択し、セル時刻８でセルＡ４を出力する準備をする。
【００３３】
セル時刻８において、セル出力回路４３はセルＡ４を出力する。これによりセルバッファ回路１０内のセル数は０となる。セル出力回路４３はカウント初期化フラグ１３が当該セル時刻８の開始時に有意であったので、ウエイトメモリ４１に設定されている対応するアドレス内のウエイト値３をカウント値の初期値として読み出し、その３から１を減算した値２をカウントメモリ４２の対応するアドレスにセルバッファ回路１０のカウント値として書き込む。また、セルバッファ回路１０はセル有無フラグ１１をセルが無い状態「Ｈ」とする。セル出力回路４３はウエイト有無フラグ１２をウエイトの有る状態「Ｌ」にし、更にカウント初期化フラグ１３を無意「Ｌ」にする。続けて、セル出力回路４３はウエイテッドラウンドロビンを行うが、セル有無フラグ２１がセルの無い状態「Ｈ」を示しているので、セルバッファ回路２０を選択せず、セルバッファ回路３０を選択してセルＣ３を出力する準備を始める。
【００３４】
セル時刻９において、セル出力回路４３はセルＣ３を出力する。これによりセルバッファ回路３０内のセル数は０となる。セル出力回路４３はカウント初期化フラグ３３が当該セル時刻９の開始時に有意であったので、ウエイトメモリ４１に設定されている対応するアドレス内のウエイト値２をカウント値の初期値として読み出し、その２から１を減算した値１をカウントメモリ４２の対応するアドレスにセルバッファ回路３０のカウント値として書き込む。また、セルバッファ回路３０はセル有無フラグ３１をセルが無い状態「Ｈ」とし、ウエイト有無フラグ３２をウエイトの有る状態「Ｌ」にし、更にカウント初期化フラグ３３を無意「Ｌ」にする。
【００３５】
ここで、セル時刻９においてセルバッファ回路２０にセルＢ２が入力されたとすると、セルバッファ回路２０内のセル数は１となり、セル有無フラグ２１はセルが有る状態「Ｌ」となる。これは説明を簡略化にするためであり、もしこの状態でセルが入力されないと、セル出力回路４３はセル時刻９でもカウント初期化フラグ１３，２３，３３を有意にすることになる。セル出力回路４３はセル時刻９においてもウエイテッドラウンドロビンを行う。この場合、セルバッファ回路２０を選択して、入力されたセルＢ２を出力する準備を行う。
【００３６】
以上のように、本実施の形態では動作するが、従来においてもセル時刻７においてウエイトメモリ４１の各ウエイト値を読み出し、カウントメモリ４２の各カウント値に書き込む動作を行えば、本実施の形態と同様のウエイテットラウンドロビン動作は可能である。しかしながら、セルバッファ回路数が増え、読出処理又は書込処理を行うウエイト値／カウント値の数が増えると１セル時間内で全ての読出／書込処理ができなくなる。本実施の形態では、セル時刻７において全てのカウント初期化フラグ１３，２３，３３を有意にし、セル時刻８，９において説明したように出力するセルに対応するウエイトメモリ４１のウエイト値を読み出し、１を減算してカウントメモリ４２内の対応するアドレスに書き込んでいるため、１セル時間に１回の読出／書込動作を行えばよい。これにより、セルバッファ回路数が多くなっても対応することができる。
【００３７】
実施の形態２．
上記実施の形態１では、セル出力回路４３はカウント初期化フラグが有意でない状態でセルを出力する場合、対応するカウントメモリ４２のカウント値を１減算し、カウント初期化フラグが有意な状態でセルを出力する場合、対応するカウント値をウエイトメモリ４１の対応するアドレスのウエイト値とし、このウエイト値から１を減算した値をカウントメモリ４２に書き込み、またカウント値が０になった場合にウエイト有無フラグをウエイトが無い状態「Ｈ」にした。
【００３８】
本実施の形態におけるセル出力回路４３は、カウント初期化フラグが有意でない状態でセルを出力する場合、対応するカウントメモリ４２の対応するカウント値を１加算し、カウント初期化フラグが有意な状態でセルを出力する場合、初期値として０をカウント値とし、その０に１を加算した値をカウントメモリ４２の対応するアドレスに設定し、またカウント値とウエイトメモリ４１内の対応するアドレスのウエイト値とが等しくなったときに当該ウエイト有無フラグをウエイトが無い状態「Ｈ」にするようにした。すなわち、カウントメモリ４２の各カウント値を、実施の形態１では初期値をウエイト値として減算していたのを、本実施の形態では初期値を０として加算するようにした。なお、本実施の形態のメモリを使用しカウントアップを行うカウンタは、図９において１減算する減算回路を１加算する加算回路に変えることで構成することができる。
【００３９】
本実施の形態におけるブロック構成は、図１と同じである。また、実施の形態１の図３及び図４に相当するフラグ値等の遷移及びセル出力回路４３の処理フローを図５及び図６に示す。以下、セルバッファ回路１０，２０，３０の初期状態を図２と同じものとして、本実施の形態の動作について説明する。なお、初期状態においてウエイトメモリ４１のセルバッファ回路１０，２０，３０に対応する各アドレスには、実施の形態１と同様にＣＰＵ等からそれぞれ３，２，２が予め設定されているものとする。ただ、カウントメモリ４２のセルバッファ回路１０，２０，３０に対応する各アドレスには、それぞれ０，０，０を初期値として予め設定しておく。その他の前提条件については実施の形態１と同様である。また、実施の形態１と同様にセル時刻１〜８ではどのセルバッファ回路１０，２０，３０にもセルは入力されず、セル時刻９にてセルバッファ回路２０にセルが入力されるものとして説明する。
【００４０】
セル出力回路４３は、前回のウエイテッドラウンドロビンで出力することに決まったセルを１セル時間の最初から出力し、ウエイテッドラウンドロビン終了後、次セル時刻で出力するセルを該当するセルバッファ回路１０，２０，３０から入力する処理を開始するとともに、以下の動作を順次行う。
【００４１】
（１）現セル時刻で出力するセルに対応するカウント値とウエイトメモリ４１の対応するウエイト値との比較処理と、対応するウエイト有無フラグの設定処理
（２）カウント初期化フラグの設定処理
（３）ウエイテッドラウンドロビン
（４）次回出力するセルに対応するカウントメモリ４２からのカウント値の読出処理、またはカウント値として０を使用する処理
（５）（４）で読み出したカウント値の１加算処理
（６）現セル時刻で出力するセルに対応するカウント値のカウントメモリ４２への書込処理
上記（１）において直前のセル時刻の（５）の処理結果とウエイトメモリ４１の対応するウエイト値が一致していたら、対応するウエイト有無フラグをウエイトが無い状態「Ｈ」にし、一致していなかったらウエイトがある状態「Ｌ」にする。なお、上記（２）、（３）に関しては実施の形態１と同様である。
【００４２】
セル時刻１において、セル有無フラグ１１、２１、３１は、それぞれ「Ｌ」なので、各セルバッファ回路１０，２０，３０にセルが蓄積されていることを示している。また、ウエイト有無フラグ１２、２２、３２は、それぞれ「Ｌ」なので、各セルバッファ回路１０，２０，３０とも消費されていないウエイトが存在することを示している。よって、全てのセルバッファ回路１０，２０，３０ともラウンドロビンの対象となる。セル時刻１は初期状態なので、セル出力回路４３はセルバッファ回路１０を選択し、次のセル時刻２でセルＡ１を出力する準備をする。
【００４３】
セル時刻２において、セル出力回路４３はセルＡ１を出力する。これによりバッファ回路１０内のセル数は３となる。セル出力回路４３は、カウントメモリ４２の対応するアドレス内のカウント値を０に１を加算した値１とする。セル出力回路４３は、このカウント値とウエイトメモリ４１の対応するアドレス内のウエイト値を読み出して一致するかを確認する。この場合、一致しないのでウエイト有無フラグ１２の値はウエイトが有る状態である「Ｌ」のままとする。この後、セル出力回路４３は、ウエイテッドラウンドロビンを行って次のセル出力のためにセルバッファ回路を選択する。ここでは、セル時刻１とウエイテッドラウンドロビンの対象となるセルバッファ回路に変更はないため、セルバッファ回路２０を選択し、セルＢ１をセル時刻３で出力する準備をする。セル時刻２においてその他の値に関して変更は無い。
【００４４】
セル時刻３において、セル出力回路４３はセルＢ１を出力する。これによりセルバッファ回路２０内のセル数は０となる。セル出力回路４３はカウントメモリ４２の対応するアドレス内のカウント値を０に１を加算した値１とする。セル出力回路４３は、このカウント値とウエイトメモリ４１の対応するアドレス内のウエイト値を読み出して一致するかを確認する。この場合、一致しないのでウエイト有無フラグ２２の値はウエイトが有る状態である「Ｌ」のままとする。また、セルバッファ回路２０にセルが無くなったので、セルバッファ回路２０はセル有無フラグ２１の値を有意「Ｈ」とし、セルが無い状態とする。この状態でセル出力回路４３はラウンドロビンを行うが、セル有無フラグ２１の状態からセルバッファ回路２０にセルが無いことを認識できるので、セルバッファ回路２０をウエイテッドラウンドロビンの対象から除外する。セル時刻２ではセルバッファ回路２０を選択したので、セル時刻３ではセルバッファ回路３０を選択してセル時刻４でセルＣ１を出力する準備をする。
【００４５】
セル時刻４において、セル出力回路４３はセルＣ１を出力する。これによりセルバッファ回路３０内のセル数は２となる。セル出力回路４３はカウントメモリ４２の対応するアドレス内のカウント値を０に１を加算した値１とする。セル出力回路４３は、このカウント値とウエイトメモリ４１の対応するアドレス内のウエイト値を読み出して一致するかを確認する。この場合、一致しないのでウエイト有無フラグ３２の値はウエイトが有る状態である「Ｌ」のままとする。その他の値に関して変更は無い。この状態でセル出力回路４３はウエイテッドラウンドロビンを行い、セルバッファ回路１０を選択しセル時刻５でセルＡ２を出力する準備をする。
【００４６】
セル時刻５において、セル出力回路４３はセルＡ２を出力する。これによりセルバッファ回路１０内のセル数は２となる。セル出力回路４３はカウントメモリ４２の対応するアドレス内のカウント値を１に１を加算した値２とする。セル出力回路４３は、このカウント値とウエイトメモリ４１の対応するアドレス内のウエイト値を読み出して一致するかを確認する。この場合、一致しないのでウエイト有無フラグ１２の値はウエイトが有る状態である「Ｌ」のままとする。その他の値に関して変更は無い。この状態でセル出力回路４３はウエイテッドラウンドロビンを行うが、セル有無フラグ２１の値がセルが無いことを示しているため、セルバッファ回路３０を選択しセル時刻６でセルＣ２を出力する準備をする。
【００４７】
セル時刻６において、セル出力回路４３はセルＣ２を出力する。これによりセルバッファ回路３０内のセル数は１となる。セル出力回路４３は、カウントメモリ４２の対応するアドレス内のカウント値を１に１を加算した値２とする。セル出力回路４３は、このカウント値とウエイトメモリ４１の対応するアドレス内のウエイト値を読み出して一致するかを確認する。この場合、一致しているので、セル出力回路４３は、ウエイトが無い状態であると認識し、ウエイト有無フラグ３２の値をウエイト無し状態を表す有意「Ｈ」とする。その他の値に関して変更は無い。この状態でセル出力回路４３はウエイテッドラウンドロビンを行いセルバッファ回路１０を選択しセル時刻７でセルＡ３を出力する準備をする。
【００４８】
セル時刻７において、セル出力回路４３はセルＡ３を出力する。これによりセルバッファ回路１０内のセル数は１となる。セル出力回路４３はカウントメモリ４２の対応するアドレス内のカウント値を２に１を加算した値３とする。セル出力回路４３は、このカウント値とウエイトメモリ４１の対応するアドレス内のウエイト値を読み出して一致するかを確認する。この場合、一致するので、セル出力回路４３はウエイト有無フラグ１２の値をウエイト無し状態を表す有意「Ｈ」とする。この結果、カウント初期化フラグ１３，２３，３３を有意する前述した条件が満たされるので、セル出力回路４３は全カウント初期化フラグ１３，２３，３３を有意「Ｈ」とする。次に、セル出力回路４３は、この状態でウエイテッドラウンドロビンを行うが、カウント初期化フラグ１３，２３，３３が有意な場合、ウエイト有無フラグ１２，２２，３２に関係なく対応したセル有無フラグ１１，２１，３１がセルがあることを示しているセルバッファ回路１０，２０，３０をラウンドロビンの対象とするが、このセル時刻７のようにカウント初期化フラグ１３，２３，３３が全て有意であるときには、本実施の形態ではラウンドロビンの選択も初期化することとし、セルバッファ回路１０からラウンドロビンの選択を始める。このとき、セルバッファ回路１０にはセルが蓄積されているため、セル出力回路４３はセルバッファ回路１０を選択し、セル時刻８でセルＡ４を出力する準備をする。
【００４９】
セル時刻８において、セル出力回路４３はセルＡ４を出力する。これによりセルバッファ回路１０内のセル数は０となる。セル出力回路４３はカウント初期化フラグ１３が当該セル時刻８の開始時に有意であったので、カウントメモリ４２の対応するアドレス内のカウント値を初期化つまり初期値０として、この０に１を加算してカウントメモリ４２の対応するアドレスにセルバッファ回路１０のカウント値として書き込む。セル出力回路４３は、このカウント値とウエイトメモリ４１の対応するアドレス内のウエイト値を読み出して一致するかを確認する。この場合、一致しないのでウエイト有無フラグ１２の値をウエイトが有る状態「Ｌ」にする。また、セルバッファ回路１０はセル有無フラグ１１をセルが無い状態「Ｈ」とする。更にカウント初期化フラグ１３を無意「Ｌ」にする。続けて、セル出力回路４３はウエイテッドラウンドロビンを行うが、セル有無フラグ２１がセルの無い状態「Ｈ」を示しているので、セルバッファ回路２０を選択せず、セルバッファ回路３０を選択してセルＣ３を出力する準備を始める。
【００５０】
セル時刻９において、セル出力回路４３はセルＣ３を出力する。これによりセルバッファ回路３０内のセル数は０となる。セル出力回路４３はカウント初期化フラグ３３が当該セル時刻９の開始時に有意であったので、カウントメモリ４２の対応するアドレス内のカウント値を初期化つまり初期値０として、この０に１を加算してカウントメモリ４２の対応するアドレスにセルバッファ回路１０のカウント値として書き込む。セル出力回路４３は、このカウント値とウエイトメモリ４１の対応するアドレス内のウエイト値を読み出して一致するかを確認する。この場合、一致しないのでウエイト有無フラグ３２の値をウエイトが有る状態「Ｌ」にする。また、セルバッファ回路３０はセル有無フラグ３１をセルが無い状態「Ｈ」とする。更に、セル出力回路４３は、カウント初期化フラグ３３を無意「Ｌ」にする。
【００５１】
ここで、セル時刻９においてセルバッファ回路２０にセルＢ２が入力されたとすると、セルバッファ回路２０内のセル数は１となり、セル有無フラグ２１はセルが有る状態「Ｌ」となる。これは説明を簡略化にするためであり、もしこの状態でセルが入力されないと、セル出力回路４３はセル時刻９でもカウント初期化フラグ１３，２３，３３を有意にすることになる。セル出力回路４３はセル時刻９においてもウエイテッドラウンドロビンを行う。この場合、セルバッファ回路２０を選択して、入力されたセルＢ２を出力する準備を行う。
【００５２】
以上のように、本実施の形態によれば、カウントメモリ４２のカウント値の減算、加算という動作上の相違はあるものの、上記実施の形態１と同様の効果を奏することができる。
【００５３】
【発明の効果】
本発明によれば、全てのセルバッファ回路において蓄積されたセルが無いかまたはウエイトが無い状態のときに、全てのカウンタを一斉に初期化するのではなくセル出力のために選択されたセルバッファ回路に対応したカウンタのみを初期化すればよいので、メモリを使用してカウンタを構成する場合においても搭載したセルバッファ回路の数に関係なく１セル時間内でウエイテッドラウンドロビン制御を確実に行うことができる。すなわち、多数のセルバッファ回路を搭載する場合でもカウンタとしてメモリを使用することができる。
【図面の簡単な説明】
【図１】  本発明に係るウエイテッドラウンドロビン回路の一実施の形態を示したブロック構成図である。
【図２】  実施の形態１におけるウエイテッドラウンドロビン回路の動作を説明するときの初期状態の例を示した図である。
【図３】  実施の形態１におけるウエイテッドラウンドロビン回路の動作に応じて遷移するセル数、カウント値及び各フラグの状態を示した図である。
【図４】  実施の形態１において１セル時間内に行われる処理フローを示した図である。
【図５】  実施の形態２におけるウエイテッドラウンドロビン回路の動作に応じて遷移するセル数、カウント値及び各フラグの状態を示した図である。
【図６】  実施の形態２において１セル時間内に行われる処理フローを示した図である。
【図７】  従来のウエイテッドラウンドロビン回路を示した構成図である。
【図８】  従来のウエイテッドラウンドロビン回路を適用したサービスの例を示した図である。
【図９】  メモリを使用したカウンタの構成を示した図である。
【符号の説明】
７  減算回路、１０，２０，３０  セルバッファ回路、１１，２１，３１  セル有無フラグ送出回路、１２，２２，３２  ウエイト有無フラグ送出回路、１３，２３，３３  カウント初期化フラグ送出回路、４１  ウエイトメモリ、４２  カウントメモリ、４３  セル出力回路。
【図１】
0003642698.tif 000002
【図２】
0003642698.tif 000003
【図３】
0003642698.tif 000004
【図４】
0003642698.tif 000005
【図５】
0003642698.tif 000006
【図６】
0003642698.tif 000007
【図７】
0003642698.tif 000008
【図８】
0003642698.tif 000009
【図９】
0003642698.tif 000010