(58)【調査した分野】(Int.Cl.,DB名)
順次入力される通信データに、当該通信データを出力すべき出力系統と対応するキューを示すキュー指定情報を付加して多重化する多重化装置と、前記多重化装置から転送された前記通信データを、データメモリ内に論理的に形成した複数のキューのうち前記キュー指定情報で指定された書込対象キューへ一時蓄積する記録装置と、前記キューのうち優先制御ロジックに基づき選択した出力系統と対応する読出対象キューから前記通信データを読み出し、当該出力系統と対応する出力ポートの通信速度に変換して出力する多重分離装置とを備える通信用入出力装置であって、
前記記録装置は、
バンクごとに複数のロウアドレスを有するDRAMからなり、前記キューと対応する個別のロウアドレスで当該キューの通信データを記憶する前記データメモリと、
前記書込対象キューに前記通信データを書き込む際、前記バンクのうち当該書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択して当該通信データを書き込み、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後に当該通信データを書き込むDRAMアクセス部と
を備えることを特徴とする通信用入出力装置。
【発明を実施するための形態】
【0017】
次に、本発明の実施の形態について図面を参照して説明する。
[第1の実施の形態]
まず、
図1を参照して、本発明の第1の実施の形態にかかる通信用入出力装置1について説明する。
図1は、第1の実施の形態にかかる通信用入出力装置の構成を示すブロック図である。
【0018】
この通信用入出力装置1は、インターネット通信等で使用されて、例えばイーサネット(登録商標)のフレームデータ等の通信データを入出力するための通信用入出力装置であり、1つまたは複数の入力ポートから入力された通信データを、その通信データを出力すべき出力系統ごとに分離し、当該出力系統と対応する出力ポートの通信速度に変換して出力する機能を有している。
【0019】
図1に示すように、通信用入出力装置1は、多重化装置(MUX)10、メモリアクセス制御機能内蔵型の多重分離装置(DEMUX)20、およびアクセス制御機能内蔵型の記録装置(MEM)30から構成されている。以下では、通信用入出力装置1で入出力する通信データがフレームデータである場合を例として説明するが、これに限定されるものではなく、パケットやATMセルなど各種の通信データを、フレームデータと同様にして入出力することも可能である。
【0020】
多重化装置10は、外部から順次入力されるフレームデータに、当該フレームデータを出力すべき出力系統と対応するキュー指定情報を付加して多重化する機能を有している。
記録装置30は、多重化装置10から転送されたフレームデータを、データメモリ内に論理的に形成した複数のキューのうち、当該フレームデータに付加されているキュー指定情報で指定された書込対象キューへ一時蓄積する機能を有している。
多重分離装置20は、記録装置30内のキューのうち優先制御に基づき選択した出力系統と対応する読出対象キューから、当該読出対象キューに一時蓄積されているフレームデータを読み出し、当該出力系統と対応する出力ポートの通信速度に変換して出力する機能を有している。
【0021】
本実施の形態は、記録装置30において、データメモリ31Aをバンクごとに複数のロウアドレスを有するDRAMから構成して、前記キューと対応するロウアドレスで当該キューのフレームデータを記憶し、DRAMアクセス部31Bが、書込対象キューにフレームデータを書き込む際、バンクのうち当該書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択して当該フレームデータを書き込み、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後に当該フレームデータを書き込むようにしたものである。
【0022】
本実施の形態では、
図1に示すように、入力ポートPinとして2つの入力ポートPin0,Pin1が設けられ、出力ポートPoutとして2つの出力ポートPout0,Pout1が設けられている場合を例として説明するが、入力ポートPinおよび出力ポートPoutの数については、これに限定されるものではない。入力ポートPinおよび出力ポートPoutのいずれか一方または両方を3つ以上設けることも可能であり、入力ポート数と出力ポート数が異なっていても良い。なお、入力ポート数は、1つであってもよい。
【0023】
[多重化装置]
次に、
図1を参照して、本実施の形態にかかる通信用入出力装置1で用いられる多重化装置10について詳細に説明する。
多重化装置10には、主な回路部として、キュー指定情報付加部11と多重化部12が設けられている。
【0024】
キュー指定情報付加部11は、入力ポートPin0,Pin1ごとに設けられて、対応する入力ポートPinから入力されるフレームデータに対して、当該フレームデータの出力先に対応するキュー指定情報と、当該フレームデータのフレーム長情報(Byte)とを付加して多重化部12へ出力する機能を有している。この際、フレーム長情報については、例えば、多重化部12にフレームデータを出力する際、当該フレームデータの先頭から最終までのByte数をフレーム長として計数したものを付加すればよい。
【0025】
多重化部12は、各キュー指定情報付加部11に共通して1つ設けられて、各キュー指定情報付加部11から出力されたフレームデータを時分割で多重化して、記録装置30へ出力する機能を有している。
多重化装置10において、フレームデータの出力先に対応するキューの指定については、IEEE802.1D等のブリッジ機能により実現すればよく、具体的には、MACアドレス学習による出力ポート検索、VLAN−IDによる出力ポート指定等が可能である(特許文献1など参照)。
【0026】
[多重分離装置]
次に、
図1を参照して、本実施の形態にかかる通信用入出力装置1で用いられる多重分離装置20について詳細説明する。
多重分離装置20には、主な回路部として、読出部21、振分部22、および速度変換部23,24が設けられている。
【0027】
読出部21は、記録装置30から取得した各キューの蓄積状況や速度変換部23,24から出力された読出停止指示信号を参照し、出力ポートPout0,Pout1ごとの優先制御ロジックに基づいてフレームデータを優先して出力すべき出力系統を選択する機能と、当該出力系統と対応する読出対象キューからのフレームデータの読み出しを要求する読み出し要求を出力する機能と、これに応じて記録装置30から転送されたフレームデータを、振分部22へ出力する機能を有している。
優先制御ロジックについては、例えば各キューの容量が同じ場合であれば、読み出し可能なキューの中でキューに蓄積されている通信データの量が最も多いキューから読み出しを行う等、一般的な優先制御ロジックを用いればよい(特許文献1など参照)。
【0028】
また、読出部21は、記録装置30に読み出し要求を出力する際、読み出し対象となるキューを指定するキュー指定情報に加えて、読み出しデータのデータ量を示す読出データ量情報を記録装置30に指示する。
読出データ量情報については、例えば読み出しを行うキューのデータ蓄積量が予め設定した閾値以下の場合は、データ蓄積量に等しい値を読出データ量情報として出力し、閾値を超えていた場合は、閾値の値を読出データ量情報として出力すればよい。
【0029】
振分部22は、読出部21から出力されたフレームデータを、当該フレームデータに付加されているキュー指定情報に基づいて、対応する出力ポートの速度変換部23,24へ振り分ける機能を有している。
速度変換部23,24は、出力ポートごとに設けられて、振分部22から振り分けられたフレームデータを当該出力ポートの通信速度に変換して出力する機能と、フレームデータの出力状況に応じて読出停止指示信号を読出部21に出力する機能とを有している。
なお、フレームデータに付加されているキュー指定情報は、振分部22もしくは速度変換部23,24で削除される。
【0030】
[記録装置]
次に、
図2を参照して、本実施の形態にかかる通信用入出力装置1で用いられる記録装置30について詳細説明する。
図2は、第1の実施の形態にかかる記録装置の構成を示すブロック図である。
【0031】
図2に示すように、記録装置30には、主な回路部として、データメモリ31A、DRAMアクセス部31B、キュー制御メモリ32、書込制御部33、読出制御部34、キュー使用アドレス数メモリ35、およびアクセス調停部36が設けられている。
【0032】
データメモリ31Aは、バンク(Bank)ごとに複数のロウアドレス(Row Address)を有する一般的なDRAM(DRAMチップ)からなり、キューと対応するロウアドレスで当該キューのフレームデータを記憶する機能を有している。具体的には、データメモリ31Aを1つ、もしくは、複数のDRAMチップで構成して、各出力系統のキューに対応させればよく、出力系統ごとにそれぞれ1つのキューを持たせる構成の他、1つの出力系統に複数のキューを持たせることも可能である。本実施の形態では、キューとロウアドレスとが対応しており、1つのDRAMチップを複数のキューで共用することになる。
【0033】
データメモリ31Aには、固有の格納アドレスを持つ複数の格納領域が設けられている。各キューはデータメモリ31Aの格納アドレスと同等な仮想格納アドレスを持つ仮想データメモリの仮想格納領域を、仮想格納アドレスの連続・不連続あるいは昇順・降順に関わらず任意に連結することにより構成されている。なお、仮想格納アドレスは、DRAMへのアクセスに用いる実際のロウアドレス、コラムアドレス(Column Address)、およびバンク番号とは独立した、フレームデータの管理に用いられるものであり、仮想的なメモリ空間におけるアドレス情報である。
図3は、仮想データメモリの記憶イメージの例である。ここでは、それぞれ固有の仮想格納アドレスADM(0〜N:Nは2以上の整数)を持つ仮想格納領域ごとに、書込制御部33から書き込まれたデータを記憶している場合のイメージを示している。
【0034】
この際、1フレームが1仮想アドレス分のデータサイズより長い場合、1フレームは、1仮想アドレス分のデータサイズに合わせて複数のデータDに分割され、それぞれ異なる複数の仮想格納アドレスに書き込まれる。例えば、
図3の場合、仮想格納アドレス0,1,4には、キューP1のデータP1−1,P1−2,P1−3が格納されており、仮想格納アドレス2,3,5には、キューP2のデータP2−1,P2−2,P2−3が格納されている。これらデータの前後関係やフレームとの対応関係については、後述するアドレスキュー管理メモリで管理される。なお、1フレームが仮想格納領域のデータサイズより短い場合、フレームデータは1つの仮想格納領域に格納される。
【0035】
DRAMアクセス部31Bは、書込制御部33からのDRAM書込指示に応じて、データメモリ31A内の書込対象キューと対応する書込対象ロウアドレスにフレームデータを書き込む機能と、読出制御部34からのDRAM読出指示に応じて、データメモリ31A内の読出対象キューと対応する書込対象ロウアドレスからフレームデータを読み出す機能とを有している。
【0036】
DRAMアクセス部31Bは、フレームデータを書き込む際、DRAMが有するバンクのうち書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択してフレームデータを書き込む機能と、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後にフレームデータを書き込む機能とを有している。
【0037】
また、DRAMアクセス部31Bは、フレームデータを書き込む際、指定された仮想格納アドレスに対応するバンクとして書込対象バンクを記憶する機能と、フレームデータを読み出す際、指定された仮想格納アドレスと対応するバンクから読出対象バンクを特定する機能と、当該読出対象バンクにおいて読出対象キューに対応する読出対象ロウアドレスが活性化状態にある場合は、当該読出対象バンクの読出対象ロウアドレスからフレームデータを読み出し、当該読出対象バンクで読出対象ロウアドレス活性化状態にない場合は、当該読出対象バンクの読出対象ロウアドレスを活性化した後にフレームデータを読み出す機能とを有している。
【0038】
キュー制御メモリ32は、例えばSRAMチップなどの半導体メモリからなり、データメモリ31A上に形成されている各キューに対するフレームデータの書き込み・読み出しを制御する際に用いる各種のキュー制御情報を記憶する機能を有している。
キュー制御メモリ32は、レジスタやメモリからなる複数の記憶部を含んでおり、主な記憶部として、空きアドレスレジスタ(VAR,UAR)32A、アドレスキュー管理メモリ(QM)32B、キュー先頭・最終アドレスメモリ(SAR,LAR)32C、および作業用アドレスレジスタ(TMPV,TMPL)32Dを有している。なお、以下では理解を容易とするため、レジスタ名を変数名として用いて説明する場合がある。
【0039】
空きアドレスレジスタ(VAR,UAR)32Aは、各キューに共通して、次書込アドレスVARと未書込アドレスUARとを記憶する機能を有している。このうち、VAR(Valid Address Register)は、多重化装置10から次に受け取ったフレームデータを書き込む際、当該フレームデータを次に書き込むべき仮想格納アドレスを示すアドレス情報である。また、UAR(Unused Address Register)は、初期化後にまだ一度もデータが書き込まれていない未使用の仮想格納アドレスのうちの先頭(若番)を示す格納アドレスである。
【0040】
本実施の形態では、フレームデータ書き込み時、仮想格納アドレスの若番から順に使用することを基本としており、フレームデータの読み出しにより空き状態となった仮想格納アドレスについては、未使用の仮想格納アドレスより優先して再使用するものとする。なお、再使用する仮想格納アドレスの順序については、例えば直近に空き状態となった仮想格納アドレスから順に再使用するなど、任意の順序でよく、若番の順に限定されない。
【0041】
アドレスキュー管理メモリ(QM)32Bは、仮想格納アドレスADMごとに、後続仮想アドレスADD(ADDress)とポインタPN(Pointer of QM)とを記憶する機能を有している。
図4は、アドレスキュー管理メモリの記憶例である。このうち、ADDは、当該仮想格納アドレスに書き込まれた通信データに後続する通信データが格納されている仮想格納アドレスである。また、PNは、当該仮想格納アドレスに格納されているデータにフレームデータの最終データを含むか否かを示す情報(フレーム終端フラグ:EoF)である。
【0042】
キュー先頭・最終アドレスメモリ(SAR,LAR)32Cは、キューごとに、キュー先頭アドレスSAR(Start Address register of PM)およびキュー最終アドレスLAR(Last Address register of PM)を記憶する機能を有している。
図5は、キュー先頭・最終アドレスメモリの記憶例である。ここでは、キューを識別するためのキューID(キュー番号)ごとに、SARとLARを記憶している。このうち、SARは、当該キューのフレームデータが書き込まれている仮想格納アドレスの先頭を示すアドレス情報である。また、LARは、当該キューのフレームデータが書き込まれている仮想格納アドレスの最終を示すアドレス情報である。
【0043】
作業用アドレスレジスタ(TMPV,TMPL)32Dは、各キューに共通して、作業用次書込アドレスTMPV(Temporary register for VAR)と作業用キュー最終アドレスTMPL(Temporary register for LAR)を記憶する機能を有している。
このうち、TMPVは、直前に書き込み・読み出しを行ったキューの次書込アドレスVARを示すアドレス情報である。また、TMPLは、最後に書き込みを行ったキューの直前(更新前)のキュー最終アドレスLARを示すアドレス情報である。これらは、それぞれのデータの書き込み・読み出し作業の処理手順の関係から一時的にアドレス情報を保持するために使用されるものであるが、次の書き込み・読み出し作業に用いることもある。
【0044】
書込制御部33は、アクセス調停部36からの書き込み指示に応じて、キュー制御メモリ32のキュー制御情報に基づいて、書込対象キューと仮想格納アドレス(TMPV)を指定した、フレームデータの書き込みを指示するDRAM書込指示を、DRAMアクセス部31Bへ出力する機能を有している。
【0045】
読出制御部34は、アクセス調停部36からの読み出し指示に応じて、キュー制御メモリ32のキュー制御情報に基づいて、読出対象キューと仮想格納アドレス(SAR)を指定した、読出対象キューからの先頭データの読み出しを指示するDRAM読出指示を、DRAMアクセス部31Bへ出力する機能と、当該データをフレーム終端フラグおよびキュー指定情報とともに多重分離装置20へ転送する機能とを有している。
【0046】
キュー使用アドレス数メモリ35は、例えばSRAMチップなどの半導体メモリからなり、キューごとに、当該キューに蓄積されているフレームデータが使用している仮想アドレス数NKを記憶する機能と、多重分離装置20およびアクセス調停部36からの要求に応じて、指定されたキューの仮想アドレス数NKを出力する機能とを有している。
図6は、キュー使用アドレス数メモリの記憶例である。ここでは、キューを識別するためのキューID(キュー番号)ごとに、当該キューの仮想アドレス数NKが記憶されている。
【0047】
アクセス調停部36は、多重化装置10から転送されたフレームデータを受け取り、当該フレームデータに付加されているフレーム長情報に基づき、フレームデータを1仮想アドレス分のデータサイズで複数のデータDに分割することにより書込回数を計算する機能と、この書込回数分だけ、それぞれのデータDに関する、当該フレームデータに付加されているキュー指定情報で指定された書込対象キューへの書き込みを指示する書き込み指示を書込制御部33に出力する機能と、当該フレームデータの書き込みにより増加する仮想アドレス数を、キュー使用アドレス数メモリ35の当該書込対象キューの仮想アドレス数NKに加算する機能とを有している。
【0048】
また、アクセス調停部36は、多重分離装置20からの読み出し要求に応じて、当該読み出し要求の読出データ量情報で指定されたデータ量を1仮想アドレス分のデータサイズで分割することにより読出回数を計算する機能と、この読出回数分だけ、当該読み出し要求のキュー指定情報で指定された読出対象キューからのフレームデータの読み出しを指示する読み出し指示を読出制御部34へ出力する機能と、当該フレームデータの読み出しにより減少する仮想アドレス数を、キュー使用アドレス数メモリ35の当該書込対象キューの仮想アドレス数NKから減算する機能と、フレームデータの書き込みとの競合を調停し、読み出し可能なタイミングで読み出し指示を出力する機能とを有している。
【0049】
[DRAMアクセス部]
次に、
図7を参照して、本実施の形態にかかる記録装置30で用いられるDRAMアクセス部31Bについて説明する。
図7は、第1の実施の形態にかかるDRAMアクセス部の構成を示すブロック図である。
DRAMアクセス部31Bには、主な回路部として、FIFOメモリ51、活性化処理部52、アクセス種別判定部53、バンク管理メモリ54、アドレス管理メモリ55、DRAM書込部56、およびDRAM読出部57が設けられている。
【0050】
FIFOメモリ51は、一般的なFIFOメモリからなり、書込制御部33からのDRAM書込指示および読出制御部34からのDRAM読出指示を混在させて蓄積する機能と、活性化処理部52によるロウアドレスの活性化完了後、蓄積していたDRAM書込指示またはDRAM読出指示を入力順に読み出してアクセス種別判定部53へ出力する機能を有している。この際、アクセス種別判定のための情報として、書込制御部33からのDRAM書込指示なのか、もしくは、読出制御部34からのDRAM読出指示なのかを示す情報を、それぞれの指示と合わせてFIFOメモリ51に書き込んで、その情報もアクセス種別判定部53に出力するようにしてもよい。
【0051】
なお、
図21に示すアクセス調停部36を使用する場合、書込制御部33からのDRAM書込指示と読出制御部34からのDRAM読出指示が同時に入力されることはないはずであるが、これらが同時に入力された場合には、FIFOメモリ51に対するDRAM書込指示の書込みを優先し、FIFOメモリ51に対するDRAM読出指示の書込みを待たせるようにすればよい。
【0052】
活性化処理部52は、FIFOメモリ51にDRAM書込指示が蓄積された場合、DRAMが有するバンクのうちDRAM書込指示で指定された書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択する機能と、書込対象バンクが書込不可の場合は書込対象ロウアドレスが活性化状態にある他のバンクを新たな書込対象バンクとして選択する機能と、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合および書込対象ロウアドレスが活性化状態にある書込可能なバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化する機能とを有している。
【0053】
この際、書込対象バンクを選択する際、空き領域の有無だけでなく、書込対象バンクの書込対象ロウアドレスに、書込対象キューに関するデータが存在しているバンクを、書込対象バンクとして選択するようにしてもよい。
また、各バンクへの書込可否については、例えばバンク管理メモリ54において、バンクごとに、書込可否を示す書込可否情報を記憶しておき、この書込可否情報に基づき書込可否を判定するようにしもよい。
【0054】
バンク管理メモリ54において、バンクごと(キュー指定情報ごと)に書込可能情報を記憶する場合、書込可能情報の初期値は書込可とし、例えば、更新された書込ポインタ値WPが、対応する読出ポインタ値RPと同じ値になった時に書込不可(空き領域無し)とすればよい。また、書込不可状態でデータの読み出しが実施されて、読出ポインタ値RPが更新され、書込ポインタ値WPと異なる値となった時に書込可とすればよい。
【0055】
また、活性化処理部52は、FIFOメモリ51にDRAM読出指示が蓄積された場合、DRAM読出指示で指定された仮想格納アドレスと対応する読出対象バンクをアドレス管理メモリ55により特定する機能と、当該読出対象バンクにおいてDRAM読出指示で指定された読出対象キューに対応する読出対象ロウアドレスが活性化状態にない場合には、当該読出対象バンクにおいて読出対象ロウアドレスを活性化する機能と、当該読出対象バンクにおいて読出対象ロウアドレスとは異なるロウアドレスが活性化状態にある場合は、当該ロウアドレスへのアクセス完了に応じて、読出対象ロウアドレスを活性化する機能とを有している。
【0056】
アクセス種別判定部53は、FIFOメモリ51から出力されたDRAM書込指示をDRAM書込部56へ振り分けて出力する機能と、FIFOメモリ51から出力されたDRAM読出指示をDRAM読出部57へ振り分けて出力する機能とを有している。
【0057】
バンク管理メモリ54は、例えばSRAMチップなどの半導体メモリからなり、キューとバンクとの組み合わせごとに、当該キューの通信データを当該バンクに書き込む際にコラムアドレスとして用いる書込ポインタ値WPを記憶する機能と、キューとバンクとの組み合わせごとに、当該キューの通信データを当該バンクから読み出す際にコラムアドレスとして用いる読出ポインタ値RPとを記憶する機能とを有している。
【0058】
図8は、バンク管理メモリの記憶例である。ここでは、キューを識別するためのキューID(キュー番号)とバンクを機別するためのバンク番号との組み合わせごとに、書込ポインタ値WPと読出ポインタ値RPとが記憶されている。なお、書込ポインタ値WPと読出ポインタ値RPの初期値は、同じ値からなるものとする。
【0059】
例えば、キューP2のうち、バンク#0において書込ポインタ値はWP2#0であり、バンク#0が書込対象バンクである場合、WP2#0が示すコラムアドレスにキューP2の新たなフレームデータが書き込まれることになる。また、キューP2のうち、バンク#1において読出ポインタ値はRP2#1であり、バンク#1が読出対象バンクである場合、RP2#1が示すコラムアドレスからキューP2のフレームデータが読み出されることになる。
【0060】
アドレス管理メモリ55は、例えばSRAMチップなどの半導体メモリからなり、仮想格納アドレスごとに、当該仮想格納アドレスと対応するフレームデータが書き込まれたバンクのバンク番号を記憶する機能を有している。
図9は、アドレス管理メモリの記憶例である。ここでは、仮想格納アドレスADMごとに、当該仮想格納アドレスと関連付けられたフレームデータが書き込まれているバンクのバンク番号が記憶されている。例えば、仮想格納アドレス「2」と関連付けられたフレームデータは、バンク番号「#1」に書き込まれており、フレームデータ読出時には、このバンク番号と対応するバンクが読出対象バンクとなる。
【0061】
DRAM書込部56は、入力されたDRAM書込指示における書込対象ロウアドレスと書込対象バンクとの組み合わせに基づき、バンク管理メモリ54から書込ポインタ値WPを取得する機能と、書込対象バンクの書込対象ロウアドレスのうち、書込ポインタ値WPからなるコラムアドレスに、DRAM書込指示で指定されたフレームデータ(データD)を書き込む機能と、1仮想格納アドレス分のデータ長に相当するポインタ値だけ、バンク管理メモリ54内の当該書込ポインタ値WPを更新する機能と、アドレス管理メモリ55のうちDRAM書込指示で指定された仮想格納アドレスのバンクとして、書込対象バンクを書き込む機能とを有している。
【0062】
この際、1格納アドレス分のフレームデータ(データD)の書き込みに、複数のコラムアドレスが必要な場合は、DRAMの機能であるバーストモードを用いて、連続するコラムアドレスに書き込みを行うようにしてもよく、書込所要時間を短縮できる。
また、データメモリ31Aに対してEoF値(PN)の書き込みも行う場合は、フレームデータの書き込みと同時に行えばよい。
【0063】
DRAM読出部57は、入力されたDRAM読出指示における読出対象ロウアドレスと読出対象バンクとの組み合わせに基づき、バンク管理メモリ54から読出ポインタ値RPを取得する機能と、読出対象バンクの読出対象ロウアドレスのうち、読出ポインタ値RPからなるコラムアドレスからフレームデータ(データD)を読み出して、キュー指定情報とともに読出制御部34へ出力する機能と、1仮想格納アドレス分のデータ長に相当するポインタ値だけ、バンク管理メモリ54内の当該読出ポインタ値RPを更新する機能とを有している。
【0064】
この際、1仮想格納アドレス分のフレームデータ(データD)の読み出しに、複数のコラムアドレスが必要な場合は、DRAMの機能であるバーストモードを用いて、連続するコラムアドレスから読み出しを行うようにしてもよく、読出所要時間を短縮できる。
また、データメモリ31Aに対してEoF値(PN)が書き込まれている場合は、フレームデータの読み出しと同時にEoF値の読み出しを行えばよい。
【0065】
読み出したEoF値は、フレームデータおよびキュー指定情報とともに読出制御部34へ出力すればよい。なお、データメモリ31AにEoF値を書き込まない場合は、アドレスキュー管理メモリ(QM)32BにEoF値を書き込んでおき、読出制御部34がキュー指定情報とともにこのEoF値をDRAMアクセス部31Bに出力し、DRAM読出部57がデータメモリ31Aから読み出したフレームデータとともに、アドレス種別判定部53を介して受け取ったEoF値を読出制御部34へ出力すればよい。
【0066】
[第1の実施の形態の動作]
次に、
図10および
図11を参照して、本実施の形態にかかる通信用入出力装置1で用いられる記録装置30の動作について説明する。
図10は、書込制御部における書込動作を示す説明図である。
図11は、読出制御部における読出動作を示す説明図である。
【0067】
[書き込み動作]
まず、
図10を参照して、記録装置30の書込制御部33における書き込み動作について説明する。
書込制御部33は、アクセス調停部36からの書き込み指示に応じて、
図10の処理動作を実行する。新たなデータを書込対象キューに書き込んだ場合、各キューによるデータメモリ31Aの格納アドレスの共用という観点からすれば、キュー制御情報における主な変化としては、書き込み前後において、書込対象キューに関するキュー最終アドレスLARと、書込前のキュー最終アドレスに関する後続仮想アドレスADDと、各キューに共通する次書込アドレスVARとが変化する。なお、書込対象キューに対する最初の書き込みである場合は、書込対象キューに関するキュー先頭アドレスSARも変化する。
【0068】
このため、
図10の処理動作において、書込制御部33は、次書込アドレスVARに対する指定データの書き込み(書き込み指示の出力)、書込対象キューに関するキュー最終アドレスLARの更新、書込前のキュー最終アドレスに関する後続仮想アドレスADDの更新、各キューに共通する次書込アドレスVARの更新を行う。なお、書込対象キューに対する最初の書き込みである場合は、書込対象キューに関するキュー先頭アドレスの更新も行う。これら更新の詳細については動作例に基づいて後述する。
【0069】
この際、書込制御部33は、キュー制御メモリ32にアクセスすることにより、
図10に示すステップW1〜W7を実行する。すなわち、LAR保持(W1)、LAR,SAR更新(W2)、VAR保持(W3)、ADD更新(W4)、VAR更新(W5)、PN更新(W6)、データ等の出力(W7)の順で処理を実行する。なお、
図10の処理順序は、処理効率を考慮したものであるが、他の処理順序であってもよい。
【0070】
[読み出し動作]
次に、
図11を参照して、記録装置30の読出制御部34における読み出し動作について説明する。
読出制御部34は、アクセス調停部36からの読み出し指示に応じて、
図11の処理動作を実行する。新たなデータを読出対象キューから読み出した場合、各キューによるデータメモリ31Aの格納アドレスの共用という観点からすれば、キュー制御情報における主な変化としては、読み出し前後において、読出対象キューに関するキュー先頭アドレスSARと、各キューに共通する次書込アドレスVARと、新たな次書込アドレスVARに関する後続仮想アドレスADDとが変化する。
【0071】
このため、
図11の処理動作において、読出制御部34は、読出対象キューに関するキュー先頭アドレスSARに対するEoF(End of Frame:フレーム終端フラグ)の読み出し、読出対象キューに関するキュー先頭アドレスSARの更新、各キューに共通する次書込アドレスVARの更新、読出済仮想格納アドレスに関する後続仮想アドレスADDの更新、読み出し指示の出力を行う。これら更新の詳細については動作例に基づいて後述する。
【0072】
この際、読出制御部34は、キュー制御メモリ32にアクセスすることにより、
図11に示すステップR1〜R5を実行する。すなわち、EoF出力(R1)、VAR保持(R2)、VAR更新(R3)、SAR更新(R4)、後続仮想アドレス更新(R5)、読み出し指示の出力の順で処理を実行する。なお、
図11の処理順序は、処理効率を考慮したものであるが、他の処理順序であってもよい。
【0073】
[動作例]
次に、
図12〜
図18を参照して、記録装置30におけるフレームデータの書込動作および読出動作について、キューP2を読出・書込対象キューとし、このキューP2にデータP2−3が書込まれた後、データP2−1、P2−2を読み出し、さらにデータP2−4を書き込む場合を例に説明する。
【0074】
図12は、データ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」は未使用である。
【0075】
したがって、次書込アドレス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には、フレーム終端が含まれていないことがわかる。
【0076】
また、キューP1のキュー先頭アドレスSARは、データP1−1の仮想格納アドレス「0」を示し、キュー最終アドレスLARは、データP1−3の仮想格納アドレス「4」を示している。また、キューP2のキュー先頭アドレスSARは、データP2−1の仮想格納アドレス「2」を示し、キュー最終アドレスLARは、データP2−3の仮想格納アドレス「5」を示している。なお、作業用次書込アドレスTMPVと作業用キュー最終アドレスTMPLには、それぞれ「5」と「3」が格納されている。
【0077】
図12に示した状態において、キューP2のデータP2−1を読み出した場合、キュー制御情報は、
図13のように変化する。
図13は、データP2−1読出時におけるキュー制御情報の変化を示す説明図である。
【0078】
まず、
図13(a)に示すように、キューP2に関するキュー先頭アドレスSARが示す読出対象仮想アドレス「2」からデータP2−1が読み出されるため、読出対象仮想アドレス「2」のデータDは空き状態となり、キューP2に関するデータはP2−2,P2−3の2つとなる。これにより、
図13(b)に示すように、P2−2がキューP2の先頭データとなり、キュー先頭位置が仮想格納アドレス「2」から「3」に変化するため、キューP2に関するキュー先頭アドレスSARが「2」から「3」に更新される。
【0079】
また、読出対象仮想アドレス「2」のデータDは空き状態となったため、
図13(c)に示すように、この仮想格納アドレス「2」が次データの書込位置となる。これにより、次書込アドレスVARが「6」から「2」に更新される。また、これに伴って、旧次書込アドレスVAR「6」と新次書込アドレスVAR「2」との順序関係を維持するため、
図13(d)に示すように、仮想格納アドレス「2」の後続仮想アドレスADDが「3」から「6」に更新される。
【0080】
これにより、キュー制御情報は、
図14の状態に変化する。
図14は、データP2−1読出直後(データP2−2読出直前)のキュー制御情報を示す説明図である。なお、作業用次書込アドレスTMPVと作業用キュー最終アドレスTMPLには、それぞれ「6」と「3」が格納されている。
【0081】
図14に示した状態において、キューP2のデータP2−2を読み出した場合、キュー制御情報は、
図15のように変化する。
図15は、データP2−2読出時におけるキュー制御情報の変化を示す説明図である。
【0082】
まず、
図15(a)に示すように、キューP2に関するキュー先頭アドレスSARが示す読出対象仮想アドレス「3」からデータP2−2が読み出されるため、読出対象仮想アドレス「3」のデータDは空き状態となり、キューP2に関するデータはP2−3の1つとなる。これにより、
図15(b)に示すように、P2−3がキューP2の先頭データとなり、キュー先頭位置が仮想格納アドレス「3」から「5」に変化するため、キューP2に関するキュー先頭アドレスSARが「3」から「5」に更新される。
【0083】
また、読出対象仮想アドレス「3」のデータDは空き状態となったため、
図15(c)に示すように、この仮想格納アドレス「3」が次データの書込位置となる。これにより、次書込アドレスVARが「2」から「3」に更新される。また、これに伴って、旧次書込アドレスVAR「2」と新次書込アドレスVAR「3」との順序関係を維持するため、
図15(d)に示すように、仮想格納アドレス「3」の後続仮想アドレスADDが「5」から「2」に更新される。
【0084】
これにより、キュー制御情報は、
図16の状態に変化する。
図16は、データP2−2読出直後(データP2−4書込直前)のキュー制御情報を示す説明図である。なお、作業用次書込アドレスTMPVと作業用キュー最終アドレスTMPLには、それぞれ「2」と「3」が格納されている。
【0085】
図16に示した状態において、キューP2のデータP2−4を書き込みした場合、キュー制御情報は、
図17のように変化する。
図17は、データP2−4書込時におけるキュー制御情報の変化を示す説明図である。
【0086】
まず、
図17(a)に示すように、次書込アドレスVARが示す書込対象仮想アドレス「3」にデータP2−4が書き込まれるため、
図17(b)に示すように、P2−4がキューP2の新たな最終データとなり、キュー最終位置が仮想格納アドレス「5」から「3」に変化するため、キューP2のキュー最終アドレスLARが「5」から「3」に更新される。
【0087】
また、書込前にキュー最終データであったP2−3にP2−4が後続することになるため、
図17(c)に示すように、P2−3の仮想格納アドレス「5」の後続仮想アドレスとしてP2−4の仮想格納アドレス「3」が設定される。
また、書込前の次書込アドレスVARにP2−4が書き込まれたため、
図17(d)に示すように、次書込アドレスVARが「3」から、仮想格納アドレス「3」の後続仮想アドレス「2」に更新される。
【0088】
これにより、キュー制御情報は、
図18の状態に変化する。
図18は、データP2−4書込直後のキュー制御情報を示す説明図である。なお、作業用次書込アドレスTMPVと作業用キュー最終アドレスTMPLには、それぞれ「3」と「5」が格納されている。
【0089】
[DRAM書込動作]
次に、
図19を参照して、本実施の形態にかかるDRAMアクセス部31BにおけるDRAM書込動作について説明する。
図19は、第1の実施の形態にかかるDRAM書込処理を示すフローチャートである。
DRAMアクセス部31Bは、書込制御部33からのDRAM書込指示に応じて、
図19のDRAM書込処理を実行する。
【0090】
まず、活性化処理部52は、FIFOメモリ51に蓄積されたDRAM書込指示で指定された書込対象キューと対応する書込対象ロウアドレスを特定し(ステップ100)、書込対象ロウアドレスが活性化状態にあるバンクの有無を確認する(ステップ101)。
ここで、書込対象ロウアドレスが活性化状態にあるバンクが存在した場合(ステップ101:YES)、活性化処理部52は、当該バンクの書込対象ロウアドレスに対する書込可否を確認し(ステップ102)、書込対象ロウアドレスに空き領域があり、書込可能な場合(ステップ102:YES)、当該バンクを書込対象バンクとしてDRAM書込指示に設定し(ステップ103)、活性化処理を完了する。
【0091】
活性化処理部52での活性化処理を完了後、DRAM書込指示はFIFOメモリ51から出力され、アクセス種別判定部53を介してDRAM書込部56に入力される。
DRAM書込部56は、入力されたDRAM書込指示に対応する書込対象ロウアドレスと書込対象バンクとの組み合わせに基づき、バンク管理メモリ54から対応する書込ポインタ値WPを取得し(ステップ104)、書込対象バンクの書込対象ロウアドレスのうち、書込ポインタ値WPからなるコラムアドレスに、DRAM書込指示で指定されたフレームデータ(データD)を書き込む(ステップ105)。
【0092】
この後、DRAM書込部56は、1仮想格納アドレス分のデータ長に相当するポインタ値だけ、バンク管理メモリ54内の当該書込ポインタ値WPを更新するとともに(ステップ106)、アドレス管理メモリ55のうちDRAM書込指示で指定された仮想格納アドレスのバンクとして、書込対象バンクを格納し(ステップ107)、一連のDRAM書込処理を終了する。
【0093】
また、ステップ102において、書込対象ロウアドレスに空き領域がなく、書込不可の場合(ステップ102:NO)、活性化処理部52は、書込対象ロウアドレスが活性化状態にある他のバンクの有無を確認する(ステップ110)。
ここで、書込対象ロウアドレスが活性化状態にある他のバンクが存在した場合(ステップ110:YES)、活性化処理部52は、ステップ102に戻り、前述と同様に当該バンクでの書込可否を確認する。
【0094】
また、書込対象ロウアドレスが活性化状態にある他のバンクが存在しない場合(ステップ110:NO)、活性化処理部52は、当該書込対象ロウアドレスが非活性化状態にある任意のバンクを選択して(ステップ111)、当該バンクにおいて書込対象ロウアドレスを活性化し(ステップ112)、ステップ103へ移行して、当該書込対象バンクとしてDRAM書込指示に設定し(ステップ103)、活性化処理を完了する。
【0095】
また、ステップ101において、書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合(ステップ101:NO)、活性化処理部52は、ステップ110に移行して、前述と同様に書込対象ロウアドレスが非活性化状態にあるバンクの活性化を行う。
【0096】
したがって、データメモリ31Aを構成するDRAMにフレームデータを書き込む際、DRAMが持つ各バンクのうちから、書込対象ロウアドレスが活性化状態にあるバンクが書込対象バンクとして優先的に選択される。これにより、同一バンクの異なるロウアドレスへの書き込みが発生する確率が低減されることになる。このため、フレームデータ書込時におけるロウアドレスの活性化や、異なるロウアドレスに対するアクセス完了を待つ回数が削減されることになり、DRAMアクセスの実効スループットの低下が抑制される。
【0097】
[DRAM読出動作]
次に、
図20を参照して、本実施の形態にかかるDRAMアクセス部31BにおけるDRAM読出動作について説明する。
図20は、第1の実施の形態にかかるDRAM読出処理を示すフローチャートである。
DRAMアクセス部31Bは、読出制御部34からのDRAM読出指示に応じて、
図20のDRAM読出処理を実行する。
【0098】
まず、活性化処理部52は、FIFOメモリ51に蓄積されたDRAM読出指示で指定された読出対象キューと対応する読出対象ロウアドレスを特定し(ステップ150)、アドレス管理メモリ55から、読出対象ロウアドレスと対応する読出対象バンクを取得する(ステップ151)。
次に、活性化処理部52は、読出対象バンクにおいて読出対象ロウアドレスが活性化状態にあるか確認し(ステップ152)、読出対象ロウアドレスが活性化状態にある場合(ステップ152:YES)、活性化処理を完了する。
【0099】
活性化処理部52での活性化処理を完了後、DRAM読出指示はFIFOメモリ51から出力され、アクセス種別判定部53を介してDRAM読出部57に入力される。
DRAM読出部57は、入力されたDRAM読出指示に対応する読出対象ロウアドレスと読出対象バンクとの組み合わせに基づき、バンク管理メモリ54から対応する読出ポインタ値RPを取得する(ステップ153)。
【0100】
この後、DRAM読出部57は、読出対象バンクの読出対象ロウアドレスのうち、読出ポインタ値RPからなるコラムアドレスからフレームデータ(データD)を読み出して(ステップ154)、1仮想格納アドレス分のデータ長に相当するポインタ値だけ、バンク管理メモリ54内の当該読出ポインタ値RPを更新し(ステップ155)、一連のDRAM読出処理を終了する。
【0101】
また、ステップ152において、読出対象バンクの読出対象ロウアドレスが活性化状態にない場合(ステップ152:NO)、活性化処理部52は、読出対象バンクにおいて異なるロウアドレスが活性化状態にあるか確認する(ステップ156)。
ここで、異なるロウアドレスが活性化状態にない場合(ステップ156:NO)、活性化処理部52は、読出対象バンクの読出対象ロウアドレスを活性化し(ステップ157)、活性化処理を完了する。これにより、DRAM読出部57において、活性化された読出対象ロウアドレスからの読み出しが行われることになる。
【0102】
また、ステップ156において、異なるロウアドレスが活性化状態にある場合(ステップ156:YES)、活性化処理部52は、異なるロウアドレスへのアクセスが完了するまで待機した後(ステップ158)、ステップ157へ移行して、前述と同様に読出対象ロウアドレスの活性化を行う。
【0103】
このように、データメモリ31Aを構成するDRAMからフレームデータを読み出す際、読出対象となるフレームデータが特定のバンクに書き込まれていることから、書き込み時のように、ロウアドレスが活性化状態にあるバンクを任意に選択することはできない。このため、同一バンクの異なるロウアドレスからの読み出しや、書き込み後の同一バンクからの読み出しにおいて待ち時間が発生するものとなる。なお、同一バンクの異なるロウアドレスからの読み出しについては、異なるロウアドレスからの読み出しが連続しないように、例えば、両者の間に書き込みが挿入されるよう処理間隔をあけるようにしてもよい。
【0104】
[第1の実施の形態の効果]
このように、本実施の形態は、記録装置30において、データメモリ31Aをバンクごとに複数のロウアドレスを有するDRAMから構成して、前記キューと対応するロウアドレスで当該キューのフレームデータを記憶し、DRAMアクセス部31Bが、書込対象キューにフレームデータを書き込む際、バンクのうち当該書込対象キューに対応する書込対象ロウアドレスが活性化状態にあるバンクを書込対象バンクとして選択して当該フレームデータを書き込み、当該書込対象ロウアドレスが活性化状態にあるバンクが存在しない場合は、当該書込対象ロウアドレスが非活性化状態にあるバンクを書込対象バンクとして選択して当該書込対象ロウアドレスを活性化した後に当該フレームデータを書き込むようにしたものである。
【0105】
一般に、DRAMでは、任意のバンクの任意のロウアドレスにデータを書き込む場合、当該バンクにおいて当該ロウアドレスを活性化する必要があり、同一バンクの異なるロウアドレスにアクセスする場合には、当該ロウアドレスを用いたアクセスが完了するのを待ってから、新たなロウアドレスを活性化する必要があるため、同一バンクへのアクセスにおいて、ロウアドレスの活性化に起因して比較的大きな待ち時間が発生する。具体的には、同一バンクの異なるロウアドレスへのアクセスが連続した場合である。その他に待ち時間が発生する条件として、読み出し後の同一バンクに書き込みを行う場合、および、書き込み後の同一バンクから読み出しを行う場合がある。
【0106】
本実施形態によれば、データメモリ31Aを構成するDRAMにフレームデータを書き込む際、DRAMが持つ各バンクのうちから、書込対象ロウアドレスが活性化状態にあるバンクが書込対象バンクとして優先的に選択される。
これにより、同一バンクの異なるロウアドレスへの書き込みが発生する確率を低減することができる。したがって、フレームデータ書込時におけるロウアドレスの活性化や、異なるロウアドレスに対するアクセス完了を待つ回数を低減させることができ、DRAMアクセスに関する実効スループットの低下を抑制することが可能となる。
【0107】
特に、通信用入出力装置においては、短いフレームデータがバースト的に連続して入力される場合がある。本願発明によれば、各出力系統のキューに対して個別のロウアドレスが割り当てられている。このため、このようなケースにおいては、同一ロウアドレスに対する書き込みが繰り返し行われることになり、ロウアドレスの変更による活性化の回数を削減することができる。したがって、このようなケースにおいても、DRAMアクセスに関する実効スループットの低下を抑制することができるため、フレームデータの処理速度に十分追従でき、通信品質の劣化を低減することが可能となる。
【0108】
また、本実施の形態において、DRAMアクセス部31Bに、キューとバンクとの組み合わせごとに、当該キューの通信データを当該バンクに書き込む際にコラムアドレスとして用いる書込ポインタ値を記憶するバンク管理メモリ54を設け、通信データを書き込む際、書込対象ロウアドレスと書込対象バンクとの組み合わせに対応する書込ポインタ値をバンク管理メモリ54から取得し、当該書込対象バンクの当該書込対象ロウアドレスのうち、当該書込ポインタ値からなるコラムアドレスに当該通信データを書き込むようにしてもよい。
【0109】
これにより、各出力系統のキューに対して個別のロウアドレスが割り当てた場合でも、複数のキューが各バンクを共用することができるとともに、任意のキューにフレームデータを書き込む際、ロウアドレスが活性化状態にあるいずれのバンクが選択されても、極めて迅速に当該バンクで使用すべきカラムアドレスを特定することができ、DRAMアクセスの実効スループットを向上させることができる。
【0110】
また、本実施の形態において、記録装置30において、仮想格納アドレスごとに、当該仮想格納アドレスに書き込まれた通信データに後続する通信データの仮想格納アドレスを示す後続アドレスを記憶し、キューごとに、当該キューの通信データが書き込まれている仮想格納アドレスの先頭および最終を示すキュー先頭アドレスおよびキュー最終アドレスを記憶し、各キューに共通して、次に通信データを書き込むべき仮想格納アドレスを示す次書込アドレスを記憶するようにしてもよい。
【0111】
これに加えて、書込制御部33が、書込対象キューに通信データを書き込む(書き込み指示を行う)際、次書込アドレスからなる書込対象仮想アドレスに当該通信データを書き込み、当該書込対象キューのキュー最終アドレス、書込前のキュー最終アドレスに関する後続仮想アドレス、および次書込アドレスをそれぞれ更新し、読出制御部34が、読出対象キューから通信データを読み出す(読み出し指示を行う)際、当該読出対象キューのキュー先頭アドレスからなる読出対象仮想アドレスから当該通信データを読み出し、当該読出対象キューのキュー先頭アドレス、次書込アドレス、および新たな次書込アドレスに関する後続仮想アドレスをそれぞれ更新するようにしてもよい。
【0112】
これにより、各キューのフレームデータが、空き状態にある仮想格納アドレスに順次書き込まれ、フレームデータが読み出された仮想格納アドレスが再び空き状態として管理されることになる。またキューごとに書き込まれた順序でフレームデータの仮想格納アドレスが管理されることになる。空き状態にある仮想格納アドレスについては、複数のキューで共用することができ、従来のキューごとに予めアドレス範囲を固定的に確保しておく場合と比較して、メモリの使用効率を高めることが可能となる。このため、メモリ容量の増大を行う必要がなくなり、結果として回路規模やコストの増大を抑制することが可能となる。
【0113】
また、本実施の形態は、QM内のADD値等の初期値を設定する必要が無いという特徴がある。本実施の形態において、通信用入出力装置の起動時に初期値を設定する必要がある情報はVARとUARのみである(
図10の「Initialization」を参照)。従って、初期設定を行うための回路の規模、もしくは、初期設定を行うためのソフトウエアの規模が極めて小さく、初期設定に要する時間も極めて小さいという効果が有る。
なお、
図12等において、EoF値格納用のPNをQM内に搭載する場合を例示しているが、PNをDRAM内に搭載することも可能である。
【0114】
[第2の実施の形態]
次に、
図21を参照して、本発明の第2の実施の形態にかかる通信用入出力装置1について説明する。
図21は、第2の実施の形態にかかるアクセス調停部の構成を示すブロック図である。
【0115】
第1の実施の形態にかかる通信用入出力装置1において、仮想データメモリの仮想格納アドレスを複数のキューで共用するようにした際に、例えば、特定の出力系統に関するフレームデータが多量に入力された場合、仮想データメモリの仮想格納アドレスが当該出力系統のキューにより占有されてしまうという場合がある。このような格納アドレスの占有は、第1の実施の形態に限定されるものではなく、格納アドレスを複数のキューで共用する構成であれば、いずれの構成であっても発生しうる。したがって、このような格納アドレスの占有が発生した場合、他の出力系統のキューが十分な格納アドレス数を使用できず、フレームデータの破棄が発生しやすくなり、通信品質が劣化する原因となる。
【0116】
本実施の形態は、このような複数のキューによる格納アドレスの共用時における、特定キューによる格納アドレスの占有を回避することを目的とし、記録装置30において、アクセス調停部36が、書込対象キューにフレームデータを書き込む(書き込み指示を行う)際、当該フレームデータのデータ長に基づき、書き込みに必要となる仮想格納アドレスの数を示す必要アドレス数を算出し、キュー使用アドレス数メモリ35から取得した当該書込対象キューまたは各キューの使用仮想アドレス数に基づき、当該書き込みに使用可能な仮想格納アドレスの数を示す残りアドレス数を算出し、当該必要アドレス数と当該残りアドレス数とを比較することにより当該フレームデータの書込可否を判定し、書込可の判定に応じて書込制御部33に対して当該フレームデータの書き込みを指示するようにしたものである。
【0117】
図21に示すように、本実施の形態において、アクセス調停部36には、主な回路部として、書込可否判定部41、書込用FIFO42、読出受付部43、読出用FIFO44、優先制御部45、キュー使用アドレス数更新部46、および指示出力部47が設けられている。
【0118】
書込可否判定部41は、多重化装置10から転送されたフレームデータに付加されているキュー指定情報およびフレーム長情報と、キューごとに予め設定されている判定用アドレス数情報と、各キューの使用仮想アドレス数とに基づいて、書込可能か否か判定する機能と、書込可の判定結果に応じて、当該フレームデータを、データメモリ31Aに設けられている格納領域の1仮想アドレス分のデータサイズに分割し、得られたデータにキュー指定情報を付加した書き込み指示を、それぞれ書込用FIFO42に書き込む機能とを有している。
【0119】
判定用アドレス数情報には、当該キュー指定情報で指定された書込対象キューで使用可能な最大仮想アドレス数NKmaxと、当該書込対象キューに対して使用が保証されている最低保証仮想アドレス数NKminとが含まれている。
図22は、判定用アドレス数情報の構成例である。ここではキューを識別するためのキューIDごとに、最大仮想アドレス数NKmaxと最低保証仮想アドレス数NKminとが設定されている。これら判定用アドレス数情報は、例えばキュー使用アドレス数更新部46、あるいはアクセス調停部36の内部メモリ(図示せず)で記憶されている。
【0120】
読出受付部43は、多重分離装置20から出力された読み出し要求の読出データ量情報に基づいて、データメモリ31Aに対する読み出し回数を計算し、その読み出し回数だけ当該読み出し要求のキュー指定情報を読み出し指示として読出用FIFO44に書き込む機能を有している。この計算は、読出データ量情報が示すデータ量をデータメモリ31Aの1仮想アドレスあたりのデータサイズで除算した値を読み出し回数とし、剰余がある場合は読み出し回数に1を加算すれば良い。
【0121】
優先制御部45は、書込用FIFO42もしくは読出用FIFO44から、書き込み指示もしくは読み出し指示を読み出して、キュー使用アドレス数更新部46へ出力する機能と、書込用FIFO42と読出用FIFO44の双方に、書き込み指示と読み出し指示が存在する場合は、書込用FIFO42からの書き込み指示を優先して読み出す機能とを有している。
【0122】
キュー使用アドレス数更新部46は、優先制御部45から書き込み指示が入力された場合は、キュー使用アドレス数メモリ35のうち、当該書き込み指示のキュー指定情報と対応する書込対象キューの使用仮想アドレス数に1を加算し、当該書き込み指示を指示出力部47へ出力する機能と、優先制御部45から読み出し指示が入力された場合は、キュー使用アドレス数メモリ35のうち、当該読み出し指示のキュー指定情報と対応する読出対象キューの使用仮想アドレス数から1を減算し、当該読み出し指示を指示出力部47へ出力する機能とを有している。
【0123】
指示出力部47は、キュー使用アドレス数更新部46から書き込み指示が入力された場合は、当該書き込み指示を書込制御部33へ出力する機能と、読み出し指示が入力された場合は、当該読み出し指示を読出制御部34へ出力する機能とを有している。
【0124】
[第2の実施の形態の動作]
次に、
図23を参照して、本実施の形態にかかるアクセス調停部36の動作として、フレームデータの書き込み時における書込判定動作について説明する。
図23は、第2の実施の形態にかかる書込可否判定処理を示すフローチャートである。
記録装置30のアクセス調停部36は、多重化装置10から転送されたフレームデータごとに、
図23の書込可否判定処理に基づいて、書込可否を判定する。
【0125】
まず、アクセス調停部36は、キュー使用アドレス数メモリ35から全キューに関する使用仮想アドレス数NKを取得して(ステップ200)、全キューが使用している合計仮想アドレス数NKAを算出し(ステップ201)、書込対象となる対象フレームデータの書き込みに要する必要仮想アドレス数NFを算出する(ステップ202)。
【0126】
この後、仮想データメモリの仮想格納アドレスの総アドレス数NAからNKAを減算することにより、対象フレームデータの書き込みに使用可能な仮想格納アドレスの数を示す残りアドレス数NRを算出し(ステップ203)、NFとNRとを比較する(ステップ204)。
ここで、NF>NRの場合(ステップ204:YES)、アクセス調停部36は、書込不可と判定して対象フレームデータを破棄し(ステップ213)、当該対象フレームデータに関する書込判定処理を終了する。
【0127】
一方、NF≦NRの場合(ステップ204:NO)、アクセス調停部36は、指定された書込対象キューの最大仮想アドレス数NKmaxをキュー使用アドレス数メモリ35等から取得して(ステップ205)、NKmaxからNKを減算することにより残りアドレス数NRを算出し(ステップ206)、NFとNRとを比較する(ステップ207)。
ここで、NF>NRの場合(ステップ207:YES)、アクセス調停部36は、書込不可と判定して対象フレームデータを破棄し(ステップ213)、当該対象フレームデータに関する書込判定処理を終了する。
【0128】
一方、NF≦NRの場合(ステップ207:NO)、アクセス調停部36は、全キューに関する最低保証仮想アドレス数NKminをキュー使用アドレス数メモリ35から取得し(ステップ208)、全キューを一括して最低限保証すべき総保証仮想アドレス数NAminを算出する(ステップ209)。この際、任意のキューのキュー使用仮想アドレス数NKがその最低保証仮想アドレス数以上である場合は、当該キューの保証仮想アドレス数としてキュー使用仮想アドレス数NKを加算し、キュー使用仮想アドレス数NKがその最低保証仮想アドレス数未満である場合は、当該キューの保証仮想アドレス数として最低保証仮想アドレス数NKminを加算する。
【0129】
この後、アクセス調停部36は、NAからNAminを減算することにより残りアドレス数NRを算出し(ステップ210)、NFとNRとを比較する(ステップ211)。
ここで、NF>NRの場合(ステップ211:YES)、アクセス調停部36は、書込不可と判定して対象フレームデータを破棄し(ステップ213)、当該対象フレームデータに関する書込判定処理を終了する。
【0130】
一方、NF≦NRの場合(ステップ211:NO)、アクセス調停部36は、対象フレームデータについて書込可と判定し(ステップ212)、当該対象フレームデータに関する書込判定処理を終了する。
この後、この書込可の判定に応じて、アクセス調停部36は、対象フレームデータを1仮想アドレス分のデータサイズに分割し、得られたデータにキュー指定情報を付加した書き込み指示を、それぞれ書込用FIFO42に書き込むことになる。
【0131】
[第2の実施の形態の効果]
このように、本実施の形態は、記録装置30において、キュー使用アドレス数メモリ35が、キューごとに、当該キューが使用している仮想格納アドレスの数を示す使用アドレス数を記憶し、アクセス調停部36が、書込対象キューに通信データを書き込む(書き込み指示を行う)際、当該通信データのデータ長に基づき、書き込みに必要となる仮想格納アドレスの数を示す必要アドレス数を算出し、キュー使用アドレス数メモリ35から取得した当該書込対象キューまたは各キューの使用仮想アドレス数等に基づき、当該書き込みに使用可能な仮想格納アドレスの数を示す残りアドレス数を算出し、当該必要アドレス数と当該残りアドレス数とを比較することにより当該通信データの書込可否を判定し、書込可の判定に応じて書込制御部33に対して当該通信データの書き込みを指示するようにしたものである。
【0132】
したがって、それぞれのキューによる仮想格納アドレスの使用数が制限されるため、任意の出力系統と対応するキューによる仮想格納アドレスの占有を抑止することができる。このため、特定の出力系統に関するフレームデータが多量に入力された場合でも、他の出力系統のキューが十分な仮想格納アドレス数を使用することが可能となる。これにより、フレームデータの破棄やこれによる通信品質の劣化を抑制することが可能となるとともに、これら対策として、メモリ容量の増大を行う必要がなくなり、結果として回路規模やコストの増大を抑制することが可能となる。
【0133】
なお、本実施の形態におけるNKA及びNAminの算出は、キュー使用アドレス数メモリを更新する際に同時に算出(加算、減算等)することができる。
本実施の形態において、
図21の構成のアクセス調停部を用いる場合、書込用FIFOに書き込み指示データが存在していると誤って書込可能と判定してしまう可能性がある。誤った判定を防止するためには、各キューの使用仮想アドレス数としてキュー使用アドレス数メモリの情報に書込用FIFO内の仮想アドレス数(書き込み指示の数)を加算した値を使用するか、NAもしくはNKmaxとして書込用FIFO内の仮想アドレス数(書き込み指示の数)を減算した値を使用すれば良い。
【0134】
[実施の形態の拡張]
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。また、各実施形態については、矛盾しない範囲で任意に組み合わせて実施することができる。
【0135】
上記の各実施の形態において、通信用入出力装置1でマルチキャストフレームを処理する場合、出力系統の1つとしてマルチキャスト用出力系統を設けるとともに多重分離装置20内の振分部22にマルチキャストフレームを複数の速度変換部23に出力する手段を設け、記録装置30のデータメモリ内に論理的に形成した一部のキューをこのマルチキャスト用出力系統に対応するキューとして割り当てるようにしてもよい。
これにより、外部から多重化装置10に入力されたマルチキャストフレームが、データメモリ内のマルチキャスト用出力系統に対応するキューに一時格納され、当該キューから多重分離装置20によりマルチキャストフレームが読み出されて複数の出力ポートから出力される。