(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-06
(45)【発行日】2022-09-14
(54)【発明の名称】マルチコアコンピューティングプラットフォームにおける並列情報処理
(51)【国際特許分類】
H04L 47/125 20220101AFI20220907BHJP
H04L 45/60 20220101ALI20220907BHJP
【FI】
H04L47/125
H04L45/60
(21)【出願番号】P 2019569765
(86)(22)【出願日】2018-06-01
(86)【国際出願番号】 IL2018050596
(87)【国際公開番号】W WO2018229745
(87)【国際公開日】2018-12-20
【審査請求日】2021-05-27
(32)【優先日】2017-06-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】519425187
【氏名又は名称】ドライブネッツ リミテッド
(74)【代理人】
【識別番号】100067736
【氏名又は名称】小池 晃
(74)【代理人】
【識別番号】100192212
【氏名又は名称】河野 貴明
(74)【代理人】
【識別番号】100200001
【氏名又は名称】北原 明彦
(74)【代理人】
【識別番号】100204032
【氏名又は名称】村上 浩之
(72)【発明者】
【氏名】クライデン,アミール
(72)【発明者】
【氏名】モシェ,ユバル
(72)【発明者】
【氏名】ガルツベイン,アントン
(72)【発明者】
【氏名】ゾルコバー,ガル
(72)【発明者】
【氏名】サデー,オル
(72)【発明者】
【氏名】ザキン,オリ
(72)【発明者】
【氏名】レブ,ユバル
【審査官】宮島 郁美
(56)【参考文献】
【文献】米国特許出願公開第2005/0138622(US,A1)
【文献】特表2017-521806(JP,A)
【文献】特開2013-179429(JP,A)
【文献】韓国公開特許第10-2011-0071588(KR,A)
【文献】階層型粗粒度タスク並列処理のための多重割当てを伴うダイナミックスケジューリング手法,並列処理シンポジウムJSPP2001,2001年,351-358頁
(58)【調査した分野】(Int.Cl.,DB名)
H04L12/00-13/18,41/00-69/40
(57)【特許請求の範囲】
【請求項1】
通信ネットワークで搬送されるデータパケットを並列処理する並列処理コンピュータシステムであって、
メモリと、
複数の処理要素と、
前記メモリに格納され、前記複数の処理要素によって実行されるように構成された少なくとも1つのプログラムと、
を備え、
前記少なくとも1つのプログラムは、
アプリケーションが実行されているランタイム中に、
前記アプリケーションからの動作命令を含む1以上のデータパケットを受信し、
サービスプロセスを実行する
CPUベースのパイプライン要素を確立し、
同じ処理要素が実行する機能をチェイニングすることによって前記サービスプロセスを実行し、前記
CPUベースのパイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられ、前記複数の処理要素のそれぞれは、前記
CPUベースのパイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する1以上のタスクを実行するように動作可能であり、
前記複数のサブパイプラインに属する全てのサブパイプラインに関連する前記1以上のタスクは単一のCPUにより実行され、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行し、前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行する、
ことを特徴とする並列処理コンピュータシステム。
【請求項2】
選択された処理要素が、他のサブパイプラインに関連付けられたin関数を呼び出すことによって、1つのサブパイプラインから他のサブパイプラインにパケットを転送するように構成されていることを特徴とする請求項1に記載の並列処理コンピュータシステム。
【請求項3】
少なくとも1つのタスクであって、各パイプライン要素に関連する全てのタスクより少ないタスクがいくつかの処理要素間で分割されることを特徴とする請求項1に記載の並列処理コンピュータシステム。
【請求項4】
更に、複数のスレッドから受信した情報を適用することによってタイマを更新するように構成された複数更新ロックレスタイマを備えることを特徴とする請求項1に記載の並列処理コンピュータシステム。
【請求項5】
更に、複数のスレッドを用いてオブジェクトの最終アクセス時刻を更新しながら、それらのタイマに従ってキュー間のオブジェクトのフローを決定するように構成されたプロセッサを備えることを特徴とする請求項1に記載の並列処理コンピュータシステム。
【請求項6】
前記プロセッサは、タイマキューから出現するオブジェクトを、その満了タイムアウトに最も近いキューに転送するように構成されていることを特徴とする請求項
5に記載の並列処理コンピュータシステム。
【請求項7】
各オブジェクトには、a)ロックレスアクセスを許可する関連データ書込手段の数、及びb)キューに入った時間に応じてアクセス時間が与えられ、
これにより、前記プロセッサは、各キューから1以上のどのオブジェクトを除去すべきかを決定できることを特徴とする請求項
5に記載の並列処理コンピュータシステム。
【請求項8】
単一の管理エンティティがそれぞれのルックアップテーブル内のデータ要素を更新し、更新されたルックアップテーブルを複数のリアルタイムスレッドに対して読み出すことを可能にするように構成された単一のデータライタ及び複数のデータリーダを備えることを特徴とする請求項
7に記載の並列処理コンピュータシステム。
【請求項9】
通信ネットワークで搬送されるデータパケットの並列処理を実行する方法であって、
アプリケーションからの動作命令を含む1以上のデータパケットを受信することと、
サービスプロセスを実行する
CPUベースのパイプライン要素を確立することであって、
同じ処理要素が実行する機能をチェイニングすることによって前記サービスプロセスを実行し、前記
CPUベースのパイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられることと、
前記
CPUベースのパイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する1以上のタスクを実行するように動作する複数の処理要素を提供すること
であって、前記複数のサブパイプラインに属する全てのサブパイプラインに関連する前記1以上のタスクは単一のCPUにより実行されることと、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行することであって、前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行することと、
を含む方法。
【請求項10】
1以上のコンピュータプロセッサによって、通信ネットワークにおいて受信されたデータパケットの並列計算を実行するための方法を実行するための命令のセットを実行するための、非一時的コンピュータ可読媒体に格納されたコンピュータプログラムを符号化したコンピュータプログラム製品であって、前記方法は、
アプリケーションからの動作命令を含む1以上のデータパケットを受信することと、
サービスプロセスを実行する
CPUベースのパイプライン要素を確立することであって、
同じ処理要素が実行する機能をチェイニングすることによって前記サービスプロセスを実行し、前記
CPUベースのパイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられることと、
前記
CPUベースのパイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する1以上のタスクを実行するように動作する複数の処理要素を選択すること
であって、前記複数のサブパイプラインに属する全てのサブパイプラインに関連する前記1以上のタスクは単一のCPUにより実行されることと、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行することであって、選択された前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行することと、
を含むコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、包括的には、並列計算の分野に関し、特に、複数の処理要素を含む並列処理コンピュータシステム上の高性能計算のためのシステム及び方法に関する。
【背景技術】
【0002】
情報処理全般、特にパケット処理の大規模化、高スループット化を実現するために、従来、専用のハードウェアデバイス(特定用途向け集積回路(Application Specific Integrated Circuit:ASIC))に依存するソリューションが採用され、実装されてきた。ASICは、汎用目的ではなく、特定の用途向けにカスタマイズされた集積回路である。年々、機能サイズが縮小され、設計ツールが改良されるにつれて、ASICで可能な最大の複雑さ(したがって、機能性)は、5千ゲートから1億ゲート以上に増大した。現代のASICは、マイクロプロセッサ全体、ROM、RAM、EEPROM、フラッシュメモリ、及び他の大きなビルディングブロックを含むメモリブロックを含むことが多い。このようなASICは、システムオンチップ(System-on-Chip:SoC)とも呼ばれる。
【0003】
しかしながら、ASICの使用には、以下のような2つの大きな問題点がある。
1.これらは、開発費用が非常に高い。このようなASICを開発するには、2~4年かかり、費用は、1~3億ドルかかる。
2.柔軟性がほとんどない(機能が「ハードコード」されるので、新しい機能を追加する余地はほとんどない。)。
【0004】
これらの問題点のために、ネットワーク業界に幾つかの制約が生じている。
1)市場でプレーヤになるために必要な資金を準備できる企業はごくわずかであり、その結果、プレーヤの数が少ないことが設備の価格を更に押し上げる要因となっている。
2)ASICデバイスをベースにしたネットワークプラットフォームに変更を実装するために必要な時間が長いため、ネットワーク機能の進化は、要求より遅れている。
【0005】
これらの問題点を克服するために、ネットワークプロセッサとしても知られるネットワーク処理ユニット(network processing unit:NPU)が普及し始めている。ネットワークプロセッサ(NPU)は、ネットワークアプリケーションドメイン内のネットワークアーキテクチャコンポーネントとして使用されるプログラマブルソフトウェアデバイスである集積回路である。ネットワーク内のネットワークプロセッサは、コンピュータ又は同様のデバイス内の中央処理装置に類似している。電気通信分野において、類似信号がパケットデータ形式に置き換えられたことにより、データパケットを処理するネットワークプロセッサの集積回路が登場した。
【0006】
今日のネットワークプロセッサは、単純な設計から、プログラム可能なソフトウェア、並びにデータパケットに対する様々な動作及び操作機能を備えた複雑なICまで、様々なものが開発されている。ネットワークプロセッサは、ルータ、ネットワークスイッチ、パケット検査、セッションコントローラ、ファイアウォール、送信機デバイス、エラー検出及び防止デバイス、並びにネットワーク制御ソフトウェアに使用される。今日では、ウェブネットワークがこれまで以上に強化されているため、ネットワークプロセッサは、大量のトラフィックを取り扱い、急速に成長している過負荷ネットワークの管理に重要な役割を果たしている。ネットワークプロセッサは、大規模ネットワークにおけるパケット検査、暗号化、監視、トラフィック管理及びキュー管理において重要な役割を果たしている。
【0007】
しかしながら、このソリューションは、ある程度の柔軟性を実現しているが、比較的高価なデバイスの使用を必要とし、市場が要求する柔軟性及び機敏性を提供してはいない。
【発明の概要】
【発明が解決しようとする課題】
【0008】
本開示は、特許請求の範囲を参照することによって要約できる。
【0009】
本開示の目的は、データ処理の性能を改善するシステム及び方法を提供することである。
【0010】
本開示の他の目的は、単一のパイプラインのみを使用して処理タスクを実行し、その結果、全てのサービスについてソフトウェアロックを最小レベルに維持しながら、ソフトウェアキューの削減を可能にするように構成されたシステム及び方法を提供することである。
【0011】
本開示の他の目的は、CPUコア毎のサービスチェインの性能を改善することを可能にするシステム及び方法を提供することである。
【0012】
本開示の他の目的は、パケットへのアクセスを必要とする全てのプロセスが、そのパケットへのアクセスを必要とする他のプロセスと全く同じパケットのコピーへのアクセスを許可されるため、パケットをコピーしてメモリ内で置き換えることを必要としないシステム及び方法を提供することである。
【0013】
本開示の他の目的は、実行すべきメモリトランザクションがより少ないシステム及び方法を提供することである。
【0014】
本開示の他の目的は、別のプロセスがパケットの処理を完了するのを待たずに、プロセスが同じパケットに並列にアクセスすることを可能にするシステム及び方法を提供することである。
【0015】
本開示の他の目的は、プロセッサのIU/O要件を単一トランザクションに低減するシステム及び方法を提供することである。
【0016】
本開示の他の目的は、パケットを前後に循環させる必要なく、サービスチェインをネイティブに実装するシステム及び方法を提供することである。
【0017】
本開示の他の目的は、以下の説明から明らかになる。
【課題を解決するための手段】
【0018】
本開示の第1の実施形態によれば、通信ネットワークで搬送されるデータパケットを並列処理する並列処理コンピュータシステムであって、
メモリと、
複数の処理要素と、
前記メモリに格納され、前記複数の処理要素によって実行されるように構成された少なくとも1つのプログラムと、
を備え、
前記少なくとも1つのプログラムは、
アプリケーションが実行されているランタイム中に、
前記アプリケーションからの動作命令を含む1以上のデータパケットを受信し、
サービスプロセスを実行するパイプライン要素を確立し、前記パイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられ、前記複数の処理要素のそれぞれは、前記パイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する1以上のタスクを実行するように動作可能であり、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行し、前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行する。
【0019】
本明細書及び特許請求の範囲を通して、ここで使用する「処理要素」という用語は、シングルコア中央処理装置、マルチコア中央処理装置、グラフィックス処理装置、シングルコアコプロセッサ、マルチコアコプロセッサ等を包含する。
【0020】
本明細書及び特許請求の範囲を通して、ここで使用する「パイプライン要素」という用語は、直列に接続された(1つの要素の出力が次の要素の入力である)データ処理要素のセットを意味する。パイプラインの複数の要素は、並列に実行してもよく、タイムスライス形式で実行してもよく、ここで、複数の要素間にある程度のバッファストレージを適用してもよい。
【0021】
本明細書及び特許請求の範囲を通して、ここで使用する「スレッド」という用語は、スケジューラによって独立して管理でき、典型的には、オペレーティングシステムの一部である、プログラムされた命令の最小のシーケンスを示す。
【0022】
本明細書で使用する「ロックレスアクセス(lockless access)」という用語は、ロックメカニズムを使用しないバッファへの読み出し及び書き込みアクセスを意味し、これによって、読出動作を実行してバッファからリーダにデータを供給する際に、ロックメカニズムを使用することに伴う遅延を回避する。
【0023】
別の実施形態によれば、同じ処理要素が実行する機能をチェイニング(chaining)することによって前記サービスプロセスを実行する。
【0024】
更に別の実施形態によれば、選択された前記処理要素が、他のサブパイプラインに関連付けられたin関数を呼び出すことによって、1つのサブパイプラインから別のサブパイプラインにパケットを転送するように構成されている。
【0025】
別の実施形態によれば、少なくとも1つのタスクであって、各パイプライン要素に関連する全てのタスクより少ないタスクがいくつかの処理要素間で分割される。
【0026】
更に別の実施形態では、前記並列処理コンピュータシステムは、更に、複数のスレッドから受信した情報を適用することによってタイマを更新するように構成された複数更新ロックレスタイマ(multiple updating lockless timer)を備える。
【0027】
別の実施形態によれば、前記並列処理コンピュータシステムは、更に、複数のスレッドを用いてオブジェクトの最終アクセス時刻を更新しながら、それらのタイマに従ってキュー間のオブジェクトのフローを決定するように構成されたプロセッサを備える。
【0028】
別の実施形態によれば、プロセッサは、タイマキューから出現するオブジェクトを、前記並列処理コンピュータシステムに含まれる他のキューと比較した場合に、その満了タイムアウトに最も近いキューに転送するように構成されている。
【0029】
更に別の実施形態では、各オブジェクトは、a)ロックレスアクセスを許可する関連データ書込手段の数、及びb)キューに入った時間に応じてアクセス時間が与えられ、
これにより、前記プロセッサは、各キューから1以上のどのオブジェクトを除去すべきかを決定できる。
【0030】
別の実施形態によれば、前記並列処理コンピュータシステムは、単一の管理エンティティがそれぞれのルックアップテーブル内のデータ要素を更新し、更新されたルックアップテーブルを複数のリアルタイムスレッドに対して読み出すことを可能にするように構成された単一のデータライタ及び複数のデータリーダを備える。
【0031】
本開示の別の側面によれば、通信ネットワークで搬送されるデータパケットの並列処理を実行する方法が提供され、この方法は、
アプリケーションからの動作命令を含む1以上のデータパケットを受信することと、
サービスプロセスを実行するパイプライン要素を確立することであって、前記パイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられることと、
前記パイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する1以上のタスクを実行するように動作する複数の処理要素を提供することと、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行することであって、前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行することと、を含む。
【0032】
本開示の更に別の側面によれば、1以上のコンピュータプロセッサによって、通信ネットワークにおいて受信されたデータパケットの並列計算を実行するための方法を実行するための命令のセットを実行するための、非一時的コンピュータ可読媒体に格納されたコンピュータプログラムを符号化したコンピュータプログラム製品であって、前記方法は、
アプリケーションからの動作命令を含む1以上のデータパケットを受信することと、
サービスプロセスを実行するパイプライン要素を確立することであって、前記パイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられることと、
前記パイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する1以上のタスクを実行するように動作する複数の処理要素を選択することと、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行することであって、選択された前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行することと、を含む。
【0033】
添付の図面は、本明細書に組み込まれ、本明細書の一部を構成するものであり、本開示の幾つかの実施形態を図示し、本明細書の記述とともに、本開示の実施形態の原理を説明するものである。
【図面の簡単な説明】
【0034】
【
図1】パイプラインの使用に基づき、物理処理デバイス(「コア」)毎に単一のサービスを実行する従来のソフトウェアアーキテクチャを示す図である。
【
図2】本開示の実施形態に基づいて解釈される並列処理コンピュータシステムを示す図である。
【
図3】本発明の実施形態を実行する方法を示すフローチャートである。
【発明を実施するための形態】
【0035】
以下の詳細な説明における特定の詳細及び値のいくつかは、本開示の特定の例を示すものである。但し、この説明は、単なる例であり、本発明の範囲を限定することを意図するものではない。特許請求の範囲に記載された方法及びデバイスは、当技術分野において公知の他の方法を用いても実施できることは、当業者にとって明らかである。更に、ここに記載する実施形態は、異なるステップを含むが、その全てが本発明の全ての実施形態において必要とされるわけではない。本発明の範囲は、特許請求の範囲を参照することによって把握できる。
【0036】
ここで使用する「並列処理コンピュータシステム」という用語は、複数の演算を同時に実行できるコンピューティングシステムを示す。並列処理コンピュータシステムは、以下に限定されるものではないが、プロセッサ及びコプロセッサを含む1以上の処理要素を含むことができ、これらは、単一のコンピュータに配置してもよく、クラスタ又はグリッド又は他のタイプの構成のネットワークによって(有線/無線で)リンクされた複数のコンピュータ上に配置してもよい。幾つかの実施形態では、処理要素は、1以上のコアを含み、これらは、同じ命令セットの少なくとも一部を共有してもよく、完全に異なる命令セットを使用してもよい。処理要素内の複数のコアは、共通メモリ空間の少なくとも一部を共有し及び/又は独自のメモリ空間を有することができる。演算の並列実行を実現するために使用されるメカニズムは、以下に限定されるものではないが、複数命令シーケンスの複数命令-複数データ(multiple-instruction-multiple-data:MIMD)実行、単一命令シーケンスの単一命令-複数データ(single-instruction-multiple-data:SIMD)実行、ベクトル処理、パイプライン処理、ハードウェアマルチスレッディング、超長命令語(very-long-instruction-word:VLIW)又は明示的並列命令コンピューティング(explicitly-parallel-instruction-computing:EPIC)命令、スーパースカラ実行、及び上記メカニズムの少なくとも2つの組合せを含む。並列処理コンピュータシステムは、全体として、単一のシステムイメージを使用してもよく、複数のシステムイメージを使用してもよく、基礎となるオペレーティングシステムを有していなくてもよい。また、並列処理コンピュータシステムは、メモリを備え、又はこれに代えて、コンピュータが読み取り可能な非一時的記憶媒体を含む1以上の記憶デバイス(例えば、1以上の不揮発性記憶デバイス)をメモリ内に含む。幾つかの実施形態において、メモリ又はメモリのコンピュータが読取可能な非一時的記憶媒体は、本開示の記載に従って、プログラム、モジュール、及びデータ構造を格納する。
【0037】
幾つかの実施形態では、処理要素又は処理要素内のコアは、オペレーティングシステム又はコンピュータシステム上で同時に実行される1以上のオペレーティングシステムを管理する仮想マシンモニタ(ハイパーバイザ等)を実行してもよく、実行しなくてもよい。
【0038】
幾つかの実施形態では、処理要素は、物理的プロセッサ又は仮想マシン上で動作するスレッド、例えば、アプリケーションレベルスレッド、カーネルスレッド、又はハードウェアスレッド等であってもよい。他の幾つかの実施形態では、処理要素は、ハイパーバイザ内で動作する仮想マシンであってもよい。他の実施形態では、処理要素は、物理的プロセッサ又は仮想マシン内の機能ユニットであってもよい。
【0039】
図1に示すような従来のソフトウェアアーキテクチャは、物理的処理デバイス(「コア」)毎に単一のサービスを実行するためのパイプラインの使用に基づくアーキテクチャである。したがって、このようなアーキテクチャを使用すると、次のような結果が生じる。
1)(あるプロセスが、別のプロセスによって現在使用されているリソース又は情報を待機するため)ソフトウェアロックが生じる。
2)サービスチェインを実装する際の性能が低下する。
3)大量のCPUリソース(コア、メモリ、I/O)が必要になる。
【0040】
これとは対照的に、本開示が提供するソリューションは、1つの単一パイプラインのみを使用して処理タスクを実行することに依存し、これによって、全てのサービスについてソフトウェアロックを最小レベルに維持しながら、ソフトウェアキューを削減する。このソリューションにより、CPUコアあたりのサービスチェインの性能を向上させることができる。
【0041】
従来技術のソリューションとは異なり、本発明が提案するソリューションでは、パケットをコピーし、これらをメモリ内で置換する必要がない。このソリューションによれば、パケットへのアクセスを必要とする全てのプロセス(ヘッダ及び/又はペイロード)は、そのパケットへのアクセスを必要とする他のプロセスと全く同じパケットのコピーにアクセスできる。したがって、このソリューションは、次のような多くの利点を有する。
1)実行されるメモリトランザクションが少なくなる(したがって、消費電力が小さくなり、処理が速くなり、必要なメモリが小さくなる)。
2)プロセスは、別のプロセスがそのパケットの処理を完了するまで待つことなく、全く同じパケットに並行してアクセスできる。
3)プロセッサのI/O要件が単一のトランザクションに削減される。
4)パケットを前後に循環させる必要なく、サービスチェインがネイティブに実装される。
【0042】
ここに提案するソリューションの基本原理の1つは、サービスチェインが、同一コア上で動作する際にソフトウェアキュー経由でパケットを渡すのではなく、機能をチェイニングすることによって構築されることである。
【0043】
この方法により、様々なシステムコンポーネント間の責任の明確且つ定義された分割を維持しながら、キューの書き込みとポーリングに関連するオーバーヘッドを削減できる。
【0044】
各パイプライン要素は、サービスプロセスを実行するように構成され、複数のサブパイプラインを含む。その複数のサブパイプラインに属する全てのサブパイプラインに関連するタスクは、同一のCPUで実行され、オプションとして、複数のサブパイプライン間のパケットの受け渡しは、次のサブパイプラインのin関数(in-function)を呼び出すことによって実行される。
【0045】
あるいは、パイプライン要素(又は複数のパイプライン要素のそれぞれに)に割り当てられたタスクを分割し、複数のCPUによって実行されるようにしてもよく、その結果、このようなハイブリッド方式でプロセスを実行することによって、ネットワークリソースのより効率的な使用を達成でき、処理アーキテクチャは、その必要な柔軟性を維持する。
【0046】
CPUが実行する必要があるタスクが集中的タスクである場合(又は特定のパケットの処理に必要なリアルタイムリソースが少ない場合)、これらは、ソフトウェアキューを使用して、異なるCPUに転送してもよいが、パケットの大部分は、依然として、上述のようにパイプライン要素を使用することによって、完了まで実行される。このようなハイブリッドモードでは、管理スレッドを別のCPUで実行することを可能にし、これらの管理スレッドは通常CPU負荷の高いタスクに関連付けられる。
【0047】
本発明の一実施形態は、複数のアップデータロックレスタイマメカニズム(updater lockless timer mechanism)を提供する。本実施形態に係るロックレスタイマのメカニズムは、複数のスレッドから受信した情報をロックなしで適用することにより、タイマの更新を可能とする。単一のマネージャは、キュー間でのオブジェクトのフローをそのタイマに基づいて許可し、複数のスレッドは、オブジェクトの最終アクセス時刻を更新できる。
【0048】
タイマキューから出ると、各オブジェクトは、他のキューと比較して、その満了タイムアウトに最も近いキューに移動される。タイマが0である場合、オブジェクトは破棄される。
【0049】
各オブジェクトには、アクセス時間が与えられ、このアクセス時間は、ロックレスアクセスを可能にする関連ライタ(すなわち、バッファにデータを書き込む手段)の数に応じて、及びオブジェクトがキューに入った時間に応じて決定され、これによって、関連する管理エンティティは、オブジェクトが入ったキューからそのオブジェクトを除去すべきか否かを決定できる。
【0050】
以上の方法に従うことにより、使用するキューの数を最小化しながら、タイマの効率的な管理を達成できる。例えば、16個のキューにより、最大18時間の1秒の分解能のタイマを使用できる。
【0051】
単一のライタ(例えば、ルックアップテーブルにデータを書き込むライタ)が複数のリーダ(各バッファ、例えば、ルックアップテーブルからデータを読み出す手段)と共に使用される場合、この組合せは、単一の管理エンティティがそれぞれのルックアップテーブル内のデータ要素を更新することを可能にし、また、更新されたルックアップテーブルを複数のリアルタイムスレッドに対して読み出すことを可能にする。したがって、この実施形態を実施することによって、メモリフットプリントが大幅に低減される。
【0052】
複数のリーダが実装されていない場合、各スレッドがルックアップテーブルコピーにアクセスできる必要があり、これにより、x個のコアを使用する場合は、ルックアップテーブルがx倍になる。典型的なルックアップテーブルサイズを±4Gとすると、20コアシステムでは、これは、4Gに代えて、4*20=80Gに変換される。
【0053】
図3は、本発明の一実施形態に従って解釈される方法の一例のフローチャートを示している。まず、多くのエンドユーザを有する企業であるクライアントからパケットのバーストが到着したとする(ステップ300)。このパケットのバーストは、処理のために、ネットワークカード等のネットワークエンティティに到着し、必要なサービスプロセスは、通信パケットのルーティングである。次に、これらの到着したパケットのフローは、分離され、多数のサブフローに分割され、各サブフローは、全て(方向に関する)共通の分類を有するパケットを含み、それぞれのコア(プロセッサ)に転送される(ステップ310)。このステップ310は、本例に基づき、受信されたパケットのそれぞれに関連する5タプル値に従ってパケットを分割することによって実行される。「5タプル」という用語は、伝送制御プロトコル/インターネットプロトコル(Transmission Control Protocol/Internet Protocol:TCP/IP)接続を構成する5つの異なる値の集合を意味する。これは、送信元IPアドレス/ポート番号、宛先IPアドレス/ポート番号、及び使用中のプロトコルを含む。
【0054】
ここで、更に、本例に関連するサービスがルーティングサービスであると仮定する。(パイプライン要素である)各サブフローは、各処理要素に到達し、複数のサブパイプライン(マイクロパイプライン等)に分割される(ステップ320)。サブフローの各パケットは、それぞれのサブパイプライン処理要素に関連付けられたリーダによって読み取られ(ステップ330)、異なるサブパイプラインに関連付けられた処理要素の全てが、全く同一のパケットを並列に処理する(ステップ340)。この例で示したような場合に使用できるサブパイルの例は、最長プレフィックス一致(Longest Prefix Match:LPM)、L4処理、L3検査、L2mux等を含む。この到着したパケットのバーストに更なるサービス、例えば、NATサービスを関連付ける必要がある場合、これは、追加のサブパイプラインとして定義され、更なる処理要素によって実行される。
【0055】
様々な処理要素がそれぞれのタスクを完了すると、これらの結果は、ネットワークカード等の処理要素に戻され(ステップ350)、そこで、これらが1つの処理結果に結合され(ステップ360)、そこから伝達される。
【0056】
本発明の他の実施形態は、ここに開示した発明の明細書及び実施を考慮することによって、当業者に明らかとなる。本明細書及び実施例は、単に例示的なものであり、本発明の真の範囲及び思想は、特許請求の範囲によって示される。