(57)【要約】      （修正有）【課題】データパケット処理の最適化を提供する。【解決手段】ネットワークを介して送信されるデータパケットを受信する段階と、データパケットについて分類情報を生成する段階と、分類情報に基づきデータパケットについてメモリ格納モードを選択する段階と、選択されたメモリ格納モードを利用してデータパケットを処理する段階とを備え、パッケット処理モジュールは、プリフェッチ・モジュール、キャッシュ蓄積モジュール、及びスヌープ・モジュールにより構成される。【選択図】図２
2011198360.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して送信されるデータパケットを受信する段階と、
前記データパケットに含まれる情報に基づき、前記データパケットについて分類情報を生成する段階と、
前記分類情報に基づき、前記データパケットについてメモリ格納モードを選択する段階と
を備える方法。
【請求項２】
前記メモリ格納モードを選択する段階はさらに、前記分類情報に基づき前記データパケットについてプリフェッチモードを選択する段階を有し、
前記方法はさらに、
前記プリフェッチモードが選択されることに応じて、前記データパケットをメモリに格納する段階と、
前記分類情報に少なくとも部分的に基づき、前記メモリからキャッシュへと、前記データパケットの少なくとも一部をフェッチする段階と
を備える請求項１に記載の方法。
【請求項３】
前記データパケットは第１のデータパケットであり、前記第１のデータパケットは第１のトラフィックフローと対応付けられており、
前記第１のデータパケットの前記少なくとも一部をフェッチする段階はさらに、前記第１のトラフィックフローに対応付けられている第２のデータパケットを処理している間に、前記第１のデータパケットおよび前記第２のデータパケットが同じトラフィックフローに対応付けられていることに少なくとも部分的に基づき、前記メモリから前記キャッシュへと、前記第１のデータパケットの前記少なくとも一部をフェッチする段階を有する請求項２に記載の方法。
【請求項４】
前記データパケットの前記少なくとも一部をフェッチする段階はさらに、処理コアが、前記データパケットの前記少なくとも一部に対して処理動作を実行するべく前記データパケットの前記少なくとも一部を要求する前に、前記データパケットの前記少なくとも一部を前記キャッシュにフェッチする段階を有する請求項２に記載の方法。
【請求項５】
前記分類情報を生成する段階はさらに、前記メモリから前記キャッシュへフェッチされる前記データパケットの前記少なくとも一部を示す指標を前記分類情報が含むように、前記データパケットについて前記分類情報を生成する段階を有する請求項２に記載の方法。
【請求項６】
前記メモリ格納モードを選択する段階はさらに、前記分類情報に基づき前記データパケットについてキャッシュ蓄積モードを選択する段階を有し、
前記方法はさらに、前記キャッシュ蓄積モードが選択されることに応じて、前記データパケットの一部をキャッシュに格納する段階を備える請求項１に記載の方法。
【請求項７】
前記データパケットの前記一部を前記キャッシュに格納する段階はさらに、前記データパケットの前記一部をネットワークコントローラから前記キャッシュへと送信する段階を有する請求項６に記載の方法。
【請求項８】
前記データパケットの前記一部は、前記データパケットの第１の部分を含み、前記データパケットは、前記第１の部分および第２の部分を含み、
前記方法はさらに、
前記データパケットの前記第２の部分を前記ネットワークコントローラからメモリへと送信する段階と、
前記データパケットの前記第２の部分の前記ネットワークコントローラから前記キャッシュへの送信を抑制する段階と
を備える請求項７に記載の方法。
【請求項９】
前記メモリ格納モードを選択する段階はさらに、前記データパケットについてスヌープモードを選択する段階を有し、
前記方法はさらに、
前記スヌープモードが選択されることに応じて、前記データパケットをメモリに送信する段階と、
前記データパケットを前記メモリに送信している間に、前記データパケットの一部についてスヌープを行う段階と
を備える請求項１に記載の方法。
【請求項１０】
前記分類情報を生成する段階はさらに、スヌープの対象となる前記データパケットの前記一部を示す指標を前記分類情報が含むように、前記データパケットについて前記分類情報を生成する段階を有する請求項９に記載の方法。
【請求項１１】
前記データパケットについて前記分類情報を生成する段階はさらに、
前記データパケットの優先度を決定する段階と、
前記データパケットの優先度が比較的高い優先度である場合には、前記分類情報が前記データパケットについてキャッシュ蓄積モードを示すように前記分類情報を生成する段階と
を有する請求項１に記載の方法。
【請求項１２】
前記データパケットについて前記分類情報を生成する段階はさらに、前記データパケットの優先度が比較的高い優先度である場合には、前記データパケット全体をネットワークコントローラからキャッシュへと直接格納すべきである旨を前記分類情報が示すように前記分類情報を生成する段階を有する請求項１１に記載の方法。
【請求項１３】
前記データパケットについて前記分類情報を生成する段階はさらに、
前記データパケットの優先度を決定する段階と、
前記データパケットの優先度が比較的低い優先度である場合には、プリフェッチ無しで前記データパケットをメモリに格納する格納モードを前記分類情報が示すように前記分類情報を生成する段階と、
前記データパケットの優先度が前記比較的高い優先度よりも低く、前記比較的低い優先度よりも高い場合には、前記データパケットについてプリフェッチモードを前記分類情報が示すように前記分類情報を生成する段階と
を有する請求項１に記載の方法。
【請求項１４】
処理コアと、
キャッシュと、
解析分類モジュールと、
メモリ格納モード選択モジュールと
を備え、
前記解析分類モジュールは、
ネットワークを介してネットワークコントローラが受信したデータパケットを前記ネットワークコントローラから受信して、
前記データパケットについて分類情報を生成し、
前記メモリ格納モード選択モジュールは、前記分類情報に基づき、前記データパケットについてメモリ格納モードを選択する
システム・オン・チップ（ＳＯＣ）。
【請求項１５】
前記メモリ格納モード選択モジュールがプリフェッチモードを選択することに応じて、前記データパケットをメモリに格納し、前記分類情報に少なくとも部分的に基づき、前記メモリから前記キャッシュへと前記データパケットの一部をプリフェッチするプリフェッチモジュールをさらに備える請求項１４に記載のＳＯＣ。
【請求項１６】
前記データパケットは、第１のトラフィックフローに対応付けられている第１のデータパケットであり、
前記プリフェッチモジュールは、前記処理コアが前記第１のトラフィックフローに対応付けられている第２のデータパケットを処理している間に、前記第１のデータパケットおよび前記第２のデータパケットが同じトラフィックフローに対応付けられていることに少なくとも部分的に基づき、前記第１のデータパケットの前記一部をプリフェッチする請求項１５に記載のＳＯＣ。
【請求項１７】
前記メモリは、前記ＳＯＣの外部に設けられている請求項１５に記載のＳＯＣ。
【請求項１８】
前記分類情報に少なくとも部分的に基づき、前記メモリ格納モード選択モジュールがキャッシュ蓄積モードを選択することに応じて、前記ネットワークコントローラが前記データパケットの一部を前記キャッシュに送信するように前記ネットワークコントローラを制御するキャッシュ蓄積モジュールをさらに備える請求項１４に記載のＳＯＣ。
【請求項１９】
前記分類情報に基づき、前記データパケットが前記ネットワークコントローラから前記メモリに送信されている間に、前記データパケットの一部に対してスヌープを行うスヌープモジュールをさらに備える請求項１４に記載のＳＯＣ。
【請求項２０】
前記分類情報は、前記スヌープモジュールによってスヌープされるべき前記データパケットを示す指標を含む請求項１９に記載のＳＯＣ。
【発明の詳細な説明】
【関連出願】
【０００１】
本願は、米国特許出願第６１／３１５，３３２号（出願日：２０１０年３月１８日）に基づく優先権を主張する。当該米国出願の明細書は、本明細書と一致しない内容の部分があればそのような部分は除き、全ての記載内容を参照により本願に組み込む。本願は、米国特許出願第１３／０３８，２５８号（出願日：２０１１年３月１日、代理人整理番号：ＭＰ３５８０）および米国特許出願第１３／０３８，２６６号（出願日：２０１１年３月１日、代理人整理番号：ＭＰ３５９８）に関する。両米国出願の明細書は、本明細書と一致しない内容の部分があればそのような部分は除き、全ての記載内容を参照により本願に組み込む。
【技術分野】
【０００２】
本開示の実施形態は、概してデータパケットの処理に関し、具体的にはデータパケット処理の最適化に関する。
【背景技術】
【０００３】
このセクションに記載する方法は、そう示されていない限り、本願で開示する請求項に対する先行技術ではなく、このセクションに記載することで先行技術であると認めるものでもない。
【０００４】
パケット処理システムでは、一例を挙げると、ネットワークコントローラが複数のデータパケット（例えば、ネットワークから受信した複数のデータパケット）をメモリ（例えば、システム・オン・チップ（ＳＯＣ）の外部にある外部メモリ）に格納するが、当該メモリは通常、読出レイテンシが比較的（例えば、ＳＯＣ内のキャッシュからの読み出す際のレイテンシと比較して）大きい。これら複数のデータパケットのうち１つのデータパケットに対してＳＯＣ内に含まれる処理コアがアクセスを試みると、当該データパケットはキャッシュに送信され、処理コアはキャッシュで当該データパケットにアクセスするとしてよい（例えば、当該データパケットを処理するためには、当該データパケットを適切なロケーションにルーティングして、当該データパケットに対応付けられているセキュリティ関連処理を実行する）。しかし、外部メモリからキャッシュへとデータパケットをローディングするので、読出レイテンシが比較的大きくなってしまうことが多い。
【０００５】
別の例を挙げると、ネットワークコントローラは複数のデータパケットを直接キャッシュに格納し、処理コアはキャッシュでデータパケットにアクセスする。しかし、このためには比較的大きなキャッシュが必要となり、キャッシュで上書きを頻繁に行う必要があり、および／または、キャッシュ内での混雑のためにキャッシュからメモリへと１以上のデータパケットをフラッシュする場合もある。
【発明の概要】
【課題を解決するための手段】
【０００６】
本開示のさまざまな実施形態によると、ネットワークを介して送信されるデータパケットを受信する段階と、データパケットについて分類情報を生成する段階と、分類情報に基づき、データパケットについてメモリ格納モードを選択する段階とを備える方法が提供される。さまざまな実施形態によると、メモリ格納モードを選択する段階はさらに、分類情報に基づきデータパケットについてプリフェッチモードを選択する段階を有し、方法はさらに、プリフェッチモードが選択されることに応じて、データパケットをメモリに格納する段階と、分類情報に少なくとも部分的に基づき、メモリからキャッシュへと、データパケットの少なくとも一部をフェッチする段階とを備える。さまざまな実施形態によると、メモリ格納モードを選択する段階はさらに、分類情報に基づきデータパケットについてキャッシュ蓄積モードを選択する段階を有し、方法はさらに、キャッシュ蓄積モードが選択されることに応じて、データパケットの一部をキャッシュに格納する段階を備える。さまざまな実施形態によると、メモリ格納モードを選択する段階はさらに、データパケットについてスヌープモードを選択する段階を有し、方法はさらに、スヌープモードが選択されることに応じて、データパケットをメモリに送信する段階と、データパケットをメモリに送信している間に、データパケットの一部についてスヌープを行う段階とを備える。
【０００７】
また、処理コアと、キャッシュと、解析分類モジュールと、メモリ格納モード選択モジュールとを備え、解析分類モジュールは、ネットワークを介してネットワークコントローラが受信したデータパケットをネットワークコントローラから受信して、データパケットについて分類情報を生成し、メモリ格納モード選択モジュールは、分類情報に基づき、データパケットについてメモリ格納モードを選択するシステム・オン・チップ（ＳＯＣ）が提供される。
【図面の簡単な説明】
【０００８】
以下の詳細な説明では、本明細書の一部を成す添付図面を参照する。添付図面では、全図面にわたって同様の参照番号は同様の構成要素を示し、本開示の原理を説明するための実施形態を図示する。他の実施形態を利用し得ること、および、本開示の範囲から逸脱することなく構造または論理を変更し得ることに留意されたい。このため、以下に記載する詳細な説明は、本開示を限定するものと解釈されるのではなく、本開示に係る実施形態の範囲は請求項およびその均等物によって定義されるものである。
【０００９】
【図１】本開示の一実施形態に係る、解析分類モジュール１８とパケット処理モジュール１６とを有するシステム・オン・チップ（ＳＯＣ）１００を備えるパケット通信システム１０（本明細書ではシステム１０と呼ぶこともある）を示す概略図である。
【００１０】
【図２】本開示の一実施形態に係る、図１のシステム１０を動作させるための方法２００の一例を説明するための図である。
【発明を実施するための形態】
【００１１】
図１は、本開示の一実施形態に係る、解析分類モジュール１８とパケット処理モジュール１６とを有するシステム・オン・チップ（ＳＯＣ）１００を備えるパケット通信システム１０（本明細書ではシステム１０と呼ぶこともある）を示す概略図である。ＳＯＣ１００はさらに、処理コア１４およびキャッシュ３０を有する。キャッシュ３０は、例えば、レベル２（Ｌ２）キャッシュである。図１に図示している処理コア１４は１つのみであるが、一実施形態によると、ＳＯＣ１００は複数の処理コアを有する。ＳＯＣ１００は他にも複数の構成要素を有しているが（例えば、通信バス、１以上の周辺機器、インターフェース等）、これらの構成要素は図示を簡略化するべく図１には図示していない。
【００１２】
システム１０は、メモリ２６を備える。一実施形態によると、メモリ２６はＳＯＣ１００の外部に設けられている。一実施形態によると、メモリ２６は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）（例えば、ダブル・データ・レート・スリー（ＤＤＲ３）シンクロナス・ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ））である。
【００１３】
一実施形態によると、システム１０は、複数のデバイス、例えば、デバイス１２ａ、デバイス１２ｂ、および／または、デバイス１２ｃに結合されているネットワークコントローラ１２を備える。ネットワークコントローラ１２、ならびに、デバイス１２ａ、１２ｂおよび１２ｃはＳＯＣ１００の外部に設けられているものとして図示されているが、一実施形態によると、ネットワークコントローラ１２、ならびに／または、デバイス１２ａ、１２ｂおよび１２ｃのうち１以上のデバイスはＳＯＣ１００の内部に設けられる。ネットワークコントローラ１２は、バス６０を介してメモリ２６に結合されている。バス６０はＳＯＣ１００の外部に設けられているものとして図示されているが、一実施形態によると、バス６０はＳＯＣ１００の内部に設けられている。一実施形態によると、図１には図示していないが、ＳＯＣ１００の他の複数の構成要素がバス６０を共用する。
【００１４】
ネットワークコントローラ１２は、例えば、ネットワークスイッチ、ネットワークルータ、ネットワークポート、イーサネット（登録商標）ポート（例えば、ギガバイトイーサネット（登録商標）ポート）、または、ネットワーク接続可能な任意の適切なデバイスと対応付けられている。一実施形態によると、ＳＯＣ１００はネットワークデバイスの一部であり、データパケットはネットワークを介して送信される。ネットワークコントローラ１２は、複数のデバイス、例えば、デバイス１２ａ、デバイス１２ｂ、および／または、デバイス１２ｃから、（例えば、インターネット等のネットワークから受信した）データパケットを受信する。デバイス１２ａ、１２ｂ、および／または、１２ｃは、例えば、ネットワークスイッチ、ネットワークルータ、ネットワークポート、イーサネット（登録商標）ポート（例えば、ギガバイトイーサネット（登録商標）ポート）、ネットワーク接続可能な任意の適切なデバイス等のネットワークデバイスである。
【００１５】
一実施形態によると、解析分類モジュール１８は、ネットワークコントローラ１２からデータパケットを受信する。図１に図示しているネットワークコントローラ１２は１つのみであるが、一実施形態によると、解析分類モジュール１８は、複数のネットワークコントローラからデータパケットを受信する。図１には図示していないが、一実施形態によると、解析分類モジュール１８は、他のデバイス、例えば、ネットワークスイッチ、ネットワークルータ、ネットワークポート、イーサネット（登録商標）ポート等からもデータパケットを受信する。
【００１６】
解析分類モジュール１８は、ネットワークコントローラ１２（および／または任意のその他の適切なソース）から受信したデータパケットを解析および／または分類する。解析分類モジュール１８は、受信したデータパケットを解析および分類して、受信したデータパケットに対応する分類情報３４（分類３４とも呼ぶ）を生成する。例えば、解析分類モジュール１８は、データパケットのカプセル化構造を概して定めている一連の所定のネットワークプロトコルおよびルールに従ってデータパケットを解析する。一例を挙げると、データパケットの分類３４には、データパケットの種類、優先度、送信先アドレス、キューアドレス、トラフィックフロー情報、他の分類情報（例えば、セッション数、プロトコル等）等に対応付けられている情報が含まれている。別の例を挙げると、データパケットの分類３４には、データパケットの取り扱いが同様であるフローと当該データパケットとの対応付け、または、当該データパケットのクラスがさらに含まれている。本明細書ではより詳細に後述するが、分類３４はさらに、データパケットのうち、メモリ２６および／またはキャッシュ３０に格納されるべき部分、選択的にキャッシュ３０にプリフェッチされる部分、および／または、パケット処理モジュール１６によってスヌープされる部分を示す。
【００１７】
一実施形態に係る解析分類モジュール１８は、同時係属中の米国特許出願第１２／９４７６７８号（発明の名称：「反復式の解析および分類」、代理人整理番号第ＭＰ３４４４号）に記載されている。当該出願の明細書は、本明細書と一致しない部分があればその部分を除き、その内容を全て参照により本願に組み込むものとする。別の実施形態によると、解析分類モジュール１８に代えて、任意のその他の適切なハードウェアコンポーネントおよび／またはソフトウェアコンポーネントを利用してデータパケットを解析および分類するとしてもよい。
【００１８】
パケット処理モジュール１６は、解析分類モジュール１８からデータパケットの分類３４を受信する。一実施形態によると、パケット処理モジュール１６は、メモリ格納モード選択モジュール２０と、プリフェッチモジュール２２と、キャッシュ蓄積モジュール４２と、スヌープモジュール６２とを持つ。一実施形態に係るプリフェッチモジュール２２は、同時係属中の米国特許出願第１３／０３８，２５８号（発明の名称：「データパケットのプリフェッチ」、代理人整理番号第ＭＰ３５８０号）に記載されている。当該出願の明細書は、本明細書と一致しない部分があればその部分を除き、その内容を全て参照により本願に組み込むものとする。
【００１９】
パケット処理モジュール１６は、ネットワークコントローラ１２が受信し解析分類モジュール１８が分類する各データパケットについて、分類３４に基づき複数のメモリ格納モードのうち１以上のメモリ格納モードで動作する。例えば、パケット処理モジュール１６は、プリフェッチモード、キャッシュ蓄積モード、および、スヌープモードのうちいずれか１つのモードで動作する。これについては、より詳細に後述する。一実施形態によると、パケット処理モジュール１６（例えば、メモリ格納モード選択モジュール２０）は、あるデータパケットについて受信した分類情報３４に基づき、当該データパケットに対する適切なメモリ格納モードを選択する。一実施形態によると、あるデータパケットを処理するために適切なメモリ格納モードの選択は、受信したデータパケットをキューまたはフロー（例えば、ＶＯＩＰ、ストリーミングビデオ、インターネットブラウズセッション等）に分類すること、データパケット自体に含まれている情報、システムリソースが利用可能か否か等に基づいて為される（例えば、同時係属中の米国特許出願第１３／０３８，２６６号（発明の名称：「ハードウェア／ソフトウェア複合型の転送メカニズムおよび転送方法」、代理人整理番号第ＭＰ３５９５号）を参照されたい。当該出願の明細書は、その内容を全て参照により本願に組み込むものとする）。
【００２０】
＜プリフェッチモードでの動作＞
一実施形態によると、メモリ格納モード選択モジュール２０がデータパケットについて当該データパケットの分類３４に基づきプリフェッチモードを選択する場合、プリフェッチモジュール２２が当該データパケットを処理する。例えば、プリフェッチモードでは、（ネットワークコントローラ１２が受信して、解析分類モジュール１８が解析および分類した）データパケットは、メモリ２６に格納される。さらに、プリフェッチモジュール２２は、解析分類モジュール１８からは、データパケットの分類３４を受信する。プリフェッチモジュール２２は、受信した分類３４に少なくとも部分的に基づき、データパケットの適切な部分をメモリ２６からキャッシュ３０へとプリフェッチする。一実施形態によると、プリフェッチモジュール２２は、プリフェッチモジュール２２を介して、メモリ２６からキャッシュ３０へとデータパケットをプリフェッチする。処理コア１４は、キャッシュ３０で、プリフェッチされたデータパケットにアクセスする。
【００２１】
一実施形態によると、処理コア１４がデータパケットに対して処理動作を実行するべくデータパケットを要求する前に、プリフェッチモジュールはメモリ２６からキャッシュ３０へとデータパケットをプリフェッチする。一実施形態によると、データパケットの分類３４には、当該データパケットをプリフェッチモジュール２２がプリフェッチする必要があるか否か、または、当該データパケットには通常フェッチ動作（例えば、処理コア１４が必要とする際にデータパケットをフェッチする）を実行すべきか否かを示す指標が含まれる。このように、データパケットのプリフェッチモジュール２２によるプリフェッチは、分類３４に基づき、近い将来に処理コア１４が当該データパケットを利用するものと予測して行われる。適切なプリフェッチモジュールの動作および構造は、同時係属中の米国特許出願第１３／０３８，２５８号（発明の名称：「データパケットのプリフェッチ」、代理人整理番号第ＭＰ３５８０号）に記載されている。
【００２２】
一例を挙げると、複数のデータパケットに対応付けられている分類３４は、第１のデータパケットおよび第２のデータパケットが処理コア１４の同じ処理キュー（または、同じ処理セッション、または、同じトラフィックフロー）に属していることを示すと共に、第１のデータパケットおよび第２のデータパケットの両方についてプリフェッチモードでの動作を選択することを示す。処理コア１４が第１の処理キューに属している第１のデータパケットを処理している間、処理コア１４は次に、処理コア１４の処理キューまたはトラフィックフローのうち、第１のデータパケットと同じ第１の処理キューまたは第１のデータパケットと同じトラフィックフローに属する第２のデータパケットを処理する可能性が高い。したがって、処理コア１４が第１のデータパケットを処理している間、プリフェッチモジュール２２はメモリ２６からキャッシュ３０へと第２のデータパケットをプリフェッチして、必要となれば（例えば、第１のデータパケットを処理した後）処理コア１４が第２のデータパケットにキャッシュ３０でアクセス可能となるようにする。このように、処理コア１４で第２のデータパケットの処理を行う準備が整った時には、第２のデータパケットはキャッシュ３０にあり容易に利用可能である。プリフェッチモジュール２２によって第２のデータパケットをプリフェッチすることによって、（処理コア１４が第２のデータパケットを処理する際に、第２のデータパケットをメモリ２６から読み出す場合に比べて）第２のデータパケットの処理に対応付けられているレイテンシが小さくなる。一実施形態によると、プリフェッチモジュール２２は、処理コア１４から、処理コア１４は現在どのデータパケットを処理しているのかに関する情報、および／または、処理コア１４はどのデータパケットを今後処理し得るのかに関する情報を受信する。
【００２３】
データパケットは通常、当該データパケットのペイロード部分の前にヘッダ部分を含む。ヘッダ部分は、例えば、データパケットの送信元アドレス、送信先アドレス、優先度、キュー、トラフィックフロー、利用領域、対応プロトコル等（例えば、任意のその他の設定情報）に対応付けられている情報を含む。ペイロード部分は、例えば、データパケットに対応付けられているユーザデータ（例えば、ネットワークを介して送信されるべきデータ、例えば、インターネットデータ、ストリーミングメディア等）を含む。
【００２４】
一部のアプリケーションでは、処理コア１４は、データパケットの処理中に、データパケットの一部分のみにアクセスする必要がある。一実施形態によると、データパケットの分類３４は、データパケットのうち処理コア１４がアクセスすべき部分を示す。一実施形態によると、プリフェッチモジュール２２は、１つのデータパケットを全てをプリフェッチする代わりに、受信した分類３４に少なくとも部分的に基づいて、メモリ２６からキャッシュ３０へと、データパケットの一部分をプリフェッチする。一実施形態によると、データパケットに対応付けられている分類３４は、データパケットのうち、プリフェッチモジュール２２がメモリ２６からキャッシュ３０へとプリフェッチすべき部分を示す。つまり、解析分類モジュール１８は、データパケットを分類することに基づいて、データパケットのうちプリフェッチモジュール２２がメモリ２６からプリフェッチすべき部分を選択する。
【００２５】
一例を挙げると、処理コア１４は、ネットワークルーティング処理に対応付けられているデータパケットの場合、ヘッダ部分のみにアクセスして処理する必要がある。他方、処理コア１４は、セキュリティ関連処理に対応付けられているデータパケットの場合、ヘッダ部分およびペイロード部分の両方にアクセスして処理する必要がある。一実施形態によると、解析分類モジュール１８は、ネットワークコントローラ１２が受信するデータパケットの種類を特定する。例えば、解析分類モジュール１８は、危険と特定されたソースからのデータパケットを特定すると、当該データパケットをセキュリティ関連処理に対応付けられているものとして分類する。一実施形態によると、解析分類モジュール１８は、データパケットの種類（例えば、データパケットがネットワークルーティング処理、セキュリティ関連処理等に対応付けられているか否か）を特定して、その結果に応じて分類３４を生成する。例えば、プリフェッチモジュール２２は、分類３４に基づき、ネットワークルーティング処理に対応付けられているデータパケットの場合、ヘッダ部分（または、ヘッダ部分の一部）のみをプリフェッチする。他方、プリフェッチモジュール２２は、セキュリティ関連処理に対応付けられている別のデータパケットの場合、ヘッダ部分およびペイロード部分の両方（または、ヘッダ部分の一部および／またはペイロード部分の一部）をプリフェッチする。
【００２６】
別の例を挙げると、分類３４は、データパケットに対応付けられている優先度に少なくとも部分的に基づいて生成される。プリフェッチモジュール３４は、分類３４からデータパケットの優先度情報を受信する。プリフェッチモジュール２２は、優先度が比較的高いデータパケット（例えば、ボイス・オーバー・インターネット・プロトコル（ＶＯＩＰ）アプリケーションのようなリアルタイムオーディオおよび／またはビデオアプリケーションに対応付けられているデータパケット）の場合、例えば、ヘッダ部分およびペイロード部分の両方をプリフェッチする（処理コア１４がキャッシュ３０でデータパケットのヘッダ部分にアクセスした後でペイロード部分にアクセスする必要がある場合があるためである）。しかし、プリフェッチモジュール２２は、優先度が比較的低いデータパケットの場合、ヘッダ部分のみをプリフェッチする（そして、例えば、処理コア１４がペイロード部分を要求するとそれに基づいてペイロード部分をフェッチする）。別の実施形態によると、プリフェッチモジュール２２は、優先度が比較的低い別のデータパケットの場合、データパケットをプリフェッチせず、処理コア１４が実際にデータパケットを必要とした場合に限りメモリ２６からキャッシュ３０にデータパケットをフェッチする。
【００２７】
さらに別の例によると、プリフェッチモジュール２２は、任意の別の適切な基準に少なくとも部分的に基づき、データパケットの一部分をプリフェッチする。例えば、プリフェッチモジュール２２は、分類３４に含まれる任意のその他の設定情報に少なくとも部分的に基づいて、データパケットの一部分をプリフェッチする。
【００２８】
＜キャッシュ蓄積モードでの動作＞
一実施形態によると、メモリ格納モード選択モジュール２０があるデータパケットに対して当該データパケットの分類３４に基づきキャッシュ蓄積モードを選択する場合、キャッシュ蓄積モジュール４２が当該データパケットを処理する。例えば、キャッシュ蓄積モードでは、キャッシュ蓄積モジュール４２は、分類３４を受信して、メモリ２６および／またはキャッシュ３０にデータパケットを格納するようにネットワークコントローラ１２に選択的に命令する。一実施形態によると、キャッシュ蓄積モードでは、ネットワークコントローラ１２は、キャッシュ蓄積モジュール４２からの命令に少なくとも部分的に基づき、データパケットの一部分をキャッシュ３０に格納して、データパケットの別の一部分（または、データパケット全体）をメモリ２６に格納する。例えば、データパケットのうち、処理コア１４がデータパケットを処理中にアクセスする部分のみをキャッシュ３０に格納する。
【００２９】
一実施形態によると、分類３４は、あるデータパケットに対応付けられており、当該データパケットのうちネットワークコントローラ１２が直接（例えば、メモリ２６を通さず）キャッシュ３０に格納する部分を示す。つまり、解析分類モジュール１８は、データパケットを分類することに基づいて、データパケットのうち、ネットワークコントローラ１２が直接キャッシュ３０に格納する一部分を選択する（ただし、別の実施形態では、（図１には図示していない）別の構成要素が分類３４を受信して、データパケットのうちどの部分をキャッシュ３０に格納すべきかを決定する）。
【００３０】
例えば、データパケットは複数のバイトから構成されており、ネットワークコントローラは、データパケットのうちＮバイト（例えば、データパケットのうち最初のＮバイト）をキャッシュ３０に格納し、データパケットの残りのバイトをメモリ２６に格納する。尚、Ｎは、例えば、解析分類モジュール１８が選択する整数（例えば、分類３４が整数Ｎを示す指標を含む）および／またはキャッシュ蓄積モジュール４２が（例えば、分類３４に基づき）選択する整数である。
【００３１】
別の例を挙げると、ネットワークコントローラは、データパケットのうちＮバイトをキャッシュ３０に格納し、データパケット全体をメモリ２６にさらに格納する（このようにして、データパケットのうちＮバイトはキャッシュ３０およびメモリ２６の両方に格納されることとなる）。
【００３２】
上述したように、データパケットのうち、処理コア１４がデータパケットを処理中にアクセスする必要がある部分のみが、ネットワークコントローラ１２ａによってキャッシュ３０に格納される。一実施形態によると、データパケットは第１の部分および第２の部分から構成されており、ネットワークコントローラ１２は、分類３４に基づき、データパケットのうち第１の部分をキャッシュ３０ａに直接送信する（キャッシュ蓄積モードの一環として）が、データパケットのうち第２の部分はキャッシュ３０ａへの送信を抑制する（データパケットの第２の部分は、第１の部分もそうなる可能性があるが、ネットワークコントローラ１２によってメモリ２６に送信される）。
【００３３】
一例を挙げると、前述したように、ネットワークルーティング処理に対応付けられているデータパケットの場合、処理コア１４がアクセスおよび処理する必要があるのは、ヘッダ部分のみである。このようなデータパケットに対応する分類３４は、解析分類モジュール１８によって、そのような内容となるように生成されている。一実施形態によると（例えば、分類３４がさらにキャッシュ蓄積モードでの処理を指し示している場合）、ネットワークコントローラ１２は、分類３４に基づき、（例えば、このようなデータパケットのうちヘッダ部分をメモリ２６に格納することに加えて、または、メモリ２６へ格納するのではなく）このようなデータパケットのうちヘッダ部分のみ（または、ヘッダ部分全体ではなく、ヘッダ部分のうち関連箇所のみ）をキャッシュ３０に格納する。
【００３４】
別の例を挙げると、セキュリティ関連処理に対応付けられているデータパケットの場合、処理コア１４がアクセスおよび処理する必要があるのは、ヘッダ部分およびペイロード部分の両方である。このようなデータパケットに対応する分類３４は、解析分類モジュール１８によって、そのような内容となるように生成されている。一実施形態によると（例えば、分類３４がさらにキャッシュ蓄積モードでの処理を指し示している場合）、ネットワークコントローラ１２は、分類３４に基づき、（例えば、このようなデータパケットのうちヘッダ部分およびペイロード部分をメモリ２６に格納することに加えて、または、メモリ２６へ格納するのではなく）このようなデータパケットのうちヘッダ部分およびペイロード部分（または、ヘッダ部分およびペイロード部分のうち関連箇所のみ）をキャッシュ３０に格納する。
【００３５】
一実施形態によると、分類３４は、データパケットに対応付けられている優先度に少なくとも部分的に基づいて生成される。例えば、キャッシュ蓄積モジュール４２は、分類３４からデータパケットの優先度情報を受信する。優先度が比較的高いデータパケットの場合、ネットワークコントローラ１２は、分類３４に基づき、ヘッダ部分およびペイロード部分の両方をキャッシュ３０に格納する（これは、処理コア１４は、キャッシュ３０でデータパケットのヘッダ部分にアクセスした後ペイロード部分にアクセスする必要がある場合があるためである）。しかし、優先度が比較的低いデータパケットの場合（例えば、分類３４で優先度が比較的低いフロー／キューに属していると分類されるパケットの場合）、例えば、ネットワークコントローラ１２は分類３４に基づきヘッダ部分のみをキャッシュ３０に格納する。別の実施形態では、優先度が比較的低い他のデータパケットについては、ネットワークコントローラ１２はデータパケットのいずれの部分についてもキャッシュ３０に格納することなく、別の適切なメモリ格納モードを選択する（例えば、プリフェッチモードを選択する）。さらに別の例を挙げると、ネットワークコントローラ１２は、任意のその他の適切な基準、例えば、分類３４に含まれる任意のその他の設定情報に少なくとも部分的に基づき、データパケットの一部分をキャッシュ３０に格納する。
【００３６】
＜スヌープモード＞
一実施形態によると、メモリ格納モード選択モジュール２０があるデータパケットについて当該データパケットの分類３４に基づきスヌープモードを選択すると、スヌープモジュール６２が当該データパケットを処理する。一実施形態によると、スヌープモードでは、分類３４に少なくとも部分的に基づいて、データパケットがネットワークコントローラ１２からバス６０を介してメモリ２６へと送信される間、スヌープモジュール６２が当該データパケットをスヌープする。一例を挙げると、分類３４に基づき、データパケットのうち処理コア１４が当該データパケットを処理中にアクセスする必要がある部分のみが、スヌープモジュール６２によるスヌープの対象となる。例えば、分類３４は、データパケットのうちスヌープモジュール６２によるスヌープの対象となるべき部分を示す指標を含んでいる。
【００３７】
一実施形態によると、スヌープモードは、プリフェッチモードおよび／またはキャッシュ蓄積モードとは別に独自に実行される。一実施形態によると、スヌープモジュール６２は、対応する分類３４に基づき、ネットワークコントローラ１２からメモリ２６へと送信されるデータパケット全てについて、一部分をスヌープする。
【００３８】
従来のパケット通信システム（例えば、ハードウェアキャッシュコヒーレンシをサポートするもの）では、メモリに送信されるデータパケット全てが、キャッシュコヒーレンシを守るべくスヌープまたはスニッフィングされる。一般的に、このようなスヌープ動作（例えば、キャッシュ内にデータの有効なコピーがあるか否か確認し、新しいデータがメモリ内の対応する部分に書き込まれる場合にはキャッシュ内のデータの有効なコピーを無効化する動作）を実行すると、（例えば、メモリに対する書込みトランザクション全てについてスヌープが実行されるので）パケット通信システムでの負荷が過剰になってしまう可能性がある。これとは対照的に、スヌープモジュール６２は、（例えば、データパケット全体ではなく）データパケットのうち処理コア１４がアクセスする必要がある部分のみを選択的にスヌープするので、システム１０においてスヌープに対応付けられる処理負荷が小さくなる。
【００３９】
一実施形態によると、スヌープモードと他のメモリ格納モードとを組み合わせる。例えば、分類３４に基づき、キャッシュ蓄積モードでは、データパケットのうち第１の部分をメモリ２６に書込みつつ、データパケットのうち第２の部分を直接キャッシュ３０に書き込む。一実施形態によると、データパケットのうち第１の部分をメモリ２６に書き込んでいる間、スヌープモジュール６２がデータパケットの第１の部分をスヌープすることができる。このように、本例では、スヌープモードとキャッシュ蓄積モードとを組み合わせて実行する。一実施形態によれば、前述したように、解析分類モジュール１８は、あるデータパケットについて分類３４を生成する場合、パケット処理モジュール１６がデータパケットを処理する際にどのモードで動作すべきかを示すように分類３４を構成する。
【００４０】
一実施形態によると、データパケットは複数のバイトから構成されており、スヌープモジュール６２は、（例えば、データパケット全体をスヌープするのではなく）データパケットのうちＭバイト（例えば、データパケットのうち最初のＭバイト）のみをスヌープする。尚、Ｍは例えば、当該データパケットに対応付けられている分類３４で示される整数である。一実施形態によると、スヌープモジュール６２は、データパケットの残りのバイト（例えば、Ｍバイト以外のバイト）に対してはスヌープを行わない。
【００４１】
一実施形態によると、分類３４は、データパケットのうちスヌープされるべき部分を指し示しており、例えば、データパケットの種類に基づき生成される。例えば、ネットワークルーティング処理に対応付けられているデータパケットの場合、処理コア１４がアクセスおよび処理する必要があるのはヘッダ部分のみである。したがって、一実施形態によると、分類３４は、スヌープモジュール６２が分類３４を参照すると、例えば、このようなデータパケットのうちヘッダ部分のみ（または、ヘッダ部分の関連箇所のみ）をスヌープするように生成される。別の例を挙げると、セキュリティ関連処理に対応付けられているデータパケットの場合、処理コア１４がアクセスおよび処理するのは、ヘッダ部分およびペイロード部分の両方である。したがって、一実施形態によると、分類３４は、スヌープモジュール６２がセキュリティ処理に対応付けられているデータパケットのうちヘッダ部分およびペイロード部分（または、ヘッダ部分および／またはペイロード部分の関連箇所のみ）をスヌープするように生成される。
【００４２】
さらに別の例によると、選択されたキューまたはフローに対応するデータパケットの分類３４に基づき、スヌープモジュール６２は、任意のその他の適切な基準、例えば、分類３４に含まれる任意のその他の設定情報に少なくとも部分的に基づき、データパケットの一部分に対してスヌープを実行する。
【００４３】
＜図１に示すシステム１０の動作＞
前述したように、パケット処理モジュール１６（例えば、メモリ格納モード選択モジュール２０）は、あるデータパケットに対応して受信した分類情報３４に基づき、当該データパケットについて適切なメモリ格納モード（例えば、プリフェッチモード、キャッシュ蓄積モード、および、スヌープモードのうち１以上のモード）を選択する。例えば、優先度が比較的高いデータパケット（例えば、高優先度データパケット全体、または、高優先度データパケットのうち関連部分のみ）は、ネットワークコントローラ１２によってキャッシュ３０に直接書き込むことができる。つまり、高優先度データパケットの場合、分類３４は、メモリ格納モード選択モジュール２０がキャッシュ蓄積モードを選択するように生成され得る。別の例では、高優先度データパケットの全体をスヌープモジュール６２でスヌープすることができる。他方、優先度が中程度のデータパケット（例えば、優先度が高優先度データパケットよりも低いが低優先度データパケットよりは高いデータパケット）は、メモリ２６に書き込まれて、処理コア１４によってアクセスおよび処理される前に、プリフェッチモジュール２２０によってプリフェッチされ得る。つまり、中優先度データパケットの場合、分類３４は、メモリ格納モード選択モジュール２０がプリフェッチモードを選択するように生成され得る。低優先度データパケットは、メモリ２６に格納して、処理コア１４が処理する場合にのみキャッシュ３０にフェッチされ得る。また、別の例を挙げると、対応付けられている分類３４に基づき、中優先度データパケットおよび／または低優先度データパケットの一部分のみをスヌープモジュ−ル６２でスヌープすることもできる。
【００４４】
上述したように（例えば、データパケットの優先度に基づいて生成される）分類３４に基づきプリフェッチモード、キャッシュ蓄積モード、および／または、スヌープモードで動作するのは、一例に過ぎない。別の実施形態によると、分類３４は任意の別の手法で生成することもできる。
【００４５】
前述したように、一実施形態によると、さまざまなメモリ格納モードにおいて、例えば、データパケット全体を処理するのではなく、データパケットのうち一部のみを処理する（例えば、データパケットのうち一部のみを、プリフェッチする、キャッシュ３０に蓄積する、および／または、スヌープする）。例えば、データパケットのうち、処理コア１４が当該データパケットを処理する際にアクセスする必要がある一部分のみを、（例えば、プリフェッチモードまたはキャッシュ蓄積モードでは）キャッシュ３０内に入れる。このため、データパケットの一部は、処理コア１４が当該データパケットに対するアクセスおよび／または処理を所望する場合には常に、キャッシュ３０内にあって処理コア１４が容易に利用可能であるので、当該データパケットの処理に対応付けられているレイテンシが小さくなる。また、（例えば、データパケット全体ではなく）データパケットの一部のみがキャッシュに格納されるので、キャッシュのデータ負荷が過剰になることはない（例えば、キャッシュに対する上書きを頻繁に行う必要はない）。また、キャッシュが小型化され、および／または、キャッシュからデータパケットをフラッシュする回数が少なくなる。
【００４６】
一実施形態によると、解析分類モジュール１８、プリフェッチモジュール２２、キャッシュ蓄積モジュール４２、および／または、スヌープモジュール６２は、一から設定可能である。例えば、解析分類モジュール１８は、利用領域、対応付けられているＳＯＣの臨界、データパケットの種類、利用可能な帯域幅等に少なくとも部分的に基づき、データパケットのうち一部（例えば、プリフェッチモードまたはキャッシュ蓄積モードにおいてキャッシュに格納されるべき部分、または、スヌープされるべき部分）の選択を動的に変更するように設定され得る。別の例を挙げると、プリフェッチモジュール２２、キャッシュ蓄積モジュール４２、および、スヌープモジュール６２は、（例えば、プリフェッチモードまたはキャッシュ蓄積モードにおいて）例えば、キャッシュにデータパケットの一部を入れるタイミングを動的に変更するように、および／または、図１のシステム１０の動作に対応付けられている任意のその他の適切な基準を動的に変更するように設定され得る。
【００４７】
図２は、本開示の一実施形態に係る、図１のシステム１０を動作させる方法２００の一例を示す図である。２０４において、ネットワークコントローラ１２（または、システム１０のコンポーネントのうち任意のその他の適切なコンポーネント）は、ネットワークを介して送信されるデータパケットを受信する。２０８において、解析分類モジュール１８は、データパケットについて分類３４を生成する。一実施形態によると、分類３４は、データパケットに対するメモリ格納モードを示す指標を含む。一実施形態によると、分類３４は、データパケットのうち、例えば、（例えば、プリフェッチモードまたはキャッシュ蓄積モードにおいて）キャッシュ３０に格納されるべき部分、および／または、スヌープモジュール６２によってスヌープされるべき部分を示す指標を含む。
【００４８】
２１２において、メモリ格納モード選択モジュール２０は、分類３４に基づきメモリ格納モードを選択する。２１６において、パケット処理モジュール１６は、選択されたメモリ格納モードを利用してデータパケットを処理する。例えば、プリフェッチモードが選択された場合、データパケットはメモリ２６に格納され、プリフェッチモジュール２２は、分類３４に少なくとも部分的に基づき、メモリ２６からキャッシュ３０へとデータパケットの一部をプリフェッチする。別の例を挙げると、キャッシュ蓄積モードが選択された場合、分類３４に少なくとも部分的に基づき、データパケットの一部はネットワークコントローラ１２から直接キャッシュ３０へと格納される。さらに別の例を挙げると、スヌープモードが選択された場合、スヌープモジュール６２は、分類３４に少なくとも部分的に基づき、バス６０を介してメモリ２６へとデータパケットが書き込まれている間、データパケットの一部をスヌープする。一実施形態によると、スヌープモードは、プリフェッチモードおよび／またはキャッシュ蓄積モードとは別に独立して実行される（例えば、スヌープモードは、メモリ２６に書き込まれるデータパケット全てについて、例えば、プリフェッチモードおよび／またはキャッシュ蓄積モードのいずれが選択されようと、実行される）。
【００４９】
本明細書では具体的な実施形態を図示および記載したが、本開示の範囲から逸脱することなく、図示および記載した具体的な実施形態に代えて多岐にわたる変形例および／または均等例を実施し得るものと留意されたい。本開示は、特許請求の範囲で記載した請求項を文字通り解釈した場合または均等物の原則の下で解釈され得る範囲内に実質的に含まれる方法、装置、および、製造物品を全て含むものである。本願は、本明細書に開示した実施形態を任意の点で適応または変更したものを含むものとする。このため、本開示は請求項およびその均等物によってのみ限定されることを明確に意図している。
【図１】
2011198360.tif 000003
【図２】
2011198360.tif 000004
【外国語明細書】
2011198360000001.pdf