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