(57)【要約】【課題】パケットデータの処理速度の高速化を図ることが可能な半導体装置を提供すること。【解決手段】制御回路１０は、ネットワークプロセッサから第１のパケットデータの書き込みの中断指示を受けたときに、第１のパケットデータの書き込みを中断し、ＦＩＦＯ２４にネットワークプロセッサから受けた第２のパケットデータを格納し、ネットワークプロセッサから第２のパケットデータの書き込みの中断指示を受けたときに、第１のパケットデータの書き込みを再開する。したがって、パケットデータの処理速度の高速化を図ることが可能となる。【選択図】図６
2012253598.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置であって、
パケットデータを一時的に記憶する記憶手段と、
前記プロセッサからパケットデータを受けて前記記憶手段に格納し、前記記憶手段に格納されたパケットデータを読み出して前記メモリに書き込むための制御を行なう制御手段とを含み、
前記制御手段は、前記プロセッサから第１のパケットデータの書き込みコマンドを受けたときに、前記記憶手段に前記プロセッサから受けた前記第１のパケットデータを格納し、前記プロセッサから前記第１のパケットデータの書き込みの中断指示を受けたときに、前記第１のパケットデータの書き込みを中断し、前記プロセッサから第２のパケットデータの書き込みコマンドを受けたときに、前記記憶手段に前記プロセッサから受けた前記第２のパケットデータを格納し、前記プロセッサから前記第２のパケットデータの書き込みの中断指示を受けたときに、前記第１のパケットデータの書き込みを再開する、半導体装置。
【請求項２】
前記記憶手段は、パケットデータを記憶する複数のキューを有しており、
前記制御手段は、前記プロセッサから前記第１のパケットデータの書き込みコマンドを受けたときに、前記記憶手段の第１のキューに前記プロセッサから受けた前記第１のパケットデータを格納し、前記プロセッサから前記第１のパケットデータの書き込みの中断指示を受けたときに、前記第１のパケットデータの書き込みを中断し、前記プロセッサから第２のパケットデータの書き込みコマンドを受けたときに、前記記憶手段の第２のキューに前記プロセッサから受けた前記第２のパケットデータを格納し、前記プロセッサから前記第２のパケットデータの書き込みの中断指示を受けたときに、前記第１のパケットデータの前記第１のキューへの書き込みを再開する、請求項１記載の半導体装置。
【請求項３】
プロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置であって、
前記メモリ内のキューごとに先頭のパケットデータが格納される前記メモリのアドレスを記憶するヘッドポインタと、
前記メモリ内のキューごとに最後尾のパケットデータが格納される前記メモリのアドレスを記憶するテイルポインタと、
前記メモリ内のキューごとに前記先頭のパケットデータから前記最後尾のパケットデータまでの複数のパケットデータが前記メモリのどのアドレスに格納されるかの情報をリンク形式で記憶するリンクドリストと、
前記プロセッサからパケットデータを受けて前記メモリに書き込むための制御を行なう制御手段とを含み、
少なくとも前記テイルポインタおよび前記リンクドリストは、１つのパケットデータの終わりを示す情報を格納するビットを含み、
前記制御手段は、前記プロセッサから第１のパケットデータの書き込みコマンドを受けたときに、前記メモリの第１の領域に前記プロセッサから受けた前記第１のパケットデータを格納し、前記プロセッサから前記第１のパケットデータの書き込みの中断指示を受けたときに、前記第１のパケットデータの書き込みを中断し、前記プロセッサから第２のパケットデータの書き込みコマンドを受けたときに、前記メモリの第２の領域に前記プロセッサから受けた第２のパケットデータを格納し、前記プロセッサから前記第２のパケットデータの書き込みの中断指示を受けたときに、前記第１のパケットデータの書き込みを再開して前記メモリの第３の領域に前記第１のパケットデータの続きを書き込み、前記第１のパケットデータの書き込み終了時に前記テイルポインタおよび前記リンクドリストを更新すると共に前記ビットにパケットデータの終わりを示す情報を書き込む、半導体装置。
【請求項４】
プロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置であって、
前記メモリ内のキューごとに先頭のパケットデータが格納される前記メモリのアドレスを記憶するヘッドポインタと、
前記メモリ内のキューごとに最後尾のパケットデータが格納される前記メモリのアドレスを記憶するテイルポインタと、
前記メモリ内のキューごとに前記先頭のパケットデータから前記最後尾のパケットデータまでの複数のパケットデータが前記メモリのどのアドレスに格納されるかの情報をリンク形式で記憶するリンクドリストと、
前記プロセッサからパケットデータを受けて前記メモリに書き込むための制御を行なう制御手段とを含み、
前記メモリは、複数のバンクが割り付けられたアドレスを複数有しており、
少なくとも前記テイルポインタおよび前記リンクドリストは、パケットデータを書き込んだバンク情報を示すバンクポインタを含み、
前記制御手段は、前記プロセッサから第１のパケットデータの書き込みコマンドを受けたときに、前記メモリの第１のアドレスの第１のバンクに前記プロセッサから受けた前記第１のパケットデータを格納し、前記プロセッサから前記第１のパケットデータの書き込みの中断指示を受けたときに、前記第１のパケットデータの書き込みを中断し、前記プロセッサから第２のパケットデータの書き込みコマンドを受けたときに、前記メモリの第２のアドレスの第２のバンクに前記プロセッサから受けた第２のパケットデータを格納し、前記プロセッサから前記第２のパケットデータの書き込みの中断指示を受けたときに、前記第１のパケットデータの書き込みを再開して前記メモリの前記第１のアドレスの第３のバンクに前記第１のパケットデータの続きを書き込み、前記第１のパケットデータの書き込み終了時に前記テイルポインタおよび前記リンクドリストを更新すると共に前記バンクポインタにパケットデータを書き込んだバンク情報を書き込む、半導体装置。
【請求項５】
プロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置であって、
前記メモリ内のキューごとに先頭のパケットデータが格納される前記メモリのアドレスを記憶するヘッドポインタと、
前記メモリ内のキューごとに最後尾のパケットデータが格納される前記メモリのアドレスを記憶するテイルポインタと、
前記メモリ内のキューごとに前記先頭のパケットデータから前記最後尾のパケットデータまでの複数のパケットデータが前記メモリのどのアドレスに格納されるかの情報をリンク形式で記憶するリンクドリストと、
前記プロセッサからパケットデータを受けて前記メモリに書き込むための制御を行なう制御手段とを含み、
前記メモリは、複数のバンクが割り付けられたアドレスを複数有しており、
少なくとも前記テイルポインタおよび前記リンクドリストは、パケットデータを書き込んだバンク情報を示すバンクポインタを含み、
前記制御手段は、前記プロセッサからあるキューに対する第１のパケットデータの書き込みコマンドを受けたときに、前記メモリの第１のアドレスの第１のバンクに前記プロセッサから受けた前記第１のパケットデータを格納して第１のラインポインタに前記第１のアドレスおよび前記あるキューの番号を格納し、前記プロセッサから前記第１のパケットデータの書き込みの中断指示を受けたときに、前記第１のパケットデータの書き込みを中断し、前記プロセッサから前記あるキューに対する第２のパケットデータの書き込みコマンドを受けたときに、前記メモリの第２のアドレスの第２のバンクに前記プロセッサから受けた第２のパケットデータを格納して第２のラインポインタに前記第２のアドレスおよび前記あるキューの番号を格納し、前記プロセッサから前記第２のパケットデータの書き込みの中断指示を受けたときに、前記第１のパケットデータの書き込みを再開して前記メモリの前記第１のアドレスの第３のバンクに前記第１のパケットデータの続きを書き込み、前記第１のパケットデータの書き込み終了時に前記テイルポインタおよび前記リンクドリストを更新すると共に前記バンクポインタにパケットデータを書き込んだバンク情報を書き込む、半導体装置。
【請求項６】
プロセッサと、
パケットデータを記憶するメモリと、
前記プロセッサから受けたコマンドに応じて、前記メモリへのパケットデータの書き込みを制御する半導体装置とを含んだ通信装置であって、
前記半導体装置は、パケットデータを一時的に記憶する記憶手段と、
前記プロセッサからパケットデータを受けて前記記憶手段に格納し、前記記憶手段に格納されたパケットデータを読み出して前記メモリに書き込むための制御を行なう制御手段とを含み、
前記制御手段は、前記プロセッサから第１のパケットデータの書き込みコマンドを受けたときに、前記記憶手段に前記プロセッサから受けた前記第１のパケットデータを格納し、前記プロセッサから前記第１のパケットデータの書き込みの中断指示を受けたときに、前記第１のパケットデータの書き込みを中断し、前記プロセッサから第２のパケットデータの書き込みコマンドを受けたときに、前記記憶手段に前記プロセッサから受けた前記第２のパケットデータを格納し、前記プロセッサから前記第２のパケットデータの書き込みの中断指示を受けたときに、前記第１のパケットデータの書き込みを再開する、通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットデータを一時的に保存して適宜出力する技術に関し、特に、複数のポートから入力されるパケットデータを効率的にパケットバッファに書き込むように制御する半導体装置およびそれを用いた通信装置に関する。
【背景技術】
【０００２】
近年、ネットワークの高速化が進んでおり、ルータ、スイッチなどの通信装置も高速化に対応する必要がある。一般に、ルータやスイッチなどの通信装置においては、転送先を決定するまでデータをメモリなどの記憶装置に一時的に保存しておく必要がある。そのため、ネットワークの高速化に伴ってネットワークプロセッサおよびパケットバッファのデータ転送レートが上がり、パケットバッファとして使用されるメモリの容量もより大きなものが必要となる。たとえば、１０ＧビットＥｒｔｈｅｎｅｔの場合、１０Ｇｂ／ｓのデータ転送レートのネットワークプロセッサと、１０Ｇｂ／ｓのデータ転送レートおよび２．５Ｇｂの容量を有するパケットバッファとが必要となる。
【０００３】
また、サービス品質を向上させるために、通信装置に入力されたパケットデータが優先順位にしたがって分類され、キューごとに蓄積される。このとき、ユニキャストの場合にはパケットデータが１回だけ書き込まれる。
【０００４】
さらに、サービス品質の公平性を保つために、キューの占有を避けるように動作させる必要がある。具体的には、キューにデータが溜まっている場合には、そのキューにデータを書き込まないように制御する。これらに関連する技術として、下記の特許文献１〜２に開示された発明がある。
【０００５】
特許文献１は、所定期間パケットバッファ内に滞留するパケットを、パケットバッファから読み出しを行うことなく実質的に破棄することを可能とするパケット転送装置およびパケット破棄方法を提供することを目的とする。パケットバッファ管理部では、パケットバッファの書き込み可能なアドレスに対するパケットの書き込み順序と、書き込み済みのアドレスからのパケットの読み出し順序とを管理している。このアドレスに対する順序付けは、パケットバッファのアドレスに対応したポインタアドレスのポインタによるキューを用いて行われる。
【０００６】
特許文献２は、可変長パケットを高速スイッチングでき、且つ、バッファメモリを効率的に利用できるパケットスイッチを提供することを目的とする。各入力回線から受信した可変長パケットを固定長のデータブロック単位で共通バッファメモリに書き込む構造のパケットスイッチにおいて、データ書込み時に、バッファ制御部が、入力回線別の入力キューを形成し、可変長パケットの最終データブロックが入力キューに登録された時、入力キューのリンクド・アドレスリストを転送先出力回線と対応した出力キューにリンクする。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−２６０５３５号公報
【特許文献２】特開２００２−１５２２４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来のルータ、スイッチなどの通信装置においては、パケットバッファに書き込まれたパケットデータが読み出される場合にもパケット単位で読み出されるため、１つのパケットデータの書き込みが終了するまで、次のパケットデータの書き込みができず、効率的にパケットデータの書き込みが行なえないといった問題点があった。
【０００９】
このような問題点は、上述の特許文献１〜２に開示された発明を用いたとしても解決することができない。
【００１０】
本発明は、上記問題点を解決するためになされたものであり、その目的は、パケットデータの処理速度の高速化を図ることが可能な半導体装置およびそれを用いた通信装置を提供することである。
【課題を解決するための手段】
【００１１】
本発明の一実施例によれば、ネットワークプロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置が提供される。制御回路は、ネットワークプロセッサからパケットデータを受けてＦＩＦＯに格納し、ＦＩＦＯに格納されたパケットデータを読み出してメモリに書き込むための制御を行なう。制御回路は、ネットワークプロセッサから第１のパケットデータの書き込みコマンドを受けたときに、ＦＩＦＯにネットワークプロセッサから受けた第１のパケットデータを格納し、ネットワークプロセッサから第１のパケットデータの書き込みの中断指示を受けたときに、第１のパケットデータの書き込みを中断し、ネットワークプロセッサから第２のパケットデータの書き込みコマンドを受けたときに、ＦＩＦＯにネットワークプロセッサから受けた第２のパケットデータを格納し、ネットワークプロセッサから第２のパケットデータの書き込みの中断指示を受けたときに、第１のパケットデータの書き込みを再開する。
【発明の効果】
【００１２】
本発明の一実施例によれば、制御回路は、ネットワークプロセッサから第１のパケットデータの書き込みの中断指示を受けたときに、第１のパケットデータの書き込みを中断し、ＦＩＦＯにネットワークプロセッサから受けた第２のパケットデータを格納し、ネットワークプロセッサから第２のパケットデータの書き込みの中断指示を受けたときに、第１のパケットデータの書き込みを再開するので、パケットデータの処理速度の高速化を図ることが可能となる。
【図面の簡単な説明】
【００１３】
【図１】ルータやスイッチなどの通信装置の構成例を示す図である。
【図２】図１に示す通信装置の動作の一例を説明するための図である。
【図３】キューに対するパケットデータの書き込み制御の一例を示す図である。
【図４】図１に示す通信装置の動作を模式的に示す図である。
【図５】本発明の第１の実施の形態における通信装置のネットワークプロセッサ１が、パケットバッファ２にパケットデータを書き込むときのタイミングチャートの一例である。
【図６】本発明の第１の実施の形態における通信装置のパケットバッファ２の内部構成を示すブロック図である。
【図７】パケットデータの書き込み用のＦＩＦＯ２４および読み出し用のＦＩＦＯ２８の詳細を説明するための図である。
【図８】本発明の第２の実施の形態の通信装置におけるパケットデータの書き込み動作の一例を示す図である。
【図９】本発明の第２の実施の形態におけるパケットバッファ２の構成例を示すブロック図である。
【図１０】本発明の第２の実施の形態におけるヘッドポインタ、リンクドリストおよびテイルポインタの他の一例を示す図である。
【図１１】１つのアドレスに対応するバンクの構成を示す図である。
【図１２】本発明の第３の実施の形態における通信装置のネットワークプロセッサ１が、パケットバッファ２にパケットデータを書き込むときのタイミングチャートの一例である。
【図１３】本発明の第３の実施の形態における通信装置のヘッドポインタ、リンクドリストおよびテイルポインタの構成を示す図である。
【図１４】パケットバッファ２がネットワークプロセッサ１からのパケットデータ書き込み時にＳｔａｒｔ信号を受けたときの動作を説明するための図である。
【図１５】パケットバッファ２がネットワークプロセッサ１からのパケットデータ書き込み時にＣＮＴ信号を受けたときの動作を説明するための図である。
【図１６】パケットバッファ２がネットワークプロセッサ１からのパケットデータ書き込み時にＥｎｄ信号を受けるときの動作を説明するための図である。
【発明を実施するための形態】
【００１４】
図１は、ルータやスイッチなどの通信装置の構成例を示す図である。この通信装置は、通信装置全体の制御を行なうネットワークプロセッサ１と、パケットデータを蓄積して適宜出力するパケットバッファ２とを含む。
【００１５】
ネットワークプロセッサ１は、パケットデータを受信すると、パケットバッファ２に対して、パケットデータの書き込みを指示するコマンドと、パケットデータを格納するキュー番号と、パケットデータとを出力する。
【００１６】
パケットバッファ２は、ネットワークプロセッサ１からコマンドとキュー番号とを受けると、キュー番号に対応するキューに対してネットワークプロセッサ１から受けたパケットデータを書き込む。
【００１７】
図２は、図１に示す通信装置の動作の一例を説明するための図である。図２において、ａ〜ｈはパケットデータを示しており、カッコ内はパケットデータを書き込むキュー番号を示している。ａ〜ｈはユニキャストのパケットデータである。
【００１８】
図２の左側に示すように、ネットワークプロセッサ１はパケットバッファ２に対して、コマンド、キュー番号およびパケットデータａ〜ｈを順次出力して、キュー番号に対応するキューにパケットデータを順次書き込む。
【００１９】
図２の中央に示すように、キューＱ０〜Ｑｎに対してパケットデータａ〜ｈが書き込まれる。そして、図２の右側に示すように、パケットバッファ２は、ネットワークプロセッサ１からパケットデータ読み出しコマンドを受けて、パケットデータの優先順位にしたがってパケットデータを順次出力する。なお、図２においては、パケットデータが、ａ、ｅ、ｆ、ｂ、ｇ、ｃ、ｄ、ｈの順に出力されている。
【００２０】
図３は、キューに対するパケットデータの書き込み制御の一例を示す図である。サービス品質を向上させるために、１つのキューによる占有を避けるように動作させる必要がある。そのため、図３に示すように、１つのキュー（Ｑ１）にパケットデータが溜まっている場合、そのキューにパケットデータを書き込まないように制御が行なわれる。
【００２１】
図４は、図１に示す通信装置の動作を模式的に示す図である。図４の左側に示すように、ネットワークプロセッサ１は複数のポートから入力されるパケットデータを処理するが、たとえば、各入力ポートのデータ転送レートは１Ｇｂｐｓである。
【００２２】
また、ネットワークプロセッサ１は、複数のポートからパケットデータを入力し、そのパケットデータをパケットバッファ２に書き込む。そして、ネットワークプロセッサ１は、パケットバッファ２からパケットデータを読み出して、図４の右側に示すように、複数のポートにパケットデータを出力する。このとき、ネットワークプロセッサ１は、１０Ｇｂｐｓのデータ転送レートで処理が可能である。
【００２３】
このとき、複数のポートから同時にパケットデータが入力されると、上述のように、１つのパケットデータの入力が終了するまで他のパケットの書き込みが行なえないため、他のパケットの処理が待たされることになる。したがって、ネットワークプロセッサ１は、１０Ｇｂｐｓのデータ転送レートで処理が行なえるのに、１Ｇｐｂｓのデータ転送レートでしか処理を行なっていないことになり、効率的に処理を行なっているとは言えない。
【００２４】
本発明の実施の形態における通信装置は、１つのパケットデータをパケットバッファ２に書き込んでいる最中であっても、他のパケットデータの書き込みを可能とするものである。以下、本発明の実施の形態における通信装置について詳細に説明する。
【００２５】
（第１の実施の形態）
図５は、本発明の第１の実施の形態における通信装置のネットワークプロセッサ１が、パケットバッファ２にパケットデータを書き込むときのタイミングチャートの一例である。なお、ネットワークプロセッサ１およびパケットバッファ２はＣＬＫ信号に同期して動作する。
【００２６】
まず、Ｔ１において、ネットワークプロセッサ１がパケットバッファ２に対して、パケットデータの書き込みコマンド（Ｗｔ）を出力すると共に、キュー番号（＃０）を出力する。このとき、ネットワークプロセッサ１は、パケットの最初を示すＳｔａｒｔ信号を活性する（Ｈレベルにする）。なお、以下の説明においては、キュー番号＃０に対応するキューをＱ０、キュー番号＃１に対応するキューをＱ１とする。
【００２７】
その後、ＣＬＫ信号に同期して、ネットワークプロセッサ１がパケットバッファ２に対してパケットデータを順次書き込む。このとき、パケットバッファ２は、後述するＦＩＦＯ（First In First Out）のキューＱ０にパケットデータを書き込む。
【００２８】
Ｔ２において、ネットワークプロセッサ１が次のパケットデータ（Ｑ１）の書き込みを行なうために、Ｑ０へのパケットデータの書き込みを中断させるＣＮＴ信号を活性する（Ｈレベルにする）。このとき、パケットバッファ２は、Ｑ０へのパケットデータの書き込みを中断する。なお、ネットワークプロセッサ１は、中断したＱ０へのパケットデータを引き続き入力ポートから入力してバッファリングするものとする。
【００２９】
ここで、ネットワークプロセッサ１がパケットバッファ２に対してパケットデータを書き込む速度は、パケットデータがポートに入力される速度よりも速いため、見かけ上、複数のポートから入力されるパケットデータを並行して処理することができる。
【００３０】
Ｔ３において、ネットワークプロセッサ１がパケットバッファ２に対して、パケットデータの書き込みコマンド（Ｗｔ）を出力すると共に、キュー番号（＃１）を出力する。このとき、ネットワークプロセッサ１は、パケットの最初を示すＳｔａｒｔ信号を活性する（Ｈレベルにする）。
【００３１】
その後、ＣＬＫ信号に同期して、ネットワークプロセッサ１がパケットバッファ２に対してパケットデータを順次書き込む。このとき、パケットバッファ２は、ＦＩＦＯのキューＱ１にパケットデータを書き込む。
【００３２】
Ｔ４において、ネットワークプロセッサ１が最初のパケットデータ（Ｑ０）の書き込みを再開するために、Ｑ１へのパケットデータの書き込みを中断させるＣＮＴ信号を活性する（Ｈレベルにする）。このとき、パケットバッファ２は、Ｑ１へのパケットデータの書き込みを中断する。
【００３３】
Ｔ５において、ネットワークプロセッサ１がパケットバッファ２に対して、パケットデータの書き込みコマンド（Ｗｔ）を出力すると共に、キュー番号（＃０）を出力する。このとき、パケットバッファ２は、中断していたＱ０へのパケットバッファの書き込みを再開する。
【００３４】
Ｔ６において、ネットワークプロセッサ１は、Ｑ０へのパケットデータの書き込みの終了を示すＥＮＤ信号をパケットバッファ２に出力する。このとき、パケットバッファ２は、Ｑ０へのパケットデータの書き込みを終了する。なお、Ｔ７以降において、同様の処理が行なわれる。
【００３５】
図６は、本発明の第１の実施の形態における通信装置のパケットバッファ２の内部構成を示すブロック図である。このパケットバッファ２は、ネットワークプロセッサ１からのコマンドに応じてパケットデータの書き込みおよび読み出しを制御する制御回路１０と、パケットデータを記憶するメモリ１１とを含む。なお、図６においては、制御回路１０が１つのＬＳＩによって構成され、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）などの汎用メモリ１１が外付けされる構成としているが、これに限られるものではない。
【００３６】
制御回路１０は、コマンド入力部２１と、データ入力部２３と、パケットデータの書き込み用のＦＩＦＯ２４と、データ出力部２５と、読み出しコントローラ２６と、書き込みコントローラ２７と、パケットデータの読み出し用のＦＩＦＯ２８とを含む。
【００３７】
コマンド入力部２１は、ネットワークプロセッサ１からコマンドを受け、コマンドがパケットデータの読み出しであれば、読み出しコントローラ２６にメモリ１１からのパケットデータの読み出しを指示する。また、コマンドがパケットデータの書き込みであれば、書き込みコントローラ２７にパケットデータの書き込みを指示する。
【００３８】
また、コマンド入力部２１は、ネットワークプロセッサ１からパケットデータの書き込みコマンドおよびＳｔａｒｔ信号を受けると、データ入力部２３に対して、キュー番号によって指定されたＦＩＦＯ２４内のキューに、ネットワークプロセッサ１から入力したパケットデータを書き込むように指示する。
【００３９】
また、コマンド入力部２１は、ネットワークプロセッサ１からＣＮＴ信号を受けると、データ入力部２３に対して、そのパケットデータの書き込みを中断するように指示する。そして、ネットワークプロセッサ１から、同じキューに対するパケットデータの書き込みコマンドを受けると、データ入力部２３に対して、そのキューに対するパケットデータの書き込みの再開を指示する。また、コマンド入力部２１は、ネットワークプロセッサ１からＥＮＤ信号を受けると、データ入力部２３に対して、そのパケットデータの書き込みを終了するように指示する。
【００４０】
データ入力部２３は、コマンド入力部２１からの指示に応じて、ＦＩＦＯ２４内のキューに対するパケットデータの書き込み、パケットデータの書き込みの中断、およびパケットデータの書き込みの終了などを行なう。
【００４１】
書き込みコントローラ２７は、コマンド入力部２１からパケットデータの書き込み指示を受けると、ネットワークプロセッサ１から受けたキュー番号に対応するメモリ１１内のキューに、ＦＩＦＯ２４にバッファリングされたパケットデータを書き込む。
【００４２】
読み出しコントローラ２６は、コマンド入力部２１からパケットデータの読み出し指示を受けると、ネットワークプロセッサ１から受けたキュー番号に対応するメモリ１１内のキューからパケットデータを読み出して、ＦＩＦＯ２８内の対応するキューにパケットデータを書き込む。
【００４３】
データ出力部２５は、ＦＩＦＯ２８内の対応するキューに対するパケットデータの書き込みが終了すると、ＦＩＦＯ２８内のそのキューからパケットデータを読み出し、そのパケットデータをネットワークプロセッサ１に出力する。
【００４４】
図７は、パケットデータの書き込み用のＦＩＦＯ２４および読み出し用のＦＩＦＯ２８の詳細を説明するための図である。ＦＩＦＯ２４は、キューＱ０〜Ｑｎに分けられており、それぞれのキューが複数のパケットデータを格納できるだけの容量を有している。上述のように、パケットデータの書き込みが中断される場合には、キューに対して１つのパケットデータの書込みが完了したときに、そのパケットデータがペイロード２７（メモリ１１）に移されることになる。
【００４５】
また、ＦＩＦＯ２８についても同様に、キューＱ０〜Ｑｎに分けられており、それぞれのキューが複数のパケットデータを格納できるだけの容量を有している。ペイロード２７（メモリ１１）からパケットデータを読み出してＦＩＦＯ２８に書き込む場合には、パケット単位で書込みが行なわれる。パケットデータを書き込むときと同様に、パケットデータをＦＩＦＯ２８から読み出して出力する場合にも、パケットデータの読み出しを中断しながらネットワークプロセッサ１に出力する。
【００４６】
以上説明したように、本実施の形態における通信装置によれば、ネットワークプロセッサ１がＣＮＴ信号をパケットバッファ２に出力し、１つのパケットデータの書き込みの途中で別のパケットデータの書き込みを行なうようにしたので、複数のポートから同時にパケットデータを入力する場合でも、それらのデータパケットの書き込みを並行して行なえるようになり、処理速度の高速化を図ることが可能となった。
【００４７】
（第２の実施の形態）
第１の実施の形態における通信装置は、ＦＩＦＯ２４および２８を設けてパケットデータを一時的に格納するものであった。しかしながら、キュー数が多くなるに従ってＦＩＦＯのメモリサイズも大きくなってしまう。本発明の第２の実施の形態においては、ペイロードアドレスを管理することによって、ＦＩＦＯのメモリサイズを削減するものである。
【００４８】
まず、本発明の第２の実施の形態における通信装置の動作の理解を容易にするために、通信装置におけるヘッドポインタ、テイルポインタ、リンクドリストおよびペイロード（メモリ１１）の動作について説明する。
【００４９】
図８は、本発明の第２の実施の形態の通信装置におけるパケットデータの書き込み動作の一例を示す図である。ヘッドポインタは、キューＱ０〜Ｑｎのそれぞれについて最初にパケットデータが書き込まれているメモリ１１のアドレスを示すものである。たとえば、キューＱ０の最初のパケットデータがメモリ１１のアドレス００（データａ）に書き込まれていることを示している。
【００５０】
テイルポインタは、キューＱ０〜Ｑｎのそれぞれについて最後尾のパケットデータが書き込まれているメモリ１１のアドレスを示すものである。たとえば、キューＱ０の最後尾のパケットがメモリ１１のアドレス０９（データｊ）に書き込まれていることを示している。
【００５１】
リンクドリストは、ヘッドポインタによって示される先頭のパケットデータのアドレスからテイルポインタによって示される最後尾のパケットデータのアドレスまでを数珠つなぎにして示すものである。たとえば、キューＱ０の最初のパケットデータが格納されるアドレス００に対応するリンクドリストにアドレス０５が書き込まれているので、次のパケットデータがメモリ１１のアドレス０５（データｇ）に格納されていることが分かる。さらに、２番目のパケットデータが格納されるアドレス０５に対応するリンクドリストにアドレス０９が書き込まれているので、その次のパケットデータがメモリ１１のアドレス０９（データｊ）に格納されていることが分かる。
【００５２】
図８に示すように、ヘッドポインタ、リンクドリストおよびテイルポインタに、パケットの区切りを示すＥｎｄビットを設けている。このＥｎｄビットを参照することによって、１つのパケットデータの区切りを判別する。なお、図８においては、パケットデータの区切りのＥｎｄビットに“Ｅ”が格納されている。
【００５３】
図９は、本発明の第２の実施の形態におけるパケットバッファ２の構成例を示すブロック図である。このパケットバッファ２は、コマンドデコーダ３１と、ポインタ３２と、空きアドレスコントローラ３３と、リンクドリスト３４と、メモリ１１に対するアクセスを制御するメモリコントローラ３５とを含む。なお、メモリコントローラ３５には、図６に示すパケットバッファと同様に、メモリ１１が接続されるものとする。
【００５４】
また、図９では、データ入力部、データ出力部、ＦＩＦＯの記載を省略している。図９のパケットバッファにおいても、図６のパケットバッファと同様に、ネットワークプロセッサ１とメモリ１１との間に、パケットデータの入出力を行なうデータ入力部、データ出力部、ＦＩＦＯが配置される。
【００５５】
また、ネットワークプロセサ１がパケットバッファ２にパケットデータを書き込むときの動作は、図５のタイミングチャートに示す第１の実施の形態における通信装置の動作と同様である。
【００５６】
コマンドデコーダ３１は、ネットワークプロセッサ１から受けたコマンドをデコードし、デコード結果に応じてポインタ３２、空きアドレスコントローラ３３などを制御する。
【００５７】
ポインタ３２は、上述のヘッドポインタおよびテイルポインタに対応しており、Ｅｎｄビットが付加されている。また、リンクドリスト３４は、上述のようにリンクドリストにＥｎｄビットが付加されている。
【００５８】
空きアドレスコントローラ３３は、メモリ１１の空きアドレスを管理しており、コマンドデコーダ３１によってパケットデータの書き込みコマンドがデコードされたときに、メモリ１１の空きアドレスを出力する。
【００５９】
メモリコントローラ３５は、コマンドデコーダ３１からの指示に応じて、パケットデータをメモリ１１に書き込む制御を行なったり、メモリ１１からパケットデータを読み出す制御を行なったりする。
【００６０】
コマンドデコーダ３１がユニキャストのパケットデータの書き込みコマンドをデコードした場合、対応するキューのテイルポインタを読み出すと共に、空きアドレスコントローラ３３に空きアドレスをメモリコントローラ３５に出力させる。
【００６１】
そして、コマンドデコーダ３１は、メモリコントローラ３５にパケットデータをメモリ１１に書き込ませる。このとき、テイルポインタが示すリンクドリスト３４の領域にその空きアドレスを書き込み、テイルポインタにもその空きアドレスを書き込む。
【００６２】
そして、コマンドデコーダ３１は、ネットワークプロセッサ１からＥＮＤ信号を受けたときに、リンクドリスト３４のＥｎｄビットおよびテイルポインタのＥｎｄビットにパケットの終了を示す情報を書き込む。
【００６３】
上述のように、パケットバッファ２がネットワークプロセッサ１からＣＮＴ信号を受けた後、パケットデータの書き込みを再開するときに再度パケットデータの書き込みコマンドが発行されるため、新しいアドレスにパケットデータの続きが書き込まれることになる。そのため、パケットの区切りを示すＥｎｄビットが必要となる。
【００６４】
コマンドデコーダ３１がユニキャストのパケットデータの読み出しコマンドをデコードした場合、キュー番号に対応するヘッドポインタにアクセスして、最初のパケットデータが格納されるアドレスを出力させる。
【００６５】
そして、コマンドデコーダ３１は、メモリコントローラ３５にメモリ１１のそのアドレスからパケットデータを読み出させる。このとき、そのアドレスが空きアドレスとして空きアドレスコントローラ３３に登録される。そして、ヘッドポインタが示すリンクドリストにアクセスし、そのアドレスおよびＥｎｄビットがヘッドポインタに格納される。ヘッドポインタのＥｎｄビットがパケットの終了を示すまで、そのパケットデータの読み出しが継続される。
【００６６】
図１０は、本発明の第２の実施の形態におけるヘッドポインタ、リンクドリストおよびテイルポインタの他の一例を示す図である。図８に示すＥｎｄビットが、バンクポインタに置き換えられた構成を有している。図１０においては、１つのアドレスが複数のバンクによって構成されており、バンクポインタによってパケットデータがどのバンクに書き込まれているかを示している。
【００６７】
たとえば、ヘッドポインタにおいては、キューＱ０の最初のパケットデータがメモリ１１のアドレス００のバンクＢ３およびＢ２に書き込まれていることを示している。また、テイルポインタにおいては、キューＱ０の最後尾のパケットがメモリ１１のアドレス０９のバンクＢ１およびＢ２に書き込まれていることを示している。
【００６８】
図１１は、１つのアドレスに対応するバンクの構成を示す図である。図１１においては、１つのアドレスが８バンクによって構成されており、１つのアドレスには１つのパケットデータが格納されることを示している。したがって、８バンクの容量の合計が、１つのパケットデータのサイズよりも大きいものとする。
【００６９】
図８に示すＥｎｄビットを用いてパケットデータの書き込みを行なう場合、ネットワークプロセッサ１からＣＮＴ信号を受けた後、パケットデータの書き込みを再開するときに違うアドレスにパケットデータの続きを書き込むようにしていた。図１０に示すバンクポインタを用いてパケットデータの書き込みを行なう場合、ネットワークプロセッサ１からＣＮＴ信号を受けた後、パケットデータの書き込みを再開するときに同じアドレスの違うバンクにパケットデータを書き込む。
【００７０】
以上説明したように、本実施の形態における通信装置によれば、ヘッドポインタ、テイルポインタおよびリンクドリストにＥｎｄビットまたはバンクポインタを持たせ、パケットデータの書き込みが再開されるときに違うアドレスまたは違うバンクにパケットデータを書き込むようにした。これによって、パケットデータを一時的に格納するＦＩＦＯのメモリサイズを削減することが可能となった。また、ＦＩＦＯのメモリサイズを削減することに伴い、それを制御する回路についても不要となり、通信装置の回路規模を削減することが可能となった。
【００７１】
（第３の実施の形態）
第２の実施の形態における通信装置は、ヘッドポインタ、テイルポインタおよびリンクドリストにＥｎｄビットまたはバンクポインタを持たせ、パケットデータの書き込みが再開されるときに違うアドレスまたは違うバンクにパケットデータを書き込むものであった。しかしながら、同じキュー番号のキューに対して複数のパケットデータの書込みが同時に発生した場合には、それに対処することができない。
【００７２】
本発明の第３の実施の形態における通信装置は、図１０に示すヘッドポインタ、リンクドリストおよびテイルポインタの構成にライン情報を追加して、同じキュー番号のキューに対して複数のパケットデータの書き込みが同時に発生した場合でも、パケットデータの書き込みを行なえるようにしたものである。
【００７３】
なお、本実施の形態における通信装置の構成は、図９に示す第２の実施の形態における通信装置の構成と同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【００７４】
図１２は、本発明の第３の実施の形態における通信装置のネットワークプロセッサ１が、パケットバッファ２にパケットデータを書き込むときのタイミングチャートの一例である。なお、ネットワークプロセッサ１およびパケットバッファ２はＣＬＫ信号に同期して動作する。
【００７５】
まず、Ｔ１において、ネットワークプロセッサ１がパケットバッファ２に対して、パケットデータの書き込みコマンド（Ｗｔ）を出力すると共に、キュー番号（＃０）およびライン番号（＃０）を出力する。このとき、ネットワークプロセッサ１は、パケットの最初を示すＳｔａｒｔ信号を活性する（Ｈレベルにする）。ここで、ライン番号とは、どのポートから入力されたパケットであるかを識別するための情報である
その後、ＣＬＫ信号に同期して、ネットワークプロセッサ１がパケットバッファ２に対してパケットデータを順次書き込む。
【００７６】
Ｔ２において、ネットワークプロセッサ１が２番目のパケットデータの書き込みを行なうために、最初のパケットデータの書き込みを中断させるＣＮＴ信号を活性する（Ｈレベルにする）。このとき、パケットバッファ２は、最初のパケットデータの書き込みを中断する。
【００７７】
Ｔ３において、ネットワークプロセッサ１がパケットバッファ２に対して、２番目のパケットデータの書き込みコマンド（Ｗｔ）を出力すると共に、キュー番号（＃０）を出力する。このとき、ネットワークプロセッサ１は、パケットの最初を示すＳｔａｒｔ信号を活性する（Ｈレベルにする）。ここで、２番目のデータパケットの書き込み先が、最初のパケットデータの書き込み先と同じキューＱ０であるので、ネットワークプロセッサ１は、ポート番号を識別するためのライン番号（＃１）をパケットバッファ２に出力する。
【００７８】
その後、ＣＬＫ信号に同期して、ネットワークプロセッサ１がパケットバッファ２に対して２番目のパケットデータを順次書き込む。
【００７９】
Ｔ４において、ネットワークプロセッサ１が最初のパケットデータの書き込みを再開するために、２番目のパケットデータの書き込みを中断させるＣＮＴ信号を活性する（Ｈレベルにする）。このとき、パケットバッファ２は、２番目のパケットデータの書き込みを中断する。
【００８０】
Ｔ５において、ネットワークプロセッサ１がパケットバッファ２に対して、最初のパケットデータの書き込みコマンド（Ｗｔ）を出力すると共に、キュー番号（＃０）およびライン番号（＃０）を出力する。このとき、パケットバッファ２は、中断していた最初のパケットバッファの書き込みを再開する。
【００８１】
Ｔ６において、ネットワークプロセッサ１は、最初のパケットデータの書き込みの終了を示すＥＮＤ信号をパケットバッファ２に出力する。このとき、パケットバッファ２は、最初のパケットデータの書き込みを終了する。なお、Ｔ７以降において、同様の処理が行なわれる。
【００８２】
図１３は、本発明の第３の実施の形態における通信装置のヘッドポインタ、リンクドリストおよびテイルポインタの構成を示す図である。図１０に示す第２の実施の形態におけるヘッドポインタ、リンクドリストおよびテイルポインタと比較して、ラインポインタが追加されている点が異なる。なお、図１３においては、テイルポインタにバンクポインタが付加されていないが、第２の実施の形態と同様にバンクポインタを付加するようにしてもよい。
【００８３】
ラインポインタは、アドレス、キュー番号およびバンクポインタを有している。たとえば、ラインポインタ＃０のキュー番号と、ラインポインタ＃１のキュー番号とを同じにすることによって、２つのパケットデータを同じキューに同時に書き込む場合にも対応することができる。
【００８４】
図１４〜１６は、本発明の第３の実施の形態における通信装置の動作を説明するための図である。図１４は、パケットバッファ２がネットワークプロセッサ１からのパケットデータ書き込み時にＳｔａｒｔ信号を受けたときの動作を説明するための図である。
【００８５】
まず、パケットバッファ２がパケットデータの書き込みコマンド、ポート番号（Ｃｈ０）およびキュー番号（Ｑ＃）を受けると（１）、リンクドリスト３４は、パケットデータの書き込みコマンドをメモリコントローラ３５に出力する。このとき、メモリコントローラ３５は、ネットワークプロセッサ１から出力されるパケットデータを受ける（２）。
【００８６】
メモリコントローラ３５は、バンクの衝突を回避するために使用されていないバンクを抽出し、そのバンク候補をリンクドリスト３４に提示する（４）。リンクドリスト３４は、メモリコントローラ３５から提示されたバンク候補の中からパケットデータを書き込むバンクを選択し（５）、そのアドレス（Ａ）とバンク番号（Ｂ）とをメモリコントローラ３５に指示する（６）。
【００８７】
メモリコントローラ３５は、リンクドリスト３４からアドレスおよびバンク番号を受けると、ネットワークプロセッサ１から受けたパケットデータをメモリ（ＤＲＡＭ）１１の指定されたアドレスのバンクに書き込む（７）。このとき、リンクドリスト３４は、ラインポインタを生成し、キュー番号（Ｑ）、アドレス（Ａ）およびバンク番号（Ｂ１）を記憶部３６に書き込む（８）。ここで、リンクドリスト３４は、内部のカウンタＣに“１”を設定し、Ｃ番目のバンクポインタにパケットデータを書き込むバンク番号を書き込む。なお、記憶部３６は、図１３に示すラインポインタ（Ｌｉｎｅ＃０〜Ｌｉｎｅ＃ａ）を記憶するものであり、メモリやレジスタなどによって構成される。
【００８８】
図１５は、パケットバッファ２がネットワークプロセッサ１からのパケットデータ書き込み時にＣＮＴ信号を受けたときの動作を説明するための図である。まず、パケットバッファ２がパケットデータの書き込みコマンドおよびポート番号（Ｃｈ０）を受けると（１）、リンクドリスト３４は、パケットデータの書き込みコマンドをメモリコントローラ３５に出力する。このとき、リンクドリスト３４は、記憶部３６に格納されるポート番号（Ｃｈ０）に対応するラインポインタを読み出す。また、メモリコントローラ３５は、ネットワークプロセッサ１から出力されるパケットデータを受ける（２）。
【００８９】
メモリコントローラ３５は、バンクの衝突を回避するために使用されていないバンクを抽出し、そのバンク候補をリンクドリスト３４に提示する（４）。リンクドリスト３４は、メモリコントローラ３５から提示されたバンク候補の中からパケットデータを書き込むバンクを選択し（５）、そのアドレス（Ａ）とバンク番号（Ｂ）とをメモリコントローラ３５に指示する（６）。
【００９０】
メモリコントローラ３５は、リンクドリスト３４からアドレスおよびバンク番号を受けると、ネットワークプロセッサ１から受けたパケットデータをメモリ（ＤＲＡＭ）１１の指定されたアドレスのバンクに書き込む（７）。このとき、リンクドリスト３４は、ラインポインタのバンクポインタの情報を修正し、キュー番号（Ｑ）、アドレス（Ａ）およびバンク番号（Ｂ（Ｃ＋１））を記憶部３６に書き込む（８）。ここで、リンクドリスト３４は、内部のカウンタＣをインクリメントし、Ｃ＋１番目のバンクポインタにパケットデータを書き込むバンク番号を書き込む。
【００９１】
図１６は、パケットバッファ２がネットワークプロセッサ１からのパケットデータ書き込み時にＥｎｄ信号を受けるときの動作を説明するための図である。まず、パケットバッファ２がパケットデータの書き込みコマンドおよびポート番号（Ｃｈ０）を受けると（１）、リンクドリスト３４は、パケットデータの書き込みコマンドをメモリコントローラ３５に出力する。このとき、リンクドリスト３４は、記憶部３６に格納されるポート番号（Ｃｈ０）に対応するラインポインタを読み出す。また、メモリコントローラ３５は、ネットワークプロセッサ１から出力されるパケットデータを受ける（２）。
【００９２】
メモリコントローラ３５は、バンクの衝突を回避するために使用されていないバンクを抽出し、そのバンク候補をリンクドリスト３４に提示する（４）。リンクドリスト３４は、メモリコントローラ３５から提示されたバンク候補の中からパケットデータを書き込むバンクを選択し（５）、そのアドレス（Ａ）とバンク番号（Ｂ）とをメモリコントローラ３５に指示する（６）。
【００９３】
メモリコントローラ３５は、リンクドリスト３４からアドレスおよびバンク番号を受けると、ネットワークプロセッサ１から受けたパケットデータをメモリ（ＤＲＡＭ）１１の指定されたアドレスのバンクに書き込む（７）。
【００９４】
リンクドリスト３４は、ネットワークプロセッサ１からＥｎｄ信号を受けると、ラインポインタのバンクポインタの情報を修正し、キュー番号（Ｑ）、アドレス（Ａ）およびバンク番号（Ｂ（Ｃ＋１））を対応するリンクドリストに書き込む（８）。ここで、リンクドリスト３４は、内部のカウンタＣをインクリメントし、Ｃ＋１番目のバンクポインタにパケットデータを書き込むバンク番号を書き込む。
【００９５】
以上説明したように、本実施の形態における通信装置によれば、ラインポインタを設けてパケットデータを書き込むキュー番号を管理するようにしたので、第２の実施の形態において説明した効果に加えて、同じキュー番号のキューに複数のポートから入力されるパケットを同時に書き込むことが可能となった。
【００９６】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００９７】
１  ネットワークプロセッサ、２  パケットバッファ、１０  制御回路、１１  メモリ、２１  コマンド入力部、２３  データ入力部、２４，２８  ＦＩＦＯ、２５  データ出力部、２６  読み出しコントローラ、２７  書き込みコントローラ、３１  コマンドデコーダ、３２  ポインタ、３３  空きアドレスコントローラ、３４  リンクドリスト、３５  メモリコントローラ、３６  記憶部。
【図１】
2012253598.tif 000003
【図２】
2012253598.tif 000004
【図３】
2012253598.tif 000005
【図４】
2012253598.tif 000006
【図５】
2012253598.tif 000007
【図６】
2012253598.tif 000008
【図７】
2012253598.tif 000009
【図８】
2012253598.tif 000010
【図９】
2012253598.tif 000011
【図１０】
2012253598.tif 000012
【図１１】
2012253598.tif 000013
【図１２】
2012253598.tif 000014
【図１３】
2012253598.tif 000015
【図１４】
2012253598.tif 000016
【図１５】
2012253598.tif 000017
【図１６】
2012253598.tif 000018