(57)【要約】【課題】ＤＲＡＭアクセスに関する実効スループットの低下を抑制する。【解決手段】記録装置３０に第２のＤＲＡＭアクセス部３８を備え、キューと対応するキュー制御メモリ３３の個別のロウアドレスで当該キューのキュー制御情報を記録し、書込対象キューに通信データを書き込む際、キュー制御メモリ３３のバンクのうち当該書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択して当該キュー制御情報を書き込み、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後に当該キュー制御情報を書き込む。【選択図】  図１
2019032727.tif 000002
【特許請求の範囲】
【請求項１】
順次入力される通信データに、当該通信データを出力すべき出力系統と対応するキューを示すキュー指定情報を付加して多重化する多重化装置と、前記多重化装置から転送された前記通信データを、データメモリ内に論理的に形成した複数のキューのうち前記キュー指定情報で指定された書込対象キューへ一時蓄積する記録装置と、前記キューのうち優先制御ロジックに基づき選択した出力系統と対応する読出対象キューから前記通信データを読み出し、当該出力系統と対応する出力ポートの通信速度に変換して出力する多重分離装置とを備える通信用入出力装置であって、
前記記録装置は、
バンクごとに複数のロウアドレスを有するＤＲＡＭからなり、前記キューと対応する個別のロウアドレスで当該キューの通信データを記憶する前記データメモリと、
前記書込対象キューに前記通信データを書き込む際、前記バンクのうち当該書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択して当該通信データを書き込み、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後に当該通信データを書き込む第１のＤＲＡＭアクセス部と、
バンクごとに複数のロウアドレスを有するＤＲＡＭからなり、前記データメモリの前記キューに対する書き込み・読み出しを制御する際に用いるキュー制御情報を記憶するキュー制御メモリと、
前記キュー制御メモリのキュー制御情報に基づいて、前記多重化装置から転送された前記通信データの前記書込対象キューに対する書き込みを前記第１のＤＲＡＭアクセス部に指示する書込制御部と、
前記キュー制御メモリのキュー制御情報に基づいて、前記読出対象キューからの通信データの読み出しを前記第１のＤＲＡＭアクセス部に指示し、読み出した通信データを前記多重分離装置へ転送する読出制御部と、
前記キューと対応する前記キュー制御メモリの個別のロウアドレスで当該キューのキュー制御情報を記録し、前記書込対象キューに前記通信データを書き込む際、キュー制御メモリのバンクのうち当該書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択して当該キュー制御情報を書き込み、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後に当該キュー制御情報を書き込む第２のＤＲＡＭアクセス部と
を備えることを特徴とする通信用入出力装置。
【請求項２】
請求項１に記載の通信用入出力装置において、
前記記録装置は、前記キューと前記データメモリの前記バンクとの組み合わせごとに、当該キューの通信データを当該バンクに書き込む際にコラムアドレスとして用いる書込ポインタ値を記憶する第１のバンク管理メモリをさらに備え、
前記書込制御部は、前記通信データを書き込む際、前記書込対象ロウアドレスと前記書込対象バンクとの組み合わせに対応する書込ポインタ値を前記第１のバンク管理メモリから取得し、当該書込対象バンクの当該書込対象ロウアドレスのうち、当該書込ポインタ値からなるコラムアドレスに当該通信データを書き込む
ことを特徴とする通信用入出力装置。
【請求項３】
請求項１または請求項２に記載の通信用入出力装置において、
前記記録装置は、前記キューと前記キュー制御メモリの前記バンクとの組み合わせごとに、当該キューのキュー制御情報を当該バンクに書き込む際にコラムアドレスとして用いる書込ポインタ値を記憶する第２のバンク管理メモリをさらに備え、
前記書込制御部は、前記キュー制御情報を書き込む際、前記書込対象ロウアドレスと前記書込対象バンクとの組み合わせに対応する書込ポインタ値を前記第２のバンク管理メモリから取得し、当該書込対象バンクの当該書込対象ロウアドレスのうち、当該書込ポインタ値からなるコラムアドレスに当該キュー制御情報を書き込む
ことを特徴とする通信用入出力装置。
【請求項４】
請求項２に記載の通信用入出力装置において、
前記書込制御部は、前記キュー制御情報を書き込む際、前記通信データの書き込みに使用した、前記書込対象ロウアドレス、前記書込対象バンク、及び、書込ポインタ値を、前記キュー制御情報の書込対象ロウアドレス、書込対象バンク、及び、書込対象コラムアドレスとして前記キュー制御情報を書き込むことを特徴とする通信用入出力装置。
【請求項５】
請求項１〜請求項４のいずれかに記載の通信用入出力装置において、
前記キュー制御メモリは、仮想データメモリ上で用いられる仮想格納アドレスに書き込まれた通信データに後続する通信データの格納バンクを記憶し、前記キューごとに、当該キューの先頭および最終の通信データが書き込まれているバンクを記憶し、
前記書込制御部は、前記書込対象キューに前記通信データを書き込む際、当該書込対象キューのキュー最終バンク、書込前の最終データに後続するデータの格納バンクをそれぞれ更新し、
前記読出制御部は、前記読出対象キューから前記通信データを読み出す際、当該読出対象キューのキュー先頭バンクの読出ポインタ値に対する当該通信データの読み出しを前記第１のＤＲＡＭアクセス部に指示し、当該読出対象キューのキュー先頭バンクを更新する
ことを特徴とする通信用入出力装置。
【請求項６】
請求項１〜請求項５のいずれかに記載の通信用入出力装置において、
前記記録装置は、
前記キューごとに、当該キューが使用している前記仮想データメモリ上での仮想格納アドレスの数を示す使用アドレス数を記憶するキュー使用アドレス数メモリと、
前記書込対象キューに前記通信データを書き込む際、当該通信データのデータ長に基づき、書き込みに必要となる仮想格納アドレスの数を示す必要アドレス数を算出し、前記キュー使用アドレス数メモリから取得した当該書込対象キューの使用アドレス数に基づき、当該書き込みに使用可能な仮想格納アドレスの数を示す残りアドレス数を算出し、当該必要アドレス数と当該残りアドレス数とを比較することにより当該通信データの書込可否を判定し、書込可の判定に応じて前記書込制御部に対して当該通信データの書き込みを指示するアクセス調停部と
をさらに備えることを特徴とする通信用入出力装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信技術に関し、特に通信データ（フレームデータ）の入出力を行う通信用入出力装置で用いられるメモリアクセス制御技術に関する。
【背景技術】
【０００２】
従来、インターネット等のデータ通信で使用されて、例えばイーサネット（登録商標）のフレームデータ等の通信データを入出力するための通信用入出力装置として、例えば、特許文献１のような構成が提案されている。図２８は、従来の通信用入出力装置（内蔵メモリ）の構成を示すブロック図である。
この通信用入出力装置は、多重化装置ＭＵＸ、記録装置ＭＥＭ、および多重分離装置ＤＥＭＵＸから構成されている。
【０００３】
ＭＵＸは、入力ポートごとに設けられたキュー指定情報付加部により、入力されたフレームデータに対して、当該フレームデータの出力先に対応するキュー指定情報を付加した後、多重化部により多重化して出力する。
ＭＥＭは、ＭＵＸから時分割多重で出力されたフレームデータを書込制御部により受け取り、各フレームデータに付加されているキュー指定情報とキューマップとを参照し、内蔵するデータメモリ内にフレームデータの出力先ごとに論理的に設けたキューのうち、キュー指定情報と対応するキューのアドレスへフレームデータを書き込む。また、ＭＥＭは、ＤＥＭＵＸからの読出指示に応じて、読出制御部により対応するキューからフレームデータを読み出して、ＤＥＭＵＸに出力する。
【０００４】
ＤＥＭＵＸは、読出部により、出力ポートごとの優先制御ロジックに基づき、ＭＥＭ内の優先出力ポートに対応する出力先のキューからフレームデータを読み出して、振分部により対応する出力ポートへ振り分け、出力ポートごとに設けられた速度変換部により当該出力ポートの通信速度に変換して出力する。
【０００５】
図２９は、キューと出力ポートとの対応を示す説明図であり、出力ポート数が３の場合が示されている。図２９（ａ）では、キューと出力ポートとが１対１に対応付けられているが、図２９（ｂ）のように、１対多に対応付けることにより、１つのフレームデータを複数の出力ポートが出力する場合に対応可能となる。また、図２９（ｃ）のように、出力ポートごとに、読出優先度に応じたキューを対応付けることもできる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−０１０１９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
このような通信用入出力装置では、出力系統の増加に応じてＭＥＭで必要とされる記憶容量が増大するため、データメモリとしてＤＲＡＭが用いられる。しかしながら、ＤＲＡＭのアクセスには、各バンクにおけるロウアドレスの活性化に起因して待ち時間が発生するため、場合によっては、ＤＲＡＭアクセスの実効スループットが極端に低下して、フレームデータの処理速度に追従できなくなり、通信品質が劣化するという問題点があった。
【０００８】
一般に、ＤＲＡＭでは、任意のバンクの任意のロウアドレスにデータを書き込む場合、当該バンクにおいて当該ロウアドレスを活性化する必要があり、同一バンクの異なるロウアドレスにアクセスする場合には、当該ロウアドレスを用いたアクセスが完了するのを待ってから、新たなロウアドレスを活性化する必要があるため、同一バンクへのアクセスにおいて、ロウアドレスの活性化に起因して比較的大きな待ち時間が発生する。具体的には、同一バンクの異なるロウアドレスへのアクセスが連続した場合である。その他に待ち時間が発生する条件として、読み出し後の同一バンクに書き込みを行う場合、および、書き込み後の同一バンクから読み出しを行う場合がある。
【０００９】
したがって、これら待ち時間がＤＲＡＭアクセスに関する実効スループットの低下原因となる。このため、特に、通信用入出力装置においては、短いフレームデータがバースト的に連続して入力される場合があり、このようなケースにおいて、頻繁に同一バンクの異なるロウアドレスへアクセスを行った場合、極端に実効スループットが低下する可能性がある。
【００１０】
本発明はこのような課題を解決するためのものであり、ＤＲＡＭアクセスに関する実効スループットの低下を抑制できるメモリアクセス制御技術を提供することを目的としている。
【課題を解決するための手段】
【００１１】
このような目的を達成するために、本発明にかかる通信用入出力装置は、順次入力される通信データに、当該通信データを出力すべき出力系統と対応するキューを示すキュー指定情報を付加して多重化する多重化装置と、前記多重化装置から転送された前記通信データを、データメモリ内に論理的に形成した複数のキューのうち前記キュー指定情報で指定された書込対象キューへ一時蓄積する記録装置と、前記キューのうち優先制御ロジックに基づき選択した出力系統と対応する読出対象キューから前記通信データを読み出し、当該出力系統と対応する出力ポートの通信速度に変換して出力する多重分離装置とを備える通信用入出力装置であって、前記記録装置は、バンクごとに複数のロウアドレスを有するＤＲＡＭからなり、前記キューと対応する個別のロウアドレスで当該キューの通信データを記憶する前記データメモリと、前記書込対象キューに前記通信データを書き込む際、前記バンクのうち当該書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択して当該通信データを書き込み、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後に当該通信データを書き込む第１のＤＲＡＭアクセス部と、バンクごとに複数のロウアドレスを有するＤＲＡＭからなり、前記データメモリの前記キューに対する書き込み・読み出しを制御する際に用いるキュー制御情報を記憶するキュー制御メモリと、前記キュー制御メモリのキュー制御情報に基づいて、前記多重化装置から転送された前記通信データの前記書込対象キューに対する書き込みを前記第１のＤＲＡＭアクセス部に指示する書込制御部と、前記キュー制御メモリのキュー制御情報に基づいて、前記読出対象キューからの通信データの読み出しを前記第１のＤＲＡＭアクセス部に指示し、読み出した通信データを前記多重分離装置へ転送する読出制御部と、前記キューと対応する前記キュー制御メモリの個別のロウアドレスで当該キューのキュー制御情報を記録し、前記書込対象キューに前記通信データを書き込む際、キュー制御メモリのバンクのうち当該書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択して当該キュー制御情報を書き込み、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後に当該キュー制御情報を書き込む第２のＤＲＡＭアクセス部とを備えている。
【００１２】
また、本発明にかかる上記通信用入出力装置の一構成例は、前記記録装置が、前記キューと前記データメモリの前記バンクとの組み合わせごとに、当該キューの通信データを当該バンクに書き込む際にコラムアドレスとして用いる書込ポインタ値を記憶する第１のバンク管理メモリをさらに備え、前記書込制御部は、前記通信データを書き込む際、前記書込対象ロウアドレスと前記書込対象バンクとの組み合わせに対応する書込ポインタ値を前記第１のバンク管理メモリから取得し、当該書込対象バンクの当該書込対象ロウアドレスのうち、当該書込ポインタ値からなるコラムアドレスに当該通信データを書き込むようにしたものである。
【００１３】
また、本発明にかかる上記通信用入出力装置の一構成例は、前記記録装置が、前記キューと前記キュー制御メモリの前記バンクとの組み合わせごとに、当該キューのキュー制御情報を当該バンクに書き込む際にコラムアドレスとして用いる書込ポインタ値を記憶する第２のバンク管理メモリをさらに備え、前記書込制御部は、前記キュー制御情報を書き込む際、前記書込対象ロウアドレスと前記書込対象バンクとの組み合わせに対応する書込ポインタ値を前記第２のバンク管理メモリから取得し、当該書込対象バンクの当該書込対象ロウアドレスのうち、当該書込ポインタ値からなるコラムアドレスに当該キュー制御情報を書き込むようにしたものである。
【００１４】
また、本発明にかかる上記通信用入出力装置の一構成例は、前記書込制御部が、前記キュー制御情報を書き込む際、前記通信データの書き込みに使用した、前記書込対象ロウアドレス、前記書込対象バンク、及び、書込ポインタ値を、前記キュー制御情報の書込対象ロウアドレス、書込対象バンク、及び、書込対象コラムアドレスとして前記キュー制御情報を書き込むようにしたものである。
【００１５】
また、本発明にかかる上記通信用入出力装置の一構成例は、前記キュー制御メモリが、仮想データメモリ上で用いられる仮想格納アドレスに書き込まれた通信データに後続する通信データの格納バンクを記憶し、前記キューごとに、当該キューの先頭および最終の通信データが書き込まれているバンクを記憶し、前記書込制御部は、前記書込対象キューに前記通信データを書き込む際、当該書込対象キューのキュー最終バンク、書込前の最終データに後続するデータの格納バンクをそれぞれ更新し、前記読出制御部は、前記読出対象キューから前記通信データを読み出す際、当該読出対象キューのキュー先頭バンクの読出ポインタ値に対する当該通信データの読み出しを前記第１のＤＲＡＭアクセス部に指示し、当該読出対象キューのキュー先頭バンクを更新するようにしたものである。
【００１６】
また、本発明にかかる上記通信用入出力装置の一構成例は、前記記録装置が、前記キューごとに、当該キューが使用している前記仮想データメモリ上での仮想格納アドレスの数を示す使用アドレス数を記憶するキュー使用アドレス数メモリと、前記書込対象キューに前記通信データを書き込む際、当該通信データのデータ長に基づき、書き込みに必要となる仮想格納アドレスの数を示す必要アドレス数を算出し、前記キュー使用アドレス数メモリから取得した当該書込対象キューの使用アドレス数に基づき、当該書き込みに使用可能な仮想格納アドレスの数を示す残りアドレス数を算出し、当該必要アドレス数と当該残りアドレス数とを比較することにより当該通信データの書込可否を判定し、書込可の判定に応じて前記書込制御部に対して当該通信データの書き込みを指示するアクセス調停部とをさらに備えている。
【発明の効果】
【００１７】
本発明によれば、多重化装置から転送された通信データを、データメモリ内に論理的に形成した複数のキューのうちキュー指定情報で指定された書込対象キューへ一時蓄積する記録装置において、データメモリをＤＲＡＭで構成した場合でも、ロウアドレスの活性化回数を低減することができる。このため、データメモリ用のＤＲＡＭアクセスに関する実効スループットの低下を抑制することが可能となる。
【図面の簡単な説明】
【００１８】
【図１】第１の実施の形態にかかる通信用入出力装置の構成を示すブロック図である。
【図２】第１の実施の形態にかかるキュー制御メモリの構成を示すブロック図である。
【図３】第１の実施の形態にかかる第１のＤＲＡＭアクセス部（ＤＭ用）の構成を示すブロック図である。
【図４】第１の実施の形態にかかる第２のＤＲＡＭアクセス部（ＱＭ用）の構成を示すブロック図である。
【図５】第１の実施の形態にかかる書込制御部の書込動作を示すフローチャートである。
【図６】第１の実施の形態にかかる読出制御部の読出動作を示すフローチャートである。
【図７】データＰ２−１読出直前のキュー制御情報（その１）を示す説明図である。
【図８】データＰ２−１読出直前のキュー制御情報（その２）を示す説明図である。
【図９】データＰ２−１読出直前のキュー制御情報（その３）を示す説明図である。
【図１０】データＰ２−１読出時におけるキュー制御情報の変化（その１）を示す説明図である。
【図１１】データＰ２−１読出時におけるキュー制御情報の変化（その２）を示す説明図である。
【図１２】データＰ２−１読出時におけるキュー制御情報の変化（その３）を示す説明図である。
【図１３】データＰ２−２読出時におけるキュー制御情報の変化（その１）を示す説明図である。
【図１４】データＰ２−２読出時におけるキュー制御情報の変化（その２）を示す説明図である。
【図１５】データＰ２−２読出時におけるキュー制御情報の変化（その３）を示す説明図である。
【図１６】データＰ２−４書込時におけるキュー制御情報の変化（その１）を示す説明図である。
【図１７】データＰ２−４書込時におけるキュー制御情報の変化（その２）を示す説明図である。
【図１８】データＰ２−４書込時におけるキュー制御情報の変化（その３）を示す説明図である。
【図１９】ＤＲＡＭ書込処理を示すフローチャートである。
【図２０】ＤＲＡＭ読出処理を示すフローチャートである。
【図２１】第２の実施の形態にかかるアクセス調停部の構成を示すブロック図である。
【図２２】判定用アドレス数情報の構成例である。
【図２３】第２の実施の形態にかかる書込可否判定処理を示すフローチャートである。
【図２４】第３の実施の形態にかかるＱＭの構成を示すブロック図である。
【図２５】第３の実施の形態にかかるＱＳＡ、ＱＬＡ、ＱＣＮ、および、Ｗ／Ｒポインタの構成を示すブロック図である。
【図２６】第３の実施の形態にかかる書込制御部の書込動作を示すフローチャートである。
【図２７】第３の実施の形態にかかる読出制御部の読出動作を示すフローチャートである。
【図２８】従来の通信用入出力装置（内蔵メモリ）の構成を示すブロック図である。
【図２９】キューと出力ポートとの対応を示す説明図である。
【発明を実施するための形態】
【００１９】
次に、本発明の実施の形態について図面を参照して説明する。
［第１の実施の形態］
まず、図１を参照して、本発明の第１の実施の形態にかかる通信用入出力装置１について説明する。図１は、第１の実施の形態にかかる通信用入出力装置の構成を示すブロック図である。
【００２０】
この通信用入出力装置１は、インターネット通信等で使用されて、例えばイーサネット（登録商標）のフレームデータ等の通信データを入出力するための通信用入出力装置であり、１つまたは複数の入力ポートから入力された通信データを、その通信データを出力すべき出力系統ごとに分離し、当該出力系統と対応する出力ポートの通信速度に変換して出力する機能を有している。
【００２１】
図１に示すように、通信用入出力装置１は、多重化装置（ＭＵＸ）１０、メモリアクセス制御機能内蔵型の多重分離装置（ＤＥＭＵＸ）２０、およびアクセス制御機能内蔵型の記録装置（ＭＥＭ）３０から構成されている。以下では、通信用入出力装置１で入出力する通信データがフレームデータである場合を例として説明するが、これに限定されるものではなく、パケットやＡＴＭセルなど各種の通信データを、フレームデータと同様にして入出力することも可能である。
【００２２】
多重化装置１０は、外部から順次入力されるフレームデータに、当該フレームデータを出力すべき出力系統と対応するキュー指定情報を付加して多重化する機能を有している。
記録装置３０は、多重化装置１０から転送されたフレームデータを、データメモリ内に論理的に形成した複数のキューのうち、当該フレームデータに付加されているキュー指定情報で指定された書込対象キューへ一時蓄積する機能を有している。
多重分離装置２０は、記録装置３０内のキューのうち優先制御に基づき選択した出力系統と対応する読出対象キューから、当該読出対象キューに一時蓄積されているフレームデータを読み出し、当該出力系統と対応する出力ポートの通信速度に変換して出力する機能を有している。
【００２３】
本実施の形態は、記録装置３０において、データメモリ３１をバンクごとに複数のロウアドレスを有するＤＲＡＭから構成して、それぞれのキューと対応するロウアドレスで当該キューのフレームデータを記憶し、第１のＤＲＡＭアクセス部３２が、書込対象キューにフレームデータを書き込む際、バンクのうち当該書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択して当該フレームデータを書き込み、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後に当該フレームデータを書き込むようにしたものである。
【００２４】
これに加えて、記録装置３０が、データメモリの前記キューに対する書き込み・読み出しを制御する際に用いるキュー制御情報を記憶する、バンクごとに複数のロウアドレスを有するDRAMからなるキュー制御メモリと、前記キュー制御メモリのキュー制御情報に基づいて、多重化装置から転送されたフレームデータの前記書込対象キューに対する書き込みを前記第1のＤＲＡＭアクセス部に指示する書込制御部と、前記キュー制御メモリのキュー制御情報に基づいて、前記読出対象キューからのフレームデータの読み出しを前記第1のＤＲＡＭアクセス部に指示し、読み出した通信データを多重分離装置へ転送する読出制御部とをさらに備えたものである。
【００２５】
さらに、記録装置３０は、前記キューと対応する前記キュー制御メモリの個別のロウアドレスで当該キューのキュー制御情報を記録し、前記書込対象キューにフレームデータを書き込む際、キュー制御メモリのバンクのうち当該書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択して当該キュー制御情報を書き込み、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後に当該キュー制御情報を書き込む第2のＤＲＡＭアクセス部とを備えたものである。
【００２６】
本実施の形態では、図１に示すように、入力ポートＰｉｎとして２つの入力ポートＰｉｎ０，Ｐｉｎ１が設けられ、出力ポートＰｏｕｔとして２つの出力ポートＰｏｕｔ０，Ｐｏｕｔ１が設けられている場合を例として説明するが、入力ポートＰｉｎおよび出力ポートＰｏｕｔの数については、これに限定されるものではない。入力ポートＰｉｎおよび出力ポートＰｏｕｔのいずれか一方または両方を３つ以上設けることも可能であり、入力ポート数と出力ポート数が異なっていてもよい。なお、入力ポート数は、１つであってもよい。
【００２７】
［多重化装置］
次に、図１を参照して、本実施の形態にかかる通信用入出力装置１で用いられる多重化装置１０について詳細に説明する。
多重化装置１０には、主な回路部として、キュー指定情報付加部１１と多重化部１２が設けられている。
【００２８】
キュー指定情報付加部１１は、入力ポートＰｉｎ０，Ｐｉｎ１ごとに設けられて、対応する入力ポートＰｉｎから入力されるフレームデータに対して、当該フレームデータの出力先に対応するキュー指定情報と、当該フレームデータのフレーム長情報（Ｂｙｔｅ）とを付加して多重化部１２へ出力する機能を有している。この際、フレーム長情報については、例えば、多重化部１２にフレームデータを出力する際、当該フレームデータの先頭から最終までのＢｙｔｅ数をフレーム長として計数したものを付加すればよい。
【００２９】
多重化部１２は、各キュー指定情報付加部１１に共通して１つ設けられて、各キュー指定情報付加部１１から出力されたフレームデータを時分割で多重化して、記録装置３０へ出力する機能を有している。
多重化装置１０において、フレームデータの出力先に対応するキューの指定については、ＩＥＥＥ８０２．１Ｄ等のブリッジ機能により実現すればよく、具体的には、ＭＡＣアドレス学習による出力ポート検索、ＶＬＡＮ−ＩＤによる出力ポート指定等が可能である（特許文献１など参照）。
【００３０】
［多重分離装置］
次に、図１を参照して、本実施の形態にかかる通信用入出力装置１で用いられる多重分離装置２０について詳細説明する。
多重分離装置２０には、主な回路部として、読出部２１、振分部２２、および速度変換部２３，２４が設けられている。
【００３１】
読出部２１は、記録装置３０から取得した各キューの蓄積状況や速度変換部２３，２４から出力された読出停止指示信号を参照し、出力ポートＰｏｕｔ０，Ｐｏｕｔ１ごとの優先制御ロジックに基づいてフレームデータを優先して出力すべき出力系統を選択する機能と、当該出力系統と対応する読出対象キューからのフレームデータの読み出しを要求する読み出し要求を出力する機能と、これに応じて記録装置３０から転送されたフレームデータを、振分部２２へ出力する機能を有している。
優先制御ロジックについては、例えば各キューの容量が同じ場合であれば、読み出し可能なキューの中でキューに蓄積されている通信データの量が最も多いキューから読み出しを行う等、一般的な優先制御ロジックを用いればよい（特許文献１など参照）。
【００３２】
また、読出部２１は、記録装置３０に読み出し要求を出力する際、読み出し対象となるキューを指定するキュー指定情報に加えて、読み出しデータのデータ量を示す読出データ量情報を記録装置３０に指示する。
読出データ量情報については、例えば読み出しを行うキューのデータ蓄積量が予め設定した閾値以下の場合は、データ蓄積量に等しい値を読出データ量情報として出力し、閾値を超えていた場合は、閾値の値を読出データ量情報として出力すればよい。
【００３３】
振分部２２は、読出部２１から出力されたフレームデータを、当該フレームデータに付加されているキュー指定情報に基づいて、対応する出力ポートの速度変換部２３，２４へ振り分ける機能を有している。
速度変換部２３，２４は、出力ポートごとに設けられて、振分部２２から振り分けられたフレームデータを当該出力ポートの通信速度に変換して出力する機能と、フレームデータの出力状況に応じて読出停止指示信号を読出部２１に出力する機能とを有している。
なお、フレームデータに付加されているキュー指定情報は、振分部２２もしくは速度変換部２３，２４で削除される。
【００３４】
［記録装置］
次に、図１を参照して、本実施の形態にかかる通信用入出力装置１で用いられる記録装置３０について詳細説明する。
【００３５】
図１に示すように、記録装置３０には、主な回路部として、データメモリ（ＤＭ）３１、第１のＤＲＡＭアクセス部（ＤＭ用）３２、キュー制御メモリ３３、書込制御部３４、読出制御部３５、キュー使用アドレス数メモリ３６、アクセス調停部３７、および第２のＤＲＡＭアクセス部（ＱＭ用）３８が設けられている。
【００３６】
データメモリ（ＤＭ）３１は、バンク（Bank）ごとに複数のロウアドレス（Row Address）を有する一般的なＤＲＡＭ（ＤＲＡＭチップ）からなり、キューと対応するロウアドレスで当該キューのフレームデータを記憶する機能を有している。具体的には、データメモリ３１を１つ、もしくは、複数のＤＲＡＭチップで構成して、各出力系統のキューに対応させればよく、出力系統ごとにそれぞれ１つのキューを持たせる構成の他、１つの出力系統に複数のキューを持たせることも可能である。本実施の形態では、キューとロウアドレスとが対応しており、１つのＤＲＡＭチップを複数のキューで共用することになる。
【００３７】
データメモリ３１には、固有の格納アドレスを持つ複数の格納領域が設けられている。各キューはデータメモリ３１の格納アドレスと同等な仮想格納アドレスを持つ仮想データメモリの仮想格納領域を、仮想格納アドレスの連続・不連続に関わらず任意に連結することにより構成されている。なお、仮想格納アドレスは、ＤＲＡＭへのアクセスに用いる実際のコラムアドレス（Column Address）に対応するアドレス情報である。
【００３８】
後述する図７には、仮想データメモリの記憶例として、それぞれ固有の仮想格納アドレスＡＤＭ（０〜Ｎ：Ｎは２以上の整数）を持つ仮想格納領域ごとに、書込制御部３４から書き込まれたデータを記憶している場合のイメージを示している。
この際、１フレームが１仮想アドレス分のデータサイズより長い場合、１フレームは、１仮想アドレス分のデータサイズに合わせて複数のデータＤに分割され、それぞれ異なる複数の仮想格納アドレスに書き込まれる。
【００３９】
例えば、図７の場合、バンク０のロウアドレス＝Ｐ１の仮想格納アドレス０、１、２に、キューＰ１のデータＰ１−１，Ｐ１−２，Ｐ１−３が格納されており、バンク１のロウアドレス＝Ｐ２の仮想格納アドレス０、１、２に、キューＰ２のデータＰ２−１，Ｐ２−２，Ｐ２−３が格納されている。これらデータの前後関係やフレームとの対応関係については、後述するアドレスキュー管理メモリで管理される。なお、１フレームが仮想格納領域のデータサイズより短い場合、フレームデータは１つの仮想格納領域に格納される。
【００４０】
第１のＤＲＡＭアクセス部３２は、書込制御部３４からのＤＲＡＭ書込指示に応じて、データメモリ３１内の書込対象キューと対応する書込対象ロウアドレスにフレームデータを書き込む機能と、読出制御部３５からのＤＲＡＭ読出指示に応じて、データメモリ３１内の読出対象キューと対応する書込対象ロウアドレスからフレームデータを読み出す機能とを有している。
【００４１】
第１のＤＲＡＭアクセス部３２は、フレームデータを書き込む際、指示されたバンクの書込対象ロウアドレスが活性化状態にある場合に、指定された仮想格納アドレス（コラムアドレス）にフレームデータを書き込む機能と、当該書込対象ロウアドレスが活性化状態にない場合は、当該書込対象ロウアドレスを活性化した後にフレームデータを書き込む機能とを有している。
【００４２】
また、第１のＤＲＡＭアクセス部３２は、フレームデータを読み出す際、指示された読出対象バンクにおいて読出対象ロウアドレスが活性化状態にある場合は、当該読出対象バンクの読出対象ロウアドレスからフレームデータを読み出し、当該読出対象バンクで読出対象ロウアドレスが活性化状態にない場合は、当該読出対象バンクの読出対象ロウアドレスを活性化した後にフレームデータを読み出す機能とを有している。
【００４３】
キュー制御メモリ３３は、例えばＳＲＡＭチップなどの半導体メモリ等からなり、データメモリ３１上に形成されている各キューに対するフレームデータの書き込み・読み出しを制御する際に用いる各種のキュー制御情報を記憶する機能を有している。
【００４４】
図２は、第１の実施の形態にかかるキュー制御メモリの構成を示すブロック図である。キュー制御メモリ３３は、レジスタやメモリからなる複数の記憶部を含んでおり、主な記憶部として、アドレスキュー管理メモリ（ＱＭ）３３Ａ、キュー先頭バンクレジスタ（ＱＳＡ）３３Ｂ、キュー最終バンクメモリ（ＱＬＡ）３３Ｃ、アクセス履歴レジスタ（ＡＡＲ）３３Ｄ、第１のバンク管理メモリ（ＤＭ用）３３Ｅ、および第２のバンク管理メモリ（ＱＭ用）３３Ｆを有している。なお、以下では理解を容易とするため、レジスタ名を変数名として用いて説明する場合がある。
【００４５】
アドレスキュー管理メモリ（ＱＭ）３３Ａは、バンク（Bank）ごとに複数のロウアドレス（Row Address）を有する一般的なＤＲＡＭからなり、仮想格納アドレスに書き込まれた通信データに後続する通信データの格納バンク（ＱＮＡ）を記憶する機能を有している。
後述する図７および図８に示すように、ＱＮＡは、当該仮想格納アドレスに書き込まれた通信データに後続する通信データが格納されているバンクである。また、後述する図８に示すように、データメモリの連続した仮想格納アドレスにフレームデータを書き込む場合の先頭データのバンク（ＤＳＡ）と仮想格納アドレスの連続数（ＤＮＵ）も記録している。
【００４６】
キュー先頭バンクレジスタ（ＱＳＡ）３３Ｂ、キュー最終バンクメモリ（ＱＬＡ）３３Ｃは、キューごとに、キュー先頭のフレームデータを書き込んだバンク（ＱＳＡ）およびキュー最終のフレームデータを書き込んだバンク（ＱＬＡ）を記憶する機能を有している。
図７の例では、キューを識別するためのキューＩＤ（キュー番号）ごとに、ＱＳＡとＱＬＡを記憶している。
【００４７】
アクセス履歴レジスタ（ＡＡＲ）３３Ｄは、最後に書き込み指示、もしくは、読み出し指示を行ったアドレス（バンク情報とロウアドレスを含む）をＡＡＲ＿１として記録し、ＡＡＲ＿ｎはＡＡＲ＿１の更新時にＡＡＲ＿（ｎ−１）の値に更新する（ｎは２以上の整数）。すなわち、直近ｎ回分の書き込み指示、もしくは、読み出し指示の履歴を表示する。
【００４８】
第１のバンク管理メモリ（ＤＭ用）３３Ｅは、例えばＳＲＡＭチップなどの半導体メモリからなり、キューを識別するためのキューＩＤ（キュー番号）とＤＭのバンクとの組み合わせごとに、当該キューの通信データを当該バンクに書き込む際にコラムアドレスとして用いる書込ポインタ値を記憶する機能と、キューを識別するためのキューＩＤ（キュー番号）とＤＭのバンクとの組み合わせごとに、当該キューの通信データを当該バンクから読み出す際にコラムアドレスとして用いる読出ポインタ値を記憶する機能とを有している。
【００４９】
また、第２のバンク管理メモリ（ＱＭ用）３３Ｆは、例えばＳＲＡＭチップなどの半導体メモリからなり、キューを識別するためのキューＩＤ（キュー番号）とＱＭのバンクとの組み合わせごとに、当該キューのキュー制御情報を当該バンクに書き込む際にコラムアドレスとして用いる書込ポインタ値を記憶する機能と、キューを識別するためのキューＩＤ（キュー番号）とＱＭのバンクとの組み合わせごとに、当該キューのキュー制御情報を当該バンクから読み出す際にコラムアドレスとして用いる読出ポインタ値を記憶する機能とを有している。
【００５０】
後述する図９の例では、キューを識別するためのキューＩＤ（キュー番号）とバンクを機別するためのバンク番号との組み合わせごとに、書込ポインタ値（ライトポインタもしくはＢＬ）と読出ポインタ値（リードポインタもしくはＢＳ）とが記憶されている。なお、書込ポインタ値と読出ポインタ値の初期値は、同じ値からなるものとする。
【００５１】
例えば、キューＰ２のうち、データメモリ（ＤＭ）のバンク＃１において書込ポインタ値は３であり、ＤＭのバンク＃１が書込対象バンクである場合、書込ポインタが示すコラムアドレスにキューＰ２の新たなフレームデータが書き込まれることになる。また、キューＰ２のうち、ＤＭのバンク＃１において読出ポインタ値は０であり、ＤＭのバンク＃１が読出対象バンクである場合、読出ポインタが示すコラムアドレスからキューＰ２のフレームデータが読み出されることになる。
【００５２】
また、キューＰ２のうち、ＱＭのバンク＃１において書込ポインタ（ＢＬ＿１）は２であり、ＱＭのバンク＃１が書込対象バンクである場合、ＢＬ＿１が示すコラムアドレスにキューＰ２のキュー制御情報が書き込まれることになる。また、キューＰ２のうち、ＱＭのバンク＃１において読出ポインタ値（ＢＳ＿１）は０であり、ＱＭのバンク＃１が読出対象バンクである場合、ＢＳ＿１が示すコラムアドレスからキューＰ２のキュー制御情報が読み出されることになる。
【００５３】
書込制御部３４は、アクセス調停部３７からの書き込み指示に応じて、アクセス履歴レジスタ（ＡＡＲ）３３Ｄに基づいて最適なバンクを選択し、仮想格納アドレス（バンク、ロウアドレス、および、ライトポインタ）を指定した、フレームデータの書き込みを指示するＤＲＡＭ書込指示を、第１のＤＲＡＭアクセス部３２へ出力する機能を有している。
【００５４】
バンクの選択は、例えば、以下のように行う。
書込制御部３４は、ＡＡＲを用いて各バンクでどのロウアドレスが活性化されているのかを管理する。
各バンクのうち、書込対象のキューに対応するロウアドレスが活性化されているものを選択する。ただし、該当のバンクのライトポインタを更新した場合にリードポインタと同じ値になる場合（もしくは、リードポインタが０でライトポインタを更新した場合にコラムアドレスの上限値を超える場合、もしくは、リードポインタが０以外で更新前のライトポインタ値がリードポインタ値より小さく更新後のライトポインタ値がリードポインタ値より大きくなる場合）はそのバンクは選択しない。
【００５５】
例えば、まず、ＡＡＲ＿１のロウアドレスが書込対象のキューに対応するロウアドレスと同じ値であれば、そのロウアドレスが活性化されているので、そのバンクを選択する。異なる場合は、ＡＡＲ＿２のロウアドレスが書込対象のキューに対応するロウアドレスと同じ値であれば、そのロウアドレスが活性化されているので、そのバンクを選択する。ただし、ＡＡＲ＿２のバンク番号がＡＡＲ＿１のバンク番号と同じ場合は、そのロウアドレスは活性化されていないので、そのバンクは選択しない。
【００５６】
ＡＡＲ＿２までの比較で未選択の場合は、ＡＡＲ＿３のロウアドレスが書込対象のキューに対応するロウアドレスと同じ値であれば、そのロウアドレスが活性化されているので、そのバンクを選択する。ただし、ＡＡＲ＿３のバンク番号がＡＡＲ＿１もしくはＡＡＲ＿２のバンク番号と同じ場合は、そのロウアドレスは活性化されていないので、そのバンクは選択しない。
【００５７】
以下、同様に、ＡＡＲ＿ｎまで比較を行い、ロウアドレスが書込対象のキューに対応するロウアドレスと同じ値であり、かつ、選択可能であれば、そのバンクを選択する。なお、ＡＡＲ＿ｎとの比較を行う場合、ＡＡＲ＿ｎのバンク番号がＡＡＲ＿１からＡＡＲ＿（ｎ−１）のいずれかと同じ場合は、そのロウアドレスは活性化されていないので、そのバンクは選択しない。
該当のロウアドレスが活性化されているもの（かつ選択可能なもの）がない場合は、例えば、どのＡＡＲにも記録されていないバンクを選択、もしくは、ＡＡＲに記録されているバンクのうちで残っている履歴が最も古いバンクを選択する。
【００５８】
また、書込制御部３４は、アクセス調停部３７からの書き込み指示と、書き込み対象のキューのＱＣＮ、ＱＬＡと、上記のＤＭのバンク選択結果に応じて、最適なＱＭのバンクを選択し、仮想格納アドレス（バンク、ロウアドレス、および、ＢＬ）を指定したＱＭの読み出しと、仮想格納アドレス（バンク、ロウアドレス、および、ＢＬ）を指定したＤＳＡ、ＤＮＵ、ＱＮＡの書き込みをＱＭに指示する、ＤＲＡＭ読出指示とＤＲＡＭ書込指示を、第２のＤＲＡＭアクセス部（ＱＭ用）へ出力する機能を有している。
【００５９】
ＱＭのバンクの選択は、ＤＭのバンクの選択と同様に、ＱＭの各バンクのうち、書込対象のキューに対応するロウアドレスが活性化されているものを選択する。
ただし、該当のバンクのＢＬを更新した場合にＢＳと同じ値になる場合（もしくは、ＢＳが０でＢＬを更新した場合にコラムアドレスの上限値を超える場合、もしくは、ＢＳが０以外で更新前のＢＬがＢＳより小さく更新後のＢＬがＢＳより大きくなる場合）はそのバンクは選択しない。
なお、書込対象のキューのＱＣＮが０以外の場合、ＱＭのバンク選択が不要となる場合もある。ＱＭのバンクの選択の具体例については、後述する。
【００６０】
読出制御部３５は、アクセス調停部３７からの読み出し指示に応じて、キュー制御メモリ３３のキュー制御情報に基づいて、読出対象キュー（ロウアドレス）と仮想格納アドレス（バンクとリードポインタ）を指定した、読出対象キューからの先頭データの読み出しを指示するＤＲＡＭ読出指示を、第１のＤＲＡＭアクセス部３２へ出力する機能と、当該データをフレーム終端フラグおよびキュー指定情報とともに多重分離装置２０へ転送する機能とを有している。
【００６１】
また、読出制御部３５は、アクセス調停部３７からの読み出し指示に応じて、キュー制御メモリ３３のキュー制御情報に基づいて、仮想格納アドレス（バンク、ロウアドレス、ＢＳ）を指定したＤＳＡ、ＤＮＵ、ＱＮＡの読み出しと、仮想格納アドレス（バンク、ロウアドレス、ＢＳ）を指定したＤＳＡ、ＤＮＵ、ＱＮＡの書き込みをＱＭに指示する、ＤＲＡＭ読出指示とＤＲＡＭ書込指示を、第２のＤＲＡＭアクセス部（ＱＭ用）へ出力する機能を有している。
【００６２】
キュー使用アドレス数メモリ（ＱＣＮ）３６は、例えばＳＲＡＭチップなどの半導体メモリからなり、キューごとに、当該キューに蓄積されているフレームデータが使用している仮想アドレス数ＱＣＮを記憶する機能と、多重分離装置２０およびアクセス調停部３７からの要求に応じて、指定されたキューの仮想アドレス数ＱＣＮを出力する機能とを有している。
図７の例では、キューを識別するためのキューＩＤ（キュー番号）ＱＩＤ（Ｐ１〜ＰＭ：Ｍは２以上の整数）ごとに、当該キューの仮想アドレス数ＱＣＮが記憶されている。
【００６３】
アクセス調停部３７は、多重化装置１０から転送されたフレームデータを受け取り、当該フレームデータに付加されているフレーム長情報に基づき、フレームデータを１仮想アドレス分のデータサイズで複数のデータＤに分割することにより書込回数を計算する機能と、この書込回数分だけ、それぞれのデータＤに関する、当該フレームデータに付加されているキュー指定情報で指定された書込対象キューへの書き込みを指示する書き込み指示を書込制御部３４に出力する機能と、当該フレームデータの書き込みにより増加する仮想アドレス数を、キュー使用アドレス数メモリ３６の当該書込対象キューの仮想アドレス数ＱＣＮに加算する機能とを有している。
【００６４】
また、アクセス調停部３７は、多重分離装置２０からの読み出し要求に応じて、当該読み出し要求の読出データ量情報で指定されたデータ量を１仮想アドレス分のデータサイズで分割することにより読出回数を計算する機能と、この読出回数分だけ、当該読み出し要求のキュー指定情報で指定された読出対象キューからのフレームデータの読み出しを指示する読み出し指示を読出制御部３５へ出力する機能と、当該フレームデータの読み出しにより減少する仮想アドレス数を、キュー使用アドレス数メモリ３６の当該書込対象キューの仮想アドレス数ＱＣＮから減算する機能と、フレームデータの書き込みとの競合を調停し、読み出し可能なタイミングで読み出し指示を出力する機能とを有している。
【００６５】
［第１のＤＲＡＭアクセス部（ＤＭ用）］
次に、図３を参照して、本実施の形態にかかる記録装置３０で用いられる第１のＤＲＡＭアクセス部（ＤＭ用）３２について説明する。図３は、第１の実施の形態にかかる第１のＤＲＡＭアクセス部（ＤＭ用）の構成を示すブロック図である。
第１のＤＲＡＭアクセス部３２には、主な回路部として、ＦＩＦＯメモリ３２Ａ、活性化処理部３２Ｂ、アクセス種別判定部３２Ｃ、ＤＲＡＭ書込部３２Ｄ、およびＤＲＡＭ読出部３２Ｅが設けられている。
【００６６】
ＦＩＦＯメモリ３２Ａは、一般的なＦＩＦＯメモリからなり、書込制御部３４からのＤＲＡＭ書込指示および読出制御部３５からのＤＲＡＭ読出指示を混在させて蓄積する機能と、活性化処理部３２Ｂによるロウアドレスの活性化完了後、蓄積していたＤＲＡＭ書込指示またはＤＲＡＭ読出指示を入力順に読み出してアクセス種別判定部３２Ｃへ出力する機能を有している。この際、アクセス種別判定のための情報として、書込制御部３４からのＤＲＡＭ書込指示なのか、もしくは、読出制御部３５からのＤＲＡＭ読出指示なのかを示す情報を、それぞれの指示と合わせてＦＩＦＯメモリ３２Ａに書き込んで、その情報もアクセス種別判定部３２Ｃに出力するようにしてもよい。
【００６７】
なお、図２１に示すアクセス調停部３７を使用する場合、書込制御部３４からのＤＲＡＭ書込指示と読出制御部３５からのＤＲＡＭ読出指示が同時に入力されることはないはずであるが、これらが同時に入力された場合には、ＦＩＦＯメモリ３２Ａに対するＤＲＡＭ書込指示の書込みを優先し、ＦＩＦＯメモリ３２Ａに対するＤＲＡＭ読出指示の書込みを待たせるようにすればよい。
【００６８】
活性化処理部３２Ｂは、ＦＩＦＯメモリ３２ＡにＤＲＡＭ書込指示が蓄積された場合、ＤＭの当該書込対象ロウアドレスが活性化状態にない場合は、ＤＭの当該書込対象ロウアドレスを活性化する機能を有している。
【００６９】
また、活性化処理部３２Ｂは、ＦＩＦＯメモリ３２ＡにＤＲＡＭ読出指示が蓄積された場合、ＤＭの当該読出対象バンクにおいてＤＲＡＭ読出指示で指定された読出対象ロウアドレスが活性化状態にない場合には、ＤＭの当該読出対象バンクにおいて読出対象ロウアドレスを活性化する機能と、ＤＭの当該読出対象バンクにおいて読出対象ロウアドレスとは異なるロウアドレスが活性化状態にある場合は、ＤＭの当該ロウアドレスへのアクセス完了に応じて、ＤＭの読出対象ロウアドレスを活性化する機能とを有している。
【００７０】
アクセス種別判定部３２Ｃは、ＦＩＦＯメモリ３２Ａから出力されたＤＲＡＭ書込指示をＤＲＡＭ書込部３２Ｄへ振り分けて出力する機能と、ＦＩＦＯメモリ３２Ａから出力されたＤＲＡＭ読出指示をＤＲＡＭ読出部３２Ｅへ振り分けて出力する機能とを有している。
【００７１】
ＤＲＡＭ書込部３２Ｄは、入力されたＤＲＡＭ書込指示における書込対象ロウアドレスと書込対象バンクとライトポインタとの組み合わせに基づき、指示されたＤＭのコラムアドレスに、ＤＲＡＭ書込指示で指定されたフレームデータ（データＤ）を書き込む機能を有している。
【００７２】
この際、１格納アドレス分のフレームデータ（データＤ）の書き込みに、複数のコラムアドレスが必要な場合は、ＤＲＡＭの機能であるバーストモードを用いて、連続するコラムアドレスに書き込みを行うようにしてもよく、書込所要時間を短縮できる。
また、データメモリ３１に対してＥｏＦ値（当該格納アドレスに書き込むデータにフレームデータの最終データを含むか否かを示す情報：フレーム終端フラグ）の書き込みも行う場合は、フレームデータの書き込みと同時に行えばよい。
【００７３】
ＤＲＡＭ読出部３２Ｅは、入力されたＤＲＡＭ読出指示における読出対象ロウアドレスと読出対象バンクとリードポインタとの組み合わせに基づき、読出対象バンクの読出対象ロウアドレスのうち、指示されたＤＭのコラムアドレスからフレームデータ（データＤ）を読み出して、キュー指定情報とともに読出制御部３５へ出力する機能を有している。
【００７４】
この際、１仮想格納アドレス分のフレームデータ（データＤ）の読み出しに、複数のコラムアドレスが必要な場合は、ＤＲＡＭの機能であるバーストモードを用いて、連続するコラムアドレスから読み出しを行うようにしてもよく、読出所要時間を短縮できる。
また、データメモリ３１に対してＥｏＦ値（フレーム終端フラグ）が書き込まれている場合は、フレームデータの読み出しと同時にＥｏＦ値の読み出しを行えばよい。
読み出したＥｏＦ値は、フレームデータおよびキュー指定情報とともに読出制御部３５へ出力すればよい。
【００７５】
［第２のＤＲＡＭアクセス部（ＱＭ用）］
次に、図４を参照して、本実施の形態にかかる記録装置３０で用いられる第２のＤＲＡＭアクセス部（ＱＭ用）３８について説明する。図４は、第１の実施の形態にかかる第２のＤＲＡＭアクセス部（ＱＭ用）の構成を示すブロック図である。
【００７６】
第２のＤＲＡＭアクセス部３８には、主な回路部として、第１のＤＲＡＭアクセス部（ＤＭ用）３２と同様に、ＦＩＦＯメモリ３８Ａ、活性化処理部３８Ｂ、アクセス種別判定部３８Ｃ、ＤＲＡＭ書込部３８Ｄ、およびＤＲＡＭ読出部３８Ｅが設けられている。
【００７７】
ＦＩＦＯメモリ３８Ａは、一般的なＦＩＦＯメモリからなり、書込制御部３４からのＤＲＡＭ読出指示とＤＲＡＭ書込指示、および、読出制御部３５からのＤＲＡＭ読出指示とＤＲＡＭ書込指示を混在させて蓄積する機能と、活性化処理部３８Ｂによるロウアドレスの活性化完了後、蓄積していたＤＲＡＭ書込指示またはＤＲＡＭ読出指示を入力順に読み出してアクセス種別判定部３８Ｃへ出力する機能を有している。
【００７８】
この際、アクセス種別判定のための情報として、ＤＲＡＭ書込指示なのか、もしくは、ＤＲＡＭ読出指示なのかを示す情報を、それぞれの指示と合わせてＦＩＦＯメモリ３８Ａに書き込んで、その情報もアクセス種別判定部３８Ｃに出力するようにしてもよい。また、書込制御部３４からの指示なのか、読出制御部３５からの指示なのかを示す情報を、それぞれの指示と合わせてＦＩＦＯメモリ３８Ａに書き込んで、その情報もアクセス種別判定部３８Ｃに出力するようにしてもよい。
【００７９】
なお、後述する図２１に示すアクセス調停部３７を使用する場合、書込制御部３４からの指示と読出制御部３５からの指示が同時に入力されることはないはずであるが、これらが同時に入力された場合には、ＦＩＦＯメモリ３８Ａに対する書込制御部３４からの指示を優先し、ＦＩＦＯメモリ３８Ａに対する読出制御部３５からの指示の書込みを待たせるようにすればよい。ただし、読出制御部３５からのＤＲＡＭ読出指示とその直後の読出制御部３５からの同一アドレスへのＤＲＡＭ書込指示の間に書込制御部３４からの指示を割り込ませることは禁止する。
【００８０】
活性化処理部３８Ｂは、ＦＩＦＯメモリ３８ＡにＤＲＡＭ書込指示が蓄積された場合、ＱＭの当該書込対象ロウアドレスが活性化状態にない場合は、ＱＭの当該書込対象ロウアドレスを活性化する機能を有している。
【００８１】
また、活性化処理部３８Ｂは、ＦＩＦＯメモリ３８ＡにＤＲＡＭ読出指示が蓄積された場合、ＱＭの当該読出対象バンクにおいてＤＲＡＭ読出指示で指定された読出対象ロウアドレスが活性化状態にない場合には、ＱＭの当該読出対象バンクにおいて読出対象ロウアドレスを活性化する機能と、ＱＭの当該読出対象バンクにおいて読出対象ロウアドレスとは異なるロウアドレスが活性化状態にある場合は、ＱＭの当該ロウアドレスへのアクセス完了に応じて、ＱＭの読出対象ロウアドレスを活性化する機能とを有している。
【００８２】
アクセス種別判定部３８Ｃは、ＤＭ用のアクセス種別判定部３２Ｃと同様に、ＦＩＦＯメモリ３８Ａから出力されたＤＲＡＭ書込指示をＤＲＡＭ書込部３８Ｄへ振り分けて出力する機能と、ＦＩＦＯメモリ３８Ａから出力されたＤＲＡＭ読出指示をＤＲＡＭ読出部３８Ｅへ振り分けて出力する機能とを有している。
【００８３】
ＤＲＡＭ書込部３８Ｄは、入力されたＤＲＡＭ書込指示における書込対象ロウアドレスと書込対象バンクとの組み合わせに基づき、指示されたＱＭのコラムアドレスに、ＤＲＡＭ書込指示で指定されたデータ（ＤＳＡ、ＤＮＵ、ＱＮＡ）を書き込む機能を有している。
この際、データ（ＤＳＡ、ＤＮＵ、ＱＮＡ）の書き込みに、複数のコラムアドレスが必要な場合は、ＤＲＡＭの機能であるバーストモードを用いて、連続するコラムアドレスに書き込みを行うようにしてもよく、書込所要時間を短縮できる。
【００８４】
ＤＲＡＭ読出部３８Ｅは、入力されたＤＲＡＭ読出指示における読出対象ロウアドレスと読出対象バンクとの組み合わせに基づき、読出対象バンクの読出対象ロウアドレスのうち、指示されたＱＭのコラムアドレスからデータ（ＤＳＡ、ＤＮＵ、ＱＮＡ）を読み出して書込制御部３４もしくは読出制御部３５へ出力する機能を有している。
この際、１回のデータ（ＤＳＡ、ＤＮＵ、ＱＮＡ）の読み出しに、複数のコラムアドレスが必要な場合は、ＤＲＡＭの機能であるバーストモードを用いて、連続するコラムアドレスから読み出しを行うようにしてもよく、読出所要時間を短縮できる。
【００８５】
［第１の実施の形態の動作］
次に、図５および図６を参照して、本実施の形態にかかる通信用入出力装置１で用いられる記録装置３０の動作について説明する。
図５は、第１の実施の形態にかかる書込制御部の書込動作を示すフローチャートである。図６は、第１の実施の形態にかかる読出制御部の読出動作を示すフローチャートである。
【００８６】
［書込動作］
まず、図５を参照して、記録装置３０の書込制御部３４における書込動作について説明する。
書込制御部３４は、アクセス調停部３７からの書き込み指示に応じて、図５の書込動作を実行する。
【００８７】
新たなデータを書込対象キューに書き込んだ場合、キュー制御情報における主な変化としては、書き込み前後において、書込対象キューに関するキュー最終バンク（ＱＬＡ）と、書込対象キューの書込前の最終データに後続するデータの格納バンク（ＱＮＡ）と、書込対象バンク（ＤＳＡ）と、ＤＮＵと、ＤＭおよびＱＭのライトポインタと、アクセス履歴レジスタ（ＡＡＲ）３３Ｄとが変化する。ただし、書込対象キューの書込前の最終データと同じバンクに書き込む場合は、ＤＳＡ、ＱＮＡ、ＱＭのライトポインタ（ＢＬ）は更新されず、ＤＮＵは変化する。なお、書込対象キューに対する最初の書き込みである場合は、書込対象キューに関するキュー先頭バンク（ＱＳＡ）も変化する。
【００８８】
このため、図５の書込動作において、書込制御部３４は、選択されたバンク、ロウアドレス、ライトポインタに対する指定データの書き込み（書き込み指示の出力）、書込対象キューに関するキュー最終バンク（ＱＬＡ）の更新、書込対象キューの書込前の最終データに後続するデータの格納バンク（ＱＮＡ）の更新、書込対象バンク（ＤＳＡ）と、ＤＮＵの更新、ＤＭおよびＱＭのライトポインタの更新を行う。ただし、書込対象キューの書込前の最終データと同じバンクに書き込む場合は、ＤＳＡ、ＱＮＡ、ＱＭのライトポインタ（ＢＬ）の更新は行わず、ＤＮＵの更新を行う。
【００８９】
なお、書込対象キューに対する最初の書き込みである場合は、書込対象キューに関するキュー先頭バンク（ＱＳＡ）の更新も行う。これら更新の詳細については動作例に基づいて後述する。
この際、書込制御部３４は、キュー制御メモリ３３にアクセスすることにより、図５に示すステップを実行する。なお、図５の処理順序は、処理効率を考慮したものであるが、他の処理順序であってもよい。
【００９０】
図５に示す書込動作について具体的に説明する。
まず、書込制御部３４は、書込対象キューのＱＣＮが０か否か確認し（ステップ１２０）、ＱＣＮが０である場合（ステップ１２０：ＹＥＳ）、ＤＭおよびＱＭのバンクを選択して（ステップ１２１）、ＱＳＡとＱＬＡに選択したＱＭバンクのバンク番号を書き込み（ステップ１２２）、選択したバンクのライトポインタを読み出す（ステップ１２３）。
【００９１】
次に、書込制御部３４は、ＤＭ用のライトポインタをコラムアドレスとして、ＤＭにデータを書き込み（ステップ１２４）、ＢＬをコラムアドレスとしてＱＭのＤＳＡおよびＤＮＵを書き込む（ステップ１２５）。この際、ＤＳＡはＤＭの書き込み先バンクを示し、ＤＮＵは１である。
この後、書込制御部３４は、選択バンクのライトポインタを更新し（ステップ１２６）、書込対象キューのＱＣＮに１を加算した後（ステップ１２７）、一連の書込動作を終了する。
【００９２】
また、ステップ１２０において、ＱＣＮが０ではない場合（ステップ１２０：ＮＯ）、書込制御部３４は、書込対象キューのＱＬＡを読み出して（ステップ１３０）、ＱＬＡに記録されていたバンクのＢＬを読み出し（ステップ１３１）、ＤＭの同じバンクへの書き込みか否か確認する（ステップ１３２）。
ここで、同じバンクへの書き込みである場合（ステップ１３２：ＹＥＳ）、書込制御部３４は、ＢＬをコラムアドレスとしてＱＭからＤＳＡおよびＤＮＵを読み出して（ステップ１３３）、ＤＳＡのバンクのライトポインタを読み出す（ステップ１３４）。
【００９３】
次に、書込制御部３４は、ＤＭ用のライトポインタをコラムアドレスとして、ＤＭにデータを書き込み（ステップ１３５）、ＢＬをコラムアドレスとしてＱＭのＤＳＡおよびＤＮＵを書き込む（ステップ１３６）。この際、ＤＳＡは読み出した値そのままを書き込み、ＤＮＵは読み出した値に１を加算した値を書き込む。
この後、書込制御部３４は、選択バンクのＤＭ用ライトポインタを更新し（ステップ１３７）、書込対象キューのＱＣＮに１を加算した後（ステップ１２７）、一連の書込動作を終了する。
【００９４】
また、ステップ１３２において、同じバンクへの書き込みではない場合（ステップ１３２：ＮＯ）、書込制御部３４は、ＤＭおよびＱＭのバンクを選択して（ステップ１４０）、ＱＬＡに選択したＱＭのバンクのバンク番号を書き込むとともに（ステップ１４１）、選択前のバンクのＢＬをコラムアドレスとして、ＱＭのＱＮＡに選択したＱＭのバンクのバンク番号を書き込み（ステップ１４２）、選択したバンクのライトポインタを読み出す（ステップ１４３）。
【００９５】
次に、書込制御部３４は、選択したバンクのＤＭ用のライトポインタをコラムアドレスとして、ＤＭにデータを書き込み（ステップ１４４）、選択したバンクのＢＬをコラムアドレスとしてＱＭのＤＳＡおよびＤＮＵを書き込む（ステップ１４５）。この際、ＤＳＡはＤＭの書き込み先バンクを示し、ＤＮＵは１である。
この後、書込制御部３４は、選択バンクのＢＬとＤＭ用のライトポインタを更新し（ステップ１４６）、書込対象キューのＱＣＮに１を加算した後（ステップ１２７）、一連の書込動作を終了する。
【００９６】
［読出動作］
次に、図６を参照して、記録装置３０の読出制御部３５における読出動作について説明する。
読出制御部３５は、アクセス調停部３７からの読み出し指示に応じて、図６の読出動作を実行する。
【００９７】
新たなデータを読出対象キューから読み出した場合、キュー制御情報における主な変化としては、読み出し前後において、読出対象キューに関するキュー先頭バンク（ＱＳＡ）と、ＤＭおよびＱＭのリードポインタと、アクセス履歴レジスタ（ＡＡＲ）３３Ｄとが変化する。ただし、ＱＭ内のＤＮＵが２以上だった場合は、ＱＳＡとＱＭのリードポインタ（ＢＳ）は更新されず、ＤＮＵが変化する。また、読出対象キューのＱＣＮが１だった場合（この場合ＤＮＵは必ず１）は、ＱＳＡは更新されず、ＤＭおよびＱＭのリードポインタとＡＡＲが変化する。
【００９８】
このため、図６の読出動作において、読出制御部３５は、読出対象キューに関するキュー先頭バンク（ＱＳＡ）の更新、ＤＭおよびＱＭのリードポインタの更新、読み出し指示の出力を行う。ただし、ＱＭ内のＤＮＵが２以上だった場合は、ＱＳＡとＱＭのリードポインタ（ＢＳ）の更新は行わず、ＤＮＵの更新を行う。また、読出対象キューのＱＣＮが１だった場合（この場合ＤＮＵは必ず１）は、ＱＳＡの更新は行わず、ＤＭおよびＱＭのリードポインタとＡＡＲの更新を行う。これら更新の詳細については動作例に基づいて後述する。この際、読出制御部３５は、キュー制御メモリ３３にアクセスすることにより、図６に示すステップを実行する。なお、図６の処理順序は、処理効率を考慮したものであるが、他の処理順序であってもよい。
【００９９】
図６に示す読出動作について具体的に説明する。
まず、読出制御部３５は、読出対象キューのＱＳＡを読み出し（ステップ１５０）、ＱＳＡに記録されていたバンクのＢＳを読み出す（ステップ１５１）。
次に、読出制御部３５は、読み出したＢＳをコラムアドレスとして、ＱＭからＤＳＡ、ＤＮＵ、およびＱＮＡを読み出し（ステップ１５２）、ＤＳＡのリードポインタを読み出す（ステップ１５３）。
この後、読出制御部３５は、ＤＭ用のリードポインタをコラムアドレスとして、ＤＭからデータを読み出し（ステップ１５４）、ＤＳＡのリードポインタを更新した後（ステップ１５５）、ＤＮＵが１か否か確認する（ステッブ１５６）。
【０１００】
ここで、ＤＮＵが１の場合（ステップ１５６：ＹＥＳ）、読出制御部３５は、ＢＳを更新し（ステップ１５７）、ＱＳＡにＱＮＡ値を書き込んだ後（ステップ１５８）、書込対象キューのＱＣＮから１を減算して（ステップ１５９）、一連の読出動作を終了する。
また、ＤＮＵが１でない場合（ステップ１５６：ＮＯ）、読出制御部３５は、ＢＳをコラムアドレスとしてＤＳＡ、ＤＮＵ、およびＱＮＡを書き込む（ステップ１６０）。この際、ＤＳＡとＱＮＡは読み出した値をそのまま、ＤＮＵは1を減算した値を書き込む。その後、ステップ１５９へ移行して、書込対象キューのＱＣＮから１を減算し（ステップ１５９）、一連の読出動作を終了する。
【０１０１】
［動作例］
次に、図７〜図１８を参照して、記録装置３０におけるフレームデータの書込動作および読出動作について、キューＰ２を読出・書込対象キューとし、このキューＰ２にデータＰ２−３が書込まれた後、データＰ２−１、Ｐ２−２を読み出し、さらにデータＰ２−４を書き込む場合を例に説明する。
【０１０２】
図７は、データＰ２−１読出直前のキュー制御情報（その１）を示す説明図である。図８は、データＰ２−１読出直前のキュー制御情報（その２）を示す説明図である。図７、図８、および図９は、データＰ２−１読出直前のキュー制御情報（その３）を示す説明図である。
ここでは、データＰ２−１読出直前すなわちデータＰ２−３が書込まれた直後におけるキュー制御情報が示されている。
【０１０３】
この状態において、データメモリ（ＤＭ）３１のうち、バンク０のロウアドレスＰ１の仮想格納アドレス「０，１，２」にキューＰ１のデータＰ１−１，Ｐ１−２，Ｐ１−３が書き込まれており、バンク１のロウアドレスＰ２の仮想格納アドレス「０，１，２」にキューＰ２のデータＰ２−１，Ｐ２−２，Ｐ２−３が書き込まれている。また、ＤＭの上記以外のバンク、ロウアドレス、および、仮想格納アドレスは未使用である。
【０１０４】
なお、図７は、Ｐ１−１、Ｐ１−２、Ｐ２−１、Ｐ２−２、Ｐ１−３、Ｐ２−３の順番に、書き込んだ例であるが、以下のようにＤＭのバンクを選択した例である。
Ｐ１−１書き込み時は、該当のキュー（Ｐ１）の最初の書き込みであり、活性化されているロウアドレスもないので、初期値としてバンク０を選択（ＡＡＲ＿１にバンク０のロウアドレスＰ１を登録）。
【０１０５】
Ｐ１−２書き込み時には、該当のキュー（Ｐ１）に対応するロウアドレスがＡＡＲ＿１と同じなので、ＡＡＲ＿１のバンクである０を選択（ＡＡＲ＿１の値をＡＡＲ＿２に登録した後、ＡＡＲ＿１に、再度、バンク０のロウアドレスＰ１を登録）。
Ｐ２−１書き込み時には、該当のキュー（Ｐ２）の最初の書き込みであり、活性化されているロウアドレスはＡＡＲ＿１と同じロウアドレス（バンク０のＰ１）のみなので、ＡＡＲ＿１以外のバンクである１を選択（ＡＡＲ＿２とＡＡＲ＿１の値を、それぞれＡＡＲ＿３とＡＡＲ＿２に登録した後、ＡＡＲ＿１に、バンク１のロウアドレスＰ２を登録）。
【０１０６】
Ｐ２−２書き込み時には、該当のキュー（Ｐ２）に対応するロウアドレスがＡＡＲ＿１と同じなので、ＡＡＲ＿１のバンクである１を選択（ＡＡＲ＿３、ＡＡＲ＿２、および、ＡＡＲ＿１の値を、それぞれＡＡＲ＿４、ＡＡＲ＿３、および、ＡＡＲ＿２に登録した後、ＡＡＲ＿１に、再度、バンク１のロウアドレスＰ２を登録）。なお、この時点で、ＡＡＲ＿４、ＡＡＲ＿３、ＡＡＲ＿２、および、ＡＡＲ＿１のバンクはそれぞれ「０」、「０」、「１」、「１」である。
【０１０７】
Ｐ１−３書き込み時には、該当のキュー（Ｐ１）に対応するロウアドレスがＡＡＲ＿３と同じなのでＡＡＲ＿３のバンクである０を選択（ＡＡＲ＿４、ＡＡＲ＿３、ＡＡＲ＿２、および、ＡＡＲ＿１の値を、それぞれＡＡＲ＿５、ＡＡＲ＿４、ＡＡＲ＿３、および、ＡＡＲ＿２に登録した後、ＡＡＲ＿１に、バンク０のロウアドレスＰ１を登録）。なお、この時点で、ＡＡＲ＿５、ＡＡＲ＿４、ＡＡＲ＿３、ＡＡＲ＿２、および、ＡＡＲ＿１のバンクはそれぞれ「０」、「０」、「１」、「１」、「０」である。
Ｐ２−３書き込み時には、該当のキュー（Ｐ２）に対応するロウアドレスがＡＡＲ＿２と同じなので、ＡＡＲ＿２のバンクである１を選択。
【０１０８】
また、図７、図８、および図９は、以下のようにＱＭのバンクを選択した例である。
Ｐ１−１書き込み時は、該当のキュー（Ｐ１）の最初の書き込みであり、活性化されているロウアドレスもないので、初期値としてバンク０を選択。
Ｐ１−２書き込み時には、ＤＭの同一バンクへの書き込みなので、バンク選択なし（ＱＬＡのバンクであるバンク０を使用）。
Ｐ２−１書き込み時には、該当のキュー（Ｐ２）の最初の書き込みであり、活性化されているロウアドレスはバンク０のＰ１のみなので、バンク０以外のバンクである１を選択。
【０１０９】
Ｐ２−２書き込み時には、ＤＭの同一バンクへの書き込みなので、バンク選択なし（ＱＬＡのバンクであるバンク１を使用）。
Ｐ１−３書き込み時には、バンク０のロウアドレスＰ１が活性化されているのでバンク０を選択。
Ｐ２−３書き込み時には、バンク１のロウアドレスＰ２が活性化されているのでバンク１を選択。
【０１１０】
なお、Ｐ１−３およびＰ２−３の書き込み時に、Ｐ１−２およびＰ２−２の書き込み時と同様に、ＱＭの更新をＤＮＵの更新のみとする（図５でＤＭの同じバンクに書き込む場合の動作）ことも可能だが、ここでは、Ｐ１−２とＰ１−３が異なるフレームのデータである（また、Ｐ２−２とＰ２−３が異なるフレームのデータである）ことを想定してＱＭのＤＳＡ、ＤＮＵ、および、ＱＮＡの更新（図５でＤＭの同じバンクに書き込まない場合の動作と同じ）を行っている。
【０１１１】
その結果、キューＰ１のＱＭのバンク０の先頭のＤＳＡ、ＤＮＵ、ＱＮＡはそれぞれ、０、２、０となり、２番目のＤＳＡ、ＤＮＵはそれぞれ０、１となっている（図８参照）。また、キューＰ２のＱＭのバンク１の先頭のＤＳＡ、ＤＮＵ、ＱＮＡはそれぞれ、１、２、１となり、２番目のＤＳＡ、ＤＮＵはそれぞれ１、１となっている（図８を参照）。また、第１のバンク管理メモリ３３ＥのＤＭ用のＷ／Ｒポインタ（初期値が０の場合を想定）、および、第２のバンク管理メモリ３３ＦのＱＭ用のＷ／Ｒポインタ（初期値が０の場合を想定）は図９の通りとなっている。
【０１１２】
また、キューＰ１のキュー先頭バンク（ＱＳＡ）は、データＰ１−１の書き込みに使用したＱＭのバンクである０を示し、キュー最終バンク（ＱＬＡ）は、データＰ１−３の書き込みに使用したＱＭのバンクである０を示している。また、キューＰ２のキュー先頭バンク（ＱＳＡ）は、データＰ２−１の書き込みに使用したＱＭのバンクである１を示し、キュー最終バンク（ＱＬＡ）は、データＰ２−３の書き込みに使用したＱＭのバンクである１を示している（図７の「ＱＳＡ」、「ＱＬＡ」を参照）。
【０１１３】
図７、図８、および図９に示した状態において、キューＰ２のデータＰ２−１を読み出した場合、キュー制御情報は、図１０、図１１、および図１２のように変化する。図１０は、データＰ２−１読出時におけるキュー制御情報の変化（その１）を示す説明図である。図１１は、データＰ２−１読出時におけるキュー制御情報の変化（その２）を示す説明図である。図１２は、データＰ２−１読出時におけるキュー制御情報の変化（その３）を示す説明図である。
【０１１４】
まず、図１０、図１１、および図１２に示すように、キューＰ２に関するキュー先頭バンク（ＱＳＡ）が示すＱＭのバンク１のＢＳ値からＤＳＡを読み出し、そのＤＳＡが示すＤＭのバンク０のリードポインタ値からデータＰ２−１が読み出されるため、ＤＭのバンク１のロウアドレスＰ２の読出対象仮想アドレス「０」のデータＤは空き状態となり、キューＰ２に関するデータはＰ２−２，Ｐ２−３の２つとなる（図１０、図１１、および図１２の「ＤＭ」、「ＱＳＡ」、「ＱＬＡ」、「ＱＣＮ」、およびＤＭ用「リードポインタ／ライトポインタ」を参照）。
【０１１５】
これにより、図１０、図１１、および図１２（「ＱＳＡ」、「ＤＳＡ」、および、ＤＭ用「リードポインタ」）に示すように、Ｐ２−２がキューＰ２の先頭データとなり、ＤＭのキュー先頭位置が仮想格納アドレス「０」から「１」に変化するが、ＤＳＡと同時にＱＭから読み出したＤＮＵが２なので、ＱＭの更新はＤＮＵのみ（１を減算）となる。
【０１１６】
また、ＤＭのバンク１のロウアドレスＰ２の読出対象仮想アドレス「０」のデータＤは空き状態となったため、図１２に示すように、ＤＭのリードポインタを更新（１を加算）する。なお、このケースではＱＭのＢＳの更新は行わない。
【０１１７】
これにより、データＰ２−１読出直後（データＰ２−２読出直前）において、キュー制御情報は、図１０、図１１、および図１２に示す状態となる。
図１０、図１１、および図１２に示した状態において、キューＰ２のデータＰ２−２を読み出した場合、キュー制御情報は、図１３、図１４、および図１５のように変化する。図１３は、データＰ２−２読出時におけるキュー制御情報の変化（その１）を示す説明図である。図１４は、データＰ２−２読出時におけるキュー制御情報の変化（その２）を示す説明図である。図１５は、データＰ２−２読出時におけるキュー制御情報の変化（その３）を示す説明図である。
【０１１８】
まず、図１３、図１４、および図１５に示すように、キューＰ２に関するキュー先頭バンク（ＱＳＡ）が示すＱＭのバンク１のＢＳ値からＤＳＡを読み出し、そのＤＳＡが示すＤＭのバンク０のリードポインタ値からデータＰ２−２が読み出されるため、ＤＭのバンク１のロウアドレスＰ２の読出対象仮想アドレス「１」のデータＤは空き状態となり、キューＰ２に関するデータはＰ２−３の１つとなる（図１２の「ＤＭ」、「ＱＳＡ」、「ＱＬＡ」、「ＱＣＮ」、および、ＤＭ用の「リードポインタ／ライトポインタ」を参照）。
【０１１９】
これにより、図１３、図１４、および図１５（「ＱＳＡ」、「ＤＳＡ」、および、ＤＭ用「リードポインタ」）に示すように、Ｐ２−３がキューＰ２の先頭データとなり、キュー先頭位置がＤＭのバンク１のロウアドレスＰ２の仮想格納アドレス「１」から「２」に変化するとともに、ＤＳＡと同時にＱＭから読み出したＤＮＵが１なので、ＱＭのＢＳを更新するため、キューＰ２に関するキュー先頭バンク（ＱＳＡ）が「１」から「ＤＳＡと同時に読み出したＱＮＡが示すバンク（この例では１）」に更新され、ＱＭのバンク１のロウアドレスＰ２のＢＳが更新（１を加算）される。
【０１２０】
また、ＤＭのバンク１のロウアドレスＰ２の読出対象仮想アドレス「１」のデータＤは空き状態となったため、図１５）に示すように、ＤＭのリードポインタを更新（１を加算）する。
【０１２１】
これにより、データＰ２−２読出直後（データＰ２−４書込直前）において、キュー制御情報は、図１３、図１４、および図１５に示す状態となる。
図１３、図１４、および図１５に示した状態において、キューＰ２のデータＰ２−４を書き込みした場合、キュー制御情報は、図１６、図１７、および図１８のように変化する。図１６は、データＰ２−４書込時におけるキュー制御情報の変化（その１）を示す説明図である。図１７は、データＰ２−４書込時におけるキュー制御情報の変化（その２）を示す説明図である。図１８は、データＰ２−４書込時におけるキュー制御情報の変化（その３）を示す説明図である。
【０１２２】
まず、ＤＭのバンクを選択する。ＡＡＲに記録されているロウアドレスは、ＡＡＲ＿１〜ＡＡＲ＿３はバンク１のＰ２、ＡＡＲ＿４はバンク０のＰ１であり、このケースでは、活性化されているロウアドレスはバンク０のＰ１とバンク１のＰ２のみであり、書込対象キューのロウアドレスはＡＡＲ＿１のロウアドレスと一致する。したがって、ＡＡＲ＿１のバンクである１を選択して書き込みを行ってもよいが、直前のアクセスが読み出しであることを考慮してここでは未使用の別のバンク（バンク２）を選択する。
【０１２３】
なお、このケースでバンク１を選択しない理由は、ＤＲＡＭの仕様上、読み出し後の同一バンクに書き込みを行う場合に待ち時間が発生し、実効スループットが低下するためである。
ＱＭのバンク選択については、ＱＭのバンク１のロウアドレスＰ２が活性化されているのでバンク１を選択する。なお、このケースでは、ＤＭとＱＭで異なるバンクを選択したため、ＱＬＡはＤＭのバンクではなく、選択したＱＭのバンクを記憶する。
【０１２４】
図１６、図１７、および図１８に示すように、ＤＭのバンク２のロウアドレスＰ２のライトポインタが示す書込対象仮想アドレス「０」にデータＰ２−４が書き込まれるため、図１６、図１７、および図１８（「ＤＭ」、「ＱＬＡ」、「ＤＳＡ」、「ＢＬ」、および、ＤＭ用「ライトポインタ」）に示すように、Ｐ２−４がキューＰ２の新たな最終データとなり、キュー最終位置がＤＭのバンク１のロウアドレスＰ２の仮想格納アドレス「２」からＤＭのバンク２のロウアドレスＰ２の仮想格納アドレス「０」に変化するため、キューＰ１のキュー最終バンク（ＱＬＡ）が「１」から「Ｐ２−４の書き込みに使用したＱＭのバンク（このケースでは「１」）」に更新され、ＤＭのバンク２のロウアドレスＰ２のライトポインタが更新（１を加算）される。
【０１２５】
また、書込前にキュー最終データであったＰ２−３にＰ２−４が後続することになるため、図１７、および図１８に示すように、Ｐ２−３の書き込みに使用したＱＭのバンク１のロウアドレスＰ２のアドレス「１」の後続バンク（ＱＮＡ）としてＰ２−４の書き込みに使用したＱＭのバンクである「１」が設定され、ＱＭのバンク１のロウアドレスＰ２の３番目のＤＳＡ、ＤＮＵにそれぞれ２（Ｐ２−４を格納したＤＭのバンク）、１が設定され、ＱＭのバンク１のロウアドレスＰ２のＢＬが更新（１を加算）される。
これにより、データＰ２−４書込直後において、キュー制御情報は、図１６、図１７、および図１８に示す状態となる。
【０１２６】
［ＤＲＡＭ書込動作（ＤＭ用）］
次に、図３および図１９を参照して、本実施の形態にかかる第１のＤＲＡＭアクセス部３２（ＤＭ用）における、データメモリ（ＤＭ）３１に対するＤＲＡＭ書込動作について説明する。図１９は、ＤＲＡＭ書込処理を示すフローチャートである。
第１のＤＲＡＭアクセス部３２（ＤＭ用）は、書込制御部３４からのＤＲＡＭ書込指示に応じて、図１９に基づくＤＲＡＭ書込処理（ＤＭ用）を実行する。
【０１２７】
まず、活性化処理部３２Ｂは、ＦＩＦＯメモリ３２Ａに蓄積されたＤＲＡＭ書込指示で指定された、ＤＭの書込対象ロウアドレスが、活性化状態にあるか確認し（ステップ１００）、ＤＭの書込対象ロウアドレスが活性化状態にない場合は（ステップ１００：ＮＯ）、書込対象ロウアドレスの活性化を行って（ステップ１０１）、活性化処理を完了する。なお、ＤＭの書込対象ロウアドレスが活性化状態にある場合（ステップ１００：ＹＥＳ）、何もせず活性化処理を完了する。
【０１２８】
活性化処理部３２Ｂでの活性化処理を完了後、ＤＲＡＭ書込指示はＦＩＦＯメモリ３２Ａから出力され、アクセス種別判定部３２Ｃを介してＤＲＡＭ書込部３２Ｄに入力される。
これに応じて、ＤＲＡＭ書込部３２Ｄは、入力されたＤＲＡＭ書込指示に対応するＤＭのコラムアドレスに、ＤＲＡＭ書込指示で指定されたフレームデータ（データＤ）を書き込んだ後（ステップ１０２）、一連のＤＲＡＭ書込処理を終了する。
【０１２９】
本実施の形態では、データメモリ３１を構成するＤＲＡＭにフレームデータを書き込む際、書込制御部３４により、ＤＲＡＭが持つ各バンクのうちから、書込対象ロウアドレスが活性化状態にあるバンクが書込対象バンクとして優先的に選択される。これにより、同一バンクの異なるロウアドレスへの書き込みが発生する確率が低減されることになる。このため、フレームデータ書込時におけるロウアドレスの活性化や、異なるロウアドレスに対するアクセス完了を待つ回数が削減されることになり、ＤＲＡＭアクセスの実効スループットの低下が抑制される。
【０１３０】
［ＤＲＡＭ読出動作（ＤＭ用）］
次に、図３および図２０を参照して、本実施の形態にかかる第１のＤＲＡＭアクセス部（ＤＭ用）３２における、データメモリ（ＤＭ）３１に対するＤＲＡＭ読出動作について説明する。図２０は、ＤＲＡＭ読出処理を示すフローチャートである。
第１のＤＲＡＭアクセス部３２は、読出制御部３５からのＤＲＡＭ読出指示に応じて、図２０に基づくＤＲＡＭ読出処理（ＤＭ用）を実行する。
【０１３１】
まず、活性化処理部３２Ｂは、ＦＩＦＯメモリ３２Ａに蓄積されたＤＲＡＭ読出指示で指定されたＤＭの読出対象バンクにおいて、ＤＭの読出対象ロウアドレスが活性化状態にあるか確認し（ステップ１１０）、ＤＭの読出対象ロウアドレスが活性化状態にある場合（ステップ１１０：ＹＥＳ）、何もせず活性化処理を完了する。
【０１３２】
活性化処理部３２Ｂでの活性化処理を完了後、ＤＲＡＭ読出指示はＦＩＦＯメモリ３２Ａから出力され、アクセス種別判定部３２Ｃを介してＤＲＡＭ読出部３２Ｅに入力される。
これに応じて、ＤＲＡＭ読出部３２Ｅは、入力されたＤＲＡＭ読出指示に対応するＤＭの読出対象バンクにおいて、読出対象ロウアドレスのうち、指示されたＤＭのコラムアドレスからフレームデータ（データＤ）を読み出した後（ステップ１１４）、ＤＲＡＭ読出処理を終了する。
【０１３３】
また、ＤＭの読出対象バンクの読出対象ロウアドレスが活性化状態にない場合（ステップ１１０：ＮＯ）、活性化処理部３２Ｂは、ＤＭの読出対象バンクにおいて異なるロウアドレスが活性化状態にあるか確認する（ステップ１１１）。
ここで、異なるロウアドレスが活性化状態にない場合（ステップ１１１：ＮＯ）、活性化処理部３２Ｂは、ＤＭの読出対象バンクの読出対象ロウアドレスを活性化し（ステップ１１３）、活性化処理を完了する。これにより、ＤＲＡＭ読出部３２Ｅにおいて、活性化された読出対象ロウアドレスからの読み出しが行われることになる。
【０１３４】
また、異なるロウアドレスが活性化状態にある場合（ステップ１１１：ＹＥＳ）、活性化処理部３２Ｂは、異なるロウアドレスへのアクセスが完了するまで待機した後（ステップ１１２）、ステップ１１３へ移行して、前述と同様にＤＭの読出対象ロウアドレスの活性化を行う。
【０１３５】
このように、データメモリ（ＤＭ）３１を構成するＤＲＡＭからフレームデータを読み出す際、読出対象となるフレームデータが特定のバンクに書き込まれていることから、書き込み時のように、ＤＭのロウアドレスが活性化状態にあるバンクを選択することはできない。このため、同一バンクの異なるロウアドレスからの読み出しや、書き込み後の同一バンクからの読み出しにおいて待ち時間が発生するものとなる。なお、同一バンクの異なるロウアドレスからの読み出しについては、異なるロウアドレスからの読み出しが連続しないように、例えば、両者の間に書き込みが挿入されるよう処理間隔をあけるようにしてもよい。
【０１３６】
［ＤＲＡＭ書込動作（ＱＭ用）］
次に、図４および図１９を参照して、本実施の形態にかかる第２のＤＲＡＭアクセス部（ＱＭ用）３８における、アドレスキュー管理メモリ（ＱＭ）３３Ａに対するＤＲＡＭ書込動作について説明する。
第２のＤＲＡＭアクセス部３８は、書込制御部３４および読出制御部３５からのＤＲＡＭ書込指示に応じて、図１９に基づくＤＲＡＭ書込処理（ＱＭ用）を実行する。
【０１３７】
まず、活性化処理部３８Ｂは、ＦＩＦＯメモリ３８Ａに蓄積されたＤＲＡＭ書込指示で指定されたＱＭの書込対象ロウアドレスが活性化状態にあるか確認し（ステップ１００）、ＱＭの書込対象ロウアドレスが活性化状態にない場合は（ステップ１００：ＮＯ）、書込対象ロウアドレスの活性化を行って（ステップ１０１）、活性化処理を完了する。なお、ＱＭの書込対象ロウアドレスが活性化状態にある場合（ステップ１００：ＹＥＳ）、何もせず活性化処理を完了する。
【０１３８】
活性化処理部３８Ｂでの活性化処理を完了後、ＤＲＡＭ書込指示はＦＩＦＯメモリ３８Ａから出力され、第１のＤＲＡＭアクセス部３２と同様に、アクセス種別判定部３８Ｃを介してＤＲＡＭ書込部３８Ｄに入力される。
これに応じて、ＤＲＡＭ書込部３８Ｄは、入力されたＤＲＡＭ書込指示に対応するＱＭのコラムアドレスに、ＤＲＡＭ書込指示で指定されたデータ（ＤＳＡとＤＮＵ、もしくはＱＮＡ）を書き込んだ後（ステップ１０２）、一連のＤＲＡＭ書込処理を終了する。
【０１３９】
本実施の形態では、データメモリ３１を構成するＤＲＡＭにフレームデータを書き込む際、書込制御部３４により、ＤＲＡＭ（ＤＭ）が持つ各バンクのうちから、書込対象ロウアドレスが活性化状態にあるバンクが書込対象バンクとして優先的に選択される。
【０１４０】
ここで、前述した図５に示すように、フレームデータを書き込む際に、書込対象キューのＱＣＮが０の場合（ステップ１２０：ＹＥＳ）、ＱＭへの書き込みは選択したバンクへの書き込みとなるので、ＱＭのバンク選択により、ＱＭにおいて同一バンクの異なるロウアドレスへの書き込みが発生しない。
【０１４１】
フレームデータを書き込む際に、ＱＭからの読み出しが必要になる場合（ステップ１３２：ＹＥＳ）、バンク選択を行わず、読み出し対象となるＱＭのバンクに対するアクセス（読み出しと書き込み）となる。この対象のロウアドレスが活性化状態にあるか否かで、ＱＭからの読み出しのスループットが変化する。そこで、図５のステップ１３２の判断に、読み出し対象となるＱＭのロウアドレスが活性化状態か否かを追加し、活性化状態でない場合は、「Ｎｏ」を選択するようにしてもよい。
【０１４２】
ステップ１３２の判断が「ＮＯ」の場合、ＱＭに対して２回の書き込みが必要となる。選択したバンクへの（ＤＳＡ、ＤＮＵの）書き込みについては最適なバンクを選択できるが、「選択前のバンク」への（ＱＮＡの）書き込みについては、対象のロウアドレスが活性化状態か否かで書き込みのスループットが変化する。この場合のスループット劣化を抑制する方法として、「選択前のバンク」と同じバンクを選択して、ＱＮＡの書き込みとＤＳＡ、ＤＮＵの書き込みを１回の書き込みで実施するようにしてもよい。同じバンクを選択すると、図８および図９の例に示すように、同一ロウアドレスの連続した位置に、ＱＮＡ、ＤＳＡ、ＤＮＵを書き込むので１回で書き込むことが可能となる。
【０１４３】
これにより、ＤＭだけでなくＱＭにおいても同一バンクの異なるロウアドレスへの書き込みが発生する確率が低減されることになる。このため、フレームデータ書込時におけるＤＭおよびＱＭのロウアドレスの活性化や、異なるロウアドレスに対するアクセス完了を待つ回数が削減されることになり、ＤＭだけでなくＱＭのＤＲＡＭアクセスの実効スループットの低下も抑制される。
【０１４４】
［ＤＲＡＭ読出動作（ＱＭ用）］
次に、図４および図２０を参照して、本実施の形態にかかる第２のＤＲＡＭアクセス部（ＱＭ用）３８における、アドレスキュー管理メモリ（ＱＭ）３３Ａに対するＤＲＡＭ読出動作について説明する。
第２のＤＲＡＭアクセス部３８は、書込制御部３４および読出制御部３５からのＤＲＡＭ読出指示に応じて、図２０に基づくＤＲＡＭ読出処理（ＱＭ用）を実行する。
【０１４５】
まず、活性化処理部３８Ｂは、ＦＩＦＯメモリ３８Ａに蓄積されたＤＲＡＭ読出指示で指定されたＱＭの読出対象バンクにおいて、ＱＭの読出対象ロウアドレスが活性化状態にあるか確認し（ステップ１１０）、ＱＭの読出対象ロウアドレスが活性化状態にある場合活性化処理を完了する。
【０１４６】
活性化処理部３８Ｂでの活性化処理を完了後、ＤＲＡＭ読出指示はＦＩＦＯメモリ３８Ａから出力され、第１のＤＲＡＭアクセス部３２と同様に、アクセス種別判定部３８Ｃを介してＤＲＡＭ読出部３８Ｅに入力される。
これに応じて、ＤＲＡＭ読出部３８Ｅは、入力されたＤＲＡＭ読出指示に対応するＱＭの読出対象バンクにおいて、読出対象ロウアドレスのうち、指示されたＱＭのコラムアドレスからデータ（ＤＳＡ、ＤＮＵ、ＱＮＡ）を読み出した後（ステップ１１４）、ＤＲＡＭ読出処理を終了する。
【０１４７】
また、ＱＭの読出対象バンクの読出対象ロウアドレスが活性化状態にない場合（ステップ１１０：ＮＯ）、活性化処理部３８Ｂは、ＱＭの読出対象バンクにおいて異なるロウアドレスが活性化状態にあるか確認する（ステップ１１１）。
ここで、異なるロウアドレスが活性化状態にない場合（ステップ１１１：ＮＯ）、活性化処理部３８Ｂは、ＱＭの読出対象バンクの読出対象ロウアドレスを活性化し（ステップ１１３）、活性化処理を完了する。これにより、ＤＲＡＭ読出部３８Ｅにおいて、活性化された読出対象ロウアドレスからの読み出しが行われることになる。
【０１４８】
また、異なるロウアドレスが活性化状態にある場合（ステップ１１１：ＹＥＳ）、活性化処理部３８Ｂは、異なるロウアドレスへのアクセスが完了するまで待機した後（ステップ１１２）、ステップ１１３へ移行して、前述と同様にＱＭの読出対象ロウアドレスの活性化を行う。
【０１４９】
このように、ＱＭからデータ（ＤＳＡ、ＤＮＵ、ＱＮＡ）を読み出す際、読出対象となるデータ（ＤＳＡ、ＤＮＵ、ＱＮＡ）が特定のバンクに書き込まれていることから、書き込み時のように、ＱＭのロウアドレスが活性化状態にあるバンクを選択することはできない。このため、同一バンクの異なるロウアドレスからの読み出しや、書き込み後の同一バンクからの読み出しにおいて待ち時間が発生するものとなる。
なお、フレームデータ読み出し時には、ＱＭからの読み出しに加えてＱＭへの書き込みも必要な場合がある（ＤＮＵが２以上の場合）。
【０１５０】
［第１の実施の形態の効果］
このように、本実施の形態は、記録装置３０において、データメモリ（ＤＭ）３１をバンクごとに複数のロウアドレスを有するＤＲＡＭから構成して、キューと対応するロウアドレスで当該キューのフレームデータを記憶し、第１のＤＲＡＭアクセス部３２が、書込対象キューにフレームデータを書き込む際、バンクのうち当該書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択して当該フレームデータを書き込み、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後に当該フレームデータを書き込むようにしたものである。
【０１５１】
より具体的には、記録装置３０に、複数のバンクを有するＤＲＡＭからなり、データメモリ３１のキューに対する書き込み・読み出しを制御する際に用いるキュー制御情報を記憶するキュー制御メモリ３３と、キュー制御メモリ３３のキュー制御情報に基づいて、多重化装置１０から転送された通信データの書込対象キューに対する書き込みを第１のＤＲＡＭアクセス部３２に指示する書込制御部３４と、キュー制御メモリ３３のキュー制御情報に基づいて、読出対象キューからの通信データの読み出しを第１のＤＲＡＭアクセス部３２に指示し、読み出した通信データを多重分離装置２０へ転送する読出制御部３５とを備えたものである。
【０１５２】
これに加えて、記録装置３０に第２のＤＲＡＭアクセス部３８を備え、キューと対応するキュー制御メモリ３３の個別のロウアドレスで当該キューのキュー制御情報を記録し、書込対象キューに通信データを書き込む際、キュー制御メモリ３３のバンクのうち当該書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択して当該キュー制御情報を書き込み、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後に当該キュー制御情報を書き込むようにしたものである。
【０１５３】
一般に、ＤＲＡＭでは、任意のバンクの任意のロウアドレスにデータを書き込む場合、当該バンクにおいて当該ロウアドレスを活性化する必要があり、同一バンクの異なるロウアドレスにアクセスする場合には、当該ロウアドレスを用いたアクセスが完了するのを待ってから、新たなロウアドレスを活性化する必要があるため、同一バンクへのアクセスにおいて、ロウアドレスの活性化に起因して比較的大きな待ち時間が発生する。具体的には、同一バンクの異なるロウアドレスへのアクセスが連続した場合である。その他に待ち時間が発生する条件として、読み出し後の同一バンクに書き込みを行う場合、および、書き込み後の同一バンクから読み出しを行う場合がある。
【０１５４】
本実施形態によれば、データメモリ３１を構成するＤＲＡＭにフレームデータを書き込む際、ＤＲＡＭが持つ各バンクのうちから、書込対象ロウアドレスが活性化状態にあるバンクが書込対象バンクとして優先的に選択される。
これにより、データメモリ３１を構成するＤＲＡＭの同一バンクの異なるロウアドレスへの書き込みが発生する確率を低減することができる。したがって、データメモリ３１を構成するＤＲＡＭへのフレームデータ書込時におけるロウアドレスの活性化や、異なるロウアドレスに対するアクセス完了を待つ回数を低減させることができ、データメモリ３１を構成するＤＲＡＭへのＤＲＡＭアクセスに関する実効スループットの低下を抑制することが可能となる。
【０１５５】
特に、通信用入出力装置１においては、短いフレームデータがバースト的に連続して入力される場合がある。本願発明によれば、各出力系統のキューに対して個別のロウアドレスが割り当てられている。このため、このようなケースにおいては、同一ロウアドレスに対する書き込みが繰り返し行われることになり、ロウアドレスの変更による活性化の回数を削減することができる。したがって、このようなケースにおいても、ＤＲＡＭアクセスに関する実効スループットの低下を抑制することができるため、フレームデータの処理速度に十分追従でき、通信品質の劣化を低減することが可能となる。
【０１５６】
また、本実施の形態において、キューとデータメモリ３１のバンクとの組み合わせごとに、当該キューの通信データを当該バンクに書き込む際にコラムアドレスとして用いる書込ポインタ値を記憶する第１のバンク管理メモリ（ＤＭ用のＷ／Ｒポインタ）３３Ｅを設け、通信データを書き込む際、書込対象ロウアドレスと書込対象バンクとの組み合わせに対応する書込ポインタ値を第１のバンク管理メモリ３３Ｅから取得し、当該書込対象バンクの当該書込対象ロウアドレスのうち、当該書込ポインタ値からなるコラムアドレスに当該通信データを書き込むようにしてもよい。
【０１５７】
これにより、各出力系統のキューに対して個別のロウアドレスが割り当てた場合でも、複数のキューがデータメモリ３１の各バンクを共用することができるとともに、任意のキューにフレームデータを書き込む際、ロウアドレスが活性化状態にあるいずれのバンクが選択されても、極めて迅速に当該バンクで使用すべきカラムアドレスを特定することができ、ＤＲＡＭ（ＤＭ）アクセスの実効スループットを向上させることができる。
【０１５８】
また、本実施の形態は、記録装置３０が、キューとキュー制御メモリ３３のバンクとの組み合わせごとに、当該キューのキュー制御情報を当該バンクに書き込む際にコラムアドレスとして用いる書込ポインタ値を記憶する第２のバンク管理メモリ（ＱＭ用のＷ／Ｒポインタ）３３Ｆを設け、キュー制御情報を書き込む際、書込対象ロウアドレスと書込対象バンクとの組み合わせに対応する書込ポインタ値を第２のバンク管理メモリ３３Ｆから取得し、当該書込対象バンクの当該書込対象ロウアドレスのうち、当該書込ポインタ値からなるコラムアドレスに当該キュー制御情報を書き込むようにしたものである。
【０１５９】
これにより、各出力系統のキューに対して個別のロウアドレスが割り当てた場合でも、複数のキューがＱＭの各バンクを共用することができるとともに、任意のキューにキュー制御情報を書き込む際、ロウアドレスが活性化状態にあるいずれのバンクが選択されても、極めて迅速に当該バンクで使用すべきカラムアドレスを特定することができ、ＤＲＡＭ（ＱＭ）アクセスの実効スループットを向上させることができる。
【０１６０】
また、本実施の形態において、記録装置３０において、仮想格納アドレスに書き込まれた通信データに後続する通信データの格納バンク（ＱＮＡ）を記憶し、キューごとに、当該キューの先頭および最終の通信データが書き込まれているバンク（ＱＳＡ，ＱＬＡ）を記憶するようにしてもよい。
【０１６１】
これに加えて、書込制御部３４が、書込対象キューに通信データを書き込む（書き込み指示を行う）際、選択されたバンクのライトポインタからなる書込対象仮想アドレスへの当該通信データの書き込み指示を行い、当該書込対象キューのキュー最終バンク（ＱＬＡ）、書込前の最終データに後続するデータの格納バンク（ＱＮＡ）とライトポインタをそれぞれ更新し、読出制御部３５が、読出対象キューから通信データを読み出す（読み出し指示を行う）際、当該読出対象キューのキュー先頭バンクのリードポインタ値から当該通信データを読み出し、当該読出対象キューのキュー先頭バンク（ＱＳＡ）とリードポインタをそれぞれ更新するようにしてもよい。
【０１６２】
これにより、各キューのフレームデータが、空き状態にある仮想格納アドレスに順次書き込まれ、フレームデータが読み出された仮想格納アドレスが再び空き状態として管理されることになる。またキューごとに書き込まれた順序でフレームデータの仮想格納アドレスが管理されることになる。
【０１６３】
また、本実施の形態によれば、キュー制御情報を記憶するキュー制御メモリ３３に、通信データ書き込み時に選択したバンクの情報を記憶でき、その情報を該当の通信データの読み出し時に使用することができ、効率よく通信データを読み出すことができる。
【０１６４】
また、キュー制御メモリ３３をＤＲＡＭで構成した場合でも、上記のバンク選択により、ＱＭ用のＤＲＡＭのロウアドレスの活性化回数を低減することができる。このため、ＱＭ用のＤＲＡＭアクセスに関する実効スループットの低下を抑制することができる。なお、ＱＭ用のＤＲＡＭアクセスに関する実効スループットが低下すると、フレームデータの書き込み、読み出しのスループットが低下する場合もあるため、ＱＭ用のＤＲＡＭアクセスに関する実効スループットの低下の抑制により、フレームデータの書き込み、読み出しのスループットの低下を抑制することができる。
【０１６５】
また、キュー制御情報を記憶するキュー制御メモリ３３に、通信データ書き込み時に選択したバンクの情報を記憶でき、その情報を該当の通信データの読み出し時に使用できる。
また、同一キューのデータを連続するアドレスに書込む場合にＱＭ内のＤＮＵの更新を行うようにすることにより、ＱＭのアドレス数をデータメモリのアドレス数より小さくすることが可能となる。
【０１６６】
また、本実施の形態は、ＱＭ内のＤＳＡ値等の初期値を設定する必要がないという特徴がある。本実施の形態において、通信用入出力装置の起動時に初期値を設定する必要がある情報はＱＣＮと、Ｗ／Ｒポインタと、ＡＡＲのみである。したがって、初期設定を行うための回路の規模、もしくは、初期設定を行うためのソフトウエアの規模が極めて小さく、初期設定に要する時間も極めて小さいという効果がある。
【０１６７】
［第２の実施の形態］
次に、図２１を参照して、本発明の第２の実施の形態にかかる通信用入出力装置１について説明する。図２１は、第２の実施の形態にかかるアクセス調停部の構成を示すブロック図である。
【０１６８】
第１の実施の形態にかかる通信用入出力装置１において、例えば、特定の出力系統に関するフレームデータが多量に入力された場合、特定のバンクのデータメモリ（ＤＭ）３１およびアドレスキュー管理メモリ（ＱＭ）３３Ａへの書き込みを続けるとそのバンクへの書き込みができなくなる。
【０１６９】
本実施の形態は、ＤＭおよびＱＭのキューごと＆バンクごとの書き込み可否の判定を行うことに加え、キューごとのデータの蓄積量が設定された最大蓄積量を超えないようにすることを目的とし、記録装置３０において、アクセス調停部３７が、書込対象キューにフレームデータを書き込む（書き込み指示を行う）際、当該フレームデータのデータ長に基づき、書き込みに必要となる仮想格納アドレスの数を示す必要アドレス数を算出し、キュー使用アドレス数メモリ３６から取得した当該書込対象キューの使用仮想アドレス数に基づき、当該書き込みに使用可能な仮想格納アドレスの数を示す残りアドレス数を算出し、当該必要アドレス数と当該残りアドレス数とを比較することにより当該フレームデータの書込可否を判定し、書込可の判定に応じて書込制御部３４に対して当該フレームデータの書き込みを指示するようにしたものである。
【０１７０】
図２１に示すように、本実施の形態において、アクセス調停部３７には、主な回路部として、書込可否判定部３７Ａ、書込用ＦＩＦＯ３７Ｂ、読出受付部３７Ｃ、読出用ＦＩＦＯ３７Ｄ、優先制御部３７Ｅ、キュー使用アドレス数更新部３７Ｆ、および指示出力部３７Ｇが設けられている。
【０１７１】
書込可否判定部３７Ａは、多重化装置１０から転送されたフレームデータに付加されているキュー指定情報およびフレーム長情報と、キューごとに予め設定されている判定用アドレス数情報と、各キューの使用仮想アドレス数とに基づいて、書込可能か否か判定する機能と、書込可の判定結果に応じて、当該フレームデータを、データメモリ（ＤＭ）３１に設けられている格納領域の１仮想アドレス分のデータサイズに分割し、得られたデータにキュー指定情報を付加した書き込み指示を、それぞれ書込用ＦＩＦＯ３７Ｂに書き込む機能とを有している。
【０１７２】
判定用アドレス数情報には、当該キュー指定情報で指定された書込対象キューで使用可能な最大仮想アドレス数ＮＫｍａｘが含まれている。
図２２は、判定用アドレス数情報の構成例である。ここではキューを識別するためのキューＩＤごとに、最大仮想アドレス数ＮＫｍａｘが設定されている。これら判定用アドレス数情報は、例えばキュー使用アドレス数更新部３７Ｆ、あるいはアクセス調停部３７の内部メモリ（図示せず）で記憶されている。
【０１７３】
読出受付部３７Ｃは、多重分離装置２０から出力された読み出し要求の読出データ量情報に基づいて、ＤＭに対する読み出し回数を計算し、その読み出し回数だけ当該読み出し要求のキュー指定情報を読み出し指示として読出用ＦＩＦＯ３７Ｄに書き込む機能を有している。この計算は、読出データ量情報が示すデータ量をＤＭの１仮想アドレスあたりのデータサイズで除算した値を読み出し回数とし、剰余がある場合は読み出し回数に１を加算すればよい。
【０１７４】
優先制御部３７Ｅは、書込用ＦＩＦＯ３７Ｂもしくは読出用ＦＩＦＯ３７Ｄから、書き込み指示もしくは読み出し指示を読み出して、キュー使用アドレス数更新部３７Ｆへ出力する機能と、書込用ＦＩＦＯ３７Ｂと読出用ＦＩＦＯ３７Ｄの双方に、書き込み指示と読み出し指示が存在する場合は、書込用ＦＩＦＯ３７Ｂからの書き込み指示を優先して読み出す機能とを有している。
【０１７５】
キュー使用アドレス数更新部３７Ｆは、優先制御部３７Ｅから書き込み指示が入力された場合は、キュー使用アドレス数メモリ３６のうち、当該書き込み指示のキュー指定情報と対応する書込対象キューの使用仮想アドレス数に１を加算し、当該書き込み指示を指示出力部３７Ｇへ出力する機能と、優先制御部３７Ｅから読み出し指示が入力された場合は、キュー使用アドレス数メモリ３６のうち、当該読み出し指示のキュー指定情報と対応する読出対象キューの使用仮想アドレス数から１を減算し、当該読み出し指示を指示出力部３７Ｇへ出力する機能とを有している。
【０１７６】
指示出力部３７Ｇは、キュー使用アドレス数更新部３７Ｆから書き込み指示が入力された場合は、当該書き込み指示を書込制御部３４へ出力する機能と、読み出し指示が入力された場合は、当該読み出し指示を読出制御部３５へ出力する機能とを有している。
【０１７７】
［第２の実施の形態の動作］
次に、図２３を参照して、本実施の形態にかかるアクセス調停部３７の動作として、フレームデータの書き込み時における書込判定動作について説明する。図２３は、第２の実施の形態にかかる書込可否判定処理を示すフローチャートである。
記録装置３０のアクセス調停部３７は、多重化装置１０から転送されたフレームデータごとに、図２３の書込可否判定処理に基づいて、書込可否を判定する。
【０１７８】
まず、アクセス調停部３７は、キュー使用アドレス数メモリ３６から書き込み対象キューの使用仮想アドレス数ＱＣＮを取得して（ステップ２００）、キューごとの総仮想アドレス数NAからＱＣＮを減算することにより該当キューの残り仮想アドレス数ＮＲを算出し（ステップ２０１）、書込対象となる対象フレームデータの書き込みに要する必要仮想アドレス数ＮＦを算出する（ステップ２０２）。
【０１７９】
この後、ＮＦとＮＲとを比較する（ステップ２０３）。ここで、ＮＦ＞ＮＲの場合（ステップ２０３：ＹＥＳ）、アクセス調停部３７は、書込不可と判定して対象フレームデータを破棄し（ステップ２０８）、当該対象フレームデータに関する書込判定処理を終了する。
【０１８０】
一方、ＮＦ≦ＮＲの場合（ステップ２０３：ＮＯ）、アクセス調停部３７は、指定された書込対象キューの最大仮想アドレス数ＮＫｍａｘをキュー使用アドレス数メモリ３６等から取得して（ステップ２０４）、ＮＫｍａｘからＱＣＮを減算することにより残りアドレス数ＮＲを算出し（ステップ２０５）、ＮＦとＮＲとを比較する（ステップ２０６）。
ここで、ＮＦ＞ＮＲの場合（ステップ２０６：ＹＥＳ）、アクセス調停部３７は、書込不可と判定して対象フレームデータを破棄し（ステップ２０８）、当該対象フレームデータに関する書込判定処理を終了する。
【０１８１】
一方、ＮＦ≦ＮＲの場合（ステップ２０６：ＮＯ）、アクセス調停部３７は、対象フレームデータについて書込可と判定し（ステップ２０７）、当該対象フレームデータに関する書込判定処理を終了する。
この後、この書込可の判定に応じて、アクセス調停部３７は、対象フレームデータを１仮想アドレス分のデータサイズに分割し、得られたデータにキュー指定情報を付加した書き込み指示を、それぞれ書込用ＦＩＦＯ３７Ｂに書き込むことになる。
なお、さらに、キュー使用アドレス数メモリ３６等でキューごとにＤＭのバンクごとの仮想アドレス使用数を管理し、例えば、各バンクごとの残りアドレス数の最大値をＮＲとして書込判定処理を行うようにしてもよい。
【０１８２】
［第２の実施の形態の効果］
このように、本実施の形態は、記録装置３０において、キュー使用アドレス数メモリ３６が、キューごとに、当該キューが使用している仮想格納アドレスの数を示す使用アドレス数を記憶し、アクセス調停部３７が、書込対象キューに通信データを書き込む（書き込み指示を行う）際、当該通信データのデータ長に基づき、書き込みに必要となる仮想格納アドレスの数を示す必要アドレス数を算出し、キュー使用アドレス数メモリ３６から取得した当該書込対象キューの使用仮想アドレス数等に基づき、当該書き込みに使用可能な仮想格納アドレスの数を示す残りアドレス数を算出し、当該必要アドレス数と当該残りアドレス数とを比較することにより当該通信データの書込可否を判定し、書込可の判定に応じて書込制御部３４に対して当該通信データの書き込みを指示するようにしたものである。
【０１８３】
本実施の形態において、図２１の構成のアクセス調停部３７を用いる場合、書込用ＦＩＦＯ３７Ｂに書き込み指示データが存在していると誤って書込可能と判定してしまう可能性がある。誤った判定を防止するためには、各キューの使用仮想アドレス数としてキュー使用アドレス数メモリ３６の情報に書込用ＦＩＦＯ３７Ｂ内の仮想アドレス数（書き込み指示の数）を加算した値を使用するか、ＮＡもしくはＮＫｍａｘとして書込用ＦＩＦＯ３７Ｂ内の仮想アドレス数（書き込み指示の数）を減算した値を使用すればよい。
【０１８４】
なお、キュー使用アドレス数メモリ３６等でキューごとにデータメモリ３１のバンクごとの仮想アドレス使用数を管理し、例えば、各バンクごとの残りアドレス数の最大値をＮＲとして書込判定処理を行うようにすることにより、廃棄しないフレームについてはそのフレームのすべてのデータを同一バンクの連続アドレスに書き込むことができる。
【０１８５】
［第３の実施の形態］
次に、図２４〜図２７を参照して、本発明の第３の実施の形態にかかる通信用入出力装置１について説明する。図２４は、第３の実施の形態にかかるＱＭの構成を示すブロック図である。図２５は、第３の実施の形態にかかるＱＳＡ、ＱＬＡ、ＱＣＮ、および、Ｗ／Ｒポインタの構成を示すブロック図である。図２６は、第３の実施の形態にかかる書込制御部の書込動作を示すフローチャートである。図２７は、第３の実施の形態にかかる読出制御部の読出動作を示すフローチャートである。
【０１８６】
本実施の形態は、図２４および図２５に示すように、第１の実施の形態におけるＱＭのＤＮＵを１に限定して使用するとともに、Ｗ／Ｒポインタをデータメモリ（ＤＭ）３１とアドレスキュー管理メモリ（ＱＭ）３３Ａとで兼用するようにしたものである。
【０１８７】
次に、図２６に示す書込動作について具体的に説明する。
まず、書込制御部３４は、書込対象キューのＱＣＮが０か否か確認し（ステップ１２０）、ＱＣＮが０である場合（ステップ３００：ＹＥＳ）、ＤＭおよびＱＭのバンクを選択して（ステップ３０１）、ＱＳＡとＱＬＡに選択したＱＭバンクのバンク番号を書き込み（ステップ３０２）、選択したバンクのライトポインタを読み出す（ステップ３０３）。
【０１８８】
次に、書込制御部３４は、ＤＭ用のライトポインタをコラムアドレスとして、ＤＭにデータを書き込んで（ステップ３０４）、選択バンクのライトポインタを更新し（ステップ３０５）、書込対象キューのＱＣＮに１を加算した後（ステップ３０６）、一連の書込動作を終了する。
【０１８９】
また、ステップ３００において、ＱＣＮが０ではない場合（ステップ３００：ＮＯ）、書込制御部３４は、書込対象キューのＱＬＡを読み出して（ステップ３１０）、ＱＬＡに記録されていたバンクのライトポインタを読み出す（ステップ３１１）。
次に、書込制御部３４は、ＤＭおよびＱＭのバンクを選択し（ステップ３１２）、ＱＬＡに選択したバンクのバンク番号を書き込み（ステップ３１３）、選択前のバンクのライトポインタをコラムアドレスとして、ＱＭのＱＮＡに選択したバンク番号を書き込んだ後（ステップ３１４）、ステップ３０３へ移行する。
【０１９０】
次に、図２７に示す読込動作について説明する。
まず、読出制御部３５は、読出対象キューのＱＳＡを読み出し（ステップ３２０）、ＱＳＡに記録されていたバンクのリードポインタを読み出す（ステップ３２１）。
次に、読出制御部３５は、ＱＣＮが２以上か否かを確認し（ステップ３２２）、ＱＣＮが２以上ではない場合（ステップ３２２：ＮＯ）、リードポインタをコラムアドレスとして、ＤＭからデータを読み出して（ステップ３２３）、リードポインタを更新した後（ステップ３２４）、書込対象キューのＱＣＮから１を減算して（ステップ３２５）、一連の読出動作を終了する。
【０１９１】
一方、ステップ３２２において、ＱＣＮが２以上の場合（ステップ３２２：ＹＥＳ）、読出制御部３５は、リードポインタをコラムアドレスとして、ＱＭからＱＮＡを読み出して（ステップ３２６）、ＱＳＡにＱＮＡ値を書き込んだ後（ステップ３２７）、ステップ３２３へ移行する。
【０１９２】
［第３の実施の形態の効果］
このように、本実施の形態によれば、ＱＭのＤＮＵを１に限定して使用するとともに、Ｗ／ＲポインタをＤＭとＱＭで兼用するようにしたので、ＤＭのバンクとＱＭのバンクを独立に選択することはできないが、図２６に示す書込動作において、第１の実施の形態と同様に、ＤＭのバンクを選択することにより、ＤＲＡＭ（ＤＭおよびＱＭ）アクセスのスループットの劣化を抑止することができる。
【０１９３】
［実施の形態の拡張］
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。また、各実施形態については、矛盾しない範囲で任意に組み合わせて実施することができる。
【０１９４】
上記の各実施の形態において、通信用入出力装置１でマルチキャストフレームを処理する場合、出力系統の１つとしてマルチキャスト用出力系統を設けるとともに多重分離装置２０内の振分部２２にマルチキャストフレームを複数の速度変換部２３に出力する手段を設け、記録装置３０のデータメモリ３１内に論理的に形成した一部のキューをこのマルチキャスト用出力系統に対応するキューとして割り当てるようにしてもよい。
これにより、外部から多重化装置１０に入力されたマルチキャストフレームが、データメモリ３１内のマルチキャスト用出力系統に対応するキューに一時格納され、当該キューから多重分離装置２０によりマルチキャストフレームが読み出されて複数の出力ポートから出力される。
【符号の説明】
【０１９５】
１…通信用入出力装置、１０…多重化装置、１１…キュー指定情報付加部、１２…多重化部、２０…多重分離装置、２１…読出部、２２…振分部、２３，２４…速度変換部、３０…記録装置、３１…データメモリ（ＤＭ）、３２…第１のＤＲＡＭアクセス部、３２Ａ…ＦＩＦＯメモリ、３２Ｂ…活性化処理部、３２Ｃ…アクセス種別判定部、３２Ｄ…ＤＲＡＭ書込部、３２Ｅ…ＤＲＡＭ読出部、３３…キュー制御メモリ、３３Ａ…アドレスキュー管理メモリ（ＱＭ）、３３Ｂ…キュー先頭バンクレジスタ、３３Ｃ…キュー最終バンクメモリ、３３Ｄ…アクセス履歴レジスタ、３３Ｅ…第１のバンク管理メモリ、３３Ｆ…第２のバンク管理メモリ、３４…書込制御部、３５…読出制御部、３６…キュー使用アドレス数メモリ、３７…アクセス調停部、３７Ａ…書込可否判定部、３７Ｂ…書込用ＦＩＦＯ、３７Ｃ…読出受付部、３７Ｄ…読出用ＦＩＦＯ、３７Ｅ…優先制御部、３７Ｆ…キュー使用アドレス数更新部、３７Ｇ…指示出力部、３８…第２のＤＲＡＭアクセス部。
【図１】
2019032727.tif 000003
【図２】
2019032727.tif 000004
【図３】
2019032727.tif 000005
【図４】
2019032727.tif 000006
【図５】
2019032727.tif 000007
【図６】
2019032727.tif 000008
【図７】
2019032727.tif 000009
【図８】
2019032727.tif 000010
【図９】
2019032727.tif 000011
【図１０】
2019032727.tif 000012
【図１１】
2019032727.tif 000013
【図１２】
2019032727.tif 000014
【図１３】
2019032727.tif 000015
【図１４】
2019032727.tif 000016
【図１５】
2019032727.tif 000017
【図１６】
2019032727.tif 000018
【図１７】
2019032727.tif 000019
【図１８】
2019032727.tif 000020
【図１９】
2019032727.tif 000021
【図２０】
2019032727.tif 000022
【図２１】
2019032727.tif 000023
【図２２】
2019032727.tif 000024
【図２３】
2019032727.tif 000025
【図２４】
2019032727.tif 000026
【図２５】
2019032727.tif 000027
【図２６】
2019032727.tif 000028
【図２７】
2019032727.tif 000029
【図２８】
2019032727.tif 000030
【図２９】
2019032727.tif 000031