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