(57)【要約】【課題】受信したデータをキャッシュメモリに書き込んで処理を行う場合に、大量のデータを受信する状況であっても、処理性能が低下することを抑制できるキャッシュ制御方法を提供する。【解決手段】領域設定手段８１は、予め定められた量の受信データを書き込み可能な領域である書き込み領域をキャッシュメモリに設定する。領域削除手段８２は、書き込み領域に書き込まれた一部または全部の受信データに対する処理ごとに、その処理の対象になった受信データが書き込まれた領域を削除する。また、領域設定手段８１は、受信データに対する処理ごとに、予め定められた量の受信データを受信した後に受信する受信データを書き込む位置に、受信データを書き込み可能な領域として、削除された領域に相当する量の領域を新たに設定する。【選択図】図１２
2012164209.tif 000002
【特許請求の範囲】
【請求項１】
予め定められた量の受信データを書き込み可能な領域である書き込み領域をキャッシュメモリに設定し、
前記書き込み領域に書き込まれた一部または全部の受信データに対する処理ごとに、当該処理の対象になった受信データが書き込まれた領域を削除し、
前記受信データに対する処理ごとに、前記予め定められた量の受信データを受信した後に受信する受信データを書き込む位置に、受信データを書き込み可能な領域として、削除された領域に相当する量の領域を新たに設定する
ことを特徴とするキャッシュ制御方法。
【請求項２】
受信データを書き込み領域に書き込み、
メインメモリとキャッシュメモリのいずれかを選択して、書き込まれた受信データを読み取り、
書き込み領域に書き込むことが可能な量を超えるデータを受信したか否かを判定し、
受信データを書き込み領域に書き込む際、書き込み領域に書き込むことが可能な量を超えた受信データをメインメモリに書き込み、
前記受信データをメインメモリからプリフェッチする
請求項１記載のキャッシュ制御方法。
【請求項３】
書き込み領域を設定する際、各受信データのうちの少なくとも一部の領域である縮小領域を書き込み可能な領域としてキャッシュメモリに設定する
請求項１または請求項２記載のキャッシュ制御方法。
【請求項４】
縮小領域のサイズと受信データのサイズとを比較し、
受信データのサイズが縮小領域のサイズ以下の場合、受信データのうち縮小領域のサイズを超える部分のデータをメインメモリに書き込み、縮小領域のサイズを超える部分の受信データをメインメモリからプリフェッチする
請求項３記載のキャッシュ制御方法。
【請求項５】
書き込み領域をキャッシュインジェクションの対象としてキャッシュメモリに設定する
請求項１から請求項４のうちのいずれか１項に記載のキャッシュ制御方法。
【請求項６】
予め定められた量の受信データを書き込み可能な領域である書き込み領域をキャッシュメモリに設定する領域設定手段と、
前記書き込み領域に書き込まれた一部または全部の受信データに対する処理ごとに、当該処理の対象になった受信データが書き込まれた領域を削除する領域削除手段とを備え、
前記領域設定手段は、前記受信データに対する処理ごとに、前記予め定められた量の受信データを受信した後に受信する受信データを書き込む位置に、受信データを書き込み可能な領域として、削除された領域に相当する量の領域を新たに設定する
ことを特徴とするキャッシュ制御装置。
【請求項７】
受信データを書き込み領域に書き込む受信データ書き込み手段と、
メインメモリとキャッシュメモリのいずれかを選択して、書き込まれた受信データを読み取るデータ読取手段と、
書き込み領域に書き込むことが可能な量を超えるデータを受信したか否かを判定する受信データ判定手段とを備え、
受信データ書き込み手段は、書き込み領域に書き込むことが可能な量を超えた受信データをメインメモリに書き込み、
前記データ読取手段は、前記受信データをメインメモリからプリフェッチする
請求項６記載のキャッシュ制御装置。
【請求項８】
領域設定手段は、各受信データのうちの少なくとも一部の領域である縮小領域を書き込み可能な領域としてキャッシュメモリに設定する
請求項６または請求項７記載のキャッシュ制御装置。
【請求項９】
受信データを書き込み領域に書き込む受信データ書き込み手段と、
メインメモリとキャッシュメモリのいずれかを選択して、書き込まれた受信データを読み取るデータ読取手段と、
縮小領域のサイズと受信データのサイズとを比較するサイズ比較手段とを備え、
受信データ書き込み手段は、受信データのサイズが縮小領域のサイズ以下の場合、受信データのうち縮小領域のサイズを超える部分のデータをメインメモリに書き込み、
データ読取手段は、受信データのサイズが縮小領域のサイズ以下の場合、縮小領域のサイズを超える部分の受信データをメインメモリからプリフェッチする
請求項８記載のキャッシュ制御装置。
【請求項１０】
コンピュータに、
予め定められた量の受信データを書き込み可能な領域である書き込み領域をキャッシュメモリに設定する領域設定処理、および、
前記書き込み領域に書き込まれた一部または全部の受信データに対する処理ごとに、当該処理の対象になった受信データが書き込まれた領域を削除する削除処理を実行させ、
前記領域設定処理で、前記受信データに対する処理ごとに、前記予め定められた量の受信データを受信した後に受信する受信データを書き込む位置に、受信データを書き込み可能な領域として、削除された領域に相当する量の領域を新たに設定させる
ためのキャッシュ制御用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュインジェクションを利用してキャッシュメモリを制御するキャッシュ制御方法、キャッシュ制御装置およびキャッシュ制御用プログラムに関する。
【背景技術】
【０００２】
まず、通信ネットワークを介してパケットを受信する際の受信処理について説明する。一般的な受信処理では、デバイスドライバがメインメモリ（以降、メモリ）上に予め用意した受信バッファ／受信キュー（Receive Queue 。以下、ＲＱと記す。）が使用される。
【０００３】
図１３は、一般的な受信処理および受信処理を行う際のＲＱの状態を示す説明図である。ＮＩＣ（Network Interface Card）は、パケットを受信すると（図１３（ａ）におけるステップＳ６０１）、受信したデータをＤＭＡ（Direct Memory Access）によりメモリへと転送する（ステップＳ６０２）。メモリでは、図１３（ｂ）におけるステップＢ１に示すように、ドライバがメモリ上に用意した受信バッファ／受信キュー（ＲＱ）に転送されたデータが書き込まれる（ステップＳ６０３）。
【０００４】
その後、ＮＩＣがハードウェア割り込み（以下、Ｈ／Ｗ割り込みと記す。）をＣＰＵに通知すると（ステップＳ６０４）、ＣＰＵは、受信したデータに対する処理を開始する（ステップＳ６０５）。
【０００５】
このとき、キャッシュメモリ（以下、キャッシュと記すこともある。）には受信データが登録されていないため、図１３（ｂ）におけるステップＢ２に示すように、ＣＰＵがキャッシュのデータを参照すると（ステップＳ６０６）、キャッシュミスが発生する（ステップＳ６０７）。その結果、メモリ上の受信バッファからキャッシュへデータが読み出される（ステップＳ６０８）。メモリからデータが読み出される間、ＣＰＵは、処理を中断してデータが取得されるのを待つことになる（ステップＳ６０９）。メモリから読み出されたデータがキャッシュに登録されると（ステップＳ６１０）、ＣＰＵは、そのデータを読み取り、処理を再開する（ステップＳ６１１）。以上のステップＳ６０１〜ステップＳ６１１の処理が行われ、受信処理が終了する（ステップＳ６１２）。
【０００６】
次に、メモリアクセスによる遅延を解決する方法として広く用いられているプリフェッチについて説明する。プリフェッチとは、ＣＰＵがあるデータを参照する前にそのデータをメモリからキャッシュへ読み込むことにより、メモリアクセスによる遅延を解決するキャッシュ制御方法である。
【０００７】
次に、データの書き込みの観点からメモリアクセスによる遅延を解決するキャッシュ制御方法であるキャッシュインジェクションについて説明する。キャッシュインジェクションは、データをメモリへ書き込まず、直接キャッシュに書き込むキャッシュ制御方法である。
【０００８】
非特許文献１には、キャッシュインジェクションの実装方法が記載されている。非特許文献１に記載された方法では、インジェクトするデータのアドレスをキャッシュに付属するテーブルに登録し、そのアドレスに対する書き込みをスヌープすることでキャッシュへの書き込みを行う。また、非特許文献１には、キャッシュインジェクションの対象アドレスを登録する命令にｏｐｅｎ＿ｗｉｎｄｏｗ命令（ｏｐｗｄ）を使用する方法が記載されている。
【０００９】
また、特許文献１には、すでにキャッシュしているデータを対象としたキャッシュインジェクションの実装方法について記載されている。特許文献１に記載された方法は、キャッシュされたアドレス領域をキャッシュインジェクションの対象とするものである。キャッシュを作成することで、キャッシュインジェクションの対象を設定することが可能になる。
【００１０】
なお、Ｐｏｗｅｒアーキテクチャによるキャッシュの作成方法が、非特許文献２に記載されている。非特許文献２に記載された方法では、メモリにアクセスせず、０で初期化したキャッシュを作成するＤａｔａ  Ｃａｃｈｅ  Ｂｌｏｃｋ  Ｓｅｔ  ｔｏ  Ｚｅｒｏ（ｄｃｂｚ）命令によりキャッシュを作成する。
【００１１】
また、特許文献２には、ネットワークを介して外部と通信を行う情報処理装置が記載されている。特許文献２に記載された情報処理装置は、キャッシュメモリに格納されたデータを利用した後、キャッシュメモリにおける利用後のデータに対応するキャッシュラインを消去する。
【００１２】
特許文献３には、バッファメモリを有するパケット転送装置が記載されている。特許文献３に記載されたパケット転送装置は、パケット処理完了後にバッファ領域が不要になったときにバッファ領域を解放し、ヘッダ領域として必要な容量がバッファアレイ内の１個分の容量より大きい場合、バッファを複数個割り当てる。
【００１３】
特許文献４には、プロセッサ間のデータ転送方法が記載されている。特許文献４に記載されたデータ転送方法では、一連のパケット転送において、最初のパケット列の最後のパケットデータを主記憶に書き込んだ時点でＣＰＵに受信終了割り込みがかけられる。そして、割り込み時に通知された主記憶の書き込み範囲を示すアドレス範囲情報に従って、今回主記憶に書き込まれた範囲を認識し、その部分に関してのキャッシュ処理を実行する。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】米国特許第７８３６２５４号明細書
【特許文献２】特開２００８−３５２０２号公報
【特許文献３】特開２００９−８８６２２号公報
【特許文献４】特開平８−２８７０３１号公報
【非特許文献】
【００１５】
【非特許文献１】A. Milenkovic and V. Milutinovic, "Cache injection on bus based multiprocessors", SRDS'98 Proceedings of the The 17th IEEE Symposium on Reliable Distributed Systems, p.341-346, 1998.
【非特許文献２】IBM, "Power ISA Version 2.06 Revision B", p.685、965, July 23, 2010.
【発明の概要】
【発明が解決しようとする課題】
【００１６】
図１３（ａ）に示す一般的な受信処理では、メモリからキャッシュへデータの読み出し処理が行われている間はＣＰＵでの処理が中断するため、受信処理が遅れてしまうという問題がある。
【００１７】
また、プリフェッチするためには、読み出すデータが既にメモリに存在することが前提である。すなわち、メモリ上におけるネットワークの受信バッファにデータが書き込まれ、ＣＰＵがその書き込みを検知した後（ＣＰＵが割り込みを検知した後）、ＣＰＵはプリフェッチできるようになる。
【００１８】
したがって、ＣＰＵがそのパケットを即座に参照しようとすると、プリフェッチが間に合わず、ＣＰＵの処理が中断してしまうため、遅延が発生する。具体的には、ＣＰＵが受信パケットの各種ヘッダや受信データの先頭に対してプリフェッチしようとすると、対象のパケットは、受信処理が開始された直後または比較的早い段階で参照されるため、プリフェッチが間に合わない。したがって、ＣＰＵの処理が中断してしまい、メモリアクセスによる遅延を解決できない。特に、データサイズの小さなパケットの受信処理では、プリフェッチの効果を得られないことになる。
【００１９】
さらに、プリフェッチする方法では、メモリアクセスは削減されない。例えば、マルチコアプロセッサが通信ネットワークを介したパケットの受信処理や、他のメモリアクセスが発生する処理を並列で行う場合、メモリアクセスが集中するとメモリアクセスのバンド幅を圧迫してしまう。その結果、処理性能が向上しない（スケールアウトしない）という問題がある。
【００２０】
一方、キャッシュインジェクションでは、データが直接キャッシュに書き込まれることから、ＣＰＵはキャッシュのデータを読み込めばよく、メモリから読み込む必要はないため、メモリアクセスによる遅延が発生しない。この方法は、通信ネットワークを介してパケットを受信する受信処理やマルチコアによる並列処理で、メモリ上に存在しないデータをＮＩＣまたは他のコアから受け取る場合に有用である。
【００２１】
さらに、キャッシュインジェクションでは、一般的にデータをメモリに書き出さないため、メモリアクセスを削減できる。また、通信ネットワークを介したパケットの受信処理やコア間のデータ転送にキャッシュインジェクションを用いることで、メモリアクセスバンド幅が圧迫されることにより処理性能が向上しない（スケールアウトしない）という問題も解決できる。
【００２２】
しかし、パケットの受信処理またはマルチコアによる並列処理で、単にキャッシュインジェクションを用いた場合、高負荷時において、キャッシュインジェクションによる効果を十分に得られないという問題がある。具体的には、高負荷時の場合、メモリアクセスによる処理遅延の解決や、メモリアクセスバンド幅の制限による処理性能限界の解決といった効果を十分に得られない。
【００２３】
キャッシュの容量は一般的に小さいため、大量のデータがキャッシュに書き込まれる状況では、他のデータがキャッシュから追い出されることになる。すなわち、パケットの受信処理が高負荷になり、受信処理性能を超えて大量のデータがキャッシュインジェクションによりキャッシュに送られた場合、キャッシュが溢れ、ＣＰＵにより参照されるデータが処理前にキャッシュからメモリへと追い出されてしまう。
【００２４】
処理前のデータがメモリへ追い出されると、ＣＰＵが追い出されたデータを参照しようとする際、キャッシュミスが起こる。このとき、ＣＰＵは、キャッシュインジェクションを用いていない場合と同様、メモリから対象のデータを読み込むことになる。そのため、メモリアクセスによる処理遅延が発生してしまう。
【００２５】
また、キャッシュメモリを共有するマルチコアにおいて並列処理を行っている場合でも、あるコアでの受信処理により大量のキャッシュが使用されることで、他のコアで処理しているデータがキャッシュからメモリへ追い出されると、追い出されたデータを参照するためにメモリアクセスによる遅延が発生する。これによって、全体の処理性能が低下する。
【００２６】
そこで、本発明は、受信したデータをキャッシュメモリに書き込んで処理を行う場合に、大量のデータを受信する状況であっても、処理性能が低下することを抑制できるキャッシュ制御方法、キャッシュ制御装置およびキャッシュ制御用プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２７】
本発明によるキャッシュ制御方法は、予め定められた量の受信データを書き込み可能な領域である書き込み領域をキャッシュメモリに設定し、書き込み領域に書き込まれた一部または全部の受信データに対する処理ごとに、その処理の対象になった受信データが書き込まれた領域を削除し、受信データに対する処理ごとに、予め定められた量の受信データを受信した後に受信する受信データを書き込む位置に、受信データを書き込み可能な領域として、削除された領域に相当する量の領域を新たに設定することを特徴とする。
【００２８】
本発明によるキャッシュ制御装置は、予め定められた量の受信データを書き込み可能な領域である書き込み領域をキャッシュメモリに設定する領域設定手段と、書き込み領域に書き込まれた一部または全部の受信データに対する処理ごとに、その処理の対象になった受信データが書き込まれた領域を削除する削除手段とを備え、領域設定手段が、受信データに対する処理ごとに、予め定められた量の受信データを受信した後に受信する受信データを書き込む位置に、受信データを書き込み可能な領域として、削除された領域に相当する量の領域を新たに設定することを特徴とする。
【００２９】
本発明によるキャッシュ制御用プログラムは、コンピュータに、予め定められた量の受信データを書き込み可能な領域である書き込み領域をキャッシュメモリに設定する領域設定処理、および、書き込み領域に書き込まれた一部または全部の受信データに対する処理ごとに、その処理の対象になった受信データが書き込まれた領域を削除する削除処理を実行させ、領域設定処理で、受信データに対する処理ごとに、予め定められた量の受信データを受信した後に受信する受信データを書き込む位置に、受信データを書き込み可能な領域として、削除された領域に相当する量の領域を新たに設定させることを特徴とする。
【発明の効果】
【００３０】
本発明によれば、受信したデータをキャッシュメモリに書き込んで処理を行う場合に、大量のデータを受信する状況であっても、処理性能が低下することを抑制できる。
【図面の簡単な説明】
【００３１】
【図１】本発明の第１の実施形態におけるキャッシュ制御装置の例を示すブロック図である。
【図２】第１の実施形態におけるＣＰＵの例を示すブロック図である。
【図３】第１の実施形態におけるキャッシュ制御装置の動作例を示すフローチャートである。
【図４】第１の実施形態におけるキャッシュ制御装置の動作例およびＲＱの状態例を示すフローチャートである。
【図５】本発明の第２の実施形態におけるキャッシュ制御装置の例を示すブロック図である。
【図６】第３の実施形態におけるＣＰＵの例を示すブロック図である。
【図７】受信バッファキューに設定されるデータ構造の例を示す説明図である。
【図８】第３の実施形態におけるキャッシュ制御装置の動作例を示すフローチャートである。
【図９】受信バッファキューに設定されるデータ構造の他の例を示す説明図である。
【図１０】第５の実施形態におけるＣＰＵの例を示すブロック図である。
【図１１】第５の実施形態におけるキャッシュ制御装置の動作例を示すフローチャートである。
【図１２】本発明によるキャッシュ制御装置の最小構成の例を示すブロック図である。
【図１３】一般的な受信処理および受信処理を行う際のＲＱの状態を示す説明図である。
【発明を実施するための形態】
【００３２】
以下、本発明の実施形態を図面を参照して説明する。
【００３３】
実施形態１．
図１は、本発明の第１の実施形態におけるキャッシュ制御装置の例を示すブロック図である。本実施形態におけるキャッシュ制御装置は、プロセッサ１と、ＮＩＣ２と、メモリ３とを備えている。
【００３４】
プロセッサ１は、ＣＰＵ１１と、キャッシュメモリ１２（以下、キャッシュ１２と記す。）と、メモリコントローラ１３（以下、ＭＣ１３と記す。）と、Ｉ／Ｏコントローラ１５（以下、ＩＯＣ１５と記す。）とを含む。ＮＩＣ２は、ＩＯＣ１５に接続され、メモリ３は、ＭＣ１３に接続される。
【００３５】
プロセッサ１の内部では、ＣＰＵ１１がキャッシュ１２に接続され、キャッシュ１２、ＭＣ１３およびＩＯＣ１５が、内部バス１４で相互に接続される。
【００３６】
受信バッファ（図示せず）は、メモリ３上に確保され、ＣＰＵ１１によるアクセスまたはキャッシュインジェクションにより、受信バッファの一部がキャッシュ１２に一時的に記憶される。
【００３７】
図２は、本実施形態におけるＣＰＵ１１の例を示すブロック図である。ＣＰＵ１１は、領域設定手段２１と、領域削除手段２２とを有する。
【００３８】
領域設定手段２１は、予め定められた量の受信データを書き込み可能な領域（以下、書き込み領域と記す。）をキャッシュインジェクションの対象としてキャッシュ１２に設定する。具体的には、領域設定手段２１は、初期化時、受信キュー（ＲＱ）の先頭から整数個（ｎ個）分のパケットを書き込む領域をキャッシュインジェクションの対象としてキャッシュ１２に設定する。領域設定手段２１は、例えば、特許文献１および非特許文献２に記載されているように、０で初期化したキャッシュを作成することで、そのキャッシュ領域をキャッシュインジェクションの対象としてもよい。ただし、キャッシュ１２上にキャッシュインジェクションの対象となる領域を設定する方法は、上記方法に限定されない。
【００３９】
また、領域設定手段２１は、後述する領域削除手段２２が書き込み領域の一部または全部を削除したあと、削除された領域に相当する量の領域をキャッシュインジェクションの対象としてキャッシュ１２に新たに設定する。このとき、領域設定手段２１は、予め定められた量の受信データを受信した後に受信する受信データを書き込む位置に新たな書き込み領域を設定する。
【００４０】
領域削除手段２２は、キャッシュ１２の書き込み領域に書き込まれた受信データのうち、予め定められた処理の対象になった受信データが書き込まれている領域の削除を行う。予め定められた処理として、例えば、受信パケットのヘッダを解析する処理や、パケットを破棄する処理、上位レイヤのハンドラ起動を行う処理などが挙げられる。ただし、行われる処理は、上記処理に限定されない。なお、以下の説明では、キャッシュ１２でデータが書き込まれている領域の削除を行うことを、キャッシュを削除すると記すこともある。
【００４１】
ＩＯＣ１５は、メモリ３とキャッシュ１２のいずれかを選択して受信データを書き込む。具体的には、ＩＯＣ１５は、キャッシュ１２の書き込み領域に受信データを書き込む。一方、ＩＯＣ１５は、受信データをキャッシュ１２に書き込めない場合に、書き込めなかった受信データをメモリ３に書き込む。
【００４２】
なお、ＣＰＵ１１は、キャッシュ制御装置の記憶部（図示せず）に記憶されたプログラム（キャッシュ制御用プログラム）を読み込み、そのプログラムに従って、領域設定手段２１および領域削除手段２２として動作してもよい。
【００４３】
次に、プロセッサ１内の動作について説明する。図３は、本実施形態におけるキャッシュ制御装置の動作例を示すフローチャートである。まず、初期化時に、領域設定手段２１は、受信キュー（ＲＱ）の先頭から整数個（ｎ個）分のパケットが書き込まれる領域をキャッシュインジェクションの対象として設定する。以降、パケットを受信するごとに、図３に例示するステップＳ３０１〜ステップＳ３０３の処理が行われる。
【００４４】
キャッシュ制御装置がパケットを受信すると、一般的なパケット処理が行われる（ステップＳ３０１）。ＣＰＵ１１は、例えば、Ｅｔｈｅｒヘッダの宛先ＭＡＣアドレスが自身のものと異なる場合にパケットを破棄してもよい。また、ＣＰＵ１１は、Ｅｔｈｅｒヘッダのプロトコル情報に応じて上位レイヤのハンドラを起動する処理を行ってもよい。ただし、ここで行われるパケット処理は、上記内容に限定されず、他の処理が行われてもよい。
【００４５】
パケット処理の完了後、領域削除手段２２は、処理を終えた対象データのキャッシュを削除する（ステップＳ３０２）。その後、領域設定手段２１は、処理対象であったパケットのｎ個後に受信するパケット（すなわち、ｎ個先のパケット）が書き込まれるキャッシュ１２の領域をキャッシュインジェクションの対象として設定する（ステップＳ３０３）。
【００４６】
次に、キャッシュ制御装置全体の動作について説明する。図４は、本実施形態におけるキャッシュ制御装置の動作例およびＲＱの状態例を示すフローチャートである。図４（ｂ）に例示するＲＱの状態例では、ｎ＝３の場合を例示している。
【００４７】
ＮＩＣ２がパケットを受信すると（図４（ａ）におけるステップＳ７０１）、ＩＯＣ１５は、受信したデータをキャッシュインジェクションによりキャッシュ１２へ転送する（ステップＳ７０２）。これにより、図４（ｂ）におけるステップＢ３に例示するように、キャッシュ１２には、メモリ３上の受信バッファ／受信キュー（ＲＱ）のキャッシュとして受信データが書き込まれる（ステップＳ７０３）。
【００４８】
その後、ＮＩＣ２がＨ／Ｗ割り込みをＣＰＵ１１に通知すると（ステップＳ７０４）、ＣＰＵ１１は、受信処理を開始する（ステップＳ７０５）。この際、キャッシュインジェクションにより、対象のデータがキャッシュ１２に書き込まれるため、ＣＰＵ１１は、受信処理において受信データを参照したとき（ステップＳ７０６）、図４（ｂ）におけるステップＢ４に例示するように、キャッシュミスを発生させず、即座にデータを参照できる（ステップＳ７０７）。
【００４９】
その後、図４（ｂ）におけるステップＢ５に例示するように、領域削除手段２２は、受信処理の最後にキャッシュ１２を操作し、処理対象データのキャッシュを削除する（ステップＳ７１１）。そして、領域設定手段２１は、ｎ個先のパケットが書き込まれるキャッシュ１２の領域をキャッシュインジェクションの対象として新たに設定する。その結果、キャッシュ１２の内容が更新される（ステップＳ７１０）。以上のステップＳ７０１〜ステップＳ７１１の処理が行われ、受信処理が終了する（ステップＳ７１２）。
【００５０】
以上のように、本実施形態によれば、領域設定手段２１が書き込み可能領域をキャッシュ１２に設定し、削除手段２２がキャッシュ１２に書き込まれた一部または全部の受信データに対する処理ごとにその処理の対象になった受信データが書き込まれている領域の削除を行う。そして、領域設定手段２１が、受信データに対する処理ごとに、予め定められた量の受信データを受信した後に受信する受信データが書き込まれる位置に、削除された領域に相当する量の領域を新たに設定する。
【００５１】
そのような構成により、受信したデータをキャッシュメモリに書き込んで処理を行う場合に、大量のデータを受信する状況であっても、処理性能が低下することを抑制できる。すなわち、メモリアクセスを削減し、キャッシュ使用量を抑制することで、キャッシュインジェクションの効果を最大限に引き出すことができる。
【００５２】
例えば、図１３（ａ）に示す一般的な受信処理と比較すると、ステップＳ６０３に示すＮＩＣ２からメモリ３への書き込み処理、ステップＳ６０８に示すＣＰＵ１１からメモリ３への読み出し処理、および、これらの処理に伴ってキャッシュ１２に記憶されたデータが追い出される際に、そのデータがメモリ３へ書き出される処理に伴うメモリアクセスが削減される。これらのメモリアクセスが削減されることで、メモリアクセスに伴う処理遅延が解消されるため、処理性能を向上させることができる。
【００５３】
また、本実施形態によれば、使用されるキャッシュ１２がパケットｎ個分に制限される。したがって、ｎを適切な値に設定することで、キャッシュの使用量を制御できる。さらに、キャッシュが大量に使用されることを回避できると共に、次に処理する受信データがキャッシュからメモリへ追い出されることを回避できる。すなわち、追い出されたデータを再度メモリから読み出すことによる処理性能の低下を抑制できる。
【００５４】
実施形態２．
次に、第２の実施形態について説明する。図５は、本発明の第２の実施形態におけるキャッシュ制御装置の例を示すブロック図である。なお、第１の実施形態と同様の構成については、図１と同一の符号を付し、説明を省略する。本実施形態におけるキャッシュ制御装置も、プロセッサ１と、ＮＩＣ２と、メモリ３とを備えている。ＮＩＣ２およびメモリ３については、第１の実施形態と同様である。
【００５５】
プロセッサ１は、２つのＣＰＵ１１と、キャッシュ１２と、ＭＣ１３と、ＩＯＣ１５とを含む。２つのＣＰＵ１１は、それぞれキャッシュ１２に接続される。すなわち、本実施形態におけるキャッシュ制御装置は、図５に例示するように、複数のＣＰＵ１１がキャッシュ１２を共有する構成のマルチコアプロセッサである。なお、ＣＰＵ１１、キャッシュ１２、ＭＣ１３、および、ＩＯＣ１５の内容は、第１の実施形態と同様である。
【００５６】
このように、キャッシュ制御装置が図５に例示する構成をとる場合であっても、第１の実施形態と同様、メモリアクセスの削減およびキャッシュ使用量の抑制により、処理性能を向上させることができる。
【００５７】
さらに、本実施形態によれば、共有されるキャッシュが大量に使用されることを抑制できる。よって、他のコアによる処理で扱われるデータをキャッシュからメモリに追い出すことが減るため、他の処理の性能低下を抑えられる。すなわち、本実施形態によれば、並列処理によるスケールアウトが可能になる。
【００５８】
実施形態３．
次に、第３の実施形態について説明する。本実施形態におけるキャッシュ制御装置の構成は、第１の実施形態と同様である。すなわち、本実施形態におけるキャッシュ制御装置も、プロセッサ１と、ＮＩＣ２と、メモリ３とを備えている。また、プロセッサ１は、ＣＰＵ１１と、キャッシュ１２と、ＭＣ１３と、ＩＯＣ１５とを含む。ただし、図５に例示するように、キャッシュ制御装置が複数のＣＰＵ１１を備えていてもよい。
【００５９】
第３の実施形態では、受信したパケットの処理をＣＰＵ１１が行っている間に、キャッシュ制御装置がｎ個以上のパケットを新たに受け取った場合の処理について説明する。
【００６０】
図６は、本実施形態におけるＣＰＵ１１の例を示すブロック図である。本実施形態におけるＣＰＵ１１は、領域設定手段２１と、領域削除手段２２と、受信データ判定手段２３と、データ読取手段２４とを有する。なお、領域設定手段２１および領域削除手段２２については、第１の実施形態と同様である。また、ＣＰＵ１１は、キャッシュ制御装置の記憶部（図示せず）に記憶されたプログラム（キャッシュ制御用プログラム）を読み込み、そのプログラムに従って、領域設定手段２１、領域削除手段２２、受信データ判定手段２３およびデータ読取手段２４として動作してもよい。
【００６１】
受信データ判定手段２３は、予め定められた所定量の受信データを書き込み可能な領域（すなわち、書き込み領域）に書き込むことが可能な量を超えるデータを受信したか否かを判定する。具体的には、受信データ判定手段２３は、ｎ個先の受信データを受信したか否かを確認する。受信データ判定手段２３は、例えば、キャッシュ１２に設定されたキャッシュインジェクションの対象が予め定められた所定量になっているか否かを判定することにより、書き込み領域に設定可能な量を超えるデータを受信したか否かを判定してもよい。設定可能な量を超えるデータを受信した場合、受信データ判定手段２３は、ＩＯＣ１５に対して、設定可能な量を超えるデータをメモリ３に書き込むよう指示する。
【００６２】
図７は、受信バッファキュー（ＲＱ）に設定されるデータ構造の例を示す説明図である。図７に示す例では、受信バッファキューが、受信したデータを記憶する領域である受信データ領域と、受信したデータを管理する領域である管理用データ領域とを含んでいることを示す。このように、受信バッファキューには、パケットごとに管理用データ領域と受信データ領域が確保される。なお、図７では、受信バッファキューを連続領域として確保している場合を例示しているが、受信バッファキューをリスト構造で管理する場合のデータ構造も同様である。また、受信データ領域のみをキャッシュインジェクションの対象としてもよく、受信データ領域と管理用データ領域の両方をキャッシュインジェクションの対象としてもよい。
【００６３】
受信されたデータは、受信データ領域に、その領域の先頭から書き込まれる。また、管理用データ領域には、受信時のタイムスタンプ、受信データサイズ、受信が完了したことを示す受信完了フラグなどが含まれる。受信データ判定手段２３は、メモリ３にデータを書き込む指示を行う際、管理用データ領域に設定すべき情報を受信したデータと合わせて書き込む指示を行う。
【００６４】
データ読取手段２４は、メモリ３とキャッシュ１２のいずれかを選択して書き込まれたデータを読み取る。例えば、メモリ３が図７に例示するデータ構造の場合、受信したデータに対して受信データフラグが受信完了を示しているのであれば、その受信データはメモリ上に書き込まれていることを意味する。この場合、データ読取手段２４は、プリフェッチを行う。一方、受信したデータがメモリ３上に記憶されていない場合、領域設定手段２１は、受信したデータを記憶する領域をキャッシュインジェクションの対象としてキャッシュ１２に新たに設定する。
【００６５】
このように、受信データ判定手段２３が書き込み領域に設定可能な量を超えるデータを受信したと判定した場合（すなわち、ｎ個先のデータを受信したと判定した場合）、データ読取手段２４は、受信データをメモリ３からプリフェッチする。
【００６６】
次に、プロセッサ１内の動作について説明する。図８は、本実施形態におけるキャッシュ制御装置の動作例を示すフローチャートである。なお、初期化時に書き込み領域をキャッシュインジェクションの対象として設定する処理は、第１の実施形態と同様である。以降、パケットを受信するごとに、図８に例示するステップＳ４０１〜ステップＳ４０５の処理が行われる。
【００６７】
キャッシュ制御装置がパケットを受信すると、受信したパケットに対するパケット処理が行われる（ステップＳ４０１）。なお、ステップＳ４０１の処理は、第１の実施形態におけるステップＳ３０１の処理と同様である。パケット処理の完了後、領域削除手段２２は、処理を終えた対象データのキャッシュを削除する（ステップＳ４０２）。
【００６８】
キャッシュの削除後、受信データ判定手段２３は、ｎ個先のパケットが既に受信されているか否かを確認する（ステップＳ４０３）。受信データ判定手段２３は、例えば、図７に例示する管理用データ領域内に含まれる受信完了フラグをもとにｎ個先のパケットが既に受信されているか否かを確認する。
【００６９】
ｎ個先のパケットが既に受信されている場合（ステップＳ４０３におけるＹＥＳ）、ｎ個先のパケットデータはメモリ上に書き込まれているため、データ読取手段２４は、プリフェッチを行う（ステップＳ４０４）。一方、ｎ個先のパケットがまだ受信されていない場合（ステップＳ４０３におけるＮＯ）、領域設定手段２１は、そのパケットデータが書き込まれる領域をキャッシュインジェクションの対象に設定する（ステップＳ４０５）。この場合、データ読取手段２４は、キャッシュ１２から対象データを読み取ることになる。
【００７０】
以上のように、本実施形態によれば、受信データ判定手段２３が、書き込み領域に書き込むことが可能な量を超えるデータを受信したか否かを判定する。書き込み領域に書き込むことが可能な量を超えるデータを受信した場合、ＩＯＣ１５がその受信データをメモリ３に書き込む。そして、データ読取手段２４が、その受信データをメモリ３からプリフェッチする。よって、第１の実施形態の効果に加え、キャッシュ制御装置が一時的に受信処理性能を超えたパケットを受信した場合であっても、パケットを欠落させず、かつ、メモリアクセスによる遅延を抑制して受信データを処理できる。
【００７１】
例えば、ｄｃｂｚ命令により０で初期化されたキャッシュを設定する場合、メモリのデータは参照されない。そのため、ｎ個目以降のパケットデータがＤＭＡによりメモリへ書き出された後に、ｄｃｂｚ命令によってキャッシュを作成する方法では、ＣＰＵが０で初期化されたキャッシュ上のデータを読み込むことになる。すなわち、ＣＰＵが受信したデータと異なるデータを参照してしまうことになる。
【００７２】
しかし、本実施形態では、図８に例示する処理に基づいてキャッシュ１２を制御し、メモリ３上に書かれたパケットデータも処理するため、キャッシュの登録方法によりｎ個目以降のパケットデータが適切に処理されないという問題を回避できる。
【００７３】
実施形態４．
次に、第４の実施形態について説明する。本実施形態におけるキャッシュ制御装置の構成は、第１の実施形態と同様である。ただし、図５に例示するように、キャッシュ制御装置が複数のＣＰＵ１１を備えていてもよい。
【００７４】
第１の実施形態〜第３の実施形態では、各受信データ領域の全体をキャッシュインジェクションの対象にする場合について説明した。本実施形態では、キャッシュの使用量をさらに抑えるため、受信データにおけるヘッダ等の先頭部分だけをキャッシュインジェクションの対象にする点において、第１の実施形態〜第３の実施形態と異なる。それ以外については、第１の実施形態〜第３の実施形態と同様である。
【００７５】
図９は、受信バッファキュー（ＲＱ）に設定されるデータ構造の他の例を示す説明図である。図９に例示するＲＱは、図７に例示するＲＱと同様、受信データ領域と管理用データ領域とを含む。また、図９に例示するＲＱのうち網掛け部分が、本実施形態においてキャッシュインジェクションの対象とする領域に相当する。
【００７６】
領域設定手段２１は、キャッシュインジェクションの対象として、各受信データのうちの少なくとも一部の領域をキャッシュ１２に設定する。以下、この一部に相当する領域のことを、縮小領域と記す。
【００７７】
具体的には、領域設定手段２１は、各受信データ領域のうち、先頭ｋキャッシュラインの領域をキャッシュインジェクションの対象として設定する。ここで、ｋは、予め定められた整数値である。このようにすることで、受信データ領域のうち受信データが書き込まれないキャッシュの領域の使用量を削減できる。
【００７８】
例えば、受信データがｋキャッシュライン分のサイズ以下の場合、受信データ全てを書き込む場合と比較すると、１パケット毎に（受信データ領域サイズ）−（ｋキャッシュラインのサイズ）分のキャッシュ使用量を削減できる。なお、受信データがｋキャッシュライン分のサイズより大きい場合、ＣＰＵ１１は、メモリ３を参照して、受信データの残り部分を参照するようにすればよい。
【００７９】
なお、図９では、受信データ領域の情報をキャッシュインジェクションの対象とする場合を例示しているが、キャッシュインジェクションの対象に管理用データ領域の情報を含めてもよい。
【００８０】
以上のように、本実施形態によれば、領域設定手段２１が各受信データのうちの少なくとも一部の領域をキャッシュインジェクションの対象領域としてキャッシュ１２に設定する。そのため、第１の実施形態〜第３の実施形態における効果に加え、キャッシュ使用量を削減することができる。
【００８１】
すなわち、例えば、図９に例示する受信バッファキューを用いてパケットの受信する処理を行う場合、受信データ領域すべてをキャッシュインジェクションの対象としてキャッシュ１２に設定した場合、受信データ領域のうち、受信データが書き込まれない領域のキャッシュは無駄になってしまう。しかし、本実施形態では、受信データが書き込まれない領域部分を削減させるため、キャッシュの使用量をさらに抑えられる。
【００８２】
実施形態５．
次に、第５の実施形態について説明する。第４の実施形態では、受信データ領域のうちの一部のデータ領域をキャッシュインジェクションの対象としてキャッシュ１２に設定する場合について説明した。本実施形態におけるキャッシュ制御装置は、第４の実施形態における処理に加え、受信したデータのうちキャッシュインジェクションされなかったデータの残り部分を受信データのサイズに合わせてプリフェッチする処理を行う。
【００８３】
本実施形態におけるキャッシュ制御装置の構成も、第１の実施形態と同様である。すなわち、本実施形態におけるキャッシュ制御装置も、プロセッサ１と、ＮＩＣ２と、メモリ３とを備えている。また、プロセッサ１は、ＣＰＵ１１と、キャッシュ１２と、ＭＣ１３と、ＩＯＣ１５とを含む。ただし、図５に例示するように、キャッシュ制御装置が複数のＣＰＵ１１を備えていてもよい。
【００８４】
図１０は、本実施形態におけるＣＰＵ１１の例を示すブロック図である。本実施形態におけるＣＰＵ１１は、領域設定手段２１と、領域削除手段２２と、受信データ判定手段２３と、データ読取手段２４と、サイズ比較手段２５とを有する。なお、領域設定手段２１、領域削除手段２２および受信データ判定手段２３については、第４の実施形態と同様である。また、ＣＰＵ１１は、キャッシュ制御装置の記憶部（図示せず）に記憶されたプログラム（キャッシュ制御用プログラム）を読み込み、そのプログラムに従って、領域設定手段２１、領域削除手段２２、受信データ判定手段２３、データ読取手段２４およびサイズ比較手段２５として動作してもよい。
【００８５】
サイズ比較手段２５は、各受信データの先頭から一部に相当する領域（すなわち、縮小領域）のサイズと、受信データのサイズとを比較する。サイズ比較手段２５は、受信データのサイズを、例えば、図９に例示する管理用データ領域内に含まれる受信データサイズを基に判断してもよい。
【００８６】
受信データのサイズが縮小領域のサイズ以下の場合、受信データはキャッシュインジェクションされる。一方、受信したデータサイズが縮小領域のサイズよりも大きい場合、キャッシュインジェクションされなかった領域が存在することになる。この場合、データ読取手段２４は、メモリ３からその領域のデータをプリフェッチする。このようにすることで、キャッシュの使用量を減らし、かつメモリアクセスによる遅延を削減できる。
【００８７】
次に、動作について説明する。図１１は、本実施形態におけるキャッシュ制御装置の動作例を示すフローチャートである。キャッシュ制御装置がパケットを受信すると、サイズ比較手段２５は、受信したデータのサイズとキャッシュインジェクションの対象に登録したｋキャッシュラインのサイズとを比較する（ステップＳ５０１）。サイズ比較手段２５は、例えば、受信バッファキューにおける管理用データ領域を参照して、受信したデータのサイズを判断すればよい。
【００８８】
受信したデータサイズが縮小領域のサイズ以下の場合（ステップＳ５０１におけるＮＯ）、受信データはキャッシュインジェクションされる。一方、受信したデータサイズが縮小領域のサイズよりも大きい場合（ステップＳ５０１におけるＹＥＳ）、データ読取手段２４は、メモリ３からその領域のデータをプリフェッチする（ステップＳ５０２）。
【００８９】
その後、受信したパケットのパケット処理が行われる（ステップＳ５０３）。なお、ステップＳ５０１の処理は、第１の実施形態におけるステップＳ３０１の処理と同様である。パケット処理の完了後、領域削除手段２２は、処理を終えた対象データのキャッシュを削除する（ステップＳ５０４）。そして、領域設定手段２１は、ｎ個先のパケットが書き込まれる領域をキャッシュインジェクションの対象として設定する（ステップＳ４０５）。
【００９０】
以上のように、本実施形態によれば、サイズ比較手段２５が縮小領域のサイズと受信データのサイズとを比較する。そして、受信データのサイズが縮小領域のサイズ以下の場合、ＩＯＣ１５は、受信データのうち縮小領域のサイズを超える部分のデータをメモリ３に書き込み、データ読取手段２４は、縮小領域のサイズを超える部分の受信データをメモリ３からプリフェッチする。よって、第４の実施形態における効果に加え、メモリアクセスによる遅延をより削減することができる。
【実施例１】
【００９１】
以下、具体的な実施例により本発明を説明するが、本発明の範囲は以下に説明する内容に限定されない。本実施例では、特許文献１に記載された実装方法を用いて、キャッシュインジェクションを実現するものとする。すなわち、本実施例におけるプロセッサは、特許文献１に記載されているように、キャッシュしているデータをキャッシュインジェクションの対象とするものとする。
【００９２】
また、本実施例におけるプロセッサは、非特許文献２に記載されたｄｃｂｚ命令および  Ｄａｔａ  Ｃａｃｈｅ  Ｂｌｏｃｋ  Ｉｎｖａｌｉｄａｔｅ（ｄｃｂｉ）命令によりキャッシュを操作できるものとする。なお、非特許文献２に記載されたｄｃｂｉ命令とは、キャッシュをメモリに書き出さずに削除する命令である。
【００９３】
次に、本実施例で用いる受信バッファのデータ構成について説明する。本実施例で用いる受信バッファは、図９に例示するように、連続した領域に等間隔で順にデータが格納されるキューを想定する。また、受信バッファには、パケットごとに管理用データ領域と受信データ領域とを有する。さらに、管理用データ領域には、受信時のタイムスタンプ、受信データサイズ、および受信完了フラグ等が含まれる。また、管理用データ領域と受信データ領域のサイズは、それぞれキャッシュラインサイズの整数倍とする。
【００９４】
また、領域設定手段２１は、初期化時、キューの先頭からｎ個分のパケットを書き込む領域をキャッシュインジェクションの対象としてキャッシュ１２に設定するものとする。ここで、ｎには、キャッシュサイズと受信処理の性能から最適な値が予め設定される。例えば、第２の実施形態で示すように、２つのＣＰＵが並列でパケット処理を行う場合、「キャッシュサイズ／２＞受信データ領域のサイズ×ｎ」になるｎを選択することで、受信データのキャッシュがメモリへ追い出されることを抑制できる。また、第３の実施形態で示すように、「プリフェッチを完了するまでにかかる時間＜ｎ個のパケットに対する処理時間」になるｎを選択することで、メモリアクセスによる遅延をなくすことができる。なお、整数ｎの値は、プログラム実行中に変更しないものとする。
【００９５】
次に、本実施例によるキャッシュ制御装置の動作について説明する。まず初めに、全受信データ領域をＤＭＡの対象としておく。その後、初めに受信するｎ個のパケットについての受信データ領域をキャッシュインジェクションの対象とするため、プロセッサ（例えば、領域設定手段２１）は、ｄｃｂｚ命令によりキャッシュを作成する。
【００９６】
その後、パケットごとに行われる一般的な受信処理の後、プロセッサ（例えば、領域削除手段２２および領域設定手段２１）は、ステップＳ７１１に例示するように、キャッシュを操作する。具体的には、プロセッサ（例えば、領域削除手段２２）は、処理対象であったパケットに対応する受信データ領域のキャッシュをｄｃｂｉ命令で削除する。そして、プロセッサ（例えば、領域設定手段２１）は、ｎ個先のパケットが書き込まれる受信データ領域をキャッシュインジェクションの対象とするため、ｄｃｂｚ命令によりキャッシュを作成する。その結果、ステップＳ７１０に例示するように、キャッシュ１２の内容が更新される。
【００９７】
なお、ｎ個先の受信データ（パケット）が書き込まれる領域は、処理対象であったパケットの受信データ領域を指すアドレスに、（管理用データ領域サイズ＋受信データ領域サイズ）×ｎを加算することで算出できる。なお、プロセッサ（例えば、領域削除手段２２および領域設定手段２１）は、それぞれのキャッシュ操作を受信データ領域の全キャッシュラインに対して行う。
【００９８】
このような処理を行うことで、例えば、図４（ｂ）に例示する受信バッファのように、常にｎ個のパケットデータのみキャッシュされることになる。
【００９９】
次に、本発明の最小構成について説明する。図１２は、本発明によるキャッシュ制御装置の最小構成の例を示すブロック図である。本発明によるキャッシュ制御装置は、予め定められた量の受信データ（例えば、ｎ個分のパケット）を書き込み可能な領域である書き込み領域（例えば、キャッシュインジェクションの対象領域）をキャッシュメモリ（例えば、キャッシュ１２）に設定する領域設定手段８１と、書き込み領域に書き込まれた一部または全部の受信データに対する処理（例えば、パケット処理）ごとに、その処理の対象になった受信データが書き込まれた領域を削除する（例えば、キャッシュを削除する）領域削除手段８２（例えば、領域削除手段２２）とを備えている。
【０１００】
領域設定手段８１は、受信データに対する処理ごとに、予め定められた量の受信データ（例えば、ｎ個分のパケット）を受信した後に受信する受信データ（例えば、ｎ個先のパケット）を書き込む位置に、受信データを書き込み可能な領域として、削除された領域に相当する量の領域を新たに設定する。
【０１０１】
以上のような構成により、受信したデータをキャッシュメモリに書き込んで処理を行う場合に、大量のデータを受信する状況であっても、処理性能が低下することを抑制できる。
【０１０２】
また、キャッシュ制御装置が、受信データを書き込み領域に書き込む受信データ書き込み手段（例えば、ＩＯＣ１５）と、メインメモリ（例えば、メモリ３）とキャッシュメモリのいずれかを選択して、書き込まれた受信データを読み取るデータ読取手段（例えば、データ読取手段２４）と、書き込み領域に書き込むことが可能な量を超えるデータを受信したか否かを判定する受信データ判定手段（例えば、受信データ判定手段２３）を備えていてもよい。
【０１０３】
そして、受信データ書き込み手段が、書き込み領域に書き込むことが可能な量を超えた受信データをメインメモリに書き込み、データ読取手段が、受信データをメインメモリからプリフェッチしてもよい。
【０１０４】
また、領域設定手段８１は、各受信データのうちの少なくとも一部の領域（例えば、先頭ｋキャッシュラインの領域）である縮小領域を書き込み可能な領域としてキャッシュメモリに設定してもよい。
【０１０５】
また、キャッシュ制御装置は、縮小領域のサイズと受信データのサイズとを比較するサイズ比較手段（例えば、サイズ比較手段２５）を備えていてもよい。そして、受信データ書き込み手段は、受信データのサイズが縮小領域のサイズ以下の場合、受信データのうち縮小領域のサイズを超える部分のデータをメインメモリに書き込み、データ読取手段は、受信データのサイズが縮小領域のサイズ以下の場合、縮小領域のサイズを超える部分の受信データをメインメモリからプリフェッチしてもよい。
【０１０６】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の実施形態および実施例の枠内において、種々の変更および調整が可能である。
【産業上の利用可能性】
【０１０７】
本発明は、キャッシュインジェクションを利用してキャッシュメモリを制御するキャッシュ制御装置に好適に適用される。また、本発明を、バッファキューを用いて処理を行う他の装置にも適応可能である。例えば、アクセラレータからのメモリ書き出しおよびキャッシュインジェクションがサポートされているアーキテクチャにおいて、そのアクセラレータを使用した処理に本発明を適応可能である。
【０１０８】
具体的には、アクセラレータに複数のジョブを投入し、それらの結果を順次受け取りながら処理を行う場合、それぞれのジョブについての出力データが発生する。このとき、出力データを書き込む領域の制御に、本発明による方法を適用することで、キャッシュの使用を一定量に制御できるため、メモリアクセスの削減といったキャッシュインジェクションの効果を最大限に引き出せる。
【符号の説明】
【０１０９】
１  プロセッサ
２  ＮＩＣ
３  メモリ
１１  ＣＰＵ
１２  キャッシュメモリ
１３  メモリコントローラ
１４  内部バス
１５  Ｉ／Ｏコントローラ
２１  領域設定手段
２２  領域削除手段
２３  受信データ判定手段
２４  データ読取手段
２５  サイズ比較手段
【図１】
2012164209.tif 000003
【図２】
2012164209.tif 000004
【図３】
2012164209.tif 000005
【図４】
2012164209.tif 000006
【図５】
2012164209.tif 000007
【図６】
2012164209.tif 000008
【図７】
2012164209.tif 000009
【図８】
2012164209.tif 000010
【図９】
2012164209.tif 000011
【図１０】
2012164209.tif 000012
【図１１】
2012164209.tif 000013
【図１２】
2012164209.tif 000014
【図１３】
2012164209.tif 000015