次に、本発明の実施の形態について図面を参照して説明する。
[第1の実施の形態]
まず、図1を参照して、本発明の第1の実施の形態にかかる通信用入出力装置1について説明する。図1は、第1の実施の形態にかかる通信用入出力装置の構成を示すブロック図である。
この通信用入出力装置1は、インターネット通信等で使用されて、例えばイーサネット(登録商標)のフレームデータ等の通信データを入出力するための通信用入出力装置であり、1つまたは複数の入力ポートから入力された通信データを、その通信データを出力すべき出力系統ごとに分離し、当該出力系統と対応する出力ポートの通信速度に変換して出力する機能を有している。
図1に示すように、通信用入出力装置1は、多重化装置(MUX)10、メモリアクセス制御機能内蔵型の多重分離装置(DEMUX)20、およびアクセス制御機能内蔵型の記録装置(MEM)30から構成されている。以下では、通信用入出力装置1で入出力する通信データがフレームデータである場合を例として説明するが、これに限定されるものではなく、パケットやATMセルなど各種の通信データを、フレームデータと同様にして入出力することも可能である。
多重化装置10は、外部から順次入力されるフレームデータに、当該フレームデータを出力すべき出力系統と対応するキュー指定情報を付加して多重化する機能を有している。
記録装置30は、多重化装置10から転送されたフレームデータを、データメモリ内に論理的に形成した複数のキューのうち、当該フレームデータに付加されているキュー指定情報で指定された書込対象キューへ一時蓄積する機能を有している。
多重分離装置20は、記録装置30内のキューのうち優先制御に基づき選択した出力系統と対応する読出対象キューから、当該読出対象キューに一時蓄積されているフレームデータを読み出し、当該出力系統と対応する出力ポートの通信速度に変換して出力する機能を有している。
本実施の形態は、記録装置30において、第1のデータメモリ31をバンクごとに複数のロウアドレスを有するDRAMから構成して、キューと対応するロウアドレスで当該キューのフレームデータを記憶するとともに、第2のデータメモリ41を第1のデータメモリ31のDRAMより動作速度の速いSRAMから構成し、アクセス調停部37が、通信データの書き込み・読み込みを行う際、当該通信データが高優先以外の場合には、当該通信データの書込先・読込元として第1のデータメモリ31を指示し、当該通信データが高優先である場合には、当該通信データの書込先・読込元として第2のデータメモリ41を指示するようにしたものである。
これに加えて、DRAMアクセス部32が、書込対象キューにフレームデータを書き込む際、バンクのうち当該書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択して当該フレームデータを書き込み、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後に当該フレームデータを書き込むようにしたものである。
本実施の形態では、図1に示すように、入力ポートPinとして2つの入力ポートPin0,Pin1が設けられ、出力ポートPoutとして2つの出力ポートPout0,Pout1が設けられている場合を例として説明するが、入力ポートPinおよび出力ポートPoutの数については、これに限定されるものではない。入力ポートPinおよび出力ポートPoutのいずれか一方または両方を3つ以上設けることも可能であり、入力ポート数と出力ポート数が異なっていてもよい。なお、入力ポート数は、1つであってもよい。
[多重化装置]
次に、図1を参照して、本実施の形態にかかる通信用入出力装置1で用いられる多重化装置10について詳細に説明する。
図1に示すように、多重化装置10には、主な回路部として、キュー指定情報付加部11と多重化部12が設けられている。
キュー指定情報付加部11は、入力ポートPin0,Pin1ごとに設けられて、対応する入力ポートPinから入力されるフレームデータに対して、当該フレームデータの出力先に対応するキュー指定情報と、当該フレームデータのフレーム長情報(Byte)とを付加して多重化部12へ出力する機能を有している。この際、フレーム長情報については、例えば、多重化部12にフレームデータを出力する際、当該フレームデータの先頭から最終までのByte数をフレーム長として計数したものを付加すればよい。
多重化部12は、各キュー指定情報付加部11に共通して1つ設けられて、各キュー指定情報付加部11から出力されたフレームデータを時分割で多重化して、記録装置30へ出力する機能を有している。
多重化装置10において、フレームデータの出力先に対応するキューの指定については、IEEE802.1D等のブリッジ機能により実現すればよく、具体的には、MACアドレス学習による出力ポート検索、VLAN−IDによる出力ポート指定等が可能である(特許文献1など参照)。
[多重分離装置]
次に、図1を参照して、本実施の形態にかかる通信用入出力装置1で用いられる多重分離装置20について詳細説明する。
図1に示すように、多重分離装置20には、主な回路部として、読出部21、振分部22、および速度変換部23,24が設けられている。
読出部21は、記録装置30から取得した各キューの蓄積状況や速度変換部23,24から出力された読出停止指示信号を参照し、出力ポートPout0,Pout1ごとの優先制御ロジックに基づいてフレームデータを優先して出力すべき出力系統を選択する機能と、当該出力系統と対応する読出対象キューからのフレームデータの読み出しを要求する読み出し要求を出力する機能と、これに応じて記録装置30から転送されたフレームデータを、振分部22へ出力する機能を有している。
優先制御ロジックについては、例えば各キューの容量が同じ場合であれば、読み出し可能なキューの中でキューに蓄積されている通信データの量が最も多いキューから読み出しを行う等、一般的な優先制御ロジックを用いればよい(特許文献1など参照)。
また、読出部21は、記録装置30に読み出し要求を出力する際、読み出し対象となるキューを指定するキュー指定情報に加えて、読み出しデータのデータ量を示す読出データ量情報を記録装置30に指示する。
読出データ量情報については、例えば読み出しを行うキューのデータ蓄積量が予め設定した閾値以下の場合は、データ蓄積量に等しい値を読出データ量情報として出力し、閾値を超えていた場合は、閾値の値を読出データ量情報として出力すればよい。
なお、本実施の形態にかかる読出部21においては、記録装置30からのフレームデータの入力として、第1のデータメモリ31から読み出されたデータが入力される第1のデータ入力と、第2のデータメモリ41から読み出されたデータが入力される第2のデータ入力を持ち、どちらからデータが入力されるかは指定したキュー指定情報で判定できるものとする。また、読み出し要求出力からフレームデータが入力されるまでの時間(遅延)が、第1のデータ入力と第2のデータ入力で異なるため、指定したキュー情報を用いて、フレームデータを受信するタイミングを変えるものとする。
また、第1のデータメモリ31への読み出し要求の直後(かつ、該当のフレームデータの受信前)に第2のデータメモリ41への読み出し要求を行うと、第1のデータメモリ31からのフレームデータの出力が完了する前に第2のデータメモリ41からのフレームデータの出力が開始される可能性があるが、指定したキュー情報のうち、フレームデータの受信を完了していないキューの情報を記憶しておき、第1のデータメモリ31からのフレームデータと第2のデータメモリ41からのフレームデータを同時に受信できるようにし、優先度等に応じて振分部22へ出力できるようにすればよい。
なお、読み出し要求の順番とフレームデータを受信する順番が入れ替わる可能性、すなわち、第2のデータメモリ41からのフレームデータが、先に読み出し要求された第1のデータメモリ31からのフレームデータより先に入力される可能性もあるが、第1のデータ入力で入力されるフレームデータ間での入れ替わりは発生せず、第2のデータ入力で入力されるフレームデータ間での入れ替わりも発生しないので、記憶したキューの情報と入力されたフレームデータとの対応を確認することができる。
振分部22は、読出部21から出力されたフレームデータを、当該フレームデータに付加されているキュー指定情報に基づいて、対応する出力ポートの速度変換部23,24へ振り分ける機能を有している。
速度変換部23,24は、出力ポートごとに設けられて、振分部22から振り分けられたフレームデータを当該出力ポートの通信速度に変換して出力する機能と、フレームデータの出力状況に応じて読出停止指示信号を読出部21に出力する機能とを有している。
なお、フレームデータに付加されているキュー指定情報は、振分部22もしくは速度変換部23,24で削除される。
[記録装置]
次に、図1を参照して、本実施の形態にかかる通信用入出力装置1で用いられる記録装置30について詳細説明する。
図1に示すように、記録装置30には、主な回路部として、第1のデータメモリ31、DRAMアクセス部32、第1のキュー制御メモリ33、第1の書込制御部34、第1の読出制御部35、キュー使用アドレス数メモリ36、アクセス調停部37、第2のデータメモリ41、第2のキュー制御メモリ43、第2の書込制御部44、および第2の読出制御部45が設けられている。
第1のデータメモリ31は、バンク(Bank)ごとに複数のロウアドレス(Row Address)を有する一般的なDRAM(DRAMチップ)からなり、キューと対応するロウアドレスで当該キューのフレームデータを記憶する機能を有している。具体的には、データメモリ31を1つ、もしくは、複数のDRAMチップで構成して、各出力系統のキューに対応させればよく、出力系統ごとにそれぞれ1つのキューを持たせる構成の他、1つの出力系統に複数のキューを持たせることも可能である。本実施の形態では、キューとロウアドレスとが対応しており、1つのDRAMチップを複数のキューで共用することになる。
第1のデータメモリ31には、固有の格納アドレスを持つ複数の格納領域が設けられている。各キューは第1のデータメモリ31の格納アドレスと同等な仮想格納アドレスを持つ仮想データメモリの仮想格納領域を、仮想格納アドレスの連続・不連続あるいは昇順・降順に関わらず任意に連結することにより構成されている。なお、仮想格納アドレスは、DRAMへのアクセスに用いる実際のロウアドレス、コラムアドレス(Column Address)、およびバンク番号とは独立した、フレームデータの管理に用いられるものであり、仮想的なメモリ空間におけるアドレス情報である。
図2は、仮想データメモリ(DRAM)の記憶例である。ここでは、それぞれ固有の仮想格納アドレスADM(0〜N:Nは2以上の整数)を持つ仮想格納領域ごとに、第1の書込制御部34から書き込まれたデータを記憶している場合のイメージを示している。
この際、1フレームが1仮想アドレス分のデータサイズより長い場合、1フレームは、1仮想アドレス分のデータサイズに合わせて複数のデータDに分割され、それぞれ異なる複数の仮想格納アドレスに書き込まれる。例えば、図2の場合、仮想格納アドレス0,1,4には、キューP1のデータP1−1,P1−2,P1−3が格納されており、仮想格納アドレス2,3,5には、キューP2のデータP2−1,P2−2,P2−3が格納されている。これらデータの前後関係やフレームとの対応関係については、後述するアドレスキュー管理メモリで管理される。なお、1フレームが仮想格納領域のデータサイズより短い場合、フレームデータは1つの仮想格納領域に格納される。
DRAMアクセス部32は、第1の書込制御部34からのDRAM書込指示に応じて、データメモリ31内の書込対象キューと対応する書込対象ロウアドレスにフレームデータを書き込む機能と、第1の読出制御部35からのDRAM読出指示に応じて、データメモリ31内の読出対象キューと対応する書込対象ロウアドレスからフレームデータを読み出す機能とを有している。
DRAMアクセス部32は、フレームデータを書き込む際、DRAMが有するバンクのうち書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択してフレームデータを書き込む機能と、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後にフレームデータを書き込む機能とを有している。
また、DRAMアクセス部32は、フレームデータを書き込む際、指定された仮想格納アドレスに対応するバンクとして書込対象バンクを記憶する機能と、フレームデータを読み出す際、指定された仮想格納アドレスと対応するバンクから読出対象バンクを特定する機能と、当該読出対象バンクにおいて読出対象キューに対応する読出対象ロウアドレスが活性化状態にある場合は、当該読出対象バンクの読出対象ロウアドレスからフレームデータを読み出し、当該読出対象バンクで読出対象ロウアドレス活性化状態にない場合は、当該読出対象バンクの読出対象ロウアドレスを活性化した後にフレームデータを読み出す機能とを有している。
第2のデータメモリ41は、SRAMからなり、アドレス指定により複数のキューのフレームデータを記憶する機能を有している。具体的には、第2のデータメモリ41を1つ、もしくは、複数のSRAMで構成して、各出力系統のキューに対応させればよく、出力系統ごとにそれぞれ1つのキューを持たせる構成の他、1つの出力系統に複数のキューを持たせることも可能である。本実施の形態では、1つのSRAMを複数のキューで共用することが可能である。
第2のデータメモリ41には、固有の格納アドレスを持つ複数の格納領域が設けられている。各キューは第2のデータメモリ41の格納領域を、格納アドレスの連続・不連続あるいは昇順・降順に関わらず任意に連結することにより構成されている。
図3は、第2のデータメモリ(SRAM)の記憶イメージの例である。ここでは、それぞれ固有の格納アドレスADM(0〜N:Nは2以上の整数)を持つ格納領域ごとに、第2の書込制御部44から書き込まれたデータを記憶している場合のイメージを示している。
この際、1フレームが1アドレス分のデータサイズより長い場合、1フレームは、1アドレス分のデータサイズに合わせて複数のデータDに分割され、それぞれ異なる複数の格納アドレスに書き込まれる。例えば、図3の場合は、格納アドレス0に、キューPM+1のデータPM+1−1が格納されている。データの前後関係やフレームとの対応関係については、後述するアドレスキュー管理メモリで管理される。なお、1フレームが格納領域のデータサイズより短い場合、フレームデータは1つの格納領域に格納される。
第1のキュー制御メモリ33は、例えばSRAMチップなどの半導体メモリからなり、第1のデータメモリ31上に形成されている各キューに対するフレームデータの書き込み・読み出しを制御する際に用いる各種のキュー制御情報を記憶する機能を有している。
図4は、第1のキュー制御メモリの構成を示すブロック図である。第1のキュー制御メモリ33は、レジスタやメモリからなる複数の記憶部を含んでおり、主な記憶部として、空きアドレスレジスタ(VAR,UAR)33A、アドレスキュー管理メモリ(QM)33B、キュー先頭アドレスレジスタ(SAR)33C、キュー最終アドレスレジスタ(LAR)33D、および作業用アドレスレジスタ(TMPV,TMPL)33Eを有している。なお、以下では理解を容易とするため、レジスタ名を変数名として用いて説明する場合がある。
空きアドレスレジスタ(VAR,UAR)33Aは、各キューに共通して、次書込アドレスVARと未書込アドレスUARとを記憶する機能を有している。このうち、VAR(Valid Address Register)は、多重化装置10から次に受け取ったフレームデータを書き込む際、当該フレームデータを次に書き込むべき仮想格納アドレスを示すアドレス情報である。また、UAR(Unused Address Register)は、初期化後にまだ一度もデータが書き込まれていない未使用の仮想格納アドレスのうちの先頭(若番)を示す格納アドレスである。
本実施の形態では、フレームデータ書き込み時、仮想格納アドレスの若番から順に使用することを基本としており、フレームデータの読み出しにより空き状態となった仮想格納アドレスについては、未使用の仮想格納アドレスより優先して再使用するものとする。なお、再使用する仮想格納アドレスの順序については、例えば直近に空き状態となった仮想格納アドレスから順に再使用するなど、任意の順序でよく、若番の順に限定されない。
アドレスキュー管理メモリ(QM)33Bは、仮想格納アドレスADMごとに、後続仮想アドレスADD(ADDress)とポインタPN(Pointer of QM)とを記憶する機能を有している。
図5は、アドレスキュー管理メモリ(DRAM用)の記憶例である。このうち、ADDは、当該仮想格納アドレスに書き込まれた通信データに後続する通信データが格納されている仮想格納アドレスである。また、PNは、当該仮想格納アドレスに格納されているデータにフレームデータの最終データを含むか否かを示す情報(フレーム終端フラグ:EoF)である。
キュー先頭アドレスレジスタ(SAR)33Cは、キューごとに、キュー先頭アドレスSAR(Start Address register of PM)を記憶する機能を有している。
キュー最終アドレスレジスタ(LAR)33Dは、キューごとに、キュー最終アドレスLAR(Last Address register of PM)を記憶する機能を有している。
図6は、キュー先頭・最終アドレスメモリ(DRAM用)の記憶例である。ここでは、キューを識別するためのキューID(キュー番号)ごとに、SARとLARを記憶している。このうち、SARは、当該キューのフレームデータが書き込まれている仮想格納アドレスの先頭を示すアドレス情報である。また、LARは、当該キューのフレームデータが書き込まれている仮想格納アドレスの最終を示すアドレス情報である。
作業用アドレスレジスタ(TMPV,TMPL)33Eは、各キューに共通して、作業用次書込アドレスTMPV(Temporary register for VAR)と作業用キュー最終アドレスTMPL(Temporary register for LAR)とを記憶する機能を有している。
このうち、TMPVは、直前に書き込み・読み出しを行ったキューの次書込アドレスVARを示すアドレス情報である。また、TMPLは、最後に書き込みを行ったキューの直前(更新前)のキュー最終アドレスLARを示すアドレス情報である。これらは、それぞれのデータの書き込み・読み出し作業の処理手順の関係から一時的にアドレス情報を保持するために使用されるものであるが、次の書き込み・読み出し作業に用いることもある。
第2のキュー制御メモリ43は、第1のキュー制御メモリ33と同様に、例えばSRAMチップなどの半導体メモリからなり、第2のデータメモリ41上に形成されている各キューに対するフレームデータの書き込み・読み出しを制御する際に用いる各種のキュー制御情報を記憶する機能を有している。
図7は、第2のキュー制御メモリの構成を示すブロック図である。第2のキュー制御メモリ43は、レジスタやメモリからなる複数の記憶部を含んでおり、第1のキュー制御メモリ33と同様に、主な記憶部として、空きアドレスレジスタ(VAR,UAR)43A、アドレスキュー管理メモリ(QM)43B、キュー先頭アドレスレジスタ(SAR)43C、キュー最終アドレスレジスタ(LAR)43D、および作業用アドレスレジスタ(TMPV,TMPL)43Eを有している。なお、以下では理解を容易とするため、レジスタ名を変数名として用いて説明する場合がある。
空きアドレスレジスタ(VAR,UAR)43は、第1のキュー制御メモリ33と同様に、各キューに共通して、次書込アドレスVARと未書込アドレスUARとを記憶する機能を有している。このうち、VAR(Valid Address Register)は、多重化装置10から次に受け取ったフレームデータを書き込む際、当該フレームデータを次に書き込むべき格納アドレスを示すアドレス情報である。また、UAR(Unused Address Register)は、初期化後にまだ一度もデータが書き込まれていない未使用の格納アドレスのうちの先頭(若番)を示す格納アドレスである。
本実施の形態では、フレームデータ書き込み時、格納アドレスの若番から順に使用することを基本としており、フレームデータの読み出しにより空き状態となった格納アドレスについては、未使用の格納アドレスより優先して再使用するものとする。なお、再使用する格納アドレスの順序については、例えば直近に空き状態となった格納アドレスから順に再使用するなど、任意の順序でよく、若番の順に限定されない。
アドレスキュー管理メモリ(QM)43Bは、格納アドレスADMごとに、後続アドレスADD(ADDress)とポインタPN(Pointer of QM)とを記憶する機能を有している。
図8は、アドレスキュー管理メモリ(SRAM用)の記憶例である。このうち、ADDは、当該格納アドレスに書き込まれた通信データに後続する通信データが格納されている格納アドレスである。また、PNは、当該格納アドレスに格納されているデータにフレームデータの最終データを含むか否かを示す情報(フレーム終端フラグ:EoF)である。
キュー先頭アドレスレジスタ(SAR)43Cは、キューごとに、キュー先頭アドレスSAR(Start Address register of PM)を記憶する機能を有している。
キュー最終アドレスレジスタ(LAR)43Dは、キューごとに、キュー最終アドレスLAR(Last Address register of PM)を記憶する機能を有している。
図9は、キュー先頭・最終アドレスメモリ(SRAM用)の記憶例である。ここでは、キューを識別するためのキューID(キュー番号)ごとに、SARとLARを記憶している。このうち、SARは、当該キューのフレームデータが書き込まれている格納アドレスの先頭を示すアドレス情報である。また、LARは、当該キューのフレームデータが書き込まれている格納アドレスの最終を示すアドレス情報である。
作業用アドレスレジスタ(TMPV,TMPL)43Eは、各キューに共通して、作業用次書込アドレスTMPV(Temporary register for VAR)と作業用キュー最終アドレスTMPL(Temporary register for LAR)とを記憶する機能を有している。
このうち、TMPVは、直前に書き込み・読み出しを行ったキューの次書込アドレスVARを示すアドレス情報である。また、TMPLは、最後に書き込みを行ったキューの直前(更新前)のキュー最終アドレスLARを示すアドレス情報である。これらは、それぞれのデータの書き込み・読み出し作業の処理手順の関係から一時的にアドレス情報を保持するために使用されるものであるが、次の書き込み・読み出し作業に用いることもある。
第1の書込制御部34は、アクセス調停部37からの書き込み指示に応じて、第1のキュー制御メモリ33のキュー制御情報に基づいて、書込対象キューと仮想格納アドレス(TMPV)を指定した、フレームデータの書き込みを指示するDRAM書込指示を、DRAMアクセス部32へ出力する機能を有している。
第2の書込制御部44は、アクセス調停部37からの書き込み指示に応じて、第2のキュー制御メモリ43のキュー制御情報に基づいて、格納アドレス(TMPV)を指定した、フレームデータの書き込みを指示するSRAM書込指示を、第2のデータメモリ41へ出力する機能を有している。
第1の読出制御部35は、アクセス調停部37からの読み出し指示に応じて、第1のキュー制御メモリ33のキュー制御情報に基づいて、読出対象キューと仮想格納アドレス(SAR)を指定した、読出対象キューからの先頭データの読み出しを指示するDRAM読出指示を、DRAMアクセス部32へ出力する機能と、DRAMアクセス部32を介して読出対象キューから読み出したデータをフレーム終端フラグおよびキュー指定情報とともに多重分離装置20へ転送する機能とを有している。
第2の読出制御部45は、アクセス調停部37からの読み出し指示に応じて、第2のキュー制御メモリ43のキュー制御情報に基づいて、格納アドレス(SAR)を指定した、読出対象キューからの先頭データの読み出しを指示するSRAM読出指示を、第2のデータメモリ41へ出力する機能と、読出対象キューから読み出したデータをフレーム終端フラグおよびキュー指定情報とともに多重分離装置20へ転送する機能とを有している。
キュー使用アドレス数メモリ36は、例えばSRAMチップなどの半導体メモリからなり、キューごとに、当該キューに蓄積されているフレームデータが使用している仮想アドレス数NKを記憶する機能と、多重分離装置20およびアクセス調停部37からの要求に応じて、指定されたキューの仮想アドレス数NKを出力する機能とを有している。
図10は、キュー使用アドレス数メモリの記憶例である。ここでは、キューを識別するためのキューID(キュー番号)ごとに、当該キューの仮想アドレス数NKが記憶されている。
アクセス調停部37は、通信データの書き込み・読み込みを行う際、書込対象キューまたは読出対象キューの書込先・読込元として予め割り当てられている、第1のデータメモリ31または第2のデータメモリ41のいずれか一方を選択して指示する機能を有している。一般には、DRAMに比較してSRAMのほうが動作速度が速い。このため、第1のデータメモリ31に対して優先度が低い低優先(非優先)のキューを設定し、第2のデータメモリ41に対して優先度が高い高優先(優先)のキューを設定することにより、DRAMアクセスに関する実効スループットの低下を抑制できるとともに、高優先のキューのフレームデータに関する遅延を削減することが可能となる。
また、アクセス調停部37は、多重化装置10から転送されたフレームデータを受け取り、当該フレームデータに付加されているフレーム長情報に基づき、フレームデータを1仮想アドレス分のデータサイズで複数のデータDに分割することにより書込回数を計算する機能と、この書込回数分だけ、それぞれのデータDに関する、当該フレームデータに付加されているキュー指定情報で指定された書込対象キューへの書き込みを指示する書き込み指示を第1の書込制御部34、もしくは、第2の書込制御部44に出力する機能と、当該フレームデータの書き込みにより増加する仮想アドレス数を、キュー使用アドレス数メモリ36の当該書込対象キューの仮想アドレス数NKに加算する機能とを有している。
また、アクセス調停部37は、多重分離装置20からの読み出し要求に応じて、当該読み出し要求の読出データ量情報で指定されたデータ量を1仮想アドレス分のデータサイズで分割することにより読出回数を計算する機能と、この読出回数分だけ、当該読み出し要求のキュー指定情報で指定された読出対象キューからのフレームデータの読み出しを指示する読み出し指示を第1の読出制御部35または第2の読出制御部45へ出力する機能と、当該フレームデータの読み出しにより減少する仮想アドレス数を、キュー使用アドレス数メモリ36の当該書込対象キューの仮想アドレス数NKから減算する機能と、フレームデータの書き込みとの競合を調停し、読み出し可能なタイミングで読み出し指示を出力する機能とを有している。
[DRAMアクセス部]
次に、図11を参照して、本実施の形態にかかる記録装置30で用いられるDRAMアクセス部32について説明する。図11は、第1の実施の形態にかかるDRAMアクセス部の構成を示すブロック図である。
DRAMアクセス部32には、主な回路部として、FIFOメモリ32A、活性化処理部32B、アクセス種別判定部32C、バンク管理メモリ32D、アドレス管理メモリ32E、DRAM書込部32F、およびDRAM読出部32Gが設けられている。
FIFOメモリ32Aは、一般的なFIFOメモリからなり、第1の書込制御部34からのDRAM書込指示および第1の読出制御部35からのDRAM読出指示を混在させて蓄積する機能と、活性化処理部32Bによるロウアドレスの活性化完了後、蓄積していたDRAM書込指示またはDRAM読出指示を入力順に読み出してアクセス種別判定部32Cへ出力する機能を有している。この際、アクセス種別判定のための情報として、第1の書込制御部34からのDRAM書込指示なのか、もしくは、第1の読出制御部35からのDRAM読出指示なのかを示す情報を、それぞれの指示と合わせてFIFOメモリ32Aに書き込んで、その情報もアクセス種別判定部32Cに出力するようにしてもよい。
なお、後述する図22に示すアクセス調停部37を使用する場合、第1の書込制御部34からのDRAM書込指示と第1の読出制御部35からのDRAM読出指示が同時に入力されることはないはずであるが、これらが同時に入力された場合には、FIFOメモリ32Aに対するDRAM書込指示の書込みを優先し、FIFOメモリ32Aに対するDRAM読出指示の書込みを待たせるようにすればよい。
活性化処理部32Bは、FIFOメモリ32AにDRAM書込指示が蓄積された場合、DRAMが有するバンクのうちDRAM書込指示で指定された書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択する機能と、書込対象バンクが書込不可の場合は書込対象ロウアドレスが活性化状態にある他のバンクを新たな書込対象バンクとして選択する機能と、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合および書込対象ロウアドレスが活性化状態にある書込可能なバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化する機能とを有している。
この際、書込対象バンクを選択する際、空き領域の有無だけでなく、書込対象バンクの書込対象ロウアドレスに、書込対象キューに関するデータが存在しているバンクを、書込対象バンクとして選択するようにしてもよい。
また、各バンクへの書込可否については、例えばバンク管理メモリ32Dにおいて、バンクごとに、書込可否を示す書込可否情報を記憶しておき、この書込可否情報に基づき書込可否を判定するようにしてもよい。
バンク管理メモリ32Dにおいて、バンクごと(キュー指定情報ごと)に書込可能情報を記憶する場合、書込可能情報の初期値は書込可とし、例えば、更新された書込ポインタ値WPが、対応する読出ポインタ値RPと同じ値になった時に書込不可(空き領域無し)とすればよい。また、書込不可状態でデータの読み出しが実施されて、読出ポインタ値RPが更新され、書込ポインタ値WPと異なる値となった時に書込可とすればよい。
また、活性化処理部32Bは、FIFOメモリ32AにDRAM読出指示が蓄積された場合、DRAM読出指示で指定された仮想格納アドレスと対応する読出対象バンクをアドレス管理メモリ32Eにより特定する機能と、当該読出対象バンクにおいてDRAM読出指示で指定された読出対象キューに対応する読出対象ロウアドレスが活性化状態にない場合には、当該読出対象バンクにおいて読出対象ロウアドレスを活性化する機能と、当該読出対象バンクにおいて読出対象ロウアドレスとは異なるロウアドレスが活性化状態にある場合は、当該ロウアドレスへのアクセス完了に応じて、読出対象ロウアドレスを活性化する機能とを有している。
アクセス種別判定部32Cは、FIFOメモリ32Aから出力されたDRAM書込指示をDRAM書込部32Fへ振り分けて出力する機能と、FIFOメモリ32Aから出力されたDRAM読出指示をDRAM読出部32Gへ振り分けて出力する機能とを有している。
バンク管理メモリ32Dは、例えばSRAMチップなどの半導体メモリからなり、キューとバンクとの組み合わせごとに、当該キューの通信データを当該バンクに書き込む際にコラムアドレスとして用いる書込ポインタ値WPを記憶する機能と、キューとバンクとの組み合わせごとに、当該キューの通信データを当該バンクから読み出す際にコラムアドレスとして用いる読出ポインタ値RPとを記憶する機能とを有している。
図12は、バンク管理メモリの記憶例である。ここでは、キューを識別するためのキューID(キュー番号)とバンクを機別するためのバンク番号との組み合わせごとに、書込ポインタ値WPと読出ポインタ値RPとが記憶されている。なお、書込ポインタ値WPと読出ポインタ値RPの初期値は、同じ値からなるものとする。
例えば、キューP2のうち、バンク#0において書込ポインタ値はWP2#0であり、バンク#0が書込対象バンクである場合、WP2#0が示すコラムアドレスにキューP2の新たなフレームデータが書き込まれることになる。また、キューP2のうち、バンク#1において読出ポインタ値はRP2#1であり、バンク#1が読出対象バンクである場合、RP2#1が示すコラムアドレスからキューP2のフレームデータが読み出されることになる。
アドレス管理メモリ32Eは、例えばSRAMチップなどの半導体メモリからなり、仮想格納アドレスごとに、当該仮想格納アドレスと対応するフレームデータが書き込まれたバンクのバンク番号を記憶する機能を有している。
図13は、アドレス管理メモリの記憶例である。ここでは、仮想格納アドレスADMごとに、当該仮想格納アドレスと関連付けられたフレームデータが書き込まれているバンクのバンク番号が記憶されている。例えば、仮想格納アドレス「2」と関連付けられたフレームデータは、バンク番号「#1」に書き込まれており、フレームデータ読出時には、このバンク番号と対応するバンクが読出対象バンクとなる。
DRAM書込部32Fは、入力されたDRAM書込指示における書込対象ロウアドレスと書込対象バンクとの組み合わせに基づき、バンク管理メモリ32Dから書込ポインタ値WPを取得する機能と、書込対象バンクの書込対象ロウアドレスのうち、書込ポインタ値WPからなるコラムアドレスに、DRAM書込指示で指定されたフレームデータ(データD)を書き込む機能と、1仮想格納アドレス分のデータ長に相当するポインタ値だけ、バンク管理メモリ32D内の当該書込ポインタ値WPを更新する機能と、アドレス管理メモリ32EのうちDRAM書込指示で指定された仮想格納アドレスのバンクとして、書込対象バンクを書き込む機能とを有している。
この際、1格納アドレス分のフレームデータ(データD)の書き込みに、複数のコラムアドレスが必要な場合は、DRAMの機能であるバーストモードを用いて、連続するコラムアドレスに書き込みを行うようにしてもよく、書込所要時間を短縮できる。
また、第1のデータメモリ31に対してEoF値(PN)の書き込みも行う場合は、フレームデータの書き込みと同時に行えばよい。
DRAM読出部32Gは、入力されたDRAM読出指示における読出対象ロウアドレスと読出対象バンクとの組み合わせに基づき、バンク管理メモリ32Dから読出ポインタ値RPを取得する機能と、読出対象バンクの読出対象ロウアドレスのうち、読出ポインタ値RPからなるコラムアドレスからフレームデータ(データD)を読み出して、キュー指定情報とともに読出制御部35へ出力する機能と、1仮想格納アドレス分のデータ長に相当するポインタ値だけ、バンク管理メモリ32D内の当該読出ポインタ値RPを更新する機能とを有している。
この際、1仮想格納アドレス分のフレームデータ(データD)の読み出しに、複数のコラムアドレスが必要な場合は、DRAMの機能であるバーストモードを用いて、連続するコラムアドレスから読み出しを行うようにしてもよく、読出所要時間を短縮できる。
また、第1のデータメモリ31に対してEoF値(PN)が書き込まれている場合は、フレームデータの読み出しと同時にEoF値の読み出しを行えばよい。
読み出したEoF値は、フレームデータおよびキュー指定情報とともに読出制御部35へ出力すればよい。なお、第1のデータメモリ31にEoF値を書き込まない場合は、アドレスキュー管理メモリ(QM)33BにEoF値を書き込んでおき、読出制御部35がキュー指定情報とともにこのEoF値をDRAMアクセス部32に出力し、DRAM読出部32Gが第1のデータメモリ31から読み出したフレームデータとともに、アクセス種別判定部32Cを介して受け取ったEoF値を第1の読出制御部35へ出力すればよい。
[第1の実施の形態の動作]
次に、図14および図15を参照して、本実施の形態にかかる通信用入出力装置1で用いられる記録装置30の動作について説明する。
図14は、書込制御部における書込動作を示す説明図である。図15は、読出制御部における読出動作を示す説明図である。
[書き込み動作]
まず、図14を参照して、記録装置30の第1の書込制御部34における書き込み動作について説明する。
第1の書込制御部34は、アクセス調停部37からの書き込み指示に応じて、図14の処理動作を実行する。新たなデータを書込対象キューに書き込んだ場合、各キューによる第1のデータメモリ31の格納アドレスの共用という観点からすれば、キュー制御情報における主な変化としては、書き込み前後において、書込対象キューに関するキュー最終アドレスLARと、書込前のキュー最終アドレスに関する後続仮想アドレスADDと、各キューに共通する次書込アドレスVARとが変化する。なお、書込対象キューに対する最初の書き込みである場合は、書込対象キューに関するキュー先頭アドレスSARも変化する。
このため、図14の処理動作において、第1の書込制御部34は、次書込アドレスVARに対する指定データの書き込み(書き込み指示の出力)、書込対象キューに関するキュー最終アドレスLARの更新、書込前のキュー最終アドレスに関する後続仮想アドレスADDの更新、各キューに共通する次書込アドレスVARの更新を行う。なお、書込対象キューに対する最初の書き込みである場合は、書込対象キューに関するキュー先頭アドレスの更新も行う。これら更新の詳細については動作例に基づいて後述する。
この際、第1の書込制御部34は、第1のキュー制御メモリ33にアクセスすることにより、図14に示すステップW1〜W7を実行する。すなわち、LAR保持(W1)、LAR,SAR更新(W2)、VAR保持(W3)、ADD更新(W4)、VAR更新(W5)、PN更新(W6)、データ等の出力(W7)の順で処理を実行する。なお、図5の処理順序は、処理効率を考慮したものであるが、他の処理順序であってもよい。
第2の書込制御部44の動作は第1の書込制御部34の動作と基本的に同じである。差分はデータ等の出力(W7)においてキュー指定情報を出力する必要がない点のみである。
[読み出し動作]
次に、図15を参照して、記録装置30の第1の読出制御部35における読み出し動作について説明する。
第1の読出制御部35は、アクセス調停部37からの読み出し指示に応じて、図15の処理動作を実行する。新たなデータを読出対象キューから読み出した場合、各キューによる第1のデータメモリ31の格納アドレスの共用という観点からすれば、キュー制御情報における主な変化としては、読み出し前後において、読出対象キューに関するキュー先頭アドレスSARと、各キューに共通する次書込アドレスVARと、新たな次書込アドレスVARに関する後続仮想アドレスADDとが変化する。
このため、図15の処理動作において、第1の読出制御部35は、読出対象キューに関するキュー先頭アドレスSARに対するEoF(End of Frame:フレーム終端フラグ)の読み出し、読出対象キューに関するキュー先頭アドレスSARの更新、各キューに共通する次書込アドレスVARの更新、読出済仮想格納アドレスに関する後続仮想アドレスADDの更新、読み出し指示の出力を行う。これら更新の詳細については動作例に基づいて後述する。
この際、第1の読出制御部35は、第1のキュー制御メモリ33にアクセスすることにより、図15に示すステップR1〜R5を実行する。すなわち、EoF出力(R1)、VAR保持(R2)、VAR更新(R3)、SAR更新(R4)、後続仮想アドレス更新(R5)、読み出し指示の出力の順で処理を実行する。なお、図7の処理順序は、処理効率を考慮したものであるが、他の処理順序であってもよい。
第2の読出制御部45の動作は第1の読出制御部35の動作と基本的に同じである。差分はDRAMアクセス部32との入出力ではなく、第2のデータメモリ41との入出力を有する点と、第2のデータメモリ41への出力にキュー指定情報が不要な点である。
[動作例]
次に、図16〜図19を参照して、記録装置30におけるフレームデータの書込動作および読出動作について、キューP2を読出・書込対象キューとし、このキューP2にデータP2−3が書込まれた後、データP2−1、P2−2を読み出し、さらにデータPM+1−1を書き込む場合を例に説明する。
図16は、データP2−1読出直前(データP2−3書込直後)のキュー制御情報を示す説明図である。ここでは、データP2−1読出直前すなわちデータP2−3が書込まれた直後におけるキュー制御情報が示されている。この状態において、仮想データメモリのうち、仮想格納アドレス「0,1,4」にキューP1のデータP1−1,P1−2,P1−3が書き込まれており、仮想格納アドレス「2,3,5」にキューP2のデータP2−1,P2−2,P2−3が書き込まれている。また、仮想格納アドレス「6〜N」は未使用である。
したがって、次書込アドレスVARは「6」となり、未書込アドレスUARも「6」である。また、キューP1のデータP1−1,P1−2,P1−3の順序に応じて、仮想格納アドレス「0,1」に関する後続仮想アドレスADDは「1,4」となり、キューP2のデータP2−1,P2−2,P2−3の順序に応じて、仮想格納アドレス「2,3」に関する後続仮想アドレスADDは「3,5」となっている。なお、仮想格納アドレス「0,2」のポインタPNが「0」となっており、データP1−1,P2−1には、フレーム終端が含まれていないことがわかる。
また、キューP1のキュー先頭アドレスSARは、データP1−1の仮想格納アドレス「0」を示し、キュー最終アドレスLARは、データP1−3の仮想格納アドレス「4」を示している。また、キューP2のキュー先頭アドレスSARは、データP2−1の仮想格納アドレス「2」を示し、キュー最終アドレスLARは、データP2−3の仮想格納アドレス「5」を示している。なお、作業用次書込アドレスTMPVと作業用キュー最終アドレスTMPLには、それぞれ「5」と「3」が格納されている。
図16に示した状態において、キューP2のデータP2−1を読み出した場合、キュー制御情報は、図17のように変化する。図17は、データP2−1読出時におけるキュー制御情報の変化を示す説明図である。
まず、キューP2に関するキュー先頭アドレスSARが示す読出対象仮想アドレス「2」からデータP2−1が読み出されるため、読出対象仮想アドレス「2」のデータDは空き状態となり、キューP2に関するデータはP2−2,P2−3の2つとなる。これにより、P2−2がキューP2の先頭データとなり、キュー先頭位置が仮想格納アドレス「2」から「3」に変化するため、キューP2に関するキュー先頭アドレスSARが「2」から「3」に更新される。
また、読出対象仮想アドレス「2」のデータDは空き状態となったため、この仮想格納アドレス「2」が次データの書込位置となる。これにより、次書込アドレスVARが「6」から「2」に更新される。また、これに伴って、旧次書込アドレスVAR「6」と新次書込アドレスVAR「2」との順序関係を維持するため、仮想格納アドレス「2」の後続仮想アドレスADDが「3」から「6」に更新される。これにより、作業用次書込アドレスTMPVと作業用キュー最終アドレスTMPLには、それぞれ「6」と「3」が格納される。
図17に示した状態において、キューP2のデータP2−2を読み出した場合、キュー制御情報は、図18のように変化する。図18は、データP2−2読出時におけるキュー制御情報の変化を示す説明図である。
まず、キューP2に関するキュー先頭アドレスSARが示す読出対象仮想アドレス「3」からデータP2−2が読み出されるため、読出対象仮想アドレス「3」のデータDは空き状態となり、キューP2に関するデータはP2−3の1つとなる。これにより、P2−3がキューP2の先頭データとなり、キュー先頭位置が仮想格納アドレス「3」から「5」に変化するため、キューP2に関するキュー先頭アドレスSARが「3」から「5」に更新される。
また、読出対象仮想アドレス「3」のデータDは空き状態となったため、この仮想格納アドレス「3」が次データの書込位置となる。これにより、次書込アドレスVARが「2」から「3」に更新される。また、これに伴って、旧次書込アドレスVAR「2」と新次書込アドレスVAR「3」との順序関係を維持するため、仮想格納アドレス「3」の後続仮想アドレスADDが「5」から「2」に更新される。これにより、作業用次書込アドレスTMPVと作業用キュー最終アドレスTMPLには、それぞれ「2」と「3」が格納される。
図18に示した状態において、キューPM+1のデータPM+1−1を書き込みした場合、キュー制御情報は、図19のように変化する。図19は、データPM+1−1書込時におけるキュー制御情報の変化を示す説明図である。
まず、次書込アドレスVARが示す書込対象アドレス「0」にデータPM+1−1が書き込まれるため、PM+1−1がキューPM+1の最終データとなり、キュー最終位置が格納アドレス「0」に設定されるため、キューPM+1のキュー最終アドレスLARが「不定値」から「0」に更新される。また、書込前の次書込アドレスVARにPM+1−1が書き込まれたため、次書込アドレスVARが「0」から、格納アドレス「1」に更新される。これにより、作業用次書込アドレスTMPVには、「0」が格納される。なお、キューPM+1に対する最初の書き込みなので、キューPM+1のキュー先頭アドレスSARが「不定値」から「0」に更新され、また、UARが「0」から「1」に更新される。
[DRAM書込動作]
次に、図20を参照して、本実施の形態にかかるDRAMアクセス部32におけるDRAM書込動作について説明する。図20は、DRAM書込処理を示すフローチャートである。
DRAMアクセス部32は、第1の書込制御部34からのDRAM書込指示に応じて、図20のDRAM書込処理を実行する。
まず、活性化処理部32Bは、FIFOメモリ32Aに蓄積されたDRAM書込指示で指定された書込対象キューと対応する書込対象ロウアドレスを特定し(ステップ100)、書込対象ロウアドレスが活性化状態にあるバンクの有無を確認する(ステップ101)。
ここで、書込対象ロウアドレスが活性化状態にあるバンクが存在した場合(ステップ101:YES)、活性化処理部32Bは、当該バンクの書込対象ロウアドレスに対する書込可否を確認し(ステップ102)、書込対象ロウアドレスに空き領域があり、書込可能な場合(ステップ102:YES)、当該バンクを書込対象バンクとしてDRAM書込指示に設定し(ステップ103)、活性化処理を完了する。
活性化処理部32Bでの活性化処理を完了後、DRAM書込指示はFIFOメモリ32Aから出力され、アクセス種別判定部32Cを介してDRAM書込部32Fに入力される。
DRAM書込部32Fは、入力されたDRAM書込指示に対応する書込対象ロウアドレスと書込対象バンクとの組み合わせに基づき、バンク管理メモリ32Dから対応する書込ポインタ値WPを取得し(ステップ104)、書込対象バンクの書込対象ロウアドレスのうち、書込ポインタ値WPからなるコラムアドレスに、DRAM書込指示で指定されたフレームデータ(データD)を書き込む(ステップ105)。
この後、DRAM書込部32Fは、1仮想格納アドレス分のデータ長に相当するポインタ値だけ、バンク管理メモリ32D内の当該書込ポインタ値WPを更新するとともに(ステップ106)、アドレス管理メモリ32EのうちDRAM書込指示で指定された仮想格納アドレスのバンクとして、書込対象バンクを格納し(ステップ107)、一連のDRAM書込処理を終了する。
また、ステップ102において、書込対象ロウアドレスに空き領域がなく、書込不可の場合(ステップ102:NO)、活性化処理部32Bは、書込対象ロウアドレスが活性化状態にある他のバンクの有無を確認する(ステップ110)。
ここで、書込対象ロウアドレスが活性化状態にある他のバンクが存在した場合(ステップ110:YES)、活性化処理部32Bは、ステップ102に戻り、前述と同様に当該バンクでの書込可否を確認する。
また、書込対象ロウアドレスが活性化状態にある他のバンクが存在しない場合(ステップ110:NO)、活性化処理部32Bは、当該書込対象ロウアドレスが非活性化状態にある任意のバンクを選択して(ステップ111)、当該バンクにおいて書込対象ロウアドレスを活性化した後(ステップ112)、ステップ103へ移行して、当該書込対象バンクとしてDRAM書込指示に設定し(ステップ103)、活性化処理を完了する。
また、ステップ101において、書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合(ステップ101:NO)、活性化処理部32Bは、ステップ110に移行して、前述と同様に書込対象ロウアドレスが非活性化状態にあるバンクの活性化を行う。
したがって、第1のデータメモリ31を構成するDRAMにフレームデータを書き込む際、DRAMが持つ各バンクのうちから、書込対象ロウアドレスが活性化状態にあるバンクが書込対象バンクとして優先的に選択される。これにより、同一バンクの異なるロウアドレスへの書き込みが発生する確率が低減されることになる。このため、フレームデータ書込時におけるロウアドレスの活性化や、異なるロウアドレスに対するアクセス完了を待つ回数が削減されることになり、DRAMアクセスの実効スループットの低下が抑制される。
[DRAM読出動作]
次に、図21を参照して、本実施の形態にかかるDRAMアクセス部32におけるDRAM読出動作について説明する。図21は、DRAM読出処理を示すフローチャートである。
DRAMアクセス部32は、第1の読出制御部35からのDRAM読出指示に応じて、図21のDRAM読出処理を実行する。
まず、活性化処理部32Bは、FIFOメモリ32Aに蓄積されたDRAM読出指示で指定された読出対象キューと対応する読出対象ロウアドレスを特定し(ステップ150)、アドレス管理メモリ32Eから、読出対象ロウアドレスと対応する読出対象バンクを取得する(ステップ151)。
次に、活性化処理部32Bは、読出対象バンクにおいて読出対象ロウアドレスが活性化状態にあるか確認し(ステップ152)、読出対象ロウアドレスが活性化状態にある場合(ステップ152:YES)、活性化処理を完了する。
活性化処理部32Bでの活性化処理を完了後、DRAM読出指示はFIFOメモリ32Aから出力され、アクセス種別判定部32Cを介してDRAM読出部32Gに入力される。
DRAM読出部32Gは、入力されたDRAM読出指示に対応する読出対象ロウアドレスと読出対象バンクとの組み合わせに基づき、バンク管理メモリ32Dから対応する読出ポインタ値RPを取得する(ステップ153)。
この後、DRAM読出部32Gは、読出対象バンクの読出対象ロウアドレスのうち、読出ポインタ値RPからなるコラムアドレスからフレームデータ(データD)を読み出して(ステップ154)、1仮想格納アドレス分のデータ長に相当するポインタ値だけ、バンク管理メモリ32D内の当該読出ポインタ値RPを更新し(ステップ155)、一連のDRAM読出処理を終了する。
また、ステップ152において、読出対象バンクの読出対象ロウアドレスが活性化状態にない場合(ステップ152:NO)、活性化処理部32Bは、読出対象バンクにおいて異なるロウアドレスが活性化状態にあるか確認する(ステップ156)。
ここで、異なるロウアドレスが活性化状態にない場合(ステップ156:NO)、活性化処理部32Bは、読出対象バンクの読出対象ロウアドレスを活性化し(ステップ157)、活性化処理を完了する。これにより、DRAM読出部32Gにおいて、活性化された読出対象ロウアドレスからの読み出しが行われることになる。
また、ステップ156において、異なるロウアドレスが活性化状態にある場合(ステップ156:YES)、活性化処理部32Bは、異なるロウアドレスへのアクセスが完了するまで待機した後(ステップ158)、ステップ157へ移行して、前述と同様に読出対象ロウアドレスの活性化を行う。
このように、第1のデータメモリ31を構成するDRAMからフレームデータを読み出す際、読出対象となるフレームデータが特定のバンクに書き込まれていることから、書き込み時のように、ロウアドレスが活性化状態にあるバンクを任意に選択することはできない。このため、同一バンクの異なるロウアドレスからの読み出しや、書き込み後の同一バンクからの読み出しにおいて待ち時間が発生するものとなる。なお、同一バンクの異なるロウアドレスからの読み出しについては、異なるロウアドレスからの読み出しが連続しないように、例えば、両者の間に書き込みが挿入されるよう処理間隔をあけるようにしてもよい。
[第1の実施の形態の効果]
このように、本実施の形態は、記録装置30において、第1のデータメモリ31をバンクごとに複数のロウアドレスを有するDRAMから構成して、キューと対応するロウアドレスで当該キューのフレームデータを記憶し、DRAMアクセス部32が、書込対象キューにフレームデータを書き込む際、バンクのうち当該書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択して当該フレームデータを書き込み、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後に当該フレームデータを書き込むようにしたものである。
一般に、DRAMでは、任意のバンクの任意のロウアドレスにデータを書き込む場合、当該バンクにおいて当該ロウアドレスを活性化する必要があり、同一バンクの異なるロウアドレスにアクセスする場合には、当該ロウアドレスを用いたアクセスが完了するのを待ってから、新たなロウアドレスを活性化する必要があるため、同一バンクへのアクセスにおいて、ロウアドレスの活性化に起因して比較的大きな待ち時間が発生する。具体的には、同一バンクの異なるロウアドレスへのアクセスが連続した場合である。その他に待ち時間が発生する条件として、読み出し後の同一バンクに書き込みを行う場合、および、書き込み後の同一バンクから読み出しを行う場合がある。
本実施形態によれば、第1のデータメモリ31を構成するDRAMにフレームデータを書き込む際、DRAMが持つ各バンクのうちから、書込対象ロウアドレスが活性化状態にあるバンクが書込対象バンクとして優先的に選択される。
これにより、同一バンクの異なるロウアドレスへの書き込みが発生する確率を低減することができる。したがって、フレームデータ書込時におけるロウアドレスの活性化や、異なるロウアドレスに対するアクセス完了を待つ回数を低減させることができ、DRAMアクセスに関する実効スループットの低下を抑制することが可能となる。
特に、通信用入出力装置1においては、短いフレームデータがバースト的に連続して入力される場合がある。本願発明によれば、各出力系統のキューに対して個別のロウアドレスが割り当てられている。このため、このようなケースにおいては、同一ロウアドレスに対する書き込みが繰り返し行われることになり、ロウアドレスの変更による活性化の回数を削減することができる。したがって、このようなケースにおいても、DRAMアクセスに関する実効スループットの低下を抑制することができるため、フレームデータの処理速度に十分追従でき、通信品質の劣化を低減することが可能となる。
また、記録装置30において、第2のデータメモリ41を第1のデータメモリ31のDRAMより動作速度の速いSRAMから構成し、アクセス調停部37が、通信データの書き込み・読み込みを行う際、当該通信データが高優先以外の場合には、当該通信データの書込先・読込元として第1のデータメモリ31を指示し、当該通信データが高優先である場合には、当該通信データの書込先・読込元として第2のデータメモリ41を指示するようにしたものである。
これにより、フレームデータの処理速度が問題となる高優先のキューについては、DRAMではなくSRAMに書き込むことができ、ロウアドレスの活性化に起因して発生するDRAM特有の待ち時間の影響を回避できる。このため、高優先の通信データに対する遅延を削減することができ、高い通信品質を得ることが可能となる。
また、本実施の形態において、DRAMアクセス部32に、キューとバンクとの組み合わせごとに、当該キューの通信データを当該バンクに書き込む際にコラムアドレスとして用いる書込ポインタ値を記憶するバンク管理メモリ32Dを設け、通信データを書き込む際、書込対象ロウアドレスと書込対象バンクとの組み合わせに対応する書込ポインタ値をバンク管理メモリ32Dから取得し、当該書込対象バンクの当該書込対象ロウアドレスのうち、当該書込ポインタ値からなるコラムアドレスに当該通信データを書き込むようにしてもよい。
これにより、各出力系統のキューに対して個別のロウアドレスが割り当てた場合でも、複数のキューが各バンクを共用することができるとともに、任意のキューにフレームデータを書き込む際、ロウアドレスが活性化状態にあるいずれのバンクが選択されても、極めて迅速に当該バンクで使用すべきカラムアドレスを特定することができ、DRAMアクセスの実効スループットを向上させることができる。
また、本実施の形態において、記録装置30において、仮想格納アドレスごとに、当該仮想格納アドレスに書き込まれた通信データに後続する通信データの仮想格納アドレスを示す後続アドレスを記憶し、キューごとに、当該キューの通信データが書き込まれている仮想格納アドレスの先頭および最終を示すキュー先頭アドレスおよびキュー最終アドレスを記憶し、各キューに共通して、次に通信データを書き込むべき仮想格納アドレスを示す次書込アドレスを記憶するようにしてもよい。
これに加えて、第1の書込制御部34が、書込対象キューに通信データを書き込む(書き込み指示を行う)際、次書込アドレスからなる書込対象仮想アドレスに当該通信データを書き込み、当該書込対象キューのキュー最終アドレス、書込前のキュー最終アドレスに関する後続仮想アドレス、および次書込アドレスをそれぞれ更新し、第1の読出制御部35が、読出対象キューから通信データを読み出す(読み出し指示を行う)際、当該読出対象キューのキュー先頭アドレスからなる読出対象仮想アドレスから当該通信データを読み出し、当該読出対象キューのキュー先頭アドレス、次書込アドレス、および新たな次書込アドレスに関する後続仮想アドレスをそれぞれ更新するようにしてもよい。
これにより、各キューのフレームデータが、空き状態にある仮想格納アドレスに順次書き込まれ、フレームデータが読み出された仮想格納アドレスが再び空き状態として管理されることになる。またキューごとに書き込まれた順序でフレームデータの仮想格納アドレスが管理されることになる。空き状態にある仮想格納アドレスについては、複数のキューで共用することができ、従来のキューごとに予めアドレス範囲を固定的に確保しておく場合と比較して、メモリの使用効率を高めることが可能となる。このため、メモリ容量の増大を行う必要がなくなり、結果として回路規模やコストの増大を抑制することが可能となる。
また、本実施の形態は、QM内のADD値等の初期値を設定する必要が無いという特徴がある。本実施の形態において、通信用入出力装置1の起動時に初期値を設定する必要がある情報はVARとUARのみである(図14の「Initialization」を参照)。従って、初期設定を行うための回路の規模、もしくは、初期設定を行うためのソフトウエアの規模が極めて小さく、初期設定に要する時間も極めて小さいという効果が有る。
なお、図14等において、EoF値格納用のPNをQM内に搭載する場合を例示しているが、PNをDRAM内に搭載することも可能である。
[第2の実施の形態]
次に、図22を参照して、本発明の第2の実施の形態にかかる通信用入出力装置1について説明する。図22は、第2の実施の形態にかかるアクセス調停部の構成を示すブロック図である。
第1の実施の形態にかかる通信用入出力装置1において、仮想データメモリの仮想格納アドレスを複数のキューで共用するようにした際に、例えば、特定の出力系統に関するフレームデータが多量に入力された場合、仮想データメモリの仮想格納アドレスが当該出力系統のキューにより占有されてしまうという場合がある。このような格納アドレスの占有は、第1の実施の形態に限定されるものではなく、格納アドレスを複数のキューで共用する構成であれば、いずれの構成であっても発生しうる。したがって、このような格納アドレスの占有が発生した場合、他の出力系統のキューが十分な格納アドレス数を使用できず、フレームデータの破棄が発生しやすくなり、通信品質が劣化する原因となる。
本実施の形態は、このような複数のキューによる格納アドレスの共用時における、特定キューによる格納アドレスの占有を回避することを目的とし、記録装置30において、アクセス調停部37が、書込対象キューにフレームデータを書き込む(書き込み指示を行う)際、当該フレームデータのデータ長に基づき、書き込みに必要となる仮想格納アドレス数、もしくは、格納アドレス数を示す必要アドレス数を算出し、キュー使用アドレス数メモリ36から取得した当該書込対象キューまたは各キューの使用仮想アドレス数、もしくは、使用アドレス数に基づき、当該書き込みに使用可能な使用仮想アドレス数、もしくは、使用アドレス数を示す残りアドレス数を算出し、当該必要アドレス数と当該残りアドレス数とを比較することにより当該フレームデータの書込可否を判定し、書込可の判定に応じて第1の書込制御部34、もしくは、第2の書込制御部44に対して当該フレームデータの書き込みを指示するようにしたものである。
図22に示すように、本実施の形態において、アクセス調停部37には、主な回路部として、書込可否判定部37A、書込用FIFO37B、読出受付部37C、読出用FIFO37D、優先制御部37E、キュー使用アドレス数更新部37F、および指示出力部37Gが設けられている。
書込可否判定部37Aは、多重化装置10から転送されたフレームデータに付加されているキュー指定情報およびフレーム長情報と、キューごとに予め設定されている判定用アドレス数情報と、各キューの使用仮想アドレス数とに基づいて、書込可能か否か判定する機能と、書込可の判定結果に応じて、当該フレームデータを、第1のデータメモリ31に設けられている格納領域の1仮想アドレス分のデータサイズ、もしくは、第2のデータメモリ41の1アドレス分のデータサイズに分割し、得られたデータにキュー指定情報を付加した書き込み指示を、それぞれ書込用FIFO37Bに書き込む機能とを有している。
判定用アドレス数情報には、当該キュー指定情報で指定された書込対象キューで使用可能な最大仮想アドレス数NKmaxと、当該書込対象キューに対して使用が保証されている最低保証仮想アドレス数NKminとが含まれている。
図23は、判定用アドレス数情報の構成例である。ここではキューを識別するためのキューIDごとに、最大仮想アドレス数NKmaxと最低保証仮想アドレス数NKminとが設定されている。これら判定用アドレス数情報は、例えばキュー使用アドレス数更新部37F、あるいはアクセス調停部37の内部メモリ(図示せず)で記憶されている。
読出受付部37Cは、多重分離装置20から出力された読み出し要求の読出データ量情報に基づいて、第1のデータメモリ31もしくは第2のデータメモリ41に対する読み出し回数を計算し、その読み出し回数だけ当該読み出し要求のキュー指定情報を読み出し指示として読出用FIFO37Dに書き込む機能を有している。この計算は、読出データ量情報が示すデータ量を、第1のデータメモリ31の1仮想アドレスあたりのデータサイズ、もしくは第2のデータメモリ41の1アドレスあたりのデータサイズで除算した値を読み出し回数とし、剰余がある場合は読み出し回数に1を加算すればよい。
優先制御部37Eは、書込用FIFO37Bもしくは読出用FIFO37Dから、書き込み指示もしくは読み出し指示を読み出して、キュー使用アドレス数更新部37Fへ出力する機能と、書込用FIFO37Bと読出用FIFO37Dの双方に、書き込み指示と読み出し指示が存在する場合は、書込用FIFO37Bからの書き込み指示を優先して読み出す機能とを有している。
キュー使用アドレス数更新部37Fは、優先制御部37Eから書き込み指示が入力された場合は、キュー使用アドレス数メモリ36のうち、第1のデータメモリ31における当該書き込み指示のキュー指定情報と対応する書込対象キューの使用仮想アドレス数、もしくは、第2のデータメモリ41における当該書き込み指示のキュー指定情報と対応する書込対象キューの使用アドレス数に1を加算し、当該書き込み指示を指示出力部37Gへ出力する機能と、優先制御部37Eから読み出し指示が入力された場合は、キュー使用アドレス数メモリ36のうち、第1のデータメモリ31における当該読み出し指示のキュー指定情報と対応する読出対象キューの使用仮想アドレス数、もしくは、第2のデータメモリ41における当該読み出し指示のキュー指定情報と対応する読出対象キューの使用アドレス数から1を減算し、当該読み出し指示を指示出力部37Gへ出力する機能とを有している。
指示出力部37Gは、キュー使用アドレス数更新部37Fから、第1のデータメモリ31に関する書き込み指示が入力された場合は、当該書き込み指示を第1の書込制御部34へ出力する機能と、第1のデータメモリ31に関する読み出し指示が入力された場合は、当該読み出し指示を第1の読出制御部35へ出力する機能と、キュー使用アドレス数更新部37Fから、第2のデータメモリ41に関する書き込み指示が入力された場合は、当該書き込み指示を第2の書込制御部44へ出力する機能と、第2のデータメモリ41に関する読み出し指示が入力された場合は、当該読み出し指示を第2の読出制御部45へ出力する機能とを有している。
[第2の実施の形態の動作]
次に、図24および図25を参照して、本実施の形態にかかるアクセス調停部37の動作として、フレームデータの書き込み時における書込判定動作について説明する。図24は、第2の実施の形態にかかる書込可否判定処理(DRAM用)を示すフローチャートである。図25は、第2の実施の形態にかかる書込可否判定処理(SRAM用)を示すフローチャートである。
記録装置30のアクセス調停部37は、多重化装置10から転送されたフレームデータごとに、図24および図25の書込可否判定処理に基づいて、書込可否を判定する。この際、アクセス調停部37は、フレームデータの書込対象キューを確認し、第1のデータメモリ31に対応する場合には、図24の書込可否判定処理を実行し、第2のデータメモリ41に対応する場合には、図25の書込可否判定処理を実行する。
まず、書込対象キューが第1のデータメモリ31に対応する場合、図24において、アクセス調停部37は、キュー使用アドレス数メモリ36から指定キューに関する使用仮想アドレス数NK1を取得して(ステップ200)、第1のデータメモリ31に対応する全キューが使用している合計仮想アドレス数NKA1を算出し(ステップ201)、書込対象となる対象フレームデータの書き込みに要する必要仮想アドレス数NF1を算出する(ステップ202)。
この後、仮想データメモリの仮想格納アドレスの総アドレス数NA1からNKA1を減算することにより、対象フレームデータの書き込みに使用可能な仮想格納アドレスの数を示す残りアドレス数NR1を算出し(ステップ203)、NF1とNR1とを比較する(ステップ204)。
ここで、NF1>NR1の場合(ステップ204:YES)、アクセス調停部37は、書込不可と判定して対象フレームデータを破棄し(ステップ213)、当該対象フレームデータに関する書込判定処理を終了する。
一方、NF1≦NR1の場合(ステップ204:NO)、アクセス調停部37は、指定された書込対象キューの最大仮想アドレス数NKmax1をキュー使用アドレス数メモリ36等から取得して(ステップ205)、NKmax1からNK1を減算することにより残りアドレス数NR1を算出し(ステップ206)、NF1とNR1とを比較する(ステップ207)。
ここで、NF1>NR1の場合(ステップ207:YES)、アクセス調停部37は、書込不可と判定して対象フレームデータを破棄し(ステップ213)、当該対象フレームデータに関する書込判定処理を終了する。
一方、NF1≦NR1の場合(ステップ207:NO)、アクセス調停部37は、第1のデータメモリ31に対応する全キューに関する最低保証仮想アドレス数NKmin1をキュー使用アドレス数メモリ36から取得し(ステップ208)、第1のデータメモリ31に対応する全キューを一括して最低限保証すべき総保証仮想アドレス数NAmin1を算出する(ステップ209)。この際、任意のキューのキュー使用仮想アドレス数NK1がその最低保証仮想アドレス数以上である場合は、当該キューの保証仮想アドレス数としてキュー使用仮想アドレス数NK1を加算し、キュー使用仮想アドレス数NK1がその最低保証仮想アドレス数未満である場合は、当該キューの保証仮想アドレス数として最低保証仮想アドレス数NKmin1を加算する。
この後、アクセス調停部37は、NA1からNAmin1を減算することにより残りアドレス数NR1を算出し(ステップ210)、NF1とNR1とを比較する(ステップ211)。
ここで、NF1>NR1の場合(ステップ211:YES)、アクセス調停部37は、書込不可と判定して対象フレームデータを破棄し(ステップ213)、当該対象フレームデータに関する書込判定処理を終了する。
一方、NF1≦NR1の場合(ステップ211:NO)、アクセス調停部37は、対象フレームデータについて書込可と判定し(ステップ212)、当該対象フレームデータに関する書込判定処理を終了する。
また、書込対象キューが第2のデータメモリ41に対応する場合、図25において、アクセス調停部37は、キュー使用アドレス数メモリ36から指定キューに関する使用アドレス数NK2を取得して(ステップ250)、第2のデータメモリ41に対応する全キューが使用している合計仮想アドレス数NKA2を算出し(ステップ251)、書込対象となる対象フレームデータの書き込みに要する必要アドレス数NF2を算出する(ステップ252)。
この後、第2のデータメモリ41の格納アドレスの総アドレス数NA2からNKA2を減算することにより、対象フレームデータの書き込みに使用可能な格納アドレスの数を示す残りアドレス数NR2を算出し(ステップ253)、NF2とNR2とを比較する(ステップ204)。
ここで、NF2>NR2の場合(ステップ254:YES)、アクセス調停部37は、書込不可と判定して対象フレームデータを破棄し(ステップ263)、当該対象フレームデータに関する書込判定処理を終了する。
一方、NF2≦NR2の場合(ステップ254:NO)、アクセス調停部37は、指定された書込対象キューの最大アドレス数NKmax2をキュー使用アドレス数メモリ36等から取得して(ステップ255)、NKmax2からNK2を減算することにより残りアドレス数NR2を算出し(ステップ256)、NF2とNR2とを比較する(ステップ257)。
ここで、NF2>NR2の場合(ステップ257:YES)、アクセス調停部37は、書込不可と判定して対象フレームデータを破棄し(ステップ263)、当該対象フレームデータに関する書込判定処理を終了する。
一方、NF2≦NR2の場合(ステップ257:NO)、アクセス調停部37は、第2のデータメモリ41に対応する全キューに関する最低保証アドレス数NKmin2をキュー使用アドレス数メモリ36から取得し(ステップ258)、第2のデータメモリ41に対応する全キューを一括して最低限保証すべき総保証アドレス数NAmin2を算出する(ステップ259)。この際、任意のキューのキュー使用アドレス数NK2がその最低保証アドレス数以上である場合は、当該キューの保証仮想アドレス数としてキュー使用アドレス数NK2を加算し、キュー使用アドレス数NK2がその最低保証アドレス数未満である場合は、当該キューの保証アドレス数として最低保証アドレス数NKmin2を加算する。
この後、アクセス調停部37は、NA2からNAmin2を減算することにより残りアドレス数NR2を算出し(ステップ260)、NF2とNR2とを比較する(ステップ261)。
ここで、NF2>NR2の場合(ステップ261:YES)、アクセス調停部37は、書込不可と判定して対象フレームデータを破棄し(ステップ263)、当該対象フレームデータに関する書込判定処理を終了する。
一方、NF2≦NR2の場合(ステップ261:NO)、アクセス調停部37は、対象フレームデータについて書込可と判定し(ステップ262)、当該対象フレームデータに関する書込判定処理を終了する。
すなわち、書込先が第2のデータメモリ41の場合、第1のデータメモリ31の場合との違いは、仮想アドレスの数(使用数等)ではなく第2のデータメモリ41のアドレスの数(使用数等)であることと、NKA2およびNKmin2を、第2のデータメモリ41を使用するキューの情報から演算することと、総アドレス数(NA2)が異なることである。
この後、この書込可の判定に応じて、アクセス調停部37は、対象フレームデータを第1のデータメモリ31における1仮想アドレス分のデータサイズ、もしくは、第2のデータメモリ41の1アドレス分のデータサイズに分割し、得られたデータにキュー指定情報を付加した書き込み指示を、それぞれ書込用FIFO37Bに書き込むことになる。
[第2の実施の形態の効果]
このように、本実施の形態は、記録装置30において、キュー使用アドレス数メモリ36が、キューごとに、当該キューが使用している仮想格納アドレスの数、もしくは、内蔵SRAMの格納アドレスの数を示す使用アドレス数を記憶し、アクセス調停部37が、書込対象キューに通信データを書き込む(書き込み指示を行う)際、当該通信データのデータ長に基づき、書き込みに必要となる仮想格納アドレスの数、もしくは、内蔵SRAMの格納アドレスの数を示す必要アドレス数を算出し、キュー使用アドレス数メモリ36から取得した当該書込対象キューまたは各キューの使用仮想アドレス数等に基づき、当該書き込みに使用可能な仮想格納アドレスの数、もしくは、内蔵SRAMの格納アドレスの数を示す残りアドレス数を算出し、当該必要アドレス数と当該残りアドレス数とを比較することにより当該通信データの書込可否を判定し、書込可の判定に応じて第1の書込制御部34または第2の書込制御部44に対して当該通信データの書き込みを指示するようにしたものである。
したがって、それぞれのキューによる仮想格納アドレス、もしくは、内蔵SRAMの格納アドレスの使用数が制限されるため、任意の出力系統と対応するキューによる仮想格納アドレス、もしくは、内蔵SRAMの格納アドレスの占有を抑止することができる。このため、特定の出力系統に関するフレームデータが多量に入力された場合でも、他の出力系統のキューが十分な仮想格納アドレス数、もしくは、内蔵SRAMの格納アドレス数を使用することが可能となる。これにより、フレームデータの破棄やこれによる通信品質の劣化を抑制することが可能となるとともに、これら対策として、メモリ容量の増大を行う必要がなくなり、結果として回路規模やコストの増大を抑制することが可能となる。
なお、本実施の形態におけるNKA1、NKA2、NAmin1、およびNAmin2の算出は、キュー使用アドレス数メモリ36を更新する際に同時に算出(加算、減算等)することができる。
本実施の形態において、図22の構成のアクセス調停部37を用いる場合、書込用FIFO37Bに書き込み指示データが存在していると誤って書込可能と判定してしまう可能性がある。誤った判定を防止するためには、第1のデータメモリ31に関する各キューの使用仮想アドレス数、もしくは、第2のデータメモリ41の各キューの使用アドレス数として、キュー使用アドレス数メモリ36の情報に、書込用FIFO37B内の第1のデータメモリ31に関する仮想アドレス数、もしくは、内第2のデータメモリ41のアドレス数(書き込み指示の数)を加算した値を使用するか、NA1、NA2、もしくはNKmaxとして、書込用FIFO37B内の第1のデータメモリ31に関する仮想アドレス数、もしくは、第1のデータメモリ31のアドレス数(書き込み指示の数)を減算した値を使用すればよい。
[実施の形態の拡張]
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。また、各実施形態については、矛盾しない範囲で任意に組み合わせて実施することができる。
上記の各実施の形態において、通信用入出力装置1でマルチキャストフレームを処理する場合、出力系統の1つとしてマルチキャスト用出力系統を設けるとともに多重分離装置20内の振分部22にマルチキャストフレームを複数の速度変換部23に出力する手段を設け、記録装置30のデータメモリ内に論理的に形成した一部のキューをこのマルチキャスト用出力系統に対応するキューとして割り当てるようにしてもよい。
これにより、外部から多重化装置10に入力されたマルチキャストフレームが、データメモリ内のマルチキャスト用出力系統に対応するキューに一時格納され、当該キューから多重分離装置20によりマルチキャストフレームが読み出されて複数の出力ポートから出力される。