(57)【要約】【課題】バッファ用メモリの利用効率が高いバッファ回路及びバッファ回路制御方法を提供する。【解決手段】バッファ回路が、フレームデータを記憶するバッファ用メモリ手段と、バッファ用メモリ手段に記憶されたフレームデータ数をフレームデータの属性毎に示す属性値別蓄積量を出力する属性値別蓄積量監視手段と、属性値別蓄積量の上限量を、バッファ用メモリ手段の空き容量又は蓄積量又はそれらの増減に基づいて算出し、フレームデータの属性を示す属性値が入力されると、属性値別蓄積量と属性値別蓄積量の上限量とを比較して、属性値のフレームデータをバッファ用メモリ手段に蓄積するか否かを決定し、蓄積する場合は収容有を示す情報を出力する収容判定手段と、フレームデータが入力され、収容判定手段から収容有の情報が入力されると、フレームデータをバッファ用メモリ手段に書き込むバッファ用メモリ制御手段と、を具備する。【選択図】図１
2011009876.tif 000002
【特許請求の範囲】
【請求項１】
フレームデータを記憶するバッファ用メモリ手段と、
前記バッファ用メモリ手段に記憶されたフレームデータ数をフレームデータの属性毎に示す属性値別蓄積量を出力する属性値別蓄積量監視手段と、
前記属性値別蓄積量の上限量を、前記バッファ用メモリ手段の空き容量又は前記バッファ用メモリ手段におけるフレームデータの蓄積量又は前記空き容量の増減又は前記蓄積量の増減に基づいて算出し、フレームデータの属性を示す属性値が入力されると、前記属性値別蓄積量と前記属性値別蓄積量の上限量とを比較して、前記属性値のフレームデータを前記バッファ用メモリ手段に蓄積するか否かを決定し、蓄積する場合は収容有を示す情報を出力する収容判定手段と、
外部からフレームデータが入力された場合に、前記収容判定手段から収容有の情報が入力されたときは、前記フレームデータを前記バッファ用メモリ手段に書き込むバッファ用メモリ制御手段と、
を具備することを特徴とするバッファ回路。
【請求項２】
前記バッファ用メモリ制御手段は、外部から前記フレームデータと当該フレームデータの属性値とが入力され、前記入力されたフレームデータを前記バッファ用メモリ手段に書き込む場合は、空き容量減信号または蓄積量増信号と、前記入力された前記属性値と、を出力し、外部からフレームデータ読み出し指示と読み出すフレームデータの属性値とが入力され、前記フレームデータを読み出した場合は、空き容量増信号または蓄積量減信号と、前記入力された前記属性値とを出力し、
前記属性値別蓄積量監視手段は、
前記属性値別蓄積量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、
前記収容判定手段は、
前記空き容量または前記蓄積量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号が入力されると、前記空き容量を減少させまたは前記蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号が入力されると空き容量を増加させまたは前記蓄積量を減少させ、前記空き容量または前記蓄積量に基づいて前記属性値別蓄積量の上限量を算出する
ことを特徴とする請求項１記載のバッファ回路。
【請求項３】
前記バッファ用メモリ制御手段は、外部から入力される前記フレームデータを所定の蓄積単位容量ずつに分割した分割フレームデータを前記バッファ用メモリ手段に書き込むとともに、各分割フレームデータを書き込んだ前記バッファ用メモリ手段の内部の記憶領域を示す連結区画番号を内部のフレームデータ連結用メモリに書き込み、外部から前記フレームデータ出力指示が入力されると前記連結区画番号に基づいて前記分割フレームデータを結合して前記フレームデータを生成し、該フレームデータを出力することを特徴とする請求項１または請求項２記載のバッファ回路。
【請求項４】
前記属性値別蓄積量監視手段は、前記属性値別蓄積量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、
前記収容判定手段は、前記空き容量または前記蓄積量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号又は前記蓄積量増信号が入力されると前記空き容量を減少させ又は前記蓄積量を増加させ、前記空き容量増信号又は前記蓄積量減信号が入力されると前記空き容量を増加させ又は前記蓄積量を減少させ、前記空き容量または前記蓄積量に基づいて前記属性値別蓄積量の上限値を算出する
ことを特徴とする請求項３記載のバッファ回路。
【請求項５】
前記フレームデータの属性は、前記フレームデータのクラス又は前記フレームデータを受信した受信ポート又は前記フレームデータを送信する送信ポートであり、前記属性値は、前記クラスを示すクラス値又は前記受信ポートを示す受信ポート番号又は前記送信ポートを示す送信ポート番号であり、前記属性値別蓄積量は前記クラス毎のフレームデータの蓄積量又は受信ポート毎のフレームデータの蓄積量又は送信ポート毎のフレームデータの蓄積量であり、
前記収容判定手段は、前記クラス毎のフレームデータの蓄積量又は前記受信ポート毎のフレームデータの蓄積量又は前記送信ポート毎のフレームデータの蓄積量のいずれか又はこれらの組み合わせと、対応する各々の蓄積量の上限値と、を比較して、前記属性値のフレームデータを前記バッファ用メモリ手段に蓄積するか否かを決定する
ことを特徴とする請求項１から４何れかの項記載のバッファ回路。
【請求項６】
バッファ回路が、前記バッファ用メモリ手段に記憶されたフレームデータ数をフレームデータの属性毎に示す属性値別蓄積量を出力する属性値別蓄積量監視ステップと、
バッファ回路が、前記属性値別蓄積量の上限量を、前記バッファ用メモリ手段の空き容量又は前記バッファ用メモリ手段におけるフレームデータの蓄積量又は前記空き容量の増減又は前記蓄積量の増減に基づいて算出し、フレームデータの属性を示す属性値が入力されると、前記属性値別蓄積量と前記属性値別蓄積量の上限量とを比較して、前記属性値のフレームデータを前記バッファ用メモリ手段に蓄積するか否かを決定し、蓄積する場合は収容有を示す情報を出力する収容判定ステップと、
外部からフレームデータが入力された場合に、前記収容判定手段から収容有の情報が入力されたときは、前記フレームデータを前記バッファ用メモリ手段に書き込むバッファ用メモリ制御ステップと、
を具備することを特徴とするバッファ回路制御方法。
【請求項７】
前記バッファ用メモリ制御ステップは、外部から前記フレームデータと当該フレームデータの属性値とが入力され、前記入力されたフレームデータを前記バッファ用メモリ手段に書き込む場合は、空き容量減信号または蓄積量増信号と、前記入力された前記属性値と、を出力し、外部からフレームデータ読み出し指示と読み出すフレームデータの属性値とが入力され、前記フレームデータを読み出した場合は、空き容量増信号または蓄積量減信号と、前記入力された前記属性値とを出力し、
前記属性値別蓄積量監視ステップは、
前記属性値別蓄積量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、
前記収容判定ステップは、
前記空き容量または前記蓄積量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号が入力されると、前記空き容量を減少させまたは前記蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号が入力されると空き容量を増加させまたは前記蓄積量を減少させ、前記空き容量または前記蓄積量に基づいて前記属性値別蓄積量の上限量を算出する
ことを特徴とする請求項６記載のバッファ回路制御方法。
【請求項８】
前記バッファ用メモリ制御ステップは、外部から入力される前記フレームデータを所定の蓄積単位容量ずつに分割した分割フレームデータを前記バッファ用メモリ手段に書き込むとともに、各分割フレームデータを書き込んだ前記バッファ用メモリ手段の内部の記憶領域を示す連結区画番号を内部のフレームデータ連結用メモリに書き込み、外部から前記フレームデータ出力指示が入力されると前記連結区画番号に基づいて前記分割フレームデータを結合して前記フレームデータを生成し、該フレームデータを出力することを特徴とする請求項６または請求項７記載のバッファ回路制御方法。
【請求項９】
前記属性値別蓄積量監視ステップは、前記属性値別蓄積量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、
前記収容判定ステップは、前記空き容量または前記蓄積量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号又は前記蓄積量増信号が入力されると前記空き容量を減少させ又は前記蓄積量を増加させ、前記空き容量増信号又は前記蓄積量減信号が入力されると前記空き容量を増加させ又は前記蓄積量を減少させ、前記空き容量または前記蓄積量に基づいて前記属性値別蓄積量の上限値を算出する
ことを特徴とする請求項８記載のバッファ回路制御方法。
【請求項１０】
前記フレームデータの属性は、前記フレームデータのクラス又は前記フレームデータを受信した受信ポート又は前記フレームデータを送信する送信ポートであり、前記属性値は、前記クラスを示すクラス値又は前記受信ポートを示す受信ポート番号又は前記送信ポートを示す送信ポート番号であり、前記属性値別蓄積量は前記クラス毎のフレームデータの蓄積量又は受信ポート毎のフレームデータの蓄積量又は送信ポート毎のフレームデータの蓄積量であり、
前記収容判定ステップは、前記クラス毎のフレームデータの蓄積量又は前記受信ポート毎のフレームデータの蓄積量又は前記送信ポート毎のフレームデータの蓄積量のいずれか又はこれらの組み合わせと、対応する各々の蓄積量の上限値と、を比較して、前記属性値のフレームデータを前記バッファ用メモリ手段に蓄積するか否かを決定する
ことを特徴とする請求項６から９何れかの項記載のバッファ回路制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファ回路及びバッファ回路制御方法に関する。
【背景技術】
【０００２】
従来のバッファ回路では、フレームをバッファ用メモリに収容するか廃棄するかの判定を、キュー長に基づいて行う。
例えば、特許文献１に示されたフレームを蓄積するためのバッファ回路では、ＤＤＲ−ＳＤＲＡＭ(Double-Data-Rate Synchronous Dynamic Random Access Memory)等の汎用の外部メモリをバッファ用メモリとして用いる。この外部メモリは、最長フレームを収容可能な固定容量に区分けされ、バッファ回路は区分けされた領域１個につき１個のフレームを収容する。最長フレームを収容可能な固定容量は、例えば２キロバイトである。前記の区分けされた各領域に各々異なるハンドル番号が割り当てられ、ハンドル管理部が各領域の空塞を前記ハンドル番号を用いて管理する。ＱｏＳ（Quality of Service、サービス品質）部は、複数のキューを具備し、フレームを収容した領域のハンドル番号と前記フレームの各種情報とを合わせたジョブ情報とを、ジョブ情報に基づいて選択したキューに入力する。このとき前記キューが最大キュー長に達している場合は、このジョブ情報のハンドル番号をハンドル管理部に返却し、ハンドル管理部は前記フレームを収容した領域を空領域にする。
このように、特許文献１に示されたバッファ回路のバッファ制御は、クラス別かつ送信ポート別に用意された各キューのキュー長に基づいてフレームをバッファへ収容するか廃棄するかを判定する、キューイング制御により行われていた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１３５０４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に示されたバッファ回路は、キュー毎に設定されるキュー長上限に達するまではフレームデータのバッファへの収容を保証するが、キュー長上限を超えた場合はフレームを廃棄する。このため、各キューのキュー長上限を、動作に問題が生じない最大キュー長以上に設定する必要がある。そして、各キューに配分されたバッファ用メモリの容量は固定である。このため、複数のキューが同時に最大キュー長に達することがない場合などは、バッファ用メモリの利用効率が低い。
【０００５】
また、特許文献１に示されたバッファ回路は、バッファ輻輳（オーバーフロー）時はクラスや送信ポートとは無関係にフレームを廃棄するため、ＱｏＳを確実に実現することができない。そこで、バッファ輻輳によるフレームの廃棄を抑止するために、バッファ用メモリの最大収容フレーム数を全キューに蓄積可能なジョブ情報数以上とする必要がある。そして、特許文献１に示されたバッファ回路は区分けされた領域１個につき１個のフレームを収容するので、短いフレームを収容する場合はバッファ用メモリの利用効率が低い。例えば、区分けされた領域の全てに最長フレームの２０分の１程度のデータ量である短フレームを収容している場合、バッファ用メモリに蓄積されたデータ量は前記メモリ容量の２０分の１にすぎない。しかし、２０分の１であるとはいえ、バッファ用メモリの最大収容フレーム数を既に収容しているため、以後の受信フレームはバッファ用メモリに収容されず廃棄される。受信フレームの大部分が最長フレームと同程度の長さをもつ長フレームであればバッファ用メモリの利用効率は高いが、一般的には短フレームの割合が大きいため、バッファ用メモリの利用効率が低い。
このように、特許文献１に示されたバッファ回路等、従来のバッファ回路は、バッファ用メモリの利用効率が低い分、バッファ用メモリの容量を大きくする必要があり、回路規模が増大するという課題があった。
【０００６】
本発明は、このような事情を考慮してなされたものであり、その目的は、バッファメモリの利用効率がより高く、回路規模の増大を抑えたバッファ回路及びバッファ回路制御方法を提供することにある。
【課題を解決するための手段】
【０００７】
［１］この発明は上述した課題を解決するためになされたもので、本発明の一態様によるバッファ回路は、フレームデータを記憶するバッファ用メモリ手段と、前記バッファ用メモリ手段に記憶されたフレームデータ数をフレームデータの属性毎に示す属性値別蓄積量を出力する属性値別蓄積量監視手段と、前記属性値別蓄積量の上限量を、前記バッファ用メモリ手段の空き容量又は前記バッファ用メモリ手段におけるフレームデータの蓄積量又は前記空き容量の増減又は前記蓄積量の増減に基づいて算出し、フレームデータの属性を示す属性値が入力されると、前記属性値別蓄積量と前記属性値別蓄積量の上限量とを比較して、前記属性値のフレームデータを前記バッファ用メモリ手段に蓄積するか否かを決定し、蓄積する場合は収容有を示す情報を出力する収容判定手段と、外部からフレームデータが入力された場合に、前記収容判定手段から収容有の情報が入力されたときは、前記フレームデータを前記バッファ用メモリ手段に書き込むバッファ用メモリ制御手段と、を具備することを特徴とする。
このバッファ回路は、各属性値のフレームデータが同一のバッファ用メモリに記憶され、各属性値に割り当てられる容量は上限値によって管理される。したがって、属性値毎にバッファ用メモリの固定の容量を割り当てる必要が無く、バッファ用メモリの利用効率が高い。
【０００８】
［２］また、本発明の一態様によるバッファ回路は上述のバッファ回路であって、前記バッファ用メモリ制御手段は、外部から前記フレームデータと当該フレームデータの属性値とが入力され、前記入力されたフレームデータを前記バッファ用メモリ手段に書き込む場合は、空き容量減信号または蓄積量増信号と、前記入力された前記属性値と、を出力し、外部からフレームデータ読み出し指示と読み出すフレームデータの属性値とが入力され、前記フレームデータを読み出した場合は、空き容量増信号または蓄積量減信号と、前記入力された前記属性値とを出力し、前記属性値別蓄積量監視手段は、前記属性値別蓄積量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、前記収容判定手段は、前記空き容量または前記蓄積量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号が入力されると、前記空き容量を減少させまたは前記蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号が入力されると空き容量を増加させまたは前記蓄積量を減少させ、前記空き容量または前記蓄積量に基づいて前記属性値別蓄積量の上限量を算出することを特徴とする。
ここで、フレームデータの属性は、例えば、そのフレームデータのクラスや、そのフレームデータを受信した受信ポートや、そのフレームデータを送信する送信ポートである。また、フレームデータのクラスや、そのフレームデータを受信した受信ポートや、そのフレームデータを送信する送信ポートの属性値としてはそれぞれクラス値や、受信ポート番号や、送信ポート番号などを用いることができる。収容判定手段は、例えば、クラス毎のフレームデータの蓄積量又は受信ポート毎のフレームデータの蓄積量又は送信ポート毎のフレームデータの蓄積量のいずれか又はこれらの組み合わせと、対応する各々の蓄積量の上限値と、を比較して、この属性値のフレームデータをバッファ用メモリ手段に蓄積するか否かを決定する。なお、１つのフレームデータがマルチキャスト送信される場合もある。このフレームデータには複数個の送信ポート番号が割り当てられる。マルチキャスト送信されるフレームデータは、割り当てられた送信ポート番号の個数と同じ回数バッファ用メモリ手段から読み出されて送信される。一方、ユニキャスト送信されるフレームデータは、バッファ用メモリ手段から１回のみ読み出されて送信される。このフレームデータには１個の送信ポート番号が割り当てられる。
上記のバッファ回路は、属性値別蓄積量（クラス別・受信ポート別・送信ポート別のバッファ蓄積量）とバッファ用メモリの空き容量を監視し、バッファ用メモリの空き容量の変化に応じて、クラス別・受信ポート別・送信ポート別蓄積量の上限を所定の変更方法に基づいて変更し、前記蓄積量と前記蓄積量上限を比較し、フレームをバッファ用メモリに収容するか否かを判定する。クラス・受信ポート・送信ポートに応じて、蓄積量上限の変更方法に関するパラメタ値を変えることにより、バッファ用メモリの空き容量（蓄積量）に応じて、各フレームデータがバッファ用メモリに占める比率を調整できるため、キューイング制御に拠らずにクラスやポートに関連付けたバッファ輻輳時の廃棄等のバッファ制御が可能となる。また、上記のバッファ回路において、バッファ用メモリの空き容量（蓄積量）に基づいてクラス別・受信ポート別・送信ポート別蓄積量上限を算出する。バッファ用メモリの空きが大きい場合は、クラス別・受信ポート別・送信ポート別蓄積量上限が大きくなるよう算出することにより、バッファ用メモリの空きを蓄積量が増加中のクラス・ポートに振り当てることができる。これにより、バッファ用メモリの利用効率が向上するため、バッファ用メモリに要する回路の規模を削減することができる。
【０００９】
［３］また、本発明の一態様によるバッファ回路は上述のバッファ回路であって、前記バッファ用メモリ制御手段は、外部から入力される前記フレームデータを所定の蓄積単位容量ずつに分割した分割フレームデータを前記バッファ用メモリ手段に書き込むとともに、各分割フレームデータを書き込んだ前記バッファ用メモリ手段の内部の記憶領域を示す連結区画番号を内部のフレームデータ連結用メモリに書き込み、外部から前記フレームデータ出力指示が入力されると前記連結区画番号に基づいて前記分割フレームデータを結合して前記フレームデータを生成し、該フレームデータを出力することを特徴とする。
このバッファ回路は、予め定められた蓄積単位容量Ｓをもつバッファ区画でバッファ用メモリを区画し、各フレームを蓄積単位容量Ｓの長さの分割フレームに分割し、空きバッファ区画を探して分割フレームを蓄積する。１フレーム当たりの未使用量がＳ未満となりバッファ用メモリの利用効率が向上するため、バッファ用メモリに要する回路の規模を削減することができる。
【００１０】
［４］また、本発明の一態様によるバッファ回路は上述のバッファ回路であって、前記属性値別蓄積量監視手段は、前記属性値別蓄積量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、前記収容判定手段は、前記空き容量または前記蓄積量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号又は前記蓄積量増信号が入力されると前記空き容量を減少させ又は前記蓄積量を増加させ、前記空き容量増信号又は前記蓄積量減信号が入力されると前記空き容量を増加させ又は前記蓄積量を減少させ、前記空き容量または前記蓄積量に基づいて前記属性値別蓄積量の上限値を算出することを特徴とする。
このバッファ回路は、バッファ用メモリ手段の空き容量または蓄積量に基づいて属性値別蓄積量の上限値を算出する。これにより各属性値の分割フレームデータを同一のバッファ回路に蓄積でき、バッファ用メモリに要する回路の規模を削減することができる。
【００１１】
［５］また、本発明の一態様によるバッファ回路は上述のバッファ回路であって、
前記フレームデータの属性は、前記フレームデータのクラス又は前記フレームデータを受信した受信ポート又は前記フレームデータを送信する送信ポートであり、前記属性値は、前記クラスを示すクラス値又は前記受信ポートを示す受信ポート番号又は前記送信ポートを示す送信ポート番号であり、前記属性値別蓄積量は前記クラス毎のフレームデータの蓄積量又は受信ポート毎のフレームデータの蓄積量又は送信ポート毎のフレームデータの蓄積量であり、前記収容判定手段は、前記クラス毎のフレームデータの蓄積量又は前記受信ポート毎のフレームデータの蓄積量又は前記送信ポート毎のフレームデータの蓄積量のいずれか又はこれらの組み合わせと、対応する各々の蓄積量の上限値と、を比較して、前記属性値のフレームデータを前記バッファ用メモリ手段に蓄積するか否かを決定することを特徴とする。
このバッファ回路は、バッファ用メモリ手段の空き容量または蓄積量に基づいて、クラス毎のフレームデータの蓄積量又は受信ポート毎のフレームデータの蓄積量又は送信ポート毎のフレームデータの蓄積量の上限値を算出する。これにより各クラス、各受信ポート、各送信ポートのフレームデータを同一のバッファ回路に蓄積でき、バッファ用メモリに要する回路の規模を削減することができる。
【００１２】
［６］また、本発明の一態様によるバッファ回路制御方法は、バッファ回路が、前記バッファ用メモリ手段に記憶されたフレームデータ数をフレームデータの属性毎に示す属性値別蓄積量を出力する属性値別蓄積量監視ステップと、バッファ回路が、前記属性値別蓄積量の上限量を、前記バッファ用メモリ手段の空き容量又は前記バッファ用メモリ手段におけるフレームデータの蓄積量又は前記空き容量の増減又は前記蓄積量の増減に基づいて算出し、フレームデータの属性を示す属性値が入力されると、前記属性値別蓄積量と前記属性値別蓄積量の上限量とを比較して、前記属性値のフレームデータを前記バッファ用メモリ手段に蓄積するか否かを決定し、蓄積する場合は収容有を示す情報を出力する収容判定ステップと、外部からフレームデータが入力された場合に、前記収容判定手段から収容有の情報が入力されたときは、前記フレームデータを前記バッファ用メモリ手段に書き込むバッファ用メモリ制御ステップと、を具備することを特徴とする。
このバッファ回路制御方法では、バッファ回路は、各属性値のフレームデータが同一のバッファ用メモリに記憶され、各属性値に割り当てられる容量は上限値によって管理される。したがって、属性値毎にバッファ用メモリの固定の容量を割り当てる必要が無く、バッファ用メモリの利用効率が高い。
【００１３】
［７］また、本発明の一態様によるバッファ回路制御方法は上述のバッファ回路制御方法であって、前記バッファ用メモリ制御ステップは、外部から前記フレームデータと当該フレームデータの属性値とが入力され、前記入力されたフレームデータを前記バッファ用メモリ手段に書き込む場合は、空き容量減信号または蓄積量増信号と、前記入力された前記属性値と、を出力し、外部からフレームデータ読み出し指示と読み出すフレームデータの属性値とが入力され、前記フレームデータを読み出した場合は、空き容量増信号または蓄積量減信号と、前記入力された前記属性値とを出力し、前記属性値別蓄積量監視ステップは、前記属性値別蓄積量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、前記収容判定ステップは、前記空き容量または前記蓄積量を内部に記憶し、前記バッファ用メモリ制御手段から、前記空き容量減信号または前記蓄積量増信号が入力されると、前記空き容量を減少させまたは前記蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号が入力されると空き容量を増加させまたは前記蓄積量を減少させ、前記空き容量または前記蓄積量に基づいて前記属性値別蓄積量の上限量を算出することを特徴とする。
このバッファ回路処理方法では、このバッファ回路は、属性値別蓄積量（クラス別・受信ポート別・送信ポート別のバッファ蓄積量）とバッファ用メモリの空き容量を監視し、バッファ用メモリの空き容量の変化に応じて、クラス別・受信ポート別・送信ポート別蓄積量の上限を所定の変更方法に基づいて変更し、前記蓄積量と前記蓄積量上限を比較し、フレームをバッファ用メモリに収容するか否かを判定する。クラス・受信ポート・送信ポートに応じて、蓄積量上限の変更方法に関するパラメタ値を変えることにより、バッファ用メモリの空き容量（蓄積量）に応じて、各フレームデータがバッファ用メモリに占める比率を調整できるため、キューイング制御に拠らずにクラスやポートに関連付けたバッファ輻輳時の廃棄等のバッファ制御が可能となる。また、上記のバッファ回路において、バッファ用メモリの空き容量（蓄積量）に基づいてクラス別・受信ポート別・送信ポート別蓄積量上限を算出する。バッファ用メモリの空きが大きい場合は、クラス別・受信ポート別・送信ポート別蓄積量上限が大きくなるよう算出することにより、バッファ用メモリの空きを蓄積量が増加中のクラス・ポートに振り当てることができる。これにより、バッファ用メモリの利用効率が向上するため、バッファ用メモリに要する回路の規模を削減することができる。
【００１４】
［８］また、本発明の一態様によるバッファ回路制御方法は上述のバッファ回路制御方法であって、前記バッファ用メモリ制御ステップは、外部から入力される前記フレームデータを所定の蓄積単位容量ずつに分割した分割フレームデータを前記バッファ用メモリ手段に書き込むとともに、各分割フレームデータを書き込んだ前記バッファ用メモリ手段の内部の記憶領域を示す連結区画番号を内部のフレームデータ連結用メモリに書き込み、外部から前記フレームデータ出力指示が入力されると前記連結区画番号に基づいて前記分割フレームデータを結合して前記フレームデータを生成し、該フレームデータを出力することを特徴とする。
このバッファ回路制御方法では、バッファ回路は、予め定められた蓄積単位容量Ｓをもつバッファ区画でバッファ用メモリを区画し、各フレームを蓄積単位容量Ｓの長さの分割フレームに分割し、空きバッファ区画を探して分割フレームを蓄積する。１フレーム当たりの未使用量がＳ未満となりバッファ用メモリの利用効率が向上するため、バッファ用メモリに要する回路の規模を削減することができる。
【００１５】
［９］また、本発明の一態様によるバッファ回路制御方法は上述のバッファ回路制御方法であって、前記属性値別蓄積量監視ステップは、前記属性値別蓄積量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号または前記蓄積量増信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を増加させ、前記空き容量増信号または前記蓄積量減信号と、前記属性値と、が入力されると前記属性値に対応する属性値別蓄積量を減少させ、前記収容判定ステップは、前記空き容量または前記蓄積量を分割フレームデータ数にて記憶し、前記バッファ用メモリ制御手段から前記空き容量減信号又は前記蓄積量増信号が入力されると前記空き容量を減少させ又は前記蓄積量を増加させ、前記空き容量増信号又は前記蓄積量減信号が入力されると前記空き容量を増加させ又は前記蓄積量を減少させ、前記空き容量または前記蓄積量に基づいて前記属性値別蓄積量の上限値を算出することを特徴とする。
このバッファ回路制御方法では、バッファ回路は、バッファ用メモリ手段の空き容量または蓄積量に基づいて属性値別蓄積量の上限値を算出する。これにより各属性値の分割フレームデータを同一のバッファ回路に蓄積でき、バッファ用メモリに要する回路の規模を削減することができる。
【００１６】
［１０］また、本発明の一態様によるバッファ回路制御方法は上述のバッファ回路制御方法であって、前記フレームデータの属性は、前記フレームデータのクラス又は前記フレームデータを受信した受信ポート又は前記フレームデータを送信する送信ポートであり、前記属性値は、前記クラスを示すクラス値又は前記受信ポートを示す受信ポート番号又は前記送信ポートを示す送信ポート番号であり、前記属性値別蓄積量は前記クラス毎のフレームデータの蓄積量又は受信ポート毎のフレームデータの蓄積量又は送信ポート毎のフレームデータの蓄積量であり、前記収容判定ステップは、前記クラス毎のフレームデータの蓄積量又は前記受信ポート毎のフレームデータの蓄積量又は前記送信ポート毎のフレームデータの蓄積量のいずれか又はこれらの組み合わせと、対応する各々の蓄積量の上限値と、を比較して、前記属性値のフレームデータを前記バッファ用メモリ手段に蓄積するか否かを決定することを特徴とする。
このバッファ回路制御方法では、バッファ回路は、バッファ用メモリ手段の空き容量または蓄積量に基づいて、クラス毎のフレームデータの蓄積量又は受信ポート毎のフレームデータの蓄積量又は送信ポート毎のフレームデータの蓄積量の上限値を算出する。これにより各クラス、各受信ポート、各送信ポートのフレームデータを同一のバッファ回路に蓄積でき、バッファ用メモリに要する回路の規模を削減することができる。
【発明の効果】
【００１７】
この発明によれば、バッファメモリの利用効率がより高く、回路規模の増大を抑えることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明を適用したバッファ回路を内蔵するスイッチ回路１の構成を示す。
【図２】図１のスイッチ回路１内の、本発明を適用したバッファ回路１３の構成を示す。
【図３】図２に示したバッファ回路内の収容判定回路の構成を示す。
【図４】図３に示した収容判定回路内の各蓄積量判定回路のフローチャートの例と、空き容量と前記空き容量から前記フローチャートによって生成される蓄積量上限との関係を示す図である。
【図５】図３に示した収容判定回路内の各蓄積量判定回路のフローチャートの第２の例と、空き容量と前記空き容量から前記フローチャートによって生成される蓄積量上限との関係を示す図である。
【図６】本発明を適用したバッファ回路を内蔵するスイッチ回路２の構成を示す。
【図７】図６のスイッチ回路２内の、本発明を適用したバッファ回路の構成を示す。
【図８】図７のバッファ回路内の、本発明を適用したバッファ用メモリ制御回路の構成を示す。
【図９】フレームデータをバッファ用メモリに書き込んだときの状態を示す。
【図１０】バッファ区画確保・書込制御回路のフローチャートである。
【図１１】バッファ区画読出・解放制御回路のフローチャート
【図１２】図７に示したバッファ回路内の収容判定回路の構成を示す。
【図１３】図８のバッファ制御回路の動作を説明する図であり、フレームデータ連結用メモリ・バッファ用メモリの状態の変化を示す。
【図１４】本発明を適用したバッファ回路を内蔵するスイッチ回路３の構成を示す。
【図１５】図１４のスイッチ回路３に含まれるバッファ回路（図７）内の、本発明を適用したバッファ用メモリ制御回路の構成を示す。
【図１６】バッファ区画確保・書込制御回路のフローチャートである。
【図１７】バッファ区画読出・解放制御回路のフローチャートである。
【図１８】図１５のバッファ制御回路の動作を説明する図であり、フレームデータ連結用メモリ・バッファ用メモリの状態の変化を示す。
【図１９】図１４のスイッチ回路に含まれるバッファ回路（図７）内の、本発明を適用したバッファ用メモリ制御回路の構成を示す。
【図２０】図７に示したバッファ回路内の収容判定回路の構成を示す。
【図２１】各蓄積量上限生成回路の動作を説明するフローチャートの例と、前記フローチャートによって生成される蓄積量上限との関係を示す図である。
【図２２】本発明を適用したバッファ回路を内蔵するスイッチ回路７の構成を示す。
【発明を実施するための形態】
【００１９】
＜第１の実施形態＞
以下、図面を参照して、本発明の第１の実施の形態について説明する。
図１は本発明の第１の実施形態におけるスイッチ回路の概略構成を示す構成図である。
同図のスイッチ回路１は、イーサネット（登録商標）等で用いられるスイッチ回路である。スイッチ回路１は、受信ポートでフレームを受信すると、受信したフレームの受信ポートや宛先ＭＡＣ(Media Access Control)アドレスまたはＶＬＡＮ  ＩＤ(Virtual Local Area Network Identifier)等に基づいて送信ポートを決定する。そして、決定された送信ポートにフレームを転送し、ＶＬＡＮ(Virtual Local Area Network)タグの挿入または削除等を行った後に送信する。また、スイッチ回路１は受信したフレームの受信ポートやＶＬＡＮタグ内の優先度等に基づいてクラスを決定し、決定したクラスに基づいて送信時のＱｏＳ処理を行う。具体的には、スイッチ回路１は送信ポート別かつクラス別にキューを備え、より高いクラスのフレームを先に送信する優先制御やクラス毎の送信レート制限を行う。前記キューに格納されるフレームのフレームデータは、前記スイッチ回路１内のバッファ回路に蓄積される。
同図において、スイッチ回路１は、受信ポート毎の受信ＭＡＣ回路１１−１〜Ｎｐと受信処理回路１２とバッファ回路１３とＱｏＳ回路１４と送信処理回路１５と送信ポート毎の送信ＭＡＣ回路１６−１〜Ｎｐとを含んで構成される。
【００２０】
受信ＭＡＣ回路１１−１〜Ｎｐは、各受信ポートから受信したフレーム（以下、受信フレームともいう）のフレームデータに対して所定の受信側ＭＡＣ処理を行い、前記受信フレームのフレームデータを受信処理回路１２に経路Ｗ１−１を通じて出力する。
受信処理回路１２は、入力されたフレームデータから宛先ＭＡＣアドレスを読み出す。また、入力されたフレームデータがＶＬＡＮタグを含む場合は、ＶＬＡＮタグからＶＬＡＮ  ＩＤや優先度を読み出す。受信処理回路１２は、受信ポートや宛先ＭＡＣアドレスやＶＬＡＮ  ＩＤに基づいて送信ポートを決定する。なお、受信処理回路１２が、１個の受信フレームに対して複数個の送信ポートを決定する場合もある。すなわち、受信処理回路１２は、マルチキャスト送信されるフレームデータに対しては、複数個の送信ポートを決定する。このフレームデータは決定された送信ポートの個数と同じ回数だけ読み出されて送信される。一方、受信処理回路１２は、ユニキャスト送信されるフレームデータに対しては、１個の送信ポートを決定する。なお、入力されたフレームデータに該当する送信ポートが無く、受信処理回路１２がフレームデータを廃棄する場合もある。
また、受信処理回路１２は受信ポート番号やＶＬＡＮタグから読み出した優先度情報に基づいてクラスを決定する。その後、受信処理回路１２は、受信フレームのフレームデータと、クラスの情報や受信ポートの情報や送信ポートの情報を含む受信処理出力ジョブ情報とを、バッファ回路１３に経路Ｗ１−２を通じて出力する。なお、上述したように送信ポートの情報が複数含まれる場合がある。
【００２１】
バッファ回路１３は、入力したフレームデータを自バッファ回路１３内のバッファ用メモリ１００に蓄積し、バッファ用メモリにおける蓄積位置を示すハンドル番号とクラスの情報と受信ポートの情報と送信ポート（複数の場合有り）の情報とを含むＱｏＳ入力ジョブ情報をＱｏＳ回路１４に経路Ｗ１−３を通じて出力する。その際、バッファ回路１３は、入力したフレームデータに含まれる送信ポートの情報のうち、ＱｏＳ回路１４のキューに蓄積可能（以下、ＱｏＳ入力可能ともいう）な送信ポートの情報をＱｏＳ入力ジョブ情報に含めて出力する。そのために、バッファ回路１３は、ＱｏＳ回路１４から経路Ｗ１−４を通じて入力されるＱｏＳ入力可否情報からクラス別かつ送信ポート別の入力可否の情報を読み出し、受信フレームのクラスの情報および送信ポートの情報を受信処理出力ジョブ情報から読み出す。バッファ回路１３は、クラス別かつ送信ポート別の入力可否の情報とクラスの情報および送信ポートの情報とを比較してＱｏＳ入力可能な送信ポートの情報を選択する。なお、ＱｏＳ入力可能な送信ポートがない場合は、バッファ回路１３は受信フレームのフレームデータを前記バッファ用メモリに蓄積せず、また、ＱｏＳ入力ジョブ情報を出力しない。
また、バッファ用メモリの蓄積状態に応じて、バッファ用メモリへの収容有無を判定し、収容無と判定した場合は、受信フレームのフレームデータを前記バッファ用メモリに蓄積せず、また、ＱｏＳ入力ジョブ情報を出力しない。詳細については後述する。
【００２２】
ＱｏＳ回路１４は、バッファ回路１３が入力したＱｏＳ入力ジョブ情報からクラスの情報および送信ポートの情報を読み出す。ＱｏＳ回路１４は、送信ポート別かつクラス別に対応付けられたキューを内部に備え、読み出した情報に基づいてキュー（複数の場合有り）を選択する。ＱｏＳ回路１４は、選択したキューにハンドル番号と受信ポートの情報とを含むキュー蓄積ジョブ情報を入力する。
また、ＱｏＳ回路１４は、各送信ポートについて、当該送信ポートかつ何れかのクラスに対応付けられた１個のキューを選択し、選択したキューから１個のキュー蓄積ジョブ情報を取り出す。ＱｏＳ回路１４は取り出したＱｏＳ出力ジョブ情報をバッファ回路１３に出力する。その際、ＱｏＳ回路１４は、取り出したキュー蓄積ジョブ情報からハンドル番号と受信ポートの情報とを読み出す。また、キュー蓄積ジョブ情報をどのキューから取り出したかによって、送信ポートの情報とクラスの情報とを取得する。ＱｏＳ回路１４は、これらのハンドル番号とクラスの情報と受信ポートの情報と送信ポートの情報とをＱｏＳ出力ジョブ情報に含めて出力する。前記キューの選択やキュー蓄積ジョブ情報を取り出すタイミングは、ＱｏＳ回路内のスケジューラ・シェーパが制御する。スケジューラ・シェーパは高いクラスのフレームを先に送信する優先制御やクラス毎の送信レート制限を行う。
【００２３】
また、ＱｏＳ回路１４は、ハンドル番号別蓄積ジョブ数を記憶する。ここで、ハンドル番号はバッファ用メモリ１００上の領域を示し、ハンドル番号別蓄積ジョブ数は、この領域に保持されたフレームデータのキュー蓄積ジョブ情報が、キューに蓄積されている個数を示す。このキュー蓄積ジョブ情報がキューに蓄積されている個数は、キュー蓄積ジョブ情報に対応するフレームデータの残り送信回数である。特にマルチキャスト送信されるフレームデータは、全ての送信が終了するまでバッファ用メモリ１００上に保持される。そのために、ＱｏＳ回路１４は、ハンドル番号別蓄積ジョブ数にてフレームデータの残り送信回数を計数する。バッファ用メモリ制御回路２００は、ハンドル番号別蓄積ジョブ情報が０となった場合に当該フレームデータを記憶していたバッファ用メモリ１００上の領域を解放する。また、ユニキャスト送信されるフレームデータの場合は、１個のキューにキュー蓄積ジョブ情報が蓄積され、ＱｏＳ回路１４はハンドル番号別蓄積ジョブ数として１を記憶する。このフレームデータが１回送信されると、ハンドル番号別蓄積ジョブ数が０となり、バッファ用メモリ制御回路２００は当該フレームデータを記憶していたバッファ用メモリ１００上の領域を解放する。
【００２４】
ＱｏＳ回路１４は、バッファ回路１３からＱｏＳ入力ジョブ情報が入力されると、入力されたキュー蓄積ジョブ情報をキューに入力するとともに、キュー蓄積ジョブ情報を入力したキューの個数をハンドル番号別蓄積ジョブ数として記憶する。また、ＱｏＳ回路１４は、キューからキュー蓄積ジョブ情報を取り出す度に、キュー蓄積ジョブ情報からハンドル番号を読み出し、対応するハンドル番号別蓄積ジョブ数から１を減じる。ＱｏＳ回路１４は、ハンドル番号別蓄積ジョブ数が０となった場合に解放有、前記以外は解放無と判定する。ＱｏＳ回路１４は、この判定結果を解放有無の情報としてＱｏＳ出力ジョブ情報に含めてバッファ回路１３に出力する。
また、ＱｏＳ回路１４は、送信ポート別かつクラス別に設けられたキューの各々について、キュー長が最大キュー長に達していない場合には当該キューへの入力可と判定し、それ以外の場合には入力不可と判定する。ＱｏＳ回路１４はこの判定結果をＱｏＳ入力可否情報としてバッファ回路１３に経路Ｗ１−５を通じて出力する。
【００２５】
バッファ回路１３は、入力されたＱｏＳ出力ジョブ情報からハンドル番号を読み出す。バッファ回路１３は読み出したハンドル番号が示す、バッファ用メモリ１００上の領域からフレームデータを読み出す。バッファ回路１３は、読み出したフレームデータと、送信ポートを含むバッファ出力ジョブ情報とを、送信処理回路１５に経路Ｗ１−６を通じて出力する。
送信処理回路１５は、入力したフレームデータに対してＶＬＡＮタグの挿入または削除等の処理を行う。送信処理回路１５は、処理を行ったフレームデータを、バッファ出力ジョブ情報に含まれる送信ポートの送信ＭＡＣ回路１６−１〜Ｎｐに経路Ｗ１−７を通じて出力する。
送信ＭＡＣ回路１６−１〜Ｎｐは、前記入力されたフレームデータに対して所定の送信側ＭＡＣ処理を行い、送信ポートから送信する。また、送信ＭＡＣ回路１６−１〜Ｎｐは、バッファ用メモリの蓄積状態に基づいて、送信ポートからポーズフレームを送信する。
【００２６】
図２は、バッファ回路１３の概略構成を示す構成図である。同図において、バッファ回路１３はバッファ用メモリ１００（バッファ用メモリ手段）とバッファ用メモリ制御回路２００（バッファ用メモリ制御手段）と収容判定回路３００（収容判定手段）とクラス別蓄積量監視回路４００と受信ポート別蓄積量監視回路５００と送信ポート別蓄積量監視回路６００とを含んで構成される。クラス別蓄積量監視回路４００と受信ポート別蓄積量監視回路５００と送信ポート別蓄積量監視回路６００とが属性別蓄積量監視手段に対応する。
バッファ用メモリ１００はフレームデータを記憶する。
バッファ用メモリ制御回路２００は、受信処理回路１２から入力されたフレームのフレームデータを、バッファ用メモリ１００の空き領域に書き込む。この書き込みのため、バッファ用メモリ制御回路２００は、バッファ用メモリ１００回路に書込指示・書込アドレス・書込データを出力する。
バッファ用メモリ制御回路２００は、受信処理回路１２から入力されたフレームデータをバッファ用メモリ１００に書き込む。バッファ用メモリ制御回路２００は、バッファ用メモリ１００回路に書込指示と書込アドレスを経路Ｗ１３−４を通じて出力し、書込データを経路Ｗ１３−５を通じて出力することにより書き込みを行う。また、バッファ用メモリ制御回路２００は、ＱｏＳ回路１４から経路Ｗ１３−９を通じて入力されるＱｏＳ出力ジョブ情報に従ってバッファ用メモリ１００からフレームデータを経路Ｗ１３−６を通じて読み出し、送信処理回路１５に出力する。そのために、バッファ用メモリ制御回路２００は読出指示と読出アドレスとをバッファ用メモリ１００に経路Ｗ１３−６を通じて出力する。
【００２７】
クラス別蓄積量監視回路４００は、クラス別蓄積量を出力する。ここで、クラス別蓄積量は、バッファ用メモリ１００に記憶されたフレームデータ数をクラス毎に示す。受信ポート別蓄積量監視回路５００は、受信ポート別蓄積量を出力する。ここで、受信ポート別蓄積量は、バッファ用メモリ１００に記憶されたフレームデータ数を受信ポート毎に示す。送信ポート別蓄積量監視回路６００は、送信ポート別蓄積量を出力する。ここで、送信ポート別蓄積量は、バッファ用メモリ１００に記憶されたフレームデータ数を受信ポート毎に示す。
収容判定回路３００はバッファ用メモリ１００の空き容量を内部に記憶する。また、収容判定回路３００は、記憶する空き容量からクラス別蓄積量上限と受信ポート別蓄積量上限と送信ポート別蓄積量上限とを決定する。また、収容判定回路３００は、収容有無情報を出力する。ここで、空き容量とは、後述するバッファ用メモリ１００が所定の単位で区画化された場合にて、各区画のうちの空き区画の個数をいう。
なお、収容判定回路３００がバッファ用メモリ１００におけるフレームデータの蓄積量を内部に記憶するようにしてもよい。ここで、蓄積量とは、バッファ用メモリ１００が所定の単位で区画された各区画のうち、フレームデータが記憶されている区画の個数をいう。空き容量と蓄積量とは和が一定の関係にあるので、空き容量を記憶する場合と同様に、収容判定回路３００は記憶する蓄積量からクラス別蓄積量上限と受信ポート別蓄積量上限と送信ポート別蓄積量上限とを決定することができる。なお、以下では、収容判定回路３００が記憶する空き容量または蓄積量を空き容量情報または蓄積量情報ともいう。
【００２８】
図３は収容判定回路３００の概略構成を示す構成図である。同図において、収容判定回路３００は、空き容量監視回路３０１とクラス＿ｉ蓄積量上限生成回路（ｉ＝１〜Ｎｃ；Ｎｃはクラス数）３０２−１〜Ｎｃと受信ポート＿ｉ（ｉ＝１〜Ｎｐ；Ｎｐはポート数）３０５−１〜Ｎｐと送信ポート＿ｉ蓄積量上限生成回路（ｉ＝１〜Ｍｐ；Ｎｐはポート数；送信ポート数と受信ポート数が同数であるスイッチ回路の場合）３０８−１〜Ｎｃとクラス＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｃ）３０３−１〜Ｎｃと受信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３０６−１〜Ｎｃと送信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３０９−１〜Ｎｐと選択回路３０４、３０７と複数選択回路３１０と論理積回路３１１とを含んで構成される。
空き容量監視回路３０１は、バッファ用メモリ１００の空き容量情報を、フレーム数にて内部に記憶する。なお、上述のように、空き容量監視回路３０１が、バッファ用メモリ１００におけるフレームデータの蓄積量を、フレーム数に内部に記憶するようにしてもよい。
空き容量監視回路３０１は、バッファ用メモリ制御回路２００から空き容量増減信号が経路Ｗ３００−１を通じて入力されると、内部に保持する空き容量情報を増加または減少させる。空き容量増減信号がバッファ用メモリの１区画を確保したことを示す場合は、バッファ用メモリ１００に１個のフレームを蓄積することに相当するため、空き容量情報を１減少させる。また、空き容量増減信号がバッファ用メモリの１区画を解放したことを示す場合は、バッファ用メモリの１個のフレームを廃棄することに相当するため、空き容量情報を１増加させる。
【００２９】
クラス＿ｉ蓄積量上限生成回路（ｉ＝１〜Ｎｃ）３０２−１〜Ｎｃは、空き容量監視回路３０１から空き容量を入力し、クラス＿ｉに関するクラス別蓄積量上限を生成し出力する。クラス＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｃ）３０３−１〜Ｎｃは、クラス＿ｉに関するクラス別蓄積量上限とクラス別蓄積量とを入力し、クラス別蓄積量上限とクラス別蓄積量とを比較し、クラス＿ｉ蓄積量判定結果として出力する。クラス別蓄積量がクラス別蓄積量上限よりも小さい場合は、収容可能であることを示す１を出力し、それ以外の場合は収容不可であることを示す０を出力する。クラス別蓄積量は経路Ｗ３００−２を通じてクラス別蓄積量監視回路４００から入力される。
選択回路３０４は、クラス＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｃ）３０３−１〜Ｎｃから入力するクラス＿ｉ蓄積量判定結果（ｉ＝１〜Ｎｃ）のうち、入力フレームのクラスに関する判定結果を選択し、クラス別収容可否判定結果とする。入力フレームのクラスは、バッファ用メモリ制御回路２００から経路Ｗ３００−３を通じて入力される。
【００３０】
受信ポート＿ｉ蓄積量上限生成回路（ｉ＝１〜Ｎｐ）３０５〜１−Ｎｐは、空き容量監視回路３０１から空き容量を入力し、受信ポート＿ｉに関する受信ポート別蓄積量上限を生成し出力する。受信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３０６〜１−Ｎｐは、受信ポート＿ｉに関する受信ポート別蓄積量上限と受信ポート別蓄積量を入力し、受信ポート別蓄積量上限と受信ポート別蓄積量とを比較し、受信ポート＿ｉ蓄積量判定結果として出力する。受信ポート別蓄積量が受信ポート別蓄積量上限よりも小さい場合は、収容可能であることを示す１を出力し、それ以外の場合は収容不可であることを示す０を出力する。受信ポート別蓄積量は経路Ｗ３００−４を通じて受信ポート別蓄積量監視回路５００から入力される。
選択回路３０７は、受信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３０６〜１−Ｎｐから入力する受信ポート＿ｉ蓄積量判定結果（ｉ＝１〜Ｎｐ）のうち、入力フレームの受信ポートに関する判定結果を選択し、受信ポート別収容可否判定結果とする。入力フレームの受信ポートは、バッファ用メモリ制御回路２００から経路Ｗ３００−５を通じて入力される。
【００３１】
送信ポート＿ｉ蓄積量上限生成回路（ｉ＝１〜Ｎｐ）３０８−１〜Ｎｐは、空き容量監視回路３０１から空き容量を入力し、送信ポート＿ｉに関する送信ポート別蓄積量上限を生成し出力する。送信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３０９−１〜Ｎｐは、送信ポート＿ｉに関する送信ポート別蓄積量上限と送信ポート別蓄積量を入力し、前記蓄積量上限と前記蓄積量をと比較し、送信ポート＿ｉ蓄積量判定結果として出力する。送信ポート別蓄積量が送信ポート別蓄積量上限よりも小さい場合は、収容可能であることを示す１を出力し、それ以外の場合は収容不可であることを示す０を出力する。送信ポート別蓄積量は経路Ｗ３００−６を通じて送信ポート別蓄積量監視回路６００から入力される。
複数選択回路３１０は、送信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３０９−１〜Ｎｐから入力する送信ポート＿ｉ蓄積量判定結果（ｉ＝１〜Ｎｐ）のうち、入力フレームの送信ポートに関する判定結果を選択し、送信ポート別収容可否判定結果として出力する。ここで、入力フレームの送信ポートが複数ある場合もある。そこで、複数選択回路３１０は、入力フレームの送信ポートのうちいずれか１個以上の送信ポートに関して１となる判定結果がある場合は送信ポート別収容可否判定結果を１とし、それ以外の場合は０とする。入力フレームの送信ポートは、バッファ用メモリ制御回路２００から経路Ｗ３００−７を通じて入力される。
【００３２】
なお、ある受信ポートについて、受信ポート別蓄積量が受信ポート別蓄積量上限を超えた場合、バッファ用メモリ制御回路２００からの信号に従って送信ＭＡＣ回路１６−１〜Ｎｐが、前記受信ポートに対応した送信ポートから、所定のポーズフレームを送出するようにしてもよい。また、あらかじめ指定したクラスについて、クラス別蓄積量がクラス別蓄積量上限を超えた場合、バッファ用メモリ制御回路２００からの信号に従って送信ＭＡＣ回路１６−１〜Ｎｐが、リンクが確立した全送信ポートから、所定のポーズフレームを送出するようにしてもよい。また、送信ポート別蓄積量についても同様にポーズフレームを送出するようにしてもよい。
または、上記のように、ポーズフレーム送出を、属性値別蓄積量が対応する属性値別蓄積量上限を超えたことを契機として行うのではなく、ポーズ後蓄積可能量を予め定めておき、受信ポート別蓄積量が属性値別蓄積量上限からポーズ後蓄積可能量を減じた量を超えた場合に行ってもよい。この場合は、ポーズフレーム送出後に受信されたフレームであってもポーズ後蓄積可能量の範囲であれば廃棄されない。
または、属性値別蓄積量上限とは別に、属性値別蓄積量上限の生成方法と同様の方法により、属性値別蓄積量制限を生成し、属性値別蓄積量が対応する前記属性値別蓄積量制限を超えたことを契機として、ポーズフレームを送出するようにしてもよい。
【００３３】
論理積回路３１１は、クラス別収容可否判定結果と受信ポート別収容可否判定結果と送信ポート別収容可否判定結果のすべてが収容可を示す１となった場合に、入力フレームに対する収容有無を収容有と判定し、それ以外の場合は収容無と判定し、前記入力フレームの収容有無をバッファ用メモリ制御回路２００に経路Ｗ３００−８を通じて出力する。
【００３４】
次に、スイッチ回路１の動作について説明する。
受信ポートｉ＿１〜Ｎｐの何れかが外部からフレームを受信すると、その受信ポートに対応する受信側ＭＡＣ回路１１−１〜１１−Ｎｐが受信フレームのフレームデータに対して所定の受信ＭＡＣ側処理を行う。受信側ＭＡＣ回路は、処理を行った受信フレームデータを受信処理回路１２に入力する。
受信処理回路１２は、入力されたフレームデータから宛先ＭＡＣアドレスを読み出す。また、入力されたフレームデータがＶＬＡＮタグを含む場合は、ＶＬＡＮタグからＶＬＡＮ  ＩＤや優先度を読み出す。受信処理回路１２は、受信ポートや宛先ＭＡＣアドレスやＶＬＡＮ  ＩＤに基づいて送信ポートを決定する。
また、受信処理回路１２は受信ポート番号やＶＬＡＮタグから読み出した優先度情報に基づいてクラスを決定する。その後、受信処理回路１２は、受信フレームのフレームデータと、クラスの情報や受信ポートの情報や送信ポートの情報（複数の場合有り）を含む受信処理出力ジョブ情報とを、バッファ回路１３に出力する。
【００３５】
バッファ回路１３において、バッファ用メモリ制御回路２００は、ＱｏＳ回路１４から入力したＱｏＳ入力可否を内部に記憶している。受信処理回路１２からフレームデータと受信処理出力ジョブ情報とが経路Ｗ１３−１を通じて入力されると、バッファ用メモリ制御回路２００は、受信処理出力ジョブ情報とＱｏＳ回路１４から経路Ｗ１３−３を通じて入力されたＱｏＳ入力可否情報とに基づいてバッファ用メモリへの蓄積可否を判定する。具体的には、バッファ用メモリ制御回路２００は、受信処理出力ジョブ情報から入力したフレームデータのクラスと送信ポート番号とを読み出す。バッファ用メモリ制御回路２００は、読み出した入力フレームのクラスと送信ポート番号とに基づいて、ＱｏＳ入力可否情報から前記クラスかつ前記送信ポートのキューへの入力可否を読み出し、前記キューへの入力が可能な場合はバッファ用メモリ１００への蓄積が可能と判定し、それ以外の場合は蓄積不可と判定する。前記受信処理出力ジョブ情報に含まれる送信ポート番号が複数個である場合には、送信ポート番号毎に上記の読み出しを行い、何れかのキューで入力が可能な場合に蓄積可と判定し、それ以外の場合は蓄積不可と判定する。
【００３６】
上記の蓄積可否の判定において蓄積不可と判定した場合、バッファ用メモリ制御回路２００は入力したフレームデータを破棄する。
一方、蓄積可否の判定において蓄積可と判定した場合、バッファ用メモリ制御回路２００は、前記入力したフレームデータのクラス情報と受信ポートの情報と送信ポートの情報とを収容判定回路３００に経路Ｗ１３−１５を通じて出力する。ここで、バッファ用メモリ制御回路２００は、受信処理出力ジョブ情報に含まれる送信ポートのうち、上記の蓄積可否判定においてキューへの入力が可能と判定した送信ポートの情報を出力する。バッファ用メモリ制御回路２００が複数の送信ポートの情報を出力する場合もある。なお、送信ポート番号を出力する代わりに、バッファ用メモリ制御回路２００が送信ポート毎のフラグを含む信号を出力するようにしてもよい。例えば、１ビットのフラグを用いて、フラグが１の送信ポートから入力フレームデータを送信することを示し、フラグが０の送信ポートからは入力フレームデータを送信しないことを示すようにする。
収容判定回路３００は、バッファ用メモリ制御回路２００から入力した情報に基づいて、入力フレームデータをバッファ用メモリ１００に収容するか否かを決定する。収容判定回路の動作の詳細については後述する。収容判定回路３００は、判定結果を示す収容有無をバッファ用メモリ制御回路２００に経路Ｗ１３−１６を通じて出力する。入力フレームデータをバッファ用メモリ１００に収容する場合は収容有無として収容有を出力し、収容しない場合は収容無を出力する。
【００３７】
また、クラス別蓄積量監視回路４００は、バッファ用メモリ１００に蓄積中のフレームデータのうち、同一クラスのフレームデータ数を計数し、計数の結果をクラス別蓄積量として収容判定回路３００に経路Ｗ１３−１２を通じて出力する。
クラス別蓄積量監視回路４００は、次の方法で計数を行う。まず、クラス別蓄積量監視回路４００は、バッファ用メモリ１００に蓄積中のフレームのうち同一クラスのフレーム数を、クラス別蓄積量として保持する。また、クラス別蓄積量監視回路４００は、バッファ用メモリ制御回路２００から、バッファ用メモリ１００のバッファ区画を確保または解放したことを示す空き容量増減信号が経路１３−１１を通じて入力される。さらに、前記信号とあわせて、確保または解放されるバッファ区画に蓄積されるフレームデータのクラスの情報が経路１３−１０を通じて入力される。
空き容量増減信号を入力したとき、クラス別蓄積量監視回路４００は、入力したクラスにの情報に対応するクラス別蓄積量を空き容量増減信号に基づいて増加または減少させる。空き容量増減信号がバッファ用メモリの１区画を確保したことを示す場合は、１個のフレームを蓄積することに相当するため、クラス別蓄積量を１増加させる。一方、空き容量増減信号がバッファ用メモリの１区画を解放したことを示す場合は、１個のフレームを廃棄することに相当するため、クラス別蓄積量を１減少させる。
【００３８】
受信ポート別蓄積量監視回路５００は、バッファ用メモリ１００に蓄積中のフレームデータのうち、同一受信ポートのフレームデータ数を計数し、計数の結果を受信ポート別蓄積量として収容判定回路３００に経路Ｗ１３−１３を通じて出力する。
受信ポート別蓄積量監視回路５００は、クラス別蓄積量監視回路４００と同様に、次の方法で計数を行う。まず、受信ポート別蓄積量監視回路５００は、バッファ用メモリ１００に蓄積中のフレームのうち同一受信ポートのフレーム数を、受信ポート別蓄積量として保持する。また、受信ポート別蓄積量監視回路５００は、バッファ用メモリ制御回路２００から、バッファ用メモリ１００のバッファ区画を確保または解放したことを示す空き容量増減信号が経路Ｗ１３−１１を通じて入力される。さらに、前記信号とあわせて、確保または解放されるバッファ区画に蓄積されるフレームデータの受信ポートの情報が経路Ｗ１３−１０を通じて入力される。
空き容量増減信号を入力したとき、受信ポート別蓄積量監視回路５００は、入力した受信ポートの情報に対応する受信ポート別蓄積量を空き容量増減信号に基づいて増加または減少させる。空き容量増減信号がバッファ用メモリの１区画を確保したことを示す場合は、受信ポート別蓄積量を１増加させる。一方、空き容量増減信号がバッファ用メモリの１区画を解放したことを示す場合は、受信ポート別蓄積量を１減少させる。
【００３９】
送信ポート別蓄積量監視回路６００は、バッファ用メモリ１００に蓄積中のフレームデータのうち、同一送信ポートのフレームデータ数を計数し、計数の結果を送信ポート別蓄積量として経路Ｗ１３−１４を通じて収容判定回路３００に出力する。
送信ポート別蓄積量監視回路６００は、クラス別蓄積量監視回路４００と同様に、次の方法で計数を行う。まず、送信ポート別蓄積量監視回路６００は、バッファ用メモリ１００に蓄積中のフレームのうち同一送信ポートのフレーム数を、送信ポート別蓄積量として保持する。また、送信ポート別蓄積量監視回路６００は、バッファ用メモリ制御回路２００から、バッファ用メモリ１００のバッファ区画を確保または解放したことを示す空き容量増減信号が経路Ｗ１３−１１を通じて入力される。さらに、前記信号とあわせて、確保または解放されるバッファ区画に蓄積されるフレームデータの送信ポートの情報が経路Ｗ１３−１０を通じて入力される。
空き容量増減信号を入力したとき、送信ポート別蓄積量監視回路６００は、入力した送信ポートの情報対応する送信ポート別蓄積量を、空き容量増減信号に基づいて増加または減少させる。空き容量増減信号がバッファ用メモリの１区画を確保したことを示す場合は、送信ポート別蓄積量を１増加させる。一方、空き容量増減信号がバッファ用メモリの１区画を解放したことを示す場合は、送信ポート別蓄積量を１減少させる。
複数の送信ポートの情報を入力した場合は、各送信ポートについて、対応する送信ポート別蓄積量を増加または減少させる。
【００４０】
収容判定回路３００は、バッファ用メモリ制御回路２００から空き容量減信号または空き容量増信号が経路Ｗ１３−１１を通じて入力を受け、バッファ用メモリ１００の空き容量を監視する。ここで、空き容量減信号は、バッファ用メモリ１００の空きバッファ区画を確保したことを示す信号である。空き容量増信号は、バッファ用メモリ１００の空きバッファ区画を解放したことを示す信号である。以下では、空き容量減信号と空き容量増信号を総称して空き容量増減信号ともいう。
また、収容判定回路３００は、空き容量情報を内部に保持し、空き容量情報に基づいて、クラス別蓄積量上限と受信ポート別蓄積量上限と送信ポート別蓄積量上限とを定める。
【００４１】
図４は、収容判定回路３００内の各蓄積量上限生成回路が生成する蓄積量上限と、その生成手順を示す図である。ここで、蓄積量上限生成回路は、クラス＿ｉ蓄積量上限生成回路（１≦ｉ≦Ｎｃ；Ｎｃはクラス数）または受信ポート＿ｉ蓄積量上限生成回路（１≦ｉ≦Ｎｐ；Ｎｐは受信ポート数）または送信ポート＿ｉ蓄積量上限生成回路（１≦ｉ≦Ｎｐ；Ｎｐは送信ポート数）をいう。また、蓄積量判定回路は、クラス＿ｉ蓄積量判定回路（１≦ｉ≦Ｎｃ；Ｎｃはクラス数）または受信ポート＿ｉ蓄積量判定回路（１≦ｉ≦Ｎｐ；Ｎｐは受信ポート数）または送信ポート＿ｉ蓄積量判定回路（１≦ｉ≦Ｎｐ；Ｎｐは送信ポート数）をいう。
図４（ａ）は収容判定回路３００内の各蓄積量上限生成回路が蓄積量上限を生成する手順を示すフローチャートである。
なお、以下のＶ＿１とＶ＿２とＶ＿ＮｖとＬ＿１とＬ＿２とＬ＿ＮｖとＬ＿ｍａｘとＬｍｉｎとＫとは外部から設定するパラメタを示すが、斜字による表示を省略する。
空き容量監視回路３０１から空き容量が入力されると蓄積量上限生成回路は蓄積量上限を生成する処理を開始する。
ステップＳ１において、蓄積量上限生成回路は空き容量が外部から設定するパラメタ値Ｖ＿１より小さいかを判断する。Ｖ＿１より小さい場合（ステップＳ１：Ｙ）は、ステップＳ２へ進み、Ｖ＿１以上の場合（ステップＳ１：Ｎ）は、ステップＳ３へ進む。ステップＳ２において、蓄積量上限生成回路は蓄積量上限を外部から設定するパラメタ値Ｌ＿１とする。その後、蓄積量上限生成回路はステップＳ８へ進む。
【００４２】
ステップＳ３において、蓄積量上限生成回路は空き容量が外部から設定するパラメタ値Ｖ＿２より小さいかを判断する。Ｖ＿２より小さい場合（ステップＳ３：Ｙ）は、ステップＳ４へ進み、Ｖ＿２以上の場合（ステップＳ３：Ｎ）は、ステップＳ５へ進む。ステップＳ４において、蓄積量上限生成回路は蓄積量上限を外部から設定するパラメタ値Ｌ＿２とする。その後、蓄積量上限生成回路はステップＳ８へ進む。
ステップＳ５において、蓄積量上限生成回路は空き容量が外部から設定するパラメタ値Ｖ＿Ｎｖより小さいかを判断する。Ｖ＿Ｎｖより小さい場合（ステップＳ５：Ｙ）は、ステップＳ６へ進み、Ｖ＿Ｎｖ以上の場合（ステップＳ５：Ｎ）は、ステップＳ７へ進む。ステップＳ６において、蓄積量上限生成回路は蓄積量上限を外部から設定するパラメタ値Ｌ＿Ｎｖとする。その後、蓄積量上限生成回路は、ステップＳ８へ進む。
ステップＳ７において、蓄積量上限生成回路は蓄積量上限を外部から設定するパラメタ値Ｌ＿ｍａｘとする。
ステップＳ８において、蓄積量上限生成回路は蓄積量判定回路に蓄積量上限を出力する。その後、蓄積量上限生成回路は蓄積量上限を生成する処理を終了する。
なお、ステップＳ１等の空き容量の大きさを判断するステップとステップＳ２等の蓄積量上限を設定するステップからなる一連の処理は１個以上であればよく、図４（ａ）に示される３個に限らない。
【００４３】
図４（ｂ）は、収容判定回路３００内の各蓄積量上限生成回路が生成する蓄積量上限と空き容量との関係を示すグラフである。図４で示した手順に従い、蓄積量上限生成回路は同図に示される蓄積量上限を生成する。
【００４４】
なお、各蓄積量上限生成回路が生成する蓄積量上限およびその手順は図４に示したものに限らない。
図５は、収容判定回路３００内の各蓄積量上限生成回路が生成するもう１つの蓄積量上限と、その生成手順を示す図である。
図５（ａ）は、収容判定回路３００内の各蓄積量上限生成回路が蓄積量上限を生成する手順を示すフローチャートである。
空き容量監視回路３０１から空き容量が入力されると蓄積量上限生成回路は蓄積量上限を生成する処理を開始する。
ステップＳ２１において、蓄積量上限生成回路は空き容量が外部から設定するパラメタ値Ｖ＿１より小さいかを判断する。Ｖ＿１より小さい場合（ステップＳ２１：Ｙ）は、ステップＳ２２へ進み、Ｖ＿１以上の場合（ステップＳ２１：Ｎ）は、ステップＳ２３へ進む。ステップＳ２２において、蓄積量上限生成回路は蓄積量上限を外部から設定するパラメタ値Ｌｍｉｎとする。その後、蓄積量上限生成回路はステップＳ２６へ進む。
ステップＳ２３において、蓄積量上限生成回路は空き容量が外部から設定するパラメタ値Ｖ＿２以上かを判断する。Ｖ＿２以上の場合（ステップＳ２３：Ｙ）は、ステップＳ２４へ進み、Ｖ＿２より小さい場合（ステップＳ２３：Ｎ）は、ステップＳ２５へ進む。ステップＳ２４において、蓄積量上限生成回路は蓄積量上限を外部から設定するパラメタ値Ｌ＿２とする。その後、蓄積量上限生成回路はステップＳ２６へ進む。その後、蓄積量上限生成回路は蓄積量上限を生成する処理を終了する。
ステップＳ２５において、蓄積量上限生成回路は蓄積量上限を式（１）に従って設定すする。
【００４５】
【数１】
2011009876.tif 000003
【００４６】
ステップＳ２６において、蓄積量上限生成回路は蓄積量判定回路蓄積量を出力する。
図５（ｂ）は、収容判定回路３００内の各蓄積量上限生成回路が生成する蓄積量上限と空き容量との関係を示すグラフである。図５（ａ）で示した手順に従い、蓄積量上限生成回路は同図に示される蓄積量上限を生成する。
同図に示されるように、図５（ｂ）の手順では、空き容量がＶ＿１以上Ｖ＿２未満の範囲にある場合に、蓄積量上限を空き容量の一次関数として算出する。
【００４７】
また、収容判定回路３００は、生成した蓄積量上限を用いて、バッファ用メモリ制御回路２００が受信処理回路１２から入力したフレームのバッファ用メモリ１００への収容可否を、以下の方法で判定する。
まず、収容判定回路３００は、このフレームのクラスの情報と受信ポートの情報と送信ポート（複数の場合有り）の情報とをバッファ用メモリ制御回路２００から入力する。また、クラス別蓄積量監視回路４００からクラス別蓄積量を入力し、受信ポート別蓄積量監視回路５００から受信ポート別蓄積量を入力し、送信ポート別蓄積量監視回路６００から送信ポート別蓄積量を入力する。
収容判定回路３００は、クラス別蓄積量から、入力したクラスの情報が示すクラス（以下、単に入力したクラスともいう。入力した受信ポート、入力した送信ポートについても同様。）に関するクラス別蓄積量を読み出す。次に、収容判定回路３００は、入力したクラスに関するクラス別蓄積量とクラス別蓄積量上限とを比較し、この蓄積量が蓄積量上限より少ない場合は、クラス別収容可否判定結果として収容可とし、前記以外の場合は収容不可とする。
【００４８】
また、収容判定回路３００は、受信ポート別蓄積量から、入力した受信ポートに関する受信ポート別蓄積量を読み出す。次に、収容判定回路３００は、入力した受信ポートに関する受信ポート別蓄積量と受信ポート別蓄積量上限とを比較し、この蓄積量が蓄積量上限より少ない場合は、受信ポート別収容可否判定結果として収容可とし、前記以外の場合は収容不可とする。
また、収容判定回路３００は、送信ポート別蓄積量から、入力した送信ポートに関する送信ポート別蓄積量を読み出す。次に、収容判定回路３００は、入力した送信ポートに関する送信ポート別蓄積量と送信ポート別蓄積量上限とを比較し、この蓄積量が蓄積量上限より少ない場合は、送信ポート別収容可否判定結果として収容可とし、前記以外の場合は収容不可とする。入力した送信ポートが複数ある場合は、複数の送信ポートの何れか１個以上の送信ポートについて、蓄積量が蓄積量上限より少ない場合に、送信ポート別収容可否判定結果として収容可とし、前記以外の場合に収容不可とする。
収容判定回路３００は、クラス別収容可否判定結果と受信ポート別収容可否判定結果と送信ポート別収容可否判定結果とのすべてが収容可となった場合に、前記入力フレームに対する収容有無を収容有と判定し、前記以外の場合は収容無と判定する。収容判定回路３００は、前記入力フレームの収容有無をバッファ用メモリ制御回路２００に出力する。
【００４９】
なお、収容判定回路３００は、クラス別収容可否判定結果受信ポート別収容可否判定結果、送信ポート別収容可否判定結果の全てについて判定結果を取得する回路でなくとも、これらの判定結果のうち１個以上について判定結果を取得する回路であってもよい。その場合は、得た判定結果の全てにおいて収容可である場合にのみ収容有と判定する。
また、収容判定回路３００が、クラス別収容可否判定結果、受信ポート別収容可否判定結果、送信ポート別収容可否判定結果の各々に判定結果イネーブルの設定を設け、前記イネーブルが設定されている判定結果の全てが収容可となった場合のみ収容有と判定するようにしてもよい。
また、収容判定回路３００が、クラス別収容可否判定結果、受信ポート別収容可否判定結果、送信ポート別収容可否判定結果の何れか１個が収容可であった場合に収容有と判定するようにしてもよい。
また、収容判定回路３００が、２種類のクラス別蓄積量上限（高上限、低上限）を用いて収容可否判定を行うようにしてもよい。例えば、収容判定回路３００は、２種類のクラス別蓄積量上限（高上限、低上限）を定めておき、各クラス別蓄積量上限から２種類のクラス別収容可否判定結果（高上限、低上限）を得る。クラス別収容可否判定結果（高上限）において収容可となった場合は、受信ポート別収容可否判定結果または送信ポート別収容可否判定結果において収容不可となった場合であっても、収容有と判定する。前記以外の場合は、クラス別収容可否判定結果（低上限）と受信ポート別収容可否判定結果と送信ポート別収容可否判定結果との全てにおいて収容可となった場合のみ、収容有と判定する。
【００５０】
また、クラス別蓄積量上限のみならず、受信ポート別蓄積量上限や送信ポート別蓄積量上限についても２種類を定め、前記と同様の判定を行うようにしてもよい。
また、入力フレームの送信ポートが複数個ある場合に、送信ポート別に収容有無をバッファ用メモリ制御回路２００に出力するようにしてもよい。例えば、収容判定回路３００は、前記送信ポートの各々について、送信ポート別収容可否判定結果を生成する。クラス別収容可否判定結果および受信ポート別収容可否判定結果の両方が収容可である場合に、前記送信ポート別収容可否判定結果に基づいて収容有無を判定し、前記送信ポート別に収容有無をバッファ用メモリ制御回路２００に出力する。この場合、バッファ用メモリ制御回路２００は、クラス別蓄積量監視回路４００や受信ポート別蓄積量監視回路５００や送信ポート別蓄積量監視回路６００やＱｏＳ回路１４に出力する送信ポートの情報を、収容有と判定された送信ポートに限定する。
【００５１】
収容判定回路３００から収容有を入力した場合、バッファ用メモリ制御回路２００は、受信処理回路から入力したフレームデータを、バッファ用メモリ１００の空き領域に書き込む。バッファ用メモリ制御回路２００は、バッファ用メモリ１００に書込指示と書込アドレスと書込データとを出力することにより書き込みを行う。一方、収容判定回路３００から収容無を入力した場合は、バッファ用メモリ制御回路２００は、入力フレームを破棄する。バッファ用メモリ制御回路２００は、バッファ用メモリ１００を、最大フレーム長のフレームデータを蓄積可能な単位で区画化し、１個の区画に１個のフレームのフレームデータを収容するよう制御する。スイッチ回路１が送受信する最大フレーム長は２キロバイトであり、上記の区画化の単位も２キロバイトである。なお、最大フレーム長は２キロバイト以外であってもよい。また、区画化の単位は最大フレーム長以上であればよく、最大フレーム長と同一でなくてもよい。
バッファ用メモリ制御回路２００は、各区画にバッファ区画番号を割り振り、バッファ区画番号別に空き有無を管理する。入力フレームのフレームデータをバッファ用メモリに書き込むときは、空き有のバッファ区画番号を前記フレームに対するハンドル番号として取得するとともに前記バッファ区画番号の空き有を空き無に変更する。また、取得したハンドル番号が示すバッファ用メモリの空き領域に前記フレームデータを書き込む。
【００５２】
また、バッファ用メモリ制御回路２００は、バッファ用メモリの確保により収容されるフレームデータの属性値、具体的にはクラスの情報と受信ポートの情報と送信ポート（複数の場合有り）の情報とをクラス別蓄積量監視回路４００と受信ポート別蓄積量監視回路５００と送信ポート別蓄積量監視回路６００とに出力する。併せて、バッファ用メモリ１００の１区画を確保したことを示す空き容量減信号を、クラス別蓄積量監視回路４００と受信ポート別蓄積量監視回路５００と送信ポート別蓄積量監視回路６００と収容判定回路３００とに出力する。バッファ用メモリ制御回路２００は、フレームデータをバッファ用メモリ１００に書き込み終えると、フレームデータのクラスと受信ポートと送信ポート（複数の場合有り）の情報と前記書き込み時に取得したハンドル番号とを含むＱｏＳ入力ジョブ情報を生成し、経路Ｗ１３−２を通じてＱｏＳ回路１４に出力する。
なお、バッファ用メモリ制御回路２００が空き容量減信号に代えて、バッファ用メモリ１００の蓄積量が増加したことを示す蓄積量増信号を出力するようにしてもよい。バッファ用メモリ制御回路２００の空き容量が１区画分減少すると、蓄積量が一区画分増加する関係にあり、蓄積量増信号の入力を受けたクラス別蓄積量監視回路４００と受信ポート別蓄積量監視回路５００と送信ポート別蓄積量監視回路６００と収容判定回路３００とは、空き容量減信号の入力を受けた場合と同様の処理を行う。
【００５３】
バッファ用メモリ制御回路２００は、ＱｏＳ回路１４からＱｏＳ出力ジョブ情報を入力すると、ＱｏＳ出力ジョブ情報からハンドル番号を読み出す。ＱｏＳ出力ジョブ情報は、フレームデータの読み出し指示であり、読み出すフレームデータの属性値を含む。
バッファ用メモリ制御回路２００は、読み出したハンドル番号が示すバッファ用メモリ１００の区画（以下、バッファ区画ともいう）からフレームデータを読み出し、送信処理回路１５に出力する。バッファ用メモリ制御回路２００は、バッファ用メモリ１００に読出指示と読出アドレスを出力し、バッファ用メモリ１００から読出データを入力する。
フレームデータを読み出した場合は、バッファ用メモリ制御回路２００はＱｏＳ出力ジョブ情報から送信ポートの情報を読み出す。バッファ用メモリ制御回路２００は送信ポートの情報を含む送信処理入力ジョブ情報を生成し、送信処理回路１５に経路Ｗ１３−８を通じて出力する。
送信処理回路１５は、バッファ回路１３から入力されたフレームデータに対してＶＬＡＮタグの挿入または削除等の処理を行う。送信処理回路１５は、処理を行ったフレームデータを、バッファ出力ジョブ情報に含まれる送信ポートの送信ＭＡＣ回路１６−１〜Ｎｐに出力する。
送信ＭＡＣ回路１６−１〜Ｎｐは、送信処理回路１５から入力されたフレームデータに対して所定の送信側ＭＡＣ処理を行い、送信ポートから送信する。また、送信ＭＡＣ回路１６−１〜Ｎｐは、バッファ用メモリの蓄積状態に基づいて、送信ポートからポーズフレームを送信する。
【００５４】
さらに、ＱｏＳ出力ジョブ情報に含まれる解放有無の情報が解放有を示す場合、バッファ用メモリ制御回路２００は、バッファ用メモリからフレームデータを読み出し終えると、読み出したバッファ用メモリの領域を示すバッファ区画番号の空き有無を有に変更する。これにより、前記フレームデータが蓄積されていたバッファ区画を解放する。あわせて、バッファ用メモリ制御回路２００は、解放されたバッファ用メモリから読み出したフレームデータの属性値、具体的にはクラスの情報と受信ポートの情報と送信ポート（複数の場合有り）の情報とを各々クラス別蓄積量監視回路４００と受信ポート別蓄積量監視回路５００と送信ポート別蓄積量監視回路６００とに出力する。また、バッファ用メモリ制御回路２００は、バッファ用メモリ１００の１区画を解放したことを示す空き容量増信号を、クラス別蓄積量監視回路４００と受信ポート別蓄積量監視回路５００と送信ポート別蓄積量監視回路６００と収容判定回路３００とに出力する。
前述したように、クラス別蓄積量監視回路４００と受信ポート別蓄積量監視回路５００と送信ポート別蓄積量監視回路６００と収容判定回路３００とは、バッファ用メモリ制御回路２００からこれらの信号が入力されると、それぞれクラス別蓄積量と受信ポート別蓄積量と送信ポート別蓄積量と空き容量情報とを増減させる。
なお、バッファ用メモリ制御回路２００が空き容量増信号に代えて、バッファ用メモリ１００の蓄積量が減少したことを示す蓄積量減信号を出力するようにしてもよい。バッファ用メモリ制御回路２００の空き容量が１区画分増加すると、蓄積量が一区画分減少する関係にあり、蓄積量減信号の入力を受けたクラス別蓄積量監視回路４００と受信ポート別蓄積量監視回路５００と送信ポート別蓄積量監視回路６００と収容判定回路３００とは、空き容量増信号の入力を受けた場合と同様の処理を行う。
【００５５】
以上のように、本実施形態のバッファ回路１３は、クラス別・受信ポート別・送信ポート別のバッファ蓄積量とバッファ用メモリ１００の空き容量を監視し、バッファ用メモリ１００の空き容量の変化に応じて、クラス別・受信ポート別・送信ポート別蓄積量の上限を所定の変更方法に基づいて変更し、前記蓄積量と前記蓄積量上限を比較し、フレームをバッファ用メモリ１００に収容するか否かを判定する。クラス・受信ポート・送信ポートに応じて、蓄積量上限の変更方法に関するパラメタ値を変えることにより、バッファ用メモリ１００の空き容量（蓄積量）に応じて、各フレームデータがバッファ用メモリ１００に占める比率を調整できるため、キューイング制御に拠らずにクラスやポートに関連付けたバッファ輻輳時の廃棄等のバッファ制御が可能となる。
また、上記のバッファ回路１３において、算出したクラス別・受信ポート別・送信ポート別蓄積量上限は、バッファ用メモリ１００の空き容量（蓄積量）が所定の範囲にある場合に、バッファ用メモリ１００の空き容量（蓄積量）の所定量の増加によって、クラス別・受信ポート別・送信ポート別蓄積量上限の所定量の増加（減少）となる。このため、バッファ用メモリ１００の空きが大きい場合は、クラス別・受信ポート別・送信ポート別蓄積量上限が大きくなるため、バッファ用メモリ１００の空きを蓄積量が増加中のクラス・ポートに振り当てることができる。これにより、バッファ用メモリ１００の利用効率が向上するため、バッファ用メモリ１００に要する回路の規模を削減することができる。
【００５６】
＜第２の実施形態＞
図６は、本発明の第２の実施形態におけるスイッチ回路２の概略構成を示す構成図である。
同図において、スイッチ回路２は、受信ポート毎の受信ＭＡＣ回路２１−１〜Ｎｐと受信処理回路２２とバッファ回路２３とＱｏＳ回路２４と送信処理回路２５と送信ポート毎の送信ＭＡＣ回路２６−１〜Ｎｐとを含んで構成される。
同図の受信ＭＡＣ回路２１−１〜Ｎｐと送信処理回路２５と送信側ＭＡＣ回路２６−１〜Ｎｐとは、図１の受信ＭＡＣ回路１１−１〜Ｎｐと送信処理回路１５と送信側ＭＡＣ回路１６−１〜Ｎｐとに対応し、その説明を省略する。
受信処理回路２２は、図１の受信処理回路１２に対応するが、経路Ｗ２−１を通じて入力された受信フレームのフレームデータを受信ポート別に蓄積する受信バッファ回路２２−１〜２２−Ｎｐを備える点で、受信処理回路１２と異なる。受信バッファ回路は、受信ポート毎に少なくとも最大フレーム長のフレームデータを１フレーム分蓄積可能な容量を有する。受信処理回路２２は、受信ポート毎に設けられた受信バッファ回路から、少なくとも１フレームのデータが蓄積された受信バッファ回路を選択し、前記選択した受信バッファ回路に蓄積された１フレーム分のフレームデータを、バッファ回路２３に出力する受信フレームデータ選択回路２２−ｂを備える。また、受信処理回路２２は、受信バッファ回路に蓄積された各フレームについて、そのフレーム長を取得し、前記フレーム長の情報を含む受信処理出力ジョブ情報をバッファ回路２３に経路Ｗ２−２を通じて出力する。
【００５７】
バッファ回路２３は、前記入力したフレームデータを前記バッファ回路内のバッファ用メモリに蓄積するとともに、前記蓄積位置を示すハンドル番号と、フレーム長とクラスと受信ポートと送信ポート（複数の場合有り）の情報とを含むＱｏＳ入力ジョブ情報とを、ＱｏＳ回路２４に経路Ｗ２−３を通じて出力する。
ＱｏＳ回路２４は、入力したＱｏＳ入力ジョブ情報からクラスと送信ポートの情報とを読み出す。ＱｏＳ回路２４は読み出した情報に基づいて、ＱｏＳ回路２４内に送信ポート別かつクラス別に備えるキューの中から入力するキュー（複数の場合有り）を選択し、前記選択したキューに、フレーム長とハンドル番号と受信ポートの情報とを含むキュー蓄積ジョブ情報を入力する。また、ＱｏＳ回路２４は、各送信ポートについて、その送信ポートかつ何れかのクラスに対応するキューのうち１個のキューを選択する。ＱｏＳ回路２４は、選択したキューから１個のキュー蓄積ジョブ情報を取り出して、ＱｏＳ出力ジョブ情報をバッファ回路に出力する。ＱｏＳ出力ジョブ情報は、前記キューと前記ジョブ情報とに基づいて、フレーム長とハンドル番号とクラスの情報と受信ポートの情報と送信ポートの情報とを含む。
【００５８】
図７は、バッファ回路２３の概略構成を示す構成図である。
同図において、バッファ回路２３はバッファ用メモリ１２０とバッファ用メモリ制御回路２２０と収容判定回路３２０とクラス別蓄積量監視回路４２０と受信ポート別蓄積量監視回路５２０と送信ポート別蓄積量監視回路６２０とを含んで構成される。
バッファ回路２３は、は、図２のスイッチ回路１のバッファ回路２３と同様の処理を行う。以下では、図２のバッファ回路２３との差異について説明する。
バッファ用メモリ制御回路２２０は、受信処理回路２２からフレームを経路Ｗ２３−１を通じて入力するとともに、前記入力フレームのフレームデータと、前記入力フレームのフレーム長・クラス・受信ポート・送信ポート（複数の場合有り）の情報を含む受信処理出力ジョブ情報とを、経路Ｗ２３−１を通じて入力する。
バッファ用メモリ制御回路２２０は、前記入力フレームの受信処理出力ジョブ情報とＱｏＳ回路２４から経路Ｗ２３−３を通じて入力したＱｏＳ入力可否情報に基づいてバッファ用メモリ１２０への蓄積可否を判定する。蓄積可と判定した場合は、入力したフレームのフレームデータ量（フレーム長から算出した値でありフレームデータを蓄積単位容量Ｓで分割した場合の個数を示す）・クラス・受信ポート・送信ポート（複数の場合有り）を、収容判定回路３２０に経路Ｗ２３−１５を通じて出力する。収容判定回路３２０は、入力した情報に基づいて前記入力フレームのバッファ用メモリ１２０への収容有無を判定し、判定結果をバッファ用メモリ制御回路２２０に経路Ｗ２３−１６を通じて入力する。
【００５９】
収容判定回路３２０から入力する収容有無が収容有を示す場合は、バッファ用メモリ制御回路２２０は、入力フレームのフレームデータをバッファ用メモリ１２０に書き込む。ここで、バッファ用メモリ制御回路２２０は、バッファ用メモリ１２０を蓄積単位容量Ｓのバッファ区画で区画化し、各区画にバッファ区画番号を割り振り、バッファ区画番号別に空き有無を管理する。バッファ用メモリ制御回路２２０は、予め定められた蓄積単位容量Ｓを内部に記憶し、この蓄積単位容量Ｓを用いて上記の処理を行う。この蓄積単位量Ｓは、最大フレームデータ長よりも短い容量である。
入力フレームのフレームデータをバッファ用メモリ１２０に経路Ｗ２３−４及び経路Ｗ２３−５を通じて書き込む場合、バッファ用メモリ制御回路２２０は、フレームデータを蓄積単位容量Ｓずつに分割して１個以上の分割フレームデータとする。バッファ用メモリ制御回路２２０は、各分割フレームデータについてフレーム先頭側の分割フレームデータから順に、空き有のバッファ区画番号を取得するとともに前記バッファ区画番号の空き有を空き無に変更し、取得したバッファ区画番号が示す空きバッファ区画に分割フレームデータを書き込む。以上により、バッファ用メモリ制御回路２２０は、入力フレームのフレームデータをバッファ用メモリ１２０に蓄積するために必要なバッファ用メモリ１２０の空き領域を確保し、確保した空き領域にフレームデータを書き込む。
また、バッファ用メモリ制御回路２２０は、バッファ区画１個を確保する度に、バッファ用メモリ１２０の１区画を確保したことを示す空き容量増減信号を、クラス別蓄積量監視回路４２０と受信ポート別蓄積量監視回路５２０と送信ポート別蓄積量監視回路６２０と収容判定回路３２０とに出力する。ここで、バッファ用メモリ１２０の各区画のうち、空きバッファ区画の個数を空き容量といい、分割フレームデータが記憶されたバッファ区画の個数を蓄積量という。
なお、第１の実施形態のバッファ用メモリ制御２００と同様、バッファ用メモリ制御回路２２０が空き容量増信号に代えて蓄積量減信号を出力し、空き容量減信号に変えて蓄積量増信号を出力するようにしてもよい。以下の実施形態および変形例でも同様である。
【００６０】
バッファ用メモリ制御回路２２０は、フレーム先頭を含む分割フレームデータを収容したバッファ区画番号をハンドル番号とし、前記ハンドル番号と前記入力フレームのフレーム長・クラス・受信ポート・送信ポート（複数の場合有り）とを含むＱｏＳ入力ジョブ情報を生成する。バッファ用メモリ制御回路２２０は、前記入力フレームの分割フレームデータ全てをバッファ用メモリ１２０に書き込み終えると、ＱｏＳ入力ジョブ情報をＱｏＳ回路２４に経路Ｗ２３−２を通じて出力する。
後述するように、バッファ用メモリ制御回路２２０は、フレームデータ連結用メモリを備える。フレームデータ連結用メモリは、各バッファ区画番号に対する連結バッファ区画番号を保持する。バッファ用メモリ制御回路２２０は、フレーム先頭以外の分割フレームデータに対してバッファ区画番号を取得した場合、フレームデータ連結用メモリ中の直前に書き込んだ分割フレームデータが収容されているバッファ区画のバッファ区画番号に対する連結バッファ区画番号に、取得したバッファ区画番号を書き込む。これにより、連結バッファ区画番号とそこに保持される区画番号により、連続する分割フレームデータが保持されるバッファ用メモリ１２０上のアドレスが示される。
【００６１】
バッファ用メモリ制御回路２２０は、ＱｏＳ回路２４からＱｏＳ出力ジョブ情報が経路Ｗ２３−９を通じて入力されると、バッファ用メモリ１２０から分割フレームデータを経路Ｗ２３−６及び経路Ｗ２３−７を通じて読み出す。ＱｏＳ出力ジョブ情報には、フレーム長・ハンドル番号・クラス・受信ポート・送信ポート・解放有無の情報が含まれる。ＱｏＳ出力ジョブ情報に含まれるハンドル番号は、読み出すべきフレームデータのうち、フレーム先頭が含まれる分割フレームデータが蓄積されたバッファ用メモリ１２０の領域を示す。バッファ用メモリ制御回路２２０は、このハンドル番号に基づいて、フレーム先頭が含まれる分割フレームデータをバッファ用メモリ１２０から読み出す。
さらに、読み出した分割フレームデータに後続する分割フレームデータが存在する場合（読み出すべきフレームデータが２個以上の分割フレームデータに分割されて収容されている場合）、バッファ用メモリ制御回路２２０は、次に読み出すべき分割フレームデータの連結バッファ区画番号をフレームデータ連結用メモリから取得し、この分割フレームデータをバッファ用メモリ１２０から読み出す。バッファ用メモリ制御回路２２０は、後続する分割フレームデータの読出しを、全ての分割フレームデータをバッファ用メモリ１２０から読み出し終えるまで（フレーム長に基づいて算出された回数で）繰り返す。バッファ用メモリ制御回路２２０は、読み出した分割フレームデータを連結して分割前のフレームデータに戻し、送信処理回路２５に経路Ｗ２３−８を通じて出力する。
【００６２】
また、前記ＱｏＳ出力ジョブ情報に含まれる解放有無の情報が解放有を示す場合、バッファ用メモリ制御回路２２０は、バッファ用メモリ１２０から分割フレームデータを読み出す度に、前記の読み出したバッファ用メモリ１２０の領域を示すバッファ区画番号の空き有とすることで、前記フレームデータが蓄積されていたバッファ区画を解放する。あわせて、バッファ用メモリ１２０の１区画を解放したことを示す空き容量増減信号を、クラス別蓄積量監視回路４２０と受信ポート別蓄積量監視回路５２０と送信ポート別蓄積量監視回路６２０と収容判定回路３２０とに出力する。
【００６３】
クラス別蓄積量監視回路４２０は、バッファ用メモリ１２０に蓄積中のフレームのうち、同一クラスのフレームを収容中のバッファ区画数を計数し、クラス別蓄積量として収容判定回路３２０に経路Ｗ２３−１２を通じて出力する。クラス別蓄積量監視回路４２０はバッファ用メモリ制御回路２２０から、バッファ用メモリ１２０の空き容量のバッファ区画の確保または解放を示す空き容量増減信号を経路Ｗ２３−１１を通じて入力する。それとともに、クラス別蓄積量監視回路４２０はバッファ用メモリ制御回路２２０から、確保または解放されるバッファ区画に蓄積されるフレームのクラスを経路Ｗ２３−１０を通じて入力する。クラス別蓄積量監視回路４２０は、各クラスにおけるバッファ用メモリ１２０に蓄積中のフレームのうち同一クラスのフレームを収容中のバッファ区画数を、クラス別蓄積量として保持する。クラス別蓄積量監視回路４２０は、空き容量増減信号を入力すると、入力したクラスに関するクラス別蓄積量を前記空き容量増減信号に基づいて増加または減少させる。空き容量増減信号がバッファ用メモリ１２０の１区画を確保したことを示す場合は、入力したクラスに関するクラス別蓄積量を１増やす。また、空き容量増減信号がバッファ用メモリ１２０の１区画を解放したことを示す場合は、入力したクラスに関するクラス別蓄積量を１減らす。
【００６４】
受信ポート別蓄積量監視回路５２０は、バッファ用メモリ１２０に蓄積中のフレームのうち、同一受信ポートのフレームを収容中のバッファ区画数を計数し、受信ポート別蓄積量として収容判定回路３２０に経路Ｗ２３−１３を通じて出力する。受信ポート別蓄積量監視回路５２０はバッファ用メモリ制御回路２２０から、バッファ用メモリ１２０の空き容量のバッファ区画の確保または解放を示す空き容量増減信号を経路Ｗ２３−１１を通じて入力する。それとともに、クラス別蓄積量監視回路４２０はバッファ用メモリ制御回路２２０から、確保または解放されるバッファ区画に蓄積されるフレームの受信ポートを経路Ｗ２３−１０を通じて入力する。受信ポート別蓄積量監視回路５２０は、各受信ポートにおけるバッファ用メモリ１２０に蓄積中のフレームのうち同一受信ポートのフレームを収容中のバッファ区画数を、受信ポート別蓄積量として保持する。受信ポート別蓄積量監視回路５２０は、空き容量増減信号を入力すると、前記入力した受信ポートに関する受信ポート別蓄積量を空き容量増減信号に基づいて、クラス別蓄積量監視回路４２０の場合と同様に増加または減少させる。
【００６５】
送信ポート別蓄積量監視回路６２０は、バッファ用メモリ１２０に蓄積中のフレームのうち、同一送信ポートのフレームを収容中のバッファ区画数を計数し、送信ポート別蓄積量として収容判定回路３２０に経路Ｗ２３−１４を通じて出力する。送信ポート別蓄積量監視回路６２０はバッファ用メモリ制御回路２２０から、バッファ用メモリ１２０の空き容量のバッファ区画の確保または解放を示す空き容量増減信号を経路Ｗ２３−１１を通じて入力する。また、送信ポート別蓄積量監視回路６２０はバッファ用メモリ制御回路２２０から、確保または解放されるバッファ区画に蓄積されるフレームの送信ポート（複数の場合有り）を経路Ｗ２３−１０を通じて入力する。送信ポート別蓄積量監視回路６２０は、各送信ポートにおけるバッファ用メモリ１２０に蓄積中のフレームのうち同一送信ポートのフレームを収容中のバッファ区画数を、送信ポート別蓄積量として保持する。送信ポート別蓄積量監視回路６２０は、前記空き容量増減信号を入力すると、前記入力した送信ポートに関する送信ポート別蓄積量を空き容量増減信号に基づいて、クラス別蓄積量監視回路４２０の場合と同様に増加または減少させる。
【００６６】
収容判定回路３２０は、バッファ用メモリ制御回路２２０が受信処理回路２２から入力したフレームのバッファ用メモリ１２０への収容可否を、以下の方法で判定する。
まず、収容判定回路３２０は、このフレームのフレームデータ量とクラスの情報と受信ポートの情報と送信ポート（複数の場合有り）の情報とをバッファ用メモリ制御回路２００から入力する。また、クラス別蓄積量監視回路４２０からクラス別蓄積量を入力し、受信ポート別蓄積量監視回路５２０から受信ポート別蓄積量を入力し、送信ポート別蓄積量監視回路６２０から送信ポート別蓄積量を入力する。
収容判定回路３２０は、クラス別蓄積量から、入力したクラスに関するクラス別蓄積量を読み出す。次に、収容判定回路３２０は、入力したクラスに関するクラス別蓄積量とクラス別蓄積量上限とを比較し、この蓄積量が蓄積量上限より少ない場合は、クラス別収容可否判定結果として収容可とし、前記以外の場合は収容不可とする。
【００６７】
また、収容判定回路３２０は、受信ポート別蓄積量から、入力した受信ポートに関する受信ポート別蓄積量を読み出す。次に、収容判定回路３２０は、入力した受信ポートに関する受信ポート別蓄積量と受信ポート別蓄積量上限とを比較し、この蓄積量が蓄積量上限より少ない場合は、受信ポート別収容可否判定結果として収容可とし、前記以外の場合は収容不可とする。
また、収容判定回路３２０は、送信ポート別蓄積量から、入力した送信ポートに関する送信ポート別蓄積量を読み出す。次に、収容判定回路３２０は、入力した送信ポートに関する送信ポート別蓄積量と送信ポート別蓄積量上限とを比較し、この蓄積量が蓄積量上限より少ない場合は、送信ポート別収容可否判定結果として収容可とし、前記以外の場合は収容不可とする。入力した送信ポートが複数ある場合は、複数の送信ポートの何れか１個以上の送信ポートについて、蓄積量が蓄積量上限より少ない場合に、送信ポート別収容可否判定結果として収容可とし、前記以外の場合に収容不可とする。
【００６８】
図８は、バッファ用メモリ制御回路２２０の概略構成を示す構成図である。同図において、バッファ用メモリ制御回路２２０は、バッファ区画確保・書込制御回路２２１と先頭バッファ区画番号レジスタ２２２と旧バッファ区画番号レジスタ２２３と空きバッファ区画番号ＦＩＦＯ(First In, First Out)回路２２４とフレームデータ連結用メモリ２２５とバッファ区画読出・解放制御回路２２６と現バッファ区画番号レジスタ２２７とバッファ区画残数レジスタ２２８とを含んで構成される。
バッファ区画確保・書込制御回路２２１は、受信処理回路２２から、入力フレームのフレームデータと、前記フレームのフレーム長とクラスと受信ポートと送信ポート（複数の場合有り）との情報を含む受信処理出力ジョブ情報とを経路Ｗ２２０−１を通じて入力する。バッファ区画保護・書込制御回路２２１は、受信処理回路２２から入力した受信処理出力ジョブ情報とＱｏＳ回路２４から経路Ｗ２２０−３を通じて入力したＱｏＳ入力可否情報とに基づいてバッファ用メモリへの蓄積可否を判定する。蓄積可と判定した場合は、収容判定回路３２０に、前記入力したフレームのフレームデータ量とクラスと受信ポートの情報と送信ポート（複数の場合有り）の情報とを経路Ｗ２２０−４を通じて出力する。収容判定回路３２０は、入力したこれらの情報に基づいて前記入力フレームのバッファ用メモリへの収容有無を判定し、判定結果をバッファ区画確保・書込制御回路２２１に経路Ｗ２２０−５を通じて出力する。
バッファ区画確保・書込制御回路２２１は、蓄積不可と判定した場合、または、入力したバッファ用メモリへの収容有無が収容無を示す場合は、前記フレームデータをバッファ用メモリに収容せず廃棄する。
【００６９】
バッファ区画確保・書込制御回路２２１は、入力フレームのバッファ用メモリ１２０への収容有無が収容有を示す場合は、入力フレームを分割してバッファ用メモリ１２０に書き込む。まず、バッファ区画確保・書込制御回路２２１は、入力フレームのフレームデータを蓄積単位容量Ｓずつに分割することによって１個以上の分割フレームデータを生成する。次に、バッファ区画確保・書込制御回路２２１は、各分割フレームデータについてフレーム先頭側の分割フレームデータから順に、空きバッファ区画番号ＦＩＦＯ回路２２４から空き有のバッファ区画番号を確保バッファ区画番号として経路Ｗ２２０−１０を通じて取得する。バッファ区画確保・書込制御回路２２１は、確保バッファ区画番号が示す空きバッファ区画に分割フレームデータを経路Ｗ２２０−６及び経路Ｗ２２０−７を通じて書き込む。バッファ区画確保・書込制御回路２２１は、フレーム先頭以外の分割フレームデータに対して空き有のバッファ区画番号を取得した場合、旧バッファ区画番号レジスタ２２３から直前に書き込んだ分割フレームデータが収容されているバッファ区画のバッファ区画番号を読み出す。バッファ区画確保・書込制御回路２２１は、読み出したバッファ区画番号が示す、フレームデータ連結用メモリ２２５のアドレスに、取得したバッファ区画番号を経路Ｗ２２０−１１及びＷ２２０−１２を通じて書き込む。
【００７０】
図９は、フレームデータをバッファ用メモリ１２０に書き込んだときの状態を示す。
同図において、入力フレームのフレームデータが、先頭（第１）分割フレームデータＡと第２分割フレームデータＢと第３分割フレームデータＣと最終（第４）分割フレームデータＤとに分割されている。先頭分割フレームデータＡはバッファ用メモリ１２０のアドレス４に書き込まれ、第２分割フレームデータＢはアドレス２に書き込まれ、第３分割フレームデータＣはアドレス７に書き込まれ、第４分割フレームデータＤはアドレス５に書き込まれている。
フレームデータ連結用メモリ２２５は、先頭分割フレームデータＡのアドレス４の欄に第２分割フレームデータＢのアドレス２を記憶し、第２分割フレームデータＢのアドレス２の欄に第３分割フレームデータＣのアドレス７を記憶し、第３分割フレームデータＣのアドレス７の欄に最終分割フレームデータＤのアドレス５を記憶する。また、最終分割フレームデータＤのアドレス５の欄には何も記憶しない。
バッファ用メモリ制御回路２２０は、先頭分割フレームデータＡのアドレス４を取得しておき、このアドレスを元に、第２分割フレームデータ、第３分割フレームデータ、第４分割フレームデータのアドレスを順次取得する。
【００７１】
バッファ区画確保・書込制御回路２２１は、先頭バッファ区画番号レジスタ２２２から、フレーム先頭を含む分割フレームデータを収容したバッファ区画番号を読み出す。バッファ区画確保・書込制御回路２２１は、読み出したバッファ区画番号をハンドル番号とし、前記ハンドル番号と前記入力フレームのフレーム長とクラスの情報と受信ポートの情報と送信ポート（複数の場合有り）の情報とを含むＱｏＳ入力ジョブ情報を生成する。バッファ区画確保・書込制御回路２２１は、入力フレームの分割フレームデータ全てをバッファ用メモリ１２０に書き込み終えると、ＱｏＳ入力ジョブ情報をＱｏＳ回路２４に経路Ｗ２２０−２を通じて出力する。
また、バッファ区画確保・書込制御回路２２１は、バッファ区画１個を確保する度に、バッファ用メモリ１２０の１区画を確保したことを示す空き容量増減信号を、クラス別蓄積量監視回路４２０と受信ポート別蓄積量監視回路５２０と送信ポート別蓄積量監視回路６２０と収容判定回路３２０とに経路Ｗ２２０−９を通じて出力する。さらに、バッファ区画確保・書込制御回路２２１は、クラス別蓄積量監視回路４２０と受信ポート別蓄積量監視回路５２０と送信ポート別蓄積量監視回路６２０に対しては、前記出力と同時に、バッファ用メモリ１２０に記憶された入力フレームの、クラスの情報と受信ポートの情報と送信ポート（複数の場合有り）の情報とを経路Ｗ２２０−８を通じて出力する。
【００７２】
図１０は、バッファ区画確保・書込制御回路２２１が行う処理手順を示すフローチャートである。
ステップＳ４１においてバッファ区画確保・書込制御回路２２１は、受信処理回路２２３２から入力フレーム等を入力したか否かを判断する。入力した場合（ステップＳ４１：Ｙ）は、ステップＳ４２へ進み、入力していない場合（ステップＳ４１：Ｎ）は、ステップＳ４１へ戻る。
ステップＳ４２において、バッファ区画確保・書込制御回路２２１は判定収容回路３２０から判定有無を入力する。
ステップＳ４３において、バッファ区画確保・書込制御回路２２１は収容判定の結果が収容有かを判定する。収容有の場合（ステップＳ４３：Ｙ）は、ステップＳ４５に進む。収容無の場合（ステップＳ４３：Ｎ）は、ステップＳ４４へ進む。
ステップＳ４４において、バッファ区画確保・書込制御回路２２１は入力フレームを破棄する。その後、バッファ区画確保・書込制御回路２２１はステップＳ４１へ戻る。
【００７３】
ステップＳ４５において、バッファ区画確保・書込制御回路２２１は、空きバッファ区画番号ＦＩＦＯ回路２２４が保持する最初の確保バッファ区画番号を先頭バッファ区画番号レジスタ２２２に書き込む。
ステップＳ４６において、バッファ区画確保・書込制御回路２２１は、空きバッファ区画番号ＦＩＦＯ回路２２４から確保バッファ区分番号を取得する。
ステップＳ４７において、バッファ区画確保・書込制御回路２２１は、分割フレームデータを確保バッファ区分番号が示す確保バッファ区分に書き込む。
ステップＳ４８において、バッファ区画確保・書込制御回路２２１は、書き込んだ分割データが先頭分割フレームデータか否かを判断する。先頭分割フレームデータである場合（ステップＳ４８：Ｙ）は、ステップＳ５０へ進み、先頭分割フレームデータでない場合（ステップＳ４８：Ｎ）は、ステップＳ４９へ進む。
【００７４】
ステップＳ４９において、バッファ区画確保・書込制御回路２２１は、旧バッファ区画番号レジスタ２２３から旧バッファ区画番号を読み出し、フレームデータ連結用メモリ２２５中の確保バッファ区画番号の区画に、旧バッファ区画番号を書き込む。
ステップＳ５０において、バッファ区画確保・書込制御回路２２１は、書き込んだ分割データが最終分割フレームデータか否かを判断する。最終分割フレームデータである場合（ステップＳ５０：Ｙ）は、ステップＳ５１へ進み、最終分割フレームデータでない場合（ステップＳ５０：Ｎ）は、ステップＳ５２へ進む。
ステップＳ５１において、バッファ区画確保・書込制御回路２２１は、先頭バッファ区画番号レジスタ２２２から区画番号を読み出し、読み出した区画番号をハンドル番号として含むＱｏＳ入力ジョブ情報をＱｏＳ回路２４２４に出力する。その後、バッファ区画確保・書込制御回路２２１２４１は、ステップＳ４１に戻る。
ステップＳ５２において、バッファ区画確保・書込制御回路２２１は、旧バッファ区画番号レジスタ２２３に確保バッファ区画番号を書き込む。その後、バッファ区画確保・書込制御回路２２１２４１は、ステップＳ４６へ戻り、次の分割フレームの処理を行う。
【００７５】
バッファ区画読出・解放制御回路２２６は、ＱｏＳ回路２４からＱｏＳ出力ジョブ情報を経路Ｗ２２０−１８を通じて入力すると、ＱｏＳ出力ジョブ情報からハンドル番号を読み出す。ＱｏＳ出力ジョブ情報は、フレーム長とハンドル番号とクラスの情報と受信ポートの情報と送信ポートの情報と解放有無の情報とを含む。ＱｏＳ出力ジョブ情報に含まれるハンドル番号は、読み出すべき送信フレームのフレームデータのうち、フレーム先頭が含まれる分割フレームデータが蓄積されたバッファ用メモリ１２０の領域を示す。
バッファ区画読出・解放制御回路２２６は、読み出したハンドル番号が示すバッファ用メモリ１２０のバッファ区画から分割フレームデータを経路Ｗ２２０−１６及びＷ２２０−１７を通じて読み出す。
さらに、前記分割フレームデータに後続する分割フレームデータが存在する場合(読み出すべきフレームデータが２個以上の分割フレームデータに分割されて収容されている場合)、バッファ区画読出・解放制御回路２２６は、現バッファ区画番号レジスタ２２７からバッファ区画番号を読み出し、読み出したバッファ区画番号を読出アドレスとして、フレームデータ連結用メモリ２２５から連結バッファ区画番号を経路Ｓ２２０−１４及びＷ２２０−１５を通じて読み出す。バッファ区画読出・解放制御回路２２６は、連結バッファ区画番号が示すバッファ区画に蓄積された分割フレームデータをバッファ用メモリ１２０から読み出す。バッファ区画読出・解放制御回路２２６は、この読み出しを、全ての分割フレームデータをバッファ用メモリ１２０から読み出し終えるまで(フレーム長に基づいて算出された回数で)繰り返す。
【００７６】
また、バッファ区画読出・解放制御回路２２６は、ＱｏＳ出力ジョブ情報から解放有無を読み出す。解放有無の情報が解放有を示す場合、バッファ用メモリ１２０から分割フレームデータを読み出す度に、前記の読み出したバッファ用メモリ１２０の領域を示すバッファ区画番号を空きバッファ区画番号ＦＩＦＯ回路２２４に経路Ｗ２２０―１３を通じて返却し、前記フレームデータが蓄積されていたバッファ区画を解放する。あわせて、バッファ用メモリ１２０の１区画を解放したことを示す空き容量増減信号を、クラス別蓄積量監視回路４２０と受信ポート別蓄積量監視回路５２０と送信ポート別蓄積量監視回路６２０と収容判定回路３２０とに経路Ｗ２２０−２０を通じて出力する。クラス別蓄積量監視回路４２０と受信ポート別蓄積量監視回路５２０と送信ポート別蓄積量監視回路６２０に対しては、上記の出力とともに、バッファ用メモリ１２０の解放により廃棄されるフレームのクラス・受信ポート・送信ポート（複数の場合有り）を経路Ｗ２２０−２１を通じて出力する。
【００７７】
図１１は、バッファ区画読出・解放制御回路２２６が行う処理手順を示すフローチャートである。
ステップＳ６１において、バッファ区画読出・解放制御回路２２６は、ＱｏＳ回路２４からＱｏＳ出力ジョブ情報を入力したか否かを判断する。入力した場合（ステップＳ６１：Ｙ）は、ステップＳ６２へ進み、入力していない場合（ステップＳ６１：Ｎ）は、ステップＳ６１へ戻る。
ステップＳ６２において、バッファ区画読出・解放制御回路２２６は、ＱｏＳ出力ジョブ情報からハンドル番号を読出し、現バッファ区画番号レジスタ２２７に書き込む。
ステップＳ６３において、バッファ区画読出・解放制御回路２２６は、現バッファ区画番号レジスタ２２７から現バッファ区画番号を読み出し、バッファ用メモリ１２０中の現バッファ区画番号が示す区画から分割フレームデータを読出し、送信処理回路２５へ出力する。
ステップＳ６４において、バッファ区画読出・解放制御回路２２６は、ＱｏＳ出力ジョブ情報から解放有無の情報を読み出し、解放有か解放無かを判断する。解放有の場合（ステップＳ６４：Ｙ）は、ステップＳ６５に進み、解放無の場合（ステップＳ６４：Ｎ）は、ステップＳ６６に進む。
【００７８】
ステップＳ６５において、バッファ区画読出・解放制御回路２２６は、バッファ用メモリ１２０中の分割フレームデータを読み出した領域を示すバッファ区画番号を、空きバッファ区画番号ＦＩＦＯ回路２２４に返却し、前記フレームデータが蓄積されていたバッファ区画を解放する。あわせて、バッファ用メモリ１２０の１区画を解放したことを示す空き容量増減信号を、クラス別蓄積量監視回路４２０・受信ポート別蓄積量監視回路５２０・送信ポート別蓄積量監視回路６２０・収容判定回路３２０に出力する。クラス別蓄積量監視回路４２０・受信ポート別蓄積量監視回路５２０・送信ポート別蓄積量監視回路６２０に対しては、前記出力と同時に、バッファ用メモリ１２０の解放により廃棄されるフレームのクラス・受信ポート・送信ポート（複数の場合有り）を出力する。
ステップＳ６６において、バッファ区画読出・解放制御回路２２６は、バッファ区画残数が１か否かを判断する。残数が１の場合（ステップＳ６６：Ｙ）は、ステップＳ６７へ進み、１でない場合（ステップＳ６６：Ｎ）は、ステップＳ６８へ進む。
ステップＳ６７において、バッファ区画読出・解放制御回路２２６は、ＱｏＳ出力ジョブ情報から送信ポートの情報を読み出す。出力ジョブ情報から送信ポートの情報を読み出す。バッファ区画読出・解放制御回路２２６は、送信ポートの情報を含む送信処理入力ジョブ情報を生成し、送信処理回路２５に出力する。その後、バッファ区画読出・解放制御回路２２６はステップＳ６１に戻る。
ステップＳ６８において、バッファ区画読出・解放制御回路２２６は、現バッファ区画番号レジスタ２２７から現バッファ区画番号を読み出す。バッファ区画読出・解放制御回路２２６は、読み出した現バッファ区画番号に基づいてフレームデータ連結用メモリ２２５から区画番号を読み出す。
ステップＳ６９において、バッファ区画読出・解放制御回路２２６は、フレームデータ連結用メモリ２２５から読み出した区画番号を現バッファ区画番号レジスタ２２７に書き込む。また、バッファ区画読出・解放制御回路２２６は、バッファ区画残数レジスタ２２８が保持するバッファ区画残数を１減少させる。その後、バッファ区画読出・解放制御回路２２６は、ステップＳ６３に戻る。
【００７９】
図１２は、収容判定回路３２０の概略構成を示す構成図である。同図において、収容判定回路３２０は、空き容量監視回路３２１とクラス＿ｉ蓄積量上限生成回路（ｉ＝１〜Ｎｃ；Ｎｃはクラス数）３２２−１〜Ｎｃと受信ポート＿ｉ（ｉ＝１〜Ｎｐ；Ｎｐはポート数）３２５−１〜Ｎｐと送信ポート＿ｉ蓄積量上限生成回路（ｉ＝１〜Ｎｐ；Ｎｐはポート数；送信ポート数と受信ポート数が同数であるスイッチ回路の場合)３２８−１〜Ｎｃとクラス＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｃ）３２３−１〜Ｎｃと受信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３２６−１〜Ｎｃと送信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３２９−１〜Ｎｐと選択回路３２４、３２７と複数選択回路３３０と論理積回路３１１とを含んで構成される。
前記収容判定回路３２０は、図３の収容判定回路３００と同様の処理を行う。以下では、図３の収容判定回路３２０との差異について説明する。
【００８０】
空き容量監視回路３２１は、現時点でのバッファ用メモリ１２０の空き容量情報（現時点での空きバッファ区画数）を保持し、入力フレームの収容可否（収容可能な場合に１）と前記入力フレーム収容時の空き容量情報（入力フレーム収容後の空きバッファ区画数）を出力する。空き容量監視回路３２１は、空き容量増減信号を経路Ｗ３２０−１を通じて入力すると、空き容量情報を増加または減少させる。空き容量増減信号がバッファ用メモリ１２０の１区画を確保したことを示す場合は、空き容量情報を１減らす。また、前記空き容量増減信号がバッファ用メモリ１２０の１区画を解放したことを示す場合は、前記現空き容量を１増やす。空き容量監視回路３２１は、入力フレームのフレームデータ量を経路Ｗ３２０−２を通じて入力すると、前記空き容量と前記フレームデータ量との比較を行う。比較の結果、現空き容量の方が大きい場合に収容可（１）を示す入力フレームの収容可否を経路３２０−３を通じて出力し、前記以外の場合に収容不可（０）を示す入力フレームの収容可否を経路３２０−３を通じて出力する。さらに、空き容量監視回路３２１は、入力フレームのフレームデータ量を入力すると、入力したフレームデータ量を空き容量から減じた値を、入力フレーム収容時の空き容量情報として経路Ｗ３２０−４を通じて出力する。
【００８１】
クラス＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｃ）３２３−１〜Ｎｃは、入力フレームのフレームデータ量と、クラス＿ｉに関するクラス別蓄積量上限とクラス別蓄積量を入力し、前記蓄積量上限と、前記蓄積量に前記フレームデータ量を加えた値とを比較する。クラス＿ｉ蓄積量判定結果として、前記蓄積量上限の方が小さい場合は１を出力し、前記以外の場合は０を出力する。クラス＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｃ）３２３−１〜Ｎｃは、クラス別蓄積量を経路３２０−５を通じて入力を受ける。
受信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３２６−１〜Ｎｐは、入力フレームのフレームデータ量と、受信ポート＿ｉに関する受信ポート別蓄積量上限と受信ポート別蓄積量を入力し、前記蓄積量上限と、前記蓄積量に前記フレームデータ量を加えた値とを比較する。受信ポート＿ｉ蓄積量判定結果として、前記蓄積量上限の方が小さい場合は１を出力し、前記以外の場合は０を出力する。受信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３２６−１〜Ｎｐは、受信ポート別蓄積量を経路３２０−７を通じて入力を受ける。
【００８２】
送信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３２９−１〜Ｎｐは、入力フレームのフレームデータ量と、送信ポート＿ｉに関する送信ポート別蓄積量上限と送信ポート別蓄積量を入力し、前記蓄積量上限と、前記蓄積量に前記フレームデータ量を加えた値とを比較する。送信ポート＿ｉ蓄積量判定結果として、前記蓄積量上限の方が小さい場合は１を経路Ｗ３２０−１１を通じて出力し、前記以外の場合は０を経路Ｗ３２０−１１を通じて出力する。送信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３２９−１〜Ｎｐは、受信ポート別蓄積量を経路３２０−９を通じて入力を受ける。
なお、上記各判定回路において、全てのクラス・受信ポート・送信ポートに関して、フレームデータ量と蓄積量の加算を行っているが、入力フレームのクラス・受信ポート・送信ポートに関してのみ加算を行う構成であってもよい。
【００８３】
図１３は、図８のバッファ用メモリ制御回路２２０の動作を説明する図であり、フレームデータ連結用メモリ２２５とバッファ用メモリ１２０との状態の変化を示す。
同図において、まず、分割フレームデータ１−Ａ、１−Ｂ、１−Ｃ、１−Ｄを入力すると、バッファ区画確保・書込制御回路２２１は空きバッファ区画番号ＦＩＦＯ回路２２４から空きバッファ区画番号２と７と５と４とを取得して、バッファ用メモリ１２０に分割フレームデータを書込み、フレームデータ連結用メモリ２２５を更新する。また、バッファ区画確保・書込制御回路２２１は、先頭分割フレームデータ１−Ａのアドレス２をハンドル番号として含むＱｏＳ入力ジョブ情報をＱｏＳ回路２４に出力する。
次に、分割フレームデータ２−Ａを入力すると、バッファ区画確保・書込制御回路２２１は空きバッファ区画番号ＦＩＦＯ回路２２４から空きバッファ区画番号６を取得して、バッファ用メモリ１２０に分割フレームデータを書込み、フレームデータ連結用メモリ２２５を更新する。また、バッファ区画確保・書込制御回路２２１は、先頭分割フレームデータ２−Ａのアドレス６をハンドル番号として含むＱｏＳ入力ジョブ情報をＱｏＳ回路２４に出力する。
次に、分割フレームデータ３−Ａ、３−Ｂ、３−Ｃを入力すると、バッファ区画確保・書込制御回路２２１は空きバッファ区画番号ＦＩＦＯ回路２２４から空きバッファ区画番号３と１と０と４とを取得して、上記と同様の処理を行う。
【００８４】
以上のように、本実施形態のバッファ回路２３は、予め定められた蓄積単位容量Ｓをもつバッファ区画でバッファ用メモリ１２０を区画し、各フレームを蓄積単位容量Ｓの長さの分割フレームに分割し、空きバッファ区画を探して分割フレームを蓄積する。１フレーム当たりの未使用量がS未満となりバッファ用メモリ１２０の利用効率が向上するため、バッファ用メモリ１２０に要する回路の規模を削減することができる。
【００８５】
＜第３の実施形態＞
図１４は、本発明の第３の実施形態によるスイッチ回路３の概略構成を示す構成図である。同図において、スイッチ回路３は、受信ポート毎の受信ＭＡＣ回路３１−１〜Ｎｐと受信処理回路３２とバッファ回路３３とＱｏＳ回路３４と送信処理回路３５と送信ポート毎の送信ＭＡＣ回路３６−１〜Ｎｐとを含んで構成される。
スイッチ回路３は、図６のスイッチ回路２と同様の処理を行う。以下では、図６のスイッチ回路２との差異について説明する。
受信処理回路３２は、経路Ｗ３−１を通じて入力した受信フレームのフレームデータを、受信ポート別に蓄積する受信バッファ回路を備える。受信バッファ回路は、受信ポート毎に少なくともフレームデータを蓄積単位容量Ｓ分蓄積可能な容量を有する。なお、前記容量は、蓄積単位容量Ｓ分のフレームデータを蓄積した後に、前記蓄積データをバッファ回路に渡すまでの間に蓄積される可能性のあるフレームデータを蓄積する。受信処理回路３２は、受信ポート毎に設けられた受信バッファ回路から、少なくとも蓄積単位容量Ｓのデータが蓄積された受信バッファ回路を選択し、前記選択した受信バッファ回路に蓄積された蓄積単位容量Ｓ分のフレームデータを分割フレームデータとしてバッファ回路３３に経路Ｗ３−２を通じて出力する、受信フレームデータ選択回路を備える。
したがって、受信処理回路３２は、１個のフレームの分割フレームデータを先頭側から順に続けて出力するとは限らず、同時に複数の受信ポートでフレームを受信しているような場合は、ある受信ポートで受信したフレームの分割フレームデータを出力した直後に、別の受信ポートで受信した別のフレームの分割フレームデータを出力する可能性がある。
バッファ回路３３は、前記入力フレームの分割フレームデータを入力し、前記バッファ回路３３内のバッファ用メモリに蓄積する。また、バッファ回路３３は、前記分割フレームデータに基づいて前記入力フレームのフレーム長を取得し、前記フレーム長を含むＱｏＳ入力ジョブ情報をＱｏＳ回路３４に経路Ｗ３−３を通じて出力する。
上記構成により、図６のスイッチ回路２で必要であった、少なくとも最大フレーム長のフレームデータを１フレーム分蓄積可能な受信処理回路内の受信バッファ回路は不要となり、回路規模の削減が可能となる。
【００８６】
図１５は、バッファ回路３３内の、バッファ用メモリ制御回路２４０の概略構成を示す構成図である。
同図において、バッファ用メモリ制御回路２４０は、バッファ区画確保・書込制御回路２４１と先頭バッファ区画番号レジスタ２４２−１〜Ｎｐと旧バッファ区画番号レジスタ２４３−１〜Ｎｐと入力途中破棄ジョブ情報ＦＩＦＯ回路２４４と空きバッファ区画番号ＦＩＦＯ回路２４５とフレームデータ連結用メモリ２４６とバッファ区画読出・解放制御回路２４７と現バッファ区画番号レジスタ２４８とバッファ区画残数レジスタ２４９とを含んで構成される。
バッファ用メモリ制御回路２４０は、図８のバッファ用メモリ制御回路２００と同様の処理を行う。以下では、図８のバッファ用メモリ制御回路２４０との差異について説明する。
【００８７】
バッファ回路３３は、受信ポート別の先頭バッファ区画番号レジスタ２４２−１〜Ｎｐ、受信ポート別の旧バッファ区画番号レジスタ２４３−１〜Ｎｐ、入力途中廃棄ジョブ情報ＦＩＦＯ回路２４４を備える。
バッファ区画確保・書込制御回路２４１は、受信処理回路３２から、入力フレームのフレームデータが分割された１個以上の分割フレームデータと、前記フレームのクラスの情報と受信ポートの情報と送信ポート（複数の場合有り）の情報とを含む受信処理出力ジョブ情報とを経路Ｗ２４０−１を通じて入力し、前記入力フレームの受信処理出力ジョブ情報とＱｏＳ回路３４から経路Ｗ２４０−３を通じて入力したＱｏＳ入力可否情報に基づいてバッファ用メモリ１４０への蓄積可否を判定する。
蓄積可と判定した場合は、バッファ区画確保・書込制御回路２４１は、入力された分割フレームデータ毎に、入力したフレームのクラスの情報と受信ポートの情報と送信ポート（複数の場合有り）の情報とを収容判定回路３４０に経路Ｗ２４０−４を通じて出力する。収容判定回路３４０は入力した情報に基づいて、分割フレームデータのバッファ用メモリ１４０への収容有無を判定し、判定結果をバッファ区画確保・書込制御回路２４１に経路Ｗ２４０−５を通じて出力する。
収容判定回路３４０が蓄積不可と判定した場合は、前記入力フレームの分割フレームデータ全てをバッファ用メモリ１４０に収容せず廃棄する。
【００８８】
バッファ区画確保・書込制御回路２４１は、前記分割フレームデータに対するバッファ用メモリ１４０への収容有無が収容有を示す場合、空きバッファ区画番号ＦＩＦＯ回路２４５から空き有のバッファ区画番号を確保バッファ区画番号として経路Ｗ２４０−１１を通じて取得し、前記確保バッファ区画番号が示す空きバッファ区画に前記分割フレームデータを経路Ｗ２４０−６及び経路Ｗ２４０−７を通じて書き込む。
バッファ区画確保・書込制御回路２４１は、入力フレームの先頭を含まない分割フレームデータを入力すると、前記分割フレームデータを収容するために空き有のバッファ区画番号を取得する。バッファ区画確保・書込制御回路２４１は、前記入力フレームの受信ポートに対応する旧バッファ区画番号レジスタ２４３−１〜Ｎｐから、直前に書き込んだ分割フレームデータが収容されているバッファ区画のバッファ区画番号を読み出す。バッファ区画確保・書込制御回路２４１は、読み出したバッファ区画番号をフレームデータ連結用メモリ２４６に出力する書込アドレスとし、前記取得したバッファ区画番号をフレームデータ連結用メモリ２４６に経路Ｗ２４０−１２及びＷ２４０−１３を通じて書き込む。
バッファ区画確保・書込制御回路２４１は、前記入力フレームの受信ポートに対応する先頭バッファ区画番号レジスタ２４２−１〜Ｎｐから、フレーム先頭を含む分割フレームデータを収容したバッファ区画番号を読み出す。バッファ区画確保・書込制御回路２４１は、読み出したバッファ区画番号をハンドル番号とし、前記ハンドル番号と前記入力フレームのフレーム長とクラスの情報と受信ポートの情報と送信ポート（複数の場合有り）の情報とを含むＱｏＳ入力ジョブ情報を生成する。バッファ区画確保・書込制御回路２４１は、入力フレームの分割フレームデータ全てをバッファ用メモリ１４０に書き込み終えると（前記入力フレームの最後を含む分割フレームデータを書き込み終えると）、前記ＱｏＳ入力ジョブ情報をＱｏＳ回路３４に経路Ｗ２４０−２を通じて出力する。
【００８９】
バッファ区画確保・書込制御回路２４１は、前記入力フレームの分割フレームデータに対するバッファ用メモリ１４０への収容有無が収容無を示す場合、前記入力フレームについて以後に入力される分割フレームデータをバッファ用メモリ１４０に収容せず廃棄する。また、前記入力フレームの分割フレームデータのうち既にバッファ用メモリ１４０に収容済みの分割フレームデータが蓄積されたバッファ区画を解放するため、前記入力フレームの分割フレームデータが先頭を含まない場合に、前記入力フレームに対応する旧バッファ区画番号レジスタ２４３−１〜Ｎｐの値を最終バッファ区画番号とし、前記最終バッファ区画番号と前記入力フレームのハンドル番号とクラスの情報と受信ポートの情報と送信ポート（複数の場合有り）の情報とを含む入力途中廃棄ジョブ情報を生成し、入力途中廃棄ジョブ情報ＦＩＦＯ回路２４４に経路Ｗ２４０−１０を通じて出力する。
【００９０】
図１６は、バッファ区画確保・書込制御回路２４１が行う処理手順を示すフローチャートである。
ステップＳ８１において、バッファ区画確保・書込制御回路２４１は、受信処理回路３２から入力フレームの分割フレームデータ等を入力したか否かを判断する。入力した場合（ステップＳ８１：Ｙ）は、ステップＳ８２へ進む、入力していない場合（ステップＳ８１：Ｎ）は、ステップＳ８１へ戻る。
ステップＳ８２において、バッファ区画確保・書込制御回路２４１は、収容判定回路３４０から収容有無を入力する。
ステップＳ８３において、バッファ区画確保・書込制御回路２４１は収容判定の結果が収容有かを判定する。収容有の場合（ステップＳ８３：Ｙ）は、ステップＳ８４へ進む。収容無の場合（ステップＳ８３：Ｎ）は、ステップＳ９０へ進む。
【００９１】
ステップＳ８４において、バッファ区画確保・書込制御回路２４１は、空きバッファ区画番号ＦＩＦＯ回路２４５から確保バッファ区分番号を取得する。
ステップＳ８５において、バッファ区画確保・書込制御回路２４１は、バッファ用メモリ１４０中の確保バッファ区分番号が示す区画に分割フレームデータを書き込む。
ステップＳ８６において、バッファ区画確保・書込制御回路２４１は、書き込んだ分割フレームデータが先頭分割フレームデータか否かを判断する。先頭分割フレームデータの場合（ステップＳ８６：Ｙ）は、ステップＳ８７へ進み、先頭分割フレームデータでない場合（ステップＳ８６：Ｎ）は、ステップＳ９３へ進む。
ステップＳ８７において、バッファ区画確保・書込制御回路２４１は、入力フレームの受信ポートに対応する先頭バッファ区画番号レジスタ２４２−１〜Ｎｐに確保バッファ区画番号を書き込む。
ステップＳ８８において、バッファ区画確保・書込制御回路２４１は、書き込んだ分割フレームデータが最終分割フレームデータか否かを判断する。最終フレームデータである場合（ステップＳ８８：Ｙ）は、ステップＳ９４へ進み、最終フレームデータでない場合（ステップＳ８８：Ｎ）は、ステップＳ８９へ進む。
【００９２】
ステップＳ８９において、バッファ区画確保・書込制御回路２４１は、入力フレームの受信ポートに対応する旧バッファ区画番号レジスタ２４３−１〜Ｎｐに確保バッファ区画番号を書き込む。その後、バッファ区画確保・書込制御回路２４１は、ステップＳ８１に戻る。
ステップＳ９０において、バッファ区画確保・書込制御回路２４１は入力フレームを廃棄する。
ステップＳ９１において、バッファ区画確保・書込制御回路２４１は、廃棄した分割フレームデータが先頭フレームデータか否かを判断する。先頭フレームデータの場合（ステップＳ９１：Ｙ）ステップＳ８１に戻る。先頭フレームデータで無い場合（ステップＳ９１：Ｎ）ステップＳ９２へ進む。
ステップＳ９２において、バッファ区画確保・書込制御回路２４１は、入力フレームに対応する旧バッファ区画番号レジスタ２４３−１〜Ｎｐの値を最終バッファ区画番号とし、前記最終バッファ区画番号と前記入力フレームのハンドル番号・クラス・受信ポート・送信ポート（複数の場合有り）を含む入力途中廃棄ジョブ情報を生成し、入力途中廃棄ジョブ情報ＦＩＦＯ回路２４４に出力する。
【００９３】
ステップＳ９３において、バッファ区画確保・書込制御回路２４１は、入力フレームに対応する旧バッファ区画番号レジスタ２４３−１〜Ｎｐから旧バッファ区画番号を読み出し、フレームデータ連結用メモリ２４６の確保バッファ区画番号のアドレスに旧バッファ区画番号を書き込む。その後、バッファ区画確保・書込制御回路２４１は、ステップＳ８８へ進む。
ステップＳ９４において、バッファ区画確保・書込制御回路２４１は、入力フレームの受信ポートに対応する先頭バッファ区画番号レジスタ２４２−１〜Ｎｐから、フレーム先頭を含む分割フレームデータを収容したバッファ区画番号を読み出す。バッファ区画確保・書込制御回路２４１は、読み出したバッファ区画番号をハンドル番号とし、ハンドル番号と入力フレームのフレーム長・クラス・受信ポート・送信ポート（複数の場合有り）とを含むＱｏＳ入力ジョブ情報を生成する。バッファ区画確保・書込制御回路２４１は、生成したＱｏＳ入力ジョブ情報をＱｏＳ回路３４に出力する。その後、バッファ区画確保・書込制御回路２４１は、ステップＳ８１に戻る。
【００９４】
バッファ区画読出・解放制御回路２４７は、ＱｏＳ回路３４からフレーム長とハンドル番号とクラスの情報と受信ポートの情報と送信ポートの情報と解放有無の情報とを含むＱｏＳ出力ジョブ情報を経路Ｗ２４０−２０を通じて入力すると、出力ジョブ情報からハンドル番号を読み出す。ハンドル番号が示すバッファ区画には、フレーム先頭が含まれる分割フレームデータが蓄積されている。バッファ区画読出・解放制御回路２４７は、このフレームの全ての分割フレームデータをバッファ用メモリ１４０から経路Ｗ２４０−１８及びＷ２４０−１９を通じて読み出す。
バッファ区画読出・解放制御回路２４７は、前記処理を行っていない場合で、かつ、入力途中廃棄ジョブ情報ＦＩＦＯ回路２４４が１個以上の入力途中廃棄ジョブ情報を蓄積している場合に、入力途中廃棄ジョブ情報ＦＩＦＯ回路２４４から１個の入力途中廃棄ジョブ情報を経路Ｗ２４０−１４を通じて入力すると、この入力途中廃棄ジョブ情報からハンドル番号と最終バッファ区画番号とを読み出す。バッファ区画読出・解放制御回路２４７は、読み出したハンドル番号と最終バッファ区画番号とに基づいて、入力途中に廃棄となったフレームについて、バッファ用メモリ１４０に収容済みの分割フレームデータが蓄積されているバッファ区画を解放する。
また、バッファ区画読出・解放制御回路２４７は、バッファ区画解放に合わせて、空き容量増減信号を、クラス別蓄積量監視回路４４０と受信ポート別蓄積量監視回路５４０と送信ポート別蓄積量監視回路６４０と収容判定回路３４０に経路ｗ２４０−２２を通じて出力する。クラス別蓄積量監視回路４４０と受信ポート別蓄積量監視回路５４０と送信ポート別蓄積量監視回路６４０に対しては、前記出力と同時に、バッファ用メモリ１４０の解放により廃棄されるフレームのクラス・受信ポート・送信ポート（複数の場合有り）を経路Ｗ２４０−２３を通じて出力する。
【００９５】
図１７は、バッファ区画読出・解放制御回路２４７が行う処理手順を示すフローチャートである。
ステップＳ１０１において、バッファ区画読出・解放制御回路２４７は、ＱｏＳ回路３４からＱｏＳ出力ジョブ情報を入力したか否かを判断する。入力した場合（ステップＳ１０１：Ｙ）は、ステップＳ１０８へ進み、入力していない場合（ステップＳ１０１：Ｎ）は、ステップＳ１０２へ戻る。
ステップＳ１０２において、バッファ区画読出・解放制御回路２４７は、入力途中廃棄ジョブ情報ＦＩＦＯ回路２４４２４５が入力途中廃棄ジョブ情報を蓄積しているか否かを判断する。蓄積している場合（ステップＳ１０２：Ｙ）は、ステップＳ１０３へ進み、蓄積していない場合（ステップＳ１０２：Ｎ）は、ステップＳ１０１へ戻る。
【００９６】
ステップＳ１０３において、バッファ区画読出・解放制御回路２４７は、入力途中廃棄ジョブ情報ＦＩＦＯ回路２４４２４５から１個の入力途中廃棄ジョブ情報を入力し、入力途中廃棄ジョブ情報からハンドル番号を読み出す。バッファ区画読出・解放制御回路２４７は、読み出したハンドル番号を現バッファ区画番号レジスタ２４８に書き込む。
ステップＳ１０４において、バッファ区画読出・解放制御回路２４７は、現バッファ区画番号を空きバッファ区画番号ＦＩＦＯ回路２４５に経路Ｗ２４０−１５を通じて返却することにより解放する。前記のバッファ区画解放に合わせて、空き容量増減信号を、クラス別蓄積量監視回路４４０・受信ポート別蓄積量監視回路５４０・送信ポート別蓄積量監視回路６４０・収容判定回路３４０に出力する。クラス別蓄積量監視回路４４０・受信ポート別蓄積量監視回路５４０・送信ポート別蓄積量監視回路６４０に対しては、前記出力と同時に、バッファ用メモリ１４０の解放により廃棄されるフレームのクラス・受信ポート・送信ポート（複数の場合有り）を出力する。
ステップＳ１０５において、バッファ区画読出・解放制御回路２４７は、入力途中廃棄ジョブ情報から最終バッファ区画番号を読み出し、返却した現バッファ区画番号が最終バッファ区画番号か否かを判断する。最終バッファ区画番号である場合（ステップＳ１０５：Ｙ）は、ステップＳ１０１に戻り、最終バッファ区画番号でない場合（ステップＳ１０５：Ｎ）は、ステップＳ１０６に進む。
【００９７】
ステップＳ１０６において、バッファ区画読出・解放制御回路２４７は、フレームデータ連結用メモリ２４６の現バッファ区画番号のアドレスから区画番号を読み出す。
ステップＳ１０７において、バッファ区画読出・解放制御回路２４７は、フレームデータ連結用メモリ２４６から経路Ｗ２４０−１６及びＷ２４０−１７を通じて読み出した区画番号を、現バッファ区画番号レジスタ２４８に書き込む。その後、バッファ区画読出・解放制御回路２４７は、ステップＳ１０１に戻る。
ステップＳ１０８において、バッファ区画読出・解放制御回路２４７は、ＱｏＳ出力ジョブ情報からハンドル番号とフレーム長とを読み出す。バッファ区画読出・解放制御回路２４７は、読み出したハンドル番号を現バッファ区画番号レジスタ２４８に書き込む。また、バッファ区画読出・解放制御回路２４７は、読み出したフレーム長からバッファ区画残数を算出し、バッファ区画残数レジスタ２４９に出力する。
【００９８】
ステップＳ１０９において、バッファ区画読出・解放制御回路２４７は、現バッファ区画番号レジスタ２４７から現バッファ区画番号を読み出し、バッファ用メモリ１４０中の現バッファ区画番号が示す区画から分割フレームデータを読出し、送信処理回路３５へ経路Ｗ２４０−２１を通じて出力する。
ステップＳ１１０において、バッファ区画読出・解放制御回路２４７は、ＱｏＳ出力ジョブ情報から解放有無の情報を読み出し、解放有か解放無かを判断する。解放有の場合（ステップＳ１１０：Ｙ）は、ステップＳ１１１に進み、解放無の場合（ステップＳ１１０：Ｎ）は、ステップＳ１１２に進む。
ステップＳ１１１において、バッファ区画読出・解放制御回路２４７は、バッファ用メモリ１４０１２０中の分割フレームデータを読み出した領域を示すバッファ区画番号を、空きバッファ区画番号ＦＩＦＯ回路２４５２２４に返却し、前記フレームデータが蓄積されていたバッファ区画を解放する。あわせて、バッファ用メモリ１４０の１区画を解放したことを示す空き容量増減信号を、クラス別蓄積量監視回路４４０・受信ポート別蓄積量監視回路５４０・送信ポート別蓄積量監視回路６４０・収容判定回路３４０に出力する。クラス別蓄積量監視回路４４０・受信ポート別蓄積量監視回路５４０・送信ポート別蓄積量監視回路６４０に対しては、前記出力と同時に、バッファ用メモリ１４０の解放により廃棄されるフレームのクラス・受信ポート・送信ポート（複数の場合有り）を出力する。
【００９９】
ステップＳ１１２において、バッファ区画読出・解放制御回路２４７は、バッファ区画残数が１か否かを判断する。残数が１の場合（ステップＳ１１２：Ｙ）は、ステップＳ１１３へ進み、１でない場合（ステップＳ１１２：Ｎ）は、ステップＳ１１４へ進む。
ステップＳ１１３において、バッファ区画読出・解放制御回路２４７は、ＱｏＳ出力ジョブ情報から送信ポートの情報を読み出す。出力ジョブ情報から送信ポートの情報を読み出す。バッファ区画読出・解放制御回路２４７は、送信ポートの情報を含む送信処理入力ジョブ情報を生成し、送信処理回路３５に出力する。その後、バッファ区画読出・解放制御回路２４７は、ステップ１０１に戻る。
ステップＳ１１４において、バッファ区画読出・解放制御回路２４７は、現バッファ区画番号レジスタ２４８から現バッファ区画番号を読み出す。バッファ区画読出・解放制御回路２４７は、読み出した現バッファ区画番号に基づいてフレームデータ連絡用メモリ２４６から区画番号を読み出す。
ステップＳ１１５において、バッファ区画読出・解放制御回路２４７は、フレームデータ連結用メモリ２４６から読み出した区画番号を現バッファ区画番号レジスタ２４８に書き込む。また、バッファ区画読出・解放制御回路２４７は、バッファ区画残数レジスタ２４９が保持するバッファ区画残数を１減少させる。その後、バッファ区画読出・解放制御回路２４７は、ステップ１０９に戻る。
【０１００】
図１８は、図１５のバッファ制御回路の動作を説明する図であり、フレームデータ連結用メモリ２４６とバッファ用メモリ１４０との状態の変化を示す。
同図において、受信処理回路３２は受信ポート＿１にて受信したフレームを分割し、分割フレームデータ１−Ａ、１−Ｂ、１−Ｃ、１−Ｄをバッファ回路３３に出力する。また、受信処理回路３２は受信ポート＿２にて受信したフレームを分割フレームデータ２−Ａとしてバッファ回路３３に出力する。また、受信処理回路３２は受信ポート＿３にて受信したフレームを分割し、分割フレームデータ３−Ａ、３−Ｂ、３−Ｃをバッファ回路３３に出力する。受信処理回路３２は、図に示す順番で上記の分割フレームデータを送信する。
バッファ区画確保・書込制御回路２４１は、分割フレームデータ１−Ａを入力すると、収容判定にて収容有を判定した後、空きバッファ区画番号ＦＩＦＯ回路２４５からアドレス２を取得する。バッファ区画確保・書込制御回路２４１は、バッファ用メモリ１４０中の取得したアドレス２の区画に分割フレームデータ１−Ａを書き込む。バッファ区画確保・書込制御回路２４１は、分割フレームデータ１−Ａが先頭分割フレームデータであると判断して、受信ポート１に対応する先頭バッファ区画番号レジスタ２４２−１〜Ｎｐと旧バッファ区画番号レジスタ２４３−１〜Ｎｐとに読み出したアドレス２を書き込む。
【０１０１】
つぎに、バッファ区画確保・書込制御回路２４１は、分割フレームデータ１−Ｂを入力すると、収容判定にて収容有を判定した後、空きバッファ区画番号ＦＩＦＯ回路２４５からアドレス７を取得する。バッファ区画確保・書込制御回路２４１は、分割フレームデータ１−Ｂをバッファ用メモリ１４０のアドレス７の区画に書き込む。また、フレームデータ連結用メモリ２４６の旧バッファ区画番号２のアドレスに、取得したアドレス７を書き込む。さらに、バッファ区画確保・書込制御回路２４１は、受信ポート１に対応する旧バッファ区画番号レジスタ２４３−１〜Ｎｐに取得したアドレス７を書き込む。
つぎに、バッファ区画確保・書込制御回路２４１は、分割フレームデータ２−Ａを入力すると、収容判定にて収容有を判定した後、空きバッファ区画番号ＦＩＦＯ回路２４５からアドレス５を取得する。バッファ区画確保・書込制御回路２４１は、バッファ用メモリ１４０中の取得したアドレス５の区画に分割フレームデータ２−Ａを書き込む。バッファ区画確保・書込制御回路２４１は、分割フレームデータ２−Ａが先頭分割フレームデータであると判断して、受信ポート２に対応する先頭バッファ区画番号レジスタ２４２−１〜Ｎｐと旧バッファ区画番号レジスタ２４３−１〜Ｎｐとに読み出したアドレス５を書き込む。
【０１０２】
つぎに、バッファ区画確保・書込制御回路２４１は、分割フレームデータ１−Ｃを入力すると、収容判定にて収容有を判定した後、空きバッファ区画番号ＦＩＦＯ回路２４５からアドレス４を取得する。バッファ区画確保・書込制御回路２４１は、分割フレームデータ１−Ｃをバッファ用メモリ１４０のアドレス４の区画に書き込む。また、フレームデータ連結用メモリ２４６の旧バッファ区画番号７のアドレスに、取得したアドレス４を書き込む。さらに、バッファ区画確保・書込制御回路２４１は、受信ポート１に対応する旧バッファ区画番号レジスタ２４３−１〜Ｎｐに取得したアドレス４を書き込む。
以下同様に、バッファ区画確保・書込制御回路２４１は入力する分割フレームデータを処理する。
このように、入力ポート毎に先頭バッファ区画番号と旧バッファ区画番号とを保持して、バッファ回路３３は、複数のポートで受信したフレームの分割フレームデータが交互に入力された場合にも、適切な接続関係をフレームデータ連結用メモリ２４６に書き込む。
【０１０３】
以上のように、本実施形態のスイッチ回路は、異なる入力ポートからの分割フレームデータが交互に入力される場合にも、適切な接続関係をフレームデータ連結用メモに保持する。これにより、実施形態２のスイッチ回路で必要であった、少なくとも最大フレーム長のフレームデータを１フレーム分蓄積可能な受信処理回路３２内の受信バッファ回路３３は不要となり、回路規模の削減が可能となる。
【０１０４】
＜第１の変形例＞
図１９は、バッファ用メモリ制御回路２４０の一変形例であるバッファ用メモリ制御回路２６０の概略構成を示す構成図である。
同図において、バッファ用メモリ制御回路２６０は、バッファ区画確保・書込制御回路２６１と先頭バッファ区画番号レジスタ２６２−１〜Ｎｐと旧バッファ区画番号レジスタ２６３−１〜Ｎｐと入力途中破棄ジョブ情報ＦＩＦＯ回路２６４と空きバッファ区画番号ＦＩＦＯ回路２６５とフレームデータ連結用メモリ２６６とバッファ区画読出・解放制御回路２６７と現バッファ区画番号レジスタ２６８−１〜Ｎｐとバッファ区画残数レジスタ２６９−１〜Ｎｐとを含んで構成される。
バッファ用メモリ制御回路２６０は、バッファ用メモリ制御回路２４０と同様の処理を行う。以下では、バッファ用メモリ制御回路２４０との差異について説明する。
バッファ区画読出・解放制御回路２６７は、ＱｏＳ回路３４からフレーム長とハンドル番号とクラスの情報と受信ポートの情報と送信ポートの情報と解放有無の情報とを含むＱｏＳ出力ジョブ情報を経路Ｗ２６０−１９を通じて入力すると、入力した出力ジョブ情報からハンドル番号読み出す。このハンドル番号は、読み出すべき送信フレームのフレームデータのうちフレーム先頭が含まれる分割フレームデータが蓄積されたバッファ用メモリ１４０の領域を示す。バッファ区画読出・解放制御回路２６７は、読み出したハンドル番号が示すバッファ区画番号に基づいて、バッファ用メモリ１４０から前記分割フレームデータを経路Ｗ２６０−１７及びＷ２６０−１８を通じて読み出す。
【０１０５】
さらに、前記分割フレームデータに後続する分割フレームデータが存在する場合（読み出すべきフレームデータが２個以上の分割フレームデータに分割されて収容されている場合）、バッファ区画読出・解放制御回路２６７は、前記送信フレームの送信ポートに対応する現バッファ区画番号レジスタ２６８−１〜Ｎｐから、直前に読み出した分割フレームデータを収容していたバッファ区画のバッファ区画番号を読み出す。バッファ区画読出・解放制御回路２６７は、読み出したバッファ区画番号を読出アドレスとして、フレームデータ連結用メモリ２６６から連結バッファ区画番号を取得し、前記連結バッファ区画番号が示すバッファ区画に蓄積された分割フレームデータを読み出す。バッファ区画読出・解放制御回路２６７は、この読み出しを、全ての分割フレームデータをバッファ用メモリ１４０から読み出し終えるまで（フレーム長に基づいて算出された回数で）繰り返す。その際、バッファ区画残数レジスタ２６９−１〜Ｎｐを用いて、残り分割フレーム数を計数する。
ただし、バッファ区画読出・解放制御回路２６７が、上記処理中にＱｏＳ回路３４から別の送信ポートから出力される送信フレームのＱｏＳ出力ジョブ情報を入力したときは、前記処理と並行して、前記処理と同じ処理を、その送信フレームについても実施する。すなわち、同一送信フレームの分割フレームデータを連続して読み出さないで、ある送信ポートへ送信する送信フレームの分割フレームデータを読み出した後は異なる送信ポートへ送信する送信フレームの分割フレームデータを読み出す、というように、分割フレームデータ１個を読み出す度に送信ポートを切り替える。
【０１０６】
図１５のバッファ用メモリ制御回路２４０では、１個の送信フレームのフレームデータをバッファ用メモリ１４０から読み出し終えるまで、他の送信ポートから出力される送信フレームをバッファ用メモリ１４０から読み出すことができなかったため、ＱｏＳ回路３４が生成した送信タイミングから実際のフレーム送信までに不確定な遅延が生じ、ＱｏＳの精度が劣化していた。図１９のバッファ区画読出・解放制御回路２６７では、前記遅延が小さくなるため、ＱｏＳの精度が向上する。
【０１０７】
＜第２の変形例＞
図２０は、収容判定回路３２０の一変形例である収容判定回路３８０の概略構成を示す構成図である。
収容判定回路３８０は、収容判定回路３２０と同様の処理を行う。以下では、収容判定回路３２０との差異について説明する。
空き容量監視回路３８１は、現時点でのバッファ用メモリ１２０の空き容量情報（空きバッファ区画数）を保持し、入力フレームの収容可否（収容可能な場合に１）と空き容量情報（入力フレーム収容後の空きバッファ区画数）とを経路Ｗ３８０−２及びＷ３８０−３を通じて出力する。空き容量監視回路３８１は、空き容量増減信号を経路Ｗ３８０−１を通じて入力したとき、空き容量情報を増加または減少させた後の空き容量情報と併せて前記空き容量増減信号を出力する。空き容量監視回路３８１は、空き容量情報の値が所定の値以上である場合は、収容可（１）を示す入力フレームの収容可否を出力し、前記以外の場合は収容不可（０）を示す入力フレームの収容可否を出力する。
クラス＿ｉ蓄積量上限生成回路（ｉ＝１〜Ｎｃ）３８２−１〜Ｎｃは、空き容量監視回路３８１から空き容量情報と空き容量増減信号を入力し、クラス＿ｉに関するクラス別蓄積量上限を生成・出力する。また、クラス＿ｉ蓄積量上限生成回路（ｉ＝１〜Ｎｃ）３８２−１〜Ｎｃは、現時点でのクラス＿ｉ蓄積量上限を保持し、空き容量監視回路３８１から空き容量情報と空き容量増減信号を入力したとき、前記クラス＿ｉ蓄積量上限の保持値と入力した空き容量情報と空き容量増減信号とに基づいて、前記クラス＿ｉ蓄積量上限の保持値を更新する。
【０１０８】
受信ポート＿ｉ蓄積量上限生成回路（ｉ＝１〜Ｎｐ）３８５−１〜Ｎｐは、空き容量監視回路３８１から空き容量情報と空き容量増減信号を入力し、受信ポート＿ｉに関する受信ポート別蓄積量上限を生成・出力する。また、受信ポート＿ｉ蓄積量上限生成回路（ｉ＝１〜Ｎｃ）３８５−１〜Ｎｐは、現時点での受信ポート＿ｉ蓄積量上限を保持し、空き容量監視回路３８１から空き容量情報と空き容量増減信号を入力すると、前記受信ポート＿ｉ蓄積量上限の保持値と入力した空き容量情報と空き容量増減信号とに基づいて、前記受信ポート＿ｉ蓄積量上限の保持値を更新する。
送信ポート＿ｉ蓄積量上限生成回路（ｉ＝１〜Ｎｐ）３８８−１〜Ｎｐは、空き容量監視回路３８１から空き容量情報と空き容量増減信号を入力し、送信ポート＿ｉに関する送信ポート別蓄積量上限を生成・出力する。また、送信ポート＿ｉ蓄積量上限生成回路（ｉ＝１〜Ｎｐ） ３８８−１〜Ｎｐは、現時点での送信ポート＿ｉ蓄積量上限を保持し、空き容量監視回路３８１から空き容量情報と空き容量増減信号を入力したとき、前記送信ポート＿ｉ蓄積量上限の保持値と入力した空き容量情報と空き容量増減信号とに基づいて、前記送信ポート＿ｉ蓄積量上限の保持値を更新する。
【０１０９】
図２１は、各蓄積量上限生成回路の動作を説明するフローチャートの例と、前記フローチャートによって生成される蓄積量上限との関係を示す図である。このフローチャートでは、空き容量が所定の範囲にある場合に、空き容量の所定量の増加によって蓄積量上限の所定量の増加を行う。
ステップＳ１２１において、蓄積量上限生成回路は、空き容量増減信号を入力したか否かを判断する。入力した場合（ステップＳ１２１：Ｙ）は、ステップＳ１２２に進み、入力していない場合（ステップＳ１２１：Ｎ）は、ステップＳ１２１に戻る。
ステップＳ１２２において、蓄積量上限生成回路は、式（２）に従って空き容量分割数Ｎｄと空き容量分割単位量Ｎｓとを算出する。
【０１１０】
【数２】
2011009876.tif 000004
【０１１１】
ステップＳ１２３において、蓄積量上限生成回路は、空き容量分割数Ｎｄが外部から設定するパラメタＮｄ＿２以上か否かを判断する。ＮｄがＮｄ＿２以上の場合（ステップＳ１２３：Ｙ）は、ステップＳ１２４に進み、ＮｄがＮｄ＿２未満の場合（ステップＳ１２３：Ｎ）は、ステップＳ１２５に進む。ステップＳ１２４において、蓄積量上限生成回路は、蓄積量上限Ｌを外部から設定するパラメタＬｍａｘに設定する。
ステップＳ１２５において、蓄積量上限生成回路は、空き容量分割数Ｎｄが外部から設定するパラメタＮｄ＿１未満か否かを判断する。ＮｄがＮｄ＿１未満の場合（ステップＳ１２５：Ｙ）は、Ｌの値を保持してステップＳ１３２に進む。ＮｄがＮｄ＿１以上の場合（ステップＳ１２５：Ｎ）は、ステップＳ１２７に進む。ステップＳ１２７において、蓄積量上限生成回路は、蓄積量上限Ｌを外部から設定するパラメタＬｍａｘに設定する。
ステップＳ１２６において、蓄積量上限生成回路は、空き容量分割残数Ｎｒ＝０かつ空き容量が増加したか否かを判断する。Ｎｒ＝０かつ空き容量が増加した場合（ステップＳ１２６：Ｙ）は、ステップＳ１２７に進み、Ｎｒ＝０でないまたは空き容量が増加していない場合（ステップＳ１２６：Ｎ）は、ステップＳ１２８に進む。ステップＳ１２７において、蓄積量上限生成回路は、蓄積量上限Ｌに外部から設定するパラメタＬｓを加算する。その後、蓄積量上限生成回路はステップＳ１３０に進む。
ステップＳ１２８において、蓄積量上限生成回路は、空き容量分割残数Ｎｒ＝０かつ空き容量が減少したか否かを判断する。Ｎｒ＝０かつ空き容量が減少した場合（ステップＳ１２８：Ｙ）は、ステップＳ１２９に進み、Ｎｒ＝０でないまたは空き容量が減少していない場合（ステップＳ１２８：Ｎ）は、ステップＳ１３０に進む。ステップＳ１２９において、蓄積量上限生成回路は、蓄積量上限Ｌから外部から設定するパラメタＬｓを減算する。
ステップＳ１３０において、蓄積量上限生成回路は蓄積量上限Ｌを収容判定回路に出力する。その後、蓄積量上限生成回路はステップＳ１２１に戻る。
【０１１２】
なお、前記フローチャートでは、空き容量分割数Ｎｄおよび空き容量分割残数Nrの算出を行っているが、前記蓄積量上限生成回路で使用される各値を２進数として扱い、かつ、空き容量分割単位量Vsを２, ４, ８, １６, ...等の２のべき乗のみに限定するようにしてもよい。これにより、前記算出を簡易化することができる。
クラス＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｃ）３８３−１〜Ｎｃは、クラス＿ｉに関するクラス別蓄積量上限とクラス別蓄積量を入力し、前記蓄積量上限と前記蓄積量とを比較する。比較の結果、蓄積量上限＞蓄積量である場合は、クラス＿ｉ蓄積量判定結果として１を出力し、それ以外の場合は０を出力する。クラス＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｃ）３８３−１〜Ｎｃは、クラス別蓄積量を経路Ｗ３８０−４を通じて入力を受ける。
受信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３８６１〜Ｎｐは、受信ポート＿ｉに関する受信ポート別蓄積量上限と受信ポート別蓄積量を入力し、前記蓄積量上限と前記蓄積量とを比較する。比較の結果、蓄積量上限＞蓄積量である場合は、受信ポート＿ｉ蓄積量判定結果として１を出力し、それ以外の場合は０を出力する。受信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３８６１〜Ｎｐは、受信ポート別蓄積量を経路Ｗ３８０−６を通じて入力を受ける。
送信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３８９−１〜Ｎｐは、送信ポート＿ｉに関する送信ポート別蓄積量上限と送信ポート別蓄積量を入力し、前記蓄積量上限と前記蓄積量とを比較する。比較の結果、蓄積量上限＞蓄積量である場合は、送信ポート＿ｉ蓄積量判定結果として１を出力し、それ以外の場合は０を出力する。送信ポート＿ｉ蓄積量判定回路（ｉ＝１〜Ｎｐ）３８９−１〜Ｎｐは、送信ポート別蓄積量を経路Ｗ３８０−８を通じて入力を受ける。
【０１１３】
以上のように、本実施形態の蓄積量上限生成回路は、空き容量増信号が入力されると蓄積量上限を増加させ、空き容量減信号が入力されると蓄積量上限を減少させる。これにより、空き容量の増減を反映した蓄積量上限を生成することができる。
【０１１４】
＜第４の実施形態＞
図２２は、本発明を適用したバッファ回路４３を内蔵するスイッチ回路４の構成を示す。前記スイッチ回路４は、本発明を適用したバッファ回路４３を用いて実現したレイヤ２転送の機能と、レイヤ３（Ｌ３）転送の機能を併せ持つ。
本スイッチ回路４の、受信ＭＡＣ回路４１−１〜Ｎｐ・送信ＭＡＣ回路４５−１〜Ｎｐ・受信処理回路４２・バッファ回路４３は、図６のスイッチ回路２と同一であるが、Ｌ３転送用受信処理回路５２・Ｌ３転送用送信処理回路５５・Ｌ３転送用バッファ回路５３が追加されている点が異なる。また、送信処理回路４５は、図６のスイッチ回路２における送信処理回路２５と同じく、バッファ回路４３からの入力と送信ＭＡＣ回路４６−１〜Ｎｐへの出力をもつが、前記のほかに、Ｌ３転送用送信処理回路５５からの入力とＬ３転送用受信処理回路５２への出力が追加されている点が異なる。
【０１１５】
これにより、家庭用のルータに本スイッチ回路を適用することで、家庭内ネットワーク（図のLAN受信/送信ポートが接続するネットワーク）のためのイーサネット（登録商標）フレームの転送と、インターネットサービスプロバイダとアクセス回線を介してIPパケットを転送する機能を、１個の回路で実現することが可能となる。
本発明のバッファ回路４３はＱｏＳ回路４４と分離しているため、本発明のバッファ回路４３を適用することで、レイヤ２転送用スイッチ回路とレイヤ３転送用スイッチ回路に分離した構成と比較して、ＱｏＳ回路４４を共通化できるため、回路規模の削減が可能となる。
また、家庭内ネットワーク向けに複数のポートが必要となり、これらのポート間のレイヤ２転送において、ポート数に比例して扱うデータ帯域が大きくなるため、バッファ用メモリの帯域を大きくする必要があるが、レイヤ２転送用に本発明のバッファ回路４３を用いることでバッファ用メモリの利用効率を向上させることができるため、メモリの帯域は大きくすることが可能だが容量に制約のあるＳＲＡＭをバッファ用メモリとして採用することが可能となる。
また、Ｌ３転送用バッファ回路５３は、主に、ＷＡＮ受信/送信ポートとＬＡＮ送信/受信ポート間でＬ３転送されるＩＰパケットが蓄積されるため、前記Ｌ３転送用バッファ回路５３のバッファ用メモリの帯域は比較的小さい一方で、ネットワーク帯域の変動が大きいＷＡＮ側との通信のためバッファ用メモリの容量は大きくする必要があり、前記Ｌ３転送用バッファ回路５３のバッファ用メモリとしてＤＤＲ−ＳＲＡＭ等を採用することが望ましい。本発明のバッファ回路４３はＱｏＳ回路４２と独立してバッファ管理が可能であるため、前記ＤＤＲ−ＳＲＡＭをバッファ用メモリとするＬ３転送用バッファ回路５３と併用することが可能である。
【０１１６】
なお、図１〜図３と図６〜図８と図１２と図１４と図１５と図１９と図２０と図２２とに示す各部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【０１１７】
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【産業上の利用可能性】
【０１１８】
本発明は、バッファ回路及びバッファ回路制御方法に用いて好適である。
【符号の説明】
【０１１９】
１、２、３、４  スイッチ回路
１３、２３、３３、４３  バッファ回路
１００、１２０、１４０、１６０  バッファ用メモリ
２００、２２０、２４０、２６０  バッファ用メモリ制御回路
３００、３２０、３４０、３６０  収容判定回路
４００、４２０、４４０、４６０  クラス別蓄積量監視回路
５００、５２０、５４０、５６０  受信ポート別蓄積量監視回路
６００、６２０、６４０、６６０  送信ポート別蓄積量監視回路
【図１】
2011009876.tif 000005
【図２】
2011009876.tif 000006
【図３】
2011009876.tif 000007
【図４】
2011009876.tif 000008
【図５】
2011009876.tif 000009
【図６】
2011009876.tif 000010
【図７】
2011009876.tif 000011
【図８】
2011009876.tif 000012
【図９】
2011009876.tif 000013
【図１０】
2011009876.tif 000014
【図１１】
2011009876.tif 000015
【図１２】
2011009876.tif 000016
【図１３】
2011009876.tif 000017
【図１４】
2011009876.tif 000018
【図１５】
2011009876.tif 000019
【図１６】
2011009876.tif 000020
【図１７】
2011009876.tif 000021
【図１８】
2011009876.tif 000022
【図１９】
2011009876.tif 000023
【図２０】
2011009876.tif 000024
【図２１】
2011009876.tif 000025
【図２２】
2011009876.tif 000026