(57)【要約】  【課題】  複数の通信チャンネルのＦＩＦＯメモリを常に効率よく利用し得るデータ転送装置を提供する。  【解決手段】  データ転送装置(1)は、ＦＩＦＯバッファメモリ(10)、書き込みアクセス部(20)、および読み出しアクセス部(30)を備える。ＦＩＦＯバッファメモリは、複数の通信チャンネルの各々に対応するＦＩＦＯメモリ(11)を有しており、各通信チャンネルには、ＦＩＦＯメモリとして、複数のメモリブロック(12)が割り当てられている。書き込みアクセス部は、各通信チャンネルの所定時間当たりの書き込み回数を記憶する履歴レジスタ(23)を有し、書き込み回数が第１の基準値を超える通信チャンネルと、書き込み回数が第１の基準値よりも小さい第２の基準値に満たない通信チャンネルが生じると、後者に割り当てていたメモリブロックの一部を前者に割り当て直して、ＦＩＦＯメモリのサイズを変更する。【選択図】      図１
2005235046.tif 000002
【特許請求の範囲】
【請求項１】
データの送信元と送信先との間に介在して、送信元からのデータを送信先に転送するデータ転送装置であって、それぞれに複数のメモリブロックを割り当てた複数の通信チャンネルを有し、送信元からのデータをその送信元に対応する通信チャンネルに割り当てているメモリブロックに記憶するとともに、同一の通信チャンネルに割り当てているメモリブロックに記憶したデータを、早く記憶したものから順に送信先に転送するものにおいて、
各通信チャンネルの所定時間当たりの使用頻度を監視して、使用頻度の低い通信チャンネルのメモリブロックの一部を、使用頻度の高い通信チャンネルに割り当て直すことを特徴とするデータ転送装置。
【請求項２】
通信チャンネルの所定時間当たりの使用頻度に関して第１の基準値と、第１の基準値よりも低い第２の基準値とを定めておき、使用頻度が第１の基準値よりも高い通信チャンネルと、使用頻度が第２の基準値よりも低い通信チャンネルとが同時に生じたときに、使用頻度が第２の基準値よりも低い通信チャンネルに割り当てているメモリブロックの一部を、使用頻度が第１の基準値よりも高い通信チャンネルに割り当て直すことを特徴とする請求項１に記載のデータ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、先入れ先出しメモリを備えるデータ転送装置に関し、特に、メモリの利用効率の向上に関する。
【背景技術】
【０００２】
データの転送元と転送先の間に介在して、送信元からのデータを送信先に転送するデータ転送装置は、データを一時的に記憶するためにメモリを備えるが、データを記憶した順に読み出す先入れ先出し（ＦＩＦＯ：first-in first-out）制御を行うのが一般的である。また、多くのデータ転送装置には、複数の送信元からのデータを転送し得るようにするために、複数の通信チャンネルが設けられており、各通信チャンネルにＦＩＦＯメモリが割り当てられている。
【０００３】
データ転送装置に送信されてくるデータの量や速度は送信元によって異なり、したがって、各通信チャンネルの使用頻度は一定ではなく、また、各通信チャンネルに割り当てたメモリの利用率も一定ではない。当然、メモリの記憶容量を超える大量のデータを一時に記憶することはできない。データ転送のパフォーマンスを高めるためには、これらの点を考慮してメモリの利用効率の向上を図る必要があり、そのために、メモリの記憶容量を可変とすることが提案されている。
【０００４】
例えば、特開平４―３４２３３９号公報では、ＦＩＦＯメモリの上限アドレスと下限アドレスを設定できるようにして、通信チャンネルごとにＦＩＦＯメモリの記憶容量を定めるようにしている。また、特開平１１−１７５３１２号公報では、ＦＩＦＯメモリを４つのブロックに分割し、データの量に応じて、ブロック間の境界を変化させるようにしている。
【特許文献１】特開平４―３４２３３９号公報
【特許文献２】特開平１１−１７５３１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが、特開平４―３４２３３９号公報の技術では、ＦＩＦＯメモリの開始アドレスと終了アドレスをレジスタにて設定するため、各通信チャンネルの速度等を考慮して、あらかじめソフトウェアによってＦＩＦＯメモリの記憶容量を決定しておく必要がある。したがって、データ転送装置の動作中に各通信チャンネルの記憶容量を変化させるには不向きであり、各通信チャンネルの使用頻度が時間の経過によって変動する場合には、実際に使用する記憶容量があらかじめ定めておいた記憶容量から大きく相違して、使用されない記憶容量が多くなるという問題がある。
【０００６】
一方、特開平１１−１７５３１２号公報の技術では、データ転送装置の動作中に各通信チャンネルの記憶容量を変化させることが可能であり、各通信チャンネルの使用頻度が時間によって変動する場合でも、使用されない記憶容量を少なくすることが可能である。しかしながら、この技術は、例えばＩＥＥＥ１３９４のようにパケットのヘッダにデータサイズを記したデータを対象とし、ヘッダに記されているデータサイズを参照してブロック間の境界を変化させるようにしているため、パケットのヘッダにデータサイズが記されていないデータを転送する場合には、各通信チャンネルの記憶容量を変化させるか否かの判断基準がなくなって、各通信チャンネルの記憶容量を適切に設定することができなくなる。
【０００７】
本発明は、このような問題点に鑑みてなされたもので、複数の通信チャンネルに割り当てたＦＩＦＯメモリを常に効率よく利用し得るデータ転送装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明では、データの送信元と送信先との間に介在して、送信元からのデータを送信先に転送するデータ転送装置であって、それぞれに複数のメモリブロックを割り当てた複数の通信チャンネルを有し、送信元からのデータをその送信元に対応する通信チャンネルに割り当てているメモリブロックに記憶するとともに、同一の通信チャンネルに割り当てているメモリブロックに記憶したデータを、早く記憶したものから順に送信先に転送するものにおいて、各通信チャンネルの所定時間当たりの使用頻度を監視して、使用頻度の低い通信チャンネルのメモリブロックの一部を、使用頻度の高い通信チャンネルに割り当て直すものとする。
【０００９】
このデータ転送装置は、複数の通信チャンネルのそれぞれに複数のＦＩＦＯメモリブロックを割り当てておくが、動作中に、各通信チャンネルの所定時間当たりの使用頻度を監視し、監視結果に応じて、通信チャンネルへのメモリブロックの割り当てを変え、使用頻度の高い通信チャンネルのメモリブロックを多くし、使用頻度の低い通信チャンネルのメモリブロックを少なくする。したがって、メモリの利用効率が高い。しかも、データサイズに基づいてメモリブロックの割り当てを変えるのではなく、通信チャンネルの実際の使用頻度に基づいてメモリブロックの割り当てを変えるため、パケットのヘッダにデータサイズが記してないデータを転送する際にも確実にメモリの利用効率を高めることが可能であり、また、常にメモリの利用効率を高めることができる。
【００１０】
ここで、通信チャンネルの所定時間当たりの使用頻度に関して第１の基準値と、第１の基準値よりも低い第２の基準値とを定めておき、使用頻度が第１の基準値よりも高い通信チャンネルと、使用頻度が第２の基準値よりも低い通信チャンネルとが同時に生じたときに、使用頻度が第２の基準値よりも低い通信チャンネルに割り当てているメモリブロックの一部を、使用頻度が第１の基準値よりも高い通信チャンネルに割り当て直すようにするとよい。
【００１１】
このようにすると、使用頻度の高い通信チャンネルであっても、ある程度（第１の基準値）まで使用されていないものであれば、これに不必要なほど多くのメモリブロックを割り当てる無駄がなくなる。また、使用頻度の低い通信チャンネルであっても、ある程度（第２の基準値）以上使用されているものであれば、その使用実績に応じた記憶容量が確保されるため、その通信チャンネルでの転送効率が低下することがない。
【発明の効果】
【００１２】
本発明のデータ転送装置によれば、通信チャンネルへのＦＩＦＯメモリブロックの割り当てを動的に変えることができるため、メモリの利用効率が向上して、パフォーマンスが向上する。しかも、メモリブロックの割り当てを通信チャンネルの実際の使用頻度に基づいて変えるため、転送するデータの種類や時間に依存することなく、メモリの利用効率を高めて、高いパフォーマンスを得ることができる。
【００１３】
特に、第１、第２の基準値を設けて、使用頻度が第１の基準値よりも高い通信チャンネルと、使用頻度が第２の基準値よりも低い通信チャンネルとが同時に生じたときに、メモリブロックを割り当て直すようにすると、使用頻度の高い通信チャンネルに不必要なほど多くのメモリブロックを割り当てることがなくなる上、使用頻度の低い通信チャンネルに必要なメモリブロックが確保されて、確実にパフォーマンスを高くすることができる。
【発明を実施するための最良の形態】
【００１４】
本発明の一実施形態のデータ転送装置１の構成を図１に模式的に示す。データ転送装置１は、ＦＩＦＯバッファメモリ１０、書き込みアクセス部２０、および、読み出しアクセス部３０より成る。データ転送装置１には、複数の通信チャンネルが設けられており、複数の送信元からのデータを複数の転送先に転送することができる。
【００１５】
ＦＩＦＯバッファメモリ１０は、転送するデータを記憶するもので、複数のメモリブロック１２を有し、複数の通信チャンネルのそれぞれに、ＦＩＦＯメモリ１１として複数のメモリブロック１２を割り当てている。通信チャンネルへのメモリブロック１２の割り当ては可変である。
【００１６】
書き込みアクセス部２０は、送信元からのデータをＦＩＦＯバッファメモリ１０に書き込むもので、書き込みカウンタ２１、ブロック管理メモリ２２、および、書き込み履歴レジスタ２３を有する。書き込みカウンタ２１は、各通信チャンネルのＦＩＦＯメモリ１１における次にデータを書き込むべき位置（深さ）を示す値を記憶する。書き込み履歴レジスタ２３は、各通信チャンネルのＦＩＦＯメモリ１１にデータが書き込まれた回数を記憶する。
【００１７】
ブロック管理メモリ２２は、全てのメモリブロック１２の先頭アドレスと末尾アドレスを記憶しており、また、各通信チャンネルへのメモリブロック１２の割り当てと、通信チャンネルごとのメモリブロック１２の論理的順序を記憶している。ブロック管理メモリ２２の記憶内容を変更することで、各通信チャンネルに対するメモリブロック１２の割り当てが論理的に変わり、各通信チャンネルのＦＩＦＯメモリ１１のメモリサイズを変更することができる。
【００１８】
読み出しアクセス部３０は、ＦＩＦＯバッファメモリ１０からデータを読み出すもので、読み出しカウンタ３１を有する。読み出しカウンタ３１は、各通信チャンネルのＦＩＦＯメモリ１１における次にデータを読み出すべき位置（深さ）を示す値を記憶する。
【００１９】
データ転送装置１の基本的な動作は、次のとおりである。データの送信元からデータの書き込み要求を受信すると、書き込みアクセス部２０が、どの通信チャンネルに対する要求であるかを判別し、書き込みカウンタ２１とブロック管理メモリ２２のその通信チャンネルに関する記憶内容を参照して、その通信チャンネルのＦＩＦＯメモリ１１にデータを書き込む。
【００２０】
また、データの送信先からデータの読み出し要求を受信すると、読み出しアクセス部３０が、どの通信チャンネルに対する要求であるかを判別し、読み出しカウンタ３１とブロック管理メモリ２２のその通信チャンネルに関する記憶内容を参照して、その通信チャンネルのＦＩＦＯメモリ１１からデータを読み出す。なお、データ転送装置１は、送信元および送信先に対して、それらが使用し得る通信チャンネルをあらかじめ知らせておく。
【００２１】
データ転送装置１は以下の特徴を有する。書き込みアクセス部２０は、ＦＩＦＯメモリ１１にデータを書き込むごとに、書き込み履歴レジスタ２３が記憶している書き込み回数（書き込みを行った通信チャンネルのもの）に１を加えるとともに、所定時間ごとに、書き込み履歴レジスタ２３が記憶している全すべての通信チャンネルの書き込み回数をクリアする。これで、所定時間当たりの各通信チャンネルの使用頻度が書き込み履歴レジスタ２３に記憶される。
【００２２】
書き込みアクセス部２０は、また、ＦＩＦＯメモリ１１にデータを書き込むごとに、書き込み履歴レジスタ２３を参照して、書き込みを行った通信チャンネルの書き込み回数が第１の基準値を超えたか否かを判定し、その書き込み回数が第１の基準値を超えていれば、書き込み回数が第１の基準値よりも小さい第２の基準値に満たない通信チャンネルが存在するか否かを調べる。そして、書き込み回数が第２の基準値に満たない通信チャンネルが存在すれば、書き込み回数が第１の基準値を超えた通信チャンネルと第２の基準値に満たない通信チャンネルのＦＩＦＯメモリ１１のサイズを変更する。
【００２３】
具体的には、書き込み回数が第２の基準値に満たなかった通信チャンネル（例えばチャンネル２）に割り当てているメモリブロック１２を、書き込み回数が第１の基準値を超えた通信チャンネル（例えばチャンネル１）に割り当てる。このとき、第２の基準値に満たなかった通信チャンネル１２の最後のメモリブロック１２（上記の例ではブロックＦ）が、第１の基準値を超えた通信チャンネルのＦＩＦＯメモリ１１の最後のメモリブロック１２（上記の例ではブロックＣ）に接続するようにする。
【００２４】
これで、使用頻度の高い通信チャンネルには、多くのメモリブロック１２が割り当てられることになり、その通信チャンネルのＦＩＦＯメモリ１１のサイズが増大する。また、使用頻度の低い通信チャンネルには、少ないメモリブロック１２が割り当てられることになり、その通信チャンネルのＦＩＦＯメモリ１１のサイズが減少する。
【００２５】
書き込みアクセス部２０は、メモリサイズを変更する前に、読み出しアクセス部３０の読み出しカウンタ３１の値を調べて、書き込み回数が第２の基準値に満たない通信チャンネルのＦＩＦＯメモリ１１を構成する全てのメモリブロック１２が空であるか否かを判定し、全てのメモリブロック１２が空であるときに限り、メモリサイズの変更を行う。これは、ＦＩＦＯメモリ１１に残っているデータが失われるのを防止するためである。
【００２６】
メモリサイズを変更した後、書き込みアクセス部２０は、書き込み回数が第２の基準値に満たなかった通信チャンネルについての書き込みカウンタ２１が示す値を、その通信チャンネルのＦＩＦＯメモリ１１の先頭（上記の例ではブロックＤの先頭）を示すように更新する。同様に、読み出しアクセス部３０の読み出しカウンタ３１についても、書き込み回数が第２の基準値に満たなかった通信チャンネルについての値を、ＦＩＦＯメモリ１１の先頭を示すように更新する。
【００２７】
書き込みアクセス部２０は、さらに、割り当てを変更したメモリブロック１２（上記の例ではブロックＦ）に対するその後の書き込み要求を、書き込み回数が第２の基準値に満たなかった通信チャンネルへの書き込み要求ではなく、書き込み回数が第１の基準値を超えていた通信チャンネルへ書き込み要求として取り扱う。
【００２８】
ＦＩＦＯメモリ１１のサイズの変更を、メモリブロック１２を１単位として、複数単位をまとめて一度に行うようにしてもよい。データサイズが一定であるパケットデータの場合、１つのパケットデータを記憶するために必要なＦＩＦＯメモリ１１の記憶容量は一定であるから、その一定量に相当する数のメモリブロック１２を、一度に割り当て直すのが好ましい。
【００２９】
また、ＦＩＦＯメモリ１１を構成するメモリブロック１２の数が減少して所定数になったら、そのＦＩＦＯメモリ１１のメモリブロック１２を減らさないようにして、各通信チャンネルのＦＩＦＯメモリ１１に最低限の記憶容量を確保するのが好ましい。これで、１つの通信チャンネルの使用頻度が長時間にわたって非常に高くなったときでも、確実に他の通信チャンネルを利用することができる。
【００３０】
所定時間当たりの書き込み回数のみに基づいてＦＩＦＯメモリ１１のサイズを変更すると、頻繁にサイズ変更を行うという事態も生じ得る。これを防止するために、ＦＩＦＯメモリ１１のサイズの増減に応じて、第１の基準値と第２の基準値を変えるようにしてもよい。例えば、サイズ増大の基準となる第１の基準値については、１回目のサイズ変更よりも２回目以降のサイズ変更で大きくし、サイズ減少の基準となる第２の基準値については、１回目のサイズ変更よりも２回目以降のサイズ変更で小さくするようにする。
【００３１】
また、同様の目的で、ＦＩＦＯメモリ１１のサイズの増減に応じて、各通信チャンネルの書き込み回数を求める所定時間を変えるようにしてもよい。例えば、所定時間をｔ１として書き込み回数を求めてサイズ変更を行った後は、所定時間をｔ１よりも長いｔ２として書き込み回数を求めるようにする。さらに、所定時間をｔ２とした後、サイズ変更を行わない状態がある程度の時間継続した場合は、所定時間をｔ１に戻すようにしてもよい。
【００３２】
データ転送装置１の書き込み時の処理の流れの概略を図２に示す。データの送信元からの書き込み要求が発生すると（ステップ＃５）、書き込みアクセス部２０は、その書き込み要求がどの通信チャンネルに対するものであるかを判別する（＃１０）。そして、その通信チャンネルのＦＩＦＯメモリ１１に空きがあるか否かを判定し（＃１５）、空きがなければ、読み出しアクセス部３０によってそのＦＩＦＯメモリ１１からデータが読み出されて、空きが生じるのを待つ。
【００３３】
ＦＩＦＯメモリ１１に空きがあれば、書き込み準備が完了していることを示す書き込みＲＤＹ信号を送信元に返送し（＃２０）、送信元が送信するデータを受信して（＃２５）、ＦＩＦＯメモリ１１に書き込む（＃３０）。次いで、書き込みを行った通信チャンネルについての書き込み履歴レジスタ２３の値を１だけ増し（＃３５）、第１の基準値と第２の基準値を用いて、ＦＩＦＯメモリ１１のサイズ変更条件が満たされているか否かを判定する（＃４０）。サイズ変更の条件が満たされていなければステップ＃５に戻る。
【００３４】
サイズ変更の条件が満たされていれば、サイズを減少させるＦＩＦＯメモリ１１の全てのメモリブロック１２が空であるか否かを判定する（＃４５）。そして、いずれかのメモリブロック１２にデータが残っていれば、それが読み出されて全てのメモリブロック１２が空になるのを待つ。
【００３５】
全てのメモリブロック１２が空であれば、ＦＩＦＯメモリ１１のサイズを変更する（＃５０）。そして、サイズを減少させた通信チャンネルに対する書き込み位置を示す書き込みカウンタ２１の値を更新し（＃５５）、同様に、サイズを減少させた通信チャンネルに対する読み出し位置を示す読み出しカウンタ３１の値を更新する（＃６０）。さらに、割り当てを変更したメモリブロック１２に対する書き込み制御信号を、そのメモリブロック１２を割り当てていた通信チャンネルに対するものから新たに割り当てた通信チャンネルのものへと切り替える（＃６５）。
【００３６】
上記のデータ転送装置１は、通信チャンネルの実際の使用状況に応じて各通信チャンネルのＦＩＦＯメモリ１１のサイズを変更するものであるから、送信元から送信先へのデータの送信量が時間によって変動する場合でも、常に、使用されない記憶容量を低減することができて、高い転送効率を実現することができる。また、各通信チャンネルのＦＩＦＯメモリ１１のサイズを変更するためにデータサイズを知る必要がなく、パケットのヘッダにデータサイズが記されていないデータにも対応することが可能である。
【図面の簡単な説明】
【００３７】
【図１】本発明の一実施形態のデータ転送装置の構成を模式的に示すブロック図。
【図２】上記データ転送装置の書き込み時の処理の流れの概略を示すフローチャート。
【符号の説明】
【００３８】
１    データ転送装置
１０    ＦＩＦＯバッファメモリ
１１    ＦＩＦＯメモリ
１２    メモリブロック
２０    書き込みアクセス部
２１    書き込みカウンタ
２２    ブロック管理メモリ
２３    書き込み履歴レジスタ
３０    読み出しアクセス部
３１    読み出しカウンタ
【図１】
2005235046.tif 000003
【図２】
2005235046.tif 000004