説明

パケット処理最適化

【課題】データパケット処理の最適化を提供する。
【解決手段】ネットワークを介して送信されるデータパケットを受信する段階と、データパケットについて分類情報を生成する段階と、分類情報に基づきデータパケットについてメモリ格納モードを選択する段階と、選択されたメモリ格納モードを利用してデータパケットを処理する段階とを備え、パッケット処理モジュールは、プリフェッチ・モジュール、キャッシュ蓄積モジュール、及びスヌープ・モジュールにより構成される。

【発明の詳細な説明】
【関連出願】
【0001】
本願は、米国特許出願第61/315,332号(出願日:2010年3月18日)に基づく優先権を主張する。当該米国出願の明細書は、本明細書と一致しない内容の部分があればそのような部分は除き、全ての記載内容を参照により本願に組み込む。本願は、米国特許出願第13/038,258号(出願日:2011年3月1日、代理人整理番号:MP3580)および米国特許出願第13/038,266号(出願日:2011年3月1日、代理人整理番号:MP3598)に関する。両米国出願の明細書は、本明細書と一致しない内容の部分があればそのような部分は除き、全ての記載内容を参照により本願に組み込む。
【技術分野】
【0002】
本開示の実施形態は、概してデータパケットの処理に関し、具体的にはデータパケット処理の最適化に関する。
【背景技術】
【0003】
このセクションに記載する方法は、そう示されていない限り、本願で開示する請求項に対する先行技術ではなく、このセクションに記載することで先行技術であると認めるものでもない。
【0004】
パケット処理システムでは、一例を挙げると、ネットワークコントローラが複数のデータパケット(例えば、ネットワークから受信した複数のデータパケット)をメモリ(例えば、システム・オン・チップ(SOC)の外部にある外部メモリ)に格納するが、当該メモリは通常、読出レイテンシが比較的(例えば、SOC内のキャッシュからの読み出す際のレイテンシと比較して)大きい。これら複数のデータパケットのうち1つのデータパケットに対してSOC内に含まれる処理コアがアクセスを試みると、当該データパケットはキャッシュに送信され、処理コアはキャッシュで当該データパケットにアクセスするとしてよい(例えば、当該データパケットを処理するためには、当該データパケットを適切なロケーションにルーティングして、当該データパケットに対応付けられているセキュリティ関連処理を実行する)。しかし、外部メモリからキャッシュへとデータパケットをローディングするので、読出レイテンシが比較的大きくなってしまうことが多い。
【0005】
別の例を挙げると、ネットワークコントローラは複数のデータパケットを直接キャッシュに格納し、処理コアはキャッシュでデータパケットにアクセスする。しかし、このためには比較的大きなキャッシュが必要となり、キャッシュで上書きを頻繁に行う必要があり、および/または、キャッシュ内での混雑のためにキャッシュからメモリへと1以上のデータパケットをフラッシュする場合もある。
【発明の概要】
【課題を解決するための手段】
【0006】
本開示のさまざまな実施形態によると、ネットワークを介して送信されるデータパケットを受信する段階と、データパケットについて分類情報を生成する段階と、分類情報に基づき、データパケットについてメモリ格納モードを選択する段階とを備える方法が提供される。さまざまな実施形態によると、メモリ格納モードを選択する段階はさらに、分類情報に基づきデータパケットについてプリフェッチモードを選択する段階を有し、方法はさらに、プリフェッチモードが選択されることに応じて、データパケットをメモリに格納する段階と、分類情報に少なくとも部分的に基づき、メモリからキャッシュへと、データパケットの少なくとも一部をフェッチする段階とを備える。さまざまな実施形態によると、メモリ格納モードを選択する段階はさらに、分類情報に基づきデータパケットについてキャッシュ蓄積モードを選択する段階を有し、方法はさらに、キャッシュ蓄積モードが選択されることに応じて、データパケットの一部をキャッシュに格納する段階を備える。さまざまな実施形態によると、メモリ格納モードを選択する段階はさらに、データパケットについてスヌープモードを選択する段階を有し、方法はさらに、スヌープモードが選択されることに応じて、データパケットをメモリに送信する段階と、データパケットをメモリに送信している間に、データパケットの一部についてスヌープを行う段階とを備える。
【0007】
また、処理コアと、キャッシュと、解析分類モジュールと、メモリ格納モード選択モジュールとを備え、解析分類モジュールは、ネットワークを介してネットワークコントローラが受信したデータパケットをネットワークコントローラから受信して、データパケットについて分類情報を生成し、メモリ格納モード選択モジュールは、分類情報に基づき、データパケットについてメモリ格納モードを選択するシステム・オン・チップ(SOC)が提供される。
【図面の簡単な説明】
【0008】
以下の詳細な説明では、本明細書の一部を成す添付図面を参照する。添付図面では、全図面にわたって同様の参照番号は同様の構成要素を示し、本開示の原理を説明するための実施形態を図示する。他の実施形態を利用し得ること、および、本開示の範囲から逸脱することなく構造または論理を変更し得ることに留意されたい。このため、以下に記載する詳細な説明は、本開示を限定するものと解釈されるのではなく、本開示に係る実施形態の範囲は請求項およびその均等物によって定義されるものである。
【0009】
【図1】本開示の一実施形態に係る、解析分類モジュール18とパケット処理モジュール16とを有するシステム・オン・チップ(SOC)100を備えるパケット通信システム10(本明細書ではシステム10と呼ぶこともある)を示す概略図である。
【0010】
【図2】本開示の一実施形態に係る、図1のシステム10を動作させるための方法200の一例を説明するための図である。
【発明を実施するための形態】
【0011】
図1は、本開示の一実施形態に係る、解析分類モジュール18とパケット処理モジュール16とを有するシステム・オン・チップ(SOC)100を備えるパケット通信システム10(本明細書ではシステム10と呼ぶこともある)を示す概略図である。SOC100はさらに、処理コア14およびキャッシュ30を有する。キャッシュ30は、例えば、レベル2(L2)キャッシュである。図1に図示している処理コア14は1つのみであるが、一実施形態によると、SOC100は複数の処理コアを有する。SOC100は他にも複数の構成要素を有しているが(例えば、通信バス、1以上の周辺機器、インターフェース等)、これらの構成要素は図示を簡略化するべく図1には図示していない。
【0012】
システム10は、メモリ26を備える。一実施形態によると、メモリ26はSOC100の外部に設けられている。一実施形態によると、メモリ26は、ダイナミック・ランダム・アクセス・メモリ(DRAM)(例えば、ダブル・データ・レート・スリー(DDR3)シンクロナス・ダイナミック・ランダム・アクセス・メモリ(SDRAM))である。
【0013】
一実施形態によると、システム10は、複数のデバイス、例えば、デバイス12a、デバイス12b、および/または、デバイス12cに結合されているネットワークコントローラ12を備える。ネットワークコントローラ12、ならびに、デバイス12a、12bおよび12cはSOC100の外部に設けられているものとして図示されているが、一実施形態によると、ネットワークコントローラ12、ならびに/または、デバイス12a、12bおよび12cのうち1以上のデバイスはSOC100の内部に設けられる。ネットワークコントローラ12は、バス60を介してメモリ26に結合されている。バス60はSOC100の外部に設けられているものとして図示されているが、一実施形態によると、バス60はSOC100の内部に設けられている。一実施形態によると、図1には図示していないが、SOC100の他の複数の構成要素がバス60を共用する。
【0014】
ネットワークコントローラ12は、例えば、ネットワークスイッチ、ネットワークルータ、ネットワークポート、イーサネット(登録商標)ポート(例えば、ギガバイトイーサネット(登録商標)ポート)、または、ネットワーク接続可能な任意の適切なデバイスと対応付けられている。一実施形態によると、SOC100はネットワークデバイスの一部であり、データパケットはネットワークを介して送信される。ネットワークコントローラ12は、複数のデバイス、例えば、デバイス12a、デバイス12b、および/または、デバイス12cから、(例えば、インターネット等のネットワークから受信した)データパケットを受信する。デバイス12a、12b、および/または、12cは、例えば、ネットワークスイッチ、ネットワークルータ、ネットワークポート、イーサネット(登録商標)ポート(例えば、ギガバイトイーサネット(登録商標)ポート)、ネットワーク接続可能な任意の適切なデバイス等のネットワークデバイスである。
【0015】
一実施形態によると、解析分類モジュール18は、ネットワークコントローラ12からデータパケットを受信する。図1に図示しているネットワークコントローラ12は1つのみであるが、一実施形態によると、解析分類モジュール18は、複数のネットワークコントローラからデータパケットを受信する。図1には図示していないが、一実施形態によると、解析分類モジュール18は、他のデバイス、例えば、ネットワークスイッチ、ネットワークルータ、ネットワークポート、イーサネット(登録商標)ポート等からもデータパケットを受信する。
【0016】
解析分類モジュール18は、ネットワークコントローラ12(および/または任意のその他の適切なソース)から受信したデータパケットを解析および/または分類する。解析分類モジュール18は、受信したデータパケットを解析および分類して、受信したデータパケットに対応する分類情報34(分類34とも呼ぶ)を生成する。例えば、解析分類モジュール18は、データパケットのカプセル化構造を概して定めている一連の所定のネットワークプロトコルおよびルールに従ってデータパケットを解析する。一例を挙げると、データパケットの分類34には、データパケットの種類、優先度、送信先アドレス、キューアドレス、トラフィックフロー情報、他の分類情報(例えば、セッション数、プロトコル等)等に対応付けられている情報が含まれている。別の例を挙げると、データパケットの分類34には、データパケットの取り扱いが同様であるフローと当該データパケットとの対応付け、または、当該データパケットのクラスがさらに含まれている。本明細書ではより詳細に後述するが、分類34はさらに、データパケットのうち、メモリ26および/またはキャッシュ30に格納されるべき部分、選択的にキャッシュ30にプリフェッチされる部分、および/または、パケット処理モジュール16によってスヌープされる部分を示す。
【0017】
一実施形態に係る解析分類モジュール18は、同時係属中の米国特許出願第12/947678号(発明の名称:「反復式の解析および分類」、代理人整理番号第MP3444号)に記載されている。当該出願の明細書は、本明細書と一致しない部分があればその部分を除き、その内容を全て参照により本願に組み込むものとする。別の実施形態によると、解析分類モジュール18に代えて、任意のその他の適切なハードウェアコンポーネントおよび/またはソフトウェアコンポーネントを利用してデータパケットを解析および分類するとしてもよい。
【0018】
パケット処理モジュール16は、解析分類モジュール18からデータパケットの分類34を受信する。一実施形態によると、パケット処理モジュール16は、メモリ格納モード選択モジュール20と、プリフェッチモジュール22と、キャッシュ蓄積モジュール42と、スヌープモジュール62とを持つ。一実施形態に係るプリフェッチモジュール22は、同時係属中の米国特許出願第13/038,258号(発明の名称:「データパケットのプリフェッチ」、代理人整理番号第MP3580号)に記載されている。当該出願の明細書は、本明細書と一致しない部分があればその部分を除き、その内容を全て参照により本願に組み込むものとする。
【0019】
パケット処理モジュール16は、ネットワークコントローラ12が受信し解析分類モジュール18が分類する各データパケットについて、分類34に基づき複数のメモリ格納モードのうち1以上のメモリ格納モードで動作する。例えば、パケット処理モジュール16は、プリフェッチモード、キャッシュ蓄積モード、および、スヌープモードのうちいずれか1つのモードで動作する。これについては、より詳細に後述する。一実施形態によると、パケット処理モジュール16(例えば、メモリ格納モード選択モジュール20)は、あるデータパケットについて受信した分類情報34に基づき、当該データパケットに対する適切なメモリ格納モードを選択する。一実施形態によると、あるデータパケットを処理するために適切なメモリ格納モードの選択は、受信したデータパケットをキューまたはフロー(例えば、VOIP、ストリーミングビデオ、インターネットブラウズセッション等)に分類すること、データパケット自体に含まれている情報、システムリソースが利用可能か否か等に基づいて為される(例えば、同時係属中の米国特許出願第13/038,266号(発明の名称:「ハードウェア/ソフトウェア複合型の転送メカニズムおよび転送方法」、代理人整理番号第MP3595号)を参照されたい。当該出願の明細書は、その内容を全て参照により本願に組み込むものとする)。
【0020】
<プリフェッチモードでの動作>
一実施形態によると、メモリ格納モード選択モジュール20がデータパケットについて当該データパケットの分類34に基づきプリフェッチモードを選択する場合、プリフェッチモジュール22が当該データパケットを処理する。例えば、プリフェッチモードでは、(ネットワークコントローラ12が受信して、解析分類モジュール18が解析および分類した)データパケットは、メモリ26に格納される。さらに、プリフェッチモジュール22は、解析分類モジュール18からは、データパケットの分類34を受信する。プリフェッチモジュール22は、受信した分類34に少なくとも部分的に基づき、データパケットの適切な部分をメモリ26からキャッシュ30へとプリフェッチする。一実施形態によると、プリフェッチモジュール22は、プリフェッチモジュール22を介して、メモリ26からキャッシュ30へとデータパケットをプリフェッチする。処理コア14は、キャッシュ30で、プリフェッチされたデータパケットにアクセスする。
【0021】
一実施形態によると、処理コア14がデータパケットに対して処理動作を実行するべくデータパケットを要求する前に、プリフェッチモジュールはメモリ26からキャッシュ30へとデータパケットをプリフェッチする。一実施形態によると、データパケットの分類34には、当該データパケットをプリフェッチモジュール22がプリフェッチする必要があるか否か、または、当該データパケットには通常フェッチ動作(例えば、処理コア14が必要とする際にデータパケットをフェッチする)を実行すべきか否かを示す指標が含まれる。このように、データパケットのプリフェッチモジュール22によるプリフェッチは、分類34に基づき、近い将来に処理コア14が当該データパケットを利用するものと予測して行われる。適切なプリフェッチモジュールの動作および構造は、同時係属中の米国特許出願第13/038,258号(発明の名称:「データパケットのプリフェッチ」、代理人整理番号第MP3580号)に記載されている。
【0022】
一例を挙げると、複数のデータパケットに対応付けられている分類34は、第1のデータパケットおよび第2のデータパケットが処理コア14の同じ処理キュー(または、同じ処理セッション、または、同じトラフィックフロー)に属していることを示すと共に、第1のデータパケットおよび第2のデータパケットの両方についてプリフェッチモードでの動作を選択することを示す。処理コア14が第1の処理キューに属している第1のデータパケットを処理している間、処理コア14は次に、処理コア14の処理キューまたはトラフィックフローのうち、第1のデータパケットと同じ第1の処理キューまたは第1のデータパケットと同じトラフィックフローに属する第2のデータパケットを処理する可能性が高い。したがって、処理コア14が第1のデータパケットを処理している間、プリフェッチモジュール22はメモリ26からキャッシュ30へと第2のデータパケットをプリフェッチして、必要となれば(例えば、第1のデータパケットを処理した後)処理コア14が第2のデータパケットにキャッシュ30でアクセス可能となるようにする。このように、処理コア14で第2のデータパケットの処理を行う準備が整った時には、第2のデータパケットはキャッシュ30にあり容易に利用可能である。プリフェッチモジュール22によって第2のデータパケットをプリフェッチすることによって、(処理コア14が第2のデータパケットを処理する際に、第2のデータパケットをメモリ26から読み出す場合に比べて)第2のデータパケットの処理に対応付けられているレイテンシが小さくなる。一実施形態によると、プリフェッチモジュール22は、処理コア14から、処理コア14は現在どのデータパケットを処理しているのかに関する情報、および/または、処理コア14はどのデータパケットを今後処理し得るのかに関する情報を受信する。
【0023】
データパケットは通常、当該データパケットのペイロード部分の前にヘッダ部分を含む。ヘッダ部分は、例えば、データパケットの送信元アドレス、送信先アドレス、優先度、キュー、トラフィックフロー、利用領域、対応プロトコル等(例えば、任意のその他の設定情報)に対応付けられている情報を含む。ペイロード部分は、例えば、データパケットに対応付けられているユーザデータ(例えば、ネットワークを介して送信されるべきデータ、例えば、インターネットデータ、ストリーミングメディア等)を含む。
【0024】
一部のアプリケーションでは、処理コア14は、データパケットの処理中に、データパケットの一部分のみにアクセスする必要がある。一実施形態によると、データパケットの分類34は、データパケットのうち処理コア14がアクセスすべき部分を示す。一実施形態によると、プリフェッチモジュール22は、1つのデータパケットを全てをプリフェッチする代わりに、受信した分類34に少なくとも部分的に基づいて、メモリ26からキャッシュ30へと、データパケットの一部分をプリフェッチする。一実施形態によると、データパケットに対応付けられている分類34は、データパケットのうち、プリフェッチモジュール22がメモリ26からキャッシュ30へとプリフェッチすべき部分を示す。つまり、解析分類モジュール18は、データパケットを分類することに基づいて、データパケットのうちプリフェッチモジュール22がメモリ26からプリフェッチすべき部分を選択する。
【0025】
一例を挙げると、処理コア14は、ネットワークルーティング処理に対応付けられているデータパケットの場合、ヘッダ部分のみにアクセスして処理する必要がある。他方、処理コア14は、セキュリティ関連処理に対応付けられているデータパケットの場合、ヘッダ部分およびペイロード部分の両方にアクセスして処理する必要がある。一実施形態によると、解析分類モジュール18は、ネットワークコントローラ12が受信するデータパケットの種類を特定する。例えば、解析分類モジュール18は、危険と特定されたソースからのデータパケットを特定すると、当該データパケットをセキュリティ関連処理に対応付けられているものとして分類する。一実施形態によると、解析分類モジュール18は、データパケットの種類(例えば、データパケットがネットワークルーティング処理、セキュリティ関連処理等に対応付けられているか否か)を特定して、その結果に応じて分類34を生成する。例えば、プリフェッチモジュール22は、分類34に基づき、ネットワークルーティング処理に対応付けられているデータパケットの場合、ヘッダ部分(または、ヘッダ部分の一部)のみをプリフェッチする。他方、プリフェッチモジュール22は、セキュリティ関連処理に対応付けられている別のデータパケットの場合、ヘッダ部分およびペイロード部分の両方(または、ヘッダ部分の一部および/またはペイロード部分の一部)をプリフェッチする。
【0026】
別の例を挙げると、分類34は、データパケットに対応付けられている優先度に少なくとも部分的に基づいて生成される。プリフェッチモジュール34は、分類34からデータパケットの優先度情報を受信する。プリフェッチモジュール22は、優先度が比較的高いデータパケット(例えば、ボイス・オーバー・インターネット・プロトコル(VOIP)アプリケーションのようなリアルタイムオーディオおよび/またはビデオアプリケーションに対応付けられているデータパケット)の場合、例えば、ヘッダ部分およびペイロード部分の両方をプリフェッチする(処理コア14がキャッシュ30でデータパケットのヘッダ部分にアクセスした後でペイロード部分にアクセスする必要がある場合があるためである)。しかし、プリフェッチモジュール22は、優先度が比較的低いデータパケットの場合、ヘッダ部分のみをプリフェッチする(そして、例えば、処理コア14がペイロード部分を要求するとそれに基づいてペイロード部分をフェッチする)。別の実施形態によると、プリフェッチモジュール22は、優先度が比較的低い別のデータパケットの場合、データパケットをプリフェッチせず、処理コア14が実際にデータパケットを必要とした場合に限りメモリ26からキャッシュ30にデータパケットをフェッチする。
【0027】
さらに別の例によると、プリフェッチモジュール22は、任意の別の適切な基準に少なくとも部分的に基づき、データパケットの一部分をプリフェッチする。例えば、プリフェッチモジュール22は、分類34に含まれる任意のその他の設定情報に少なくとも部分的に基づいて、データパケットの一部分をプリフェッチする。
【0028】
<キャッシュ蓄積モードでの動作>
一実施形態によると、メモリ格納モード選択モジュール20があるデータパケットに対して当該データパケットの分類34に基づきキャッシュ蓄積モードを選択する場合、キャッシュ蓄積モジュール42が当該データパケットを処理する。例えば、キャッシュ蓄積モードでは、キャッシュ蓄積モジュール42は、分類34を受信して、メモリ26および/またはキャッシュ30にデータパケットを格納するようにネットワークコントローラ12に選択的に命令する。一実施形態によると、キャッシュ蓄積モードでは、ネットワークコントローラ12は、キャッシュ蓄積モジュール42からの命令に少なくとも部分的に基づき、データパケットの一部分をキャッシュ30に格納して、データパケットの別の一部分(または、データパケット全体)をメモリ26に格納する。例えば、データパケットのうち、処理コア14がデータパケットを処理中にアクセスする部分のみをキャッシュ30に格納する。
【0029】
一実施形態によると、分類34は、あるデータパケットに対応付けられており、当該データパケットのうちネットワークコントローラ12が直接(例えば、メモリ26を通さず)キャッシュ30に格納する部分を示す。つまり、解析分類モジュール18は、データパケットを分類することに基づいて、データパケットのうち、ネットワークコントローラ12が直接キャッシュ30に格納する一部分を選択する(ただし、別の実施形態では、(図1には図示していない)別の構成要素が分類34を受信して、データパケットのうちどの部分をキャッシュ30に格納すべきかを決定する)。
【0030】
例えば、データパケットは複数のバイトから構成されており、ネットワークコントローラは、データパケットのうちNバイト(例えば、データパケットのうち最初のNバイト)をキャッシュ30に格納し、データパケットの残りのバイトをメモリ26に格納する。尚、Nは、例えば、解析分類モジュール18が選択する整数(例えば、分類34が整数Nを示す指標を含む)および/またはキャッシュ蓄積モジュール42が(例えば、分類34に基づき)選択する整数である。
【0031】
別の例を挙げると、ネットワークコントローラは、データパケットのうちNバイトをキャッシュ30に格納し、データパケット全体をメモリ26にさらに格納する(このようにして、データパケットのうちNバイトはキャッシュ30およびメモリ26の両方に格納されることとなる)。
【0032】
上述したように、データパケットのうち、処理コア14がデータパケットを処理中にアクセスする必要がある部分のみが、ネットワークコントローラ12aによってキャッシュ30に格納される。一実施形態によると、データパケットは第1の部分および第2の部分から構成されており、ネットワークコントローラ12は、分類34に基づき、データパケットのうち第1の部分をキャッシュ30aに直接送信する(キャッシュ蓄積モードの一環として)が、データパケットのうち第2の部分はキャッシュ30aへの送信を抑制する(データパケットの第2の部分は、第1の部分もそうなる可能性があるが、ネットワークコントローラ12によってメモリ26に送信される)。
【0033】
一例を挙げると、前述したように、ネットワークルーティング処理に対応付けられているデータパケットの場合、処理コア14がアクセスおよび処理する必要があるのは、ヘッダ部分のみである。このようなデータパケットに対応する分類34は、解析分類モジュール18によって、そのような内容となるように生成されている。一実施形態によると(例えば、分類34がさらにキャッシュ蓄積モードでの処理を指し示している場合)、ネットワークコントローラ12は、分類34に基づき、(例えば、このようなデータパケットのうちヘッダ部分をメモリ26に格納することに加えて、または、メモリ26へ格納するのではなく)このようなデータパケットのうちヘッダ部分のみ(または、ヘッダ部分全体ではなく、ヘッダ部分のうち関連箇所のみ)をキャッシュ30に格納する。
【0034】
別の例を挙げると、セキュリティ関連処理に対応付けられているデータパケットの場合、処理コア14がアクセスおよび処理する必要があるのは、ヘッダ部分およびペイロード部分の両方である。このようなデータパケットに対応する分類34は、解析分類モジュール18によって、そのような内容となるように生成されている。一実施形態によると(例えば、分類34がさらにキャッシュ蓄積モードでの処理を指し示している場合)、ネットワークコントローラ12は、分類34に基づき、(例えば、このようなデータパケットのうちヘッダ部分およびペイロード部分をメモリ26に格納することに加えて、または、メモリ26へ格納するのではなく)このようなデータパケットのうちヘッダ部分およびペイロード部分(または、ヘッダ部分およびペイロード部分のうち関連箇所のみ)をキャッシュ30に格納する。
【0035】
一実施形態によると、分類34は、データパケットに対応付けられている優先度に少なくとも部分的に基づいて生成される。例えば、キャッシュ蓄積モジュール42は、分類34からデータパケットの優先度情報を受信する。優先度が比較的高いデータパケットの場合、ネットワークコントローラ12は、分類34に基づき、ヘッダ部分およびペイロード部分の両方をキャッシュ30に格納する(これは、処理コア14は、キャッシュ30でデータパケットのヘッダ部分にアクセスした後ペイロード部分にアクセスする必要がある場合があるためである)。しかし、優先度が比較的低いデータパケットの場合(例えば、分類34で優先度が比較的低いフロー/キューに属していると分類されるパケットの場合)、例えば、ネットワークコントローラ12は分類34に基づきヘッダ部分のみをキャッシュ30に格納する。別の実施形態では、優先度が比較的低い他のデータパケットについては、ネットワークコントローラ12はデータパケットのいずれの部分についてもキャッシュ30に格納することなく、別の適切なメモリ格納モードを選択する(例えば、プリフェッチモードを選択する)。さらに別の例を挙げると、ネットワークコントローラ12は、任意のその他の適切な基準、例えば、分類34に含まれる任意のその他の設定情報に少なくとも部分的に基づき、データパケットの一部分をキャッシュ30に格納する。
【0036】
<スヌープモード>
一実施形態によると、メモリ格納モード選択モジュール20があるデータパケットについて当該データパケットの分類34に基づきスヌープモードを選択すると、スヌープモジュール62が当該データパケットを処理する。一実施形態によると、スヌープモードでは、分類34に少なくとも部分的に基づいて、データパケットがネットワークコントローラ12からバス60を介してメモリ26へと送信される間、スヌープモジュール62が当該データパケットをスヌープする。一例を挙げると、分類34に基づき、データパケットのうち処理コア14が当該データパケットを処理中にアクセスする必要がある部分のみが、スヌープモジュール62によるスヌープの対象となる。例えば、分類34は、データパケットのうちスヌープモジュール62によるスヌープの対象となるべき部分を示す指標を含んでいる。
【0037】
一実施形態によると、スヌープモードは、プリフェッチモードおよび/またはキャッシュ蓄積モードとは別に独自に実行される。一実施形態によると、スヌープモジュール62は、対応する分類34に基づき、ネットワークコントローラ12からメモリ26へと送信されるデータパケット全てについて、一部分をスヌープする。
【0038】
従来のパケット通信システム(例えば、ハードウェアキャッシュコヒーレンシをサポートするもの)では、メモリに送信されるデータパケット全てが、キャッシュコヒーレンシを守るべくスヌープまたはスニッフィングされる。一般的に、このようなスヌープ動作(例えば、キャッシュ内にデータの有効なコピーがあるか否か確認し、新しいデータがメモリ内の対応する部分に書き込まれる場合にはキャッシュ内のデータの有効なコピーを無効化する動作)を実行すると、(例えば、メモリに対する書込みトランザクション全てについてスヌープが実行されるので)パケット通信システムでの負荷が過剰になってしまう可能性がある。これとは対照的に、スヌープモジュール62は、(例えば、データパケット全体ではなく)データパケットのうち処理コア14がアクセスする必要がある部分のみを選択的にスヌープするので、システム10においてスヌープに対応付けられる処理負荷が小さくなる。
【0039】
一実施形態によると、スヌープモードと他のメモリ格納モードとを組み合わせる。例えば、分類34に基づき、キャッシュ蓄積モードでは、データパケットのうち第1の部分をメモリ26に書込みつつ、データパケットのうち第2の部分を直接キャッシュ30に書き込む。一実施形態によると、データパケットのうち第1の部分をメモリ26に書き込んでいる間、スヌープモジュール62がデータパケットの第1の部分をスヌープすることができる。このように、本例では、スヌープモードとキャッシュ蓄積モードとを組み合わせて実行する。一実施形態によれば、前述したように、解析分類モジュール18は、あるデータパケットについて分類34を生成する場合、パケット処理モジュール16がデータパケットを処理する際にどのモードで動作すべきかを示すように分類34を構成する。
【0040】
一実施形態によると、データパケットは複数のバイトから構成されており、スヌープモジュール62は、(例えば、データパケット全体をスヌープするのではなく)データパケットのうちMバイト(例えば、データパケットのうち最初のMバイト)のみをスヌープする。尚、Mは例えば、当該データパケットに対応付けられている分類34で示される整数である。一実施形態によると、スヌープモジュール62は、データパケットの残りのバイト(例えば、Mバイト以外のバイト)に対してはスヌープを行わない。
【0041】
一実施形態によると、分類34は、データパケットのうちスヌープされるべき部分を指し示しており、例えば、データパケットの種類に基づき生成される。例えば、ネットワークルーティング処理に対応付けられているデータパケットの場合、処理コア14がアクセスおよび処理する必要があるのはヘッダ部分のみである。したがって、一実施形態によると、分類34は、スヌープモジュール62が分類34を参照すると、例えば、このようなデータパケットのうちヘッダ部分のみ(または、ヘッダ部分の関連箇所のみ)をスヌープするように生成される。別の例を挙げると、セキュリティ関連処理に対応付けられているデータパケットの場合、処理コア14がアクセスおよび処理するのは、ヘッダ部分およびペイロード部分の両方である。したがって、一実施形態によると、分類34は、スヌープモジュール62がセキュリティ処理に対応付けられているデータパケットのうちヘッダ部分およびペイロード部分(または、ヘッダ部分および/またはペイロード部分の関連箇所のみ)をスヌープするように生成される。
【0042】
さらに別の例によると、選択されたキューまたはフローに対応するデータパケットの分類34に基づき、スヌープモジュール62は、任意のその他の適切な基準、例えば、分類34に含まれる任意のその他の設定情報に少なくとも部分的に基づき、データパケットの一部分に対してスヌープを実行する。
【0043】
<図1に示すシステム10の動作>
前述したように、パケット処理モジュール16(例えば、メモリ格納モード選択モジュール20)は、あるデータパケットに対応して受信した分類情報34に基づき、当該データパケットについて適切なメモリ格納モード(例えば、プリフェッチモード、キャッシュ蓄積モード、および、スヌープモードのうち1以上のモード)を選択する。例えば、優先度が比較的高いデータパケット(例えば、高優先度データパケット全体、または、高優先度データパケットのうち関連部分のみ)は、ネットワークコントローラ12によってキャッシュ30に直接書き込むことができる。つまり、高優先度データパケットの場合、分類34は、メモリ格納モード選択モジュール20がキャッシュ蓄積モードを選択するように生成され得る。別の例では、高優先度データパケットの全体をスヌープモジュール62でスヌープすることができる。他方、優先度が中程度のデータパケット(例えば、優先度が高優先度データパケットよりも低いが低優先度データパケットよりは高いデータパケット)は、メモリ26に書き込まれて、処理コア14によってアクセスおよび処理される前に、プリフェッチモジュール220によってプリフェッチされ得る。つまり、中優先度データパケットの場合、分類34は、メモリ格納モード選択モジュール20がプリフェッチモードを選択するように生成され得る。低優先度データパケットは、メモリ26に格納して、処理コア14が処理する場合にのみキャッシュ30にフェッチされ得る。また、別の例を挙げると、対応付けられている分類34に基づき、中優先度データパケットおよび/または低優先度データパケットの一部分のみをスヌープモジュ−ル62でスヌープすることもできる。
【0044】
上述したように(例えば、データパケットの優先度に基づいて生成される)分類34に基づきプリフェッチモード、キャッシュ蓄積モード、および/または、スヌープモードで動作するのは、一例に過ぎない。別の実施形態によると、分類34は任意の別の手法で生成することもできる。
【0045】
前述したように、一実施形態によると、さまざまなメモリ格納モードにおいて、例えば、データパケット全体を処理するのではなく、データパケットのうち一部のみを処理する(例えば、データパケットのうち一部のみを、プリフェッチする、キャッシュ30に蓄積する、および/または、スヌープする)。例えば、データパケットのうち、処理コア14が当該データパケットを処理する際にアクセスする必要がある一部分のみを、(例えば、プリフェッチモードまたはキャッシュ蓄積モードでは)キャッシュ30内に入れる。このため、データパケットの一部は、処理コア14が当該データパケットに対するアクセスおよび/または処理を所望する場合には常に、キャッシュ30内にあって処理コア14が容易に利用可能であるので、当該データパケットの処理に対応付けられているレイテンシが小さくなる。また、(例えば、データパケット全体ではなく)データパケットの一部のみがキャッシュに格納されるので、キャッシュのデータ負荷が過剰になることはない(例えば、キャッシュに対する上書きを頻繁に行う必要はない)。また、キャッシュが小型化され、および/または、キャッシュからデータパケットをフラッシュする回数が少なくなる。
【0046】
一実施形態によると、解析分類モジュール18、プリフェッチモジュール22、キャッシュ蓄積モジュール42、および/または、スヌープモジュール62は、一から設定可能である。例えば、解析分類モジュール18は、利用領域、対応付けられているSOCの臨界、データパケットの種類、利用可能な帯域幅等に少なくとも部分的に基づき、データパケットのうち一部(例えば、プリフェッチモードまたはキャッシュ蓄積モードにおいてキャッシュに格納されるべき部分、または、スヌープされるべき部分)の選択を動的に変更するように設定され得る。別の例を挙げると、プリフェッチモジュール22、キャッシュ蓄積モジュール42、および、スヌープモジュール62は、(例えば、プリフェッチモードまたはキャッシュ蓄積モードにおいて)例えば、キャッシュにデータパケットの一部を入れるタイミングを動的に変更するように、および/または、図1のシステム10の動作に対応付けられている任意のその他の適切な基準を動的に変更するように設定され得る。
【0047】
図2は、本開示の一実施形態に係る、図1のシステム10を動作させる方法200の一例を示す図である。204において、ネットワークコントローラ12(または、システム10のコンポーネントのうち任意のその他の適切なコンポーネント)は、ネットワークを介して送信されるデータパケットを受信する。208において、解析分類モジュール18は、データパケットについて分類34を生成する。一実施形態によると、分類34は、データパケットに対するメモリ格納モードを示す指標を含む。一実施形態によると、分類34は、データパケットのうち、例えば、(例えば、プリフェッチモードまたはキャッシュ蓄積モードにおいて)キャッシュ30に格納されるべき部分、および/または、スヌープモジュール62によってスヌープされるべき部分を示す指標を含む。
【0048】
212において、メモリ格納モード選択モジュール20は、分類34に基づきメモリ格納モードを選択する。216において、パケット処理モジュール16は、選択されたメモリ格納モードを利用してデータパケットを処理する。例えば、プリフェッチモードが選択された場合、データパケットはメモリ26に格納され、プリフェッチモジュール22は、分類34に少なくとも部分的に基づき、メモリ26からキャッシュ30へとデータパケットの一部をプリフェッチする。別の例を挙げると、キャッシュ蓄積モードが選択された場合、分類34に少なくとも部分的に基づき、データパケットの一部はネットワークコントローラ12から直接キャッシュ30へと格納される。さらに別の例を挙げると、スヌープモードが選択された場合、スヌープモジュール62は、分類34に少なくとも部分的に基づき、バス60を介してメモリ26へとデータパケットが書き込まれている間、データパケットの一部をスヌープする。一実施形態によると、スヌープモードは、プリフェッチモードおよび/またはキャッシュ蓄積モードとは別に独立して実行される(例えば、スヌープモードは、メモリ26に書き込まれるデータパケット全てについて、例えば、プリフェッチモードおよび/またはキャッシュ蓄積モードのいずれが選択されようと、実行される)。
【0049】
本明細書では具体的な実施形態を図示および記載したが、本開示の範囲から逸脱することなく、図示および記載した具体的な実施形態に代えて多岐にわたる変形例および/または均等例を実施し得るものと留意されたい。本開示は、特許請求の範囲で記載した請求項を文字通り解釈した場合または均等物の原則の下で解釈され得る範囲内に実質的に含まれる方法、装置、および、製造物品を全て含むものである。本願は、本明細書に開示した実施形態を任意の点で適応または変更したものを含むものとする。このため、本開示は請求項およびその均等物によってのみ限定されることを明確に意図している。

【特許請求の範囲】
【請求項1】
ネットワークを介して送信されるデータパケットを受信する段階と、
前記データパケットに含まれる情報に基づき、前記データパケットについて分類情報を生成する段階と、
前記分類情報に基づき、前記データパケットについてメモリ格納モードを選択する段階と
を備える方法。
【請求項2】
前記メモリ格納モードを選択する段階はさらに、前記分類情報に基づき前記データパケットについてプリフェッチモードを選択する段階を有し、
前記方法はさらに、
前記プリフェッチモードが選択されることに応じて、前記データパケットをメモリに格納する段階と、
前記分類情報に少なくとも部分的に基づき、前記メモリからキャッシュへと、前記データパケットの少なくとも一部をフェッチする段階と
を備える請求項1に記載の方法。
【請求項3】
前記データパケットは第1のデータパケットであり、前記第1のデータパケットは第1のトラフィックフローと対応付けられており、
前記第1のデータパケットの前記少なくとも一部をフェッチする段階はさらに、前記第1のトラフィックフローに対応付けられている第2のデータパケットを処理している間に、前記第1のデータパケットおよび前記第2のデータパケットが同じトラフィックフローに対応付けられていることに少なくとも部分的に基づき、前記メモリから前記キャッシュへと、前記第1のデータパケットの前記少なくとも一部をフェッチする段階を有する請求項2に記載の方法。
【請求項4】
前記データパケットの前記少なくとも一部をフェッチする段階はさらに、処理コアが、前記データパケットの前記少なくとも一部に対して処理動作を実行するべく前記データパケットの前記少なくとも一部を要求する前に、前記データパケットの前記少なくとも一部を前記キャッシュにフェッチする段階を有する請求項2に記載の方法。
【請求項5】
前記分類情報を生成する段階はさらに、前記メモリから前記キャッシュへフェッチされる前記データパケットの前記少なくとも一部を示す指標を前記分類情報が含むように、前記データパケットについて前記分類情報を生成する段階を有する請求項2に記載の方法。
【請求項6】
前記メモリ格納モードを選択する段階はさらに、前記分類情報に基づき前記データパケットについてキャッシュ蓄積モードを選択する段階を有し、
前記方法はさらに、前記キャッシュ蓄積モードが選択されることに応じて、前記データパケットの一部をキャッシュに格納する段階を備える請求項1に記載の方法。
【請求項7】
前記データパケットの前記一部を前記キャッシュに格納する段階はさらに、前記データパケットの前記一部をネットワークコントローラから前記キャッシュへと送信する段階を有する請求項6に記載の方法。
【請求項8】
前記データパケットの前記一部は、前記データパケットの第1の部分を含み、前記データパケットは、前記第1の部分および第2の部分を含み、
前記方法はさらに、
前記データパケットの前記第2の部分を前記ネットワークコントローラからメモリへと送信する段階と、
前記データパケットの前記第2の部分の前記ネットワークコントローラから前記キャッシュへの送信を抑制する段階と
を備える請求項7に記載の方法。
【請求項9】
前記メモリ格納モードを選択する段階はさらに、前記データパケットについてスヌープモードを選択する段階を有し、
前記方法はさらに、
前記スヌープモードが選択されることに応じて、前記データパケットをメモリに送信する段階と、
前記データパケットを前記メモリに送信している間に、前記データパケットの一部についてスヌープを行う段階と
を備える請求項1に記載の方法。
【請求項10】
前記分類情報を生成する段階はさらに、スヌープの対象となる前記データパケットの前記一部を示す指標を前記分類情報が含むように、前記データパケットについて前記分類情報を生成する段階を有する請求項9に記載の方法。
【請求項11】
前記データパケットについて前記分類情報を生成する段階はさらに、
前記データパケットの優先度を決定する段階と、
前記データパケットの優先度が比較的高い優先度である場合には、前記分類情報が前記データパケットについてキャッシュ蓄積モードを示すように前記分類情報を生成する段階と
を有する請求項1に記載の方法。
【請求項12】
前記データパケットについて前記分類情報を生成する段階はさらに、前記データパケットの優先度が比較的高い優先度である場合には、前記データパケット全体をネットワークコントローラからキャッシュへと直接格納すべきである旨を前記分類情報が示すように前記分類情報を生成する段階を有する請求項11に記載の方法。
【請求項13】
前記データパケットについて前記分類情報を生成する段階はさらに、
前記データパケットの優先度を決定する段階と、
前記データパケットの優先度が比較的低い優先度である場合には、プリフェッチ無しで前記データパケットをメモリに格納する格納モードを前記分類情報が示すように前記分類情報を生成する段階と、
前記データパケットの優先度が前記比較的高い優先度よりも低く、前記比較的低い優先度よりも高い場合には、前記データパケットについてプリフェッチモードを前記分類情報が示すように前記分類情報を生成する段階と
を有する請求項1に記載の方法。
【請求項14】
処理コアと、
キャッシュと、
解析分類モジュールと、
メモリ格納モード選択モジュールと
を備え、
前記解析分類モジュールは、
ネットワークを介してネットワークコントローラが受信したデータパケットを前記ネットワークコントローラから受信して、
前記データパケットについて分類情報を生成し、
前記メモリ格納モード選択モジュールは、前記分類情報に基づき、前記データパケットについてメモリ格納モードを選択する
システム・オン・チップ(SOC)。
【請求項15】
前記メモリ格納モード選択モジュールがプリフェッチモードを選択することに応じて、前記データパケットをメモリに格納し、前記分類情報に少なくとも部分的に基づき、前記メモリから前記キャッシュへと前記データパケットの一部をプリフェッチするプリフェッチモジュールをさらに備える請求項14に記載のSOC。
【請求項16】
前記データパケットは、第1のトラフィックフローに対応付けられている第1のデータパケットであり、
前記プリフェッチモジュールは、前記処理コアが前記第1のトラフィックフローに対応付けられている第2のデータパケットを処理している間に、前記第1のデータパケットおよび前記第2のデータパケットが同じトラフィックフローに対応付けられていることに少なくとも部分的に基づき、前記第1のデータパケットの前記一部をプリフェッチする請求項15に記載のSOC。
【請求項17】
前記メモリは、前記SOCの外部に設けられている請求項15に記載のSOC。
【請求項18】
前記分類情報に少なくとも部分的に基づき、前記メモリ格納モード選択モジュールがキャッシュ蓄積モードを選択することに応じて、前記ネットワークコントローラが前記データパケットの一部を前記キャッシュに送信するように前記ネットワークコントローラを制御するキャッシュ蓄積モジュールをさらに備える請求項14に記載のSOC。
【請求項19】
前記分類情報に基づき、前記データパケットが前記ネットワークコントローラから前記メモリに送信されている間に、前記データパケットの一部に対してスヌープを行うスヌープモジュールをさらに備える請求項14に記載のSOC。
【請求項20】
前記分類情報は、前記スヌープモジュールによってスヌープされるべき前記データパケットを示す指標を含む請求項19に記載のSOC。

【図1】
image rotate

【図2】
image rotate


【公開番号】特開2011−198360(P2011−198360A)
【公開日】平成23年10月6日(2011.10.6)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−45561(P2011−45561)
【出願日】平成23年3月2日(2011.3.2)
【出願人】(509336211)マーベル・イスラエル・(エム・アイ・エス・エル)・リミテッド (6)
【氏名又は名称原語表記】Marvell Israel (M.I.S.L.) Ltd.
【住所又は居所原語表記】6 Hamada Street, Mordot HaCarmel Industrial Park, Yokneam, Israel 20692
【Fターム(参考)】