(57)【要約】      （修正有）【課題】パイプライン処理モードと並列処理モードとの間で構成可能なマルチコアネットワークプロセッサを提供する。【解決手段】マルチコアネットワークプロセッサ２００は、データパケットを処理するように構成された複数の処理コアと、パイプライン処理モードと並列処理モードとの間で処理コアを構成可能な処理モード機構とを含む。処理モード機構は、パイプライン処理モードまたは並列処理モードのいずれかで動作させるように、処理コアを相互接続するように構成可能なスイッチ要素、またはファブリックロジックおよびバスを含む。【選択図】図２
2017225166.tif 000002
【特許請求の範囲】
【請求項１】
データパケットを処理するための複数の処理コアと、
パイプライン処理モードと並列処理モードとの間で前記処理コアを構成するように構成可能な処理モード機構と
を備えるネットワークプロセッサ。
【請求項２】
前記処理コアとともに配置される複数の先入れ先出し（ＦＩＦＯ）インターフェースをさらに備え、ここにおいて、前記処理モード機構は、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記ＦＩＦＯインターフェースと前記処理コアとを相互接続するように構成される、請求項１に記載のネットワークプロセッサ。
【請求項３】
前記処理モード機構が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成可能な複数のスイッチ要素を備える、請求項１に記載のネットワークプロセッサ。
【請求項４】
前記スイッチ要素が、スイッチとマルチプレクサの一方、または両方を備える、請求項３に記載のネットワークプロセッサ。
【請求項５】
前記処理モード機構が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成可能なファブリックロジックおよびバスを備える、請求項１に記載のネットワークプロセッサ。
【請求項６】
前記処理コアは、複数の処理コアグループへと構成可能であり、各グループが、グループ内の前記処理コアを、パイプライン処理モードと並列処理モードとの間で構成するように構成可能な関連する処理モード機構を有する、請求項１に記載のネットワークプロセッサ。
【請求項７】
データパケットを処理するための手段と、
パイプライン処理モードと並列処理モードとの間で処理するための前記手段を構成するための手段と
を備えるネットワークプロセッサ。
【請求項８】
処理するための前記手段とともに配置される複数の先入れ先出し（ＦＩＦＯ）インターフェースをさらに備え、構成するための前記手段が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記ＦＩＦＯインターフェースと処理するための前記手段とを相互接続するように構成される、請求項７に記載のネットワークプロセッサ。
【請求項９】
処理するための前記手段が、複数の処理コアを備え、また
構成するための前記手段が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成可能な複数のスイッチ要素を備える、請求項７に記載のネットワークプロセッサ。
【請求項１０】
前記スイッチ要素が、スイッチとマルチプレクサの一方、または両方を備える、請求項９に記載のネットワークプロセッサ。
【請求項１１】
処理するための前記手段が複数の処理コアを備え、また
構成するための前記手段が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成可能なファブリックロジックおよびバスを備える、請求項７に記載のネットワークプロセッサ。
【請求項１２】
処理するための前記手段は、複数の処理コアグループへと構成可能な複数の処理コアを備え、各グループが、グループ内の前記処理コアを、パイプライン処理モードと並列処理モードとの間で構成するための関連する手段を有する、請求項７に記載のネットワークプロセッサ。
【請求項１３】
データパケットを処理する方法であって、
複数の処理コアを選択された処理モードで構成することを備え、前記選択された処理モードが、パイプライン処理モードおよび並列処理モードの一方を備える、方法。
【請求項１４】
構成することが、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを、複数の先入れ先出し（ＦＩＦＯ）インターフェースと相互接続することを備える、請求項１３に記載の方法。
【請求項１５】
構成することが、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように複数のスイッチ要素を構成することを備える、請求項１３に記載の方法。
【請求項１６】
前記スイッチ要素が、スイッチとマルチプレクサの一方、または両方を備える、請求項１５に記載の方法。
【請求項１７】
構成することが、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するようにファブリックロジックおよびバスを構成することを備える、請求項１３に記載の方法。
【請求項１８】
コンピュータプログラム製品であって、
ネットワークプロセッサにより実行可能なコードを備えるコンピュータ可読媒体を備え、前記ネットワークプロセッサが、複数の処理コアと処理モード機構とを備え、前記コードが前記ネットワークプロセッサで実行されたとき、前記ネットワークプロセッサに、
複数の処理コアを選択された処理モードで構成させる、前記選択された処理モードがパイプライン処理モードおよび並列処理モードの一方を備える、コンピュータプログラム製品。
【請求項１９】
前記コードが、前記ネットワークプロセッサで実行されたとき、前記ネットワークプロセッサに、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを複数の先入れ先出し（ＦＩＦＯ）インターフェースと相互接続することにより、複数の処理コアを選択されたモードで構成させる、請求項１８に記載のコンピュータプログラム製品。
【請求項２０】
前記コードが、前記ネットワークプロセッサで実行されたとき、前記ネットワークプロセッサに、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように前記処理コアを相互接続するように、複数のスイッチ要素を構成することにより、複数の処理コアを選択された処理モードで構成させる、請求項１８に記載のコンピュータプログラム製品。
【請求項２１】
前記スイッチ要素は、スイッチとマルチプレクサの一方、または両方を備える、請求項２０に記載のコンピュータプログラム製品。
【請求項２２】
前記コードが、前記ネットワークプロセッサで実行されたとき、前記ネットワークプロセッサに、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように前記処理コアを相互接続するようにファブリックロジックおよびバスを構成することにより、複数の処理コアを選択された処理モードで構成させる、請求項１８に記載のコンピュータプログラム製品。
【請求項２３】
データパケットを処理するための複数の処理コアを備え、ここにおいて、前記処理コアが、パイプライン処理モードと並列処理モードとの間で構成可能である、ネットワークプロセッサ。
【請求項２４】
前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成された複数のスイッチをさらに備える、請求項２３に記載のネットワークプロセッサ。
【請求項２５】
前記処理コアとともに配置された複数の先入れ先出し（ＦＩＦＯ）インターフェースをさらに備え、ここにおいて、前記スイッチ要素が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記ＦＩＦＯインターフェースと前記処理コアとを相互接続するようにさらに構成される、請求項２４に記載のネットワークプロセッサ。
【請求項２６】
メモリと、前記メモリへのアクセスを前記処理コアに提供するためのメモリバスとをさらに備え、ここにおいて、前記メモリバスが、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように前記処理コアを相互接続する、請求項２３に記載のネットワークプロセッサ。
【請求項２７】
前記処理コアが、前記パイプライン処理モードにおける複数のパイプラインへと構成可能である、請求項２３に記載のネットワークプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[0001]本出願は、「ＣＯＮＦＩＧＵＲＡＢＬＥ  ＭＵＬＴＩＣＯＲＥ  ＮＥＴＷＯＲＫ
ＰＲＯＣＥＳＳＯＲ」と題する２０１３年３月１２日に出願された米国非仮特許出願第１３／７９７,８３８号の優先権を主張するものであり、その全体を参照により本明細書に明示的に組み込む。
【０００２】
[0002]本開示は、一般に、電子回路に関し、より詳細には、パイプライン処理モードと並列処理モードとの間で構成可能な複数の処理コアを備えたネットワークプロセッサに関する。
【背景技術】
【０００３】
[0003]パケット交換網は、個人と組織体との間で情報を送信するために広く使用される。パケット交換網では、情報の小ブロック、またはデータパケットが共通のチャネルを介して送信される。より具体的には、情報は、発信源において複数のデータパケットにセグメント化され、アドレス方式を用いてチャネルを介して宛先へと経路指定される。宛先で、情報はデータパケットから再構成される。
【０００４】
[0004]ネットワーク上の多くのデバイスは、データパケットを処理するように設計されたネットワークプロセッサを含む。ネットワークプロセッサは、複数の処理コアを使用できる、ソフトウェアでプログラム可能なデバイスである。処理コアは、並列に専用化することができ、したがって、ネットワークプロセッサにより受信される各データパケットは、データパケットに対してすべての必要な処理を実施する処理コアに割り当てられる。代替的に、処理コアは、パイプライン方式に専用化することができ、パイプラインにおける各処理コアは、データパケットに対して特定のサブタスクを実行するように専用化される。各構成は、ネットワーキング用途において、それ自体の利点と不利な点とを有する。たとえば、レイヤ２およびレイヤ３ネットワークプロトコルは、パイプライン化された処理によく適しているが、ディープパケットインスペクション（ＤＰＩ）のようなより高いレイヤプロトコルは、並列処理によく適している。したがって、たとえば、すべてのレイヤのネットワークプロトコルなど、すべてのネットワークプロトコルを効率的にサポートする単一の解決策が当技術分野で求められている。
【発明の概要】
【０００５】
[0005]ネットワークプロセッサが開示される。ネットワークプロセッサは、データパケットを処理するように構成された複数の処理コアと、パイプライン処理モードと並列処理モードとの間で処理コアを構成するように構成可能な処理モード機構とを含む。ネットワークプロセッサはまた、処理コアとともに配置される複数の先入れ先出し（ＦＩＦＯ）インターフェースを含むことができる。処理モード機構は、パイプライン処理モードまたは並列処理モードのいずれかで動作するようにＦＩＦＯインターフェースおよび処理コアを相互接続するように構成される。処理モード機構は、パイプライン処理モードまたは並列処理モードのいずれかで動作するように、処理コアを相互接続するように構成可能な、たとえば、スイッチ、マルチプレクサなどの複数のスイッチ要素を備えることができる。処理モード機構はまた、パイプライン処理モードまたは並列処理モードのいずれかで動作するように、処理コアを相互接続するように構成可能なファブリックロジックおよびバスを備えることができる。
【０００６】
[0006]他のネットワークプロセッサが開示される。ネットワークプロセッサは、データパケットを処理するための手段と、パイプライン処理モードと並列処理モードとの間で処理するための手段を構成するための手段とを含む。ネットワークプロセッサは、処理するための手段とともに配置される複数のＦＩＦＯインターフェースをさらに含むことができる。構成するための手段は、パイプライン処理モードまたは並列処理モードのいずれかで動作するように、ＦＩＦＯインターフェースと処理するための手段とを相互接続するように構成される。処理するための手段は、複数の処理コアを含むことができ、また構成するための手段は、パイプライン処理モードまたは並列処理モードのいずれかで動作するように、処理コアを相互接続するように構成可能な複数のスイッチ要素、またはファブリックロジックおよびバスを含むことができる。
【０００７】
[0007]データパケットを処理する方法が開示される。方法は、選択された処理モードで複数の処理コアを構成することを含み、選択された処理モードは、パイプライン処理モードおよび並列処理モードの一方である。方法はまた、選択された処理モードに従って複数の処理コアにデータパケットを分配することと、構成された処理モードに従って、複数の処理コアの１つまたは複数のものから１つまたは複数のデータパケットを受け取ることとを含む。複数の処理コアを構成することは、パイプライン処理モードまたは並列処理モードのいずれかで動作するように、処理コアを相互接続するように複数のスイッチ要素を構成すること、またはパイプライン処理モードまたは並列処理モードのいずれかで動作するように、処理コアを相互接続するようにファブリックロジックおよびバスを構成することを含むことができる。
【０００８】
[0008]コンピュータプログラム製品が開示される。コンピュータプログラム製品は、ネットワークプロセッサにより実行可能なコードを備えるコンピュータ可読媒体を含む。ネットワークプロセッサは、複数の処理コアと処理モード機構とを含む。コードは、ネットワークプロセッサで実行されたとき、ネットワークプロセッサに、複数の処理コアを選択された処理モードに構成させる。選択された処理モードは、パイプライン処理モードおよび並列処理モードの一方とすることができる。コードはまた、選択された処理モードに従って、ネットワークプロセッサに、データパケットを複数の処理コアに分配させ、また構成された処理モードに従って、複数の処理コアのうちの１つまたは複数のものから１つまたは複数のデータパケットを受け取らせる。
【０００９】
[0009]他のネットワークプロセッサが開示される。ネットワークプロセッサは、データパケットを処理するように構成された複数の処理コアを含み、ここにおいて、処理コアは、パイプライン処理モードと並列処理モードとの間で構成可能である。ネットワークプロセッサは、パイプライン処理モードまたは並列処理モードのいずれかで動作するように、処理コアを相互接続するように構成された複数のスイッチを備えることができる。ネットワークプロセッサは、メモリと、処理コアにメモリへのアクセスを提供するためのメモリバスとを備えることができ、ここにおいて、メモリバスは、パイプライン処理モードまたは並列処理モードのいずれかで動作するように処理コアを相互接続する。
【００１０】
[0010]当業者であれば、装置および方法の他の態様は、装置および方法の様々な態様が例として示され、述べられている次の詳細な説明から容易に明らかになることを理解されたい。理解されるように、これらの態様は、他の、異なる形態で実施することができ、またそのいくつかの細部は、様々な他の点において変更することができる。したがって、図面および詳細な説明は、本質的に例示的なものであって、限定的なものと見なされるべきではない。
【００１１】
[0011]次に装置および方法の様々な態様が、添付図面を参照し、限定することなく例として、詳細な説明において示される。
【図面の簡単な説明】
【００１２】
【図１】[0012]電気通信システムの例を示す概念的なブロック図。
【図２】[0013]構成可能なマルチコアネットワークプロセッサのブロック図。
【図３】[0014]パイプライン処理モードにおける構成可能なマルチコアネットワークプロセッサのブロック図。
【図４】[0015]並列処理モードにおける構成可能なマルチコアネットワークプロセッサのブロック図。
【図５】[0016]パイプライン処理モードと並列処理モードとの間でマルチコアネットワークプロセッサを構成するための処理モード機構のブロック図。
【図６】[0017]パイプライン処理モードと並列処理モードとの間でマルチコアネットワークプロセッサを構成するための他の処理モード機構のブロック図。
【図７】[0018]パイプライン処理モードと並列処理モードとの間で構成可能なマルチコアネットワークプロセッサを用いてデータパケットを処理する方法の流れ図。
【発明を実施するための形態】
【００１３】
[0019]本開示の様々な態様が、添付図面を参照して、以下でより完全に説明される。しかし、本開示は、当業者によって多くの異なる形態で実施することができ、本明細書で提示されたいずれかの特定の構造または機能に限定されるものと解釈されるべきではない。
そうではなくて、これらの態様は、本開示が十分なものであり、完全であるように、また本開示の範囲を当業者に十分伝えるように提供される。本明細書の教示に基づき、本開示の任意の他の態様とは独立して実施されようと、または組み合わせて実施されようと、本開示の範囲は、本開示のいずれの態様も包含するように意図されていることを当業者であれば理解されたい。たとえば、装置は、本明細書に記載の任意の数の態様を用いて実施され、または方法が実行され得る。さらに本開示の範囲は、本開示の他の態様に加えて、またはそれに代えて、他の構造および／または機能を用いて実施されるような装置または方法を包含することが意図されている。本明細書で開示される開示のいずれの態様も、特許請求の範囲の１つまたは複数の構成要件により実施され得ることを理解されたい。
【００１４】
[0020]特定の態様が本明細書で述べられるが、これらの諸態様の多くの変形および置換は、本開示の範囲に含まれる。好ましい態様のいくつかの利益および利点が述べられるが、本開示の範囲は、特定の利益、用途、または目的に限定されることを意図していない。
そうではなくて、本開示の態様は、様々な回路、技術、システム、ネットワーク、および方法に広く適用可能であるように意図されており、そのいくつかが、例として図面に、また以下の記述で示されている。詳細な説明および図面は、限定的なものではなく、本開示を単に例示するためのものであり、本開示の範囲は、添付の特許請求の範囲、およびその等価な形態により定義される。
【００１５】
[0021]様々な概念が、添付図面を参照して、以下でより十分に述べられる。しかし、これらの概念は、当業者により多くの異なる形態で実施することができ、本明細書で提示される任意の特定の構造または機能に限定されるものと解釈されるべきではない。そうではなくて、これらの概念は、本開示が十分なものであり、完全であるように、またこれらの概念の範囲を当業者に十分伝えるように提供される。詳細な説明は、特定の細部を含むことができる。しかし、これらの概念は、これらの特定の細部を含まずに実施され得ることは当業者には明らかであろう。いくつかの例では、よく知られた構造および構成要素は、本開示を通して提示された様々な概念を曖昧にしないために、ブロック図の形で示されている。
【００１６】
[0022]本開示を通して提示される様々な概念は、ネットワーク要素で実施するのによく適している。ネットワーク要素（たとえば、ルータ、スイッチ、ブリッジ、または同様のネットワーキングデバイス。）は、ネットワーク上の他の機器を通信可能に相互接続する任意のネットワーキング機器（たとえば、他のネットワーク要素、終端局、または同様のネットワーキングデバイス）を含む。
【００１７】
[0023]これらの概念は、ハードウェアで、またはハードウェアプラットフォーム上で実行されるソフトウェアで実施され得る。ハードウェアまたはハードウェアプラットフォームは、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向けＩＣ（ＡＳＩＣ）、書換え可能ゲートアレイ（ＦＰＧＡ）もしくは他のプログラム可能な論理構成要素、ディスクリートゲートもしくはトランジスタ論理、ディスクリートハードウェア構成要素、またはそれらの任意の組合せ、あるいは本明細書で述べる機能を実施するように設計された任意の他の適切な構成要素とすることができる。汎用プロセッサはマイクロプロセッサとすることができるが、代替的には、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態マシンとすることができる。プロセッサはまた、たとえば、ＤＳＰとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、ＤＳＰと併せた１つまたは複数のマイクロプロセッサ、または任意の他のそのような構成など、コンピューティング構成要素の組合せとして実施され得る。
【００１８】
[0024]ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはその他として呼ばれようと、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能ファイル、実行のスレッド、プロシージャ、関数などを意味するものと広く解釈されるべきである。ソフトウェアは、コンピュータ可読媒体上に常駐することができる。コンピュータ可読媒体は、例として、磁気記憶デバイス（たとえば、ハードディスク、フロッピー（登録商標）ディスク、磁気ストリップ）、光ディスク（たとえば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ））、スマートカード、フラッシュメモリデバイス（たとえば、カード、スティック、キードライブ）、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能なＰＲＯＭ（ＥＥＰＲＯＭ（登録商標））、汎用レジスタ、またはソフトウェアを記憶するための任意の他の適切な非一時的な媒体を含むことができる。
【００１９】
[0025]本開示は、パイプライン処理モードと並列処理モードとの間で構成可能な複数の処理コアを有するネットワークプロセッサを対象とする。パイプライン処理モードでは、データパケットに対するソフトウェアオペレーションは、複数のソフトウェアオペレーションまたはサブタスクへと分割され、各サブタスクは、別個の処理コア上で実行される。
任意の１つの処理コアにより取得されるデータパケットの中間処理は、パイプライン処理の次段に渡すことができる。並列処理モードでは、各データパケットは、処理コアに割り当てられる。各処理コアは、同じソフトウェアを実行して、完了するまでデータパケットを処理する。
【００２０】
[0026]図１は、パケットベースのネットワーク１００の例を示す概念的なブロック図である。ネットワーク１００は、１つまたは複数のネットワークプロセッサ１０４を用いて、たとえば、コンピュータなどの複数のネットワークデバイス１０２を相互接続する。ネットワーク１００は、インターネットなどの広域ネットワーク（ＷＡＮ）、イーサネット（登録商標）網などのローカルエリアネットワーク（ＬＡＮ）、または任意の他の適切なネットワークとすることができる。パケットベースのネットワーク１００は、世界的、全国的、地域的、地方自治体的、もしくは施設内、または任意の他の適切な領域を含む任意の適切な領域を包含するように構成することができる。
【００２１】
[0027]ネットワークプロセッサ１０４は、スイッチ、ルータ、ブリッジ、またはネットワーク１００上の他の機器を相互接続する任意の適切なデバイスとすることができる。ネットワークプロセッサ１０４は、データパケットを、ネットワークを介して導くために使用される１つまたは複数のルックアップテーブルを含むプログラム可能なデバイスとして実施することができる。各ルックアップテーブルは、１つまたは複数のフローテーブルエントリを含む。各フローエントリは、データパケットを処理するために使用される。
【００２２】
[0028]図２は、構成可能なマルチコアネットワークプロセッサ２００の概略的なブロック図である。ネットワークプロセッサ２００は、第１のコアグループ２０２と、第２のコアグループ２０４とを有する。各コアグループ２０２、２０４は、データパケットを処理するように構成されたいくつかの処理コアを含む。処理コアは、１つまたは複数のファームウェアと、コアに対してローカルなコードを記憶するための専用メモリとを含むことができる。各コアグループ２０２、２０４はまた、処理コアに関連付けられたいくつかのＦＩＦＯインターフェース（図示せず）を含むこともできる。
【００２３】
[0029]処理モード機構２１８、２２０は、各コアグループ２０２、２０４と関連付けられる。処理モード機構２１８、２２０は、スイッチおよびマルチプレクサ、またはファブリックロジックおよびバスの１つまたは複数のものを含むことができる。処理モード機構２１８、２２０は、パイプライン処理モードと並列処理モードとの間で処理コアを構成するように構成可能である。パイプライン構成もしくはモードでは、ソフトウェアタスクは、複数のサブタスクへと分割され、各タスクは、別個の処理コア上で動作する。任意のコアにより取得された中間的な処理情報は、パイプライン処理における次段へと渡され得る。並列モードでは、いずれのタスクも、オペレーティングシステム（ＯＳ）スケジューラの制御により任意のコアで動作され得る。ＯＳスケジューラは、複数の処理コア間の負荷バランスを提供する。代替的に、並列モードでは、タスクは、ＣＰＵ親和性機構を用いて、特定のコアに固定され得る。別々の処理モード機構２１８、２２０が、各コアグループ２０２、２０４に対して示されているが、両方のコアグループに対する処理コアを構成するために、単一の機構が使用され得る。
【００２４】
[0030]メモリアービタ２０６、２０８が、各コアグループと関連付けられている。アービタ２０６、２０８は、メモリ２１０、２１２へのインターフェースとして機能し、またメモリへのアクセスを管理する。たとえば、アービタ２０６、２０８は、処理コアによるメモリへのアクセスを管理するように構成され得る。アービタ２０６、２０８は、メモリに記憶されたコマンド、ならびに関連するプログラム命令およびデータが処理コアに提供されるシーケンスを決定することができる。アービタ２０６、２０８は、バスを介して、メモリ２１０、２１２へのアクセスを許可することができる。
【００２５】
[0031]メモリ２１０、２１２は、マルチコアネットワークプロセッサ２００に対して外部のものとすることができ、また１つまたは複数の共用されたスタティックＲＡＭ（ＳＲＡＭ）バンク、およびターナリ内容検索メモリ（ＴＣＡＭ：ternary content addressable memory）バンクを含むことができる。メモリ２１０、２１２は、プログラムコード、ルックアップテーブル、パケットデータ、および待ち行列情報のうちの１つまたは複数のものを記憶することができる。
【００２６】
[0032]マルチコアネットワークプロセッサ２００は、ディスパッチャ２１４とリアセンブル２１６とをさらに含む。ディスパッチャ２１４は、マルチコアネットワークプロセッサ２００のオペレーションモードに従って、スイッチコアから受け取ったデータパケットを、処理コアに分配するように構成される。リアセンブラ２１６は、データパケットを処理コアから受け取り、マルチコアネットワークプロセッサ２００のオペレーションモードに従って、データパケットをアセンブラに、または再順序付けするように構成される。リアセンブラ２１６は、リオーダモジュールと呼ばれ得る。
【００２７】
[0033]パイプライン処理モード：
[0034]図３は、パイプライン処理モードで動作するように構成された例示的なマルチコアネットワークプロセッサ３００のブロック図である。例示的なマルチコアネットワークプロセッサ３００は、４つの処理コアを有する第１のパイプライン３０２と、４つの処理コアを有する第２のパイプライン３０４とを含む（より多くの、またはより少ない処理コアがパイプライン３０２、３０４に含まれ得る）。各処理コアは、パケットを処理コアの中に移動させるための入力ＦＩＦＯインターフェース３０６と、パケットを処理コアの外に移動させるための出力ＦＩＦＯインターフェース３０８とを有する。
【００２８】
[0035]第１の処理コア３１０を動作させるファームウェアは、その処理コアに関連付けられた入力ＦＩＦＯインターフェース３０６から読み取ることにより、到来するパケットを処理する。処理コア３１０が到来するパケットの処理を完了したとき、コアのファームウェアは、コアに関連付けられた出力ＦＩＦＯインターフェース３０８に対して中間パケットを出力する。「中間パケット」は、処理コアに入力されたパケットの、その処理コアによる処理から得られた、コアプロセッサにより出力されたパケットを指す。中間パケットは、次の処理コアの入力ＦＩＦＯインターフェース３０６に入力されて、その処理コアのファームウェアに従って処理される。中間パケットの処理および転送は、最後のパケットが、パイプラインにおける最後の処理コアにより出力されるまで継続する。
【００２９】
[0036]ディスパッチャ３１４は、２つのパイプライン３０２、３０４にパケットを分配することができる。ディスパッチャ３１４は、異なる分配アルゴリズムを適用することができる。ラウンドロビン分配では、パケットディスパッチャ３１４は、パケットを二者択一的に分配する。第１のパイプライン３０２における第１の入力ＦＩＦＯインターフェース３０６が、パケットを保持するのに十分ではない場合、ディスパッチャ３１４は、そのパケットを第２のパイプライン３０４の第１の入力ＦＩＦＯインターフェース３０６に分配することができる。両方のパイプライン３０２、３０４の第１の入力ＦＩＦＯインターフェース３０６が、パケットを保持するのに十分ではない場合、ディスパッチャ３１４は、パケットのさらなる分配を停止することができる。ハッシュベースの分配では、パケットディスパッチャ３１４は、パケットヘッダフィールドまたは他のフィールドに基づく一定のアルゴリズムを適用し、２つのパイプライン３０２、３０４のいずれか一方にインデックスを得るためにモジュロ演算を適用する。
【００３０】
[0037]ディスパッチャ３１４はまた、シーケンス番号をパケットに割り当てることができ、またリオーダモジュール３１６は、パケットがパイプラインに分配されたのと同じ順序でパケットを回収することができる。再順序付けタスクを容易にするために、シーケンス番号は、ＦＩＦＯに入る最初の１６ビットフィールドとすることができる。
【００３１】
[0038]並列処理モード：
[0039]図４は、並列処理モードで動作するように構成された例示的なマルチコアネットワークプロセッサ４００のブロック図である。例示的なマルチコアネットワークプロセッサ４００は、４つの処理コアを有する第１のプロセッサグループ４０２と、４つの処理コアを有する第２のプロセッサグループ４０４とを含む（より多くの、またはより少ない処理コアが、グループ４０２、４０４に含まれ得る）。各処理コアは、入力ＦＩＦＯインターフェース４０６と、出力ＦＩＦＯインターフェース４０８とを有する。処理コアを動作させるファームウェアは、その処理コアに関連付けられた入力ＦＩＦＯインターフェース４０６から読み取ることにより、到来するパケットを処理する。処理コアが、到来するパケットの処理を完了したとき、コアのファームウェアが、処理されたパケットを、コアに関連付けられた出力ＦＩＦＯインターフェース４０８に出力する。並列処理モードでは、各処理コアは、同じソフトウェアを実行して、完了するまでパケットを処理することができる。
【００３２】
[0040]ディスパッチャ４１４は、２つのプロセッサグループ４０２、４０４にパケットを分配することができる。ディスパッチャ４１４は、異なる分配アルゴリズムを適用することができる。ラウンドロビン分配では、パケットディスパッチャ４１４は、パケットを二者択一的に分配する。第１のプロセッサグループ４０２における入力ＦＩＦＯインターフェース４０６のうちの１つが、パケットを保持するのに十分ではない場合、ディスパッチャ４１４は、そのパケットを第２のプロセッサグループ４０４の入力ＦＩＦＯインターフェース４０６の１つに分配することができる。両方のグループ４０２、４０４の入力ＦＩＦＯインターフェース４０６が、パケットを保持するのに十分ではない場合、ディスパッチャ４１４は、パケットのさらなる分配を停止することができる。ハッシュベースの分配では、パケットディスパッチャ４１４は、パケットヘッダフィールドまたは他のフィールドに基づく一定のアルゴリズムを適用し、２つのグループ４０２、４０４のいずれか一方にインデックスを得るためにモジュロ演算を適用する。
【００３３】
[0041]ディスパッチャ４１４はまた、シーケンス番号をパケットに割り当てることができ、またリオーダモジュール４１６は、パケットがパイプラインに分配されたのと同じ順序でパケットを回収することができる。再順序付けタスクを容易にするために、シーケンス番号は、ＦＩＦＯに入る最初の１６ビットフィールドとすることができる。
【００３４】
[0042]処理モード選択：
[0043]図５は、いくつかの処理コアに対する処理モードの選択を提供する処理モード機構５００のブロック図である。処理モード機構５００は、いくつかの処理コアを、パイプライン処理モードまたは並列処理モードのいずれかで構成するための手段を提供する。処理モード機構５００、または複数の処理コアを構成するための手段は、たとえば、スイッチＳ０〜Ｓ５および／またはマルチプレクサ５０２ａ〜５０２ｃなどのいくつかのスイッチ要素を含むことができる。スイッチＳ０〜Ｓ５およびマルチプレクサ５０２の各々は、モード制御信号５０４により制御され得る。
【００３５】
[0044]処理モード機構５００は、モード制御信号５０４が、スイッチＳ０〜Ｓ５をオープン状態に設定し、またマルチプレクサ５０２ａ〜５０２ｃを、上側のＦＩＦＯインターフェースＦ１、Ｆ３、Ｆ５、Ｆ７にコア出力パケットを導くように設定するとき、処理コアをパイプライン処理モードに構成する。このモードでは、ディスパッチャ５１４、またはデータパケットを分配するための手段は、パケットをＦＩＦＯインターフェースＦ０に分配する。
【００３６】
[0045]処理コア、またはデータパケットを処理するための手段は、処理モード機構５００のスイッチ要素と併せて、分配されたパケットを次のように処理することができる：分配されたパケットは、第１の処理コア５０６ａにより処理される。第１のマルチプレクサ５０２ａは、第１の処理コア５０６ａにより出力された、得られた中間パケットを受け取り、それをＦＩＦＯインターフェースＦ１へと導く。中間パケットは、第２の処理コア５０６ｂにより処理される。第２のマルチプレクサ５０２ｂは、第２の処理コア５０６ｂにより出力された、得られた中間パケットを受け取り、それをＦＩＦＯインターフェースＦ３へと導く。この処理シーケンスは、第４のプロセッサコア５０６ｄが、最後のパケットを最後のＦＩＦＯインターフェースＦ７に出力するまで続けられる。リオーダモジュール５１６は、最後のパケットを最後のＦＩＦＯインターフェースＦ７から受け取る。パイプラインモードでは、下側のＦＩＦＯインターフェースＦ２、Ｆ４、Ｆ６は使用されない。
【００３７】
[0046]処理モード機構５００は、モード制御信号５０４が、スイッチＳ０〜Ｓ５をクローズ状態に設定し、マルチプレクサ５０２ａ〜５０２ｃを、ディスパッチャ５１４入力パケットを上側ＦＩＦＯインターフェースＦ１、Ｆ３、Ｆ５に導くように、また処理コア出力パケットを下側ＦＩＦＯインターフェースＦ２、Ｆ４、Ｆ６、Ｆ７に導くように設定したとき、処理コアを並列処理モードに構成する。並列処理モードでは、上側と下側ＦＩＦＯインターフェースＦ０〜Ｆ７の両方が使用される。
【００３８】
[0047]並列処理モードでは、ディスパッチャ５１４、またはデータパケットを分配するための手段は、処理モード機構のスイッチ要素と併せて、パケットを次のように処理コアに分配する：第１の処理コア５０６ａに対するパケットは、ＦＩＦＯインターフェースＦ０に入力され、第２の処理コア５０６ｂに対するパケットは、第１のマルチプレクサ５０２ａを通してＦＩＦＯインターフェースＦ１に入力され、第３の処理コア５０６ｃに対するパケットは、第２のマルチプレクサ５０２ｂを通してＦＩＦＯインターフェースＦ３に入力され、第４の処理コア５０６ｄに対するパケットは、第３のマルチプレクサ５０２ｃを通してＦＩＦＯインターフェースＦ５に入力される。
【００３９】
[0048]処理コアの各々は、そのそれぞれのパケットを処理し、またマルチプレクサ５０２ａ〜５０２ｃを含む処理モード機構５００は、次のように処理コア出力トラフィックを導く：第１の処理コア５０６ａの出力はＦＩＦＯインターフェースＦ２に入力され、第２の処理コア５０６ｂの出力はＦＩＦＯインターフェースＦ４に入力され、また第３の処理コア５０６ｃの出力はＦＩＦＯインターフェースＦ６に入力される。リオーダモジュール５１６は、ＦＩＦＯインターフェースＦ２、Ｆ４、Ｆ６、およびＦ７からパケットを収集する。
【００４０】
[0049]図６は、いくつかの処理コアに対して処理モードの選択を提供する他の例示的な処理モード機構６００のブロック図である。処理モード機構６００は、パイプライン処理モードまたは並列処理モードのいずれかで、いくつかの処理コアを構成するための手段を提供する。処理モード機構６００、または複数の処理コアを構成するための手段は、メモリ６０２、バス６０４、およびファブリックロジック６０６を含むことができる。
【００４１】
[0050]いくつかの実施形態では、処理モード機構６００は、次のように働くことができる。各処理コア６１２ａ〜６１２ｄ、およびリオーダモジュール６１６は、ＩＤと関連付けられる。ディスパッチャ６１４により、処理モード機構６００の中に送出された各パケットは、コアの１つ、またはリオーダモジュールに対応するパケットヘッダフィールドにＩＤを有する。このＩＤは、パケットをどこに送るべきかを、処理モード機構６００のファブリックロジック６０６に指示する。モード選択信号６１０は、処理コア６１２ａ〜６１２ｄ、ディスパッチャ６１４、およびリオーダモジュール６１６の間でＦＩＦＯインターフェースの割り振りを制御する。
【００４２】
[0051]処理モード機構６００は、モード選択信号６１０を介して、処理コアをパイプライン処理モードに構成する。パイプライン処理モードでは、ディスパッチャ６１４は、第１の処理コア６１２ａに対応するＩＤを有するパケットを、第１のファブリック入力ＦＩＦＯ６１８に入力する。パケットは、バス６０４を通過し、ファブリックロジック６０６により受け取られる。パケットＩＤに基づき、ファブリックロジック６０６は、パケットを、バス６０４を介して第１の処理コア６１２ａ（Ｃｏｒｅ０）のＦＩＦＯインターフェースＦ０＿ｏｕｔに送る。
【００４３】
[0052]第１の処理コア６１２ａは、パケットを処理し、第２の処理コア６１２ｂ（Ｃｏｒｅ１）のＩＤに対応するようにパケットＩＤを変更し、パケットを、ＦＩＦＯインターフェースＦ０＿ｉｎに入力する。パケットは、バス６０４を通過し、ファブリックロジック６０６により受け取られる。パケットＩＤに基づき、ファブリックロジック６０６は、パケットを第２の処理コア６１２ｂのＦＩＦＯインターフェースＦ１＿ｏｕｔに送る。
【００４４】
[0053]第２の処理コア６１２ｂは、パケットを処理し、第３の処理コア６１２ｃ（Ｃｏｒｅ２）のＩＤに対応するようにパケットＩＤを変更し、パケットを、ＦＩＦＯインターフェースＦ１＿ｉｎに入力する。パケットは、次いで、ファブリックロジック６０６により受け取られる。パケットＩＤに基づき、ファブリックロジック６０６は、パケットを第３の処理コア６１２ｃのＦＩＦＯインターフェースＦ２＿ｏｕｔに送る。
【００４５】
[0054]第３の処理コア６１２ｃは、パケットを処理し、第４の処理コア６１２ｄ（Ｃｏｒｅ３）のＩＤに対応するようにパケットＩＤを変更し、パケットを、ＦＩＦＯインターフェースＦ２＿ｉｎに入力する。パケットは、次いで、ファブリックロジック６０６により受け取られる。パケットＩＤに基づき、ファブリックロジック６０６は、パケットを第４の処理コア６１２ｄのＦＩＦＯインターフェースＦ３＿ｏｕｔに送る。
【００４６】
[0055]第４の処理コア６１２ｄは、パケットを処理し、リオーダモジュール６１６のＩＤに対応するようにパケットＩＤを変更し、パケットを、ＦＩＦＯインターフェースＦ３＿ｉｎに入力する。パケットは、次いで、ファブリックロジック６０６により受け取られる。パケットＩＤに基づき、ファブリックロジック６０６は、パケットを、第１のファブリック出力ＦＩＦＯ６２０を介してリオーダモジュール６１６に送る。
【００４７】
[0056]パイプラインモードの場合、ディスパッチャモジュールに関連付けられたファブリック入力ＦＩＦＯインターフェース６１８の数、およびリオーダモジュール６１６に関連付けられたファブリック出力ＦＩＦＯインターフェース６２０の数は、パイプラインの数と同等にすることができる。たとえば、ここで述べたパイプラインでは、４つの処理コアが単一のパイプラインを形成し、したがって、単一のファブリック入力ＦＩＦＯインターフェース６１８だけがディスパッチャ６１４に関連付けられ、また単一のファブリック出力ＦＩＦＯインターフェース６２０が、リオーダモジュール６１６に関連付けられている。他の構成では、４つの処理コア６１２ａ〜６１２ｄは、それぞれが２つのコアを有する、２つの別々のパイプラインを規定することができる。この場合、ディスパッチャ６１４に関連付けられた２つのファブリック入力ＦＩＦＯインターフェース６１８、６２２、およびリオーダモジュール６１６に関連付けられた２つのファブリック出力ＦＩＦＯインターフェース６２０、６２４が存在することになる。
【００４８】
[0057]処理モード機構６００は、モード選択信号６１０を介して、処理コアを並列処理モードに構成する。並列処理モードでは、ディスパッチャ６１４、またはデータパケットを分配するための手段は、第１のパケットを、第１の処理コア６１２ａ（Ｃｏｒｅ０）に対応するＩＤを有する第１のファブリック入力ＦＩＦＯインターフェース６１８に入力し、第２のパケットを、第２の処理コア６１２ｂ（Ｃｏｒｅ１）に対応するＩＤを有する第２のファブリック入力ＦＩＦＯ６２２に入力し、第３のパケットを、第３の処理コア６１２ｃ（Ｃｏｒｅ３）に対応するＩＤを有する第３のファブリック入力ＦＩＦＯインターフェース（図示せず）に入力し、また第４のパケットを、第４の処理コア６１２ｄ（Ｃｏｒｅ４）に対応するＩＤを有する第４のファブリック入力ＦＩＦＯインターフェース（図示せず）に入力する。
【００４９】
[0058]ファブリックロジック６０６は、バス６０４を介してパケットの各々を受け取る。それぞれのパケットＩＤに基づき、ファブリックロジック６０６は、各パケットを、対応するＦＩＦＯインターフェースＦ０＿ｏｕｔ、Ｆ１＿ｏｕｔ、Ｆ２＿ｏｕｔ、およびＦ３＿ｏｕｔに送る。処理コア６１２ａ〜６１２ｄの各々は、そのそれぞれのパケットを処理し、リオーダモジュール６１６のＩＤに対応するようにそのパケットのパケットＩＤを変更し、そのパケットを、その対応するＦＩＦＯインターフェースＦ０＿ｉｎ、Ｆ１＿ｉｎ、Ｆ２＿ｉｎ、およびＦ３＿ｉｎに出力する。ファブリックロジック６０６は、パケットを受け取り、パケットを、対応するファブリックアウトＦＩＦＯインターフェース６２０、６２４を介してリオーダモジュール６１６に送る。
【００５０】
[0059]並列処理モードの場合、ディスパッチャに関連付けられたファブリック入力ＦＩＦＯインターフェース６１８、６２２の数、およびリオーダモジュールに関連付けられたファブリック出力ＦＩＦＯインターフェース６２０、６２４の数は、処理コア６１２ａ〜６１２ｄの数と同等にすることができる。たとえば、ここで述べたマルチコアネットワークプロセッサでは、ＦＩＦＯインターフェースの各タイプのうち２つだけが図６で示されているが、４つのファブリック入力ＦＩＦＯインターフェース、および４つのファブリック出力ＦＩＦＯインターフェースがある。
【００５１】
[0060]図７は、パイプライン処理モードと並列処理モードとの間で構成可能なネットワークプロセッサを用いてデータパケットを処理するための例示的な方法７００の流れ図である。７０２では、ネットワークプロセッサは、選択された処理モードで複数の処理コアを構成する。選択された処理モードは、パイプライン処理モードおよび並列処理モードの一方とすることができる。
【００５２】
[0061]たとえば、ネットワークプロセッサは、ＦＩＦＯインターフェースと、処理モード機構または処理コアを構成するための手段とを用いて、パイプライン処理モードまたは並列処理モードのいずれかで処理コアを構成することができる。そのような処理モード機構または処理コアを構成するための手段は、図５および図６、またはその等価なものを参照して本明細書で開示された、任意の対応する構造、要素、および／または機能とすることができる。その目的のために、ネットワークプロセッサは、パイプライン処理モードまたは並列処理モードのいずれかで動作するように処理コアを相互接続するように、たとえば、スイッチもしくはマルチプレクサなどの複数のスイッチ要素を構成することができる。ネットワークプロセッサはさらに、または代替的に、パイプライン処理モードまたは並列処理モードのいずれかで動作するように、処理コアを相互接続するようにファブリックロジックおよびバスを構成することができる。
【００５３】
[0062]７０４で、ネットワークプロセッサは、ディスパッチャ、またはパケットを分配するための手段を用いて、データパケットを、選択された処理モードに従って複数の処理コアに分配する。そのようなディスパッチャ、またはパケットを分配するための手段は、図５、および図６、またはその等価なものを参照して本明細書で開示された任意の対応する構造、要素、および／または機能によることができる。
【００５４】
[0063]７０６で、ネットワークプロセッサは、処理コアまたは処理するための手段を用いてデータパケットを処理する。パケットは、知られたパケットフロー技法に従って処理される。そのような処理は、コアプロセッサに関連付けられたフローテーブルのフローエントリに対して、データパケットをマッチングさせることと、フローエントリのマッチが見出された場合、パケットに対して命令セットを実行することと、パケットを他の処理コアに送ることとを含むことができる。命令を実行することは、パケットを変更し、マッチフィールドを更新することと、アクションセットを更新することと、メタデータを更新することとを含むことができる。パイプライン処理の場合、これらの命令は、パイプライン内の他の処理コアにパケットを導くことができる。並列処理の場合、これらの命令は、パケットをリオーダモジュールへと導くことができる。
【００５５】
[0064]７０８で、ネットワークプロセッサは、リオーダモジュール、またはパケットを出力するための手段を用いて、データパケットを出力する。そのようなリオーダモジュール、またはパケットを出力するための手段は、図５および図６、またはその等価なものを参照して本明細書で開示された任意の対応する構造、要素、および／または機能によることができる。パイプライン処理の場合、リオーダモジュールは、パイプラインにおける最後の処理コアから最後のデータパケットを受け取る。並列処理の場合、リオーダモジュールは、並列構成における処理コアの各々からパケットを受け取り、そのパケットを望ましい順序で送る。
【００５６】
[0065]本開示の様々な態様が、当業者に本発明を実施できるように提供されている。本開示を通して提示された例示的な実施形態に対する様々な変更は、当業者であれば容易に明らかになるはずであり、また本明細書で開示された概念は、他の磁気記憶デバイスに拡張され得る。したがって、特許請求の範囲は、本開示の様々な態様に限定されるようには意図されておらず、特許請求の範囲の文言に一致する完全な範囲が与えられるべきである。当業者に知られている、または後に知られるようになる、本開示を通して述べられた例示的な実施形態の様々な構成要素に対するすべての構造的、機能的に均等な形態は、参照により本明細書に明示的に組み込まれており、特許請求の範囲により包含されるように意図されている。さらに、そのような開示が特許請求の範囲に明示的に記載されているかどうかにかかわらず、本明細書で開示されたものはいずれも、公知のものとして供されるようには意図されていない。いずれの特許請求の範囲の構成要件も、その構成要件が、フレーズ「ための手段（means for）」を用いて明示的に記載されていない限り、または方法請求項の場合、構成要件が、フレーズ「ためのステップ（step for）」を用いて記載されていない限り、米国特許法第１１２条第６段落の規定の下に解釈されるべきではない。
【図１】
2017225166.tif 000003
【図２】
2017225166.tif 000004
【図３】
2017225166.tif 000005
【図４】
2017225166.tif 000006
【図５】
2017225166.tif 000007
【図６】
2017225166.tif 000008
【図７】
2017225166.tif 000009
【手続補正書】
【提出日】平成29年9月5日(2017.9.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データパケットを処理するための複数の処理コアと、
パイプライン処理モードと並列処理モードとの間で前記処理コアを構成するように構成可能な処理モード機構と、
前記複数の処理コアとともに配置される複数のインターフェースと、各インターフェースは、入力および出力を含む、
データパケットを前記インターフェースのうちの１つまたは複数に分配するように構成されたディスパッチャと、
前記パイプライン処理モードおよび前記並列処理モードの一方の処理モードに従って、前記処理コアから処理されたデータパケットを受信し、前記データパケットをアセンブルまたは再順序付けするように構成されたリオーダモジュールと
を備え、
ここにおいて、前記処理モード機構が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記複数のインターフェース、前記ディスパッチャ、前記リオーダモジュール、および前記複数の処理コアを相互接続するように構成可能な複数のスイッチ要素を備える、
ネットワークプロセッサ。
【請求項２】
前記スイッチ要素が、スイッチとマルチプレクサの一方、または両方を備える、請求項１に記載のネットワークプロセッサ。
【請求項３】
前記処理コアは、複数の処理コアグループへと構成可能であり、各グループが、グループ内の前記処理コアを、パイプライン処理モードと並列処理モードとの間で構成するように構成可能な関連する処理モード機構を有する、請求項１に記載のネットワークプロセッサ。
【請求項４】
複数の処理コアを備えるデータパケットを処理するための手段と、
パイプライン処理モードと並列処理モードとの間で処理するための前記手段を構成するための手段と、
前記処理コアとともに配置される複数のインターフェースと、各インターフェースは、入力および出力を含む、
データパケットを前記インターフェースのうちの１つまたは複数に分配するように構成されたディスパッチャと、
前記パイプライン処理モードおよび前記並列処理モードの一方の処理モードに従って、前記処理コアから処理されたデータパケットを受信し、前記データパケットをアセンブルまたは再順序付けするように構成されたリオーダモジュールと
を備え、
ここにおいて、構成するための前記手段が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記複数のインターフェース、前記ディスパッチャ、前記リオーダモジュール、および前記複数の処理コアを相互接続するように構成可能な複数のスイッチ要素を備える、
ネットワークプロセッサ。
【請求項５】
前記スイッチ要素が、スイッチとマルチプレクサの一方、または両方を備える、請求項４に記載のネットワークプロセッサ。
【請求項６】
前記複数の処理コアは、複数の処理コアグループへと構成可能であり、各グループが、グループ内の前記処理コアを、パイプライン処理モードと並列処理モードとの間で構成するための関連する手段を有する、請求項４に記載のネットワークプロセッサ。
【請求項７】
ネットワークプロセッサにより実行可能なコンピュータ実行可能コードを記憶した非一時的なコンピュータ可読記憶媒体であって、前記ネットワークプロセッサが、複数の処理コアと処理モード機構と、前記複数の処理コアとともに配置される複数のインターフェースと、ここで、各インターフェースは、入力および出力を含み、データパケットを前記インターフェースのうちの１つまたは複数に分配するように構成されたディスパッチャと、選択された処理モードに従って、前記処理コアから処理されたデータパケットを受信し、前記データパケットをアセンブルまたは再順序付けするように構成されたリオーダモジュールとを備え、前記コードが前記ネットワークプロセッサで実行されたとき、前記処理モード機構に、
前記複数の処理コアを前記選択された処理モードで構成させ、前記選択された処理モードがパイプライン処理モードおよび並列処理モードの一方を備え、
ここにおいて、前記コードが、前記ネットワークプロセッサで実行されたとき、前記処理モード機構に、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように前記複数のインターフェース、前記ディスパッチャ、前記リオーダモジュール、および前記複数の処理コアを相互接続するように、複数のスイッチ要素を構成することにより、複数の処理コアを選択された処理モードで構成させる、
非一時的なコンピュータ可読記憶媒体。
【請求項８】
前記スイッチ要素は、スイッチとマルチプレクサの一方、または両方を備える、請求項７に記載の非一時的なコンピュータ可読記憶媒体。
【請求項９】
前記複数のインターフェースは、先入れ先出しインターフェースを備える、請求項１に記載のネットワークプロセッサ。
【請求項１０】
前記複数のインターフェースは、先入れ先出しインターフェースを備える、請求項４に記載のネットワークプロセッサ。
【請求項１１】
前記複数のインターフェースは、先入れ先出しインターフェースを備える、請求項７に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１２】
前記処理モード機構は、前記複数のインターフェースのうちの第１の前記入力を前記複数の処理コアのうちの第１の出力に結合することと、前記複数のインターフェースのうちの第２の前記入力を前記ディスパッチャおよび前記複数の処理コアから分離することとによって、前記パイプライン処理モードで動作するように構成される、請求項１に記載のネットワークプロセッサ。
【請求項１３】
前記処理モード機構は、前記複数のインターフェースのうちの第１の前記入力を前記ディスパッチャに結合することと、前記複数のインターフェースのうちの第２の前記入力を前記複数の処理コアのうちの第１の出力に結合することと、前記複数のインターフェースのうちの第２の出力を前記リオーダモジュールに結合することとによって、前記並列処理モードで動作するように構成される、請求項１に記載のネットワークプロセッサ。
【請求項１４】
処理するための前記手段を構成するための前記手段は、前記複数のインターフェースのうちの第１の前記入力を前記複数の処理コアのうちの第１の出力に結合することと、前記複数のインターフェースのうちの第２の前記入力を前記ディスパッチャおよび前記複数の処理コアから分離することとによって、前記パイプライン処理モードで動作するように構成される、請求項４に記載のネットワークプロセッサ。
【請求項１５】
処理するための前記手段を構成するための前記手段は、前記複数のインターフェースのうちの第１の前記入力を前記ディスパッチャに結合することと、前記複数のインターフェースのうちの第２の前記入力を前記複数の処理コアのうちの第１の出力に結合することと、前記複数のインターフェースのうちの第２の出力を前記リオーダモジュールに結合することとによって、前記並列処理モードで動作するように構成される、請求項４に記載のネットワークプロセッサ。
【請求項１６】
前記処理モード機構は、前記複数のインターフェースのうちの第１の前記入力を前記複数の処理コアのうちの第１の出力に結合することと、前記複数のインターフェースのうちの第２の前記入力を前記ディスパッチャおよび前記複数の処理コアから分離することとによって、前記パイプライン処理モードで動作するように構成される、請求項７に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１７】
前記処理モード機構は、前記複数のインターフェースのうちの第１の前記入力を前記ディスパッチャに結合することと、前記複数のインターフェースのうちの第２の前記入力を前記複数の処理コアのうちの第１の出力に結合することと、前記複数のインターフェースのうちの第２の出力を前記リオーダモジュールに結合することとによって、前記並列処理モードで動作するように構成される、請求項７に記載の非一時的なコンピュータ可読記憶媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００５６
【補正方法】変更
【補正の内容】
【００５６】
[0065]本開示の様々な態様が、当業者に本発明を実施できるように提供されている。本開示を通して提示された例示的な実施形態に対する様々な変更は、当業者であれば容易に明らかになるはずであり、また本明細書で開示された概念は、他の磁気記憶デバイスに拡張され得る。したがって、特許請求の範囲は、本開示の様々な態様に限定されるようには意図されておらず、特許請求の範囲の文言に一致する完全な範囲が与えられるべきである。当業者に知られている、または後に知られるようになる、本開示を通して述べられた例示的な実施形態の様々な構成要素に対するすべての構造的、機能的に均等な形態は、参照により本明細書に明示的に組み込まれており、特許請求の範囲により包含されるように意図されている。さらに、そのような開示が特許請求の範囲に明示的に記載されているかどうかにかかわらず、本明細書で開示されたものはいずれも、公知のものとして供されるようには意図されていない。いずれの特許請求の範囲の構成要件も、その構成要件が、フレーズ「ための手段（means for）」を用いて明示的に記載されていない限り、または方法請求項の場合、構成要件が、フレーズ「ためのステップ（step for）」を用いて記載されていない限り、米国特許法第１１２条第６段落の規定の下に解釈されるべきではない。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
データパケットを処理するための複数の処理コアと、
パイプライン処理モードと並列処理モードとの間で前記処理コアを構成するように構成可能な処理モード機構と
を備えるネットワークプロセッサ。
［Ｃ２］
前記処理コアとともに配置される複数の先入れ先出し（ＦＩＦＯ）インターフェースをさらに備え、ここにおいて、前記処理モード機構は、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記ＦＩＦＯインターフェースと前記処理コアとを相互接続するように構成される、Ｃ１に記載のネットワークプロセッサ。
［Ｃ３］
前記処理モード機構が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成可能な複数のスイッチ要素を備える、Ｃ１に記載のネットワークプロセッサ。
［Ｃ４］
前記スイッチ要素が、スイッチとマルチプレクサの一方、または両方を備える、Ｃ３に記載のネットワークプロセッサ。
［Ｃ５］
前記処理モード機構が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成可能なファブリックロジックおよびバスを備える、Ｃ１に記載のネットワークプロセッサ。
［Ｃ６］
前記処理コアは、複数の処理コアグループへと構成可能であり、各グループが、グループ内の前記処理コアを、パイプライン処理モードと並列処理モードとの間で構成するように構成可能な関連する処理モード機構を有する、Ｃ１に記載のネットワークプロセッサ。
［Ｃ７］
データパケットを処理するための手段と、
パイプライン処理モードと並列処理モードとの間で処理するための前記手段を構成するための手段と
を備えるネットワークプロセッサ。
［Ｃ８］
処理するための前記手段とともに配置される複数の先入れ先出し（ＦＩＦＯ）インターフェースをさらに備え、構成するための前記手段が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記ＦＩＦＯインターフェースと処理するための前記手段とを相互接続するように構成される、Ｃ７に記載のネットワークプロセッサ。
［Ｃ９］
処理するための前記手段が、複数の処理コアを備え、また
構成するための前記手段が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成可能な複数のスイッチ要素を備える、Ｃ７に記載のネットワークプロセッサ。
［Ｃ１０］
前記スイッチ要素が、スイッチとマルチプレクサの一方、または両方を備える、Ｃ９に記載のネットワークプロセッサ。
［Ｃ１１］
処理するための前記手段が複数の処理コアを備え、また
構成するための前記手段が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成可能なファブリックロジックおよびバスを備える、Ｃ７に記載のネットワークプロセッサ。
［Ｃ１２］
処理するための前記手段は、複数の処理コアグループへと構成可能な複数の処理コアを備え、各グループが、グループ内の前記処理コアを、パイプライン処理モードと並列処理モードとの間で構成するための関連する手段を有する、Ｃ７に記載のネットワークプロセッサ。
［Ｃ１３］
データパケットを処理する方法であって、
複数の処理コアを選択された処理モードで構成することを備え、前記選択された処理モードが、パイプライン処理モードおよび並列処理モードの一方を備える、方法。
［Ｃ１４］
構成することが、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを、複数の先入れ先出し（ＦＩＦＯ）インターフェースと相互接続することを備える、Ｃ１３に記載の方法。
［Ｃ１５］
構成することが、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように複数のスイッチ要素を構成することを備える、Ｃ１３に記載の方法。
［Ｃ１６］
前記スイッチ要素が、スイッチとマルチプレクサの一方、または両方を備える、Ｃ１５に記載の方法。
［Ｃ１７］
構成することが、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するようにファブリックロジックおよびバスを構成することを備える、Ｃ１３に記載の方法。
［Ｃ１８］
コンピュータプログラム製品であって、
ネットワークプロセッサにより実行可能なコードを備えるコンピュータ可読媒体を備え、前記ネットワークプロセッサが、複数の処理コアと処理モード機構とを備え、前記コードが前記ネットワークプロセッサで実行されたとき、前記ネットワークプロセッサに、
複数の処理コアを選択された処理モードで構成させる、前記選択された処理モードがパイプライン処理モードおよび並列処理モードの一方を備える、コンピュータプログラム製品。
［Ｃ１９］
前記コードが、前記ネットワークプロセッサで実行されたとき、前記ネットワークプロセッサに、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを複数の先入れ先出し（ＦＩＦＯ）インターフェースと相互接続することにより、複数の処理コアを選択されたモードで構成させる、Ｃ１８に記載のコンピュータプログラム製品。
［Ｃ２０］
前記コードが、前記ネットワークプロセッサで実行されたとき、前記ネットワークプロセッサに、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように前記処理コアを相互接続するように、複数のスイッチ要素を構成することにより、複数の処理コアを選択された処理モードで構成させる、Ｃ１８に記載のコンピュータプログラム製品。
［Ｃ２１］
前記スイッチ要素は、スイッチとマルチプレクサの一方、または両方を備える、Ｃ２０に記載のコンピュータプログラム製品。
［Ｃ２２］
前記コードが、前記ネットワークプロセッサで実行されたとき、前記ネットワークプロセッサに、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように前記処理コアを相互接続するようにファブリックロジックおよびバスを構成することにより、複数の処理コアを選択された処理モードで構成させる、Ｃ１８に記載のコンピュータプログラム製品。
［Ｃ２３］
データパケットを処理するための複数の処理コアを備え、ここにおいて、前記処理コアが、パイプライン処理モードと並列処理モードとの間で構成可能である、ネットワークプロセッサ。
［Ｃ２４］
前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記処理コアを相互接続するように構成された複数のスイッチをさらに備える、Ｃ２３に記載のネットワークプロセッサ。
［Ｃ２５］
前記処理コアとともに配置された複数の先入れ先出し（ＦＩＦＯ）インターフェースをさらに備え、ここにおいて、前記スイッチ要素が、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように、前記ＦＩＦＯインターフェースと前記処理コアとを相互接続するようにさらに構成される、Ｃ２４に記載のネットワークプロセッサ。
［Ｃ２６］
メモリと、前記メモリへのアクセスを前記処理コアに提供するためのメモリバスとをさらに備え、ここにおいて、前記メモリバスが、前記パイプライン処理モードまたは前記並列処理モードのいずれかで動作するように前記処理コアを相互接続する、Ｃ２３に記載のネットワークプロセッサ。
［Ｃ２７］
前記処理コアが、前記パイプライン処理モードにおける複数のパイプラインへと構成可能である、Ｃ２３に記載のネットワークプロセッサ。