JP2016123077A - ネットワークパケットのキャッシュ管理のための技術 - Google Patents

ネットワークパケットのキャッシュ管理のための技術 Download PDF

Info

Publication number
JP2016123077A
JP2016123077A JP2015227804A JP2015227804A JP2016123077A JP 2016123077 A JP2016123077 A JP 2016123077A JP 2015227804 A JP2015227804 A JP 2015227804A JP 2015227804 A JP2015227804 A JP 2015227804A JP 2016123077 A JP2016123077 A JP 2016123077A
Authority
JP
Japan
Prior art keywords
cache
network
network packet
cache line
evicted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015227804A
Other languages
English (en)
Other versions
JP6193335B2 (ja
Inventor
ワーン レン
Ren Wang
ワーン レン
ゴブリエル サメー
Gobriel Samen
ゴブリエル サメー
マチオッコ クリスチャン
Maciocco Christian
マチオッコ クリスチャン
シー. タイ ツーン−ユエン
Tsung-Yuan C Tai
シー. タイ ツーン−ユエン
フリードマン ベン−シオン
Friedman Ben-Zion
フリードマン ベン−シオン
ティー. グエン ハーン
T Nguyen Hang
ティー. グエン ハーン
エヌ. ヴェンカテサン ナマッカール
N Venkatesan Namakkal
エヌ. ヴェンカテサン ナマッカール
エー. オハンロン マイケル
A O'hanlon Michael
エー. オハンロン マイケル
エム. シャー シュリカント
m shah Shrikant
エム. シャー シュリカント
ジャイン サンジーヴ
Jain Sanjeev
ジャイン サンジーヴ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2016123077A publication Critical patent/JP2016123077A/ja
Application granted granted Critical
Publication of JP6193335B2 publication Critical patent/JP6193335B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0894Policy-based network configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】ネットワークパケットのキャッシュ管理のための技術を提供する。【解決手段】ネットワークコントローラに通信可能に結合されたネットワークデバイスのプロセッサ上キャッシュから追い出されるネットワークパケットのキャッシュラインを識別する技術である。ネットワークデバイスは、ネットワークパケットがネットワークパケットを処理した後に必要ないという決定に基づいて、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されるか否かを決定し、ネットワークコントローラから受信したエビクションポリシーに基づいて、キャッシュラインがキャッシュから追い出されるという指示を提供するように構成される。【選択図】図1

Description

現在のコンピュータデバイスは、個人的な使用、ビジネス上の使用及び社交的な使用にとって普遍的なツールになっている。従って、多くの現在のコンピュータデバイスは、ネットワーク上でデータ通信を取得及び送信/受信するために、インターネット及び企業イントラネットを含む様々なデータネットワークに接続することができる。コンピュータデバイスの間での通信を実現するために、典型的には、ネットワークは、1つのコンピュータデバイスから他のものに通信をルーティングするために、1つ以上のネットワークデバイス(例えば、ネットワークスイッチ、ネットワークルータ等)を含む。
ソフトウェア・デファインド・ネットワーキング(SDN:software-defined networking)は、ネットワークデバイスを使用してネットワークを通じて通信(すなわち、ネットワークパケットのフロー)を実現するために使用され得るネットワーキングアーキテクチャである。ソフトウェア・デファインド・ネットワーキングでは、従来ではネットワークデバイスレベルで実行されていたタスクである、ネットワークを通じたネットワークパケットのネットワークトラヒックのフローの論理決定を行うために、外部に位置するSDNコントローラがネットワークに接続される。従って、以前ではネットワークデバイスの専用のネットワークプロセッサで実行されていたネットワークパケット処理(例えば、ネットワークトラヒックのフローのロジック)は、現在では汎用プロセッサを備えたネットワークデバイスで処理されることがあり、これにより、ソフトウェア・デファインド・ネットワークに配置されたネットワークデバイスに必要なハードウェアコンポーネントの複雑性を低減している。特定のネットワークパケットのペイロード又はワークロードのタイプは、非常に大きいワーキングサイズ(working size)を有する特定のネットワークパケット及び/又はヘッダ更新の後にのみ処理される(すなわち、キャッシュの再利用はない)特定のネットワークパケットに関連付けられることがある。このようなネットワークパケットは、ネットワーク又は帯域幅を多く使用することがあるため、汎用プロセッサを使用したネットワークパケットの処理においてネットワークデバイスの性能の劣化を生じる可能性がある。
ここに記載の概念は、添付図面において例として示されており、限定として示されているのではない。説明の簡潔性及び明瞭性のため、図面に示す要素は、必ずしも縮尺通りに描かれていない。適切であると考えられる場合には、対応する要素又は同様の要素を示すために、参照ラベルが図面の間で繰り返されている。
通信をルーティングするシステムの少なくとも1つの実施例の簡略化したブロック図 図1のシステムのネットワークインフラストラクチャのネットワークデバイスの少なくとも1つの実施例の簡略化したブロック図 図2のネットワークデバイスの環境の少なくとも1つの実施例の簡略化したブロック図 図1のシステムのソフトウェア・デファインド・ネットワークの少なくとも1つの実施例の簡略化したブロック図 図2のネットワークデバイスのキャッシュエビクションポリシー(cache eviction policy)を管理する方法の少なくとも1つの実施例の簡略化したフローチャート 図5のエビクションポリシーを実施する方法の少なくとも1つの実施例の簡略化したフローチャート 図5のキャッシュラインの構成の少なくとも1つの実施例の簡略化したブロック図
この開示の概念は、様々な変更及び代替の形式を受けることができるが、この特定の実施例が図面において例として示されており、ここに詳細に説明する。しかし、この開示の概念を開示された特定の形式に限定する意図はなく、これに反して、意図は、この開示及び特許請求の範囲に従った全ての変更、等価物及び代替物をカバーすることが分かる。
明細書において“一実施例”、“実施例”、“例示的な実施例”等の言及は、記載する実施例が特定の特徴、構成又は特性を含んでもよいが、全ての実施例がその特定の特徴、構成又は特性を含んでもよく、必ずしも含まなくてもよいことを示す。更に、このような語句は、必ずしも同じ実施例を示しているとは限らない。更に、特定の特徴、構成又は特性が実施例に関して記載されている場合、明示的に記載されていても記載されていなくても、他の実施例に関してこのような特徴、構成又は特性が作用することが、当業者の認識の範囲内にあることが提示される。更に、“A、B及びCのうち少なくとも1つ”の形式のリストに含まれる項目は、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)又は(A、B及びC)を意味し得ることを認識するべきである。同様に、“A、B又はCのうち少なくとも1つ”の形式のリストの項目は、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)又は(A、B及びC)を意味し得る。
或る場合には、開示された実施例は、ハードウェア、ファームウェア、ソフトウェア又はこれらのいずれかの組み合わせで実現されてもよい。開示された実施例はまた、1つ以上の過渡的な或いは過渡的でない機械読み取り可能(例えば、コンピュータ読み取り可能)記憶媒体により伝達される命令又は記憶される命令として実現されてもよい。1つ以上の過渡的な或いは過渡的でない機械読み取り可能記憶媒体は、1つ以上のプロセッサにより読み取られて実行されてもよい。機械読み取り可能記憶媒体は、機械により読み取り可能な形式で情報を記憶又は送信するいずれかの記憶デバイス、機構又は他の物理的構成(例えば、揮発性若しくは不揮発性メモリ、メディアディスク又は他のメディアデバイス)として具現されてもよい。
図面において、いくつかの構成又は方法の特徴は、特定の配置及び/又は順序で示されることがある。しかし、このような特定の配置及び/又は順序は必要なくてもよいことを認識するべきである。むしろ、或る実施例では、このような特徴は、例示的な図面に示すものとは異なる方式及び/又は順序で配置されてもよい。更に、特定の図面に構成上又は方法の特徴が含まれることは、このような特徴が全ての実施例で必要であることを示すことを意味するのではなく、或る実施例では、含まれなくてもよく、他の特徴と組み合わされてもよい。
図1を参照すると、例示的な実施例において、ネットワークデバイスのフロー参照管理のためのシステム又はネットワーク100は、ネットワーク制御デバイス110及びネットワークインフラストラクチャ120に接続されたコンテンツ記憶デバイス102を含む。ネットワーク制御デバイス110及びネットワークインフラストラクチャ120のそれぞれは、ソフトウェア・デファインド・ネットワーキング(SDN:software-defined networking)アーキテクチャ及び/又はネットワーク機能仮想化(NFV:network functions virtualization)アーキテクチャにおいて動作可能でもよい。ネットワークインフラストラクチャ120は、ネットワークインフラストラクチャのネットワーク通信パス124を介してコンテンツ記憶デバイス102と1つ以上のコンピュータデバイス130との間のネットワークパケットの送信を実現するために、122a-122hとして例示的に表され、ここではネットワークデバイス122として併せて示される少なくとも1つのネットワークデバイス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の1つ以上は、ネットワークデバイス122の物理的ネットワーク機能をソフトウェアで実現するために、1つ以上の仮想マシン(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の1つに提供する。受信側のネットワークデバイス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は1つのコンテンツ記憶デバイス102を有するものとして例示的に示されているが、1つより多くのコンテンツ記憶デバイス102を有するネットワークがここで考えられることを認識すべきである。コンテンツデータベース104は、リモートアプリケーション106により取得可能なデータを記憶可能ないずれかの種類のデータベースでもよい。
例示的なコンテンツ記憶デバイス102は、コンテンツデータベース104と、リモートアプリケーション106とを含む。リモートアプリケーション106は、ネットワークインフラストラクチャ120のネットワークデバイス122を介してコンピュータデバイス130へのデータを送信及び受信可能ないずれかの種類のアプリケーションとして具現されてもよい。或る実施例では、リモートアプリケーション106は、ウェブアプリケーション(すなわち、シンアプリケーション(thin application))、又はプライベート、パブリック若しくはハイブリッド型のクラウドに基づくアプリケーションとして具現されてもよい。
例示的なシステム100は、単一のリモートアプリケーション106を含むが、1つより多くのリモートアプリケーション106がコンテンツ記憶デバイス102上で実行してもよく、利用可能でもよいことを認識するべきである。特定の実施例では、1つより多くのコンテンツ記憶デバイス102は、分散コンピュータ環境のように、1つ以上のコンテンツ記憶デバイス102を通じて実行する同じ種類のリモートアプリケーション106の1つより多くのインスタンスを有してもよいことを更に認識するべきである。
ネットワーク制御デバイス110は、ネットワークコントローラ112を実行し、コンテンツ記憶デバイス102とネットワークインフラストラクチャ120との間の通信を実現し、ここに記載の機能を実行可能ないずれかの種類のコンピュータデバイスとして具現されてもよい。例えば、ネットワーク制御デバイス110は、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータデバイス、家電デバイス、モバイルコンピュータデバイス、移動電話、スマートフォン、タブレットコンピュータデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピュータデバイス、スマートテレビ、スマート機器及び/又は他の種類のコンピュータ若しくはネットワークデバイスとして具現されてもよく、これらを含んでもよい。従って、ネットワーク制御デバイス110は、プロセッサ、メモリデバイス、通信回路及びデータ記憶装置のような、ネットワーク制御デバイス又は同様のコンピュータデバイスに一般的に存在するデバイス及び構成を含んでもよい。これらは、説明を明瞭にするために図1に示されていない。
ネットワークコントローラ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は、プロセッサ、メモリデバイス、通信回路及びデータ記憶装置のような、コンピュータデバイス一般的に存在するデバイス及び構成を含んでもよい。これらは、説明を明瞭にするために図1に示されていない。
図2を参照すると、例示的なネットワークデバイス122は、ダイ上キャッシュ204を備えたプロセッサ202と、メモリ208と、入出力(I/O)サブシステム206と、通信回路212と、1つ以上の周辺機器デバイス214とを含む。ネットワークデバイス122は、非限定的に、汎用コンピュータデバイス、ネットワーク機器(例えば、物理的又は仮想的)、ウェブ機器、ルータ、スイッチ、マイクロプロセッサシステム、サーバ(例えば、スタンドアローン型、ラック搭載型、ブレード型等)、分散コンピュータシステム、プロセッサに基づくシステム、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、スマートフォン、モバイルコンピュータデバイス、ウェアラブルコンピュータデバイス、家電デバイス又は他のコンピュータデバイスを含み、ここに記載の機能を実行可能ないずれかの種類の演算又はコンピュータデバイスとして具現されてもよい。
使用中に、以下に更に詳細に説明するように、ネットワークデバイス122の1つがネットワークパケットを受信した場合、ネットワークパケットは、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は、このような通信を実施するために、いずれか1つ以上の通信技術(例えば、無線又は有線通信)及び関連するプロトコル(例えば、Ethernet(登録商標)、Bluetooth(登録商標)、Wi-Fi、WiMAX等)を使用するように構成されてもよい。或る実施例では、通信回路212は、セルラ通信回路及び/又は他の長距離無線通信回路を含む。1つ以上の周辺機器デバイス214は、例えば、ハードウェアキーボード、入出力デバイス及び/又は周辺機器通信デバイス等のように、一般的にコンピュータデバイス(特にネットワークデバイス)に存在するいずれかの種類の周辺機器デバイスを含んでもよい。更に又は或いは、周辺機器デバイス214は、例えばUSBのように、外部周辺機器デバイスをネットワークデバイス122に接続するための1つ以上のポートを含んでもよいことがここで考えられる。
図3を参照すると、使用中に、ネットワークデバイス122のそれぞれは、動作中に環境300を確立する。例示的な環境300は、ネットワークパケット処理モジュール302と、キャッシュ管理モジュール308とを含む。キャッシュ管理モジュール308は、ネットワークコントローラ112から受信したエビクションポリシーデータ312を含む。或る実施例では、エビクションポリシーデータ312は、ネットワークパケットのタイプに対応するキャッシュエビクションポリシーを含んでもよい。環境300の様々なモジュールは、ハードウェア、ファームウェア、ソフトウェア又はこれらの組み合わせとして具現されてもよい。例えば、環境300の様々なモジュール、ロジック及び他のコンポーネントは、プロセッサ202又はネットワークデバイス122の他のハードウェアコンポーネントの一部を形成してもよく、これらにより確立されてもよい。従って、或る実施例では、環境300のモジュールの1つ以上は、電気デバイスの回路又は集合(例えば、ネットワークパケット処理回路、キャッシュ管理回路等)として具現されてもよい。各ネットワークデバイス122は、一般的にコンピュータデバイスに存在する他のコンポーネント、サブコンポーネント、モジュール及びデバイスを含んでもよいことを認識するべきである。これらは、説明を明瞭にするために図3に示されていない。更に、ネットワークデバイス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に書き込まずにキャッシュラインを破棄してもよい。
図4を参照すると、システム100により実現され得るSDNアーキテクチャ400の例示的な実施例は、アプリケーションレイヤ402と、制御レイヤ410と、インフラストラクチャレイヤ420とを含む。アプリケーションレイヤ402は、1つ以上のネットワークアプリケーション114を含んでもよく、インフラストラクチャレイヤ420は、1つ以上のネットワークデバイス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の動作を規定及び制御する。
図5を参照すると、使用中に、ネットワークデバイス122の1つ以上は、キャッシュ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が図7に示されている。キャッシュライン700は、タグ702と、データブロック704と、1つ以上のフラグビット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とは異なる構成を有してもよいことを認識するべきである。異なる構成を有するキャッシュラインは、追加及び/又は別のキャッシュラインビット、ブロック及び/又はタグ等を含んでもよい。
図5に戻り、ネットワークパケットに対応するデータが再び使用される場合、方法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プロトコル)を使用する実施例では、キャッシュラインを“クリーン”状態に設定することは、キャッシュラインの2つのフラグビットを無効又は排他的の状態に設定することを含んでもよい。
或る実施例では、ブロック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のように、ネットワークパケットに“マーキング”することは、一時無効命令を含んでもよい。一時無効命令は、キャッシュのクリーンアップのときに1つ以上のキャッシュラインを無効にするためにネットワークデバイス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でもよい。
図6を参照すると、使用中に、ネットワークデバイス122は、キャッシュライン204のLLCで実行されてもよいキャッシュラインエビクションポリシーを実施するための方法600を実行してもよい。方法600はブロック602で始まり、ネットワークデバイス122は、キャッシュ204のLLCでキャッシュのクリーンアップを実行するか否かを決定する。キャッシュのクリーンアップは、一般的にLLCが入来するデータを記憶するための十分な容量(すなわち、空間)を有さない場合に実行される。この時点で、入来するデータを記憶するための十分な容量に達するまで、1つ以上のキャッシュラインは、メモリ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においてキャッシュのクリーンアップを実行するか否かを決定する。
<例>
ここに開示される技術の例示的な例が以下に提供される。これらの技術の実施例は、以下に記載する例のいずれか1つ以上及びいずれかの組み合わせを含んでもよい。
例1は、追い出されるネットワークパケットを識別するネットワークデバイスを含み、ネットワークデバイスは、複数のキャッシュラインを有するキャッシュを含むプロセッサと、ネットワークパケットを受信し、ネットワークパケットをプロセッサのキャッシュのキャッシュラインに記憶し、ネットワークパケットを処理するネットワークパケット処理モジュールと、ネットワークパケットが後の処理のために必要であるか否かを決定し、ネットワークパケットが後の処理のために必要でないという決定に応じて、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されることを示すキャッシュ管理モジュールとを有する。
例2は、例1の対象物を含み、ネットワークパケットが後の処理のために必要でないという決定は、ネットワークデバイスに通信可能に結合されたネットワークコントローラから受信したエビクションポリシーに基づく。
例3は、例1及び2のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されることを示すことは、インジケータでキャッシュラインにマーキングすることを有する。
例4は、例1〜3のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されることを示すことは、キャッシュラインのフラグビットを設定することを有する。
例5は、例1〜4のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されることを示すことは、キャッシュラインの世代ビットを設定することを有する。
例6は、例1〜5のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されることを示すことは、一時無効命令をキャッシュラインに設定することを有する。
例7は、例1〜6のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されることを示すことは、キャッシュの所定のメモリ範囲にキャッシュラインを記憶することを有し、キャッシュの所定のメモリ範囲は、キャッシュのクリーンアップのときに破棄されるキャッシュの部分に存在する。
例8は、例1〜7のいずれかの対象物を含み、ネットワークパケットが後の処理のために必要であるか否かという決定は、ネットワークパケットのワークロードのタイプに基づく。
例9は、例1〜8のいずれかの対象物を含み、ワークロードのタイプは、ネットワークルーティングワークロード、ストリーミングワークロード、ネットワークを多く使用するワークロード、及び単一の読み取りのワークロードのうち少なくとも1つを有する。
例10は、例1〜9のいずれかの対象物を含み、ネットワークデバイスにより受信されたネットワークパケットをキャッシュに直接提供する入出力(I/O)サブシステムを更に含む。
例11は、例1〜10のいずれかの対象物を含み、キャッシュ管理モジュールは、キャッシュからキャッシュラインの追い出しのときにキャッシュラインを更に破棄する。
例12は、例1〜11のいずれかの対象物を含み、キャッシュは、ダイ上のラストレベルキャッシュを有する。
例13は、ネットワークコントローラとコンテンツ記憶デバイスとを含むソフトウェア・デファインド・ネットワーク環境で使用されるネットワークデバイスを含み、ネットワークデバイスは、複数のキャッシュラインを含むキャッシュを含むプロセッサと、ネットワークデバイスに通信可能に結合されたコンテンツ記憶デバイスからネットワークパケットを受信し、ネットワークパケットをキャッシュラインに記憶し、ネットワークパケットを処理するネットワークパケット処理モジュールと、ネットワークデバイスに通信可能に結合されたネットワークコントローラからエビクションポリシーを受信し、ネットワークパケットがネットワークパケットを処理した後に必要ないという決定に基づいて、ネットワークパケットに対応するキャッシュラインがキャッシュから追い出されるか否かを決定し、ネットワークパケットがネットワークパケットを処理した後に必要でないという決定に応じて、キャッシュラインがキャッシュから追い出されるという指示を提供するキャッシュ管理モジュールとを有する。
例14は、例13の対象物を含み、キャッシュラインがキャッシュから追い出されるという指示を提供することは、ネットワークコントローラから受信したエビクションポリシーに基づいてキャッシュラインがキャッシュから追い出されるという指示を提供することを有する。
例15は、例13及び14のいずれかの対象物を含み、ネットワークパケットが処理した後に必要ないという決定は、ネットワークパケットのワークロードのタイプに基づく。
例16は、例13〜15のいずれかの対象物を含み、ネットワークパケットのワークロードのタイプは、ネットワークルーティングワークロード、ストリーミングワークロード、ネットワークを多く使用するワークロード、及び単一の読み取りのワークロードのうち少なくとも1つを有する。
例17は、例13〜16のいずれかの対象物を含み、指示を提供することは、キャッシュラインのフラグビットを設定することを有する。
例18は、例13〜17のいずれかの対象物を含み、指示を提供することは、キャッシュラインの世代ビットを設定することを有する。
例19は、例13〜18のいずれかの対象物を含み、指示を提供することは、一時無効命令をキャッシュラインに設定することを有する。
例20は、例13〜19のいずれかの対象物を含み、指示を提供することは、キャッシュの所定のメモリ範囲にキャッシュラインを記憶することを有し、キャッシュの所定のメモリ範囲は、キャッシュのクリーンアップのときにキャッシュの他の部分の前に破棄されるキャッシュの部分に存在する。
例21は、例13〜19のいずれかの対象物を含み、キャッシュは、ダイ上のラストレベルキャッシュを有する。
例22は、ネットワークデバイスのプロセッサ上キャッシュから追い出されるネットワークパケットのキャッシュラインを識別する方法を含み、この方法は、ネットワークデバイスにより、ネットワークデバイスのプロセッサ上キャッシュにおいてネットワークパケットを受信するステップであり、プロセッサ上キャッシュは複数のキャッシュラインを有するステップと、ネットワークパケットをプロセッサ上キャッシュのキャッシュラインに記憶するステップと、ネットワークパケットを処理するステップと、ネットワークパケットが後の処理のために必要であるか否かを決定するステップと、ネットワークパケットが後の処理のために必要でないという決定に応じて、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップとを有する。
例23は、例22の対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップは、ネットワークデバイスに通信可能に結合されたネットワークコントローラから受信したエビクションポリシーに基づいて、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップを有する。
例24は、例22及び23のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップは、インジケータでキャッシュラインにマーキングするステップを有する。
例25は、例22〜24のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップは、キャッシュラインのフラグビットを設定するステップを有する。
例26は、例22〜25のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップは、キャッシュラインの世代ビットを設定するステップを有する。
例27は、例22〜26のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップは、一時無効命令をキャッシュラインに設定するステップを有する。
例28は、例22〜27のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示すステップは、プロセッサ上キャッシュの所定のメモリ範囲にキャッシュラインを記憶するステップを有し、プロセッサ上キャッシュの所定のメモリ範囲は、プロセッサ上キャッシュのクリーンアップのときに最初に破棄されるプロセッサ上キャッシュの部分に存在する。
例29は、例22〜28のいずれかの対象物を含み、ネットワークパケットが後の処理のために必要であるか否かを決定するステップは、ネットワークパケットのワークロードのタイプに基づいて、ネットワークパケットが後の処理のために必要であるか否かを決定するステップを有する。
例30は、例22〜29のいずれかの対象物を含み、ネットワークパケットが後の処理のために必要であるか否かを決定するステップは、ネットワークルーティングワークロード、ストリーミングワークロード、ネットワークを多く使用するワークロード、及び単一の読み取りのワークロードのうち少なくとも1つに基づいて、ネットワークパケットが後の処理のために必要であるか否かを決定するステップを有する。
例31は、例22〜30のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されるという指示に基づいて、プロセッサ上キャッシュからのキャッシュラインの追い出しのときにキャッシュラインを破棄するステップを更に含む。
例32は、例22〜31のいずれかの対象物を含み、プロセッサ上キャッシュは、プロセッサ上のラストレベルキャッシュを有する。
例33は、プロセッサとメモリとを有するコンピュータデバイスを含み、メモリは、プロセッサにより実行された場合、コンピュータデバイスに対して例22〜32のいずれかの方法を実行させる複数の命令を記憶する。
例34は、実行されたことに応じて、コンピュータデバイスが例22〜32のいずれかの方法を実行することを生じる複数の命令を記憶した1つ以上の機械読み取り可能記憶媒体を含む。
例35は、ネットワークデバイスのプロセッサ上キャッシュから追い出されるネットワークパケットのキャッシュラインを識別するコンピュータデバイスを含み、コンピュータデバイスは、ネットワークデバイスのプロセッサ上キャッシュにおいてネットワークパケットを受信する手段であり、プロセッサ上キャッシュは複数のキャッシュラインを有する手段と、ネットワークパケットをプロセッサ上キャッシュのキャッシュラインに記憶する手段と、ネットワークパケットを処理する手段と、ネットワークパケットが後の処理のために必要であるか否かを決定する手段と、ネットワークパケットが後の処理のために必要でないという決定に応じて、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段とを有する。
例36は、例35の対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段は、ネットワークデバイスに通信可能に結合されたネットワークコントローラから受信したエビクションポリシーに基づいて、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段を有する。
例37は、例35及び36のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段は、インジケータでキャッシュラインにマーキングする手段を有する。
例38は、例35〜37のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段は、キャッシュラインのフラグビットを設定する手段を有する。
例39は、例35〜38のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段は、キャッシュラインの世代ビットを設定する手段を有する。
例40は、例35〜39のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段は、一時無効命令をキャッシュラインに設定する手段を有する。
例41は、例35〜40のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されることを示す手段は、プロセッサ上キャッシュの所定のメモリ範囲にキャッシュラインを記憶する手段を有し、プロセッサ上キャッシュの所定のメモリ範囲は、プロセッサ上キャッシュのクリーンアップのときに最初に破棄されるプロセッサ上キャッシュの部分に存在する。
例42は、例35〜41のいずれかの対象物を含み、ネットワークパケットが後の処理のために必要であるか否かを決定する手段は、ネットワークパケットのワークロードのタイプに基づいて、ネットワークパケットが後の処理のために必要であるか否かを決定する手段を有する。
例43は、例35〜42のいずれかの対象物を含み、ネットワークパケットが後の処理のために必要であるか否かを決定する手段は、ネットワークルーティングワークロード、ストリーミングワークロード、ネットワークを多く使用するワークロード、及び単一の読み取りのワークロードのうち少なくとも1つに基づいて、ネットワークパケットが後の処理のために必要であるか否かを決定する手段を有する。
例44は、例35〜43のいずれかの対象物を含み、ネットワークパケットに対応するキャッシュラインがプロセッサ上キャッシュから追い出されるという指示に基づいて、プロセッサ上キャッシュからのキャッシュラインの追い出しのときにキャッシュラインを破棄する手段を更に含む。
例45は、例35〜44のいずれかの対象物を含み、プロセッサ上キャッシュは、プロセッサ上のラストレベルキャッシュを有する。

Claims (26)

  1. 追い出されるネットワークパケットを識別するネットワークデバイスであって、
    複数のキャッシュラインを有するキャッシュを含むプロセッサと、
    ネットワークパケットを受信し、前記ネットワークパケットを前記プロセッサの前記キャッシュのキャッシュラインに記憶し、前記ネットワークパケットを処理するネットワークパケット処理モジュールと、
    前記ネットワークパケットが後の処理のために必要であるか否かを決定し、前記ネットワークパケットが後の処理のために必要でないという決定に応じて、前記ネットワークパケットに対応する前記キャッシュラインが前記キャッシュから追い出されることを示すキャッシュ管理モジュールと
    を有するネットワークデバイス。
  2. 前記ネットワークパケットに対応する前記キャッシュラインが前記キャッシュから追い出されることを示すことは、インジケータで前記キャッシュラインにマーキングすることを有する、請求項1に記載のネットワークデバイス。
  3. 前記ネットワークパケットに対応する前記キャッシュラインが前記キャッシュから追い出されることを示すことは、前記キャッシュラインのフラグビットを設定することを有する、請求項1に記載のネットワークデバイス。
  4. 前記ネットワークパケットに対応する前記キャッシュラインが前記キャッシュから追い出されることを示すことは、一時無効命令を前記キャッシュラインに設定することを有する、請求項1に記載のネットワークデバイス。
  5. 前記ネットワークパケットに対応する前記キャッシュラインが前記キャッシュから追い出されることを示すことは、前記キャッシュの所定のメモリ範囲に前記キャッシュラインを記憶することを有し、前記キャッシュの前記所定のメモリ範囲は、前記キャッシュのクリーンアップのときに破棄される前記キャッシュの部分に存在する、請求項1に記載のネットワークデバイス。
  6. 前記ネットワークパケットが後の処理のために必要であるか否かという決定は、前記ネットワークパケットのワークロードのタイプに基づく、請求項1に記載のネットワークデバイス。
  7. 前記ネットワークデバイスにより受信された前記ネットワークパケットを前記キャッシュに直接提供する入出力(I/O)サブシステムを更に有する、請求項1に記載のネットワークデバイス。
  8. 前記キャッシュ管理モジュールは、前記キャッシュから前記キャッシュラインの追い出しのときに前記キャッシュラインを更に破棄する、請求項1に記載のネットワークデバイス。
  9. 前記キャッシュは、ダイ上のラストレベルキャッシュを有する、請求項1に記載のネットワークデバイス。
  10. ネットワークコントローラとコンテンツ記憶デバイスとを含むソフトウェア・デファインド・ネットワーク環境で使用されるネットワークデバイスであって、
    複数のキャッシュラインを含むキャッシュを含むプロセッサと、
    前記ネットワークデバイスに通信可能に結合された前記コンテンツ記憶デバイスからネットワークパケットを受信し、前記ネットワークパケットをキャッシュラインに記憶し、前記ネットワークパケットを処理するネットワークパケット処理モジュールと、
    前記ネットワークデバイスに通信可能に結合された前記ネットワークコントローラからエビクションポリシーを受信し、前記ネットワークパケットが前記ネットワークパケットを処理した後に必要ないという決定に基づいて、前記ネットワークパケットに対応する前記キャッシュラインが前記キャッシュから追い出されるか否かを決定し、前記ネットワークパケットが前記ネットワークパケットを処理した後に必要でないという決定に応じて、前記キャッシュラインが前記キャッシュから追い出されるという指示を提供するキャッシュ管理モジュールと
    を有するネットワークデバイス。
  11. 前記キャッシュラインが前記キャッシュから追い出されるという前記指示を提供することは、前記ネットワークコントローラから受信した前記エビクションポリシーに基づいて前記キャッシュラインが前記キャッシュから追い出されるという前記指示を提供することを有する、請求項10に記載のネットワークデバイス。
  12. 前記ネットワークパケットが処理した後に必要ないという決定は、前記ネットワークパケットのワークロードのタイプに基づく、請求項10に記載のネットワークデバイス。
  13. 前記指示を提供することは、前記キャッシュラインのフラグビットを設定することを有する、請求項10に記載のネットワークデバイス。
  14. 前記指示を提供することは、一時無効命令を前記キャッシュラインに設定することを有する、請求項10に記載のネットワークデバイス。
  15. 前記指示を提供することは、前記キャッシュの所定のメモリ範囲に前記キャッシュラインを記憶することを有し、前記キャッシュの前記所定のメモリ範囲は、前記キャッシュのクリーンアップのときに前記キャッシュの他の部分の前に破棄される前記キャッシュの部分に存在する、請求項10に記載のネットワークデバイス。
  16. 前記キャッシュは、ダイ上のラストレベルキャッシュを有する、請求項10に記載のネットワークデバイス。
  17. ネットワークデバイスのプロセッサ上キャッシュから追い出されるネットワークパケットのキャッシュラインを識別する方法であって、
    前記ネットワークデバイスにより、前記ネットワークデバイスの前記プロセッサ上キャッシュにおいて前記ネットワークパケットを受信するステップであり、前記プロセッサ上キャッシュは複数のキャッシュラインを有するステップと、
    前記ネットワークパケットを前記プロセッサ上キャッシュの前記キャッシュラインに記憶するステップと、
    前記ネットワークパケットを処理するステップと、
    前記ネットワークパケットが後の処理のために必要であるか否かを決定するステップと、
    前記ネットワークパケットが後の処理のために必要でないという決定に応じて、前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されることを示すステップと
    を有する方法。
  18. 前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されることを示すステップは、前記ネットワークデバイスに通信可能に結合されたネットワークコントローラから受信したエビクションポリシーに基づいて、前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されることを示すステップを有する、請求項17に記載の方法。
  19. 前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されることを示すステップは、インジケータで前記キャッシュラインにマーキングするステップを有する、請求項17に記載の方法。
  20. 前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されることを示すステップは、キャッシュラインのフラグビットを設定するステップを有する、請求項17に記載の方法。
  21. 前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されることを示すステップは、一時無効命令を前記キャッシュラインに設定するステップを有する、請求項17に記載の方法。
  22. 前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されることを示すステップは、前記プロセッサ上キャッシュの所定のメモリ範囲に前記キャッシュラインを記憶するステップを有し、前記プロセッサ上キャッシュの前記所定のメモリ範囲は、前記プロセッサ上キャッシュのクリーンアップのときに最初に破棄される前記プロセッサ上キャッシュの部分に存在する、請求項17に記載の方法。
  23. 前記ネットワークパケットに対応する前記キャッシュラインが前記プロセッサ上キャッシュから追い出されるという指示に基づいて、前記プロセッサ上キャッシュからの前記キャッシュラインの追い出しのときに前記キャッシュラインを破棄するステップを更に有する、請求項17に記載の方法。
  24. プロセッサとメモリとを有するコンピュータデバイスであって、
    前記メモリは、前記プロセッサにより実行された場合、前記コンピュータデバイスに対して請求項17ないし23のうちいずれか1項に記載の方法を実行させる複数の命令を記憶するコンピュータデバイス。
  25. コンピュータデバイスに対して請求項17ないし23のうちいずれか1項に記載の方法を実行させるコンピュータプログラム。
  26. 請求項25に記載のコンピュータプログラムを記憶した1つ以上の機械読み取り可能媒体。
JP2015227804A 2014-12-23 2015-11-20 ネットワークパケットのキャッシュ管理のための技術 Active JP6193335B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/580,792 US9866498B2 (en) 2014-12-23 2014-12-23 Technologies for network packet cache management
US14/580,792 2014-12-23

Publications (2)

Publication Number Publication Date
JP2016123077A true JP2016123077A (ja) 2016-07-07
JP6193335B2 JP6193335B2 (ja) 2017-09-06

Family

ID=56097731

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015227804A Active JP6193335B2 (ja) 2014-12-23 2015-11-20 ネットワークパケットのキャッシュ管理のための技術

Country Status (4)

Country Link
US (2) US9866498B2 (ja)
JP (1) JP6193335B2 (ja)
CN (1) CN105721352B (ja)
DE (1) DE102015118711B4 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020517141A (ja) * 2017-04-13 2020-06-11 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 分散スイッチに対するスケーラブル・データ・センター・ネットワーク・トポロジ

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9866498B2 (en) * 2014-12-23 2018-01-09 Intel Corporation Technologies for network packet cache management
US9736263B2 (en) * 2015-02-16 2017-08-15 Telefonaktiebolaget L M Ericsson (Publ) Temporal caching for ICN
US10083026B1 (en) * 2016-03-31 2018-09-25 Juniper Networks, Inc. In-service software upgrade of software-defined networking controller
US10176099B2 (en) * 2016-07-11 2019-01-08 Intel Corporation Using data pattern to mark cache lines as invalid
US10523512B2 (en) 2017-03-24 2019-12-31 Cisco Technology, Inc. Network agent for generating platform specific network policies
US10789175B2 (en) * 2017-06-01 2020-09-29 Mellanox Technologies Ltd. Caching policy in a multicore system on a chip (SOC)
US10534601B1 (en) 2017-06-30 2020-01-14 Juniper Networks, Inc. In-service software upgrade of virtual router with reduced packet loss
CN111614529B (zh) * 2020-05-28 2022-04-01 深圳市欧瑞博科技股份有限公司 智能家居控制面板及其网络管理方法、电子设备
US11995000B2 (en) * 2022-06-07 2024-05-28 Google Llc Packet cache system and method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007529917A (ja) * 2004-02-20 2007-10-25 アシシュ エイ パンドヤ 分散型ネットワークセキュリティシステム及びそのためのハードウエアプロセッサ
JP2010123130A (ja) * 2008-11-21 2010-06-03 Nvidia Corp 複数クラスデータキャッシュポリシー
JP2011198360A (ja) * 2010-03-18 2011-10-06 Marvell Israel (Misl) Ltd パケット処理最適化
JP2012164209A (ja) * 2011-02-08 2012-08-30 Nec Corp キャッシュ制御方法、キャッシュ制御装置およびキャッシュ制御用プログラム

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6295598B1 (en) * 1998-06-30 2001-09-25 Src Computers, Inc. Split directory-based cache coherency technique for a multi-processor computer system
US6266743B1 (en) * 1999-02-26 2001-07-24 International Business Machines Corporation Method and system for providing an eviction protocol within a non-uniform memory access system
US6564315B1 (en) * 2000-01-03 2003-05-13 Advanced Micro Devices, Inc. Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction
US7089362B2 (en) * 2001-12-27 2006-08-08 Intel Corporation Cache memory eviction policy for combining write transactions
JP2004070860A (ja) 2002-08-09 2004-03-04 Hitachi Ltd ストリームコンテンツ配送システムおよびプロキシサーバ
US7082500B2 (en) * 2003-02-18 2006-07-25 Cray, Inc. Optimized high bandwidth cache coherence mechanism
US20050172091A1 (en) * 2004-01-29 2005-08-04 Rotithor Hemant G. Method and an apparatus for interleaving read data return in a packetized interconnect to memory
US7260082B2 (en) * 2004-02-13 2007-08-21 Yahoo! Inc. Seamless interfacing for instant messaging and internet telephony across wireless networks
US7526607B1 (en) * 2004-09-23 2009-04-28 Juniper Networks, Inc. Network acceleration and long-distance pattern detection using improved caching and disk mapping
US7848332B2 (en) * 2004-11-15 2010-12-07 Cisco Technology, Inc. Method and apparatus for classifying a network protocol and aligning a network protocol header relative to cache line boundary
JP2008523490A (ja) * 2004-12-10 2008-07-03 エヌエックスピー ビー ヴィ キャッシュ置換用データ処理システムおよび方法
JP4982871B2 (ja) * 2005-02-07 2012-07-25 エスティー‐エリクソン、ソシエテ、アノニム データ処理システムおよびキャッシュ取り替え方法
US20070008989A1 (en) * 2005-06-30 2007-01-11 Intel Corporation Packet processing
US7617363B2 (en) * 2005-09-26 2009-11-10 Intel Corporation Low latency message passing mechanism
US20070073974A1 (en) * 2005-09-29 2007-03-29 International Business Machines Corporation Eviction algorithm for inclusive lower level cache based upon state of higher level cache
US8645632B2 (en) * 2009-02-04 2014-02-04 Oracle America, Inc. Speculative writestream transaction
US8255593B2 (en) * 2009-09-29 2012-08-28 Oracle America, Inc. Direct memory access with striding across memory
US20120102136A1 (en) * 2010-10-21 2012-04-26 Lancaster University Data caching system
EP2686774B1 (en) * 2011-03-14 2017-02-01 Hewlett-Packard Enterprise Development LP Memory interface
KR101331018B1 (ko) * 2011-10-11 2014-01-15 주식회사 시큐아이 패킷 분류 방법 및 그 장치
US9367470B2 (en) * 2013-11-01 2016-06-14 Cisco Technology, Inc. Bounded cache searches
US9866498B2 (en) * 2014-12-23 2018-01-09 Intel Corporation Technologies for network packet cache management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007529917A (ja) * 2004-02-20 2007-10-25 アシシュ エイ パンドヤ 分散型ネットワークセキュリティシステム及びそのためのハードウエアプロセッサ
JP2010123130A (ja) * 2008-11-21 2010-06-03 Nvidia Corp 複数クラスデータキャッシュポリシー
JP2011198360A (ja) * 2010-03-18 2011-10-06 Marvell Israel (Misl) Ltd パケット処理最適化
JP2012164209A (ja) * 2011-02-08 2012-08-30 Nec Corp キャッシュ制御方法、キャッシュ制御装置およびキャッシュ制御用プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020517141A (ja) * 2017-04-13 2020-06-11 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 分散スイッチに対するスケーラブル・データ・センター・ネットワーク・トポロジ
JP6998391B2 (ja) 2017-04-13 2022-02-10 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散スイッチに対するスケーラブル・データ・センター・ネットワーク・トポロジ

Also Published As

Publication number Publication date
US9866498B2 (en) 2018-01-09
CN105721352B (zh) 2019-04-30
JP6193335B2 (ja) 2017-09-06
US20170149926A1 (en) 2017-05-25
DE102015118711B4 (de) 2023-06-15
US9992299B2 (en) 2018-06-05
US20160182351A1 (en) 2016-06-23
DE102015118711A1 (de) 2016-06-23
CN105721352A (zh) 2016-06-29

Similar Documents

Publication Publication Date Title
JP6193335B2 (ja) ネットワークパケットのキャッシュ管理のための技術
JP6064291B2 (ja) ネットワークデバイスのフロールックアップ管理のための技術
US11625335B2 (en) Adaptive address translation caches
US9244845B2 (en) System and method for improving snoop performance
NL2029043B1 (en) System, apparatus and methods for dynamically providing coherent memory domains
EP3057270A1 (en) Technologies for modular forwarding table scalability
CN108781184B (zh) 用于在网络设备中提供分类资源的分区的系统和方法
EP3629161A1 (en) Technologies for managing cache quality of service
US10255305B2 (en) Technologies for object-based data consistency in distributed architectures
US10091063B2 (en) Technologies for directed power and performance management
EP3588310B1 (en) Technologies for demoting cache lines to shared cache
US10733106B2 (en) I/O driven data routing and cache allocation
EP4175244A1 (en) Failure reduction system for communication network
US20180351812A1 (en) Technologies for dynamic bandwidth management of interconnect fabric
EP3342113B1 (en) Dynamic allocation of resources within network devices
JP7052634B2 (ja) 負荷分散システム及び負荷分散方法
WO2023014252A1 (en) System and method for cache pooling and efficient usage and i/o transfer in disaggregated and multi-processor architectures via processor interconnect

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170801

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170809

R150 Certificate of patent or registration of utility model

Ref document number: 6193335

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250