(57)【特許請求の範囲】
【請求項１】
転送レートコントローラであって、
異なるタイプの複数の転送状況指示子を格納するためのメモリロケーションを有する第１および第２の記憶用タイムテーブル（１００，２００）、
前記第１および第２の記憶用タイムテーブルに結合され、前記複数の転送状況指示子の内の１つを選択しかつ前記複数の転送状況指示子の内の前記１つによって表わされるデータの送信を行なわせるポインタ信号を提供するための出力を有するファインダ（１４）、そして
前記第１および第２の記憶用タイムテーブルに結合され他の転送状況指示子の他のメモリロケーションにおける格納を前記他の転送状況指示子に対応するデータが送信のために利用可能である場合に動的にスケジューリングするためのスケジューラ（１２）、
を具備することを特徴とする転送レートコントローラ。
【請求項２】
仮想接続をスケジューリングする方法であって、
セル転送用タイムテーブル（１００）を提供する段階であって、該セル転送用タイムテーブルは記憶装置のアレイを含むもの、
前記セル転送用タイムテーブル（１００）に結合されたスケジューラ（１２）を提供する段階、
前記セル転送用タイムテーブルに結合されたファインダ（１４）を提供する段階、
第１の仮想接続をスケジューリングする段階、
第１の仮想接続指示子（ＶＣ１）をエントリとして前記セル転送用タイムテーブル（１００）に入力する段階、
前記ファインダによって提供されるポインタ信号を前記第１の仮想接続指示子に到達するまで前記セル転送用タイムテーブルのメモリ格納ロケーションを通して進める段階、
前記第１の仮想接続指示子のロケーションに第１のポインタを提供する段階、
前記第１の仮想接続指示子のロケーションに第２のポインタを提供する段階、
前記第１の仮想接続指示子を出力する段階、
前記第１のポインタを前記第１のタイムテーブルの次のロケーションに増分する段階、
前記第２のポインタを前記第１の仮想接続指示子のロケーションに保持する段階、
第２の仮想接続指示子（ＶＣ２）のためのロケーションを計算する段階であって、前記ロケーションは前記第１の仮想接続指示子と同じセル内にある段階、
データが利用可能なときに第２の仮想接続をスケジューリングする段階、
前記セル転送用タイムテーブル（１００）から前記第１の仮想接続指示子を除去する段階、そして
前記第２の仮想接続指示子をエントリとして前記セル転送用タイムテーブルに入力する段階、
を具備することを特徴とする仮想接続をスケジューリングする方法。
【請求項３】
データリンクにわたりセルを転送する上での優先度を提供する方法であって、
複数のタイムテーブルを提供する段階、
第１のタイムテーブル（１００）の第１のメモリロケーション（１１２）において第１のポインタを提供する段階、
前記第１のタイムテーブル（１００）の第２のメモリロケーション（１１１）において第２のポインタを提供する段階、
前記第２のメモリロケーション（１１１）において前記第２のポインタにより位置決めされる第１の転送状況指示子にしたがって第１のセルを転送する段階、
前記第１のセルの転送の後に前記第１のタイムテーブル（１００）の次のメモリロケーションへ前記第１のポインタを増分する段階、
そのロケーションにおいて複数の値がある場合に前記第１のタイムテーブル（１００）の前記第２のメモリロケーション（１１３）における前記第２のポインタによって位置決めされる第２の転送状況指示子に従って第２のセルを転送する段階、そして
前記第２のポインタを進める段階、
を具備することを特徴とするデータリンクにわたりセルを転送する上での優先度を決定する方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的には、集積回路に関し、かつ、より特定的には、非同期転送モード（ＡＴＭ）システムを含む通信システムにおけるデータ転送レートの制御に関する。
【０００２】
【従来の技術】
ＡＴＭ機能回路のセグメンテイションおよびリアセンブリ（Ｓｅｇｍｅｎｔａｔｉｏｎ  ａｎｄ  Ｒｅａｓｓｅｍｂｌｙ：ＳＡＲ）部分を使用するターミナルまたはエンドステーション（端局）はＡＴＭセルの発信（ｏｕｔｇｏｉｎｇ）ストリームを作成するために何千もの仮想接続（Ｖｉｒｔｕａｌ  Ｃｏｎｎｅｃｔｉｏｎｓ：ＶＣ）を多重化することができる。各々のセルは５バイトのヘッダおよび４８バイトのデータを含む。ネットワークＡＴＭ送信回路における仮想接続に対するセルの送信レートはセルのストリームにおいて固定の時間インターバルまたはスロットを使用することに基づいている。時間インターバルはカウンタまたはメモリをベースとしたテーブルをアドレスすることから得られるタイムスロットから得ることができる。例えば、複数のＶＣはＶＣが送信できる時間インターバルまたはスロットを提供するためにハードウエアで構成されるカウンタ回路にリンクすることができる。しかしながら、固定のカウンタ時間インターバルは複数または多数の仮想接続に対する送信レートを制限し、すなわち、同じカウンタに関連するＶＣは送信データに対して個々に区別されたまたは個別化されたレートをもつことができない。従って、ＡＴＭデータセルの送信レートはデータセルの送信を調整するために発生される固定カウンタの時間インターバルの柔軟性のなさによって制限される。
【０００３】
【発明が解決しようとする課題】
カウンタをベースとしたタイムスロットが利用可能になるとき、特定のＶＣはセルを送信することを許容される。もし特定されたタイムスロットの間にデータが用意できなければ、そのセルを送信するための第２の試みはカウンタが次のタイムスロットを発生するまで遅延される。従って、ハードウエアカウンタからのカウンタのタイムアウト信号による固定インターバルのセル送信レートは効率が悪い。
【０００４】
特定のＶＣを選択するエントリを備えたワードロケーションをもつようスタティックメモリのテーブルがプログラムされる。ポインタが該テーブルを通って進みかつあるＶＣに対するエントリを有する特定のロケーションをアクセスすると、そのＶＣに関連するデータセルは前記リンクによって送信される。従って、特定のＶＣに対する送信レートはポインタがメモリテーブルにおけるそのＶＣを参照しつつタイムスロットのロケーションを順次アクセスする速度（ｐａｃｅ）によって決定される。メモリテーブルは各々のＶＣを参照するテーブルエントリの数に従って多くのＶＣに対する異なる送信レートに適応できるが、データ送信レートの精度はメモリテーブルのサイズおよびポインタの循環動作によって制限される。特に、ポインタがメモリテーブルの最終エントリをアクセスしたとき、該ポインタは最初のメモリロケーションをアクセスするためにメモリテーブルの先頭に戻される。これはレートの不連続性を生じさせる可能性がある。
【０００５】
充填されたメモリテーブルはＶＣセルが送信されるべき位置またはシーケンスを表わすデータ値を有する。ＶＣセルが送信のために予定されていない場合、ヌル（ｎｕｌｌ）のＡＴＭセルに対する特定の値がそのタイムスロットを表わすメモリテーブルのロケーションに格納される。ＶＣ送信データレートを設定するためにメモリテーブルを使用することはメモリテーブルのサイズと送信レートとの間の関係を必要とし、すなわち、ＶＣに関連する低速の送信レートは大きなメモリテーブルのサイズを必要とする。送信セルのレートを調整する上での他の制限はダイナミックな変化が要求される場合にメモリテーブルにおけるＶＣの参照または基準を再配置するためにメモリテーブルを再ロードすることに関連する。メモリテーブルの内容の再構成はデータ喪失を防止するために１つのセルの送信に割り当てられた時間の間に必要とされる。
【０００６】
遅れて到着するセルのデータに対する調整はカウンタまたはメモリのタイムスロットテーブルにより発生されるインターバルのような固定時間インターバルの送信レートを使用する場合には修正できない。データの送信はカウンタまたはメモリテーブルにおけるポインタのアクセスタイムスロットに従って送信のための次の選択が行われるまで遅延される。
【０００７】
従って、レートの精度を維持しかつセルが送信されるレートをダイナミックに調整するための柔軟性を与えるためＡＴＭセルの送信を調整する方法が必要である。送信されるデータトラフィックのタイプに従って仮想接続へ個々の送信レートを提供することが有利であろう。
【０００８】
【課題を解決するための手段】
本発明の一態様では、転送レートコントローラが提供され、該転送レートコントローラは、記憶用タイムテーブル（１００）、第１および第２のポインタ出力を有するファインダ（１４）であって、前記第１および第２のポインタ出力は前記記憶用タイムテーブル（１００）に結合されているもの、そして第１および第２のポインタ入力を有するスケジューラ（１２）であって、前記第１および第２のポインタ入力は前記ファインダ（１４）に結合されているもの、を具備することを特徴とする。
【０００９】
本発明の他の態様では、仮想接続をスケジューリングする方法が提供され、該方法は、セル転送用タイムテーブル（１００）を提供する段階であって、該セル転送用タイムテーブルは記憶装置のアレイを含むもの、前記セル転送用タイムテーブル（１００）に結合されたスケジューラ（１２）を提供する段階、前記セル転送用タイムテーブルに結合されたファインダ（１４）を提供する段階、第１の仮想接続をスケジューリングする段階、第１の仮想接続指示子をエントリとして前記セル転送用タイムテーブル（１００）に入力する段階、前記第１仮想接続指示子に対し前記セル転送用タイムテーブル（１００）を歩進する段階、前記第１の仮想接続指示子を出力する段階、第２の仮想接続指示子のためのロケーションを計算する段階、データが利用可能なときに第２の仮想接続をスケジューリングする段階、前記セル転送用タイムテーブル（１００）から前記第１の仮想接続指示子を除去する段階、そして前記第２の仮想接続指示子をエントリとして前記セル転送用タイムテーブルに入力する段階、を具備することを特徴とする。
【００１０】
本発明のさらに他の態様では、データリンクにわたりセルを転送する上での優先度を提供する方法が提供され、該方法は、複数のタイムテーブルを提供する段階、第１のタイムテーブル（１００）に対する第１のメモリロケーション（１１２）における第１のポインタを提供する段階、第１のタイムテーブル（１００）に対する第２のメモリロケーション（１１１）における第２のポインタを提供する段階、第２のタイムテーブル（２００）に対する第３のメモリロケーション（２１１）において第３のポインタを提供する段階、前記第２のメモリロケーション（１１１）において第２のポインタにより位置決めされる第１の転送状況指示子にしたがってセルを転送する段階、セルの転送の後に第１のタイムテーブル（１００）から第１のメモリロケーション（１１２）における第１のポインタを増分する段階、その第２のメモリロケーション（１１３）において複数の値がある場合に第１のタイムテーブル（１００）に対する第２のメモリロケーション（１１３）における第２のポインタによって位置決めされる第２の転送状況指示子にしたがってセルを転送する段階、そして前記第２のポインタを進める段階、を具備することを特徴とする。
【００１１】
【発明の実施の形態】
図１は、本発明の１実施形態に係わる転送レート制御装置（ｔｒａｎｓｆｅｒｒａｔｅ  ｃｏｎｔｒｏｌｌｅｒ）１０のブロック図である。２進データが所定のレートでリンクによって転送するために、５３バイトのデータおよびヘッダ情報のＡＴＭセルのような、ユニットにアセンブルされあるいは組み立てられる。用語「伝送する、または送信する、（ｔｒａｎｓｍｉｔ）」および「伝送、または送信、（ｔｒａｎｓｍｉｓｓｉｏｎ）」は「転送（ｔｒａｎｓｆｅｒ）」を意味するために一般的な意味で使用され、かつリンクはデータの移動のための任意の経路である。転送レートコントローラ１０は、これに限定されるものではないが、優先度を含む、１つまたはそれ以上の固定または可変レートパラメータ、バースト性（ｂｕｒｓｔｉｎｅｓｓ）、および転送特定パラメータ（ｔｒａｎｓｆｅｒ  ｓｐｅｃｉｆｉｃ  ｐａｒａｍｅｔｅｒ）によって規定されるトラフィック種別に対するＡＴＭレート制御を行う。転送レートコントローラ１０は、タイムテーブル１００および２００のような、セル転送タイムテーブルに結合されたスケジューラ（ｓｃｈｅｄｕｌｅｒ）１２およびファインダ（ｆｉｎｄｅｒ）１４を含む構成可能な（ｃｏｎｆｉｇｕｒａｂｌｅ）レートコントローラである。
【００１２】
タイムテーブル１００および２００はラッチ、レジスタ、メモリ、デュアルポートメモリ、その他のような情報格納装置からなる。２４ビットのような、ある数のビットが前記記憶装置または格納装置におけるワードを形成し、従って該ワードの長さは十分に仮想接続（ＶＣ）を識別するよう構成される。記憶装置の種別または寸法は本発明の制限として考えられるべきではない。タイムテーブル１００内の記憶装置を構成する記憶セルのアレイはテーブルと称される。同様に、タイムテーブル２００内の記憶装置を構成する記憶セルのアレイはテーブルと称される。テーブル１００におけるメモリワードのロケーション１１１〜１２０またはタイムテーブル２００におけるロケーション２１１〜２２０のような、テーブルロケーションは、図２に示されており、エントリと称することができる。
【００１３】
タイムテーブル１００および２００のような、記憶テーブルは順序付けられたエントリの集合である。１つのエントリは転送状況指示子（ｔｒａｎｓｆｅｒ  ｃｏｎｔｅｘｔ  ｄｅｓｉｇｎａｔｏｒｓ）または仮想接続指示子（ｖｉｒｔｕａｌ  ｃｏｎｎｅｃｔｉｏｎ  ｄｅｓｉｇｎａｔｏｒｓ）のリストと共にいくつかの数のタイムスロットを関連させる。１つのエントリによって表わされるまたは代表されるタイムスロットの数はゼロとすることもできる（エントリがタイムスロットを表わさない）。エントリによって表わされるタイムスロットの数は１とすることができる（該エントリは１つのタイムスロットを表わす）。エントリによって表わされるタイムスロットの数は数Ｎとすることができる（該エントリはタイムスロットグループを表わす）。
【００１４】
タイムスロットグループは同じ特性を有する１つより多くのタイムスロットを表わす。連続するタイムスロットはグループ分けされて順次的なタイムスロットグループを形成する。等しい遠さのタイムスロットはグループ分けされて周期的なタイムスロットグループを形成することができる。転送状況指示子のリストは、競合の存在する場合の転送優先度、またはあるタイムスロットグループの特定のタイムスロットとの関連のような、同様の特性の転送状況をグループ分けするのに使用される。
【００１５】
例えば、もしあるエントリによって表されるタイムスロットの数が１であれば、該エントリは１つのタイムスロットのみに関連する。もしあるエントリが１つより多くの順次的なタイムスロットに関連すれば、前記記憶テーブルのサイズは精度の低さを犠牲にして低減される。１つのエントリに関連する順次的なタイムスロットの数は特定の用途に対してあるいは特定の期間のエントリの使用の間一定である必要はない。好ましい実施形態はエントリとタイムスロットとの間に１対１の関係を有する。
【００１６】
図１のファインダ１４は次のメモリロケーションがＶＣ指示子を含むかおよびデータを送信するために他のＶＣに対するそのＶＣの優先度を決定するために、タイムテーブル１００および２００のような、テーブルを歩進する（ｓｔｅｐｓｔｈｒｏｕｇｈ）。ファインダ１４およびスケジューラ１２はファインダバス２６を通してタイムテーブル１００および２００に結合されている。スケジューラ１２は端子１６において入力、例えば特定のＶＣに対してデータが利用可能であることおよびＶＣがデータ転送のためにスケジューリングされるべきことを示すための信号、を受信するよう結合されている。スケジューリングの要求は、これらに限られるものではないが、ホストシステムからの送信データの受信、ネットワークからの受信データの受信、ネットワーク事象の受信、そして基準信号の遷移を含む、数多くの外部作用因または要因（ｅｘｔｅｒｎａｌ  ａｇｅｎｔｓ）から生じ得る。スケジューラ１２は、タイムテーブル１００および２００のような、テーブルへのロケーションのためのターゲットエントリまたは目標エントリ（ｔａｒｇｅｔ  ｅｎｔｒｉｅｓ）を計算するユニット（図示せず）を具備する。他のユニット（図示せず）が転送状況指示子または仮想接続指示子を計算された目標エントリへまたは、タイムテーブル１００および２００のような、テーブルのためのテーブルエントリへと与える。他のユニット（図示せず）がデータ転送をスケジューリングするために外部作用因からの要求を受け入れる。
【００１７】
タイムテーブル１００および２００に関連して発信（ｏｕｔｇｏｉｎｇ）セルストリームにおけるセル時間および転送のためにスケジューリングされたＶＣのロケーションを追跡するポインタがある。例えば、該ポインタは前記テーブルの１つのエントリとしてのメモリワードへのアクセスを提供するアドレスを備えるものとすることができる。別の実施形態では、前記ポインタはテーブルを構成するレジスタのアレイにおける特定のレジスタを選択するためのシフトレジスタのゼロのフィールドにおける２進“１”に従って機能する。あるいは、前記ポインタはＶＣデータ構造と共に記憶されるメモリマップのデータフィールドにおける２進ビットである。当業者が理解するように、ポインタを形成する方法は多様なものがありかつ本発明を制限するものとして考えるべきではない。
【００１８】
ファインダ１４の端子３６，３８，４０および４２は、それぞれ、ポインタ「ターゲット＿スロット＿０（ＴＡＲＧＥＴ＿ＳＬＯＴ＿０）」、「送信＿スロット＿０（ＳＥＮＤＩＮＧ＿ＳＬＯＴ＿０）」、「ターゲット＿スロット＿１（ＴＡＲＧＥＴ＿ＳＬＯＴ＿１）」、「送信＿スロット＿１（ＳＥＮＤＩＮＧ＿ＳＬＯＴ＿１）」のような、ポインタ出力を提供するよう結合されている。ファインダ１４は転送レートコントローラ１０のすべてのポインタを提供しかつ更新する。ファインダ１４の端子４４は前記セグメンテイションおよびリアセンブリ（ＳＡＲ）にセル転送のための情報を通知するよう結合されている。スケジューラ１２はＶＣ送信または伝送タイムスロットを計算するためにポインタ値を使用する。スケジューラ１２のための端子１８，２０，２８および３０は、それぞれ、ポインタ「ターゲット＿スロット＿０」、「送信＿スロット＿０」、「ターゲット＿スロット＿１」および「送信＿スロット＿１」のような、ポインタ入力を受けるよう結合されている。タイムテーブル１００の端子２２および２４はそれぞれポインタ「ターゲット＿スロット＿０」および「送信＿スロット＿０」を受けるよう結合されている。タイムテーブル２００の端子３２および３４はそれぞれポインタ「送信＿スロット＿１」および「ターゲット＿スロット＿１」を受けるよう結合されている。
【００１９】
「送信＿スロット＿０」および「送信＿スロット＿１」のような、ポインタはＶＣが現在転送のために設定されている（ｓｔａｇｅｄ）ロケーションを示すためにそれらのテーブルに配置されている。特に、複数の値またはＶＣがある格納ロケーションまたはタイムスロットにおいてタイムテーブル１００に対するテーブルにスケジューリングされている場合、転送のためにＶＣを選択することはそのテーブルのタイムスロットにおけるすべてのＶＣが送信されるまでポインタ「送信＿スロット＿０」を進ませない。同様に、タイムテーブル２００におけるポインタ「送信＿スロット＿１」はそのテーブルのタイムスロットにおけるすべてのＶＣが送信されるまで進まない。これに対し、ポインタ「ターゲット＿スロット＿０」および「ターゲット＿スロット＿１」は各々のＶＣまたはヌルのセルが転送されたセルのデータストリームと共にカレント（ｃｕｒｒｅｎｔ）に留まる実時間位置を維持するために１タイムスロット位置だけ進められる。ヌルのセルの指示子を表わすためにゼロの値が使用される。
【００２０】
複数のテーブルを備えた実施形態では、主または１次テーブルは、タイムテーブル１００のためのポインタ「ターゲット＿スロット＿０」およびタイムテーブル２００のためのポインタ「ターゲット＿スロット＿１」のような、ポインタを有し、それによって、タイムテーブル１００および２００におけるＶＣのような、ＶＣまたはヌルのセルが転送された後にポインタは１タイムスロット位置だけ進む。また、各々のテーブルはタイムテーブル１００のためのポインタ「送信＿スロット＿０」およびタイムテーブル２００のためのポインタ「送信＿スロット＿１」のような、ポインタを有し、それによってポインタがそのタイムテーブルに対するタイムスロットにおいてスケジューリングされたすべてのＶＣが転送された場合にのみ進められる。特に、特定のタイムスロットにおけるすべてのＶＣに対するセルの転送を完了すると、ポインタ「送信＿スロット＿０」はＶＣ指示子を含むかあるいは前記ポインタ「ターゲット＿スロット＿０」に対するロケーションと整合するタイムテーブル１００における次のテーブルロケーションへと進む。ポインタ「ターゲット＿スロット＿０」は増分した値が前記「送信＿スロット＿０」ポインタの値と整合する場合には増分することを妨げられる。タイムテーブル１００に対するセルの転送は追跡されかつ「ターゲット＿スロット＿０」に対するポインタレンジ（ｐｏｉｎｔｅｒ  ｒａｎｇｅ）に等しい数のセルのタイムスロットだけ遅延することを許容される。本発明の１実施形態では、ポインタ「ターゲット＿スロット＿０」は、タイムテーブル１００のような、２５６のエントリのテーブルをアドレスするために８ビットのメモリを備えている。他の実施形態はターゲットを追跡しかつスロットを送るために割り当てられたより多くのビットを有し「ターゲット＿スロット＿０」のポインタ値が増分しかつ「送信＿スロット＿０」ポインタ値と整合するのを防止する。複数のテーブルを設ける別の実施形態は主テーブルに対し、「送信＿スロット＿０」および「ターゲット＿スロット＿０」のような、２つのポインタを含むが、他のテーブルの各々に対してはテーブルごとに、「送信＿スロット＿１」のような、１つのポインタを含むのみである。
【００２１】
また、タイムテーブル２００に対するポインタ「送信＿スロット＿１」はそのテーブルに対するタイムスロットにおいてスケジューリングされたすべてのＶＣが転送された場合にのみ進められる。特定のタイムスロットにおけるＶＣまたはヌルのセルの転送の完了に応じて、ポインタ「送信＿スロット＿１」は非ゼロの値を含むかあるいはポインタ「ターゲット＿スロット＿１」に対するロケーションと整合するタイムテーブル２００における次のテーブルロケーションに進められる。ポインタ「ターゲット＿スロット＿１」は増分された値が「送信＿スロット＿１」ポインタ値と整合する場合に増分することを妨げられる。タイムテーブル２００に対するセルの転送は追跡されかつ「ターゲット＿スロット＿１」に対するポインタレンジに等しい数のセルのタイムスロットだけ遅延することを許容される。例えば、８ビットのメモリを備えたポインタ「ターゲット＿スロット＿１」はタイムテーブル２００からＶＣセルを転送する上で２５６のタイムスロットの最大遅延を許容する。前述のように、他の実施形態は「ターゲット＿スロット＿１」ポインタ値が増分しかつ「送信＿スロット＿１」ポインタ値と整合するのを防止するためターゲットを追跡しかつスロットを送信するためにより多くのビットを割り当てられる。
【００２２】
転送レートコントローラ１０は各々のＶＣのためのレート制御を行いかつＶＣのための将来のセルの転送をスケジューリングする。転送レートコントローラ１０のスケジューリングは外部要因、例えば、シグナリング用データの利用可能性、によってドライブされリンクの帯域幅の割り当てられた部分の利用を最適化する。各々のＶＣに対し優先度が割り当てられ複数のＶＣが同じセル転送時間に対してスケジューリングされた場合の競合を解決し、従って危機的な（ｃｒｉｔｉｃａｌ）トラフィックに対するタイミングのコンフリクトを最小にする。
【００２３】
データ駆動（ｄａｔａ−ｄｒｉｖｅｎ）のスケジューリングはアプリケーションがデータを入手可能にしたとき、ＶＣはスケジューラ１２によってデータを送信するためにスケジューリングされるようにアプリケーション駆動される（ａｐｐｌｉｃａｔｉｏｎ  ｄｒｉｖｅｎ）。データが用意されていない場合にタイムスロットおよび転送の機会を失いかつ厳格な時間インターバル手順に固執するデバイス駆動の（ｄｅｖｉｃｅ−ｄｒｉｖｅｎ）転送に対し、データ駆動の転送はデータが利用可能になりかつレートおよび他のトラフィック管理パラメータによって許容されるや否やＶＣを再スケジュールできるようにする。
【００２４】
この実施形態では、スケジューラ１２によって行われる機能の１つはセルを通信リンクにわたり転送するためのＶＣのスケジューリングである。ＶＣのスケジューリングのタスクは管理情報および複数のＶＣに対する特性に従って行われ、この場合図１のタイムテーブル１００および２００のような、テーブルの内容へのＶＣの配置（ｐｌａｃｅｍｅｎｔ）または順序付け（ｏｒｄｅｒ）は各ＶＣに対する転送レートおよび優先度を決定する。あるＶＣに対する１つのエントリまたは仮想接続指示子のみがある与えられた時間における１つのテーブルエントリとして許容される。タイムテーブル１００および２００のような、テーブルにおけるあるＶＣに対するカレントまたは現在の（ｃｕｒｒｅｎｔ）および前の（ｐｒｉｏｒ）エントリの間の距離はそのＶＣに対する相対転送レートを決定する。また、タイムテーブル１００におけるエントリはタイムテーブル２００におけるエントリより高い優先度を有する。例えば、時間が重大なトラフィックを表わすＶＣはタイムテーブル２００へスケジューリングされるトラフィックの種別に対しより高い優先度を提供するタイムテーブル１００へのエントリをもつことができる。
【００２５】
前の転送の年代順配列（ｃｈｒｏｎｏｌｏｇｙ）、セルの喪失の優先度、最大のライン転送レート、トラフィック種別、およびＶＣに対する優先度に関する情報はスケジューラ１２がお互いに関してＶＣの相対的な順序付け、取扱い（ｈａｎｄｌｉｎｇ）、または配置（ｐｌａｃｅｍｅｎｔ）を決定できるようにする。
【００２６】
図２は、図１の実施形態に係わる転送レートコントローラに対するテーブルエントリを表わすブロック図である。タイムテーブル１００および２００のような、テーブルが示されているが、テーブルの数は本発明を制限するものとして考えるべきではない。セル転送タイムテーブル１００は、１１１〜１２０のような、テーブルロケーションにアクセスするポインタ「ターゲット＿スロット＿０」および「送信＿スロット＿０」を備えたテーブルを具備する。セル転送タイムテーブル２００は、２１１〜２２０のような、テーブルロケーションにアクセスするポインタ「ターゲット＿スロット＿１」および「送信＿スロット＿１」を備えたテーブルを具備する。前に述べたように、テーブルロケーションまたはメモリワードの幅および長さおよび数によって決定されるテーブルのサイズは本発明を制限するものではない。
【００２７】
動作においては、図２に示されるタイムテーブル１００および２００は始めにまたは初期化においてヌルのセルを示すために特定の値で満たされ、すなわち、転送のために何らのＶＣもスケジューリングされておらずかつヌルのセルのデータのみが転送されることを示す。タイムテーブル１００および２００に対するそれぞれテーブルロケーション１１２〜１２０および２１１〜２２０におけるテーブルエントリはヌルのセルを表わすためにゼロのエントリを有する。ファインダ１４（図１を参照）は転送のための次のエントリに対してタイムテーブル１００に対するアドレスロケーションを循環する。
【００２８】
あるＶＣが確立されたとき、１組のレートパラメータおよびトラフィック種別が規定される。例えば、ＶＣ１はタイムテーブル１００に関連する優先度で利用可能なリンクのセルレートの３分の１で送信するようセットアップすることができる。スケジューラ１２（図１を参照）はデータがＶＣ１のために利用可能であることを通知されかつスケジューラ１２は１組のレートパラメータおよびトラフィック種別に従ってタイムテーブル１００へのＶＣ１の次のエントリのためにロケーションを決定する。ＶＣ１に対する転送の前の経歴がない場合には、スケジューラ１２はポインタ「送信＿スロット＿０」に続くロケーションにエントリを与える。もし「送信＿スロット＿０」がスロット１１１に先行するロケーションにあれば、ＶＣ１に対する２進コード指示はタイムテーブル１００のテーブルロケーション１１１に入力される。ラベルＶＣ１はこの２進コードを表わしかつロケーション１１１におけるＶＣ１は転送のために利用可能な最初のセルとしてスケジューリングされる。セルはポインタ「送信＿スロット＿０」および「送信＿スロット＿１」によって選択されるロケーションに見られるＶＣに対するエントリおよび優先度と一致する順序で転送される。タイムテーブル１００のロケーション１１１〜１２０またはタイムテーブル２００のロケーション２１１〜２２０のような、テーブルロケーションはタイムスロットと称される。
【００２９】
図３は、図１の実施形態に係わる転送レートコントローラ１０のタイムテーブル１００および２００のためのエントリを含むブロック図である。双方のタイムテーブル１００および２００はＶＣ指示子と共にスケジューラ１２（図１を参照）によってロードされたテーブルロケーションを有する。前の転送の年代順配列（ｃｈｒｏｎｏｌｏｇｙ）、セル喪失優先度、１組のレートパラメータ、トラフィックタイプ、および優先度に関する情報にしたがって、スケジューラ１２はお互いに対するＶＣの相対的な順序付けまたは配置を決定しかつスケジューリングしている。
【００３０】
特に、タイムテーブル１００のロケーション１１１によって表わされるタイムスロットはＶＣ１に対するエントリを有する。さらに、ロケーション１１３はＶＣ４およびＶＣ５に対するエントリを有する。ロケーション１１２および１１４〜１２０のような他のロケーションはタイムテーブル１００においてゼロで示されるようにヌルのセルに対するエントリを有する。タイムテーブル２００のロケーション２１１はＶＣ２およびＶＣ３に対するエントリを有し、ロケーション２１４はＶＣ６に対するエントリを有し、かつロケーション２１８はＶＣ７に対するエントリを有する。ロケーション２１２〜２１３，２１５〜２１７および２１９〜２２０のような他のロケーションはタイムテーブル２００においてゼロで示されるようにヌルのセルに対するエントリを有する。ＶＣ１〜ＶＣ７はデータリンクにわたるセルのトラフィックの特定の通信を示すための付加された特性を備えた仮想接続である。
【００３１】
タイムテーブル１００および２００における特定のテーブルロケーションでのＶＣ１〜ＶＣ７のエントリにより、本発明の好ましい実施形態はＶＣ１〜ＶＣ７のエントリに対するロケーション、ヌルのセルの指示子、およびテーブル優先度にしたがってＶＣセルを転送するためのシーケンスを規定する。例えば、タイムテーブル１００のポインタ「ターゲット＿スロット＿０」および「送信＿スロット＿０」はＶＣ１に対するエントリを備えたロケーション１１１を選択している。タイムテーブル２００のポインタ「ターゲット＿スロット＿１」および「送信＿スロット＿１」はＶＣ２およびＶＣ３のためのエントリを備えたロケーション２１１を選択している。ファインダ１４（図１を参照）はファインダバス２６を通して送るべき次のセルに対しタイムテーブル１００および２００を歩進する（ｓｔｅｐｓ  ｔｈｒｏｕｇｈ）。
【００３２】
ファインダ１４はタイムテーブル１００におけるＶＣ１に対するロケーション１１１におけるエントリおよびタイムテーブル２００のロケーション２１１におけるＶＣ２およびＶＣ３のエントリを突き止める。あるロケーションにおける複数のエントリは転送のためにＶＣをスケジューリングする上での競合を示す。あるテーブルロケーションにおける複数のエントリによる競合を解決するために与えられたテーブル内に規定された優先度がありかつまたテーブルの間に優先度があり、したがってファインダ１４はタイムテーブル１００におけるロケーション１１１におけるＶＣ１を選択する（後に説明する）。ファインダ１４は転送を開始するために端子４４にＶＣ１の指示子を出力する。
【００３３】
ロケーション１１１からのＶＣ１の転送により、タイムテーブル１００のポインタ「ターゲット＿スロット＿０」および「送信＿スロット＿０」はロケーション１１２に進み、該ロケーション１１２はヌルのセルを表わす特定の値を含む。「ターゲット＿スロット＿１」はタイムテーブル２００のロケーション２１２に進む。ＶＣ１に対するセルの転送はタイムテーブル１００のロケーション１１１から値ＶＣ１をクリアするよう作用する。次に、スケジューラ１２は、ＶＣ１に対するパラメータおよび端子１６（図１を参照）におけるＶＣ１に対するスケジュール要求信号にしたがって、現在のロケーション１１１に関するＶＣ１に対する次の転送をスケジューリングするためのオフセット値を計算しかつ新しいＶＣ１をタイムテーブル１００に入力する（図示せず）。タイムテーブル１００が、１次テーブルとして、共に同じロケーションを選択するポインタ「送信＿スロット＿０」および「ターゲット＿スロット＿０」を有しかつそのロケーションの値がヌルのセルに対すものである場合は、ＶＣデータを転送するための優先度は、タイムテーブル２００のような、２次テーブルに転送される。
【００３４】
さらに図３を参照すると、タイムテーブル２００に対するロケーション２１１におけるポインタ「送信＿スロット＿１」はＶＣ２およびＶＣ３の値を含む。優先度によれば、ファインダ１４（図１を参照）は転送のためにＶＣ２およびＶＣ３からなるリストから次のエントリを選択する。一実施形態では、前記リストの第１のエントリ、ＶＣ２、が選択される。他の実施形態は異なる選択基準を使用することができる。ＶＣ２のための指示子はＶＣ２に対するセルの転送を開始するため端子４４において出力される。ロケーション２１１におけるＶＣ２によって表わされるセルの転送により、ポインタ「ターゲット＿スロット＿０」はタイムテーブル１００におけるロケーション１１３に進み、ポインタ「ターゲット＿スロット＿１」はタイムテーブル２００におけるロケーション２１３に進み、そしてポインタ「送信＿スロット＿１」はタイムテーブル２００におけるロケーション２１１に留まっている。ＶＣ２に対するセルの転送はロケーション２１１から値ＶＣ２をクリアするよう作用する。次に、スケジューラ１２は、ＶＣ２に対するパラメータおよび端子１６におけるＶＣ２に対するスケジュール要求信号にしたがって、ＶＣ２に対する次の転送をスケジューリングしかつタイムテーブル（図示せず）へのエントリを行なう。ポインタ「送信＿スロット＿１」はロケーション２１１から進まずかつ値ＶＣ３によって留まっている。
【００３５】
ファインダ１４はポインタ「送信＿スロット＿０」をタイムテーブル１００のロケーション１１３に突き止めかつＶＣ４およびＶＣ５に対する値を見付ける。ヌルの値以外の値が「送信＿スロット＿０」により選択された位置にあれば、タイムテーブル１００はデータを転送するためにタイムテーブル２００より高い優先度を有することになる。したがって、ファインダ１４はタイムテーブル１００におけるロケーション１１３を選択しかつＶＣ４に対する指示子が端子４４に出力される。ロケーション１１３からのＶＣ４に対するセルの転送により、ポインタ「ターゲット＿スロット＿０」はロケーション１１４に進み、一方ポインタ「送信＿スロット＿０」はタイムテーブル１００におけるロケーション１１３に値ＶＣ５によって留まっている。ＶＣ４に対するデータの転送はロケーション１１３から値ＶＣ４をクリアするよう作用する。スケジューラ１２は、ＶＣ４に対するパラメータおよび端子１６におけるＶＣ４に対するスケジュール要求信号にしたがって、ＶＣ４に対する次の転送をスケジューリングしかつテーブルへのエントリを行なう（図示せず）。
【００３６】
タイムテーブル１００に対するポインタ「送信＿スロット＿０」はロケーション１１３にあり該ロケーションは値ＶＣ５を含む。ファインダ１４（図１を参照）はタイムテーブル１００およびロケーション１１３を選択し、したがってＶＣ５に対する指示子が端子４４に出力されるようになる。ロケーション１１３からのＶＣ５に対するセルの転送により、ポインタ「ターゲット＿スロット＿０」はロケーション１１５に進みかつポインタ「送信＿スロット＿０」はタイムテーブル１００のロケーション１１５に進む。ポインタ「ターゲット＿スロット＿１」はタイムテーブル２００のロケーション２１５に進む。ＶＣ５に対するデータの転送はロケーション１１３からの値ＶＣ５をクリアするよう作用する。次に、スケジューラ１２は、ＶＣ５に対するパラメータおよび端子１６におけるＶＣ５に対するスケジュール要求信号にしたがって、ＶＣ５に対する次の転送をスケジューリングしかつテーブルへのエントリを行なう（図示せず）。
【００３７】
タイムテーブル１００に対するロケーション１１５におけるポインタ「送信＿スロット＿０」はヌルのセルに対する特定の値を含む。前述のように、「送信＿スロット＿０」および「ターゲット＿スロット＿０」のような、ポインタが同じロケーションに位置しかつそのロケーションにヌルのセルの値がある場合は、データを送信する優先度は、タイムテーブル１００のような、１次テーブルから、タイムテーブル２００のような、２次テーブルへとわたされる。ファインダ１４（図１を参照）はタイムテーブル２００におけるポインタ「送信＿スロット＿１」に対するロケーション２１１を見付け出す。ＶＣ３に対する指示子は端子４４において出力される。ロケーション２１１からのＶＣ３の転送により、ポインタ「ターゲット＿スロット＿０」および「送信＿スロット＿０」はタイムテーブル１００のロケーション１１６に進み、ポインタ「ターゲット＿スロット＿１」はタイムテーブル２００におけるロケーション２１６に進み、そしてポインタ「送信＿スロット＿１」はタイムテーブル２００のロケーション２１４に進む。ＶＣ３に対するデータの転送はロケーション２１１からの値ＶＣ３をクリアするよう作用する。次に、スケジューラ１２は、ＶＣ３に対するパラメータおよび端子１６におけるＶＣ３に対するスケジュール要求信号にしたがって、ＶＣ３に対する次の転送をスケジューリングしかつテーブルへのエントリを行なう（図示せず）。
【００３８】
前と同様に、「送信＿スロット＿０」および「ターゲット＿スロット＿０」のような、ポインタが同じタイムスロットに位置しかつその位置にヌルのデータが入力されている場合、データを送信する優先度は、タイムテーブル１００のような、１次テーブルから、タイムテーブル２００のような、２次テーブルへと受けわたされる。ファインダ１４（図１を参照）はポインタ「送信＿スロット＿１」をタイムテーブル２００から値ＶＣ６を備えたロケーション２１４に突き止める。ＶＣ６に対する指示子は端子４４に出力される。ロケーション２１４からのＶＣ６の転送により、ポインタ「ターゲット＿スロット＿０」および「送信＿スロット＿０」はタイムテーブル１００のロケーション１１７に進み、かつポインタ「ターゲット＿スロット＿１」および「送信＿スロット＿１」はタイムテーブル２００のロケーション２１７に進む。ＶＣ６に対するデータの転送はロケーション２１４から値ＶＣ６をクリアするよう作用する。スケジューラ１２は、ＶＣ６に対するパラメータおよび端子１６におけるＶＣ６に対するスケジュール要求信号にしたがって、ＶＣ６に対する次の転送をスケジューリングしかつテーブルへのエントリを行なう（図示せず）。
【００３９】
ポインタ「ターゲット＿スロット＿０」および「送信＿スロット＿０」がタイムテーブル１００のロケーション１１７にありかつポインタ「ターゲット＿スロット＿１」および「送信＿スロット＿１」がタイムテーブル２００のロケーション２１７にあることにより、両方のテーブルはヌルのセルに対する特定の値を含む選択されたロケーションを有する。ファインダ１４は端子４４にヌルのセルの指示子を出力する。ヌルのセルが転送されたとき、ファインダ１４は送るべき次のセルに対してタイムテーブル１００および２００を歩進する。ヌルのセルの転送により、ポインタ「ターゲット＿スロット＿０」および「送信＿スロット＿０」はタイムテーブル１００のロケーション１１８に進みかつポインタ「ターゲット＿スロット＿１」および「送信＿スロット＿１」はタイムテーブル２００のロケーション２１８に進む。前と同様に、ポインタ「送信＿スロット＿０」がポインタ「ターゲット＿スロット＿０」と同じタイムスロットに位置しかつヌルのセルの値がそのロケーションに入力されたとき、データを送る優先度は、タイムテーブル１００のような、１次テーブルから、タイムテーブル２００のような、２次テーブルへと受けわたされる。ファインダ１４（図１を参照）はロケーション２１８にポインタ「送信＿スロット＿１」を突き止めかつタイムテーブル２００に値ＶＣ７を見付ける。ＶＣ７に対する指示子は端子４４において出力される。ロケーション２１８からのＶＣ７の転送により、ポインタ「ターゲット＿スロット＿０」および「送信＿スロット＿０」はタイムテーブル１００のロケーション１１９に進みかつポインタ「ターゲット＿スロット＿１」および「送信＿スロット＿１」はタイムテーブル２００のロケーション２１９に進む。ＶＣ７に対するデータの転送はロケーション２１８から値ＶＣ７をクリアするよう作用する。スケジューラ１２は、ＶＣ７に対するパラメータおよび端子１６におけるＶＣ７に対するスケジュール要求信号にしたがって、ＶＣ７に対する次の転送をスケジューリングしかつテーブルへのエントリを行なう（図示せず）。
【００４０】
ポインタ「ターゲット＿スロット＿０」および「送信＿スロット＿０」がタイムテーブル１００のロケーション１１９にありかつポインタ「ターゲット＿スロット＿１」および「送信＿スロット＿１」がタイムテーブル２００のロケーション２１９にあることにより、両方のポインタはヌルのセルに対する値を有するロケーションを選択している。ヌルのセルのエントリにより、ファインダ１４はヌルのセルの指示子を端子４４に出力する。したがって、この例では、データはＶＣ１，ＶＣ２，ＶＣ４，ＶＣ５，ＶＣ３，ＶＣ６、ヌルのセル、ＶＣ７、およびヌルのセルのシーケンスで転送されている。各転送により、ポインタ「ターゲット＿スロット＿０」および「ターゲット＿スロット＿１」は進められ、したがって該ポインタはデータストリームにおける転送されたセルのタイムスロットと共にカレント（ｃｕｒｒｅｎｔ）状態に留まっている。
【００４１】
「送信＿スロット＿０」および「送信＿スロット＿１」のような、ポインタはあるロケーションにそのロケーションから全てのエントリがクリアされるまで留まっている。いったんあるロケーションからエントリがクリアされると、ポインタ「送信＿スロット＿０」はタイムテーブル１００内の非ゼロ（ｎｏｎ  ｚｅｒｏ）の値を有する次のロケーションへあるいはポインタ「ターゲット＿スロット＿０」に対するロケーションの整合まで進められる。ポインタ「送信＿スロット＿０」がポインタ「ターゲット＿スロット＿０」のロケーションに到達する前に非ゼロの値のロケーションに到達した時、ポインタ「送信＿スロット＿０」は、ファインダ１４がそのロケーションを選択しかつそのタイムスロットからの転送がクリアされるまでそのロケーションに留まっている。
【００４２】
同様に、ポインタ「送信＿スロット＿１」はあるロケーションに、そのロケーションから全てのエントリをクリアするまで、留まっている。いったんエントリがあるロケーションからクリアされると、ポインタ「送信＿スロット＿１」はタイムテーブル２００内の非ゼロのを有する次のロケーションへあるいはポインタ「ターゲット＿スロット＿１」に対するロケーションに到達するまで進む。ポインタ「送信＿スロット＿１」がポインタ「ターゲット＿スロット＿１」のロケーションに到達する前に非ゼロの値のロケーションに到達したとき、ポインタ「送信＿スロット＿１」は、ファインダ１４がそのロケーションを選択しかつそのタイムスロットからの転送がクリアされるまでそのロケーションに留まっている。
【００４３】
上記方法は、転送のためにＶＣ選択を述べ、タイムスロットから複数のエントリを選択する場合の優先度を提供し、いくつかのテーブルから選択する場合の優先度を提供し、かつ転送のために次のＶＣを動的にスケジューリングする上記方法は簡略化のためこの例で選択された２つのテーブルに限定されるものではない。当業者は、説明した方法は多数のテーブルを備えた実施形態に適用することができる。本発明の実施形態に対しては、テーブルの長さはレートの不連続性を生じさせることはなく、それはポインタ「送信＿スロット＿０」および「ターゲット＿スロット＿０」はタイムテーブル１００を通って巡回または循環しかつＶＣ転送のためのエントリは再び動的にタイムテーブル１００に入るからである。同様に、ポインタ「送信＿スロット＿１」および「ターゲット＿スロット＿１」はタイムテーブル２００を通って巡回または循環しかつＶＣ転送のためのエントリはレートの不連続性を生じることなくタイムテーブル２００へと動的に入力される。
【００４４】
【発明の効果】
以上から、転送レートコントローラ１０はデータの発信者がいつデータが通信リンクによって転送されるかを決定できるようにする。レートの精度を維持し、リンクへの公正なアクセスを提供し、かつセルが転送されるレートを動的に調整する柔軟性を提供するためにＡＴＭセルの転送を調整する方法が説明された。前の転送の年代順配列、セルの喪失の優先度、１組のレートパラメータ、トラフィックタイプ、および優先度に関する情報にしたがって、スケジューラ１２はお互いに対するＶＣの相対的な順序付けまたは配置を決定しかつスケジューリングしている。転送レートコントローラ１０は仮想接続に対する転送レートの個別のかつ動的な制御を提供する。転送レートコントローラ１０によってサポートされる仮想接続の最大数は特定の実施形態に対して符号化できる独自のＶＣ指示子の数によって決定される。
【図面の簡単な説明】
【図１】本発明の一実施形態に係わる転送レートコントローラを示すブロック図である。
【図２】図１の実施形態に係わる転送レートコントローラのセル転送タイムテーブルのためのテーブルエントリを示す説明図である。
【図３】図１の実施形態に係わる転送レートコントローラのセル転送タイムテーブルのためのテーブルエントリを示す説明図である。
【符号の説明】
１０  転送レートコントローラ
１２  スケジューラ
１４  ファインダ
１６  入力
２６  ファインダバス
１８，２０，２８，３０  スケジューラ１２の端子
３６，３８，４０，４２  ファインダ１４の端子
１００，２００  タイムテーブル
２２，２４  タイムテーブル１００の端子
３２，３４  タイムテーブル２００の端子
【図１】
0003942237.tif 000002
【図２】
0003942237.tif 000003
【図３】
0003942237.tif 000004