説明

バッファ・サービス方法及び装置

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明はディジタル通信ネットワークでバッファ・システムのリンクに関連した多数のバッファの要求を満たすためのサービス方式に関する。更に詳細に説明すれば、本発明はバッファの所要のサイズを可能な限り小さくし且つバッファをリンクの数及びそれらの相対速度と無関係にする。
【0002】
【従来の技術】データ、音声又はビデオは、多くの場合、ディジタル化されたメッセージ、即ちパケットの形式で伝送される。パケットは、複数のソースの間で、通信チャネル即ちリンクによって相互接続される、多数の交換ノード、又は単純ノードを有するパケット交換ネットワークを介して交換される。リンクは情報ビットの伝送に用いる任意の伝送媒体である。あるシステムに関して、もし情報ビットが該システムに向かって流れれば、リンクは入力リンクと呼ばれる。さもなければ、当該リンクは出力リンクと呼ばれる。
【0003】例えば、パケット交換ネットワークのパケット交換ノードのバッファ・システムは、各j番目のリンクが速度Sj を有する2以上のリンクを有するシステムである。また、各リンクは別個の関連バッファを有する。このバッファは、入力リンクの場合は、関連した入力リンクから到来するビットの記憶に用い、出力リンクの場合は、バッファから関連出力リンクへのビットの転送に用いる。入力リンク及びその関連バッファの場合、バッファの要求を満たすことは、ビットがバッファから転送される、従ってバッファには入力リンクからのビットを受取る記憶空間があることを意味する。出力リンクに関連するバッファのサービスは、バッファにビットを記憶する、従ってビットはバッファから出力リンクに出ることを意味する。
【0004】例えば、ノードは該ノードに到来するパケットを運ぶ2以上の入力リンクを有し、同時に該ノードから出るパケットを運ぶ1以上の出力リンクを有することができる。各リンクはその速度によって特徴づけられる。速度はビット/秒又はバイト/秒単位で測定され、パケットのビット又はバイトがリンクによって伝送される速度を表わす。リンクによっては、パケットのビット又はバイトは割込みなしに到着するかも知れない。このようなリンクは割込みできないリンクとして知られている。その他の場合は、リンクは割込みできる。
【0005】あらゆるリンクは、入力リンクから到着するパケットのビットもしくはバイト、又は対応する出力リンクに出るパケットのビットもしくはバイトを記憶するために用いる記憶装置、即ちバッファに関連づけられる。
【0006】一般に、ネットワークの各ノードは、ノードへ(から)パケットを転送する、サーバとして知られた装置を有する。パケットがノードの入力リンクから到着する場合は、サーバはバッファを空ける。パケットが出力リンクに出る場合は、サーバはバッファを満たす。従って、バッファ・システムが与えられると、バッファ1のバッファ・サービスはバッファを空ける必要があるかも知れないが、バッファ2のサービスはバッファを満たす必要があるかも知れない。
【0007】このネットワークのバッファは、ビットの喪失を回避するか、少なくともビットの喪失を限定するように十分に大きくなければならない。ビット喪失は、入力リンクからパケットが到着するあるパターンではバッファ記憶装置が使い尽くされる場合はいつでも起きる可能性があり、それ以後に到着するビットはどれも失われる。この事象はオーバフローとして知られている。
【0008】代わりに、出力リンクに関連するバッファの場合、サーバはバッファにビットを入れることができるが記憶空間が残されていない状況を回避するようにバッファは十分に大きくなければならない。
【0009】ネットワークは絶えず変化するから、ノード中のリンクの数及び(又は)これらのリンクの速度は時々変るかも知れない。変化が起きると、既存のコンポーネントは置き換えなくてもよいことが重要である。従って、バッファ・システムの場合、バッファのサイズは入力リンク及びそれらの相対速度と無関係であることが望ましい。経済的な理由から、これらのバッファのサイズを最小にすることも望ましい。
【0010】先着順サービス(FCFS)又は徹底的なラウンド・ロビン(RR)のような既存のサービス方式により、バッファのサイズは、リンクの数及びそれらの相対速度が増加するにつれて限度なしに大きくなる。従って、これらのサービス方式の使用により、ネットワーク構成が変るときネットワーク中のバッファを変更するだけでオーバフローを排除することができる。
【0011】バッファの中にパケットの全ビットが入る前にサービス周期が開始するバッファ・サービス・システムもある。入力リンクに関連するバッファの場合、もし次のサービス周期にサーバがパケット全体を割込みなしに転送できることを保証するのに十分なビットがバッファにあれば、バッファは本質的に完全な(essentially complete)パケットを有すると言われる。もしサーバがパケットの一部だけを転送したときバッファにビットが存在しないケースでなければ、サーバはパケット全体を割込みなしに転送できる。出力リンクに関連するバッファの場合は、もし次のサービス周期にサーバがパケット全体を割込みなしに転送できることを保証するのに十分な自由記憶空間があれば、バッファは本質的に十分な(essentially sufficient)自由記憶空間を有する。もしサーバがパケットの一部だけを転送したときバッファに自由な記憶空間がないケースでなければ、サーバはパケット全体を割込みなしに転送できる。本質的に完全なパケットは、バッファに入力リンクから受信している速度よりも速い速度でサーバが該バッファからデータを送出する場合を考える。サーバが(サービス開始時点で全てのパケット・データがバッファに存在しなくても)バッファのデータを連続的に(止まらずに)サービスし、全体のパケットの完全なサービスが開始できる十分なビットがバッファにあると考えられるとき本質的に完全なパケットであるという。本質的に十分な自由記憶空間は、バッファから送出している速度よりも速い速度でサーバが該バッファへデータを格納する場合を考える。サーバが(サービス開始時点で、Mバイトの自由記憶空間がなくても)Mバイトのパケットをバッファに格納することができると考えられる場合、本質的に十分な記憶空間であるという。
【0012】米国特許第4378588号は、同じサーバによってサービスされる入力及び出力トラフィックとバッファとの組合せについて開示している。
【0013】
【発明が解決しようとする課題】本発明の目的はバッファ・システムのサービス方式を提供することである。より詳しくは、本発明の目的はオーバフローの可能性を無くし、必要なバッファの大きさを最小にし且つリンクの数及びそれらの相対速度とは無関係であるサービス方式を提供することである。
【0014】
【課題を解決するための手段】この発明はバッファ・システムのリンクに関連するバッファの要求を満たす方法及び装置を提供する。この発明は、バッファのサブセットのθj の最小値であるθM を決定する必要がある。このサブセットにある各バッファは、もしそのビットがその関連入力リンクから入力しているならば、その中に少なくとも本質的に完全なパケットを有し、もしビットがバッファから出力しているならば、サブセットにある各バッファは本質的に十分な自由記憶空間を有する。入力リンクに関連しているバッファの場合は、もしビットが前記関連リンクからj番目のバッファに入力しているならば、θj はj番目のバッファがその境界に達するために必要な時間である。出力リンクに関連しているバッファの場合は、もしビットがj番目のバッファから前記関連出力リンクに出力しているならば、θj はj番目のバッファが空になるために必要とする時間である。そして、θj=θMの値を持つサブセットにあるバッファのどれかがサービスされる。その場合、バッファにサービスすることは、入力リンクに関連するバッファからビットを取出すか又は出力リンクの関連バッファにビットを記憶することを含む。
【0015】あるいは、パラメータθF の決定ができる。θF は異なるサブセットのバッファでのθj の最小値である。もしビットがその関連入力リンクからバッファに入力しているならば、異なるサブセットにある各バッファはその中に少なくともMバイト(そのシステムの最大のパケット・サイズ)を有し、もしビットが当該バッファから関連出力リンクに出力しているならば、異なるサブセットにある各バッファは少なくともMバイトの自由記憶空間を有する。
【0016】そして、バッファはどれも、θFが完全なパケット或いは十分な自由記憶空間を有するバッファのθjの最小値であるから、本質的に完全なパケット或いは本質的に十分な自由記憶空間を考えた場合、θj≦θFの値を有し、該バッファが出力リンクに関連している場合は本質的に十分な自由記憶空間を有し、バッファが入力リンクに関連している場合は、少なくとも1つの本質的に完全なパケットを有する。
【0017】ノードの入力リンクの数、j番目のリンクの速度、及びサーバの速度をそれぞれN、Sj 及びSとする。ここで、jは1≦j≦Nであり、Sは次の関係式を満たすものとする。
【数1】


【0018】割込みできないリンクで、長さLのパケットは、そのビット又はバイトの少なくともL(1−Sj/S) がバッファに到着したとき、本質的に完全である。もしパケットの長さがその全てのビット又はバイトが到着するまで分からなければ、割込みできないリンク上のパケットは、そのバイトの少なくともM(1−Sj/S) がj番目のバッファに到着したとき本質的に完全である。ここで、Mは最大のパケットの長さである。バッファはもしパケットのビット又はバイトの全てが対応するバッファに到着したならばその中に完全なパケットを持つと言われる。
【0019】もしj番目のバッファの各々にサイズ2Mのバッファを使用し、且つ前述のサービス方式のどちらかを使用すれば、オーバフローの可能性は排除される。
【0020】
【実施例】図1において、パケット交換装置(バッファ・システム)は、16の両方向性通信リンクに2組の端末:通信リンクの入力チャネルには端末 LIN(1)〜LIN(16)、通信リンクの出力チャネルには端末 LOUT(1)〜LOUT(16)によって接続される。良好な実施例では、通信リンクは割込みできず且つパケットの長さはそのビットの全部が到着するまで分からないものと仮定する。
【0021】入力アダプタ1〜16の機能は、通信リンクを介して入力パケット・トラフィックをビット直列ストリームの形式で受取り、パケットの開始と終了を識別し、これらのパケットを入力アダプタ内の専用記憶装置(バッファ)に記憶し、バス33を介してバス・アービトレーション装置34と通信して該記憶されたパケットを入力アダプタから転送する用意をし、最後に該記憶されたパケットを適切な時点でバス33に転送することである。入力アダプタの動作は図2で更に詳細に説明する。
【0022】バス33は入力アダプタ1〜16、出力アダプタ17〜32及びバス・アービトレーション装置34の間の通信の媒体として役立つ。制御信号及びパケットはどちらもバス33によって運ばれる。
【0023】出力アダプタ17〜32の機能はバス・アービトレーション装置34と通信してバス33から出力アダプタにパケットを転送する用意をし、パケットをバス33から出力アダプタに転送し、そして入力パケットをポート LOUT(1)〜LOUT(16)を介して通信リンクの出力チャネルに転送できるまで記憶することである。
【0024】バス・アービトレーション装置34の機能は入力アダプタ及び出力アダプタと通信してパケットをバス33を介して転送する用意をすることである。バス・アービトレーション装置33の動作は図3で更に詳細に説明する。
【0025】図2は入力アダプタ1(図1)の内部構造を示す。これは入力アダプタ1〜16に共通の内部構造である。バッファ・サービス方式は本明細書ではMINアルゴリズム(図4参照)による。
【0026】ポートLIN(1)は通信リンクによって入力ビット・ストリームが入力アダプタ1に入る位置である。ポートLIN(1)はリンクによって直列受信部101の入力Iに接続される。直列受信部101の機能は、パケットの開始及び終了を識別し、ビット直列ストリームを8ビット・バイトの並列ストリームに変換することである。その結果、直列受信部101は下記の信号を生成する、即ち、入力パケットの現在のバイトを表わす8ビット信号(もしあれば)を出力Pに、活動化すると、出力Pのバイトがパケットの最初のバイトであることを知らせる信号を出力PBに、出力Pのバイトがパケットの最後のバイトであることを知らせる信号を出力PEに、そして有効なバイトが出力Pに存在することを知らせる信号を出力BCLに生成する。
【0027】受信制御部102は、直列受信部101から、バイトが記憶されるパケットFIFO 103 (バッファ)へのパケットの転送を制御する。そのために、直列受信部101によって出力BCL、PB及びPEに生成された信号は、リンクによって受信制御部102の対応する入力に運ばれ、同時に直列受信部101の出力PもリンクによってパケットFIFO 103 の入力Iに運ばれる。適切な時点で、受信制御部の出力ABの信号は、パケットFIFO 103 の入力Wを活動化して入力のバイトを記憶させるのに用いる。
【0028】デリミタFIFO 104 は、パケットFIFO 103 に記憶されたあらゆるバイトについて、直列受信部101の出力PB及びPEに生じる2つのビットを記憶する。もし入力BIの信号が活動化されれば、BIに対応するビットは1であり、パケットFIFO 103 に記憶されているバイトはパケットの最初のバイトであることを意味する。同様に、入力EIに対応するビットはパケットの最後のバイトを表わす。デリミタFIFO 104 への書込み動作は受信制御部102の出力ABの信号により制御される。この信号はリンクによりデリミタFIFO 104 の入力Wに運ばれる。
【0029】パケットFIFO(バッファのサービス)からポートA01P0〜A01P7へのパケットの転送は、転送制御部106でその出力DBの信号によって制御される。この信号は、リンクによってパケットFIFOの入力Rに運ばれ、活動化されると、パケットFIFO 103 のFIFOメモリから読取り動作を生じさせ、その結果、パケットFIFOの出力Oから8ビット・リンクを介してラッチ107の入力Iにバイトが転送される。転送制御部106の出力DBからの同じ信号によってラッチ107の入力Sは活動化されるので、転送されたバイトはラッチ107に記憶される。記憶されたバイトは8ビット・リンクによってラッチ107の出力OからポートA01P0〜A01P7に運ばれる。
【0030】前述のようなパケットFIFOからバスへのパケット転送動作の開始は(a)転送制御部106はその入力AでポートA01A0〜A01A3からのアドレス、0000と1111の間の2進数を識別し、且つ(b)転送制御部106はその入力GOで、活動状態のときバス・アービトレーション装置34で生成されパケット転送の進行を表わす信号(入力アダプタがバス・アービトレーション装置から受取ったバス制御信号)を検出することが条件である。そして転送制御部106は出力BSYを活動化(バスの制御を取得)し、その信号はポートA01BSYに送られる。
【0031】パケット転送動作の終了はパケットFIFO 103 からパケットの最後のバイトが読取られ、同時にデリミタFIFO 104の出力EOが活動化されたときトリガされる。従って、入力PEの活動化を識別する転送制御部106は、バイトがラッチ107に転送された後、そのBSYラインを非活動化して転送の終了をバス・アービトレーション装置34に知らせる。
【0032】TRBカウンタ110の内容は、限界に達する時間(TRB)θ1に近い(入力アダプタjのTRBはθjで示される)。TRBカウンタの動作は3つのパラメータを含む。1つのパラメータは全ての入力アダプタについて同じ値であり、他の2つのパラメータはそれぞれの入力アダプタについて異なる値を持つかも知れない。
【0033】第1のパラメータを示すUはTRBカウンタ110の単位カウントに対応する時間間隔を表わす。換言すれば、UをTRBカウンタにある単位カウントに対応する時間とすると、θi=NiUになるようにTRBカウンタの内容を整数、例えばNiにとる。ここで、Niは任意の時点における入力アダプタiのTRBカウンタの値を示す。TRBカウンタは、入力アダプタが異なっても、同じ(ビットの)長さ及び同じパラメータUを有するものと仮定する。
【0034】他の2つのパラメータはアダプタ毎に異なる値を持つことができる。Vi(i=1,...,16) は、始動時点(電源が投入される時点)において入力アダプタiにあるTRBカウンタの内容を表わすものとする。Fi(i=1,...,16) は、入力アダプタiを特徴づける整数を表わすものであり、下記のように定められる。入力アダプタiにあるパケットFIFOがFi バイトずつ増加する毎に、TRBカウンタは1ずつ減少する。更に、入力アダプタiにあるパケットFIFOがFi バイトずつ減少する毎に、TRBカウンタは1ずつ増加する。Fi は入力アダプタiのカウント係数と呼ぶ。
【0035】最初にUを決定する方法を説明する。SFは全てのSiのうちの最小のものとする。ここでSi はi番目の通信リンクの速度である(i=1,...,16)。TRBカウンタのどれかに記憶する必要がある最大のTRBの値は、当該リンク速度に対応するアダプタで生じ、その値は2M/SF である。ここで、Mは最大のパケットのビットの長さ(バッファ・システムによって伝送される最も大きいメッセージのサイズ)である。bはTRBカウンタのビットの長さとする。TRBは負ではないから、TRBカウンタに記憶できる最大の値は 2b−1である。従って、次の関係式が成立つ。
【数2】


【0036】j番目のアダプタにあるパケットFIFOの内容をQj とする。全てのパケットFIFOが空である始動時に、Qj=0とするTRBの定義を用いて、ViU=2M/Si が得られる。従って、アダプタiにあるTRBカウンタの最初の値は次のようになる。
【数3】


【0037】TRBカウンタ110は始動時に転送制御部106の出力INITの信号によってVi にセットされる。
【0038】ある任意の時点でのi番目のアダプタにあるパケットFIFOの内容をQi とし、TRBカウンタの値をNi とすると、TRBの定義から次の式が成立つ。
【数4】


【0039】カウント係数Fi の定義を用いて次の式が得られる。
【数5】


【0040】そして、アダプタiのカウント係数Fi=USiである。
【0041】速度Si(i=1,...,16)はSFの倍数、即ちある整数αiについてSi=αiFであると仮定する。Si を参照するとき、情報(パケット)ビットが入力アダプタに到着する速度が考慮される。この速度は通信リンクで用いる媒体内のビット・ストリームの速度から僅かに異なるかも知れない。通常のキャリヤで用いるディジタル階層は、例えば、複数の等価音声回線で構築される。64Kビット/秒のDS−0は1回線を備え、1.544Mビット/秒のDS−1は24回線を備え、3.152Mビット/秒のDS−1Cは48回線を備える。よって、もしUSFが整数であることが確認されれば、USi(i=1,...,16) も整数である。
【0042】ここで、M=1000バイト、b=10ビットとし、Smax を最大のリンク速度、Smax/SF=28とする。アダプタiでSi=SFの場合に、USF≧2M/ (2b−1)が成立つと推論される。カウント係数は、2M/(2b− 1) よりも大きいか又はそれに等しい最小の整数になるように選択される、この場合はFi=2 になる。例えば、アダプタjでSj=Smax の場合、Fj=USmax=28USF=56になる。他の全てのアダプタのカウント係数は2と56の間の整数である。
【0043】パケットFIFO 103 がFi だけ減少(増加)する毎に、TRBカウンタ110は1ずつ増加(減少)する。TRBカウンタ110の更新は増加カウンタ112、PCF検出器108及びNCF検出器109によって行われる。PCF検出器及びNCF検出器はそれぞれ正カウント係数検出器及び負カウント係数検出器を表わす。次に、これが入力アダプタ1によってどのように成し遂げられるかを説明する。
【0044】増加カウンタ112は、パケットFIFO 103 にバイトが記憶される毎に1増加し且つバイトがパケットFIFO 103 から検索される毎に1減少する増/減カウンタである。増加信号は受信制御部102の出力ABに生成され、減少信号は転送制御部106の出力DBに生成される。増加カウンタ112によって提供する必要がある最大の数は(前述のように)56であるから、増加カウンタ112は6ビットの長さになる。
【0045】PCF検出器108は増加カウンタ112にあるF1 のカウントを検出する論理回路から成る。前記カウントが検出されると、リセット信号がPCF検出器108の出力Sから増加カウンタ112の入力RSTに送られ、増加カウンタ112は0にリセットされる。更に、PCF検出器108はTRBカウンタ110の正(+)入力を活動化させる。NCF検出器109は増加カウンタ112にある−F1 のカウントを検出する論理回路から成る。同様に、前記カウントが検出されると、増加カウンタ112は0にリセットされ、TRBカウンタの負(−)入力が活動化される。
【0046】パケット・カウンタ105はパケットFIFO 103 にあるパケットの数を保持する増/減カウンタである。その+P入力は直列受信部101の出力PEからの "受取ったパケットの終了" 信号によって活動化される。その−P入力はデリミタFIFO 104 の出力EOからの "転送されたパケットの終了" 信号によって活動化される。そのCT出力からの、現在のカウントが非0であることを知らせる信号は、リンクによって転送制御部106の入力CTに送られる。
【0047】バイト・カウンタ/検出器113はパケットFIFO 103 にあるバイトのカウントを保持する増/減カウンタである。そのB+入力は受信制御部102の出力ABからの信号によって活動化される。その−B入力は転送制御部106の出力DBからの信号によって活動化される。そのEC出力は、後で説明するようにパケットFIFO 103 は本質的に完全なパケットを有することをバイトのカウントが示す毎に活動化される。
【0048】リンクi上のバッファが少なくともxiビットを含む場合は、xiはそれが本質的に完全なパケットを含むように定め、通信リンクは割込みできず且つパケットの長さはそのビットが到着するまで分からないものと仮定すると、Mビットの要求を満たすのに必要な時間は、次の式に示すように、残余のパケットが到着するのに必要な時間に等しい。
【数6】


【0049】ここで、Si はリンク速度であり、Sはサーバの速度である。もしMがバイトで示されれば、xiもバイトで示される。例えば、もしM=1000バイト、且つSi/S=0.1ならば、xi=900バイトである。
【0050】場合によっては、パケットの長さは、あらゆるパケットの長さが、例えば、その最初の数バイトにコード化されると、その全てのビットが到着しないうちに分かる。従って、本明細書に記述された方式は次のように拡張することができる。値xi は、Mがパケットの実際の長さ、例えばLに置換えらることを除けば、前述の式と類似の式を有する。xi はLとともに変るから、入力パケット毎に計算し直してその値をバイト・カウンタ113に供給する必要がある。
【0051】バイト・カウンタ/検出器113におけるロジックは、カウントがx1 よりも高ければ必ず出力ECを活動化する(値xi はリンク速度によるのでアダプタによって異なるかも知れない)。クロック・サイクル(CL入力参照)毎に、転送制御部106は、そのCT入力が活動化される(パケット・カウンタ105は少なくとも1つの完全なパケットがあることを示す)か又はそのEC入力が活動化される(バイト・カウンタ113はほぼ完全なパケットがあることを示す)場合に、そのPKT出力を活動化させる。PKT出力からの信号はリンクによってポートA01PKTに運ばれる。
【0052】次に、図1のバス・アービトレーション装置34の内部構造を示す図3について説明する。バッファ・サービス方式は本明細書ではMINアルゴリズム(図4参照)による。
【0053】バス・アービトレーション装置34のポートB01T0〜B01T9はバス33により入力アダプタ1のポートA01T0〜A01T9にリンクされる(図2参照)。これらのポートで10ビットの数は入力アダプタ1のTRBに対応する。他の全てのアダプタにも類似のリンクが存在する。これらの16の10ビットの数はバス・アービトレーション制御部217の制御の下にその出力WIからの信号により定期的にラッチ201〜216に記憶される。これらのラッチの内容はリンクによりアービトレーション・ロジック218の入力T(1)〜T(16) に運ばれる。
【0054】バス・アービトレーション装置34のポートB01PKTはバス33によって入力アダプタ1のポートA01PKTにリンクされる(図2参照)。この信号は、入力アダプタ1が少なくとも1つの完全なパケットを取得するか又は本質的に完全なパケットを取得し従って次のサービス周期でサービスされる候補であるときは必ず活動化される。他の全ての入力アダプタについて類似のリンクが存在する。これらの16の1ビット信号はバス・アービトレーション制御部217の制御の下にその出力WIからの信号によって定期的にラッチ201A〜216Aに記憶される。これらのラッチの内容はリンクを介してアービトレーション・ロジック218の入力C(1)〜C(16) に運ばれる。
【0055】アービトレーション・ロジック218はMINアルゴリズム(図4参照)に従って次にサービスされるバッファを選択する回路から成る。アービトレーション・ロジック218の出力AN1は、次のサービス周期でサービスされるアダプタの番号を表わす4ビットの数である。
【0056】バス・アービトレーション制御部217はその入力Iの信号が活動状態であるかどうかを判定することによりパケット転送の終了を検出する(入力Iはバス・アービトレーション装置34のポートBSY及び転送制御部106のBSY出力にリンクされる)。BSYが活動状態から非活動状態に変わると、これはバスの制御を持った入力アダプタが今それを放棄したことを示す。そしてアービトレーション・ロジック218の出力AN1はアービトレーション制御部217の制御の下にその出力WOからの信号によって "活動状態のアダプタ番号" と表示されたラッチ219に記憶される。次に、バス・アービトレーション制御部217はその出力GOを活動化させる。これは219で指定された入力アダプタがバスの制御を取得するための進行記号である。全てのバス動作のタイミングを供給するクロック信号も出力CLで生成される。
【0057】バス33(図1)は入力アダプタ1〜16、出力アダプタ17〜32及びバス・アービトレーション装置34にあるポートをリンクするワイヤのセットから成る。即ち、バス・アービトレーション装置34にあるポートA0〜A3、M、CL、BSYは入力アダプタ1にあるポートA01A0〜A01A3、A01M、A01CL、A01BSY及び入力アダプタ2〜16にある類似のポートにリンクされる。更に、バス・アービトレーション装置34にあるポートB01T0〜B01T9は入力アダプタ1にあるポートA01T0〜A01T9にリンクされ、バス・アービトレーション装置34にあるポートB02T0〜B02T9は入力アダプタ2にあるポートA02T0〜A02T9にリンクされる。以下、同様である。
【0058】次に図4について説明する。図4は図3のアービトレーション・ロジック218で実現されるMINアルゴリズムの流れ図を示す。ここでは、θ1〜θ16 は図3の入力T(1)〜T(16)の10ビットの数の値を表わし、C(1)〜C(16)は図3の入力C(1)〜C(16)の2進値を表わす(対応する入力信号が活動化されている場合、この値は1である)。AN及びAN1はそれぞれ図3の4ビット入力AN及び出力AN1の値を表わす。記号j及びMINは計算に用いる変数である。jの値は1〜16であるが、MINはTRB(θjs)のセットから最小のTRBθj の値を計算するために用いる。図3のバス・アービトレーション制御部217の制御の下にそれぞれ実行される計算はA(図4)で始まる。
【0059】ステップ301で、変数MIN及びjは初期化される。変数jは値1を取得するのに対し、変数MINは10ビットの2進レジスタに記憶できる最大値、即ち210−1が割当てられる。ステップ302で、条件C(j)が検査される。もしC(j)=0であれば、これはj番目の入力アダプタがθM の決定に参加しないことを意味するのでステップ303及び304はスキップされ、計算の手順は直にステップ305に進む。しかしながら、もしC(j)=1であれば、手順はステップ303に進み、MINはθ1と比較される。もしθ1の方が小さければ、ステップ304で、MINは新しい値、即ちθ1 の値を取得する。さもなければ、MINは変更されず、手順はステップ305に進む。ステップ305で、jは1だけ増加される。ステップ306で、jの値が検査される。もしjが16よりも大きければ、手順はステップ307に進む。さもなければ、手順はステップ302に戻る。この時点で、MINの値はθM である。
【0060】ステップ307で、jはAN、現に活動状態の入力アダプタの番号の値が割当てられる。ステップ308で、jの値は1だけ増加される。ステップ310で、jの値が検査される。もしjが16よりも大きければ、ステップ309で、jは1が割当てられ、計算の手順はステップ311に進む。さもなければ、手順は直にステップ311に進む。ステップ311で、条件C(j)が検査される。もしC(j)が0であれば、手順はステップ308に戻る。さもなければ、手順はステップ312に進む。ステップ312で、値θj はMINの値と比較される。もし両者が等しければ、jは次にサービスされるアダプタの番号であるので、ステップ313で、jの値はAN1が割当てられる。さもなければ、手順はステップ308に戻る。ステップ313で計算は終了する。
【0061】次に、FULLアルゴリズムを用いる入力アダプタ1の内部構造を示す図5について説明する。FULLアルゴリズムを用いる入力アダプタ1の内部構造は図2の内部構造(MINアルゴリズムを用いる)に極めて類似しているから、両者の間の相違点だけを説明する。
【0062】バイト・カウンタ/検出器113は追加の出力Mを有する。出力Mはカウンタにあるバイトの数がパラメータMの値に等しいか又はそれよりも大きいとき必ず活動化される。この信号はリンクによって転送制御部106の入力Mに運ばれる。もし入力Mが活動化されれば、クロック・サイクル(入力CL参照)毎に、転送制御部106はその出力MCを活動化させる。MC信号はリンクによってポートA01MC に運ばれる。
【0063】次に、FULLアルゴリズムを用いるバス・アービトレーション装置34の内部構造を示す図6について説明する。これは図3の内部構造(MINアルゴリズムを用いる)に極めて類似しているから、両者の間の相違点だけを説明する。
【0064】ポートB01MCはバスによって入力アダプタ1のポートA01MCに接続される。他のアダプタについても同様である。従って、入力アダプタ1のバッファがM以上のバイトを含むとき、B01MC の信号は必ず活動化される。この信号に対応するビットは、バス・アービトレーション制御部217の制御の下にその出力WIからの信号によってラッチ201Bに記憶される。他のアダプタの対応するビットも同様にラッチ202B〜216Bに記憶される。これらのラッチの出力はアービトレーション・ロジック218の入力M(1)〜M(16)から取出される。アービトレーション・ロジック218はFULLアルゴリズム(後で図7に関連して説明する)によって次にサービスされるバッファを選択する回路から成る。
【0065】次に、図6のアービトレーション・ロジック218によって実現されるFULLアルゴリズムをブロック図形式で示す図7について説明する。ここでは、 θ1〜θ16は図3の入力T(1)〜T(16)の値を表わし、C(1)〜C(16)は図6の入力C(1)〜C(16)の値を表わすのに対し、M(1)〜M(16)は図6の入力M(1)〜M(16)の値を表わす(対応する入力信号が活動化されている場合、この値は1である)。AN及びAN1はそれぞれ図6の入力AN及び出力AN1の値を表わす。記号j及びMINは計算で用いる変数である。jの値は1〜16をとるのに対し、MINは1セットのTRBから最小のTRBの値を計算するために用いられる。図6のバス・アービトレーション制御部217の制御の下に反復して実行される計算は図7のAで始まる。図7の流れ図は、以下に説明する小さな相違点の外は、図4の流れ図に類似している。図4のステップ302ではC(j)が0に等しいかどうかが検査されるが、図7のステップ402ではM(j)が0に等しいかどうかが検査される。ステップ306に続いて、MINの値はθF である。図4のステップ312ではθj がMINに等しいかどうかが検査されるのに対し、ステップ412ではθj がMINよりも小さいか又はそれに等しいかどうかが検査される。
【0066】前述のパケット交換装置において、全ての入力アダプタは、図1の入力アダプタ1のように、関連した入力リンクを備え、該リンクでパケットはバッファ・システムに到着する。他の実施例のなかには、バッファ・システム内のバッファの幾つかは、入力するパケットのために関連入力リンクを備えるのに対し、他のバッファは出力するパケットのために出力リンクを備えることがある。サーバが提供するサービスは、前者の場合にはバッファを空にし、後者の場合にはバッファを満たす。後者の場合、このようなシステムの実施例は図2乃至図7に基づいて設計することができる。前記設計には下記に概略的に示すような小さな変更が必要になるだけである。
【0067】後者の場合、図3、図4、図6及び図7は変更されない。図2および図5は、入力リンクを有するバッファについては変更されないが、出力リンクを有するバッファについては下記のような小変更を必要とする。図2で、入力リンクは出力リンクになり、従って転送制御部106はバス(ポートA01P0〜A01P7)から出力リンク(ポートLIN(1))へのバイトの転送を制御する。その結果、データ経路の矢印の方向は逆になる。例えば、バイトは、ポートA01P0〜A01P7からラッチ107の入力O(前記例では出力O)に、そしてラッチ107の出力I(前記例では入力I)からパケットFIFO 103 の入力O(前記例では出力O)に送られる。同様に、転送制御部106の出力PB及びPEはそれぞれデリミタFIFO104 の入力BO及びEOに送られる。そしてデリミタFIFO 104 の入力BI及びEIは出力となり、それぞれのリンクの方向は逆になる。受信制御部102の入力BCLは出力となり、直列受信部101を介して出力リンクのタイミングを制御する。パケットFIFO 103 の入力Iは出力となり、直列受信部101の出力P、PB、PE及びBCLは入力となる。FULLアルゴリズムの図5についても同一の変更が行われる。
【0068】前述の良好な実施例で、b(TRBカウンタ110(図2)にあるビットの数)=10と仮定した。更に、リンクi(i=1,...,16)の速度SiはSFの倍数であると仮定した。これらの仮定の結果として、良好な実施例で実施される方式は前述のようにLTRB方式に似ている。この良好な実施例は大部分の実際の場合に満足すべきものである。しかしながら、所望すれば、実施例の精度は次のようにかなり高めることができる。
【0069】値b(TRBカウンタ110のビット数)を増すことにより、このビット数の制限から生じる誤りを任意に小さくすることができる。TRBの計算は少しも行わない異なるアプローチも可能である。すなわち、アダプタiがパケットFIFO中にQi バイトを有すると仮定すると、アダプタiとアダプタjのTRBを比較することは(2M−Qi)/Siと(2M−Qj)/Sjとを比較することを意味する。これは乗算を含む演算(2M−Qi)Sjと(2M−Qj)Siとを比較することに等しいので、良好な実施例で説明した演算よりも効率は低いが、正確に実行することができる。そして前記手順での比較は15回まで実行され、従って最小のTRBが提供される。
【0070】
【発明の効果】本発明によれば、オーバフローの可能性を無くし、必要なバッファの大きさを最小にし且つリンクの数及びそれらの相対速度とは無関係であるサービス方式がバッファ・システムに提供される。
【図面の簡単な説明】
【図1】本発明で用いるパケット交換装置(バッファ・システム)の概要図である。
【図2】(MINアルゴリズムと呼ばれる)θM を用いる本発明で使用する入力アダプタの概要図である。
【図3】MINアルゴリズムを用いる本発明で使用するバス・アービトレーション装置の概要図である。
【図4】MINアルゴリズムのアービトレーション・ロジックの流れ図である。
【図5】(FULLアルゴリズムと呼ばれる)θF を用いる本発明で使用する入力アダプタの概要図である。
【図6】FULLアルゴリズムのバス・アービトレーション装置の概要図である。
【図7】FULLアルゴリズムのアービトレーション・ロジックの流れ図である。
【符号の説明】
1 入力アダプタ
16 入力アダプタ
17 出力アダプタ
32 出力アダプタ
33 バス
34 バス・アービトレーション装置
101 直列受信部
102 受信制御部
103 パケットFIFO
104 デリミタFIFO
105 パケット・カウンタ
106 転送制御部
107 ラッチ
108 PCF検出器
109 NCF検出器
110 TRBカウンタ
112 増加カウンタ
113 バイト・カウンタ/検出器
201 ラッチ
201A ラッチ
201B ラッチ
216 ラッチ
216A ラッチ
216B ラッチ
217 バス・アービトレーション制御部
218 アービトレーション・ロジック
219 ラッチ

【特許請求の範囲】
【請求項1】N個のリンクに接続し、上記N個のリンクのうちのj番目のリンクがj番目のバッファと個々に対応し、上記N個のリンクのうちX個のリンクが入力リンクで、(N−X)個のリンクが出力リンクであるバッファ・システムにおいて、(a)上記N個のバッファを有するサブセットにおける各バッファは、ビット情報が対応する上記入力リンクから到着しているとき、少なくとも本質的に完全なパケットを有し、ビット情報が上記各バッファから上記出力リンクへ送出されているとき、本質的に十分な自由記憶領域を有し、θjは、ビット情報が対応する上記j番目の入力リンクから上記j番目のバッファに到着しているとき、上記j番目のバッファが限界に達するのに必要な時間で、ビット情報が上記j番目のバッファから上記j番目の出力リンクへ送出されているとき、上記j番目のバッファが空になるのに必要な時間であるとき、上記N個のバッファを有するサブセットに関するθjの最小値であるθMを決定するステップと、(b)バッファのサービスが入力リンクに対応したバッファからビット情報を取り除き、出力リンクに対応したバッファにビット情報を記憶させることであるとき、θj=θMの値を持つバッファを上記サブセットのN個のバッファの中から選んでサービスするステップと、から成るバッファ・サービス方法。
【請求項2】Mが前記システムを介して転送される最大のパケットのサイズであるとき、上記各バッファが少なくとも2Mのバッファ・サイズを有する請求項1に記載のバッファ・サービス方法。
【請求項3】 N個のリンクに接続し、上記N個のリンクのうちのj番目のリンクがj番目のバッファと個々に対応し、上記N個のリンクのうちX個のリンクが入力リンクで、(N−X)個のリンクが出力リンクであり、Mがそのシステムを介して転送される最大のパケットサイズであるバッファ・システムにおいて、(a)上記N個のバッファを有するサブセットにおける各バッファは、ビット情報が対応する上記入力リンクから到着しているとき、少なくともMバイトを有し、ビット情報が上記各バッファから上記出力リンクへ送出されているとき、少なくともMバイトの自由記憶領域を有し、θjは、ビット情報が対応する上記j番目の入力リンクから上記j番目のバッファに到着しているとき、上記j番目のバッファが限界に達するのに必要な時間で、ビット情報が上記j番目のバッファから上記j番目の出力リンクへ送出されているとき、上記j番目のバッファが空になるのに必要な時間であるとき、θFが上記N個のバッファを有するサブセットに関するθjの最小値で、ビット情報がj番目のバッファに対応するリンクの一定のリンク速度で上記j番目のバッファへ連続的に到着し、叉は上記j番目のバッファから連続的に送出されることを想定してθjを計算してθFを決定するステップと、(b)ビット情報がバッファから対応する出力リンクへ送出されているとき、本質的に十分な自由記憶空間を有し、ビット情報が対応する入力リンクからバッファへ到着しているとき、本質的に完全なパケットを有するθj≦θFの値を持つバッファを上記バッファの中から選択してサービスするステップと、から成るバッファ・サービス方法。
【請求項4】Mが前記システムを介して転送される最大のパケットのサイズであるとき、上記各バッファが少なくとも2Mのバッファ・サイズを有する請求項3に記載のバッファ・サービス方法。
【請求項5】 N個のリンクに接続し、上記N個のリンクのうちのj番目のリンクがj番目のバッファと個々に対応し、上記N個のリンクのうちX個のリンクが入力リンクで、(N−X)個のリンクが出力リンクであるバッファ・システムにおいて、(a)上記N個のバッファを有するサブセットにおける各バッファは、ビット情報が対応する上記入力リンクから到着しているとき、少なくとも本質的に完全なパケットを有し、ビット情報が上記各バッファから上記出力リンクへ送出されているとき、十分な自由記憶領域を有し、θjは、ビット情報が対応する上記j番目の入力リンクから上記j番目のバッファに到着しているとき、上記j番目のバッファが限界に達するのに必要な時間で、ビット情報が上記j番目のバッファから上記j番目の出力リンクへ送出されているとき、上記j番目のバッファが空になるのに必要な時間であるとき、上記N個のバッファを有するサブセットに関するθjの最小値であるθMを決定する手段と、(b)バッファのサービスが入力リンクに対応したバッファからビット情報を取り除き、出力リンクに対応したバッファにビット情報を記憶させることであるとき、θj=θMの値を持つバッファを上記サブセットのN個のバッファの中から選んでサービスする手段と、から成るバッファ・サービス装置。
【請求項6】Mが前記システムを介して転送される最大のパケットのサイズであるとき、上記各バッファが少なくとも2Mのバッファ・サイズを有する請求項5に記載のバッファ・サービス装置。
【請求項7】 N個のリンクに接続し、上記N個のリンクのうちのj番目のリンクがj番目のバッファと個々に対応し、上記N個のリンクのうちX個のリンクが入力リンクで、(N−X)個のリンクが出力リンクであり、Mがそのシステムを介して転送される最大のパケットサイズであるバッファ・システムにおいて、(a)上記N個のバッファを有するサブセットにおける各バッファは、ビット情報が対応する上記入力リンクから到着しているとき、少なくともMバイトを有し、ビット情報が上記各バッファから上記出力リンクへ送出されているとき、少なくともMバイトの自由記憶領域を有し、θjは、ビット情報が対応する上記j番目の入力リンクから上記j番目のバッファに到着しているとき、上記j番目のバッファが限界に達するのに必要な時間で、ビット情報が上記j番目のバッファから上記j番目の出力リンクへ送出されていとき、上記j番目のバッファが空になるのに必要な時間であるとき、θFが上記N個のバッファを有するサブセットに関するθjの最小値で、ビット情報がj番目のバッファに対応するリンクの一定のリンク速度で上記j番目のバッファへ連続的に到達し、叉は上記j番目のバッファから連続的に送出されることを想定してθjを計算してθFを決定する手段と、(b)ビット情報がバッファから対応する出力リンクへ送出されるとき、本質的に十分な自由記憶空間を有し、ビット情報が対応する入力リンクからバッファへ到達するとき、本質的に完全なパケットを有するθj≦θFの値を持つバッファを上記バッファの中から選択してサービスする手段と、から成るバッファ・サービス装置。
【請求項8】Mが前記システムを介して転送される最大のパケットのサイズであるとき、上記各バッファが少なくとも2Mのバッファ・サイズを有する請求項7に記載のバッファ・サービス装置。

【図1】
image rotate


【図2】
image rotate


【図3】
image rotate


【図4】
image rotate


【図5】
image rotate


【図6】
image rotate


【図7】
image rotate


【特許番号】第2559940号
【登録日】平成8年(1996)9月5日
【発行日】平成8年(1996)12月4日
【国際特許分類】
【出願番号】特願平4−20742
【出願日】平成4年(1992)1月10日
【公開番号】特開平5−68058
【公開日】平成5年(1993)3月19日
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレイション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【参考文献】
【文献】 特開 平1−204548(JP,A)
【文献】 特開 昭63−301644(JP,A)