(57)【特許請求の範囲】
【請求項１】
記憶領域に複数のバンクを持つメモリへのアクセス制御を行うメモリ制御装置において、
受信したパケットデータをセグメントに分割するセグメント分割と、パケット品質情報の検出処理とを行うパケット分割部と、
前記バンクへの格納先のアドレス管理を行うためのアドレス管理テーブルを有し、前記パケット品質情報毎に、前記パケットデータの格納状態を管理するメモリ管理部と、
前記セグメントを、前記メモリに書き込み／読み出し可能なアクセス単位のデータに分割し、かつ前記アクセス単位毎の書き込みリクエストおよび読み出しリクエストを生成するセグメント／リクエスト情報分割部と、前記書き込みリクエストにもとづき前記バンクへ前記データを書き込み、前記読み出しリクエストにもとづき前記バンクから前記データを読み出すためのメモリアクセス制御を行うメモリアクセス制御部と、から構成されるメモリ制御部と、
を備え、
前記メモリアクセス制御部は、生成した前記書き込みリクエストまたは前記読み出しリクエストの内、バンク制約が生じてアクセス禁止となった前記バンクを回避して、アクセス可能な前記バンクに対応する前記書き込みリクエストまたは前記読み出しリクエストを抽出して、前記メモリに対して書き込み／読み出しアクセスを行い、
前記メモリ制御部は、シリアルナンバー毎に格納領域が区分けされ、到着した前記メモリからの読み出しデータを格納して保持する保持メモリを含み、前記読み出しデータの並び替え／組み立てを行って、前記セグメントを出力するセグメント組立部をさらに有し、
前記セグメント／リクエスト情報分割部は、セグメント単位に付与したリクエストＩＤと、前記セグメントをアクセス単位に分割した際の分割数と、前記アクセス単位に分割したときに前記データに付与したシリアルナンバーの内、先頭データに付与した先頭シリアルナンバーと、の項目から構成される分割情報を前記セグメント組立部へ送信し、
前記セグメント組立部は、
到着した前記読み出しデータを、前記保持メモリの中の、前記読み出しデータに付与されているシリアルナンバーと同じシリアルナンバーを持つ領域に格納し、
前記分割情報にもとづいて、１セグメントを構成する前記読み出しデータの個数と、先頭に位置する前記読み出しデータとを認識して、セグメント単位にすべての前記読み出しデータが前記保持メモリに格納されるのを待ち、
１セグメントを構成するすべての前記読み出しデータが前記保持メモリに格納された後は、前記リクエストＩＤの順に前記セグメントを出力する、
ことを特徴とするメモリ制御装置。
【請求項２】
前記メモリアクセス制御部は、
バンク単位に前記アクセス単位のデータを格納するデータメモリと、
バンク単位に前記書き込みリクエストを格納する書き込みリクエストメモリと、
バンク単位に前記読み出しリクエストを格納する読み出しリクエストメモリと、
前記データを書き込むべき前記バンクに対応する前記書き込みリクエストメモリを選択して、選択した前記書き込みリクエストメモリから前記書き込みリクエストを抽出し、または前記データを読み出すべき前記バンクに対応する前記読み出しリクエストメモリを選択して、選択した前記読み出しリクエストメモリから前記読み出しリクエストを抽出するメモリ選択制御部と、
を有することを特徴とする請求項１記載のメモリ制御装置。
【請求項３】
前記メモリ選択制御部は、メモリ選択部、書き込み／読み出し切り替え管理部、バンク待ち受け管理部を有し、
前記書き込み／読み出し切り替え管理部は、前記メモリへ前記データを書き込む場合には、書き込み指示を前記メモリ選択部へ送信し、前記メモリから前記データを読み出す場合には、読み出し指示を前記メモリ選択部へ送信し、
前記バンク待ち受け管理部は、前記バンク制約を生じている前記バンクを認識し、どの前記バンクがアクセス可能で、どの前記バンクがアクセス禁止かを示すアクセス状態信号をバンク毎に前記メモリ選択部へ送信し、
前記メモリ選択部は、
前記書き込み指示を受信した場合、前記アクセス状態信号から、現在アクセス可能な前記バンクを認識し、アクセス可能な前記バンクに対応する前記書き込みリクエストメモリの中から、最も番号の若いシリアルナンバーが付与されている前記書き込みリクエストが格納されている前記書き込みリクエストメモリを選択し、選択した前記書き込みリクエストメモリから前記書き込みリクエストを抽出して、前記書き込みリクエストにもとづき、書き込みコマンドおよび書き込みアドレスを生成し、
前記読み出し指示を受信した場合、前記アクセス状態信号から、現在アクセス可能な前記バンクを認識し、アクセス可能な前記バンクに対応する前記読み出しリクエストメモリの中から、最も番号の若いシリアルナンバーが付与されている前記読み出しリクエストが格納されている前記読み出しリクエストメモリを選択し、選択した前記読み出しリクエストメモリから前記読み出しリクエストを抽出して、前記読み出しリクエストにもとづき、読み出しコマンドおよび読み出しアドレスを生成する、
ことを特徴とする請求項２記載のメモリ制御装置。
【請求項４】
前記書き込み／読み出し切り替え管理部は、前記メモリへの書き込みアクセスおよび読み出しアクセスが均等になるように、前記メモリに対する前記書き込みコマンドの回数と前記読み出しコマンドの回数とをカウントし、カウント値がそれぞれ規定数に達したときには、前記書き込みアクセスから前記読み出しアクセスへ、または前記読み出しアクセスから前記書き込みアクセスへ切り替えることを特徴とする請求項３記載のメモリ制御装置。
【請求項５】
前記メモリ選択制御部は、リフレッシュ管理部をさらに有し、
前記リフレッシュ管理部は、前記メモリをリフレッシュするためのリフレッシュ指示を一定時間間隔で前記メモリ選択部へ送信し、
前記メモリ選択部は、
前記書き込みアクセス中に、前記リフレッシュ指示を受信した場合は、前記書き込みアクセスから前記読み出しアクセスへ切り替わるまで、リフレッシュ動作を待たせ、前記書き込みリクエストメモリの選択が終了して、前記書き込みアクセスから前記読み出しアクセスへ切り替える時に、リフレッシュコマンドを前記メモリへ送信し、
前記読み出しアクセス中に、前記リフレッシュ指示を受信した場合は、前記読み出しアクセスから前記書き込みアクセスへ切り替わるまで、リフレッシュ動作を待たせ、前記読み出しリクエストメモリの選択が終了して、前記読み出しアクセスから前記書き込みアクセスへ切り替える時に、リフレッシュコマンドを前記メモリへ送信する、
ことを特徴とする請求項３記載のメモリ制御装置。
【請求項６】
前記アドレス管理テーブルは、異なる前記パケット品質情報毎に対応して設けられる複数のキューに格納されるセグメントテーブル情報で構成され、
前記セグメントテーブル情報は、前記セグメントの中の前記データが格納されるメモリ番号／バンク番号、前記メモリ番号／バンク番号に該当するメモリ領域のアドレス、セグメント長、前記セグメントが前記パケットデータの先頭、中間、最終のどの位置にあるかを示すセグメントタイプとの項目から構成され、
前記メモリ管理部は、前記セグメントテーブル情報から、前記メモリ番号／バンク番号、前記アドレス、前記セグメント長、セグメント単位に付与するリクエストＩＤを含む書き込みリクエスト情報および読み出しリクエスト情報を作成して前記セグメント／リクエスト情報分割部へ送信し、
前記セグメント／リクエスト情報分割部は、前記書き込みリクエスト情報にもとづき、書き込みデータのアドレスおよび前記書き込みデータに付与したシリアルナンバーを含む前記書き込みリクエストを作成し、前記読み出しリクエスト情報にもとづき、読み出しデータのアドレスおよび前記読み出しデータに付与したシリアルナンバーを含む前記読み出しリクエストを作成することを特徴とする請求項１記載のメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリ制御装置に関し、特に記憶領域に複数のバンクを持つメモリへのアクセス制御を行うメモリ制御装置に関する。
【背景技術】
【０００２】
近年、インターネットの急速な普及に伴って、通信ネットワークは飛躍的に発展しており、特にＩＰ（Internet Protocol）パケットに代表されるデータ通信は、ネットワーク全体のトラフィックの主流となりつつある。また、通信サービスに対する需要の高まりや通信速度の高速化による装置の大容量化などが顕著になってきている。
【０００３】
このような通信ネットワーク上においては、パケット転送を行うためのルータやスイッチが配置され、パケットの通信品質を確保しながら、パケットを転送するためのＱｏＳ（Quality of Service）制御が行われている。
【０００４】
ＱｏＳ制御では、各パケットが持つ品質情報にもとづいて、到着順序とは異なる順序でパケットを出力する制御を行うので、パケットが出力されるまでは、パケットデータを格納するメモリとして、パケットバッファを設けることが必要となる。
【０００５】
このため、大容量かつ高速化が要求されるデータ通信においては、パケットバッファ本体の大容量化およびパケットバッファへの高速アクセスが必須であり、パケットバッファの効率的な使用が求められている。
【０００６】
パケットバッファとしては、通常、ＤＲＡＭ（Dynamic Random Access Memory）が用いられる。ＤＲＡＭは、メモリセルを独立して動作可能なバンクと呼ばれるブロックを複数持ち（クロック同期型のＳＤＲＡＭ（Synchronous DRAM）に代表されるように、一般的に４バンク構成が標準である）、各バンクは、ロウ（Row）アドレス、カラム（Column）アドレスの２つのアドレスで区切られた構成となっている。
【０００７】
ＤＲＡＭは構造が簡単で（安価である）、１つのデバイス上に大容量のメモリチップを構成できるため、パケットバッファまたはコンピュータのメインメモリなどに広く採用されている。
【０００８】
ＤＲＡＭへのアクセス制御を行う場合には、パケットをセグメントと呼ばれる領域に分割し、セグメント単位に書き込みコマンドまたは読み出しコマンドを発生させて、パケットデータの書き込み／読み出しを行う。
【０００９】
また、同一バンクへのアクセス時や、書き込み／読み出しの切り替え時には、待ち時間（ウエイト）が発生するため、アクセスに時間的な制約を持たせることになる。
図１６はＤＲＡＭインタフェースのタイムチャートを示す図である。ＤＲＡＭは４つのバンクｂ１〜ｂ４を持つものとし、各バンクにシリアルにアクセスするインタフェースを示している。
【００１０】
区間Ｔ１は、バンクｂ１〜ｂ４のそれぞれにデータを１度書き込むときの、バンク１周分の書き込みアクセスを示している。また、区間Ｔ２は、バンクｂ１〜ｂ４のそれぞれからデータを１度読み出すときの、バンク１周分の読み出しアクセスを示している。
【００１１】
なお、図中の最小アクセス単位とは、１つのバンクにアクセスする最小アクセス時間であり、１回のアクセスでバンクへデータを書き込むときの書き込みデータ長、または１回のアクセスでバンクからデータを読み出すときの読み出しデータ長に該当する。また、図の例では、書き込みデータｄ１〜ｄ４までのデータ量、または読み出しデータｄ１１〜ｄ１４までのデータ量が、１つのセグメントに該当している。
【００１２】
〔Ｃ１〕書き込みコマンドｗ１により、バンクｂ１にデータｄ１を書き込む。
〔Ｓ１ａ〕サイクルＣ１で、バンクｂ１にデータｄ１の書き込みが開始されると、その後、バンクｂ１にはサイクルＣ２〜Ｃ４まで書き込みアクセスはできず、バンク制約が発生する（バンクｂ１にアクセスできない時間が発生するということ）。次にバンクｂ１にアクセス可能なサイクルは、サイクルＣ５以降となる。
【００１３】
〔Ｃ３〕書き込みコマンドｗ２により、バンクｂ２にデータｄ２を書き込む。
〔Ｓ２ａ〕サイクルＣ３で、バンクｂ２にデータｄ２の書き込みが開始されると、その後、バンクｂ２にはサイクルＣ４〜Ｃ６まで書き込みアクセスはできず、バンク制約が発生する。次にバンクｂ２にアクセス可能なサイクルは、サイクルＣ７以降となる（その後、バンクｂ３、ｂ４の順に書き込みアクセスを行って、バンクｂ３、ｂ４に対しても同様のバンク制約が発生する）。
【００１４】
〔Ｃ１１〕読み出しコマンドｒ１により、バンクｂ１からデータｄ１１を読み出す。
〔Ｓ３ａ〕サイクルＣ１１で、バンクｂ１からデータｄ１１の読み出しが開始されると、その後、バンクｂ１にはサイクルＣ１２〜Ｃ１４まで読み出しアクセスはできず、バンク制約が発生する。次にバンクｂ１にアクセス可能なサイクルは、サイクルＣ１５以降となる。
【００１５】
〔Ｃ１３〕読み出しコマンドｒ２により、バンクｂ２からデータｄ１２を読み出す。
〔Ｓ４ａ〕サイクルＣ１３で、バンクｂ２からデータｄ１２の読み出しが開始されると、その後、バンクｂ２にはサイクルＣ１４〜Ｃ１６まで読み出しアクセスはできず、バンク制約が発生する。次にバンクｂ２にアクセス可能なサイクルは、サイクルＣ１７以降となる（以降同様に、バンクｂ３、ｂ４の順に読み出しアクセスを行って、バンクｂ３、ｂ４に対してもバンク制約が発生する）。
【００１６】
〔Ｓ５ａ〕書き込みアクセスから読み出しアクセスへの切り替え時には、書き込み／読み出し切り替え制約が発生する（書き込みから読み出しへ、または読み出しから書き込みへアクセスを切り替える際には、該当のバンクにアクセスできない時間が発生する）。
【００１７】
図１７はＤＲＡＭインタフェースのタイムチャートを示す図である。４つのＤＲＡＭ＃１〜＃４があるとして、各ＤＲＡＭのバンクにパラレルにアクセスするインタフェースを示している。区間Ｔ１ａは、書き込みアクセスを示し、区間Ｔ２ａは、読み出しアクセスを示す。
【００１８】
〔Ｃ１〕書き込みコマンドｗ１により、ＤＲＡＭ＃１の任意バンクにデータｄ１を、ＤＲＡＭ＃２の任意バンクにデータｄ２を、ＤＲＡＭ＃３の任意バンクにデータｄ３を、ＤＲＡＭ＃４の任意バンクにデータｄ４を書き込む。
【００１９】
〔Ｓ１ｂ〕サイクルＣ１で、ＤＲＡＭ＃１〜＃４にデータｄ１〜ｄ４の書き込みが開始されると、バンク制約が発生する。
〔Ｃ５〕書き込みコマンドｗ２により、ＤＲＡＭ＃１の任意バンクにデータｄ５を、ＤＲＡＭ＃２の任意バンクにデータｄ６を、ＤＲＡＭ＃３の任意バンクにデータｄ７を、ＤＲＡＭ＃４の任意バンクにデータｄ８を書き込む。なお、任意バンクへの書き込みを行うため、前回の書き込みのときにアクセスしたバンクと同じバンクに対してもアクセスできるように、サイクルＣ１の書き込み処理で発生したバンク制約が解除された後の、サイクルＣ５から書き込みを開始している。
【００２０】
〔Ｓ２ｂ〕サイクルＣ５で、ＤＲＡＭ＃１〜＃４にデータｄ５〜ｄ８の書き込みが開始されると、バンク制約が発生する。
〔Ｃ１１〕読み出しコマンドｒ１により、ＤＲＡＭ＃１の該当バンクからデータｄ１１を、ＤＲＡＭ＃２の該当バンクからデータｄ１２を、ＤＲＡＭ＃３の該当バンクからデータｄ１３を、ＤＲＡＭ＃４の該当バンクからデータｄ１４を読み出す。
【００２１】
〔Ｓ３ｂ〕サイクルＣ１１で、ＤＲＡＭ＃１〜＃４にデータｄ１１〜ｄ１４の読み出しが開始されると、バンク制約が発生する。
〔Ｃ１５〕読み出しコマンドｒ２により、ＤＲＡＭ＃１の該当バンクからデータｄ１５を、ＤＲＡＭ＃２の該当バンクからデータｄ１６を、ＤＲＡＭ＃３の該当バンクからデータｄ１７を、ＤＲＡＭ＃４の該当バンクからデータｄ１８を読み出す。なお、前回の読み出しのときにアクセスしたバンクと同じバンクに対してもアクセスできるように、サイクルＣ１１の読み出し処理で発生したバンク制約が解除された後の、サイクルＣ１５から読み出しを開始している。
【００２２】
〔Ｓ４ｂ〕サイクルＣ１５で、ＤＲＡＭ＃１〜＃４にデータｄ１５〜ｄ１８の読み出しが開始されると、バンク制約が発生する。
〔Ｓ５ｂ〕書き込みから読み出しへアクセスを切り替えたので、書き込み／読み出し切り替え制約が発生する。
【００２３】
従来のメモリアクセス技術として、送信パケットを構成すべきデータの読み出しと、受信パケットに含まれるデータの書き込みとを両立させる技術が提案されている（特許文献１参照）。
【特許文献１】特開２００２−３４４５０２号公報（段落番号〔００３３〕、〔００３４〕、第１図）
【発明の開示】
【発明が解決しようとする課題】
【００２４】
上記のように、ＤＲＡＭのアクセス制御では、１つのバンクにアクセスすると、そのバンクに再度アクセスするには待ち時間が発生する。したがって、パケットをセグメントに分割する場合、分割方法として例えば、４バンク構成のシリアルインタフェースに対しては、バンクｂ１→ｂ２→ｂ３→ｂ４までアクセスすると、再びバンクｂ１からアクセスして１周（巡回）するように、バンクを１周して書き込まれるデータ量、またはバンクを１周して読み出されるデータ量を基準にして、パケットをセグメント単位に分割する。バンク１周分のデータ量で分割した場合、１セグメント＝アクセス単位×バンク数となる。
【００２５】
図１８はパケットの構成を示す図である。ＤＲＡＭのバンク数を４とする。パケットデータｐ１ａは、セグメントｓ１ａ、ｓ２ａから構成される。セグメントｓ１ａは、データｄ１〜ｄ４で構成され、セグメントｓ２ａは、データｄ５〜ｄ８で構成される。各データは、アクセス単位と等しいとすると、セグメントｓ１ａ、ｓ２ａはすべて、１セグメント＝アクセス単位×バンク数となっている。
【００２６】
また、パケットデータｐ２ａは、セグメントｓ１１ａ、ｓ１２ａから構成される。セグメントｓ１１ａは、データｄ１〜ｄ４で構成され、セグメントｓ１２ａは、データｄ５のみで構成される。パケットデータｐ２ａの構成は、セグメントｓ１１ａのみがアクセス単位×バンク数となっている。
【００２７】
図１６、図１７で上述したような、従来のＤＲＡＭアクセス制御では、パケットデータｐ１ａのように、アクセス単位×バンク数となるセグメントのみで構成されるパケットの処理を行う場合には、ＤＲＡＭへの転送レートは低下しない。
【００２８】
しかし、パケットデータｐ２ａのような、アクセス単位×バンク数となるセグメント（セグメントｓ１１ａ）以外のセグメント（セグメントｓ１２ａ）も含むパケットの処理を行う場合には、ＤＲＡＭへの転送レートは低下することになる。
【００２９】
図１９は転送レートの低下が起きる理由を説明するための図である。
〔Ｃ１、Ｃ３、Ｃ５、Ｃ７〕書き込みコマンドｗ１〜ｗ４により、セグメントｓ１１ａの書き込み処理として、バンクｂ１にデータｄ１を書き込み、バンクｂ２にデータｄ２を書き込み、バンクｂ３にデータｄ３を書き込み、バンクｂ４にデータｄ４を書き込む。また、それぞれの書き込み処理に対してバンク制約が発生する。
【００３０】
〔Ｃ９〕書き込みコマンドｗ５により、セグメントｓ１２ａの書き込み処理として、バンクｂ１にデータｄ５を書き込む。
〔Ｃ１１、Ｃ１３、Ｃ１５〕セグメント単位での書き込みアクセス処理により、サイクルＣ１１、Ｃ１３、Ｃ１５においてもバンクｂ２〜ｂ４に対する書き込みコマンドが発生するが、実際には、書き込むべきデータは存在しないので、この部分のサイクルはアイドルサイクルとなる。
【００３１】
このように、アクセス単位×バンク数で、パケットデータを余りなく分割できないパケットに対して、セグメント単位で書き込み／読み出し処理を行う場合、アイドルサイクル（無駄な空きアクセス）が発生し、転送レートが低下することになる。
【００３２】
ここで、１個のＤＲＡＭへのアクセスインタフェースのクロック速度がＳ、データバスによる書き込み速度および読み出し速度が共にＮの性能を持っているとすると（ＮはＳに比例）、図１８のパケットデータｐ２ａを連続疎通させた場合、転送レートはＮ×５／８まで劣化、すなわちＮ×５／８までしか転送レートを上げられない（図１９からわかるように、パケットデータｐ２ａを構成するデータ数は８で、アイドルサイクルが発生せずに継続して書き込みまたは読み出しが可能なデータ数は５である）。仮にパケットデータｐ２ａが性能上ワーストケースであり、Ｎが装置保障の実行データレートとすると、クロックスピードはＳ×８／５まで上昇させる必要がある。
【００３３】
例えば、メモリインタフェースの保証すべき実行データレートを、１０Ｇｂｐｓとし（書き込みおよび読み出しの保証データレートを共に１０Ｇｂｐｓ）、１つのＤＲＡＭに対してデータバス５本を使って、１本のデータバスのクロック速度を２００Ｍｂｐｓ（＝Ｓ）とする。
【００３４】
このとき、１つのＤＲＡＭに１Ｇｂｐｓ（＝２００Ｍｂｐｓ×５）のアクセスができるので、単純にはＤＲＡＭは１０個となるが、実際には書き込み処理と読み出し処理は、１つのＤＲＡＭに同時にはできないので、１つのＤＲＡＭに対して、５００Ｍｂｐｓの書き込みアクセスおよび５００Ｍｂｐｓの読み出しアクセスを行うことになり（５００Ｍｂｐｓ＝Ｎ）、この場合、書き込みおよび読み出しのデータレートを共に１０Ｇｂｐｓとなるように保証するには、ＤＲＡＭは２０個必要となる（書き込み保証データレート：１０Ｇｂｐｓ＝５００Ｍｂｐｓ×２０、読み出し保証データレート：１０Ｇｂｐｓ＝５００Ｍｂｐｓ×２０、）。
【００３５】
このようなメモリインタフェース状態で、パケットデータｐ２ａを連続疎通させた場合、８サイクルの内、実アクセスは５サイクルなので、書き込み／読み出しの保証すべきレートは５００Ｍｂｐｓであるのに、実際にはそれぞれ５００×５／８Ｍｂｐｓまでしか出せない。
【００３６】
これをデータバスのクロック速度で見れば、実質的には２００×５／８Ｍｂｐｓの低いクロック速度でアクセスしていることになる。このため、アイドルサイクル分も考慮して、目標の１０Ｇｂｐｓのデータレートを出すためには、クロック速度を２００×８／５＝３２０Ｍｂｐｓまで上げる必要がある（なお、上記の数値は、現実的なものではなく、単に説明をわかりやすくするために設定したものである）。
【００３７】
一方、図１７で上述した従来のＤＲＡＭアクセス制御では、セグメントをアクセス単位×ＤＲＡＭ個数の構成とした場合であるが、図１８のパケットデータｐ２ａを疎通させる場合、ＤＲＡＭの個数が増加することになる。
【００３８】
ここで、装置保障の実行データレートをＲとし、ＤＲＡＭのデータバスによる書き込み速度および読み出し速度が共にＱの性能を持っているとすると（ＱはＲに比例）、パケットデータｐ２ａを連続疎通させた場合、転送レートはＱ×５／８まで劣化する。このため、ＤＲＡＭの個数をＲ／（Ｑ×５／８）個まで増やす必要がある。
【００３９】
例えば、メモリインタフェースの保証すべき実行データレートを、１０Ｇｂｐｓとし（書き込みおよび読み出しの保証データレートを共に１０Ｇｂｐｓ（＝Ｒ））、１つのＤＲＡＭに対してデータバス５本を使って、１本のデータバスのクロック速度を２００Ｍｂｐｓとする。
【００４０】
このとき、１つのＤＲＡＭに５００Ｍｂｐｓの書き込みアクセスおよび５００Ｍｂｐｓの読み出しアクセスを行うので（５００Ｍｂｐｓ＝Ｑ）、書き込みおよび読み出しのデータレートを共に１０Ｇｂｐｓとなるように保証するには、ＤＲＡＭは２０（＝１０Ｇｂｐｓ／５００Ｍｂｐｓ）個必要となる。
【００４１】
このようなメモリインタフェース状態で、パケットデータｐ２ａを連続疎通させた場合、８データ分のアクセスで５データ分しかアクセスしないので、書き込み／読み出しの保証すべきレートは５００Ｍｂｐｓであるのに、実際にはそれぞれ５００×５／８Ｍｂｐｓまでしか出せない。
【００４２】
したがって、目標の１０Ｇｂｐｓのデータレートを出すためには、ＤＲＡＭの個数を１０Ｇｂｐｓ／（５００×５／８）Ｍｂｐｓ＝３２個まで増やす必要がある（なお、上記の数値は、現実的なものではなく、単に説明をわかりやすくするために設定したものである）。
【００４３】
上記で説明したように、従来のＤＲＡＭのアクセス制御では、実行データレートを保証するために、無駄な空きアクセスが発生することを考慮して、クロック速度やＤＲＡＭ個数を決定する必要がある（上記では、書き込み／読み出しの切り替え制約については省略したが、実際のメモリインタフェースの設計では、切り替え制約にかかるアイドルサイクルについても考慮して、クロック速度やＤＲＡＭ個数を決定する）。
【００４４】
しかし、クロック速度には限界が存在するので、実行データレートを保証するのに必要な速度を、必ずしも設定することができるとは限らず、また、ＤＲＡＭ使用数が増えると、コストアップと共にデバイスの入出力数制限やパッケージの実装面積の圧迫、パッケージ上の配線が困難になってしまうなど、装置全体の実現性に影響を与えてしまい、結果として、メモリインタフェース速度を適切に向上させることができないといった問題があった。
【００４５】
本発明はこのような点に鑑みてなされたものであり、書き込み／読み出し効率を向上させ、メモリ個数を削減して、メモリインタフェース速度の向上を図ったメモリ制御装置を提供することを目的とする。
【課題を解決するための手段】
【００４６】
上記課題を解決するために、記憶領域に複数のバンクを持つメモリへのアクセス制御を行うメモリ制御装置が提供される。このメモリ制御装置は、受信したパケットデータをセグメントに分割するセグメント分割と、パケット品質情報の検出処理とを行うパケット分割部と、前記バンクへの格納先のアドレス管理を行うためのアドレス管理テーブルを有し、前記パケット品質情報毎に、前記パケットデータの格納状態を管理するメモリ管理部と、前記セグメントを、前記メモリに書き込み／読み出し可能なアクセス単位のデータに分割し、かつ前記アクセス単位毎の書き込みリクエストおよび読み出しリクエストを生成するセグメント／リクエスト情報分割部と、前記書き込みリクエストにもとづき前記バンクへ前記データを書き込み、前記読み出しリクエストにもとづき前記バンクから前記データを読み出すためのメモリアクセス制御を行うメモリアクセス制御部と、から構成されるメモリ制御部と、を備え、前記メモリアクセス制御部は、生成した前記書き込みリクエストまたは前記読み出しリクエストの内、バンク制約が生じてアクセス禁止となった前記バンクを回避して、アクセス可能な前記バンクに対応する前記書き込みリクエストまたは前記読み出しリクエストを抽出して、前記メモリに対して書き込み／読み出しアクセスを行い、前記メモリ制御部は、シリアルナンバー毎に格納領域が区分けされ、到着した前記メモリからの読み出しデータを格納して保持する保持メモリを含み、前記読み出しデータの並び替え／組み立てを行って、前記セグメントを出力するセグメント組立部をさらに有し、前記セグメント／リクエスト情報分割部は、セグメント単位に付与したリクエストＩＤと、前記セグメントをアクセス単位に分割した際の分割数と、前記アクセス単位に分割したときに前記データに付与したシリアルナンバーの内、先頭データに付与した先頭シリアルナンバーと、の項目から構成される分割情報を前記セグメント組立部へ送信し、前記セグメント組立部は、到着した前記読み出しデータを、前記保持メモリの中の、前記読み出しデータに付与されているシリアルナンバーと同じシリアルナンバーを持つ領域に格納し、前記分割情報にもとづいて、１セグメントを構成する前記読み出しデータの個数と、先頭に位置する前記読み出しデータとを認識して、セグメント単位にすべての前記読み出しデータが前記保持メモリに格納されるのを待ち、１セグメントを構成するすべての前記読み出しデータが前記保持メモリに格納された後は、前記リクエストＩＤの順に前記セグメントを出力する。
【発明の効果】
【００４８】
本発明のメモリ制御装置は、書き込み／読み出し効率を向上させ、メモリインタフェース速度の向上を図る。また、到着順序とは異なる順序でパケットを出力するＱｏＳ制御を実行した場合でも、パケット読み出し順序を保証することが可能になる。
【発明を実施するための最良の形態】
【００４９】
以下、本発明の実施の形態を図面を参照して説明する。図１はメモリ制御装置の原理図である。メモリ制御装置１は、パケット分割部１１、メモリ管理部１２、スケジューラ１３、出力振り分け部１４、メモリ制御部２から構成される。また、メモリ制御装置１には、メモリ（ＤＲＡＭ）３−１〜３−ｎを含むメモリ部３（パケットバッファに該当）が接続される。
【００５０】
パケット分割部１１は、受信したパケットデータをセグメント（セグメントデータとも表記する）に分割するセグメント分割と、パケット品質情報の検出処理とを行う。メモリ管理部１２は、バンクへの格納先のアドレス管理を行うためのアドレス管理テーブル１２ａを有し、パケット品質情報毎に、パケットデータの格納状態を管理する。
【００５１】
メモリ制御部２は、セグメント／リクエスト情報分割部２ａ、メモリアクセス制御部２０、セグメント組立部２ｂから構成される。セグメント／リクエスト情報分割部２ａは、セグメントを、メモリ３−１〜３−ｎに書き込み／読み出し可能なアクセス単位のデータに分割し、アクセス単位毎の書き込みリクエストおよび読み出しリクエストを生成する。メモリアクセス制御部２０は、書き込みリクエストにもとづきバンクへデータを書き込み、読み出しリクエストにもとづきバンクからデータを読み出すためのメモリアクセス制御を行う。
【００５２】
スケジューラ１３は、メモリ管理部１２を介して通知されたパケット品質情報にもとづいて、データの読み出し順を決定し、メモリ管理部１２へ送信する。出力振り分け部１４は、セグメント組立部２ｂで再構築された後のセグメントデータを後段の所定の処理部へ送信する。
【００５３】
ここで、メモリアクセス制御部２０は、生成した書き込みリクエストまたは読み出しリクエストの内、バンク制約が生じてアクセス禁止となったバンクを回避して、アクセス可能なバンクに対応する書き込みリクエストまたは読み出しリクエストを抽出して、メモリ３−１〜３−ｎに対して書き込み／読み出しアクセスを行う。
【００５４】
次に各構成要素について詳しく説明する。最初にパケット分割部１１について説明する。図２はパケット分割を示す図である。パケット分割部１１は、パケットデータをセグメントと呼ばれるブロックに分割してメモリ制御部２へ送信する。
【００５５】
パケットデータｐ１は、セグメントｓ１、ｓ２に分割され、パケットデータｐ２は、セグメントｓ１１、ｓ１２に分割されている。また、パケット分割部１１は、パケットヘッダからパケット品質情報（ＱｏＳ−ＩＤ、クラス情報など）を認識して、メモリ管理部１２へ送信する。
【００５６】
次にメモリ部３およびメモリ管理部１２について説明する。図３はメモリ３−１〜３−ｎの内部領域の構成を示す図であり、図４はセグメントのページ領域を示す図である。メモリ部３は、ＤＲＡＭ＃１〜＃ｎで構成される。また、ＤＲＡＭのメモリサイズは、ＱｏＳ性能から装置内で滞留するパケットの数にもとづき決定される。
【００５７】
各ＤＲＡＭは、バンクｂ０〜ｂ３の４バンクを有する。パケットデータを格納する場合は、各セグメントをページ領域に分けて、ページ単位で格納し、格納結果はメモリ管理部１２で管理される。
【００５８】
なお、図３中に示す一番小さな四角枠は、RowアドレスとColumnアドレスで指定される、１ページ分のデータが格納される領域を示している（１つのアクセス単位データまたは複数のアクセス単位データが格納される）。
【００５９】
格納手順としては、異なる番号のＤＲＡＭの同一番号のバンクに、同じセグメント内のページ領域のデータを格納していく。例えば、図４のパケットデータｐ１を例にして説明すると、パケットデータｐ１は、セグメントｓ１、ｓ２を持ち、セグメントｓ１はページＰ１−１〜Ｐ１−６を含み、セグメントｓ２はページＰ２−１〜Ｐ２−３を含む。
【００６０】
この場合、図３において、パケットデータｐ１のセグメントｓ１は、ＤＲＡＭ＃１のバンクｂ０の領域Ｐ１−１（ｓ１）にページＰ１−１は格納され、ＤＲＡＭ＃２のバンクｂ０の領域Ｐ１−２（ｓ１）にページＰ１−２は格納され、ＤＲＡＭ＃３のバンクｂ０の領域Ｐ１−３（ｓ１）にページＰ１−３は格納される。
【００６１】
さらに、ＤＲＡＭ＃４のバンクｂ０の領域Ｐ１−４（ｓ１）にページＰ１−４は格納され、ＤＲＡＭ＃５のバンクｂ０の領域Ｐ１−５（ｓ１）にページＰ１−５は格納され、ＤＲＡＭ＃６のバンクｂ０の領域Ｐ１−６（ｓ１）にページＰ１−６は格納される。このとき、ＤＲＡＭ＃７〜＃ｎのバンクｂ０の領域Ｐ１−７（ｓ１）〜Ｐ１−ｎ（ｓ１）は空きとなる。
【００６２】
また、セグメントｓ２は、ＤＲＡＭ＃１のバンクｂ１の領域Ｐ２−１（ｓ２）にページＰ２−１は格納され、ＤＲＡＭ＃２のバンクｂ１の領域Ｐ２−２（ｓ２）にページＰ２−２は格納され、ＤＲＡＭ＃３のバンクｂ１の領域Ｐ２−３（ｓ２）にページＰ２−３は格納される。このとき、ＤＲＡＭ＃４〜＃ｎのバンクｂ１の領域Ｐ２−４（ｓ２）〜Ｐ２−ｎ（ｓ２）は空きとなる。
【００６３】
図５はアドレス管理テーブル１２ａの構成を示す図である。メモリ管理部１２は、パケット分割部１１から送信されたパケット品質情報と、メモリ部３へのパケットデータの格納先のアドレス管理を行うためのアドレス管理テーブル１２ａを作成して、パケットデータがメモリ部３にどのように格納されているかの状態管理を行う。
【００６４】
アドレス管理テーブル１２ａは、キューＱ＃１〜キューＱ＃ｎで構成される。ここで、パケット品質情報がＱｏＳ−ＩＤとクラス単位を含むものである場合、例えば、ＱｏＳ−ＩＤ＝ａａとクラス単位＝ｃ１のキューは、キューＱ＃１に対応し、ＱｏＳ−ＩＤ＝ｂｂとクラス単位＝ｃ２のキューは、キューＱ＃２に対応するといったように、キューＱ＃１〜キューＱ＃ｎは、パケット品質情報に対応して存在する。
【００６５】
また、１つのキューは、セグメント単位にセグメントテーブル情報（セグメントデータが、メモリ部３にどのように格納されているかを示す情報）を格納する。例えば、図２のパケットデータｐ１のパケット品質情報に対応するキューがキューＱ＃２である場合、パケットデータｐ１のセグメントｓ１に関するセグメントテーブル情報と、パケットデータｐ１のセグメントｓ２に関するセグメントテーブル情報は、キューＱ＃２のセグメント＃１、＃２の領域に順に格納される。
【００６６】
一方、図２のパケットデータｐ２のパケット品質情報に対応するキューがキューＱ＃１であるならば、パケットデータｐ２のセグメントｓ１１に関するセグメントテーブル情報と、パケットデータｐ２のセグメントｓ１２に関するセグメントテーブル情報とは、キューＱ＃１のセグメント＃１、＃２の領域に順に格納される。
【００６７】
セグメントテーブル情報は、先頭ＤＲＡＭ番号／バンク番号、Row／Column、セグメント長、セグメントタイプ（先頭、中間、最終）の項目から構成される。先頭ＤＲＡＭ番号／バンク番号は、セグメントが格納されるＤＲＡＭの先頭番号と、バンク番号（異なるＤＲＡＭの同一番号のバンクに、セグメント内のページは格納されるので、その同一番号）を示す。Row／Columnは、先頭ＤＲＡＭ番号／バンク番号が示す領域のRowアドレス、Columnアドレスを示す。
【００６８】
セグメント長は、１つのセグメントのデータ長である。セグメントタイプは、パケットを構成するセグメントとして、先頭セグメント、中間セグメント、最終セグメントかのいずれかを示す。
【００６９】
例えば、パケットデータｐ１の場合、セグメントｓ１、ｓ２の２つのセグメントから構成されるので、セグメントｓ１は先頭セグメント、セグメントｓ２は最終セグメントとなる。
【００７０】
ここで、パケットデータｐ１を、図３で上述したようにメモリ部３に格納した場合のセグメントテーブル情報は、（セグメントｓ１：先頭ＤＲＡＭ番号／バンク番号＝ＤＲＡＭ＃１／ｂ０、該当のRowアドレス／Columnアドレス、セグメントｓ１のセグメント長、先頭）、（セグメントｓ２：先頭ＤＲＡＭ番号／バンク番号＝ＤＲＡＭ＃２／ｂ１、該当のRowアドレス／Columnアドレス、セグメントｓ２のセグメント長、最終）となり、例えば、キューＱ＃１のセグメント＃１、＃２に対して、これらのセグメントテーブル情報が各々格納される。
【００７１】
図６はアドレス管理テーブル１２ａへの格納動作を示す図である。パケットデータｐ３は、セグメントｓ３１〜ｓ３４から構成され、パケットデータｐ４はセグメントｓ４１、ｓ４２から構成される。パケットデータｐ３、ｐ４は、同じパケット品質情報を持つパケットであるとして、図に示すようなセグメントテーブル情報が同一のキューに格納される。
【００７２】
図７は書き込み／読み出しリクエスト情報を示す図である。書き込みリクエスト情報Ｒｑｗは、セグメントデータをメモリ部３のどの領域に書き込むかの情報が記されたリクエスト情報である。また、読み出しリクエスト情報Ｒｑｒは、メモリ部３のどの領域からセグメントデータを読み出すかの情報が記されたリクエスト情報である。書き込みリクエスト情報Ｒｑｗと読み出しリクエスト情報Ｒｑｒは、共に同じ項目を持つ。
【００７３】
メモリ管理部１２は、パケットデータをメモリ部３へ書き込む場合、セグメント単位に書き込みリクエスト情報を作成して、メモリ制御部２へ送信する。書き込みリクエスト情報は、先頭ＤＲＡＭ番号／バンク番号、Row／Column、セグメント長、リクエストＩＤの項目を持つ。
【００７４】
先頭ＤＲＡＭ番号／バンク番号は、セグメントを書き込むべきＤＲＡＭの先頭番号およびバンク番号が記され、Row／Columnは、先頭ＤＲＡＭ番号／バンク番号で示される領域のRowアドレス、Columnアドレスが記される。セグメント長は、書き込むべきセグメントのセグメント長が記される。また、セグメント毎にシーケンシャルなリクエストＩＤを付与する。
【００７５】
一方、メモリ管理部１２は、メモリ部３からパケットデータを読み出す場合、セグメント単位に、読み出しリクエスト情報を作成してメモリ制御部２へ送信する。読み出しリクエスト情報は、先頭ＤＲＡＭ番号／バンク番号、Row／Column、セグメント長、リクエストＩＤの項目を持つ。
【００７６】
先頭ＤＲＡＭ番号／バンク番号は、読み出すべきセグメントが格納されるＤＲＡＭの先頭番号およびバンク番号が記され、Row／Columnは、先頭ＤＲＡＭ番号／バンク番号で示される領域のRowアドレス、Columnアドレスが記される。セグメント長は、読み出しセグメントのセグメント長が記される。また、セグメント毎にシーケンシャルなリクエストＩＤが付与される。
【００７７】
なお、メモリ管理部１２における読み出しリクエスト情報の作成までの流れとしては、まず、スケジューラ１３が次に読み出すキューを決定して、そのキューのキューＩＤをメモリ管理部１２へ送信する。
【００７８】
メモリ管理部１２は、受信したキューＩＤからアドレス管理テーブル１２ａを引き、格納されているセグメントテーブル情報を抽出する。そして、シーケンシャルなリクエストＩＤをセグメントタイプの先頭から最終まで付与して、読み出しリクエスト情報を作成し、メモリ制御部２に送信する。
【００７９】
次にメモリ制御部２について説明する。メモリ制御部２では、パケット分割部１１から受信したセグメントデータを、メモリ管理部１２から送信された書き込みリクエスト情報にもとづいて、メモリ部３へ書き込む。また、スケジューリング後のセグメントデータを読み出すために、メモリ管理部１２から送信された読み出しリクエスト情報にもとづいて、メモリ部３から読み出す。
【００８０】
図８はメモリ制御部２の構成を示す図である。メモリ制御部２は、セグメント／リクエスト情報分割部２ａ、メモリアクセス制御部２０−１〜２０−ｎ、セグメント組立部２ｂから構成される。
【００８１】
メモリアクセス制御部２０−１〜２０−ｎは、ＤＲＡＭ個数に対応して設置され、１つのメモリアクセス制御部は、データＦｉＦｏ（First In First Out memory）２１（データメモリに該当）、書き込みリクエストＦｉＦｏ２２（書き込みリクエストメモリに該当）、読み出しリクエストＦｉＦｏ２３（読み出しリクエストメモリに該当）、ＦｉＦｏ選択制御部２４（メモリ選択制御部に該当）、メモリＩＦ（interface）部２５から構成される。
【００８２】
なお、データＦｉＦｏ２１、書き込みリクエストＦｉＦｏ２２、読み出しリクエストＦｉＦｏ２３はそれぞれ、ＤＲＡＭバンク数と同じ数分配置される。例えば、４バンク構成のＤＲＡＭ個数が６個あるならば、メモリアクセス制御部は６個存在し、１つのメモリアクセス制御部内にデータＦｉＦｏ２１は４個配置するので、全体では２４個（＝４×６）のデータＦｉＦｏ２１が必要となる。書き込みリクエストＦｉＦｏ２２および読み出しリクエストＦｉＦｏ２３についても同様である。
【００８３】
メモリＩＦ部２５は、メモリアクセス制御部２０−１〜２０−ｎとメモリ部３とのインタフェース制御を行う。例えば、メモリアクセス制御部２０−１〜２０−ｎから出力されたコマンドおよびアドレスをメモリ部３のインタフェースに沿ったデータ形式に変換したり、または書き込みデータのＤＤＲ（Double Data Rate）化やメモリ部３から読み出しデータの抽出を行う。
【００８４】
次にセグメント／リクエスト情報分割部２ａについて説明する。セグメント／リクエスト情報分割部２ａは、受信したセグメントデータをＤＲＡＭのアクセス単位に分割し、分割したデータにシリアルナンバー（ＳＮ）を付与する。そして、受信した書き込みリクエスト情報にもとづいて、後段に位置する該当メモリアクセス制御部内のデータＦｉＦｏ２１へ振り分ける。
【００８５】
また、このとき、アクセス単位に分割されたデータ毎に対応する書き込みリクエストを生成し、書き込みリクエストにシリアルナンバーを付与して、後段に位置する該当メモリアクセス制御部内の書き込みリクエストＦｉＦｏ２２へ振り分ける。
【００８６】
さらに、読み出しリクエスト情報を受信した場合は、アクセス単位に分割されたデータ毎に対応する読み出しリクエストを生成し、読み出しリクエストにシリアルナンバーを付与して、後段に位置する該当メモリアクセス制御部内の読み出しリクエストＦｉＦｏ２３へ振り分ける。
【００８７】
図９はセグメントデータおよび書き込みリクエストの振り分け動作を示す図である。なお、４バンク（バンク＃０〜＃３）構成のＤＲＡＭが６個（ＤＲＡＭ＃１〜＃６）配置されているとする。セグメント／リクエスト情報分割部２ａは、セグメントｓ１をＤＲＡＭアクセス単位であるページ領域Ｐ１−１〜Ｐ１−６に分割する。
【００８８】
ここで、セグメントｓ１に対して、セグメント／リクエスト情報分割部２ａは、リクエストＩＤ＝１の書き込みリクエスト情報を受信して、この書き込みリクエスト情報に、先頭ＤＲＡＭ＃１、バンク＃２、Row／Column＝A／Bが記載されていたとする。
【００８９】
この場合、ＤＲＡＭ格納先は、先頭ＤＲＡＭ＃１およびバンク＃２と認識できるので、ページＰ１−１をＤＲＡＭ＃１／バンク＃２に該当するデータＦｉＦｏへ送信する。すなわち、ＤＲＡＭ＃１用のメモリアクセス制御部内に配置されているデータＦｉＦｏ２１の中の、バンク＃２に対応するデータＦｉＦｏへページＰ１−１を送信するということである。
【００９０】
一方、セグメント／リクエスト情報分割部２ａは、ページＰ１−１の格納先のＤＲＡＭ＃１／バンク＃２のRow／Columnアドレスとシリアルナンバー（ｍ）とをページＰ１−１に対する書き込みリクエスト（書き込みリクエストＷ１とする）として生成し（書き込みリクエストは、アクセス単位毎に（ページ単位毎に）生成される）、この書き込みリクエストＷ１をＤＲＡＭ＃１／バンク＃２に該当する書き込みリクエストＦｉＦｏへ送信する。
【００９１】
すなわち、ＤＲＡＭ＃１用のメモリアクセス制御部内に配置されている書き込みリクエストＦｉＦｏ２２の中の、バンク＃２に対応する書き込みリクエストＦｉＦｏへ書き込みリクエストＷ１を送信する。
【００９２】
次にページＰ１−２のＤＲＡＭ格納先は、ＤＲＡＭ＃２およびバンク＃２と認識できるので（先頭ＤＲＡＭ番号が＃１であったので、次の格納先はＤＲＡＭ＃２とわかる、なお、バンクについては上述したようにすべて同一番号のバンクを用いる）、ページＰ１−２をＤＲＡＭ＃２／バンク＃２に該当するデータＦｉＦｏへ送信する。
【００９３】
すなわち、ＤＲＡＭ＃２用のメモリアクセス制御部内に配置されているデータＦｉＦｏ２１の中の、バンク＃２に対応するデータＦｉＦｏへページＰ１−２を送信する。
そして、セグメント／リクエスト情報分割部２ａは、ページＰ１−２の格納先のＤＲＡＭ＃２／バンク＃２のRow／Columnアドレスとシリアルナンバー（ｍ＋１）とをページＰ１−２に対する書き込みリクエスト（書き込みリクエストＷ２とする）として生成し、この書き込みリクエストＷ２をＤＲＡＭ＃２／バンク＃２に該当する書き込みリクエストＦｉＦｏへ送信する。
【００９４】
すなわち、ＤＲＡＭ＃２用のメモリアクセス制御部内に配置されている書き込みリクエストＦｉＦｏ２２の中の、バンク＃２に対応する書き込みリクエストＦｉＦｏへ書き込みリクエストＷ２を送信する。
【００９５】
以降同様にして、ページＰ１−３〜Ｐ１−６と、これらに対応する書き込みリクエストとが、該当ＦｉＦｏへ振り分けられる。先頭ＤＲＡＭ番号が＃１から始まったので、その後シーケンシャルに、ＤＲＡＭ＃２→ＤＲＡＭ＃３→ＤＲＡＭ＃４→ＤＲＡＭ＃５→ＤＲＡＭ＃６と振り分けられている。
【００９６】
なお、書き込みリクエスト情報にはセグメント長が記載されているので、そのセグメント長をアクセス単位で割った個数分の書き込みリクエストが、先頭ＤＲＡＭ番号にもとづきシーケンシャルに生成されるものである。
【００９７】
次にセグメント／リクエスト情報分割部２ａは、セグメントｓ２をＤＲＡＭアクセス単位であるページ領域Ｐ２−１〜Ｐ２−３に分割する。セグメントｓ２に対して、セグメント／リクエスト情報分割部２ａは、リクエストＩＤ＝２の書き込みリクエスト情報を受信して、この書き込みリクエスト情報に、先頭ＤＲＡＭ＃３、バンク＃３、Row／Column＝C／Dが記載されていたとする。
【００９８】
この場合、ＤＲＡＭ格納先は、先頭ＤＲＡＭ＃３およびバンク＃３と認識できるので、ページＰ２−１をＤＲＡＭ＃３／バンク＃３に該当するデータＦｉＦｏへ送信する。すなわち、ＤＲＡＭ＃３用のメモリアクセス制御部内に配置されているデータＦｉＦｏ２１の中の、バンク＃３に対応するデータＦｉＦｏへページＰ２−１を送信する。
【００９９】
そして、セグメント／リクエスト情報分割部２ａは、ページＰ２−１の格納先のＤＲＡＭ＃３／バンク＃３のRow／Columnアドレスとシリアルナンバー（ｍ＋６）とをページＰ２−１に対する書き込みリクエスト（書き込みリクエストＷ３とする）として生成し、この書き込みリクエストＷ３をＤＲＡＭ＃３／バンク＃３に該当する書き込みリクエストＦｉＦｏへ送信する。
【０１００】
すなわち、ＤＲＡＭ＃３用のメモリアクセス制御部内に配置されている書き込みリクエストＦｉＦｏ２２の中の、バンク＃３に対応する書き込みリクエストＦｉＦｏへ書き込みリクエストＷ３を送信する。
【０１０１】
以降同様にして、ページＰ２−２、Ｐ２−３と、これらに対応する書き込みリクエストとが、該当ＦｉＦｏへ振り分けられる（先頭ＤＲＡＭ番号が＃３から始まったので、その後シーケンシャルに、ＤＲＡＭ＃４→ＤＲＡＭ＃５と振り分けられる）。
【０１０２】
図１０は読み出しリクエストの振り分け動作を示す図である。セグメント／リクエスト情報分割部２ａは、リクエストＩＤ＝１の読み出しリクエスト情報を受信して、この読み出しリクエスト情報に、先頭ＤＲＡＭ＃５、バンク＃４、Row／Column＝E／Fが記載されていたとする。
【０１０３】
この場合、ＤＲＡＭ読み出し先は、先頭ＤＲＡＭ＃５およびバンク＃４と認識できるので、読み出し先のＤＲＡＭ＃５／バンク＃４のRow／Columnアドレスとシリアルナンバー（ｎ）とを読み出しリクエスト（読み出しリクエストＲ１とする）として生成し（読み出しリクエストは、アクセス単位毎に（ページ単位毎に）生成される）、ＤＲＡＭ＃５／バンク＃４に該当する読み出しリクエストＦｉＦｏへ送信する。
【０１０４】
すなわち、ＤＲＡＭ＃５用のメモリアクセス制御部内に配置されている読み出しリクエストＦｉＦｏ２３の中の、バンク＃４に対応する読み出しリクエストＦｉＦｏへ読み出しリクエストＲ１を送信する。
【０１０５】
以降同様にして、読み出しリクエストが該当読み出しＦｉＦｏへ振り分けられる。先頭ＤＲＡＭ番号が＃５から始まったので、その後シーケンシャルに、ＤＲＡＭ＃６→ＤＲＡＭ＃１→ＤＲＡＭ＃２と振り分けられる。
【０１０６】
なお、読み出しリクエスト情報にはセグメント長が記載されているので、そのセグメント長をアクセス単位で割った個数分の読み出しリクエストが、先頭ＤＲＡＭ番号にもとづきシーケンシャルに生成されるものである。リクエストＩＤ＝２、３の読み出しリクエスト情報にもとづく読み出しリクエストの生成および振り分けについても以降同様にして行われるので説明は省略する。
【０１０７】
次にＦｉＦｏ選択制御部２４について説明する。図１１はＦｉＦｏ選択制御部２４の構成を示す図である。ＦｉＦｏ選択制御部２４は、ＦｉＦｏ選択部２４ａ（メモリ選択部に該当）、リフレッシュ管理部２４ｂ、書き込み／読み出し切り替え管理部（以下、Ｗ／Ｒ切り替え管理部）２４ｃ、バンク待ち受け管理部２４ｄから構成される。
【０１０８】
ＦｉＦｏ選択部２４ａは、リフレッシュ管理部２４ｂ、Ｗ／Ｒ切り替え管理部２４ｃ、バンク待ち受け管理部２４ｄによって通知された内容にもとづいて、ＦｉＦｏ選択制御を行う。
【０１０９】
基本的なＦｉＦｏ選択制御では、書き込みリクエストＦｉＦｏ２２および読み出しリクエストＦｉＦｏ２３から出力される書き込みリクエストおよび読み出しリクエスト中のシリアルナンバーによって、次に選択すべきリクエストＦｉＦｏを決定する。そして、ＤＲＡＭへアクセスするためのコマンド（書き込みコマンド／読み出しコマンド／リフレッシュコマンド）と、アドレス（バンク番号／Rowアドレス／Columnアドレス）を生成する。
【０１１０】
リフレッシュ管理部２４ｂでは、ＤＲＡＭは内部記憶情報を保持するため、定期的にリフレッシュ（ＤＲＡＭの記憶素子に電荷を補充してデータ損失を防ぐ動作）を行う必要があるので、一定の時間間隔でリフレッシュ指示をＦｉＦｏ選択部２４ａへ送信する。
【０１１１】
ＦｉＦｏ選択部２４ａは、リフレッシュ指示を受信すると、実際のリフレッシュをかけるためのリフレッシュコマンドを該当ＤＲＡＭへ送信する。ただし、ＤＲＡＭへの書き込みアクセス中にリフレッシュ指示を受信したときには、書き込みアクセスから読み出しアクセスへ切り替わるまで、リフレッシュ動作を待たせておき（リフレッシュコマンドを出力しないでおき）、書き込みリクエストＦｉＦｏ２２の選択が終了して、書き込みアクセスから読み出しアクセスへ切り替える時に、リフレッシュコマンドをＤＲＡＭへ送信する。
【０１１２】
同様に、ＤＲＡＭへの読み出しアクセス中にリフレッシュ指示を受信したときには、読み出しアクセスから書き込みアクセスへ切り替わるまで、リフレッシュ動作を待たせておき（リフレッシュコマンドを出力しないでおき）、読み出しリクエストＦｉＦｏ２３の選択が終了して、読み出しアクセスから書き込みアクセスへ切り替える時に、リフレッシュコマンドをＤＲＡＭへ送信する。
【０１１３】
Ｗ／Ｒ切り替え管理部２４ｃは、ＤＲＡＭへの書き込みアクセスおよび読み出しアクセスを均等にするための制御を行う。制御方法としては、ＤＲＡＭに対する書き込みコマンド回数と読み出しコマンド回数とをカウントして、カウント値が規定数に達したときには、書き込みから読み出しへ、または読み出しから書き込みへのアクセス切り替えを行うように、切り替え指示をＦｉＦｏ選択部２４ａへ出力する。
【０１１４】
例えば、ＤＲＡＭに書き込みアクセスを連続して行っているときに、書き込みアクセス回数が規定数に達した場合は、次のアクセスから読み出しアクセスに切り替えるように切り替え指示を出力する。ＦｉＦｏ選択部２４ａでは、Ｗ／Ｒ切り替え管理部２４ｃから書き込み指示を受けている場合には、書き込みリクエストＦｉＦｏ２２を選択し、読み出し指示を受けている場合には、読み出しリクエストＦｉＦｏ２３を選択する。
【０１１５】
バンク待ち受け管理部２４ｄは、図１６、図１７で上述したバンク制約を管理するものであり、各バンクに対して、どのバンクが現在アクセス可能で、どのバンクが現在アクセス禁止かを示すアクセス状態信号をＦｉＦｏ選択部２４ａへ送信する。ＦｉＦｏ選択部２４ａでは、アクセス状態信号を受信すると、各バンクのバンク制約状態を認識し、アクセス禁止でないバンクのリクエストＦｉＦｏを選択する。
【０１１６】
図１２はＦｉＦｏ選択部２４ａのアクセス・スケジューリングを示す図である。書き込みリクエストＦｉＦｏ２２の出力先頭位置に、書き込みリクエストＦｉＦｏ（バンク＃０）には、書き込みリクエスト（ｍ＋１）が格納され、書き込みリクエストＦｉＦｏ（バンク＃１）には、書き込みリクエスト（ｍ）が格納され、書き込みリクエストＦｉＦｏ（バンク＃２）には、書き込みリクエスト（ｍ＋３）が格納され、書き込みリクエストＦｉＦｏ（バンク＃３）には、書き込みリクエスト（ｍ＋４）が格納されているとする。なお、括弧内の表記は、書き込みリクエストのシリアルナンバーを示す。
【０１１７】
一方、読み出しリクエストＦｉＦｏ２３の出力先頭位置に、読み出しリクエストＦｉＦｏ（バンク＃０）には、読み出しリクエスト（ｎ＋３）が格納され、読み出しリクエストＦｉＦｏ（バンク＃１）には、読み出しリクエスト（ｎ）が格納され、読み出しリクエストＦｉＦｏ（バンク＃２）には、読み出しリクエスト（ｎ＋１）が格納され、読み出しリクエストＦｉＦｏ（バンク＃３）には、読み出しリクエスト（ｎ＋２）が格納されているとする。なお、括弧内の表記は、読み出しリクエストのシリアルナンバーを示す。また、図中、バンク制約時間（バンクアクセス禁止時間）を２アクセス単位分の時間としている。
【０１１８】
〔Ｓ１〕Ｗ／Ｒ切り替え管理部２４ｃ、バンク待ち受け管理部２４ｄおよびリフレッシュ管理部２４ｂからのスケジューリング通知として、書き込み指示が出され、バンク＃０〜＃３はすべてアクセス可能状態（ＯＫ）であり、リフレッシュ指示はDisable（リフレッシュは行わない）となっている。
【０１１９】
書き込みリクエストＦｉＦｏ（バンク＃０〜バンク＃３）から読み出させる書き込みリクエストのシリアルナンバーは、ｍ＋１、ｍ、ｍ＋３、ｍ＋４であるので、ＦｉＦｏ選択部２４ａは、最も番号の若いシリアルナンバーｍが格納されている書き込みリクエストＦｉＦｏ（バンク＃１）を選択し、書き込みリクエストＦｉＦｏ（バンク＃１）から書き込みリクエスト（ｍ）を抽出する。
【０１２０】
そして、抽出した書き込みリクエスト（ｍ）にもとづいて、書き込みコマンドおよび書き込みアドレス（バンク＃１／Row／Column）を生成し、ＤＲＡＭへ送信する（メモリＩＦ部２５を介して、該当のデータをデータＦｉＦｏ２１から読み出して、書き込みコマンドおよび書き込みアドレスを用いて、ＤＲＡＭへの書き込み処理が行われる）。
【０１２１】
なお、図中の、アドレス表記の箇所の例えば、〔ｍ〕とは、シリアルナンバーｍのリクエストに関するアドレス（ここでは、バンク＃１とバンク＃１のRow／Columnアドレス）であることを示す。
【０１２２】
〔Ｓ２〕スケジューリング通知として、書き込み指示が出される。また、バンク＃１はアクセス禁止となり、バンク＃０、＃２、＃３はアクセス可能である。リフレッシュ指示はDisableである。
【０１２３】
バンク＃０、＃２、＃３に対応する書き込みリクエストＦｉＦｏ（バンク＃０、＃２、＃３）から読み出せる書き込みリクエストのシリアルナンバーは、ｍ＋１、ｍ＋３、ｍ＋４であるので、ＦｉＦｏ選択部２４ａは、最も番号の若いシリアルナンバーｍ＋１が格納されている書き込みリクエストＦｉＦｏ（バンク＃０）を選択し、書き込みリクエストＦｉＦｏ（バンク＃０）から書き込みリクエスト（ｍ＋１）を抽出する。そして、抽出した書き込みリクエスト（ｍ＋１）にもとづいて、書き込みコマンドおよび書き込みアドレス（バンク＃０／Row／Column）を生成し、ＤＲＡＭへ送信する。
【０１２４】
〔Ｓ３〕スケジューリング通知として、書き込み指示が出される。また、バンク＃０、＃１はアクセス禁止となり、バンク＃２、＃３はアクセス可能である。リフレッシュ指示はDisableである。
【０１２５】
バンク＃２、＃３に対応する書き込みリクエストＦｉＦｏ（バンク＃２、＃３）から読み出せる書き込みリクエストのシリアルナンバーは、ｍ＋３、ｍ＋４であるので、ＦｉＦｏ選択部２４ａは、最も番号の若いシリアルナンバーｍ＋３が格納されている書き込みリクエストＦｉＦｏ（バンク＃２）を選択し、書き込みリクエストＦｉＦｏ（バンク＃２）から書き込みリクエスト（ｍ＋３）を抽出する。そして、抽出した書き込みリクエスト（ｍ＋３）にもとづいて、書き込みコマンドおよび書き込みアドレス（バンク＃２／Row／Column）を生成し、ＤＲＡＭへ送信する。
【０１２６】
〔Ｓ４〕スケジューリング通知として、書き込み指示が出される。バンク＃１のバンク制約は解除されてアクセス可能となる、また、バンク＃０、＃２はアクセス禁止となり、バンク＃３はアクセス可能である。リフレッシュ指示はDisableである。
【０１２７】
バンク＃１、＃３に対応する書き込みリクエストＦｉＦｏ（バンク＃１、＃３）から読み出せる書き込みリクエストのシリアルナンバーは、ｍ＋２、ｍ＋４であるので（書き込みリクエストＦｉＦｏ（バンク＃１）の２番目には書き込みリクエスト（ｍ＋２）が格納されている）、ＦｉＦｏ選択部２４ａは、最も番号の若いシリアルナンバーｍ＋２が格納されている書き込みリクエストＦｉＦｏ（バンク＃１）を選択し、書き込みリクエストＦｉＦｏ（バンク＃１）から書き込みリクエスト（ｍ＋２）を抽出する。そして、抽出した書き込みリクエスト（ｍ＋２）にもとづいて、書き込みコマンドおよび書き込みアドレス（バンク＃１／Row／Column）を生成し、ＤＲＡＭへ送信する。
【０１２８】
〔Ｓ５〕スケジューリング通知として、書き込み指示から読み出し指示へ切り替わる。バンク＃０のバンク制約は解除されてアクセス可能となる、また、バンク＃１、＃２はアクセス禁止となり、バンク＃３はアクセス可能である。リフレッシュ指示はDisableである。
【０１２９】
なお、書き込みから読み出しへの切り替えが生じたので、切り替え制約が発生し、ＦｉＦｏ選択部２４ａは、切り替え制約が終わるまでＦｉＦｏ選択の動作を停止する。したがって、コマンドおよびアドレスの出力も行わない。
【０１３０】
〔Ｓ６〕切り替え制約が終了する。スケジューリング通知として、読み出し指示が出される。バンク＃２のバンク制約は解除されてアクセス可能となる、また、バンク＃１はアクセス禁止となり、バンク＃０、＃３はアクセス可能である。リフレッシュ指示はEnable（リフレッシュを行う）である。
【０１３１】
バンク＃０、＃２、＃３に対応する読み出しリクエストＦｉＦｏ（バンク＃０、＃２、＃３）から読み出せる読み出しリクエストのシリアルナンバーは、ｎ＋３、ｎ＋１、ｎ＋２であるので、ＦｉＦｏ選択部２４ａは、最も番号の若いシリアルナンバーｎ＋１が格納されている読み出しリクエストＦｉＦｏ（バンク＃２）を選択し、読み出しリクエストＦｉＦｏ（バンク＃２）から読み出しリクエスト（ｎ＋１）を抽出する。
【０１３２】
そして、抽出した読み出しリクエスト（ｎ＋１）にもとづいて、読み出しコマンドおよび読み出しアドレス（バンク＃２／Row／Column）を生成して、ＤＲＡＭへ送信し、該当データを読み出す（メモリＩＦ部２５を介して、読み出しコマンドおよび読み出しアドレスを用いて、ＤＲＡＭからの読み出し処理が行われる）。
【０１３３】
なお、ここでは、リフレッシュ指示がEnableとなったので、本来はＤＲＡＭに対してリフレッシュコマンドを送信するのであるが、現在は読み出しアクセスの途中なので、読み出しアクセスが終わるまで、リフレッシュコマンドは出力しない。
【０１３４】
〔Ｓ７〕スケジューリング通知として、読み出し指示が出される。バンク＃２はアクセス禁止となり、バンク＃０、＃１、＃３はアクセス可能である。リフレッシュ指示はEnableである（ステップＳ６でEnableを受信してから、ＦｉＦｏ選択部２４ａはリフレッシュコマンドを出していないので、リフレッシュ管理部２４ｂでは、Enableのリフレッシュ指示を継続して出力している）。
【０１３５】
バンク＃０、＃１、＃３に対応する読み出しリクエストＦｉＦｏ（バンク＃０、＃１、＃３）から読み出せる読み出しリクエストのシリアルナンバーは、ｎ＋３、ｎ、ｎ＋２であるので、ＦｉＦｏ選択部２４ａは、最も番号の若いシリアルナンバーｎが格納されている読み出しリクエストＦｉＦｏ（バンク＃１）を選択し、読み出しリクエストＦｉＦｏ（バンク＃１）から読み出しリクエスト（ｎ）を抽出する。そして、抽出した読み出しリクエスト（ｎ）にもとづいて、読み出しコマンドおよび読み出しアドレス（バンク＃１／Row／Column）を生成して、ＤＲＡＭへ送信し、該当データを読み出す。
【０１３６】
〔Ｓ８〕スケジューリング通知として、読み出し指示が出される。バンク＃１、＃２はアクセス禁止となり、バンク＃０、＃３はアクセス可能である。リフレッシュ指示はEnableである。
【０１３７】
バンク＃０、＃３に対応する読み出しリクエストＦｉＦｏ（バンク＃０、＃３）から読み出せる読み出しリクエストのシリアルナンバーは、ｎ＋３、ｎ＋２であるので、ＦｉＦｏ選択部２４ａは、最も番号の若いシリアルナンバーｎ＋２が格納されている読み出しリクエストＦｉＦｏ（バンク＃３）を選択し、読み出しリクエストＦｉＦｏ（バンク＃３）から読み出しリクエスト（ｎ＋２）を抽出する。そして、抽出した読み出しリクエスト（ｎ＋２）にもとづいて、読み出しコマンドおよび読み出しアドレス（バンク＃３／Row／Column）を生成して、ＤＲＡＭへ送信し、該当データを読み出す。
【０１３８】
〔Ｓ９〕スケジューリング通知として、読み出し指示が出される。バンク＃１、＃３はアクセス禁止となり、バンク＃０、＃２はアクセス可能である。リフレッシュ指示はEnableである。
【０１３９】
バンク＃０、＃２に対応する読み出しリクエストＦｉＦｏ（バンク＃０、＃２）から読み出せる読み出しリクエストのシリアルナンバーは、ｎ＋３、ｎ＋４であるので（読み出しリクエストＦｉＦｏ（バンク＃３）の２番目には読み出しリクエスト（ｎ＋４）が格納されている）、ＦｉＦｏ選択部２４ａは、最も番号の若いシリアルナンバーｎ＋３が格納されている読み出しリクエストＦｉＦｏ（バンク＃０）を選択し、読み出しリクエストＦｉＦｏ（バンク＃０）から読み出しリクエスト（ｎ＋３）を抽出する。そして、抽出した読み出しリクエスト（ｎ＋３）にもとづいて、読み出しコマンドおよび読み出しアドレス（バンク＃０／Row／Column）を生成して、ＤＲＡＭへ送信し、該当データを読み出す。
【０１４０】
〔Ｓ１０〕スケジューリング通知として、読み出し指示から書き込み指示へ切り替わる。バンク＃０、＃３はアクセス禁止となり、バンク＃１、＃２はアクセス可能である。ＦｉＦｏ選択部２４ａは、読み出しアクセスが終了し、書き込みアクセスへ移行することを認識すると、リフレッシュコマンドを該当ＤＲＡＭへ送信する。したがって、リフレッシュコマンドが出されたことで、リフレッシュ管理部２４ｂは、リフレッシュ指示をDisableとする。
【０１４１】
次にセグメント組立部２ｂについて説明する。ＤＲＡＭから読み出されるデータは、元の順番どおりに読み出されるものとは限らないので、セグメント組立部２ｂでは、メモリ部３から送信された読み出しデータを一旦保持し、セグメント／リクエスト情報分割部２ａから送信される分割情報にもとづいて、読み出しデータを元の順番に並び替えて、セグメントを組み立てて再構築した後に、セグメントデータを出力する。
【０１４２】
図１３はセグメント組立部２ｂの動作を示す図であり、図１４は分割情報を示す図である。セグメント組立部２ｂに対して、時間ｔ１で読み出しデータ（ｎ＋１）が到着し、時間ｔ２で読み出しデータ（ｎ）が到着し、時間ｔ３で読み出しデータ（ｎ＋２）が到着し、時間ｔ４で読み出しデータ（ｎ＋５）が到着し、時間ｔ５で読み出しデータ（ｎ＋４）が到着し、時間ｔ６で読み出しデータ（ｎ＋３）が到着するものとする。なお、括弧内の表記は読み出しデータのシリアルナンバーである。
【０１４３】
一方、セグメント／リクエスト情報分割部２ａからセグメント組立部２ｂに分割情報が送信される。分割情報は、リクエストＩＤ、先頭シリアルナンバー、分割数の項目から構成される。
【０１４４】
図１４に示す、分割情報Ｄ１は、リクエストＩＤ＝１、先頭シリアルナンバー＝ｎ、分割数＝４となっている。これはリクエストＩＤ＝１のセグメントに対して、先頭のシリアルナンバーはｎであり、このセグメントは４つのデータに分割されていることを示している。
【０１４５】
また、分割情報Ｄ２は、リクエストＩＤ＝２、先頭シリアルナンバー＝ｎ＋４、分割数＝２となっている。これはリクエストＩＤ＝２のセグメントに対して、先頭のシリアルナンバーはｎ＋４であり、このセグメントは２つのデータに分割されていることを示している。
【０１４６】
セグメント組立部２ｂは、読み出しデータを保持する保持メモリ２ｂ−１を有し、保持メモリ２ｂ−１は、シリアルナンバー毎に格納領域が区分けされており、到着した読み出しデータは同一シリアルナンバーの領域に格納されて保持される。
【０１４７】
〔ｔ１〕時間ｔ１で到着した読み出しデータ（ｎ＋１）は、格納領域（ｎ＋１）に格納される。
〔ｔ２〕時間ｔ２で到着した読み出しデータ（ｎ）は、格納領域（ｎ）に格納される。
【０１４８】
〔ｔ３〕時間ｔ３で到着した読み出しデータ（ｎ＋２）は、格納領域（ｎ＋２）に格納される。
〔ｔ４〕時間ｔ４で到着した読み出しデータ（ｎ＋５）は、格納領域（ｎ＋５）に格納される。
【０１４９】
〔ｔ５〕時間ｔ５で到着した読み出しデータ（ｎ＋４）は、格納領域（ｎ＋４）に格納される。セグメント組立部２ｂは、分割情報Ｄ２から、読み出しデータ（ｎ＋４）と読み出しデータ（ｎ＋５）は、１つのセグメントを構成することを認識する。ただし、ここでは、このセグメントは、リクエストＩＤ＝２であるため、リクエストＩＤ＝１のセグメントが構成されないうちは、リクエストＩＤ＝２のセグメントを保持しておき、出力は行わない。
【０１５０】
〔ｔ６〕時間ｔ６で到着した読み出しデータ（ｎ＋３）は、格納領域（ｎ＋３）に格納される。セグメント組立部２ｂは、分割情報Ｄ１から、読み出しデータ（ｎ）〜読み出しデータ（ｎ＋３）は、リクエストＩＤ＝１の１つのセグメントを構成することを認識する。そして、リクエストＩＤ＝１のセグメントデータを出力し、その後、リクエストＩＤ＝２のセグメントデータも出力する。
【０１５１】
このように、セグメント組立部２ｂでは、セグメント単位ですべてのデータが到着するのを待ち、また、リクエストＩＤの状態監視を行ってリクエストＩＤ順にセグメントデータを出力する。上記のような制御を行って、パケットデータを再構築することにより、到着順序とは異なる順序でパケットを出力するＱｏＳ制御を実行した場合でも、パケット読み出し順序を保証することが可能になる。
【０１５２】
次にメモリ制御装置１を適用した装置例としてパケットスイッチ装置の構成について示す。図１５はパケットスイッチ装置の構成を示す図である。パケットスイッチ装置５０は、受信側インタフェースカード５１−１〜５１−ｎ、スイッチデバイス５２、送信側インタフェースカード５３−１〜５３−ｎから構成される。
【０１５３】
受信側インタフェースカード５１−１〜５１−ｎはそれぞれ、物理（ＰＨＹ）／ＭＡＣ（Media Access Control）処理部５１ａ、トラフィックマネージャ５１ｂから構成され、トラフィックマネージャ５１ｂに、メモリ制御装置１およびメモリ部３が搭載する。
【０１５４】
スイッチデバイス５２は、ｎ×ｎスイッチ５２−１〜５２−ｍから構成される。送信側インタフェースカード５３−１〜５３−ｎはそれぞれ、ＭＡＣ／物理（ＰＨＹ）処理部５３ａ、トラフィックマネージャ５３ｂから構成され、トラフィックマネージャ５３ｂに、メモリ制御装置１およびメモリ部３が搭載する。
【０１５５】
受信側インタフェースカード５１−１〜５１−ｎにおいて、ＰＨＹ／ＭＡＣ処理部５１ａは、ＧｂＥ／１０ＧｂＥ（ＧｂＥ：ギガビットイーサネット（イーサネットは登録商標））の物理層における受信処理および受信ＭＡＣ処理を行う。トラフィックマネージャ５１ｂは、入力データ処理を行う（ＱｏＳ制御を含む）。
【０１５６】
送信側インタフェースカード５３−１〜５３−ｎにおいて、トラフィックマネージャ５３ｂは、出力データ処理を行う（ＱｏＳ制御を含む）。ＭＡＣ／ＰＨＹ処理部５３ａは、ＧｂＥ／１０ＧｂＥの物理層における送信処理および送信ＭＡＣ処理を行う。スイッチデバイス５２のｎ×ｎスイッチ５２−１〜５２−ｍは、トラフィックマネージャ５１ｂから出力されるデータの中のスイッチング情報にもとづいて、スイッチ処理を行い、該当宛先の送信側インタフェースカードへ送信する。
【０１５７】
以上説明したように、アクセス制限を持つメモリ３−１〜３−ｎに、パケットデータを書き込み、スケジューラ１３のＱｏＳ制御により読み出し順序を決定して、メモリ３−１〜３−ｎからデータを読み出す構成のメモリ制御装置１において、受信したパケットデータを一定のアクセス単位に分割してデータＦｉＦｏ２１に格納し、書き込みリクエストを書き込みリクエストＦｉＦｏ２２に格納し、読み出しリクエストを読み出しリクエストＦｉＦｏ２３に格納する。
【０１５８】
そして、バンク制約が生じてアクセス禁止となったバンクを回避して、アクセス可能なバンクに対応する書き込みリクエストＦｉＦｏ２２からアクセス単位の書き込みリクエストを抽出し、またはアクセス可能なバンクに対応する読み出しリクエストＦｉＦｏ２３からアクセス単位の読み出しリクエストを抽出して、メモリ３−１〜３−ｎに対して書き込み／読み出しアクセスを行う構成とした。
【０１５９】
これにより、アクセス単位毎に書き込みリクエストおよび読み出しリクエストを、アクセス可能なバンクに対して発生させるので、従来のＤＲＡＭアクセス制御のように、無駄な空きアクセスが生じることはなく、バンク制約時のアクセス停止時間と空アクセスを削減することができ、メモリインタフェース速度の向上を図ることが可能になる。また、１つのメモリに対するデータ送受信効率が上がり、実行レートの向上と使用するメモリ個数の削減も可能になる。
【図面の簡単な説明】
【０１６０】
【図１】メモリ制御装置の原理図である。
【図２】パケット分割を示す図である。
【図３】メモリの内部領域の構成を示す図である。
【図４】セグメントのページ領域を示す図である。
【図５】アドレス管理テーブルの構成を示す図である。
【図６】アドレス管理テーブルへの格納動作を示す図である。
【図７】書き込み／読み出しリクエスト情報を示す図である。
【図８】メモリ制御部の構成を示す図である。
【図９】セグメントデータおよび書き込みリクエストの振り分け動作を示す図である。
【図１０】読み出しリクエストの振り分け動作を示す図である。
【図１１】ＦｉＦｏ選択制御部の構成を示す図である。
【図１２】ＦｉＦｏ選択部のアクセス・スケジューリングを示す図である。
【図１３】セグメント組立部の動作を示す図である。
【図１４】分割情報を示す図である。
【図１５】パケットスイッチ装置の構成を示す図である。
【図１６】ＤＲＡＭインタフェースのタイムチャートを示す図である。
【図１７】ＤＲＡＭインタフェースのタイムチャートを示す図である。
【図１８】パケットの構成を示す図である。
【図１９】転送レートの低下が起きる理由を説明するための図である。
【符号の説明】
【０１６１】
１  メモリ制御装置
１１  パケット分割部
１２  メモリ管理部
１２ａ  アドレス管理テーブル
１３  スケジューラ
１４  出力振り分け部
２  メモリ制御部
２ａ  セグメント／リクエスト情報分割部
２ｂ  セグメント組立部
２０  メモリアクセス制御部
３  メモリ部
３−１〜３−ｎ  メモリ
【図１】
0005205956.tif 000002
【図２】
0005205956.tif 000003
【図３】
0005205956.tif 000004
【図４】
0005205956.tif 000005
【図５】
0005205956.tif 000006
【図６】
0005205956.tif 000007
【図７】
0005205956.tif 000008
【図８】
0005205956.tif 000009
【図９】
0005205956.tif 000010
【図１０】
0005205956.tif 000011
【図１１】
0005205956.tif 000012
【図１２】
0005205956.tif 000013
【図１３】
0005205956.tif 000014
【図１４】
0005205956.tif 000015
【図１５】
0005205956.tif 000016
【図１６】
0005205956.tif 000017
【図１７】
0005205956.tif 000018
【図１８】
0005205956.tif 000019
【図１９】
0005205956.tif 000020