図1は、大容量低速メモリを用いてパケットを蓄積する一般的な通信端末の構成例を示すブロック図である。この通信端末は、ネットワークプロセッサ1と、大容量低速メモリによって構成されるパケットバッファ2とを含む。
図2は、図1に示すパケットバッファ(大容量低速メモリ)2にパケットのデータが蓄積されるところを示す図である。パケットのデータ(以下、単にデータとも呼ぶ。)A〜Dが順番にパケットバッファ2に蓄積される。そして、パケットの転送先が決まると、蓄積されているデータが順番に読み出され、データa〜dとして出力される。パケットを蓄積するパケットバッファ2は、大容量低速メモリのみであるので、キューごとにパケットを蓄積して読み出すといった制御が困難になることが多い。
図3は、階層化されたメモリを用いてパケットを蓄積する一般的な通信端末の構成例を示すブロック図である。図3(a)は、ネットワークプロセッサ1内に小容量高速メモリ3が搭載された場合の構成例を示している。また、図3(b)は、ネットワークプロセッサ1とパケットバッファ(大容量低速メモリ)2との間に小容量高速メモリ3が設けられた場合の構成例を示している。
メモリが階層化されている場合、データ書き込み時に小容量高速メモリ3に設けられたキューごとにデータを蓄積し、蓄積されたデータが所定量となったときに、データを塊でキューからパケットバッファ2に転送する。また、データ読み出し時には、小容量高速メモリ3の各キューに蓄積されるデータ量が少なくなるとパケットバッファ2からデータを塊で読み出し、小容量高速メモリ3に設けられたキューに転送する。
図4は、図3に示す小容量高速メモリ3にパケットのデータが蓄積されるところを示す図である。図4に示すように、キューQ0〜Qnにデータが順番に蓄積され、蓄積された順番にデータが読み出される。キューごとにデータを固めるのは、キューに蓄積されたデータは順番を逆にできないためである。キュー数が多くなると、小容量高速メモリ3の容量が大きくなるといった問題がある。
(第1の実施の形態)
図5は、本発明の第1の実施の形態における記憶装置を用いた通信端末のデータ転送の概念を説明するための図である。本実施の形態においては、パケットの最初の3セグメントを小容量高速メモリ3に書き込み、そのパケットのそれ以降のセグメントを順次大容量低速メモリ2に蓄積する。ここで、セグメントとは、小容量高速メモリ3のデータ幅に相
当する量のデータを指しており、図5における“A”,“B”,…のそれぞれが1セグメントである。パケットのデータ長は可変であるため、1つのパケットはデータ長に応じて1つまたは複数のセグメントによって構成されることになる。
本実施の形態においては、キュー番号に関係なく、パケットの最初の3セグメントを小容量高速メモリ3に書き込む。これによって、パケットの読み出し時には必ず最初の3セグメントが小容量高速メモリ3から読み出され、その間に4セグメント目以降のデータが大容量低速メモリ2から順次読み出されることになり、どのキューからパケットを読み出す場合でもパケット間に無駄な時間が発生するのを防止することができる。
なお、以下の説明においては、パケットの最初の3セグメントを高速メモリ3に書き込むこととするが、パケットの最初の幾つかのセグメントを高速メモリ3に書き込めばよく、3セグメントに限定されるものではない。高速メモリ3に書き込むセグメントの数が大容量低速メモリ2の書き込み速度(読み出し速度)に依存することは、以下の説明によって容易に理解されるであろう。
図6は、本発明の第1の実施の形態における記憶装置の概略構成を示すブロック図である。この記憶装置10は大容量低速メモリ2に接続され、小容量高速メモリ3と、入力バッファ11と、セレクタ12とを含む。
入力バッファ11は、受信したデータを一時的に記憶してセレクタ12に出力する。セレクタ12は入力バッファ11からデータを受けると、パケットの最初の3セグメントを小容量高速メモリ3に書き込み、そのパケットのそれ以降のセグメントを大容量低速メモリ2に書き込む。なお、パケットが3セグメント以下の場合には、小容量高速メモリ3への書き込みのみが行なわれ、大容量低速メモリ2への書き込みは行なわれない。
図7は、本発明の第1の実施の形態における記憶装置の構成をさらに詳細に説明するためのブロック図である。この記憶装置10は、主に大容量低速メモリ2および小容量高速メモリ3にデータを書き込む部分(以下、書き込み部と呼ぶ。)と、主に大容量低速メモリ2および小容量高速メモリ3からデータを読み出して出力する部分(以下、読み出し部と呼ぶ。)とに大別される。
書き込み部は、入力バッファ11と、セレクタ12と、カウンタ13と、バッファ14−1〜14−4とを含む。また、読み出し部は、セレクタ16と、バッファ17−1〜17−4と、カウンタ18と、出力バッファ19とを含む。なお、バッファ15は、セレクタ12から小容量高速メモリ3にデータが書き込まれる際、および小容量高速メモリ3からデータが読み出されてセレクタ16に転送される際に使用される。
大容量低速メモリ2は、小容量高速メモリ3と比較して、データ書き込み(データ読み出し)に4倍の時間を要する。したがって、小容量高速メモリ3と同じ転送速度でデータ書き込み(データ読み出し)を行なえるようにするために、小容量高速メモリ3のデータ幅の4倍のデータ幅を有している。ここでは、大容量低速メモリ2が4つのメモリチップで構成され、それぞれ別々のタイミングでデータ書き込み/データ読み出しが行なわれるものとする。
なお、大容量低速メモリ2および小容量高速メモリ3のアクセス制御は、ネットワークプロセッサ1によって行なわれるものとする。
入力バッファ11は、ネットワークプロセッサ1からパケットのデータを受けると、そのデータを一時的に記憶する。入力バッファ11は、クロック信号に同期してデータを順
次セレクタ12に出力する。
カウンタ13は、ネットワークプロセッサ1からパケットの始まりを示すSTART0信号を受けると、カウント値をリセットし、クロック信号に同期してカウントアップを開始する。そして、カウンタ13は、カウント値をセレクタ12に出力する。また、カウンタ13は、ネットワークプロセッサ1からパケットの終わりを示すEND0信号を受けると、パケットが終了したことをセレクタ12に通知する。
セレクタ12は、カウンタ13から出力されるカウント値を参照して、入力バッファ11から転送されるデータのうち、最初の3セグメント分のデータをバッファ15を介して小容量高速メモリ3に書き込む。そして、セレクタ12は、4セグメント目以降のデータをバッファ14−1、14−2、14−3、14−4の順に書き込む。なお、セレクタ12は、カウンタ13からパケット終了の通知を受けると、その時点でデータの書き込みを終了する。
バッファ14−1〜14−4は、セレクタ12からデータを受けると、それぞれ大容量低速メモリ2内の対応するメモリにデータを書き込む。
バッファ17−1〜17−4は、それぞれ大容量低速メモリ2内の対応するメモリからデータを読み出し、セレクタ16にデータを出力する。
カウンタ18は、ネットワークプロセッサ1からパケットの始まりを示すSTART1信号を受けると、カウント値をリセットし、クロック信号に同期してカウントアップを開始する。そして、カウンタ18は、カウント値をセレクタ16に出力する。また、カウンタ18は、ネットワークプロセッサ1からパケットの終わりを示すEND1信号を受けると、パケットが終了したことをセレクタ16に通知する。
セレクタ16は、カウンタ18から出力されるカウント値を参照して、最初の3セグメント分のデータをバッファ15を介して小容量高速メモリ3から読み出し、出力バッファ19にデータを出力する。そして、セレクタ16は、4セグメント目以降のデータをバッファ17−1、17−2、17−3、17−4の順に読み出し、出力バッファ19にデータを出力する。なお、セレクタ16は、カウンタ18からパケット終了の通知を受けると、その時点でデータの読み出しを終了する。
出力バッファ19は、セレクタ16から受けたデータを一時的に記憶し、クロック信号に同期してデータを順次出力する。
図8は、本発明の第1の実施の形態における記憶装置のデータ書き込み時の動作を説明するためのタイミングチャートである。なお、図8において、a0〜a9によって1つのパケットが構成され、同様にb0〜b4、c0、d0、e0〜e1のそれぞれによって1つのパケットが構成される。
まず、T1において、ネットワークプロセッサ1から出力された最初のパケットの最初のセグメントのデータa0が入力バッファ11に記憶される。このとき、カウンタ13は、ネットワークプロセッサ1からSTART0信号を受け、カウント値をリセットしてカウントアップを開始する。
T2において、入力バッファ11に記憶されるデータa0が、セレクタ12およびバッファ15を介して小容量高速メモリ3に書き込まれる。T3〜T4において同様の動作が行なわれ、3セグメント分のデータa0〜a2が小容量高速メモリ3に書き込まれる。
次に、T5において、入力バッファ11に記憶されるデータa3がセレクタ12を介してバッファ14−1に転送され、大容量低速メモリ2への書き込みが開始される。このデータa3の書き込みが、T5〜T8の4サイクルで行なわれる。同様にして、データa4〜a6がそれぞれバッファ14−2〜14−4に転送され、それぞれ4サイクルで大容量低速メモリ2に書き込まれる。
T9において、バッファ14−1に記憶されるデータa3の大容量低速メモリ2への書き込みが終了しているので、入力バッファ11に記憶されるデータa7がセレクタ12を介してバッファ14−1に転送され、大容量低速メモリ2への書き込みが開始される。このデータa7の書き込みが、T9〜T12の4サイクルで行なわれる。同様に、データa8〜a9がそれぞれバッファ14−2〜14−3に転送され、それぞれ4サイクルで大容量低速メモリ2に書き込まれる。
T10において、カウンタ13は、ネットワークプロセッサ1からEND0信号を受け、パケットの終了をセレクタ12に通知する。T11において、ネットワークプロセッサ1から出力された次のパケットのデータb0が入力バッファ11に記憶される。このとき、カウンタ13は、ネットワークプロセッサ1からSTART0信号を受け、カウント値をリセットしてカウントアップを開始する。
T12において、入力バッファ11に記憶されるデータb0が、セレクタ12およびバッファ15を介して小容量高速メモリ3に書き込まれる。T13〜T14において同様の動作が行なわれ、3セグメント分のデータb0〜b2が小容量高速メモリ3に書き込まれる。
次に、T15において、入力バッファ11に記憶されるデータb3がセレクタ12を介してバッファ14−1に転送され、大容量低速メモリ2への書き込みが開始される。このデータb3の書き込みが、T15〜T18の4サイクルで行なわれる。同様に、データb4がバッファ14−2に転送され、4サイクルで大容量低速メモリ2に書き込まれる。
T17〜T20において、3パケット分のデータc0、d0、e0〜e1が順次小容量高速メモリ3に書き込まれる。
図9は、本発明の第1の実施の形態における記憶装置のデータ読み出し時の動作を説明するためのタイミングチャートである。なお、図9においても、a0〜a9によって1つのパケットが構成され、同様にb0〜b4、c0、d0、e0〜e1のそれぞれによって1つのパケットが構成される。
まず、T1において、カウンタ18は、ネットワークプロセッサ1からSTART1信号を受け、カウント値をリセットしてカウントアップを開始する。このとき、セレクタ16は、バッファ15を介して小容量高速メモリ3から最初のパケットの最初のセグメントのデータa0を読み出す。また、バッファ17−1は、大容量低速メモリ2からデータa3の読み出しを開始する。
T2において、セレクタ16は、小容量高速メモリ3から読み出したデータa0を出力バッファ19に書き込む。T3〜T4において同様の動作が行なわれ、3セグメント分のデータa0〜a2が出力バッファ19に書き込まれる。
次に、T5において、大容量低速メモリ2からのデータa3の読み出しが終了しているので、セレクタ16はバッファ17−1に記憶されるデータa3を読み出して出力バッフ
ァ19に書き込む。また、このサイクルで、大容量低速メモリ2からのデータa7の読み出しが開始される。T6〜T11において同様の動作が行なわれ、データa4〜a9が順次出力バッファ19に書き込まれる。
T10において、カウンタ18は、ネットワークプロセッサ1からEND1信号を受け、パケットの終了をセレクタ16に通知する。T11において、カウンタ18は、ネットワークプロセッサ1からSTART1信号を受け、カウント値をリセットしてカウントアップを開始する。このとき、セレクタ16は、バッファ15を介して小容量高速メモリ3から2番目のパケットの最初のセグメントのデータb0を読み出す。また、バッファ17−1は、大容量低速メモリ2からデータb3の読み出しを開始する。
T12において、セレクタ16は、小容量高速メモリ3から読み出したデータb0を出力バッファ19に書き込む。T13〜T14において同様の動作が行なわれ、3セグメント分のデータb0〜b2が出力バッファ19に書き込まれる。
次に、T15において、大容量低速メモリ2からのデータb3の読み出しが終了しているので、セレクタ16はバッファ17−1に記憶されるデータb3を読み出して出力バッファ19に書き込む。T16において同様の動作が行なわれ、データb4が出力バッファ19に書き込まれる。
T16〜T19において、3パケット分のデータc0、d0、e0〜e1が順次小容量高速メモリ3から読み出され、出力バッファ19に順次データが書き込まれる。
図10は、本発明の第1の実施の形態における記憶装置を用いた通信端末の一例を示す図である。本実施の形態における記憶装置10は、ネットワークプロセッサ1と、標準メモリ(大容量低速メモリ)2との間に設けられ、上述の動作を行なう。標準メモリとして、DRAM(Dynamic Random Access Memory)が使用可能であるが、小容量高速メモリ3と比較して大容量の書き込み可能なデバイスであればよく、特にDRAMに限定されるものではない。
以上説明したように、本実施の形態における記憶装置10によれば、キュー番号に関係なく、パケットの最初の幾つかのセグメントを小容量高速メモリ3に書き込み、それ以降のセグメントを大容量低速メモリ2に書き込むようにしたので、データ読み出し時にどのキューからデータを読み出す場合でもパケット転送に無駄な時間が発生するのを防止することが可能となった。
また、キュー番号に関係なく、パケットの最初の幾つかのセグメントを小容量高速メモリ3に記憶するのみであるので、高速メモリの容量を増加させずに高速でパケット転送を行なうことができる。また、キュー数の増加に伴って高速メモリの容量が増加するのを防止することができる。したがって、システム全体のコストの削減が可能となった。
また、大容量低速メモリ2に書き込まれたデータが小容量高速メモリ3に転送されたり、小容量高速メモリ3に書き込まれたデータが大容量低速メモリ2に転送されたりすることがなく、データ読み出し時に直接大容量低速メモリ2および小容量高速メモリ3からデータが読み出されるので、システム全体の消費電力を削減することが可能となった。
また、パケットの最初のセグメントが小容量高速メモリ3から読み出されるので、読み出し時におけるレイテンシを短くすることが可能となった。
さらには、パケットの最初の幾つかのセグメントを小容量高速メモリ3に書き込み、そ
れ以降のセグメントを大容量低速メモリ2に書き込めばよいので、メモリのアクセス制御を簡略化することが可能となった。大容量低速メモリ2および小容量高速メモリ3からデータを読み出す場合も同様に、メモリのアクセス制御を簡略化することが可能となった。
(第2の実施の形態)
図11は、本発明の第2の実施の形態における記憶装置を用いた通信端末のデータ転送の概念を説明するための図である。本実施の形態においては、パケットの最初の4セグメントが揃ったときに大容量低速メモリ2にデータを書き込む。それ以降、セグメントが4つ揃うごとに同様の動作を行なう。そして、パケットの終わりに発生する端数のセグメント(4に満たないセグメント)を小容量高速メモリ3に書き込む。図11においては、パケットの最初の8つのセグメント“A”〜“H”が大容量低速メモリ2に書き込まれ、端数のセグメントである“I”および“J”が小容量高速メモリ3に書き込まれる。
図12は、本発明の第2の実施の形態における記憶装置20の構成例を示すブロック図である。図7に示す第1の実施の形態における記憶装置と比較して、小容量高速メモリ3の構成が異なる点、セレクタ12および16の機能が異なる点、およびセレクタ2(21,22)が追加されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。なお、本実施の形態における小容量高速メモリの参照符号を3’とし、セレクタの参照符号を12’および16’として説明する。
小容量高速メモリ3’は、最大3つのセグメントを同時に書き込む必要があるため、第1の実施の形態における小容量高速メモリ3のデータ幅の3倍のデータ幅を有する。本実施の形態において、小容量高速メモリ3’は、3つのメモリチップによって構成されるものとする。
バッファ14−1〜14−4は、それぞれ少なくとも2セグメントのデータを記憶する容量を有しており、一方の領域からデータを読み出しているときに、他方の領域にデータを書き込むことが可能である。
セレクタ12’は、カウンタ13から出力されるカウント値を参照して、入力バッファ11から転送されるデータをバッファ14−1、14−2、14−3、14−4の順に書き込む。それ以降、同様の動作を繰り返す。
セレクタ2(21)は、カウンタ13から出力されるカウント値を参照して、バッファ14−1〜14−4に4つのセグメントのデータが記憶された時点でそれらのデータを大容量低速メモリ2に書き込む。また、セレクタ2(21)は、カウンタ13からパケット終了の通知を受けると、カウンタ13から出力されるカウント値を参照して、その時点でバッファ14−1〜14−4に記憶される端数のセグメントのデータを小容量高速メモリ3’に書き込む。
セレクタ2(22)は、カウンタ18からパケット開始の通知を受けると、大容量低速メモリ2から4つのセグメントのデータを読み出し、それぞれのデータをバッファ17−1〜17−4に書き込む。また、セレクタ2(22)は、カウンタ13から出力されるカウント値を参照して、次の4つのセグメントのデータ転送が必要となった時点で大容量低速メモリ2から4つのセグメントのデータを読み出し、それぞれのデータをバッファ17−1〜17−4に書き込む。また、セレクタ2(22)は、カウンタ18からパケット終了の通知を受けると、カウンタ13から出力されるカウント値を参照して、端数のセグメントを小容量高速メモリ3’から読み出し、バッファ17−1〜17−3の中の対応するバッファに書き込む。
セレクタ16’は、カウンタ18から出力されるカウント値を参照して、バッファ17−1〜17−4から出力されるデータを選択的に出力バッファ19に出力する。
図13は、本発明の第2の実施の形態における記憶装置のデータ書き込み時の動作を説明するためのタイミングチャートである。なお、図13においても、a0〜a9によって1つのパケットが構成され、同様にb0〜b4、c0、d0、e0〜e1のそれぞれによって1つのパケットが構成される。
まず、T1において、ネットワークプロセッサ1から出力された最初のパケットの最初のセグメントのデータa0が入力バッファ11に記憶される。このとき、カウンタ13は、ネットワークプロセッサ1からSTART0信号を受け、カウント値をリセットしてカウントアップを開始する。
T2において、入力バッファ11に記憶されるデータa0が、セレクタ12’を介してバッファ14−1に書き込まれる。T3〜T5において同様の動作が行なわれ、4セグメント分のデータa0〜a3が順次バッファ14−1〜14−4に書き込まれる。
T5において、セレクタ2(21)は、バッファ14−1〜14−4に記憶されるデータa0〜a3の大容量低速メモリ2への書き込みを開始する。このデータa0〜a3の書き込みが、T5〜T8の4サイクルで行なわれる。
T6において、入力バッファ11に記憶されるデータa4が、セレクタ12’を介してバッファ14−1に書き込まれる。T7〜T9において同様の動作が行なわれ、4セグメント分のデータa4〜a7が順次バッファ14−1〜14−4に書き込まれる。
T9において、セレクタ2(21)は、バッファ14−1〜14−4に記憶されるデータa4〜a7の大容量低速メモリ2への書き込みを開始する。このデータa4〜a7の書き込みが、T9〜T12の4サイクルで行なわれる。
T10において、入力バッファ11に記憶されるデータa8が、セレクタ12’を介してバッファ14−1に書き込まれる。T11において同様の動作が行なわれ、2セグメント分のデータa8〜a9がバッファ14−1〜14−2に書き込まれたときに、ネットワークプロセッサ1からEND0信号が出力される。
T12において、セレクタ2(21)は、バッファ14−1〜14−2に記憶されるデータa8〜a9を小容量高速メモリ3’に書き込む。また、T12において、入力バッファ11に記憶されるデータb0が、セレクタ12を介してバッファ14−1に書き込まれる。T13〜T15において同様の動作が行なわれ、4セグメント分のデータb0〜b3が順次バッファ14−1〜14−4に書き込まれる。
T15において、セレクタ2(21)は、バッファ14−1〜14−4に記憶されるデータb0〜b3の大容量低速メモリ2への書き込みを開始する。このデータb0〜b3の書き込みが、T15〜T18の4サイクルで行なわれる。
T16において、入力バッファ11に記憶されるデータb4が、セレクタ12’を介してバッファ14−1に書き込まれたときに、ネットワークプロセッサ1からEND0信号が出力される。
T17において、セレクタ2(21)は、バッファ14−1に記憶されるデータb4を小容量高速メモリ3’に書き込む。
T18〜T19において同様の動作が行なわれ、セレクタ2(21)は、データc0およびd0を小容量高速メモリ3’に書き込む。
T19において、入力バッファ11に記憶されるデータe0が、セレクタ12’を介してバッファ14−1に書き込まれる。T20において同様の動作が行なわれ、2セグメント分のデータe0〜e1がバッファ14−1〜14−2に書き込まれたときに、ネットワークプロセッサ1からEND0信号が出力される。
T21において、セレクタ2(21)は、バッファ14−1〜14−2に記憶されるデータe0〜e1を小容量高速メモリ3’に書き込む。
図14は、本発明の第2の実施の形態における記憶装置のデータ読み出し時の動作を説明するためのタイミングチャートである。なお、図14においても、a0〜a9によって1つのパケットが構成され、同様にb0〜b4、c0、d0、e0〜e1のそれぞれによって1つのパケットが構成される。
まず、T1において、カウンタ18は、ネットワークプロセッサ1からSTART1信号を受け、カウント値をリセットしてカウントアップを開始する。このとき、大容量低速メモリ2に記憶される最初のパケットの4つのセグメントのデータa0〜a3の読み出しが開始される。
T5において、セレクタ2(22)は、大容量低速メモリ2から読み出したデータa0〜a3をそれぞれバッファ17−1〜17−4に書き込む。このとき、セレクタ16’は、バッファ17−1に記憶されるデータa0を出力バッファ19に転送する。また、セレクタ2(22)は、大容量低速メモリ2に記憶されるデータa4〜a7の読み出しを開始する。
T6〜T8において、セレクタ16’は、バッファ17−2〜17−4に記憶されるデータa1〜a3を順次出力バッファ19に転送する。
T9において、セレクタ2(22)は、大容量低速メモリ2から読み出したデータa4〜a7をそれぞれバッファ17−1〜17−4に書き込む。このとき、セレクタ16’は、バッファ17−1に記憶されるデータa4を出力バッファ19に転送する。
T10〜T12において、セレクタ16’は、バッファ17−2〜17−4に記憶されるデータa5〜a7を順次出力バッファ19に転送する。また、T10において、カウンタ18は、ネットワークプロセッサ1からEND1信号を受け、パケットの終了をセレクタ16’およびセレクタ2(22)に通知する。
T11において、カウンタ18は、ネットワークプロセッサ1からSTART1信号を受け、カウント値をリセットしてカウントアップを開始する。このとき、大容量低速メモリ2に記憶される次のパケットの4つのセグメントのデータb0〜b3の読み出しが開始される。
T12において、セレクタ2(22)は、端数のデータa8およびa9を小容量高速メモリ3’から読み出し、バッファ17−1および17−2に書き込む。T13において、セレクタ16’は、バッファ17−1に記憶されるデータa8を出力バッファ19に転送する。T14において、セレクタ16’は、バッファ17−2に記憶されるデータa9を出力バッファ19に転送する。
T15において、セレクタ2(22)は、大容量低速メモリ2から読み出したデータb0〜b3をそれぞれバッファ17−1〜17−4に書き込む。このとき、セレクタ16’は、バッファ17−1に記憶されるデータb0を出力バッファ19に転送する。
T16〜T18において、セレクタ16’は、バッファ17−2〜17−4に記憶されるデータb1〜b3を順次出力バッファ19に転送する。また、T16において、カウンタ18は、ネットワークプロセッサ1からEND1信号を受け、パケットの終了をセレクタ16’およびセレクタ2(22)に通知する。
T18において、セレクタ2(22)は、端数のデータb4を小容量高速メモリ3’から読み出し、バッファ17−1に書き込む。T19において、セレクタ16’は、バッファ17−1に記憶されるデータb4を出力バッファ19に転送する。
T20〜T23において同様の動作が行なわれ、セレクタ16’が、データc0、d0、e0〜e1を順次出力バッファ19に転送する。
以上説明したように、本実施の形態における記憶装置20によれば、キュー番号に関係なく、パケットのセグメントを4つずつ大容量低速メモリ2に書き込み、そのパケットの最後の端数のセグメントのみを小容量高速メモリ3’に書き込むようにしたので、第1の実施の形態において説明した効果と同様の効果を奏することが可能となった。
(第3の実施の形態)
本発明の第3の実施の形態における記憶装置は、第2の実施の形態における記憶装置20と比較して、大容量低速メモリ2のページモードを使用する点が異なる。パケットのセグメント数が4を超えるものについては、5番目以降のセグメントを(端数のセグメントを含めて)ページモードで大容量低速メモリ2に書き込む。また、パケットのセグメント数が3以下のものについては、小容量高速メモリ3’に書き込む。
図15は、本発明の第3の実施の形態における記憶装置による大容量低速メモリ2からのデータ読み出しの動作を説明するためのタイミングチャートである。なお、信号名の前に付加されている“/”は、アクティブロウであることを示している。
図15に示すように、/RAS信号が最初にロウレベル(以下、Lレベルと略す。)になったときに、ロウアドレス“Xa”が取り込まれる。そして、/CAS信号がLレベルになったときにカラムアドレス“Yb”が取り込まれた後、クロック信号(ext./CLK,ext.CLK)に同期してDQS信号が入力されると、D/Q信号にデータが出力される。
図15においては、カラムアドレス“Yb”に対応して4セグメント分のデータq0〜q3が高速で読み出さ、カラムアドレス“Yc”に対応して4セグメント分のデータq4〜q7が高速で読み出されるところを示している。2回目のロウアドレスが取り込まれるときに、プリチャージ(/PRE)が行なわれている。なお、図15に示すDRAMの制御信号は、ネットワークプロセッサ1によって生成される。
本発明の第3の実施の形態における記憶装置は、図12に示す第2の実施の形態における記憶装置と比較して、セレクタ2(21)およびセレクタ2(22)の機能のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。なお、本実施の形態におけるセレクタ2の参照符号を21’および22’として説明する。
なお、バッファ14−1〜14−4は、それぞれ少なくとも2セグメントのデータを記憶する容量を有しており、一方の領域からデータを読み出しているときに、他方の領域にデータを書き込むことが可能である。
また、バッファ17−1〜17−4も、それぞれ少なくとも2セグメントのデータを記憶する容量を有しており、一方の領域からデータを読み出しているときに、他方の領域にデータを書き込むことが可能である。
図16は、本発明の第3の実施の形態における記憶装置のデータ書き込み時の動作を説明するためのタイミングチャートである。なお、図16においても、a0〜a9によって1つのパケットが構成され、同様にb0〜b4、c0、d0、e0〜e1のそれぞれによって1つのパケットが構成される。
まず、T1において、ネットワークプロセッサ1から出力された最初のパケットの最初のセグメントのデータa0が入力バッファ11に記憶される。このとき、カウンタ13は、ネットワークプロセッサ1からSTART0信号を受け、カウント値をリセットしてカウントアップを開始する。
T2において、入力バッファ11に記憶されるデータa0が、セレクタ12’を介してバッファ14−1に書き込まれる。T3〜T5において同様の動作が行なわれ、4セグメント分のデータa0〜a3が順次バッファ14−1〜14−4に書き込まれる。
T5において、セレクタ2(21)は、バッファ14−1〜14−4に記憶されるデータa0〜a3の大容量低速メモリ2への書き込みを開始する。このデータa0〜a3の書き込みが、T5〜T8の4サイクルで行なわれる。
T6において、入力バッファ11に記憶されるデータa4が、セレクタ12’を介してバッファ14−1に書き込まれる。T7〜T9において同様の動作が行なわれ、4セグメント分のデータa4〜a7が順次バッファ14−1〜14−4に書き込まれる。
T9において、セレクタ2(21)は、バッファ14−1〜14−4に記憶されるデータa4〜a7をページモードで大容量低速メモリ2に書き込む。このデータa4〜a7の書き込みは、1サイクルで完了する。
T10において、入力バッファ11に記憶されるデータa8が、セレクタ12’を介してバッファ14−1に書き込まれる。T11において同様の動作が行なわれ、2セグメント分のデータa8〜a9がバッファ14−1〜14−2に書き込まれたときに、ネットワークプロセッサ1からEND0信号が出力される。このとき、セレクタ2(21)は、バッファ14−1〜14−2に記憶されるデータa8〜a9をページモードで小容量高速メモリ3’に書き込む。
T12において、入力バッファ11に記憶されるデータb0が、セレクタ12を介してバッファ14−1に書き込まれる。T13〜T15において同様の動作が行なわれ、4セグメント分のデータb0〜b3が順次バッファ14−1〜14−4に書き込まれる。
T15において、セレクタ2(21)は、バッファ14−1〜14−4に記憶されるデータb0〜b3の大容量低速メモリ2への書き込みを開始する。このデータb0〜b3の書き込みが、T15〜T18の4サイクルで行なわれる。
T16において、入力バッファ11に記憶されるデータb4が、セレクタ12’を介し
てバッファ14−1に書き込まれたときに、ネットワークプロセッサ1からEND0信号が出力される。
T17において、セレクタ2(21)は、バッファ14−1に記憶されるデータb4を小容量高速メモリ3’に書き込む。
T18〜T19において同様の動作が行なわれ、セレクタ2(21)は、データc0およびd0を小容量高速メモリ3’に書き込む。
T19において、入力バッファ11に記憶されるデータe0が、セレクタ12を介してバッファ14−1に書き込まれる。T20において同様の動作が行なわれ、2セグメント分のデータe0〜e1がバッファ14−1〜14−2に書き込まれたときに、ネットワークプロセッサ1からEND0信号が出力される。
T21において、セレクタ2(21)は、バッファ14−1〜14−2に記憶されるデータe0〜e1を小容量高速メモリ3’に書き込む。
図17は、本発明の第3の実施の形態における記憶装置のデータ読み出し時の動作を説明するためのタイミングチャートである。なお、図17においても、a0〜a9によって1つのパケットが構成され、同様にb0〜b4、c0、d0、e0〜e1のそれぞれによって1つのパケットが構成される。
まず、T1において、カウンタ18は、ネットワークプロセッサ1からSTART1信号を受け、カウント値をリセットしてカウントアップを開始する。このとき、大容量低速メモリ2に記憶される最初のパケットの4つのセグメントのデータa0〜a3の読み出しが開始される。
T4において、セレクタ2(22)は、大容量低速メモリ2から読み出したデータa0〜a3をそれぞれバッファ17−1〜17−4に書き込む。
T5において、セレクタ2(22)は、大容量低速メモリ2に記憶されるデータa4〜a7をページモードで読み出す。このデータa4〜a7の読み出しは、1サイクルで完了する。T6において、セレクタ2(22)は、大容量低速メモリ2から読み出したデータa4〜a7をそれぞれバッファ17−1〜17−4に書き込む。
また、T5〜T8において、セレクタ16’は、バッファ17−1〜17−4に記憶されるデータa0〜a3を順次出力バッファ19に転送する。
T7において、セレクタ2(22)は、大容量低速メモリ2に記憶される端数のデータa8〜a9をページモードで読み出す。また、T8において、セレクタ2(22)は、大容量低速メモリ2から読み出したデータa8〜a9をそれぞれバッファ17−1〜17−2に書き込む。
T9〜T12において、セレクタ16’は、バッファ17−1〜17−4に記憶されるデータa4〜a7を順次出力バッファ19に転送する。
T11において、カウンタ18は、ネットワークプロセッサ1からSTART1信号を受け、カウント値をリセットしてカウントアップを開始する。このとき、大容量低速メモリ2に記憶される次のパケットの4つのセグメントのデータb0〜b3の読み出しが開始される。
T13〜T14において、セレクタ16’は、バッファ17−1〜17−2に記憶される端数のデータa8およびa9を出力バッファ19に転送する。
また、T14において、セレクタ2(22)は、大容量低速メモリ2から読み出したデータb0〜b3をそれぞれバッファ17−1〜17−4に書き込む。
T15〜T18において、セレクタ16’は、バッファ17−1〜17−4に記憶されるデータb0〜b3を順次出力バッファ19に転送する。また、T15において、セレクタ2(22)は、端数のデータb4を大容量低速メモリ2からページモードで読み出し、バッファ17−1に書き込む。T19において、セレクタ16’は、バッファ17−1に記憶されるデータb4を出力バッファ19に転送する。
T18〜T20において、セレクタ2(22)は、データc0、d0、e0〜e1を小容量高速メモリ3’から読み出し、順次バッファ17−1〜17−2に書き込む。そして、T20〜T23において、セレクタ16’が、データc0、d0、e0〜e1を順次出力バッファ19に転送する。
以上説明したように、本実施の形態における記憶装置20によれば、パケットのセグメント数が4を超えるものについては、端数のセグメントもページモードで大容量低速メモリ2に書き込むようにしたので、第2の実施の形態における記憶装置と比較して、小容量高速メモリ3’の容量をさらに削減することが可能となった。
(第4の実施の形態)
図18は、本発明の第4の実施の形態における記憶装置の基本的な概念を説明するための図である。パケットのデータを入力する場合、記憶装置30は、外部からパケットのデータとそのデータを格納するキュー番号のみを入力し、対応するキューにそのデータを格納する。また、パケットのデータを出力する場合、記憶装置30は、外部からキュー番号のみを入力し、そのキュー番号に対応するキューからパケットのデータを読み出して外部に出力する。
図18においては、各キューに記載されている1つの四角形が1つのセグメントを示している。たとえば、キュー#0には2つのパケットが格納されており、右から4つのセグメントと、それに続く3つのセグメントがそれぞれ1つのパケットを構成している。右から4つ目および7つ目のセグメントに記載されている“E”は、1つのパケットの中の最後のセグメントであることを示している。
図19は、本発明の第4の実施の形態における記憶装置の概略構成を示すブロック図である。この記憶装置30は、図示しない大容量低速メモリ(DRAM)と、小容量高速メモリ(SRAM)とに接続されており、コマンドコントローラ31と、パケット長カウンタ32と、パケット長管理部33と、パケット長格納部34と、アドレス生成部35と、格納先検出部36と、メモリ管理部37と、データコントローラ38と、データFIFO39〜43とを含む。なお、実際のパケットのデータは、図示しないDRAMまたはSRAMに格納され、アドレス生成部35がキューとしての機能を有している。
アドレス生成部35は、空きアドレス格納部51と、リンクリスト格納部52と、先頭/末尾ポインタ格納部53とを含む。空きアドレス格納部51は、DRAMおよびSRAMのアドレスのうち、実際のデータが記憶されていない空きアドレスを格納する。
先頭/末尾ポインタ格納部53は、キュー#0〜#nのそれぞれに対応する先頭ポインタと末尾ポインタとを格納する。先頭ポインタは、対応するキューの何番目のセグメントが先頭であるかを示す情報である。また、末尾ポインタは、対応するキューの何番目のセグメントが末尾であるかを示す情報である。したがって、キューからデータが読み出される場合には、先頭ポインタが更新される。また、キューにデータを書き込む場合には、末尾ポインタが更新される。
リンクリスト格納部52は、各キューの各セグメントに対応する、実際のデータが格納されるDRAMまたはSRAMのアドレス、すなわちリンクリストを格納する。
メモリ管理部37は、DRAMコントローラ61と、SRAMコントローラ62とを含む。DRAMコントローラ61は、アドレス生成部35から出力されるアドレスに従ってDRAMに対するアクセスを制御する。また、SRAMコントローラ62は、アドレス生成部35から出力されるアドレスに従ってSRAMに対するアクセスを制御する。
コマンドコントローラ31は、ネットワークプロセッサからコマンドとキュー番号とを受け、コマンドに対応した制御を行なう。なお、コマンドコントローラ31に入力されるDEND信号は、パケットのデータをキューに書き込むときに、パケットのデータの終了を通知するための信号である。
(パケットのデータの書き込み)
コマンドコントローラ31は、ネットワークプロセッサからパケットの書き込みコマンドおよびキュー番号を受けると、書き込みコマンドを受けたことをパケット長カウンタ32、アドレス生成部35およびデータFIFO39に通知する。
データFIFO39は、一定のレイテンシをおいてデータ(D)の入力を開始する。このとき、パケット長カウンタ32は、データFIFO39に入力されたデータ数のカウントを開始する。
格納先検出部36は、パケット長カウンタ32の値を参照しており、パケット長カウンタ32の値が更新されてパケットのデータが入力されたことを検知すると、アドレス生成部35に対してデータの格納先アドレスを生成するよう指示する。
アドレス生成部35は、先頭/末尾ポインタ格納部53に格納されるキュー番号に対応する末尾ポインタの値を読み出し、リンクリスト格納部52を参照して末尾ポインタに対応するセグメントが格納されるDRAMまたはSRAMのアドレスを取得する。そして、空きアドレス格納部51にアクセスしてそのアドレスの次のアドレスが空いているか否かを判定する。そのアドレスが空いていれば、空きアドレス格納部51にそのアドレスを出力させる。また、そのアドレスが空いていなければ、空きアドレス格納部51にアクセスしてDRAMまたはSRAMの空いているアドレスを出力させる。
DRAMコントローラ61またはSRAMコントローラ62は、アドレス生成部35から出力されたアドレスに従ってDRAMまたはSRAMに対するデータの書き込みを行なう。このとき、データFIFO39に格納されたデータは、データFIFO40またはデータFIFO41に順次転送され、DRAMまたはSRAMに出力される。
また、アドレス生成部35は、DRAMまたはSRAMへのデータ書き込みに応じて、先頭/末尾ポインタ格納部53に格納される末尾ポインタの値を更新すると共に、末尾ポインタの値にデータを書き込んだDRAMまたはSRAMのアドレスをリンクさせてリンクリスト格納部52を更新する。
以上の処理を繰り返すことにより、パケットのデータがDRAMまたはSRAMに順次格納される。コマンドコントローラ31は、DEND信号によってパケットのデータ書き込みが終了したことを検知すると、その旨をパケット長カウンタ32およびデータFIFO39に通知する。パケット長カウンタ32は、書き込んだパケットのパケット長をパケット長管理部33に通知する。
パケット長管理部33は、パケット長カウンタ32から受けたパケット長をパケット長格納部34に格納することによって、各キューに格納されるパケットごとのパケット長を管理する。
図20は、本発明の第4の実施の形態における記憶装置のパケットのデータの書き込みを説明するためのタイミングチャートである。T1において、コマンドコントローラ31が、ネットワークプロセッサから書き込みコマンド(Wt)およびキュー番号(#0)を受けると、パケットのデータの書き込みを開始する。
T2以降において、有効なデータが入力されると、データFIFO39がパケットのデータ(D0〜DF)を格納し、データFIFO40またはデータFIFO41を介してDRAMまたはSRAMに順次データを出力する。
T3において、コマンドコントローラ31がDEND信号を受けると、パケットのデータ書き込みが終了したことをパケット長カウンタ32およびデータFIFO39に通知する。パケット長管理部33は、パケット長カウンタ32から受けたパケット長をパケット長格納部34に格納する。
T4において、コマンドコントローラ31が、ネットワークプロセッサから書き込みコマンド(Wt)およびキュー番号(#1)を受けると、パケットのデータの書き込みを開始する。以下、同様の処理が行なわれる。
(パケットのデータの読み出し)
コマンドコントローラ31は、ネットワークプロセッサからパケットの読み出しコマンドおよびキュー番号を受けると、読み出しコマンドを受けたことをパケット長管理部33およびアドレス生成部35に通知する。
パケット長管理部33は、先頭/末尾ポインタ格納部53にアクセスしてキュー番号に対応する先頭ポインタの値を読み出し、パケット長格納部34からそのパケットのパケット長を取得する。
また、アドレス生成部35は、先頭/末尾ポインタ格納部53にアクセスしてキュー番号に対応する先頭ポインタの値を読み出し、リンクリスト格納部52にアクセスして先頭ポインタの値に対応するセグメントの格納先アドレスをメモリ管理部37に出力する。
DRAMコントローラ61またはSRAMコントローラ62は、アドレス生成部35から出力されたアドレスに従ってDRAMまたはSRAMからのデータ読み出しを行なう。DRAMまたはSRAMから読み出されたデータは、順次データFIFO42またはデータFIFO43に格納される。
このとき、アドレス生成部35は、先頭ポインタの値を更新すると共に、リンクリスト格納部52にアクセスして次のセグメントに対応するアドレスをメモリ管理部37に出力する。データが読み出されたアドレスについては、次のデータ書き込みで使用できるように空きアドレス格納部51に追加する。
また、データコントローラ38は、データFIFO42またはデータFIFO43に格納されたデータを読み出して、順次ネットワークプロセッサに出力する。なお、データコントローラ38から出力されるQ信号は、パケットのデータを示している。QST信号は、パケットのデータの出力開始を示す信号である。また、QEND信号は、パケットのデータの出力終了を示す信号である。
アドレス生成部35、メモリ管理部37およびデータコントローラ38は、パケット長管理部53によって取得されたパケット長だけ上述の処理を繰り返すことにより、ネットワークプロセッサに対して1つのパケットのデータが出力される。
図21は、本発明の第4の実施の形態における記憶装置のパケットのデータの読み出しを説明するためのタイミングチャートである。T1において、コマンドコントローラ31が、ネットワークプロセッサから読み出しコマンド(Rd)およびキュー番号(#0)を受けると、パケットのデータの読み出しを開始する。
T2において、コマンドコントローラ31が、ネットワークプロセッサから次の読み出しコマンド(Rd)およびキュー番号(#1)を受けるが、この処理は最初の読み出しコマンドの処理が終了した後に行なわれる。
T3において、データコントローラ38が、QST信号を出力してネットワークプロセッサにキュー#0に対応する読み出しデータの出力開始を通知する。T4以降において、データコントローラ38は、データFIFO42またはデータFIFO43に格納される有効なデータ(Q0〜QB)をネットワークプロセッサに対して出力する。
T5において、データコントローラ38が、QEND信号を出力してネットワークプロセッサに読み出しデータの出力終了を通知する。
T6において、データコントローラ38が、QST信号を出力してネットワークプロセッサにキュー#1に対応する読み出しデータの出力開始を通知する。そして、T7以降において、同様の処理が行なわれる。
図22は、キュー#0〜#nと実際のパケットのデータが格納されるメモリとの対応を示す図である。図22の左側がキュー#0〜#nを示し、図22の右側が実際のパケットのデータが格納されるメモリを示している。たとえば、キュー#0に格納される3つのパケット(1〜3)が、メモリ上ではそれぞれ不連続の領域に格納されるところを示している。
このように、キューにおいてメモリのアドレスのみを管理することにより、各キューのメモリサイズを可変とすることができ、DRAMやSRAMの容量を有効に利用することができる。
ここで、書き込みまたは読み出し時に用いるデータFIFOのバースト長は固定ではなく可変としている。ネットワーク機器の場合、外部から入出力されるデータはパケットもしくはフレームであり、パケットもフレームもデータを受け取るまでデータ長が分からない。そのためデータを一時的に蓄えるデータFIFOを可変長に対応させることでコントロールが容易となる。
以上の説明においては、記憶装置30がDRAMまたはSRAMにパケットのデータを書き込むとしたが、第1〜第3の実施の形態において説明したように、パケットの端数のセグメントをSRAMに書き込み、それ以外の大部分のセグメントをDRAMに書き込むようにしてもよい。
以上説明したように、本実施の形態における記憶装置によれば、キュー番号を受けてパケットのデータの書き込みおよび読み出しを行なうようにしたので、ネットワークプロセッサによる制御を簡略化することが可能となった。
また、外部のメモリに対してはパケットのデータの書き込みおよび読み出しのみを行なうので、メモリに対するアクセス回数を減らすことができ、消費電力を削減することが可能となった。
(第5の実施の形態)
図23は、本発明の第5の実施の形態における記憶装置の基本的な概念を説明するための図である。パケットのデータを入力する場合、記憶装置30’は、外部からパケットのデータとそのデータを格納するキュー番号のみを入力し、対応するキューにそのデータを格納する。また、パケットのデータを出力する場合、記憶装置30は、外部からキュー番号のみを入力し、そのキュー番号に対応するキューからパケットのデータを読み出して外部に出力する。
図18に示す本発明の第1の実施の形態における記憶装置30と異なる点は、1つのポートから入力されたパケットのデータを複数のポートに出力できるようにした点である。図23においては、たとえば、キュー#0の右から7つ目のセグメントに“E&M”が記載されており、1つのパケットの中の最後のセグメントであることを示すと共に、2つ目のパケットがマルチキャストなどのような複数のポートに出力されるパケットであることを示している。
本発明の第5の実施の形態における記憶装置30’は、図19に示す第4の実施の形態における記憶装置の概略構成と比較して、アドレス生成部の機能のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。なお、本実施の形態におけるアドレス生成部の参照番号を35’として説明する。
図24は、本発明の第5の実施の形態における記憶装置のパケットのデータの書き込みを説明するためのタイミングチャートである。T1において、コマンドコントローラ31が、ネットワークプロセッサから書き込みコマンド(Wt)およびキュー番号(#0)を受けると、パケットのデータの書き込みを開始する。
T2以降において、有効なデータが入力されると、データFIFO39がパケットのデータ(D0〜DF)を格納し、データFIFO40またはデータFIFO41を介してDRAMまたはSRAMに順次データを出力する。
T3において、コマンドコントローラ31が、ネットワークプロセッサからマルチキャストコマンドおよびキュー番号(#1)を受けると、現在書き込み中のパケットのデータをキュー#1に格納するために、アドレス生成部35’は、キュー#1の末尾ポインタの値をキュー#0の末尾ポインタの値と同様に更新すると共に、キュー#1のリンクリストをキュー#0のリンクリストと同様に更新して、同じパケットのデータにリンクさせるようにリンクリスト格納部52を更新する。
T4において、コマンドコントローラ31が、ネットワークプロセッサからマルチキャストコマンドおよびキュー番号(#2)を受けると、現在書き込み中のパケットのデータをキュー#2に格納するために、アドレス生成部35’は、キュー#2の末尾ポインタの値をキュー#0の末尾ポインタの値と同様に更新すると共に、キュー#2のリンクリストをキュー#0のリンクリストと同様に更新して、同じパケットのデータにリンクさせるようにリンクリスト格納部52を更新する。
T5において、コマンドコントローラ31がDEND信号を受けると、パケットのデータ書き込みが終了したことをパケット長カウンタ32およびデータFIFO39に通知する。パケット長管理部33は、パケット長カウンタ32から受けたパケット長をパケット長格納部34に格納する。
T6において、コマンドコントローラ31が、ネットワークプロセッサから書き込みコマンド(Wt)およびキュー番号(#0)を受けると、パケットのデータの書き込みを開始する。以下、同様の処理が行なわれる。
図25は、キュー#0〜#nと実際のマルチキャストのパケットのデータが格納されるメモリとの対応を示す図である。図25の左側がキュー#0〜#nを示し、図25の右側が実際のマルチキャストのパケットのデータが格納されるメモリを示している。たとえば、キュー#0に格納される3つのパケット(1〜3)が、メモリ上ではそれぞれ不連続の領域に格納されるところを示している。これら3つのパケットはマルチキャストのパケットであり、キュー#1およびキュー#2に格納される3つのパケットのポインタが、それぞれパケット(1〜3)が格納されるアドレスにリンクされるところを示している。
なお、マルチキャストのパケットを読み出す場合には、そのパケットが幾つのキューによって共有されているかの情報を保持しておき、マルチキャストパケットが読み出された回数が共有するキューの数と一致したときに、マルチキャストのパケットが格納されるDRAMまたはSRAMのアドレスを開放するようにすればよい。
以上説明したように、本実施の形態における記憶装置によれば、マルチキャストのパケットをキューに書き込む場合には、パケットのデータを外部のメモリに1回だけ書き込み、各キューのポインタをそのパケットを書き込んだアドレスにリンクさせるようにしたので、第4の実施の形態において説明した効果に加えて、外部のメモリに対するアクセスの回数をさらに減らすことができ、消費電力をさらに削減することが可能となった。
また、マルチキャストのパケットを外部のメモリに1回だけ書き込むようにしたので、メモリの空き容量が不足するのを防止することが可能となった。
(第6の実施の形態)
本発明の第4の実施の形態における記憶装置は、1つのコマンドで1つのパケットのデータの書き込みまたは読み出しを行なうものであった。本発明の第6の実施の形態における記憶装置は、1つの書き込みコマンドで一定量のデータのみの書き込みを行なうものである。
本発明の第6の実施の形態における記憶装置は、図19に示す第4の実施の形態における記憶装置の概略構成と比較して、コマンドコントローラの機能のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。なお、本実施の形態におけるコマンドコントローラの参照番号を31”として説明する。
図26は、本発明の第6の実施の形態における記憶装置のパケットのデータの書き込みを説明するためのタイミングチャートである。なお、図26においては、パケットの40セグメントのデータが書き込まれる毎に、ネットワークプロセッサから書き込みコマンドが発行される。
T1において、コマンドコントローラ31”が、ネットワークプロセッサから書き込みコマンド(Wt)およびキュー番号(#0)を受けると、パケットの最初の40セグメント分のデータの書き込みを開始する。
T2以降において、有効なデータが入力されると、データFIFO39がパケットのデータ(D0〜D39)を格納し、データFIFO40またはデータFIFO41を介してDRAMまたはSRAMに順次データを出力する。
T3において、コマンドコントローラ31”が、ネットワークプロセッサから再度書き込みコマンド(Wt)およびキュー番号(#0)を受けると、パケットの次の40セグメント分のデータの書き込みを開始する。
T4以降において、有効なデータが入力されると、データFIFO39がパケットのデータ(D0〜D39)を格納し、データFIFO40またはデータFIFO41を介してDRAMまたはSRAMに順次データを出力する。
T5において、コマンドコントローラ31”が、ネットワークプロセッサから書き込みコマンド(Wt)およびキュー番号(#0)を受けると、パケットの残りのセグメントのデータの書き込みを開始する。図26においては、D40〜D45が端数のセグメントを示している。
T6において、コマンドコントローラ31”がDEND信号を受けると、パケットのデータ書き込みが終了したことをパケット長カウンタ32およびデータFIFO39に通知する。パケット長管理部33は、パケット長カウンタ32から受けたパケット長をパケット長格納部34に格納する。
なお、図26においては、最後の端数のセグメントを書き込む場合に、ネットワークプロセッサが記憶装置に書き込みコマンドを発行して一定量よりも短いデータを外部のメモリに書き込むようにしたが、ネットワークプロセッサが最後の書き込みコマンドを発行せずに、最後の一定量のデータに追加する形で、一定量のデータよりも長いデータとして外部のメモリに書き込むようにしてもよい。
以上説明したように、本実施の形態における記憶装置によれば、1つの書き込みコマンドで一定量のデータのみの書き込みを行なうようにしたので、第4の実施の形態において説明した効果と同様の効果を奏することが可能となった。
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。