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