(57)【要約】【課題】処理速度に優れた半導体装置を提供すること。【解決手段】一実施の形態に係る半導体装置は、入力された第１のパケットと当該第１のパケットの直前に入力された第２のパケットとの間隔に基づいて、あるいは、第１のパケットのパケット長に基づいて、第１のパケットのヘッダをキャッシュメモリに格納するか否かの属性情報を決定する属性決定回路を備えている。間隔が第１の閾値よりも大きい、あるいは、パケット長が第２の閾値よりも大きい場合、第１のパケットのヘッダをキャッシュメモリに格納しない。【選択図】図１
2014042107.tif 000002
【特許請求の範囲】
【請求項１】
演算回路と、
前記演算回路が実行するプログラムが格納されたメインメモリと、
前記メインメモリに格納されているプログラムを一時的に格納するキャッシュメモリと、
入力されたパケットに対し、当該パケットのヘッダを前記キャッシュメモリに格納するか否かの属性情報を付与する入出力回路と、
入力された第１のパケットと当該第１のパケットの直前に入力された第２のパケットとの間隔に基づいて、前記属性情報を決定する属性決定回路と、を備え、
前記属性決定回路は、
前記間隔が第１の閾値よりも大きい場合、前記第１のパケットのヘッダを前記キャッシュメモリに格納せず、前記間隔が前記第１の閾値よりも小さい場合、前記第１のパケットのヘッダを前記キャッシュメモリに格納するように前記属性情報を決定する、
半導体装置。
【請求項２】
前記属性決定回路は、前記間隔が前記第１の閾値よりも大きい場合、前記第１のパケットのヘッダを前記メインメモリに格納するように前記属性情報を決定する、
請求項１に記載の半導体装置。
【請求項３】
前記属性決定回路は、
前記間隔を測定するパケットギャップ測定部を備えている、
請求項１に記載の半導体装置。
【請求項４】
前記属性決定回路は、
前記第１の閾値が設定される第１のレジスタをさらに備えている、
請求項３に記載の半導体装置。
【請求項５】
前記属性決定回路は、
前記第１のレジスタに設定された前記第１の閾値と前記パケットギャップ測定部によって測定された前記間隔とを比較する第１の比較器をさらに備えている、
請求項４に記載の半導体装置。
【請求項６】
演算回路と、
前記演算回路が実行するプログラムが格納されたメインメモリと、
前記メインメモリに格納されているプログラムを一時的に格納するキャッシュメモリと、
入力されたパケットに対し、当該パケットのヘッダを前記キャッシュメモリに格納するか否かの属性情報を付与する入出力回路と、
入力された第１のパケットのパケット長に基づいて、前記属性情報を決定する属性決定回路と、を備え、
前記属性決定回路は、
前記パケット長が第２の閾値よりも大きい場合、前記第１のパケットのヘッダを前記キャッシュメモリに格納せず、前記パケット長が前記第２の閾値よりも小さい場合、前記第１のパケットのヘッダを前記キャッシュメモリに格納するように前記属性情報を決定する、
半導体装置。
【請求項７】
前記属性決定回路は、前記パケット長が前記第２の閾値よりも大きい場合、前記第１のパケットのヘッダを前記メインメモリに格納するように前記属性情報を決定する、
請求項６に記載の半導体装置。
【請求項８】
前記属性決定回路は、
前記第１のパケットのヘッダに記述されたパケット長情報に基づいて、前記パケット長を算出するパケット長算出部を備えている、
請求項６に記載の半導体装置。
【請求項９】
前記属性決定回路は、
前記第２の閾値が設定される第２のレジスタをさらに備えている、
請求項８に記載の半導体装置。
【請求項１０】
前記属性決定回路は、
前記第２のレジスタに設定された前記第２の閾値と前記パケット長算出部によって算出された前記パケット長とを比較する第２の比較器をさらに備えている、
請求項９に記載の半導体装置。
【請求項１１】
前記属性決定回路は、
前記間隔に加え、前記第１のパケットのパケット長に基づいて、前記属性情報を決定し、
前記パケット長が第２の閾値よりも大きい場合、前記第１のパケットのヘッダを前記キャッシュメモリに格納せず、前記パケット長が前記第２の閾値よりも小さく、かつ、前記間隔が前記第１の閾値よりも小さい場合、前記第１のパケットのヘッダを前記キャッシュメモリに格納するように前記属性情報を決定する、
請求項１に記載の半導体装置。
【請求項１２】
前記属性決定回路は、前記間隔が前記第１の閾値よりも大きい、又は、前記パケット長が前記第２の閾値よりも大きい場合、前記第１のパケットのヘッダを前記メインメモリに格納するように前記属性情報を決定する、
請求項１１に記載の半導体装置。
【請求項１３】
入力された第１のパケットと当該第１のパケットの直前に入力された第２のパケットとの間隔に基づいて、前記第１のパケットのヘッダをキャッシュメモリに格納するか否かの属性情報を決定し、
前記第１のパケットに対し、前記属性情報を付与し、
前記間隔が第１の閾値よりも大きい場合、前記第１のパケットのヘッダを前記キャッシュメモリに格納せず、前記間隔が前記第１の閾値よりも小さい場合、前記第１のパケットのヘッダを前記キャッシュメモリに格納する、パケット処理方法。
【請求項１４】
前記間隔が前記第１の閾値よりも大きい場合、前記第１のパケットのヘッダを前記メインメモリに格納する、
請求項１３に記載のパケット処理方法。
【請求項１５】
前記属性情報を決定する際、前記間隔に加え、前記第１のパケットのパケット長に基づいて、前記属性情報を決定し、
前記パケット長が第２の閾値よりも大きい場合、前記第１のパケットのヘッダを前記キャッシュメモリに格納せず、前記パケット長が前記第２の閾値よりも小さく、かつ、前記間隔が前記第１の閾値よりも小さい場合、前記第１のパケットのヘッダを前記キャッシュメモリに格納する、
請求項１３に記載のパケット処理方法。
【請求項１６】
前記間隔が前記第１の閾値よりも大きい、又は、前記パケット長が前記第２の閾値よりも大きい場合、前記第１のパケットのヘッダを前記メインメモリに格納する、
請求項１５に記載のパケット処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置及びパケット処理方法に関し、例えばキャッシュメモリを備えた通信制御用の半導体装置及びパケット処理方法に関する。
【背景技術】
【０００２】
各家庭でのインターネット接続には、ルータやスイッチなどのネットワーク機器が用いられている。多くのネットワーク機器には、パケット処理に特化したネットワークプロセッサが搭載されている。
【０００３】
ネットワークの高速広帯域化に伴い、ネットワークプロセッサの処理速度も高める必要がある。
プロセッサの処理速度を高めるには、例えば特許文献１、２に開示されているように、メインメモリに格納されたプログラムやデータの一部を一時的に保持するキャッシュメモリを設け、メモリアクセスによる遅延を低減する手法がよく知られている。
【０００４】
ここで、特許文献３には、パケットのヘッダ（パケットヘッダ）のみを選択的に格納するキャッシュメモリを備えたデータ処理装置（ネットワークプロセッサ）が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−７３４１４号公報
【特許文献２】特開２０００−１８１７９６号公報
【特許文献３】特開２００２−２７８８３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
発明者は以下の課題を見出した。
様々な種類のネットワーク機器の普及に伴うアプリケーション処理の多様化や、光ファイバー網に代表される通信インフラの整備に伴う物理的な伝送速度の高速化により、ネットワークプロセッサが処理するパケット数は増加する一方である。
ここで、引用文献３にように、全てのパケットヘッダをキャッシュメモリに格納していると、パケットヘッダによりキャッシュメモリが満たされてしまう。その結果、処理速度を高めるために一時的に格納されていたプログラムが、キャッシュメモリから消去され、処理速度が低下してしまう問題があった。
【０００７】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態に係る半導体装置は、入力された第１のパケットと当該第１のパケットの直前に入力された第２のパケットとの間隔に基づいて、あるいは、第１のパケットのパケット長に基づいて、第１のパケットのヘッダをキャッシュメモリに格納するか否かの属性情報を決定する属性決定回路を備えている。
【発明の効果】
【０００９】
前記一実施の形態によれば、処理速度に優れた半導体装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係るネットワークプロセッサの構成例を示すブロック図である。
【図２Ａ】入力パケットＰＩの構成を示す模式図である。
【図２Ｂ】キャッシュメモリ１０６に格納するか否かを示す属性ビットが付与された入力パケットＰＩａの構成を示す模式図である。
【図２Ｃ】キャッシュメモリ１０６に格納するか否かを示す属性ビットが付与された入力パケットＰＩａの他の構成を示す模式図である。
【図３】属性決定部１１０の内部構成を示すブロック図である。
【図４】ＩＰｖ４でのヘッダ１３１の構成を示す図である。
【図５】一般的なギガビットルータにおけるキャッシュメモリ未使用時の通信速度のバケット長依存性を示すグラフである。
【図６】一般的なギガビットルータにおけるキャッシュメモリ未使用時のパケット転送率のバケットギャップ依存性を示すグラフである。
【図７】ヘッダ１３１に付与された属性ビット１３３ａの値の決定方法を説明するためのフローチャートである。
【図８Ａ】本実施の形態に係るネットワークプロセッサ１００が、連続した入力パケットＰＩを受信した際の、キャッシュメモリ１０６及びメインメモリ１０８の状態を示す図である。
【図８Ｂ】本実施の形態に係るネットワークプロセッサ１００が、連続した入力パケットＰＩを受信した際の、キャッシュメモリ１０６及びメインメモリ１０８の状態を示す図である。
【図８Ｃ】本実施の形態に係るネットワークプロセッサ１００が、連続した入力パケットＰＩを受信した際の、キャッシュメモリ１０６及びメインメモリ１０８の状態を示す図である。
【図９】比較例に係るネットワークプロセッサの構成例を示すブロック図である。
【図１０Ａ】比較例に係るネットワークプロセッサ１０が、連続した入力パケットＰＩを受信した際の、キャッシュメモリ６及びメインメモリ８の状態を示す図である。
【図１０Ｂ】比較例に係るネットワークプロセッサ１０が、連続した入力パケットＰＩを受信した際の、キャッシュメモリ６及びメインメモリ８の状態を示す図である。
【図１０Ｃ】比較例に係るネットワークプロセッサ１０が、連続した入力パケットＰＩを受信した際の、キャッシュメモリ６及びメインメモリ８の状態を示す図である。
【図１０Ｄ】比較例に係るネットワークプロセッサ１０が、連続した入力パケットＰＩを受信した際の、キャッシュメモリ６及びメインメモリ８の状態を示す図である。
【図１１】実施の形態２に係る属性決定部２１０の内部構成を示すブロック図である。
【図１２】実施の形態３に係る属性決定部３１０の内部構成を示すブロック図である。
【図１３】ネットワークプロセッサの他の構成例を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下、具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一又は対応する要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００１２】
（実施の形態１）
まず、図１を参照して、本実施の形態に係る半導体装置であるネットワークプロセッサ（通信処理装置）の構成について説明する。図１は、実施の形態１に係るネットワークプロセッサの構成例を示すブロック図である。図１に示すように、ネットワークプロセッサ１００は、ネットワークＩ／Ｏ部１０１、バス１０４、ＣＰＵ（Central Processing Unit）１０５、キャッシュメモリ１０６、メモリインタフェース１０７、メインメモリ１０８、属性決定部１１０を備えている。ここで、ネットワークＩ／Ｏ部１０１は、ＤＭＡ（Direct Memory Access）１０２を備えている。さらに、ＤＭＡ１０２は、属性付与部１０３を備えている。
【００１３】
ネットワークＩ／Ｏ部１０１は、ネットワークから入力パケットＰＩを受信するとともに、ネットワークに対して出力パケットＰＯを出力する。ネットワークＩ／Ｏ部１０１は、入力パケットＰＩを加工し、キャッシュメモリ１０６へ直接転送可能なＤＭＡ１０２を備えている。
【００１４】
具体的には、ＤＭＡ１０２は、属性付与部１０３を備えている。属性付与部１０３は、入力パケットＰＩのヘッダ及び通信データに対して、キャッシュメモリ１０６に格納するか否かを示す属性ビットを付与する。属性ビットが付与された入力パケットＰＩａは、バス１０４を介して、キャッシュメモリ１０６へ直接転送される。ここで、入力パケットＰＩａは、属性ビットに応じて、キャッシュメモリ１０６にそのまま格納されるか、メインメモリ１０８へ転送・格納される。
【００１５】
図２Ａは、入力パケットＰＩの構成を示す模式図である。図２Ａに示すように、ネットワークからネットワークＩ／Ｏ部へ入力される入力パケットＰＩは、ヘッダ（パケットヘッダ）１３１及び通信データ１３２を備えている。
図２Ｂは、キャッシュメモリ１０６に格納するか否かを示す属性ビットが付与された入力パケットＰＩａの構成を示す模式図である。図２Ｂに示すように、入力パケットＰＩに対し、ヘッダ１３１に対する属性ビット１３３ａ及び通信データ１３２に対する属性ビット１３３ｂが追加されている。
【００１６】
図２Ｂに示されるように、通信データ１３２に対する属性ビット１３３ｂの値は０に固定されている。すなわち、通信データ１３２はキャッシュメモリ１０６には格納されず、メインメモリ１０８へ格納される。他方、ヘッダ１３１に対する属性ビット１３３ａの値Ｘは、属性決定部１１０により、入力パケットＰＩのパケット長やパケットギャップ（連続して入力された２つのパケットの間隔）に応じて、１（キャッシュメモリ１０６へ格納する）又は０（キャッシュメモリ１０６へ格納しない）に決定される。ヘッダ１３１に付与された属性ビット１３３ａの値Ｘの決定方法の詳細については、後述する。
【００１７】
なお、図２Ｃは、キャッシュメモリ１０６に格納するか否かを示す属性ビットが付与された入力パケットＰＩａの他の構成を示す模式図である。図２Ｃに示すように、ヘッダ１３１と通信データ１３２との境界線と、属性ビット１３３ａと属性ビット１３３ｂとの境界線とは、必ずしも一致していなくてもよい。具体的には、図２Ｃに示すように、通信データ１３２の先頭部分をヘッダ１３１とともに、キャッシュメモリ１０６へ格納されることができる構成としてもよい。
【００１８】
ＣＰＵ１０５は、バス１０４を介して、ネットワークＩ／Ｏ部１０１、キャッシュメモリ１０６、属性決定部１１０に接続されている。ＣＰＵ１０５は、キャッシュメモリ１０６に保持された制御プラグラムに基づいて、入力パケットＰＩａに対してルーティング処理を行う。具体的には、キャッシュメモリ１０６又はメインメモリ１０８に格納された入力パケットＰＩａのヘッダ１３１を読み出し、ＩＰアドレスなどのルーティング情報を確認、更新した上でキャッシュメモリ１０６又はメインメモリ１０８に書き戻す。なお、ルーティング情報が更新されたパケットは、出力パケットＰＯとして、ネットワークＩ／Ｏ部１０１へ転送される。
【００１９】
キャッシュメモリ１０６は、メモリインタフェース１０７を介して、メインメモリ１０８に格納されているルーティング処理用の制御プラグラムを取り込み、一時的に保持する。また、入力パケットＰＩａのヘッダ１３１の属性ビット１３３ａが１の場合、キャッシュメモリ１０６は、そのヘッダ１３１を格納する。一方、入力パケットＰＩａのヘッダ１３１の属性ビット１３３ａが０の場合、キャッシュメモリ１０６は、メモリインタフェース１０７を介して、そのヘッダ１３１をメインメモリ１０８へ転送する。さらに、キャッシュメモリ１０６は、メモリインタフェース１０７を介して、入力パケットＰＩａの通信データ１３２もメインメモリ１０８へ転送する。
【００２０】
メインメモリ１０８は、ＣＰＵ１０５により利用されるルーティング処理用の制御プラグラムを格納している。また、メインメモリ１０８は、キャッシュメモリ１０６から転送された（つまり、キャッシュメモリ１０６に格納されなかった）入力パケットＰＩａのヘッダ１３１も格納する。メインメモリ１０８としては、電源が遮断された場合に記憶したデータがクリアされる揮発性メモリであるＤＲＡＭ（Dynamic Random Access Memory）が用いる場合が多い。もちろん、メインメモリ１０８として、電源が遮断されても記憶したデータを保持する不揮発性メモリを用いてもよい。
【００２１】
属性決定部１１０は、入力パケットＰＩのパケット長やパケットギャップと、それらの閾値ＴＨとを比較し、ヘッダ１３１の属性ビット１３３ａの値を決定する。そして、属性付与部１０３に対し、決定された属性ビット１３３ａの値を示す属性信号ＡＳを出力する。
【００２２】
ここで、図３を参照して、属性決定部１１０の詳細について説明する。図３は、属性決定部１１０の内部構成を示すブロック図である。図３に示すように、属性決定部１１０は、第１のレジスタＲＥＧ１、第２のレジスタＲＥＧ２、パケットギャップ測定部１１１、パケット長算出部１１２、第１の比較器ＣＭＰ１、第２の比較器ＣＭＰ２、及び属性信号生成部１１３を備えている。
【００２３】
第１のレジスタＲＥＧ１には、バス１０４を介して、ＣＰＵ１０５により、パケットギャップの閾値ＴＨ１がセットされる。
第１のレジスタＲＥＧ２には、バス１０４を介して、ＣＰＵ１０５により、パケット長の閾値ＴＨ２がセットされる。
【００２４】
パケットギャップ測定部１１１は、入力中の入力パケットＰＩとその直前に入力された入力パケットＰＩとの間隔（つまりパケットギャップ）を、例えばカウンタを用いて測定する。例えば、パケットを送信中であるか否かを示すイネーブル信号を用いて測定することができる。具体的には、イネーブル信号が、パケット送信中に１（Ｈ：Ｈｉｇｈ）、パケット非送信中に０（Ｌ：Ｌｏｗ）であれば、イネーブル信号が０（パケット非送信中）の区間を計測することにより、パケットギャップを計測することができる。パケット非送信中の区間は、すなわちパケットギャップだからである。
【００２５】
パケット長算出部１１２は、入力中の入力パケットＰＩのヘッダ１３１に記述されたパケット長からパケット長を算出する。図４は、ＩＰｖ４でのヘッダ１３１の構成を示す図である。最上段の番号０〜３１は、ビット数を示している。図４に示すように、ＩＰｖ４でのヘッダ１３１は、パケット情報を示す情報フィールド３０、転送元装置を示す送信元ＩＰアドレスフィールド３１、転送先装置を示す宛先ＩＰアドレスフィールド３２から構成される。
【００２６】
ここで、情報フィールド３０は、図４に示すように、ＩＰプロトコルのバージョン、ヘッダ長、優先順位、パケット長、識別番号、フラグ／フラグメントセットオフ、ＴＴＬ（Time to Live）、プロトコル、ヘッダチェックサムを含む。
パケット長算出部１１２は、ヘッダ１３１の情報フィールド３０に含まれるパケット長の値から、パケット長を算出する。図４に示すように、パケット長は、１６ビット目から３１ビット目にかけて１６ビットの値で記述されている。
【００２７】
第１の比較器ＣＭＰ１は、デジタル比較器であって、第１のレジスタＲＥＧ１にセットされたパケットギャップの閾値ＴＨ１と、パケットギャップ測定部１１１が測定したパケットギャップの値とを比較する。例えば、第１の比較器ＣＭＰ１は、測定されたパケットギャップの値が閾値ＴＨ１よりも大きければ、１（Ｈ：Ｈｉｇｈ）を出力する。一方、第１の比較器ＣＭＰ１は、測定されたパケットギャップの値が閾値ＴＨ１以下であれば、０（Ｌ：Ｌｏｗ）を出力する。
【００２８】
第２の比較器ＣＭＰ２は、デジタル比較器であって、第２のレジスタＲＥＧ２にセットされたパケット長の閾値ＴＨ２と、パケット長算出部１１２が算出したパケット長の値とを比較する。例えば、第２の比較器ＣＭＰ２は、算出されたパケット長の値が閾値ＴＨ２よりも大きければ、１（Ｈ：Ｈｉｇｈ）を出力する。一方、第２の比較器ＣＭＰ２は、算出されたパケット長の値が閾値ＴＨ２以下であれば、０（Ｌ：Ｌｏｗ）を出力する。
【００２９】
属性信号生成部１１３は、第１の比較器ＣＭＰ１及び第２の比較器ＣＭＰ２の出力に基づいて、属性信号ＡＳを生成する。例えば、第１の比較器ＣＭＰ１及び第２の比較器ＣＭＰ２の出力がいずれも０の場合に１（Ｈ：Ｈｉｇｈ）を出力し、それ以外の場合、０（Ｌ：Ｌｏｗ）を出力する。すなわち、このような例では、属性信号生成部１１３としてＮＡＮＤゲートを用いることができる。
【００３０】
このように、属性決定部１１０は、入力パケットＰＩのパケットギャップの値が閾値ＴＨ１以下、かつ、入力パケットＰＩのパケット長の値が閾値ＴＨ２以下の場合に、ヘッダ１３１をキャッシュメモリ１０６へ格納するための属性信号ＡＳを生成する。それ以外の場合、属性決定部１１０は、ヘッダ１３１をキャッシュメモリ１０６へ格納しないための属性信号ＡＳを生成する。
【００３１】
図５を用いて、パケット長と通信速度との関係について説明する。図５は、一般的なギガビットルータにおけるキャッシュメモリ未使用時の通信速度のバケット長依存性を示すグラフである。横軸はパケット長（ｂｙｔｅ）、縦軸は通信速度（ｂｐｓ）である。
【００３２】
図５の例では、パケット長が２５６ｂｙｔｅまでは通信速度がパケット長に比例して増加し、パケット長が２５６ｂｙｔｅを超えると、最大通信速度１Ｇｂｐｓに到達し、一定となる。これは、近年のＤＲＡＭの高速化に伴い、パケット長が大きくなると、ＤＲＡＭのバースト転送による通信速度の向上が顕著になるためである。
【００３３】
従って、図５の例では、図３に示したパケット長の閾値ＴＨ２＝２５６ｂｙｔｅとすればよい。すなわち、パケット長が閾値ＴＨ２（＝２５６ｂｙｔｅ）以下の入力パケットＰＩのみをキャッシュメモリ１０６に格納すれば、効果的に通信速度を向上させることができる。パケット長が閾値ＴＨ２（＝２５６ｂｙｔｅ）より大きい入力パケットＰＩについては、キャッシュメモリ１０６でなくメインメモリ１０８に格納しても、最大通信速度（１Ｇｂｐｓ）を達成できるからである。
【００３４】
このように、閾値ＴＨ２の具体的な数値は、パケット長と通信速度との関係などから適宜決定される。
なお、家庭用インターネット接続で最も使用されているフレッツ網の場合、最大パケット長（ＭＴＵ：Maximum Transmission Unit）は１４５４ｂｙｔｅ、その他の場合は１５００ｂｙｔｅというのが一般的である。
【００３５】
次に、図６を用いて、パケットギャップとパケット転送率との関係について説明する。図６は、一般的なギガビットルータにおけるキャッシュメモリ未使用時のパケット転送率のバケットギャップ依存性を示すグラフである。横軸はパケットギャップ（ｂｙｔｅ）、縦軸はパケット転送率（％）である。また、図の上から、（ａ）パケット長＝６４ｂｙｔｅ、（ｂ）パケット長＝１２８ｂｙｔｅ、（ｃ）パケット長＝２５６ｂｙｔｅの３つの場合について、３つのグラフを並べて示している。
【００３６】
図６（ａ）に示すように、パケット長＝６４ｂｙｔｅの場合、パケットギャップが１９２ｂｙｔｅまではパケット転送率がパケットギャップに比例して増加し、パケットギャップが１９２ｂｙｔｅになると、パケット転送率が１００％に到達し、一定となる。パケット長が６４ｂｙｔｅと小さいと、図２Ａに示した入力パケットＰＩに占めるヘッダ１３１の割合が大きくなる。
【００３７】
ここで、図６（ａ）に示すように、パケットギャップが小さいと、入力パケットＰＩのルーティング処理が終了する前に、次の入力パケットＰＩが到着してしまうことになる。その結果、後の入力パケットＰＩは転送されずに廃棄されることになり、パケット転送率が低くなる。反対に、パケットギャップが大きくなると、廃棄されるパケットが減少し、パケット転送率が向上する。
【００３８】
図６（ｂ）に示すように、パケット長＝１２８ｂｙｔｅの場合、パケットギャップが１２８ｂｙｔｅまではパケット転送率がパケットギャップに比例して増加し、パケットギャップが１２８ｂｙｔｅになると、パケット転送率が１００％に到達し、一定となる。パケット長が１２８ｂｙｔｅの場合も、パケット長＝６４ｂｙｔｅの場合と同様の理由から、パケットギャップが小さいと、パケット転送率が低くなる。
【００３９】
図６（ｃ）に示すように、パケット長＝２５６ｂｙｔｅの場合、常にパケット転送率が１００％で、一定である。パケット長が２５６ｂｙｔｅになると、入力パケットＰＩのルーティング処理が終了する前に、次の入力パケットＰＩが到着してしまうことがなくなる。その結果、常にパケット転送率が１００％となる。
【００４０】
図６の例では、パケット長とパケットギャップとの合計が２５６ｂｙｔｅになると、パケット転送率が１００％となる。従って、図６の例では、図３に示したパケットギャップの閾値ＴＨ１＝２５６ｂｙｔｅとすればよい。
【００４１】
すなわち、パケットギャップが閾値ＴＨ１（＝２５６ｂｙｔｅ）以下の入力パケットＰＩのみをキャッシュメモリ１０６に格納すれば、効果的に通信速度を向上させることができる。パケットギャップが閾値ＴＨ１（＝２５６ｂｙｔｅ）より大きい入力パケットＰＩについては、キャッシュメモリ１０６でなくメインメモリ１０８に格納しても、パケット転送率が１００％に達するからである。
このように、閾値ＴＨ１の具体的な数値は、パケットギャップとパケット転送率との関係などから適宜決定される。
【００４２】
次に、図７を参照して、入力パケットＰＩのヘッダ１３１に付与された属性ビット１３３ａの値（すなわち、ヘッダ１３１をキャッシュメモリに格納するか否か）の決定方法について説明する。図７は、ヘッダ１３１に付与された属性ビット１３３ａの値の決定方法を説明するためのフローチャートである。
【００４３】
第１の比較器ＣＭＰ１は、パケットギャップ測定部１１１により測定されたパケットギャップが閾値ＴＨ１より大きいか否か判定する（ステップＳ１）。第１の比較器ＣＭＰ１によりパケットギャップが閾値ＴＨ１よりも大きいと判定された場合（ステップＳ１ＹＥＳ）、属性信号生成部１１３は、属性ビット１３３ａの値Ｘを０に設定するための（ヘッダ１３１をキャッシュメモリ１０６へ格納しないための）属性信号ＡＳを出力する（ステップＳ４）。一方、パケットギャップが閾値ＴＨ１以下の場合（ステップＳ１ＮＯ）、第１の比較器ＣＭＰ２は、パケット長算出部１１２により算出されたパケット長が閾値ＴＨ２より大きいか否か判定する（ステップＳ２）。
【００４４】
第２の比較器ＣＭＰ２によりパケット長が閾値ＴＨ２よりも大きいと判定された場合（ステップＳ２ＹＥＳ）、属性信号生成部１１３は、属性ビット１３３ａの値Ｘを０に設定するための（ヘッダ１３１をキャッシュメモリ１０６へ格納しないための）属性信号ＡＳを出力する（ステップＳ４）。一方、第２の比較器ＣＭＰ２によりパケット長が閾値ＴＨ２以下と判定された場合（ステップＳ２ＮＯ）、属性信号生成部１１３は、属性ビット１３３ａの値Ｘを１に設定するための（ヘッダ１３１をキャッシュメモリ１０６へ格納するための）属性信号ＡＳを出力する（ステップＳ３）。なお、図３からも明らかなように、ステップＳ１とステップＳ２との順序は逆であってもよい。
【００４５】
次に、図８Ａ〜８Ｃを参照して、本実施の形態に係るネットワークプロセッサ１００が、連続した入力パケットＰＩを受信した際の、キャッシュメモリ１０６及びメインメモリ１０８の状態について説明する。図８Ａ〜８Ｃは、本実施の形態に係るネットワークプロセッサ１００が、連続した入力パケットＰＩを受信した際の、キャッシュメモリ１０６及びメインメモリ１０８の状態を示す図である。
【００４６】
ネットワークプロセッサ１００の動作開始直後には、図８Ａに示すように、ＣＰＵ１０５が実行する制御プログラムは、メインメモリ１０８にのみ格納されている。図８Ａにおいて矢印を点線で示すように、この段階ではパケットの送受信は行われていない。
【００４７】
図８Ｂは、ＣＰＵ１０５が、制御プログラムの読み出しを要求し、制御プログラムがメインメモリ１０８からメモリインタフェース１０７を介してキャッシュメモリ１０６へ格納（コピー）された状態を示している。この状態であれば、ＣＰＵ１０５は、キャッシュメモリ１０６に格納された制御プログラムに基づいて、ルーティング処理を高速に実行することができる。
【００４８】
図８Ｃは、ネットワークＩ／Ｏ部１０１がｎ個の入力パケットＰＩ１〜ＰＩｎを受信した際のキャッシュメモリ１０６及びメインメモリ１０８の状態を示している。図８Ｃの例では、属性決定部１１０において、入力パケットＰＩ１〜ＰＩｎの間隔（パケットギャップ）がいずれも長いと判断されたものとする。
【００４９】
この結果、入力パケットＰＩ１〜ＰＩｎのパケットヘッダＰＨ１〜ＰＨｎは、キャッシュメモリ１０６には格納されず、メインメモリ１０８へ格納される。このため、ＣＰＵ１０５は、引き続きキャッシュメモリ１０６に格納された制御プログラムに基づいて、ルーティング処理を高速に実行することができる。
【００５０】
次に、図９を参照して、比較例に係る半導体装置であるネットワークプロセッサの構成について説明する。図９は、比較例に係るネットワークプロセッサの構成例を示すブロック図である。図９に示すように、ネットワークプロセッサ１０は、ネットワークＩ／Ｏ部１、バス４、ＣＰＵ５、キャッシュメモリ６、メモリインタフェース７、メインメモリ８を備えている。ここで、ネットワークＩ／Ｏ部１は、ＤＭＡ２を備えている。さらに、ＤＭＡ２は、属性付与部３を備えている。
【００５１】
ここで、図１に示した本実施の形態に係るネットワークプロセッサ１００は、属性決定部１１０を備えていたのに対し、図９に示した比較例に係るネットワークプロセッサ１０は、属性決定部を備えていない。そのため、比較例に係る属性付与部３は、パケット長やパケットギャップによらず、図２Ｂに示した入力パケットＰＩのヘッダ１３１の属性ビットの値Ｘを常に１とする。つまり、全ての入力パケットＰＩのヘッダ１３１がキャッシュメモリ６に格納される。その他の構成については、ネットワークプロセッサ１００と同様であるため、説明を省略する。
【００５２】
次に、図１０Ａ〜１０Ｄを参照して、比較に係るネットワークプロセッサ１０が、連続した入力パケットＰＩを受信した際の、キャッシュメモリ６及びメインメモリ８の状態について説明する。図１０Ａ〜１０Ｄは、比較例に係るネットワークプロセッサ１０が、連続した入力パケットＰＩを受信した際の、キャッシュメモリ６及びメインメモリ８の状態を示す図である。
【００５３】
ネットワークプロセッサ１０の動作開始直後には、図１０Ａに示すように、ＣＰＵ５が実行する制御プログラムは、メインメモリ８にのみ格納されている。図１０Ａにおいて矢印を点線で示すように、この段階ではパケットの送受信は行われていない。
【００５４】
次に、図１０Ｂに示すように、ＣＰＵ５が、制御プログラムの読み出しを要求し、制御プログラムがメインメモリ８からキャッシュメモリ６へ格納（コピー）される。この状態であれば、ＣＰＵ５は、キャッシュメモリ６に格納された制御プログラムに基づいて、ルーティング処理を高速に実行することができる。
【００５５】
次に、図１０Ｃに示すように、ネットワークＩ／Ｏ部１がｎ個の入力パケットＰＩ１〜ＰＩｎを受信すると、入力パケットＰＩ１〜ＰＩｎのパケットヘッダＰＨ１〜ＰＨｎは、いずれもキャッシュメモリ６に格納される。この結果、パケットヘッダＰＨ１〜ＰＨｎによって、キャッシュメモリ６が占有され、制御プログラムがキャッシュメモリ６から消去されてしまう。
【００５６】
次に、図１０Ｄに示すように、ＣＰＵ５が制御プログラムの読み出しを要求すると、パケットヘッダＰＨ１をキャッシュメモリ６からメインメモリ８へ書き込んだ上で、制御プログラムをメインメモリ８からキャッシュメモリ６へ再度格納（コピー）する。それから、ＣＰＵ５が制御プログラムを実行する。
【００５７】
以上に説明したように、比較例に係るネットワークプロセッサ１０では、全てのパケットヘッダをキャッシュメモリ６に格納する。そのため、パケットヘッダでキャッシュメモリ６が占有され、高速化のためにキャッシュメモリ６へ格納した制御プログラムが、キャッシュメモリ６から消去されてしまう。この結果、制御プログラムをメインメモリ８から再度読み出す必要があり、その分、プロセッサの処理速度が低下する。
【００５８】
これに対し、本実施の形態に係るネットワークプロセッサ１００では、パケット長が短く、かつ、パケットギャップも短い入力パケットＰＩのヘッダ１３１のみをキャッシュメモリ１０６に格納する。そして、それ以外の入力パケットＰＩのヘッダ１３１については、メインメモリ１０８に格納する。そのため、パケットヘッダによりキャッシュメモリ１０６が占有されることがなく、高速化のためにキャッシュメモリ１０６へ格納した制御プログラムが消去されることもない。この結果、比較例に係るネットワークプロセッサ１０に比べ、プロセッサの処理速度が向上する。
【００５９】
（実施の形態２）
次に、図１１を参照して、実施の形態２に係るに係る半導体装置であるネットワークプロセッサの構成について説明する。図１１は、実施の形態２に係る属性決定部２１０の内部構成を示すブロック図である。図１１に示すように、実施の形態２に係る属性決定部２１０は、第１のレジスタＲＥＧ１、パケットギャップ測定部１１１、第１の比較器ＣＭＰ１、及び属性信号生成部２１３を備えている。
【００６０】
すなわち、実施の形態２に係る属性決定部２１０は、図３に示した実施の形態１に係る属性決定部１１０が備えていた第２のレジスタＲＥＧ２、パケット長算出部１１２、第２の比較器ＣＭＰ２を備えていない。
【００６１】
第１のレジスタＲＥＧ１には、バス１０４を介して、ＣＰＵ１０５により、パケットギャップの閾値ＴＨ１がセットされる。
【００６２】
パケットギャップ測定部１１１は、入力中の入力パケットＰＩとその直前に入力された入力パケットＰＩとの間隔（つまりパケットギャップ）を、例えばカウンタを用いて測定する。例えば、パケットを送信中であるか否かを示すイネーブル信号を用いて測定することができる。例えば、イネーブル信号が、パケット送信中に１（Ｈ：Ｈｉｇｈ）、パケット非送信中に０（Ｌ：Ｌｏｗ）であれば、イネーブル信号が０（パケット非送信中）の区間を計測することにより、パケットギャップを計測することができる。パケット非送信中の区間は、すなわちパケットギャップだからである。
【００６３】
第１の比較器ＣＭＰ１は、デジタル比較器であって、第１のレジスタＲＥＧ１にセットされたパケットギャップの閾値ＴＨ１と、パケットギャップ測定部１１１が測定したパケットギャップの値とを比較する。例えば、第１の比較器ＣＭＰ１は、測定されたパケットギャップの値が閾値ＴＨ１よりも大きければ、１（Ｈ：Ｈｉｇｈ）を出力する。一方、第１の比較器ＣＭＰ１は、測定されたパケットギャップの値が閾値ＴＨ１以下であれば、０（Ｌ：Ｌｏｗ）を出力する。
【００６４】
属性信号生成部２１３は、第１の比較器ＣＭＰ１の出力に基づいて、属性信号ＡＳを生成する。例えば、第１の比較器ＣＭＰ１の出力が０の場合に１（Ｈ：Ｈｉｇｈ）を出力し、１の場合、０（Ｌ：Ｌｏｗ）を出力する。すなわち、図１１の例では、属性信号生成部２１３としてＮＯＴゲート（インバータ）を用いることができる。
【００６５】
このように、属性決定部２１０は、入力パケットＰＩのパケットギャップの値が閾値ＴＨ１以下の場合に、ヘッダ１３１をキャッシュメモリ１０６へ格納するための属性信号ＡＳを生成する。パケットギャップの値が閾値ＴＨ１より大きい場合、属性決定部２１０は、ヘッダ１３１をキャッシュメモリ１０６へ格納しないための属性信号ＡＳを生成する。
【００６６】
本実施の形態に係るネットワークプロセッサ１００では、パケットギャップが所定の閾値よりも短い入力パケットＰＩのヘッダ１３１のみをキャッシュメモリ１０６に格納する。そして、それ以外の入力パケットＰＩのヘッダ１３１については、メインメモリ１０８に格納する。そのため、パケットヘッダによりキャッシュメモリ１０６が占有されることがなく、高速化のためにキャッシュメモリ１０６へ格納した制御プログラムが消去されることもない。この結果、図９に示した比較例に係るネットワークプロセッサ１０に比べ、プロセッサの処理速度が向上する。
【００６７】
（実施の形態３）
次に、図１２を参照して、実施の形態３に係るに係る半導体装置であるネットワークプロセッサ１００の構成について説明する。図１２は、実施の形態３に係る属性決定部３１０の内部構成を示すブロック図である。図１２に示すように、実施の形態３に係る属性決定部３１０は、第２のレジスタＲＥＧ２、パケット長算出部１１２、第２の比較器ＣＭＰ２、及び属性信号生成部３１３を備えている。
【００６８】
すなわち、実施の形態３に係る属性決定部３１０は、図３に示した実施の形態１に係る属性決定部１１０が備えていた第１のレジスタＲＥＧ１、パケットギャップ測定部１１１、第１の比較器ＣＭＰ１を備えていない。
【００６９】
第２のレジスタＲＥＧ２には、バス１０４を介して、ＣＰＵ１０５により、パケット長の閾値ＴＨ２がセットされる。
【００７０】
パケット長算出部１１２は、入力中の入力パケットＰＩのヘッダ１３１に記述されたパケット長からパケット長を算出する。パケット長算出部１１２は、図４に示したヘッダ１３１の情報フィールド３０に含まれるパケット長の値から、パケット長を算出する。
【００７１】
第２の比較器ＣＭＰ２は、デジタル比較器であって、第２のレジスタＲＥＧ２にセットされたパケット長の閾値ＴＨ２と、パケット長算出部１１２が算出したパケット長の値とを比較する。例えば、第２の比較器ＣＭＰ２は、算出されたパケット長の値が閾値ＴＨ２よりも大きければ、１（Ｈ：Ｈｉｇｈ）を出力する。一方、第２の比較器ＣＭＰ２は、算出されたパケット長の値が閾値ＴＨ２以下であれば、０（Ｌ：Ｌｏｗ）を出力する。
【００７２】
属性信号生成部３１３は、第２の比較器ＣＭＰ２の出力に基づいて、属性信号ＡＳを生成する。例えば、第２の比較器ＣＭＰ２の出力が０の場合に１（Ｈ：Ｈｉｇｈ）を出力し、１の場合、０（Ｌ：Ｌｏｗ）を出力する。すなわち、図１２の例では、属性信号生成部３１３としてＮＯＴゲート（インバータ）を用いることができる。
【００７３】
このように、属性決定部３１０は、入力パケットＰＩのパケット長の値が閾値ＴＨ２以下の場合に、ヘッダ１３１をキャッシュメモリ１０６へ格納するための属性信号ＡＳを生成する。パケット長の値が閾値ＴＨ２より大きい場合、属性決定部３１０は、ヘッダ１３１をキャッシュメモリ１０６へ格納しないための属性信号ＡＳを生成する。
【００７４】
本実施の形態に係るネットワークプロセッサでは、パケット長が所定の閾値よりも短い入力パケットＰＩのヘッダ１３１のみをキャッシュメモリ１０６に格納する。そして、それ以外の入力パケットＰＩのヘッダ１３１については、メインメモリ１０８に格納する。そのため、パケットヘッダによりキャッシュメモリ１０６が占有されることがなく、高速化のためにキャッシュメモリ１０６へ格納した制御プログラムが消去されることもない。この結果、図９に示した比較例に係るネットワークプロセッサ１０に比べ、プロセッサの処理速度が向上する。
【００７５】
（その他の変形例）
図１３は、ネットワークプロセッサの他の構成例を示すブロック図である。図１に示した実施の形態１に係るネットワークプロセッサ１００では、属性決定部１１０は、ネットワークＩ／Ｏ部１０１の外部に設けられている。しかしながら、図１３に示すように、属性決定部１１０は、ネットワークＩ／Ｏ部１０１の内部に設けられていてもよい。
【００７６】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００７７】
１００  ネットワークプロセッサ
１０１  ネットワークＩ／Ｏ部
１０２  ＤＭＡ
１０３  属性付与部
１０４  バス
１０５  ＣＰＵ
１０６  キャッシュメモリ
１０７  メモリインタフェース
１０８  メインメモリ
１１０、２１０、３１０  属性決定部
１１１  パケットギャップ測定部
１１２  パケット長算出部
１１３、２１３、３１３  属性信号生成部
ＣＭＰ１  第１の比較器
ＣＭＰ２  第２の比較器
ＲＥＧ１  第１のレジスタ
ＲＥＧ２  第２のレジスタ
【図１】
2014042107.tif 000003
【図２Ａ】
2014042107.tif 000004
【図２Ｂ】
2014042107.tif 000005
【図２Ｃ】
2014042107.tif 000006
【図３】
2014042107.tif 000007
【図４】
2014042107.tif 000008
【図５】
2014042107.tif 000009
【図６】
2014042107.tif 000010
【図７】
2014042107.tif 000011
【図８Ａ】
2014042107.tif 000012
【図８Ｂ】
2014042107.tif 000013
【図８Ｃ】
2014042107.tif 000014
【図９】
2014042107.tif 000015
【図１０Ａ】
2014042107.tif 000016
【図１０Ｂ】
2014042107.tif 000017
【図１０Ｃ】
2014042107.tif 000018
【図１０Ｄ】
2014042107.tif 000019
【図１１】
2014042107.tif 000020
【図１２】
2014042107.tif 000021
【図１３】
2014042107.tif 000022