(57)【要約】【課題】ネットワークパケットのキャッシュ管理のための技術を提供する。【解決手段】ネットワークコントローラに通信可能に結合されたネットワークデバイスのプロセッサ上キャッシュから追い出されるネットワークパケットのキャッシュラインを識別する技術である。ネットワークデバイスは、ネットワークパケットがネットワークパケットを処理した後に必要ないという決定に基づいて、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されるか否かを決定し、ネットワークコントローラから受信したエビクションポリシーに基づいて、キャッシュラインがキャッシュから追い出されるという指示を提供するように構成される。【選択図】図１
2016123077.tif 000002
【特許請求の範囲】
【請求項１】
追い出されるネットワークパケットを識別するネットワークデバイスであって、
複数のキャッシュラインを有するキャッシュを含むプロセッサと、
ネットワークパケットを受信し、前記ネットワークパケットを前記プロセッサの前記キャッシュのキャッシュラインに記憶し、前記ネットワークパケットを処理するネットワークパケット処理モジュールと、
前記ネットワークパケットが後の処理のために必要であるか否かを決定し、前記ネットワークパケットが後の処理のために必要でないという決定に応じて、前記ネットワークパケットに対応する前記キャッシュラインが前記キャッシュから追い出されることを示すキャッシュ管理モジュールと
を有するネットワークデバイス。
【請求項２】
前記ネットワークパケットに対応する前記キャッシュラインが前記キャッシュから追い出されることを示すことは、インジケータで前記キャッシュラインにマーキングすることを有する、請求項１に記載のネットワークデバイス。
【請求項３】
前記ネットワークパケットに対応する前記キャッシュラインが前記キャッシュから追い出されることを示すことは、前記キャッシュラインのフラグビットを設定することを有する、請求項１に記載のネットワークデバイス。
【請求項４】
前記ネットワークパケットに対応する前記キャッシュラインが前記キャッシュから追い出されることを示すことは、一時無効命令を前記キャッシュラインに設定することを有する、請求項１に記載のネットワークデバイス。
【請求項５】
前記ネットワークパケットに対応する前記キャッシュラインが前記キャッシュから追い出されることを示すことは、前記キャッシュの所定のメモリ範囲に前記キャッシュラインを記憶することを有し、前記キャッシュの前記所定のメモリ範囲は、前記キャッシュのクリーンアップのときに破棄される前記キャッシュの部分に存在する、請求項１に記載のネットワークデバイス。
【請求項６】
前記ネットワークパケットが後の処理のために必要であるか否かという決定は、前記ネットワークパケットのワークロードのタイプに基づく、請求項１に記載のネットワークデバイス。
【請求項７】
前記ネットワークデバイスにより受信された前記ネットワークパケットを前記キャッシュに直接提供する入出力（I/O）サブシステムを更に有する、請求項１に記載のネットワークデバイス。
【請求項８】
前記キャッシュ管理モジュールは、前記キャッシュから前記キャッシュラインの追い出しのときに前記キャッシュラインを更に破棄する、請求項１に記載のネットワークデバイス。
【請求項９】
前記キャッシュは、ダイ上のラストレベルキャッシュを有する、請求項１に記載のネットワークデバイス。
【請求項１０】
ネットワークコントローラとコンテンツ記憶デバイスとを含むソフトウェア・デファインド・ネットワーク環境で使用されるネットワークデバイスであって、
複数のキャッシュラインを含むキャッシュを含むプロセッサと、
前記ネットワークデバイスに通信可能に結合された前記コンテンツ記憶デバイスからネットワークパケットを受信し、前記ネットワークパケットをキャッシュラインに記憶し、前記ネットワークパケットを処理するネットワークパケット処理モジュールと、
前記ネットワークデバイスに通信可能に結合された前記ネットワークコントローラからエビクションポリシーを受信し、前記ネットワークパケットが前記ネットワークパケットを処理した後に必要ないという決定に基づいて、前記ネットワークパケットに対応する前記キャッシュラインが前記キャッシュから追い出されるか否かを決定し、前記ネットワークパケットが前記ネットワークパケットを処理した後に必要でないという決定に応じて、前記キャッシュラインが前記キャッシュから追い出されるという指示を提供するキャッシュ管理モジュールと
を有するネットワークデバイス。
【請求項１１】
前記キャッシュラインが前記キャッシュから追い出されるという前記指示を提供することは、前記ネットワークコントローラから受信した前記エビクションポリシーに基づいて前記キャッシュラインが前記キャッシュから追い出されるという前記指示を提供することを有する、請求項１０に記載のネットワークデバイス。
【請求項１２】
前記ネットワークパケットが処理した後に必要ないという決定は、前記ネットワークパケットのワークロードのタイプに基づく、請求項１０に記載のネットワークデバイス。
【請求項１３】
前記指示を提供することは、前記キャッシュラインのフラグビットを設定することを有する、請求項１０に記載のネットワークデバイス。
【請求項１４】
前記指示を提供することは、一時無効命令を前記キャッシュラインに設定することを有する、請求項１０に記載のネットワークデバイス。
【請求項１５】
前記指示を提供することは、前記キャッシュの所定のメモリ範囲に前記キャッシュラインを記憶することを有し、前記キャッシュの前記所定のメモリ範囲は、前記キャッシュのクリーンアップのときに前記キャッシュの他の部分の前に破棄される前記キャッシュの部分に存在する、請求項１０に記載のネットワークデバイス。
【請求項１６】
前記キャッシュは、ダイ上のラストレベルキャッシュを有する、請求項１０に記載のネットワークデバイス。
【請求項１７】
ネットワークデバイスのプロセッサ上キャッシュから追い出されるネットワークパケットのキャッシュラインを識別する方法であって、
前記ネットワークデバイスにより、前記ネットワークデバイスの前記プロセッサ上キャッシュにおいて前記ネットワークパケットを受信するステップであり、前記プロセッサ上キャッシュは複数のキャッシュラインを有するステップと、
前記ネットワークパケットを前記プロセッサ上キャッシュの前記キャッシュラインに記憶するステップと、
前記ネットワークパケットを処理するステップと、
前記ネットワークパケットが後の処理のために必要であるか否かを決定するステップと、
前記ネットワークパケットが後の処理のために必要でないという決定に応じて、前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されることを示すステップと
を有する方法。
【請求項１８】
前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されることを示すステップは、前記ネットワークデバイスに通信可能に結合されたネットワークコントローラから受信したエビクションポリシーに基づいて、前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されることを示すステップを有する、請求項１７に記載の方法。
【請求項１９】
前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されることを示すステップは、インジケータで前記キャッシュラインにマーキングするステップを有する、請求項１７に記載の方法。
【請求項２０】
前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されることを示すステップは、キャッシュラインのフラグビットを設定するステップを有する、請求項１７に記載の方法。
【請求項２１】
前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されることを示すステップは、一時無効命令を前記キャッシュラインに設定するステップを有する、請求項１７に記載の方法。
【請求項２２】
前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されることを示すステップは、前記プロセッサ上キャッシュの所定のメモリ範囲に前記キャッシュラインを記憶するステップを有し、前記プロセッサ上キャッシュの前記所定のメモリ範囲は、前記プロセッサ上キャッシュのクリーンアップのときに最初に破棄される前記プロセッサ上キャッシュの部分に存在する、請求項１７に記載の方法。
【請求項２３】
前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されるという指示に基づいて、前記プロセッサ上キャッシュからの前記キャッシュラインの追い出しのときに前記キャッシュラインを破棄するステップを更に有する、請求項１７に記載の方法。
【請求項２４】
プロセッサとメモリとを有するコンピュータデバイスであって、
前記メモリは、前記プロセッサにより実行された場合、前記コンピュータデバイスに対して請求項１７ないし２３のうちいずれか１項に記載の方法を実行させる複数の命令を記憶するコンピュータデバイス。
【請求項２５】
コンピュータデバイスに対して請求項１７ないし２３のうちいずれか１項に記載の方法を実行させるコンピュータプログラム。
【請求項２６】
請求項２５に記載のコンピュータプログラムを記憶した１つ以上の機械読み取り可能媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
現在のコンピュータデバイスは、個人的な使用、ビジネス上の使用及び社交的な使用にとって普遍的なツールになっている。従って、多くの現在のコンピュータデバイスは、ネットワーク上でデータ通信を取得及び送信／受信するために、インターネット及び企業イントラネットを含む様々なデータネットワークに接続することができる。コンピュータデバイスの間での通信を実現するために、典型的には、ネットワークは、１つのコンピュータデバイスから他のものに通信をルーティングするために、１つ以上のネットワークデバイス（例えば、ネットワークスイッチ、ネットワークルータ等）を含む。
【０００２】
ソフトウェア・デファインド・ネットワーキング（SDN：software-defined  networking）は、ネットワークデバイスを使用してネットワークを通じて通信（すなわち、ネットワークパケットのフロー）を実現するために使用され得るネットワーキングアーキテクチャである。ソフトウェア・デファインド・ネットワーキングでは、従来ではネットワークデバイスレベルで実行されていたタスクである、ネットワークを通じたネットワークパケットのネットワークトラヒックのフローの論理決定を行うために、外部に位置するSDNコントローラがネットワークに接続される。従って、以前ではネットワークデバイスの専用のネットワークプロセッサで実行されていたネットワークパケット処理（例えば、ネットワークトラヒックのフローのロジック）は、現在では汎用プロセッサを備えたネットワークデバイスで処理されることがあり、これにより、ソフトウェア・デファインド・ネットワークに配置されたネットワークデバイスに必要なハードウェアコンポーネントの複雑性を低減している。特定のネットワークパケットのペイロード又はワークロードのタイプは、非常に大きいワーキングサイズ（working  size）を有する特定のネットワークパケット及び／又はヘッダ更新の後にのみ処理される（すなわち、キャッシュの再利用はない）特定のネットワークパケットに関連付けられることがある。このようなネットワークパケットは、ネットワーク又は帯域幅を多く使用することがあるため、汎用プロセッサを使用したネットワークパケットの処理においてネットワークデバイスの性能の劣化を生じる可能性がある。
【図面の簡単な説明】
【０００３】
ここに記載の概念は、添付図面において例として示されており、限定として示されているのではない。説明の簡潔性及び明瞭性のため、図面に示す要素は、必ずしも縮尺通りに描かれていない。適切であると考えられる場合には、対応する要素又は同様の要素を示すために、参照ラベルが図面の間で繰り返されている。
【図１】通信をルーティングするシステムの少なくとも１つの実施例の簡略化したブロック図
【図２】図１のシステムのネットワークインフラストラクチャのネットワークデバイスの少なくとも１つの実施例の簡略化したブロック図
【図３】図２のネットワークデバイスの環境の少なくとも１つの実施例の簡略化したブロック図
【図４】図１のシステムのソフトウェア・デファインド・ネットワークの少なくとも１つの実施例の簡略化したブロック図
【図５】図２のネットワークデバイスのキャッシュエビクションポリシー（cache  eviction  policy）を管理する方法の少なくとも１つの実施例の簡略化したフローチャート
【図６】図５のエビクションポリシーを実施する方法の少なくとも１つの実施例の簡略化したフローチャート
【図７】図５のキャッシュラインの構成の少なくとも１つの実施例の簡略化したブロック図
【発明を実施するための形態】
【０００４】
この開示の概念は、様々な変更及び代替の形式を受けることができるが、この特定の実施例が図面において例として示されており、ここに詳細に説明する。しかし、この開示の概念を開示された特定の形式に限定する意図はなく、これに反して、意図は、この開示及び特許請求の範囲に従った全ての変更、等価物及び代替物をカバーすることが分かる。
【０００５】
明細書において“一実施例”、“実施例”、“例示的な実施例”等の言及は、記載する実施例が特定の特徴、構成又は特性を含んでもよいが、全ての実施例がその特定の特徴、構成又は特性を含んでもよく、必ずしも含まなくてもよいことを示す。更に、このような語句は、必ずしも同じ実施例を示しているとは限らない。更に、特定の特徴、構成又は特性が実施例に関して記載されている場合、明示的に記載されていても記載されていなくても、他の実施例に関してこのような特徴、構成又は特性が作用することが、当業者の認識の範囲内にあることが提示される。更に、“A、B及びCのうち少なくとも１つ”の形式のリストに含まれる項目は、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)又は(A、B及びC)を意味し得ることを認識するべきである。同様に、“A、B又はCのうち少なくとも１つ”の形式のリストの項目は、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)又は(A、B及びC)を意味し得る。
【０００６】
或る場合には、開示された実施例は、ハードウェア、ファームウェア、ソフトウェア又はこれらのいずれかの組み合わせで実現されてもよい。開示された実施例はまた、１つ以上の過渡的な或いは過渡的でない機械読み取り可能（例えば、コンピュータ読み取り可能）記憶媒体により伝達される命令又は記憶される命令として実現されてもよい。１つ以上の過渡的な或いは過渡的でない機械読み取り可能記憶媒体は、１つ以上のプロセッサにより読み取られて実行されてもよい。機械読み取り可能記憶媒体は、機械により読み取り可能な形式で情報を記憶又は送信するいずれかの記憶デバイス、機構又は他の物理的構成（例えば、揮発性若しくは不揮発性メモリ、メディアディスク又は他のメディアデバイス）として具現されてもよい。
【０００７】
図面において、いくつかの構成又は方法の特徴は、特定の配置及び／又は順序で示されることがある。しかし、このような特定の配置及び／又は順序は必要なくてもよいことを認識するべきである。むしろ、或る実施例では、このような特徴は、例示的な図面に示すものとは異なる方式及び／又は順序で配置されてもよい。更に、特定の図面に構成上又は方法の特徴が含まれることは、このような特徴が全ての実施例で必要であることを示すことを意味するのではなく、或る実施例では、含まれなくてもよく、他の特徴と組み合わされてもよい。
【０００８】
図１を参照すると、例示的な実施例において、ネットワークデバイスのフロー参照管理のためのシステム又はネットワーク100は、ネットワーク制御デバイス110及びネットワークインフラストラクチャ120に接続されたコンテンツ記憶デバイス102を含む。ネットワーク制御デバイス110及びネットワークインフラストラクチャ120のそれぞれは、ソフトウェア・デファインド・ネットワーキング（SDN：software-defined  networking）アーキテクチャ及び／又はネットワーク機能仮想化（NFV：network  functions  virtualization）アーキテクチャにおいて動作可能でもよい。ネットワークインフラストラクチャ120は、ネットワークインフラストラクチャのネットワーク通信パス124を介してコンテンツ記憶デバイス102と１つ以上のコンピュータデバイス130との間のネットワークパケットの送信を実現するために、122a-122hとして例示的に表され、ここではネットワークデバイス122として併せて示される少なくとも１つのネットワークデバイス122を含む。
【０００９】
使用中に、以下に更に詳細に説明するように、ネットワークデバイス122は、コンテンツ記憶デバイス102又はコンピュータデバイス130からネットワークパケットを受信し、ネットワークデバイス122に記憶されたポリシーに基づいてネットワークパケットを処理し、ネットワークパケットを送信パスにおける次のコンピュータデバイス（例えば、他のネットワークデバイス122、コンピュータデバイス130、コンテンツ記憶デバイス102等）に転送する。どのコンピュータデバイスが送信パスにおける次のコンピュータデバイスであるかを認識するために、ネットワークデバイス122は、ネットワークフローを決定するための参照動作を実行する。参照動作は、ネットワークパケットの一部でハッシュを実行し、フロー参照テーブル（すなわち、ネットワークフローにマッピングするハッシュテーブル）に対して検査するためにその結果を使用する。
【００１０】
典型的には、フロー参照テーブルは、参照動作の待ち時間を低減するためにプロセッサ上キャッシュ（例えば、プロセッサのラストレベルキャッシュ）に記憶され、ネットワークフローは、ネットワークデバイス122のメモリに記憶される。しかし、フロー参照テーブルは、非常に大きくなる可能性があり、プロセッサ上キャッシュに利用可能な空間より大きくなる可能性がある。従って、ネットワークフローのハッシュエントリに対応するキャッシュラインは、ネットワークデバイス122のメモリに追い出され、これは、フロー参照テーブルのこれらの部分がネットワークパケットに対応するキャッシュラインを含む場合に参照動作に待ち時間を取り入れる。更に、どのキャッシュラインがメモリに追い出されるかは、どのキャッシュエビクション（cache  eviction）アルゴリズムがネットワークデバイス122に使用されているかに基づいて、ネットワークデバイスにより制御される。
【００１１】
しかし、ストリーミングネットワークパケットのような特定のネットワークパケットは、一回のみ読み取られ／処理され、その後に、次の処理のために必要とされない。従って、このような単一読み取りのネットワークパケットに対応するキャッシュラインは、処理の後に破棄されてもよい。例えば、処理の後に破棄されてもよいネットワークパケットに対応するキャッシュラインは、プロセッサ上キャッシュのクリーンアップ中にプロセッサ上キャッシュから追い出される次のキャッシュラインであるとしてキャッシュラインを識別するため、表示でマーキングされてもよく、プロセッサ上キャッシュの特定の位置に配置されてもよい。更に、マーキングされたキャッシュライン、配置されたキャッシュライン又は他に識別されたキャッシュラインは、ネットワークデバイス122のメモリに保存されるのではなく、エビクションのときに破棄されてもよいキャッシュラインとして識別される。従って、不要なキャッシュラインは、ネットワークデバイス122のフロー参照テーブルに記憶されず、これは、参照動作に関連する待ち時間を改善し得る。この理由は、フロー参照テーブルは、再び使用されるネットワークフローに割り当てるための多くの空間を有する可能性があるからである。
【００１２】
ネットワークインフラストラクチャ120は、セルラネットワーク（例えば、GSM（Global System  for  Mobile  Communications））、デジタル加入者線（DSL：digital  subscriber  line）ネットワーク、ケーブルネットワーク、電話ネットワーク、ローカルエリアネットワーク若しくは広域ネットワーク、グローバルネットワーク（例えば、インターネット）又はこれらのいずれかの組み合わせを含むいずれかの種類の有線又は無線通信ネットワークとして具現されてもよい。更に、ネットワークインフラストラクチャ120は、それぞれのデバイスの間で通信を実現するために必要ないずれかの数の更なるデバイスを含んでもよい。
【００１３】
使用中に、ネットワークパケットは、ネットワークフロー又はパケットフローに基づいて、ネットワークデバイス122を相互接続する一式のネットワーク通信パス124に沿って、コンテンツ記憶デバイス102とコンピュータデバイス130との間で送信される。前述のように、ネットワークフローは、受信したネットワークパケットを処理の後にどこに（すなわち、どのネットワーク通信パス124に沿って）送出するかを示すために各ネットワークデバイス122により使用される。ネットワーク通信パス124は、各デバイスの間で通信を実現可能ないずれかの種類の有線又は無線信号パスとして具現されてもよい。例えば、ネットワーク通信パス124は、バス、ポイント・ツー・ポイント相互接続、介在するデバイス等を介したいずれかの数の有線のプリント回路基板トレースとして具現されてもよい。いずれかの適切な通信プロトコル（例えば、TCP/IP）は、例えば、コンテンツ記憶デバイス102、コンピュータデバイス130及びネットワークデバイス122の特定の種類又は構成に依存して、ネットワーク通信パス124に沿ったネットワークパケットの送信を実施するために使用されてもよい。
【００１４】
ネットワークデバイス122は、ルータ、スイッチ、サーバ等のように、コンテンツ記憶デバイス102とコンピュータデバイス130との間で通信を実現可能ないずれかの種類のデバイスとして具現されてもよい。或る実施例では、NFVアーキテクチャのように、ネットワークデバイス122の１つ以上は、ネットワークデバイス122の物理的ネットワーク機能をソフトウェアで実現するために、１つ以上の仮想マシン（VM：virtual  machine）を実行してもよい。換言すると、ネットワークデバイス122により実行される機能のいくつかは仮想化されてもよい。或る実施例では、ネットワークデバイス122は、汎用コンピュータデバイスとして具現されてもよい（すなわち、機器に特有のハードウェアがない）。
【００１５】
ネットワーク通信パス124の例示的な構成は、ネットワークパケットがネットワークインフラストラクチャ120内を移動する複数の選択肢（すなわち、ルート）が存在することを示すことを意図するものであり、例示的なネットワークインフラストラクチャ120の限定として解釈されるべきではないことを認識すべきである。例えば、ネットワークデバイス122aからネットワークデバイス122eに移動するネットワークパケットは、ネットワークデバイス122aからネットワークデバイス122eに直接的にネットワークフローを割り当てられてもよい。他の例として、ネットワークデバイス122aとネットワークデバイス122eとの間のネットワーク通信パス124上でのサービス品質（QoS：quality  of  service）の劣化のような特定の条件で、その同じネットワークパケットは、ネットワークデバイス122aに対してネットワークパケットをネットワークデバイス122bに送信するように命令するネットワークフローを割り当てられてもよい。次に、ネットワークデバイス122bに対してネットワークパケットをネットワークデバイス122eに更に送信するように命令するネットワークフローを割り当てられてもよい。
【００１６】
ネットワークパケット管理情報（例えば、ネットワークフロー、ネットワークパケットのタイプに対応するポリシー等）は、ネットワークアプリケーション114により管理され、ネットワーク制御デバイス110上で実行するネットワークコントローラ112に提供される。ネットワークアプリケーション114がネットワーク管理情報を効果的に管理するために、ネットワークコントローラ112は、ネットワークインフラストラクチャ120の抽象化をネットワークアプリケーション114に提供する。或る実施例では、ネットワークコントローラ112は、複数の利用可能なネットワークフローに対応するサービス品質（QoS）又はネットワークパケットの特定のワークロードタイプに関連するポリシーに基づいてネットワークパケット管理情報を更新してもよい。例えば、コンピュータデバイス130は、コンテンツ記憶デバイス102がコンピュータデバイス130上で再生するビデオストリームを提供することを要求する要求を、コンテンツ記憶デバイス102に送出してもよい。コンテンツ記憶デバイス102は、要求を受信した後に、要求を処理し、要求されたビデオストリームのコンテンツに対応するデータ（すなわち、ペイロードデータ、オーバーヘッドデータ等）を含むネットワークパケットをネットワークデバイス122の１つに提供する。受信側のネットワークデバイス122において、受信したネットワークパケットは、処理されたネットワークパケットのヘッダを更新する前に処理される。受信側のネットワークデバイス122は、ネットワークコントローラ112により提供されるネットワークフローに従って、処理されたネットワークパケットをターゲットデバイスに送信する。ターゲットデバイスは、受信側のネットワークデバイス122がネットワークインフラストラクチャ120のどこに存在するかに依存して、他のネットワークデバイス122でもよく、要求を開始したコンピュータデバイス130でもよい。
【００１７】
ネットワークルーティングパケット及びオーディオ／ビデオストリーミングパケットのような特定のネットワークパケットは、潜在的に制限のないサイズを備えたワーキングセット（working  set）及び／又は典型的にはネットワークデバイス122がネットワークパケットを処理した後にネットワークデバイス122により再び使用されないネットワークを多く使用するワークロードであるワークロードタイプ（例えば、ストリーミングワークロードタイプ）を有してもよい。このようなネットワークパケットは、ネットワークデバイス122の優先データ記憶位置（すなわち、キャッシュ）の大きい部分を占める可能性があり、これは、ネットワークパケットが処理された後に再び利用されなくても、ネットワークデバイス122の性能の低下を生じる可能性がある。従って、このようなネットワークパケットの記憶は必要なくてもよく、これらのネットワークパケットは、処理の後にネットワークデバイス122により破棄されてもよい。当然に、このような種類のいくつかのネットワークパケットは、将来の処理のために記憶される必要があってもよい。
【００１８】
例えば、プロセッサ202により決して再び必要とされないネットワークパケットに対応するデータをメモリ208に書き込むことは、負のエネルギー効果を有する可能性がある。更に、LRUキャッシュ置換アルゴリズムのような特定のキャッシュ置換アルゴリズムを使用するネットワークデバイス122では、ネットワークパケットは、MRU（most  recently  used）としてマーキングされてもよい。これは、ネットワークパケットが長期間の間にLLCから追い出されないことを生じ得る（すなわち、キャッシュの汚染）。更に、LLCの大きい部分が、再び使用されないであろう大きいワーキングセットサイズのこのようなネットワークパケットを記憶するために使用されているため、このようなネットワークパケットに占有される空間がなければLLCに存在し得るデータについて、メモリ208へのアクセスが必然的に行われる可能性がある。更なる負の効果は、高いメモリ帯域幅の使用、待ち時間及び相互接続の輻輳を含み得る。
【００１９】
コンテンツ記憶デバイス102は、コンテンツを記憶し、ネットワーク制御デバイス110及びネットワークインフラストラクチャ120と通信可能ないずれかの種類の記憶デバイスとして具現されてもよい。或る実施例では、コンテンツ記憶デバイス102は、非限定的に、コンピュータ、マイクロプロセッサシステム、サーバ、コンピュータサーバ（例えば、データベースサーバ、アプリケーションサーバ、ウェブサーバ等）、ラック搭載サーバ、ブレードサーバ、ラップトップコンピュータ、ノートブックコンピュータ、ネットワーク機器、ウェブ機器、分散コンピュータシステム、プロセッサに基づくシステム及び／又はネットワークアタッチトストレージ（NAS：network  attached  storage）デバイスを含み、ここに記載の機能を実行可能ないずれかの種類の演算又はコンピュータデバイスとして具現されてもよい。コンテンツ記憶デバイス102は、プロセッサ、メモリ、I/Oサブシステム、通信回路及び／又は周辺機器デバイスのようなデバイスに典型的に存在するいずれかの種類のコンポーネントを含んでもよい。システム100は１つのコンテンツ記憶デバイス102を有するものとして例示的に示されているが、１つより多くのコンテンツ記憶デバイス102を有するネットワークがここで考えられることを認識すべきである。コンテンツデータベース104は、リモートアプリケーション106により取得可能なデータを記憶可能ないずれかの種類のデータベースでもよい。
【００２０】
例示的なコンテンツ記憶デバイス102は、コンテンツデータベース104と、リモートアプリケーション106とを含む。リモートアプリケーション106は、ネットワークインフラストラクチャ120のネットワークデバイス122を介してコンピュータデバイス130へのデータを送信及び受信可能ないずれかの種類のアプリケーションとして具現されてもよい。或る実施例では、リモートアプリケーション106は、ウェブアプリケーション（すなわち、シンアプリケーション（thin  application））、又はプライベート、パブリック若しくはハイブリッド型のクラウドに基づくアプリケーションとして具現されてもよい。
【００２１】
例示的なシステム100は、単一のリモートアプリケーション106を含むが、１つより多くのリモートアプリケーション106がコンテンツ記憶デバイス102上で実行してもよく、利用可能でもよいことを認識するべきである。特定の実施例では、１つより多くのコンテンツ記憶デバイス102は、分散コンピュータ環境のように、１つ以上のコンテンツ記憶デバイス102を通じて実行する同じ種類のリモートアプリケーション106の１つより多くのインスタンスを有してもよいことを更に認識するべきである。
【００２２】
ネットワーク制御デバイス110は、ネットワークコントローラ112を実行し、コンテンツ記憶デバイス102とネットワークインフラストラクチャ120との間の通信を実現し、ここに記載の機能を実行可能ないずれかの種類のコンピュータデバイスとして具現されてもよい。例えば、ネットワーク制御デバイス110は、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータデバイス、家電デバイス、モバイルコンピュータデバイス、移動電話、スマートフォン、タブレットコンピュータデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピュータデバイス、スマートテレビ、スマート機器及び／又は他の種類のコンピュータ若しくはネットワークデバイスとして具現されてもよく、これらを含んでもよい。従って、ネットワーク制御デバイス110は、プロセッサ、メモリデバイス、通信回路及びデータ記憶装置のような、ネットワーク制御デバイス又は同様のコンピュータデバイスに一般的に存在するデバイス及び構成を含んでもよい。これらは、説明を明瞭にするために図１に示されていない。
【００２３】
ネットワークコントローラ112は、ネットワークインフラストラクチャ120のネットワークフローを制御可能ないずれかの種類のハードウェア、ソフトウェア及び／又はファームウェアとして具現されてもよく、これらを含んでもよい。例えば、例示的な実施例では、ネットワークコントローラ112は、ソフトウェア・デファインド・ネットワーキング（SDN）環境で動作可能である（すなわち、SDNコントローラ）、及び／又はネットワーク機能仮想化（NFV）環境で動作可能である（すなわち、MANO（NFV  manager  and  network  
orchestrator））。従って、ネットワークコントローラ112は、ネットワークフロー情報をSDN環境及び／又はNFV環境で動作可能なネットワークデバイス122に送出（例えば、送信等）してもよい。SDNアーキテクチャでは、SDNネットワークコントローラは、遠隔位置からネットワークデバイス122の構成を管理する抽象化された制御プレーンを提供する集中ネットワーク管理アプリケーションとして機能する。
【００２４】
使用中に、ネットワークコントローラ112は、以下に詳細に説明するように、ポリシー情報をネットワークデバイス122に提供するように構成される。ポリシー情報は、ネットワークデバイス122がネットワークパケットを処理した後にキャッシュ204からネットワークパケットに対応するデータを追い出すときに使用する命令（例えば、ネットワークフローに基づく命令、メモリ管理命令等）を含んでもよい。ポリシー情報は、例えば、処理の後にネットワークデバイス122により再利用されないストリーミングワークロードタイプを備えたネットワークパケットのように、ネットワークパケットのタイプに基づいてもよい。以下に更に説明するように、ネットワークデバイス122は、ポリシー情報に基づいてパケット処理判断を行う（例えば、後に必要とされないと思われるネットワークパケットをメモリから追い出す）。
【００２５】
SDNネットワークではビジネスアプリケーションと一般的に呼ばれるネットワークアプリケーション114は、ネットワークインフラストラクチャ120を通じたネットワークパケットの処理及びフローを動的に制御可能ないずれかの種類のネットワークアプリケーションとして具現されてもよい。例えば、ネットワークアプリケーション114は、ネットワーク仮想化アプリケーション、ファイヤウォール監視アプリケーション、ユーザ識別情報管理アプリケーション、アクセスポリシー制御アプリケーション及び／又はこれらの組み合わせとして具現されてもよい。ネットワークアプリケーション114は、ネットワークコントローラ112とインタフェース接続し、ネットワークコントローラ112に転送されるパケットを受信し、ネットワークデバイス122に提供されるネットワークフローを管理するように構成される。
【００２６】
使用中に、ネットワークアプリケーション114は、ネットワークインフラストラクチャ120のトポロジの抽象化モデルを受信し、ネットワークインフラストラクチャ120のネットワークデバイス122の動作を適応させる。例えば、適応される動作は、ネットワークフローの変更でもよい。或る実施例では、変更されたネットワークフローは、リアクティブ型ネットワークフローと一般的に呼ばれるリモートアプリケーション106の要件に基づいてもよい。以下に更に詳細に説明するように、或る実施例では、ネットワークアプリケーション114は、アプリケーションプログラミングインタフェース（API：application  programming  interface）を介してシステム100の抽象化において実行可能なSDNアプリケーション又は他のコンピュータソフトウェア若しくはプラットフォームでもよい。ネットワークアプリケーション114がSDNアプリケーションである場合のような或る実施例では、ネットワークアプリケーション114は、仮想ファイヤウォール、仮想アプリケーション配信コントローラ及び仮想負荷バランサのようなネットワーク仮想化サービスを提供してもよい。
【００２７】
コンピュータデバイス130は、ネットワークデバイス122を介してネットワークパケットをリモートアプリケーション106に送信するように及び／又はリモートアプリケーション106からネットワークパケットを受信するように構成されてもよい。コンピュータデバイス130は、非限定的に、デスクトップコンピュータ、ラップトップコンピュータデバイス、サーバコンピュータ、家電デバイス、モバイルコンピュータデバイス、移動電話、スマートフォン、タブレットコンピュータデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピュータデバイス、スマートテレビ、スマート機器及び／又は他の種類のコンピュータデバイスを含み、ここに記載の機能を実行可能ないずれかの種類のコンピュータデバイスとして具現されてもよく、これらを含んでもよい。従って、コンピュータデバイス130は、プロセッサ、メモリデバイス、通信回路及びデータ記憶装置のような、コンピュータデバイス一般的に存在するデバイス及び構成を含んでもよい。これらは、説明を明瞭にするために図１に示されていない。
【００２８】
図２を参照すると、例示的なネットワークデバイス122は、ダイ上キャッシュ204を備えたプロセッサ202と、メモリ208と、入出力（I/O）サブシステム206と、通信回路212と、１つ以上の周辺機器デバイス214とを含む。ネットワークデバイス122は、非限定的に、汎用コンピュータデバイス、ネットワーク機器（例えば、物理的又は仮想的）、ウェブ機器、ルータ、スイッチ、マイクロプロセッサシステム、サーバ（例えば、スタンドアローン型、ラック搭載型、ブレード型等）、分散コンピュータシステム、プロセッサに基づくシステム、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、スマートフォン、モバイルコンピュータデバイス、ウェアラブルコンピュータデバイス、家電デバイス又は他のコンピュータデバイスを含み、ここに記載の機能を実行可能ないずれかの種類の演算又はコンピュータデバイスとして具現されてもよい。
【００２９】
使用中に、以下に更に詳細に説明するように、ネットワークデバイス122の１つがネットワークパケットを受信した場合、ネットワークパケットは、I/Oサブシステム206を介してネットワークデバイス122のメモリ208（すなわち、メインメモリ）又はネットワークデバイス122のプロセッサ202のダイ上キャッシュ204に書き込まれる。データダイレクトI/O（DDIO：data  direct  I/O）の実施例のように、ネットワークパケットがダイ上キャッシュ204に直接的に書き込まれる実施例では、メモリ208ではなく、ダイ上キャッシュ204は、ネットワークパケットの主な宛先になる。このような実施例では、典型的には、ネットワークパケットは、ネットワークパケットがダイ上キャッシュ204から追い出された場合、ネットワークデバイス122のメモリ208に書き込まれる。
【００３０】
プロセッサ202は、ここに記載の機能を実行可能ないずれかの種類のプロセッサとして具現されてもよい。例えば、プロセッサ202は、シングル若しくはマルチコアプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ、又は他のプロセッサ若しくは処理／制御回路として具現されてもよい。メモリ208は、ここに記載の機能を実行可能ないずれかの種類の揮発性若しくは不揮発性メモリ又はデータ記憶装置として具現されてもよい。動作中に、メモリ208は、ネットワークデバイス122の動作中に使用される様々なデータ及びソフトウェアを記憶してもよい。メモリ208は、I/Oサブシステム206を介してプロセッサ202に通信可能に結合される。I/Oサブシステム206は、プロセッサ202、メモリ208及びネットワークデバイス122の他のコンポーネントとの入出力動作を実現する回路及び／又はコンポーネントとして具現されてもよい。I/Oサブシステム206は、ダイ上キャッシュ204及びメモリ208へのデータの転送を実現するように構成されてもよい。例えば、I/Oサブシステム206は、ダイ上キャッシュ204及びメモリ208へのデータの転送及び入出力動作を実現するために、メモリコントローラハブ、入出力制御ハブ、ファームウェアデバイス、通信リンク（すなわち、ポイント・ツー・ポイント・リンク、バスリンク、配線、ケーブル、光ガイド、プリント回路基板トレース等）及び／又は他のコンポーネント及びサブシステムとして具現されてもよく、これらを含んでもよい。或る実施例では、I/Oサブシステム206は、プロセッサ202、メモリ208及びネットワークデバイス122の他のコンポーネントと共に、単一の集積回路チップ上にシステム・オン・チップ（SoC：system-on-a-chip）の一部を形成してもよく、組み込まれてもよい。
【００３１】
或る実施例では、ダイ上キャッシュ204は、マルチレベルアーキテクチャを有してもよい。このような実施例では、ネットワークパケットは、典型的には、最低レベルのダイ上キャッシュ204から最高レベルのダイ上キャッシュ204（典型的には、ラストレベルキャッシュ（LLC：last-level  cache）と呼ばれる）に追い出される。ネットワークパケットが最高レベルのダイ上キャッシュ204（すなわち、LLC）から追い出される場合、これは典型的にはメモリ208に書き込まれる。ネットワークパケットがダイ上キャッシュ204に直接書き込まれるため、ネットワークパケットのコピーは、メモリ208に存在しない。従って、ネットワークパケットに対応するキャッシュラインは、キャッシュラインがLLCから追い出される場合にキャッシュラインがメモリ208に書き込まれる必要があることを示すために、典型的には、キャッシュ204のLLCに書き込まれるときに“ダーティ（dirty）”として“マーキング”される。
【００３２】
キャッシュ204のLLCからのキャッシュラインの追い出しは、どのデータをダイ上キャッシュ204に記憶し、どのデータをメモリ208に追い出すかを決定するために、一般的に置換ポリシー又はキャッシュアルゴリズムとも呼ばれるキャッシュ置換アルゴリズムに基づいてもよい。典型的なキャッシュ置換アルゴリズムは、どのキャッシュラインを追い出すかを決定するためにネットワークデバイス122のハードウェアに依存する。例えば、LRU（least  recently  used）キャッシュ置換アルゴリズムは、キャッシュラインに記憶されたデータの重要度に拘わらず、最も最近に使用していないキャッシュラインを最初に追い出す。どのキャッシュラインを追い出すかを決定するためにハードウェア予測を使用するこのようなキャッシュ置換アルゴリズムは、誤りを犯しやすくすることがあり、小さい誤りであっても、数個の負の効果のみを上げても一貫性の違反及びキャッシュの汚染を生じる可能性がある。前述のように、ネットワークデバイス122は、ネットワークコントローラ112から受信したポリシー情報に基づいてパケット処理の判断を行う。例えば、ネットワークコントローラ112から受信したキャッシュ管理ポリシーは、ネットワークパケットがLLCから追い出されるときに、ネットワークパケットをメモリ208に書き込むか、ネットワークパケットをメモリ208に書き込まずにネットワークパケットを破棄するかを決定するために、ネットワークデバイス122により使用されてもよい。
【００３３】
通信回路212は、ネットワーク上でコンテンツ記憶デバイス102とネットワーク制御デバイス110と他のネットワークデバイス122との間での通信を可能にすることができるいずれかの通信回路、デバイス又はこれらの集合として具現されてもよい。通信回路212は、このような通信を実施するために、いずれか１つ以上の通信技術（例えば、無線又は有線通信）及び関連するプロトコル（例えば、Ethernet（登録商標）、Bluetooth（登録商標）、Wi-Fi、WiMAX等）を使用するように構成されてもよい。或る実施例では、通信回路212は、セルラ通信回路及び／又は他の長距離無線通信回路を含む。１つ以上の周辺機器デバイス214は、例えば、ハードウェアキーボード、入出力デバイス及び／又は周辺機器通信デバイス等のように、一般的にコンピュータデバイス（特にネットワークデバイス）に存在するいずれかの種類の周辺機器デバイスを含んでもよい。更に又は或いは、周辺機器デバイス214は、例えばUSBのように、外部周辺機器デバイスをネットワークデバイス122に接続するための１つ以上のポートを含んでもよいことがここで考えられる。
【００３４】
図３を参照すると、使用中に、ネットワークデバイス122のそれぞれは、動作中に環境300を確立する。例示的な環境300は、ネットワークパケット処理モジュール302と、キャッシュ管理モジュール308とを含む。キャッシュ管理モジュール308は、ネットワークコントローラ112から受信したエビクションポリシーデータ312を含む。或る実施例では、エビクションポリシーデータ312は、ネットワークパケットのタイプに対応するキャッシュエビクションポリシーを含んでもよい。環境300の様々なモジュールは、ハードウェア、ファームウェア、ソフトウェア又はこれらの組み合わせとして具現されてもよい。例えば、環境300の様々なモジュール、ロジック及び他のコンポーネントは、プロセッサ202又はネットワークデバイス122の他のハードウェアコンポーネントの一部を形成してもよく、これらにより確立されてもよい。従って、或る実施例では、環境300のモジュールの１つ以上は、電気デバイスの回路又は集合（例えば、ネットワークパケット処理回路、キャッシュ管理回路等）として具現されてもよい。各ネットワークデバイス122は、一般的にコンピュータデバイスに存在する他のコンポーネント、サブコンポーネント、モジュール及びデバイスを含んでもよいことを認識するべきである。これらは、説明を明瞭にするために図３に示されていない。更に、ネットワークデバイス122のそれぞれが動作中に例示的な環境300を確立してもよいが、この例示的な環境300の以下の説明は、説明を明瞭にするために、特に単一のネットワークデバイス122を参照して記載されることを認識するべきである。
【００３５】
ネットワークパケット処理モジュール302は、コンテンツ記憶デバイス102、他のネットワークデバイス122及び／又はコンピュータデバイス130からネットワークパケットを受信して処理するように構成される。或る実施例では、ネットワークパケット処理モジュール302は、ルーティングプロトコル参照モジュール304及び／又はパケットヘッダ更新モジュール306を含んでもよい。ルーティングプロトコル参照モジュール304は、I/Oサブシステム206からネットワークパケットがLLCで受信されたときにネットワークパケットを処理するためにどのルーティングプロトコルを使用するかを決定するための参照動作を実行するように構成される。或る実施例では、参照動作を実行することは、ネットワークデバイス122の参照テーブルにおいてルーティングプロトコルを参照することを含んでもよい。ネットワークパケットを処理するために使用されるルーティングプロトコルは、ネットワークパケットに適用するキャッシュエビクションポリシーを決定するために、キャッシュ管理モジュール308により使用されてもよい。これは、以下に更に詳細に説明する。パケットヘッダ更新モジュール306は、ネットワークパケットのヘッダを更新するように構成される。更新されたヘッダは、例えば、更新されたフロー情報を含んでもよい。
【００３６】
キャッシュ管理モジュール308は、ネットワークコントローラ112からキャッシュエビクションポリシー命令を受信するように構成される。キャッシュエビクションポリシー命令は、ネットワークパケットが処理された後に特定のネットワークパケットに“マーキング”するか否かを決定するためにネットワークデバイス122により使用されるエビクションポリシーデータ312として記憶される。或る実施例では、エビクションポリシーデータ312は、ネットワークパケットのタイプ及び／又はネットワークパケットを処理するために使用されるルーティングプロトコルに基づいてネットワークデバイス122がどのようにLLCに記憶された特定のネットワークパケットに“マーキング”するかを示す一式の命令を含んでもよい。例えば、一式の命令は、ネットワークデバイス122に対して、処理された後に直接破棄されることを確保するために、処理の後にネットワークデバイス122により再利用されない識別されたワークロードタイプのストリーミングパケットに“マーキング”するように命令してもよい。エビクションポリシーデータ312は、特定のキャッシュエビクションポリシーに対応する他の種類の情報を含んでもよいことを認識するべきである。
【００３７】
或る実施例では、キャッシュ管理モジュール308は、キャッシュエビクションポリシーマーキングモジュール310及び／又はキャッシュエビクション実施モジュール314を含んでもよい。キャッシュエビクションポリシーマーキングモジュール310は、どのキャッシュエビクションポリシーがネットワークパケットに適用されるべきかを決定し、適用可能である場合には、キャッシュエビクションポリシーをネットワークパケットに適用するように構成される。キャッシュエビクションポリシーマーキングモジュール310は、どのキャッシュエビクションポリシーがネットワークパケットに適用されるべきかを決定するために、エビクションポリシーデータ312に対してネットワークパケットの識別されたワークロードタイプ及び／又はルーティングプロトコルを比較してもよい。以下に更に詳細に説明するように、キャッシュエビクションポリシーマーキングモジュール310は、ネットワークパケットに適用されるべきキャッシュエビクションポリシーを決定するときに、ネットワークパケットに“マーキング”してもよい。
【００３８】
キャッシュエビクション実施モジュール314は、LLCからのキャッシュラインの追い出しの際に、“マーキング”されたキャッシュモジュールに適用されるキャッシュエビクションポリシーを実施するように構成される。キャッシュラインに適用されたキャッシュエビクションポリシーに基づいて、LLCからのキャッシュラインの追い出しの際に、キャッシュエビクション実施モジュール314は、キャッシュラインをメモリ208に書き込んでもよく、キャッシュラインをメモリ208に書き込まずにキャッシュラインを破棄してもよい。
【００３９】
図４を参照すると、システム100により実現され得るSDNアーキテクチャ400の例示的な実施例は、アプリケーションレイヤ402と、制御レイヤ410と、インフラストラクチャレイヤ420とを含む。アプリケーションレイヤ402は、１つ以上のネットワークアプリケーション114を含んでもよく、インフラストラクチャレイヤ420は、１つ以上のネットワークデバイス122を含んでもよい。SDNアーキテクチャの実施例では、システム100は、一般的にアプリケーション・デファインド・ネットワーキング（AND：application  defined  networking）ネットワークである。従って、ネットワークアプリケーション114は、ADNネットワークにおいてネットワークデバイス122の動作を制御する。これを行うために、ネットワークアプリケーション114は、これらの要件をネットワークコントローラ112に通信し、ノースバウンドAPI（northbound  API）404を介してネットワークコントローラ112からフィードバックを受信する。或る実施例では、要件は、リモートアプリケーション106の要件及び／又はネットワークパケットのタイプに基づいてもよい。ノースバウンドAPI404は、アプリケーションレイヤ402のネットワークアプリケーション114がネットワークパケットフロー及びポリシー情報を含む情報を制御レイヤ410のネットワークコントローラ112に通信することを可能にするために、ネットワーク抽象化インタフェースを提供する。ネットワークコントローラ112で受信された情報は、サウスバウンドAPI（southbound  API）412を通過し、ネットワークデバイス122の動作を規定及び制御する。
【００４０】
図５を参照すると、使用中に、ネットワークデバイス122の１つ以上は、キャッシュ204からエビクションのためのネットワークパケットを識別する方法500を実行してもよい。換言すると、キャッシュ204からエビクションするときにメモリに書き込まれないネットワークパケットを識別する。方法500は、ブロック502で始まり、ネットワークデバイス122は、ネットワークパケットがネットワークデバイス122のキャッシュ204のLLCで受信されたか否かを決定する。そうでない場合、方法500は、ブロック502にループバックし、ネットワークパケットが受信されたか否かを決定する。ネットワークパケットがネットワークデバイス122のキャッシュ204のLLCで受信された場合、ブロック504において、ネットワークパケットのヘッダが処理される。ネットワークパケットのヘッダの処理は、例えば、ヘッダの少なくとも一部でのハッシュ関数の実行、キーフィールドの抽出及び／又はネットワークパケットのタイプに対応するフローを決定するための参照の実行を含み、いずれかの種類のパケット処理を含んでもよい。或る実施例では、パケットフローは、ルーティングテーブルに基づいて決定されてもよい。ルーティングテーブルの内容は、ネットワークコントローラ112から受信した命令に基づいて生成されてもよい。ネットワークコントローラ112から受信した命令は、ネットワークインフラストラクチャ120におけるネットワーク活動の現在のレベル、ネットワークインフラストラクチャ120に存在するネットワークデバイス122の量及び／又はタイプ、ネットワークインフラストラクチャ120におけるネットワークデバイス122の現在の構成、及び／又はネットワークパケットが由来するリモートアプリケーション106、ネットワークパケットに関連するワークロードタイプ、及び／又は他のネットワークインフラストラクチャ及び／又はネットワークパケットを規定する特性のような、ネットワークインフラストラクチャのいずれかの基準又は側面に基づいてもよい。
【００４１】
ブロック506において、ネットワークデバイス122は、ネットワークパケットに対応するデータ（すなわち、ペイロードデータ、オーバーヘッドデータ等）がネットワークデバイス122のプロセッサ202により再び使用されることになるか否かを決定する。ネットワークデバイス122は、いずれか適切なデータに基づいてこのような決定を行ってもよい。例えば、例示的な実施例では、ネットワークデバイス122は、ネットワークパケットのワークロードタイプ（例えば、ストリーミングワークロード、トランザクションワークロード等）に決定を基づかせてもよい。ワークロードタイプに基づいて、ネットワークデバイス122は、再利用（すなわち、処理された後に再びアクセスされる）の可能性を決定するために参照を実行してもよい。更に、ネットワークコントローラ112から受信した命令は、特定のワークロードタイプについての後のアクセスの可能性と、ワークロードタイプに基づいてネットワークデバイス122のLLCに書き込まれたネットワークパケットに適用するエビクションポリシーとを含んでもよい。例えば、ネットワークルーティングワークロード及びオーディオ／ビデオストリーミングワークロードのような特定のワークロードタイプは、処理の後に再び使用される可能性は低い（すなわち、プロセッサ202により再利用されない）。従って、ネットワークコントローラ112は、このようなネットワークパケットは再利用されないという命令をネットワークデバイス122に提供してもよい。
【００４２】
前述のように、ネットワークコントローラ112からネットワークデバイス122により受信された命令は、エビクションポリシーを含んでもよい。エビクションポリシーは、LLCに書き込まれた特定のキャッシュライン、特に、処理の後にネットワークデバイス122のプロセッサ202により再利用されないワークロードタイプに対応するキャッシュラインをどのように“マーキング”するかを含んでもよい。例えば、例示的なキャッシュライン700が図７に示されている。キャッシュライン700は、タグ702と、データブロック704と、１つ以上のフラグビット706とを含む。タグ702は、典型的には、実際のデータが存在するメモリ208の位置に対応するアドレスを含む。ネットワークパケットがキャッシュ204のLLCに直接受信された場合、メモリ208の位置へのアドレスは存在しない。この理由は、ネットワークパケットに対応するデータは、メモリ208からコピーされていないからである。データブロック704は、典型的には、メモリ208から取得された実際のデータ（すなわち、LLCに直接受信されたネットワークパケットに対応する実際のデータ）を含む。キャッシュライン700のフラグビット706は、典型的には、キャッシュライン700がキャッシュ204のLLCから追い出されるときにキャッシュライン700のデータブロック704がメモリ208に書き込まれるか否かを示すために、“クリーン（clean）”又は“ダーティ（dirty）”状態に設定される。フラグビット706が“クリーン”に設定されている場合、キャッシュライン700は、キャッシュライン700がキャッシュ204のLLCから追い出されるときにメモリ208に書き込まれない（すなわち、破棄される）。或いは、キャッシュライン700のフラグビット706が“ダーティ”に設定されている場合、キャッシュライン700は、キャッシュライン700がキャッシュ204のLLCから追い出されるときにメモリ208に書き込まれる。キャッシュライン700がキャッシュ204のLLCにおいて最も最近にアクセスされたキャッシュラインであるため、これは典型的にはMRU位置に置かれる。ネットワークデバイス122がLRUキャッシュ置換アルゴリズムを実現する実施例のような或る実施例では、キャッシュライン700は、キャッシュ204のLLCにおいて古くなる可能性がある。この理由は、キャッシュライン700は、処理の後に直接キャッシュ204のLLCから追い出されないからである。このような状況で、現時点での古いキャッシュライン700は、最終的に追い出されるまでキャッシュ204のLLCの貴重な空間を使い果たし続け、その間に、キャッシュの汚染、待ち時間及びキャッシュ性能の全体の低下を生じる。キャッシュラインは、例示的なキャッシュライン700とは異なる構成を有してもよいことを認識するべきである。異なる構成を有するキャッシュラインは、追加及び／又は別のキャッシュラインビット、ブロック及び／又はタグ等を含んでもよい。
【００４３】
図５に戻り、ネットワークパケットに対応するデータが再び使用される場合、方法500はブロック502にループバックし、ネットワークデバイス122は、キャッシュ204のLLCで受信したネットワークパケットを監視し続ける。しかし、ネットワークパケットに対応するデータが再び使用されない場合、方法500はブロック508に進む。ブロック508において、ネットワークデバイス122は、ネットワークコントローラ112から受信した命令に基づいて、キャッシュ204のLLCにおいてネットワークパケットに対応するキャッシュラインに“マーキング”する。このように、ネットワークデバイス122は、単にキャッシュ置換アルゴリズムで行われるハードウェアの決定ではなく、ネットワークコントローラ112から受信したキャッシュエビクションポリシーに基づいてキャッシュ管理の判断を行い、処理の後に再利用されないネットワークパケットに起因するキャッシュ性能の負の効果の可能性を低減する。
【００４４】
或る実施例では、ブロック510において、ネットワークパケットに対応するキャッシュラインを“マーキング”することは、キャッシュラインのフラグビット（例えば、無効／有効ビット、クリーン／ダーティビット等）を設定することを含んでもよい。フラグビットは、ネットワークパケットに対応するデータを含むキャッシュラインのビット状態（例えば、無効、クリーン等）に対応する。フラグビットは、キャッシュラインがキャッシュ204のLLCから追い出されるときにキャッシュラインがメモリ208に書き込まれるか否かを示す。前述のように、ネットワークパケットがキャッシュ204のLLCに直接書き込まれた場合、キャッシュ204のLLCからキャッシュラインの追い出しのときにキャッシュラインのデータブロックがメモリ208に書き込まれることをネットワークデバイス122に示すために、キャッシュラインのフラグビットは、“ダーティ”ビット状態（例えば、ダーティ、変更、有効等）に設定される。ネットワークデバイス122は、キャッシュラインがLLCから追い出されるときにキャッシュラインが破棄されることをネットワークデバイス122に示すために、キャッシュラインのフラグビット706を“ダーティ”ビット状態から“クリーン”ビット状態に設定する。例えば、ネットワークデバイス122がキャッシュ一貫性及びメモリ一貫性プロトコル（例えば、変更、排他的、共有及び無効の状態を含むMESIプロトコル）を使用する実施例では、キャッシュラインを“クリーン”状態に設定することは、キャッシュラインの２つのフラグビットを無効又は排他的の状態に設定することを含んでもよい。
【００４５】
或る実施例では、ブロック512のように、ネットワークパケットに“マーキング”することは、キャッシュラインが次に破棄されることを示すために、LLCにおいてネットワークパケットに対応するキャッシュラインの世代ビット（age  bit）を設定することを含んでもよい。前述のように、特定のワークロードタイプは、プロセッサ202により再利用されず、処理の後に直ちに追い出されなくてもよい。典型的には、キャッシュラインにアクセスする場合、世代ビットは、キャッシュラインがMRUキャッシュラインであったことを示すために設定されてもよい。LRUキャッシュ置換アルゴリズムを使用する実施例のような或る実施例では、キャッシュラインは、世代ビットがLRUキャッシュラインに対応するまで追い出されない。再利用されないキャッシュラインがLLCで費やすいずれかの時間量は、キャッシュ性能を減少させる。特定の識別されたネットワークパケットが処理の後にLLCに残らないことを確保するために、ネットワークデバイス122は、キャッシュラインがLLCから追い出される次のキャッシュラインであることを示すために、キャッシュラインの世代ビットをLRU位置に設定してもよい。
【００４６】
或る実施例では、ブロック514のように、ネットワークパケットに“マーキング”することは、ネットワークパケットに対応するデータを、キャッシュ204のLLCの予約範囲内のキャッシュラインに書き込むことを含んでもよい。前述のように、ネットワークデバイス122は、ネットワークコントローラ112からキャッシュエビクションポリシーを受信する。キャッシュエビクションポリシーは、一時的である（すなわち、処理の後に再びアクセスされない）ワークロードタイプのような特定の特性を備えたネットワークパケットを書き込むためのキャッシュ204のLLCの予約範囲を含んでもよい。或る実施例では、予約範囲は、キャッシュラインがキャッシュ204のLLCから追い出されるときに破棄されるLLCの最初のキャッシュラインになるように、キャッシュ204のLLCの割り当てられた部分でもよい。或る実施例では、予約範囲は、キャッシュラインが予約範囲に書き込まれた場合、キャッシュラインが処理された後にキャッシュラインがメモリ208に書き込まれない状態にあることを示すようにフラグビットのようなビットが変更されるような、キャッシュ204のLLCの割り当てられた部分でもよい。
【００４７】
或る実施例では、ブロック516のように、ネットワークパケットに“マーキング”することは、一時無効命令を含んでもよい。一時無効命令は、キャッシュのクリーンアップのときに１つ以上のキャッシュラインを無効にするためにネットワークデバイス122により使用されるため、エビクションポリシーデータ312に保存されてもよい。一時無効命令は、キャッシュ204のLLCにおいてネットワークパケットに対応するキャッシュラインが一時的であり、ネットワークデバイス122のデータバッファを処理した後に、キャッシュラインをメモリ208に書き込むことなくキャッシュラインが破棄されるべきであることを示す命令である。或る実施例では、一時無効命令は、命令セットアーキテクチャ（ISA：instruction  set  architecture）命令でもよい。例えば、ソフトウェアからネットワークインタフェースコントローラ（NIC：network  interface  controller）又はネットワークインタフェースカード／アダプタに送信されるデータについて、一時無効命令は、キャッシュラインが一時的であり、ダイレクトメモリアクセス（DMA：direct  memory  access）の後にキャッシュラインが破棄されるべきであることをプロセッサ202に示す。
【００４８】
或る実施例では、ネットワークパケットに“マーキング”することは、ブロック510、512、514及び516の“マーキング”の実施例のいずれかの組み合わせを含んでもよいことが考えられる。例えば、ブロック510のようにキャッシュラインを“クリーン”にマーキングし、ブロック512のようにキャッシュラインが追い出される次のキャッシュラインであることを示す位置にキャッシュラインの世代ビットを設定することで、キャッシュラインは、追い出される次のキャッシュラインに位置し、追い出されるときにメモリ208に書き込まれることを妨げられる。ブロック510、512、514及び516の“マーキング”の実施例のそれぞれがいずれかの順序で実行されてもよいことも更に考えられる。
【００４９】
ブロック518においてネットワークパケットヘッダのヘッダが更新される。ネットワークパケットを更新することは、ネットワークパケットが送出されるターゲットデバイスにより使用されるようにネットワークパケットのネットワークフローを更新することを含んでもよい。ブロック520において、ネットワークパケットは、ネットワークパケットを更に処理するために、ターゲットデバイスに送出される。ターゲットデバイスは、コンピュータデバイス130でもよく、ネットワークインフラストラクチャの他のネットワークデバイス122でもよい。
【００５０】
図６を参照すると、使用中に、ネットワークデバイス122は、キャッシュライン204のLLCで実行されてもよいキャッシュラインエビクションポリシーを実施するための方法600を実行してもよい。方法600はブロック602で始まり、ネットワークデバイス122は、キャッシュ204のLLCでキャッシュのクリーンアップを実行するか否かを決定する。キャッシュのクリーンアップは、一般的にLLCが入来するデータを記憶するための十分な容量（すなわち、空間）を有さない場合に実行される。この時点で、入来するデータを記憶するための十分な容量に達するまで、１つ以上のキャッシュラインは、メモリ208から追い出される。キャッシュのクリーンアップが実行されない場合（すなわち、入来するデータを受信するために十分な空間がLLCに存在する場合）、方法600はブロック602にループバックし、キャッシュのクリーンアップが実行される必要があるか否かを決定する。キャッシュのクリーンアップが実行される場合、方法600はブロック604に進む。
【００５１】
ブロック604において、ネットワークデバイス122は、キャッシュ置換アルゴリズム及び／又はキャッシュエビクションポリシーに基づいて追い出すキャッシュラインを決定する。前述のように、キャッシュラインは、キャッシュエビクションポリシーに基づいていつ及び／又はどのようにキャッシュラインが追い出されるかを示すために“マーキング”されてもよい。或る実施例では、ネットワークデバイス122がキャッシュ204のLLCから追い出されるキャッシュラインを決定するためにキャッシュ置換アルゴリズムを使用する場合、キャッシュラインのフラグビット及び／又は世代ビットは、どのキャッシュラインがLLCから追い出されるかを操作するために、キャッシュエビクションポリシーに基づいて変更されてもよい。前述のように、キャッシュラインは、キャッシュのクリーンアップが実行されるときに追い出されるキャッシュ204の特定の範囲にキャッシュラインを書き込むことにより、及び／又はキャッシュラインが処理の後に追い出されることを示すために受信された一時無効命令により、“マーキング”されてもよい。これらのそれぞれは、キャッシュエビクションポリシーに基づく。
【００５２】
ブロック606において、ネットワークデバイス122は、ブロック604において決定されたキャッシュラインがメモリ208に保存されるか否かを決定する。例えば、一時無効命令を使用した実施例では、一時無効命令は、キャッシュラインが処理された後にキャッシュラインをメモリ208に書き込まずにキャッシュラインを破棄するように、ネットワークデバイス122のソフトウェア（例えば、TCPスタック、復号化ソフトウェア等）により解釈されてもよい。キャッシュラインがメモリ208に保存されない場合、方法600はブロック608に進み、キャッシュラインを破棄する。キャッシュラインがメモリ208に保存される場合、方法600はブロック610に進み、キャッシュラインのデータブロックをメモリ208に書き込む。ブロック608におけるキャッシュラインの破棄又はブロック610におけるキャッシュラインのデータブロックのメモリ208への書き込みに続いて、方法600はブロック602にループバックし、LLCにおいてキャッシュのクリーンアップを実行するか否かを決定する。
【００５３】
＜例＞
ここに開示される技術の例示的な例が以下に提供される。これらの技術の実施例は、以下に記載する例のいずれか１つ以上及びいずれかの組み合わせを含んでもよい。
【００５４】
例１は、追い出されるネットワークパケットを識別するネットワークデバイスを含み、ネットワークデバイスは、複数のキャッシュラインを有するキャッシュを含むプロセッサと、ネットワークパケットを受信し、ネットワークパケットをプロセッサのキャッシュのキャッシュラインに記憶し、ネットワークパケットを処理するネットワークパケット処理モジュールと、ネットワークパケットが後の処理のために必要であるか否かを決定し、ネットワークパケットが後の処理のために必要でないという決定に応じて、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されることを示すキャッシュ管理モジュールとを有する。
【００５５】
例２は、例１の対象物を含み、ネットワークパケットが後の処理のために必要でないという決定は、ネットワークデバイスに通信可能に結合されたネットワークコントローラから受信したエビクションポリシーに基づく。
【００５６】
例３は、例１及び２のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されることを示すことは、インジケータでキャッシュラインにマーキングすることを有する。
【００５７】
例４は、例１〜３のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されることを示すことは、キャッシュラインのフラグビットを設定することを有する。
【００５８】
例５は、例１〜４のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されることを示すことは、キャッシュラインの世代ビットを設定することを有する。
【００５９】
例６は、例１〜５のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されることを示すことは、一時無効命令をキャッシュラインに設定することを有する。
【００６０】
例７は、例１〜６のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されることを示すことは、キャッシュの所定のメモリ範囲にキャッシュラインを記憶することを有し、キャッシュの所定のメモリ範囲は、キャッシュのクリーンアップのときに破棄されるキャッシュの部分に存在する。
【００６１】
例８は、例１〜７のいずれかの対象物を含み、ネットワークパケットが後の処理のために必要であるか否かという決定は、ネットワークパケットのワークロードのタイプに基づく。
【００６２】
例９は、例１〜８のいずれかの対象物を含み、ワークロードのタイプは、ネットワークルーティングワークロード、ストリーミングワークロード、ネットワークを多く使用するワークロード、及び単一の読み取りのワークロードのうち少なくとも１つを有する。
【００６３】
例１０は、例１〜９のいずれかの対象物を含み、ネットワークデバイスにより受信されたネットワークパケットをキャッシュに直接提供する入出力（I/O）サブシステムを更に含む。
【００６４】
例１１は、例１〜１０のいずれかの対象物を含み、キャッシュ管理モジュールは、キャッシュからキャッシュラインの追い出しのときにキャッシュラインを更に破棄する。
【００６５】
例１２は、例１〜１１のいずれかの対象物を含み、キャッシュは、ダイ上のラストレベルキャッシュを有する。
【００６６】
例１３は、ネットワークコントローラとコンテンツ記憶デバイスとを含むソフトウェア・デファインド・ネットワーク環境で使用されるネットワークデバイスを含み、ネットワークデバイスは、複数のキャッシュラインを含むキャッシュを含むプロセッサと、ネットワークデバイスに通信可能に結合されたコンテンツ記憶デバイスからネットワークパケットを受信し、ネットワークパケットをキャッシュラインに記憶し、ネットワークパケットを処理するネットワークパケット処理モジュールと、ネットワークデバイスに通信可能に結合されたネットワークコントローラからエビクションポリシーを受信し、ネットワークパケットがネットワークパケットを処理した後に必要ないという決定に基づいて、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されるか否かを決定し、ネットワークパケットがネットワークパケットを処理した後に必要でないという決定に応じて、キャッシュラインがキャッシュから追い出されるという指示を提供するキャッシュ管理モジュールとを有する。
【００６７】
例１４は、例１３の対象物を含み、キャッシュラインがキャッシュから追い出されるという指示を提供することは、ネットワークコントローラから受信したエビクションポリシーに基づいてキャッシュラインがキャッシュから追い出されるという指示を提供することを有する。
【００６８】
例１５は、例１３及び１４のいずれかの対象物を含み、ネットワークパケットが処理した後に必要ないという決定は、ネットワークパケットのワークロードのタイプに基づく。
【００６９】
例１６は、例１３〜１５のいずれかの対象物を含み、ネットワークパケットのワークロードのタイプは、ネットワークルーティングワークロード、ストリーミングワークロード、ネットワークを多く使用するワークロード、及び単一の読み取りのワークロードのうち少なくとも１つを有する。
【００７０】
例１７は、例１３〜１６のいずれかの対象物を含み、指示を提供することは、キャッシュラインのフラグビットを設定することを有する。
【００７１】
例１８は、例１３〜１７のいずれかの対象物を含み、指示を提供することは、キャッシュラインの世代ビットを設定することを有する。
【００７２】
例１９は、例１３〜１８のいずれかの対象物を含み、指示を提供することは、一時無効命令をキャッシュラインに設定することを有する。
【００７３】
例２０は、例１３〜１９のいずれかの対象物を含み、指示を提供することは、キャッシュの所定のメモリ範囲にキャッシュラインを記憶することを有し、キャッシュの所定のメモリ範囲は、キャッシュのクリーンアップのときにキャッシュの他の部分の前に破棄されるキャッシュの部分に存在する。
【００７４】
例２１は、例１３〜１９のいずれかの対象物を含み、キャッシュは、ダイ上のラストレベルキャッシュを有する。
【００７５】
例２２は、ネットワークデバイスのプロセッサ上キャッシュから追い出されるネットワークパケットのキャッシュラインを識別する方法を含み、この方法は、ネットワークデバイスにより、ネットワークデバイスのプロセッサ上キャッシュにおいてネットワークパケットを受信するステップであり、プロセッサ上キャッシュは複数のキャッシュラインを有するステップと、ネットワークパケットをプロセッサ上キャッシュのキャッシュラインに記憶するステップと、ネットワークパケットを処理するステップと、ネットワークパケットが後の処理のために必要であるか否かを決定するステップと、ネットワークパケットが後の処理のために必要でないという決定に応じて、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップとを有する。
【００７６】
例２３は、例２２の対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップは、ネットワークデバイスに通信可能に結合されたネットワークコントローラから受信したエビクションポリシーに基づいて、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップを有する。
【００７７】
例２４は、例２２及び２３のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップは、インジケータでキャッシュラインにマーキングするステップを有する。
【００７８】
例２５は、例２２〜２４のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップは、キャッシュラインのフラグビットを設定するステップを有する。
【００７９】
例２６は、例２２〜２５のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップは、キャッシュラインの世代ビットを設定するステップを有する。
【００８０】
例２７は、例２２〜２６のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップは、一時無効命令をキャッシュラインに設定するステップを有する。
【００８１】
例２８は、例２２〜２７のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップは、プロセッサ上キャッシュの所定のメモリ範囲にキャッシュラインを記憶するステップを有し、プロセッサ上キャッシュの所定のメモリ範囲は、プロセッサ上キャッシュのクリーンアップのときに最初に破棄されるプロセッサ上キャッシュの部分に存在する。
【００８２】
例２９は、例２２〜２８のいずれかの対象物を含み、ネットワークパケットが後の処理のために必要であるか否かを決定するステップは、ネットワークパケットのワークロードのタイプに基づいて、ネットワークパケットが後の処理のために必要であるか否かを決定するステップを有する。
【００８３】
例３０は、例２２〜２９のいずれかの対象物を含み、ネットワークパケットが後の処理のために必要であるか否かを決定するステップは、ネットワークルーティングワークロード、ストリーミングワークロード、ネットワークを多く使用するワークロード、及び単一の読み取りのワークロードのうち少なくとも１つに基づいて、ネットワークパケットが後の処理のために必要であるか否かを決定するステップを有する。
【００８４】
例３１は、例２２〜３０のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されるという指示に基づいて、プロセッサ上キャッシュからのキャッシュラインの追い出しのときにキャッシュラインを破棄するステップを更に含む。
【００８５】
例３２は、例２２〜３１のいずれかの対象物を含み、プロセッサ上キャッシュは、プロセッサ上のラストレベルキャッシュを有する。
【００８６】
例３３は、プロセッサとメモリとを有するコンピュータデバイスを含み、メモリは、プロセッサにより実行された場合、コンピュータデバイスに対して例２２〜３２のいずれかの方法を実行させる複数の命令を記憶する。
【００８７】
例３４は、実行されたことに応じて、コンピュータデバイスが例２２〜３２のいずれかの方法を実行することを生じる複数の命令を記憶した１つ以上の機械読み取り可能記憶媒体を含む。
【００８８】
例３５は、ネットワークデバイスのプロセッサ上キャッシュから追い出されるネットワークパケットのキャッシュラインを識別するコンピュータデバイスを含み、コンピュータデバイスは、ネットワークデバイスのプロセッサ上キャッシュにおいてネットワークパケットを受信する手段であり、プロセッサ上キャッシュは複数のキャッシュラインを有する手段と、ネットワークパケットをプロセッサ上キャッシュのキャッシュラインに記憶する手段と、ネットワークパケットを処理する手段と、ネットワークパケットが後の処理のために必要であるか否かを決定する手段と、ネットワークパケットが後の処理のために必要でないという決定に応じて、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段とを有する。
【００８９】
例３６は、例３５の対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段は、ネットワークデバイスに通信可能に結合されたネットワークコントローラから受信したエビクションポリシーに基づいて、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段を有する。
【００９０】
例３７は、例３５及び３６のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段は、インジケータでキャッシュラインにマーキングする手段を有する。
【００９１】
例３８は、例３５〜３７のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段は、キャッシュラインのフラグビットを設定する手段を有する。
【００９２】
例３９は、例３５〜３８のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段は、キャッシュラインの世代ビットを設定する手段を有する。
【００９３】
例４０は、例３５〜３９のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段は、一時無効命令をキャッシュラインに設定する手段を有する。
【００９４】
例４１は、例３５〜４０のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段は、プロセッサ上キャッシュの所定のメモリ範囲にキャッシュラインを記憶する手段を有し、プロセッサ上キャッシュの所定のメモリ範囲は、プロセッサ上キャッシュのクリーンアップのときに最初に破棄されるプロセッサ上キャッシュの部分に存在する。
【００９５】
例４２は、例３５〜４１のいずれかの対象物を含み、ネットワークパケットが後の処理のために必要であるか否かを決定する手段は、ネットワークパケットのワークロードのタイプに基づいて、ネットワークパケットが後の処理のために必要であるか否かを決定する手段を有する。
【００９６】
例４３は、例３５〜４２のいずれかの対象物を含み、ネットワークパケットが後の処理のために必要であるか否かを決定する手段は、ネットワークルーティングワークロード、ストリーミングワークロード、ネットワークを多く使用するワークロード、及び単一の読み取りのワークロードのうち少なくとも１つに基づいて、ネットワークパケットが後の処理のために必要であるか否かを決定する手段を有する。
【００９７】
例４４は、例３５〜４３のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されるという指示に基づいて、プロセッサ上キャッシュからのキャッシュラインの追い出しのときにキャッシュラインを破棄する手段を更に含む。
【００９８】
例４５は、例３５〜４４のいずれかの対象物を含み、プロセッサ上キャッシュは、プロセッサ上のラストレベルキャッシュを有する。
【図１】
2016123077.tif 000003
【図２】
2016123077.tif 000004
【図３】
2016123077.tif 000005
【図４】
2016123077.tif 000006
【図５】
2016123077.tif 000007
【図６】
2016123077.tif 000008
【図７】
2016123077.tif 000009
【外国語明細書】
2016123077000001.pdf
2016123077000002.pdf
2016123077000003.pdf
2016123077000004.pdf