(57)【要約】      （修正有）【課題】受信ステータスのＤＭＡ転送によるメモリバスの帯域占有を抑えて、ＤＭＡデータ転送効率をより高めることが可能なネットワークプロセッサを提供する。【解決手段】受信データを記憶する格納領域を具備し、格納領域の位置を指定するディスクリプタを記憶する外部メモリと接続されたネットワークプロセッサであって、複数のディスクリプタを記憶するディスクリプタ格納回路と、複数のディスクリプタを外部メモリからディスクリプタ格納回路へＤＭＡ転送して、受信データを受信すると、複数のディスクリプタの各々に基づいて受信データを外部メモリの格納領域へＤＭＡ転送して、ＤＭＡ転送する度に受信ステータスを生成するＤＭＡ制御回路と、受信ステータス格納回路と、受信ステータス格納回路に格納された受信ステータスを結合する受信ステータス結合制御回路と、を備え、ＤＭＡ制御回路は、結合された受信ステータスを外部メモリへＤＭＡ転送する。【選択図】図２
2010211322.tif 000002
【特許請求の範囲】
【請求項１】
受信データを記憶する格納領域を具備し、前記格納領域の位置を指定するディスクリプタを記憶する外部メモリと接続されたネットワークプロセッサであって、
前記ディスクリプタのうちの複数のディスクリプタを記憶するディスクリプタ格納回路と、
前記複数のディスクリプタを前記外部メモリから前記ディスクリプタ格納回路へＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送して、前記受信データを受信すると、前記ディスクリプタ格納回路に記憶された前記複数のディスクリプタの各々に基づいて前記受信データを前記外部メモリの前記格納領域へＤＭＡ転送して、前記受信データを前記外部メモリへＤＭＡ転送する度に当該受信データの状態を示す受信ステータスを生成するＤＭＡ制御回路と、
前記受信ステータスを格納する受信ステータス格納回路と、
前記受信ステータス格納回路に格納された前記受信ステータスを結合する受信ステータス結合制御回路と、
を備え、
前記ＤＭＡ制御回路は、前記結合された受信ステータスを前記外部メモリへＤＭＡ転送する
ネットワークプロセッサ。
【請求項２】
請求項１に記載のネットワークプロセッサであって、
前記受信ステータス結合制御回路は、  
前記受信データを受信すると、前記ＤＭＡ制御回路が当該受信データのＤＭＡ転送に使用する前記複数のディスクリプタのうちの一つのディスクリプタが有効であるか否かを判定するディスクリプタ有効判定回路
を備え、
前記ＤＭＡ制御回路は、前記ディスクリプタ有効判定回路が、前記一つのディスクリプタを有効であると判定したときに、前記受信データを当該一つのディスクリプタに基づいて、前記外部メモリへＤＭＡ転送を行う
ネットワークプロセッサ。
【請求項３】
請求項２に記載のネットワークプロセッサであって、
前記受信ステータス結合制御回路は、
前記受信ステータス格納回路に格納された前記受信ステータスを結合する受信ステータス結合回路と、
前記ディスクリプタ有効判定回路の行う判定に基づいて、前記ＤＭＡ制御回路が少なくとも一つ以上の有効なディスクリプタを使用して前記受信データのＤＭＡ転送を行ったか否かを判定する有効ディスクリプタ数判定回路と
を備え、
前記受信ステータス結合回路は、前記ディスクリプタ有効判定回路が前記一つのディスクリプタを無効なディスクリプタと判定したときであって、有効ディスクリプタ数判定回路が前記ＤＭＡ制御回路が少なくとも一つ以上の有効なディスクリプタを使用して前記受信データのＤＭＡ転送を行っていると判定した場合に、前記受信ステータス格納回路に格納された前記受信ステータスを結合する
ネットワークプロセッサ。
【請求項４】
請求項３に記載のネットワークプロセッサであって、
前記受信ステータス結合制御回路は、
前記ＤＭＡ制御回路が前記複数のディスクリプタの全てを前記受信データのＤＭＡ転送に使用したか否かを判定するディスククリプタ残数制御回路
をさらに備え、
前記受信ステータス結合回路は、前記ＤＭＡ制御回路が前記複数のディスクリプタの全てを前記受信データのＤＭＡ転送に使用したと判定したときに、前記受信ステータス格納回路に格納された前記受信ステータスを結合する
ネットワークプロセッサ。
【請求項５】
請求項４に記載のネットワークプロセッサであって、
前記受信ステータス結合制御回路は、
前記受信データを受信すると予め定められた一定時間を計測して、前記受信データを受信した時から次の新たな受信データを受信する時までの間に前記一定時間が経過するか否かを判定する時間管理回路
をさらに備え、
前記受信ステータス結合回路は、前記時間管理回路が前記一定時間を経過したと判定したときに、前記受信ステータス格納回路に格納された前記受信ステータスを結合する
ネットワークプロセッサ。
【請求項６】
請求項５に記載のネットワークプロセッサであって、
前記受信ステータス結合制御回路は、
前記受信データを受信するときに前記受信データの累計データバイト数をカウントして、前記累計データバイト数が予め定められた前記累計データバイト数に対する閾値を越えるか否かを判定する受信データバイト数制御回路
をさらに備え、
前記受信ステータス結合回路は、前記受信データバイト数制御回路が、前記累計データバイト数が予め定められた前記累計データバイト数に対する閾値を越えたと判定したときに、前記受信ステータス格納回路に格納された前記受信ステータスを結合する
ネットワークプロセッサ。
【請求項７】
請求項１から請求項６までのいずれかに記載のネットワークプロセッサにおいて、
前記ＤＭＡ制御回路と、前記ディスクリプタ格納回路と、前記受信ステータス格納回路と、前記受信ステータス結合制御回路とを備える
受信コントローラ。
【請求項８】
受信データを記憶する格納領域を具備し、前記格納領域の位置を指定するディスクリプタを記憶する外部メモリと接続されたネットワークプロセッサにおいて、
前記ディスクリプタのうちの複数のディスクリプタを記憶するステップと、
前記複数のディスクリプタを前記外部メモリからＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送するステップと、
前記受信データを受信するステップと、
前記複数のディスクリプタの各々を使用して前記受信データを前記外部メモリの前記格納領域へＤＭＡ転送するステップと、
前記受信データを前記外部メモリへＤＭＡ転送する毎に当該受信データの状態を示す受信ステータスを生成するステップと、
前記受信ステータスを格納するステップと、
前記格納された受信ステータスを結合するステップと、
前記結合された受信ステータスを前記外部メモリへＤＭＡ転送するステップと
を備えるデータ受信処理方法。
【請求項９】
請求項８に記載のデータ受信処理方法であって、
前記受信データを受信すると、当該受信データのＤＭＡ転送に使用する前記複数のディスクリプタのうちの一つのディスクリプタが有効であるか否かを判定するステップ
をさらに備え、
前記受信データを前記外部メモリの前記格納領域へＤＭＡ転送を行うステップは、
前記一つのディスクリプタを有効であると判定したときに、前記受信データを当該一つのディスクリプタに基づいて、前記外部メモリへＤＭＡ転送を行うステップ
を含むデータ受信処理方法。
【請求項１０】
請求項９に記載のデータ受信処理方法であって、
前記ＤＭＡ制御回路が少なくとも一つ以上の有効なディスクリプタを使用して前記受信データのＤＭＡ転送を行ったか否かを判定するステップ
をさらに備え、
前記格納された受信ステータスを結合するステップは、
前記一つのディスクリプタを無効なディスクリプタと判定したときであって、前記ＤＭＡ制御回路が少なくとも一つ以上の有効なディスクリプタを使用して前記受信データのＤＭＡ転送を行っていると判定した場合に、前記格納された受信ステータスを結合するステップ
を含むデータ受信処理方法。
【請求項１１】
請求項１０に記載のデータ受信処理方法であって、
前記複数のディスクリプタの全てを前記受信データのＤＭＡ転送に使用したか否かを判定するステップ
をさらに備え、
前記格納された受信ステータスを結合するステップは、
前記複数のディスクリプタの全てを前記受信データのＤＭＡ転送に使用したと判定したときに、前記格納された受信ステータスを結合するステップ
を含むデータ受信処理方法。
【請求項１２】
請求項１１に記載のデータ受信処理方法であって、
前記受信データを受信すると予め定められた一定時間を計測して、前記受信データを受信した時から次の新たな受信データを受信する時までの間に前記一定時間が経過するか否かを判定するステップ
をさらに備え、
前記格納された受信ステータスを結合するステップは、
前記時間管理回路が前記一定時間を経過したと判定したときに、前記格納された受信ステータスを結合するステップ
を含むデータ受信処理方法。
【請求項１３】
請求項１２に記載のデータ受信処理方法であって、
前記受信データを受信するときに前記受信データの累計データバイト数をカウントして、前記累計データバイト数が予め定められた前記累計データバイト数に対する閾値を越えるか否かを判定するステップ
をさらに備え、
前記格納された受信ステータスを結合するステップは、
前記累計データバイト数が予め定められた前記累計データバイト数に対する閾値を越えたと判定したときに、前記格納された受信ステータスを結合するステップ
を含むデータ受信処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークプロセッサに関し、特にＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を行うネットワークプロセッサに関する。
【背景技術】
【０００２】
ＤＭＡ転送は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）による演算を介さずに、メモリへ直接データ転送を行う技術である。コンピュータシステムの高速化により、ＣＰＵの負荷軽減が求められている。また、同時に、メモリアクセス時間の短縮も求められている。ＤＭＡ転送はこれらの課題を解決する技術として重要度を増している。このような、ＤＭＡ転送に関連する関連技術が、以下のとおり開示されている。
【０００３】
特許文献１は、現在の転送制御情報に基づくＤＭＡ転送が終了後の、後続の転送制御情報の読み込み時間の短縮ができるＤＭＡ転送方式を開示している。
【０００４】
図１は、特許文献１のＤＭＡ転送方式を実現する構成図を示す図である。図１に示すとおり、ＣＰＵ１１と、入出力装置１２と、転送データ記憶手段であるＲＡＭ２８と、転送制御情報記憶手段であるＲＡＭ２９と、ＤＭＡ制御手段であるＤＭＡ制御装置２４とが、データバス１、アドレスバス２、コントロールバス３で接続されている。ＤＭＡ制御装置２４は、制御用記憶手段である制御レジスタ２６、プリフェッチ手段であるフェッチ回路２７、及び制御部であるＤＭＡ制御回路２５と、を備える。ＲＡＭ２９は、４バイトからなる転送制御情報（ディスクリプタ）を、所定の番地（アドレス）から連続して複数記憶している。図１では、番地（００００）Ｈから４バイトずつ連続して記憶されていることが確認できる。ここで、「Ｈ」は、１６進数表示を示す。
【０００５】
ＲＡＭ２９は、上述のとおり、複数の転送制御情報を連続する番地に予め記憶している。ＤＭＡ制御装置２４は、制御レジスタ２６に転送制御情報を個別に読込む。ＤＭＡ制御装置２４は、ＣＰＵ１１、あるいは入出力装置１２にＤＭＡ転送要求が発生したとき、制御レジスタ２６に読み込んだ転送制御情報に基づいてＤＭＡ転送を行う。また、ＤＭＡ制御装置２４は、ＤＭＡ制御装置２４に設けられたフェッチ回路２７に、制御レジスタ２６に記憶されている現在の転送制御情報の後続の転送制御情報を、ＲＡＭ２９から前もって読込む。ＤＭＡ制御装置２４は、現在の転送制御情報に基づくＤＭＡ転送が終了したときに、上記後続の転送制御情報をフェッチ回路２７から制御レジスタ２６へ読み込む。
【０００６】
特許文献１のＤＭＡ転送方式によれば、ＤＭＡ制御装置２４は、制御レジスタ２６に記憶されている現在の転送制御情報の後続の転送制御情報を、前もってフェッチ回路２７へ読込んでいる。そして、ＤＭＡ制御装置２４は、現在の転送制御情報に基づくＤＭＡ転送が終了したときに、フェッチ回路２７に前もって読み込んだ後続の転送制御情報を制御レジスタ２６へ取り込む。これにより、後続の転送制御情報の読み込み時間の短縮を可能にしている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平６−０９６００７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１のＤＭＡ転送方式において、ＤＭＡ制御装置２４は、転送制御情報に基づいてＤＭＡ転送を行う度に、データ転送におけるステータス情報を、ＲＡＭ２９へ書き込む処理を行う。そのため、ステータス情報のデータ量がＤＭＡ転送を行ったデータ量に対して多い場合、ＤＭＡ制御装置２４によるＲＡＭ２９へのステータス情報の書き込み処理が、メモリバスの帯域を占有してしまい、他のＤＭＡ転送の効率を低下させるという課題が存在する。これによって、メモリバスの帯域不足で処理ができなくなったデータは廃棄されてしまう。
【０００９】
特に、近年、通信速度が高速になってきている。例えば、１Ｇｂｐｓで通信を行うような場合にイーサネット（登録商標）フレームのフレーム長が、規格で定められた最小フレーム長である６４ｂｙｔｅで送受信されるとしてみる。この場合、ＤＭＡ制御装置２４は、６４ｂｙｔｅの受信データのＤＭＡ転送処理を行う毎に、ＲＡＭ２９へステータス情報の書き込みのためにメモリアクセスを行うことになる。そのため、ステータス情報の書き込みにためのメモリアクセスにより、メモリバス帯域が占有され、受信されるイーサネット（登録商標）フレームの転送処理が単位時間内で行うことができなくなり、フレームの破棄が発生することになる。
【課題を解決するための手段】
【００１０】
以下に、（発明を実施するための形態）で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、（特許請求の範囲）の記載と（発明を実施するための形態）との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、（特許請求の範囲）に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１１】
本発明のネットワークプロセッサは、受信データを記憶する格納領域（１４１、１４２）を具備し、格納領域の位置を指定するディスクリプタを記憶する外部メモリ（１０１）と接続されたネットワークプロセッサ（１００）であって、ディスクリプタのうちの複数のディスクリプタを記憶するディスクリプタ格納回路（１１６）と、複数のディスクリプタを外部メモリ（１０１）からディスクリプタ格納回路（１１６）へＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送して、受信データを受信すると、ディスクリプタ格納回路（１１６）に記憶された複数のディスクリプタの各々に基づいて受信データを外部メモリの格納領域（１４１、１４２）へＤＭＡ転送して、受信データを外部メモリ（１０１）へＤＭＡ転送する度に当該受信データの状態を示す受信ステータスを生成するＤＭＡ制御回路（１１５）と、受信ステータスを格納する受信ステータス格納回路（１１８）と、受信ステータス格納回路（１１８）に格納された受信ステータスを結合する受信ステータス結合制御回路（１１７）と、を備え、ＤＭＡ制御回路（１１５）は、結合された受信ステータスを外部メモリへＤＭＡ転送する。
【００１２】
本発明の受信コントローラ（１１４）は、上述のネットワークプロセッサにおいて、ＤＭＡ制御回路（１１５）と、ディスクリプタ格納回路（１１６）と、受信ステータス結合制御回路（１１７）と、受信ステータス格納回路（１１８）とを備える。
【００１３】
本発明のデータ受信処理方法は、受信データを記憶する格納領域を具備し、格納領域の位置を指定するディスクリプタを記憶する外部メモリと接続されたネットワークプロセッサにおいて、ディスクリプタのうちの複数のディスクリプタを記憶するステップ（Ｓ１１０）と、複数のディスクリプタを外部メモリからＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送するステップ（Ｓ１１０）と、受信データを受信するステップ（Ｓ１３０）と、複数のディスクリプタの各々を使用して受信データを外部メモリの格納領域へＤＭＡ転送するステップ（Ｓ１５０）と、受信データを外部メモリへＤＭＡ転送する毎に当該受信データの状態を示す受信ステータスを生成するステップ（Ｓ１６０）と、受信ステータスを格納するステップ（Ｓ１６０）と、格納された受信ステータスを結合するステップ（Ｓ２２０）と、結合された受信ステータスを外部メモリへＤＭＡ転送する（Ｓ２３０）ステップとを備える。
【発明の効果】
【００１４】
本発明によれば、受信ステータスのＤＭＡ転送によるメモリバスの帯域占有を抑えて、受信データのＤＭＡ転送のデータ転送効率をより高めることが可能なネットワークプロセッサを提供することができる。そのため、高速なデータ通信において、フレーム長の短いデータの送受信を行う場合であっても、受信データの破棄をなくすことができる。
【図面の簡単な説明】
【００１５】
【図１】特許文献１のＤＭＡ転送方式を実現する構成図を示す図である。
【図２】第１実施形態におけるネットワークプロセッサ１００の構成を示すブロック図である。
【図３】第１実施形態における受信ステータス結合制御回路１１７の構成を示す図である。
【図４】第１実施形態における外部メモリ１０１の構成を示す図である。
【図５Ａ】第１実施形態におけるネットワークプロセッサ１００の動作フローである。
【図５Ｂ】第１実施形態におけるネットワークプロセッサ１００の動作フローである。
【図６】第２実施形態における受信ステータス結合制御回路１１７の構成を示すブロック図である。
【図７】第２実施形態における受信データＢｙｔｅ数制御回路１３５の構成を示すブロック図である。
【図８Ａ】第２実施形態におけるネットワークプロセッサ１００の動作フローである。
【図８Ｂ】第２実施形態におけるネットワークプロセッサ１００の動作フローである。
【図９】第３実施形態におけるネットワークプロセッサ１００の構成を示すブロック図である。
【図１０Ａ】第３実施形態におけるネットワークプロセッサ１００の動作フローである。
【図１０Ｂ】第３実施形態におけるネットワークプロセッサ１００の動作フローである。
【発明を実施するための形態】
【００１６】
添付図面を参照して、本発明の実施形態によるネットワークプロセッサを以下に説明する。
【００１７】
（第１実施形態）
はじめに、本発明の第１実施形態におけるネットワークプロセッサの説明を行う。
【００１８】
［構成の説明］
まず、本実施形態におけるネットワークプロセッサ１００の構成の説明を行う。図２は、本実施形態におけるネットワークプロセッサ１００の構成を示すブロック図である。
【００１９】
本実施形態のネットワークプロセッサ１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０３と、データ転送装置１０４と、データ転送装置１０５とを、備える。ＣＰＵ１０３と、データ転送装置１０４と、データ転送装置１０５とは、それぞれ、メモリバス１０２に接続されている。また、ネットワークプロセッサ１００の外部に備えられる外部メモリ１０１が、メモリバス１０２に接続されている。ＣＰＵ１０３と、データ転送装置１０４と、データ転送装置１０５と、外部メモリ１０１とは、メモリバス１０２を介して電気的に接続されており、データの送受信が可能である。
【００２０】
ＣＰＵ１０３は、ネットワークプロセッサ１００の全体の制御を行う。データ転送装置１０４とデータ転送装置１０５は、図示されない外部装置とのデータ送受信を行う。なお、データ転送装置１０５は、データ転送装置１０４と同様であるので説明を省略する。また、本実施形態において、ネットワークプロセッサ１００は、二つのデータ転送装置１０４、１０５のみを備えている。しかし、ネットワークプロセッサ１００は、同じ構成を持つより多くのデータ転送装置を備えてもよい。
【００２１】
データ転送装置１０４は、送信コントローラ１１０と、送信ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）１１１と、外部インターフェース回路（以下、外部ＩＦ回路）１１２と、受信ＦＩＦＯ１１３と、受信コントローラ１１４と、を備える。なお、前述の通り同様の構成であるため説明は省略するが、データ転送装置１０５は、送信コントローラ１２０と、送信ＦＩＦＯ１２１と、外部ＩＦ回路１２２と、受信ＦＩＦＯ１２３と、受信コントローラ１２４と、を備える。
【００２２】
送信コントローラ１１０は、データ送信の制御を行う。送信コントローラ１１０は、メモリバス１０２と送信ＦＩＦＯ１１１と接続される。送信コントローラ１１０は、メモリバス１０２を介して、ＣＰＵ１０３、外部メモリ１０１とデータ送受信が可能である。送信コントローラ１１０は、外部メモリ１０１から入力する送信データを、送信ＦＩＦＯ１１１へ出力する。送信ＦＩＦＯ１１１は、送信データ用バッファである。送信ＦＩＦＯ１１１は、さらに、外部ＩＦ回路１１２と接続される。送信ＦＩＦＯ１１１は、送信コントローラ１１０から入力する送信データのバッファリングを行って、外部ＩＦ回路１１２へ送信データを出力する。外部ＩＦ回路１１２は、外部装置とのデータ送受信インターフェイスである。外部ＩＦ回路１１２は、送信ＦＩＦＯ１１１から入力する送信データを外部装置へ送信する。外部ＩＦ回路１１２は、さらに、受信ＦＩＦＯ１１３と接続される。外部ＩＦ回路１１２は、外部装置から受信した受信データを受信ＦＩＦＯ１１３へ出力する。受信ＦＩＦＯ１１３は、受信データ用バッファである。受信ＦＩＦＯは、さらに、受信コントローラ１１４と接続される。受信ＦＩＦＯは、外部ＩＦ回路１１２から入力する受信データのバッファリングを行って、受信コントローラ１１４へ受信データを出力する。受信コントローラ１１４は、データ受信の制御を行う。受信コントローラ１１４については、後に詳細な説明を行う。受信コントローラ１１４は、さらに、メモリバス１０２と接続される。受信コントローラ１１４は、メモリバス１０２を介して、ＣＰＵ１０３、外部メモリ１０１とデータの送受信が可能である。受信コントローラ１１４は、受信ＦＩＦＯ１１３から入力する受信データを、メモリバス１０２を介して外部メモリ１０１、あるいはＣＰＵ１０３へ出力する。
【００２３】
以下、受信コントローラ１１４を詳細に説明する。受信コントローラ１１４は、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）制御回路１１５と、ディスクリプタ格納回路１１６と、受信ステータス結合制御回路１１７と、受信ステータス格納回路１１８とを備える。なお、前述の通り同様の構成であるため説明は省略するが、受信コントローラ１２４は、ＤＭＡ制御回路１２５と、ディスクリプタ格納回路１２６と、受信ステータス結合制御回路１２７と、受信ステータス格納回路１２８とを備える。
【００２４】
ＤＭＡ制御回路１１５は、メモリバス１０２と、受信ＦＩＦＯと接続されている。ＤＭＡ制御回路１１５は、受信ＦＩＦＯから入力する受信データを入力する。ＤＭＡ制御回路１１５は、メモリバス１０２を介して外部メモリ１０１との間でＤＭＡ転送を行って、受信データや、ディスクリプタや、受信ステータスの送受信を行う。ＤＭＡ制御回路１１５は、さらに、ディスクリプタ格納回路１１６と接続されている。ディスクリプタ格納回路１１６は、外部メモリ１０１からＤＭＡ制御回路１１５の取得したディスクリプタを格納している。ディスクリプタ格納回路１１６は、さらに、受信ステータス結合制御回路１１７と接続されている。受信ステータス結合制御回路１１７は、受信ステータスに基づく処理や、判定を行う。受信ステータス結合制御回路１１７は、後に詳細な説明を行う。受信ステータス結合制御回路１１７は、さらに、受信ＦＩＦＯ１２３と、受信ステータス格納回路１２８と接続される。受信ＦＩＦＯ１２３は、前述の通りである。受信ステータス結合制御回路１１７は、受信ＦＩＦＯ１２３から受信データを入力して、受信ステータスに対する処理や、判定を行う。受信ステータス格納回路１２８は、ＤＭＡ制御回路１１５の生成した受信ステータスを格納する。受信ステータス格納回路１２８は、さらに、ＤＭＡ制御回路１２５と接続される。ＤＭＡ制御回路１２５は、受信ステータス格納回路１２８へ受信ステータスを格納し、また、受信ステータス格納回路１２８から受信ステータスを取得する。ここで、受信ステータスとは、受信データの情報を示すものであり、例えば、受信フレームエラー情報や、受信フレーム長情報のことである。
【００２５】
図３は、本実施形態における受信ステータス結合制御回路１１７の構成を示す図である。本実施形態の受信ステータス結合制御回路１１７は、ディスクリプタ有効判定回路１３０と、時間管理回路１３１と、ディスクリプタ残数制御回路１３２と、有効ディスクリプタ数判定回路１３３と、受信ステータス結合回路１３４と、を備える。なお、説明を省略するが、受信ステータス結合制御回路１２７も、同様の構成を備える。
【００２６】
ディスクリプタ有効判定回路１３０は、前述のディスクリプタ格納回路１１６と接続されている。ディスクリプタ有効判定回路１３０は、ディスクリプタ格納回路１１６からディスクリプタを入力して、ディスクリプタの有効／無効を判定する。ディスクリプタ有効判定回路１３０は、さらに、時間管理回路１３１と、ディスクリプタ残数制御回路１３２と、有効ディスクリプタ数判定回路１３３と、それぞれ接続されている。時間管理回路１３１は、データを受信してから予め定められた時間を測定して、データ通信の中断や切断を判定する。ディスクリプタ残数制御回路１３２は、ディスクリプタ格納回路１１６に格納されたディスクリプタの全てがＤＭＡ転送に使用されたか否かを判定する残数判定を行う。有効ディスクリプタ数判定回路１３３は、有効なディスクリプタの数をカウントする。時間管理回路１３１と、ディスクリプタ残数制御回路１３２と、有効ディスクリプタ数判定回路１３３とは、さらに受信ステータス結合回路１３４と接続されている。受信ステータス結合回路１３４は、ＤＭＡ制御回路１１５が処理を行った受信データの受信ステータスを結合する。受信ステータス結合回路１３４は、さらに、受信ステータス格納回路１１８と接続される。ディスクリプタ有効判定回路１３０と、時間管理回路１３１とは、受信コントローラ１１４が受信データを受信したことを、受信ＦＩＦＯ１１３から受信データを入力する、あるいは、受信ＦＩＦＯ１１３のデータ受信状態をモニターするといった方法で検知して、各々の動作を行う。
【００２７】
図４は、本実施形態における外部メモリ１０１の構成を示す図である。本実施形態における外部メモリ１０１は、ディスクリプタ格納領域１４０と、データ格納領域１４１と、データ格納領域１４２と、を備える。ディスクリプタ格納領域１４０は、ディスクリプタを連続するアドレスに配置している。各ディスクリプタは、ディスクリプタの有効／無効を示すビットや、受信データを書き込むアドレス空間を示すアドレスビットや、受信データのステータスを示すビットを含む。データ格納領域１４１、１４２は、受信データを格納するための領域である。本実施形態において、データ格納領域１４１は、Ａｄｄｒｅｓｓ＿Ｂで示され、データ格納領域１４２は、Ａｄｄｒｅｓｓ＿Ｃで示される。なお、データ格納領域は、図４に示されたデータ格納領域１４１、１４２に限らず、他に、より多数のデータ格納領域が存在する。これに対応して、ディスクリプタ格納領域１４０は、それぞれのデータ格納領域を指定するように記述されている。
【００２８】
例えば、図４を参照すると、ディスクリプタ格納領域１４０の１ｓｔディスクリプタは、受信データを、Ａｄｄｒｅｓｓ＿Ｃの示すデータ格納領域１４２へ格納するよう記録している。また、ディスクリプタ格納領域１４０の２ｎｄディスクリプタは、受信データを、Ａｄｄｒｅｓｓ＿Ｂの示すデータ格納領域１４１へ格納するように記録している。このような、外部メモリ１０１は、従来の技術により構成されるため、これ以上の詳細な説明を省略する。
【００２９】
以上が、本実施形態におけるネットワークプロセッサ１００の構成の説明である。
【００３０】
［動作方法の説明］
次に、本実施形態におけるネットワークプロセッサ１００の動作方法の説明を行う。図５Ａ及び図５Ｂは、本実施形態におけるネットワークプロセッサ１００の動作フローである。
【００３１】
（ステップＳ１００）
はじめに、ＣＰＵ１０３は、受信コントローラ１１４へ、パラメータの設定を行う。ＣＰＵ１０３は、受信コントローラ１１４へ、予め定められた一定時間を示す閾値時間「Ｔ」を設定する。閾値時間は、受信コントローラ１１４が、受信データの受信間隔に基づいてタイムアウトを判定するための時間である。閾値時間は、ネットワークプロセッサ１００の設計者によって予め定められている。また、ＣＰＵ１０３は、受信コントローラ１１４へ、外部メモリ１０１に記憶されたディスクリプタ格納領域１４０のアドレス「Ｉ」を設定する。受信コントローラ１１４は、アドレス「Ｉ」に基づいて、アドレス「Ｉ」に記憶されているディスクリプタから順に読込む。さらに、ＣＰＵ１０３は、受信コントローラ１１４へ、ディスクリプタ格納可能数「Ｋ」を設定する。ディスクリプタ格納可能数は、ディスクリプタ格納回路１１６へ格納可能なディスクリプタ数である。なお、本実施形態においてディスクリプタ格納回路１１６のディスクリプタ格納可能数を「Ｋ＝Ｊ」とする。また、ＣＰＵ１０３は、受信コントローラ１１４へ、ディスクリプタ格納回路１１６のディスクリプタポインタ「Ｌ＝１」と設定する。ディスクリプタポインタは、ディスクリプタ格納回路１１６に格納されたディスクリプタのうち、処理対象となるディスクリプタを示すポインタである。
【００３２】
（ステップＳ１１０）
ＤＭＡ制御回路１１５は、ＤＭＡ転送を行って、外部メモリ１０１からディスクリプタを読込む。ＤＭＡ制御回路１１５は、外部メモリ１０１のディスクリプタ格納領域１４０のアドレス「Ｉ」から、ディスクリプタ格納可能数である「Ｊ」個のディスクリプタを、ディスクリプタ格納回路１１６のディスクリプタポインタ「Ｌ」へ、ＤＭＡ転送を行って読込む。
【００３３】
（ステップＳ１２０）
ディスクリプタ残数制御回路１３２は、ディスクリプタ受信処理件数「ｋ」の初期値を設定する。ディスクリプタ残数制御回路１３２は、ディスクリプタ格納回路１１６に格納されたディスクリプタにおいて、処理が行われた件数をカウントするためである。ディスクリプタ残数制御回路１３２は、ディスクリプタ受信処理件数「ｋ＝１」と設定する。
【００３４】
（ステップＳ１３０）
データ転送装置１０４が、データを受信する。外部ＩＦ回路１１２は、図示されない外部装置からデータを受信する。受信コントローラ１１４は、外部ＩＦ回路１１２から受信ＦＩＦＯ１１３を介して、受信データを入力する。受信データは、受信コントローラ１１４へ入力されると、ＤＭＡ制御回路１１５と受信ステータス結合制御回路１１７とへ分岐して、入力される。また、時間管理回路１３１は、データを受信したことを検知すると起動して、閾値時間「Ｔ」の計測を開始する。
【００３５】
（ステップＳ１４０）
ディスクリプタ有効判定回路１３０は、ディスクリプタが有効であるか否かを判定する。ディスクリプタ有効判定回路１３０は、ディスクリプタ格納回路１１６から、ディスクリプタポインタ「Ｌ」に対応するディスクリプタを読込む。ディスクリプタ有効判定回路１３０は、ディスクリプタポインタ「Ｌ」に対応するディスクリプタが有効であるか否（無効）かを判定する。ここで、ディスクリプタが有効であるとは、ＣＰＵが予めディスクリプタに対して、受信するためのパラメータを書き込んでおり、受信が可能な状態のことを指す。ディスクリプタポインタ「Ｌ」に対応するディスクリプタが有効である場合、ステップＳ１５０へ進む。一方、ディスクリプタポインタ「Ｌ」に対応するディスクリプタが有効でない場合（無効の場合）、ステップＳ２１０へ進む。
【００３６】
（ステップＳ１５０）
ＤＭＡ制御回路１１５は、受信データのＤＭＡ転送を行う。ディスクリプタポインタ「Ｌ」に対応するディスクリプタが有効である場合、ＤＭＡ制御回路１１５は、ディスクリプタポインタ「Ｌ」に対応するディスクリプタに基づいて、受信データを外部メモリ１０１へＤＭＡ転送する。以下、ＤＭＡ制御回路１１５が、有効なディスクリプタを用いて、受信データを外部メモリ１０１へＤＭＡ転送する処理を、受信処理と呼ぶ場合がある。
【００３７】
（ステップＳ１６０）
ＤＭＡ制御回路１１５は、受信ステータスを格納する。ＤＭＡ制御回路１１５は、ＤＭＡ転送を行うと、当該受信データの受信ステータスを生成する。ＤＭＡ制御回路１１５は、受信ステータスを、受信ステータス格納回路１１８へ格納する。
【００３８】
（ステップＳ１７０）
ディスクリプタ残数制御回路１３２は、ディスクリプタの残数判定を行う。ここで、残数判定とは、ディスクリプタ格納回路１１６に格納された「Ｊ」個のディスクリプタを、ＤＭＡ転送により全て使用したか否かの判定である。ディスクリプタ残数制御回路１３２は、ディスクリプタ格納可能数「Ｋ（＝Ｊ）」と、ディスクリプタ受信処理件数「ｋ」とが一致するか否かで判定を行う。なお、残数判定は、ＤＭＡ制御回路１１５がディスクリプタ格納回路１１６に格納されたディスクリプタを使用してＤＭＡ転送を行うごとに行われる。ディスクリプタ格納可能数「Ｊ」と、ディスクリプタ受信処理件数「ｋ」とが一致する場合、すなわち「Ｊ＝ｋ」である場合、ステップＳ２３０へ進む。一方、ディスクリプタ格納可能数「Ｋ（＝Ｊ）」と、ディスクリプタ受信処理件数「ｋ」とが一致しない場合、すなわち「Ｊ≠ｋ」である場合、ステップＳ１８０へ進む。
【００３９】
（ステップＳ１８０）
時間管理回路１３１は、閾値時間「Ｔ」を経過しているか否かを判定する。時間管理回路１３１は、ディスクリプタ格納可能数「Ｋ（＝Ｊ）」と、ディスクリプタ受信処理件数「ｋ」とが一致しない場合、すなわち「Ｊ≠ｋ」である場合、データを受信してから計測している時間が閾値時間「Ｔ」を経過しているか否かを判定する。時間管理回路１３１は、前回のデータ受信から閾値時間「Ｔ」を経過しているか否かを判定することによって、現在の通信が、中断、或いは終了したかを判定している。前回のデータ受信から、閾値時間「Ｔ」を経過していない場合、ステップＳ１９０へ進む。一方、前回のデータ受信から、閾値時間「Ｔ」を経過した場合、ステップＳ２３０へ進む。
【００４０】
（ステップＳ１９０）
時間管理回路１３１は、データを受信したか否かを判定する。時間管理回路１３１は、前回のデータ受信から、閾値時間「Ｔ」を経過していない場合、データ転送装置１０４がデータを受信したか否かを判定する。時間管理回路１３１は、外部ＩＦ回路１１２から受信ＦＩＦＯを介して受信コントローラ１１４へ入力される受信データの有無により、データを受信したか否かを判定する。データを受信しない場合、ステップＳ１８０へ戻る。この場合は、ステップＳ１８０と本ステップＳ１９０により、閾値時間「Ｔ」を経過する前にデータを受信するか否かを繰り返し判定することになる。一方、データを受信した場合、ステップＳ２００へ進む。
【００４１】
（ステップＳ２００）
受信コントローラ１１４は、パラメータの更新を行う。受信コントローラは、データを受信した場合、当該データの受信処理を行うために、パラメータの更新を行う。受信コントローラ１１４は、ディスクリプタ格納回路１１６のディスクリプタポインタ「Ｌ＝Ｌ＋１」と更新する。また、ディスクリプタ残数制御回路１３２は、ディスクリプタ受信処理件数「ｋ＝ｋ＋１」と更新する。パラメータの更新が完了すると、受信データの処理を行うためにステップＳ１４０へ戻る。
【００４２】
（ステップＳ２１０）
有効ディスクリプタ数判定回路１３３は、１つ以上のディスクリプタに基づいて、受信処理を行ったか否かを判定する。有効ディスクリプタ数判定回路１３３は、ディスクリプタポインタ「Ｌ」に対応するディスクリプタが有効でない場合（無効の場合）、これまでに、１つ以上のディスクリプタに基づいて受信処理が行われたか否かを判定する。例えば、有効ディスクリプタ数判定回路１３３は、ステップＳ１５０において、ＤＭＡ制御回路１１５による受信データのＤＭＡ転送時に、受信処理数をカウントしてもよい。有効ディスクリプタ数判定回路１３３は、当該カウントに基づいて、１つ以上のディスクリプタに基づいて、受信処理を行ったか否かを判定することが可能である。なお、有効ディスクリプタ数判定回路１３３は、受信処理を、１つ以上のディスクリプタに基づいて行ったか否かを判定できれば良いため、上記のように受信処理数をカウントする方法には限定しない。すなわち、有効ディスクリプタ数判定回路１３３は、１つ以上のディスクリプタに基づいて、受信処理を行ったか否かを記憶しているのみでもよい。１つ以上のディスクリプタに基づいて受信処理を行っている場合、ステップＳ２２０へ進む。一方、１つ以上のディスクリプタに基づいて受信処理を行われていない場合、すなわち、有効なディスクリプタを用いての受信処理が全く行われていない場合、本動作フローは終了となる。
【００４３】
（ステップＳ２２０）
ディスクリプタ残数制御回路１３２は、ディスクリプタ受信処理件数を更新する。ディスクリプタ残数制御回路１３２は、１つ以上のディスクリプタに基づいて受信処理を行っている場合、ディスクリプタ受信処理件数「ｋ＝ｋ−１」と更新する。これは、ステップＳ２００において、ディスクリプタ受信処理件数「ｋ＝ｋ＋１」と更新しているが、このカウントアップ後に、ディスクリプタを用いた受信処理を行っていないため、実際の処理件数とディスクリプタ受信処理件数「ｋ」とを一致させるためである。
【００４４】
（ステップＳ２３０）
受信ステータス結合回路１３４は、受信ステータスを結合する。受信ステータス結合回路１３４は、受信処理を行った件数、「ｋ」個の受信ステータスを、処理を行った順に結合する。受信ステータス結合回路１３４は、結合した受信ステータスを受信ステータス格納回路１１８へ出力する。受信ステータス格納回路１１８は、結合された受信ステータスを記憶する。
【００４５】
（ステップＳ２４０）
ＤＭＡ制御回路１１５は、受信ステータスを外部メモリ１０１へＤＭＡ転送する。ＤＭＡ制御回路１１５は、受信ステータス格納回路１１８から結合された受信ステータスを取得して、外部メモリ１０１のディスクリプタ格納領域１４０のアドレス「Ｉ」へＤＭＡ転送を行う。外部メモリ１０１は、ディスクリプタ格納領域１４０のアドレス「Ｉ」に、結合された受信ステータスを記憶する。
【００４６】
（ステップＳ２５０）
受信ステータス結合回路１３４は、有効ディスクリプタ数判定回路１３３の判定に基づいて、受信ステータスの結合処理を行ったか否か（ステップＳ２１０の判定に基づいてステップＳ２３０へ移行したか否か）を判定する。有効ディスクリプタ数判定回路１３３の判定（ステップＳ２１０にて実行）に基づいて、受信ステータスの結合処理を行った場合、ステップＳ２６０へ進む。一方、有効ディスクリプタ数判定回路１３３の判定（ステップＳ２１０にて実行）に基づいて、受信ステータスの結合処理を行っていない場合（ステップＳ１７０、Ｓ１８０からステップＳ２３０へ移行した場合）、ステップＳ２７０へ進む。
【００４７】
（ステップＳ２６０）
受信コントローラ１１４は、パラメータの更新を行う。受信コントローラ１１４は、有効ディスクリプタ数判定回路１３３の判定（ステップＳ２１０にて実行）に基づいて、受信ステータスの結合処理行った場合、パラメータの更新を行う。まず、受信コントローラ１１４は、外部メモリ１０１からディスクリプタを取り込むアドレス「Ｉ」を更新する。受信コントローラ１１４は、アドレス「Ｉ」を「Ｉ＝ｋ×Ｍ」に更新する。ここで、「ｋ」は、前述の通り、ディスクリプタ受信処理件数であり、「Ｍ」は、１個あたりのディスクリプタサイズ（Ｂｙｔｅ）である。また、受信コントローラ１１４は、ディスクリプタ格納回路１１６のディスクリプタポインタ「Ｌ」を、「Ｌ＝１」へ更新する。現在のディスクリプタポインタ「Ｌ」に相当するディスクリプタが、無効なディスクリプタであったためである。さらに、受信コントローラ１１４は、ディスクリプタ残数制御回路１３２のディスクリプタ受信処理件数「ｋ」を「ｋ＝１」と初期化する。この後、ステップＳ１１０へ戻る。
【００４８】
（ステップＳ２７０）
受信コントローラ１１４は、パラメータの更新を行う。受信コントローラ１１４は、有効ディスクリプタ数判定回路１３３の判定（ステップＳ２１０にて実行）に基づいて、受信ステータスの結合処理を行っていない場合（ステップＳ１７０、Ｓ１８０からステップＳ２３０へ移行した場合）、パラメータの更新を行う。受信コントローラ１１４は、外部メモリ１０１からディスクリプタを取り込むアドレス「Ｉ」を更新する。受信コントローラ１１４は、アドレス「Ｉ」を「Ｉ＝ｋ×Ｍ」に更新する。ここで、「ｋ」は、前述の通り、ディスクリプタ受信処理件数であり、「Ｍ」は、１個あたりのディスクリプタサイズ（Ｂｙｔｅ）である。また、受信コントローラ１１４は、ディスクリプタ格納回路１１６のディスクリプタポインタ「Ｌ」を、「Ｌ＝Ｌ＋１」へ更新する。
【００４９】
以上が、本実施形態におけるネットワークプロセッサの動作方法の説明である。
【００５０】
ここまで、説明を行ったとおり、本実施形態のネットワークプロセッサによれば、受信コントローラ１１４のＤＭＡ制御回路１１５は、予め外部メモリ１０１から複数のディスクリプタをＤＭＡ転送にて、ディスクリプタ格納回路１１６へ読込む。ＤＭＡ制御回路１１５は、ディスクリプタ格納回路１１６に格納されたディスクリプタを用いて、受信データを外部メモリ１０１へＤＭＡ転送する。ＤＭＡ制御回路１１５は、受信データを外部メモリへＤＭＡ転送するごとに、受信ステータス格納回路１１８へ、受信ステータスを格納する。その後、受信ステータス結合制御回路１１７は、受信ステータス格納回路１１８に格納された受信ステータスを結合する。ＤＭＡ制御回路１１５は、結合された受信ステータスを、外部メモリ１０１のディスクリプタ格納領域１４０へＤＭＡ転送を行う。このように、受信コントローラ１１４が複数の受信ステータスを結合した受信ステータスを一括で外部メモリ１０１へ書き込むため、メモリバス１０２の帯域占有を防止することができる。そのため、ＤＭＡ制御回路１１５による受信データのＤＭＡ転送の転送効率を低下させること無く、高速データ通信においてフレーム長の短い受信データを受信する場合であっても、メモリバスの帯域不足による受信データの破棄を防ぐことが可能となる。
【００５１】
以上が、本実施形態におけるネットワークプロセッサ１００の説明である。
【００５２】
（第２実施形態）
次に、本発明の第２実施形態におけるネットワークプロセッサの説明を行う。
【００５３】
［構成の説明］
まず、本実施形態におけるネットワークプロセッサ１００の構成の説明を行う。本実施形態におけるネットワークプロセッサ１００の構成は、第１実施形態とほぼ同様の構成であるので、同様の部分については説明を省略し、第１実施形態との違いを中心に説明を行う。本実施形態におけるネットワークプロセッサ１００の構成は、データ転送装置１０４、１０５における受信コントローラ１１４、１２４の受信ステータス結合制御回路１１７、１２７の構成が異なる。その他の構成については、第１実施形態と同様であるので、説明を省略する。図６は、本実施形態における受信ステータス結合制御回路１１７の構成を示すブロック図である。なお、第１実施形態と同様に、受信ステータス結合制御回路１１７と受信ステータス結合制御回路１２７とは、同様の構成であるため、受信ステータス結合制御回路１１７のみの説明を行い、受信ステータス結合制御回路１２７の説明を省略する。
【００５４】
本実施形態の受信ステータス結合制御回路１１７は、第１実施形態と同様に、ディスクリプタ有効判定回路１３０と、時間管理回路１３１と、ディスクリプタ残数制御回路１３２と、有効ディスクリプタ数判定回路１３３と、受信ステータス結合回路１３４と、を備え、さらに、受信データＢｙｔｅ数制御回路１３５を備える。ディスクリプタ有効判定回路１３０と、時間管理回路１３１と、ディスクリプタ残数制御回路１３２と、有効ディスクリプタ数判定回路１３３と、受信ステータス結合回路１３４とは、第１実施形態と同様であるので、説明を省略する。
【００５５】
受信データＢｙｔｅ数制御回路１３５は、受信データのデータＢｙｔｅ数に基づく閾値判定を行う。図７は、本実施形態における受信データＢｙｔｅ数制御回路１３５の構成を示すブロック図である。受信データＢｙｔｅ数制御回路１３５は、受信データＢｙｔｅ数制御閾値格納回路１５０と、受信データＢｙｔｅ数カウント制御回路１５１と、大小判定回路１５２と、受信ステータス結合数制御情報回路１５３とを備える。
【００５６】
受信データＢｙｔｅ数制御閾値格納回路１５０は、受信データの受信Ｂｙｔｅ数に対する判定を行うためのデータ量閾値「Ｂ」を格納している。データ量閾値「Ｂ」は、予めＣＰＵ１０３により、受信データＢｙｔｅ数制御閾値格納回路１５０へ格納されている。受信データＢｙｔｅ数カウント制御回路１５１は、受信コントローラ１１４の受信した受信データの受信Ｂｙｔｅ数をカウントする。受信データＢｙｔｅ数カウント制御回路１５１は、大小判定回路１５２は、受信データＢｙｔｅ数カウント制御回路１５１のカウントする受信データの受信Ｂｙｔｅ数が、受信データＢｙｔｅ数制御閾値格納回路１５０の格納するデータ量閾値「Ｂ」を超えているか否かを判定する。なお、受信データＢｙｔｅ数カウント制御回路１５１は、受信ＦＩＦＯ１１３から受信データを入力する、あるいは、受信ＦＩＦＯ１１３のデータ受信状態をモニターするといった方法で、受信データの受信Ｂｙｔｅ数をカウントする。
【００５７】
受信ステータス結合数制御情報回路１５３は、大小判定回路１５２において、受信データＢｙｔｅ数カウント制御回路１５１のカウントする受信データの受信Ｂｙｔｅ数が、受信データＢｙｔｅ数制御閾値格納回路１５０の格納するデータ量閾値「Ｂ」を越えたと判定されたときに、受信ステータスを結合する数を判定する。受信ステータス結合数制御情報回路１５３は、受信データの受信Ｂｙｔｅ数がデータ量閾値「Ｂ」を越えた事を、受信ステータスを結合する数と共に、受信ステータス結合回路１３４へ通知する。本実施形態において、受信ステータス結合回路１３４は、受信ステータス結合数制御情報回路１５３から通知を受けると、受信ステータスの結合処理を行う。
【００５８】
例えば、データ量閾値「Ｂ」が４５０Ｂｙｔｅと設定されている場合に、受信コントローラ１１４が１００Ｂｙｔｅの受信フレームを連続で受信する場合を考える。５個目の受信フレームを受信コントローラ１１４が受信すると、受信データの受信Ｂｙｔｅ数は５００Ｂｙｔｅとなり、データ量閾値「Ｂ」の４５０Ｂｙｔｅを越える。そのため、大小判定回路１５２は、受信データの受信Ｂｙｔｅ数がデータ量閾値「Ｂ」を越えたと判定する。それに伴い、受信ステータス結合数制御情報回路１５３は、結合する受信ステータスの数を「５個」と決定する。受信ステータス結合数制御情報回路１５３は、受信ステータスを結合する数「５個」と共に、受信データの受信Ｂｙｔｅ数がデータ量閾値「Ｂ」を越えた旨の通知を、受信ステータス結合回路１３４へ通知する。
【００５９】
なお、本説明では、受信ステータス結合数制御情報回路１５３は、結合する受信ステータスの数を「５個」と判定している。しかし、受信ステータス結合数制御情報回路１５３は、例えば、受信データの受信Ｂｙｔｅ数がデータ量閾値「Ｂ」を越えたと判定した時点で、既に受信処理の完了している受信ステータスを結合する判定として良い。この場合、受信ステータス結合数制御情報回路１５３は、結合する受信ステータス数を「４個」と判定することになる。このように構成することで、受信ステータス結合回路１３４は、受信データの受信Ｂｙｔｅ数に基づいて、受信ステータスの結合処理を行うことができる。
【００６０】
以上が、本実施形態におけるネットワークプロセッサ１００の構成の説明である。上述した以外の構成については、第１実施形態と同様であるので説明を省略する。
【００６１】
［動作方法の説明］
次に、本実施形態におけるネットワークプロセッサ１００の動作方法の説明を行う。図８Ａ及び図８Ｂは、本実施形態におけるネットワークプロセッサ１００の動作フローである。本実施形態におけるネットワークプロセッサ１００の動作方法は、第１実施形態とほぼ同様の動作方法であるので、同様の部分については説明を省略し、第１実施形態との違いを中心に説明を行う。本実施形態におけるネットワークプロセッサ１００の動作方法は、受信データＢｙｔｅ数制御回路１３５による、受信データの受信Ｂｙｔｅ数のデータ量閾値「Ｂ」に対する閾値判定（ステップＳ１７５）が加わる部分が異なる。
【００６２】
（ステップＳ１００）
はじめに、ＣＰＵ１０３は、受信コントローラ１１４へ、パラメータの設定を行う。ＣＰＵ１０３は、第１実施形態と同様に、受信コントローラ１１４へ、予め定められた一定時間を示す閾値時間「Ｔ」、ディスクリプタ領域１４０のアドレス「Ｉ」、ディスクリプタ格納可能数「Ｋ」、ディスクリプタ格納回路１１６のディスクリプタポインタ「Ｌ＝１」を設定する。さらに、本実施形態のＣＰＵ１０３は、受信データＢｙｔｅ数制御閾値格納回路１５０のデータ量閾値「Ｂ」を設定する。
【００６３】
（ステップＳ１１０〜ステップＳ１７０）
ステップＳ１１０〜ステップＳ１７０は、第１実施形態と同様であるので説明を省略する。すなわち、ＤＭＡ制御回路１１５は、ＤＭＡ転送を行って、外部メモリ１０１からディスクリプタを読込む（ステップＳ１１０）。ディスクリプタ残数制御回路１３２は、ディスクリプタ受信処理件数「ｋ」の初期値を設定する（ステップＳ１２０）。データ転送装置１０４が、データを受信する（ステップＳ１３０）。ディスクリプタ有効判定回路１３０は、ディスクリプタが有効であるか否かを判定する（ステップＳ１４０）。ＤＭＡ制御回路１１５は、受信データのＤＭＡ転送を行う（ステップＳ１５０）。ＤＭＡ制御回路１１５は、受信ステータスを格納する（ステップＳ１６０）。ディスクリプタ残数制御回路１３２は、ディスクリプタの残数判定を行う（ステップＳ１７０）。なお、本実施形態のステップＳ１７０において、ディスクリプタ格納可能数「Ｋ（＝Ｊ）」と、ディスクリプタ受信処理件数「ｋ」とが一致しない場合、すなわち「Ｊ≠ｋ」である場合は、ステップＳ１７５へ進む。
【００６４】
（ステップＳ１７５）
受信Ｂｙｔｅ数制御回路１３５は、データ量閾値「Ｂ」に対する閾値判定を行う。受信Ｂｙｔｅ数制御回路１３５は、ディスクリプタ格納可能数「Ｋ（＝Ｊ）」と、ディスクリプタ受信処理件数「ｋ」とが一致しない場合、すなわち「Ｊ≠ｋ」である場合、受信データの受信Ｂｙｔｅ数のデータ量閾値「Ｂ」に対する閾値判定を行う。データ量閾値「Ｂ」に対する閾値判定は、大小判定回路１５２によって行われる。大小判定回路１５３は、受信データＢｙｔｅ数カウント制御回路１５１のカウントする受信データのＢｙｔｅ数が、受信データＢｙｔｅ数制御閾値格納回路１５０の格納するデータ量閾値「Ｂ」を越えているか否かを判定する。閾値判定により、受信データのＢｙｔｅ数がデータ量閾値「Ｂ」を越えている場合、ステップＳ２３０へ進む。一方、閾値判定により、受信データのＢｙｔｅ数がデータ量閾値「Ｂ」を越えていない場合、ステップＳ１８０へ進む。
【００６５】
（ステップＳ１８０）
時間管理回路１３１は、閾値時間「Ｔ」を経過しているか否かを判定する。時間管理回路１３１は、閾値判定により、受信データのＢｙｔｅ数がデータ量閾値「Ｂ」を越えていない場合、データを受信してから計測している閾値時間「Ｔ」を経過しているか否かを判定する。本ステップの他の動作は、第１実施形態と同様であるので説明を省略する。
【００６６】
（ステップＳ１９０〜ステップＳ２７０）
ステップＳ１９０〜ステップＳ２７０は、第１実施形態と同様であるので、説明を省略する。すなわち、時間管理回路１３１は、データを受信したか否かを判定する（ステップＳ１９０）。受信コントローラ１１４は、パラメータの更新を行う（ステップＳ２００）。有効ディスクリプタ数判定回路１３３は、１つ以上のディスクリプタに基づいて、受信処理を行ったか否かを判定する（ステップＳ２１０）。ディスクリプタ残数制御回路１３２は、ディスクリプタ受信処理件数を更新する（ステップＳ２２０）。受信ステータス結合回路１３４は、受信ステータスを結合する（ステップＳ２３０）。ＤＭＡ制御回路１１５は、受信ステータスを外部メモリ１０１へＤＭＡ転送する（ステップＳ２４０）。受信ステータス結合回路１３４は、有効ディスクリプタ数判定回路１３３の判定に基づいて、受信ステータスの結合処理を行ったか否かを判定する（ステップＳ２５０）。受信コントローラ１１４は、パラメータの更新を行う（ステップＳ２６０）。受信コントローラ１１４は、パラメータの更新を行う（ステップＳ２７０）。なお、本実施形態のステップＳ２５０において、ステップＳ１７５からステップＳ２３０へ移行してきた場合、ステップＳ２７０へ移行する。
【００６７】
以上が、本実施形態におけるネットワークプロセッサ１００の動作方法の説明である。
【００６８】
ここまで、説明を行ったとおり、本実施形態のネットワークプロセッサによれば、受信ステータス結合制御回路１１７は、第１実施形態の構成に加えて、受信Ｂｙｔｅ数制御回路１３５をさらに備える。受信Ｂｙｔｅ数制御回路１３５は、受信データの受信Ｂｙｔｅ数のデータ量閾値「Ｂ」に対する閾値判定を行う。このように構成することによって、フレーム長が短いデータを受信しているときは、多くの数の受信ステータスを結合してＤＭＡ転送を行うことで、メモリバス１０２の帯域占有を防ぐことができる。一方で、フレーム長が長いデータを受信しているときは、ＤＭＡ転送によってメモリバス１０２の帯域を占有し難いため、少ない数の受信ステータスを結合してＤＭＡ転送を行い、受信ステータスの滞留時間を一定に抑えることができる。
【００６９】
以上が、本実施形態におけるネットワークプロセッサ１００の説明である。
【００７０】
（第３実施形態）
次に、本発明の第３実施形態におけるネットワークプロセッサの説明を行う。
【００７１】
［構成の説明］
まず、本実施形態におけるネットワークプロセッサ１００の構成の説明を行う。本実施形態におけるネットワークプロセッサ１００の構成は、第１実施形態、及び第２実施形態とほぼ同様の構成であるので、同様の部分については説明を省略し、第１、第２実施形態との違いを中心に説明を行う。本実施形態におけるネットワークプロセッサ１００の構成は、受信コントローラ１１４、１２４のディスクリプタ格納回路１１６、１２６と受信ステータス格納回路１１８、１２８とが、Ｒｅａｄ／Ｗｒｉｔｅ（以下、Ｒ／Ｗ）ディスクリプタ格納回路２００、２０１へ置き換わった部分が、第１、第２実施形態と異なっている。その他の構成については、第１、第２実施形態と同様であるので、説明を省略する。図９は、本実施形態におけるネットワークプロセッサ１００の構成を示すブロック図である。なお、第１、第２実施形態と同様に、データ転送装置１０４とデータ転送装置１０５とは、同様の構成であるため、データ転送装置１０４のみの説明を行い、データ転送装置１０５の説明を省略する。
【００７２】
本実施形態の受信コントローラ１１４は、第１実施形態と同様にＤＭＡ制御回路１１５と、受信ステータス結合制御回路１１７とを備え、さらに、Ｒ／Ｗディスクリプタ格納回路２００を備える。すなわち、受信コントローラ１１４のディスクリプタ格納回路１１６と受信ステータス格納回路１１８とが、Ｒ／Ｗディスクリプタ格納回路２００へ置き換わっている。ＲＷディスクリプタ格納回路２００は、ディスクリプタ格納回路１１６と受信ステータス格納回路１１８との機能を備えている。このように、ディスクリプタ格納回路１１６と受信ステータス格納回路１１８とを、Ｒ／Ｗディスクリプタ格納回路へ置き換えることで、受信コントローラ１１４を簡易に構成することができる。
【００７３】
以上が、本実施形態におけるネットワークプロセッサ１００の構成の説明である。上述した以外の構成については、第１、第２実施形態と同様であるので説明を省略する。
【００７４】
［動作方法の説明］
次に、本実施形態におけるネットワークプロセッサ１００の動作方法の説明を行う。図１０Ａ及び図１０Ｂは、本実施形態におけるネットワークプロセッサ１００の動作フローである。本実施形態におけるネットワークプロセッサ１００の動作方法は、第１、第２実施形態とほぼ同様の動作方法であるので、同様の部分については説明を省略し、第１、第２実施形態との違いを中心に説明を行う。なお、以下の説明では、第１実施形態の動作フロー（図５Ａ及び図５Ｂ）との違いを説明するが、同様の違いを第２実施形態の動作フロー（図８Ａ及び図８Ｂ）にも適用できる。
【００７５】
（ステップＳ１００）
はじめに、ＣＰＵ１０３は、受信コントローラ１１４へ、パラメータの設定を行う。ＣＰＵ１０３は、受信コントローラ１１４へ、ディスクリプタ格納可能数「Ｋ」を設定する。本実施形態においてディスクリプタ格納可能数は、Ｒ／Ｗディスクリプタ格納回路２００へ格納可能なディスクリプタ数である。なお、本実施形態においてＲ／Ｗディスクリプタ格納回路２００のディスクリプタ格納可能数を「Ｋ＝Ｊ」とする。また、ＣＰＵ１０３は、受信コントローラ１１４へ、Ｒ／Ｗディスクリプタ格納回路２００のディスクリプタポインタ「Ｌ＝１」と設定する。ディスクリプタポインタは、Ｒ／Ｗディスクリプタ格納回路２００に格納されたディスクリプタのうち、処理対象となるディスクリプタを示すポインタである。本ステップのこの他の動作は、第１実施形態と同様であるので説明を省略する。
【００７６】
（ステップＳ１１０）
ＤＭＡ制御回路１１５は、ＤＭＡ転送を行って、外部メモリ１０１からディスクリプタを読込む。ＤＭＡ制御回路１１５は、外部メモリ１０１のディスクリプタ領域１４０のアドレス「Ｉ」から、ディスクリプタ格納可能数である「Ｊ」個のディスクリプタを、Ｒ／Ｗディスクリプタ格納回路２００のディスクリプタポインタ「Ｌ」へ、ＤＭＡ転送を行って読込む。
【００７７】
（ステップＳ１２０〜ステップＳ１３０）
ステップＳ１２０〜ステップＳ１３０は、第１実施形態と同様であるので説明を省略する。すなわち、ディスクリプタ残数制御回路１３２は、ディスクリプタ受信処理件数「ｋ」の初期値を設定する。データ転送装置１０４が、データを受信する（ステップＳ１３０）。
【００７８】
（ステップＳ１４０）
ディスクリプタ有効判定回路１３０は、ディスクリプタが有効であるか否かを判定する。本実施形態において、ディスクリプタ有効判定回路１３０は、Ｒ／Ｗディスクリプタ格納回路２００から、ディスクリプタポインタ「Ｌ」に対応するディスクリプタを読込む。本ステップのこの他の動作は、第１実施形態と同様であるので説明を省略する。
【００７９】
（ステップＳ１５０）
ステップＳ１５０は、第１実施形態と同様であるので説明を省略する。すなわち、ＤＭＡ制御回路１１５は、受信データのＤＭＡ転送を行う。
【００８０】
（ステップＳ１６０）
ＤＭＡ制御回路１１５は、ステータス情報を書き込む。ＤＭＡ制御回路１１５は、ＤＭＡ転送を行った受信データのステータス情報を生成する。ＤＭＡ制御回路１１５は、ステータス情報を、Ｒ／Ｗディスクリプタ格納回路２００へ書き込む。
【００８１】
（ステップＳ１７０）
ディスクリプタ残数制御回路１３２は、ディスクリプタの残数判定を行う。本実施形態の残数判定では、Ｒ／Ｗディスクリプタ格納回路２００に格納された「Ｊ」個のディスクリプタを、ＤＭＡ転送により全て使用したか否かの判定である。本ステップのこの他の動作は、第１実施形態と同様であるので説明を省略する。
【００８２】
（ステップＳ１８０〜ステップＳ１９０）
ステップＳ１８０〜ステップＳ１９０は、第１実施形態と同様であるので説明を省略する。すなわち、時間管理回路１３１は、閾値時間「Ｔ」を経過しているか否かを判定する（ステップＳ１８０）。時間管理回路１３１は、データを受信したか否かを判定する（ステップＳ１９０）。
【００８３】
（ステップＳ２００）
受信コントローラ１１４は、パラメータの更新を行う。受信コントローラは、データを受信した場合、当該データの受信処理を行うために、パラメータの更新を行う。受信コントローラ１１４は、Ｒ／Ｗディスクリプタ格納回路２００のディスクリプタポインタ「Ｌ」を「Ｌ＝Ｌ＋１」と更新する。本ステップのこの他の動作は、第１実施形態と同様であるので説明を省略する。
【００８４】
（ステップＳ２１０〜ステップＳ２２０）
ステップＳ２１０〜ステップＳ２２０は、第１実施形態と同様であるので説明を省略する。すなわち、有効ディスクリプタ数判定回路１３３は、１つ以上のディスクリプタに基づいて、受信処理を行ったか否かを判定する（ステップＳ２１０）。ディスクリプタ残数制御回路１３２は、ディスクリプタ受信処理件数を更新する（ステップＳ２２０）。
【００８５】
（ステップＳ２３０）
ＤＭＡ制御回路１１５は、Ｒ／Ｗディスクリプタ格納回路２００から外部メモリ１０１へ、受信ステータスをＤＭＡ転送する。ＤＭＡ制御回路１１５は、Ｒ／Ｗディスクリプタ格納回路２００に格納されたステータス情報を取得して、外部メモリ１０１のディスクリプタ領域１４０のアドレス「Ｉ」へＤＭＡ転送を行う。外部メモリ１０１は、ディスクリプタ領域１４０のアドレス「Ｉ」に、結合された受信ステータスを記憶する。
【００８６】
（ステップＳ２４０）
本実施形態におけるステップＳ２３０は、第１実施形態におけるステップＳ２３０とステップＳ２４０を代替している。そのため、本実施形態において、ステップＳ２４０は、削除されている。
【００８７】
（ステップＳ２５０）
ステップＳ２５０は、第１実施形態と同様であるので、説明を省略する。すなわち、受信ステータス結合回路１３４は、有効ディスクリプタ数判定回路１３３の判定に基づいて、受信ステータスの結合処理を行ったか否かを判定する（ステップＳ２５０）。
【００８８】
（ステップＳ２６０）
受信コントローラ１１４は、パラメータの更新を行う。受信コントローラ１１４は、Ｒ／Ｗディスクリプタ格納回路２００のディスクリプタポインタ「Ｌ」を、「Ｌ＝１」へ更新する。本ステップのこの他の動作は、第１実施形態と同様であるので説明を省略する。
【００８９】
（ステップＳ２７０）
受信コントローラ１１４は、パラメータの更新を行う。受信コントローラ１１４は、Ｒ／Ｗディスクリプタ格納回路２００のディスクリプタポインタ「Ｌ」を、「Ｌ＝Ｌ＋１」へ更新する。本ステップのこの他の動作は、第１実施形態と同様であるので説明を省略する。
【００９０】
以上が、本実施形態におけるネットワークプロセッサ１００の動作方法の説明である。なお、本説明では第１実施形態の動作フロー（図５Ａ及び図５Ｂ）との違いを説明したが、前述のとおり、同様の違いを第２実施形態の動作フロー（図８Ａ及び図８Ｂ）にも適用できる。
【００９１】
ここまで、説明を行ったとおり、本実施形態のネットワークプロセッサによれば、受信コントローラ１１４は、第１、第２実施形態で説明を行ったディスクリプタ格納回路１１６と、受信ステータス格納回路１１８とに換えてＲ／Ｗディスクリプタ格納回路２００を備える。Ｒ／Ｗディスクリプタ格納回路２００は、ディスクリプタと、受信ステータスを格納している。このように構成することで、ディスクリプタ格納回路１１６と、受信ステータス格納回路１１８とに換えてＲ／Ｗディスクリプタ格納回路２００のみを備えればよいため、回路構成を簡易にすることができる。
【００９２】
以上が、本実施形態におけるネットワークプロセッサ１００の説明である。
【００９３】
以上、実施形態を参照して説明を行ってきたが、本発明の第１実施形態によれば、受信コントローラ１１４は、受信データのステータス情報を複数結合して外部メモリ１０１へＤＭＡ転送を行っている。そのため、受信コントローラ１１４のＤＭＡ転送によるメモリバス１０２の占有を抑えることが可能となる。そのため、受信データのＤＭＡ転送における転送効率の低下を防ぐことができ、また、高速データ通信においてフレーム長の短い受信データを受信する場合にも、メモリバス１０２の帯域不足を原因とする受信データの破棄を防ぐことができる。
【００９４】
また、本発明の第２実施形態によれば、受信コントローラ１１４は、受信ステータス結合制御回路１１７に、受信データＢｙｔｅ数制御回路１３５を、さらに備える。受信ステータス結合制御回路１１７は、受信データの受信Ｂｙｔｅ数により、受信ステータスの結合動作を制御する。これによって、高速データ通信において、メモリバス１０２の帯域を占有し易いフレーム長の短い受信データを受信するときは、受信ステータス数を多く結合することができ、一方で、フレーム長の長い受信データを受信するときは、受信ステータス数を少なく結合することで、受信ステータスの滞留時間を一定の時間内に抑えることができる。
【００９５】
さらに、本発明の第３実施形態によれば、受信コントローラ１１４は、ディスクリプタ格納回路１１６と受信ステータス格納回路１１８とに換えて、Ｒ／Ｗディスクリプタ格納回路２００を備える。これによって、回路構成を簡易にすることが可能となる。
【００９６】
ここで、本発明の効果を、数式により説明する。外部メモリ１０１に対するコマンド発行時間を「Ａ」、外部メモリ１０１からＤＭＡ転送によりディスクリプタを読込む時間を「Ｂ」、外部メモリ１０１へＤＭＡ転送により受信データを転送する時間を「Ｃ」、外部メモリ１０１に受信ステータスを書き込む時間を「Ｄ」として、８個の受信データの受信処理を行って、８個の受信ステータスを外部メモリ１０１へ記録する場合に、メモリバス１０２がアクセスされる占有時間「ｔ」を考えてみる。
【００９７】
例えば、従来技術である（特許文献１）では、
ｔ＝（Ａ＋Ｂ）＋（（Ａ＋Ｃ）×８）＋（（Ａ＋Ｄ）×８）＝１７Ａ＋Ｂ＋８Ｃ＋８Ｄ
である。
【００９８】
一方、本発明によれば、
ｔ＝（Ａ＋Ｂ）＋（（Ａ＋Ｃ）×８）＋（Ａ＋Ｄ×８）＝１０Ａ＋Ｂ＋８Ｃ＋８Ｄ
となる。
【００９９】
すなわち、本発明によれば、外部メモリ１０１に対するコマンド発行時間「Ａ」を、従来技術と比較して１７回から１０回へ削減することが可能となる。このように、本発明では、受信ステータスを結合して外部メモリ１０１へＤＭＡ転送を行うことにより、メモリバス１０２の帯域占有を防ぐことができる。
【０１００】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理会し得る様々な変更を行うことができる。
【符号の説明】
【０１０１】
１  データバス
２  アドレスバス
３  コントロールバス
１１  中央処理装置（ＣＰＵ）
１２  入出力装置
２４  ＤＭＡ制御装置
２５  ＤＭＡ制御回路
２６  制御レジスタ
２７  フェッチ回路
２８  ＲＡＭ
２９  ＲＡＭ
１００  ネットワークプロセッサ
１０１  外部メモリ
１０２  メモリバス
１０３  ＣＰＵ
１０４  データ転送装置
１０５  データ転送装置
１１０  送信コントローラ
１１１  送信ＦＩＦＯ
１１２  外部インターフェース回路
１１３  受信ＦＩＦＯ
１１４  受信コントローラ
１１５  ＤＭＡ制御回路
１１６  ディスクリプタ格納回路
１１７  受信ステータス結合制御回路
１１８  受信ステータス格納回路
１２０  送信コントローラ
１２１  送信ＦＩＦＯ
１２２  外部インターフェース回路
１２３  受信ＦＩＦＯ
１２４  受信コントローラ
１２５  ＤＭＡ制御回路
１２６  ディスクリプタ格納回路
１２７  受信ステータス結合制御回路
１２８  受信ステータス格納回路
１３０  ディスクリプタ有効判定回路
１３１  時間管理回路
１３２  ディスクリプタ残数制御回路
１３３  有効ディスクリプタ判定回路
１３４  受信ステータス結合回路
１３５  受信データＢｙｔｅ数制御回路
１４０  ディスクリプタ格納領域
１４１  データ格納領域
１４２  データ格納領域
１５０  受信データＢｙｔｅ数制御閾値格納回路
１５１  受信データＢｙｔｅ数カウント制御回路
１５２  大小判定回路
１５３  受信ステータス結合数制御情報回路
２００  Ｒ／Ｗディスクリプタ格納回路
２０１  Ｒ／Ｗディスクリプタ格納回路
【図１】
2010211322.tif 000003
【図２】
2010211322.tif 000004
【図３】
2010211322.tif 000005
【図４】
2010211322.tif 000006
【図５Ａ】
2010211322.tif 000007
【図５Ｂ】
2010211322.tif 000008
【図６】
2010211322.tif 000009
【図７】
2010211322.tif 000010
【図８Ａ】
2010211322.tif 000011
【図８Ｂ】
2010211322.tif 000012
【図９】
2010211322.tif 000013
【図１０Ａ】
2010211322.tif 000014
【図１０Ｂ】
2010211322.tif 000015