JP2014194672A - メモリ制御装置、及びメモリ制御方法 - Google Patents

メモリ制御装置、及びメモリ制御方法 Download PDF

Info

Publication number
JP2014194672A
JP2014194672A JP2013070691A JP2013070691A JP2014194672A JP 2014194672 A JP2014194672 A JP 2014194672A JP 2013070691 A JP2013070691 A JP 2013070691A JP 2013070691 A JP2013070691 A JP 2013070691A JP 2014194672 A JP2014194672 A JP 2014194672A
Authority
JP
Japan
Prior art keywords
data
read
divided
memory
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013070691A
Other languages
English (en)
Inventor
Takuya Ikeda
卓哉 池田
Hiroaki Kubo
浩明 久保
Naoyuki Iwasaki
尚之 岩崎
Yoshiya Sugimoto
佳也 杉本
Motoshi Hamasaki
元司 濱▲崎▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013070691A priority Critical patent/JP2014194672A/ja
Priority to US14/179,033 priority patent/US20140297972A1/en
Publication of JP2014194672A publication Critical patent/JP2014194672A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management

Abstract

【課題】伝送帯域を向上させることである。
【解決手段】メモリ制御装置10は、ライト要求振分部11とコントローラ15a〜15dとを有する。ライト要求振分部11は、メモリ20への書込み対象のデータを分割し、該分割によって得られた複数の分割データを、複数のバスに振り分けて出力する。コントローラ15a〜15dは、ライト要求振分部11により出力された上記複数の分割データを、各バス毎に詰めた状態で、上記複数のバスを介してメモリ20に書き込む。
【選択図】図3

Description

本発明は、メモリ制御装置、及びメモリ制御方法に関する。
近年、IP(Internet Protocol)によるパケット等の伝送装置では、ネットワークの広帯域化に伴い、FPGA(Field Programmable Gate Array)の対応可能な伝送帯域も増大しつつある。例えば、伝送装置が、イーサネット(登録商標)において、80Gbps程度の高い伝送性能を発揮するためには、FPGAの伝送帯域の増大に合わせて、メモリのバス幅も大きくすることとなる。ところが、伝送装置は、受信された各データを、メモリのバス幅で分割していたため、広帯域化によるバス幅の増大に伴い、メモリ内に無効領域が大量に発生してしまう。具体的には、伝送装置が、65バイト(520ビット)のデータを伝送する場合、バス幅が256ビットであれば、248(=256−8)ビット分の無効領域で済むが、バス幅が512ビットである場合には、504(=512−8)ビットもの無効領域が発生することとなる。
この様な無効領域の発生は、メモリの実効伝送帯域の減少を招き、ひいてはメモリ容量の不足からフレームロスの要因となることがある。フレームロスは、伝送装置が、高速かつ高品質な伝送を行う上で、大きな問題となる。すなわち、伝送装置において、メモリのバス幅が増大した場合、最大の伝送性能は向上するものの、無効領域も増加し易くなるため、伝送装置が、全てのデータ長(例えば、64〜16Kバイト)に対して、高い伝送性能を発揮することはできなかった。かかる問題点に鑑み、伝送装置が、メモリにデータをライトする際、上記無効領域が生じない様に、隙間を空けずに、複数のデータをメモリに格納していく方法もある。
特開2003−288268号公報 国際公開第2009/116115号
しかしながら、上述の方法では、データの先頭位置がビット単位で変化すること、あるいは、データのライト時に、格納済みの他のデータの消去を回避する制御を行うこと等に起因し、処理が複雑になるという問題点が懸念される。更に、各データは、ライトされた順にリードされるとは限らないため、伝送装置は、あるデータをリードする際、前後に格納されている他のデータまでリードしてしまうことがあり、その結果、リード時の伝送帯域が低下する可能性がある。メモリの実効伝送帯域を向上させる方法としては、上述したバス幅の拡大以外にも、メモリ自体の動作周波数を増加させる方法があるが、FPGAの対応可能な周波数には限界があるため、この方法では、伝送帯域の大幅な向上を望むことはできない。
開示の技術は、上記に鑑みてなされたものであって、伝送帯域を向上させることのできるメモリ制御装置、及びメモリ制御方法を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本願の開示するメモリ制御装置は、一つの態様において、振分部と複数の制御部とを有する。前記振分部は、メモリへの書込み対象のデータを分割し、該分割によって得られた複数の分割データを、複数のバスに振り分けて出力する。前記複数の制御部は、前記振分部により出力された前記複数の分割データを、各バス毎に詰めた状態で、前記複数のバスを介して前記メモリに書き込む。
本願の開示するメモリ制御装置の一つの態様によれば、伝送帯域を向上させることができる。
図1は、本実施例に係るメモリ制御のライト処理を説明するための図である。 図2は、本実施例に係るメモリ制御のリード処理を説明するための図である。 図3は、メモリ制御装置の構成を示す図である。 図4Aは、従来技術におけるライト処理を説明するための図である。 図4Bは、本実施例におけるライト処理を説明するための図である。 図5Aは、データD1の分割データD11〜D16が各分割ブロックB1〜B4に振り分けられる様子を示す図である。 図5Bは、データD2の分割データD21〜D237が各分割ブロックB1〜B4に振り分けられる様子を示す図である。 図5Cは、データD3の分割データD31〜D34が各分割ブロックB1〜B4に振り分けられる様子を示す図である。 図6Aは、リードアドレスの算出方法を説明するための条件の一例を示す図である。 図6Bは、リードアドレスの算出方法を説明するためのリード要求の一例を示す図である。 図7は、リード要求振分部により、分割ブロック毎に算出されたリードアドレスの一例を示す図である。 図8は、リードアドレスがリード要求バッファに格納された様子を示す図である。 図9は、リードデータの並び替え方法を説明するためのリード要求の一例を示す図である。 図10は、リードデータ振分部が、リードデータバッファから並び替えバッファにリードデータを取り込む処理を説明するための図である。 図11は、リードデータ振分部の実行する並び替え処理を説明するための図である。 図12は、メモリ制御装置の実行するライト処理を説明するためのフローチャートである。 図13Aは、データの各分割データがメモリ内にライトされた様子を示す図である。 図13Bは、データID、データ長、先頭ブロックIDがデータ管理部に格納された様子を示す図である。 図14は、メモリ制御装置の実行するリード処理を説明するためのフローチャートである。 図15は、データの各分割データがメモリからリードされた様子を示す図である。 図16は、リードデータバッファから並び替えバッファへリードデータが振り分けられる様子を示す図である。 図17は、データの出力時に、各分割データが、セレクタにより並び替えられる様子を示す図である。 図18は、本実施例に係るメモリ制御の効果を従来技術と対比して説明するための図である。 図19は、変形例1に係るリード・ライトの競合回避処理を説明するための図である。
以下に、本願の開示するメモリ制御装置、及びメモリ制御方法の実施例を、図面を参照しながら詳細に説明する。なお、以下の実施例により本願の開示するメモリ制御装置、及びメモリ制御方法が限定されるものではない。
まず、図1、図2を参照し、本実施例に係るメモリ制御の概要を説明する。図1は、本実施例に係るメモリ制御のライト処理を説明するための図である。図1に示す様に、バス幅Bは、4つの分割ブロックB1〜B4に分割され、各分割ブロックB1〜B4は、後述する4つのコントローラにより個別に制御される。ライト(書込み)処理では、ライト対象のデータD1〜D4は、バス方向(図1の縦方向)に4分割された後、各分割ブロックB1〜B4に対して均等に振り分けられる。例えば、データD1の振り分け後に余ったブロック(例えば、余剰ブロックE1)には、次のライトデータであるデータD2が振り分けられる。また、データD2の振り分け後に余ったブロック(例えば、余剰ブロックE2)には、次のライトデータであるデータD3が振り分けられる。更に、データD3の振り分け後に余ったブロック(例えば、余剰ブロックE3)には、次のライトデータであるデータD3が振り分けられる。なお、各分割ブロックB1〜B4に生じる余剰領域F1〜F4は無効領域となる。この様に、本実施例に係るメモリ制御では、メモリ制御装置は、異なるデータD1〜D4を、分割ブロックB1〜B4単位で詰めてライト処理するため、限られたバス幅を有効に活用することができる。その結果、伝送帯域の損失が抑制される。
上述した様に、メモリ制御装置は、各データD1〜D4を分割した後、各分割ブロックB1〜B4に振り分けてライトするため、ライト処理時に振り分けたブロックと同一のブロックに対してリード処理を実行することで、データを詰めた状態でも、リードが可能となる。また、メモリ制御装置は、分割ブロックB1〜B4毎に、個別のリード制御を行うことで、分割ブロックB1〜B4毎に異なるデータ(例えば、データD1とデータD2)が格納されている場合でも、同時並行的なリード処理の実行が可能となる。その結果、上記無効領域が減少する。
詳細については後述するが、本実施例では、ライトされた各データD1〜D4は、データID、データの格納場所を示す情報(ライトポインタ)、データ長、データの先頭となるブロックID、及び上記ライトポインタが示すデータ部分(タイプ)の各情報により管理される。メモリ制御装置は、ライト処理時に、制御対象のメモリ20とは別のメモリに上記各情報を格納させておき、リード処理時に、リード対象のデータに対応する上記各情報を取得することで、リード処理に用いるアドレスを算出する。
上記各情報について詳細に説明する。データIDは、データを識別する情報(例えば、番号)である。ライトポインタは、データがライトされたポインタを示す。ポインタは、バス幅(64バイト)とは異なる所定容量(例えば、512バイト)を有するメモリ空間である。メモリ制御装置は、ポインタ単位でデータの管理を行い、1ポインタには、複数のメモリアドレスが対応する。メモリ制御装置は、1つのポインタの容量(例えば、512バイト)を超えるデータをメモリにライトする場合、必要に応じた数の別のポインタを割り当てることもできる。
データ長は、ライト対象のデータ(ライトデータ)のビット数である。コントローラによるリード回数は、このデータ長を、分割後のバス幅である128ビット(16バイト)で除算することにより算出される。データの先頭となるブロックID(以下、「先頭ブロックID」と記す。)は、データの先頭部分が、4つの分割ブロックB1〜B4の内、何れのブロックにあるかを示す。メモリ制御装置は、先頭ブロックIDの示すブロックを先頭(データ開始位置)として、各リードデータの位置を特定する。タイプは、対応するライトポインタが示すデータ部分が、データ全体における先頭、途中、最後の内の何れの位置に該当するかを示す情報である。タイプの値は、リードアドレスの算出、データの復元等の内部処理に使用される。
ここで、以下の説明では、分割前のデータと、分割によって得られたデータとを明確に区別するため、分割前のデータを単に「データ」と記載し、分割後のデータを「分割データ」と記載する。例えば、分割前のデータD1は、ライト処理に先立ち、4つの分割データD11、D12、D13、D14に分割された後、リード処理において再び結合された結果、データD1が復元される。
次に、リード処理は、リード可能となった分割ブロックB1〜B4から順に開始されるため、各データD1〜D4は、必ずしも、先頭部分から順にリードされるとは限らない。換言すれば、分割ブロックB1〜B4間で、読出し順序の逆転が発生し得る。図2は、本実施例に係るメモリ制御のリード処理を説明するための図である。なお、図2では、説明の便宜上、分割ブロック数は2つであり、かつ、リード対象のデータD1、D2は、それぞれ分割データD11〜D15、D21〜D23から構成されるものとする。図2に示す様に、データD1の読出しに際し、分割ブロックB1、B2に対するリード処理がそれぞれ3回、2回必要であり、データD2の読出しに際し、分割ブロックB1、B2に対するリード処理がそれぞれ2回、1回必要である場合を想定する。この場合、各分割ブロックB1、B2に対する3回目のリードアクセス時に、分割ブロックB2は、データD2の一部である分割データD22を読み出すこととなる。一方、分割データD21は、各分割ブロックB1、B2に対する4回目のリードアクセス時に読み出されることとなるため、データD2において、リード順序の逆転が発生する。そこで、メモリ制御装置は、上記各情報を基に、データD2を構成する各分割データD21〜D23の位置を算出し、各分割データD21〜D23を正しい位置に再配置する処理(並び替え処理)を実行する。
本実施例では、メモリ制御装置10の適用箇所として、80GbpsイーサネットのQoS(Quality of Service)機能を有するIP伝送装置内を想定するが、これに限らず、他の装置への適用も可能である。メモリ制御装置10は、IP伝送装置のキュー管理部と出力インタフェースとの間におけるデータ処理に際し、4本に分割されたメモリバス毎に、個別のリードライト制御を行う。
本願の開示する一実施例に係るメモリ制御装置10の構成を説明する。図3は、メモリ制御装置10の構成を示す図である。図3に示す様に、メモリ制御装置10は、ライト要求振分部11とリード要求振分部12とリードデータ振分部13とデータ管理部14とコントローラ15a〜15dとを有する。これら各構成部分は、一方向又は双方向に、信号やデータの入出力が可能な様に接続されている。
ライト要求振分部11は、ライト要求の入力を契機として、ライトデータを分割し、各分割データを、各コントローラ15a〜15dへ振り分ける。ライト要求振分部11は、ライト要求バッファ111を有し、ライト要求バッファ111は、ライトデータと、必要なライトポインタ(複数のメモリアドレス)とを格納する。例えば、ライトポインタ#10は、複数のメモリアドレス#100、#101、#102、…に相当する。
続いて、図4A〜図5Cを参照しながら、ライト要求振分部11の処理を、より詳細に説明する。図4Aは、従来技術におけるライト処理を説明するための図である。図4Aに示す様に、ライト対象のデータが3つ存在し、各データD1〜D3のデータ長がそれぞれ88バイト、584バイト、64バイトである場合、従来技術では、データが分割されずそのままの状態でメモリにライトされる。このため、バス幅Bが64バイトの場合、ライト処理が完了するまでに、13クロック分の時間を要すると共に、少なくとも80バイト分(データD1に32バイト+データD2に48バイト)の無効領域が発生することとなる。
図4Bは、本実施例におけるライト処理を説明するための図である。本実施例では、上述した従来技術と異なり、図4Bに示す様に、バス幅B及び各データD1〜D3が4分割される。また、各分割データD11〜D16、D21〜D237、D31〜D34は、時間tの経過に伴い、バス幅B方向に詰めた状態で、分割ブロックB1〜B4に順次格納される。このため、バス幅Bが64バイトの場合、ライト処理に掛かる時間が、11クロック分の時間で済むと共に、無効領域は、48バイト未満となる。従って、本実施例に係るメモリ制御装置10によれば、ライト処理における所要時間の短縮と無効領域の減少とが実現される。
図5Aは、データD1の分割データD11〜D16が各分割ブロックB1〜B4に振り分けられる様子を示す図である。図5Aに示す様に、データD1はバス幅B方向に分割され、分割ブロックB1〜B4となった後、待ち時間の最も少ない分割ブロックB1から順に、全ての分割ブロックB1〜B4を回る様に振り分けられる(S11〜S16)。分割データD11〜D16の格納先となるライトアドレス#100、#101、…は、ライトポインタ#10を基に算出された先頭アドレス#100を1ずつインクリメントしていくことにより決定される。その結果、データD11、D15は、コントローラ15aに接続する分割ブロックB1に格納され、データD12、D16は、コントローラ15bに接続する分割ブロックB2に格納される。また、データD13は、コントローラ15cに接続する分割ブロックB3に格納され、データD14は、コントローラ15dに接続する分割ブロックB4に格納される。なお、図5Aに示す例では、ライトポインタ#10により特定されるデータは、データD1の全体であることから、先頭の分割データD11と最後の分割データD16とを含む。このため、ライトされたデータD1のタイプとして、「先頭」及び「最後」が設定される。
図5Bは、データD2の分割データD21〜D237が各分割ブロックB1〜B4に振り分けられる様子を示す図である。本実施例の様に、ライト要求のあったデータD1、D2が連続している場合、後続するデータD2の1つ前のデータD1の最後の分割データD16をライトする分割ブロックB2の次の分割ブロック(分割ブロックB3)が、最も待ち時間の少ない分割ブロックとなる。従って、図5Bに示す様に、データD2の分割データD21〜D237は、分割ブロックB3から順に、全ての分割ブロックB1〜B4を回る様に振り分けられる(S21〜S24)。分割データD21〜D237の格納先となるライトアドレス#200、#201、…は、ライトポインタ#20を基に算出された先頭アドレス#200を1ずつインクリメントしていくことにより決定される。その結果、分割データD21、D25、…、D233、D237は、コントローラ15cに接続する分割ブロックB3に格納され、データD22、D26、…、D234は、コントローラ15dに接続する分割ブロックB4に格納される。また、データD23、…、D231、D235は、コントローラ15aに接続する分割ブロックB1に格納され、データD24、…、D232、D236は、コントローラ15bに接続する分割ブロックB2に格納される。
なお、図5Bに示す例では、ライトポインタ#20により特定されるデータは、データD2の前半部分であることから、先頭の分割データD21を含むが、最後の分割データD237を含まない。このため、ライトされたデータD2のタイプ(#20)として、「先頭」が設定される。一方、ライトポインタ#21により特定されるデータは、データD2の後半部分であることから、先頭の分割データD21を含まないが、最後の分割データD237を含む。このため、ライトされたデータD2のタイプ(#21)としては、「最後」が設定される。
図5Cは、データD3の分割データD31〜D34が各分割ブロックB1〜B4に振り分けられる様子を示す図である。本実施例の様に、ライト要求のあったデータD2、D3が連続している場合、後続するデータD3の1つ前のデータD2の最後の分割データD237をライトする分割ブロックB3の次の分割ブロック(分割ブロックB4)が、最も待ち時間の少ない分割ブロックとなる。従って、図5Cに示す様に、データD3の分割データD31〜D34は、分割ブロックB4から順に、全ての分割ブロックB1〜B4を回る様に振り分けられる(S31〜S34)。分割データD31〜D34の格納先となるライトアドレス#300、#301、…は、ライトポインタ#30を基に算出された先頭アドレス#300を1ずつインクリメントしていくことにより決定される。その結果、分割データD31は、コントローラ15dに接続する分割ブロックB4に格納され、データD32は、コントローラ15aに接続する分割ブロックB1に格納される。また、データD33は、コントローラ15bに接続する分割ブロックB2に格納され、データD34は、コントローラ15cに接続する分割ブロックB3に格納される。なお、図5Cに示す例では、図5Aと同様に、ライトポインタ#30により特定されるデータは、データD3の全体であることから、先頭の分割データD31と最後の分割データD34とを含む。このため、ライトされたデータD3のタイプとしては、「先頭」及び「最後」が設定される。
上述した様に、ライト要求振分部11は、分割後のライトデータを、異なる領域(分割ブロックB1〜B4)に書き込むため、従来は異なるクロックタイミングで処理していたライトデータを、同一のタイミングで並列的に処理することができる。また、メモリ制御装置10は、バス幅Bを分割したことで、ブロック毎の最大無効領域が小さくなり、パラレル損失の低減が可能となる。更に、メモリ制御装置10は、ライト処理が連続して発生した場合に、ライトが行われない分割ブロックが生じない様にすることで、ライト処理間のギャップを小さくすることができる。これにより、実際にライトされている信号中に占める無効領域の割合が減少する。その結果、伝送帯域の低下が回避される。
リード要求振分部12は、リード要求の入力を契機として、データD1〜D3を、分割ブロックB1〜B4毎に読み出す。具体的には、リード要求振分部12は、リード要求のあったポインタに基づき、上記各情報(データID、ライトポインタ、データ長、先頭ブロックID、及びタイプ)を参照することで、リードすべきデータを特定する。例えば、リード要求振分部12は、リード要求のあったポインタから、リードデータの先頭アドレスを算出した後、先頭ブロックID及びデータ長から、何れのアドレスまでのリード処理を実行すべきかを算出する。これらの算出処理は、分割ブロックB1〜B4毎に個別に実行される。これにより、分割データD11〜D34の内、リード対象となる分割データの先頭と最後とが、分割ブロック単位で特定される。
続いて、図6A〜図8を参照しながら、リード要求振分部12の処理について、より詳細に説明する。図6Aは、リードアドレスの算出方法を説明するための条件の一例を示す図である。説明の前提として、例えば、図6Aに示す様な条件を設定する。すなわち、以下の説明では、メモリ20のバス幅Bが“512ビット(64バイト)”であり、バスの分割数が“4”であり、1ポインタのサイズ(容量)が“512バイト”である場合を想定する。
図6Bは、リードアドレスの算出方法を説明するためのリード要求の一例を示す図である。本実施例では、図6Aに示した条件下において、図6Bに示すリード要求が、リード要求振分部12に入力されたとする。図6Bに示す様に、上記リード要求は、データIDとして“D2”を有するデータに対する要求であり、該データは、異なる2つのポインタ#10、#11により特定される。また、リード対象のデータは、データ長が“584バイト”であり、“B4”を先頭ブロックIDとする。
上述した条件の下、リード要求振分部12に上記リード要求が入力された場合、上述した様に、1ポインタのサイズは“512バイト”であり、メモリのバス幅Bは“64バイト”であることから、1ポインタ当たりのメモリアドレス数は、8(=512÷64)つとなる。この値は、メモリ20の回路に固有の値である。
まず、ポインタ#10に関し、先頭アドレスは、ポインタ×1ポインタ当たりのメモリアドレス数により算出されることから、10×8より、“80”と算出される。また、リードR1のポインタ#10のタイプは“最後”を含まない(図6B参照)ため、ポインタ#10は、全てのアドレス(8アドレス)分、リードされる。従って、ポインタ#10に対するリード回数は、8回と算出される。また、先頭ブロックIDは“B4”(図6B参照)であることから、リード要求振分部12は、ポインタ#10に関し、分割ブロックB4から順に、各分割ブロックB1〜B4に対して、均等に8回ずつリードアクセスすればよいこととなる。
同様に、ポインタ#11に関し、先頭アドレスは、ポインタ×1ポインタ当たりのメモリアドレス数により算出されることから、11×8より、“88”と算出される。また、リードR2のポインタ#11のタイプは“最後”を含む(図6B参照)ため、ポインタ#11では、ポインタ#10と異なり、各分割ブロックB1〜B4でのリード回数が算出されることとなる。以下に算出方法を説明する。
まず、ポインタ#11の指定するデータの長さ(データD2の残りデータ長)は、「全データ長」mod「1ポインタのサイズ」により算出される。本実施例では、データ長が584バイト(図6B参照)であり、1ポインタのサイズが512バイト(図6A参照)である場合を想定していることから、残りデータ長は、584÷512の余りより、72バイトと算出される。ポインタ#11に対するリード回数は、残りデータ長÷分割後のバス幅より算出されることから、72÷16=4.5より、5回と算出される。また、先頭ブロックIDは“B4”(図6B参照)であり、バス幅Bの分割数は“4”(図6A参照)であることから、各分割ブロックB1〜B4でのリード回数は、それぞれ1回、1回、1回、2回に定まる。従って、リード要求振分部12は、ポインタ#11に関し、分割ブロックB4から順に、各分割ブロックB1〜B4に対して、均等に1回ずつリードアクセスした後、分割ブロックB4に対してのみ、1回リードアクセスすればよいこととなる。
上述のリード回数を基に、分割ブロックB1〜B4毎のリードアドレスが求められる。図7は、リード要求振分部12により、分割ブロックB1〜B4毎に算出されたリードアドレスの一例を示す図である。図7に示す様に、ポインタ#10に関しては、8つずつのメモリアドレス#80〜#87が、各分割ブロックB1〜B4に均等に算出されることとなる。また、ポインタ#11に関しては、分割ブロックB1〜B3に1つずつのメモリアドレス#88が、分割ブロックB4に2つのメモリアドレス#88、#89が算出されることとなる。
リード要求振分部12は、上記算出結果に従い、算出されたリードアドレス#80〜#89を、リード要求バッファ121内の各分割ブロックB1〜B4に対応する領域に格納させる。図8は、リードアドレスがリード要求バッファ121に格納された様子を示す図である。図8に示す様に、リード要求バッファ121に格納されるリードアドレスは、分割ブロックB1〜B4毎に詰めて格納される。このため、ライト処理時と同様に、実際にリードされている信号中に占める無効領域の割合が減少する。その結果、伝送帯域の低下が未然に防止される。
リードデータ振分部13は、リード要求振分部12から入力されるリードデータを並び替える。すなわち、ライト処理は、常に、各データD1〜D3の先頭の分割データから開始されるのに対し、リード処理では、最初にリード可能となる分割データは、各データD1〜D3の先頭の分割データとは限らず、直前のリード処理によって異なる。本実施例では、リード要求振分部12は、待ち時間を短縮するため、先頭となる分割データの格納された分割ブロックでなくとも、直ちにリード処理を開始する。従って、リードデータ振分部13は、リードされた分割データを、分割前の状態に正常に復元するために、必要に応じて、分割データの並び替えを行う。
続いて、図9〜図11を参照しながら、リードデータ振分部13の処理について、より詳細に説明する。図9は、リードデータ(分割データ)の並び替え方法を説明するためのリード要求の一例を示す図である。本実施例では、図6Aに示した条件下において、図9に示すリード要求が、リード要求振分部12に入力されたとする。図9に示す様に、上記リード要求は、データID“D1”、“D2”、“D3”により識別される3つのデータD1、D2、D3に対する要求である。各データD1、D2、D3はそれぞれ、ポインタ#10、#20&#21、#30により特定される。データD1は、“B2”を先頭ブロックIDとするデータ長“80バイト”のリードデータである。また、データD2は、“B4”を先頭ブロックIDとするデータ長“528バイト”のリードデータである。更に、データD3は、“B2”を先頭ブロックIDとするデータ長“64バイト”のリードデータである。
リードデータ振分部13は、リード要求の振分け時にデータ管理部14に格納された上記各情報(データID、ライトポインタ、データ長、先頭ブロックID、及びタイプ)を用いて、先頭の分割データから順に、順次、リード要求バッファ121からリードデータバッファ131への分割データの読出しを行う。これにより、リードデータ(分割データ)は、分割ブロックB1〜B4毎に、リードデータバッファ131に蓄積される。リードデータ振分部13は、蓄積されたリードデータを、FIFO(First In First Out)の先頭から順に並び替える。
以下、リードデータ(分割データ)の並び替え処理について、より詳細に説明する。図10は、リードデータ振分部13が、リードデータバッファ131から並び替えバッファ132a、132bにリードデータD1、D2を取り込む処理を説明するための図である。まず、リードデータ振分部13は、リードデータのデータ長から、幾つの分割ブロック分のリード処理が必要であるかを算出する。例えば、リードデータがデータD1である場合、データ長は“80バイト”(図9参照)であることから、リードデータ振分部13は、分割後のバス幅である16バイトで80バイトを除算することで、分割ブロック数“5”を算出する。次に、リードデータ振分部13は、先頭ブロックID“B2”(図9参照)から順に、上記分割ブロック数である5回分のリード処理を実行し、並び替えバッファ132aに分割後のデータD1を格納する。
同様の処理は、データD2、D3についても実行される。すなわち、リードデータ振分部13は、データD1の格納された全ての分割ブロックB1〜B4からの読出しを終えると、後続する次データD2の読出しを開始するが、このとき、並び替えバッファ132を並び替えバッファ132aから並び替えバッファ132bに切り替える。これにより、並び替え処理に用いられるバッファが、データD1、D2、D3毎に異なるものとなる。従って、リードデータ振分部13は、図10に示す様に、リードデータバッファ131内に入り組んで格納されたデータD1、D2、D3の中から、同一のデータ(例えば、データD2)だけを容易に取り出すことができる。
上述した様に、リードデータ振分部13は、各データD1、D2、D3を、ID順に順次、リードデータバッファ131から並び替えバッファ132に移動させる。なお、移動に際し、リードデータバッファ131内が空の場合には、リードデータ振分部13は、リードデータバッファ131に新たなデータが格納されるのを待って、格納された時点でデータの移動を開始する。
次に、データD2を例にとり、並び替え処理を説明する。図11は、リードデータ振分部13の実行する並び替え処理を説明するための図である。図11に示す様に、並び替えバッファ132bにデータD2の全てが格納された時点で、リードデータ振分部13は、各分割データD21〜D233の読出しを開始する。このとき、リードデータ振分部13は、セレクタ133により、先頭ブロックIDの分割ブロックB4に格納された分割データD21が、データD2の先頭となる様に、各分割データD21〜D233を入れ替えた上で、データD2を装置外部に出力する。これにより、分割前のデータD2と同一の正常なデータの出力が可能となる。
データ管理部14は、ライト要求振分部11により振り分けられた分割データD11〜D34をメモリ制御装置10が正常にリードできる様に、ライト処理の際に、上記各情報を格納する。上記各情報は、例えば、各データD1〜D3のデータID、ライトポインタ、データ長、先頭ブロックID、及びタイプである。これらの情報は、リード処理時にデータ管理部14から取得され、例えば、リードすべきメモリアドレスの特定、あるいは、該アドレスが割り当てられた分割ブロックの特定に使用される。
各コントローラ15a〜15dは、メモリ20を制御するメモリインタフェースである。各コントローラ15a〜15dは、メモリ20を構成する4組のDDR(Double Data Rate)メモリ20a〜20dと、4本のバスB11〜B14を介して、それぞれ接続される。本実施例では、計512ビットのバス幅を想定しているので、各コントローラ15a〜15dは、128ビットの4本のバスB11〜B14を介して、対応する各DDRメモリ20a〜20dを個別に制御する。
次に、メモリ制御装置10の動作について、ライト処理とリード処理とに分けて説明する。本動作説明では、上述した構成の説明と同様に、64バイトのバス幅Bを4分割する場合を例示するが、分割数は4でなくてもよい。
まず、ライト処理を説明する。図12は、メモリ制御装置10の実行するライト処理を説明するためのフローチャートである。
図12のT11では、ライト要求振分部11は、メモリ制御装置10を搭載するIP伝送装置のキュー管理部から、ライトデータ及び上記各情報(例えば、ライトポインタ、データ長等)を入力する。T12では、ライト要求振分部11は、T11で入力されたライトデータを、コントローラ15a〜15dの数分に分割する。これにより、ライトデータは、分割ブロックB1〜B4の幅である16バイトずつの分割データに分割される。
T13では、ライト要求振分部11は、各コントローラ15a〜15d内において空いている分割ブロックの内、最も待ち時間の少ない分割ブロックを先頭として、入力されたライト要求を、各コントローラ15a〜15dに転送する。このとき、ライト要求振分部11は、コントローラ15a〜15dの内、最も待ち時間の少ない分割ブロックを有するコントローラから順番に、各分割データのライト要求を転送する。T14では、各コントローラ15a〜15dは、ライト要求振分部11からの上記ライト要求に従い、メモリ20内の対応するDDRメモリ20a〜20dに、各分割データをライトする。
図13Aは、データD1〜D4の各分割データがメモリ20内にライトされた様子を示す図である。図13Aに示す様に、各分割データは、各データD1〜D4における先頭の分割データから順に、隙間(無効領域)が極力生じない様に詰め込まれた状態で、メモリ20にライトされる。これにより、各データD1〜D4間の無効領域は、最大でも、分割後のバス幅である16バイト(128ビット)から1ビットを引いた127ビットとなる。
図13Aにおいて、データ伝送効率は、下記の数式(1)より、0.944と算出される。
408バイト÷(16バイト×27)=0.944・・・(1)
上記数式(1)より、ライト帯域が改善していることがわかるが、メモリ制御装置10は、分割数を更に増やして分割ブロック幅を小さくすることで、ライト帯域をより広くすることができる。従って、分割数は4に限らず、回路規模が過度に増大しない範囲で、極力大きい値であることが望ましい。
T15では、ライト要求振分部11は、リード時に分割データを正常に組立て可能な様に、分割データ復元用の情報として、上記各情報(例えば、ライトポインタ、データ長、先頭ブロックID、タイプ等)を、データ管理部14に事前に格納させる。図13Bは、データID、データ長、先頭ブロックIDがデータ管理部14に格納された様子を示す図である。図13Bに示す様に、例えば、データD1の「データ長」として“80”バイトが、「先頭ブロックID」として“B1”が、それぞれデータID“D1”と対応付けて格納されている。同様に、例えば、データD4の「データ長」として“72”バイトが、「先頭ブロックID」として“B3”が、それぞれデータID“D4”と対応付けて格納されている。
次に、リード処理を説明する。図14は、メモリ制御装置10の実行するリード処理を説明するためのフローチャートである。
リード要求振分部12は、リード要求としてリードポインタの入力をキュー管理部から受けると(T21)、上記リードポインタを基に、T15で予め格納された上記各情報(例えば、先頭ブロックID、データ長、タイプ等)を、データ管理部14から取得する(T22)。
T23では、リード要求振分部12は、T22で取得された先頭ブロックID及びデータ長に基づき、T21にて入力された各リード要求を、各コントローラ15a〜15dに振り分ける。次に、リード要求振分部12は、T22で取得された先頭ブロックID、データ長、及びタイプに基づき、リードアドレスを、各コントローラ15a〜15d毎に算出する(T24)。T25では、リード要求振分部12は、T24で算出されたリードアドレスを参照し、該リードアドレスに対応する各分割データを、各コントローラ15a〜15dを介してメモリ20からリードする。
ここで、データD3、D1、D4、D2の順にリード要求が入力された場合を例にとり、リード処理について、より詳細に説明する。図15は、データD1〜D4の各分割データがメモリ20からリードされた様子を示す図である。図15に示す様に、各分割データは、各データD3、D1、D4、D2における先頭の分割データから順に、隙間(無効領域)が極力生じない様に詰め込まれた状態で、メモリ20からリードされる。これにより、各データD3、D1、D4、D2間の無効領域は、最大でも、分割後のバス幅である16バイト(128ビット)から1ビットを引いた127ビットとなる。換言すれば、各分割ブロックB1〜B4の幅以上の無効領域が発生することはない。
従って、図15においても、図13Aと同様に、データ伝送効率は、下記の数式(2)により、0.944と算出される。
408バイト÷(16バイト×27)=0.944・・・(2)
上記数式(2)より、リード帯域が改善していることがわかるが、メモリ制御装置10は、分割数を更に増やして分割ブロック幅を小さくすることで、リード帯域をより広くすることができる。従って、分割数は4に限らず、回路規模が過度に増大しない範囲で、極力大きい値であることが望ましい。
なお、T25において好適には、リード要求振分部12は、リード時に、データIDに対応する各情報を取得する際、各データD1〜D4に対し、フレーム番号を付与する。フレーム番号は、データIDを、データが実際に読み出される順に振り直した番号である。リード要求振分部12は、このフレーム番号に従って昇順に、メモリ20から各データD1〜D4を取り出す。これにより、メモリ制御装置10は、入力されたリード要求に基づく正しい順序で、各データD1〜D4を外部装置宛に出力することができる。
T26では、リードデータ振分部13は、T25でリードされたリードデータを、各分割データ単位で、先頭ブロックIDと共に、並び替えバッファ132に格納させる。格納に際し、リードデータ振分部13は、リード対象のリードデータが変わる度に、図10に示した様に、並び替えバッファ132を、次のデータ用の並び替えバッファ132にずらす制御を行う(T27)。
図16は、リードデータバッファ131から並び替えバッファ132へリードデータD1〜D4が振り分けられる様子を示す図である。図16に示す様に、リードデータ振分部13は、上記各情報の内、先頭ブロックIDとデータ長とから、復元すべきデータの個数(本動作説明では4つ)を算出する。その後、リードデータ振分部13は、上記フレーム番号G1〜G4に基づき、各リードデータD1〜D4に対応する並び替えバッファ132a〜132dに、リードデータD1〜D4を移動する。移動は、分割データ単位で独立して行われる。
T28では、リードデータ振分部13は、各並び替えバッファ132c、132a、132d、132bから、リードデータD3、D1、D4、D2を順次読み出す。読出しは、分割データ単位で独立して行われる。T29では、リードデータ振分部13は、T15でデータ管理部14に格納された先頭ブロックIDを参照し、各リードデータD1〜D4の先頭の分割データが、バスの先頭に位置する分割ブロックB1にくる様に、各分割データを並び替えて出力する。これにより、複数の分割データが結合され、元のデータD1〜D4が復元される。
また、リード処理についても、図16に示す様に、隙間(無効領域)が極力小さくなる様に、分割ブロックB1〜B4毎に詰めた状態で実行される。その結果、各リードデータD1〜D4の分割データは、一旦不連続な状態になるが、リードデータ振分部13は、復元用情報(例えば、データID、データ長、先頭ブロックID、フレーム番号)を用いて、各データD1〜D4の区別と各分割データの並び替えとを可能とする。
なお、リードデータ振分部13は、各データD1〜D4をバッファ間で移動させる際、各データD1〜D4に付与されたフレーム番号に従い、フレーム番号の昇順に移動させるので、データ出力順序がリード要求の順序と異なるという不都合は回避される。
リードデータ振分部13は、並び替えバッファ132から各分割データをリードして出力するが、1フレーム当たりのリード回数は、データ長をバス幅Bで除算した値を繰り上げることで、算出される。従って、例えば、データD3の場合、88バイト/64バイト=1.375であることから、リード回数は2回となる。同様に、例えば、データD2の場合、168バイト/64バイト=2.625であることから、リード回数は3回という様に、リード回数は、各リードデータに応じて算出される。
リードデータ振分部13は、フレーム番号をインクリメントしながら、データD3、D1、D4、D2の順に出力していくが、出力に先立ち、先頭ブロックIDに基づき、先頭の分割ブロックが最上位にくる様に、各分割データの並び替えを行う。例えば、出力データがデータD3であれば、リードデータ振分部13は、データD3の各分割データを並び替えることなくそのまま出力する(図15、図16参照)。一方、例えば、出力データがデータD4の場合には、リードデータ振分部13は、データD4の各分割データを、分割ブロックB3、B4、B1、B2の順に並び替えた上で出力する(図15、図16参照)。
以下、データD4の出力を例にとり、より詳細に説明する。図17は、データD4の出力時に、各分割データD41〜D44が、セレクタ13a−1〜13a−4により並び替えられる様子を示す図である。図17に示す様に、リードデータ振分部13は、出力対象の分割データの位置+(先頭の分割ブロックの位置−1)により決定される位置番号に、分割データを割り当てる。なお、上記位置番号が、4を超えた場合には、1に戻る。例えば、先頭の分割ブロックの位置が3番目の分割ブロックB3の場合、分割データD43の位置番号は、1+(3−1)より“3”に決定される。従って、分割データD43は、セレクタ13a−1により、バスの上から3番目の位置に配置される。また、分割データD44は、2+(3−1)より位置番号が“4”に決定されるため、セレクタ13a−2により、上から4番目の位置に配置される。同様に、分割データD41、D45は、3+(3−1)より位置番号が“1”に決定されるため、セレクタ13a−3により、最上位に配置される。そして、分割データD42は、4+(3−1)より位置番号が“2”に決定されるため、セレクタ13a−4により、上から2番目の位置に配置される。これにより、各リードデータD1〜D4の先頭に位置する分割データが、常にバスの先頭(最上位)に配置されることとなる。従って、メモリ制御装置10は、各リードデータD1〜D4を、ライト時と同じ状態でリードすることができる。
以上説明した様に、メモリ制御装置10は、ライト要求振分部11と複数のコントローラ15a〜15dとを有する。ライト要求振分部11は、メモリ20への書込み対象のデータD1をバス幅B方向に分割し、該分割によって得られた複数の分割データD11〜D16を、複数のバスB11〜B14に振り分けて出力する。複数のコントローラ15a〜15dは、ライト要求振分部11により出力された上記複数の分割データD11〜D16を、各バス毎にバスの間断無く詰めた状態で(図1参照)、複数のバスB11〜B14を介してメモリ20に書き込む。
メモリ制御装置10において好ましくは、データ管理部14は、複数の分割データD11〜D16が出力される際、メモリ20内において各分割データD11〜D16が書き込まれる位置(例えば、先頭ブロックID、データ長、ライトポインタ)を取得する。また、リード要求振分部12は、データ管理部14により取得された上記位置を参照し、複数のコントローラ15a〜15dによりメモリ29に書き込まれた複数の分割データD11〜D16を、連続して読み出す。
メモリ制御装置10において好ましくは、リードデータ振分部13は、リード要求振分部12により読み出された複数の分割データD11〜D16が、ライト要求振分部11により分割される前の正常な順序となる様に、複数の分割データD11〜D16を並び替えて出力する。
換言すれば、メモリ制御装置10は、分割により得られたデータを個別に読み書きすることで、無効領域(パラレル損失)を極力小さくすると共に、バスに対するデータの配置効率を向上させる。これにより、メモリ制御装置10は、データ管理方法を複雑化することなく、伝送帯域の減少を抑制する。従って、IP伝送装置は、メモリ自体の動作周波数を上げて回路を高速化しなくとも、広帯域なデータ伝送を行うことができる。その結果、効率的なメモリ制御が実現可能となる。
図18を参照し、メモリ制御装置10によるメモリ制御の効果を詳細に説明する。上述した様に、メモリ制御装置10は、1つのコントローラで処理するデータ幅が16バイトであり、メモリ20のデータ幅である64バイトよりも狭いため、異なるデータD1〜D3を、従来よりも詰めた状態で処理することができる。例えば、データ用のバス幅Bが64バイトであり、200MHzのクロック周波数で動作する回路を想定する。この場合、65バイト長のデータが連続してメモリ制御装置10に入力した時の伝送帯域は、それぞれ以下の様に算出される。
まず、従来技術に係るメモリ制御装置は、1つのデータを64バイト単位で処理するため、データの転送効率は、65バイト/(64バイト×2)=0.51となる。従って、伝送帯域は、下記の数式(3)より、52.2Gbpsと算出される。
512ビット×200MHz×0.51=52.2Gbps・・・(3)
これに対し、本実施例に係るメモリ制御装置10は、1つのデータを4等分して16バイト単位で処理するため、データの転送効率は、65バイト/(16バイト×5)=0.81となる。従って、伝送帯域は、下記の数式(4)より、82.9Gbpsと算出される。
512ビット×200MHz×0.81=82.9Gbps・・・(4)
この様に、本実施例では、従来技術と比較して、上記想定下において、伝送帯域が、約30Gbps程度向上することとなる。65バイト以外のデータ長においても、同様の効果が得られる。図18は、本実施例に係るメモリ制御の効果を従来技術と対比して説明するための図である。図18では、横軸に、データ長(単位はバイト)が規定され、縦軸に、伝送帯域(単位はGbps)が規定されている。図18に示す様に、データ長が小さい程、換言すれば短いデータ程、無効領域の発生に起因するパラレル損失の影響を受け易いため、より大きな効果が得られる。本実施例では、特に、200バイト以下のデータ長において、帯域低下の改善が顕著である。なお、図18に示す伝送帯域の値は、理論値であり、メモリアクセスに伴って発生する他の損失(例えば、リード・ライトの切替え損失、リフレッシュによる損失等)の影響は考慮されていない。
(変形例1)
メモリ制御装置10は、以下に説明する変形態様を採ることもできる。図19は、変形例1に係るリード・ライトの競合回避処理を説明するための図である。変形例1では、メモリ20は、2つのメモリグループ21、22に分割される。メモリ制御装置10は、2つのメモリグループ21、22をリード用とライト用とに分けて制御することで、リードデータとライトデータとの競合による待ち合わせを回避する。
すなわち、メモリ10は、複数のメモリグループ21、22を内部に有する。メモリ制御装置10のライト要求振分部11は、複数の分割データD11〜D16に対する書込み要求と読出し要求とが同時に発生した場合、上記読出し要求に応じて分割データ(例えば、分割データD11〜D13)が読み出されたメモリ領域とは異なるメモリ領域に対し、上記書込み要求に応じた書込みを行うことを、複数のコントローラ15a〜15bに指示する。
より具体的には、メモリ制御装置10のリード要求振分部12は、リード要求とライト要求とが同時に発生していない場合には、リード要求のあったリードデータを、該データの格納されているメモリグループから読み出す。また、メモリ制御装置10のライト要求振分部11は、ライト要求のあったライトデータを、該要求が入力された時点でライト用セレクタ11aが選択しているメモリグループに書き込む。これに対して、リード要求とライト要求とが同時に発生した場合、リード要求振分部12は、リードデータに関しては、非同時発生時と同様に、リード用セレクタ13aにより、リード対象のデータを格納したメモリグループから読み出す。一方、ライトデータについては、ライト要求振分部11は、メモリグループ21、22の内、リード用に選択されているメモリグループとは反対のメモリグループを選択し、該メモリグループに対し、ライト対象のデータを書き込む。これにより、ライト処理は、常に、リード処理が行われていないメモリグループに対して実行されることとなる。その結果、1つのメモリグループ内におけるリード処理とライト処理の同時発生(競合)が未然に防止される。
伝送帯域が低下する要因としては、上述したデータ間における無効領域の発生以外に、上記待ち合わせの発生があるが、変形例1に係るメモリ制御装置10によれば、何れの要因も解消するため、伝送帯域の更なる向上が可能となる。
なお、上記実施例では、バス幅Bの分割数を4分割としたが、これに限らず、複数であればよい。但し、分割数が多過ぎると、メモリ制御装置に搭載すべきコントローラの数が増加し、回路規模が大きくなる、あるいは、アドレス制御用の回線が増加するといった問題が懸念される。従って、かかる問題が生じない程度の分割数(例えば、4〜8分割程度)であることが望ましい。
また、上記実施例では、メモリ制御装置10は、合計512ビットのバス幅を均等に4分割したため、分割データ長も、分割後の各バス幅に合わせて、固定長であるものとした。しかしながら、分割後の各バス幅がバス毎に異なる場合には、分割データ長も、バス幅に合わせて異なる(例えば、128ビットと256ビット)ものとしてもよい。
更に、上記実施例では、メモリ制御装置10とメモリ20とを接続するバスは、物理的に複数存在(例えば、4本)するものとしたが、メモリ制御装置10は、物理的には1本のバスを複数に分割して、論理的に複数のバスを形成するものとしてもよい。
また、メモリ制御装置10の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は、図示のものに限らず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することもできる。例えば、メモリ制御装置10のリード要求振分部12とリードデータ振分部13、あるいは、ライト要求振分部11とリード要求振分部12をそれぞれ1つの構成要素として統合してもよい。また、データ管理用のメモリと、要求バッファ用のメモリとを共通化してもよい。反対に、データ管理部14に関し、ライトデータを管理する部分と、リードデータを管理する部分とに分散してもよい。更に、メモリ20を、ネットワークやケーブル経由でメモリ制御装置10と接続する様にしてもよい。同様に、データ管理部14は、メモリ制御装置10の外部装置として実装されるものとしてもよい。
10 メモリ制御装置
11 ライト要求振分部
11a ライト用セレクタ
12 リード要求振分部
13 リードデータ振分部
13a、13a−1、13a−2、13a−3、13a−4 リード用セレクタ
14 データ管理部
15a、15b、15c、15d コントローラ
20a、20b、20c、20d、21a、21b、21c、21d、22a、22b、22c、22d DDRメモリ
21、22 メモリグループ
111 ライト要求バッファ
121 リード要求バッファ
131 リードデータバッファ
132 並び替えバッファ
132a データD1用並び替えバッファ
132b データD2用並び替えバッファ
132c データD3用並び替えバッファ
132d データD4用並び替えバッファ
133 セレクタ
B バス幅
B1、B2、B3、B4 分割ブロック
B11、B12、B13、B14 バス
D1、D2、D3、D4 データ
D11〜D16、D21〜D237、D31〜D34、D41〜D45 分割データ
E1、E2、E3 余剰ブロック
F1、F2、F3、F4 余剰領域
G1、G2、G3、G4 フレーム
H 1フレーム当たりの最大領域
R1、R2 リード
t 時間
#10、#11、#20、#21、#30、#80〜#89、#100、#101、#200〜#209、#300 ライトポインタ

Claims (5)

  1. メモリへの書込み対象のデータを分割し、該分割によって得られた複数の分割データを、複数のバスに振り分けて出力する振分部と、
    前記振分部により出力された前記複数の分割データを、各バス毎に詰めた状態で、前記複数のバスを介して前記メモリに書き込む複数の制御部と
    を有することを特徴とするメモリ制御装置。
  2. 前記複数の分割データが出力される際、前記メモリ内において各分割データが書き込まれる位置を取得する取得部と、
    前記取得部により取得された前記位置を参照し、前記複数の制御部により前記メモリに書き込まれた前記複数の分割データを、連続して読み出す読出し部と
    を更に有することを特徴とする請求項1に記載のメモリ制御装置。
  3. 前記読出し部により読み出された前記複数の分割データが、前記振分部により分割される前の順序となる様に、前記複数の分割データを並び替えて出力する並替え部
    を更に有することを特徴とする請求項2に記載のメモリ制御装置。
  4. 前記メモリは、複数のメモリ領域を有し、
    前記振分部は、前記複数の分割データに対する書込み要求と読出し要求とが同時に発生した場合、前記読出し要求に応じて分割データが読み出されたメモリ領域とは異なるメモリ領域に対し、前記書込み要求に応じた書込みを行うことを指示することを特徴とする請求項1に記載のメモリ制御装置。
  5. メモリ制御装置が、
    メモリへの書込み対象のデータを分割し、該分割によって得られた複数の分割データを、複数のバスに振り分けて出力し、
    出力された前記複数の分割データを、各バス毎に詰めた状態で、前記複数のバスを介して前記メモリに書き込む
    ことを特徴とするメモリ制御方法。
JP2013070691A 2013-03-28 2013-03-28 メモリ制御装置、及びメモリ制御方法 Pending JP2014194672A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013070691A JP2014194672A (ja) 2013-03-28 2013-03-28 メモリ制御装置、及びメモリ制御方法
US14/179,033 US20140297972A1 (en) 2013-03-28 2014-02-12 Memory control device and memory control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013070691A JP2014194672A (ja) 2013-03-28 2013-03-28 メモリ制御装置、及びメモリ制御方法

Publications (1)

Publication Number Publication Date
JP2014194672A true JP2014194672A (ja) 2014-10-09

Family

ID=51622011

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013070691A Pending JP2014194672A (ja) 2013-03-28 2013-03-28 メモリ制御装置、及びメモリ制御方法

Country Status (2)

Country Link
US (1) US20140297972A1 (ja)
JP (1) JP2014194672A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016170607A (ja) * 2015-03-12 2016-09-23 日本電気株式会社 データ処理装置及びデータ処理方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10096078B2 (en) * 2013-08-13 2018-10-09 Nvidia Corporation Multi GPU interconnect techniques

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007172332A (ja) * 2005-12-22 2007-07-05 Sanyo Electric Co Ltd メモリ制御回路及びメモリ制御方法
WO2009116115A1 (ja) * 2008-03-18 2009-09-24 富士通株式会社 メモリコントローラ及びそれを使用したメモリシステム
US20130073784A1 (en) * 2011-09-15 2013-03-21 King Ying Ng Method and system for random write unalignment handling

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463643A (en) * 1994-03-07 1995-10-31 Dell Usa, L.P. Redundant memory channel array configuration with data striping and error correction capabilities
US7027443B2 (en) * 2001-08-23 2006-04-11 Pmc-Sierra Ltd. Reassembly engines for multilink applications
EP1351453B1 (en) * 2002-04-03 2006-04-12 Alcatel Method and apparatuses for packet reordering in a network processor
US8037224B2 (en) * 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
JP4348361B2 (ja) * 2006-12-20 2009-10-21 株式会社日立製作所 配信システム、通信装置及び配信方法
US20100250826A1 (en) * 2009-03-24 2010-09-30 Micron Technology, Inc. Memory systems with a plurality of structures and methods for operating the same
US20100262887A1 (en) * 2009-04-13 2010-10-14 Lockheed Martin Corporation High Integrity Data Network System and Method
JP5728982B2 (ja) * 2010-02-26 2015-06-03 株式会社Jvcケンウッド 処理装置および書込方法
US8990435B2 (en) * 2011-01-17 2015-03-24 Mediatek Inc. Method and apparatus for accessing data of multi-tile encoded picture stored in buffering apparatus

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007172332A (ja) * 2005-12-22 2007-07-05 Sanyo Electric Co Ltd メモリ制御回路及びメモリ制御方法
WO2009116115A1 (ja) * 2008-03-18 2009-09-24 富士通株式会社 メモリコントローラ及びそれを使用したメモリシステム
US20130073784A1 (en) * 2011-09-15 2013-03-21 King Ying Ng Method and system for random write unalignment handling

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016170607A (ja) * 2015-03-12 2016-09-23 日本電気株式会社 データ処理装置及びデータ処理方法

Also Published As

Publication number Publication date
US20140297972A1 (en) 2014-10-02

Similar Documents

Publication Publication Date Title
US8225026B2 (en) Data packet access control apparatus and method thereof
JP5841142B2 (ja) 共有スタックの部分を割り当てるためのシステムおよび方法
CN107204198B (zh) 高速访问双倍速率同步动态随机存储器的控制方法及装置
CN102193874B (zh) 用于管理存储器的缓存管理器和方法
US8312243B2 (en) Memory management in network processors
JP4443474B2 (ja) コマンド転送制御装置およびコマンド転送制御方法
JP5730126B2 (ja) データ供給装置、キャッシュ装置、データ供給方法、キャッシュ方法およびプログラム
US9026735B1 (en) Method and apparatus for automated division of a multi-buffer
US6697923B2 (en) Buffer management method and a controller thereof
JP2006318178A (ja) データ転送調停装置およびデータ転送調停方法
US10678718B2 (en) Network device and method of operation
US11321255B2 (en) Packet processing device and packet processing method
JP2014194672A (ja) メモリ制御装置、及びメモリ制御方法
US10061513B2 (en) Packet processing system, method and device utilizing memory sharing
US20100061376A1 (en) Shared memory system
US20190065103A1 (en) Transmission device and transmission method
US9658951B1 (en) Scalable high bandwidth memory in a network device
US20210034559A1 (en) Packet Processing Device and Packet Processing Method
US20080181247A1 (en) Method and apparatus for processing queue in network system
US11546276B2 (en) Communication input-output device
US9612950B2 (en) Control path subsystem, method and device utilizing memory sharing
US9582215B2 (en) Packet processing system, method and device utilizing memory sharing
JP6570075B2 (ja) 通信用入出力装置
WO2010082604A1 (ja) データ処理装置、メモリ管理方法およびメモリ管理プログラム
JP2019032727A (ja) 通信用入出力装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161011

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161212

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170221