(57)【要約】【課題】チェーン方式によるバッファメモリ装置及びその空き領域管理方法に関し、バッファメモリの空き領域の管理を少ないメモリ領域で行い、また、バッファメモリのオーバーフローを簡易に判定可能にする。【解決手段】バッファメモリの空き領域を管理する空き領域チェーンメモリ１−１にアドレス＃Ｎが空き領域の先頭として格納されている空き領域チェーンに対して、新たにアドレス＃Ｘの空き領域が生じた場合、該空き領域チェーンの先頭＃Ｎの前部に、新たに生じた空き領域のアドレス＃Ｘを追加する。このように、新たに生じた空き領域を空き領域チェーンの先頭に追加して管理することにより、空き領域チェーンのテールポインタは常に初期値のままである。バッファメモリのオーバーフロー時には、空き領域ヘッドポインタメモリ１−２の値が「空き領域の最後のアドレス＃Ｚ＋１」となり、容易にオーバーフローを検出することができる。【選択図】      図２
2004280333.tif 000002
【特許請求の範囲】
【請求項１】
可変長のデータを空き領域に格納するバッファメモリと、
該バッファメモリの空き領域のアドレスを連結する空き領域チェーンを生成する手段と、
該空き領域チェーンを記憶する空き領域チェーンメモリと、
該空き領域チェーンの先頭アドレスを格納する空き領域ヘッドポインタメモリとを備え、
前記バッファメモリにデータを格納するときに、前記空き領域ヘッドポインタメモリに格納された空き領域チェーンの先頭アドレスからデータ長に応じた空き領域をデータ格納用に取り出し、かつ、バッファメモリからデータの読み出しによって空き領域が生じたときに、前記空き領域チェーンの先頭の前部に該空き領域を追加して空き領域チェーンを生成する手段と、
を備えたことを特徴とするバッファメモリ装置。
【請求項２】
可変長のデータを空き領域に格納するバッファメモリの空き領域を示すアドレスを連結する空き領域チェーンを生成するステップと、
該空き領域チェーンの先頭アドレスを空き領域ヘッドポインタメモリに格納するステップと、
前記バッファメモリにデータを格納するときに、前記空き領域ヘッドポインタメモリに格納された空き領域チェーンの先頭アドレスからデータ長に応じた空き領域をデータ格納用に取り出し、かつ、バッファメモリからデータの読み出しによって空き領域が生じたときに、前記空き領域チェーンの先頭の前部に該空き領域を追加して空き領域チェーンを生成するステップと、
を有することを特徴とするバッファメモリの空き領域管理方法。
【請求項３】
前記空き領域チェーンを生成する初期のステップにおいて、該領域チェーンを記憶保持する空き領域チェーンメモリの各アドレスのデータ領域に、自アドレスに所定の値を加えた値を格納するステップを有し、
前記バッファメモリの空き領域にデータを格納する過程において、前記空き領域ヘッドポインタメモリに、空き領域の最後のアドレス値を越える値が格納されたことの検出により、バッファメモリのオーバーフロー状態を判定するステップを有することを特徴とする請求項２に記載のバッファメモリの空き領域管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、バッファメモリ装置及びその空き領域管理方法に関し、特に、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ）パケット等のデータフレームを一旦バッファメモリに蓄積して転送制御する際に使用するチェーン方式によるバッファメモリ装置及びその空き領域管理方法に関する。
【０００２】
近年、インターネット網に流れる転送データ量は益々増加し、特に、インターネットサービスプロバイダからユーザへ提供されるストリーミングデータや動画像データ等のように、急激にかつ多量に可変長のデータフレームが配信されるサービスに対して、それらのデータフレームをバッファメモリに効率よく格納しないと、バッファメモリが直ぐ満杯状態となってしまう。本発明は、そのような転送データをバッファメモリに蓄積するためのチェーン方式によるバッファメモリ装置及びその空き領域管理方法に関する。
【０００３】
【従来の技術】
ＩＰパケット等のデータフレームの転送制御を行う際、インターネットサービスプロバイダ又はユーザから、バースト的に転送データが入力されるため、該転送データをバッファメモリに格納してフレーム単位にデータ転送制御を行う場合に、転送データをバッファメモリに格納し、その格納領域を、格納領域のアドレスポインタをチェーンで繋いで管理する方式が有効である。
【０００４】
そこで、転送データを格納するバッファメモリとは別に、該バッファメモリにおけるデータ格納領域のポインタを連結するチェーンを記憶するメモリ領域と、転送データを格納するバッファメモリの空き領域のポインタを管理するためのメモリ領域とを確保して、それらのメモリ領域に記憶されたバッファメモリのデータ格納領域及び空き領域の情報を基に、バッファメモリの読み出し及び書き込みを管理し、効率よくバッファメモリへのデータ格納を行っている。
【０００５】
データを格納するバッファメモリの空き領域の管理は、空き領域の先頭ポインタを表すヘッドポインタと、空き領域の後尾のポインタを表すテールポインタとを記憶し、空き領域のポインタをチェーンにより連結し、空き領域が発生する度に、テールポインタの後ろに新しい空き領域のポインタを追加して空き領域のチェーンを構成する。
【０００６】
本発明に関連する先行技術として、下記の特許文献１に記載された「メモリ、メモリ管理方法およびメモリ管理回路」等がある。特許文献１に記載のメモリは、管理領域とデータ領域とを具え、該管理領域に、メモリ全体の管理情報として、データ領域へのフレーズの記録件数、データ領域の空き領域残りブロック数、空き領域先頭アドレスおよび空き領域最終アドレスをそれぞれ格納するための全体管理領域と、データ領域に格納されたフレーズ毎の個別の管理情報として、当該フレーズの記録時間、データ先頭アドレスおよびデータ最終アドレスをそれぞれ格納するための個別管理領域とを具え、データ領域の各ブロックには、当該ブロックの次にアクセスすべきブロックのアドレスがチェーンアドレスとして格納されてなることを特徴とするものである。
【０００７】
【特許文献１】
特開平８−３２０８２２号公報
【０００８】
【発明が解決しようとする課題】
転送データを格納するバッファメモリを効率よく使用するため、バッファメモリの読み出し及び書き込みの管理をチェーン方式により行うが、そのためには、転送データを格納するバッファメモリとは別に、データ格納領域管理用のポインタチェーンのメモリ領域、及びバッファメモリの空き領域管理用（空き領域のヘッド／テールポインタの格納用）のメモリ領域を別途確保しなければならず、メモリ容量が増大してしまう。
【０００９】
また、転送データを格納するバッファメモリのオーバーフローを管理するために、オーバーフロー監視回路を備える必要があり、回路規模が増大するといった問題があった。本発明は、バッファメモリの空き領域の管理を、少ないメモリ領域で行い、また、バッファメモリのオーバーフローを簡易に管理することができるバッファメモリ装置及びその空き領域管理方法を提供することを目的とする。
【００１０】
【課題を解決するための手段】
本発明のバッファメモリ装置は、（１）可変長のデータを空き領域に格納するバッファメモリと、該バッファメモリの空き領域のアドレスを連結する空き領域チェーンを生成する手段と、該空き領域チェーンを記憶する空き領域チェーンメモリと、該空き領域チェーンの先頭アドレスを格納する空き領域ヘッドポインタメモリとを備え、前記バッファメモリにデータを格納するときに、前記空き領域ヘッドポインタメモリに格納された空き領域チェーンの先頭アドレスからデータ長に応じた空き領域をデータ格納用に取り出し、かつ、バッファメモリからデータの読み出しによって空き領域が生じたときに、前記空き領域チェーンの先頭の前部に該空き領域を追加して空き領域チェーンを生成する手段と、を備えたものである。
【００１１】
また、本発明のバッファメモリの空き領域管理方法は、（２）可変長のデータを空き領域に格納するバッファメモリの空き領域を示すアドレスを連結する空き領域チェーンを生成するステップと、該空き領域チェーンの先頭アドレスを空き領域ヘッドポインタメモリに格納するステップと、前記バッファメモリにデータを格納するときに、前記空き領域ヘッドポインタメモリに格納された空き領域チェーンの先頭アドレスからデータ長に応じた空き領域をデータ格納用に取り出し、かつ、バッファメモリからデータの読み出しによって空き領域が生じたときに、前記空き領域チェーンの先頭の前部に該空き領域を追加して空き領域チェーンを生成するステップと、を有するものである。
【００１２】
また、（３）前記空き領域チェーンを生成する初期のステップにおいて、該領域チェーンを記憶保持する空き領域チェーンメモリの各アドレスのデータ領域に、自アドレスに所定の値を加えた値を格納するステップを有し、前記バッファメモリの空き領域にデータを格納する過程において、前記空き領域ヘッドポインタメモリに、空き領域の最後のアドレス値を越える値が格納されたことの検出により、バッファメモリのオーバーフロー状態を判定するステップを有するものである。
【００１３】
【発明の実施の形態】
図１に本発明による空き領域管理のチェーンの初期構成を示す。バッファメモリの空き領域を管理するための空き領域チェーンを記憶保持する空き領域チェーンメモリ１−１を、バッファメモリとは別に備え、該空き領域チェーンメモリ１−１の各アドレス（＃１，＃２，…，＃Ｚ）のデータ領域に、初期化時に図１に示すように、自アドレスの次の空き領域アドレス（自アドレス＋１）をデータとして書き込むことにより、初期空き領域チェーンを生成する。
【００１４】
なお、ここで、自アドレスの次の空き領域アドレスが、「自アドレス＋１」であるとしているが、自アドレスの次の空き領域アドレスは、これに限らず、自アドレスに所定の値を加えた値となる場合であってもよい。
【００１５】
図１は、Ｚ個の空き領域が存在する場合の例を示し、第１のアドレス＃１のデータ領域に次の第２のアドレス＃２を、第２のアドレス＃２のデータ領域に次のアドレス＃３をそれぞれデータとして書き込み、以下、順に同様に自アドレスの次のアドレスをデータとして書き込み、第Ｚ番目のアドレス＃Ｚのデータ領域に（＃Ｚ＋１）、即ち空き領域の総数Ｚに１を加えた値を書き込み、バッファメモリの空き領域の管理用の空き領域チェーンを生成する。また、空き領域のヘッドポインタメモリ１−２に、空き領域チェーンのヘッドポインタの初期値＃１を格納する。
【００１６】
そして、バッファメモリに可変長の転送データを書き込む際に、空き領域チェーンの先頭から、該転送データのデータ長に応じた空き領域を取り出し、その空き領域に該転送データを格納し、取り出した空き領域の次のアドレスを空き領域チェーンの先頭アドレスとして、空き領域のヘッドポインタメモリ１−２に格納する。
【００１７】
また、バッファメモリから転送データの読み出しによって、バッファメモリに空き領域が生じた場合に、この空き領域チェーンメモリ１−１に対して、図２に示すように、新しく生じた空き領域のポインタを、現在の空き領域チェーンのヘッドポインタの前部に追加する。
【００１８】
図２の例において、現在、同図（ａ）に示すように、第Ｎのアドレス＃Ｎが空き領域の先頭であり、空き領域のヘッドポインタメモリ１−２には、＃Ｎが格納されている。そして、新たにアドレス＃Ｘの空き領域が生じた場合、同図（ｂ）に示すように、空き領域のヘッドポインタメモリ１−２にアドレス＃Ｘを空き領域ヘッドポインタとして格納し、空き領域チェーンの先頭アドレス＃Ｘのデータ領域に、次に続く空き領域のアドレス＃Ｎを書き込む。
【００１９】
上述のように、バッファメモリに転送データを書き込む際に、空き領域チェーンの先頭から空き領域を取り出して書き込み、また、バッファメモリから転送データの読み出しによってバッファメモリに新たに生じた空き領域のアドレスを、空き領域チェーンのテールポインタの後部に追加するのではなく、空き領域チェーンのヘッドポインタの前部に追加していくため、空き領域チェーンのテールポインタは常に初期値＃Ｚのままであり、そのデータ領域には「空き領域の最後のアドレス＃Ｚ＋１」の値が格納されている。
【００２０】
次に、バッファメモリのオーバーフローの監視について説明する。バッファメモリに順次転送データが格納されると、空き領域が次第に減少していき、空き領域の残りが１つとなると、図３（ａ）に示すように、空き領域のヘッドポインタメモリ１−２にはアドレス＃Ｚが格納される。
【００２１】
そして、その最後の１つの空き領域＃Ｚのバッファメモリにデータが格納され、最後の空き領域＃Ｚが使用状態になると、図３（ｂ）に示すように、空き領域のヘッドポインタメモリ１−２には、「空き領域の最後のアドレス＃Ｚ＋１」を示す値が書き込まれ、このとき、バッファメモリはオーバーフロー状態となり、バッファメモリには書き込みを行うことができない状態となる。
【００２２】
従って、バッファメモリに書き込みを行う時、空き領域のヘッドポインタメモリ１−２の内容が「空き領域の最後のアドレス＃Ｚ＋１」となっている場合、バッファメモリがオーバーフロー状態であると見なすことができ、簡単にオーバーフローの監視を行うことが可能となる。
【００２３】
図４に本発明によるバッファメモリ管理の実施例を示す。同図に示す実施例において、２５６Ｍｂｙｔｅのデータが蓄積可能なバッファメモリ４−１を使用するものとし、該バッファメモリ４−１の１つのアドレスに８ｂｙｔｅ（６４ｂｉｔ）のデータが格納され、該バッファメモリ４−１は３２×１０２４×１０２４のアドレスを有するものとする。
【００２４】
該バッファメモリ４−１へのデータの書き込み及び読み出しを管理するための格納データのヘッドポインタ及びテールポインタをそれぞれ格納する格納データヘッドポインタメモリ４−２及び格納データテールポインタメモリ４−３とを備える。
【００２５】
格納データヘッドポインタメモリ４−２及び格納データテールポインタメモリ４−３は、ポート毎に備えられ、ポート毎に転送データの書き込み及び読み出しを管理する。図４は２つのポート（ｐｏｒｔ０，ｐｏｒｔ１）の転送データの書き込み及び読み出しを管理する例を示している。
【００２６】
上記のバッファメモリ４−１に対し、その空き領域を管理する空き領域チェーンメモリ１−１を備え、空き領域チェーンメモリ１−１は、バッファメモリ４−１と同数の３２×１０２４×１０２４のアドレスを有し、該空き領域チェーンメモリ１−１の各データ領域には、初期値として「自アドレス＋１」の値を書き込む。
【００２７】
空き領域チェーンメモリ１−１のデータ領域は、少なくとも「最終アドレス＋１」の値を格納し得るビット数を有するものを使用する。３２×１０２４×１０２４のアドレスを有する場合には、データ領域は少なくとも２５ビットを有するメモリを使用する。
【００２８】
バッファメモリ４−１へのデータ書き込み時、空き領域となっている先頭アドレス０から順次空き領域を使用し、また、バッファメモリ４−１からのデータ読み出しによって、空き状態となった領域を空き領域チェーンの先頭に付加することによって、空き領域の管理を行う。
【００２９】
空き領域を全て使用した時点における空き領域ヘッドポインタメモリ１−２の値は、３２×１０２４×１０２４を示し、この値は固定値であるので、空き領域ヘッドポインタメモリ１−２の値がこの値になったとき、バッファメモリオーバーフロー状態であり、更にバッファメモリ４−１に書き込みを行うことは不可能であると判定することができる。
【００３０】
【発明の効果】
以上説明したように、本発明によれば、バッファメモリにデータを格納するときに、空き領域チェーンの先頭アドレスから空き領域をデータ格納用に取り出し、かつ、バッファメモリからデータの読み出しによって生じた空き領域を、空き領域チェーンの先頭の前部に追加して空き領域チェーンを生成することにより、空き領域チェーンのテールポインタは、初期値として設定された固定値のままであるため、空き領域チェーンのテールポインタを記憶するメモリ領域を確保する必要がなく、その分メモリ容量を削減することができる。
【００３１】
また、空き領域ヘッドポインタメモリに、空き領域の最後のアドレス値を越える値が格納されたことの検出して、バッファメモリのオーバーフロー状態を判定することにより、簡素な回路によってバッファメモリのオーバーフロー状態を管理することができ、オーバーフロー監視回路の回路規模を削減することができ、パッケージを小型化することができる。
【００３２】
更に、空き領域チェーンメモリの初期化時に、各アドレスのデータ領域に、自アドレスに所定の値を加えた値を格納して、空き領域チェーンを生成することにより、空き領域の大きさを考慮することなく空き領域チェーンを生成することができ、空き領域の大きさによる制約を受けることなく、自由度の高い空き領域管理を行うことができる。
【図面の簡単な説明】
【図１】本発明による空き領域管理のチェーンの初期構成を示す図である。
【図２】本発明による空き領域チェーンメモリに新たな空き領域を追加する例を示す図である。
【図３】本発明によるバッファメモリのオーバーフローの状態を示す図である。
【図４】本発明によるバッファメモリ管理の実施例を示す図である。
【符号の説明】
１−１  空き領域チェーンメモリ
１−２  空き領域ヘッドポインタメモリ
４−１  バッファメモリ
４−２  格納データヘッドポインタメモリ
４−３  格納データテールポインタメモリ
【図１】
2004280333.tif 000003
【図２】
2004280333.tif 000004
【図３】
2004280333.tif 000005
【図４】
2004280333.tif 000006