(57)【要約】    【課題】      キャッシュ上の命令コードやデータを有効に活用すること    【解決手段】  プロセッサ１２に具備されたキャッシュ１２１内に保持された命令コードまたはデータを推定するキャッシュ内データ推定手段２１と、受信フレームがプロセッサ１２で処理される際にプロセッサ１２が使用する命令コードまたはデータを特定する受信フレーム解析手段２０と、フレーム処理時の命令コードまたはデータがキャッシュ１２１にヒットする確率を計算するヒット確率計算手段２２と、プロセッサ１２に送信するフレームの順序を制御する送信制御手段２３を備え、フレームを受信するとキャッシュ１２１にヒットする確率が高いフレームから順にプロセッサ１２に送信することで、キャッシュ１２１上のデータを有効に利用でき処理速度が向上する。  【選択図】      図２
2006065591.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサのキャッシュに保持された命令コードまたはデータを推定するキャッシュ内データ推定手段と、
受信フレームがプロセッサで処理される際に前記プロセッサが使用する命令コードまたはデータを特定する受信フレーム解析手段と、
フレーム処理時の命令コードまたはデータが前記キャッシュにヒットする確率を計算するヒット確率計算手段と、
前記プロセッサに送信するフレームの順序を制御する送信制御手段と、を備え、
フレームを受信すると前記キャッシュにヒットする確率が高いフレームから順に前記プロセッサに送信する、
ことを特徴とする受信フレーム処理装置。
【請求項２】
請求項１記載の受信フレーム処理装置において、
前記キャッシュ内データ推定手段は、
最後にプロセッサに送信したフレームを記憶し、最後に送信したフレーム処理の為に前記プロセッサが使用した命令コードまたはデータが前記キャッシュに保持されているものとみなす、
ことを特徴とする受信フレーム処理装置。
【請求項３】
請求項１または請求項２記載の受信フレーム処理装置において、
前記受信フレーム解析手段は、
受信フレームのヘッダ及びペイロード解析手段と、
前記プロセッサが呼び出すプログラム群の中からフレーム処理時に呼び出すプログラムを処理内容毎に対応付けて記憶させたプログラムテーブルと、を備え、
受信フレームの内容から呼び出すプログラムを特定することで、使用する命令コードおよびデータを特定する、
ことを特徴とする受信フレーム処理装置。
【請求項４】
請求項３記載の受信フレーム処理装置において、
前記プログラムテーブルは、
通信プロトコル毎に各通信プロトコルと、前記プロセッサが呼び出すプログラムを対応付けて記憶し、ヘッダ及びペイロードの情報から通信プロトコルを特定し、前記通信プロトコルの種別から使用する命令コードまたはデータを特定する、
ことを特徴とする受信フレーム処理装置。
【請求項５】
請求項３記載の受信フレーム処理装置において、
前記プログラムテーブルは、
アプリケーション毎に各アプリケーションと、前記プロセッサが呼び出すプログラムを対応付けて記憶し、ヘッダ及びペイロードの情報からアプリケーションを特定し、前記アプリケーションの種別から使用する命令コードまたはデータを特定する、
ことを特徴とする受信フレーム処理装置。
【請求項６】
請求項５記載の受信フレーム処理装置において、
前記送信制御手段は、
前記プロセッサに対し送信待ちのフレームを、常に直前のフレームに対するプログラム重畳度が最も高くなるようにフレームを並び替える、
ことを特徴とする受信フレーム処理装置。
【請求項７】
請求項５記載の受信フレーム処理装置において、
送信制御手段は、
前記プロセッサに対し送信待ちのフレームを、常にプロセッサに最後に送信したフレームに対するプログラム重畳度が最も高くなるようにフレームを並び替える、
ことを特徴とする受信フレーム処理装置。
【請求項８】
請求項１〜７いずれかに記載の受信フレーム処理装置において、
前記送信制御手段は、
予め指定した種別のフレームについては、送信順の制御から除外する、
ことを特徴とする受信フレーム処理装置。
【請求項９】
請求項１〜８いずれかに記載の受信フレーム処理装置において、
さらに、割込み条件が所定の閾値を超えるか否かを判定する割込み条件判定手段と、
前記割込み条件が所定の閾値を超えた場合、前記プロセッサに割込みをかける割込み生成手段と、を新たに備えて、
複数の受信フレームをまとめて一つの割込みとしてプロセッサに通知する、
ことを特徴とする受信フレーム処理装置。
【請求項１０】
請求項９記載の受信フレーム処理装置において、
前記割込み条件判定手段は、通信プロトコルの種別によって割込みの条件を変える、
ことを特徴とする受信フレーム処理装置。
【請求項１１】
請求項１〜１０いずれかに記載の受信フレーム処理装置と、
キャッシュを内蔵し、前記受信フレーム処理装置からデータを受信して処理するプロセッサと、
前記プロセッサが処理する際に使用するメインメモリと、
を有する通信処理装置。
【請求項１２】
プロセッサのキャッシュに保持された命令コードまたはデータを推定するステップと、
受信フレームがプロセッサで処理される際にプロセッサが使用する命令コードまたはデータを特定するステップと、
フレーム処理時の命令コードまたはデータが前記キャッシュにヒットする確率を計算するステップと、
前記プロセッサに送信するフレームの順序を制御するステップと、を備え、
フレームを受信すると前記キャッシュにヒットする確率が高いフレームから順にプロセッサに送信することを特徴とする受信フレーム処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークインタフェースを通じてイーサネット（登録商標）などのフレームを受信処理する装置において、フレームをプロセッサに送信する受信フレーム処理装置、通信処理装置、および受信フレーム処理方法に関するものである。
【背景技術】
【０００２】
通信の広帯域化に伴いネットワークインタフェースを備えた装置のプロセッサ負荷におけるネットワーク処理の割合が増加している。フレームの到着は不定期であるため、フレームの受信は割込みをもってプロセッサに通知するのが一般的であるが、割込み処理は、割込み起動時点までに動作中であったプロセスの状態を待避(コンテクストスイッチング)する必要がありオーバヘッドが発生し、プロセッサの負荷が増加する。プロセッサの負荷を低減する取り組みとして、プロセッサに通知する割込みを減らす方法がある。
【０００３】
従来の受信フレーム処理装置としては、割込み回数を減らすために、受信フレーム数又は受信データ量の閾値を設定し、フレーム受信量が閾値を超過すると割込みを出力し、１回の割込みで複数のフレームをまとめてプロセッサに対して出力しているものがあった（例えば、特許文献１参照）。
【０００４】
この場合、フレームの受信量が閾値に到達しないといつまでたっても割込みが上がらないので、プロセッサへのフレーム出力が長時間遅れることが無いように時間の閾値を設定し、受信フレームの待ち時間が時間閾値を超過すると割込みを上げるようにしている。また、受信フレームがリアルタイム応答に対する優先度が高いか否かを識別し、リアルタイム応答に対する優先度が高いフレームが到着すると直ちに割込みを出力し、遅延ゼロでリアルタイムフレームをプロセッサに出力することが出来るようにしている。
【０００５】
図１０は、前記特許文献１に記載された従来の受信フレーム処理装置におけるリアルタイム応答に対する優先度の高いフレームを処理する場合のフローチャートを示すものである。
【０００６】
図１０において、フレームを受信するとステップ１２１４においてリアルタイム応答に対する優先度の高いフレームであるか否かを判定する。もし、リアルタイムパケットであれば、ステップ１２１５において直ちにプロセッサに対して割込みを通知する一方、リアルタイムパケットでなければ、受信量が閾値を超過もしくはタイムアウトが発生した際に、割込みを出力していた。
【特許文献１】特開２００１-１４２４３号公報（図８等）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、ネットワーク上には異なるアプリケーションや、異なるプロトコルの各種データが不連続で流れているため、このような各種データを受信して、受信フレームとしてそのままプロセッサへ送信すると、頻繁に処理ソフトウェアの切替えが発生することになり、キャッシュメモリ（以下、キャッシュという）へのミスヒットが多発し、プロセッサの処理能力が低下するという問題がある。
【０００８】
また、割込み回数を減らしてプロセッサの負荷を低減する従来の方法では、キャッシュ上の命令コードやデータを有効に活用できる仕組みが無かった。
【０００９】
本発明は、このような従来の課題を解決するもので、キャッシュ上の命令コードやデータを有効に活用できる受信フレーム処理装置、通信処理装置、および受信フレーム処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
前記従来の課題を解決するために、本発明では、プロセッサのキャッシュに保持された命令コードまたはデータを推定すると共に、受信フレームがプロセッサで処理される際にプロセッサが使用する命令コードまたはデータを特定して、フレーム処理時の命令コードまたはデータがキャッシュにヒットする確率を計算して、キャッシュにヒットする確率が高いフレームから順にプロセッサに送信する、構成を採る。
【発明の効果】
【００１１】
本発明によれば、キャッシュ上の命令コードやデータを参照する確率が高まるため、キャッシュミスでメインメモリにアクセスすることによる処理速度の低下を防ぐことが出来る。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００１３】
（実施の形態１）
図１は、本発明の実施の形態１における受信フレーム処理装置を内蔵する通信処理装置の構成図である。
【００１４】
図１において、この通信処理装置は、キャッシュ１２１を有するプロセッサ１２と、メインメモリ１３と、ネットワークインタフェース１０と、受信フレーム処理装置１１とを、バス１４を介し接続して有している。
【００１５】
ネットワークインタフェース１０は、この通信処理装置が接続されているＬＡＮ等のネットワークよりフレームを受信するものである。
【００１６】
受信フレーム処理装置１１は、受信したフレームを格納するとともに、受信フレームに関する情報に基づきプロセッサ１２に対して送信する順番を入れ替えるもので、図２にて詳述する。
【００１７】
プロセッサ１２は、受信フレームを処理するプログラムを動作させ、メインメモリ１３より命令コード及びデータの呼び出し処理等をするものである。メインメモリ１３から呼び出された命令コード及びデータの一部はプロセッサ上のキャッシュ１２１に格納され、次回以降同様の命令コード及びデータが参照される場合はアクセススピードの速いキャッシュ１２１上のデータを参照する。
【００１８】
尚、この受信フレーム処理装置１１は、ハードウェア回路で実現してもよいし、受信フレーム処理装置１１自身がプロセッサを備えプログラムにより実現することも可能である。また、キャッシュ１２１は、メインメモリ１３より高速に動作するメモリであり、プロセッサ内部の内部キャッシュ（Ｌ１キャッシュ）の他、プロセッサの外部に備えられる外部キャッシュ（Ｌ２キャッシュやＬ３キャッシュ）を対象にしても良い。
【００１９】
図２は、本発明の実施の形態１における受信フレーム処理装置１１の構成図である。
【００２０】
図２において、本実施の形態１の受信フレーム処理装置１１は、受信フレーム解析手段２０と、キャッシュ内データ推定手段２１と、ヒット確率計算手段２２と、送信制御手段２３とを有している。
【００２１】
受信フレーム解析手段２０は、ヘッダ及びペイロード解析手段２０１と、プログラムテーブル２０２とを有し、受信フレームのヘッダ及びペイロードの情報からフレームに含まれる通信プロトコルを識別すると、事前に登録されているプログラムテーブル２０２からプロセッサ１２が受信フレームをその通信プロトコルに応じて処理する際に呼び出すプログラムの使用“１”/未使用“０”を示すビット列を呼び出してヒット確率計算手段２２に渡すものである。
【００２２】
キャッシュ内データ推定手段２１は、受信フレーム処理装置１１が最後にプロセッサ１２に送信したフレームを記憶し、プログラムテーブル２０２より最後に送信したフレームの通信プロトコルに対応するプログラムの使用“１”/未使用“０”を示すビット列を呼び出して、ヒット確率計算手段２２に渡すものである。
【００２３】
ヒット確率計算手段２２は、２つのビット列のプログラムの使用ビットの重畳度を計算し、そのプログラム重畳度を前記キャッシュにヒットする確率とみなすものである。
【００２４】
キャッシュヒット率の計算は、例えば、ビット列をＮ次元のベクトルとみなしベクトルの内積をとり、内積の結果をＮで割った値が１に近いものをプログラム重畳度が高いと判定することが考えられる。キャッシュヒット率を計算したら、その結果とともに、受信フレームを送信制御手段２３に渡す。
【００２５】
送信制御手段２３は、フレームをそのバッファ（図示せず）に記憶し並び替えてプロセッサ１２に送信するものである。つまり、送信待ちのフレームがある場合、プロセッサ１２のキャッシュ１２１にヒットする確率の高いものからプロセッサ１２に送信できるようにフレームを並び替えて、プロセッサ１２から送信の指示があるとプロセッサ１２に対してフレームを送信するものである。
【００２６】
図３は、本発明の実施の形態１における受信フレーム処理装置１１が備えるプログラムテーブル２０２の一例である。
【００２７】
プログラムテーブル２０２は、プロセッサ１２のキャッシュ１２１に保持された命令コードやデータを推定するために、プロセッサ１２がアプリケーション毎に受信フレームを処理する際に呼び出すプログラム群のプログラム１〜ｍ（ｍは、自然数）と、その際に使用する通信プロトコル＃１〜＃ｎ（ｎ）は、自然数）とを対応付けて記憶させたものである。
【００２８】
ここで、各プログラム１〜ｍが、各通信プロトコル＃１〜＃ｎを使用している場合は“１”、各通信プロトコル＃１〜＃ｎを使用していない場合は“０”のビットを設定する。
【００２９】
例えば、プログラム１の場合には、通信プロトコル＃１、＃２、＃４、＃５、＃ｎを使用し、プログラム２の場合であれば、通信プロトコル＃３、＃４、＃５を使用していることを示している。
【００３０】
プログラム１〜ｍは、ある一連の作業をグループ化（モジュール化）して独立させたもののことを示しており、ここでは一例として１つのプログラムに含まれるサブプログラム、サブルーチンを挙げている。
【００３１】
サブルーチンの中には、プロセッサ１２上のオペレーションシステムが提供するものや、ユーザが関数を定義したものも含まれる。また、テーブルを構成するプログラムは、フレームの処理に関する全プログラムを網羅する場合の他に、予め指定した種別のフレームについては送信順の制御から除外、例えば、プロセッサ１２が共通的に使用するプログラム（サブルーチン）を除外したり、さらには、リアルタイム処理が必要なイベントフレームを処理するプログラムを除外するテーブル構成としたり、サイズの大きいプログラムのみをピックアップしたテーブル構成としたり、通信プロトコルを処理する際のシステムコールの種類を対応付けたテーブルとしても良い。
【００３２】
そして、このプログラムテーブル２０２より、各通信プロトコル＃１〜＃ｎは、使用するプログラム、すなわちビット“１”の重なりが大きいほどキャッシュ１２１上の同種の命令コードやデータを使用する確率、つまりキャッシュヒット率が高くなるといえる。尚、プログラムテーブル２０２の縦軸は通信プロトコルではなく、通信装置で処理されるアプリケーションにて、プログラムテーブル２０２を構成しても良い。
【００３３】
次に、動作を説明する。
【００３４】
図４は、本発明の実施の形態１における受信フレーム処理装置１１の処理手順を示すフローチャートである。
【００３５】
まず、ステップ１１００により、受信フレーム解析手段２０のヘッダ及びペイロード解析手段２０１がフレームを受信の有無を判定し、受信フレームありの場合は、ステップ１２００へ進む一方、受信フレーム無しの場合は、ステップ２０００を実行する。
【００３６】
受信フレーム有りの場合、次のステップ１２００により、ヘッダ及びペイロード解析手段２０１は、まず、受信フレームのヘッダ及びペイロードの情報を解析して、受信フレームの通信プロトコルを特定する。
【００３７】
次に、ヘッダ及びペイロード解析手段２０１は、ステップ１３００により、受信フレームの通信プロトコルに対応するプログラムの使用“１”/未使用“０”を示すビット列を、プログラムテーブル２０２（図３参照）より呼び出す。
【００３８】
そして、キャッシュ内データ推定手段２１は、ステップ１４００により、送信制御手段２３がプロセッサ１２に対し最後に送信したフレームを記憶しているか否かを判定し、記憶しているフレームがある場合は、ステップ１６００に進む一方、記憶しているフレームがない場合は、ステップ１５００へ進む。
【００３９】
キャッシュ内データ推定手段２１は、プロセッサ１２に最後に送信したフレームを記憶していない場合は、まだ、プロセッサ１２にフレームを送信していないということなので、ステップ１５００により、先ほど受信したフレームを記憶フレームとして、ステップ２０００の処理へ進む。
【００４０】
これに対し、送信制御手段２３が最後にプロセッサ１２に送信したフレームを記憶している場合、キャッシュ内データ推定手段２１は、ステップ１６００により、記憶フレームの通信プロトコルに対応するプログラムの使用“１”/未使用“０”を示すビット列を、プログラムテーブル２０２より呼び出して、ヒット確率計算手段２２へ渡す。
【００４１】
ヒット確率計算手段２２は、ステップ１７００の処理により、ヘッダ及びペイロード解析手段２０１からの受信フレームの通信プロトコルに対応するプログラムの使用“１”/未使用“０”を示すビット列と、キャッシュ内データ推定手段２１から渡された記憶フレームの通信プロトコルに対応するプログラムの使用“１”/未使用“０”を示すビット列とから、使用プログラムの重畳度、すなわち使用“１”の重畳度を計算して、送信制御手段２３へ出力する。
【００４２】
そして、送信制御手段２３は、ステップ１８００の処理により、受信フレーム処理装置１１内における送信待ちフレームの有無を判定し、送信待ちフレームがある場合は、ステップ１９００へ進む一方、送信待ちフレームがない場合は、ステップ２０００へ進む。
【００４３】
送信待ちフレームがある場合、送信制御手段２３は、ステップ１９００の処理により、プログラム重畳度の高い順でプロセッサ１２にフレームを送信できるように、送信待ちのフレームを並び替える。
【００４４】
次に、送信制御手段２３は、ステップ２０００の処理により、プロセッサ１２からの送信指示の有無を判定し、プロセッサ１２からの送信指示がある場合は、ステップ２１００へ進む一方、送信指示がない場合は、ステップ１１００へ戻り、フレームの受信処理を繰り返す。
【００４５】
そして、プロセッサ１２から送信制御手段２３へ送信指示があった場合、送信制御手段２３は、ステップ２１００の処理により、プログラム重畳度の高い順番にプロセッサ１２に対してフレームを一括送信する。
【００４６】
最後に、キャッシュ内データ推定手段２１は、ステップ２２００の処理により、送信制御手段２３がプロセッサ１２に最後に送信したフレームを記憶する。
【００４７】
図５は、図４のステップ１９００に示した送信制御手段２３による送信フレームのプログラム重畳度の高い順に並び替える詳細な方法を示すフローチャートである。
【００４８】
ここでは、常に直前のフレームに対してプログラム重畳度が最も高くなるように並び替える方法を示している。
【００４９】
まず、ステップ１９０１により、送信制御手段２３は、送信待ちで蓄積しているフレームの先頭からの番号を示すＮを１で初期化する。なお、Ｎ＝０の場合は、Ｎ−１番目フレームは、記憶フレームを示すことになる。
【００５０】
次に、ステップ１９０２により、送信制御手段２３は、受信フレームがＮ−１番目フレームに対して計算したプログラム重畳度と、Ｎ番目フレームがＮ−１番目フレームに対して計算したプログラム重畳度とを比較し、Ｎ−１番目フレームに対する受信フレームのプログラム重畳度が、Ｎ−１番目フレームに対するＮ番目フレームのプログラム重畳度より低い場合はステップ１９０３へ、それが高い場合はステップ１９０６へ進む。
【００５１】
つまり、Ｎ−１番目フレームに対する受信フレームのプログラム重畳度が、Ｎ−１番目フレームに対するＮ番目フレームのプログラム重畳度より低い場合は、まず、ステップ１９０３により、送信制御手段２３は、Ｎ番目のフレームの通信プロトコルの使用プログラムを示すビット列をプログラムテーブル２０２から呼び出す。
【００５２】
ステップ１９０４により、送信制御手段２３は、受信フレームと、Ｎ番目のフレームとの間でプログラム重畳度を計算する。
【００５３】
そして、ステップ１９０５により、送信制御手段２３は、Ｎをインクリメントして、ステップ１９０１へ進む。
【００５４】
一方、Ｎ−１番目フレームに対する受信フレームのプログラム重畳度が、Ｎ−１番目フレームに対するＮ番目フレームのプログラム重畳度より高い場合は、送信制御手段２３は、ステップ１９０６により、受信フレームをＮ番目に格納する。
【００５５】
そして、ステップ１９０７により、送信制御手段２３は、Ｎ+１番目以降に蓄積されたフレームがある場合は、ステップ１９０８へ、フレームがない場合は、図４のステップ２０００へ進む。
【００５６】
ステップ１９０８では、送信制御手段２３は、Ｎ＋１番目以降の全てのフレームについて、新しく格納されたＮ番目のフレームとの間でプログラム重畳度を計算する。
【００５７】
そして、ステップ１９０９により、送信制御手段２３は、プログラム重畳度を再計算した結果、Ｎ＋１番目フレームのプログラム重畳度が最も高かった場合は、図４のステップ２０００を実行し、他にプログラム重畳度が高いフレームがある場合は、ステップ１９１０へ進む。
【００５８】
次に、ステップ１９１０により、送信制御手段２３は、再計算したプログラム重畳度が最も高いフレームをＮ＋１番目に格納する。
【００５９】
そして、ステップ１９１１により、送信制御手段２３は、Ｎをインクリメントしてステップ１９０７へ戻る。
【００６０】
このように、複数のフレームを蓄積して一括してプロセッサ１２に送信する場合や、ネットワークのサービス品質保証等の制約で意図せず複数のフレームが蓄積された場合において、プロセッサ１２上のキャッシュ１２１にヒットする確率の高いフレームから送信することができ、アクセス速度の速いキャッシュ１２１上のデータを有効に活用することで処理速度を向上できる。
【００６１】
図６（Ａ）、（Ｂ）は、本発明の実施の形態１における送信制御方法を例示した図である。
【００６２】
本実施の形態１では、受信フレーム処理装置１１の送信制制御手段２３は、常に直前のフレームとのプログラム重畳度を計算して、プログラム重畳度が１．００に近いほどキャッシュヒット率が高いものと判断して、受信フレームを直前のフレームとのプログラム重畳度が大きいものから並び替える。
【００６３】
図６（Ａ）において、記憶フレームＡは、送信制御手段２３が最後にプロセッサ１２に送信したフレームとしてキャッシュ内データ推定手段２１が記憶しているフレームである。そして、送信制御手段２３は、フレームＢ、Ｃ、Ｄ、Ｅの順に蓄積しており、受信フレームＦが入力された場合の動作を述べる。
【００６４】
プロセッサ１２に送信する順番は、プログラム重畳度が高いフレームからであるが、送信制御手段２３が、このプログラム重畳度を計算する際に、常に直前のフレームとのプログラム重畳度を計算するようにする。
【００６５】
すると、各フレームＡ〜Ｅのプログラム重畳度は、図６（Ａ）に示すようになり、記憶フレームＡは、最後にプロセッサ１２に送信したフレームで、直前のフレームが存在しないので、プログラム重畳度は“１．００”、フレームＢは、直前のフレームである記憶フレームＡとのプログラム重畳度は“０．９８”、フレームＣは、直前のフレームであるフレームＢとのプログラム重畳度は“０．９０”、フレームＤは、直前のフレームであるフレームＣとのプログラム重畳度は“０．９５”、フレームＥは、直前のフレームであるフレームＤとのプログラム重畳度は“０．９２”となる。
【００６６】
そして、受信フレームＦが入力されると、まず、ヒット確率計算手段２２は、キャッシュ内データ推定手段２１からプログラムの使用“１”／未使用“０”を示すビット列を受信して、送信制御手段２３から最後にプロセッサ１２へ送信された記憶フレームＡに対するプログラム重畳度を計算し、プログラム重要度をキャッシュヒット確率とみなして、送信制御手段２３へ出力する。
【００６７】
送信制御手段２３は、最後にプロセッサへ送信した記憶フレームＡに対する受信フレームＦのプログラム重畳度を、その記憶フレームＡに近いフレームＢのプログラム重畳度から順に比較をして、受信フレームＦの挿入位置を決定する。
【００６８】
つまり、例えば、記憶フレームＡに対する受信フレームＦのプログラム重畳度が“０．８５”であった場合、記憶フレームＡに対するフレームＢのプログラム重畳度は、図６（Ａ）に示すように“０．９８”であるので、受信フレームＦのプログラム重畳度は、フレームＢのプログラム重畳度より低いので、次はフレームＢとプログラム重畳度を比較する。
【００６９】
フレームＢとプログラム重畳度を比較した結果、フレームＢに対する受信フレームＦのプログラム重畳度が、例えば、“０．８７”である場合、フレームＢに対するフレームＣのプログラム重畳度は、図６に示すように、“０．９０”であるので、次はフレームＣとのプログラム重畳度を計算する。
【００７０】
フレームＣとプログラム重畳度を比較した結果、フレームＣに対する受信フレームＦのプログラム重畳度が、例えば、“０．９７”である場合、フレームＣに対するフレームＤのプログラム重畳度は、図６に示すように、“０．９５”であるので、受信フレームＦは、フレームＤより、フレームＣに対しプログラム重畳度が高いことがわかる。
【００７１】
送信制御手段２３は、受信フレームＦは、フレームＤより、フレームＣに対すうるプログラム重畳度が高いことがわかると、フレームＣの次で、フレームＤの前に、受信フレームＦを入れるように送信待ちの順序を制御する。
【００７２】
その結果、図６（Ｂ）に示すように、プロセッサ１２へ送信する順番は、記憶フレームＡ、フレームＢ、フレームＣ，受信フレームＦ、フレームＤ、フレームＥという順に並び替えると共に、受信フレームＦの次のフレームＤについては、新たに受信フレームＦに対するフレーム重畳度を計算して設定するようにする。なお、図６（Ｂ）では、受信フレームＦに対するフレームＤのフレーム重畳度は、“０．９０”と再設定される。
【００７３】
このように、送信制御手段２３は、キャッシュ１２１において常に直前のフレームとのプログラム重畳度を比較してプログラム重畳度が高いところが見つかると、それ以降のフレームも再度プログラム重畳度を計算しなおして、常に直前のフレームとのプログラム重畳度が高い順に並べ替える。
【００７４】
従って、本実施の形態１によれば、ヒット確率計算手段２２は、ヘッダ及びペイロード解析手段２０１からの受信フレームの通信プロトコルに対応するプログラムの使用“１”/未使用“０”を示すビット列と、キャッシュ内データ推定手段２１から渡された記憶フレームの通信プロトコルに対応するプログラムの使用“１”/未使用“０”を示すビット列とから、使用プログラムの重畳度を計算して、送信制御手段２３は、プログラム重畳度の高い順に送信待ちのフレームを並び替えてプロセッサ１２に送信するようにしたため、複数のフレームを蓄積して一括してプロセッサ１２に送信する場合や、ネットワークのサービス品質保証等の制約で意図せず複数のフレームが蓄積された場合においても、プロセッサ１２上のキャッシュ１２１にヒットする確率の高いフレームから送信することができ、アクセス速度の速いキャッシュ上のデータを有効に活用することで処理速度を向上できる。
【００７５】
また、キャッシュ内データ推定手段２１は、最後にプロセッサ１２に送信したフレームを記憶し、最後に送信したフレーム処理の為にプロセッサ１２が使用した命令コードまたはデータがキャッシュ１２１内に保持されているとみなすので、キャッシュ１２１上に保持された命令コードやデータを受信フレームから予測することが出来るため、プロセッサ１２側からの通知を不要とし構成を簡素化できる。
【００７６】
また、受信フレーム解析手段２０は、受信フレームのヘッダ及びペイロード解析手段２０１と、プロセッサ１２が呼び出すプログラム群の中からフレーム処理時に呼び出すプログラムを処理内容毎に対応付けて記憶させたプログラムテーブル２０２とを備え、受信フレームの内容から呼び出すプログラムを特定することで、使用する命令コードおよびデータを特定することにより、使用する命令コードおよびデータを予測することができ、処理を簡素化できる。
【００７７】
また、プログラムテーブル２０２は、通信プロトコル毎に各通信プロトコルと、プロセッサ１２が呼び出すプログラムとを対応付けて記憶し、ヘッダ及びペイロードの情報から通信プロトコル毎の命令コードまたはデータを解析して、通信プロトコルを特定し、通信プロトコルの種別から使用する命令コードまたはデータを特定することにより、キャッシュ１２１におけるヒット率向上を図ることができる。
【００７８】
また、プログラムテーブル２０２は、アプリケーション毎にプロセッサ１２が呼び出すプログラムを対応付けて記憶し、ヘッダ及びペイロードの情報からアプリケーション毎の命令コードまたはデータを解析して、アプリケーションを特定し、アプリケーションの種別から使用する命令コードまたはデータを特定することにより、キャッシュ１２１におけるヒット率向上を図ることができる。
【００７９】
また、一のプログラムを読み出す割合であるプログラム重畳度の割合が大きいほど、キャッシュ１２１にヒットする確率が高いものとみなし、送信制御手段２３は、プロセッサ１２に対し送信待ちのフレームを、常に直前のフレームに対するプログラム重畳度が高い順に並び替えるようにしたため、常に直前の受信フレームのプログラムと、受信フレームの処理に必要なプログラムとの重なりから、キャッシュ１２１上のデータのヒット率を近似的に計算して、より確実にキャッシュ１２１上の命令コードやデータを有効に活用することができる。
【００８０】
なお、本実施の形態１において、あらかじめプログラムテーブル２０２に通信プロトコルと、プログラム（サブルーチン）の対応表を設定しているが、プロセッサ１２の種類に応じてテーブルの変更を可能なようにしても良い。
【００８１】
（実施の形態２）
次に、別の実施の形態として、蓄積された送信待ちフレームのプログラム重畳度計算を行う対象フレームを、最後にプロセッサ１２に送信したフレームとする実施の形態２について述べる。
【００８２】
なお、本実施の形態２の受信フレーム処理装置１１の構成図、およびその処理手順を示すフローチャートは、それぞれ実施の形態１の図２、図４と同じであるので、それらを参照して説明する。
【００８３】
図７（Ａ），（Ｂ）は、本発明の実施の形態２における送信制御方法を例示した図である。
【００８４】
前記実施の形態１では、常に直前のフレームとの間でプログラム重畳度を算出していたが、本実施の形態２では、常に最後に送ったフレームとのプログラム重畳度を計算する。
【００８５】
図７（Ａ）において、記憶フレームＡは、最後にプロセッサ１２に送信したフレームとして送信制御手段２３に記憶されたフレームであり、フレームＢ、Ｃ、Ｄ、Ｅが送信制御手段２３に蓄積されている時に、受信フレームＦが入力された場合の動作を述べる。
【００８６】
送信制御手段２３からプロセッサ１２に送信する順番は、プログラム重畳度が高いフレームからであるが、このプログラム重畳度を計算する際に、本実施の形態２では、図７（Ａ）に示すように、常に、最後に送信したフレームとのプログラム重畳度を計算するようにする。
【００８７】
つまり、フレームＢ、Ｃ、Ｄ、Ｅも、それぞれの、最後にプロセッサ１２に記憶フレームＡを送信したときに、記憶フレームＡに対するプログラム重畳度が計算されており、フレームＢ、Ｃ、Ｄ、Ｅそれぞれの記憶フレームＡに対するプログラム重畳度は、図７（Ａ）に示すように、“０．９８”、“０．９０”、“０．８３”、“０．８０”であるとする。
【００８８】
このような状態で、受信フレームＦが入力されると、まず、記憶フレームＡに対する受信フレームＦプログラム重畳度が計算する。その結果、記憶フレームＡに対する受信フレームＦのプログラム重畳度が、例えば、“０．８５”であるとする。
【００８９】
すると、送信制御手段２３は、記憶フレームＡに対する各フレームＢ、Ｃ、Ｄ、Ｅ、Ｆのプログラム重畳度を比較して、記憶フレームＡに対する受信フレームＦのプログラム重畳度“０．８５”が、記憶フレームＡに対するフレームＤのプログラム重畳度“０．８３”より、大きいことがわかる。
【００９０】
そのため、送信制御手段２３は、フレームＢ、Ｃ、Ｄ、Ｅが記憶フレームＡに対して計算したプログラム重畳度と比較し、単純にプログラム重畳度が高い順に並べ替える。
【００９１】
その結果、本実施の形態２の場合、図７（Ｂ）に示すように、フレームＢ、フレームＣ、受信フレームＦ、フレームＤ、フレームＥのプログラム重畳度が高い順に並べ替えられることになる。
【００９２】
従って、本実施の形態２によれば、実施の形態１と同様に、ヒット確率計算手段２２が受信フレームと記憶フレームの使用プログラムの重畳度を計算して、送信制御手段２３がプログラム重畳度の高い順に送信待ちのフレームを並び替えてプロセッサ１２に送信するようにしたため、複数のフレームを蓄積して一括してプロセッサ１２に送信する場合や、ネットワークのサービス品質保証等の制約で意図せず複数のフレームが蓄積された場合においても、プロセッサ１２上のキャッシュ１２１にヒットする確率の高いフレームから送信することができ、アクセス速度の速いキャッシュ上のデータを有効に活用することで処理速度を向上できる。
【００９３】
また、一のプログラムを読み出す割合であるプログラム重畳度の割合が大きいほど、キャッシュ１２１にヒットする確率が高いものとみなし、送信制御手段２３は、プロセッサ１２に対し送信待ちの複数の受信フレームを、常にプロセッサ１２に最後に送信したフレームに対するプログラム重畳度が高い順に並び替えるようにしたので、前回プロセッサ１２が処理したプログラムと、受信フレームの処理に必要なプログラムとの重なりから、キャッシュ１２１上のデータのヒット率を近似的に計算でき、処理を簡素化して、キャッシュ１２１上の命令コードやデータを有効に活用することができる。
【００９４】
なお、本実施の形態２において、同一通信プロトコルはプロセッサ１２上での処理が類似であることから、同一通信プロトコルのフレームを連続でプロセッサ１２に送信するように並び替えるだけという簡素化した実装方法も考えられる。
【００９５】
（実施の形態３）
別の実施の形態として、複数のフレームをまとめて一括でプロセッサ１２に通知する手段として、割込みを用いた方法について述べる。
【００９６】
図８は、本発明の実施の形態３の受信フレーム処理装置１１の構成図である。図８において、図２と同じ構成要素については同じ符号を用い、説明を省略する。
【００９７】
図８において、この実施の形態３の受信フレーム処理装置１１は、図２に示す実施の形態１の受信フレーム処理装置１１に対し、新たに、割込み条件判定手段８０と、割込み生成手段８１とを追加している。
【００９８】
割込み条件判定手段８０は、受信フレーム数やタイマ値による割込み条件を満たしているか否かを判定するものである。
【００９９】
割込み生成手段８１は、割込み条件を満たしている場合、プロセッサ１２に対して割込みを通知する。
【０１００】
割込みの条件については、受信フレーム数が決められた閾値を上回ったとき、タイマが一定の時間経過したとき、または受信フレーム数とタイマの組合せ、または複数のタイマの組合せ等が考えられる。
【０１０１】
また、割込み閾値を通信プロトコル毎に複数設定、例えば、通信プロトコルの種別によって割込みの条件を変えるようにしてもよい。割込み閾値を通信プロトコル毎に変えることで、リアルタイム処理が必要とされるプロトコルなどはフレームの送信制御を行わずに、直ちにプロセッサ１２に送信するといったことや、遅延が許容されるプロトコルなどはプロセッサ１２の処理に余裕があるときのみプロセッサ１２に送信するといった制御が可能となる。
【０１０２】
図９では割込み条件として受信フレーム数と、タイマとを組合せた場合の例を取り上げて説明する。
【０１０３】
図９は、本発明の実施の形態３における受信フレーム処理装置１１の処理手順を示すフローチャートである。
【０１０４】
まず、ステップ３１００により、割込み条件判定手段８０は、プロセッサ１２への割込み条件をクリアする。ここでは、受信フレーム数及びタイマ値を０にセットする。
【０１０５】
次に、ステップ３２００により、割込み条件判定手段８０は、割込み条件を判定するタイマ値を始動する。
【０１０６】
そして、ヘッダ及びペイロード解析手段２０１は、ステップ３３００により、受信フレームの有無を判定し、受信フレームありの場合はステップ３４００へ進む一方、受信フレーム無しの場合は、ステップ４３００へ進む。
【０１０７】
次に、ヘッダ及びペイロード解析手段２０１は、ステップ３４００により、受信フレームのヘッダ情報を参照して、通信プロトコルを識別する
【０１０８】
次に、ステップ３５００により、割込み条件判定手段８０は、ヘッダ及びペイロード解析手段２０１からの受信フレーム有りの通知を受けて、受信フレーム数カウンタをインクリメントする。
【０１０９】
そして、ステップ３６００により、キャッシュ内データ推定手段２１は、受信フレームの通信プロトコルに対応するプログラムの使用“１”/未使用“０”を示すビット列をプログラムテーブル２０２より呼び出して、ヒット確率計算手段２２に渡す。
【０１１０】
ステップ３７００により、キャッシュ内データ推定手段２１は、前回プロセッサ１２へ送信したフレームを記憶しているか否かを判定し、記憶されているフレームがある場合は、ステップ３９００へ進む一方、記憶されているフレームがない場合は、ステップ３８００へ進む。
【０１１１】
ステップ３８００では、記憶されているフレームがない場合であるので、割込み条件判定手段８０は、受信したフレームを記憶フレームとする。
【０１１２】
これに対し、ステップ３９００では、記憶されているフレームがある場合であるので、キャッシュ内データ推定手段２１は、記憶フレームの通信プロトコルに対応するプログラムの使用“１”/未使用“０”を示すビット列をプログラムテーブル２０２より呼び出す。
【０１１３】
そして、ステップ４０００により、キャッシュ内データ推定手段２１は、受信フレームと、記憶フレームの呼び出した２つのビット列の使用プログラムの重畳度を計算する。
【０１１４】
そして、ステップ４１００により、送信制御手段２３は、受信フレーム処理装置１１内における送信待ちフレームの有無を判定し、送信待ちフレームがある場合はステップ４２００へ進む一方、送信待ちフレームがない場合は、ステップ４３００へ進む。
【０１１５】
つまり、送信制御手段２３は、送信待ちフレームがある場合、ステップ４２００により、プログラム重畳度の高い順にプロセッサ１２に送信できるように送信待ちのフレームを並び替える。なお、プログラム重畳度の高い順に送信待ちのフレームを並び替える手法は、前述の実施の形態１，２と同じであり、実施の形態１の図６（Ａ），（Ｂ）に示すように、常に直前のフレームとの間でプログラム重畳度を算出して、プログラム重畳度の高い順に送信待ちのフレームを並び替えても良いし、実施の形態２の図７（Ａ），（Ｂ）に示すように、常に最後に送ったフレームとのプログラム重畳度を計算して、プログラム重畳度の高い順に送信待ちのフレームを並び替えても良い。
【０１１６】
そして、ステップ４３００により、割込み条件判定手段８０は、受信フレーム数、及びタイマによる割込み条件の判定を行う。つまり、割込み条件判定手段８０は、受信フレーム数及びタイマ値が、予め設定した閾値を超えている場合は、割込み生成手段８１へその通知を行い、ステップ４４００へ進む一方、受信フレーム数及びタイマ値が、閾値を越えていない場合は、ステップ３３００へ戻り、受信フレームの有無の判断から行う。
【０１１７】
そして、割込み条件判定手段８０から受信フレーム数及びタイマ値が予め設定した閾値を超えたことを示す通知が、割込み生成手段８１へ出力されると、ステップ４４００により、割込み生成手段８１は、割込み信号を生成し、プロセッサ１２に対して割込みをかけ、その割込み信号出力を送信制御手段２３へ通知する。
【０１１８】
これにより、送信制御手段２３は、割込み生成手段８１による割込みにより、保持している複数の受信フレームをまとめてプロセッサ１２へ送信することができる。
【０１１９】
そして最後に、ステップ４５００により、キャッシュ内データ推定手段２１は、プロセッサ１２に最後に送信したフレームを記憶する。
【０１２０】
このように、本実施の形態３によれば、割込み条件判定手段８０と、割込み生成手段８１とを設け、受信フレーム数及びタイマ値が予め設定した閾値を超えた場合のみ、プロセッサ１２に対して割込みをかけて、複数の送信待ちの受信フレームをまとめて一つの割込みによりプロセッサ１２に対し送信するようにしたため、割込み回数を減らしつつも、キャッシュ１２１上のデータにヒットする確率の高いフレームから送信することで、処理速度を向上させることができる。
【０１２１】
また、予め指定した種別のフレームについては送信順の制御から除外することにより、例えば、リアルタイム処理などが必要なフレームについては送信制御させずに直ちにプロセッサ１２に送信するなどの処理をすることできる。
【０１２２】
また、通信プロトコルの種別によって割込みの条件を変えるように、要求される処理量に合わせてプロセッサ１２が処理可能な割込み閾値を設定することにより、割込み閾値を通信プロトコル毎に変えることで、リアルタイム処理が必要とされるプロトコルなどはフレームの送信制御を行わずに、直ちにプロセッサ１２に送信するといったことや、遅延が許容されるプロトコルなどはプロセッサ１２の処理に余裕があるときのみプロセッサ１２に送信するといった制御が可能となる等、プロセッサ１２の負荷を考慮して、通信プロトコル毎に最適な割込み閾値を設定することができ、プロセッサ１２のリソースを最大限活用できる。
【０１２３】
なお、割込みが通知された後のプロセッサ１２へのフレームの送信は、受信フレーム処理装置１１側から送信する他に、プロセッサ１２側からフレームを読み出すことも考えられる。その場合においてもプロセッサ１２が読み出す順番は、プログラム重畳度の高いものから読み出すように処理される。
【０１２４】
このように、本実施の形態３によれば、割込み条件判定手段８０と、割込み生成手段８１とを設け、受信フレーム数及びタイマ値が予め設定した閾値を超えたか場合のみ、プロセッサ１２に対して割込みをかけるようにしたので、割込み回数を減らしつつも、キャッシュ１２１上のデータにヒットする確率の高いフレームから送信することで、処理速度を向上させることができる。
【０１２５】
尚、上記実施の形態３の説明では、割込み条件判定手段８０は、受信フレーム数及びタイマ値が予め設定した閾値を超えたか場合のみ、割込み生成手段８１により、プロセッサ１２に対して割込みをかけるように説明したが、本発明ではこれに限らず、受信フレーム数、またはタイマ値のいずれか一方が予め設定した閾値を超えた場合に、プロセッサ１２に対して割込みをかけるようにしても勿論良い。
【産業上の利用可能性】
【０１２６】
本発明にかかる受信フレーム処理装置、通信処理装置、および受信フレーム処理方法は、キャッシュ上の命令コードやデータを有効に活用できる、という効果を有し、ネットワークよりフレームを受信する全ての受信フレーム処理装置、例えば、無線ＬＡＮ機能を有する携帯電話やＰＤＡ、ＬＡＮ機能を有するパーソナルコンピュータ、ＬＡＮ機能を有しておりネットワークを介してデータを受信してリアルタイム処理をするイベントドリブンなリアルタイムＯＳが組み込まれたデジタル家電の通信処理部の受信フレーム処理装置や、そのような通信処理装置、受信フレーム処理方法において有用である。
【図面の簡単な説明】
【０１２７】
【図１】本発明を内蔵する通信処理装置の構成図
【図２】実施の形態１における受信フレーム処理装置の構成図
【図３】実施の形態１における受信フレーム処理装置プログラムテーブルを示す図
【図４】実施の形態１における受信フレーム処理装置の動作を説明するためのフローチャート
【図５】実施の形態１における受信フレーム処理装置の動作を説明するためのフローチャート
【図６】実施の形態１における受信フレーム処理装置の送信制御方法を示す図
【図７】実施の形態２における受信フレーム処理装置の送信制御方法を示す図
【図８】実施の形態３における受信フレーム処理装置の構成図
【図９】実施の形態３における受信フレーム処理装置の動作を説明するためのフローチャート
【図１０】従来の受信フレーム処理装置の動作を示すフローチャート
【符号の説明】
【０１２８】
１０  ネットワークインタフェース
１１  受信フレーム処理装置
１２  プロセッサ
１２１  キャッシュ
１３  メインメモリ
２０  受信フレーム解析手段
２０１  ヘッダ及びペイロード解析手段
２０２  プログラムテーブル
２１  キャッシュ内データ推定手段
２２  ヒット確率計算手段
２３  送信制御手段
８０  割込み条件判定手段
８１  割込み生成手段
【図１】
2006065591.tif 000003
【図２】
2006065591.tif 000004
【図３】
2006065591.tif 000005
【図４】
2006065591.tif 000006
【図５】
2006065591.tif 000007
【図６】
2006065591.tif 000008
【図７】
2006065591.tif 000009
【図８】
2006065591.tif 000010
【図９】
2006065591.tif 000011
【図１０】
2006065591.tif 000012