(57)【特許請求の範囲】
【請求項１】
可変長フレームデータを入力順に記憶するフレームバッファと、
フレームバッファへの書き込み順に１ずつ加算されるフレームＩＤをアドレスとし、当該フレームまでのフレームバッファへ書き込まれた積算量を記憶する第１の記憶手段と、
所定の分割単位での区切りを越える最小の積算値を有するフレームＩＤを、１ずつ加算される数値をアドレスとして記憶する第２の記憶手段と、
前記フレームＩＤと積算量を算出して、算出したフレームＩＤに対応する第１の記憶手段のアドレスに算出した積算量を書き込み、所定の分割単位での区切りを越える最小の積算値を有するフレームＩＤを、第２の記憶手段の１ずつ加算されるアドレスに書き込むフレーム情報格納手段と、
フレームバッファから読み出されたフレームＩＤと積算量を算出するフレーム出力制御手段と、
設定された閾値以内で最大出力が可能なフレーム単位の蓄積量を算出するため、第２の記憶手段から、蓄積量計算の基点となるフレームの積算値に前記閾値を加算した値を前記分割単位で表した数値のアドレスに記憶されているフレームＩＤを読み出し、読み出したフレームＩＤから１を引いたフレームＩＤ以上となるフレームＩＤの積算値を順次第１の記憶手段から読み出し、読み出した積算値が蓄積量計算の基点の積算値に閾値を加算した数値以下となる最大のフレームＩＤを求め、蓄積量計算の終点として算出する比較判定手段と、
蓄積量計算の基点となるフレームの積算値と、比較判定手段で算出された蓄積量計算の終点の積算値とに基づき、前記閾値以内で最大出力が可能なフレーム単位の蓄積量を算出するとともに、蓄積量計算の基点および終点となるフレームＩＤに基づき蓄積フレーム数を算出する蓄積量演算手段と、
を備えることを特徴とする可変長フレームバッファ装置。
【請求項２】
前記積算量はフレーム間ギャップ分および誤り訂正分のデータも含めて算出することを特徴とする請求項１に記載の可変長フレームバッファ装置。
【請求項３】
前記第１の記憶手段を複数の検索領域に分割し、第１の記憶手段からの読み出しを、複数の領域で同時に行うことを特徴とする請求項１または２に記載の可変長フレームバッファ装置。
【請求項４】
前記フレーム情報格納手段および蓄積量演算手段を複数備え、第１のメモリおよび第２のメモリを複数の領域に分割することにより、複数種類のデータ毎に、閾値以下となるフレーム単位の蓄積量および蓄積フレーム数を、それぞれ個別に算出することを特徴とする請求項１〜３のいずれか１つに記載の可変長フレームバッファ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、閾値以下で出力可能なフレーム単位の最大蓄積データ量を算出できる可変長フレームバッファ装置に関するものである。
【背景技術】
【０００２】
従来、可変長フレームバッファにおけるフレーム単位の蓄積量判定方法は、フレームバッファと同じアドレス空間を持ったフレーム番号用バッファを設け、読み出し次先頭アドレスに判定したい閾値を加算して、フレーム番号用バッファからフレーム番号を取得し、それを読み出しアドレスとしてバッファ情報用メモリからフレームの区切れとなる先頭アドレスを検索し、その検索した先頭アドレスと次先頭アドレスとの間のバッファ量を蓄積量として判定する方法であった(特許文献１)。
【０００３】
【特許文献１】特開２００５−２７０２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の技術によれば、フレームバッファと同容量の検索用バッファが必要であり、前記容量の検索用バッファを用意できない場合には、この検索方法を用いることができないという問題があった。また、この方法を用いない場合は、すべてのフレームを検索範囲として２分岐探索や順次比較により、フレーム区切れ目を探索する必要があり、蓄積フレーム数に応じて計算時間が増加するという問題があった。
【０００５】
本発明は、上記に鑑みてなされたものであって、検索用バッファ容量を抑えた上で、フレーム蓄積量にほぼ依存せずに短時間で閾値以下の蓄積量となるフレームの区切れ目を判定し、区切れ目までの蓄積量を求めることができる可変長フレームバッファ装置を得ることを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、可変長フレームデータを入力順に記憶するフレームバッファと、フレームバッファへの書き込み順に１ずつ加算されるフレームＩＤをアドレスとし、当該フレームまでのフレームバッファへ書き込まれた積算量を記憶する第１の記憶手段と、所定の分割単位での区切りを越える最小の積算値を有するフレームＩＤを、１ずつ加算される数値をアドレスとして記憶する第２の記憶手段と、前記フレームＩＤと積算量を算出して、算出したフレームＩＤに対応する第１の記憶手段のアドレスに算出した積算量を書き込み、所定の分割単位での区切りを越える最小の積算値を有するフレームＩＤを、第２の記憶手段の１ずつ加算されるアドレスに書き込むフレーム情報格納手段と、フレームバッファから読み出されたフレームＩＤと積算量を算出するフレーム出力制御手段と、設定された閾値以内で最大出力が可能なフレーム単位の蓄積量を算出するため、第２の記憶手段から、蓄積量計算の基点となるフレームの積算値に前記閾値を加算した値を前記分割単位で表した数値のアドレスに記憶されているフレームＩＤを読み出し、読み出したフレームＩＤから１を引いたフレームＩＤ以上となるフレームＩＤの積算値を順次第１の記憶手段から読み出し、読み出した積算値が蓄積量計算の基点の積算値に閾値を加算した数値以下となる最大のフレームＩＤを求め、蓄積量計算の終点として算出する比較判定手段と、蓄積量計算の基点となるフレームの積算値と、比較判定手段で算出された蓄積量計算の終点の積算値とに基づき、前記閾値以内で最大出力が可能なフレーム単位の蓄積量を算出するとともに、蓄積量計算の基点および終点となるフレームＩＤに基づき蓄積フレーム数を算出する蓄積量演算手段とを備えることを特徴とする。
【発明の効果】
【０００７】
この発明によれば、検索領域をしぼりこむために、所定の分割単位での区切りを越える最小の積算値を有するフレームＩＤを、１ずつ加算される数値をアドレスとして記憶し、これを用いて検索領域をしぼった上で、閾値の範囲内で最大出力が可能なフレーム単位の蓄積量の区切れ目を検索するようにしたので、少ないメモリ容量で効率的にフレーム単位の蓄積量を求めることができるという効果を奏する。
【発明を実施するための最良の形態】
【０００８】
以下に、本発明にかかる可変長フレームバッファ装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【０００９】
実施の形態１．
図１は、本発明にかかる可変長フレームバッファ装置の実施の形態１の構成図である。図１に示す可変長フレームバッファ装置は、可変長フレームを入力順に記憶するＦＩＦＯ（Fast In Fast Out Memory）バッファであるフレームバッファ１０と、フレームバッファ１０のリード・ライトを行うフレームバッファアクセス制御部１１と、受信したフレームの長さをカウントし、積算値ＳＡ（フレームバッファ１０へ書き込んだデータの積算量であり、この場合単位はバイト）を管理し、そのフレームを廃棄するか否かの判定と、フレームバッファのライトアドレスの管理を行うフレーム受信制御部１２と、フレームＩＤをアドレスとしフレーム長を格納するフレーム長情報バッファ１３と、フレームＩＤをアドレスとし、フレームＩＤごとに積算値を格納する第１のメモリ１４と、ｎバイト単位の区切り（ｎ、２ｎ、３ｎ、…）を越える最小の積算値ＳＡを有するフレームＩＤを、＋１インクリメントされる数値をアドレスとして記憶する第２のメモリ１５と、積算値を管理して、フレームバッファアクセス制御部１１からフレームの書き込み完了の通知があると、そのフレームにおける積算値ＳＡを計算し、第１のメモリ１４と第２のメモリ１５に情報を格納するフレーム情報格納部１６と、フレームバッファ１０のリード（読み出し終了）およびライト（書き込み終了）位置に対応するフレームＩＤや積算値ＳＡを管理するポインタ管理部１７と、閾値Ｌを与えられると、設定された閾値Ｌ以内で最大出力が可能なフレーム単位のデータ量を算出するために、第１のメモリ１４、第２のメモリ１５にアクセスし、閾値Ｌの範囲内でバッファメモリ１０から最大出力が可能な位置のフレームＩＤ、積算値ＳＡを検出する比較判定部１８と、設定された閾値Ｌ以内で最大出力が可能なフレーム単位のデータ量、フレーム数を演算する蓄積量演算部１９と、出力先からフレーム読み出し指示があると、そのときのフレーム長をフレーム長情報バッファ１３からリードし、そのフレーム長の分をフレームバッファアクセス制御部１１にフレーム読み出し要求を発行し、要求に従ってフレームバッファアクセス制御部１１がフレームバッファ１０から読み出したフレームを出力先に転送するフレーム出力制御部２０から構成される。
【００１０】
次に、実施の形態１における可変長フレームバッファ装置の動作について説明する。まず、図１のフレームバッファ１０への格納方法、出力方法およびフレームバッファ１０のデータ蓄積量の算出方法について説明する。
【００１１】
フレーム受信制御部１２は、可変長フレームを受信すると、受信したフレームのフレーム長ｄを計算し、そのフレーム長ｄを現在の積算値ＳＡに加算した値（ＳＡ＋ｄ）を求める。積算値ＳＡとは、前述したように、現在までにフレームバッファ１０へ既に書き込んだ全ての可変長フレームの長さの積算値のことである。次に、フレーム受信制御部１２は、この計算値（ＳＡ＋ｄ）から、フレーム出力制御部２０から入力される出力済みデータの積算値ＳＡＲを引いた値を求める。すなわち、フレーム出力制御部２０では、フレームバッファ１０から読み出されて出力先へ既に出力された可変長フレームの長さの積算値ＳＡＲを計算しており、この計算値ＳＡＲをフレーム受信制御部１２へ入力している。フレーム受信制御部１２では、ライト積算値（ＳＡ＋ｄ）からリード積算値ＳＡＲを減算することにより、フレームバッファに蓄積すべき現時点のデータ量ＴＳＡ（＝ＳＡ＋ｄ−ＳＡＲ）を算出する。
【００１２】
フレーム受信制御部１２は、算出した値ＴＳＡと廃棄閾値Ｃを比較し、算出した値ＴＳＡが廃棄閾値Ｃを超える場合はそのフレームを廃棄し、超えない場合は、そのフレームを書き込むべきフレームバッファ１０の先頭アドレスとフレーム長ｄをフレームバッファアクセス制御部１１に通知する。廃棄閾値は、例えばフレームバッファ１０の容量とすることが考えられるが、これに限らず、運用上適切な数値をあらかじめフレーム受信制御部１２に設定しておく。また、フレーム受信制御部１２は、フレーム長ｄを、フレーム長情報バッファ１３の当該フレームＩＤのアドレスに書き込む。フレームＩＤは、フレームバッファアクセス制御部１１に書き込みを指示する毎に１ずつカウントアップさせて算出する。したがって、フレーム長バッファ１３には、各フレームのＩＤ毎に、フレーム長が記憶されていることになる。
【００１３】
なお、フレームバッファ１０の書き込みアドレス制御方法は、フレームバッファに用いるバッファの種別によって異なる。
【００１４】
フレームバッファアクセス制御部１１では、フレームバッファ１０にフレームをリード・ライトするための競合制御を行っている。そして、フレームのライト完了時には、ライトしたフレーム長ｄなどを含むフレーム識別情報をフレーム情報格納部１６に通知する。
【００１５】
フレーム情報格納部１６では、直前のフレームで計算された積算値ＳＡ（例えばＳ０とする）とフレームＩＤ（例えばＦ０とする）を保持しており、新たなフレームライト完了をフレームバッファアクセス制御部１１から受信すると、フレームＩＤに１を加算して受信したフレームのフレームＩＤ（Ｆ１）を算出し、直前の積算値ＳＡ（＝Ｓ０）に当該フレームのフレーム長ｄを加算して、受信したフレームまでの積算値ＳＡ（＝Ｓ１とするを算出する。フレーム情報格納部１６は、算出したフレームＩＤ（Ｆ１）と積算値ＳＡ（Ｓ１）をポインタ管理部１７に通知する。
【００１６】
このとき、積算値ＳＡに、フレーム間のＩＦＧ（Inter Frame Gap）や、ＦＥＣ（Forward Error Correction）等の誤り訂正情報等オーバヘッドを加味することで、通信における実帯域の量として算出しておくことができる。これにより、実質の出力データ量を求めることができる。
【００１７】
次に、フレーム情報格納部１６は、第１のメモリ１４の計算したフレームＩＤ（Ｆ１）を値とするアドレスに、計算した積算値ＳＡ（Ｓ１）を格納する。
【００１８】
さらに、フレーム情報格納部１６は、第２のメモリ１５には、直前のフレームで計算された積算値Ｓ０を分割単位ｎで割った商ＳＮ０と、受信したフレームのフレーム長ｄを加算することによって得られた積算値Ｓ１をｎで割った商ＳＮ１とを比較して、異なる場合には、ＳＮ０の次のアドレスからＳＮ１のアドレスまでフレームＩＤ（Ｆ１)を格納する。すなわち、第２のメモリのそれぞれのアドレスには、ｎバイト単位の区切り（ｎ、２ｎ、３ｎ、…）を越える最小の積算値ＳＡを有するフレームＩＤが記憶される。ｎバイトは後述する検索のための分割単位である。ＳＮ０とＳＮ１が同一の場合には、第２のメモリへの書き込みは行わない。
【００１９】
第１のメモリ１４と第２のメモリ１５の構成を図２に示す。第１のメモリ１４の容量は、最大フレーム数×積算値ＳＡのビット幅、第２のメモリ１５の容量は、(フレームバッファ１０に蓄積可能なデータ量÷ｎバイト)×フレームＩＤのビット幅、となる（パリティビットや、巡回演算用のビット分を加えてもよい）。この場合、第１のメモリ１４には、アドレスＦ０に積算値ＳＡとしてＳ０（＝０）、アドレスＦ１に積算値ＳＡとしてＳ１（＝１００）、アドレスＦ２に積算値ＳＡとしてＳ１（＝２００）、アドレスＦ３に積算値ＳＡとしてＳ１（＝３００）、アドレスＦ４に積算値ＳＡとしてＳ４（＝１１００）、アドレスＦ５に積算値ＳＡとしてＳ５（＝３１００）が記憶されている。したがって、第１番目の可変長フレームの長さｄは１００バイト、第２番目の可変長フレームの長さｄは１００バイト、第３番目の可変長フレームの長さｄは１００バイト、第４番目の可変長フレームの長さｄは８００バイト、第５番目の可変長フレームの長さｄは２０００バイトとなる。
【００２０】
一方、この場合、ｎ＝１０２４バイトとしているので、第２のメモリ１５のアドレス「１」には、１０２４バイトの区切りを越える最小の積算値（Ｓ４＝１１００バイト）を有するフレームＩＤであるＦ４が記憶され、第２のメモリ１５のアドレス「２」には、２０４８バイトの区切りを越える最小の積算値（Ｓ５＝３１００バイト）を有するフレームＩＤであるＦ５が記憶され、第２のメモリ１５のアドレス「３」には、３０７２バイトの区切りを越える最小の積算値（Ｓ５＝３１００バイト）を有するフレームＩＤであるＦ５が記憶されることになる。
【００２１】
フレーム出力制御部２０は、フレームバッファ１０のライトに関するアドレス情報をフレーム受信制御部１２から受信し、フレームバッファ１０のリードに関するアドレス管理を行う。出力先からフレームの出力要求があると、フレーム出力制御部２０は、フレーム長情報バッファ１３からフレーム長を読み出し、リード（出力）すべきフレームバッファ１０のアドレスとフレーム長をフレームバッファアクセス制御１１に送信する。フレームバッファアクセス制御部１１は、受信した情報に基づきフレームバッファ１０からフレームを読み出し、フレーム出力制御部２０にフレームを送信する。フレーム出力制御部２０は、このフレームを受信し、出力先へ転送を行うとともに、ポインタ管理部１７にリードしたフレームＩＤとリードしたフレームにおける積算値ＳＡＲを通知する。この積算値ＳＡＲは、前述したように、フレーム受信制御部１２にも出力される。
【００２２】
ポインタ管理部１７は、フレーム情報格納部１６から、ライトに関するフレームＩＤと積算値ＳＡを受信し、フレーム出力制御部２０からリードに関するフレームＩＤと積分値ＳＡＲを受信して、最新の情報を最終リード位置および最終ライト位置として管理しており、蓄積量演算部１９にこれらのデータを送信する。
【００２３】
蓄積量演算部１９は、ポインタ管理部１７から、フレームバッファ１０の最終リード位置の積算値ＳＡＲ（Ｓｒ）とフレームＩＤ（Ｆｒ）、フレームバッファ１０の最終ライト位置の積算値ＳＡ（Ｓｗ）とフレームＩＤ（Ｆｅ）を受信し、フレームバッファ１０に蓄積すべき現時点のデータ量ＴＳＡをＳｗ−Ｓｒにしたがって求める。このとき、積算値ＳＡ、フレームＩＤの情報がそれぞれリングバッファのアドレスである場合には、積算値ＳＡ、フレームＩＤともに最大値と最小値を設定し、Ｓｗ＜Ｓｒの場合には、リングバッファのアドレスであることを考慮して蓄積量を計算する。蓄積量演算部１９は、算出した現蓄積量ＴＳＡと最終リード位置のフレームＩＤと積算値ＳＡを比較判定部１８に通知する。
【００２４】
次に、ある閾値Ｌ以下でのフレーム単位の最大出力可能量を求める手順を図３に示すフローチャートに基づいて説明する。
【００２５】
比較判定部１８は、ある閾値Ｌ（閾値Ｌは積算値ＳＡと同じくｂｙｔｅ単位とする）が与えられるとき、その閾値Ｌ以下となる、フレームバッファ１０の最大出力可能量をフレーム単位で求める。本実施の形態では、閾値Ｌは、出力先から送信されるものとするが、運用者により設定される等の構成としても良い。まず比較判定部１８は、蓄積量演算部１９から現蓄積量ＴＳＡと最終リード位置のフレームＩＤと積算値ＳＡを受信し、現蓄積量ＴＳＡと閾値Ｌを比較する（ステップＳ１００）。現蓄積量ＴＳＡ＜閾値Ｌであった場合は、蓄積量演算部１９において、現蓄積量ＴＳＡが最大出力可能量となり、現蓄積量ＴＳＡに含まれるフレームＩＤの個数（現蓄積フレーム数）が最大出力可能フレーム数として算出される（ステップＳ１１０）。現蓄積量ＴＳＡ≧閾値Ｌであった場合は、閾値Ｌ以下で出力可能量が最大となる区切れ目のフレーム位置を検索するために、以下の処理を行う。
【００２６】
この場合、まず、出力可能量の算出の基点として最終リード位置Ｓｒを用いる。蓄積量計算部１９から受信した最終リード位置の積算値ＳＡＲ（Ｓｒ）に閾値Ｌを加算した値を積算値ベース閾値ＳＬとして算出する（ステップＳ１２０）。次に、積算値ベース閾値ＳＬをｎで割った商ＳＮＬと、Ｓｒをｎで割った商ＳＮｒを算出する（ステップＳ１３０）。ｎは、フレームバッファ１０の容量等を考慮してあらかじめ設定しておく。
【００２７】
ここでｎの値として、２のべき乗を用いると、割り算を実施せずに、上位ビットのみを参照すればよいので、演算に要する時間を削減できる。
【００２８】
次にＳＮＬとＳＮｒを比較し（ステップＳ１４０）、ＳＮＬ＝ＳＮｒであった場合は、最終リード位置Ｓｒを検索開始位置とし（ステップＳ１５０）、ステップＳ１８０に進む。この場合、比較判定部１８は、最終リード位置Ｓｒから、第１のメモリ１４に格納されている積算値ＳＡを読み出し（ステップＳ１８０）、読み出した積算値ＳＡを積算値ベース閾値ＳＬと比較し（ステップＳ１９０）、ＳＬ≦Ｓｋとなる位置ｋを見つけ出すまで比較を繰り返す（ステップＳ２００）。ＳＬ＝Ｓｋであった場合は、この位置が閾値内での最終フレーム位置とし、ＳＬ＜Ｓｋであった場合は、Ｓｋの位置は積算値ベース閾値ＳＬを超えたフレームであり、一つ前の位置ｋ−１までが閾値Ｌ内の最終フレームとなる（ステップＳ２１０）。
【００２９】
ＳＮＬ≠ＳＮｒであった場合は、第２のメモリ１５からＳＮＬの値のアドレスのデータをリードして、積算値ベース閾値ＳＬを越える最小の積算値を有するフレームＩＤを得る（ステップＳ１６０）。この場合得られたフレームＩＤをＦａとすると、フレームＩＤ（Ｆａ）から１を引いた（Ｆａ−１）のフレームまでは、その積算値ＳＡが積算値ベース閾値ＳＬより小さいと判断できる。よって、Ｆａ−１のフレームＩＤを検索開始位置とする（ステップＳ１７０）。求める蓄積量計算の終点である最終フレームは、Ｆｌ−１以上のフレームＩＤとなる。
【００３０】
次に比較判定部１８は、フレームＩＤ（Ｆｌ−１）以上のフレームＩＤについて、第１のメモリ１４に格納されている積算値ＳＡを順次読み出し（ステップＳ１８０）、積算値ＳＡを積算値ベース閾値ＳＬと比較し（ステップＳ１９０）、ＳＬ≦Ｓｋとなる位置ｋを見つけ出すまで比較を繰り返す（ステップＳ２００）。ＳＬ＝Ｓｋであった場合は、この位置が閾値内での最終フレーム位置とし、ＳＬ＜Ｓｋであった場合は、Ｓｋの位置は積算値ベース閾値ＳＬを超えたフレームであり、一つ前の位置ｋ−１までが閾値Ｌ内の最終フレームとなる（ステップＳ２１０）。
【００３１】
このように、ＳＬ＝Ｓｋであった場合は、算出された位置ｋの積算値ＳＡ（Ｓｋ）とフレームＩＤ（Ｆｋ）が閾値（Ｌ）に対して最大出力できる終点のフレームの情報であり、ＳＬ＜Ｓｋであった場合は、位置ｋ−１の積算値ＳＡ（Ｓｋ−１）とフレームＩＤ（Ｆｋ−１）が閾値（Ｌ）に対して最大出力できる終点のフレームの情報である。
【００３２】
比較判定部１８は、このようにして得られた位置ｋまたは位置ｋ−１の積算値ＳＡ（ＳｋまたはＳｋ−１）とフレームＩＤ（ＦｋまたはＦｋ−１）を、ポインタ管理部１７に通知する。ポインタ管理部１７は、これらの情報と最終リード位置の積算値ＳＡ（Ｓｒ）とフレームＩＤ（Ｆｒ）を蓄積量演算部１９に通知し、蓄積量演算部１９は、位置ｋまたは位置ｋ−１と最終リード位置Ｓｒの積算値ＳＡとフレームＩＤ（Ｆｒ）との差分を取り、Ｓｋ―Ｓｒまたは（Ｓｋ−１）−Ｓｒを最大出力可能量、Ｆｋ−Ｆｒまたは（Ｆｋ−１）−Ｆｒを最大出力可能フレーム数として算出する（ステップＳ２２０）。
【００３３】
これらの算出結果である最大出力可能量および最大出力可能フレーム数は、本実施の形態では、蓄積量演算部１９から出力先に送信されるが、運用者への通知に通知する等でもよく、出力方法に限定は無い。
【００３４】
なお、本例では、蓄積量を求める基点を最終リード位置Ｓｒとして説明を行ったが、最終リード位置以外を基点とする蓄積量を求めることも、同様に可能で、その場合は、最終リード位置の代わりに比較判定部に対して基点とするフレームＩＤを指定することにより実現できる。
【００３５】
本実施の形態のポイントは、検索の手順において、検索開始位置の該当箇所を第２のメモリ１４を用いて簡単に限定でき、さらにｎバイトの領域で区切ることで検索範囲を大幅に限定できることである。
【００３６】
ｎバイトの領域に入るフレーム数はｎの値に依存して変化するが、ｎ＝１０２４バイト（１ｋバイト）の場合、最小フレーム長を６４バイトとすると、ｎバイト中にフレームが最大１６個入ることになり、検索開始位置を含め、比較するフレーム数は必ず１７個以内となる。この最大１７個のフレーム情報に対して、本例では順次比較としたが、２分岐探索などで比較してもよい。
【００３７】
なお、第１のメモリ１４の記憶領域を複数に分割し、領域ごとに並列にリードするようにしてもよい。これによって、比較時間をさらに短縮させることができる。
【００３８】
最終リード位置は、フレーム出力制御部で出力があるたびに、次の積算値ＳＡをメモリ１からリードして更新してもよいし、閾値で示した箇所まで必ず出力するのであれば、この検索完了後に出力された検索位置ｋを次の最終リード位置としてもよい。
【００３９】
例えば、ＧＥ−ＰＯＮシステムにおいて、グラント割当を行う場合には、積算値ＳＡにＩＦＧを加え、閾値Ｌとしてグラント長を用いることで、実際に割り当てる出力フレーム数や量を計算できる。
【００４０】
或いは、グラント分を差し引いた後のある閾値以下での蓄積量を知りたい場合は、グラント長の割当量を求めた後に、最終リード位置を更新し、再度設定した閾値以下での蓄積量演算処理を行うことで、求める蓄積量を計算することができる。
【００４１】
以上のように、実施の形態１によれば、ｎバイト単位のフレームＩＤを記憶する第２のメモリ１５を用いて、分割単位で検索領域を絞った後に、フレームごとのデータの積算値ＳＡを記憶する第１のメモリ１４を用いて検索を行うようにしたので、検索用として容量の大きなメモリを使用せずに、閾値以下で最大の蓄積量となるフレーム位置の検索が効率的に実施できる。
【００４２】
実施の形態２．
以上の実施の形態１では、フレームバッファ装置に対して１キューしかない場合（バッファすべきフレームデータに区別が無い場合）であったが、実施の形態２では、データの種類が複数ある場合等、複数キューがある場合に対応する形態を示す。
【００４３】
図４は、実施の形態２が適用される可変長フレームバッファ装置の構成である。実施の形態２では、キューが複数あることに対応して、情報を管理しているフレーム情報格納部１６、ポインタ管理部１７および蓄積量演算部１９をキュー毎に備えている点が実施の形態１と異なる。実施の形態１と重複する構成については、実施の形態１と同一の符号を付し、説明を省略する。
【００４４】
第１のメモリ１４および第２のメモリ１５は、キューごとに領域を分割して利用する。分割せずに、キュー毎に個別にメモリを持って管理してもよい。図５に実施の形態２の第１のメモリ１４と第２のメモリ１５の構成を示す。図５に示すように、例えば、第１のメモリ１４では、アドレスＦ０からＦａまでをキュー＃０に割り当て、アドレスＦａ＋１からＦｂまでをキュー＃１に割り当てている。
【００４５】
第２のメモリ１５に関しても、同様にアドレスの領域をそれぞれのキュー毎に割り当てる。図５に示すように、例えば、キュー＃０に対しては、０からｘまでのアドレスを、キュー＃１に対するアドレスは、（ｘ＋１）からｙまでを割り当てる。キュー＃０の場合には、実施の形態１と同様にして書き込むべきフレームＩＤとアドレスを求めるが、キュー＃１以降では、積算値ＳＡをｎバイトで割った商から、書き込みアドレスを求めるとキュー＃０のアドレスと書き込み位置が重複してしまう。このため、キュー＃１以降では、実施の形態１で求めた書き込むべきアドレスの数値にそのキューに割り当てられているアドレスの最小値（キュー＃１の場合には（ｘ＋１））を足したアドレスに書き込む。例えば、キュー＃１の場合には、実施の形態１と同様に求めた書き込むべきアドレスがＢ１であるとき、（Ｂ１＋（ｘ＋１））のアドレスに書き込むようにする。
【００４６】
なお、第１のメモリ、第２のメモリともに、アドレスは最大値と最小値の範囲で巡回するリングバッファとする。フレーム長情報バッファ１３についても、同様にキュー毎に領域を分割して使用する。
【００４７】
以下、実施の形態２の動作について実施の形態１と異なる部分について説明する。フレーム受信制御部１２では、キュー毎にフレームバッファ１０の積算値ＳＡの管理や、ライトアドレスの管理等を実施し、入力データを受信すると、キュー毎に設定された廃棄閾値を元に、個別に廃棄制御を行う。
【００４８】
フレームバッファアクセス制御部１１では、フレームライト完了時に、キュー情報（どのキューのデータであるかの識別情報）も同時にフレーム情報格納部１６に通知し、フレーム情報格納部１６は、キュー毎に、対応した積算値ＳＡ、フレームＩＤを更新する。
【００４９】
次に、ある閾値Ｌ以下におけるフレーム単位の最大出力可能量を計算する手順について説明する。まず、メモリバッファ１０の現蓄積量ＴＳＡを、キュー毎に実施の形態１と同様の手順で算出する。次に、比較判定部１８では、優先度の高いキューから順に閾値Ｌと現蓄積量ＴＳＡの比較を実施する。閾値Ｌがその現蓄積量ＴＳＡより大きければ現蓄積量ＴＳＡを最大出力可能量とし、次の優先度のキューの比較を実施し、以下、同様の処理を行う。現蓄積量ＴＳＡ≧閾値Ｌとなったキューに対しては、実施の形態１の図３で示した比較判定手順のステップＳ１２０〜Ｓ２２０を実施して、それぞれ最大出力可能量を算出する。以上のように全てのキューについて最大出力可能量の算出を実施する。
【００５０】
最大出力可能量や最大出力可能フレーム数を算出するためにライトの情報とリードの情報の引き算を行う際は、キュー毎にリングバッファのアドレスとなっていることを考慮して計算する。また、第２のメモリ１５のアドレスについて、それぞれのキューへ割り当てられている積算量をｎで割った数値の２倍のアドレスを割り当てておくことにより、巡回制御を簡略化できる。第１のメモリのフレームＩＤについても同様に、キューごとに割り当てられている積算量から最大の蓄積フレーム量を算出して、その２倍以上のアドレスをそれぞれのキューに割り当てておくことで、巡回制御を簡略化できる。なお、倍のアドレスを割り当てられない場合に、一周した場合に識別フラグをつけることによって、巡回制御を行ってもよい。
【００５１】
以上のように、キュー毎に最大出力可能量の算出を行う可変長フレームバッファ装置によって、複数キューが必要な場合についても、フレーム区切れ目検索による蓄積量計算を効率的に実現することが可能である。
【産業上の利用可能性】
【００５２】
以上のように、本発明にかかる可変長フレームバッファ装置は、可変長フレームの送受信に使用する通信システムに有用であり、特に、ＧＥ−ＰＯＮシステムのように、出力先に出力可能データ量の送信が必要な通信システムに適している。
【図面の簡単な説明】
【００５３】
【図１】本発明の実施の形態１における可変長フレームバッファ装置の概略構成を示すブロック図である。
【図２】本発明の実施の形態１で使用するメモリの構成を示す図である。
【図３】本発明の実施の形態１における可変長フレームバッファ装置の、閾値以下で最大となるフレーム単位の蓄積量を算出するフローチャートである。
【図４】本発明の実施の形態２における可変長フレームバッファ装置の概略構成を示すブロック図である。
【図５】本発明の実施の形態２で使用するメモリの構成を示す図である。
【符号の説明】
【００５４】
１０  フレームバッファ
１１  フレームバッファアクセス制御部
１２  フレーム受信制御部
１３  フレーム長情報バッファ
１４  第１のメモリ
１５  第２のメモリ
１６  フレーム情報格納部
１７  ポインタ管理部
１８  比較判定部
１９  蓄積量演算部
２０  フレーム出力制御部
【図１】
0004749237.tif 000002
【図２】
0004749237.tif 000003
【図３】
0004749237.tif 000004
【図４】
0004749237.tif 000005
【図５】
0004749237.tif 000006