JP6193467B2 - 構成可能なマルチコアネットワークプロセッサ - Google Patents

構成可能なマルチコアネットワークプロセッサ Download PDF

Info

Publication number
JP6193467B2
JP6193467B2 JP2016501225A JP2016501225A JP6193467B2 JP 6193467 B2 JP6193467 B2 JP 6193467B2 JP 2016501225 A JP2016501225 A JP 2016501225A JP 2016501225 A JP2016501225 A JP 2016501225A JP 6193467 B2 JP6193467 B2 JP 6193467B2
Authority
JP
Japan
Prior art keywords
processing
processing mode
interfaces
network processor
cores
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.)
Expired - Fee Related
Application number
JP2016501225A
Other languages
English (en)
Other versions
JP2016516352A (ja
JP2016516352A5 (ja
Inventor
トゥ、イフェン
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2016516352A publication Critical patent/JP2016516352A/ja
Publication of JP2016516352A5 publication Critical patent/JP2016516352A5/ja
Application granted granted Critical
Publication of JP6193467B2 publication Critical patent/JP6193467B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/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
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1515Non-blocking multistage, e.g. Clos
    • H04L49/1546Non-blocking multistage, e.g. Clos using pipelined operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Logic Circuits (AREA)
  • Stored Programmes (AREA)

Description

関連出願の相互参照
[0001]本出願は、「CONFIGURABLE MULTICORE NETWORK PROCESSOR」と題する2013年3月12日に出願された米国非仮特許出願第13/797,838号の優先権を主張するものであり、その全体を参照により本明細書に明示的に組み込む。
[0002]本開示は、一般に、電子回路に関し、より詳細には、パイプライン処理モードと並列処理モードとの間で構成可能な複数の処理コアを備えたネットワークプロセッサに関する。
[0003]パケット交換網は、個人と組織体との間で情報を送信するために広く使用される。パケット交換網では、情報の小ブロック、またはデータパケットが共通のチャネルを介して送信される。より具体的には、情報は、発信源において複数のデータパケットにセグメント化され、アドレス方式を用いてチャネルを介して宛先へと経路指定される。宛先で、情報はデータパケットから再構成される。
[0004]ネットワーク上の多くのデバイスは、データパケットを処理するように設計されたネットワークプロセッサを含む。ネットワークプロセッサは、複数の処理コアを使用できる、ソフトウェアでプログラム可能なデバイスである。処理コアは、並列に専用化することができ、したがって、ネットワークプロセッサにより受信される各データパケットは、データパケットに対してすべての必要な処理を実施する処理コアに割り当てられる。代替的に、処理コアは、パイプライン方式に専用化することができ、パイプラインにおける各処理コアは、データパケットに対して特定のサブタスクを実行するように専用化される。各構成は、ネットワーキング用途において、それ自体の利点と不利な点とを有する。たとえば、レイヤ2およびレイヤ3ネットワークプロトコルは、パイプライン化された処理によく適しているが、ディープパケットインスペクション(DPI)のようなより高いレイヤプロトコルは、並列処理によく適している。したがって、たとえば、すべてのレイヤのネットワークプロトコルなど、すべてのネットワークプロトコルを効率的にサポートする単一の解決策が当技術分野で求められている。
[0005]ネットワークプロセッサが開示される。ネットワークプロセッサは、データパケットを処理するように構成された複数の処理コアと、パイプライン処理モードと並列処理モードとの間で処理コアを構成するように構成可能な処理モード機構とを含む。ネットワークプロセッサはまた、処理コアとともに配置される複数の先入れ先出し(FIFO)インターフェースを含むことができる。処理モード機構は、パイプライン処理モードまたは並列処理モードのいずれかで動作するようにFIFOインターフェースおよび処理コアを相互接続するように構成される。処理モード機構は、パイプライン処理モードまたは並列処理モードのいずれかで動作するように、処理コアを相互接続するように構成可能な、たとえば、スイッチ、マルチプレクサなどの複数のスイッチ要素を備えることができる。処理モード機構はまた、パイプライン処理モードまたは並列処理モードのいずれかで動作するように、処理コアを相互接続するように構成可能なファブリックロジックおよびバスを備えることができる。
[0006]他のネットワークプロセッサが開示される。ネットワークプロセッサは、データパケットを処理するための手段と、パイプライン処理モードと並列処理モードとの間で処理するための手段を構成するための手段とを含む。ネットワークプロセッサは、処理するための手段とともに配置される複数のFIFOインターフェースをさらに含むことができる。構成するための手段は、パイプライン処理モードまたは並列処理モードのいずれかで動作するように、FIFOインターフェースと処理するための手段とを相互接続するように構成される。処理するための手段は、複数の処理コアを含むことができ、また構成するための手段は、パイプライン処理モードまたは並列処理モードのいずれかで動作するように、処理コアを相互接続するように構成可能な複数のスイッチ要素、またはファブリックロジックおよびバスを含むことができる。
[0007]データパケットを処理する方法が開示される。方法は、選択された処理モードで複数の処理コアを構成することを含み、選択された処理モードは、パイプライン処理モードおよび並列処理モードの一方である。方法はまた、選択された処理モードに従って複数の処理コアにデータパケットを分配することと、構成された処理モードに従って、複数の処理コアの1つまたは複数のものから1つまたは複数のデータパケットを受け取ることとを含む。複数の処理コアを構成することは、パイプライン処理モードまたは並列処理モードのいずれかで動作するように、処理コアを相互接続するように複数のスイッチ要素を構成すること、またはパイプライン処理モードまたは並列処理モードのいずれかで動作するように、処理コアを相互接続するようにファブリックロジックおよびバスを構成することを含むことができる。
[0008]コンピュータプログラム製品が開示される。コンピュータプログラム製品は、ネットワークプロセッサにより実行可能なコードを備えるコンピュータ可読媒体を含む。ネットワークプロセッサは、複数の処理コアと処理モード機構とを含む。コードは、ネットワークプロセッサで実行されたとき、ネットワークプロセッサに、複数の処理コアを選択された処理モードに構成させる。選択された処理モードは、パイプライン処理モードおよび並列処理モードの一方とすることができる。コードはまた、選択された処理モードに従って、ネットワークプロセッサに、データパケットを複数の処理コアに分配させ、また構成された処理モードに従って、複数の処理コアのうちの1つまたは複数のものから1つまたは複数のデータパケットを受け取らせる。
[0009]他のネットワークプロセッサが開示される。ネットワークプロセッサは、データパケットを処理するように構成された複数の処理コアを含み、ここにおいて、処理コアは、パイプライン処理モードと並列処理モードとの間で構成可能である。ネットワークプロセッサは、パイプライン処理モードまたは並列処理モードのいずれかで動作するように、処理コアを相互接続するように構成された複数のスイッチを備えることができる。ネットワークプロセッサは、メモリと、処理コアにメモリへのアクセスを提供するためのメモリバスとを備えることができ、ここにおいて、メモリバスは、パイプライン処理モードまたは並列処理モードのいずれかで動作するように処理コアを相互接続する。
[0010]当業者であれば、装置および方法の他の態様は、装置および方法の様々な態様が例として示され、述べられている次の詳細な説明から容易に明らかになることを理解されたい。理解されるように、これらの態様は、他の、異なる形態で実施することができ、またそのいくつかの細部は、様々な他の点において変更することができる。したがって、図面および詳細な説明は、本質的に例示的なものであって、限定的なものと見なされるべきではない。
[0011]次に装置および方法の様々な態様が、添付図面を参照し、限定することなく例として、詳細な説明において示される。
[0012]電気通信システムの例を示す概念的なブロック図。 [0013]構成可能なマルチコアネットワークプロセッサのブロック図。 [0014]パイプライン処理モードにおける構成可能なマルチコアネットワークプロセッサのブロック図。 [0015]並列処理モードにおける構成可能なマルチコアネットワークプロセッサのブロック図。 [0016]パイプライン処理モードと並列処理モードとの間でマルチコアネットワークプロセッサを構成するための処理モード機構のブロック図。 [0017]パイプライン処理モードと並列処理モードとの間でマルチコアネットワークプロセッサを構成するための他の処理モード機構のブロック図。 [0018]パイプライン処理モードと並列処理モードとの間で構成可能なマルチコアネットワークプロセッサを用いてデータパケットを処理する方法の流れ図。
[0019]本開示の様々な態様が、添付図面を参照して、以下でより完全に説明される。しかし、本開示は、当業者によって多くの異なる形態で実施することができ、本明細書で提示されたいずれかの特定の構造または機能に限定されるものと解釈されるべきではない。そうではなくて、これらの態様は、本開示が十分なものであり、完全であるように、また本開示の範囲を当業者に十分伝えるように提供される。本明細書の教示に基づき、本開示の任意の他の態様とは独立して実施されようと、または組み合わせて実施されようと、本開示の範囲は、本開示のいずれの態様も包含するように意図されていることを当業者であれば理解されたい。たとえば、装置は、本明細書に記載の任意の数の態様を用いて実施され、または方法が実行され得る。さらに本開示の範囲は、本開示の他の態様に加えて、またはそれに代えて、他の構造および/または機能を用いて実施されるような装置または方法を包含することが意図されている。本明細書で開示される開示のいずれの態様も、特許請求の範囲の1つまたは複数の構成要件により実施され得ることを理解されたい。
[0020]特定の態様が本明細書で述べられるが、これらの諸態様の多くの変形および置換は、本開示の範囲に含まれる。好ましい態様のいくつかの利益および利点が述べられるが、本開示の範囲は、特定の利益、用途、または目的に限定されることを意図していない。そうではなくて、本開示の態様は、様々な回路、技術、システム、ネットワーク、および方法に広く適用可能であるように意図されており、そのいくつかが、例として図面に、また以下の記述で示されている。詳細な説明および図面は、限定的なものではなく、本開示を単に例示するためのものであり、本開示の範囲は、添付の特許請求の範囲、およびその等価な形態により定義される。
[0021]様々な概念が、添付図面を参照して、以下でより十分に述べられる。しかし、これらの概念は、当業者により多くの異なる形態で実施することができ、本明細書で提示される任意の特定の構造または機能に限定されるものと解釈されるべきではない。そうではなくて、これらの概念は、本開示が十分なものであり、完全であるように、またこれらの概念の範囲を当業者に十分伝えるように提供される。詳細な説明は、特定の細部を含むことができる。しかし、これらの概念は、これらの特定の細部を含まずに実施され得ることは当業者には明らかであろう。いくつかの例では、よく知られた構造および構成要素は、本開示を通して提示された様々な概念を曖昧にしないために、ブロック図の形で示されている。
[0022]本開示を通して提示される様々な概念は、ネットワーク要素で実施するのによく適している。ネットワーク要素(たとえば、ルータ、スイッチ、ブリッジ、または同様のネットワーキングデバイス。)は、ネットワーク上の他の機器を通信可能に相互接続する任意のネットワーキング機器(たとえば、他のネットワーク要素、終端局、または同様のネットワーキングデバイス)を含む。
[0023]これらの概念は、ハードウェアで、またはハードウェアプラットフォーム上で実行されるソフトウェアで実施され得る。ハードウェアまたはハードウェアプラットフォームは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向けIC(ASIC)、書換え可能ゲートアレイ(FPGA)もしくは他のプログラム可能な論理構成要素、ディスクリートゲートもしくはトランジスタ論理、ディスクリートハードウェア構成要素、またはそれらの任意の組合せ、あるいは本明細書で述べる機能を実施するように設計された任意の他の適切な構成要素とすることができる。汎用プロセッサはマイクロプロセッサとすることができるが、代替的には、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態マシンとすることができる。プロセッサはまた、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPと併せた1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成など、コンピューティング構成要素の組合せとして実施され得る。
[0024]ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはその他として呼ばれようと、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能ファイル、実行のスレッド、プロシージャ、関数などを意味するものと広く解釈されるべきである。ソフトウェアは、コンピュータ可読媒体上に常駐することができる。コンピュータ可読媒体は、例として、磁気記憶デバイス(たとえば、ハードディスク、フロッピー(登録商標)ディスク、磁気ストリップ)、光ディスク(たとえば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD))、スマートカード、フラッシュメモリデバイス(たとえば、カード、スティック、キードライブ)、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能なPROM(EEPROM(登録商標))、汎用レジスタ、またはソフトウェアを記憶するための任意の他の適切な非一時的な媒体を含むことができる。
[0025]本開示は、パイプライン処理モードと並列処理モードとの間で構成可能な複数の処理コアを有するネットワークプロセッサを対象とする。パイプライン処理モードでは、データパケットに対するソフトウェアオペレーションは、複数のソフトウェアオペレーションまたはサブタスクへと分割され、各サブタスクは、別個の処理コア上で実行される。任意の1つの処理コアにより取得されるデータパケットの中間処理は、パイプライン処理の次段に渡すことができる。並列処理モードでは、各データパケットは、処理コアに割り当てられる。各処理コアは、同じソフトウェアを実行して、完了するまでデータパケットを処理する。
[0026]図1は、パケットベースのネットワーク100の例を示す概念的なブロック図である。ネットワーク100は、1つまたは複数のネットワークプロセッサ104を用いて、たとえば、コンピュータなどの複数のネットワークデバイス102を相互接続する。ネットワーク100は、インターネットなどの広域ネットワーク(WAN)、イーサネット(登録商標)網などのローカルエリアネットワーク(LAN)、または任意の他の適切なネットワークとすることができる。パケットベースのネットワーク100は、世界的、全国的、地域的、地方自治体的、もしくは施設内、または任意の他の適切な領域を含む任意の適切な領域を包含するように構成することができる。
[0027]ネットワークプロセッサ104は、スイッチ、ルータ、ブリッジ、またはネットワーク100上の他の機器を相互接続する任意の適切なデバイスとすることができる。ネットワークプロセッサ104は、データパケットを、ネットワークを介して導くために使用される1つまたは複数のルックアップテーブルを含むプログラム可能なデバイスとして実施することができる。各ルックアップテーブルは、1つまたは複数のフローテーブルエントリを含む。各フローエントリは、データパケットを処理するために使用される。
[0028]図2は、構成可能なマルチコアネットワークプロセッサ200の概略的なブロック図である。ネットワークプロセッサ200は、第1のコアグループ202と、第2のコアグループ204とを有する。各コアグループ202、204は、データパケットを処理するように構成されたいくつかの処理コアを含む。処理コアは、1つまたは複数のファームウェアと、コアに対してローカルなコードを記憶するための専用メモリとを含むことができる。各コアグループ202、204はまた、処理コアに関連付けられたいくつかのFIFOインターフェース(図示せず)を含むこともできる。
[0029]処理モード機構218、220は、各コアグループ202、204と関連付けられる。処理モード機構218、220は、スイッチおよびマルチプレクサ、またはファブリックロジックおよびバスの1つまたは複数のものを含むことができる。処理モード機構218、220は、パイプライン処理モードと並列処理モードとの間で処理コアを構成するように構成可能である。パイプライン構成もしくはモードでは、ソフトウェアタスクは、複数のサブタスクへと分割され、各タスクは、別個の処理コア上で動作する。任意のコアにより取得された中間的な処理情報は、パイプライン処理における次段へと渡され得る。並列モードでは、いずれのタスクも、オペレーティングシステム(OS)スケジューラの制御により任意のコアで動作され得る。OSスケジューラは、複数の処理コア間の負荷バランスを提供する。代替的に、並列モードでは、タスクは、CPU親和性機構を用いて、特定のコアに固定され得る。別々の処理モード機構218、220が、各コアグループ202、204に対して示されているが、両方のコアグループに対する処理コアを構成するために、単一の機構が使用され得る。
[0030]メモリアービタ206、208が、各コアグループと関連付けられている。アービタ206、208は、メモリ210、212へのインターフェースとして機能し、またメモリへのアクセスを管理する。たとえば、アービタ206、208は、処理コアによるメモリへのアクセスを管理するように構成され得る。アービタ206、208は、メモリに記憶されたコマンド、ならびに関連するプログラム命令およびデータが処理コアに提供されるシーケンスを決定することができる。アービタ206、208は、バスを介して、メモリ210、212へのアクセスを許可することができる。
[0031]メモリ210、212は、マルチコアネットワークプロセッサ200に対して外部のものとすることができ、また1つまたは複数の共用されたスタティックRAM(SRAM)バンク、およびターナリ内容検索メモリ(TCAM:ternary content addressable memory)バンクを含むことができる。メモリ210、212は、プログラムコード、ルックアップテーブル、パケットデータ、および待ち行列情報のうちの1つまたは複数のものを記憶することができる。
[0032]マルチコアネットワークプロセッサ200は、ディスパッチャ214とリアセンブル216とをさらに含む。ディスパッチャ214は、マルチコアネットワークプロセッサ200のオペレーションモードに従って、スイッチコアから受け取ったデータパケットを、処理コアに分配するように構成される。リアセンブラ216は、データパケットを処理コアから受け取り、マルチコアネットワークプロセッサ200のオペレーションモードに従って、データパケットをアセンブラに、または再順序付けするように構成される。リアセンブラ216は、リオーダモジュールと呼ばれ得る。
[0033]パイプライン処理モード:
[0034]図3は、パイプライン処理モードで動作するように構成された例示的なマルチコアネットワークプロセッサ300のブロック図である。例示的なマルチコアネットワークプロセッサ300は、4つの処理コアを有する第1のパイプライン302と、4つの処理コアを有する第2のパイプライン304とを含む(より多くの、またはより少ない処理コアがパイプライン302、304に含まれ得る)。各処理コアは、パケットを処理コアの中に移動させるための入力FIFOインターフェース306と、パケットを処理コアの外に移動させるための出力FIFOインターフェース308とを有する。
[0035]第1の処理コア310を動作させるファームウェアは、その処理コアに関連付けられた入力FIFOインターフェース306から読み取ることにより、到来するパケットを処理する。処理コア310が到来するパケットの処理を完了したとき、コアのファームウェアは、コアに関連付けられた出力FIFOインターフェース308に対して中間パケットを出力する。「中間パケット」は、処理コアに入力されたパケットの、その処理コアによる処理から得られた、コアプロセッサにより出力されたパケットを指す。中間パケットは、次の処理コアの入力FIFOインターフェース306に入力されて、その処理コアのファームウェアに従って処理される。中間パケットの処理および転送は、最後のパケットが、パイプラインにおける最後の処理コアにより出力されるまで継続する。
[0036]ディスパッチャ314は、2つのパイプライン302、304にパケットを分配することができる。ディスパッチャ314は、異なる分配アルゴリズムを適用することができる。ラウンドロビン分配では、パケットディスパッチャ314は、パケットを二者択一的に分配する。第1のパイプライン302における第1の入力FIFOインターフェース306が、パケットを保持するのに十分ではない場合、ディスパッチャ314は、そのパケットを第2のパイプライン304の第1の入力FIFOインターフェース306に分配することができる。両方のパイプライン302、304の第1の入力FIFOインターフェース306が、パケットを保持するのに十分ではない場合、ディスパッチャ314は、パケットのさらなる分配を停止することができる。ハッシュベースの分配では、パケットディスパッチャ314は、パケットヘッダフィールドまたは他のフィールドに基づく一定のアルゴリズムを適用し、2つのパイプライン302、304のいずれか一方にインデックスを得るためにモジュロ演算を適用する。
[0037]ディスパッチャ314はまた、シーケンス番号をパケットに割り当てることができ、またリオーダモジュール316は、パケットがパイプラインに分配されたのと同じ順序でパケットを回収することができる。再順序付けタスクを容易にするために、シーケンス番号は、FIFOに入る最初の16ビットフィールドとすることができる。
[0038]並列処理モード:
[0039]図4は、並列処理モードで動作するように構成された例示的なマルチコアネットワークプロセッサ400のブロック図である。例示的なマルチコアネットワークプロセッサ400は、4つの処理コアを有する第1のプロセッサグループ402と、4つの処理コアを有する第2のプロセッサグループ404とを含む(より多くの、またはより少ない処理コアが、グループ402、404に含まれ得る)。各処理コアは、入力FIFOインターフェース406と、出力FIFOインターフェース408とを有する。処理コアを動作させるファームウェアは、その処理コアに関連付けられた入力FIFOインターフェース406から読み取ることにより、到来するパケットを処理する。処理コアが、到来するパケットの処理を完了したとき、コアのファームウェアが、処理されたパケットを、コアに関連付けられた出力FIFOインターフェース408に出力する。並列処理モードでは、各処理コアは、同じソフトウェアを実行して、完了するまでパケットを処理することができる。
[0040]ディスパッチャ414は、2つのプロセッサグループ402、404にパケットを分配することができる。ディスパッチャ414は、異なる分配アルゴリズムを適用することができる。ラウンドロビン分配では、パケットディスパッチャ414は、パケットを二者択一的に分配する。第1のプロセッサグループ402における入力FIFOインターフェース406のうちの1つが、パケットを保持するのに十分ではない場合、ディスパッチャ414は、そのパケットを第2のプロセッサグループ404の入力FIFOインターフェース406の1つに分配することができる。両方のグループ402、404の入力FIFOインターフェース406が、パケットを保持するのに十分ではない場合、ディスパッチャ414は、パケットのさらなる分配を停止することができる。ハッシュベースの分配では、パケットディスパッチャ414は、パケットヘッダフィールドまたは他のフィールドに基づく一定のアルゴリズムを適用し、2つのグループ402、404のいずれか一方にインデックスを得るためにモジュロ演算を適用する。
[0041]ディスパッチャ414はまた、シーケンス番号をパケットに割り当てることができ、またリオーダモジュール416は、パケットがパイプラインに分配されたのと同じ順序でパケットを回収することができる。再順序付けタスクを容易にするために、シーケンス番号は、FIFOに入る最初の16ビットフィールドとすることができる。
[0042]処理モード選択:
[0043]図5は、いくつかの処理コアに対する処理モードの選択を提供する処理モード機構500のブロック図である。処理モード機構500は、いくつかの処理コアを、パイプライン処理モードまたは並列処理モードのいずれかで構成するための手段を提供する。処理モード機構500、または複数の処理コアを構成するための手段は、たとえば、スイッチS0〜S5および/またはマルチプレクサ502a〜502cなどのいくつかのスイッチ要素を含むことができる。スイッチS0〜S5およびマルチプレクサ502の各々は、モード制御信号504により制御され得る。
[0044]処理モード機構500は、モード制御信号504が、スイッチS0〜S5をオープン状態に設定し、またマルチプレクサ502a〜502cを、上側のFIFOインターフェースF1、F3、F5、F7にコア出力パケットを導くように設定するとき、処理コアをパイプライン処理モードに構成する。このモードでは、ディスパッチャ514、またはデータパケットを分配するための手段は、パケットをFIFOインターフェースF0に分配する。
[0045]処理コア、またはデータパケットを処理するための手段は、処理モード機構500のスイッチ要素と併せて、分配されたパケットを次のように処理することができる:分配されたパケットは、第1の処理コア506aにより処理される。第1のマルチプレクサ502aは、第1の処理コア506aにより出力された、得られた中間パケットを受け取り、それをFIFOインターフェースF1へと導く。中間パケットは、第2の処理コア506bにより処理される。第2のマルチプレクサ502bは、第2の処理コア506bにより出力された、得られた中間パケットを受け取り、それをFIFOインターフェースF3へと導く。この処理シーケンスは、第4のプロセッサコア506dが、最後のパケットを最後のFIFOインターフェースF7に出力するまで続けられる。リオーダモジュール516は、最後のパケットを最後のFIFOインターフェースF7から受け取る。パイプラインモードでは、下側のFIFOインターフェースF2、F4、F6は使用されない。
[0046]処理モード機構500は、モード制御信号504が、スイッチS0〜S5をクローズ状態に設定し、マルチプレクサ502a〜502cを、ディスパッチャ514入力パケットを上側FIFOインターフェースF1、F3、F5に導くように、また処理コア出力パケットを下側FIFOインターフェースF2、F4、F6、F7に導くように設定したとき、処理コアを並列処理モードに構成する。並列処理モードでは、上側と下側FIFOインターフェースF0〜F7の両方が使用される。
[0047]並列処理モードでは、ディスパッチャ514、またはデータパケットを分配するための手段は、処理モード機構のスイッチ要素と併せて、パケットを次のように処理コアに分配する:第1の処理コア506aに対するパケットは、FIFOインターフェースF0に入力され、第2の処理コア506bに対するパケットは、第1のマルチプレクサ502aを通してFIFOインターフェースF1に入力され、第3の処理コア506cに対するパケットは、第2のマルチプレクサ502bを通してFIFOインターフェースF3に入力され、第4の処理コア506dに対するパケットは、第3のマルチプレクサ502cを通してFIFOインターフェースF5に入力される。
[0048]処理コアの各々は、そのそれぞれのパケットを処理し、またマルチプレクサ502a〜502cを含む処理モード機構500は、次のように処理コア出力トラフィックを導く:第1の処理コア506aの出力はFIFOインターフェースF2に入力され、第2の処理コア506bの出力はFIFOインターフェースF4に入力され、また第3の処理コア506cの出力はFIFOインターフェースF6に入力される。リオーダモジュール516は、FIFOインターフェースF2、F4、F6、およびF7からパケットを収集する。
[0049]図6は、いくつかの処理コアに対して処理モードの選択を提供する他の例示的な処理モード機構600のブロック図である。処理モード機構600は、パイプライン処理モードまたは並列処理モードのいずれかで、いくつかの処理コアを構成するための手段を提供する。処理モード機構600、または複数の処理コアを構成するための手段は、メモリ602、バス604、およびファブリックロジック606を含むことができる。
[0050]いくつかの実施形態では、処理モード機構600は、次のように働くことができる。各処理コア612a〜612d、およびリオーダモジュール616は、IDと関連付けられる。ディスパッチャ614により、処理モード機構600の中に送出された各パケットは、コアの1つ、またはリオーダモジュールに対応するパケットヘッダフィールドにIDを有する。このIDは、パケットをどこに送るべきかを、処理モード機構600のファブリックロジック606に指示する。モード選択信号610は、処理コア612a〜612d、ディスパッチャ614、およびリオーダモジュール616の間でFIFOインターフェースの割り振りを制御する。
[0051]処理モード機構600は、モード選択信号610を介して、処理コアをパイプライン処理モードに構成する。パイプライン処理モードでは、ディスパッチャ614は、第1の処理コア612aに対応するIDを有するパケットを、第1のファブリック入力FIFO618に入力する。パケットは、バス604を通過し、ファブリックロジック606により受け取られる。パケットIDに基づき、ファブリックロジック606は、パケットを、バス604を介して第1の処理コア612a(Core0)のFIFOインターフェースF0_outに送る。
[0052]第1の処理コア612aは、パケットを処理し、第2の処理コア612b(Core1)のIDに対応するようにパケットIDを変更し、パケットを、FIFOインターフェースF0_inに入力する。パケットは、バス604を通過し、ファブリックロジック606により受け取られる。パケットIDに基づき、ファブリックロジック606は、パケットを第2の処理コア612bのFIFOインターフェースF1_outに送る。
[0053]第2の処理コア612bは、パケットを処理し、第3の処理コア612c(Core2)のIDに対応するようにパケットIDを変更し、パケットを、FIFOインターフェースF1_inに入力する。パケットは、次いで、ファブリックロジック606により受け取られる。パケットIDに基づき、ファブリックロジック606は、パケットを第3の処理コア612cのFIFOインターフェースF2_outに送る。
[0054]第3の処理コア612cは、パケットを処理し、第4の処理コア612d(Core3)のIDに対応するようにパケットIDを変更し、パケットを、FIFOインターフェースF2_inに入力する。パケットは、次いで、ファブリックロジック606により受け取られる。パケットIDに基づき、ファブリックロジック606は、パケットを第4の処理コア612dのFIFOインターフェースF3_outに送る。
[0055]第4の処理コア612dは、パケットを処理し、リオーダモジュール616のIDに対応するようにパケットIDを変更し、パケットを、FIFOインターフェースF3_inに入力する。パケットは、次いで、ファブリックロジック606により受け取られる。パケットIDに基づき、ファブリックロジック606は、パケットを、第1のファブリック出力FIFO620を介してリオーダモジュール616に送る。
[0056]パイプラインモードの場合、ディスパッチャモジュールに関連付けられたファブリック入力FIFOインターフェース618の数、およびリオーダモジュール616に関連付けられたファブリック出力FIFOインターフェース620の数は、パイプラインの数と同等にすることができる。たとえば、ここで述べたパイプラインでは、4つの処理コアが単一のパイプラインを形成し、したがって、単一のファブリック入力FIFOインターフェース618だけがディスパッチャ614に関連付けられ、また単一のファブリック出力FIFOインターフェース620が、リオーダモジュール616に関連付けられている。他の構成では、4つの処理コア612a〜612dは、それぞれが2つのコアを有する、2つの別々のパイプラインを規定することができる。この場合、ディスパッチャ614に関連付けられた2つのファブリック入力FIFOインターフェース618、622、およびリオーダモジュール616に関連付けられた2つのファブリック出力FIFOインターフェース620、624が存在することになる。
[0057]処理モード機構600は、モード選択信号610を介して、処理コアを並列処理モードに構成する。並列処理モードでは、ディスパッチャ614、またはデータパケットを分配するための手段は、第1のパケットを、第1の処理コア612a(Core0)に対応するIDを有する第1のファブリック入力FIFOインターフェース618に入力し、第2のパケットを、第2の処理コア612b(Core1)に対応するIDを有する第2のファブリック入力FIFO622に入力し、第3のパケットを、第3の処理コア612c(Core3)に対応するIDを有する第3のファブリック入力FIFOインターフェース(図示せず)に入力し、また第4のパケットを、第4の処理コア612d(Core4)に対応するIDを有する第4のファブリック入力FIFOインターフェース(図示せず)に入力する。
[0058]ファブリックロジック606は、バス604を介してパケットの各々を受け取る。それぞれのパケットIDに基づき、ファブリックロジック606は、各パケットを、対応するFIFOインターフェースF0_out、F1_out、F2_out、およびF3_outに送る。処理コア612a〜612dの各々は、そのそれぞれのパケットを処理し、リオーダモジュール616のIDに対応するようにそのパケットのパケットIDを変更し、そのパケットを、その対応するFIFOインターフェースF0_in、F1_in、F2_in、およびF3_inに出力する。ファブリックロジック606は、パケットを受け取り、パケットを、対応するファブリックアウトFIFOインターフェース620、624を介してリオーダモジュール616に送る。
[0059]並列処理モードの場合、ディスパッチャに関連付けられたファブリック入力FIFOインターフェース618、622の数、およびリオーダモジュールに関連付けられたファブリック出力FIFOインターフェース620、624の数は、処理コア612a〜612dの数と同等にすることができる。たとえば、ここで述べたマルチコアネットワークプロセッサでは、FIFOインターフェースの各タイプのうち2つだけが図6で示されているが、4つのファブリック入力FIFOインターフェース、および4つのファブリック出力FIFOインターフェースがある。
[0060]図7は、パイプライン処理モードと並列処理モードとの間で構成可能なネットワークプロセッサを用いてデータパケットを処理するための例示的な方法700の流れ図である。702では、ネットワークプロセッサは、選択された処理モードで複数の処理コアを構成する。選択された処理モードは、パイプライン処理モードおよび並列処理モードの一方とすることができる。
[0061]たとえば、ネットワークプロセッサは、FIFOインターフェースと、処理モード機構または処理コアを構成するための手段とを用いて、パイプライン処理モードまたは並列処理モードのいずれかで処理コアを構成することができる。そのような処理モード機構または処理コアを構成するための手段は、図5および図6、またはその等価なものを参照して本明細書で開示された、任意の対応する構造、要素、および/または機能とすることができる。その目的のために、ネットワークプロセッサは、パイプライン処理モードまたは並列処理モードのいずれかで動作するように処理コアを相互接続するように、たとえば、スイッチもしくはマルチプレクサなどの複数のスイッチ要素を構成することができる。ネットワークプロセッサはさらに、または代替的に、パイプライン処理モードまたは並列処理モードのいずれかで動作するように、処理コアを相互接続するようにファブリックロジックおよびバスを構成することができる。
[0062]704で、ネットワークプロセッサは、ディスパッチャ、またはパケットを分配するための手段を用いて、データパケットを、選択された処理モードに従って複数の処理コアに分配する。そのようなディスパッチャ、またはパケットを分配するための手段は、図5、および図6、またはその等価なものを参照して本明細書で開示された任意の対応する構造、要素、および/または機能によることができる。
[0063]706で、ネットワークプロセッサは、処理コアまたは処理するための手段を用いてデータパケットを処理する。パケットは、知られたパケットフロー技法に従って処理される。そのような処理は、コアプロセッサに関連付けられたフローテーブルのフローエントリに対して、データパケットをマッチングさせることと、フローエントリのマッチが見出された場合、パケットに対して命令セットを実行することと、パケットを他の処理コアに送ることとを含むことができる。命令を実行することは、パケットを変更し、マッチフィールドを更新することと、アクションセットを更新することと、メタデータを更新することとを含むことができる。パイプライン処理の場合、これらの命令は、パイプライン内の他の処理コアにパケットを導くことができる。並列処理の場合、これらの命令は、パケットをリオーダモジュールへと導くことができる。
[0064]708で、ネットワークプロセッサは、リオーダモジュール、またはパケットを出力するための手段を用いて、データパケットを出力する。そのようなリオーダモジュール、またはパケットを出力するための手段は、図5および図6、またはその等価なものを参照して本明細書で開示された任意の対応する構造、要素、および/または機能によることができる。パイプライン処理の場合、リオーダモジュールは、パイプラインにおける最後の処理コアから最後のデータパケットを受け取る。並列処理の場合、リオーダモジュールは、並列構成における処理コアの各々からパケットを受け取り、そのパケットを望ましい順序で送る。
[0065]本開示の様々な態様が、当業者に本発明を実施できるように提供されている。本開示を通して提示された例示的な実施形態に対する様々な変更は、当業者であれば容易に明らかになるはずであり、また本明細書で開示された概念は、他の磁気記憶デバイスに拡張され得る。したがって、特許請求の範囲は、本開示の様々な態様に限定されるようには意図されておらず、特許請求の範囲の文言に一致する完全な範囲が与えられるべきである。当業者に知られている、または後に知られるようになる、本開示を通して述べられた例示的な実施形態の様々な構成要素に対するすべての構造的、機能的に均等な形態は、参照により本明細書に明示的に組み込まれており、特許請求の範囲により包含されるように意図されている。さらに、そのような開示が特許請求の範囲に明示的に記載されているかどうかにかかわらず、本明細書で開示されたものはいずれも、公知のものとして供されるようには意図されていない。いずれの特許請求の範囲の構成要件も、その構成要件が、フレーズ「ための手段(means for)」を用いて明示的に記載されていない限り、または方法請求項の場合、構成要件が、フレーズ「ためのステップ(step for)」を用いて記載されていない限り、米国特許法第112条第6段落の規定の下に解釈されるべきではない。
以下に、出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
データパケットを処理するための複数の処理コアと、
パイプライン処理モードと並列処理モードとの間で前記処理コアを構成するように構成可能な処理モード機構とを備えるネットワークプロセッサ。
[C2]
前記処理コアとともに配置される複数の先入れ先出し(FIFO)インターフェースをさらに備え、ここにおいて、前記処理モード機構は、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記FIFOインターフェースと前記処理コアとを相互接続するように構成される、C1に記載のネットワークプロセッサ。
[C3]
前記処理モード機構が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成可能な複数のスイッチ要素を備える、C1に記載のネットワークプロセッサ。
[C4]
前記スイッチ要素が、スイッチとマルチプレクサの一方、または両方を備える、C3に記載のネットワークプロセッサ。
[C5]
前記処理モード機構が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成可能なファブリックロジックおよびバスを備える、C1に記載のネットワークプロセッサ。
[C6]
前記処理コアは、複数の処理コアグループへと構成可能であり、各グループが、グループ内の前記処理コアを、パイプライン処理モードと並列処理モードとの間で構成するように構成可能な関連する処理モード機構を有する、C1に記載のネットワークプロセッサ。
[C7]
データパケットを処理するための手段と、
パイプライン処理モードと並列処理モードとの間で処理するための前記手段を構成するための手段とを備えるネットワークプロセッサ。
[C8]
処理するための前記手段とともに配置される複数の先入れ先出し(FIFO)インターフェースをさらに備え、構成するための前記手段が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記FIFOインターフェースと処理するための前記手段とを相互接続するように構成される、C7に記載のネットワークプロセッサ。
[C9]
処理するための前記手段が、複数の処理コアを備え、また
構成するための前記手段が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成可能な複数のスイッチ要素を備える、C7に記載のネットワークプロセッサ。
[C10]
前記スイッチ要素が、スイッチとマルチプレクサの一方、または両方を備える、C9に記載のネットワークプロセッサ。
[C11]
処理するための前記手段が複数の処理コアを備え、また
構成するための前記手段が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成可能なファブリックロジックおよびバスを備える、C7に記載のネットワークプロセッサ。
[C12]
処理するための前記手段は、複数の処理コアグループへと構成可能な複数の処理コアを備え、各グループが、グループ内の前記処理コアを、パイプライン処理モードと並列処理モードとの間で構成するための関連する手段を有する、C7に記載のネットワークプロセッサ。
[C13]
データパケットを処理する方法であって、
複数の処理コアを選択された処理モードで構成することを備え、前記選択された処理モードが、パイプライン処理モードおよび並列処理モードの一方を備える、方法。
[C14]
構成することが、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを、複数の先入れ先出し(FIFO)インターフェースと相互接続することを備える、C13に記載の方法。
[C15]
構成することが、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように複数のスイッチ要素を構成することを備える、C13に記載の方法。
[C16]
前記スイッチ要素が、スイッチとマルチプレクサの一方、または両方を備える、C15に記載の方法。
[C17]
構成することが、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するようにファブリックロジックおよびバスを構成することを備える、C13に記載の方法。
[C18]
コンピュータプログラム製品であって、
ネットワークプロセッサにより実行可能なコードを備えるコンピュータ可読媒体を備え、前記ネットワークプロセッサが、複数の処理コアと処理モード機構とを備え、前記コードが前記ネットワークプロセッサで実行されたとき、前記ネットワークプロセッサに、
複数の処理コアを選択された処理モードで構成させる、前記選択された処理モードがパイプライン処理モードおよび並列処理モードの一方を備える、コンピュータプログラム製品。
[C19]
前記コードが、前記ネットワークプロセッサで実行されたとき、前記ネットワークプロセッサに、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを複数の先入れ先出し(FIFO)インターフェースと相互接続することにより、複数の処理コアを選択されたモードで構成させる、C18に記載のコンピュータプログラム製品。
[C20]
前記コードが、前記ネットワークプロセッサで実行されたとき、前記ネットワークプロセッサに、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように前記処理コアを相互接続するように、複数のスイッチ要素を構成することにより、複数の処理コアを選択された処理モードで構成させる、C18に記載のコンピュータプログラム製品。
[C21]
前記スイッチ要素は、スイッチとマルチプレクサの一方、または両方を備える、C20に記載のコンピュータプログラム製品。
[C22]
前記コードが、前記ネットワークプロセッサで実行されたとき、前記ネットワークプロセッサに、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように前記処理コアを相互接続するようにファブリックロジックおよびバスを構成することにより、複数の処理コアを選択された処理モードで構成させる、C18に記載のコンピュータプログラム製品。
[C23]
データパケットを処理するための複数の処理コアを備え、ここにおいて、前記処理コアが、パイプライン処理モードと並列処理モードとの間で構成可能である、ネットワークプロセッサ。
[C24]
前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成された複数のスイッチをさらに備える、C23に記載のネットワークプロセッサ。
[C25]
前記処理コアとともに配置された複数の先入れ先出し(FIFO)インターフェースをさらに備え、ここにおいて、前記スイッチ要素が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記FIFOインターフェースと前記処理コアとを相互接続するようにさらに構成される、C24に記載のネットワークプロセッサ。
[C26]
メモリと、前記メモリへのアクセスを前記処理コアに提供するためのメモリバスとをさらに備え、ここにおいて、前記メモリバスが、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように前記処理コアを相互接続する、C23に記載のネットワークプロセッサ。
[C27]
前記処理コアが、前記パイプライン処理モードにおける複数のパイプラインへと構成可能である、C23に記載のネットワークプロセッサ。

Claims (14)

  1. データパケットを処理するための複数の処理コアと、
    パイプライン処理モードと並列処理モードとの間で前記処理コアを構成するように構成可能な処理モード機構と、
    前記複数の処理コアとともに配置される複数のインターフェースと、各インターフェースは、入力および出力を含む、
    データパケットを前記インターフェースのうちの1つまたは複数に分配するように構成されたディスパッチャと、
    前記パイプライン処理モードおよび前記並列処理モードの一方の処理モードに従って、前記処理コアから処理されたデータパケットを受信し、前記データパケットをアセンブルまたは再順序付けするように構成されたリオーダモジュールと
    を備え、
    ここにおいて、前記処理モード機構は、前記複数のインターフェースのうちの第1の前記入力を前記複数の処理コアのうちの第1の出力に結合することと、前記複数のインターフェースのうちの第2の前記入力を前記ディスパッチャおよび前記複数の処理コアから分離することとによって、前記パイプライン処理モードで動作するように、および、前記複数のインターフェースのうちの前記第1の前記入力を前記ディスパッチャに結合することと、前記複数のインターフェースのうちの前記第2の前記入力を前記複数の処理コアのうちの前記第1の出力に結合することと、前記複数のインターフェースのうちの第の出力を前記リオーダモジュールに結合することとによって、前記並列処理モードで動作するように、前記複数のインターフェース、前記ディスパッチャ、前記リオーダモジュール、および前記複数の処理コアを相互接続するように構成される、ネットワークプロセッサ。
  2. 前記処理モード機構が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記複数のインターフェース、前記ディスパッチャ、前記リオーダモジュール、および前記複数の処理コアを相互接続するように構成可能な複数のスイッチ要素を備える、請求項1に記載のネットワークプロセッサ。
  3. 前記スイッチ要素が、スイッチとマルチプレクサの一方、または両方を備える、請求項2に記載のネットワークプロセッサ。
  4. 前記処理コアは、複数の処理コアグループへと構成可能であり、各グループが、グループ内の前記処理コアを、パイプライン処理モードと並列処理モードとの間で構成するように構成可能な関連する処理モード機構を有する、請求項1に記載のネットワークプロセッサ。
  5. 複数の処理コアを備えるデータパケットを処理するための手段と、
    パイプライン処理モードと並列処理モードとの間で処理するための前記手段を構成するための手段と、
    前記処理コアとともに配置される複数のインターフェースと、各インターフェースは、入力および出力を含む、
    データパケットを前記インターフェースのうちの1つまたは複数に分配するように構成されたディスパッチャと、
    前記パイプライン処理モードおよび前記並列処理モードの一方の処理モードに従って、前記処理コアから処理されたデータパケットを受信し、前記データパケットをアセンブルまたは再順序付けするように構成されたリオーダモジュールと
    を備え、
    ここにおいて、処理するための前記手段を構成するための前記手段は、前記複数のインターフェースのうちの第1の前記入力を前記複数の処理コアのうちの第1の出力に結合することと、前記複数のインターフェースのうちの第2の前記入力を前記ディスパッチャおよび前記複数の処理コアから分離することとによって、前記パイプライン処理モードで動作するように、および、前記複数のインターフェースのうちの前記第1の前記入力を前記ディスパッチャに結合することと、前記複数のインターフェースのうちの前記第2の前記入力を前記複数の処理コアのうちの前記第1の出力に結合することと、前記複数のインターフェースのうちの第の出力を前記リオーダモジュールに結合することとによって、前記並列処理モードで動作するように、前記複数のインターフェース、前記ディスパッチャ、前記リオーダモジュール、および前記複数の処理コアを相互接続するように構成される、ネットワークプロセッサ。
  6. 構成するための前記手段が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記複数のインターフェース、前記ディスパッチャ、前記リオーダモジュール、および前記複数の処理コアを相互接続するように構成可能な複数のスイッチ要素を備える、請求項5に記載のネットワークプロセッサ。
  7. 前記スイッチ要素が、スイッチとマルチプレクサの一方、または両方を備える、請求項6に記載のネットワークプロセッサ。
  8. 前記複数の処理コアは、複数の処理コアグループへと構成可能であり、各グループが、グループ内の前記処理コアを、パイプライン処理モードと並列処理モードとの間で構成するための関連する手段を有する、請求項5に記載のネットワークプロセッサ。
  9. ネットワークプロセッサにより実行可能なコンピュータ実行可能コードを記憶した非一時的なコンピュータ可読記憶媒体であって、前記ネットワークプロセッサが、複数の処理コアと処理モード機構と、前記複数の処理コアとともに配置される複数のインターフェースと、ここで、各インターフェースは、入力および出力を含み、データパケットを前記インターフェースのうちの1つまたは複数に分配するように構成されたディスパッチャと、選択された処理モードに従って、前記処理コアから処理されたデータパケットを受信し、前記データパケットをアセンブルまたは再順序付けするように構成されたリオーダモジュールとを備え、前記コードが前記ネットワークプロセッサで実行されたとき、前記処理モード機構に、
    前記複数の処理コアを前記選択された処理モードで構成させ、前記選択された処理モードがパイプライン処理モードおよび並列処理モードの一方を備え、ここにおいて、前記処理モード機構は、前記複数のインターフェースのうちの第1の前記入力を前記複数の処理コアのうちの第1の出力に結合することと、前記複数のインターフェースのうちの第2の前記入力を前記ディスパッチャおよび前記複数の処理コアから分離することとによって、前記パイプライン処理モードで動作するように、および、前記複数のインターフェースのうちの前記第1の前記入力を前記ディスパッチャに結合することと、前記複数のインターフェースのうちの前記第2の前記入力を前記複数の処理コアのうちの前記第1の出力に結合することと、前記複数のインターフェースのうちの第の出力を前記リオーダモジュールに結合することとによって、前記並列処理モードで動作するように、前記複数のインターフェース、前記ディスパッチャ、前記リオーダモジュール、および前記複数の処理コアを相互接続するように構成される、非一時的なコンピュータ可読記憶媒体。
  10. 前記コードが、前記ネットワークプロセッサで実行されたとき、前記処理モード機構に、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように前記複数のインターフェース、前記ディスパッチャ、前記リオーダモジュール、および前記複数の処理コアを相互接続するように、複数のスイッチ要素を構成することにより、複数の処理コアを選択された処理モードで構成させる、請求項9に記載の非一時的なコンピュータ可読記憶媒体。
  11. 前記スイッチ要素は、スイッチとマルチプレクサの一方、または両方を備える、請求項10に記載の非一時的なコンピュータ可読記憶媒体。
  12. 前記複数のインターフェースは、先入れ先出しインターフェースを備える、請求項1に記載のネットワークプロセッサ。
  13. 前記複数のインターフェースは、先入れ先出しインターフェースを備える、請求項5に記載のネットワークプロセッサ。
  14. 前記複数のインターフェースは、先入れ先出しインターフェースを備える、請求項9に記載の非一時的なコンピュータ可読記憶媒体。
JP2016501225A 2013-03-12 2014-03-11 構成可能なマルチコアネットワークプロセッサ Expired - Fee Related JP6193467B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/797,838 2013-03-12
US13/797,838 US9430239B2 (en) 2013-03-12 2013-03-12 Configurable multicore network processor
PCT/US2014/023395 WO2014164752A2 (en) 2013-03-12 2014-03-11 Configurable multicore network processor

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017154241A Division JP2017225166A (ja) 2013-03-12 2017-08-09 構成可能なマルチコアネットワークプロセッサ

Publications (3)

Publication Number Publication Date
JP2016516352A JP2016516352A (ja) 2016-06-02
JP2016516352A5 JP2016516352A5 (ja) 2016-12-22
JP6193467B2 true JP6193467B2 (ja) 2017-09-06

Family

ID=50628906

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016501225A Expired - Fee Related JP6193467B2 (ja) 2013-03-12 2014-03-11 構成可能なマルチコアネットワークプロセッサ
JP2017154241A Ceased JP2017225166A (ja) 2013-03-12 2017-08-09 構成可能なマルチコアネットワークプロセッサ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2017154241A Ceased JP2017225166A (ja) 2013-03-12 2017-08-09 構成可能なマルチコアネットワークプロセッサ

Country Status (6)

Country Link
US (1) US9430239B2 (ja)
EP (1) EP2974185A2 (ja)
JP (2) JP6193467B2 (ja)
KR (1) KR101714659B1 (ja)
CN (1) CN105075204B (ja)
WO (1) WO2014164752A2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150019702A1 (en) * 2013-07-10 2015-01-15 Brocade Communications Systems, Inc. Flexible flow offload
US9348602B1 (en) * 2013-09-03 2016-05-24 Amazon Technologies, Inc. Resource allocation for staged execution pipelining
CN105159779B (zh) * 2015-08-17 2020-03-13 深圳中兴网信科技有限公司 提高多核cpu数据处理性能的方法和系统
JP6943942B2 (ja) 2016-03-23 2021-10-06 クラビスター アクティエボラーグ 順次パケット処理アルゴリズム及び並列パケット処理アルゴリズムを用いることによってトラフィックシェーピングを行う方法
SE1751244A1 (en) 2016-03-23 2017-10-09 Clavister Ab Method for traffic shaping using a serial packet processing algorithm and a parallel packet processing algorithm
US9832072B1 (en) * 2016-05-31 2017-11-28 128 Technology, Inc. Self-configuring computer network router
CN113504984A (zh) * 2016-07-29 2021-10-15 华为技术有限公司 一种任务处理方法以及网络设备
US10719470B2 (en) 2016-09-26 2020-07-21 Wave Computing, Inc. Reconfigurable fabric direct memory access with multiple read or write elements
JP6854473B2 (ja) * 2017-04-17 2021-04-07 セレブラス システムズ インク. 加速化ディープラーニングのデータフロー・トリガー・タスク
WO2018229745A1 (en) * 2017-06-16 2018-12-20 Drivenets Ltd. Parallel information processing on multi-core computing platforms
US11165720B2 (en) * 2017-12-19 2021-11-02 Xilinx, Inc. Network interface device
JP6977621B2 (ja) * 2018-03-02 2021-12-08 日本電信電話株式会社 制御装置、及び制御方法
CN109918043B (zh) * 2019-03-04 2020-12-08 上海熠知电子科技有限公司 一种基于虚拟通道的运算单元共享方法和系统
KR20200112439A (ko) * 2019-03-22 2020-10-05 삼성전자주식회사 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법
US10826801B1 (en) 2019-07-31 2020-11-03 Bank Of America Corporation Multi-level data channel and inspection architectures
US11115310B2 (en) 2019-08-06 2021-09-07 Bank Of America Corporation Multi-level data channel and inspection architectures having data pipes in parallel connections
US11470046B2 (en) 2019-08-26 2022-10-11 Bank Of America Corporation Multi-level data channel and inspection architecture including security-level-based filters for diverting network traffic
CN111884948B (zh) * 2020-07-09 2022-08-12 烽火通信科技股份有限公司 一种流水线调度方法与装置
CN113986813B (zh) * 2021-09-18 2023-08-04 苏州浪潮智能科技有限公司 片上网络结构构建及使用的方法、系统、设备和存储介质
CN115185878A (zh) * 2022-05-24 2022-10-14 中科驭数(北京)科技有限公司 一种多核分组网络处理器架构及任务调度方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5960683A (ja) * 1982-09-30 1984-04-06 Toshiba Corp アレイプロセッサ装置
US4811210A (en) * 1985-11-27 1989-03-07 Texas Instruments Incorporated A plurality of optical crossbar switches and exchange switches for parallel processor computer
JPH02284277A (ja) * 1989-04-26 1990-11-21 Mitsubishi Electric Corp グラフィック表示装置
US6128720A (en) * 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US6272616B1 (en) 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
JP2000295613A (ja) * 1999-04-09 2000-10-20 Nippon Telegr & Teleph Corp <Ntt> 再構成可能なハードウェアを用いた画像符号化方法,画像符号化装置および画像符号化のためのプログラム記録媒体
US20020107903A1 (en) 2000-11-07 2002-08-08 Richter Roger K. Methods and systems for the order serialization of information in a network processing environment
US6883084B1 (en) * 2001-07-25 2005-04-19 University Of New Mexico Reconfigurable data path processor
US7420392B2 (en) * 2001-09-28 2008-09-02 Xilinx, Inc. Programmable gate array and embedded circuitry initialization and processing
US6781407B2 (en) * 2002-01-09 2004-08-24 Xilinx, Inc. FPGA and embedded circuitry initialization and processing
US6789167B2 (en) 2002-03-06 2004-09-07 Hewlett-Packard Development Company, L.P. Method and apparatus for multi-core processor integrated circuit having functional elements configurable as core elements and as system device elements
US20110238948A1 (en) 2002-08-07 2011-09-29 Martin Vorbach Method and device for coupling a data processing unit and a data processing array
WO2004019571A2 (en) * 2002-08-24 2004-03-04 Cisco Technology, Inc. Packet processing engine
US7340585B1 (en) * 2002-08-27 2008-03-04 Xilinx, Inc. Method and system for fast linked processor in a system on a chip (SoC)
US7334086B2 (en) 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
BRPI0508582A (pt) * 2004-03-10 2007-08-14 Qualcomm Inc equipamento e método de interface de alta taxa de dados
JP4546775B2 (ja) * 2004-06-30 2010-09-15 富士通株式会社 時分割多重処理可能なリコンフィギュラブル回路
US20060047849A1 (en) * 2004-06-30 2006-03-02 Mukherjee Shubhendu S Apparatus and method for packet coalescing within interconnection network routers
US7738385B2 (en) 2004-11-30 2010-06-15 Broadcom Corporation Mirroring of data in a network device
KR100729241B1 (ko) * 2005-12-05 2007-06-15 주식회사 텔레칩스 디블록킹 필터
JP4878487B2 (ja) * 2006-03-30 2012-02-15 キヤノン株式会社 情報配信装置、情報配信システム、情報処理方法、およびプログラム
JP5354427B2 (ja) * 2006-06-28 2013-11-27 アクロニクス セミコンダクター コーポレイション 集積回路のための再構成可能論理ファブリックおよび再構成可能論理ファブリックを構成するためのシステムおよび方法
US8099583B2 (en) * 2006-08-23 2012-01-17 Axis Semiconductor, Inc. Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing
US20090128189A1 (en) * 2007-11-19 2009-05-21 Raminda Udaya Madurawe Three dimensional programmable devices
US8094560B2 (en) 2008-05-19 2012-01-10 Cisco Technology, Inc. Multi-stage multi-core processing of network packets
CN103004158B (zh) 2011-01-06 2016-12-28 马维尔以色列(M.I.S.L)有限公司 具有可编程内核的网络设备
US9449257B2 (en) * 2012-12-04 2016-09-20 Institute Of Semiconductors, Chinese Academy Of Sciences Dynamically reconstructable multistage parallel single instruction multiple data array processing system

Also Published As

Publication number Publication date
WO2014164752A2 (en) 2014-10-09
CN105075204A (zh) 2015-11-18
JP2017225166A (ja) 2017-12-21
US20140281385A1 (en) 2014-09-18
JP2016516352A (ja) 2016-06-02
KR20150128828A (ko) 2015-11-18
CN105075204B (zh) 2018-03-16
KR101714659B1 (ko) 2017-03-09
US9430239B2 (en) 2016-08-30
WO2014164752A3 (en) 2014-12-24
EP2974185A2 (en) 2016-01-20

Similar Documents

Publication Publication Date Title
JP6193467B2 (ja) 構成可能なマルチコアネットワークプロセッサ
US10970144B2 (en) Packet processing on a multi-core processor
WO2017166777A1 (zh) 一种任务调度方法及装置
CN105511954B (zh) 一种报文处理方法及装置
US9992113B2 (en) Virtual network interface controller performance using physical network interface controller receive side scaling offloads
US10037222B2 (en) Virtualization of hardware accelerator allowing simultaneous reading and writing
US8806498B2 (en) Method and system for resolving dependency among the enqueued works and/or finished works and scheduling the dependency-resolved works
US8655962B2 (en) Shared address collectives using counter mechanisms
JP2016516352A5 (ja)
US8966484B2 (en) Information processing apparatus, information processing method, and storage medium
US10757039B2 (en) Apparatus and method for routing data in a switch
US11294841B1 (en) Dynamically configurable pipeline
US9164771B2 (en) Method for thread reduction in a multi-thread packet processor
US10108566B2 (en) Apparatus and method for virtualizing network interface
WO2014173166A1 (zh) 一种共享资源的调度方法和系统
CN106575220A (zh) 多个经集群极长指令字处理核心
US9438414B2 (en) Virtualized SHA computational engine
KR102032895B1 (ko) 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서
JP2013206095A (ja) データ処理装置及びデータ処理装置の制御方法
WO2016188032A1 (zh) 利用流表转发数据的方法及系统
WO2015165323A1 (zh) 一种数据处理方法、处理器及数据处理设备
US8683100B1 (en) Method and apparatus for handling data flow in a multi-chip environment using an interchip interface
KR101634672B1 (ko) 네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램
WO2015014017A1 (zh) 终端、负载平衡方法和负载平衡装置
JP5359357B2 (ja) パケット処理装置、該処理装置に用いられるパケット処理順序制御方法及びパケット処理順序制御プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161031

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161031

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20161031

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20161221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170410

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

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

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees