(57)【要約】【課題】ネットワークプロセッサとパケットバッファとの間のデータ転送を削減することが可能な半導体装置を提供すること。【解決手段】ＦＩＦＯ２４は、マルチキャストのパケットデータを記憶する。ネットワークプロセッサからマルチキャストのパケットデータの書き込みコマンドを受けたときに、判定回路２２は、ＦＩＦＯ２４にネットワークプロセッサから受けたマルチキャストのパケットデータを格納し、メモリ１１内の対応するキューにマルチキャストのパケットデータを書き込む。また、判定回路２２は、ネットワークプロセッサからマルチキャストのパケットデータのコピーコマンドを受けたときに、ＦＩＦＯ２４に記憶されるマルチキャストのパケットデータをメモリ内の対応するキューにコピーする。したがって、ネットワークプロセッサとパケットバッファとの間のデータ転送を削減することが可能となる。【選択図】図５
2011239326.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置であって、
マルチキャストのパケットデータを記憶する記憶手段と、
前記プロセッサから前記マルチキャストのパケットデータの書き込みコマンドを受けたときに、前記記憶手段に前記プロセッサから受けた前記マルチキャストのパケットデータを格納し、前記メモリ内の対応するキューに前記マルチキャストのパケットデータを書き込み、前記プロセッサから前記マルチキャストのパケットデータのコピーコマンドを受けたときに、前記記憶手段に記憶される前記マルチキャストのパケットデータを前記メモリ内の対応するキューにコピーする書込手段とを含む、半導体装置。
【請求項２】
前記書込手段は、前記プロセッサから前記マルチキャストのパケットデータの書き込みコマンドと第１のキュー番号とを受けたときに、前記記憶手段に前記プロセッサから受けた前記マルチキャストのパケットデータを格納し、前記メモリ内の前記第１のキュー番号に対応するキューに前記マルチキャストのパケットデータを書き込み、
前記プロセッサから前記マルチキャストのパケットデータのコピーコマンドと第２のキュー番号とを受けたときに、前記記憶手段に記憶される前記マルチキャストのパケットデータを前記メモリ内の前記第２のキュー番号に対応するキューにコピーする、請求項１記載の半導体装置。
【請求項３】
プロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置であって、
前記メモリ内のキューごとに先頭のパケットデータが格納される前記メモリのアドレスを記憶するヘッドポインタと、
前記メモリ内のキューごとに最後尾のパケットデータが格納される前記メモリのアドレスを記憶するテイルポインタと、
前記メモリ内のキューごとに前記先頭のパケットデータから前記最後尾のパケットデータまでの複数のパケットデータが前記メモリのどのアドレスに格納されるかの情報をリンク形式で記憶するリンクドリストと、
前記プロセッサからマルチキャストのパケットデータの書き込みコマンドを受けたときに、前記メモリに前記プロセッサから受けた前記マルチキャストのパケットデータを書き込み、前記マルチキャストのパケットデータに対応するキュー番号のリンクドリストに前記マルチキャストのパケットデータを書き込んだ前記メモリのアドレスをリンクさせる情報を格納させる書込手段とを含む、半導体装置。
【請求項４】
前記ヘッドポインタは、マルチキャスト用のヘッドポインタを含み、
前記リンクドリストは、マルチキャスト用のリンクドリストを含み、
前記書込手段は、前記プロセッサからマルチキャストのパケットデータの書き込みコマンドを受けたときに、前記メモリに前記プロセッサから受けた前記マルチキャストのパケットデータを書き込み、前記マルチキャストのパケットデータに対応するキュー番号のマルチキャスト用のリンクドリストに前記マルチキャストのパケットデータを書き込んだ前記メモリのアドレスを格納し、
前記マルチキャスト用のリンクドリストに格納される前記メモリのアドレスに対応するパケットデータが先頭のパケットデータとなったときに、前記マルチキャスト用のヘッドポインタに前記マルチキャストのパケットデータが格納されるアドレスを格納する、請求項３記載の半導体装置。
【請求項５】
前記半導体装置はさらに、前記マルチキャストのパケットデータを読み出すときに、前記マルチキャスト用のヘッドポインタまたは前記マルチキャスト用のリンクドリストを参照して、前記マルチキャストのパケットデータを読み出す読出手段を含む、請求項４記載の半導体装置。
【請求項６】
プロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置であって、
前記プロセッサからパケットデータの書き込みコマンドを受けたときに、前記メモリ内の対応するキューに前記パケットデータを書き込む書込手段と、
前記書込手段によって前記メモリに書き込まれたパケットデータに関する情報を記憶する情報記憶手段と、
前記情報記憶手段に記憶される情報に基づいて各キューに記憶されるパケットデータに関連する情報を計算する計算手段と、
前記プロセッサから受けた条件と前記計算手段によって計算された情報とを比較して、前記書込手段に前記メモリへのパケットデータの書き込みを行なわせるか否かを判定する判定手段と、
前記判定手段によってパケットデータを書き込むと判定されたときに、当該パケットデータの情報を追加して前記情報記憶手段に書き戻す書戻手段とを含む、半導体装置。
【請求項７】
前記計算手段は、前記書込手段によって同じキューに連続してパケットデータが書き込まれる場合に、前記判定手段から判定結果を受けて計算を行なう、請求項６記載の半導体装置。
【請求項８】
プロセッサと、
パケットデータを記憶するメモリと、
前記プロセッサから受けたコマンドに応じて、前記メモリへのパケットデータの書き込みを制御する半導体装置とを含んだ通信装置であって、
前記半導体装置は、マルチキャストのパケットデータを記憶する記憶手段と、
前記プロセッサから前記マルチキャストのパケットデータの書き込みコマンドを受けたときに、前記記憶手段に前記プロセッサから受けた前記マルチキャストのパケットデータを格納し、前記メモリ内の対応するキューに前記マルチキャストのパケットデータを書き込み、前記プロセッサから前記マルチキャストのパケットデータのコピーコマンドを受けたときに、前記記憶手段に記憶される前記マルチキャストのパケットデータを前記メモリ内の対応するキューにコピーする書込手段とを含む、通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットデータを一時的に保存して適宜出力する技術に関し、特に、マルチキャストのパケットデータを効率的にパケットバッファに書き込むように制御する半導体装置およびそれを用いた通信装置に関する。
【背景技術】
【０００２】
近年、ネットワークの高速化が進んでおり、ルータ、スイッチなどの通信装置も高速化に対応する必要がある。一般に、ルータやスイッチなどの通信装置においては、転送先を決定するまでデータをメモリなどの記憶装置に一時的に保存しておく必要がある。そのため、ネットワークの高速化に伴ってネットワークプロセッサおよびパケットバッファのデータ転送レートが上がり、パケットバッファとして使用されるメモリの容量もより大きなものが必要となる。たとえば、１０ＧビットＥｒｔｈｅｎｅｔの場合、１０Ｇｂ／ｓのデータ転送レートのネットワークプロセッサと、１０Ｇｂ／ｓのデータ転送レートおよび２．５Ｇｂの容量を有するパケットバッファとが必要となる。
【０００３】
また、サービス品質を向上させるために、通信装置に入力されたパケットデータが優先順位にしたがって分類され、キューごとに蓄積される。このとき、ユニキャストの場合にはパケットデータが１回だけ書き込まれ、マルチキャストの場合にはパケットデータが複数回書き込まれる。
【０００４】
さらに、サービス品質の公平性を保つために、キューの占有を避けるように動作させる必要がある。具体的には、キューにデータが溜まっている場合には、そのキューにデータを書き込まないように制御する。これらに関連する技術として、下記の特許文献に開示された発明がある。
【０００５】
特許文献１は、通信網の交換機として機能する通信中継装置に関する。同報通信を行なう場合、１つの送信先ノードに対してパケット本体の格納領域のアドレスが書込まれた送受信ディスクリプタが発行され、他の複数の同報送信先ノードに対して、送受信ディスクリプタに書込まれている格納領域のアドレスの参照を指示する情報が書込まれた同報ディスクリプタが発行される。同報送信先ノードにパケットを転送する際、同報ディスクリプタの書込内容に基づいて、送受信ディスクリプタの書込内容を参照し、送受信ディスクリプタに対応付けられた格納領域からパケット本体を読出して転送する。これにより、同報通信を行う場合でもパケットをコピーする必要がなくなり、コピー時間が不要となる。そのため、中継効率を向上でき、コピーしたパケットを格納する必要がないので、容量の小さなメモリで十分となる。
【０００６】
特許文献２は、マルチキャストフレームを装置内でＩＰフレームコピーを行ないユニキャストフレームとして複数の宛先に送信する場合、網内ＨｅａｄｅｒとＤａｔａとを、それぞれ別に管理することで、複数フレームのキューイングが同時に行なえＣｅｌｌを連続的に送信できるＩＰマルチキャストユニキャスト変換通信方式を提供することを目的とする。受信側Ｉ／Ｆから受け取ったＰａｃｋｅｔの宛先アドレスから複数の宛先を解決し、複数のユニキャストＤＡフレームを複数の宛先に送信するに際し、Ｆｏｒｗａｒｄｉｎｇ  Ｐｒｏｃｅｓｓで網内ＨｅａｄｅｒとＤａｔａとを別々に管理する。これにより、ＩＰ  Ｈｅａｄｅｒのみを替えることでＤａｔａの共有ができるように構成するとともに、ＱｕｅｕｅへのＰａｃｋｅｔ格納に当たって複数フレームのキューイングを可能にして、通信Ｐｒｏｃｅｓｓより送出する送信Ｃｅｌｌ間にＮｕｌｌ  Ｃｅｌｌが入るのをなくして連続送信することができるように構成する。
【０００７】
特許文献３は、回路構成を簡素化し、ブロードキャストやマルチキャストによるパケットのコピー時間を抑制することを目的とする。パケット分離手段は、パケットをデータ部とヘッダ部とに分離する。記憶手段は、データ部を記憶する。装置内パケット生成手段は、記憶されたデータ部のアドレスを含む固定長の内部ヘッダをヘッダ部に付加し装置内パケットを生成する。方路検索手段は、ヘッダ部に基づいて装置内パケットの方路を検索する。キューは、パケットを送受信するポートに対応して設けられ、方路検索手段からの装置内パケットを一時的に記憶する。読み出し手段は、装置内パケットのヘッダ部のアドレスに基づいて、記憶手段からデータ部を読み出す。パケット生成手段は、データ部と装置内パケットのヘッダ部とによって出力パケットを生成する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０９−０７４４１０号公報
【特許文献２】特開２０００−２６１４２９号公報
【特許文献３】特開２００７−２２８２２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
後述のように、パケットデータがマルチキャストの場合には、ネットワークプロセッサがパケットバッファに同じパケットデータを複数回だけ書き込まなければならない。そのため、ネットワークプロセッサとパケットバッファとを異なるＬＳＩ（Large Scale Integrated circuit）で構成する場合には、ＬＳＩ間のデータ転送が頻繁に行なわれることになり、処理性能が低下するといった問題点があった。
【００１０】
また、マルチキャストのパケットデータの書き込みを制御するために、各キューの状態を把握するためのデータを保持しなければならず、制御用ＬＳＩのコストが増大するといった問題点もあった。
【００１１】
本発明は、上記問題点を解決するためになされたものであり、その目的は、ネットワークプロセッサとパケットバッファとの間のデータ転送を削減することが可能な半導体装置およびそれを用いた通信装置を提供することである。
【００１２】
本発明の別の目的は、マルチキャストのパケットデータの書き込み回数を削減するよう制御を行なう半導体装置を提供することである。
【００１３】
本発明のさらに別の目的は、サービス品質の公平を保つことができるようにパケットデータの書き込みを制御する半導体装置を提供することである。
【課題を解決するための手段】
【００１４】
本発明の一実施例によれば、プロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置が提供される。ＦＩＦＯは、マルチキャストのパケットデータを記憶する。ネットワークプロセッサからマルチキャストのパケットデータの書き込みコマンドを受けたときに、判定回路は、ＦＩＦＯにネットワークプロセッサから受けたマルチキャストのパケットデータを格納し、メモリ内の対応するキューにマルチキャストのパケットデータを書き込む。また、判定回路は、ネットワークプロセッサからマルチキャストのパケットデータのコピーコマンドを受けたときに、ＦＩＦＯに記憶されるマルチキャストのパケットデータをメモリ内の対応するキューにコピーする。
【００１５】
本発明の別の実施例によれば、プロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置が提供される。ヘッドポインタは、メモリ内のキューごとに先頭のパケットデータが格納されるメモリのアドレスを記憶する。テイルポインタは、メモリ内のキューごとに最後尾のパケットデータが格納されるメモリのアドレスを記憶する。リンクドリストは、メモリ内のキューごとに先頭のパケットデータから最後尾のパケットデータまでの複数のパケットデータがメモリのどのアドレスに格納されるかの情報をリンク形式で記憶する。ネットワークプロセッサからマルチキャストのパケットデータの書き込みコマンドを受けたときに、コマンドデコーダは、メモリにネットワークプロセッサから受けたマルチキャストのパケットデータを書き込み、マルチキャストのパケットデータに対応するキュー番号のリンクドリストにマルチキャストのパケットデータを書き込んだメモリのアドレスをリンクさせる情報を格納させる。
【００１６】
本発明のさらに別の実施例によれば、プロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置が提供される。コマンドデコーダは、ネットワークプロセッサからパケットデータの書き込みコマンドを受けたときに、メモリ内の対応するキューにパケットデータを書き込む。情報データベースは、メモリに書き込まれたパケットデータに関する情報を記憶する。情報計算部は、情報データベースに記憶される情報に基づいて各キューに記憶されるパケットデータに関連する情報を計算する。判定部は、プロセッサから受けた条件と計算部によって計算された情報とを比較して、メモリへのパケットデータの書き込みを行なうか否かを判定する。書き戻し部は、判定部によってパケットデータを書き込むと判定されたときに、当該パケットデータの情報を追加して情報データベースに書き戻す。
【発明の効果】
【００１７】
本発明の一実施例によれば、判定回路は、ネットワークプロセッサからマルチキャストのパケットデータのコピーコマンドを受けたときに、ＦＩＦＯに記憶されるマルチキャストのパケットデータをメモリ内の対応するキューにコピーするので、ネットワークプロセッサとパケットバッファとの間のデータ転送を削減することが可能となる。
【００１８】
本発明の別の実施例によれば、コマンドデコーダは、マルチキャストのパケットデータに対応するキュー番号のリンクドリストにマルチキャストのパケットデータを書き込んだメモリのアドレスをリンクさせる情報を格納させるので、マルチキャストのパケットデータの書き込み回数を削減することが可能となる。
【００１９】
本発明のさらに別の実施例によれば、判定部は、プロセッサから受けた条件と計算部によって計算された情報とを比較して、メモリへのパケットデータの書き込みを行なうか否かを判定するので、サービス品質の公平を保つことが可能となる。
【図面の簡単な説明】
【００２０】
【図１】ルータやスイッチなどの通信装置の構成例を示す図である。
【図２】図１に示す通信装置の動作の一例を説明するための図である。
【図３】本発明の第１の実施の形態における通信装置の動作を説明するための図である。
【図４】ネットワークプロセッサ１がパケットバッファ２にマルチキャストのパケットデータを書き込むときのタイミングチャートの一例である。
【図５】本発明の第１の実施の形態における通信装置のパケットバッファ２の内部構成を示すブロック図である。
【図６】本発明の第１の実施の形態における通信装置の動作の一例を説明するための図である。
【図７】本発明の第１の実施の形態における通信装置の動作の他の一例を説明するための図である。
【図８】マルチキャストのパケットデータの書き込みコマンドとコピーコマンドとの間にユニキャストのパケットデータの書き込みコマンドが発行される場合の一例を示すタイミングチャートである。
【図９】一般的な通信装置におけるパケットデータの書き込み動作の一例を示す図である。
【図１０】本発明の第２の実施の形態における通信装置のパケットデータの書き込み動作の一例を示す図である。
【図１１】図１０に示す状態からＱ２のパケットデータｂが読み出されて出力されたところを示す図である。
【図１２】図１１に示すようにＱ２のパケットデータｂが読み出されたときのヘッドポインタ、テイルポインタおよびリンクドリストの状態を示す図である。
【図１３】図１１に示す状態からＱ２にパケットデータｈが書き込まれるところを示す図である。
【図１４】図１３に示すようにＱ２にパケットデータｈが書き込まれたときのヘッドポインタ、テイルポインタおよびリンクドリストの状態を示す図である。
【図１５】本発明の第２の実施の形態におけるパケットバッファ２の構成例を示すブロック図である。
【図１６】変換テーブルを用いた場合の本発明の第２の実施の形態におけるパケットバッファ２の動作を説明するための図である。
【図１７】一般的な通信装置における問題点を説明するための図である。
【図１８】本発明の第３の実施の形態におけるパケットバッファ２の構成例を示すブロック図である。
【図１９】図１８に示す書き込み判定部４２の詳細をさらに説明するためのブロック図である。
【図２０】ネットワークプロセッサ１から判定条件を受ける場合のパケットバッファ２の動作を説明するタイミングチャートである。
【図２１】図１９に示す書き込み判定部４２の変形例を示すブロック図である。
【発明を実施するための形態】
【００２１】
図１は、ルータやスイッチなどの通信装置の構成例を示す図である。この通信装置は、通信装置全体の制御を行なうネットワークプロセッサ１と、パケットデータを蓄積して適宜出力するパケットバッファ２とを含む。
【００２２】
ネットワークプロセッサ１は、パケットデータを受信すると、パケットバッファ２に対して、パケットデータの書き込みを指示するコマンドと、パケットデータを格納するキュー番号と、パケットデータとを出力する。
【００２３】
パケットバッファ２は、ネットワークプロセッサ１からコマンドとキュー番号とを受けると、キュー番号に対応するキューに対してネットワークプロセッサ１から受けたパケットデータを書き込む。
【００２４】
図２は、図１に示す通信装置の動作の一例を説明するための図である。図２において、ａ〜ｆはパケットデータを示しており、カッコ内はパケットデータを書き込むキュー番号を示している。ａ〜ｅはユニキャストのパケットデータであり、斜線を施したｆはマルチキャストのパケットデータである。
【００２５】
図２の左側に示すように、ネットワークプロセッサ１はパケットバッファ２に対して、コマンド、キュー番号およびパケットデータａ〜ｆを順次出力して、キュー番号に対応するキューにパケットデータを順次書き込む。このとき、パケットデータがマルチキャストであれば、ネットワークプロセッサ１はパケットバッファ２に対してパケットデータを複数回書き込む。
【００２６】
図２の中央に示すように、キューＱ０〜Ｑｎに対してパケットデータａ〜ｆが書き込まれる。マルチキャストのパケットデータｆは、キューＱ１、Ｑ２およびＱｎの３つのキューに書き込まれる。
【００２７】
そして、図２の右側に示すように、パケットバッファ２は、ネットワークプロセッサ１からパケットデータ読み出しコマンドを受けて、パケットデータの優先順位にしたがってパケットデータを順次出力する。なお、図２においては、パケットデータが、ａ、ｅ、ｆ、ｂ、ｆ、ｃ、ｄ、ｆの順に出力されている。
【００２８】
図２に示すように、ネットワークプロセッサ１がマルチキャストのパケットデータを３つのキューに書き込む場合、パケットバッファ２に対してパケットデータを３回書き込む必要がある。そのため、ネットワークプロセッサ１とパケットバッファ２との間のデータ転送が頻繁に行なわれることになり、処理性能が低下する。
【００２９】
（第１の実施の形態）
図３は、本発明の第１の実施の形態における通信装置の動作を説明するための図である。図３の左側に示すように、ネットワークプロセッサ１がパケットバッファ２に対して１回だけパケットデータを書き込む。そして、マルチキャストのパケットデータを書き込むキュー番号をパケットバッファ２に複数回書き込む。
【００３０】
図３の中央に示すように、キューＱ０〜Ｑｎに対してパケットデータａ〜ｆが書き込まれる。マルチキャストのパケットデータｆを書き込む場合、Ｑ１にマルチキャストのパケットデータｆを書き込み、そのコピーをＱ２およびＱｎに書き込む。
【００３１】
図４は、ネットワークプロセッサ１がパケットバッファ２にマルチキャストのパケットデータを書き込むときのタイミングチャートの一例である。ネットワークプロセッサ１およびパケットバッファ２はＣＬＫ信号に同期して動作する。まず、Ｔ１において、ネットワークプロセッサ１がパケットバッファ２に対して、マルチキャストのパケットデータの書き込みコマンドを出力すると共に、キュー番号Ｑ１を出力する。その後、ＣＬＫ信号に同期して、ネットワークプロセッサ１がパケットバッファ２に対してパケットデータを順次書き込む。このとき、パケットバッファ２は、後述するＦＩＦＯ（First In First Out）にパケットデータを書き込むと共に、Ｑ１にパケットデータを書き込む。
【００３２】
Ｔ２において、ネットワークプロセッサ１がパケットバッファ２に対してコピーコマンドを出力すると共に、パケットデータをコピーするキュー番号であるＱ２を出力する。このとき、パケットバッファ２は、ＦＩＦＯに格納されているパケットデータをＱ２にコピーする。
【００３３】
Ｔ３において、ネットワークプロセッサ１がパケットバッファ２に対してコピーコマンドを出力すると共に、パケットデータをコピーするキュー番号であるＱｎを出力する。このとき、パケットバッファ２は、ＦＩＦＯに格納されているパケットデータをＱｎにコピーする。
【００３４】
図５は、本発明の第１の実施の形態における通信装置のパケットバッファ２の内部構成を示すブロック図である。このパケットバッファ２は、ネットワークプロセッサ１からのコマンドに応じてパケットデータの書き込みを制御する制御回路１０と、パケットデータを記憶するメモリ１１とを含む。なお、図５においては、制御回路１０が１つのＬＳＩによって構成され、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）などの汎用メモリ１１が外付けされる構成としているが、これに限られるものではない。
【００３５】
制御回路１０は、コマンド入力部２１と、判定回路２２と、データ入力部２３と、ＦＩＦＯ２４と、データ出力部２５と、読み出しコントローラ２６と、書き込みコントローラ２７とを含む。
【００３６】
コマンド入力部２１は、ネットワークプロセッサ１からコマンドを受け、コマンドがパケットデータの読み出しであれば、読み出しコントローラ２６にメモリ１１からのパケットデータの読み出しを指示する。また、コマンドがパケットデータの書き込みであれば、判定回路２２にパケットデータの書き込みを指示する。また、コマンドがパケットデータのコピーコマンドであれば、判定回路２２にパケットデータのコピーを指示する。
【００３７】
判定回路２２は、コマンド入力部２１からパケットデータの書き込み指示を受けると、そのコマンドがユニキャストのパケットデータ書き込みであるか、マルチキャストのパケットデータの書込みであるかを判定する。ユニキャストのパケットデータの書き込みであれば、書き込みコントローラ２７に対してネットワークプロセッサ１から受けたキュー番号にそのパケットデータを書き込むように指示し、さらにＦＩＦＯ２４にそのパケットデータをスルーするよう指示する。また、マルチキャストのパケットデータの書き込みであれば、ＦＩＦＯ２４にそのパケットデータを保持するよう指示し、さらに書き込みコントローラ２７に対してネットワークプロセッサ１から受けたキュー番号にそのパケットデータを書き込むように指示する。
【００３８】
また、判定回路２２は、コマンド入力部２１からパケットデータのコピー指示を受けると、ＦＩＦＯ２４に対して格納されているマルチキャストのパケットデータを出力するよう指示し、書き込みコントローラ２７に対してネットワークプロセッサ１から受けたキュー番号にそのパケットデータを書き込むように指示する。
【００３９】
データ入力部２３は、ネットワークプロセッサ１からパケットデータを受け、ＦＩＦＯ２４に順次出力する。
【００４０】
ＦＩＦＯ２４は、判定回路２２からマルチキャストのパケットデータを保持するよう指示を受けると、データ入力部２３から出力されるマルチキャストのパケットデータを保持してメモリ１１に出力する。また、判定回路２２からユニキャストのパケットデータをスルーするよう指示を受けると、データ入力部２３から出力されるユニキャストのパケットデータをそのままメモリ１１に出力する。
【００４１】
読み出しコントローラ２６は、コマンド入力部２１からパケットデータの読み出し指示があると、ネットワークプロセッサ１から受けたキュー番号に対応するメモリ１１内のキューからパケットデータを読み出してデータ出力部２５に出力させる。
【００４２】
データ出力部２５は、メモリ１１からパケットデータを受けると、そのパケットデータをネットワークプロセッサ１に出力する。
【００４３】
書き込みコントローラ２７は、判定回路２２からパケットデータの書き込み指示を受けると、ネットワークプロセッサ１から受けたキュー番号に対応するメモリ１１内のキューにパケットデータを書き込む。
【００４４】
図６は、本発明の第１の実施の形態における通信装置の動作の一例を説明するための図である。図３に示すものと同様であるが、マルチキャストのパケットデータｆを書き込む場合、そのパケットデータをＦＩＦＯ２４に保持しつつ、Ｑ１にマルチキャストのパケットデータｆを書き込む。その後、ネットワークプロセッサ１からＱ２およびＱｎに対するコピーコマンドを受けると、そのコピーをＱ２およびＱｎに書き込む。
【００４５】
図７は、本発明の第１の実施の形態における通信装置の動作の他の一例を説明するための図である。図７においては、ネットワークプロセッサ１からマルチキャストのパケットデータｆの書き込みコマンドおよびコピーコマンドを受けた後、ユニキャストのパケットデータｇの書き込みコマンドを受け、さらにその後にＦＩＦＯ２４に格納されるマルチキャストのパケットデータｆのコピーコマンドを受ける場合を示している。図７の右側に示すように、ＦＩＦＯ２４に格納されるマルチキャストのパケットデータｆがＱ０にもコピーされる。
【００４６】
図８は、マルチキャストのパケットデータの書き込みコマンドとコピーコマンドとの間にユニキャストのパケットデータの書き込みコマンドが発行される場合の一例を示すタイミングチャートである。
【００４７】
Ｔ１において、ネットワークプロセッサ１がパケットバッファ２に対して、マルチキャストの書き込みコマンドを出力すると共に、キュー番号Ｑｎを出力する。その後、ＣＬＫ信号に同期して、ネットワークプロセッサ１がパケットバッファ２に対してパケットデータを順次書き込む。このとき、パケットバッファ２は、ＦＩＦＯ２４にパケットデータを書き込むと共に、Ｑｎにパケットデータを書き込む。
【００４８】
Ｔ２において、ネットワークプロセッサ１がパケットバッファ２に対して、ユニキャストの書き込みコマンドを出力すると共に、キュー番号Ｑｍを出力する。その後、ＣＬＫ信号に同期して、ネットワークプロセッサ１がパケットバッファ２に対してパケットデータを順次書き込む。
【００４９】
Ｔ３において、ネットワークプロセッサ１がパケットバッファ２に対してコピーコマンドを出力すると共に、パケットデータをコピーするキュー番号であるＱｌを出力する。このとき、パケットバッファ２は、ＦＩＦＯ２４に格納されているパケットデータをＱｌにコピーする。
【００５０】
このように、マルチキャストのパケットデータの書き込みコマンドとコピーコマンドとの間に、ユニキャストのパケットデータの書き込みコマンドが発行された場合でも、マルチキャストのパケットデータの書き込みを高速に行なうことができる。
【００５１】
以上説明したように、本実施の形態における通信装置によれば、マルチキャストのパケットデータをキューに書き込むときに、ＦＩＦＯ２４にそのパケットデータのコピーを保持しておき、コピーコマンドを受けたときにそのマルチキャストのパケットデータをキューに書き込むようにしたので、ネットワークプロセッサ１とパケットバッファ２との間のデータ転送を削減することができ、処理速度を向上させることが可能となった。
【００５２】
（第２の実施の形態）
第１の実施の形態においては、マルチキャストのパケットデータをＦＩＦＯ２４に書き込んでおき、ネットワークプロセッサ１からコピーコマンドが発行されたときに、対応するキューに対してＦＩＦＯ２４に格納されるマルチキャストのパケットデータを書き込むものであった。本発明の第２の実施の形態における通信装置は、マルチキャストのパケットデータをメモリ１１に１回だけ書き込み、その物理アドレスをコピーすることによって第１の実施の形態よりもさらに処理速度を向上させるものである。
【００５３】
まず、本発明の第２の実施の形態における通信装置の動作の理解を容易にするために、一般的な通信装置におけるヘッドポインタ、テイルポインタ、リンクドリストおよびメモリ１１の動作について説明する。
【００５４】
図９は、一般的な通信装置におけるパケットデータの書き込み動作の一例を示す図である。ヘッドポインタは、キューＱ０〜Ｑｎのそれぞれについて最初にパケットデータが書き込まれているメモリ１１のアドレスを示すものである。たとえば、キューＱ０の最初のパケットデータがメモリ１１のアドレス００（データａ）に書き込まれていることを示している。
【００５５】
テイルポインタは、キューＱ０〜Ｑｎのそれぞれについて最後尾のパケットデータが書き込まれているメモリ１１のアドレスを示すものである。たとえば、キューＱ０の最後尾のパケットがメモリ１１のアドレス０９（データｆ）に書き込まれていることを示している。
【００５６】
リンクドリストは、ヘッドポインタによって示される先頭のパケットデータのアドレスからテイルポインタによって示される最後尾のパケットデータのアドレスまでを数珠つなぎにして示すものである。たとえば、キューＱ０の最初のパケットデータが格納されるアドレス００に対応するリンクドリストにアドレス０５が書き込まれているので、次のパケットデータがメモリ１１のアドレス０５（データｇ）に格納されていることが分かる。さらに、２番目のパケットデータが格納されるアドレス０５に対応するリンクドリストにアドレス０９が書き込まれているので、その次のパケットデータがメモリ１１のアドレス０９（データｆ）に格納されていることが分かる。
【００５７】
図１０は、本発明の第２の実施の形態における通信装置のパケットデータの書き込み動作の一例を示す図である。図９に示す一般的な通信装置におけるヘッドポインタおよびリンクドリストに、マルチキャスト用のヘッドポインタおよびリンクドリストが追加された構成を有している。
【００５８】
図１０においては、マルチキャスト用のヘッドポインタには何も書き込まれていない。マルチキャスト用のリンクドリストにおいては、たとえば、アドレス０１に対応する箇所にアドレス０６が書き込まれている。これは、アドレス０１の次のパケットデータがマルチキャストであり、アドレス０６に書き込まれていることを示している。
【００５９】
図１０においては、Ｑ０にパケットデータａ、ｇ、ｆが格納され、Ｑ１にパケットデータｅ、ｆが格納され、Ｑ２にパケットデータｂ、ｆが格納され、Ｑｎにパケットデータｃ、ｄ、ｆが格納されているところを示している。
【００６０】
図１１は、図１０に示す状態からＱ２のパケットデータｂが読み出されて出力されたところを示す図である。また、図１２は、図１１に示すようにＱ２のパケットデータｂが読み出されたときのヘッドポインタ、テイルポインタおよびリンクドリストの状態を示す図である。図１２に示すように、Ｑ２のパケットデータｂが読み出されると、Ｑ２に対応するヘッドポインタが次のパケットデータが格納されるアドレス０７に更新される。
【００６１】
このとき、アドレス０１に対応するリンクドリストが消去されるが、アドレス０１に対応するマルチキャスト用のリンクドリストにアドレス０６が書き込まれているので、Ｑ２に対応するマルチキャスト用のヘッドポインタに０６が書き込まれ、アドレス０１に対応するマルチキャスト用のリンクドリストが消去される。このように、Ｑ２に対応するヘッドポインタにはアドレス０７が書き込まれているが、実際にはマルチキャストのパケットデータが格納されるアドレス０６を指し示すようにすることができる。
【００６２】
図１３は、図１１に示す状態からＱ２にパケットデータｈが書き込まれるところを示す図である。また、図１４は、図１３に示すようにＱ２にパケットデータｈが書き込まれたときのヘッドポインタ、テイルポインタおよびリンクドリストの状態を示す図である。図１４に示すように、Ｑ２にパケットデータｈが書き込まれると、Ｑ２に対応するテイルポインタにパケットデータｈが書き込まれたアドレス１０が書き込まれ、アドレス０７に対応するリンクドリストに最後のパケットデータが格納されるアドレス１０が書き込まれる。
【００６３】
図１５は、本発明の第２の実施の形態におけるパケットバッファ２の構成例を示すブロック図である。このパケットバッファ２は、コマンドデコーダ３１と、ポインタ３２と、空きアドレスコントローラ３３と、マルチキャスト空きアドレスコントローラ３４と、リンクドリスト３５と、マルチキャストカウンタ３６と、メモリ１１に対するアクセスを制御するメモリコントローラ３７とを含む。なお、メモリコントローラ３７には、図５に示すパケットバッファと同様に、メモリ１１が接続されるものとする。
【００６４】
コマンドデコーダ３１は、ネットワークプロセッサ１から受けたコマンドをデコードし、デコード結果に応じてポインタ３２、空きアドレスコントローラ３３、マルチキャスト空きアドレスコントローラ３４などを制御する。
【００６５】
ポインタ３２は、上述のヘッドポインタ、テイルポインタに加えてマルチキャスト用のヘッドポインタを含む。また、リンクドリスト３５は、リンクドリストに加えてマルチキャスト用のリンクドリストを含む。
【００６６】
空きアドレスコントローラ３３は、メモリ１１の空きアドレスを管理しており、コマンドデコーダ３１によってパケットデータの書き込みコマンドがデコードされたときに、メモリ１１の空きアドレスを出力する。
【００６７】
マルチキャスト空きアドレスコントローラ３４は、マルチキャストのパケットデータが格納されたメモリ１１のアドレスおよびマルチキャストのパケットデータのコピー回数を管理する。
【００６８】
マルチキャストカウンタ３６は、マルチキャストのパケットデータのコピー回数をカウントする。
【００６９】
メモリコントローラ３７は、コマンドデコーダ３１からの指示に応じて、パケットデータをメモリ１１に書き込む制御を行なったり、メモリ１１からパケットデータを読み出す制御を行なったりする。
【００７０】
コマンドデコーダ３１がユニキャストのパケットデータの書き込みコマンドをデコードした場合、対応するキューのテイルポインタを読み出すと共に、空きアドレスコントローラ３３に空きアドレスをメモリコントローラ３７に出力させる。そして、コマンドデコーダ３１は、メモリコントローラ３７にパケットデータをメモリ１１に書き込ませる。このとき、テイルポインタが示すリンクドリスト３５の領域にその空きアドレスを書き込み、テイルポインタにもその空きアドレスを書き込む。
【００７１】
コマンドデコーダ３１がユニキャストのパケットデータの読み出しコマンドをデコードした場合、キュー番号に対応するヘッドポインタにアクセスして、最初のパケットデータが格納されるアドレスを出力させる。そして、コマンドデコーダ３１は、メモリコントローラ３７にメモリ１１のそのアドレスからパケットデータを読み出させる。このとき、そのアドレスが空きアドレスとして空きアドレスコントローラ３３に登録される。そして、ヘッドポインタが示すリンクドリストにアクセスし、そのアドレスがヘッドポインタに格納される。
【００７２】
コマンドデコーダ３１がマルチキャストのパケットデータの書き込みコマンドをデコードした場合、対応するキューのテイルポインタを読み出すと共に、空きアドレスコントローラ３３に空きアドレスをメモリコントローラ３７に出力させる。そして、コマンドデコーダ３１は、メモリコントローラ３７にパケットデータをメモリ１１に書き込ませる。このとき、テイルポインタが示すリンクドリスト３５の領域にその空きアドレスが書き込まれ、マルチキャスト用のリンクドリストにもそのアドレスが書き込まれる。そして、テイルポインタにもその空きアドレスが書き込まれる。さらに、マルチキャスト空きアドレスコントローラ３４にそのアドレスを記憶させる。
【００７３】
コマンドデコーダ３１がマルチキャストのパケットデータのコピーコマンドをデコードした場合、マルチキャスト空きアドレスコントローラ３４に記憶されるマルチキャストのパケットデータが書き込まれたアドレスが読み出され、テイルポインタが示すマルチキャスト用のリンクドリストにそのアドレスが書き込まれる。そして、テイルポインタおよびリンクドリストに空きアドレスが書き込まれる。このとき、マルチキャスト空きアドレスコントローラ３４は、コピーが行なわれた回数をカウントし、マルチキャストのパケットデータが書き込まれたアドレス毎にそのカウント値を保存する。
【００７４】
コマンドデコーダ３１がマルチキャストのパケットデータの読み出しコマンドをデコードした場合、キュー番号に対応するヘッドポインタを参照して、マルチキャスト用のリンクドリストにマルチキャストのパケットデータが格納されるアドレスを出力させる。そして、コマンドデコーダ３１は、メモリコントローラ３７にメモリ１１のそのアドレスからパケットデータを読み出させる。このとき、マルチキャスト空きアドレスコントローラ３４に記憶されるコピー回数がマルチキャストカウンタ３６に設定され、デクリメントされる。以降、そのマルチキャストのパケットデータが読み出されるごとにマルチキャストカウンタ３６がデクリメントされ、カウント値が“０”となったときにそのアドレスが空きアドレスとして空きアドレスコントローラ３３に登録される。
【００７５】
図１６は、変換テーブルを用いた場合の本発明の第２の実施の形態におけるパケットバッファ２の動作を説明するための図である。図１６（ａ）は、図１０に示すものと同様であるが、マルチキャスト用のリンクドリストに変換テーブルを指し示すアドレスが記憶される。
【００７６】
図１６（ｂ）は、変換テーブルの一例を示す図である。変換テーブルには、実際のマルチキャストのパケットデータが記憶されるメモリ１１のアドレスが記憶される。たとえば、マルチキャスト用のリンクドリストのアドレス０１には“０１”が記憶されているので、変換テーブルを参照することによってメモリ１１のアドレス０６に記憶されるマルチキャストのパケットデータｆを読み出すことができる。
【００７７】
このような変換テーブルを用いることにより、パケットデータを記憶するメモリ１１のアドレスよりも、マルチキャストのパケットデータを記憶するアドレスの方が少ない場合には、マルチキャスト用のヘッドポインタおよびリンクドリストのビット数を削減することができる。たとえば、メモリ１１には１２ビットのアドレスを使用し、マルチキャスト用のヘッドポインタおよびリンクドリストには１０ビットのアドレスを使用するといった構成が可能となる。
【００７８】
以上説明したように、本実施の形態における通信装置によれば、マルチキャスト用のヘッドポインタおよびリンクドリストを用いてメモリ１１に記憶されるマルチキャストのパケットデータを読み出すようにしたので、マルチキャストのパケットデータをメモリ１１に１回書き込むだけでよくなり、第１の実施の形態において説明した通信装置よりもさらに処理速度を向上させることが可能となった。
【００７９】
（第３の実施の形態）
図１７は、一般的な通信装置における問題点を説明するための図である。図１７に示すように、キューＱ１にのみ大量のパケットデータが記憶されている場合、Ｑ１に記憶されるパケットデータの送信によって通信装置が占有されてしまい、サービス品質の公平性を保つことができない。本発明の第３の実施の形態における通信装置は、特定のキューによる占有を防止するものである。
【００８０】
図１８は、本発明の第３の実施の形態におけるパケットバッファ２の構成例を示すブロック図である。このパケットバッファ２は、コマンドデコーダ４１と、書き込み判定部４２と、情報データベース４３と、アドレス発行部４４と、メモリコントローラ４５とを含む。なお、メモリコントローラ４５には、図５に示すパケットバッファと同様に、メモリ１１が接続されるものとする。
【００８１】
情報データベース４３は、メモリ１１に記憶されるパケットデータに関連する情報をキューごとに管理する。たとえば、情報データベース４３は、それぞれのキューに記憶されるパケットデータの数やサイズ、キューに記憶されるパケットデータのＭＡＸ値などを記憶する。
【００８２】
コマンドデコーダ４１は、ネットワークプロセッサ１から受けたコマンドをデコードし、デコード結果に応じてパケットデータの書き込みおよび読み出しを制御する。コマンドデコーダ４１がパケットデータの書き込みコマンドをデコードした場合、書き込み判定部４２にパケットデータの書き込み指示を行なう。
【００８３】
書き込み判定部４２は、コマンドデコーダ４１からパケットデータの書き込み指示を受けると、情報データベース４３を参照して指定されたキューに関連する情報を取得する。そして、その情報に基づいてパケットデータの書き込みを行なうか否かを判定する。
【００８４】
アドレス発行部４４は、書き込み判定部４２によって書き込みを行なうと判定された場合、そのパケットデータを書き込むメモリ１１のアドレスをメモリコントローラ４５に出力する。書き込みアドレスの生成方法は、第１および第２の実施の形態において説明したものと同様である。
【００８５】
メモリコントローラ４５は、コマンドデコーダ４１および書き込み判定部４２からの指示に応じて、パケットデータをメモリ１１に書き込む制御を行なったり、メモリ１１からパケットデータを読み出す制御を行なったりする。
【００８６】
図１９は、図１８に示す書き込み判定部４２の詳細をさらに説明するためのブロック図である。書き込み判定部４２は、コマンド入力部５１と、情報計算部５２と、判定部５３と、書き戻し部（加算器を含む）５４とを含む。
【００８７】
コマンド入力部５１は、コマンドデコーダ４１からパケットデータの書き込み指示およびパケットデータを書き込むキュー番号を受けると、情報データベース４３からそのキューに関連する情報を読み出す。
【００８８】
情報計算部５２は、情報データベース４３から読み出された情報に基づいて計算を行なう。たとえば、パケットデータの数やサイズと、キューに記憶されるパケットデータのＭＡＸ値とからそのキューの占有率を計算したり、そのキューにすでに記憶されているパケットデータの容量などを計算したりする。
【００８９】
判定部５３は、情報計算部５２によって計算された値からパケットデータの書き込みを行なうか否かを判定する。たとえば、そのキューに記憶されているデータが８０％以下であれば書き込みを行ない、８０％を超えていれば書き込みを行なわない、等のように判定する。この判定条件は、後述のようにネットワークプロセッサ１から受けるようにしてもよいし、予め情報データベース４３に記憶しておくようにしてもよい。パケットデータを書き込まないと判定した場合には、その結果のみをネットワークプロセッサ１に返す。
【００９０】
書き戻し部５４は、パケットデータが書き込まれた場合に、情報計算部５２からそのキューに記憶されているパケットデータの容量を受け、書き込まれたパケットデータのパケットサイズを加算して情報データベースに書き戻す。
【００９１】
図２０は、ネットワークプロセッサ１から判定条件を受ける場合のパケットバッファ２の動作を説明するタイミングチャートである。図２０に示すように、ネットワークプロセッサ１がパケットバッファ２にコマンドを発行するときに、キュー番号以外に判定条件を出力する。図２０においては、マルチキャストの書き込みコマンドを発行するときに条件Ｖａが出力され、ユニキャストの書き込みコマンドが発行されるときに条件Ｖｂが出力され、コピーコマンドが発行されるときに条件Ｖｃが出力されている。それ以外は、図８に示すタイミングチャートと同様である。
【００９２】
図２１は、図１９に示す書き込み判定部４２の変形例を示すブロック図である。図１９に示す書き込み判定部４２と比較して、判定部５３が判定結果を情報計算部５２に戻す点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【００９３】
次のパケットデータも同じキューに書き込むコマンドの場合、情報計算部５２は、判定部５３から判定結果を受け、その情報に基づいて計算を行なう。たとえば、判定部５３によって前のパケットデータを書き込むと判定された場合、情報計算部５２はその判定結果を受け、保持しているそのキューに関連する情報、次のパケットデータのサイズなどを用いて計算を行なう。これによって、書き戻し部５４による情報データベース４３への情報の書き戻しを待つ必要がなく、情報データベース４３にアクセスする必要もなくなる。したがって、連続して同じキューにパケットデータを書き込む場合に、判定処理を高速に行なうことが可能となる。
【００９４】
以上説明したように、本実施の形態における通信装置によれば、情報データベース４３を参照してパケットデータの書き込みを行なうか否かを判定するようにしたので、サービス品質の公平を保つことが可能となった。
【００９５】
また、判定部５３が判定結果を情報計算部５２に戻すようにしたので、同じキューに連続してパケットデータを書き込む場合に、書き込みを行なうか否かの判定処理を高速に行なうことが可能となった。
【００９６】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００９７】
１  ネットワークプロセッサ、２  パケットバッファ、１０  制御回路、１１  メモリ、２１  コマンド入力部、２２  判定回路、２３  データ入力部、２４  ＦＩＦＯ、２５  データ出力部、２６  読み出しコントローラ、２７  書き込みコントローラ、３１  コマンドデコーダ、３２  ポインタ、３３  空きアドレスコントローラ、３４  マルチキャスト空きアドレスコントローラ、３５  リンクドリスト、３６  マルチキャストカウンタ、３７  メモリコントローラ、４１  コマンドデコーダ、４２  書き込み判定部、４３  情報データベース、４４  アドレス発行部、４５  メモリコントローラ、５１  コマンド入力部、５２  情報計算部、５３  判定部、５４  書き戻し部。
【図１】
2011239326.tif 000003
【図２】
2011239326.tif 000004
【図３】
2011239326.tif 000005
【図４】
2011239326.tif 000006
【図５】
2011239326.tif 000007
【図６】
2011239326.tif 000008
【図７】
2011239326.tif 000009
【図８】
2011239326.tif 000010
【図９】
2011239326.tif 000011
【図１０】
2011239326.tif 000012
【図１１】
2011239326.tif 000013
【図１２】
2011239326.tif 000014
【図１３】
2011239326.tif 000015
【図１４】
2011239326.tif 000016
【図１５】
2011239326.tif 000017
【図１６】
2011239326.tif 000018
【図１７】
2011239326.tif 000019
【図１８】
2011239326.tif 000020
【図１９】
2011239326.tif 000021
【図２０】
2011239326.tif 000022
【図２１】
2011239326.tif 000023