(57)【要約】【課題】優先クラスに応じたダイナミックメモリ管理方法及び装置に関し、メモリの使用効率を改善し、書き込み／読み出しの制御の簡易化を図る。【解決手段】メモリ１−１の領域を複数の領域に区分けしたメモリバンクを構成し、各優先クラスで各メモリバンクを共有させ、ポリサ（ライト制御部）１−２は、入力される優先度の異なる複数のクラスのフレームデータを、優先度に応じてダイナミックにメモリバンクに割り当て優先クラス毎に格納する。スケジューラ（リード制御部）１−３は、優先度の高いクラスに割り当てられたメモリバンクに格納されたフレームデータから順に読み出して送信する。バースト的に入力される優先クラスのフレームデータの格納には、該優先クラスに複数のメモリバンクを割り当ててバースト耐性を高める。データの書き込み及び読み出しの制御をメモリバンク単位で行うことにより、制御を簡素化することができる。【選択図】      図１
2008077401.tif 000002
【特許請求の範囲】
【請求項１】
優先度の異なる複数のクラスのフレームデータを入力し、該フレームデータの優先クラスに応じて該フレームデータのメモリへの格納又は廃棄を行うメモリ管理方法において、
前記メモリの領域を複数の領域に区分けしたメモリバンクを構成し、
前記各優先クラスで前記各メモリバンクを共有させ、各優先クラスのフレームデータの格納に空き状態のメモリバンクをダイナミックに割り当て、優先クラス毎にそれぞれ割り当てられた各メモリバンクに対するフレームデータの書き込み及び読み出し並びに廃棄の制御を行うことを特徴とする優先クラスに応じたダイナミックメモリ管理方法。
【請求項２】
所定時間内にバースト的に入力される前記優先クラス毎のフレームデータの格納に要求される優先クラス毎のメモリ容量のうち、最大の容量よりも少ない容量を前記メモリバンクの容量とし、
バースト的に入力される優先クラス毎の複数のフレームデータを、前記複数のメモリバンクを割り当てて格納することを特徴とする請求項１に記載の優先クラスに応じたダイナミックメモリ管理方法。
【請求項３】
前記優先クラス毎に最低限使用可能なメモリ量及び最大限使用可能なメモリ量を設定し、前記メモリバンクを各優先クラスのフレームデータの格納に割り当てる際に、前記最低限使用可能なメモリ量が設定された優先クラスに対して該最低限使用可能なメモリ量のメモリバンクを少なくとも割り当て、かつ、前記最大限使用可能なメモリ量が設定された優先クラスに対して該最大限使用可能なメモリ量までメモリバンクを割り当てることを特徴とする請求項１に記載の優先クラスに応じたダイナミックメモリ管理方法。
【請求項４】
低い優先クラスのフレームデータの格納に既に割り当てられているメモリバンクに、より高い優先クラスのフレームデータを格納する場合、該メモリバンクから低い優先クラスのフレームデータが既に読み出された領域から、より高い優先クラスのフレームデータを書き込み、
該メモリバンクから低い優先クラスのフレームデータを読み出すアドレスを示すリードポインタに、より高い優先クラスのフレームデータを書き込むアドレスを示すライトポインタが追いつくまで、前記低い優先クラスのフレームデータを廃棄することなく、該低い優先クラスのフレームデータの読み出しを継続することを特徴とする請求項１に記載の優先クラスに応じたダイナミックメモリ管理方法。
【請求項５】
優先度の異なる複数のクラスのフレームデータを入力し、該フレームデータの優先クラスに応じて該フレームデータのメモリへの格納又は廃棄を行うメモリ管理装置において、
前記メモリの領域を複数の領域に区分けして構成したメモリバンクと、
前記メモリバンクを単位として前記フレームデータの書き込み、読み出し及び廃棄の制御を行うライト制御部及びリード制御部とを備え、
前記各優先クラスで前記各メモリバンクを共有させ、各優先クラスのフレームデータの格納に空き状態のメモリバンクをダイナミックに割り当て、優先クラス毎にそれぞれ割り当てられた各メモリバンクに対するフレームデータの書き込み及び読み出しの制御を行うことを特徴とする優先クラスに応じたダイナミックメモリ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、優先クラスに応じたダイナミックメモリ管理方法及び装置に関する。イーサネット（登録商標）等におけるフレーム処理において、フレームデータを格納する大容量のメモリを用い、優先クラス（ＱＯＳ：Quality of Service）に応じてフレームデータの通過／廃棄を行う優先処理が行われるが、優先クラス毎のフレーム処理におけるメモリ管理として、各クラス対応に個別のメモリを使用する個別メモリ管理方式と、１つのメモリを複数のクラスで共有して使用するシェアードメモリ管理方式とがある。
【０００２】
個別メモリ管理方式は、クラス毎にメモリを個別に備えるため、トータルで多くのメモリ量が必要になるというデメリットがあるが、各メモリはそれぞれ１つのクラスに占有使用され、空き領域に順番にデータを書き込んでいけばよいため、書き込み／読み出しの制御を簡単に行うことができるというメリットがある。
【０００３】
一方、シェアードメモリ管理方式は、１つのメモリを複数のクラスで共有使用することができ、トータルのメモリ量は少なくて済むというメリットがあるが、クラス毎の書き込み領域の管理など共有制御のためのメモリ管理が複雑になるというデメリットがある。
【０００４】
本発明は、個別メモリ管理方式でもなく、シェアードメモリ管理方式でもなく、優先度の異なる複数のクラスのデータを書き込むメモリを、複数のクラスでダイナミックに有効利用することができ、且つ書き込み／読み出しの制御を簡易に行うことができるダイナミックメモリ管理方法及び装置に係る。
【背景技術】
【０００５】
図４４に本発明が好適に適用されるシステムの一例を示す。同図のシステム構成例において、端末Ｘ１から出力されたデータは、多重装置を経由して他の端末Ｙ１からのデータと共に束ねられ、第１のステーションＳ１に入力される。この例では、それらのデータは、第１のステーションＳ１→第２のステーションＳ２→第３のステーションＳ３→分離装置を経由して端末Ｘ２及び端末Ｙ２に伝達される。
【０００６】
ここで、端末Ｘ１ではＡ，Ｃのクラス（優先度）のデータが扱われ、端末Ｙ１ではＢ，Ｄのクラス（優先度）のデータが扱われているものとする。各データは、クラスＡを最高優先クラスとし、以下クラスＢ、クラスＣ、クラスＤの優先順位で各ステーションにおいて優先処理される。以下、各ステーション内で処理されるデータの優先処理に関して説明する。
【０００７】
図４５、図４６及び図４７にステーション内部の構成を示す。図４５は、多重装置から入力されたデータを他のステーションへ出力する機能ブロックを示す。同図に示すように、多重装置からローカルエリアネットワークＬＡＮ−１〜ＬＡＮ−ＮのＭＡＣ（Media Access Control）フレームが光モジュール４５−１に入力され、光モジュール４５−１で光信号から電気信号に変換され、ＭＡＣチップ４５−２にてＭＡＣフレーム処理が行われ、ＦＰＧＡ（Field Programmable Gate Array）のフレーム識別部４５−３に入力される。
【０００８】
フレーム識別部４５−３では入力フレームの識別を行い、ポリサ部４５−４にフレームデータを渡す。ポリサ部４５−４はメモリ４５−５に対してフレームデータの書き込み／廃棄の制御を行う。メモリ４５−５からスケジューラ４５−６によりデータを優先順位に従って読み出し、ＥＯＳチップ４５−７にデータを渡す。ＥＯＳチップ４５−７では、イーサ（登録商標）フレーム（ＭＡＣフレーム）をＳＯＮＥＴフレームにマッピングし、光モジュール４５−８に出力する。光モジュール４５−８では、電気信号から光信号への変換を行い、対向するステーションにフレームデータを出力する。
【０００９】
図４６は、他のステーションから入力されたフレームデータを多重装置に出力する機能ブロックを示す。この機能ブロックは、図４５で説明した処理の逆向きの処理を行う。なお、各ステーションは両方向の通信データの転送を行うため、図４５に示した機能ブロックと図４６に示した機能ブロックとを各ステーション内部に備える。
【００１０】
図４７は、他のステーションから入力されたフレームデータを別の他のステーションに出力する機能ブロックを示している。例えば、図４４の第２のステーションＳ２は、他のステーションからＳＯＮＥＴフレームを入力し、ＳＯＮＥＴ処理部によりＳＯＮＥＴフレームを送信先毎のデータに分離し、それらのデータを送信先方路へスイッチ処理した後、ＳＯＮＥＴフレームに編成して次のステーションに送信する。
【００１１】
ここで、本発明の構成の前提条件について説明する。図４８はステーションの内部構成を示している。同図に示すように、ポリサ（ライト制御部）４８−１とスケジューラ（リード制御部）４８−２との間に、優先クラスＡ，Ｂ，Ｃ，Ｄ対応のメモリが設けられ、入力側の回線（土管に例えることができる。）から入力される例えば帯域１Ｇｂｐｓのデータを、ポリサ（ライト制御部）４８−１により優先度クラス毎に振り分け、優先クラスＡ，Ｂ，Ｃ，Ｄ対応のメモリに優先度に応じて格納する。そして、スケジューラ（リード）部４８−２は、優先度の高いデータが格納されているメモリから優先的にデータを出力側に読み出す。
【００１２】
優先度の低いデータは、より優先度の高いデータがメモリから読み出された後に読み出され、出力側から出て行く。従って、例えば優先度の最も低いクラスＤのデータは、クラスＡ，Ｂ，Ｃのデータがメモリから読み出され、それらのメモリが空き状態となったときに読み出されて出力側から出力される。
【００１３】
以上が通常の動作であるが、入力側からデータが所定の帯域で入力され、それに対して、出力側の回線が混雑している場合や障害発生などにより出力フレームが一時的に停止し、入力データ量が出力データ量より多くなる場合がある。つまり、メモリへの書き込み処理は行われるが、メモリからの読み出し量がメモリへの書き込み量より少なくなるケースが瞬間的に発生する場合がある。
【００１４】
そのため、所定帯域の入力データに対して、或る一定期間のバースト耐性を持たせることが必要となる。例えば、入力側から１Ｇｂｐｓの帯域でデータが入力され、出力側の読み出し処理が完全に停止した場合でも、例えば１５ｍｓ間はメモリにデータを蓄えることができるようにするためには、以下の計算式で求められる１５Ｍｂｉｔ以上のメモリ容量を確保する必要がある。
１Ｇｂｐｓ×１５ｍｓ＝１５Ｍｂｉｔ
【００１５】
ここで、例えば４つの優先クラスＡ〜Ｄ対応にメモリを備える構成とするには、６０Ｍｂｉｔ（＝１５Ｍｂｉｔ×４）のメモリが必要となる。このように構成した場合、Ａ〜Ｄのどのクラスのデータが集中して入力されても１５ｍｓ間は耐えられるが、クラス間でメモリを共有していないので、メモリの有効利用という点で非効率的である。
【００１６】
所定のバースト耐性を満足するために、入力バーストデータを蓄えるメモリを搭載する必要があるが、メモリの構成として前述したように、個別メモリ管理方式とシェアードメモリ管理方式とがある。
【００１７】
個別メモリ管理方式は図４９に示すように、クラスＡ〜Ｄ毎に個別メモリを備え、ポリサ（ライト制御部）４８−１で入力フレームをクラス毎に振り分けてそれぞれのメモリ４９−１〜４９−４に格納し、スケジューラ（リード制御部）４８−２は優先順位（ＱＯＳ）の高いデータが格納されたメモリから順にデータを読み出すようにスケジューリングするだけで良いため、書き込み及び読み出しの処理は簡易なものとなる。しかし、例えば優先順位の低いクラスのメモリに空きが有り、高優先のクラスのメモリの使用状態が一杯であっても、空き状態の他のクラスのメモリを使用することはできない。
【００１８】
これに対し、シェアードメモリ管理方式は図５０に示すように、メモリ５０−１は各クラスＡ〜Ｄで共有されるようにし、どのクラスもメモリ５０−１を使用してデータを蓄えるため、最優先クラスＡのバースト耐性分の１５Ｍｂｉｔのメモリ容量分を少なくとも備えていればよい。クラスＡばかり集中して１Ｇｂｐｓの帯域で入力されても、クラスＡ〜Ｄのどのクラスのデータがまばらに入力されても、クラス間でメモリ５０−１を共有し、メモリ５０−１は各クラスで共通使用されるメモリ空間となる。
【００１９】
但し、シェアードメモリ管理方式では、優先順位に従ったスケジューリングを行ってメモリ５０−１からデータを読み出すため、優先順位の高いクラスのデータが格納されていたメモリエリアが歯抜け状に空き領域となり、メモリ５０−１のどの領域が空きで、どの領域までデータが書き込まれているかを管理するためのメモリ（空き管理メモリ５０−２及びチェイン管理メモリ５０−３）が必要となり、その管理処理が複雑なものとなる。
【００２０】
空き管理メモリ５０−２とチェイン管理メモリ５０−３の容量について説明すると、例えば１５Ｍｂｉｔのデータを蓄えるメモリ５０−１に対して、そのメモリ空間をページという単位でエリアを区切り、例えば１ページを１２８ｂｙｔｅの大きさとして区切ったとすると、空き管理メモリ５０−２とチェイン管理メモリ５０−３の容量は以下のようになる。
【００２１】
空き管理メモリ容量：
１５Ｍｂｉｔ÷１０２４ｂｉｔ（１２８ｂｙｔｅ）＝１４６４９（＝３９３９ｈｅｘ［１４ｂｉｔ］）
１４６４９×１４ｂｉｔ＝２０５０８６ｂｉｔ
即ち、１４６４９の各ページに対して、空き状態のページを順次連結するために、次に続く空きページのアドレスを示す１４ｂｉｔの情報を格納するメモリが必要であり、２０５０８６ｂｉｔのメモリ容量が必要となる。
【００２２】
チェイン管理メモリ容量：
１５Ｍｂｉｔ÷１０２４ｂｉｔ（１２８ｂｙｔｅ）＝１４６４９（＝３９３９ｈｅｘ［１４ｂｉｔ］）
１４６４９×１５ｂｉｔ＝２１９７３５ｂｉｔ
即ち、１４６４９の各ページに対して、次に続くデータ格納ページのアドレス１４ｂｉｔと最終ページか否かを示す１ｂｉｔとの合計１５ｂｉｔを格納するメモリが必要であり、２１９７３５ｂｉｔのメモリ容量が必要となる。
【００２３】
個別メモリ管理方式とシェアードメモリ管理方式について、下記の特許文献１等には、メモリを各チャネルの個別領域と共有領域とに分割し、各チャネルには少なくとも１つの個別領域のメモリを確保し、負荷の集中したチャネルは共有領域を使用して負荷集中に対応することができるようにし、更には低負荷チャネル及び未使用チャネルのメモリ領域を他のチャネルで利用することができるようにした通信Ｉ／Ｆボードのメモリ利用方式について記載されている。
【特許文献１】特開平１１−６５９７３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２４】
本発明は、従来の個別メモリ管理方式におけるメモリの非効率的使用を改善し、かつ、従来のシェアードメモリ管理方式に比べて書き込み／読み出し処理の制御をより簡易に行うことができ、優先度の異なる複数のクラスのデータを書き込むメモリを、各クラスでダイナミックに有効利用することができるメモリ管理方法及び装置を提供することを目的とする。
【課題を解決するための手段】
【００２５】
本発明の一実施態様による優先クラスに応じたダイナミックメモリ管理方法は、優先度の異なる複数のクラスのフレームデータを入力し、該フレームデータの優先クラスに応じて該フレームデータのメモリへの格納又は廃棄を行うメモリ管理方法において、前記メモリの領域を複数の領域に区分けしたメモリバンクを構成し、前記各優先クラスで前記各メモリバンクを共有させ、各優先クラスのフレームデータの格納に空き状態のメモリバンクをダイナミックに割り当て、優先クラス毎にそれぞれ割り当てられた各メモリバンクに対するフレームデータの書き込み及び読み出し並びに廃棄の制御を行うことを特徴とする。
【００２６】
また、所定時間内にバースト的に入力される前記優先クラス毎のフレームデータの格納に要求される優先クラス毎のメモリ容量のうち、最大の容量よりも少ない容量を前記メモリバンクの容量とし、バースト的に入力される優先クラス毎の複数のフレームデータを、前記複数のメモリバンクを割り当てて格納することを特徴とする。
【００２７】
また、前記優先クラス毎に最低限使用可能なメモリ量及び最大限使用可能なメモリ量を設定し、前記メモリバンクを各優先クラスのフレームデータの格納に割り当てる際に、前記最低限使用可能なメモリ量が設定された優先クラスに対して該最低限使用可能なメモリ量のメモリバンクを少なくとも割り当て、かつ、前記最大限使用可能なメモリ量が設定された優先クラスに対して該最大限使用可能なメモリ量までメモリバンクを割り当てることを特徴とする。
【００２８】
また、低い優先クラスのフレームデータの格納に既に割り当てられているメモリバンクに、より高い優先クラスのフレームデータを格納する場合、該メモリバンクから低い優先クラスのフレームデータが既に読み出された領域から、より高い優先クラスのフレームデータを書き込み、該メモリバンクから低い優先クラスのフレームデータを読み出すアドレスを示すリードポインタに、より高い優先クラスのフレームデータを書き込むアドレスを示すライトポインタが追いつくまで、前記低い優先クラスのフレームデータを廃棄することなく、該低い優先クラスのフレームデータの読み出しを継続することを特徴とする。
【００２９】
また、本発明の一実施態様によれば、優先クラスに応じたダイナミックメモリ管理装置は、優先度の異なる複数のクラスのフレームデータを入力し、該フレームデータの優先クラスに応じて該フレームデータのメモリへの格納又は廃棄を行うメモリ管理装置において、前記メモリの領域を複数の領域に区分けして構成したメモリバンクと、前記メモリバンクを単位として前記フレームデータの書き込み、読み出し及び廃棄の制御を行うライト制御部及びリード制御部とを備え、前記各優先クラスで前記各メモリバンクを共有させ、各優先クラスのフレームデータの格納に空き状態のメモリバンクをダイナミックに割り当て、優先クラス毎にそれぞれ割り当てられた各メモリバンクに対するフレームデータの書き込み及び読み出しの制御を行うことを特徴とする。
【発明の効果】
【００３０】
本発明によれば、メモリの領域を複数の領域に区分けしたメモリバンクを各優先クラスで共有させ、各優先クラスにメモリバンクをダイナミックに割り当てることにより、個別メモリが不要となり、データを蓄えるメモリは、従来の個別メモリ管理方式とシェアードメモリ管理方式の中間程度の容量で良く、各優先クラスのメモリ容量をダイナミックに変動させ、より優先度の高いクラスのメモリが多く必要な場合には、高いクラスのメモリ領域用にメモリ容量を割り当て、優先度の低いクラスのメモリ領域が必要な場合には、低いクラスのメモリ領域用にメモリ容量を割り当てて使用することができ、比較的少ないメモリ容量で、状況に応じて優先度に応じたメモリ割り当てを行うことにより、メモリを有効活用することができる。
【００３１】
また、メモリバンク単位で各優先クラスへのメモリ割り当てを制御することにより、比較的簡単な制御回路で、ダイナミックに優先クラスに応じたメモリの割り当て及びその変更を行うことができる。また、バースト的に入力されるフレームデータの格納に要求されるメモリ容量より少ないメモリバンクを複数備え、バースト的に入力される複数のフレームデータを複数のメモリバンクを用いて格納することにより、メモリを効率よく使用することができる。
【００３２】
また、最低限使用可能なメモリ量が設定された優先クラスに対して該最低限使用可能なメモリ量のメモリバンクを少なくとも割り当て、かつ、前記最大限使用可能なメモリ量が設定された優先クラスに対して該最大限使用可能なメモリ量までメモリバンクを割り当てることにより、高い優先クラスのフレームデータの蓄積に全てのメモリバンクが使い尽くされてしまうのを防ぎ、高い優先クラスのフレームデータの読み出しが滞るような障害が発生した場合でも、該障害が低優先クラスのフレームデータの蓄積に影響を及ぼさないようにすることができるとともに、低優先クラスに対して最低限の帯域を保証するサービスを提供することができる。
【００３３】
また、低い優先クラスのフレームデータが既に格納されているメモリバンクに、より高い優先クラスのフレームデータを格納する際、低い優先クラスのフレームデータを読み出すリードポインタに、より高い優先クラスのフレームデータを書き込むライトポインタが追いつくまで、低い優先クラスのフレームデータを廃棄することなく、フレームデータの読み出しを継続することにより、よりメモリの有効利用を図ることができる。
【発明を実施するための最良の形態】
【００３４】
図１は、本発明によるダイナミックメモリ管理方式のメモリ構成を示す。本発明によるダイナミックメモリ管理方式は、メモリ空間をバースト耐性分未満の容量の複数の領域に区分けし、この区分けした領域（以下、メモリバンクと称する。）を各クラスに対してダイナミックに（即ち、動的に変動させて）割り当てるようにしたものである。ダイナミックな割り当て法としては、複数のメモリバンクを各クラスで予備領域として適応的に使用し、データ格納が必要なクラスに対して空き予備領域を割り当てる。
【００３５】
本発明によるダイナミックメモリ管理方式は、トータルのメモリ容量として１５Ｍｂｉｔを越える容量のメモリを用いる。図１に示す構成例では、５Ｍｂｉｔのメモリバンクを６個使用し、合計で３０Ｍｂｉｔ（＝５Ｍｂｉｔ×６）分の容量のメモリ１−１を用いる。バースト耐性として最低限必要な絶対容量が例えば１５Ｍｂｉｔであるとすると、その２倍の３０Ｍｂｉｔ分の程度の容量を備えたメモリであれば良い。
【００３６】
以降の実施形態でも説明するが、クラスＡ，Ｂ，Ｃ，Ｄのデータ格納に対するバッファ領域の初期デフォルト容量として、各クラスに１つのメモリバンク５Ｍｂｉｔ分を割り当てるが、ポリサ（ライト制御部）１−２及びスケジューラ（リード制御部）１−３は、それらの領域を予備領域として他のクラスのデータ格納にも使用するよう、書き込み及び読み出しを制御する。また、最初から５Ｍｂｉｔの予備領域として使用するメモリバンクを２つ分用意するものとし、合計で３０Ｍｂｉｔ分の容量のメモリを用いる。
【００３７】
図２に本発明によるクラスバッファ固定割り当ての実施形態を示す。この実施形態は同図（ｉ）に示すように、左側の４つのメモリバンクをそれぞれ固定的に各クラスＡ〜Ｄに対してクラスバッファとして割り当て、右側の２つのメモリバンクをダイナミックに各クラスＡ〜Ｄに対して予備領域バッファとして割り当て可能にしたものである。
【００３８】
図２の（ii）に示す第１の状態は、クラスＡ，Ｂ，Ｃ，Ｄのデータ格納に左側のクラスバッファ全てを使用し、且つ右側の予備領域バッファの全てをクラスＣ，Ｄのデータ格納に使用している例を示している。図２の(iii）に示す第２の状態は、上述の第１の状態から優先度の高いクラスＡのデータが入力されたため、優先度の最も低いクラスＤに割り当てていた予備領域（右側下段）をクラスＡに割り当て、優先度の高いクラスＡのデータが、初期に割り当てられていた左側の５Ｍｂｉｔのクラスバッファと右側の５Ｍｂｉｔの予備領域バッファとで合計１０Ｍｂｉｔ分格納された例を示している。
【００３９】
更に図２の（iii）に示す第２状態から同図（iv）に示す第３の状態のように、クラスＣのバッファ領域のリードポインタが歩進して、初期に割り当てたクラスＣのバッファ領域が空きになっても、このバッファ領域は固定的にクラスＣに割り当てている方式であるため、この状態で仮にクラスＡのデータが入力されてバッファに格納する必要が発生した場合でも、クラスＣのバッファ領域の空き領域にデータを格納することはせず、右側の予備領域にのみ優先度の高いクラスのデータを上書きする構成であり、左側のバッファ領域が有効に利用されないというデメリットがある。
【００４０】
そこで、これを改良した本発明の実施形態として、クラスバッファ・予備領域ダイナミック割り当て方式について以下に説明する。この方式は、図３の（ｉ）に示すように、初期デフォルトとして左側の各メモリバンクを、クラスバッファとして各クラスＡ，Ｂ，Ｃ，Ｄのデータ格納に割り当てているものの、その後の動作進行に伴って、予備領域バッファとして何れのクラスに対しても使用可能にしたものである。勿論、右側の予備領域バッファは何れのクラスに対しても割り当て可能な予備領域である。
【００４１】
図３の（ii）は、クラスＡ，Ｂ，Ｃ，Ｄのデータが５Ｍｂｉｔずつ左側の初期デフォルト割り当てのクラスバッファに格納されている状態で、且つ、右側上段の予備領域バッファにクラスＣのデータが途中まで書き込まれている状態を示している。同図の（iii）は、同図の（ii）の状態から時間が経過して、クラスＣのデータが読み出され、初期デフォルト割り当てのクラスＣのクラスバッファのリードポインタが歩進した状態を示している。同図の（iv）は、更にクラスＣのデータ読出しが行われ、左側のクラスＣのバッファ領域のデータが全て読み出された状態を示している。
【００４２】
このとき、初期デフォルトで元々クラスＣに割り当てられていたバッファ領域は空き領域となり、何れのクラスも使用することができる予備領域として解放する。図３の（ｖ）は、上記の状態からクラスＡのデータが入力され、元々クラスＣに割り当てられていたバッファ領域に、クラスＡのデータを書き込んだ状態を示している。このように、図３に示した実施形態は、どのメモリバンクも空き状態であれば、ダイナミックに任意のクラスのバッファ領域として使用する構成としたものである。
【００４３】
図４は上述のクラスバッファ固定割り当て又はクラスバッファ・予備領域ダイナミック割り当ての実施形態を実現する回路構成例を示している。なお、以下の説明において例示するビット数等は一例であり、本発明はこれに限定されるものではない。図４において、左側から入力される受信フレームは、フレーム識別部４−１にてクラス判定され、３２ｂｉｔのデータビット及び２ｂｉｔのクラス識別ビットがライト制御部４−２に渡される。
【００４４】
ライト制御部４−２は、各メモリバンクの空き状態を示すメモリ空き管理ビット４−３を参照して、メモリバンクに空きが有るか否かを判定する。メモリバンクに空きが有れば受信フレームのデータの書き込み動作を行う。メモリバンクに空きが無い場合には、受信フレームのデータは破棄する。
【００４５】
クラスデータが受信され、メモリバンクに空きが有る場合は、該空きメモリバンクをデータ格納領域にするため、該メモリバンクのメモリ空き管理ビット４−３を塞がり状態にセットし、該メモリバンクの識別情報（６メモリバンク分を表す３ｂｉｔ）をクラス対応のメモリバンク情報部４−４にセットすると共に、該メモリバンクには有効なデータが格納され、読み出しが必要なことを示す有効（Ｖａｌｉｄ)ビット４−５をセットする。
【００４６】
そして、クラス対応に受信フレームの格納数を示す残量カウンタ４−６に１を加算する。また、ライト制御部４−２は、受信フレーム長がメモリバンクの空き領域カウント値を超えるかどうかの判断を行い、受信フレーム長がメモリバンクの空き領域カウント値を超えた場合は、該メモリバンクへの書き込みを行わない。即ち、１つの受信フレームを複数のメモリバンクにまたがって格納しないようにする。
【００４７】
また、受信フレームの最小フレーム長が例えば６４ｂｙｔｅであるとすると、メモリバンクの空き領域カウント値が１５以下、即ち、メモリバンクの書き込みアドレスの残りが１５以下の場合も、該メモリバンクへの書き込みを行わない。これは、メモリバンクの各アドレスに１ｗｏｒｄ（３２ｂｉｔ）ずつデータを格納するものとすると、６４ｂｙｔｅのデータを格納するのに１６アドレス分の空き領域を必要とし、空き領域カウント値が１５以下では、１フレーム分のデータを格納することができないからである。
【００４８】
ポリサ部におけるライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）４−７は、各クラスＡ、Ｂ、Ｃ、Ｄ対応に備えられ、それぞれメモリバンク４−８にフレームデータを３２ｂｉｔ（１ｗｏｒｄ）ずつ書き込む毎に、メモリバンク４−８のアドレス値を１ずつ加算した値を出力する。
【００４９】
そして、受信フレームの最終データまでをメモリバンク４−８に書き込んだ時点で、ライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）４−７は停止する。次のフレームを受信すると、停止したアドレス値に１を加算して、受信フレームの先頭データのから最終データまでをメモリバンク４−８に書き込んだ時点で停止するという動作を繰り返す。
【００５０】
ライト制御部４−２は、１つのメモリバンク４−８の最終アドレス近くまでデータを書き込むと、メモリ空き管理ビット４−３を参照して他の空きメモリバンクが有るか否かを判定して、空きメモリバンクに次の受信フレームのデータを書き込むという処理を行う。
【００５１】
スケジューラ部におけるリード制御部４−１０は、優先度の高いクラスから順にデータを読み出すよう制御する。即ち、クラスＡの全てのデータを、残量カウンタ４−６の値がゼロになるまで、クラスＡのリードアドレス制御部（Ｒａｄｒ＿ｃｔｒ）４−９により連続して読み出し、クラスＡのデータの読み出しが完了すると、次のクラスＢのリードアドレス制御部（Ｒａｄｒ＿ｃｔｒ）４−９によりクラスＢのデータの読み出しを開始する。
【００５２】
クラスＢの全データの読み出しが完了すると、次のクラスＣのリードアドレス制御部（Ｒａｄｒ＿ｃｔｒ）４−９によりクラスＣのデータの読み出しを開始し、クラスＣの全データの読み出しが完了すると、次のクラスＤのリードアドレス制御部（Ｒａｄｒ＿ｃｔｒ）４−９によりクラスＤのデータを読み出すという順序で読み出し処理を進める。
【００５３】
読み出し制御において、各メモリバンク４−８の最終のアドレス領域まで読み出し処理が進んだとき、又は各クラス対応の残量カウンタ４−６の値がゼロになったとき、該メモリバンク対応のメモリ空き管理ビット４−３と有効（Ｖａｌｉｄ）ビット４−５とをクリアする。残量カウンタ４−６はクラス毎に備えられ、１フレーム分をメモリに書き込む毎に１を加算し、メモリから１フレーム分を読み出す毎に１を減算する。
【００５４】
読み出し側では、１つのメモリバンク４−８の最終アドレスまでの読み出しが進み、優先度の高いクラスの残量カウンタ４−６の値がゼロでない場合は、続けてそのクラスのメモリバンク情報４−４の有効（Ｖａｌｉｄ）ビット４−５を参照し、有効ビットがセットされていれば、そのクラスのデータが格納されたメモリバンクからデータの読み出し処理を続けて行う。
【００５５】
優先順位の高いクラスの有効ビットがセットされていなければ、次の優先順位のクラスのデータの読み出し処理を行う。以上の処理のように、残量カウンタ４−６、メモリ空き管理ビット４−３、メモリバンク情報４−４及び有効（Ｖａｌｉｄ）ビット４−５の情報を参照しながら、書き込み制御及び読み出し制御を実施する。
【００５６】
フレーム識別部４−１におけるクラス判定の具体例を図５に示す。同図の（ａ）はＭＰＬＳフレームにおけるクラス判定の具体例である。ＭＰＬＳフレームにおけるＭＰＬＳラベル１のＥＸＰ(Experimental Use：３ｂｉｔ)は任意に定義が可能であり、例えば以下のように定義することができる。
０／１：クラスＡ、２／３：クラスＢ、４／５：クラスＣ、６／７：クラスＤ。
【００５７】
なお、ＭＰＬＳフレームにおいて、Ｓ（Bottom of Stack）はラベル・スタック内の最後のラベルを示すフィールドであり、“Ｓ＝０”は以降にラベルは続くことを示し、“Ｓ＝１”はラベル・スタック内の最後のラベルであることを示す。ＴＴＬ（Time to Live）はこのパケットの生存時間を示す。この値は、ネットワークの宛て先までルータを経由するごとに減算され、０になった時点で該パケットは廃棄される。
【００５８】
同図の（ｂ）は、イーサネット（登録商標）ＶＬＡＮフレームにおけるクラス判定の具体例を示す。ＶＬＡＮフレームのタグ制御情報に優先度を示す３ビットがあり、このビットを用いて例えば以下のように定義することができる。０／１：クラスＡ、２／３：クラスＢ、４／５：クラスＣ、６／７：クラスＤ。
【００５９】
なお、上記フレームにおいて、“ＣＦＩ”はカノニカル形式指示子（‘０’：リトルエンディアン，‘１’：ビックエンディアン）であり、現在は、ＤｉｆｆＳｅｒｖのＤＳＣＰ値を書き込むフィールドであり、“ＶＬＡＮＩＤ”はＶＬＡＮ識別番号であり、このＶＬＡＮＩＤにより特定のユーザを認識して宛先へルーティング処理を実施する。但し、本発明はＭＰＬＳフレーム又はＶＬＡＮフレーム等に限定されることはなく、他のフレームフォーマットのビットをクラス判定に用いる構成としてもよい。
【００６０】
また、本発明における内部処理フレームのレングス値の指定の具体例を図５の（ｃ）に示している。フレーム識別部４−１において、受信したフレームのレングス値（長さ）を識別し、同図に示すように、そのレングス値をヘッダに格納する。これは、後述する実施形態において、スケジューラ部がメモリ４−７より読み出すデータ長を認識するために使用される。このように、フレームにヘッダとしてレングス値を格納することで、スケジューラ部では任意のフレーム長のデータを読み出すことが可能となる。
【００６１】
以下に、本発明の具体的動作例について説明する。以下の動作例は、本発明の第１の構成例としてメモリを６分割としたときの動作例である。メモリ分割数は任意であるが、６分割の場合では、｛メモリバンク情報（３ｂｉｔ）＋有効（Ｖａｌｉｄ）ビット（１ｂｉｔ）｝×６（分割数）×４（クラス）＝９６ｂｉｔ分と、メモリバンクの空き有／無を示すメモリ管理ビット（１ｂｉｔ）×６（分割数）＝６ｂｉｔ分の管理情報用のメモリが必要となる。これらは分割数によって変動する。
【００６２】
他の構成として例えばメモリを１０分割した場合は、｛メモリバンク情報（４ｂｉｔ）＋有効（Ｖａｌｉｄ）ビット（１ｂｉｔ）｝×１０（分割数）×４（クラス）＝２００ｂｉｔ分と、メモリの空き有／無を示すメモリ管理ビット（１ｂｉｔ）×１０（分割数）＝１０ｂｉｔ分の管理情報用のメモリが必要となる。
【００６３】
ライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）４−７及びリードアドレス制御部（Ｒａｄｒ＿ｃｔｒ）４−９のデータは、メモリの全体のアドレス空間分を示すビット数を必要とする。例えば、各メモリバンクはデータを１ｗｏｒｄ（＝３２ｂｉｔ）ずつ各アドレスに書き込むものとし、各メモリバンクは５Ｍｂｉｔの容量を有するものとすると、各メモリバンクは、以下の式から明らかなように１５６２５０のアドレス空間を有する。
５Ｍｂｉｔ÷１ｗｏｒｄ（＝３２ｂｉｔ）＝１５６２５０
【００６４】
６個のメモリバンクがそれぞれ１５６２５０のアドレス空間を有することから、メモリ全体のアドレス空間は、９３７５００（＝１５６２５０×６）となり、９３７５００（ｄｅｃ）＝Ｅ４Ｅ１Ｃ（ｈｅｘ）であることから、９３７５００のアドレス空間を表すのに２０ｂｉｔ必要となる。
【００６５】
残量カウンタは、最小フレーム長のフレームがメモリ全体に満杯まで蓄えられたときのフレーム数をカウントすることができるビット数を必要とする。１フレームの最小フレーム長が６４ｂｙｔｅであるとすると、６４ｂｙｔｅは１６ｗｏｒｄに相当するので、５８５９４（＝９３７５００÷１６）がメモリ全体で蓄積可能な最大フレーム数となる。５８５９４（ｄｅｃ）＝Ｅ４Ｅ２（ｈｅｘ）であることから、５８５９４フレーム分をカウントするカウンタは、１６ｂｉｔのカウンタであればよい。
【００６６】
図６は図４に示した本発明の第１の構成例における各メモリのデータ構成を示している。図７は上記各メモリの初期状態を示している。特に初期状態に対する制限や限定はないが、ライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）、リードアドレス制御部（Ｒａｄｒ＿ｃｔｒ）の初期状態は、クラスＡ，Ｂ，Ｃ，Ｄのデータがそれぞれメモリバンク＃１，＃２，＃３，＃４に格納されるようにデフォルトで設定され、ここではこのような初期状態から動作が開始するものとして説明するが、本発明はこれに限定されるものではない。
【００６７】
まず、第１のケースとして、クラスＡの６４ｂｙｔｅデータ受信・ライト動作完了状態を図８に示す。この動作例では、４ｂｙｔｅ×１６アドレス分のデータをメモリバンク＃１に書き込むので、ライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）は０から１５の値までカウントアップする。
【００６８】
また、クラスＡの残量カウンタ（１６ｂｉｔ）を１カウントアップし、メモリバンク＃１の空き有／無を示すメモリ空き管理ビットを“１”（＝空き無し）に設定する。また、クラスＡのデータを格納する第１の領域としてメモリバンク＃１を示すメモリバンク情報“０００”及び該領域に有効データが格納されていることを示す有効（Ｖａｌｉｄ）ビット“１”をセットする。
【００６９】
次に第２のケースとして、上記第１のケースの動作後の、クラスＡの６４ｂｙｔｅデータ受信・リード動作完了状態を図９に示す。リード制御部は、最優先のクラスＡの残量カウンタが１であることを認識して、クラスＡのデータをメモリから読み出す処理を開始する。
【００７０】
リード制御部は、第１の領域のメモリバンク情報“０００”を参照して、メモリバンク＃１からクラスＡのデータを読み出すよう、リードアドレス制御部（Ｒａｄｒ＿ｃｔｒ）アドレス値を０→１５にカウントアップして順次データを読み出す。全てのデータの読み出しが完了すると、第１の領域の有効（Ｖａｌｉｄ）ビット“１”を“０”に戻し、残量カウンタ（１６ｂｉｔ）の値を１→０に設定し、空き有／無を示すメモリ管理ビットを“０”（空き有状態）にする。このように、１フレームの受信データに対してデータの書き込み処理及び読み出し処理が行なわれる。
【００７１】
続いて、第３のケースとして、クラスＢの１５００ｂｙｔｅデータ受信・ライト動作完了状態を図１０に示す。受信フレームがクラスＢであると認識されると、クラスＢのメモリバンク情報には第１の領域としてデフォルトで割り当てられているバンク＃２を示す“００１”を書き込み、その有効（Ｖａｌｉｄ）ビットを“１”に設定する。
【００７２】
クラスＢのライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）のカウンタは、初期値１５６２５０から１５００ｂｙｔｅ分のアドレス（１５００÷４＝３７５）のカウントアップが行われ、１５６６２４（＝１５６２５０＋３７５−１）の値となる。基本的な動作は前述のクラスＡにおける処理動作（第１のケース）と同様である。
【００７３】
第４のケースとして、クラスＢの１５００ｂｙｔｅデータ受信・リード動作中の状態を図１１に示す。クラスＢのアドレス制御部（Ｒａｄｒ＿ｃｔｒ）は、前述の第３のケースと同様に、１５６２５０から１５６６２４へカウントアップする。この動作の途中で、第５のケースとして図１２に、クラスＢの１５００ｂｙｔｅデータ受信・リード動作状態且つクラスＣの６４ｂｙｔｅデータ受信ライト動作完了状態を示す。
【００７４】
第５のケースでは、クラスＢのデータを読み出しているときに、クラスＣのデータの書き込みが行われ、読み出しデータ１５００ｂｙｔｅと比較して、書き込みデータ６４ｂｙｔｅは少ないデータ量であるため、この書き込みの処理が先に完了している動作例である。カウンタ値等は図に示している状態となる。
【００７５】
クラスＢのデータはメモリバンク＃２に、クラスＣのデータはメモリバンク＃３に蓄えられている状態を示している。このように書き込み動作と読み出し動作は独立して処理されるので、メモリバンクからのデータ読み出し中にメモリバンクへのデータの書き込み処理が可能である。
【００７６】
さらに、第６のケースとして、クラスＢの１５００ｂｙｔｅデータ受信・リード動作状態且つクラスＣの第２の６４ｂｙｔｅデータ受信・ライト動作完了状態を図１３に示す。クラスＢの１５００ｂｙｔｅデータの読み出し処理は、６４ｂｙｔｅデータと比較して処理時間が長くなるので、クラスＣの６４ｂｙｔｅデータを前述の第５のケースに続けて２フレーム分書き込んだ状態を示す。
【００７７】
そのため、クラスＣの残量カウンタの値が２となっている。クラスＣのメモリバンク情報は、メモリバンク＃３を示す“００２”であり、その有効（Ｖａｌｉｄ）ビットは“１”の状態である。なお、１５００ｂｙｔｅ等のデータ長は、フレームのヘッダに格納されているデータ長情報を参照して認識し、リード制御部は任意のフレーム長を読み出す。
【００７８】
図１４にメモリバンク満杯状態の判定手法の一例を示す。最大フレーム長が例えば１５００ｂｙｔｅであるとすると、１つのバメモリンクの空き領域が１５００ｂｙｔｅ未満になると満杯状態と見なし、次の受信フレームからは他の空きメモリバンクに書き込む構成とする。
【００７９】
例えばメモリバンク＃４の全アドレス空間は４６８７５０〜６２４９９９であるが、４６８７５０〜６２４６２５にデータを蓄積し、空き領域のアドレスが６２４６２６以降となり、空き領域のアドレス空間が３７４以下になると、メモリバンク＃４は満杯状態であると見なす。
【００８０】
これは、１アドレスに４ｂｙｔｅのデータが格納され、３７４のアドレス空間には１４９６ｂｙｔｅ（＝３７４×４ｂｙｔｅ）までのフレームしか格納することができず、最大長フレームである１５００ｂｙｔｅのフレームが受信された場合、該空き領域にフレームデータの全てを格納することができないので、空き領域が最大フレーム長未満となったとき、該メモリバンクは満杯状態であると見なす。こうすることにより、１つのフレームが複数のメモリバンク間に分離して格納されることを防止し、ライトアドレス制御部（Ｗａｒｄ＿ｃｔｒ）及びリードアドレス制御部（Ｒａｄｒ＿ｃｔｒ）によるアドレス制御をより簡易化することができる。
【００８１】
図１５は、クラスＡの６４ｂｙｔｅフレーム受信時の基本的な動作の処理フローを示す。クラスＡの最初のフレームを受信すると（ステップ１５−１)、ライト制御部はメモリ空き管理ビットを元にメモリバンクの空き有／無を判断し（ステップ１５−２）、空きが有れば、クラスＡのメモリバンク情報の第１領域に例えば空きメモリバンク＃１の識別情報“０００”をセットし、その領域の有効（Ｖａｌｉｄ）ビットに“１”をセットし（ステップ１５−３）、メモリバンク＃１のメモリ空き管理ビットに塞がりを示す“１”をセットし（ステップ１５−４）、ライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）をカウントアップ（０→１５）し（ステップ１５−５）、メモリバンク＃１にフレームデータを書き込んだ後に（ステップ１５−６）、クラスＡの残量カウンタに１を加算して１にセットする（ステップ１５−７）。
【００８２】
読み出し処理は、クラスＡの残量カウンタの値が０以外であるか否かを確認し（ステップ１５−８）、０以外であればクラスＡのデータの読み出し処理を開始する（ステップ１５−９。残量カウンタはクラス毎に備えられ、優先度の高いものからその残量カウント値を確認して読み出し処理を開始する。クラスＡに対してリードアドレス制御部（Ｒａｄｒ＿ｃｔｒ）のカウントアップ（０→１５）を行い(ステップ１５−１０）、メモリバンク＃１からデータを読み出し(ステップ１５−１１）、そのデータの送信を開始する。
【００８３】
クラスＡの６４ｂｙｔｅのデータ読み出しが終わると、クラスＡのメモリバンク情報及び有効（Ｖａｌｉｄ）ビットのクリア（“１”→“０”）を行い(ステップ１５−１２）、メモリバンク＃１のメモリ空き管理ビットを“０”（空き）にセットし(ステップ１５−１３）、クラスＡの残量カウンタを１から０にセットして(ステップ１５−１４）、フレームの送信を完了する(ステップ１５−１５）。
【００８４】
基本的にこのように書き込み処理と読み出し処理とが行われる。フレーム長が異なっても動作は同じである。また、書き込み処理と読み出し処理とは独立して動作し、書き込み処理は、メモリバンクに空きがあれば書き込み処理を行う。読み出し処理は、残量カウンタが０以外であれば、読み出し処理を開始する。
【００８５】
上述の動作において、入力の帯域に対して出力も同じ程度の帯域が確保されている場合には、メモリに受信フレームのデータが一方的に溜まることは無い。しかし、スケジューラ部から出力されるデータは、その接続先の状態によって読み出しが止まる場合がある。
【００８６】
例えば、接続先の回線状態が混雑している場合や障害が発生した場合などである。そのような場合は、メモリからデータの読み出しが停止し、メモリにデータの書き込みのみ行われるため、メモリに次第にデータが溜まり始める。以下にメモリにデータが溜まり始め、ライト制御部が１つのクラスのデータを複数のメモリバンクにまたがって書き込むときの動作について説明する。
【００８７】
ここで、入力フレームの最大長を例えば１５００ｂｙｔｅとしたとき、各メモリバンクの残量が１５００ｂｙｔｅ以下になったとき、そのメモリバンクは満杯状態であると判断して、次のメモリバンクに書き込む制御を実施するものとする。これはライトアドレスを元に自動的に判断可能である。
【００８８】
以下の例は、メモリバンク＃４に関して説明したものであるが、図１４で説明したように、メモリバンク＃４においてライトアドレスが６２４６２６以上になったときは、新しいフレームを受信しても、メモリバンク＃４はオーバフローと判断してメモリバンク＃４の書き込みを停止する。説明は省略するが、他のメモリバンクについても同様である。
【００８９】
図１６は、メモリバンク＃１（クラスＡ）、メモリバンク＃２（クラスＢ）、メモリバンク＃３（クラスＣ）、メモリバンク＃４（クラスＤ）にデータが蓄えられている状態であり、メモリバンク＃４（クラスＤ）は満杯状態を示している。リードアドレス制御部（Ｒａｄｒ＿ｃｔｒ）は、例えばクラスＡであれば００００００〜１５６２４９の範囲にあるが、これは、メモリバンク＃１の任意のアドレス空間までデータが書き込まれているので、その任意のアドレス空間のアドレス値を示すためにこのような記載方法をとっている。
【００９０】
また、残量カウンタも、最小フレーム長６４ｂｙｔｅから最大フレーム長１５００ｂｙｔｅまでの間で変化するフレーム長によってカウント数も異なるので、全て６４ｂｙｔｅ長（ｍｉｎ）のフレームの場合のカウント値９７６５（＝５Ｍｂｉｔ÷６４ｂｙｔｅ）から、全て１５００ｂｙｔｅ（ｍａｘ）のフレームの場合のカウント値４１６（＝５Ｍｂｉｔ÷１５００ｂｙｔｅ）までの範囲の値が、１つのメモリバンクに格納されるフレームのフレーム数となる。ここで、Ｎ個のメモリバンクを使用してフレームを格納したとすると、全てのフレーム数はＮ×４１６からＮ×９７６５までのフレーム数となる。
【００９１】
続いて、図１７は図１６の状態から、新たにクラスＤのデータ６４ｂｙｔｅを受信し、クラスＤ用のメモリバンク情報の第２の領域に新たにメモリバンク＃５の識別情報“１００”及びその有効（Ｖａｌｉ）ビット“１”をセットし、メモリバンク＃５に対して空き無しの状態を示すメモリ管理ビット“１”をセットした状態を示している。
【００９２】
次に優先度に応じたメモリの書き込み及び廃棄について説明する。図１８は、より優先度の高いデータが入力されたとき、メモリ内部に既に蓄えられていた優先度の低いデータを廃棄し、該低優先度のデータ格納領域に、高優先データを上書きする動作例を示している。同図は、メモリバンク＃１（クラスＡ）は満杯、メモリバンク＃２（クラスＢ）、メモリバンク＃３（クラスＣ）、メモリバンク＃４（クラスＤ）、メモリバンク＃５（クラスＤ）、メモリバンク＃６（クラスＢ）にデータが蓄えられている状態を示している。
【００９３】
図１９は、図１８の状態からクラスＡの６４ｂｙｔｅデータを受信したときの動作状態を示している。図１８の状態からクラスＡの６４ｂｙｔｅデータを受信したとき、クラスＡのデータの書き込み可能なメモリバンクが無いので、受信したデータの優先度と既に書き込まれたデータの優先度と比較して、一番低い優先度のデータを廃棄する。
【００９４】
この動作例では、クラスＤのデータが書き込まれたメモリバンク＃４，＃５のデータを廃棄する。そして、クラスＤのメモリバンク情報のメモリバンク＃４，＃５に対応する第１及び第２の領域の有効（Ｖａｌｉｄ）ビットを“０”にクリアし、メモリ空き管理ビットにおけるメモリバンク＃４，＃５のビットも“０”にクリアし、クラスＤ用の残量カウンタも０にクリアする。このように、一番優先度の低いクラスの有効（Ｖａｌｉｄ）ビットが“１”となっているメモリバンクを空き有の状態にする。
【００９５】
図２０は、図１９の状態からクラスＡの６４ｂｙｔｅのデータを更に受信したときの動作状態を示している。図１９の状態からクラスＡのライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）をメモリバンク＃４のアドレス４６８７５０から４６８７６５にカウントアップして６４ｂｙｔｅのデータをメモリバンク＃４のメモリに書き込み、クラスＡのメモリバンク情報の第２の領域にメモリバンク＃４を示す“０１１”とその有効（Ｖａｌｉｄ）ビット“１”をセットし、メモリバンク＃４のメモリ空き管理ビットを“１”にセットする。
【００９６】
図２１は、メモリバンク＃４の満杯状態までクラスＡのデータの書き込み処理を実施している状態を示している。ライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）のアドレス値が６２４９９９（メモリバンク＃４の最大アドレス値）までカウントされた状態となる。
【００９７】
図２２は、更にクラスＡの６４ｂｙｔｅのデータを受信し、メモリバンク＃５にクラスＡのデータを書き込む処理を実施している状態を示している。ライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）は、メモリバンク＃５の先頭アドレス６２５０００から６２５０１５にカウントアップする。また、クラスＡのメモリバンク情報の第３の領域にメモリバンク＃５を示す“１００”をセットし、その有効（Ｖａｌｉｄ）ビットを“１”にセットし、メモリバンク＃５のメモリ空き管理ビットを“１”にセットする。
【００９８】
図２３は、メモリバンク＃５の満杯状態までクラスＡのデータの書き込み処理を行なった状態を示している。ライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）の値は、メモリバンク＃５の最終アドレスである７８１２４９となる。
【００９９】
図２４は、更に、クラスＡのデータを受信し、メモリに蓄えられている情報の中で受信データより優先度が低くかつ優先度の最も低いクラスＣのメモリバンク情報をクリアする動作を示している。メモリ空き管理ビットがメモリバンクの全てに対して“１”のときにフレームを受信すると、該受信フレームのクラスより優先度が低いクラスの中で最も低優先のクラスのメモリバンク情報の有効（Ｖａｌｉｄ）ビットが“１”となっているものを検出し、その有効（Ｖａｌｉｄ）ビットを“０”にクリアする。
【０１００】
この動作例では、クラスＣの有効（Ｖａｌｉｄ）ビットを“０”にクリアする。メモリバンク情報はメモリバンク＃３を示す“０１０”であるので、メモリ管理ビットにおけるメモリバンク＃３の値“０”にクリアする。また、クラスＣの残量カウンタを０にする。
【０１０１】
図２５は、クラスＡの６４ｂｙｔｅデータを受信し、メモリバンク＃３に書き込む動作例を示している。クラスＡのライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）は、メモリバンク＃３の先頭アドレス３１２５００から３１２５１５にカウントアップする。クラスＡのメモリバンク情報の第４領域にメモリバンク＃３を示す“０１０”をセットし、その有効ビット（Ｖａｌｉｄ）を“１”にセットする。また、メモリ空き管理ビットにおけるメモリバンク＃３のビットを“１”にセットする。このように優先度の高いデータは、低優先のデータがメモリに格納されている状態でも、その領域に優先してデータを蓄えることが可能となる。
【０１０２】
次に、上述の本発明の基本構成を変形した実施形態について説明する。第１の変形例は、クラス毎に最低限保証するメモリ領域と、使用可能な最大限のメモリ領域を設定する構成例である。最低限のメモリ領域及び最大限のメモリ領域の設定は、全クラスに対して任意に設定可能であるが、この構成例では、メモリで上書きされ廃棄されるのはクラスＣ，Ｄのみとし、クラスＡ，Ｂは一旦メモリに書き込まれれば上書きされないものとする。
【０１０３】
優先度の高いクラスＡ，Ｂは、メモリに空きが無くても常に低優先のデータに上書きされてメモリに書き込まれるが、メモリに空きが無い場合に使用可能なメモリ領域に上限を予め設定し、メモリに空きが無い場合に最大限使用可能なメモリ領域として上記の上限まで保証するものとする。クラスＣ，Ｄは、予め定めた最低限のメモリ領域は保障されるが、それ以上使用可能な領域は、メモリに空きが有る場合のみその空き領域の範囲で使用可能となる。こうすることにより、高優先クラスが独占的にメモリ領域を食いつぶしてしまうことを防止することができる。
【０１０４】
最低限使用可能なメモリ量の設定例として、各クラスは最低限４Ｍｂｉｔのメモリ量を常時使用可能とする。これにより、他の高優先クラスからの影響を受けることなく、全てのクラスは、最低限のメモリ量の使用が保証される。また、最大限使用可能メモリ量の設定例として、高優先クラスは１０Ｍのメモリ量まで常時使用できるものとする。
【０１０５】
以下に説明する第２の構成例において、メモリは図２６に示すように、２Ｍｂｉｔのメモリバンクを１５個使用するものとし、合計で３０Ｍｂｉｔのメモリ容量となる。各クラスは、最低限２個のメモリバンクを使用することができ、高優先クラスは最大限５個のメモリバンクを使用することができる。また、この構成例では説明を簡明化するために、固定長フレームのデータを扱うものとし、各メモリバンクには１０フレーム分のデータが蓄えられるものとする。
【０１０６】
従って、各メモリバンクは、１フレーム分の簡易アドレス換算でそれぞれ１０個のアドレス空間を有し、１フレームの書き込み及び読み出しに際し、ライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）及びリードアドレス制御部（Ｒａｄｒ＿ｃｔｒ）は、１つ分のアドレスをカウントアップするものとして以下の動作例を説明する。
【０１０７】
図２７は、上記の第２の構成例における初期状態を示している。また、同図に示すように第２の構成例では、メモリバンク毎にメモリ空き管理ビットと共に、使用中のクラスを示すクラス情報（００：クラスＡ、０１：クラスＢ、１０：クラスＣ、１１：クラスＤ）を保持するメモリが備えられる。その他の構成は前述の第１の構成例と同様である。
【０１０８】
図２８は、クラスＡのデータを受信し、クラスＡのメモリバンク情報の第１の領域にメモリバンク＃１を示す識別情報“００１”を格納し、その有効（Ｖａｌｉｄ）ビットを１にセットし、メモリ空き管理ビットのメモリバンク＃１に“１”にセットし、簡易残量カウンタを１にセットする。
【０１０９】
図２９は、クラスＡのデータを１０フレーム受信し、メモリバンク＃１にデータを格納し、簡易アドレス換算でライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）が９までカウントアップした状態を示している。以降の説明では、リード制御は停止しているものとして、メモリに受信データを蓄える処理について詳述する。
【０１１０】
図３０は、クラスＡのデータを５０フレーム受信し、メモリバンク＃１〜＃５にデータを格納し、簡易アドレス換算でライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）が４９までカウントアップし、クラスＡのメモリバンク情報の第１〜第５の領域にメモリバンク＃１〜＃５の識別情報を示す“０００１”〜“０１０１”を格納し、それらの有効（Ｖａｌｉｄ）ビットを１にセットし、メモリ空き管理ビットのメモリバンク＃１〜＃５に“１”にセットし、クラスＡの簡易残量カウンタを５０にセットした状態を示している。
【０１１１】
図３０は、更にクラスＢのデータを５０フレーム受信し、メモリバンク＃６〜＃１０にデータを格納し、簡易アドレス換算でライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）が５０から９９までカウントアップし、クラスＢのメモリバンク情報の第１〜第５の領域にメモリバンク＃６〜＃１０の識別情報を示す“０１１０”〜“１０１０”を格納し、それらの有効（Ｖａｌｉｄ）ビットを１にセットし、メモリ空き管理ビットのメモリバンク＃６〜＃１０に“１”にセットし、クラスＢの簡易残量カウンタを５０にセットした状態を示している。
【０１１２】
図３１は、図３０の状態に続いて、クラスＣのデータを５０フレーム受信し、メモリバンク＃１１〜＃１５にデータを格納し、簡易アドレス換算でライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）が１００から１４９までカウントアップし、クラスＣのメモリバンク情報の第１〜第５の領域にメモリバンク＃１１〜＃１５の識別情報を示す“１０１１”〜“１１１１”を格納し、それらの有効（Ｖａｌｉｄ）ビットを１にセットし、メモリ空き管理ビットのメモリバンク＃１１〜＃１５に“１”にセットし、クラスＣの簡易残量カウンタを５０にセットした状態を示している。
【０１１３】
図３２は、図３１の状態に続いて、クラスＤのデータを１０フレーム分受信したときの状態を示している。このとき、ライト制御部は、クラスＤのデータを蓄積する空きのメモリバンクが無いので、データ蓄積中のクラスの中で最も優先度の低いクラスＣが、使用しているメモリバンク＃１１のデータを破棄し、該メモリバンク＃１１をクラスＤのデータの蓄積にダイナミックに割り当てる。これは、クラスＤの最低限のメモリ領域を保証するためであり、また、クラスＣからメモリバンク＃１１の割当てを破棄しても、クラスＣには依然として最低限のメモリ領域が保証されるからである。
【０１１４】
上記により、クラスＤのライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）は、初期設定の３０からバンク＃１１の先頭アドレス１００に跳び越し、そこから１０９までカウントアップする。そして、クラスＣのメモリバンク情報の第１の領域のメモリバンク＃１１（識別情報“１０１１”の有効（Ｖａｌｉｄ）ビットを“０”にクリアし、クラスＤのメモリバンク情報として、第１の領域にメモリバンク＃１１を示す“１０１１”をセットし、その有効（Ｖａｌｉｄ）ビットを“１”にセットする。また、クラスＣの簡易残量カウンタは５０から４０に１０フレーム分をマイナスしてセットし、クラスＤの簡易残量カウンタを０から１０に１０フレーム分プラスしてセットする。
【０１１５】
図３３は、図３２の状態に続いて、更に、クラスＤのデータを１０フレーム分受信したときの状態を示している。この場合も図３２の動作例と同様に、ライト制御部は、クラスＤのデータを蓄積する空きのメモリバンクが無いので、データ蓄積中のクラスの中で最も優先度の低いクラスＣが、使用しているメモリバンク＃１２のデータを破棄し、該メモリバンク＃１２をクラスＤのデータの蓄積にダイナミックに割り当てる。
【０１１６】
そのため、クラスＤのライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）は、バンク＃１２の先頭アドレス１１０に移動し、そこから１１９までカウントアップする。そして、クラスＣのメモリバンク情報の第２の領域のメモリバンク＃１２（識別情報“１１００”の有効（Ｖａｌｉｄ）ビットを“０”にクリアし、クラスＤのメモリバンク情報として、第２の領域にメモリバンク＃１２を示す“１１００”をセットし、その有効（Ｖａｌｉｄ）ビットを“１”にセットする。また、クラスＣの簡易残量カウンタは４０から３０に１０フレーム分をマイナスしてセットし、クラスＤの簡易残量カウンタを１０から２０に１０フレーム分プラスしてセットする。
【０１１７】
図３４は、クラスＡ及びクラスＢのデータがそれぞれ最大限領域分の１０Ｍｂｉｔ分までを確保している状態で、且つ、クラスＣ及びクラスＤに対してそれぞれ最低限領域分の４Ｍｂｉｔ以上を確保し、更にクラスＣは合計で６Ｍｂｉｔの領域を使用している状態を示している。この状態では、メモリ３０Ｍｂｉｔの全てが使用され、空き領域が無いため、クラスＡ，Ｂ，Ｃ，Ｄの何れのデータが受信されてもオーバフローとなり、受信データは廃棄される。
【０１１８】
図３５は、高優先クラスのデータを、既に低優先クラスのデータが蓄積されているメモリバンクに書き込む場合、低優先クラスのデータを直ちに破棄することなく、まずは読み出しを終えた領域から書き込みを始めて、高優先クラスデータのライトポインタが、低優先クラスのデータのリードポインタに追いついた時に、低優先クラスのデータを廃棄する動作例を示している。
【０１１９】
即ち、クラスＣのデータが蓄積されたメモリバンクの空き領域に、クラスＡのデータを書き込む。ライトポインタの位置がＣのリードポインタの位置にくるまで、クラスＣのデータはそのままの状態である。クラスＣのデータのリードポインタの位置に来ると、クラスＡのデータを優先して、クラスＣのデータは全廃棄するが、ポインタが重なるまでの間は、クラスＡ及びクラスＣのデータは同一のメモリバンクを使用する。
【０１２０】
クラスＡのデータのライトポインタが、クラスＣのデータのリードポインタに追いつくまでの間に、クラスＣのデータの読み出しが完了すれば、クラスＣのデータは廃棄されることなく、同一のメモリバンク中でメモリを共有し、メモリを有効利用することができる。
【０１２１】
図３６〜図３８は、図３５で説明した動作の具体例を示している。図３６は、前述の第１の構成例において、全てのメモリバンクにデータが蓄えられ、クラスＡのデータはメモリバンク＃１，＃４，＃５に蓄えられ、クラスＣのデータはメモリバンク＃３に蓄え、クラスＣのライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）が、メモリバンク＃３のアドレス４０００００から４０００１５にカウントアップしてクラスＣの６４ｂｙｔｅの受信データを書き込む動作状態を示している。各クラスのメモリバンク情報、残量カウンタ、各メモリバンクのメモリ空き管理ビットは同図に示すようにセットされる。
【０１２２】
図３７は、上記の図３６の状態から、クラスＡの６４ｂｙｔｅデータを受信したときの動作状態を示し、メモリバンク＃３には同図に示すように、クラスＡのデータ（６４ｂｙｔｅ）をアドレス３１２５００−３１２５１５に書き込み、クラスＣのデータ（６４ｂｙｔｅ）をアドレス４０００００−４０００１５に書き込みを行っている動作例を示している。
【０１２３】
図３８は、図３７の状態の後、更にクラスＡのデータを受信して、アドレス３９９９９９までデータを格納して、既にクラスＣのデータが格納されているアドレス４０００００にデータを書き込むときに、クラスＣのデータを廃棄して、クラスＡデータを上書き処理する。そして、クラスＣのメモリバンク情報を“１”から“０”にクリアし、クラスＣの残量カウンタも０にクリアする。
【０１２４】
このように、優先度の異なるクラスのデータも同一のメモリバンクに書き込むことが可能で、先に説明した実施形態では、同一メモリバンク内で優先度の異なるクラスのデータを蓄えることはできなかったが、上記のようにクラス毎のポインタを参照し合うことにより、同一メモリバンク内で互いのポインタが重なる寸前まで異なるクラスのデータを蓄えることができ、メモリの有効使用が可能となる。
【０１２５】
これは、クラスＡのライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）のアドレスとクラスＣのリードアドレス制御部（Ｒａｄｒ＿ｃｔｒ）のアドレスとを比較し、クラスＡのライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）のアドレスが、クラスＣのリードアドレス制御部（Ｒａｄｒ＿ｃｔｒ）のアドレス未満であれば、同一のメモリバンクにクラスの異なるデータを共存させることができる。
【０１２６】
図３９は、前述の図３５等で説明した動作をパケット単位で行う方式を示した図である。図３９の（ｉ）に示す第１の状態ように、既にクラスＣのデータが蓄えられたメモリバンクの空き領域にクラスＡのライトポインタをセットした第１の状態から、該空き領域にクラスＡの１パケットを書き込むと、同図の（ii）に示す第２の状態となる。
【０１２７】
上記第２の状態からクラスＡのパケットを合計４パケット書き込むと同図の（iii）に示す第３の状態となり、クラスＡのライトポインタがクラスＣのリードポインタに追いついた状態となる。この第３の状態から、クラスＡのパケットを１パケット書き込むときに、クラスＣのパケットを全ては廃棄するのではなく、１パケット単位に廃棄して、クラスＡのパケットは優先してメモリに書き込むものの、クラスＣのパケットもできる限り生かす構成とすることができる。
【０１２８】
図４０以降に、上記のパケット単位で廃棄を行う構成を詳述する。なお、説明を簡単にするために、固定長のフレームが処理されるものとする。さらに、前提条件として、クラスＣ及びクラスＤの低優先のデータは優先順位の高いクラスＡ及びクラスＢのデータによって上書きされるが、クラスＡ及びクラスＢのデータは上書きされない構成とする。このため、上書きされる可能性のあるクラスＣ及びクラスＤのポインタ管理を行う。
【０１２９】
このポインタ管理のための情報を記憶するメモリが必要となり、その容量は以下のようになる。前述のクラス毎のメモリバンク情報用に代わるものとして、クラスＣ及びクラスＤに対して、ｂｉｔ幅が２４ｂｉｔのポイント管理情報の格納領域を例えば２０個分有するメモリを用意する。ここで、ｂｉｔ幅２４ｂｉｔは、先頭ポインタの２０ｂｉｔ分とメモリバンクの識別情報の３ｂｉｔ分と有効（Ｖａｌｉｄ）ビットの１ｂｉｔ分である。
【０１３０】
先頭ポインタの２０ｂｉｔは、５Ｍｂｉｔのメモリバンクを６個使用し、１アドレスに３２ｂｉｔ（＝１ｗｏｒｄ）のデータを格納するものとすると、１メモリバンク当たり１５６２５０アドレスとなり、６個のメモリバンク全体で９３７５００（＝１５６２５０×６）（ｄｅｃ）＝Ｅ４Ｅ１Ｃ（ｈｅｘ）のアドレス空間となり、これを表すのに２０ｂｉｔ必要となる。
【０１３１】
図４１は、６個の全てのメモリバンクにデータが蓄えられ、クラスＣのデータがメモリバンク＃３に２フレーム分格納され、それぞれアドレス３１２５００−３１２５１５及び３１２５１６−３１２５３１に蓄えられている状態である。クラスＣのポインタ管理情報には、第１のフレームに対して先頭ポインタを示す３１２５００、メモリバンク＃３を示す“０１０”、有効（Ｖａｌｉｄ）ビット“１”がセットされ、第２のフレームに対して先頭ポインタを示す３１２５１６、メモリバンク＃３を示す“０１０”、有効（Ｖａｌｉｄ）ビット“１”がセットされる。その他の情報としては、これまでの説明で示した動作例と同様であるため説明を省略する。
【０１３２】
図４２は、図４１の状態からクラスＡのデータを受信し、クラスＣのデータに上書きする動作状態を示している。クラスＡの６４ｂｙｔｅデータを受信すると、上述したように優先度の低いクラスＣの第１のフレームが格納されているアドレス３１２５００−３１２５１５のデータを廃棄し、そこにクラスＡのデータを格納し、クラスＣのポインタ管理情報の第１フレームの有効（Ｖａｌｉｄ）ビットを“０”にクリアする。
【０１３３】
しかし、クラスＣの第２のフレームが格納されているアドレス３１２５１６−３１２５３１のデータは破棄することなく、ポインタ管理情報の第２フレームの有効（Ｖａｌｉｄ）ビットは“１”のまま保持し、クラスＣの残量カウンタは２から１にカウントダウンする。
【０１３４】
図４３は、図４２の状態から更にクラスＡのデータを受信したときの動作状態を示す。クラスＡの６４ｂｙｔｅデータをさらに受信すると、クラスＣの前記第２のフレームが格納されていたアドレス３１２５１６−３１２５３１のデータを廃棄し、そのアドレス３１２５１６−３１２５３１にクラスＡのデータ（６４ｂｙｔｅ）を格納する。そして、クラスＣの残量カウンタを１から０にカウントダウンし、クラスＣのポインタ管理情報の第２フレームの有効（Ｖａｌｉｄ）ビットを“０”にクリアする。
【０１３５】
このようにフレーム（パケット）単位でライトポインタ及びリードポインタを管理することにより、メモリバンクの任意のアドレスに書き込まれたフレームの先頭番地を参照し、そのポインタ値と新たに受信したフレームの書き込みアドレスとを比較し、フレームバイフレームで優先処理を行い、かつ、メモリの有効利用化を図ることができる。
【図面の簡単な説明】
【０１３６】
【図１】本発明によるダイナミックメモリ管理方式のメモリ構成を示す図である。
【図２】本発明によるクラスバッファ固定割り当ての実施形態を示す図である。
【図３】本発明によるクラスバッファ・予備領域ダイナミック割り当ての実施形態を示す図である。
【図４】本発明の実施形態を実現する回路構成例を示す図である。
【図５】本発明におけるクラス判定の具体例を示す図である。
【図６】本発明の第１の構成例における各メモリのデータ構成を示す図である。
【図７】本発明の第１の構成例における各メモリの初期状態を示す図である。
【図８】第１のケース（クラスＡの６４ｂｙｔｅデータ受信・ライト動作完了状態）を示す図である。
【図９】第２のケース（第１のケースの動作後のクラスＡの６４ｂｙｔｅデータ受信・リード動作完了状態）を示す図である。
【図１０】第３のケース（クラスＢの１５００ｂｙｔｅデータ受信・ライト動作完了状態）を示す図である。
【図１１】第４のケース（クラスＢの１５００ｂｙｔｅデータ受信・リード動作中の状態）を示す図である。
【図１２】第５のケース（クラスＢの１５００ｂｙｔｅデータ受信・リード動作状態且つクラスＣの６４ｂｙｔｅデータ受信ライト動作完了状態）を示す図である。
【図１３】第６のケース（クラスＢの１５００ｂｙｔｅデータ受信・リード動作状態且つクラスＣの第２の６４ｂｙｔｅデータ受信・ライト動作完了状態）を示す図である。
【図１４】メモリバンク満杯状態の判定手法の一例を示す図である。
【図１５】クラスＡの６４ｂｙｔｅフレーム受信時の基本的な動作の処理フローを示す図である。
【図１６】メモリバンク＃１〜＃４にクラスＡ〜Ｄのデータが蓄えられ、メモリバンク＃４（クラスＤ）が満杯の動作状態を示す図である。
【図１７】図１６の状態から新たにクラスＤのデータ６４ｂｙｔｅを受信したときの動作状態を示す図である。
【図１８】高優先データを上書きする動作例を示す図である。
【図１９】図１８の状態からクラスＡの６４ｂｙｔｅデータを受信したときの動作状態を示す図である。
【図２０】図１９の状態からクラスＡの６４ｂｙｔｅのデータを更に受信したときの動作状態を示す図である。
【図２１】メモリバンク＃４の満杯状態までクラスＡのデータの書き込み処理を実施する動作状態を示す図である。
【図２２】更にクラスＡの６４ｂｙｔｅのデータを受信し、メモリバンク＃５にクラスＡのデータを書き込む処理を実施する動作状態を示す図である。
【図２３】メモリバンク＃５の満杯状態までクラスＡのデータの書き込み処理を行なった動作状態を示す図である。
【図２４】更に、クラスＡのデータを受信し、クラスＣのメモリバンク情報をクリアする動作状態を示す図である。
【図２５】クラスＡの６４ｂｙｔｅデータを受信し、メモリバンク＃３に書き込む動作例を示す図である。
【図２６】本発明におけるメモリバンクの第２の構成例を示す図である。
【図２７】本発明における第２の構成例におけるメモリの初期状態を示す図である。
【図２８】第２の構成例におけるクラスＡのデータを受信した動作状態を示す図である。
【図２９】第２の構成例におけるクラスＡのデータを１０フレーム受信した動作状態を示す図である。
【図３０】第２の構成例におけるクラスＡのデータを５０フレーム受信し、更にクラスＢのデータを５０フレーム受信した動作状態を示す図である。
【図３１】図３０の状態に続いて、クラスＣのデータを５０フレーム受信した動作状態を示す図である。
【図３２】図３１の状態に続いて、クラスＤのデータを１０フレーム分受信した動作状態を示す図である。
【図３３】図３２の状態に続いて、更にクラスＤのデータを１０フレーム分受信した動作状態を示す図である。
【図３４】クラスＡ，Ｂに最大限領域分までを確保し、クラスＣ，Ｄに最低限領域分を確保した動作状態示す図である。
【図３５】高優先クラスのデータをメモリバンクに書き込む場合、低優先クラスのデータを直ちに破棄することなく書き込む動作例を示す図である。
【図３６】全てのメモリバンクにデータが蓄えられ、クラスＣの６４ｂｙｔｅの受信データを書き込む動作状態を示す図である。
【図３７】図３６の状態からクラスＡの６４ｂｙｔｅデータを受信したときの動作状態を示す図である。
【図３８】図３７の状態の後、更にクラスＡのデータを受信したときの動作状態を示す図である。
【図３９】高優先クラスのデータをメモリバンクに書き込む場合、低優先クラスのデータを直ちに破棄することなく、パケット単位で書き込む方式を示す図である。
【図４０】高優先クラスのデータをメモリバンクに書き込む場合、低優先クラスのデータを直ちに破棄することなく、パケット単位で書き込む動作例を示す図である。
【図４１】全てのメモリバンクにデータが蓄えられ、クラスＣのデータがメモリバンク＃３に２フレーム分蓄えられている状態を示す図である。
【図４２】図４１の状態からクラスＡのデータを受信し、クラスＣのデータに上書きする動作状態を示す図である。
【図４３】図４２の状態から更にクラスＡのデータを受信したときの動作状態を示す図である。
【図４４】本発明が好適に適用されるシステムの一例を示す図である。
【図４５】多重装置から入力されたデータを他のステーションへ出力する機能ブロックを示す図である。
【図４６】他のステーションから入力されたフレームデータを多重装置に出力する機能ブロックを示す図である。
【図４７】他のステーションから入力されたフレームデータを別の他のステーションに出力する機能ブロックを示す図である。
【図４８】ステーションの内部構成を示す図である。
【図４９】個別メモリ管理方式を示す図である。
【図５０】シェアードメモリ管理方式を示す図である。
【符号の説明】
【０１３７】
１−１  メモリ
１−２  ポリサ（ライト制御部）
１−３  スケジューラ（リード制御部）
４−１  フレーム識別部
４−２  ライト制御部
４−３  メモリ空き管理ビット
４−４  メモリバンク情報部
４−５  有効（Ｖａｌｉｄ)ビット
４−６  残量カウンタ
４−７  ライトアドレス制御部（Ｗａｄｒ＿ｃｔｒ）
４−８  メモリバンク
４−９  リードアドレス制御部（Ｒａｄｒ＿ｃｔｒ）
４−１０  リード制御部
【図１】
2008077401.tif 000003
【図２】
2008077401.tif 000004
【図３】
2008077401.tif 000005
【図４】
2008077401.tif 000006
【図５】
2008077401.tif 000007
【図６】
2008077401.tif 000008
【図７】
2008077401.tif 000009
【図８】
2008077401.tif 000010
【図９】
2008077401.tif 000011
【図１０】
2008077401.tif 000012
【図１１】
2008077401.tif 000013
【図１２】
2008077401.tif 000014
【図１３】
2008077401.tif 000015
【図１４】
2008077401.tif 000016
【図１５】
2008077401.tif 000017
【図１６】
2008077401.tif 000018
【図１７】
2008077401.tif 000019
【図１８】
2008077401.tif 000020
【図１９】
2008077401.tif 000021
【図２０】
2008077401.tif 000022
【図２１】
2008077401.tif 000023
【図２２】
2008077401.tif 000024
【図２３】
2008077401.tif 000025
【図２４】
2008077401.tif 000026
【図２５】
2008077401.tif 000027
【図２６】
2008077401.tif 000028
【図２７】
2008077401.tif 000029
【図２８】
2008077401.tif 000030
【図２９】
2008077401.tif 000031
【図３０】
2008077401.tif 000032
【図３１】
2008077401.tif 000033
【図３２】
2008077401.tif 000034
【図３３】
2008077401.tif 000035
【図３４】
2008077401.tif 000036
【図３５】
2008077401.tif 000037
【図３６】
2008077401.tif 000038
【図３７】
2008077401.tif 000039
【図３８】
2008077401.tif 000040
【図３９】
2008077401.tif 000041
【図４０】
2008077401.tif 000042
【図４１】
2008077401.tif 000043
【図４２】
2008077401.tif 000044
【図４３】
2008077401.tif 000045
【図４４】
2008077401.tif 000046
【図４５】
2008077401.tif 000047
【図４６】
2008077401.tif 000048
【図４７】
2008077401.tif 000049
【図４８】
2008077401.tif 000050
【図４９】
2008077401.tif 000051
【図５０】
2008077401.tif 000052