(57)【要約】【課題】伝送帯域を向上させることである。【解決手段】メモリ制御装置１０は、ライト要求振分部１１とコントローラ１５ａ〜１５ｄとを有する。ライト要求振分部１１は、メモリ２０への書込み対象のデータを分割し、該分割によって得られた複数の分割データを、複数のバスに振り分けて出力する。コントローラ１５ａ〜１５ｄは、ライト要求振分部１１により出力された上記複数の分割データを、各バス毎に詰めた状態で、上記複数のバスを介してメモリ２０に書き込む。【選択図】図３
2014194672.tif 000002
【特許請求の範囲】
【請求項１】
メモリへの書込み対象のデータを分割し、該分割によって得られた複数の分割データを、複数のバスに振り分けて出力する振分部と、
前記振分部により出力された前記複数の分割データを、各バス毎に詰めた状態で、前記複数のバスを介して前記メモリに書き込む複数の制御部と
を有することを特徴とするメモリ制御装置。
【請求項２】
前記複数の分割データが出力される際、前記メモリ内において各分割データが書き込まれる位置を取得する取得部と、
前記取得部により取得された前記位置を参照し、前記複数の制御部により前記メモリに書き込まれた前記複数の分割データを、連続して読み出す読出し部と
を更に有することを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
前記読出し部により読み出された前記複数の分割データが、前記振分部により分割される前の順序となる様に、前記複数の分割データを並び替えて出力する並替え部
を更に有することを特徴とする請求項２に記載のメモリ制御装置。
【請求項４】
前記メモリは、複数のメモリ領域を有し、
前記振分部は、前記複数の分割データに対する書込み要求と読出し要求とが同時に発生した場合、前記読出し要求に応じて分割データが読み出されたメモリ領域とは異なるメモリ領域に対し、前記書込み要求に応じた書込みを行うことを指示することを特徴とする請求項１に記載のメモリ制御装置。
【請求項５】
メモリ制御装置が、
メモリへの書込み対象のデータを分割し、該分割によって得られた複数の分割データを、複数のバスに振り分けて出力し、
出力された前記複数の分割データを、各バス毎に詰めた状態で、前記複数のバスを介して前記メモリに書き込む
ことを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置、及びメモリ制御方法に関する。
【背景技術】
【０００２】
近年、ＩＰ（Internet  Protocol）によるパケット等の伝送装置では、ネットワークの広帯域化に伴い、ＦＰＧＡ（Field  Programmable  Gate  Array）の対応可能な伝送帯域も増大しつつある。例えば、伝送装置が、イーサネット（登録商標）において、８０Ｇｂｐｓ程度の高い伝送性能を発揮するためには、ＦＰＧＡの伝送帯域の増大に合わせて、メモリのバス幅も大きくすることとなる。ところが、伝送装置は、受信された各データを、メモリのバス幅で分割していたため、広帯域化によるバス幅の増大に伴い、メモリ内に無効領域が大量に発生してしまう。具体的には、伝送装置が、６５バイト（５２０ビット）のデータを伝送する場合、バス幅が２５６ビットであれば、２４８（＝２５６−８）ビット分の無効領域で済むが、バス幅が５１２ビットである場合には、５０４（＝５１２−８）ビットもの無効領域が発生することとなる。
【０００３】
この様な無効領域の発生は、メモリの実効伝送帯域の減少を招き、ひいてはメモリ容量の不足からフレームロスの要因となることがある。フレームロスは、伝送装置が、高速かつ高品質な伝送を行う上で、大きな問題となる。すなわち、伝送装置において、メモリのバス幅が増大した場合、最大の伝送性能は向上するものの、無効領域も増加し易くなるため、伝送装置が、全てのデータ長（例えば、６４〜１６Ｋバイト）に対して、高い伝送性能を発揮することはできなかった。かかる問題点に鑑み、伝送装置が、メモリにデータをライトする際、上記無効領域が生じない様に、隙間を空けずに、複数のデータをメモリに格納していく方法もある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−２８８２６８号公報
【特許文献２】国際公開第２００９／１１６１１５号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述の方法では、データの先頭位置がビット単位で変化すること、あるいは、データのライト時に、格納済みの他のデータの消去を回避する制御を行うこと等に起因し、処理が複雑になるという問題点が懸念される。更に、各データは、ライトされた順にリードされるとは限らないため、伝送装置は、あるデータをリードする際、前後に格納されている他のデータまでリードしてしまうことがあり、その結果、リード時の伝送帯域が低下する可能性がある。メモリの実効伝送帯域を向上させる方法としては、上述したバス幅の拡大以外にも、メモリ自体の動作周波数を増加させる方法があるが、ＦＰＧＡの対応可能な周波数には限界があるため、この方法では、伝送帯域の大幅な向上を望むことはできない。
【０００６】
開示の技術は、上記に鑑みてなされたものであって、伝送帯域を向上させることのできるメモリ制御装置、及びメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本願の開示するメモリ制御装置は、一つの態様において、振分部と複数の制御部とを有する。前記振分部は、メモリへの書込み対象のデータを分割し、該分割によって得られた複数の分割データを、複数のバスに振り分けて出力する。前記複数の制御部は、前記振分部により出力された前記複数の分割データを、各バス毎に詰めた状態で、前記複数のバスを介して前記メモリに書き込む。
【発明の効果】
【０００８】
本願の開示するメモリ制御装置の一つの態様によれば、伝送帯域を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本実施例に係るメモリ制御のライト処理を説明するための図である。
【図２】図２は、本実施例に係るメモリ制御のリード処理を説明するための図である。
【図３】図３は、メモリ制御装置の構成を示す図である。
【図４Ａ】図４Ａは、従来技術におけるライト処理を説明するための図である。
【図４Ｂ】図４Ｂは、本実施例におけるライト処理を説明するための図である。
【図５Ａ】図５Ａは、データＤ１の分割データＤ１１〜Ｄ１６が各分割ブロックＢ１〜Ｂ４に振り分けられる様子を示す図である。
【図５Ｂ】図５Ｂは、データＤ２の分割データＤ２１〜Ｄ２３７が各分割ブロックＢ１〜Ｂ４に振り分けられる様子を示す図である。
【図５Ｃ】図５Ｃは、データＤ３の分割データＤ３１〜Ｄ３４が各分割ブロックＢ１〜Ｂ４に振り分けられる様子を示す図である。
【図６Ａ】図６Ａは、リードアドレスの算出方法を説明するための条件の一例を示す図である。
【図６Ｂ】図６Ｂは、リードアドレスの算出方法を説明するためのリード要求の一例を示す図である。
【図７】図７は、リード要求振分部により、分割ブロック毎に算出されたリードアドレスの一例を示す図である。
【図８】図８は、リードアドレスがリード要求バッファに格納された様子を示す図である。
【図９】図９は、リードデータの並び替え方法を説明するためのリード要求の一例を示す図である。
【図１０】図１０は、リードデータ振分部が、リードデータバッファから並び替えバッファにリードデータを取り込む処理を説明するための図である。
【図１１】図１１は、リードデータ振分部の実行する並び替え処理を説明するための図である。
【図１２】図１２は、メモリ制御装置の実行するライト処理を説明するためのフローチャートである。
【図１３Ａ】図１３Ａは、データの各分割データがメモリ内にライトされた様子を示す図である。
【図１３Ｂ】図１３Ｂは、データＩＤ、データ長、先頭ブロックＩＤがデータ管理部に格納された様子を示す図である。
【図１４】図１４は、メモリ制御装置の実行するリード処理を説明するためのフローチャートである。
【図１５】図１５は、データの各分割データがメモリからリードされた様子を示す図である。
【図１６】図１６は、リードデータバッファから並び替えバッファへリードデータが振り分けられる様子を示す図である。
【図１７】図１７は、データの出力時に、各分割データが、セレクタにより並び替えられる様子を示す図である。
【図１８】図１８は、本実施例に係るメモリ制御の効果を従来技術と対比して説明するための図である。
【図１９】図１９は、変形例１に係るリード・ライトの競合回避処理を説明するための図である。
【発明を実施するための形態】
【００１０】
以下に、本願の開示するメモリ制御装置、及びメモリ制御方法の実施例を、図面を参照しながら詳細に説明する。なお、以下の実施例により本願の開示するメモリ制御装置、及びメモリ制御方法が限定されるものではない。
【００１１】
まず、図１、図２を参照し、本実施例に係るメモリ制御の概要を説明する。図１は、本実施例に係るメモリ制御のライト処理を説明するための図である。図１に示す様に、バス幅Ｂは、４つの分割ブロックＢ１〜Ｂ４に分割され、各分割ブロックＢ１〜Ｂ４は、後述する４つのコントローラにより個別に制御される。ライト（書込み）処理では、ライト対象のデータＤ１〜Ｄ４は、バス方向（図１の縦方向）に４分割された後、各分割ブロックＢ１〜Ｂ４に対して均等に振り分けられる。例えば、データＤ１の振り分け後に余ったブロック（例えば、余剰ブロックＥ１）には、次のライトデータであるデータＤ２が振り分けられる。また、データＤ２の振り分け後に余ったブロック（例えば、余剰ブロックＥ２）には、次のライトデータであるデータＤ３が振り分けられる。更に、データＤ３の振り分け後に余ったブロック（例えば、余剰ブロックＥ３）には、次のライトデータであるデータＤ３が振り分けられる。なお、各分割ブロックＢ１〜Ｂ４に生じる余剰領域Ｆ１〜Ｆ４は無効領域となる。この様に、本実施例に係るメモリ制御では、メモリ制御装置は、異なるデータＤ１〜Ｄ４を、分割ブロックＢ１〜Ｂ４単位で詰めてライト処理するため、限られたバス幅を有効に活用することができる。その結果、伝送帯域の損失が抑制される。
【００１２】
上述した様に、メモリ制御装置は、各データＤ１〜Ｄ４を分割した後、各分割ブロックＢ１〜Ｂ４に振り分けてライトするため、ライト処理時に振り分けたブロックと同一のブロックに対してリード処理を実行することで、データを詰めた状態でも、リードが可能となる。また、メモリ制御装置は、分割ブロックＢ１〜Ｂ４毎に、個別のリード制御を行うことで、分割ブロックＢ１〜Ｂ４毎に異なるデータ（例えば、データＤ１とデータＤ２）が格納されている場合でも、同時並行的なリード処理の実行が可能となる。その結果、上記無効領域が減少する。
【００１３】
詳細については後述するが、本実施例では、ライトされた各データＤ１〜Ｄ４は、データＩＤ、データの格納場所を示す情報（ライトポインタ）、データ長、データの先頭となるブロックＩＤ、及び上記ライトポインタが示すデータ部分（タイプ）の各情報により管理される。メモリ制御装置は、ライト処理時に、制御対象のメモリ２０とは別のメモリに上記各情報を格納させておき、リード処理時に、リード対象のデータに対応する上記各情報を取得することで、リード処理に用いるアドレスを算出する。
【００１４】
上記各情報について詳細に説明する。データＩＤは、データを識別する情報（例えば、番号）である。ライトポインタは、データがライトされたポインタを示す。ポインタは、バス幅（６４バイト）とは異なる所定容量（例えば、５１２バイト）を有するメモリ空間である。メモリ制御装置は、ポインタ単位でデータの管理を行い、１ポインタには、複数のメモリアドレスが対応する。メモリ制御装置は、１つのポインタの容量（例えば、５１２バイト）を超えるデータをメモリにライトする場合、必要に応じた数の別のポインタを割り当てることもできる。
【００１５】
データ長は、ライト対象のデータ（ライトデータ）のビット数である。コントローラによるリード回数は、このデータ長を、分割後のバス幅である１２８ビット（１６バイト）で除算することにより算出される。データの先頭となるブロックＩＤ（以下、「先頭ブロックＩＤ」と記す。）は、データの先頭部分が、４つの分割ブロックＢ１〜Ｂ４の内、何れのブロックにあるかを示す。メモリ制御装置は、先頭ブロックＩＤの示すブロックを先頭（データ開始位置）として、各リードデータの位置を特定する。タイプは、対応するライトポインタが示すデータ部分が、データ全体における先頭、途中、最後の内の何れの位置に該当するかを示す情報である。タイプの値は、リードアドレスの算出、データの復元等の内部処理に使用される。
【００１６】
ここで、以下の説明では、分割前のデータと、分割によって得られたデータとを明確に区別するため、分割前のデータを単に「データ」と記載し、分割後のデータを「分割データ」と記載する。例えば、分割前のデータＤ１は、ライト処理に先立ち、４つの分割データＤ１１、Ｄ１２、Ｄ１３、Ｄ１４に分割された後、リード処理において再び結合された結果、データＤ１が復元される。
【００１７】
次に、リード処理は、リード可能となった分割ブロックＢ１〜Ｂ４から順に開始されるため、各データＤ１〜Ｄ４は、必ずしも、先頭部分から順にリードされるとは限らない。換言すれば、分割ブロックＢ１〜Ｂ４間で、読出し順序の逆転が発生し得る。図２は、本実施例に係るメモリ制御のリード処理を説明するための図である。なお、図２では、説明の便宜上、分割ブロック数は２つであり、かつ、リード対象のデータＤ１、Ｄ２は、それぞれ分割データＤ１１〜Ｄ１５、Ｄ２１〜Ｄ２３から構成されるものとする。図２に示す様に、データＤ１の読出しに際し、分割ブロックＢ１、Ｂ２に対するリード処理がそれぞれ３回、２回必要であり、データＤ２の読出しに際し、分割ブロックＢ１、Ｂ２に対するリード処理がそれぞれ２回、１回必要である場合を想定する。この場合、各分割ブロックＢ１、Ｂ２に対する３回目のリードアクセス時に、分割ブロックＢ２は、データＤ２の一部である分割データＤ２２を読み出すこととなる。一方、分割データＤ２１は、各分割ブロックＢ１、Ｂ２に対する４回目のリードアクセス時に読み出されることとなるため、データＤ２において、リード順序の逆転が発生する。そこで、メモリ制御装置は、上記各情報を基に、データＤ２を構成する各分割データＤ２１〜Ｄ２３の位置を算出し、各分割データＤ２１〜Ｄ２３を正しい位置に再配置する処理（並び替え処理）を実行する。
【００１８】
本実施例では、メモリ制御装置１０の適用箇所として、８０ＧｂｐｓイーサネットのＱｏＳ（Quality  of  Service）機能を有するＩＰ伝送装置内を想定するが、これに限らず、他の装置への適用も可能である。メモリ制御装置１０は、ＩＰ伝送装置のキュー管理部と出力インタフェースとの間におけるデータ処理に際し、４本に分割されたメモリバス毎に、個別のリードライト制御を行う。
【００１９】
本願の開示する一実施例に係るメモリ制御装置１０の構成を説明する。図３は、メモリ制御装置１０の構成を示す図である。図３に示す様に、メモリ制御装置１０は、ライト要求振分部１１とリード要求振分部１２とリードデータ振分部１３とデータ管理部１４とコントローラ１５ａ〜１５ｄとを有する。これら各構成部分は、一方向又は双方向に、信号やデータの入出力が可能な様に接続されている。
【００２０】
ライト要求振分部１１は、ライト要求の入力を契機として、ライトデータを分割し、各分割データを、各コントローラ１５ａ〜１５ｄへ振り分ける。ライト要求振分部１１は、ライト要求バッファ１１１を有し、ライト要求バッファ１１１は、ライトデータと、必要なライトポインタ（複数のメモリアドレス）とを格納する。例えば、ライトポインタ＃１０は、複数のメモリアドレス＃１００、＃１０１、＃１０２、…に相当する。
【００２１】
続いて、図４Ａ〜図５Ｃを参照しながら、ライト要求振分部１１の処理を、より詳細に説明する。図４Ａは、従来技術におけるライト処理を説明するための図である。図４Ａに示す様に、ライト対象のデータが３つ存在し、各データＤ１〜Ｄ３のデータ長がそれぞれ８８バイト、５８４バイト、６４バイトである場合、従来技術では、データが分割されずそのままの状態でメモリにライトされる。このため、バス幅Ｂが６４バイトの場合、ライト処理が完了するまでに、１３クロック分の時間を要すると共に、少なくとも８０バイト分（データＤ１に３２バイト＋データＤ２に４８バイト）の無効領域が発生することとなる。
【００２２】
図４Ｂは、本実施例におけるライト処理を説明するための図である。本実施例では、上述した従来技術と異なり、図４Ｂに示す様に、バス幅Ｂ及び各データＤ１〜Ｄ３が４分割される。また、各分割データＤ１１〜Ｄ１６、Ｄ２１〜Ｄ２３７、Ｄ３１〜Ｄ３４は、時間ｔの経過に伴い、バス幅Ｂ方向に詰めた状態で、分割ブロックＢ１〜Ｂ４に順次格納される。このため、バス幅Ｂが６４バイトの場合、ライト処理に掛かる時間が、１１クロック分の時間で済むと共に、無効領域は、４８バイト未満となる。従って、本実施例に係るメモリ制御装置１０によれば、ライト処理における所要時間の短縮と無効領域の減少とが実現される。
【００２３】
図５Ａは、データＤ１の分割データＤ１１〜Ｄ１６が各分割ブロックＢ１〜Ｂ４に振り分けられる様子を示す図である。図５Ａに示す様に、データＤ１はバス幅Ｂ方向に分割され、分割ブロックＢ１〜Ｂ４となった後、待ち時間の最も少ない分割ブロックＢ１から順に、全ての分割ブロックＢ１〜Ｂ４を回る様に振り分けられる（Ｓ１１〜Ｓ１６）。分割データＤ１１〜Ｄ１６の格納先となるライトアドレス＃１００、＃１０１、…は、ライトポインタ＃１０を基に算出された先頭アドレス＃１００を１ずつインクリメントしていくことにより決定される。その結果、データＤ１１、Ｄ１５は、コントローラ１５ａに接続する分割ブロックＢ１に格納され、データＤ１２、Ｄ１６は、コントローラ１５ｂに接続する分割ブロックＢ２に格納される。また、データＤ１３は、コントローラ１５ｃに接続する分割ブロックＢ３に格納され、データＤ１４は、コントローラ１５ｄに接続する分割ブロックＢ４に格納される。なお、図５Ａに示す例では、ライトポインタ＃１０により特定されるデータは、データＤ１の全体であることから、先頭の分割データＤ１１と最後の分割データＤ１６とを含む。このため、ライトされたデータＤ１のタイプとして、「先頭」及び「最後」が設定される。
【００２４】
図５Ｂは、データＤ２の分割データＤ２１〜Ｄ２３７が各分割ブロックＢ１〜Ｂ４に振り分けられる様子を示す図である。本実施例の様に、ライト要求のあったデータＤ１、Ｄ２が連続している場合、後続するデータＤ２の１つ前のデータＤ１の最後の分割データＤ１６をライトする分割ブロックＢ２の次の分割ブロック（分割ブロックＢ３）が、最も待ち時間の少ない分割ブロックとなる。従って、図５Ｂに示す様に、データＤ２の分割データＤ２１〜Ｄ２３７は、分割ブロックＢ３から順に、全ての分割ブロックＢ１〜Ｂ４を回る様に振り分けられる（Ｓ２１〜Ｓ２４）。分割データＤ２１〜Ｄ２３７の格納先となるライトアドレス＃２００、＃２０１、…は、ライトポインタ＃２０を基に算出された先頭アドレス＃２００を１ずつインクリメントしていくことにより決定される。その結果、分割データＤ２１、Ｄ２５、…、Ｄ２３３、Ｄ２３７は、コントローラ１５ｃに接続する分割ブロックＢ３に格納され、データＤ２２、Ｄ２６、…、Ｄ２３４は、コントローラ１５ｄに接続する分割ブロックＢ４に格納される。また、データＤ２３、…、Ｄ２３１、Ｄ２３５は、コントローラ１５ａに接続する分割ブロックＢ１に格納され、データＤ２４、…、Ｄ２３２、Ｄ２３６は、コントローラ１５ｂに接続する分割ブロックＢ２に格納される。
【００２５】
なお、図５Ｂに示す例では、ライトポインタ＃２０により特定されるデータは、データＤ２の前半部分であることから、先頭の分割データＤ２１を含むが、最後の分割データＤ２３７を含まない。このため、ライトされたデータＤ２のタイプ（＃２０）として、「先頭」が設定される。一方、ライトポインタ＃２１により特定されるデータは、データＤ２の後半部分であることから、先頭の分割データＤ２１を含まないが、最後の分割データＤ２３７を含む。このため、ライトされたデータＤ２のタイプ（＃２１）としては、「最後」が設定される。
【００２６】
図５Ｃは、データＤ３の分割データＤ３１〜Ｄ３４が各分割ブロックＢ１〜Ｂ４に振り分けられる様子を示す図である。本実施例の様に、ライト要求のあったデータＤ２、Ｄ３が連続している場合、後続するデータＤ３の１つ前のデータＤ２の最後の分割データＤ２３７をライトする分割ブロックＢ３の次の分割ブロック（分割ブロックＢ４）が、最も待ち時間の少ない分割ブロックとなる。従って、図５Ｃに示す様に、データＤ３の分割データＤ３１〜Ｄ３４は、分割ブロックＢ４から順に、全ての分割ブロックＢ１〜Ｂ４を回る様に振り分けられる（Ｓ３１〜Ｓ３４）。分割データＤ３１〜Ｄ３４の格納先となるライトアドレス＃３００、＃３０１、…は、ライトポインタ＃３０を基に算出された先頭アドレス＃３００を１ずつインクリメントしていくことにより決定される。その結果、分割データＤ３１は、コントローラ１５ｄに接続する分割ブロックＢ４に格納され、データＤ３２は、コントローラ１５ａに接続する分割ブロックＢ１に格納される。また、データＤ３３は、コントローラ１５ｂに接続する分割ブロックＢ２に格納され、データＤ３４は、コントローラ１５ｃに接続する分割ブロックＢ３に格納される。なお、図５Ｃに示す例では、図５Ａと同様に、ライトポインタ＃３０により特定されるデータは、データＤ３の全体であることから、先頭の分割データＤ３１と最後の分割データＤ３４とを含む。このため、ライトされたデータＤ３のタイプとしては、「先頭」及び「最後」が設定される。
【００２７】
上述した様に、ライト要求振分部１１は、分割後のライトデータを、異なる領域（分割ブロックＢ１〜Ｂ４）に書き込むため、従来は異なるクロックタイミングで処理していたライトデータを、同一のタイミングで並列的に処理することができる。また、メモリ制御装置１０は、バス幅Ｂを分割したことで、ブロック毎の最大無効領域が小さくなり、パラレル損失の低減が可能となる。更に、メモリ制御装置１０は、ライト処理が連続して発生した場合に、ライトが行われない分割ブロックが生じない様にすることで、ライト処理間のギャップを小さくすることができる。これにより、実際にライトされている信号中に占める無効領域の割合が減少する。その結果、伝送帯域の低下が回避される。
【００２８】
リード要求振分部１２は、リード要求の入力を契機として、データＤ１〜Ｄ３を、分割ブロックＢ１〜Ｂ４毎に読み出す。具体的には、リード要求振分部１２は、リード要求のあったポインタに基づき、上記各情報（データＩＤ、ライトポインタ、データ長、先頭ブロックＩＤ、及びタイプ）を参照することで、リードすべきデータを特定する。例えば、リード要求振分部１２は、リード要求のあったポインタから、リードデータの先頭アドレスを算出した後、先頭ブロックＩＤ及びデータ長から、何れのアドレスまでのリード処理を実行すべきかを算出する。これらの算出処理は、分割ブロックＢ１〜Ｂ４毎に個別に実行される。これにより、分割データＤ１１〜Ｄ３４の内、リード対象となる分割データの先頭と最後とが、分割ブロック単位で特定される。
【００２９】
続いて、図６Ａ〜図８を参照しながら、リード要求振分部１２の処理について、より詳細に説明する。図６Ａは、リードアドレスの算出方法を説明するための条件の一例を示す図である。説明の前提として、例えば、図６Ａに示す様な条件を設定する。すなわち、以下の説明では、メモリ２０のバス幅Ｂが“５１２ビット（６４バイト）”であり、バスの分割数が“４”であり、１ポインタのサイズ（容量）が“５１２バイト”である場合を想定する。
【００３０】
図６Ｂは、リードアドレスの算出方法を説明するためのリード要求の一例を示す図である。本実施例では、図６Ａに示した条件下において、図６Ｂに示すリード要求が、リード要求振分部１２に入力されたとする。図６Ｂに示す様に、上記リード要求は、データＩＤとして“Ｄ２”を有するデータに対する要求であり、該データは、異なる２つのポインタ＃１０、＃１１により特定される。また、リード対象のデータは、データ長が“５８４バイト”であり、“Ｂ４”を先頭ブロックＩＤとする。
【００３１】
上述した条件の下、リード要求振分部１２に上記リード要求が入力された場合、上述した様に、１ポインタのサイズは“５１２バイト”であり、メモリのバス幅Ｂは“６４バイト”であることから、１ポインタ当たりのメモリアドレス数は、８（＝５１２÷６４）つとなる。この値は、メモリ２０の回路に固有の値である。
【００３２】
まず、ポインタ＃１０に関し、先頭アドレスは、ポインタ×１ポインタ当たりのメモリアドレス数により算出されることから、１０×８より、“８０”と算出される。また、リードＲ１のポインタ＃１０のタイプは“最後”を含まない（図６Ｂ参照）ため、ポインタ＃１０は、全てのアドレス（８アドレス）分、リードされる。従って、ポインタ＃１０に対するリード回数は、８回と算出される。また、先頭ブロックＩＤは“Ｂ４”（図６Ｂ参照）であることから、リード要求振分部１２は、ポインタ＃１０に関し、分割ブロックＢ４から順に、各分割ブロックＢ１〜Ｂ４に対して、均等に８回ずつリードアクセスすればよいこととなる。
【００３３】
同様に、ポインタ＃１１に関し、先頭アドレスは、ポインタ×１ポインタ当たりのメモリアドレス数により算出されることから、１１×８より、“８８”と算出される。また、リードＲ２のポインタ＃１１のタイプは“最後”を含む（図６Ｂ参照）ため、ポインタ＃１１では、ポインタ＃１０と異なり、各分割ブロックＢ１〜Ｂ４でのリード回数が算出されることとなる。以下に算出方法を説明する。
【００３４】
まず、ポインタ＃１１の指定するデータの長さ（データＤ２の残りデータ長）は、「全データ長」ｍｏｄ「１ポインタのサイズ」により算出される。本実施例では、データ長が５８４バイト（図６Ｂ参照）であり、１ポインタのサイズが５１２バイト（図６Ａ参照）である場合を想定していることから、残りデータ長は、５８４÷５１２の余りより、７２バイトと算出される。ポインタ＃１１に対するリード回数は、残りデータ長÷分割後のバス幅より算出されることから、７２÷１６＝４．５より、５回と算出される。また、先頭ブロックＩＤは“Ｂ４”（図６Ｂ参照）であり、バス幅Ｂの分割数は“４”（図６Ａ参照）であることから、各分割ブロックＢ１〜Ｂ４でのリード回数は、それぞれ１回、１回、１回、２回に定まる。従って、リード要求振分部１２は、ポインタ＃１１に関し、分割ブロックＢ４から順に、各分割ブロックＢ１〜Ｂ４に対して、均等に１回ずつリードアクセスした後、分割ブロックＢ４に対してのみ、１回リードアクセスすればよいこととなる。
【００３５】
上述のリード回数を基に、分割ブロックＢ１〜Ｂ４毎のリードアドレスが求められる。図７は、リード要求振分部１２により、分割ブロックＢ１〜Ｂ４毎に算出されたリードアドレスの一例を示す図である。図７に示す様に、ポインタ＃１０に関しては、８つずつのメモリアドレス＃８０〜＃８７が、各分割ブロックＢ１〜Ｂ４に均等に算出されることとなる。また、ポインタ＃１１に関しては、分割ブロックＢ１〜Ｂ３に１つずつのメモリアドレス＃８８が、分割ブロックＢ４に２つのメモリアドレス＃８８、＃８９が算出されることとなる。
【００３６】
リード要求振分部１２は、上記算出結果に従い、算出されたリードアドレス＃８０〜＃８９を、リード要求バッファ１２１内の各分割ブロックＢ１〜Ｂ４に対応する領域に格納させる。図８は、リードアドレスがリード要求バッファ１２１に格納された様子を示す図である。図８に示す様に、リード要求バッファ１２１に格納されるリードアドレスは、分割ブロックＢ１〜Ｂ４毎に詰めて格納される。このため、ライト処理時と同様に、実際にリードされている信号中に占める無効領域の割合が減少する。その結果、伝送帯域の低下が未然に防止される。
【００３７】
リードデータ振分部１３は、リード要求振分部１２から入力されるリードデータを並び替える。すなわち、ライト処理は、常に、各データＤ１〜Ｄ３の先頭の分割データから開始されるのに対し、リード処理では、最初にリード可能となる分割データは、各データＤ１〜Ｄ３の先頭の分割データとは限らず、直前のリード処理によって異なる。本実施例では、リード要求振分部１２は、待ち時間を短縮するため、先頭となる分割データの格納された分割ブロックでなくとも、直ちにリード処理を開始する。従って、リードデータ振分部１３は、リードされた分割データを、分割前の状態に正常に復元するために、必要に応じて、分割データの並び替えを行う。
【００３８】
続いて、図９〜図１１を参照しながら、リードデータ振分部１３の処理について、より詳細に説明する。図９は、リードデータ（分割データ）の並び替え方法を説明するためのリード要求の一例を示す図である。本実施例では、図６Ａに示した条件下において、図９に示すリード要求が、リード要求振分部１２に入力されたとする。図９に示す様に、上記リード要求は、データＩＤ“Ｄ１”、“Ｄ２”、“Ｄ３”により識別される３つのデータＤ１、Ｄ２、Ｄ３に対する要求である。各データＤ１、Ｄ２、Ｄ３はそれぞれ、ポインタ＃１０、＃２０＆＃２１、＃３０により特定される。データＤ１は、“Ｂ２”を先頭ブロックＩＤとするデータ長“８０バイト”のリードデータである。また、データＤ２は、“Ｂ４”を先頭ブロックＩＤとするデータ長“５２８バイト”のリードデータである。更に、データＤ３は、“Ｂ２”を先頭ブロックＩＤとするデータ長“６４バイト”のリードデータである。
【００３９】
リードデータ振分部１３は、リード要求の振分け時にデータ管理部１４に格納された上記各情報（データＩＤ、ライトポインタ、データ長、先頭ブロックＩＤ、及びタイプ）を用いて、先頭の分割データから順に、順次、リード要求バッファ１２１からリードデータバッファ１３１への分割データの読出しを行う。これにより、リードデータ（分割データ）は、分割ブロックＢ１〜Ｂ４毎に、リードデータバッファ１３１に蓄積される。リードデータ振分部１３は、蓄積されたリードデータを、ＦＩＦＯ（First  In  First  Out）の先頭から順に並び替える。
【００４０】
以下、リードデータ（分割データ）の並び替え処理について、より詳細に説明する。図１０は、リードデータ振分部１３が、リードデータバッファ１３１から並び替えバッファ１３２ａ、１３２ｂにリードデータＤ１、Ｄ２を取り込む処理を説明するための図である。まず、リードデータ振分部１３は、リードデータのデータ長から、幾つの分割ブロック分のリード処理が必要であるかを算出する。例えば、リードデータがデータＤ１である場合、データ長は“８０バイト”（図９参照）であることから、リードデータ振分部１３は、分割後のバス幅である１６バイトで８０バイトを除算することで、分割ブロック数“５”を算出する。次に、リードデータ振分部１３は、先頭ブロックＩＤ“Ｂ２”（図９参照）から順に、上記分割ブロック数である５回分のリード処理を実行し、並び替えバッファ１３２ａに分割後のデータＤ１を格納する。
【００４１】
同様の処理は、データＤ２、Ｄ３についても実行される。すなわち、リードデータ振分部１３は、データＤ１の格納された全ての分割ブロックＢ１〜Ｂ４からの読出しを終えると、後続する次データＤ２の読出しを開始するが、このとき、並び替えバッファ１３２を並び替えバッファ１３２ａから並び替えバッファ１３２ｂに切り替える。これにより、並び替え処理に用いられるバッファが、データＤ１、Ｄ２、Ｄ３毎に異なるものとなる。従って、リードデータ振分部１３は、図１０に示す様に、リードデータバッファ１３１内に入り組んで格納されたデータＤ１、Ｄ２、Ｄ３の中から、同一のデータ（例えば、データＤ２）だけを容易に取り出すことができる。
【００４２】
上述した様に、リードデータ振分部１３は、各データＤ１、Ｄ２、Ｄ３を、ＩＤ順に順次、リードデータバッファ１３１から並び替えバッファ１３２に移動させる。なお、移動に際し、リードデータバッファ１３１内が空の場合には、リードデータ振分部１３は、リードデータバッファ１３１に新たなデータが格納されるのを待って、格納された時点でデータの移動を開始する。
【００４３】
次に、データＤ２を例にとり、並び替え処理を説明する。図１１は、リードデータ振分部１３の実行する並び替え処理を説明するための図である。図１１に示す様に、並び替えバッファ１３２ｂにデータＤ２の全てが格納された時点で、リードデータ振分部１３は、各分割データＤ２１〜Ｄ２３３の読出しを開始する。このとき、リードデータ振分部１３は、セレクタ１３３により、先頭ブロックＩＤの分割ブロックＢ４に格納された分割データＤ２１が、データＤ２の先頭となる様に、各分割データＤ２１〜Ｄ２３３を入れ替えた上で、データＤ２を装置外部に出力する。これにより、分割前のデータＤ２と同一の正常なデータの出力が可能となる。
【００４４】
データ管理部１４は、ライト要求振分部１１により振り分けられた分割データＤ１１〜Ｄ３４をメモリ制御装置１０が正常にリードできる様に、ライト処理の際に、上記各情報を格納する。上記各情報は、例えば、各データＤ１〜Ｄ３のデータＩＤ、ライトポインタ、データ長、先頭ブロックＩＤ、及びタイプである。これらの情報は、リード処理時にデータ管理部１４から取得され、例えば、リードすべきメモリアドレスの特定、あるいは、該アドレスが割り当てられた分割ブロックの特定に使用される。
【００４５】
各コントローラ１５ａ〜１５ｄは、メモリ２０を制御するメモリインタフェースである。各コントローラ１５ａ〜１５ｄは、メモリ２０を構成する４組のＤＤＲ（Double  Data  Rate）メモリ２０ａ〜２０ｄと、４本のバスＢ１１〜Ｂ１４を介して、それぞれ接続される。本実施例では、計５１２ビットのバス幅を想定しているので、各コントローラ１５ａ〜１５ｄは、１２８ビットの４本のバスＢ１１〜Ｂ１４を介して、対応する各ＤＤＲメモリ２０ａ〜２０ｄを個別に制御する。
【００４６】
次に、メモリ制御装置１０の動作について、ライト処理とリード処理とに分けて説明する。本動作説明では、上述した構成の説明と同様に、６４バイトのバス幅Ｂを４分割する場合を例示するが、分割数は４でなくてもよい。
【００４７】
まず、ライト処理を説明する。図１２は、メモリ制御装置１０の実行するライト処理を説明するためのフローチャートである。
【００４８】
図１２のＴ１１では、ライト要求振分部１１は、メモリ制御装置１０を搭載するＩＰ伝送装置のキュー管理部から、ライトデータ及び上記各情報（例えば、ライトポインタ、データ長等）を入力する。Ｔ１２では、ライト要求振分部１１は、Ｔ１１で入力されたライトデータを、コントローラ１５ａ〜１５ｄの数分に分割する。これにより、ライトデータは、分割ブロックＢ１〜Ｂ４の幅である１６バイトずつの分割データに分割される。
【００４９】
Ｔ１３では、ライト要求振分部１１は、各コントローラ１５ａ〜１５ｄ内において空いている分割ブロックの内、最も待ち時間の少ない分割ブロックを先頭として、入力されたライト要求を、各コントローラ１５ａ〜１５ｄに転送する。このとき、ライト要求振分部１１は、コントローラ１５ａ〜１５ｄの内、最も待ち時間の少ない分割ブロックを有するコントローラから順番に、各分割データのライト要求を転送する。Ｔ１４では、各コントローラ１５ａ〜１５ｄは、ライト要求振分部１１からの上記ライト要求に従い、メモリ２０内の対応するＤＤＲメモリ２０ａ〜２０ｄに、各分割データをライトする。
【００５０】
図１３Ａは、データＤ１〜Ｄ４の各分割データがメモリ２０内にライトされた様子を示す図である。図１３Ａに示す様に、各分割データは、各データＤ１〜Ｄ４における先頭の分割データから順に、隙間（無効領域）が極力生じない様に詰め込まれた状態で、メモリ２０にライトされる。これにより、各データＤ１〜Ｄ４間の無効領域は、最大でも、分割後のバス幅である１６バイト（１２８ビット）から１ビットを引いた１２７ビットとなる。
【００５１】
図１３Ａにおいて、データ伝送効率は、下記の数式（１）より、０．９４４と算出される。
【００５２】
４０８バイト÷（１６バイト×２７）＝０．９４４・・・（１）
【００５３】
上記数式（１）より、ライト帯域が改善していることがわかるが、メモリ制御装置１０は、分割数を更に増やして分割ブロック幅を小さくすることで、ライト帯域をより広くすることができる。従って、分割数は４に限らず、回路規模が過度に増大しない範囲で、極力大きい値であることが望ましい。
【００５４】
Ｔ１５では、ライト要求振分部１１は、リード時に分割データを正常に組立て可能な様に、分割データ復元用の情報として、上記各情報（例えば、ライトポインタ、データ長、先頭ブロックＩＤ、タイプ等）を、データ管理部１４に事前に格納させる。図１３Ｂは、データＩＤ、データ長、先頭ブロックＩＤがデータ管理部１４に格納された様子を示す図である。図１３Ｂに示す様に、例えば、データＤ１の「データ長」として“８０”バイトが、「先頭ブロックＩＤ」として“Ｂ１”が、それぞれデータＩＤ“Ｄ１”と対応付けて格納されている。同様に、例えば、データＤ４の「データ長」として“７２”バイトが、「先頭ブロックＩＤ」として“Ｂ３”が、それぞれデータＩＤ“Ｄ４”と対応付けて格納されている。
【００５５】
次に、リード処理を説明する。図１４は、メモリ制御装置１０の実行するリード処理を説明するためのフローチャートである。
【００５６】
リード要求振分部１２は、リード要求としてリードポインタの入力をキュー管理部から受けると（Ｔ２１）、上記リードポインタを基に、Ｔ１５で予め格納された上記各情報（例えば、先頭ブロックＩＤ、データ長、タイプ等）を、データ管理部１４から取得する（Ｔ２２）。
【００５７】
Ｔ２３では、リード要求振分部１２は、Ｔ２２で取得された先頭ブロックＩＤ及びデータ長に基づき、Ｔ２１にて入力された各リード要求を、各コントローラ１５ａ〜１５ｄに振り分ける。次に、リード要求振分部１２は、Ｔ２２で取得された先頭ブロックＩＤ、データ長、及びタイプに基づき、リードアドレスを、各コントローラ１５ａ〜１５ｄ毎に算出する（Ｔ２４）。Ｔ２５では、リード要求振分部１２は、Ｔ２４で算出されたリードアドレスを参照し、該リードアドレスに対応する各分割データを、各コントローラ１５ａ〜１５ｄを介してメモリ２０からリードする。
【００５８】
ここで、データＤ３、Ｄ１、Ｄ４、Ｄ２の順にリード要求が入力された場合を例にとり、リード処理について、より詳細に説明する。図１５は、データＤ１〜Ｄ４の各分割データがメモリ２０からリードされた様子を示す図である。図１５に示す様に、各分割データは、各データＤ３、Ｄ１、Ｄ４、Ｄ２における先頭の分割データから順に、隙間（無効領域）が極力生じない様に詰め込まれた状態で、メモリ２０からリードされる。これにより、各データＤ３、Ｄ１、Ｄ４、Ｄ２間の無効領域は、最大でも、分割後のバス幅である１６バイト（１２８ビット）から１ビットを引いた１２７ビットとなる。換言すれば、各分割ブロックＢ１〜Ｂ４の幅以上の無効領域が発生することはない。
【００５９】
従って、図１５においても、図１３Ａと同様に、データ伝送効率は、下記の数式（２）により、０．９４４と算出される。
【００６０】
４０８バイト÷（１６バイト×２７）＝０．９４４・・・（２）
【００６１】
上記数式（２）より、リード帯域が改善していることがわかるが、メモリ制御装置１０は、分割数を更に増やして分割ブロック幅を小さくすることで、リード帯域をより広くすることができる。従って、分割数は４に限らず、回路規模が過度に増大しない範囲で、極力大きい値であることが望ましい。
【００６２】
なお、Ｔ２５において好適には、リード要求振分部１２は、リード時に、データＩＤに対応する各情報を取得する際、各データＤ１〜Ｄ４に対し、フレーム番号を付与する。フレーム番号は、データＩＤを、データが実際に読み出される順に振り直した番号である。リード要求振分部１２は、このフレーム番号に従って昇順に、メモリ２０から各データＤ１〜Ｄ４を取り出す。これにより、メモリ制御装置１０は、入力されたリード要求に基づく正しい順序で、各データＤ１〜Ｄ４を外部装置宛に出力することができる。
【００６３】
Ｔ２６では、リードデータ振分部１３は、Ｔ２５でリードされたリードデータを、各分割データ単位で、先頭ブロックＩＤと共に、並び替えバッファ１３２に格納させる。格納に際し、リードデータ振分部１３は、リード対象のリードデータが変わる度に、図１０に示した様に、並び替えバッファ１３２を、次のデータ用の並び替えバッファ１３２にずらす制御を行う（Ｔ２７）。
【００６４】
図１６は、リードデータバッファ１３１から並び替えバッファ１３２へリードデータＤ１〜Ｄ４が振り分けられる様子を示す図である。図１６に示す様に、リードデータ振分部１３は、上記各情報の内、先頭ブロックＩＤとデータ長とから、復元すべきデータの個数（本動作説明では４つ）を算出する。その後、リードデータ振分部１３は、上記フレーム番号Ｇ１〜Ｇ４に基づき、各リードデータＤ１〜Ｄ４に対応する並び替えバッファ１３２ａ〜１３２ｄに、リードデータＤ１〜Ｄ４を移動する。移動は、分割データ単位で独立して行われる。
【００６５】
Ｔ２８では、リードデータ振分部１３は、各並び替えバッファ１３２ｃ、１３２ａ、１３２ｄ、１３２ｂから、リードデータＤ３、Ｄ１、Ｄ４、Ｄ２を順次読み出す。読出しは、分割データ単位で独立して行われる。Ｔ２９では、リードデータ振分部１３は、Ｔ１５でデータ管理部１４に格納された先頭ブロックＩＤを参照し、各リードデータＤ１〜Ｄ４の先頭の分割データが、バスの先頭に位置する分割ブロックＢ１にくる様に、各分割データを並び替えて出力する。これにより、複数の分割データが結合され、元のデータＤ１〜Ｄ４が復元される。
【００６６】
また、リード処理についても、図１６に示す様に、隙間（無効領域）が極力小さくなる様に、分割ブロックＢ１〜Ｂ４毎に詰めた状態で実行される。その結果、各リードデータＤ１〜Ｄ４の分割データは、一旦不連続な状態になるが、リードデータ振分部１３は、復元用情報（例えば、データＩＤ、データ長、先頭ブロックＩＤ、フレーム番号）を用いて、各データＤ１〜Ｄ４の区別と各分割データの並び替えとを可能とする。
【００６７】
なお、リードデータ振分部１３は、各データＤ１〜Ｄ４をバッファ間で移動させる際、各データＤ１〜Ｄ４に付与されたフレーム番号に従い、フレーム番号の昇順に移動させるので、データ出力順序がリード要求の順序と異なるという不都合は回避される。
【００６８】
リードデータ振分部１３は、並び替えバッファ１３２から各分割データをリードして出力するが、１フレーム当たりのリード回数は、データ長をバス幅Ｂで除算した値を繰り上げることで、算出される。従って、例えば、データＤ３の場合、８８バイト／６４バイト＝１．３７５であることから、リード回数は２回となる。同様に、例えば、データＤ２の場合、１６８バイト／６４バイト＝２．６２５であることから、リード回数は３回という様に、リード回数は、各リードデータに応じて算出される。
【００６９】
リードデータ振分部１３は、フレーム番号をインクリメントしながら、データＤ３、Ｄ１、Ｄ４、Ｄ２の順に出力していくが、出力に先立ち、先頭ブロックＩＤに基づき、先頭の分割ブロックが最上位にくる様に、各分割データの並び替えを行う。例えば、出力データがデータＤ３であれば、リードデータ振分部１３は、データＤ３の各分割データを並び替えることなくそのまま出力する（図１５、図１６参照）。一方、例えば、出力データがデータＤ４の場合には、リードデータ振分部１３は、データＤ４の各分割データを、分割ブロックＢ３、Ｂ４、Ｂ１、Ｂ２の順に並び替えた上で出力する（図１５、図１６参照）。
【００７０】
以下、データＤ４の出力を例にとり、より詳細に説明する。図１７は、データＤ４の出力時に、各分割データＤ４１〜Ｄ４４が、セレクタ１３ａ−１〜１３ａ−４により並び替えられる様子を示す図である。図１７に示す様に、リードデータ振分部１３は、出力対象の分割データの位置＋（先頭の分割ブロックの位置−１）により決定される位置番号に、分割データを割り当てる。なお、上記位置番号が、４を超えた場合には、１に戻る。例えば、先頭の分割ブロックの位置が３番目の分割ブロックＢ３の場合、分割データＤ４３の位置番号は、１＋（３−１）より“３”に決定される。従って、分割データＤ４３は、セレクタ１３ａ−１により、バスの上から３番目の位置に配置される。また、分割データＤ４４は、２＋（３−１）より位置番号が“４”に決定されるため、セレクタ１３ａ−２により、上から４番目の位置に配置される。同様に、分割データＤ４１、Ｄ４５は、３＋（３−１）より位置番号が“１”に決定されるため、セレクタ１３ａ−３により、最上位に配置される。そして、分割データＤ４２は、４＋（３−１）より位置番号が“２”に決定されるため、セレクタ１３ａ−４により、上から２番目の位置に配置される。これにより、各リードデータＤ１〜Ｄ４の先頭に位置する分割データが、常にバスの先頭（最上位）に配置されることとなる。従って、メモリ制御装置１０は、各リードデータＤ１〜Ｄ４を、ライト時と同じ状態でリードすることができる。
【００７１】
以上説明した様に、メモリ制御装置１０は、ライト要求振分部１１と複数のコントローラ１５ａ〜１５ｄとを有する。ライト要求振分部１１は、メモリ２０への書込み対象のデータＤ１をバス幅Ｂ方向に分割し、該分割によって得られた複数の分割データＤ１１〜Ｄ１６を、複数のバスＢ１１〜Ｂ１４に振り分けて出力する。複数のコントローラ１５ａ〜１５ｄは、ライト要求振分部１１により出力された上記複数の分割データＤ１１〜Ｄ１６を、各バス毎にバスの間断無く詰めた状態で（図１参照）、複数のバスＢ１１〜Ｂ１４を介してメモリ２０に書き込む。
【００７２】
メモリ制御装置１０において好ましくは、データ管理部１４は、複数の分割データＤ１１〜Ｄ１６が出力される際、メモリ２０内において各分割データＤ１１〜Ｄ１６が書き込まれる位置（例えば、先頭ブロックＩＤ、データ長、ライトポインタ）を取得する。また、リード要求振分部１２は、データ管理部１４により取得された上記位置を参照し、複数のコントローラ１５ａ〜１５ｄによりメモリ２９に書き込まれた複数の分割データＤ１１〜Ｄ１６を、連続して読み出す。
【００７３】
メモリ制御装置１０において好ましくは、リードデータ振分部１３は、リード要求振分部１２により読み出された複数の分割データＤ１１〜Ｄ１６が、ライト要求振分部１１により分割される前の正常な順序となる様に、複数の分割データＤ１１〜Ｄ１６を並び替えて出力する。
【００７４】
換言すれば、メモリ制御装置１０は、分割により得られたデータを個別に読み書きすることで、無効領域（パラレル損失）を極力小さくすると共に、バスに対するデータの配置効率を向上させる。これにより、メモリ制御装置１０は、データ管理方法を複雑化することなく、伝送帯域の減少を抑制する。従って、ＩＰ伝送装置は、メモリ自体の動作周波数を上げて回路を高速化しなくとも、広帯域なデータ伝送を行うことができる。その結果、効率的なメモリ制御が実現可能となる。
【００７５】
図１８を参照し、メモリ制御装置１０によるメモリ制御の効果を詳細に説明する。上述した様に、メモリ制御装置１０は、１つのコントローラで処理するデータ幅が１６バイトであり、メモリ２０のデータ幅である６４バイトよりも狭いため、異なるデータＤ１〜Ｄ３を、従来よりも詰めた状態で処理することができる。例えば、データ用のバス幅Ｂが６４バイトであり、２００ＭＨｚのクロック周波数で動作する回路を想定する。この場合、６５バイト長のデータが連続してメモリ制御装置１０に入力した時の伝送帯域は、それぞれ以下の様に算出される。
【００７６】
まず、従来技術に係るメモリ制御装置は、１つのデータを６４バイト単位で処理するため、データの転送効率は、６５バイト／（６４バイト×２）＝０．５１となる。従って、伝送帯域は、下記の数式（３）より、５２．２Ｇｂｐｓと算出される。
【００７７】
５１２ビット×２００ＭＨｚ×０．５１＝５２．２Ｇｂｐｓ・・・（３）
【００７８】
これに対し、本実施例に係るメモリ制御装置１０は、１つのデータを４等分して１６バイト単位で処理するため、データの転送効率は、６５バイト／（１６バイト×５）＝０．８１となる。従って、伝送帯域は、下記の数式（４）より、８２．９Ｇｂｐｓと算出される。
【００７９】
５１２ビット×２００ＭＨｚ×０．８１＝８２．９Ｇｂｐｓ・・・（４）
【００８０】
この様に、本実施例では、従来技術と比較して、上記想定下において、伝送帯域が、約３０Ｇｂｐｓ程度向上することとなる。６５バイト以外のデータ長においても、同様の効果が得られる。図１８は、本実施例に係るメモリ制御の効果を従来技術と対比して説明するための図である。図１８では、横軸に、データ長（単位はバイト）が規定され、縦軸に、伝送帯域（単位はＧｂｐｓ）が規定されている。図１８に示す様に、データ長が小さい程、換言すれば短いデータ程、無効領域の発生に起因するパラレル損失の影響を受け易いため、より大きな効果が得られる。本実施例では、特に、２００バイト以下のデータ長において、帯域低下の改善が顕著である。なお、図１８に示す伝送帯域の値は、理論値であり、メモリアクセスに伴って発生する他の損失（例えば、リード・ライトの切替え損失、リフレッシュによる損失等）の影響は考慮されていない。
【００８１】
（変形例１）
メモリ制御装置１０は、以下に説明する変形態様を採ることもできる。図１９は、変形例１に係るリード・ライトの競合回避処理を説明するための図である。変形例１では、メモリ２０は、２つのメモリグループ２１、２２に分割される。メモリ制御装置１０は、２つのメモリグループ２１、２２をリード用とライト用とに分けて制御することで、リードデータとライトデータとの競合による待ち合わせを回避する。
【００８２】
すなわち、メモリ１０は、複数のメモリグループ２１、２２を内部に有する。メモリ制御装置１０のライト要求振分部１１は、複数の分割データＤ１１〜Ｄ１６に対する書込み要求と読出し要求とが同時に発生した場合、上記読出し要求に応じて分割データ（例えば、分割データＤ１１〜Ｄ１３）が読み出されたメモリ領域とは異なるメモリ領域に対し、上記書込み要求に応じた書込みを行うことを、複数のコントローラ１５ａ〜１５ｂに指示する。
【００８３】
より具体的には、メモリ制御装置１０のリード要求振分部１２は、リード要求とライト要求とが同時に発生していない場合には、リード要求のあったリードデータを、該データの格納されているメモリグループから読み出す。また、メモリ制御装置１０のライト要求振分部１１は、ライト要求のあったライトデータを、該要求が入力された時点でライト用セレクタ１１ａが選択しているメモリグループに書き込む。これに対して、リード要求とライト要求とが同時に発生した場合、リード要求振分部１２は、リードデータに関しては、非同時発生時と同様に、リード用セレクタ１３ａにより、リード対象のデータを格納したメモリグループから読み出す。一方、ライトデータについては、ライト要求振分部１１は、メモリグループ２１、２２の内、リード用に選択されているメモリグループとは反対のメモリグループを選択し、該メモリグループに対し、ライト対象のデータを書き込む。これにより、ライト処理は、常に、リード処理が行われていないメモリグループに対して実行されることとなる。その結果、１つのメモリグループ内におけるリード処理とライト処理の同時発生（競合）が未然に防止される。
【００８４】
伝送帯域が低下する要因としては、上述したデータ間における無効領域の発生以外に、上記待ち合わせの発生があるが、変形例１に係るメモリ制御装置１０によれば、何れの要因も解消するため、伝送帯域の更なる向上が可能となる。
【００８５】
なお、上記実施例では、バス幅Ｂの分割数を４分割としたが、これに限らず、複数であればよい。但し、分割数が多過ぎると、メモリ制御装置に搭載すべきコントローラの数が増加し、回路規模が大きくなる、あるいは、アドレス制御用の回線が増加するといった問題が懸念される。従って、かかる問題が生じない程度の分割数（例えば、４〜８分割程度）であることが望ましい。
【００８６】
また、上記実施例では、メモリ制御装置１０は、合計５１２ビットのバス幅を均等に４分割したため、分割データ長も、分割後の各バス幅に合わせて、固定長であるものとした。しかしながら、分割後の各バス幅がバス毎に異なる場合には、分割データ長も、バス幅に合わせて異なる（例えば、１２８ビットと２５６ビット）ものとしてもよい。
【００８７】
更に、上記実施例では、メモリ制御装置１０とメモリ２０とを接続するバスは、物理的に複数存在（例えば、４本）するものとしたが、メモリ制御装置１０は、物理的には１本のバスを複数に分割して、論理的に複数のバスを形成するものとしてもよい。
【００８８】
また、メモリ制御装置１０の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は、図示のものに限らず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することもできる。例えば、メモリ制御装置１０のリード要求振分部１２とリードデータ振分部１３、あるいは、ライト要求振分部１１とリード要求振分部１２をそれぞれ１つの構成要素として統合してもよい。また、データ管理用のメモリと、要求バッファ用のメモリとを共通化してもよい。反対に、データ管理部１４に関し、ライトデータを管理する部分と、リードデータを管理する部分とに分散してもよい。更に、メモリ２０を、ネットワークやケーブル経由でメモリ制御装置１０と接続する様にしてもよい。同様に、データ管理部１４は、メモリ制御装置１０の外部装置として実装されるものとしてもよい。
【符号の説明】
【００８９】
１０  メモリ制御装置
１１  ライト要求振分部
１１ａ  ライト用セレクタ
１２  リード要求振分部
１３  リードデータ振分部
１３ａ、１３ａ−１、１３ａ−２、１３ａ−３、１３ａ−４  リード用セレクタ
１４  データ管理部
１５ａ、１５ｂ、１５ｃ、１５ｄ  コントローラ
２０ａ、２０ｂ、２０ｃ、２０ｄ、２１ａ、２１ｂ、２１ｃ、２１ｄ、２２ａ、２２ｂ、２２ｃ、２２ｄ  ＤＤＲメモリ
２１、２２  メモリグループ
１１１  ライト要求バッファ
１２１  リード要求バッファ
１３１  リードデータバッファ
１３２  並び替えバッファ
１３２ａ  データＤ１用並び替えバッファ
１３２ｂ  データＤ２用並び替えバッファ
１３２ｃ  データＤ３用並び替えバッファ
１３２ｄ  データＤ４用並び替えバッファ
１３３  セレクタ
Ｂ  バス幅
Ｂ１、Ｂ２、Ｂ３、Ｂ４  分割ブロック
Ｂ１１、Ｂ１２、Ｂ１３、Ｂ１４  バス
Ｄ１、Ｄ２、Ｄ３、Ｄ４  データ
Ｄ１１〜Ｄ１６、Ｄ２１〜Ｄ２３７、Ｄ３１〜Ｄ３４、Ｄ４１〜Ｄ４５  分割データ
Ｅ１、Ｅ２、Ｅ３  余剰ブロック
Ｆ１、Ｆ２、Ｆ３、Ｆ４  余剰領域
Ｇ１、Ｇ２、Ｇ３、Ｇ４  フレーム
Ｈ  １フレーム当たりの最大領域
Ｒ１、Ｒ２  リード
ｔ  時間
＃１０、＃１１、＃２０、＃２１、＃３０、＃８０〜＃８９、＃１００、＃１０１、＃２００〜＃２０９、＃３００  ライトポインタ
【図１】
2014194672.tif 000003
【図２】
2014194672.tif 000004
【図３】
2014194672.tif 000005
【図４Ａ】
2014194672.tif 000006
【図４Ｂ】
2014194672.tif 000007
【図５Ａ】
2014194672.tif 000008
【図５Ｂ】
2014194672.tif 000009
【図５Ｃ】
2014194672.tif 000010
【図６Ａ】
2014194672.tif 000011
【図６Ｂ】
2014194672.tif 000012
【図７】
2014194672.tif 000013
【図８】
2014194672.tif 000014
【図９】
2014194672.tif 000015
【図１０】
2014194672.tif 000016
【図１１】
2014194672.tif 000017
【図１２】
2014194672.tif 000018
【図１３Ａ】
2014194672.tif 000019
【図１３Ｂ】
2014194672.tif 000020
【図１４】
2014194672.tif 000021
【図１５】
2014194672.tif 000022
【図１６】
2014194672.tif 000023
【図１７】
2014194672.tif 000024
【図１８】
2014194672.tif 000025
【図１９】
2014194672.tif 000026