(57)【要約】  通信ネットワークで搬送されるデータパケットを並列処理する並列処理コンピュータシステムを提供する。このシステムは、メモリと、複数の処理要素と、前記メモリに格納され、前記複数の処理要素によって実行される少なくとも１つのプログラムとを備える。前記少なくとも１つのプログラムは、アプリケーションからの動作命令を含む１以上のデータパケットを受信し、サービスプロセスを実行するパイプライン要素を確立し、前記パイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスクに関連付けられ、前記複数の処理要素のそれぞれは、前記複数のサブパイプラインに属する各サブパイプラインに関連するタスクを実行するように動作可能であり、前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行し、前記複数の処理要素は、各データパケットの並列処理を実行する。【選択図】図２
2020524445.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワークで搬送されるデータパケットを並列処理する並列処理コンピュータシステムであって、
メモリと、
複数の処理要素と、
前記メモリに格納され、前記複数の処理要素によって実行されるように構成された少なくとも１つのプログラムと、
を備え、
前記少なくとも１つのプログラムは、
アプリケーションが実行されているランタイム中に、
前記アプリケーションからの動作命令を含む１以上のデータパケットを受信し、
サービスプロセスを実行するパイプライン要素を確立し、前記パイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられ、前記複数の処理要素のそれぞれは、前記パイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する１以上のタスクを実行するように動作可能であり、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行し、前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行する、
ことを特徴とする並列処理コンピュータシステム。
【請求項２】
同じ処理要素が実行する機能をチェイニングすることによって前記サービスプロセスを実行することを特徴とする請求項１に記載の並列処理コンピュータシステム。
【請求項３】
選択された処理要素が、他のサブパイプラインに関連付けられたｉｎ関数を呼び出すことによって、１つのサブパイプラインから他のサブパイプラインにパケットを転送するように構成されていることを特徴とする請求項１に記載の並列処理コンピュータシステム。
【請求項４】
少なくとも１つのタスクであって、各パイプライン要素に関連する全てのタスクより少ないタスクがいくつかの処理要素間で分割されることを特徴とする請求項１に記載の並列処理コンピュータシステム。
【請求項５】
更に、複数のスレッドから受信した情報を適用することによってタイマを更新するように構成された複数更新ロックレスタイマを備えることを特徴とする請求項１に記載の並列処理コンピュータシステム。
【請求項６】
更に、複数のスレッドを用いてオブジェクトの最終アクセス時刻を更新しながら、それらのタイマに従ってキュー間のオブジェクトのフローを決定するように構成されたプロセッサを備えることを特徴とする請求項１に記載の並列処理コンピュータシステム。
【請求項７】
前記プロセッサは、タイマキューから出現するオブジェクトを、その満了タイムアウトに最も近いキューに転送するように構成されていることを特徴とする請求項６に記載の並列処理コンピュータシステム。
【請求項８】
各オブジェクトには、ａ）ロックレスアクセスを許可する関連データ書込手段の数、及びｂ）キューに入った時間に応じてアクセス時間が与えられ、
これにより、前記プロセッサは、各キューから１以上のどのオブジェクトを除去すべきかを決定できることを特徴とする請求項６に記載の並列処理コンピュータシステム。
【請求項９】
単一の管理エンティティがそれぞれのルックアップテーブル内のデータ要素を更新し、更新されたルックアップテーブルを複数のリアルタイムスレッドに対して読み出すことを可能にするように構成された単一のデータライタ及び複数のデータリーダを備えることを特徴とする請求項８に記載の並列処理コンピュータシステム。
【請求項１０】
通信ネットワークで搬送されるデータパケットの並列処理を実行する方法であって、
アプリケーションからの動作命令を含む１以上のデータパケットを受信することと、
サービスプロセスを実行するパイプライン要素を確立することであって、前記パイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられることと、
前記パイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する１以上のタスクを実行するように動作する複数の処理要素を提供することと、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行することであって、前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行することと、
を含む方法。
【請求項１１】
１以上のコンピュータプロセッサによって、通信ネットワークにおいて受信されたデータパケットの並列計算を実行するための方法を実行するための命令のセットを実行するための、非一時的コンピュータ可読媒体に格納されたコンピュータプログラムを符号化したコンピュータプログラム製品であって、前記方法は、
アプリケーションからの動作命令を含む１以上のデータパケットを受信することと、
サービスプロセスを実行するパイプライン要素を確立することであって、前記パイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられることと、
前記パイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する１以上のタスクを実行するように動作する複数の処理要素を選択することと、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行することであって、選択された前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行することと、
を含むコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、包括的には、並列計算の分野に関し、特に、複数の処理要素を含む並列処理コンピュータシステム上の高性能計算のためのシステム及び方法に関する。
【背景技術】
【０００２】
情報処理全般、特にパケット処理の大規模化、高スループット化を実現するために、従来、専用のハードウェアデバイス（特定用途向け集積回路（Application Specific Integrated Circuit：ＡＳＩＣ））に依存するソリューションが採用され、実装されてきた。ＡＳＩＣは、汎用目的ではなく、特定の用途向けにカスタマイズされた集積回路である。年々、機能サイズが縮小され、設計ツールが改良されるにつれて、ＡＳＩＣで可能な最大の複雑さ（したがって、機能性）は、５千ゲートから１億ゲート以上に増大した。現代のＡＳＩＣは、マイクロプロセッサ全体、ＲＯＭ、ＲＡＭ、ＥＥＰＲＯＭ、フラッシュメモリ、及び他の大きなビルディングブロックを含むメモリブロックを含むことが多い。このようなＡＳＩＣは、システムオンチップ（System-on-Chip：ＳｏＣ）とも呼ばれる。
【０００３】
しかしながら、ＡＳＩＣの使用には、以下のような２つの大きな問題点がある。
１．これらは、開発費用が非常に高い。このようなＡＳＩＣを開発するには、２〜４年かかり、費用は、１〜３億ドルかかる。
２．柔軟性がほとんどない（機能が「ハードコード」されるので、新しい機能を追加する余地はほとんどない。）。
【０００４】
これらの問題点のために、ネットワーク業界に幾つかの制約が生じている。
１）市場でプレーヤになるために必要な資金を準備できる企業はごくわずかであり、その結果、プレーヤの数が少ないことが設備の価格を更に押し上げる要因となっている。
２）ＡＳＩＣデバイスをベースにしたネットワークプラットフォームに変更を実装するために必要な時間が長いため、ネットワーク機能の進化は、要求より遅れている。
【０００５】
これらの問題点を克服するために、ネットワークプロセッサとしても知られるネットワーク処理ユニット（network processing unit：ＮＰＵ）が普及し始めている。ネットワークプロセッサ（ＮＰＵ）は、ネットワークアプリケーションドメイン内のネットワークアーキテクチャコンポーネントとして使用されるプログラマブルソフトウェアデバイスである集積回路である。ネットワーク内のネットワークプロセッサは、コンピュータ又は同様のデバイス内の中央処理装置に類似している。電気通信分野において、類似信号がパケットデータ形式に置き換えられたことにより、データパケットを処理するネットワークプロセッサの集積回路が登場した。
【０００６】
今日のネットワークプロセッサは、単純な設計から、プログラム可能なソフトウェア、並びにデータパケットに対する様々な動作及び操作機能を備えた複雑なＩＣまで、様々なものが開発されている。ネットワークプロセッサは、ルータ、ネットワークスイッチ、パケット検査、セッションコントローラ、ファイアウォール、送信機デバイス、エラー検出及び防止デバイス、並びにネットワーク制御ソフトウェアに使用される。今日では、ウェブネットワークがこれまで以上に強化されているため、ネットワークプロセッサは、大量のトラフィックを取り扱い、急速に成長している過負荷ネットワークの管理に重要な役割を果たしている。ネットワークプロセッサは、大規模ネットワークにおけるパケット検査、暗号化、監視、トラフィック管理及びキュー管理において重要な役割を果たしている。
【０００７】
しかしながら、このソリューションは、ある程度の柔軟性を実現しているが、比較的高価なデバイスの使用を必要とし、市場が要求する柔軟性及び機敏性を提供してはいない。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本開示は、特許請求の範囲を参照することによって要約できる。
【０００９】
本開示の目的は、データ処理の性能を改善するシステム及び方法を提供することである。
【００１０】
本開示の他の目的は、単一のパイプラインのみを使用して処理タスクを実行し、その結果、全てのサービスについてソフトウェアロックを最小レベルに維持しながら、ソフトウェアキューの削減を可能にするように構成されたシステム及び方法を提供することである。
【００１１】
本開示の他の目的は、ＣＰＵコア毎のサービスチェインの性能を改善することを可能にするシステム及び方法を提供することである。
【００１２】
本開示の他の目的は、パケットへのアクセスを必要とする全てのプロセスが、そのパケットへのアクセスを必要とする他のプロセスと全く同じパケットのコピーへのアクセスを許可されるため、パケットをコピーしてメモリ内で置き換えることを必要としないシステム及び方法を提供することである。
【００１３】
本開示の他の目的は、実行すべきメモリトランザクションがより少ないシステム及び方法を提供することである。
【００１４】
本開示の他の目的は、別のプロセスがパケットの処理を完了するのを待たずに、プロセスが同じパケットに並列にアクセスすることを可能にするシステム及び方法を提供することである。
【００１５】
本開示の他の目的は、プロセッサのＩＵ／Ｏ要件を単一トランザクションに低減するシステム及び方法を提供することである。
【００１６】
本開示の他の目的は、パケットを前後に循環させる必要なく、サービスチェインをネイティブに実装するシステム及び方法を提供することである。
【００１７】
本開示の他の目的は、以下の説明から明らかになる。
【課題を解決するための手段】
【００１８】
本開示の第１の実施形態によれば、通信ネットワークで搬送されるデータパケットを並列処理する並列処理コンピュータシステムであって、
メモリと、
複数の処理要素と、
前記メモリに格納され、前記複数の処理要素によって実行されるように構成された少なくとも１つのプログラムと、
を備え、
前記少なくとも１つのプログラムは、
アプリケーションが実行されているランタイム中に、
前記アプリケーションからの動作命令を含む１以上のデータパケットを受信し、
サービスプロセスを実行するパイプライン要素を確立し、前記パイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられ、前記複数の処理要素のそれぞれは、前記パイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する１以上のタスクを実行するように動作可能であり、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行し、前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行する。
【００１９】
本明細書及び特許請求の範囲を通して、ここで使用する「処理要素」という用語は、シングルコア中央処理装置、マルチコア中央処理装置、グラフィックス処理装置、シングルコアコプロセッサ、マルチコアコプロセッサ等を包含する。
【００２０】
本明細書及び特許請求の範囲を通して、ここで使用する「パイプライン要素」という用語は、直列に接続された（１つの要素の出力が次の要素の入力である）データ処理要素のセットを意味する。パイプラインの複数の要素は、並列に実行してもよく、タイムスライス形式で実行してもよく、ここで、複数の要素間にある程度のバッファストレージを適用してもよい。
【００２１】
本明細書及び特許請求の範囲を通して、ここで使用する「スレッド」という用語は、スケジューラによって独立して管理でき、典型的には、オペレーティングシステムの一部である、プログラムされた命令の最小のシーケンスを示す。
【００２２】
本明細書で使用する「ロックレスアクセス（lockless access）」という用語は、ロックメカニズムを使用しないバッファへの読み出し及び書き込みアクセスを意味し、これによって、読出動作を実行してバッファからリーダにデータを供給する際に、ロックメカニズムを使用することに伴う遅延を回避する。
【００２３】
別の実施形態によれば、同じ処理要素が実行する機能をチェイニング（chaining）することによって前記サービスプロセスを実行する。
【００２４】
更に別の実施形態によれば、選択された前記処理要素が、他のサブパイプラインに関連付けられたｉｎ関数を呼び出すことによって、１つのサブパイプラインから別のサブパイプラインにパケットを転送するように構成されている。
【００２５】
別の実施形態によれば、少なくとも１つのタスクであって、各パイプライン要素に関連する全てのタスクより少ないタスクがいくつかの処理要素間で分割される。
【００２６】
更に別の実施形態では、前記並列処理コンピュータシステムは、更に、複数のスレッドから受信した情報を適用することによってタイマを更新するように構成された複数更新ロックレスタイマ（multiple updating lockless timer）を備える。
【００２７】
別の実施形態によれば、前記並列処理コンピュータシステムは、更に、複数のスレッドを用いてオブジェクトの最終アクセス時刻を更新しながら、それらのタイマに従ってキュー間のオブジェクトのフローを決定するように構成されたプロセッサを備える。
【００２８】
別の実施形態によれば、プロセッサは、タイマキューから出現するオブジェクトを、前記並列処理コンピュータシステムに含まれる他のキューと比較した場合に、その満了タイムアウトに最も近いキューに転送するように構成されている。
【００２９】
更に別の実施形態では、各オブジェクトは、ａ）ロックレスアクセスを許可する関連データ書込手段の数、及びｂ）キューに入った時間に応じてアクセス時間が与えられ、
これにより、前記プロセッサは、各キューから１以上のどのオブジェクトを除去すべきかを決定できる。
【００３０】
別の実施形態によれば、前記並列処理コンピュータシステムは、単一の管理エンティティがそれぞれのルックアップテーブル内のデータ要素を更新し、更新されたルックアップテーブルを複数のリアルタイムスレッドに対して読み出すことを可能にするように構成された単一のデータライタ及び複数のデータリーダを備える。
【００３１】
本開示の別の側面によれば、通信ネットワークで搬送されるデータパケットの並列処理を実行する方法が提供され、この方法は、
アプリケーションからの動作命令を含む１以上のデータパケットを受信することと、
サービスプロセスを実行するパイプライン要素を確立することであって、前記パイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられることと、
前記パイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する１以上のタスクを実行するように動作する複数の処理要素を提供することと、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行することであって、前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行することと、を含む。
【００３２】
本開示の更に別の側面によれば、１以上のコンピュータプロセッサによって、通信ネットワークにおいて受信されたデータパケットの並列計算を実行するための方法を実行するための命令のセットを実行するための、非一時的コンピュータ可読媒体に格納されたコンピュータプログラムを符号化したコンピュータプログラム製品であって、前記方法は、
アプリケーションからの動作命令を含む１以上のデータパケットを受信することと、
サービスプロセスを実行するパイプライン要素を確立することであって、前記パイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられることと、
前記パイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する１以上のタスクを実行するように動作する複数の処理要素を選択することと、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行することであって、選択された前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行することと、を含む。
【００３３】
添付の図面は、本明細書に組み込まれ、本明細書の一部を構成するものであり、本開示の幾つかの実施形態を図示し、本明細書の記述とともに、本開示の実施形態の原理を説明するものである。
【図面の簡単な説明】
【００３４】
【図１】パイプラインの使用に基づき、物理処理デバイス（「コア」）毎に単一のサービスを実行する従来のソフトウェアアーキテクチャを示す図である。
【図２】本開示の実施形態に基づいて解釈される並列処理コンピュータシステムを示す図である。
【図３】本発明の実施形態を実行する方法を示すフローチャートである。
【発明を実施するための形態】
【００３５】
以下の詳細な説明における特定の詳細及び値のいくつかは、本開示の特定の例を示すものである。但し、この説明は、単なる例であり、本発明の範囲を限定することを意図するものではない。特許請求の範囲に記載された方法及びデバイスは、当技術分野において公知の他の方法を用いても実施できることは、当業者にとって明らかである。更に、ここに記載する実施形態は、異なるステップを含むが、その全てが本発明の全ての実施形態において必要とされるわけではない。本発明の範囲は、特許請求の範囲を参照することによって把握できる。
【００３６】
ここで使用する「並列処理コンピュータシステム」という用語は、複数の演算を同時に実行できるコンピューティングシステムを示す。並列処理コンピュータシステムは、以下に限定されるものではないが、プロセッサ及びコプロセッサを含む１以上の処理要素を含むことができ、これらは、単一のコンピュータに配置してもよく、クラスタ又はグリッド又は他のタイプの構成のネットワークによって（有線／無線で）リンクされた複数のコンピュータ上に配置してもよい。幾つかの実施形態では、処理要素は、１以上のコアを含み、これらは、同じ命令セットの少なくとも一部を共有してもよく、完全に異なる命令セットを使用してもよい。処理要素内の複数のコアは、共通メモリ空間の少なくとも一部を共有し及び／又は独自のメモリ空間を有することができる。演算の並列実行を実現するために使用されるメカニズムは、以下に限定されるものではないが、複数命令シーケンスの複数命令−複数データ（multiple-instruction-multiple-data：ＭＩＭＤ）実行、単一命令シーケンスの単一命令−複数データ（single-instruction-multiple-data：ＳＩＭＤ）実行、ベクトル処理、パイプライン処理、ハードウェアマルチスレッディング、超長命令語（very-long-instruction-word：ＶＬＩＷ）又は明示的並列命令コンピューティング（explicitly-parallel-instruction-computing：ＥＰＩＣ）命令、スーパースカラ実行、及び上記メカニズムの少なくとも２つの組合せを含む。並列処理コンピュータシステムは、全体として、単一のシステムイメージを使用してもよく、複数のシステムイメージを使用してもよく、基礎となるオペレーティングシステムを有していなくてもよい。また、並列処理コンピュータシステムは、メモリを備え、又はこれに代えて、コンピュータが読み取り可能な非一時的記憶媒体を含む１以上の記憶デバイス（例えば、１以上の不揮発性記憶デバイス）をメモリ内に含む。幾つかの実施形態において、メモリ又はメモリのコンピュータが読取可能な非一時的記憶媒体は、本開示の記載に従って、プログラム、モジュール、及びデータ構造を格納する。
【００３７】
幾つかの実施形態では、処理要素又は処理要素内のコアは、オペレーティングシステム又はコンピュータシステム上で同時に実行される１以上のオペレーティングシステムを管理する仮想マシンモニタ（ハイパーバイザ等）を実行してもよく、実行しなくてもよい。
【００３８】
幾つかの実施形態では、処理要素は、物理的プロセッサ又は仮想マシン上で動作するスレッド、例えば、アプリケーションレベルスレッド、カーネルスレッド、又はハードウェアスレッド等であってもよい。他の幾つかの実施形態では、処理要素は、ハイパーバイザ内で動作する仮想マシンであってもよい。他の実施形態では、処理要素は、物理的プロセッサ又は仮想マシン内の機能ユニットであってもよい。
【００３９】
図１に示すような従来のソフトウェアアーキテクチャは、物理的処理デバイス（「コア」）毎に単一のサービスを実行するためのパイプラインの使用に基づくアーキテクチャである。したがって、このようなアーキテクチャを使用すると、次のような結果が生じる。
１）（あるプロセスが、別のプロセスによって現在使用されているリソース又は情報を待機するため）ソフトウェアロックが生じる。
２）サービスチェインを実装する際の性能が低下する。
３）大量のＣＰＵリソース（コア、メモリ、Ｉ／Ｏ）が必要になる。
【００４０】
これとは対照的に、本開示が提供するソリューションは、１つの単一パイプラインのみを使用して処理タスクを実行することに依存し、これによって、全てのサービスについてソフトウェアロックを最小レベルに維持しながら、ソフトウェアキューを削減する。このソリューションにより、ＣＰＵコアあたりのサービスチェインの性能を向上させることができる。
【００４１】
従来技術のソリューションとは異なり、本発明が提案するソリューションでは、パケットをコピーし、これらをメモリ内で置換する必要がない。このソリューションによれば、パケットへのアクセスを必要とする全てのプロセス（ヘッダ及び／又はペイロード）は、そのパケットへのアクセスを必要とする他のプロセスと全く同じパケットのコピーにアクセスできる。したがって、このソリューションは、次のような多くの利点を有する。
１）実行されるメモリトランザクションが少なくなる（したがって、消費電力が小さくなり、処理が速くなり、必要なメモリが小さくなる）。
２）プロセスは、別のプロセスがそのパケットの処理を完了するまで待つことなく、全く同じパケットに並行してアクセスできる。
３）プロセッサのＩ／Ｏ要件が単一のトランザクションに削減される。
４）パケットを前後に循環させる必要なく、サービスチェインがネイティブに実装される。
【００４２】
ここに提案するソリューションの基本原理の１つは、サービスチェインが、同一コア上で動作する際にソフトウェアキュー経由でパケットを渡すのではなく、機能をチェイニングすることによって構築されることである。
【００４３】
この方法により、様々なシステムコンポーネント間の責任の明確且つ定義された分割を維持しながら、キューの書き込みとポーリングに関連するオーバーヘッドを削減できる。
【００４４】
各パイプライン要素は、サービスプロセスを実行するように構成され、複数のサブパイプラインを含む。その複数のサブパイプラインに属する全てのサブパイプラインに関連するタスクは、同一のＣＰＵで実行され、オプションとして、複数のサブパイプライン間のパケットの受け渡しは、次のサブパイプラインのｉｎ関数（in-function）を呼び出すことによって実行される。
【００４５】
あるいは、パイプライン要素（又は複数のパイプライン要素のそれぞれに）に割り当てられたタスクを分割し、複数のＣＰＵによって実行されるようにしてもよく、その結果、このようなハイブリッド方式でプロセスを実行することによって、ネットワークリソースのより効率的な使用を達成でき、処理アーキテクチャは、その必要な柔軟性を維持する。
【００４６】
ＣＰＵが実行する必要があるタスクが集中的タスクである場合（又は特定のパケットの処理に必要なリアルタイムリソースが少ない場合）、これらは、ソフトウェアキューを使用して、異なるＣＰＵに転送してもよいが、パケットの大部分は、依然として、上述のようにパイプライン要素を使用することによって、完了まで実行される。このようなハイブリッドモードでは、管理スレッドを別のＣＰＵで実行することを可能にし、これらの管理スレッドは通常ＣＰＵ負荷の高いタスクに関連付けられる。
【００４７】
本発明の一実施形態は、複数のアップデータロックレスタイマメカニズム（updater lockless timer mechanism）を提供する。本実施形態に係るロックレスタイマのメカニズムは、複数のスレッドから受信した情報をロックなしで適用することにより、タイマの更新を可能とする。単一のマネージャは、キュー間でのオブジェクトのフローをそのタイマに基づいて許可し、複数のスレッドは、オブジェクトの最終アクセス時刻を更新できる。
【００４８】
タイマキューから出ると、各オブジェクトは、他のキューと比較して、その満了タイムアウトに最も近いキューに移動される。タイマが０である場合、オブジェクトは破棄される。
【００４９】
各オブジェクトには、アクセス時間が与えられ、このアクセス時間は、ロックレスアクセスを可能にする関連ライタ（すなわち、バッファにデータを書き込む手段）の数に応じて、及びオブジェクトがキューに入った時間に応じて決定され、これによって、関連する管理エンティティは、オブジェクトが入ったキューからそのオブジェクトを除去すべきか否かを決定できる。
【００５０】
以上の方法に従うことにより、使用するキューの数を最小化しながら、タイマの効率的な管理を達成できる。例えば、１６個のキューにより、最大１８時間の１秒の分解能のタイマを使用できる。
【００５１】
単一のライタ（例えば、ルックアップテーブルにデータを書き込むライタ）が複数のリーダ（各バッファ、例えば、ルックアップテーブルからデータを読み出す手段）と共に使用される場合、この組合せは、単一の管理エンティティがそれぞれのルックアップテーブル内のデータ要素を更新することを可能にし、また、更新されたルックアップテーブルを複数のリアルタイムスレッドに対して読み出すことを可能にする。したがって、この実施形態を実施することによって、メモリフットプリントが大幅に低減される。
【００５２】
複数のリーダが実装されていない場合、各スレッドがルックアップテーブルコピーにアクセスできる必要があり、これにより、ｘ個のコアを使用する場合は、ルックアップテーブルがｘ倍になる。典型的なルックアップテーブルサイズを±４Ｇとすると、２０コアシステムでは、これは、４Ｇに代えて、４＊２０＝８０Ｇに変換される。
【００５３】
図３は、本発明の一実施形態に従って解釈される方法の一例のフローチャートを示している。まず、多くのエンドユーザを有する企業であるクライアントからパケットのバーストが到着したとする（ステップ３００）。このパケットのバーストは、処理のために、ネットワークカード等のネットワークエンティティに到着し、必要なサービスプロセスは、通信パケットのルーティングである。次に、これらの到着したパケットのフローは、分離され、多数のサブフローに分割され、各サブフローは、全て（方向に関する）共通の分類を有するパケットを含み、それぞれのコア（プロセッサ）に転送される（ステップ３１０）。このステップ３１０は、本例に基づき、受信されたパケットのそれぞれに関連する５タプル値に従ってパケットを分割することによって実行される。「５タプル」という用語は、伝送制御プロトコル／インターネットプロトコル（Transmission Control Protocol/Internet Protocol：ＴＣＰ／ＩＰ）接続を構成する５つの異なる値の集合を意味する。これは、送信元ＩＰアドレス／ポート番号、宛先ＩＰアドレス／ポート番号、及び使用中のプロトコルを含む。
【００５４】
ここで、更に、本例に関連するサービスがルーティングサービスであると仮定する。（パイプライン要素である）各サブフローは、各処理要素に到達し、複数のサブパイプライン（マイクロパイプライン等）に分割される（ステップ３２０）。サブフローの各パケットは、それぞれのサブパイプライン処理要素に関連付けられたリーダによって読み取られ（ステップ３３０）、異なるサブパイプラインに関連付けられた処理要素の全てが、全く同一のパケットを並列に処理する（ステップ３４０）。この例で示したような場合に使用できるサブパイルの例は、最長プレフィックス一致（Longest Prefix Match：ＬＰＭ）、Ｌ４処理、Ｌ３検査、Ｌ２ｍｕｘ等を含む。この到着したパケットのバーストに更なるサービス、例えば、ＮＡＴサービスを関連付ける必要がある場合、これは、追加のサブパイプラインとして定義され、更なる処理要素によって実行される。
【００５５】
様々な処理要素がそれぞれのタスクを完了すると、これらの結果は、ネットワークカード等の処理要素に戻され（ステップ３５０）、そこで、これらが１つの処理結果に結合され（ステップ３６０）、そこから伝達される。
【００５６】
本発明の他の実施形態は、ここに開示した発明の明細書及び実施を考慮することによって、当業者に明らかとなる。本明細書及び実施例は、単に例示的なものであり、本発明の真の範囲及び思想は、特許請求の範囲によって示される。
【図１】
2020524445.tif 000003
【図２】
2020524445.tif 000004
【図３】
2020524445.tif 000005
【国際調査報告】
2020524445.tif 000006
2020524445.tif 000007
2020524445.tif 000008