(57)【特許請求の範囲】
【請求項１】
受信パケットをデータバッファに書き込み、品質識別手段によって識別された品質クラスに応じて、スケジューラがデータバッファに書き込まれたパケットについての読み出し順序を調整する構成のパケットバッファにおいて、
データバッファは、
所定の数Ｎとこの所定の数Ｎ以上であって前記所定の数Ｎに定数１.５を乗じた数以下の所定の数Ｌとの和を超える所定の数Ｍ個の同時にアクセス可能なメモリバンクと、
所定のメモリサイクルごとに、所定の数Ｎまでの読出コマンドおよび書込コマンドに応じて、前記メモリバンクに対するアクセスを実行するアクセス手段とを備えた構成であり、
受信したパケットを所定のデータ長に基づいて、少なくとも一つのデータブロックに分割し、各データブロックについて書込要求を発行する書込要求手段と、
連続するＮ＋１個の書込要求に応じてそれぞれ異なる前記メモリバンクを選択する書込バンク選択手段と、
前記メモリサイクルごとに、前記書込要求手段によって発行された書込要求から順に最大Ｎ個の書込要求を選択し、対応するデータブロックをそれぞれについて前記バンク選択手段によって選択された前記メモリバンクに書き込む旨の書込コマンドを前記アクセス手段に入力するデータ書込手段と、
各パケットに対応するデータブロックそれぞれについて、それぞれが書き込まれた前記メモリバンクおよびアドレスに関する情報を管理するアドレス管理手段と、
メモリサイクルごとに、スケジューラからＮ個までのデータブロックについての読出要求を受け取り、前記アドレス管理手段に保持されたアドレスに関する情報に基づいて、前記読出要求で指定されたデータブロックが格納された前記メモリバンクの中から、同一のメモリサイクルにおいて読出可能なものを読出バンクとして選択する第１読出バンク選択手段と、
各メモリサイクルにおいて前記スケジューラから受信した読出要求のうち、そのメモリサイクルにおいて読み出しが実行されなかった読出要求を保持し、対応するメモリバンクを次のメモリサイクルにおいて読出バンクとして選択する第２読出バンク選択手段と、
前記第１読出バンク選択手段と前記第２読出バンク選択手段とによって選択された読出バンクについての読出要求から、前記第２読出バンク選択手段に保持された読出要求を優先して所定の数Ｌまでの読出要求を選択し、それぞれ該当するメモリバンクからデータブロックを読み出す旨の読出コマンドを前記アクセス手段に入力するデータ読出手段と
を備えたことを特徴とするパケットバッファ。
【請求項２】
請求項１に記載のパケットバッファにおいて、
アクセス手段は、パケットを分割する基準となるデータ長に相当するデータ長を持つパケットが受信される周期と同一のメモリサイクルごとに、読出コマンドおよび書込コマンドを実行する構成である
ことを特徴とするパケットバッファ。
【請求項３】
請求項１に記載のパケットバッファにおいて、
書込バンク選択手段は、
過去Ｎ回の書込要求において書込バンクとして指定されたメモリバンクのバンク番号を書込要求の履歴を表す情報として保持する履歴保持手段と、
前記書込要求の履歴を表す情報と、現在のメモリサイクルにおいてデータ読出手段によってデータブロックの読み出しが行われるメモリバンクを示すバンク番号とに基づいて、前記現在のメモリサイクルにおいてデータブロックの書き込みが可能なメモリバンクを示すバンク番号を書込バンク候補として収集する候補収集手段と、
前記候補収集手段によって収集された各書込バンク候補に、所定の規則に従って優先順位を設定する順位設定手段と、
前記優先順位に従って、前記書込バンク候補からＮ個のバンク番号を選択し、書込バンクを示す情報としてデータ書込手段に入力する優先選択手段とを備えた構成である
ことを特徴とするパケットバッファ。
【請求項４】
請求項１に記載のパケットバッファにおいて、
データバッファの各メモリバンクはＤＲＡＭから形成されており、
前記データバッファに入力される書込コマンドおよび読出コマンドに基づいて、アクセスの対象となっていないメモリバンクを検出するバンク検出手段と、
前記各メモリバンクに対応し、前記バンク検出手段によって当該メモリバンクが検出されるごとに、当該メモリバンクを形成する記憶領域のいずれかを順次に読出対象とし、この読出対象からデータを読み出す旨の擬似読出コマンドを作成して前記データバッファに入力するコマンド発行手段とを備えた構成である
ことを特徴とするパケットバッファ。
【請求項５】
請求項１に記載のパケットバッファにおいて、
データバッファから読み出されたデータを読出要求に対応して保持する２次バッファと、
前記２次バッファにデータが保持されている読出要求について、それぞれ読出要求がスケジューラによって発行されてからの経過時間を監視し、所定の出力待機時間が経過したときに、当該読出要求の待機時間が終了した旨を示す待機完了通知を出力するタイマと、
前記待機完了通知に応じて、該当する読出要求に対応して２次バッファに保持されたデータを出力する出力制御手段とを備えた構成である
ことを特徴とするパケットバッファ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ルータやスイッチなど、パケット交換を行なう装置において、受信パケットを一時的に蓄積し、所定の規則に従って送出するパケットバッファに関するものであり、特に、各パケットに対して要求される転送品質に応じて、到着順とは異なる優先順位を転送順序に適用する制御を行なう技術に関する。
インターネットの急速な普及に伴って、インターネットを利用したデータ通信サービスは飛躍的に発展しており、今や、ＩＰ(Internet Protocol) パケットに代表されるパケットによるデータ通信が、データ通信全体のトラフィックの主流となりつつある。また、インターネットを利用したデータ通信サービスの中でも、特に、音声や動画像データの伝送などのようにリアルタイム性が強く要求されるサービスに対する需要の高まりは顕著である。
【０００２】
これに伴って、ＩＰパケットにカプセル化された動画像データや音声データなどを、高品質を保って伝送するための技術(ＱｏＳ:Quality of Service)が要望されている。このためには、ルータやスイッチにおいて、各パケットに設定されたデータ転送品質に従って、受信したパケットをその到着順序とは異なる順序で送出する制御を行なう必要がある。
【０００３】
【従来の技術】
ルータやスイッチなど、パケット交換を行なう装置において、パケットバッファは、出力先の伝送経路を選択するためのハードウェアスイッチなどの前段に位置し、受信パケットを一時的に蓄積し、蓄積したパケットを所定の規則に従って送出する役割を果たしている。
図１３に、従来のパケットバッファの第１の構成例を示す。
図１３に示したパケットバッファにおいて、品質判定部４１１は、受信したパケットから品質クラスに関する情報を抽出し、この情報をスケジューラ４１２に通知するとともに、受信パケットを書込制御部４１３に渡す。スケジューラ４１２は、必要に応じて、受信パケットを共通バッファ４１４への書込単位に分割し、各書込単位についての書き込み要求を書込制御部４１３に入力する。このとき、スケジューラ４１２は、各受信パケットにアドレス管理用のリストを割り当て、このリストに、それぞれの受信パケットを分割して得られた複数の書込単位についての連鎖およびそれぞれの書込アドレスを保持している。また、スケジューラ４１２は、品質判定部４１１から通知された品質クラスに関する情報に基づいて、共通バッファ４１４に格納されている各受信パケットの読出順序を調整し、この読出順序に従って、これらの受信パケットの読み出し要求を読出制御部４１５に入力する。このとき、スケジューラ４１２は、各パケットに対応するリストを読出制御部４１５に指示し、これに応じて、読出制御部４１５は、指定されたリストに保持された各アドレスを順次に読出アドレスとして共通バッファ４１４に入力する。
【０００４】
このように、図１３に示したパケットバッファにおいては、到着したパケットを共通バッファ４１４に書き込んでいき、スケジューラ４１２によって、要求される品質クラスに基づいて読出順序を決定し、この読出順序に従って、読出制御部４１５が各パケットを読み出すことにより、品質クラスに応じた転送制御を実現している。
【０００５】
また、一方、図１４に、従来のパケットバッファの第２の構成例を示す。
図１４に示したパケットバッファは、各品質クラスに対応するＦＩＦＯ４２１を備えている。このパケットバッファにおいて、品質判定部４２２は、受信パケットを品質クラスに応じたＦＩＦＯ４２１に入力するとともに、スケジューラ４２３に、受信パケットを入力したＦＩＦＯ４２１を示す情報を通知する。スケジューラ４２３は、各ＦＩＦＯ４２１に設定された優先順位に基づいて、これらのＦＩＦＯ４２１からの読出をスケジューリングし、バッファ選択部４２４に選択すべきＦＩＦＯ４２１を指示する。
【０００６】
このように、図１４に示したパケットバッファにおいては、到着したパケットを品質クラスごとに設けたＦＩＦＯに分類して格納し、スケジューラ４２３からの指示に応じて、バッファ選択部４２４が指定されたＦＩＦＯ４２１選択し、該当するＦＩＦＯ４２１に保持されたパケットを順次に送出することにより、品質クラスに応じた転送制御を実現している。
【０００７】
【発明が解決しようとする課題】
図１３に示したパケットバッファにおいては、到着順にかかわらない優先順位に従って共通バッファ４１４からパケットが読み出されるので、共通バッファ４１４に指定される読出アドレスは当然ランダムである。また、共通バッファ４１４の空き領域をリストによって管理しながら受信パケットを書き込むので、書込アドレスもランダムとなる。
したがって、データ通信速度の高速化に対応するために高速なルータを実現しようとすれば、当然ながら、共通バッファ４１４として、読み出し、書き込みともに高速なランダムアクセス性能を備えたメモリ素子が必要となる。つまり、共通バッファ４１４として採用するメモリ素子の価格によって、ルータの価格が制限され、また、メモリ素子の性能によって、ルータの性能が制限されてしまう。
【０００８】
一方、図１４に示したパケットバッファにおいては、品質クラスごとに、パケットの到着頻度に大きなばらつきがあるにもかかわらず、品質クラスごとにＦＩＦＯ４２１を設ける必要がある。このため、パケットの到着頻度が低い品質クラスでは、メモリの使用効率が著しく低くなってしまう。また、読み出しと書き込みとを調整するために、各品質クラスごとのＦＩＦＯ４２１とは別のバッファが必要である。これらのことから、図１４に示したパケットバッファで実現可能な処理サイクルは、最大パケット到着頻度よりも遅くなってしまう。
【０００９】
このように、従来の技術では、パケットバッファの構成としていずれの構成を採用した場合にも、高い転送能力を実現するためには、高いコストを支払う必要がある。
本発明は、比較的低価格のメモリ素子を用いて、高速な処理サイクルと高いメモリ使用効率とを両立可能なパケットバッファを提供することを目的とする。
【００１０】
【課題を解決するための手段】
図１に、請求項１および請求項２のパケットバッファの原理ブロック図を示す。
請求項１の発明は、受信パケットをデータバッファ１０１に書き込み、品質識別手段１０２によって識別された品質クラスに応じて、スケジューラ１０３がデータバッファ１０１に書き込まれたパケットについての読み出し順序を調整する構成のパケットバッファにおいて、データバッファ１０１は、所定の数Ｎとこの所定の数Ｎ以上であって所定の数Ｎに定数１.５を乗じた数以下の所定の数Ｌとの和を超える所定の数Ｍ個の同時にアクセス可能なメモリバンク１０４と、所定のメモリサイクルごとに、所定の数Ｎまでの読出コマンドおよび書込コマンドに応じて、メモリバンク１０４に対するアクセスを実行するアクセス手段１０５とを備えた構成であり、受信したパケットを所定のデータ長に基づいて、少なくとも一つのデータブロックに分割し、各データブロックについて書込要求を発行する書込要求手段１１１と、連続するＮ＋１個の書込要求に応じてそれぞれ異なるメモリバンク１０４を選択する書込バンク選択手段１１２と、メモリサイクルごとに、書込要求手段１１１によって発行された書込要求から順に最大Ｎ個の書込要求を選択し、対応するデータブロックをそれぞれについて書込バンク選択手段１１２によって選択されたメモリバンク１０４に書き込む旨の書込コマンドをアクセス手段１０５に入力するデータ書込手段１１３と、各パケットに対応するデータブロックそれぞれについて、それぞれが書き込まれたメモリバンク１０４およびアドレスに関する情報を管理するアドレス管理手段１１４と、メモリサイクルごとに、スケジューラ１０３からＮ個までのデータブロックについての読出要求を受け取り、アドレス管理手段１１４に保持されたアドレスに関する情報に基づいて、読出要求で指定されたデータブロックが格納されたメモリバンク１０４の中から、同一のメモリサイクルにおいて読出可能なものを読出バンクとして選択する第１読出バンク選択手段１１５と、各メモリサイクルにおいてスケジューラ１０３から受信した読出要求のうち、そのメモリサイクルにおいて読み出しが実行されなかった読出要求を保持し、対応するメモリバンク１０４を次のメモリサイクルにおいて読出バンクとして選択する第２読出バンク選択手段１１６と、第１読出バンク選択手段１１５と第２読出バンク選択手段１１６とによって選択された読出バンクについての読出要求から第２読出バンク選択手段に保持された読出要求を優先して所定の数Ｌまでの読出要求を選択し、それぞれ該当するメモリバンク１０４からデータブロックを読み出す旨の読出コマンドをアクセス手段１０５に入力するデータ読出手段１１７とを備えたことを特徴とする。
【００１１】
請求項１の発明は、データ書込手段１１３とデータ読出手段１１７とにより、複数のメモリバンク１０４を分散して指定する書込コマンドおよび読出コマンドをアクセス手段１０５に入力することにより、Ｎ個のデータブロックの書込処理とＮ個のデータブロックの読出処理とを同時に処理可能である。また、これにより、各メモリバンク１０４に対する書込コマンドあるいは読出コマンドの入力間隔を、スケジューラ１０３からの読出要求あるいは新たなパケットの到着に伴う書込要求の発生サイクルよりも長い時間とすることができるので、メモリバンク１０４を形成するメモリ素子の動作速度にかかわらず、読出要求および書込要求を漏れなく処理することが可能である。また、書込バンク選択手段１１２により、連続するデータブロックについてそれぞれ異なるメモリバンク１０４を書込バンクとして選択し、これらのメモリバンク１０４に振り分けて書き込むので、パケットバッファに格納されたパケットを書き込んだ順序とは異なる順序で読み出した場合においても、各メモリサイクルにおいて、同一のメモリバンク１０４に対する読み出しコマンドが連鎖的に重複することはない。
【００１２】
請求項２の発明は、請求項１に記載のパケットバッファにおいて、アクセス手段１０５は、パケットを分割する基準となるデータ長に相当するデータ長を持つパケットが受信される周期と同一のメモリサイクルごとに、読出コマンドおよび書込コマンドを実行する構成であることを特徴とする。
請求項２の発明は、パケットを分割する基準となるデータ長のパケットが受信される周期に対応するメモリサイクルで、アクセス手段１０５がデータブロックの読み出しおよび書き込みを処理することにより、受信したデータを、その受信に要した時間内に、データバッファ１０１に書きこむことが可能であるので、パケットごとにランダムに読み出し順序をスケジューリングすることができる。
【００１３】
なお、請求項２に記載のパケットバッファにおいて、データ読出手段１１７は、読出要求から順に、定数１．５に所定の数Ｎを乗じた数を超えない最大の整数Ｌまでの読出要求を選択する構成とし、データバッファ１０１は、整数Ｌに、所定の数Ｎおよび定数１を加えた数Ｍ個のメモリバンク１０４を備えて構成すれば、メモリバンク１０４の使用効率を最大とすることができる。なぜなら、読み出しに使用されるメモリバンク１０４の数は、現メモリサイクルにおける読出要求に対応するＮ個に、前のメモリサイクルで重複したために、現メモリサイクルに振り替えられる読出要求の数である高々Ｎ／２個を加算した数で十分であり、また、書き込みに使用されるべきメモリバンク１０４の数は、前のメモリサイクルにおいて書き込みに使用されたＮ個のメモリバンクを除いた上で、更に１個存在すればよいので、Ｎ＋１個で十分であるからである。
【００１４】
図２に、請求項３の発明の原理ブロック図を示す。
請求項３の発明は、請求項１に記載のパケットバッファにおいて、書込バンク選択手段１１３は、過去Ｎ回の書込要求において書込バンクとして指定されたメモリバンク１０４のバンク番号を書込要求の履歴を表す情報として保持する履歴保持手段１２１と、書込要求の履歴を表す情報と、現在のメモリサイクルにおいてデータ読出手段１１７によってデータブロックの読み出しが行われるメモリバンク１０４を示すバンク番号とに基づいて、現在のメモリサイクルにおいてデータブロックの書き込みが可能なメモリバンク１０４を示すバンク番号を書込バンク候補として収集する候補収集手段１２２と、候補収集手段１２２によって収集された各書込バンク候補に、所定の規則に従って優先順位を設定する順位設定手段１２３と、優先順位に従って、書込バンク候補からＮ個のバンク番号を選択し、書込バンクを示す情報としてデータ書込手段１１３に入力する優先選択手段１２４とを備えた構成であることを特徴とする。
【００１５】
請求項３の発明は、履歴保持手段１２１に保持された履歴情報に基づいて、候補収集手段１２２によって抽出された書込バンクの候補に、順位設定手段１２３によって優先順位を設定し、優先選択手段１２４において、適切な書込バンクを選択するための指標を与えることができる。
また、図２に示したパケットバッファにおいて、順位設定手段１２３は、書込要求ごとに、データバッファ１０１に備えられたメモリバンク１０４の数Ｍまでの自然数を巡回的に計数する巡回カウンタ１２５と、候補収集手段１２２によって収集された書込バンク候補から、履歴保持手段１２１に保持されたバンク番号以外であって、現在の読出バンクを示すバンク番号以外であるバンク番号を優先候補として選択する優先候補選択手段１２６と、巡回カウンタ１２５の計数で示されるバンク番号に基づいて、優先候補のいずれかに最高の優先順位を与える順位決定手段１２７とを備えた構成としてもよい。
【００１６】
このような構成を採用した場合は、優先候補選択手段１２６によって選択された優先候補の一方に、順位決定手段１２７が、巡回カウンタ１２５の計数値に応じて最高の優先順位を設定することにより、優先候補となるメモリバンク１０４が複数存在した場合に、最終的に書込バンクとして各メモリバンク１０４が選択される確率を平均化することができ、複数のメモリバンク１０４を平均的に使用することができる。
【００１７】
図３に、請求項４および請求項５の発明の原理ブロック図を示す。
請求項４の発明は、請求項１に記載のパケットバッファにおいて、データバッファ１０１の各メモリバンク１０４はＤＲＡＭから形成されており、データバッファ１０１に入力される書込コマンドおよび読出コマンドに基づいて、アクセスの対象となっていないメモリバンク１０４を検出するバンク検出手段１３１と、各メモリバンク１０４に対応し、バンク検出手段１３１によって当該メモリバンク１０４が検出されるごとに、当該メモリバンク１０４を形成する記憶領域のいずれかを順次に読出対象とし、この読出対象からデータブロックを読み出す旨の擬似読出コマンドを作成してデータバッファ１０１に入力するコマンド発行手段１３２とを備えた構成であることを特徴とする。
【００１８】
請求項４の発明は、バンク検出手段１３１によって空いているメモリバンクとして各メモリバンク１０４が検出されるごとに、対応するコマンド発行手段１３２によって、当該メモリバンク１０４の格納領域を順次に指定してデータブロックの読み出しを行なうことにより、該当する格納領域に対するリフレッシュ操作を実行した場合と同等の記憶保持効果を得ることができる。
【００１９】
請求項５の発明は、請求項１に記載のパケットバッファにおいて、データバッファ１０１から読み出されたデータブロックを読出要求に対応して保持する２次バッファ１４１と、２次バッファ１４１にデータブロックが保持されている読出要求について、それぞれ読出要求がスケジューラ１０３によって発行されてからの経過時間を監視し、所定の出力待機時間が経過したときに、当該読出要求の待機時間が終了した旨を示す待機完了通知を出力するタイマ１４２と、待機完了通知に応じて、該当する読出要求に対応して２次バッファ１４１に保持されたデータブロックを出力する出力制御手段１４３とを備えた構成であることを特徴とする。
【００２０】
請求項５の発明は、データバッファ１０１から読み出されたデータブロックを、一旦２次バッファ１４１に保持し、タイマ１４２からの通知に応じて、出力制御手段１４３によって出力することにより、各データブロックがデータバッファ１０１から読み出されたタイミングにかかわらず、そのデータブロックについての読み出し要求が発生した時点からの経過時間に応じてデータブロックを出力することができる。これにより、パケットの境界などにおいて、読み出しに使用されるメモリバンクが衝突し、データブロックの読み出しを次のメモリサイクルに振り替えた場合においても、各パケットを形成するデータブロックを連続的に出力することができる。
【００２１】
【発明の実施の形態】
以下、図面に基づいて、本発明の実施形態について詳細に説明する。
図４に、本発明のパケットバッファの実施形態を示す。
図４に示したパケットバッファは、メモリ制御部２０１を介して各メモリサイクルにおいて同時にアクセス可能な６個のメモリバンク２０２を備えており、これらのメモリバンク２０２には、それぞれ番号＃０から＃５が与えられている。
このパケットバッファにおいて、品質識別部２０３は、書込処理部２１０に入力される受信パケットの品質クラスを識別し、この品質識別結果をリスト制御部２０４に通知する役割を果たしている。
【００２２】
また、図４において、リスト制御部２０４は、品質クラスに対応するキューごとにリストテーブルを備えており、各パケットについての品質識別結果に対応するリストテーブルに、そのパケットのデータが格納された格納場所に関する情報を格納していくことにより、各品質クラスごとのリストテーブルを作成し、これらのリストテーブルに基づいて、スケジューラ２０５に読出リクエストを入力する。
【００２３】
スケジューラ２０５は、リスト制御部２０４から受け取った読出リクエストに基づいて、パケットバッファに保持されたパケットの出力順序を決定し、この出力順序に従って、次に読み出すべきデータの格納場所を示すリストテーブルを読出処理部２２０に通知して、該当するパケットデータの読み出しを要求する。
図４に示したパケットバッファにおいて、メモリ制御部２０１は、書込処理部２１０から書込コマンドとともにパケットデータを受け取って、指定されたメモリバンク２０２にそのパケットデータを書き込み、また、読出処理部２２０から受け取った読出コマンドに応じて、指定されたメモリバンク２０２に格納されたパケットデータを読み出し、レイテンシ制御部２０６を介して出力する。
【００２４】
図４に示した書込処理部２１０において、書込要求制御部２１１は、各メモリサイクルにおいて受信したパケットデータを必要に応じて所定のデータ長のデータブロックに分割し、これらのデータブロックごとに書込要求を発行して、対応するデータブロックとともに書込バンク決定部２１２に渡す。この書込バンク決定部２１２は、各メモリバンク２０２への書込履歴と、各メモリバンクに対する読出要求とに基づいて、後述する所定の規則に従って現メモリサイクルにおいてデータを書き込むメモリバンク２０２を決定し、リスト制御部２０４に通知する。また、図４に示した書込制御部２１３は、書込バンク決定部２１２から各データブロックとその書込先のメモリバンクを示す情報とを受け取り、各データブロックを対応するメモリバンク２０２に書き込む旨の書込コマンドを発行し、メモリ制御部２０１に入力する。
【００２５】
一方、図４に示した読出処理部２２０において、読出要求制御部２２１は、スケジューラ２０５から通知されたリストテーブルに基づいて、現メモリサイクルにおいて読み出すべきデータブロックについての読出要求を発行し、読出制御部２２２に入力する。この読出要求に応じて、読出制御部２２２は、読出要求で指定されたメモリバンク２０２の指定されたアドレスからデータブロックを読み出す旨の読出コマンドを発行し、メモリ制御部２０１に入力する。
【００２６】
また、図４に示したパケットバッファにおいて、リフレッシュ制御部２０７は、書込処理部２１０および読出処理部２２０からメモリ制御部２０１に渡される書込コマンドおよび読出コマンドに基づいて、現メモリサイクルにおいて読み出しあるいは書き込みの対象となっていないメモリバンク２０２を検出し、該当するメモリバンク２０２の各アドレスに順次に読出コマンドを入力することにより、各メモリバンク２０２をリフレッシュする。
【００２７】
ここで、図１に示した各手段と、図４に示した各部との対応関係について説明する。
図４に示したメモリ制御部２０１は、図１に示したアクセス手段１０５に相当し、また、図４に示したメモリバンク２０２は、図１に示したメモリバンク１０４に相当する。また、図１に示したデータバッファ１０１は、図４において、上述したメモリ制御部２０１と各メモリバンク２０２とから形成されている。
【００２８】
また、図１に示した品質識別手段１０２およびスケジューラ１０３は、図４に示した品質識別部２０３およびスケジューラ２０５にそれぞれ相当し、図１に示したアドレス管理手段１１４の機能は、図４に示したリスト制御部２０４によって果たされる。
図１に示した書込要求手段１１１、書込バンク選択手段１１２およびデータ書込手段１１３は、図４に示した書込要求制御部２１１、書込バンク決定部２１２および書込制御部２１３にそれぞれ相当する。また、図１に示したデータ読出手段１１７は、図４に示した読出制御部２２２に相当し、図４に示した読出要求制御部２２１は、図１に示した第１読出バンク選択手段１１５および第２読出バンク選択手段１１６の機能を果たす。
【００２９】
次に、本発明にかかるパケットバッファの動作について大まかに説明する。
図５に、本発明のパケットバッファの概略動作を説明する図を示す。
図５において、符号Ｑ、Ｒ、Ｓを付して示す送信パケットは、パケットバッファから出力されるパケットを示しており、また、符号Ａ、Ｂ、Ｃ、Ｄを付して示す受信パケットは、上述した送信パケットＱ、Ｒ、Ｓの出力と並行して、パケットバッファに格納されるパケットを示している。
【００３０】
また、図５において、符号▲１▼〜▲５▼を付して示した各メモリサイクルは、最小パケット長、即ち、データブロック２個分のパケットを受信するために要する時間に一致している。以下では、各メモリサイクルにおいて、２つの読出コマンドに応じた読出処理と２つの書込コマンドに応じた書込処理とを並行して実行する動作について説明する。
【００３１】
ここで、図４に示したメモリバンク２０２(図５においては、それぞれに与えられた番号＃０〜＃５を付して示した)には、メモリバンク(第０期)として示したように、４つのパケットＱ、Ｒ、Ｓ、Ｔをそれぞれ分割して得られたデータブロックが既に格納されている。
このとき、図４に示したスケジューラ２０５により、パケットＱ、Ｒ、Ｓの順に読み出す旨が指示された場合に、読出処理部２２０は、図５に示すように、各メモリサイクルにおいて、パケットＱ、Ｒ、Ｓに対応するデータブロックについて、順次に読出コマンドを作成し、メモリ制御部２０１に入力する。例えば、図５において符号▲１▼で示したメモリサイクルでは、スケジューラ２０５から指定されたリストに従って、図４に示した読出要求制御部２２１により、パケットＱに対応するデータブロックQ-1，Q-2に対する読出要求が発行される。これに応じて、読出制御部２２２により、データブロックQ-1，Q-2が格納されているメモリバンク＃５およびメモリバンク＃０に対する読出コマンドが作成され、メモリ制御部２０１に入力される。
【００３２】
このような読出処理と並行して、図４に示した書込処理部２１０は、新たに受信したパケットに対応するデータブロックを、そのメモリサイクルにおいて読出中であるメモリバンク以外の４つのメモリバンクから選択したメモリバンクに書き込んでいく。例えば、受信パケットＡの入力に応じて、図４に示した書込要求制御部２１１は、この受信パケットＡを２つのデータブロックA-1，A-2に分割し、それぞれに対応して書込要求を発行する。これに応じて、書込バンク決定部２１２は、読出中であるメモリバンク＃５、＃０以外の４つのメモリバンクから書き込み先のメモリバンク２０２(例えば、メモリバンク＃１、＃２)を選択する。この選択結果に基づいて、書込制御部２１３は、上述した２つのデータブロックをそれぞれメモリバンク＃１、＃２に書き込む旨の書込コマンドを作成し、メモリ制御部２０１に入力する。この書込コマンドに応じて、メモリ制御部２０１により、これらのデータブロックが該当するメモリバンク２０２にそれぞれ書き込まれる。同様にして、パケットＢに対応するデータブロックB-1，B-2，B-3 が順次にメモリバンク＃３、＃５、＃４に書き込まれる。このようにして、パケットＣおよびパケットＤに対応する各データブロックが各メモリバンク２０２に格納された様子を、図５にメモリバンク(第１期)として示した。
【００３３】
このように、各メモリサイクルにおいて読み出されるデータブロックが格納されたメモリバンク以外のメモリバンクに、そのメモリサイクルにおいて新たに到着した受信パケットに対応するデータブロックを書き込むことにより、個々のメモリサイクルにおいて、送信すべきパケットに対応するデータブロックの読み出しと受信パケットに対応するデータブロックの書き込みとを両立させることができる。
【００３４】
なお、このように、各メモリサイクルにおいて２個の書込コマンドを処理する場合、即ち、同時に処理する書き込みコマンドの数Ｎが２である場合は、図４に示したように、６個のメモリバンク２０２を備えてパケットバッファを形成すれば、各メモリサイクルにおいて必要とされる読出バンクと書込バンクとの双方が確実に決定することが可能である。
【００３５】
次に、各データブロックの書き込み先となる書込バンクを適切に選択する方法について説明する。
ここで、上述したようにして、読出動作の対象となるメモリバンクを避けて、書込バンクを単純に決定していった場合に発生することが予想される問題について説明する。
【００３６】
図６に、パケットバッファにおいて発生し得る問題を説明する図を示す。
図６(ａ)に、メモリバンク＃０〜＃３に、パケットＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ，Ｘ，Ｙをそれぞれ分割して得られたデータブロックが格納されている状態を示す。これらのパケットに設定された優先順位に基づいて、スケジューラ２０５により、図６(ｂ)に示すように、パケットＢ，パケットＡ，パケットＣ，パケットＸ，パケットＸ，パケットＹの順に読み出しが指示された場合に、図６において、符号▲１▼〜▲７▼で示した各メモリサイクルにおいて、読出要求対象となるデータブロックを図６(ｃ)に示す。このとき、図６(ｄ)，(ｅ)，(ｆ)に示すように、符号▲２▼で示したメモリサイクル以降の各メモリサイクルにおいて、読出動作の対象となるメモリバンクが衝突し、次のメモリサイクルに処理が延期されるデータブロックが発生していることが分かる。
【００３７】
例えば、図６において符号▲２▼で示したメモリサイクルにおいて、スケジューラ２０５からの指示に従ってデータを読み出すためには、パケットＢの３番目のデータブロックＢ−３とパケットＡの最初のデータブロックＡ−１とを読み出す必要がある。しかしながら、これらのデータブロックは、ともにメモリバンク＃０に格納されているので、この２つのデータブロックを同一のメモリサイクルで読み出すことはできない。このように、パケットの境界において発生した衝突は、図６(ｅ)，(ｆ)に示すように、データブロックＡ−１の処理を次のメモリサイクルに振り替えることにより、次のメモリサイクルにおいて正常に処理することが可能である。
【００３８】
しかしなから、パケットＣやパケットＸおよびパケットＹのように、最初のデータブロックが書き込まれたメモリバンクと同一のメモリバンクに３番目のデータブロックが書き込まれたパケットを連続して読み出そうとすると、次のメモリサイクルに振り替えられるデータブロックが連鎖的に発生する。そして、ついには、図６(ｅ)に示すように、そのメモリサイクルにおいて読み出すべき２つのデータブロック双方と、前のメモリサイクルから振り替えられたデータブロックが格納されたメモリバンクが全て衝突し、図６(ｆ)において、符号ＮＧで示したように、次のメモリサイクルに振り替えることもできなくなってしまい、データブロックＹ−１の読み出しを実行すべきタイミングが失われ、パケットＹの送信が不可能となってしまう。
【００３９】
このような事態を未然に防ぐためには、単に、各メモリサイクルにおいて、書込先のメモリバンクが重複しないだけでなく、前のメモリサイクルにおける書込バンクを考慮して、現メモリサイクルにおいて書込バンクを決定する必要がある。
図７に、書込バンク決定部の詳細構成を示す。
【００４０】
図７に示した書込バンク決定部２１２において、書込履歴レジスタ２３１は、直前のＮ個の書込要求に応じて、この書込バンク決定部２１２によって書き込み先として選択されたメモリバンク２０２を示す情報を保持する。一方、読出バンクレジスタ２３２は、現メモリサイクルにおいてデータブロックが読み出されるＮ個のメモリバンク２０２の番号を図４に示した読出処理部２２０から受け取って、これらのメモリバンク２０２を示す情報を保持する。
【００４１】
上述した書込履歴レジスタ２３１および読出バンクレジスタ２３２に保持された内容に基づいて、候補抽出部２３３は、現メモリサイクルにおいて書き込み先として選択することができるメモリバンク２０２の候補を抽出し、候補レジスタ２３４に抽出したメモリバンク２０２を示す情報を保持する。
また、図７に示した書込バンク決定部２１２において、巡回カウンタ２３５は、Ｍ個の番号(例えば、番号＃０から＃５まで)をメモリサイクルごとに循環的に計数し、現メモリサイクルにおける計数値を順位演算部２３６に通知する。
【００４２】
この順位演算部２３６は、候補レジスタ２３４の内容と上述した巡回カウンタ２３５の計数値とに基づいて所定の演算を行ない、演算結果を優先順序を示す順位情報として順位レジスタ２３７に格納する。
この順位情報に基づいて、デコード部２３８は、上述した候補レジスタ２３４の内容と書込履歴レジスタ２３１の内容との組み合わせに対して、所定のデコード処理を行うことによって書込先となるＮ個のメモリバンク２０２を決定し、これらのメモリバンク２０２を書込制御部２１３に通知するとともに、これらのメモリバンク２０２を示す履歴情報を書込履歴レジスタ２３１に格納する。
【００４３】
ここで、図７に示した各部と、図２に示した各手段との対応関係を説明する。
図７に示した書込履歴レジスタ２３１は、図１に示した履歴保持手段１２１に相当するものである。また、図１に示した候補収集手段１２２は、図７に示した読出バンクレジスタ２３２と候補抽出部２３３と候補レジスタ２３４とから形成されている。
【００４４】
一方、図１に示した順位設定手段１２３の機能は、図７に示した巡回カウンタ２３５と、順位演算部２３６と、順位レジスタ２３７とによって果たされる。ここで、図７に示した巡回カウンタ２３５は、図１に示した巡回カウンタ１２５に相当するものである。また、順位演算部２３６が、順位レジスタ２３７を介して順位情報をデコード部２３８に渡すことにより、順位演算部２３６によって、優先候補選択手段１２６および順位決定手段１２７の機能が果たされ、また、デコード部２３８によって、図１に示した優先選択手段１２４の機能が果たされる。
【００４５】
次に、この書込バンク決定部の動作を具体的な例を使って説明する。
図８に、書込バンク決定部の動作を説明する図を示す。
図９に、順位演算部の動作を説明する図を示す。
図８において、書込履歴レジスタ２３１(図７参照)は、２つのレジスタＷＲ１，ＷＲ２から形成されており、これらのレジスタＷＲ１，ＷＲ２の各ビットは、図４に示した６つのメモリバンク２０２にそれぞれ対応している。また、図８において、読出バンクレジスタ(ＲＲ)２３２、候補レジスタ(ＷＣ)２３４、順位レジスタ(ＭＲ)２３７およびデコード結果(ＤＣ)の各ビットも同様に、上述した６つのメモリバンク２０２にそれぞれ対応している。
【００４６】
図８(ａ)に示すように、現メモリサイクルにおいてメモリバンク＃０、＃４からデータブロックを読み出し、前のメモリサイクルにおいてはメモリバンク＃２、＃３にデータブロックを書き込んでいた場合は、読出履歴レジスタＲＲの第０ビットおよび第４ビットに論理「１」がセットされ、また、書込履歴レジスタＷＲ１の第２ビットおよび第３ビットに論理「１」がセットされる。なお、もう一つの書込履歴レジスタＷＲ２は、前のメモリサイクルにおいて最初にデータブロックが書き込まれたメモリバンクを示しており、ここでは、第２ビットに論理「１」がセットされている。
【００４７】
この場合に、候補抽出部２３３は、例えば、書込履歴レジスタＷＲ１と読出履歴レジスタＲＲの各ビットについて否定論理和演算を行なうことにより、メモリバンク＃１、＃５を候補として抽出し、候補レジスタＷＣの該当するビットに論理「１」をセットする。
このようにして得られた候補レジスタＷＣの内容に基づいて、順位演算部２３６は、図９に示すように、それぞれ所定の規則に従って、巡回カウンタ２３５の計数値に対応する順位情報を算出する。
【００４８】
図９において、演算子Σは、図８に示した候補レジスタＷＣの各ビットを、指定された範囲で加算する演算を示している。なお、この演算子Σによって加算される範囲は、メモリバンク２０２に与えられた番号＃０〜＃５を循環する数として捉えて決めている。すなわち、演算子Σを範囲「２−０」について実行する場合に、順位演算部２３６は、メモリバンク＃２〜＃５に対応する候補レジスタＷＣの各ビットとともに、メモリバンク＃０に対応するビットの値を加算して、順序情報の該当するビットを算出する。
【００４９】
したがって、例えば、図８(ａ)に示したような候補レジスタＷＣの内容に基づいて、順位演算部２３６は、図９に示したような順位情報Ｐ０〜Ｐ５をそれぞれ算出し、巡回カウンタ２３５の計数値に応じて、該当する順位情報を順位レジスタＭＲに格納する。もちろん、順位演算部２３６により、巡回カウンタ２３５の計数値に対応する順位情報のみを、上述した規則に従って算出してもよい。
【００５０】
例えば、巡回カウンタ２３５の計数値が数値「４」であった場合に、順位演算部２３６は、図８に示したように、最大の優先順位である優先順位「０」をメモリバンク＃４、＃５に与え、次に優先度の高い優先順位「１」をメモリバンク＃０、＃１に与える旨の順位情報Ｐ４を選択し、順位レジスタＭＲにセットする。
これに応じて、デコード部２３８は、図８(ａ)に示すように、候補レジスタＷＣにおいて論理「１」がセットされた各ビットと、順位レジスタＷＲの対応するビットとを組み合わせて、各メモリバンク＃０〜＃５に対応するデコード結果を作成する。
【００５１】
例えば、図８(ａ)に示したように、メモリバンク＃５に対応してデコード結果[０１]が得られ、メモリバンク＃１に対応してデコード結果[１０]が得られた場合に、デコード部２３８は、メモリバンク＃５を優先順位「０」の書込バンクとして選択し、メモリバンク＃１を優先順位「１」の書込バンクとして選択し、これらのメモリバンク２０２を示す情報を書込制御部２１３に通知する(図４参照)。
【００５２】
このように、候補抽出部２３３によって抽出された候補に対して、巡回カウンタ２３５の計数値に応じて変化する優先順位を与えることにより、各メモリバンク２０２が書込バンクとして選択される確率を平準化することができる。
一方、図８(ｂ)に示すように、候補レジスタＷＣにおいて論理「１」がセットされた各ビットと、順位レジスタＷＲの対応するビットとを組み合わせて得られるデコード結果において、優先順位「１」の書込バンクを示す組み合わせ[１０]が存在しなかった場合に、デコード部２３８は、書込履歴レジスタＷＲ２を参照し、この書込履歴レジスタＷＲ２において論理「１」がセットされたビットに対応するメモリバンク(例えば、メモリバンク＃３)を優先順位「１」の書込バンクとして選択する。
【００５３】
上述したようにして、前のメモリサイクルにおける書込バンクを考慮して、現メモリサイクルにおける書込バンクを決定することにより、一つのメモリサイクルにおいて同時に実行される書込コマンドの数Ｎ(上述した例ではＮ＝２)に数値「１」を加えた数以上の連続する書込コマンドにおいてそれぞれ異なる書込バンクを指定して、データブロックを書き込むことができる。これにより、図６に示したような問題を回避し、各メモリサイクルにおいて読出が指示されたデータブロックを遅くとも次のメモリサイクルまでに確実に読み出すことが可能となる。
【００５４】
上述したようにして書込バンクを決定した後、デコード部２３８は、書込履歴レジスタＷＲ１、ＷＲ２の全ビットをリセットした後、書込履歴レジスタＷＲ１の第１ビットと第５ビットに論理「１」をセットするとともに、書込履歴レジスタＷＲ２の第５ビットに論理「１」をセットして、次のメモリサイクルにおける動作に備える。
【００５５】
次に、各メモリバンクからデータブロックを読み出す動作について説明する。
図１０に、読出処理部およびレイテンシ制御部の詳細構成を示す。また、図１１に、データブロックを読み出す動作を説明する図を示す。
図１０に示した読出要求制御部２２１において、要求振分部２４１は、スケジューラ２０５から受け取ったリストに基づいて、各メモリバンク２０２に対する読出要求を対応する要求保持部２４２に振り分けて格納する。また、図１０に示した読出制御部２２２において、要求読込部２４３は、各メモリバンク２０２に対応する要求保持部２４２から、所定の規則に従って読出要求を読み込み、コマンド作成部２４４に渡す。一方、図１０に示したレイテンシ制御部２０５において、レイテンシＦＩＦＯ２４５は、ＦＩＦＯ管理部２４６からの指示に従って、メモリ制御部２０１から受け取ったデータブロックを所定の期間だけ保持した後、読出データとして出力する。
【００５６】
ここで、図１０に示した各部と、図１および図３に示した各手段との対応関係について説明する。
図１０に示したコマンド作成部２４４は、図１に示したデータ読出手段１１７に相当するものである。また、図１に示した第１読出バンク選択手段１１５および第２読出バンク選択手段１１６の機能は、図１０に示した要求振分部２４１、要求保持部２４２および要求読込部２４３によって果たされる。一方、図１０に示したレイテンシＦＩＦＯ２４５は、図３に示した２次バッファ１４１に相当するものである。また、図３に示したタイマ１４２および出力制御部１４３の機能は、図１０に示したＦＩＦＯ管理部２４６が、後述するようにして、レイテンシＦＩＦＯ２４５の動作を制御することによって果たされる。
【００５７】
次に、図１０および図１１を参照して、スケジューラ２０５からの指示に応じて、各メモリバンクから適切なデータブロックを読み出す動作について説明する。
図１０に示した要求保持部２４２は、図１１に示すように、各メモリバンク２０２(図４参照)に対応する６つの記憶領域をそれぞれ備えたＦＩＦＯ０およびＦＩＦＯ１から形成されている。また、図１１において、レイテンシＦＩＦＯ２４５は、例えば、インデックス０からインデックス７までの各インデックスに対応して、データブロック(図１１において符号dataとして示した)とそのデータブロックを出力するまでの残り時間を示すレイテンシ情報（図１１において符号lat.として示した）とを格納する領域を備えている。また、図１０に示したＦＩＦＯ管理部２４６は、図１１に示す読出バッファを備えており、この読出バッファは、各メモリバンクから読み出されるデータブロックを格納すべき記憶領域を示すインデックスを保持している。
【００５８】
図１０に示した要求振分部２４１は、まず、スケジューラ２０５から受け取ったリストに基づいて、各データブロックについての読出要求を作成するとともに、図１０に示したレイテンシ制御部２０６のＦＩＦＯ管理部２４６から、レイテンシＦＩＦＯ２４５において、読出要求の対象となるデータブロックを格納すべき記憶領域を示すインデックスを受け取る。
【００５９】
ここで、ＦＩＦＯ管理部２４６は、レイテンシＦＩＦＯ２４５に備えられた８個の記憶領域を循環的に管理している。また、このＦＩＦＯ管理部２４６は、出力待ちのデータブロックからなるキューの先頭が格納されている記憶領域を示すインデックスＬＨおよびキューの末尾を示すインデックスＬＴを保持しており、新たな読出要求の対象となるデータブロックを格納すべき記憶領域を示すインデックスとして、上述したインデックスＬＴを要求振分部２４１に通知した後、このインデックスＬＴをインデックス０からインデックス７の範囲で循環的にインクリメントすればよい。また、このとき、ＦＩＦＯ管理部２４６は、要求振分部２４１に渡したインデックスに対応するレイテンシ情報として、所定の初期値（例えば、数値「６」）を格納する。次に、対象となるデータブロックが格納されているメモリバンク２０２に応じて、図１１に示したＦＩＦＯ１の対応する記憶領域にそのデータブロックのアドレスとインデックスとを格納する。
【００６０】
例えば、図１１に示すように、新たな読出要求を格納すべきＦＩＦＯ１の記憶領域（図１１において網掛けを付して示す）に、既に別の読出要求が格納されている場合は、その読出要求をＦＩＦＯ０の対応する記憶領域（図１１において別の種類の網掛けを付して示す）に格納した上で、新たな読出要求をＦＩＦＯ１に格納する。これにより、図１１に示したリストに従って、ＦＩＦＯ１のメモリバンク＃４に対応する記憶領域に格納されていたアドレスAd1 とインデックス７とが、ＦＩＦＯ０のメモリバンク＃４に対応する記憶領域に移され、代わりに、アドレスAd2 とインデックス２との組み合わせが格納される。
【００６１】
このように、ＦＩＦＯ０に読出要求が格納されている場合に、図１０に示した要求読込部２４３は、各メモリサイクルにおいて、まず、ＦＩＦＯ０に格納されている読出要求を優先的に読み込み、次いで、上述した読出要求とは異なるメモリバンクに対応してＦＩＦＯ１に格納されている読出要求を読み込んで、コマンド作成部２４４に渡す。
【００６２】
例えば、図１１に示したように、ＦＩＦＯ１のメモリバンク＃０に対応する記憶領域にアドレスAd0 とインデックス１とが格納されていた場合は、要求読込部２４３により、この記憶領域に格納された読出要求が、上述したＦＩＦＯ０のメモリバンク＃４に対応する記憶領域に格納された読出要求とともに読み込まれ、これらの読出要求に応じて、コマンド作成部２４４により、それぞれ対応する読出コマンドが作成されて、メモリ制御部２０１に入力される。
【００６３】
また、このとき、要求読込部２４３は、ＦＩＦＯ０およびＦＩＦＯ１から各メモリバンクのアドレスとともに読み込んだインデックスを、ＦＩＦＯ管理部２４６に備えられた読出バッファに、メモリバンクに対応して格納する。このようにして読出バッファに格納されたインデックスに基づいて、ＦＩＦＯ管理部２４６は、該当するメモリバンク(例えば、メモリバンク＃０およびメモリバンク＃４)から読み出されたデータ（図１１において、符号Ｄａ６および符号Ｄａ４を付して示す）を格納すべき記憶領域をレイテンシＦＩＦＯ２４５に指示する。これに応じて、メモリ制御部２０１によって読み出されたデータＤａ６、Ｄａ４は、図１１に示すように、それぞれインデックス１およびインデックス７に対応して格納される。
【００６４】
上述したようにして、メモリ制御部２０１によって実際にデータブロックが読み出されるタイミングにかかわらず、スケジューラ２０５からリストを受け取った際に決定したインデックスに従って、読出要求の対象となるデータブロックをレイテンシＦＩＦＯ２４５に格納することができる。
このようにしてレイテンシＦＩＦＯ２４５に格納されたデータブロックは、次の手順に従って、順次に出力される。
【００６５】
ＦＩＦＯ管理部２４６は、所定の時間ごとに、インデックスＬＨに対応するレイテンシ情報を参照し、レイテンシ情報が数値「０」に等しい場合は、このインデックスＬＨに対応して格納されたデータブロックを出力する旨をレイテンシＦＩＦＯ２４５に指示する。これに応じて、レイテンシＦＩＦＯ２４５から、例えば、図１１に示すように、インデックス３に対応する記憶領域に格納されたデータブロックＤａ０が出力される。
【００６６】
次いで、ＦＩＦＯ管理部２４６は、インデックスＬＨを循環的にインクリメントするとともに、各インデックスに対応するレイテンシ情報をデクリメントして、次の処理に備える。
このような手順を実行することにより、読出要求の発生と同時に初期値が設定されたレイテンシ情報を所定の時間ごとに減算していき、読出要求の発生からシステムレイテンシに相当する時間が経過したときに、該当するデータブロックをレイテンシＦＩＦＯ２４５から出力させることができる。
【００６７】
これにより、例えば、送信パケットの境界において読出先のメモリバンクの衝突が発生したために、一方のデータブロックについての読出処理の実行を次のメモリサイクルに振り替えた場合においても（図６参照）、そのデータブロックを、読出要求の発生からシステムレイテンシに相当する時間が経過したときに出力することができる。したがって、メモリバンクの衝突の発生にかかわらず、各パケットを確実に連続的に出力することができる。
【００６８】
上述したようにして、新たなパケットの受信に応じた書込要求およびスケジューラ２０５からの読出要求を処理していくことにより、連続する複数の読出コマンドあるいは書込コマンドをそれぞれ異なるメモリバンクに対して発行する制御を実現することができる。
これにより、各メモリバンクに対する読出コマンドあるいは書込コマンドを入力する周期、即ち、メモリサイクルが、各データブロックについての読出要求あるいは書込要求が発生する周期よりも長い時間であるようなメモリ素子を用いて、パケットバッファに備えられたスケジューラ２０５から発行される読出要求および新たなパケットの受信に伴う書込要求を漏れなく処理することができる。したがって、データバッファ１００を構成するメモリ素子として、幅広く市販されているＤＲＡＭなどの低価格の素子を利用することが可能隣、パケットバッファの低価格化を進めることができる。
【００６９】
次に、ＤＲＡＭを利用する際に必要となるリフレッシュ操作について説明する。
図１２に、リフレッシュ制御部の詳細構成を示す。
図１２に示したリフレッシュ制御部２０７において、読出バンクレジスタ（ＲＢ）２５１は、読出処理部２２０から現メモリサイクルでデータブロックの読出を行うメモリバンク２０２を示す情報を受け取り、対応するビットに論理「１」をセットする。また、書込バンクレジスタ（ＷＢ）２５２は、書込処理部２１０から現サイクルにおいてデータブロックを書き込むメモリバンク２０２を示す情報を受け取り、対応するビットに論理「１」をセットする。バンク抽出部２５３は、例えば、読出バンクレジスタ２５１および書込バンクレジスタ２５２の各ビットについて否定論理和演算を実行し、この演算結果をリフレッシュバンクレジスタ（ＲＦ）２５４の対応するビットに論理「１」をセットすることにより、現メモリサイクルにおいて、読み出しも書き込みも行なわれないメモリバンク２０２を抽出し、コマンド発行部２５５に渡す。コマンド発行部２５５は、リフレッシュバンクレジスタ２５４において論理「１」がセットされたビットに対応するメモリバンク２０２について、対応するアドレスカウンタ（ＡＣ）２５６の計数値に対応するアドレスからデータブロックを読み出す旨の読み出しコマンドを発行し、メモリ制御部２０１に入力する。
【００７０】
ここで、図１２に示した各部と、図３に示した各手段との対応関係を説明する。
図１２に示した読出バンクレジスタ（ＲＢ）２５１、書込バンクレジスタ（ＷＢ）２５２およびバンク抽出部２５３は、図３に示したバンク検出手段１３１に相当する。一方、図３に示したコマンド発行手段１３２の機能は、リフレッシュバンクレジスタ（ＲＦ）２５４およびアドレスカウンタ（ＡＣ）２５６の内容に応じて、コマンド発行部２５５が、後述するようにして、読出コマンドを発行することにより果たしている。
【００７１】
次に、読出コマンドを発行することにより、メモリバンクをリフレッシュする動作について説明する。
各メモリバンク２０２が、それぞれが複数の格納領域から形成されている複数の内部バンクから形成されている場合に、アドレスカウンタ２５６は、例えば、対応するメモリバンク２０２がリフレッシュバンクとして抽出されるごとに、内部バンクの数までを循環的に計数するバンクカウンタ（図示せず）と、このバンクカウンタの桁上がり信号に応じて計数値をインクリメントし、各内部バンクに備えられた格納領域の数までを循環的に計数する行カウンタ（図示せず）とを備え、このバンクカウンタおよび行カウンタの計数値の組み合わせをリフレッシュ対象のアドレスとしてコマンド発行部２５５に渡す。これに応じて、コマンド発行部２５５は、リフレッシュバンクとして抽出されたメモリバンク２０２の該当するアドレスからデータブロックを読み出す旨の読出コマンドを発行し、この読出コマンドに応じて、メモリ制御部２０１により、該当するデータブロックが読み出される。なお、このようにして読み出されたデータブロックは、図４に示したレイテンシ制御部２０６には送られず、そのまま廃棄される。
【００７２】
このようにして、各メモリバンクがリフレッシュバンクとして抽出されるごとに、そのメモリバンクの各格納領域から順次にデータブロックを読み出すことができる。一般に知られているように、ＤＲＡＭからデータを読み出す操作を実行することにより、該当するアドレスに対するリフレッシュ操作と同等の効果を得ることができる。また、上述した書込バンク決定部２１２の処理により、各パケットを形成するデータブロックは、複数のメモリバンク２０２に分散して書き込まれているので、図１２に示したバンク抽出部２５３によって、各メモリバンク２０２がリフレッシュバンクとして抽出される確率は、ほぼ均等であることが期待できる。
【００７３】
したがって、上述したようにして、現メモリサイクルにおいて空いているメモリバンクから擬似的にデータブロックを読み出す操作を行なっていくことにより、書込処理および読出処理を遅滞させることなく、ＤＲＡＭに保持されたデータを保持することができる。これにより、安価に市販されているＤＲＡＭを利用して、高速に動作可能なパケットバッファを構成することが可能となり、パケットバッファの製造コストを削減することができる。
【００７４】
以上の説明に関して、更に、以下の各項を開示する。
(付記１)  受信パケットをデータバッファ１０１に書き込み、品質識別手段１０２によって識別された品質クラスに応じて、スケジューラ１０３がデータバッファ１０１に書き込まれたパケットについての読み出し順序を調整する構成のパケットバッファにおいて、データバッファ１０１は、同時にアクセス可能なＭ個のメモリバンク１０４と、所定のメモリサイクルごとに、所定の数Ｎまでの読出コマンドおよび書込コマンドに応じて、前記メモリバンク１０４に対するアクセスを実行するアクセス手段１０５とを備えた構成であり、受信したパケットを所定のデータ長に基づいて、少なくとも一つのデータブロックに分割し、各データブロックについて書込要求を発行する書込要求手段１１１と、連続するＮ＋１個の書込要求に応じてそれぞれ異なる前記メモリバンク１０４を選択する書込バンク選択手段１１２と、前記メモリサイクルごとに、前記書込要求手段１１１によって発行された書込要求から順に最大Ｎ個の書込要求を選択し、対応するデータブロックをそれぞれについて前記バンク選択手段１１２によって選択された前記メモリバンク１０４に書き込む旨の書込コマンドを前記アクセス手段１０５に入力するデータ書込手段１１３と、各パケットに対応するデータブロックそれぞれについて、それぞれが書き込まれた前記メモリバンク１０４およびアドレスに関する情報を管理するアドレス管理手段１１４と、メモリサイクルごとに、スケジューラ１０３からＮ個までのデータブロックについての読出要求を受け取り、前記アドレス管理手段１１４に保持されたアドレスに関する情報に基づいて、前記読出要求で指定されたデータブロックが格納された前記メモリバンク１０４の中から、同一のメモリサイクルにおいて読出可能なものを読出バンクとして選択する第１読出バンク選択手段１１５と、各メモリサイクルにおいて前記スケジューラ１０３から受信した読出要求のうち、そのメモリサイクルにおいて読み出しが実行されなかった読出要求を保持し、対応するメモリバンク１０４を次のメモリサイクルにおいて読出バンクとして選択する第２読出バンク選択手段１１６と、前記第１読出バンク選択手段１１５と前記第２読出バンク選択手段１１６とによって選択された読出バンクについての読出要求から順に所定の数Ｌまでの読出要求を選択し、それぞれ該当するメモリバンク１０４からデータブロックを読み出す旨の読出コマンドを前記アクセス手段１０５に入力するデータ読出手段１１７とを備えたことを特徴とするパケットバッファ。
【００７５】
(付記２)  アクセス手段１０５は、パケットを分割する基準となるデータ長に相当するデータ長を持つパケットが受信される周期と同一のメモリサイクルごとに、読出コマンドおよび書込コマンドを実行する構成であることを特徴とする付記１記載のパケットバッファ。
(付記３)  データ読出手段１１７は、読出要求から順に、定数１．５に所定の数Ｎを乗じた数を超えない最大の整数Ｌまでの読出要求を選択する構成であり、データバッファ１０１は、前記整数Ｌに、前記所定の数Ｎおよび定数１を加えた数Ｍ個のメモリバンク１０４を備えた構成であることを特徴とする付記２に記載のパケットバッファ。
【００７６】
(付記４)  書込バンク選択手段１１３は、過去Ｎ回の書込要求において書込バンクとして指定されたメモリバンク１０４のバンク番号を書込要求の履歴を表す情報として保持する履歴保持手段１２１と、前記書込要求の履歴を表す情報と、現在のメモリサイクルにおいてデータ読出手段１１７によってデータブロックの読み出しが行われるメモリバンク１０４を示すバンク番号とに基づいて、前記現在のメモリサイクルにおいてデータブロックの書き込みが可能なメモリバンク１０４を示すバンク番号を書込バンク候補として収集する候補収集手段１２２と、
前記候補収集手段１２２によって収集された各書込バンク候補に、所定の規則に従って優先順位を設定する順位設定手段１２３と、前記優先順位に従って、前記書込バンク候補からＮ個のバンク番号を選択し、書込バンクを示す情報としてデータ書込手段１１３に入力する優先選択手段１２４とを備えた構成であることを特徴とする付記１に記載のパケットバッファ。
【００７７】
(付記５)  順位設定手段１２３は、書込要求ごとに、データバッファ１０１に備えられたメモリバンク１０４の数Ｍまでの自然数を巡回的に計数する巡回カウンタ１２５と、候補収集手段１２２によって収集された書込バンク候補から、履歴保持手段１２１に保持されたバンク番号以外であって、現在の読出バンクを示すバンク番号以外であるバンク番号を優先候補として選択する優先候補選択手段１２６と、前記巡回カウンタ１２５の計数で示されるバンク番号に基づいて、前記優先候補のいずれかに最高の優先順位を与える順位決定手段１２７とを備えた構成であることを特徴とする付記４に記載のパケットバッファ。
【００７８】
(付記６)  データバッファ１０１の各メモリバンク１０４はＤＲＡＭから形成されており、前記データバッファ１０１に入力される書込コマンドおよび読出コマンドに基づいて、アクセスの対象となっていないメモリバンク１０４を検出するバンク検出手段１３１と、前記各メモリバンク１０４に対応し、前記バンク検出手段１３１によって当該メモリバンク１０４が検出されるごとに、当該メモリバンク１０４を形成する記憶領域のいずれかを順次に読出対象とし、この読出対象からデータを読み出す旨の擬似読出コマンドを作成して前記データバッファ１０１に入力するコマンド発行手段１３２とを備えた構成であることを特徴とする付記１に記載のパケットバッファ。
【００７９】
(付記７)  データバッファ１０１から読み出されたデータを読出要求に対応して保持する２次バッファ１４１と、前記２次バッファ１４１にデータが保持されている読出要求について、それぞれ読出要求がスケジューラ１０３によって発行されてからの経過時間を監視し、所定の出力待機時間が経過したときに、当該読出要求の待機時間が終了した旨を示す待機完了通知を出力するタイマ１４２と、前記待機完了通知に応じて、該当する読出要求に対応して２次バッファ１４１に保持されたデータを出力する出力制御手段１４３とを備えた構成であることを特徴とする付記１に記載のパケットバッファ。
【００８０】
【発明の効果】
以上に説明したように、請求項１の発明によれば、Ｎ個のデータブロックの書込処理とＮ個のデータブロックの読出処理とを同時に処理可能であり、また、メモリバンクを形成するメモリ素子の動作速度にかかわらず、読出要求および書込要求を漏れなく処理することが可能である。また、連続するデータブロックについてそれぞれ異なるメモリバンクに振り分けて書き込むので、パケットバッファに格納されたパケットを書き込んだ順序とは異なる順序で読み出した場合においても、各メモリサイクルにおいて、同一のメモリバンクに対する読み出しコマンドが連鎖的に重複する事態を回避することができる。
【００８１】
また、請求項２の発明によれば、受信したデータを、その受信に要した時間内に、データバッファに書きこむことが可能であるので、パケットごとにランダムに読み出し順序をスケジューリングすることができる。なお、請求項２に記載のパケットバッファにおいて、付記３に記載した構成を採用することにより、メモリバンクの使用効率を最大とすることができる。
【００８２】
更に、請求項３の発明によれば、書込バンクの候補に、所定の規則に従って優先順位を設定することにより、適切な書込バンクを選択するための指標を与えることができる。また、優先候補となるメモリバンクが複数存在した場合に、巡回カウンタの計数値に応じて最優先候補を選択する構成を採用することにより、最終的に書込バンクとして各メモリバンクが選択される確率を平均化することができ、複数のメモリバンクを平均的に使用することができる。
【００８３】
また、請求項４の発明によれば、空いているメモリバンクの格納領域を順次に指定してデータブロックの読み出しを行なうことにより、該当する格納領域に対するリフレッシュ操作を実行した場合と同等の記憶保持効果を得ることができる。
一方、請求項５の発明によれば、各データブロックがデータバッファから読み出されたタイミングにかかわらず、そのデータブロックについての読み出し要求が発生した時点からの経過時間に応じてデータブロックを出力することができるので、パケットの境界などにおいて、読み出しに使用されるメモリバンクが衝突し、データブロックの読み出しを次のメモリサイクルに振り替えた場合においても、各パケットを形成するデータブロックを連続的に出力することができる。
【図面の簡単な説明】
【図１】請求項１および請求項２のパケットバッファの原理ブロック図である。
【図２】請求項３の発明の原理ブロック図である。
【図３】請求項４および請求項５の発明の原理ブロック図である。
【図４】本発明のパケットバッファの実施形態を示す図である。
【図５】本発明のパケットバッファの概略動作を説明する図である。
【図６】パケットバッファにおいて発生し得る問題を説明する図である。
【図７】書込バンク決定部の詳細構成を示す図である。
【図８】書込バンク決定部の動作を説明する図である。
【図９】順位演算部の動作を説明する図である。
【図１０】読出処理部およびレイテンシ制御部の詳細構成を示す図である。
【図１１】データブロックを読み出す動作を説明する図である。
【図１２】リフレッシュ制御部の詳細構成を示す図である。
【図１３】従来のパケットバッファの第１の構成例を示す図である。
【図１４】従来のパケットバッファの第２の構成例を示す図である。
【符号の説明】
１０１  データバッファ
１０２  品質識別手段
１０３  スケジューラ
１０４  メモリバンク
１０５  アクセス手段
１１１  書込要求手段
１１２  書込バンク選択手段
１１３  データ書込手段
１１４  アドレス管理手段
１１５  第１読出バンク選択手段
１１６  第２読出バンク選択手段
１１７  データ読出手段
１２１  履歴保持手段
１２２  候補収集手段
１２３  順位設定手段
１２４  優先選択手段
１２５  巡回カウンタ
１２６  優先候補選択手段
１２７  順位決定手段
１３１  ＤＲＡＭ
１３１  バンク検出手段
１３２  バンク検出手段
１３２  コマンド発行手段
１３３  コマンド発行手段
１３４  擬似読出手段
２０１  メモリ制御部
２０２  メモリバンク
２０３  品質識別部
２０４  リスト制御部
２０５  スケジューラ
２０６  レイテンシ制御部
２１０  書込処理部
２１１  書込要求制御部
２１２  書込バンク決定部
２１３  書込制御部
２２０  読出処理部
２２１  読出要求制御部
２２２  読出制御部
２３１  書込履歴レジスタ
２３２  読出バンクレジスタ
２３３  候補抽出部
２３４  候補レジスタ
２３５  巡回カウンタ
２３６  順位演算部
２３７  順位レジスタ
２３８  デコード部
２４１  要求振分部
２４２  要求保持部
２４３  要求読込部
２４４  コマンド作成部
２４５  レイテンシＦＩＦＯ
２４６  ＦＩＦＯ管理部
２５１  読出バンクレジスタ（ＲＢ）
２５２  書込バンクレジスタ（ＷＢ）
２５３  バンク抽出部
２５４  リフレッシュバンクレジスタ（ＲＦ）
２５５  コマンド発行部
２５６  アドレスカウンタ（ＡＣ）
４１１  品質判定部
４１２  スケジューラ
４１３  書込制御部
４１４  共通バッファ
４１５  読出制御部
４２１  ＦＩＦＯ
４２２  品質判定部
４２３  スケジューラ
４２４  バッファ選択部
【図１】
0003936550.tif 000002
【図２】
0003936550.tif 000003
【図３】
0003936550.tif 000004
【図４】
0003936550.tif 000005
【図５】
0003936550.tif 000006
【図６】
0003936550.tif 000007
【図７】
0003936550.tif 000008
【図８】
0003936550.tif 000009
【図９】
0003936550.tif 000010
【図１０】
0003936550.tif 000011
【図１１】
0003936550.tif 000012
【図１２】
0003936550.tif 000013
【図１３】
0003936550.tif 000014
【図１４】
0003936550.tif 000015