(57)【要約】  【課題】  ＦＩＦＯバッファのバッファアンダーランやオーバーフローの発生を防止する。  【解決手段】  ＦＩＦＯバッファから後段へのデータ転送の開始タイミングを決める閾値を可変にして、バッファアンダーランが発生すると閾値を大きくする。また、パケットのデータ入力が完了したときに、この入力されたデータ量が閾値よりも大きいときはその閾値を小さくする。【選択図】  図１
2006311320.tif 000002
【特許請求の範囲】
【請求項１】
入力するデータをＦＩＦＯバッファに蓄積し、該蓄積したデータの量が閾値に達すると該データの後段への送出を開始するパケット転送方法において、１つのパケットの全データの入力を完了する前に前記ＦＩＦＯバッファに蓄積されたデータが空になると前記閾値を所定値だけ大きくすることを特徴とするパケット転送方法。
【請求項２】
入力するデータをＦＩＦＯバッファに蓄積し、該蓄積したデータの量が閾値に達すると該データの後段への送出を開始するパケット転送方法において、前記ＦＩＦＯバッファへの１つのパケットの全データの入力が完了したとき、蓄積データ量が前記閾値より大きいときは、前記閾値を所定値だけ小さくすることを特徴とするパケット転送方法。
【請求項３】
ＦＩＦＯバッファと、該ＦＩＦＯバッファ内に蓄積されたデータ量を計測する蓄積データ量計測部と、閾値設定部と、該閾値設定部で設定された閾値と前記蓄積データ量計測部で計測されたデータ量とを比較する比較部とを具備し、該比較部において前記蓄積データ量が前記閾値に達したとき前記ＦＩＦＯバッファ内のデータの後段への送出を開始するパケット転送装置であって、前記閾値設定部は、前記ＦＩＦＯバッファへの１つのパケットの全データの入力が未完了で且つ前記蓄積データ量計測部で計測されたデータ量が空になったとき、閾値を所定値だけ大きくすることを特徴とするパケット転送装置。
【請求項４】
ＦＩＦＯバッファと、該ＦＩＦＯバッファ内に蓄積されたデータ量を計測する蓄積データ量計測部と、閾値設定部と、該閾値設定部で設定された閾値と前記蓄積データ量計測部に蓄積されたデータ量とを比較する比較部とを具備し、該比較部において前記蓄積データ量が前記閾値に達したとき前記ＦＩＦＯバッファ内のデータの後段への送出を開始するパケット転送装置であって、前記閾値設定部は、前記ＦＩＦＯバッファへの１つのパケットの全データの入力が完了し且つ前記蓄積データ量が前記閾値より大きいとき、設定閾値を所定値だけ小さくすることを特徴とするパケット転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリアルパケット転送において、パケットを先入れ先出し式のメモリとしてのＦＩＦＯバッファに入力しそこから後段に転送する際に、バッファアンダーランやオーバーフローが起こらないような対策を施したパケット転送方法および装置に関するものである。
【背景技術】
【０００２】
シリアルパケット転送において、パケットを後段に転送するとき、ＦＩＦＯバッファに１パケット分のデータが全部蓄積されるのを待つことなく、データの入力が継続している途中の段階でそのパケットの転送時期を見極め、タイミング良く転送することによって、データ入力から転送までの遅延時間を短くすることが行われている。
【０００３】
図３はこれを説明するための図であり、ＦＩＦＯバッファ１には固定の閾値ＴＨが設定されている。そして、そのＦＩＦＯバッファ１に入力するデータが内部に書き込まれ、書き込み順に読み出されたデータが後段に転送される形態を示している。
【０００４】
図３(b)に示すように、左側から入力して書き込まれたデータは、そのデータ量が閾値ＴＨに到達すると、１パケット分のデータがバッファにたまるのを待つことなく、図３(c)に示すように、読み出して後段に転送される。通常では、図３(d)に示すように、１パケット全部のデータ入力が完了すると、そのデータは全て読み出され転送される。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが、ＦＩＦＯバッファ１への入力データのデータレートが不安定な場合、転送可能時期を見極めるのが難しく、場合によってはバッファアンダーランを引き起こす可能性がある。すなわち、上記のように、ＦＩＦＯバッファ１内に蓄積されたデータ量が閾値に達したら読み出して転送を開始する方式では、ＦＩＦＯバッファ１に入力されるデータのデータレートが遅いと、書込みデータ量がその閾値ＴＨに達してから読み出しを開始すると、その後の全部の入力データの受信が完了する前にＦＩＦＯバッファ１内のデータが全て読み出され、図３(e)に示すように、ＦＩＦＯバッファ１内のデータが空になってしまうバッファアンダーランを引き起こす場合がある。このようなバッファアンダーランが発生すると、パケット単位で扱うべき複数のデータが途中で分離される事態が発生し、最悪の場合は、通信不能の事態を招くことがある。また、逆に後段への転送データの読み出しが遅くてオーバーフローが発生するとデータの一部が消失することが起こる。
【０００６】
本発明の目的は、ＦＩＦＯバッファの閾値を調整可能にして、バッファアンダーランやオーバーフローの発生を防止したパケット転送方法および装置を提供することである。
【課題を解決するための手段】
【０００７】
第１の発明のパケット転送方法は、入力するデータをＦＩＦＯバッファに蓄積し、該蓄積したデータの量が閾値に達すると該データの後段への送出を開始するパケット転送方法において、１つのパケットの全データの入力を完了する前に前記ＦＩＦＯバッファに蓄積されたデータが空になると前記閾値を所定値だけ大きくすることを特徴とする。
【０００８】
第２の発明のパケット転送方法は、入力するデータをＦＩＦＯバッファに蓄積し、該蓄積したデータの量が閾値に達すると該データの後段への送出を開始するパケット転送方法において、前記ＦＩＦＯバッファへの１つのパケットの全データの入力が完了したとき、蓄積データ量が前記閾値より大きいときは、前記閾値を所定値だけ小さくすることを特徴とする。
【０００９】
第３の発明のパケット転送装置は、ＦＩＦＯバッファと、該ＦＩＦＯバッファ内に蓄積されたデータ量を計測する蓄積データ量計測部と、閾値設定部と、該閾値設定部で設定された閾値と前記蓄積データ量計測部で計測されたデータ量とを比較する比較部とを具備し、該比較部において前記蓄積データ量が前記閾値に達したとき前記ＦＩＦＯバッファ内のデータの後段への送出を開始するパケット転送装置であって、前記閾値設定部は、前記ＦＩＦＯバッファへ１つのパケットの全データの入力が未完了で且つ前記蓄積データ量計測部で計測されたデータ量が空になったとき、閾値を所定値だけ大きくすることを特徴とする。
【００１０】
第４の発明のパケット転送装置は、ＦＩＦＯバッファと、該ＦＩＦＯバッファ内に蓄積されたデータ量を計測する蓄積データ量計測部と、閾値設定部と、該閾値設定部で設定された閾値と前記蓄積データ量計測部に蓄積されたデータ量とを比較する比較部とを具備し、該比較部において前記蓄積データ量が前記閾値に達したとき前記ＦＩＦＯバッファ内のデータの後段への送出を開始するパケット転送装置であって、前記閾値設定部は、前記ＦＩＦＯバッファへの１つのパケットの全データの入力が完了し且つ前記蓄積データ量が前記閾値より大きいとき、設定閾値を所定値だけ小さくすることを特徴とする。
【発明の効果】
【００１１】
第１および第３の発明では、ＦＩＦＯバッファからのデータ送出の開始タイミングを決める閾値を可変にして、バッファアンダーランが発生すると閾値を所定値だけ大きくするので、次回からのデータ転送時にバッファアンダーランが発生する可能性を減らすことができる。また、第２および第４の発明では、１パケット全部のデータ入力が完了したときに、この入力されたデータ量が閾値よりも大きいときはその閾値を所定値だけ小さくするので、次回からの後段へのパケット送出タイミングを早めることができ、オーバーフローを未然に防止することができる。
【発明を実施するための最良の形態】
【００１２】
本発明のパケット転送では、ＦＩＦＯバッファ内に所定量のデータが蓄積されたら後段へのパケット転送を開始するための閾値を設定すると共に、バッファアンダーランやオーバーフローが生じる場合にその閾値を変化させる。以下、詳しく説明する。
【実施例１】
【００１３】
図１はＦＩＦＯバッファ１を用いるパケット転送装置の概略構成を示すブロック図である。２はアップダウンカウンタ等により構成される蓄積データ量計測部であり、ＦＩＦＯバッファ１に書き込まれる入力データを所定単位（例えばワード単位）で加算しＦＩＦＯバッファ１から読み出される出力データを所定単位（例えばワード単位）で減算する処理を行い、現在のＦＩＦＯバッファ１内の蓄積データ量を常時計測する。３はＦＩＦＯバッファ１から後段へのデータ転送開始タイミングを決める閾値設定部であり、レジスタにより構成されている。４は比較部であって、蓄積データ計測部２で計測されたデータ量と閾値設定部３に設定された閾値とを比較し、ＦＩＦＯバッファ１の蓄積データ量が閾値に達したとき、ＦＩＦＯバッファ１に対してデータ読み出し開始を指令する。なお、閾値設定部３は、電源投入時には初期値が設定されるが、その後は、ＦＩＦＯバッファ１がアンダーランを引き起こす毎に所定値ずつ閾値を大きくし、ＦＩＦＯバッファ１がオーバーフローを引き起こす恐れのある毎に所定値ずつ閾値を小さくさせる。
【００１４】
次に、このパケット転送装置の動作を図２のフローチャートを参照して説明する。なお、このフローチャートによる処理は図示しないＣＰＵによって行われる。受信したパケットのデータはＦＩＦＯバッファ１内に蓄積され（ステップＳ１）、その蓄積データ量が閾値を超えると比較部４によってそれが検出されて（ステップＳ２）、ＦＩＦＯバッファ１内のデータの読み出しが開始される。なお、ＦＩＦＯバッファ１には引き続きデータが蓄積される（ステップＳ３）。そして、バッファアンダーランも起こらず、パケットの全データ入力完了でもない期間は、ＦＩＦＯバッファ１へのデータ書込みと読み出しを繰り返す（ステップＳ３〜Ｓ６）。この間、ＦＩＦＯバッファ１内のデータ量は書込み速度と読み出し速度の差に応じて増減する。
【００１５】
バッファアンダーランが発生したとき（例えば、パケット終了ではないのに蓄積データ量が０になったとき、あるいはそれによりデータが途切れて後段の回路からＮＡＫが返されたとき等）は、エラー処理（例えば前段へのエラー通知）を行うと共に閾値設定部３の閾値を予め決めた所定値だけ大きくする（ステップＳ７）。これにより、後段への転送の待ち時間が長くなるので、蓄積データ量が多くなり、次回の転送やり直しの際のバッファアンダーランを防止できる。例えば、パーソナルコンピュータにおいて、多くのデバイスを同時に接続したＰＣＩバスからＦＩＦＯバッファ１にパケット転送を行う場合、そのＰＣＩバスが混んでいると、閾値が一定の場合は、その閾値によってはバッファアンダーランが起こり続ける可能性があるが、これを回避することができる。
【００１６】
また、パケットの全データ入力が完了したときに蓄積されているデータ量が閾値よりも大きい場合（ステップＳ８）は、閾値設定部３の閾値を予め決めた値だけ小さくする（ステップＳ９）。これにより、次回からは短い待ち時間で後段へのパケット転送が開始されることになり、オーバーフローの危険性を回避することができる。
【００１７】
なお、以上では蓄積データ量計測部２が入力データ量と出力データ量の差分によりその計測を行うようにしたが、ＦＩＦＯバッファ１の書込みアドレスと読み出しアドレスの差分によりその計測を行うようにしても良い。
【図面の簡単な説明】
【００１８】
【図１】本実施例のパケット転送装置のブロック図である。
【図２】本実施例のパケット転送動作のフローチャートである。
【図３】パケット転送の説明図である。
【符号の説明】
【００１９】
１：ＦＩＦＯバッファ
２：蓄積データ量計測部
３：閾値設定部
４：比較部
【図１】
2006311320.tif 000003
【図２】
2006311320.tif 000004
【図３】
2006311320.tif 000005