JP7137588B2 - マルチコアコンピューティングプラットフォームにおける並列情報処理 - Google Patents

マルチコアコンピューティングプラットフォームにおける並列情報処理 Download PDF

Info

Publication number
JP7137588B2
JP7137588B2 JP2019569765A JP2019569765A JP7137588B2 JP 7137588 B2 JP7137588 B2 JP 7137588B2 JP 2019569765 A JP2019569765 A JP 2019569765A JP 2019569765 A JP2019569765 A JP 2019569765A JP 7137588 B2 JP7137588 B2 JP 7137588B2
Authority
JP
Japan
Prior art keywords
sub
pipelines
pipeline
processing
parallel processing
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.)
Active
Application number
JP2019569765A
Other languages
English (en)
Other versions
JP2020524445A (ja
Inventor
クライデン,アミール
モシェ,ユバル
ガルツベイン,アントン
ゾルコバー,ガル
サデー,オル
ザキン,オリ
レブ,ユバル
Original Assignee
ドライブネッツ リミテッド
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 ドライブネッツ リミテッド filed Critical ドライブネッツ リミテッド
Publication of JP2020524445A publication Critical patent/JP2020524445A/ja
Application granted granted Critical
Publication of JP7137588B2 publication Critical patent/JP7137588B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本開示は、包括的には、並列計算の分野に関し、特に、複数の処理要素を含む並列処理コンピュータシステム上の高性能計算のためのシステム及び方法に関する。
情報処理全般、特にパケット処理の大規模化、高スループット化を実現するために、従来、専用のハードウェアデバイス(特定用途向け集積回路(Application Specific Integrated Circuit:ASIC))に依存するソリューションが採用され、実装されてきた。ASICは、汎用目的ではなく、特定の用途向けにカスタマイズされた集積回路である。年々、機能サイズが縮小され、設計ツールが改良されるにつれて、ASICで可能な最大の複雑さ(したがって、機能性)は、5千ゲートから1億ゲート以上に増大した。現代のASICは、マイクロプロセッサ全体、ROM、RAM、EEPROM、フラッシュメモリ、及び他の大きなビルディングブロックを含むメモリブロックを含むことが多い。このようなASICは、システムオンチップ(System-on-Chip:SoC)とも呼ばれる。
しかしながら、ASICの使用には、以下のような2つの大きな問題点がある。
1.これらは、開発費用が非常に高い。このようなASICを開発するには、2~4年かかり、費用は、1~3億ドルかかる。
2.柔軟性がほとんどない(機能が「ハードコード」されるので、新しい機能を追加する余地はほとんどない。)。
これらの問題点のために、ネットワーク業界に幾つかの制約が生じている。
1)市場でプレーヤになるために必要な資金を準備できる企業はごくわずかであり、その結果、プレーヤの数が少ないことが設備の価格を更に押し上げる要因となっている。
2)ASICデバイスをベースにしたネットワークプラットフォームに変更を実装するために必要な時間が長いため、ネットワーク機能の進化は、要求より遅れている。
これらの問題点を克服するために、ネットワークプロセッサとしても知られるネットワーク処理ユニット(network processing unit:NPU)が普及し始めている。ネットワークプロセッサ(NPU)は、ネットワークアプリケーションドメイン内のネットワークアーキテクチャコンポーネントとして使用されるプログラマブルソフトウェアデバイスである集積回路である。ネットワーク内のネットワークプロセッサは、コンピュータ又は同様のデバイス内の中央処理装置に類似している。電気通信分野において、類似信号がパケットデータ形式に置き換えられたことにより、データパケットを処理するネットワークプロセッサの集積回路が登場した。
今日のネットワークプロセッサは、単純な設計から、プログラム可能なソフトウェア、並びにデータパケットに対する様々な動作及び操作機能を備えた複雑なICまで、様々なものが開発されている。ネットワークプロセッサは、ルータ、ネットワークスイッチ、パケット検査、セッションコントローラ、ファイアウォール、送信機デバイス、エラー検出及び防止デバイス、並びにネットワーク制御ソフトウェアに使用される。今日では、ウェブネットワークがこれまで以上に強化されているため、ネットワークプロセッサは、大量のトラフィックを取り扱い、急速に成長している過負荷ネットワークの管理に重要な役割を果たしている。ネットワークプロセッサは、大規模ネットワークにおけるパケット検査、暗号化、監視、トラフィック管理及びキュー管理において重要な役割を果たしている。
しかしながら、このソリューションは、ある程度の柔軟性を実現しているが、比較的高価なデバイスの使用を必要とし、市場が要求する柔軟性及び機敏性を提供してはいない。
本開示は、特許請求の範囲を参照することによって要約できる。
本開示の目的は、データ処理の性能を改善するシステム及び方法を提供することである。
本開示の他の目的は、単一のパイプラインのみを使用して処理タスクを実行し、その結果、全てのサービスについてソフトウェアロックを最小レベルに維持しながら、ソフトウェアキューの削減を可能にするように構成されたシステム及び方法を提供することである。
本開示の他の目的は、CPUコア毎のサービスチェインの性能を改善することを可能にするシステム及び方法を提供することである。
本開示の他の目的は、パケットへのアクセスを必要とする全てのプロセスが、そのパケットへのアクセスを必要とする他のプロセスと全く同じパケットのコピーへのアクセスを許可されるため、パケットをコピーしてメモリ内で置き換えることを必要としないシステム及び方法を提供することである。
本開示の他の目的は、実行すべきメモリトランザクションがより少ないシステム及び方法を提供することである。
本開示の他の目的は、別のプロセスがパケットの処理を完了するのを待たずに、プロセスが同じパケットに並列にアクセスすることを可能にするシステム及び方法を提供することである。
本開示の他の目的は、プロセッサのIU/O要件を単一トランザクションに低減するシステム及び方法を提供することである。
本開示の他の目的は、パケットを前後に循環させる必要なく、サービスチェインをネイティブに実装するシステム及び方法を提供することである。
本開示の他の目的は、以下の説明から明らかになる。
本開示の第1の実施形態によれば、通信ネットワークで搬送されるデータパケットを並列処理する並列処理コンピュータシステムであって、
メモリと、
複数の処理要素と、
前記メモリに格納され、前記複数の処理要素によって実行されるように構成された少なくとも1つのプログラムと、
を備え、
前記少なくとも1つのプログラムは、
アプリケーションが実行されているランタイム中に、
前記アプリケーションからの動作命令を含む1以上のデータパケットを受信し、
サービスプロセスを実行するパイプライン要素を確立し、前記パイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられ、前記複数の処理要素のそれぞれは、前記パイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する1以上のタスクを実行するように動作可能であり、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行し、前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行する。
本明細書及び特許請求の範囲を通して、ここで使用する「処理要素」という用語は、シングルコア中央処理装置、マルチコア中央処理装置、グラフィックス処理装置、シングルコアコプロセッサ、マルチコアコプロセッサ等を包含する。
本明細書及び特許請求の範囲を通して、ここで使用する「パイプライン要素」という用語は、直列に接続された(1つの要素の出力が次の要素の入力である)データ処理要素のセットを意味する。パイプラインの複数の要素は、並列に実行してもよく、タイムスライス形式で実行してもよく、ここで、複数の要素間にある程度のバッファストレージを適用してもよい。
本明細書及び特許請求の範囲を通して、ここで使用する「スレッド」という用語は、スケジューラによって独立して管理でき、典型的には、オペレーティングシステムの一部である、プログラムされた命令の最小のシーケンスを示す。
本明細書で使用する「ロックレスアクセス(lockless access)」という用語は、ロックメカニズムを使用しないバッファへの読み出し及び書き込みアクセスを意味し、これによって、読出動作を実行してバッファからリーダにデータを供給する際に、ロックメカニズムを使用することに伴う遅延を回避する。
別の実施形態によれば、同じ処理要素が実行する機能をチェイニング(chaining)することによって前記サービスプロセスを実行する。
更に別の実施形態によれば、選択された前記処理要素が、他のサブパイプラインに関連付けられたin関数を呼び出すことによって、1つのサブパイプラインから別のサブパイプラインにパケットを転送するように構成されている。
別の実施形態によれば、少なくとも1つのタスクであって、各パイプライン要素に関連する全てのタスクより少ないタスクがいくつかの処理要素間で分割される。
更に別の実施形態では、前記並列処理コンピュータシステムは、更に、複数のスレッドから受信した情報を適用することによってタイマを更新するように構成された複数更新ロックレスタイマ(multiple updating lockless timer)を備える。
別の実施形態によれば、前記並列処理コンピュータシステムは、更に、複数のスレッドを用いてオブジェクトの最終アクセス時刻を更新しながら、それらのタイマに従ってキュー間のオブジェクトのフローを決定するように構成されたプロセッサを備える。
別の実施形態によれば、プロセッサは、タイマキューから出現するオブジェクトを、前記並列処理コンピュータシステムに含まれる他のキューと比較した場合に、その満了タイムアウトに最も近いキューに転送するように構成されている。
更に別の実施形態では、各オブジェクトは、a)ロックレスアクセスを許可する関連データ書込手段の数、及びb)キューに入った時間に応じてアクセス時間が与えられ、
これにより、前記プロセッサは、各キューから1以上のどのオブジェクトを除去すべきかを決定できる。
別の実施形態によれば、前記並列処理コンピュータシステムは、単一の管理エンティティがそれぞれのルックアップテーブル内のデータ要素を更新し、更新されたルックアップテーブルを複数のリアルタイムスレッドに対して読み出すことを可能にするように構成された単一のデータライタ及び複数のデータリーダを備える。
本開示の別の側面によれば、通信ネットワークで搬送されるデータパケットの並列処理を実行する方法が提供され、この方法は、
アプリケーションからの動作命令を含む1以上のデータパケットを受信することと、
サービスプロセスを実行するパイプライン要素を確立することであって、前記パイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられることと、
前記パイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する1以上のタスクを実行するように動作する複数の処理要素を提供することと、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行することであって、前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行することと、を含む。
本開示の更に別の側面によれば、1以上のコンピュータプロセッサによって、通信ネットワークにおいて受信されたデータパケットの並列計算を実行するための方法を実行するための命令のセットを実行するための、非一時的コンピュータ可読媒体に格納されたコンピュータプログラムを符号化したコンピュータプログラム製品であって、前記方法は、
アプリケーションからの動作命令を含む1以上のデータパケットを受信することと、
サービスプロセスを実行するパイプライン要素を確立することであって、前記パイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられることと、
前記パイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する1以上のタスクを実行するように動作する複数の処理要素を選択することと、
前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行することであって、選択された前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行することと、を含む。
添付の図面は、本明細書に組み込まれ、本明細書の一部を構成するものであり、本開示の幾つかの実施形態を図示し、本明細書の記述とともに、本開示の実施形態の原理を説明するものである。
パイプラインの使用に基づき、物理処理デバイス(「コア」)毎に単一のサービスを実行する従来のソフトウェアアーキテクチャを示す図である。 本開示の実施形態に基づいて解釈される並列処理コンピュータシステムを示す図である。 本発明の実施形態を実行する方法を示すフローチャートである。
以下の詳細な説明における特定の詳細及び値のいくつかは、本開示の特定の例を示すものである。但し、この説明は、単なる例であり、本発明の範囲を限定することを意図するものではない。特許請求の範囲に記載された方法及びデバイスは、当技術分野において公知の他の方法を用いても実施できることは、当業者にとって明らかである。更に、ここに記載する実施形態は、異なるステップを含むが、その全てが本発明の全ての実施形態において必要とされるわけではない。本発明の範囲は、特許請求の範囲を参照することによって把握できる。
ここで使用する「並列処理コンピュータシステム」という用語は、複数の演算を同時に実行できるコンピューティングシステムを示す。並列処理コンピュータシステムは、以下に限定されるものではないが、プロセッサ及びコプロセッサを含む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以上の不揮発性記憶デバイス)をメモリ内に含む。幾つかの実施形態において、メモリ又はメモリのコンピュータが読取可能な非一時的記憶媒体は、本開示の記載に従って、プログラム、モジュール、及びデータ構造を格納する。
幾つかの実施形態では、処理要素又は処理要素内のコアは、オペレーティングシステム又はコンピュータシステム上で同時に実行される1以上のオペレーティングシステムを管理する仮想マシンモニタ(ハイパーバイザ等)を実行してもよく、実行しなくてもよい。
幾つかの実施形態では、処理要素は、物理的プロセッサ又は仮想マシン上で動作するスレッド、例えば、アプリケーションレベルスレッド、カーネルスレッド、又はハードウェアスレッド等であってもよい。他の幾つかの実施形態では、処理要素は、ハイパーバイザ内で動作する仮想マシンであってもよい。他の実施形態では、処理要素は、物理的プロセッサ又は仮想マシン内の機能ユニットであってもよい。
図1に示すような従来のソフトウェアアーキテクチャは、物理的処理デバイス(「コア」)毎に単一のサービスを実行するためのパイプラインの使用に基づくアーキテクチャである。したがって、このようなアーキテクチャを使用すると、次のような結果が生じる。
1)(あるプロセスが、別のプロセスによって現在使用されているリソース又は情報を待機するため)ソフトウェアロックが生じる。
2)サービスチェインを実装する際の性能が低下する。
3)大量のCPUリソース(コア、メモリ、I/O)が必要になる。
これとは対照的に、本開示が提供するソリューションは、1つの単一パイプラインのみを使用して処理タスクを実行することに依存し、これによって、全てのサービスについてソフトウェアロックを最小レベルに維持しながら、ソフトウェアキューを削減する。このソリューションにより、CPUコアあたりのサービスチェインの性能を向上させることができる。
従来技術のソリューションとは異なり、本発明が提案するソリューションでは、パケットをコピーし、これらをメモリ内で置換する必要がない。このソリューションによれば、パケットへのアクセスを必要とする全てのプロセス(ヘッダ及び/又はペイロード)は、そのパケットへのアクセスを必要とする他のプロセスと全く同じパケットのコピーにアクセスできる。したがって、このソリューションは、次のような多くの利点を有する。
1)実行されるメモリトランザクションが少なくなる(したがって、消費電力が小さくなり、処理が速くなり、必要なメモリが小さくなる)。
2)プロセスは、別のプロセスがそのパケットの処理を完了するまで待つことなく、全く同じパケットに並行してアクセスできる。
3)プロセッサのI/O要件が単一のトランザクションに削減される。
4)パケットを前後に循環させる必要なく、サービスチェインがネイティブに実装される。
ここに提案するソリューションの基本原理の1つは、サービスチェインが、同一コア上で動作する際にソフトウェアキュー経由でパケットを渡すのではなく、機能をチェイニングすることによって構築されることである。
この方法により、様々なシステムコンポーネント間の責任の明確且つ定義された分割を維持しながら、キューの書き込みとポーリングに関連するオーバーヘッドを削減できる。
各パイプライン要素は、サービスプロセスを実行するように構成され、複数のサブパイプラインを含む。その複数のサブパイプラインに属する全てのサブパイプラインに関連するタスクは、同一のCPUで実行され、オプションとして、複数のサブパイプライン間のパケットの受け渡しは、次のサブパイプラインのin関数(in-function)を呼び出すことによって実行される。
あるいは、パイプライン要素(又は複数のパイプライン要素のそれぞれに)に割り当てられたタスクを分割し、複数のCPUによって実行されるようにしてもよく、その結果、このようなハイブリッド方式でプロセスを実行することによって、ネットワークリソースのより効率的な使用を達成でき、処理アーキテクチャは、その必要な柔軟性を維持する。
CPUが実行する必要があるタスクが集中的タスクである場合(又は特定のパケットの処理に必要なリアルタイムリソースが少ない場合)、これらは、ソフトウェアキューを使用して、異なるCPUに転送してもよいが、パケットの大部分は、依然として、上述のようにパイプライン要素を使用することによって、完了まで実行される。このようなハイブリッドモードでは、管理スレッドを別のCPUで実行することを可能にし、これらの管理スレッドは通常CPU負荷の高いタスクに関連付けられる。
本発明の一実施形態は、複数のアップデータロックレスタイマメカニズム(updater lockless timer mechanism)を提供する。本実施形態に係るロックレスタイマのメカニズムは、複数のスレッドから受信した情報をロックなしで適用することにより、タイマの更新を可能とする。単一のマネージャは、キュー間でのオブジェクトのフローをそのタイマに基づいて許可し、複数のスレッドは、オブジェクトの最終アクセス時刻を更新できる。
タイマキューから出ると、各オブジェクトは、他のキューと比較して、その満了タイムアウトに最も近いキューに移動される。タイマが0である場合、オブジェクトは破棄される。
各オブジェクトには、アクセス時間が与えられ、このアクセス時間は、ロックレスアクセスを可能にする関連ライタ(すなわち、バッファにデータを書き込む手段)の数に応じて、及びオブジェクトがキューに入った時間に応じて決定され、これによって、関連する管理エンティティは、オブジェクトが入ったキューからそのオブジェクトを除去すべきか否かを決定できる。
以上の方法に従うことにより、使用するキューの数を最小化しながら、タイマの効率的な管理を達成できる。例えば、16個のキューにより、最大18時間の1秒の分解能のタイマを使用できる。
単一のライタ(例えば、ルックアップテーブルにデータを書き込むライタ)が複数のリーダ(各バッファ、例えば、ルックアップテーブルからデータを読み出す手段)と共に使用される場合、この組合せは、単一の管理エンティティがそれぞれのルックアップテーブル内のデータ要素を更新することを可能にし、また、更新されたルックアップテーブルを複数のリアルタイムスレッドに対して読み出すことを可能にする。したがって、この実施形態を実施することによって、メモリフットプリントが大幅に低減される。
複数のリーダが実装されていない場合、各スレッドがルックアップテーブルコピーにアクセスできる必要があり、これにより、x個のコアを使用する場合は、ルックアップテーブルがx倍になる。典型的なルックアップテーブルサイズを±4Gとすると、20コアシステムでは、これは、4Gに代えて、4*20=80Gに変換される。
図3は、本発明の一実施形態に従って解釈される方法の一例のフローチャートを示している。まず、多くのエンドユーザを有する企業であるクライアントからパケットのバーストが到着したとする(ステップ300)。このパケットのバーストは、処理のために、ネットワークカード等のネットワークエンティティに到着し、必要なサービスプロセスは、通信パケットのルーティングである。次に、これらの到着したパケットのフローは、分離され、多数のサブフローに分割され、各サブフローは、全て(方向に関する)共通の分類を有するパケットを含み、それぞれのコア(プロセッサ)に転送される(ステップ310)。このステップ310は、本例に基づき、受信されたパケットのそれぞれに関連する5タプル値に従ってパケットを分割することによって実行される。「5タプル」という用語は、伝送制御プロトコル/インターネットプロトコル(Transmission Control Protocol/Internet Protocol:TCP/IP)接続を構成する5つの異なる値の集合を意味する。これは、送信元IPアドレス/ポート番号、宛先IPアドレス/ポート番号、及び使用中のプロトコルを含む。
ここで、更に、本例に関連するサービスがルーティングサービスであると仮定する。(パイプライン要素である)各サブフローは、各処理要素に到達し、複数のサブパイプライン(マイクロパイプライン等)に分割される(ステップ320)。サブフローの各パケットは、それぞれのサブパイプライン処理要素に関連付けられたリーダによって読み取られ(ステップ330)、異なるサブパイプラインに関連付けられた処理要素の全てが、全く同一のパケットを並列に処理する(ステップ340)。この例で示したような場合に使用できるサブパイルの例は、最長プレフィックス一致(Longest Prefix Match:LPM)、L4処理、L3検査、L2mux等を含む。この到着したパケットのバーストに更なるサービス、例えば、NATサービスを関連付ける必要がある場合、これは、追加のサブパイプラインとして定義され、更なる処理要素によって実行される。
様々な処理要素がそれぞれのタスクを完了すると、これらの結果は、ネットワークカード等の処理要素に戻され(ステップ350)、そこで、これらが1つの処理結果に結合され(ステップ360)、そこから伝達される。
本発明の他の実施形態は、ここに開示した発明の明細書及び実施を考慮することによって、当業者に明らかとなる。本明細書及び実施例は、単に例示的なものであり、本発明の真の範囲及び思想は、特許請求の範囲によって示される。

Claims (10)

  1. 通信ネットワークで搬送されるデータパケットを並列処理する並列処理コンピュータシステムであって、
    メモリと、
    複数の処理要素と、
    前記メモリに格納され、前記複数の処理要素によって実行されるように構成された少なくとも1つのプログラムと、
    を備え、
    前記少なくとも1つのプログラムは、
    アプリケーションが実行されているランタイム中に、
    前記アプリケーションからの動作命令を含む1以上のデータパケットを受信し、
    サービスプロセスを実行するCPUベースのパイプライン要素を確立し、同じ処理要素が実行する機能をチェイニングすることによって前記サービスプロセスを実行し、前記CPUベースのパイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられ、前記複数の処理要素のそれぞれは、前記CPUベースのパイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する1以上のタスクを実行するように動作可能であり、前記複数のサブパイプラインに属する全てのサブパイプラインに関連する前記1以上のタスクは単一のCPUにより実行され、
    前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行し、前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行する、
    ことを特徴とする並列処理コンピュータシステム。
  2. 選択された処理要素が、他のサブパイプラインに関連付けられたin関数を呼び出すことによって、1つのサブパイプラインから他のサブパイプラインにパケットを転送するように構成されていることを特徴とする請求項1に記載の並列処理コンピュータシステム。
  3. 少なくとも1つのタスクであって、各パイプライン要素に関連する全てのタスクより少ないタスクがいくつかの処理要素間で分割されることを特徴とする請求項1に記載の並列処理コンピュータシステム。
  4. 更に、複数のスレッドから受信した情報を適用することによってタイマを更新するように構成された複数更新ロックレスタイマを備えることを特徴とする請求項1に記載の並列処理コンピュータシステム。
  5. 更に、複数のスレッドを用いてオブジェクトの最終アクセス時刻を更新しながら、それらのタイマに従ってキュー間のオブジェクトのフローを決定するように構成されたプロセッサを備えることを特徴とする請求項1に記載の並列処理コンピュータシステム。
  6. 前記プロセッサは、タイマキューから出現するオブジェクトを、その満了タイムアウトに最も近いキューに転送するように構成されていることを特徴とする請求項に記載の並列処理コンピュータシステム。
  7. 各オブジェクトには、a)ロックレスアクセスを許可する関連データ書込手段の数、及びb)キューに入った時間に応じてアクセス時間が与えられ、
    これにより、前記プロセッサは、各キューから1以上のどのオブジェクトを除去すべきかを決定できることを特徴とする請求項に記載の並列処理コンピュータシステム。
  8. 単一の管理エンティティがそれぞれのルックアップテーブル内のデータ要素を更新し、更新されたルックアップテーブルを複数のリアルタイムスレッドに対して読み出すことを可能にするように構成された単一のデータライタ及び複数のデータリーダを備えることを特徴とする請求項に記載の並列処理コンピュータシステム。
  9. 通信ネットワークで搬送されるデータパケットの並列処理を実行する方法であって、
    アプリケーションからの動作命令を含む1以上のデータパケットを受信することと、
    サービスプロセスを実行するCPUベースのパイプライン要素を確立することであって、同じ処理要素が実行する機能をチェイニングすることによって前記サービスプロセスを実行し、前記CPUベースのパイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられることと、
    前記CPUベースのパイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する1以上のタスクを実行するように動作する複数の処理要素を提供することであって、前記複数のサブパイプラインに属する全てのサブパイプラインに関連する前記1以上のタスクは単一のCPUにより実行されることと、
    前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行することであって、前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行することと、
    を含む方法。
  10. 1以上のコンピュータプロセッサによって、通信ネットワークにおいて受信されたデータパケットの並列計算を実行するための方法を実行するための命令のセットを実行するための、非一時的コンピュータ可読媒体に格納されたコンピュータプログラムを符号化したコンピュータプログラム製品であって、前記方法は、
    アプリケーションからの動作命令を含む1以上のデータパケットを受信することと、
    サービスプロセスを実行するCPUベースのパイプライン要素を確立することであって、同じ処理要素が実行する機能をチェイニングすることによって前記サービスプロセスを実行し、前記CPUベースのパイプライン要素は、複数のサブパイプラインを含み、各サブパイプラインは、前記サービスプロセスを実行するために必要なそれぞれのタスク又はその一部に関連付けられることと、
    前記CPUベースのパイプライン要素に含まれる前記複数のサブパイプラインに属する各サブパイプラインに関連する1以上のタスクを実行するように動作する複数の処理要素を選択することであって、前記複数のサブパイプラインに属する全てのサブパイプラインに関連する前記1以上のタスクは単一のCPUにより実行されることと、
    前記複数のサブパイプラインに関連付けられたタスクを前記複数の処理要素によって同時に実行することであって、選択された前記複数の処理要素は、前記サービスプロセスを実行するために、各データパケットの並列処理を実行することと、
    を含むコンピュータプログラム製品。
JP2019569765A 2017-06-16 2018-06-01 マルチコアコンピューティングプラットフォームにおける並列情報処理 Active JP7137588B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762520624P 2017-06-16 2017-06-16
US62/520,624 2017-06-16
PCT/IL2018/050596 WO2018229745A1 (en) 2017-06-16 2018-06-01 Parallel information processing on multi-core computing platforms

Publications (2)

Publication Number Publication Date
JP2020524445A JP2020524445A (ja) 2020-08-13
JP7137588B2 true JP7137588B2 (ja) 2022-09-14

Family

ID=64660677

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019569765A Active JP7137588B2 (ja) 2017-06-16 2018-06-01 マルチコアコンピューティングプラットフォームにおける並列情報処理

Country Status (5)

Country Link
US (1) US11294688B2 (ja)
EP (1) EP3639147A4 (ja)
JP (1) JP7137588B2 (ja)
IL (1) IL271422B1 (ja)
WO (1) WO2018229745A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL275859B2 (en) 2018-01-28 2024-05-01 Drivenets Ltd Method and device for improving bandwidth utilization in a communication network
US11809219B2 (en) 2018-07-02 2023-11-07 Drivenets Ltd. System implementing multi-threaded applications

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050138622A1 (en) 2003-12-18 2005-06-23 Mcalpine Gary L. Apparatus and method for parallel processing of network data on a single processing thread
JP2013179429A (ja) 2012-02-28 2013-09-09 Nippon Telegr & Teleph Corp <Ntt> 振分先を切り替える並列パケット処理方法および装置
JP2017521806A (ja) 2014-06-26 2017-08-03 グバーネット インコーポレイテッドGubernet Inc. 多重プロセッシング環境でのスケジューリングの方法及びその装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577657B2 (en) * 2005-03-18 2009-08-18 Microsoft Corporation System and method for updating objects in a multi-threaded computing environment
US9448856B2 (en) * 2005-12-30 2016-09-20 Level 3 Communications, Llc Lock-free dual queue with condition synchronization and time-outs
US8203566B2 (en) * 2009-05-29 2012-06-19 Microsoft Corporation Fixed function pipeline application remoting through a shader pipeline conversion layer
KR101241584B1 (ko) * 2009-12-21 2013-03-11 한국전자통신연구원 데이터 플로우 병렬 처리 장치 및 방법
US8694994B1 (en) * 2011-09-07 2014-04-08 Amazon Technologies, Inc. Optimization of packet processing by delaying a processor from entering an idle state
US9430239B2 (en) * 2013-03-12 2016-08-30 Qualcomm Incorporated Configurable multicore network processor
US9250916B2 (en) * 2013-03-12 2016-02-02 International Business Machines Corporation Chaining between exposed vector pipelines
US9866502B2 (en) * 2014-08-11 2018-01-09 Centurylink Intellectual Property Llc Programmable broadband gateway hierarchical output queueing
US9462084B2 (en) * 2014-12-23 2016-10-04 Intel Corporation Parallel processing of service functions in service function chains
US10129180B2 (en) * 2015-01-30 2018-11-13 Nicira, Inc. Transit logical switch within logical router
CN106100991B (zh) 2016-06-02 2019-03-26 浙江工商大学 一种转发与控制分离系统中数据包洪泛并行处理方法
US20180260255A1 (en) * 2017-03-10 2018-09-13 Futurewei Technologies, Inc. Lock-free reference counting

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050138622A1 (en) 2003-12-18 2005-06-23 Mcalpine Gary L. Apparatus and method for parallel processing of network data on a single processing thread
JP2013179429A (ja) 2012-02-28 2013-09-09 Nippon Telegr & Teleph Corp <Ntt> 振分先を切り替える並列パケット処理方法および装置
JP2017521806A (ja) 2014-06-26 2017-08-03 グバーネット インコーポレイテッドGubernet Inc. 多重プロセッシング環境でのスケジューリングの方法及びその装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
階層型粗粒度タスク並列処理のための多重割当てを伴うダイナミックスケジューリング手法,並列処理シンポジウムJSPP2001,2001年,351-358頁

Also Published As

Publication number Publication date
WO2018229745A1 (en) 2018-12-20
IL271422B1 (en) 2024-07-01
IL271422A (en) 2020-01-30
US11294688B2 (en) 2022-04-05
EP3639147A1 (en) 2020-04-22
US20200142708A1 (en) 2020-05-07
EP3639147A4 (en) 2020-04-22
JP2020524445A (ja) 2020-08-13

Similar Documents

Publication Publication Date Title
US6338078B1 (en) System and method for sequencing packets for multiprocessor parallelization in a computer network system
US10841245B2 (en) Work unit stack data structures in multiple core processor system for stream data processing
JP3670160B2 (ja) タスクに各リソースを割当てるための回路、複数のリソースを共用するための方法、命令を実行するためのプロセッサ、マルチタスクプロセッサ、コンピュータ命令を実行するための方法、マルチタスク方法、コンピュータプロセッサを含む装置、複数の所定のグループのタスクを実行するステップを含む方法、ネットワークデータを処理するステップを含む方法、複数のソフトウェアタスクを実行するための方法およびコンピュータプロセッサを含むネットワーク装置
US10768989B2 (en) Virtual vector processing
US6804815B1 (en) Sequence control mechanism for enabling out of order context processing
US8127112B2 (en) SIMD array operable to process different respective packet protocols simultaneously while executing a single common instruction stream
US8230144B1 (en) High speed multi-threaded reduced instruction set computer (RISC) processor
US6631422B1 (en) Network adapter utilizing a hashing function for distributing packets to multiple processors for parallel processing
US7000048B2 (en) Apparatus and method for parallel processing of network data on a single processing thread
US7675928B2 (en) Increasing cache hits in network processors using flow-based packet assignment to compute engines
US7415598B2 (en) Message synchronization in network processors
US20180107484A1 (en) Implementing conflict-free instructions for concurrent operation on a processor
US20070169001A1 (en) Methods and apparatus for supporting agile run-time network systems via identification and execution of most efficient application code in view of changing network traffic conditions
US20040199916A1 (en) Systems and methods for multi-tasking, resource sharing, and execution of computer instructions
Yi et al. Gpunfv: a gpu-accelerated nfv system
US7290105B1 (en) Zero overhead resource locks with attributes
CN111984415A (zh) 一种基于流水线转发模型的负载均衡方法及装置
JP7137588B2 (ja) マルチコアコンピューティングプラットフォームにおける並列情報処理
WO2018075811A2 (en) Network-on-chip architecture
Halfhill Intel network processor targets routers
Vasiliadis et al. Design and implementation of a stateful network packet processing framework for GPUs
CN111290791A (zh) 具有高性能密码操作的标量单元
EP1631906B1 (en) Maintaining entity order with gate managers
US20220197696A1 (en) Condensed command packet for high throughput and low overhead kernel launch
Döring et al. SmartNICs: Current trends in research and industry

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210527

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20211222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220728

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: 20220823

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220902

R150 Certificate of patent or registration of utility model

Ref document number: 7137588

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150