JP5834145B2 - ネットワークパケットの並列処理 - Google Patents

ネットワークパケットの並列処理 Download PDF

Info

Publication number
JP5834145B2
JP5834145B2 JP2014535711A JP2014535711A JP5834145B2 JP 5834145 B2 JP5834145 B2 JP 5834145B2 JP 2014535711 A JP2014535711 A JP 2014535711A JP 2014535711 A JP2014535711 A JP 2014535711A JP 5834145 B2 JP5834145 B2 JP 5834145B2
Authority
JP
Japan
Prior art keywords
data
header
circuit
packet
extraction
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
JP2014535711A
Other languages
English (en)
Other versions
JP2014528685A (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.)
Xilinx Inc
Original Assignee
Xilinx 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 Xilinx Inc filed Critical Xilinx Inc
Publication of JP2014528685A publication Critical patent/JP2014528685A/ja
Application granted granted Critical
Publication of JP5834145B2 publication Critical patent/JP5834145B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

発明の分野
本発明の1つ以上の実施の形態は、概して通信プロトコルに関し、より具体的にはデータパケットを操作するためのパケットプロセッサに関する。
背景
電気通信回線速度の増大に伴い、スループットを維持するためにはより広いハードウェアデータバスの使用が必要である。たとえば、FPGAの実装の場合、一般的に、100Gb/sのパケット処理には512ビットのデータバスが使用され、400Gb/sのパケット処理には2048ビットのデータバスが使用される。その1つの結果として、2つ以上のパケットが、データバスにおいて並列に伝送される1組のビットに含まれる可能性がより高くなることが挙げられる。本明細書では、データバスの全幅において並列に送信されるビットの各組をワードと呼ぶ。
一例として、最小パケットサイズを64バイトとすると、512ビットワードの中に全体が収まらないパケットがあるかもしれない。第1のデータパケットが前のワードで始まり現在のワードで終わり第2のデータパケットが現在のワードで始まり次のワードで終わる場合がある。別の例として、1つの2048ビットワードの中には、1つのパケットの末尾部分と、3つの完全なパケットと、もう1つのパケットの冒頭部分とが含まれる場合がある。所望のレベルのスループットを保つためには、並列ハードウェアが1サイクル内で複数のパケットを扱う必要があるかもしれない。しかしながら、並列ハードウェアは、必要な論理リソースおよび消費電力という点において高額である。
パケット処理ハードウェアはパイプラインとして組織化されることが多い。簡単な解決策は、パケット処理ハードウェアの同一のインスタンスを複数採用する。1度に最大K個のパケットが存在し得るとすると、ヘッダ情報およびデータを抽出するためのパケット処理ハードウェアはK回繰返される。
過去の解決策の中には、データバス上で受けた1つのワードの任意のオフセットからデータを受けて抽出するように各々が構成された複数のパイプラインを実現するものがある。たとえば、ある並列化の手法では、データ経路全体を扇形に広げてK個の独立したハードウェアパイプラインにする。別の手法は、各段にK個の並列ユニットがある1つのパイプラインを採用する。それでもなお潜在的にはすべてのデータをすべてのユニットが利用できるようにしているが、データ経路は1つしかなく並列ユニットをこのデータ経路に接続するために選択可能としてもよい。いずれの手法でも、各パイプラインは受けたワードの任意のオフセットからパケットのヘッダおよびデータフィールドを抽出するように構成されている。このような解決策は、並列回路のうちいずれか1つを、受けた1組のパケットのうちいずれか1つを処理するようにスケジュールできるという柔軟性を提供する。しかしながら、これらの解決策は、ハードウェア要件という点で費用がかかる可能性がある。
パケットのデータおよび/またはヘッダフィールドは、抽出と呼ばれるプロセスを通して、受けたワードから分離される。抽出には、関連するデータフィールドを、受けたワードからシフトすることが含まれる。あるパケットフィールドが受けたワードの中の任意のオフセットで始まり得るならば、受けたワード全体を通してシフト可能な汎用シフタが必要である。上記手法は、パケットのヘッダおよびデータフィールドの抽出に大量の回路を必要とする。なぜなら、各パイプラインが、関連ビットを、ワード全体における任意のオフセットから抽出可能でなければならないからである。これらの手法も、ルーティングリソースおよび消費電力という点で費用がかかる。その理由は、多くの冗長データが並列パイプラインに送られているからである。
1つ以上の実施の形態が上記問題のうち1つ以上に対応し得る。
概要
ある実施の形態において、パケット処理回路が提供される。このパケット処理回路は、複数のヘッダ抽出回路と、複数のヘッダ抽出回路に接続されたスケジューリング回路とを備える。スケジューリング回路は、複数のデータレーンを有するデータバスからそれぞれのパケットのヘッダデータを抽出することを要求するヘッダデータ抽出要求を1つ以上受けるように構成される。スケジューリング回路は、各要求に応じて、この要求によって指定されたそれぞれのヘッダを含む複数のデータレーンの第1のサブセットを決定し、複数のデータレーンの第1のサブセットからそれぞれのヘッダデータを抽出するために、複数のヘッダ抽出回路のうち対応する1つのヘッダ抽出回路を割当てる。
実施の形態によっては、複数のヘッダ抽出回路は各々、データバスの複数のデータレーンの対応する第2のサブセットから、データを受けるように接続され、それぞれのヘッダデータを抽出するために割当てられた、複数のヘッダ抽出回路のうちの対応するヘッダ抽出回路が受ける複数のデータレーンの各第1のサブセットについて、複数のデータレーンの第1のサブセットは、対応するヘッダ抽出回路が接続されて受ける複数のデータレーンの第2のサブセットに含まれる。
実施の形態によっては、データバスはNビットのデータバスであり、複数のヘッダ抽出回路は、データバス上で並列に受けることが可能なパケットの最大数以上の数であるK個のヘッダ抽出回路を含む。各データレーンはQビットでもよい。Nビットのデータで受けたデータパケットの、最大ヘッダサイズのヘッダは、S個のデータレーンを占めてもよい。データレーンの第1のサブセットは、L個のデータレーンを含んでもよく、LQは、データバス上で受信し得る最小サイズのデータパケットに等しい。
実施の形態によっては、L=2でもよく、ヘッダ抽出回路i(1≦i≦K)について、
i=1の場合、ヘッダ抽出回路iは、データレーン1〜2+(S−1)からデータを排他的に受けかつS個のデータレーン上で受けた前のワードからデータを受けるように構成され、
1<i<Kの場合、ヘッダ抽出回路iは、データレーン2i−2〜2i+(S−1)からデータを排他的に受けるように構成され、
i=Kの場合、ヘッダ抽出回路iは、データレーン2K、2K−1、および2K−2からデータを排他的に受けるように構成される。スケジューリング回路は、データレーンJ(J<K)で受信された要求を受けたことに応じて、
パケットの終端を含まない、Jが偶数であるデータレーンJの場合は、要求をヘッダ抽出回路J/2+1に割当て、
それ以外の場合は、要求をヘッダ抽出回路(J+1)/2に割当てるように、構成されてもよい。スケジューリング回路はさらに、必要なすべてのヘッダデータが現在のデータワードに存在するとは限らない場合の要求を受けたことに応じて、要求を、次のデータワードで処理するためにバッファリングするように構成してもよい。
実施の形態によっては、Lは2よりも大きくてもよく、ヘッダ抽出回路i(1≦i≦K)について、
i=1の場合、ヘッダ抽出回路iは、データレーン1〜3+Sからデータを排他的に受けかつS個のデータレーン上で受けた前のワードからデータを受けるように構成され、
1<i<Kの場合、ヘッダ抽出回路iは、データレーンL(i−2)+2〜L(i−1)+(S+3)からのデータしか受けないように構成され、
i=Kの場合、ヘッダ抽出回路iは、データレーンL(K−2)+2〜N/Qからのデータしか受けないように構成される。スケジューリング回路はさらに、データレーンJ上で受信された要求を受けたことに応じて、
J mod L=2であり、J<(N/Q)であり、かつデータレーンJがパケットの始点を含む場合、要求をヘッダ抽出回路(J+3L−3)/Lに割当てるように構成されてもよく、
J mod L=3であり、かつデータレーンJがパケットの終端を含む場合、要求をヘッダ抽出回路(J+L−3)/Lに割当てるように構成されてもよい。
実施の形態によっては、パケット処理回路はさらに、複数のデータレーンの第1のサブセットからヘッダデータを抽出するために、スケジューリング回路が複数のヘッダ抽出回路のうちの1つのヘッダ抽出回路を割当てたことに応じて、データを、データバスのレーンの第1のサブセットから、複数のヘッダ抽出回路のうちの1つである割当てられたヘッダ抽出回路までルーティングするように構成された、ルーティング回路をさらに備える。
実施の形態によっては、1つ以上の要求は各々、パケットヘッダタイプ、パケット識別子、およびヘッダアドレスを指定する。パケットヘッダ抽出回路は各々、データレーンの第1のサブセットからヘッダデータを抽出するように割当てられたことに応じて、要求によって示されるパケットヘッダタイプから、データレーンの第1のサブセット内におけるヘッダデータのオフセットを求め、ヘッダデータの長さを求めるように構成されてもよい。
実施の形態によっては、ヘッダデータは1つ以上のヘッダフィールドのデータを含む。実施の形態によっては、ヘッダデータはそれぞれのヘッダフィールドに対する1つ以上のポインタを含む。実施の形態によっては、スケジューリング回路は、データバス上で受けた各ワードについて、データバスからそれぞれのパケットのヘッダデータを抽出することを要求する、1組の、1つ以上の要求を受けるように構成され配置される。
別の実施の形態において、パイプラインパケット処理回路が提供される。パイプラインパケット処理回路は、パイプライン方式で構成および配置されてデータバスから受けたワードをバッファリングする複数のメモリバッファを含む。各メモリバッファは複数のデータレーンを有する。複数の抽出段が、パイプライン方式で配置され、複数のメモリバッファにそれぞれ接続される。各抽出段は、メモリバッファのパイプライン上でバッファリングされたワードの異なるレベルのデータパケットのヘッダを抽出するように構成される。各抽出段は、複数のパケットヘッダ抽出回路とスケジューリング回路とを含む。スケジューリング回路は、メモリバッファのパイプラインの対応する1つのメモリバッファに格納されたワードから対応するレベルのパケットヘッダをそれぞれ抽出することを要求する1つ以上の抽出要求を受けるように構成される。各要求に対し、スケジューリング回路は、この要求よって指定された各ヘッダを含む、対応するメモリバッファのデータレーンの第1のサブセットを決定する。スケジューリング回路は、決定された、対応するメモリバッファのレーンの第1のサブセットからヘッダを抽出するために、ヘッダ抽出回路のうちの対応する1つのヘッダ抽出回路を割当てる。
実施の形態によっては、パイプライン方式のパケットプロセッサはさらに、メモリバッファのうちの1つに接続されたパケット検出回路を含む。パケット検出回路は、各データパケットの始点を検出するように構成および配置してもよい。パケットの始点を検出すると、パケット検出回路は、複数のメモリバッファのうちの第1の1つのメモリバッファに格納されたワードから対応するパケットヘッダを抽出することを要求する抽出要求を生成してもよく、かつ、生成した要求を複数の抽出段のうちの第1の1つの抽出段に送ってもよい。
実施の形態によっては、パイプライン方式のパケットプロセッサはさらに、抽出段のうちの対応する1つの抽出段に接続された少なくとも1つの要求構成回路を含む。各要求構成回路は、第2のレベルのヘッダを含むパケットを示す各抽出段によって抽出された情報に応じてパケットの第2のレベルのヘッダを抽出することを要求する抽出要求を生成するように、かつ、生成された要求を複数の抽出段のうちの別の1つの抽出段に送るように構成および配置してもよい。
もう1つの実施の形態において、ネットワークパケット処理回路を生成する方法が提供される。パケットパラメータが記載された仕様書が入力される。パケットパラメータは、データバス幅(N)、データバスのデータレーンのレーン幅(Q)、データバスを介して受けるパケットの最小パケットサイズ、および、データバスを介して受けるパケットの最大ヘッダサイズを含む。パケットパラメータに基づいて、ヘッダ抽出回路の数(K)が決定される。パケットパラメータに基づいて、K個のヘッダ抽出回路各々について、データレーンの第1のサブセットが決定される。K個のヘッダ抽出回路と、ルーティング回路と、K個のヘッダ抽出回路に接続されたスケジューリング回路とを有するパケットプロセッサが記載された回路仕様書が生成される。ルーティング回路は、データを、データレーンの各サブセットからK個のヘッダ抽出回路のうちの対応する1つのヘッダ抽出回路にルーティングするように構成される。スケジューリング回路は、複数のデータレーンを有するデータバスから各パケットのヘッダデータを抽出することを要求する1つ以上の抽出要求を受けるように構成される。各要求に応じて、スケジューリング回路は、この要求によって指定されたそれぞれのヘッダを含む複数のデータレーンの第2のサブセットを決定し、複数のデータレーンの第2のサブセットから対応するヘッダデータを抽出するために、複数のヘッダ抽出回路のうちの対応する1つのヘッダ抽出回路を割当てる。第2のサブセットは、複数のヘッダ抽出回路のうちの割当てられた1つのヘッダ抽出回路の、それぞれの第1のサブセットに含まれている。
実施の形態によっては、パケットパラメータは、最大ヘッダ深さ(M)を含み、回路仕様書にはパケット処理パイプラインが記載される。パケット処理パイプラインはM個のバッファを含み、このバッファは、パイプライン方式で配置され、データバス上で受けたM個のワードについてデータバスの複数のデータレーンをバッファリングするように構成される。パケット処理パイプラインはまた、各々が、M個のバッファのうちの1つから各ヘッダデータを抽出するように構成された、M個のパケットプロセッサと、M個のパケットプロセッサにそれぞれ接続されたM個の要求生成回路とを含む。各要求生成回路は、M個のパケットプロセッサ回路のうちの対応する1つのパケットプロセッサ回路に対し1つ以上の要求を生成するように構成してもよい。
その他さまざまな実施の形態が以下の詳細な説明および特許請求の範囲に記載されていることがわかるであろう。
本発明のさまざまな側面および利点は以下の詳細な説明を検討し図面を参照することによって明らかになるであろう。
1つ以上の実施の形態に従うパケット処理パイプラインの一例を示す。 図1に示されるパケット処理パイプラインの抽出段を実現するために使用し得るパケット処理回路の一例を示す。 1つ以上の実施の形態に従うデータパケットのヘッダを抽出するためのプロセスの一例のフローチャートを示す。 1つ以上の実施の形態に従うヘッダ抽出回路それぞれに対するデータレーンサブセットのルーティングの一例を示す。 1つ以上の実施の形態に従うヘッダ抽出要求のスケジューリングを実現するために使用し得る要求スケジューリング回路の一例を示す。 1つ以上の実施の形態に従うヘッダ抽出回路の実現例を示す。 図6に示されるデータ抽出回路を実現するために使用し得る回路の一例を示す。 1つ以上の実施の形態に従い構成されたデータパケット処理回路を生成するためのプロセスのフローチャートを示す。 1つ以上の実施の形態に従うデータパケット処理回路を実現するために構成し得るプログラマブル集積回路を示す。 本明細書に記載のプロセスおよび機能を実現するために構成し得るコンピュータアーキテクチャを示す。
詳細な説明
1つ以上の実施の形態は、パケット処理回路のためのハードウェア効率の良い並列アーキテクチャを提供する。パケット処理回路は、データバス上で受けた複数のパケットのヘッダ情報を処理するための複数のヘッダ抽出回路を含む。データバスは複数のデータレーンに分割される。各ヘッダ抽出回路は、ヘッダ情報を、データレーンのそれぞれのサブセットから受けて抽出するように構成される。各抽出回路が受けるのはデータレーンの1つのサブセットのみであるので、必要なルーティング回路はより少なく各抽出回路が行なう抽出はより小さなシフト回路を用いて実現し得る。
図1は、1つ以上の実施の形態に従い構成された一例としてのパケット処理パイプライン100を示す。インターフェイス回路124は、ワードをNバイトのデータバス102から受けてNバイトのメモリバッファのパイプラインにバッファリングする。受けた各ワードについては、このワードは第1のメモリバッファに格納されそれよりも前に受けたワードは、異なる抽出段108、114、および120によるアクセスのために、メモリバッファのパイプラインに沿って送られる。
各パケットは、最大ヘッダレベル深さMまでの、ヘッダのスタックを含み得る。この例において、パイプラインは、ヘッダ情報をヘッダスタックの複数のレベルから抽出するためにM個の抽出段(108、114、および120)を含む。各段は、ヘッダスタックにおける1つのヘッダを扱う。パイプラインの段は、各々が連続する1つ以上のヘッダを扱うMよりも少ない段であってもよい。
データバス102を介して受けた各ワードについて、パケット始点(SOP(start of packet))検出回路104は、ワード内で検出された各パケットのヘッダ情報の抽出要求を生成する。パケットは、ワードと関連付けられたSOPデータに基づいて検出される。抽出要求は第1の抽出段108に送られる。この抽出段は、インターフェイス回路124においてバッファリングされたワードから、抽出要求各々に対応するヘッダ情報を抽出するように構成されている。
SOP検出回路104によって生成された抽出要求は、受けたデータワードの中のどこに抽出すべき所望のヘッダ情報が位置するかを示す。ヘッダ抽出要求は、いくつかの代替フォーマットで実現し得る。これらフォーマットは、あるパケットについて抽出すべきヘッダ情報を示す異なるデータ値を含み得る。この例において、各抽出要求は、受けたワードの中で要求されたヘッダが始まるオフセットと、ヘッダ内のさまざまなフィールドの位置を決定するために使用できるヘッダフォーマットインジケータとを含む。この要求はまた、連続する少なくとも2つのワードサイクルにわたって固有のものとなるように選択されたパケット識別子を含み得る。複数の抽出段各々において、パケット識別子を用いて、パケットに対応するヘッダ情報を識別できる。
各抽出段は、複数のヘッダ抽出回路(図示せず)を含む。受けたワードに含まれ得る最大数のパケット各々に対して1つのヘッダ抽出回路が設けられる。受けた各抽出要求に対し、抽出段は、複数のヘッダ抽出回路のうちの1つを割当てて要求されたヘッダ情報を抽出するように構成されている。抽出されたヘッダ情報データは、たとえば、さまざまなヘッダフィールドのデータ、または、要求されたヘッダのさまざまなヘッダフィールドを参照するポインタデータを含み得る。
各抽出段からの抽出ヘッダ情報は、たとえばデータ処理回路122によってさらに処理されるために出力される。データ処理回路122は、抽出されたヘッダフィールド値およびポインタをさらなるパケット処理に使用する。パケットのヘッダレベル深さによっては、パケットを、パイプライン内の1つ以上の追加の抽出段114および120によって処理する必要がある場合がある。この追加の抽出段は、パケットの、入れ子にされたレベル(nested levels)のヘッダスタックのヘッダ情報を抽出する。この例において、パイプラインは、パケットがヘッダスタックの別のレベルに追加のヘッダを含むか否か判断するために、抽出段同士の間に要求構成回路110および116を含む。パケットが追加のヘッダを含む場合、要求が生成され次の抽出段114または120に送信される。抽出段114および120は、インターフェイス回路124のパイプラインのメモリバッファのうちの対応するメモリバッファに格納されているデータワードを用いて抽出段108の動作と同様のやり方で動作する。
上記例および実施の形態は、主として、各抽出段において1つのパケットの1つのヘッダレベルを抽出することに関連して記載されているが、外部論理が1つのヘッダと次のヘッダとの間の作用について判断する必要がなければ、1つの段において1つのヘッダスタックの複数のヘッダを抽出してもよいことがわかる。
図2は、図1に示されるパケット処理パイプラインの抽出段を実現するために使用し得るパケット処理回路の一例を示す。パケット処理回路200は、複数のQバイトデータレーンを有するNバイトデータバスからデータワードを受けるためのデータバスインターフェイス回路204を含む。この回路は、K個のヘッダ抽出回路208、210、212、および214を含む。これらヘッダ抽出回路は各々、データレーンの各サブセットを受けるように、かつ、ヘッダ情報をこのデータレーンのサブセットのうちの1つ以上のデータレーンから抽出するように構成されている。言い換えると、各抽出回路は、ヘッダ情報を、Nバイトのバスのデータレーンの各範囲から抽出するように構成されている。ヘッダ抽出回路の数Kは、Nバイトの1ワード内の受信し得る最小サイズのパケットおよびパケットフラグメントの最大数に等しい。各抽出回路が受けるのはデータレーンの1つのサブセットのみであるので、必要なルーティング回路はより少なく、抽出はより小さなシフト回路を用いて実現し得る。
データバス202上で受けた各ワードについて、スケジューラ回路206は、受けたデータワードに含まれる各パケットからヘッダ情報を抽出することを要求する、1組の抽出要求を受ける。各抽出要求に対し、スケジューラ回路は、示されたヘッダが、ワードのどのデータレーンを占めているか判断し、抽出要求を、そのレーンのサブセットが、抽出要求に対応する決定したデータレーンを含む、ヘッダ抽出回路に割当てる。この例において、ヘッダ抽出回路に対する抽出要求の割当ては、要求を、割当てられたヘッダ抽出回路に転送することによって行なわれる。しかしながら、実施の形態によっては、転送前に抽出要求のフォーマットを調整してもよく、そうでなければ、割当てられたヘッダ抽出回路に、要求されたヘッダ情報を抽出するよう指示してもよいことが理解される。
図3は、データバス上で受けたデータパケットのヘッダを抽出するためのプロセスの一例のフローチャートを示す。このプロセスは、図2に示されるパケット処理回路を用いて実現してもよい。ブロック302で、ヘッダ抽出要求(ERs(extraction requests))が、データバスから受けたワードに基づいて入力される。ブロック304で、各抽出要求に対し、抽出要求によって示されるヘッダを含む、ワードのデータレーンのサブセットが決定される。ブロック306で、各抽出要求が、複数のヘッダ抽出回路のうちの1つに割当てられる。ブロック308で、データレーンの各サブセットのデータが、ヘッダ抽出回路のうちの対応する1つの抽出回路に送信される。ブロック310で、ヘッダデータが、割当てられたヘッダ抽出回路を用いて、データレーンのサブセットから抽出される。
ヘッダ抽出回路にそれぞれルーティングされたデータレーンのサブセットは、互いに排他的ではないことが理解されるはずである。なぜなら、ヘッダはデータレーン同士の境界にまたがっているかもしれないからである。データレーンが相互排他的なサブセットに均等に分割されている場合、同じサブセットを参照する複数のヘッダ抽出要求を、異なるヘッダ抽出回路が並列処理することはできない。抽出要求を確実に並列処理できるようにするために、隣合うヘッダ抽出回路にそれぞれルーティングされた、データレーンのサブセットを重複させることによって、受けたヘッダ抽出要求のスケジューリングにある程度の柔軟性を持たせる。この重複によって、データバス202上で受けたワード1つ当たり最大1つの抽出要求が各ヘッダ抽出回路に割当てられるように、スケジューリングを行なうことができる。
図4は、1つ以上の実施の形態に従うヘッダ抽出回路それぞれに対するデータレーンサブセットのルーティングの一例を示す。ヘッダ抽出回路404がすべてのヘッダ抽出要求を並列に処理できることを保証することが可能な、ヘッダ抽出回路の数およびデータレーン402のルーティングは、最小サイズのパケットが占めるレーンの数(L)および最大サイズのヘッダ(H)が占めるデータレーンの数(S)を含むアーキテクチャパラメータの数によって決まる。
本明細書では、説明し易くするために、例および実施の形態が、主として、Nバイトのデータバスから複数のヘッダ抽出回路404にルーティングされるN/Qのデータレーンとの関連で記載されている。このデータレーンはQバイト、S=2レーン、L=2レーンである。
一般的に、N/Qのデータレーンは、実線の矢印で示されるようにヘッダ抽出回路に割当てられルーティングされている相互排他的なグループに分けられてもよい。ヘッダ抽出回路1はデータレーン1および2を受けるように構成され、中間のヘッダ抽出回路2〜K−1は各々Lのデータレーンを受けるように構成され、ヘッダ抽出回路Kは残りのデータレーンを受けるように構成されている。この例において、L=2であり、N/Qのデータレーンは、各々2つのデータレーンを有する相互排他的なグループに均等に分割されている。
データレーンのサブセットの重複は、点線の矢印で示されるように追加のデータレーンをルーティングすることによって実現される。説明を容易にするために、実線の矢印で示すようにヘッダ抽出回路にルーティングされたデータレーンを、ヘッダ抽出回路のデフォルトデータレーンと呼んでもよく、点線の矢印で示すようにこのヘッダ抽出回路にルーティングされた追加のデータレーンを、ヘッダ抽出回路の非デフォルトデータレーンと呼んでもよい。重複の量は、パラメータSおよびLによって決まる。L=2の場合、各ヘッダ抽出回路は、(利用できるのであれば)上側に隣接するヘッダ抽出回路にルーティングされているデフォルトレーンである、S−1の非デフォルトデータレーンと、(利用できるのであれば)下側に隣接するヘッダ抽出回路にルーティングされている1つのデフォルトレーンである、1つの非デフォルトデータレーンとを受ける。
上記ルーティングの結果、ヘッダ抽出回路1は、データレーン1〜2+(S−1)からデータを受ける。中間にある各ヘッダ抽出回路iは、データレーン2i−2〜2i+(S−1)からデータを受ける。ヘッダ抽出回路Kは、データレーン2K、2K−1、および2K−2からデータを受ける。
1つのヘッダが、連続する2つ以上のワードにまたがることがあることが理解される。このような場合、データは、次のワード(複数のワード)でさらにデータを受けるまで、ヘッダから抽出することができない。バッファレーン410および412は、前のワード(複数のワード)の最後のSのデータレーンをバッファリングするために設けられる。不完全なヘッダを受けた場合、前のレーンを、ヘッダ抽出回路1によって、後続のワードでヘッダの最後の部分を受けたときに処理してもよい。
L=2である例において、抽出要求を、デフォルトデータレーンの上記割当ておよび対応するパケットの終端の位置に従って、ヘッダ抽出回路が処理するように、スケジュールしてもよい。(実線の矢印で示されるように)1つのヘッダ抽出回路に割当てられた最も高いデフォルトレーンにパケットの終端が含まれていない場合、このデータレーンで受けた要求を、上側に隣接するヘッダ抽出回路によって処理されるよう、スケジュールする。そうでなければ、この要求を、デフォルトデータレーンとしての要求を含むデータレーンに割当てられたヘッダ抽出回路によって処理されるように、スケジュールする。
数値で説明すると、データレーンJ(J<K)で受けた要求については、Jが偶数でありデータレーンにパケットの終端が含まれていなければ、この要求をヘッダ抽出回路J/2+1に処理のために割当てる。そうでなければ、この要求をヘッダ抽出回路(J+1)/2に割当てる。
L>2を実現するアーキテクチャの場合、ヘッダ抽出回路1は、上記デフォルトデータレーンに加えて、ヘッダ抽出回路2も受ける1つの追加の非デフォルトデータレーンを受け、中間のヘッダ抽出回路は各々、(利用できるのであれば)上側に隣接するヘッダ抽出回路からS+1の追加の非デフォルトデータレーンを受ける。ヘッダ抽出回路2〜Kは各々、下側に隣接するヘッダ抽出回路から1つの追加の非デフォルトデータレーンを受ける。
データレーンのデフォルトおよび非デフォルトルーティングの結果、ヘッダ抽出回路1は、データレーン1〜S+3からデータを受ける。中間の各ヘッダ抽出回路iは、データレーンL(i−2)+2〜L(i−1)+(S+3)からデータを受ける。ヘッダ抽出回路Kは、データレーンL(K−2)+2〜N/Qからデータを受ける。
L>2の実現例の場合、抽出要求は、この要求のデータレーンと、対応するパケットの先頭/末尾とに基づいて、ヘッダ抽出回路404が処理するように、スケジュールされてもよい。たとえば、最も下にあるまたは中央のヘッダ抽出回路の最も高いデフォルトデータレーンがパケットの始点を含んでいる場合、このレーンで受けたいかなる要求も、処理のために上側に隣接するヘッダ抽出回路に割当てられる。中央のまたは最も上にあるヘッダ抽出回路の最も低いデフォルトデータレーンがパケットの末尾を含んでいる場合、このレーンで受けたいかなる要求も、下側に隣接するヘッダ抽出回路に割当てられる。
数値で説明すると、データレーン(J)で受けた要求については、J mod L=2であり、J<(N/Q)であり、かつデータレーンJがパケットの始点を含むのであれば、この要求はヘッダ抽出回路(J+3L−3)/Lに割当てられる。J mod L=3でありかつデータレーンJがパケットの終端を含むのであれば、この要求はヘッダ抽出回路(J+L−3)/Lに割当てられる。
図5は、1つ以上の実施の形態に従う、ヘッダ抽出要求のスケジューリングを実現するために使用し得る要求スケジューリング回路の一例を示す。図2を参照して述べたように、要求スケジューリング回路は、データバス上で受けた各ワードについて1組の抽出要求を受ける。要求スケジューリング回路500は、複数のレーン割当回路502、504、506、および508を含む。これらレーン割当回路は各々、ヘッダ抽出要求を受けるように、かつ、データバスのどのレーン(複数のレーン)が、要求によって示されるヘッダを含むのか判断するように、構成される。
要求スケジューリング回路500は、複数のスケジューラ回路520〜528を含み、これらの中には、データバスの各データレーンに対応する1つのスケジューラ回路が含まれる。各抽出要求は、要求交換スイッチ510を介して、レーン割当回路502〜508のうちの1つから、要求によって示されるヘッダが始まるデータレーンに対応するスケジューラ回路まで、ルーティングされる。
スケジューラ回路520〜528は、図4を参照して先に述べたように、抽出要求をヘッダ抽出回路に割当てる。抽出要求は、データバス上で受けたすべてのワードについて、スケジューラ回路520〜528によってスケジュールされる。しかしながら、図4を参照して述べたように、1つのワードの中に、必要なすべてのヘッダ情報がない場合がある。たとえば、パケットヘッダは、現在のワードにおいて始まっているものの後続のワードまで続いていることがある。このような場合、スケジューリング回路は、後続のワードを受けるまで、対応するヘッダ抽出要求を要求バッファ512にバッファリングするように、構成される。スケジューリングの完了後、抽出要求は、要求交換スイッチ530を介して、スケジューラ回路から、割当てられたヘッダ抽出回路まで、ルーティングされる。
図6は、図4に示されるヘッダ抽出回路のうち1つの抽出回路のインスタンスの実現化の一例を示す。ヘッダ抽出回路602は、受けたヘッダ抽出要求に従い、データレーンのサブセットから、ヘッダ情報を受けて抽出するように構成される。この実現例において、要求は、ワードの中でヘッダが始まる位置を示すベースアドレス(a)と、このヘッダに含まれるフィールドの配置およびフォーマットを示すフォーマット番号(r)と、対応するデータパケットのパケットID(p)とを含む。
ヘッダ抽出回路602は、いくつかのフィールドデータ抽出回路606〜608と、いくつかのフィールドポインタ計算回路610〜612とを含む。フィールドデータ抽出回路は、ヘッダフィールドそれぞれのデータを抽出するように構成され、フィールドポインタ計算回路は、ヘッダフィールドそれぞれに対するポインタを決定するように構成される。実現例によっては、ヘッダフィールドそれぞれに対するポインタを、ヘッダ内におけるオフセットを基準として、またはワード内におけるオフセットを基準として、決定してもよい。
フィールドデータ抽出回路およびフィールドポインタ計算回路は各々、ヘッダ抽出要求内で示されるフォーマット番号rによって決まる異なるフィールドに対して機能する。
この例において、データ抽出回路606〜608は、32ビットのフィールドデータを出力するものとして示され、ポインタ計算回路610〜612は、tビットのポインタを出力するものとして示されている。これらデータ値は、例示のために与えられているにすぎない。データ抽出回路606〜608の数およびポインタ計算回路610〜612の数、ならびに出力ヘッダフィールドの長さおよびポインタの長さは、ヘッダ抽出回路が処理するように構成されているヘッダフォーマットに従い調整し得る、アーキテクチャパラメータである。
ある実施の形態において、ヘッダ抽出回路602は、抽出要求によって示されるヘッダベースアドレスaに従い、入力されたデータレーンサブセットから、要求されたヘッダ情報を有する、受けているデータレーンの一部(wビット)を選択する、前処理回路604を含む。その他いくつかの実施の形態では、前処理回路が実現されずヘッダ抽出回路602の外部のルーティング回路(図示せず)が、要求されたヘッダ情報を有するデータレーンのみを、ヘッダ抽出回路602に動的にルーティングするように構成されてもよい。さらに別の実施の形態では、データ抽出回路606〜608およびフィールドポインタ計算回路610〜612が、受けているデータレーンサブセット620から、対応するヘッダフィールドを抽出するように構成されてもよい。図4に関して先に述べたように、サブセット620に含まれるデータレーンは、アーキテクチャパラメータLおよびS、ならびに、パケット処理回路内における抽出回路の位置によって、決まる。
図7は、図6に示されるデータ抽出回路を実現するために使用し得る回路の一例を示す。上記のように、パケットヘッダは、パケットヘッダのフォーマット次第で、異なるオフセットにある、異なる数のフィールドを含み得る。フォーマット番号rは、データ抽出回路およびフィールドポインタ計算回路に入力される。データ抽出回路は、プロトコルと、抽出すべきヘッダフィールドとを示すフォーマット番号rを受ける。制御指示回路は、各ヘッダフォーマットrについて、パケット処理回路が処理し得るフィールドデータを抽出する方法を回路702に指示するマイクロコードを用いて構成されたメモリを含む。入力されたフォーマット番号rに応じて、制御指示回路704は、ヘッダの始点からの、要求されたフィールドのビットオフセット、および、要求されたフィールドのビット長を決定する。ビットオフセットおよびビット長として、例示のためにそれぞれ6ビットおよび8ビットが示されている。制御指示回路704によって出力されるビットオフセットおよびビット長は、回路702が処理するように構成された取り得るヘッダフォーマットに応じて決まることが、さらに理解されるであろう。この情報は、ヘッダベースオフセットaと組合されて、要求されたフィールド情報が、受けたデータから抽出される。図6に示されるポインタ計算回路610〜612は、同様の配置で実現されて、所望のフィールドのビットオフセットを決定しかつヘッダオフセットおよびフィールドオフセットからフィールドへのポインタを計算してもよい。
図2を参照して、すべてのパケットが同じ扱いを受けるよう、ヘッダ抽出回路をフィールドデータ抽出回路702内の同じマイクロコードを用いて実現してもよいことが、理解される。これに代えて、ヘッダ抽出回路が、マイクロコードの異なる組を用いて構成されてもよい。たとえば、ネットワークアプリケーションは、ワードサイズに等しい固定パケットサイズを有するATMデータパケットと、可変サイズのTCP/IPパケットとを送信するように構成されてもよい。ネットワークが1ワード内のATMパケットを常に送信するように構成されている場合、ヘッダは常に第1のヘッダ抽出回路によって処理されるであろう。したがって、第1のヘッダ抽出回路のみをマイクロコードを用いて構成してATMパケットを処理する必要がある。同様に、図1に示されるように複数の抽出段が実現されるとき、マイクロコードの異なる組を異なる抽出段で用いて異なるヘッダレベルを処理してもよい。マイクロコードは、書込み可能な制御記憶装置に格納されてもよく、これにより、ヘッダ抽出回路を実行時に更新できる。よって、特定のヘッダフォーマットのルールの追加、修正、および削除が可能である。
1つ以上の実施の形態において、ソフトウェア設計ツールが、上記のようなネットワークデータパケット処理回路を生成し構成するように構成されてもよい。図8は、ネットワークデータパケット処理回路設計を生成するためのプロセスのフローチャートを示す。ブロック802で、取り得るパケットパラメータが記載された仕様書が入力される。この実現例において、パケットパラメータは、データバスの幅Nと、データレーンの幅Qと、最小パケットサイズMと、最大パケットヘッダサイズHとを含む。ブロック804で、パケットパラメータに基づき、データバス上で並列に受信し得る最大数のデータパケットについてヘッダ情報を抽出するのに必要なヘッダ抽出回路の数Kを決定する。ブロック806で、図4を参照して述べたように、パケットパラメータに基づき、K個のヘッダ抽出回路各々に対して、データバスのデータレーンの対応するサブセットが選択される。
ブロック808で、VerilogまたはVHDL等のハードウェア記述言語(HDL)回路設計仕様書が生成される。回路設計仕様書には、K個のヘッダ抽出回路と、データレーンの選択された各サブセットを対応するヘッダ抽出回路にルーティングするルーティング回路と、パケットスケジューリング回路とを有するパケットプロセッサが記載されている。上記のように、スケジューリング回路は、ある要求によって指定された各ヘッダを含むデータレーンの第2のサブセットを決定し、対応するヘッダデータを複数のデータレーンの第2のサブセットから抽出するために、複数のヘッダ抽出回路のうちの対応する1つのヘッダ抽出回路を割当てる。ヘッダ抽出回路の割当ては、第2のサブセットが、割当てられたヘッダ抽出回路に対応する第1のサブセットに含まれるよう、かつ、各ヘッダ抽出回路に、データバス上で受けたワード1つ当たり最大1つの抽出要求が割当てられるように、行なわれる。ヘッダ抽出回路および/またはスケジューリング回路は、予め規定された回路設計仕様書に記載されてもよく、または、この仕様書から構成されてもよい。たとえば、各ヘッダ抽出回路を、パケットパラメータおよび1組の取り得るヘッダフォーマットに従い、フィールドデータ抽出回路702等の、いくつかの予め規定されたモジュールをインスタンス化することによって、生成してもよい。
図9は、さまざまな実施の形態に従うパケットプロセッサを実現するように構成し得るプログラマブル集積回路の一例のブロック図である。図9に示されるプログラマブル集積回路は、フィールドプログラマブルゲートアレイ(FPGA(field programmable gate array))として知られている。先に説明したパケット処理回路は、FPGAのプログラマブル論理および配線リソース上で実現されてもよい。
FPGAは、このアレイ内に、種類が異なるプログラマブル論理ブロックをいくつか含むことができる。たとえば、図9は、多数の異なるプログラマブルタイルを含むFPGAアーキテクチャ(900)を示している。これらプログラマブルタイルは、マルチギガビットトランシーバ(MGTs(multi-gigabit transceivers)901)と、構成可能論理ブロック(CLBs(configurable logic blocks)902)と、ランダムアクセスメモリブロック(BRAMs(random access memory blocks)903)と、入出力ブロック(lOBs(input/output blocks)904)と、構成およびクロッキング論理(CONFIG/CLOCKS(configuration and clocking logic)905)と、デジタル信号処理ブロック(DSPs(digital signal processing blocks)906)と、特化された入出力ブロック(I/O907)、たとえばクロックポートと、デジタルクロックマネージャ、アナログデジタル変換器、システムモニタリング論理等の、その他のプログラマブル論理908とを含む。FPGAの中には、専用プロセッサブロック(PROC910)および内外再構成ポート(図示せず)も含むものがある。
FPGAの中には、各プログラマブルタイルが、隣接する各タイルにおける対応する配線素子へのおよびこの素子からの標準化された接続を有するプログラマブル配線素子(INT911)を含むものがある。よって、これらプログラマブル配線素子が一体となって、示されているFPGAのプログラマブル配線構造を実現する。プログラマブル配線素子INT911はまた、図9において最も上に含まれている例によって示されるように、同じタイルの中のプログラマブル論理素子へのおよびこの素子からの接続を含む。
たとえば、CLB902は、ユーザ論理プラス単一のプログラマブル配線素子INT911を実現するようにプログラムできる、構成可能な論理素子CLE912を含むことができる。BRAM903は、1つ以上のプログラマブル配線素子に加えて、BRAM論理素子(BRL913)を含むことができる。一般的に、1つのタイルに含まれる配線素子の数は、このタイルの高さに応じて決まる。示されている実施の形態において、1つのBRAMタイルは、5つのCLBと同じ高さを有するが、その他の数(たとえば4つ)を用いることもできる。DSPタイル906は、適切な数のプログラマブル配線素子に加えて、DSP論理素子(DSPL914)を含むことができる。IOB904は、たとえば、プログラマブル配線素子INT911の1つのインスタンスに加えて、入出力論理素子(IOL915)の2つのインスタンスを含むことができる。たとえば、I/O論理素子915に接続された実際のI/Oパッドは、示されているさまざまな論理ブロックよりも上に積層された金属を用いて製造され、一般的には、入出力論理素子915の領域に制限されないことが、当業者には明らかであろう。
示されている実施の形態において、(図9において斜線で示される)チップの中心近くの列領域は、構成、クロック、およびその他の制御論理のために使用される。この列から延びている水平領域909は、FPGAの幅に沿ってクロックおよび構成信号を分配するために使用される。
図9に示されるアーキテクチャを利用するFPGAが、FPGAの大部分を構成する規則的な列構造を乱す追加の論理ブロックを含むことがある。この追加の論理ブロックは、プログラマブルブロックおよび/または専用論理であってもよい。たとえば、図9に示されるプロセッサブロックPROC910は、CLBsおよびBRAMsのいくつかの列にまたがっている。
なお、図9は、代表的なFPGAアーキテクチャのみを示すことを意図している。1つの列の中の論理ブロックの数、列の相対的な幅、列の数および順序、列に含まれる論理ブロックの種類、論理ブロックの相対的な大きさ、および図9の最も上の部分に含まれる配線/論理実現例は、例示にすぎない。たとえば、実際のFPGAでは、ユーザ論理の効率的な実現を容易にするために、CLBsが存在する場合は必ず、一般的には隣接するCLBs列が2つ以上含まれている。
図10は、本明細書に記載のプロセスおよび機能を実現するように構成し得る計算機構の一例のブロック図を示す。1つ以上のプロセッサと、プログラムコードを用いて構成されたメモリ機構とを含む、代替のさまざまな計算機構は、プロセスおよびデータ構造をホストし異なる実施の形態のアルゴリズムを実現するのに適しているであろうことが、理解されるであろう。プロセッサが実行可能なフォーマットで符号化された1つ以上の実施の形態のプロセスを含むコンピュータコードを、磁気または光ディスクまたはテープ、電子記憶装置等の、または、ネットワーク上のアプリケーションサービス等の、さまざまなコンピュータ読取可能な記憶媒体または配信チャネルを介して、格納し提供してもよい。
プロセッサ計算機構1000は、ホストバス1012に接続された、1つ以上のプロセッサ1002と、クロック信号生成器1004と、メモリユニット1006と、記憶ユニット1008と、入出力制御ユニット1010とを含む。機構1000を、回路基板上の別々の構成要素によって実現してもよく、または、集積回路の内部で実現してもよい。集積回路の内部で実現された場合、このプロセッサ計算機構はマイクロコントローラとしても知られるものである。
当業者が理解するように、計算機構のアーキテクチャは、実現化要件に応じて決まる。プロセッサ1002は、1つ以上の汎用プロセッサであってもよく、または、1つ以上の汎用プロセッサと適切なコプロセッサとの組合せであってもよく、または、特化された1つ以上のプロセッサ(たとえばRISC、CISC、パイプライン方式等)であってもよい。
メモリ機構1006は一般的に、複数レベルのキャッシュメモリと、メインメモリとを含む。記憶機構1008は、磁気ディスク(図示せず)、フラッシュ、EPROM、またはその他の不揮発性データ記憶装置によって提供されるもののような、ローカルおよび/またはリモート持続記憶装置を含み得る。記憶ユニットは、読取可能であっても読書き可能であってもよい。さらに、メモリ1006および記憶装置1008を1つの機構の中で組合わせてもよい。
プロセッサ機構1002は、記憶装置1008および/またはメモリ1006機構内でソフトウェアを実行し、データを記憶装置1008および/またはメモリ1006機構内から読取り、データを記憶装置1008および/またはメモリ1006機構に格納し、入出力制御機構1010を通して外部装置と通信する。これらの機能は、クロック信号生成器1004によって同期が取られる。計算機構のリソースを、オペ―レーティングシステム(図示せず)またはハードウェア制御ユニット(図示せず)によって管理してもよい。
本発明の実施の形態はさまざまなパケットプロセッサに応用可能であると考えられる。その他の側面および実施の形態は、当業者には、本明細書およびそこに開示されている発明の実施を考慮することによって明らかになるであろう。実施の形態は、ソフトウェアを実行するように構成された1つ以上のプロセッサとして、特定用途向け集積回路(ASIC)として、またはプログラマブル論理装置上の論理として実現してもよい。本明細書および示された実施の形態が専ら例示であるとみなされ実施の形態の真の範囲は以下の請求項によって示されることが、意図されている。

Claims (14)

  1. パケット処理回路であって、
    複数のヘッダ抽出回路を備え、各ヘッダ抽出回路はデータバスの複数のデータレーンの対応するサブセットを受けるように接続され、データレーンのサブセット同士は重複しており、
    前記複数のヘッダ抽出回路に接続されたスケジューリング回路を備え、
    前記スケジューリング回路は、
    前記複数のデータレーンからそれぞれのパケットのヘッダデータを抽出することを要求するヘッダデータ抽出要求を複数受けるように構成および配置されるとともに、
    前記複数の要求の各要求に応じて、
    前記要求によって指定されたそれぞれのヘッダを含む複数のデータレーンの第1のサブセットを決定するように、かつ、
    前記複数のデータレーンの第1のサブセットからそれぞれのヘッダデータを抽出するために、前記複数のヘッダ抽出回路のうち対応する1つのヘッダ抽出回路を割当てるように、構成および配置され、
    前記ヘッダ抽出回路はさらに、それぞれのヘッダデータを並列に抽出するように構成される、パケット処理回路。
  2. 前記データバスはNビットのデータバスであり、
    前記複数のヘッダ抽出回路は、前記データバス上で並列に受けることが可能なパケットの最大数以上の数であるK個のヘッダ抽出回路を含む、請求項1に記載のパケット処理回路。
  3. 各データレーンはQビットであり、
    前記Nビットのデータで受けたデータパケットの、最大ヘッダサイズのヘッダは、S個のデータレーンを占め、
    前記データレーンの第1のサブセットは、L個のデータレーンを含み、LQは、前記データバス上で受信し得る最小サイズのデータパケットに等しい、請求項2に記載のパケット処理回路。
  4. L=2であり、ヘッダ抽出回路i(1≦i≦K)について、
    i=1の場合、ヘッダ抽出回路iは、データレーン1〜2+(S−1)からデータを排他的に受けかつS個のデータレーン上で受けた前のワードからデータを受けるように構成され、
    1<i<Kの場合、ヘッダ抽出回路iは、データレーン2i−2〜2i+(S−1)からデータを排他的に受けるように構成され、
    i=Kの場合、ヘッダ抽出回路iは、データレーン2K、2K−1、および2K−2からデータを排他的に受けるように構成される、請求項3に記載のパケット処理回路。
  5. 前記スケジューリング回路は、データレーンJ(J<K)で受信された要求を受けたことに応じて、
    パケットの終端を含まない、Jが偶数であるデータレーンJの場合は、前記要求をヘッダ抽出回路J/2+1に割当て、
    それ以外の場合は、前記要求をヘッダ抽出回路(J+1)/2に割当てるように、構成される、請求項4に記載のパケット処理回路。
  6. 前記スケジューリング回路はさらに、必要なすべてのヘッダデータが現在のデータワードに存在するとは限らない場合の要求を受けたことに応じて、前記要求を、次のデータワードで処理するためにバッファリングするように構成される、請求項5に記載のパケット処理回路。
  7. L>2であり、ヘッダ抽出回路i(1≦i≦K)について、
    i=1の場合、ヘッダ抽出回路iは、データレーン1〜3+Sからデータを排他的に受けかつS個のデータレーン上で受けた前のワードからデータを受けるように構成され、
    1<i<Kの場合、ヘッダ抽出回路iは、データレーンL(i−2)+2〜L(i−1)+(S+3)からのデータしか受けないように構成され、
    i=Kの場合、ヘッダ抽出回路iは、データレーンL(K−2)+2〜N/Qからのデータしか受けないように構成される、請求項3に記載のパケット処理回路。
  8. 前記スケジューリング回路はさらに、データレーンJ上で受信された要求を受けたことに応じて、
    J mod L=2であり、J<(N/Q)であり、かつデータレーンJがパケットの始点を含む場合、前記要求をヘッダ抽出回路(J+3L−3)/Lに割当てるように構成され、
    J mod L=3であり、かつデータレーンJがパケットの終端を含む場合、前記要求をヘッダ抽出回路(J+L−3)/Lに割当てるように構成される、請求項に記載のパケット処理回路。
  9. 前記複数のデータレーンの第1のサブセットから前記ヘッダデータを抽出するために、前記スケジューリング回路が前記複数のヘッダ抽出回路のうちの1つのヘッダ抽出回路を割当てたことに応じて、データを、前記データバスのレーンの第1のサブセットから、前記複数のヘッダ抽出回路のうちの1つである前記割当てられたヘッダ抽出回路までルーティングするように構成された、ルーティング回路をさらに備える、請求項1に記載のパケット処理回路。
  10. 前記要求は各々、パケットヘッダタイプ、パケット識別子、およびヘッダアドレスを指定する、請求項1に記載のパケット処理回路。
  11. 前記パケットヘッダ抽出回路は各々、前記データレーンの第1のサブセットからヘッダデータを抽出するように割当てられたことに応じて、前記要求によって示される前記パケットヘッダタイプから、前記データレーンの第1のサブセット内におけるヘッダデータのオフセットを求め、ヘッダデータの長さを求めるように構成される、請求項10に記載のパケット処理回路。
  12. 前記ヘッダデータは1つ以上のヘッダフィールドのデータを含む、請求項1に記載のパケット処理回路。
  13. 前記ヘッダデータはそれぞれのヘッダフィールドに対する1つ以上のポインタを含む、請求項1に記載のパケット処理回路。
  14. 前記スケジューリング回路は、前記データバス上で受けた各ワードについて、前記データバスからそれぞれのパケットのヘッダデータを抽出ことを要求する、1組の前記要求を受けるように構成され配置される、請求項1に記載のパケット処理回路。
JP2014535711A 2011-10-17 2012-05-17 ネットワークパケットの並列処理 Active JP5834145B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/274,945 US8780914B2 (en) 2011-10-17 2011-10-17 Parallel processing of network packets
US13/274,945 2011-10-17
PCT/US2012/038384 WO2013058831A1 (en) 2011-10-17 2012-05-17 Parallel processing of network packets

Publications (2)

Publication Number Publication Date
JP2014528685A JP2014528685A (ja) 2014-10-27
JP5834145B2 true JP5834145B2 (ja) 2015-12-16

Family

ID=46201812

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014535711A Active JP5834145B2 (ja) 2011-10-17 2012-05-17 ネットワークパケットの並列処理

Country Status (7)

Country Link
US (1) US8780914B2 (ja)
EP (1) EP2777230B1 (ja)
JP (1) JP5834145B2 (ja)
KR (1) KR101761462B1 (ja)
CN (1) CN103858393B (ja)
IN (1) IN2014CN02636A (ja)
WO (1) WO2013058831A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104184645B (zh) 2013-05-27 2018-05-04 华为技术有限公司 一种生成操作请求的方法、设备及系统
CN108989311A (zh) * 2013-05-31 2018-12-11 华为技术有限公司 生成输入参数的方法及设备
CN103346974B (zh) * 2013-06-03 2015-04-08 华为技术有限公司 一种业务流程的控制方法及网络设备
US9946676B2 (en) 2015-03-26 2018-04-17 Intel Corporation Multichip package link
US10911579B1 (en) * 2016-03-01 2021-02-02 Amazon Technologies, Inc. Generating programmatically defined fields of metadata for network packets
US11108698B2 (en) * 2017-02-03 2021-08-31 Microsoft Technology Licensing, Llc Systems and methods for client-side throttling after server handling in a trusted client component
US11831743B1 (en) * 2019-01-08 2023-11-28 Xilinx, Inc. Streaming architecture for packet parsing

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5862128A (en) 1995-12-29 1999-01-19 Gte Laboratories Inc Merged buffer signal switch
US6275508B1 (en) * 1998-04-21 2001-08-14 Nexabit Networks, Llc Method of and system for processing datagram headers for high speed computer network interfaces at low clock speeds, utilizing scalable algorithms for performing such network header adaptation (SAPNA)
JP2000183995A (ja) * 1998-12-14 2000-06-30 Sony Corp データ処理回路
US6956852B1 (en) * 1999-06-25 2005-10-18 Cisco Technology Inc. Multi-function high-speed network interface
JP3730471B2 (ja) * 2000-02-14 2006-01-05 富士通株式会社 パケット転送装置
US7305047B1 (en) * 2003-03-12 2007-12-04 Lattice Semiconductor Corporation Automatic lane assignment for a receiver
US20050210185A1 (en) * 2004-03-18 2005-09-22 Kirsten Renick System and method for organizing data transfers with memory hub memory modules
CN100387027C (zh) * 2005-01-07 2008-05-07 清华大学 高速网络分流设备用线路接口卡中的包预处理电路组件
US7809009B2 (en) 2006-02-21 2010-10-05 Cisco Technology, Inc. Pipelined packet switching and queuing architecture
JP4815284B2 (ja) * 2006-07-06 2011-11-16 アラクサラネットワークス株式会社 パケット転送装置
US7822066B1 (en) * 2008-12-18 2010-10-26 Xilinx, Inc. Processing variable size fields of the packets of a communication protocol

Also Published As

Publication number Publication date
US8780914B2 (en) 2014-07-15
IN2014CN02636A (ja) 2015-08-07
KR20140084207A (ko) 2014-07-04
EP2777230A1 (en) 2014-09-17
JP2014528685A (ja) 2014-10-27
EP2777230B1 (en) 2015-07-29
WO2013058831A1 (en) 2013-04-25
CN103858393B (zh) 2016-12-21
US20130094507A1 (en) 2013-04-18
KR101761462B1 (ko) 2017-08-04
CN103858393A (zh) 2014-06-11

Similar Documents

Publication Publication Date Title
JP5834145B2 (ja) ネットワークパケットの並列処理
US11188388B2 (en) Concurrent program execution optimization
US8775685B1 (en) Parallel processing of network packets
CN112543925B (zh) 用于使用专用低延迟链路的多个硬件加速器的统一地址空间
US7290075B2 (en) Performing arbitration in a data processing apparatus
JP4672305B2 (ja) デジタル・メディア・ストリームを処理するための方法及び装置
CN107436855B (zh) 用于具有可重配置多端口的pcie存储系统的qos认知io管理
CN118119933A (zh) 用于触发协作进程的提前终止的机制
CN118043796A (zh) 存储器计算系统中的基于片块的结果缓冲
CN118076944A (zh) 可重新配置计算组构中的循环执行期间的数据存储
CN117795496A (zh) 可重新配置计算组构中的并行矩阵运算
CN117581200A (zh) 在分派期间从存储器加载数据
CN115729864A (zh) 存储装置、电子装置以及电子装置的操作方法
US11740800B2 (en) Alleviating memory hotspots on systems with multiple memory controllers
JP2022547863A (ja) 実行パイプ均衡をもたらす分散スケジューラ
EP2854042A1 (en) Information processing apparatus, data transfer apparatus, and data transfer method
CN109413122B (zh) 一种数据处理方法、网络处理器及计算机存储介质
JP4836915B2 (ja) アドレス処理
JP6540141B2 (ja) 割り当て装置、割り当て方法、割り当てプログラム、及び、通信ネットワーク装置
EP3011706A1 (en) P-select n-port round robin arbiter for scheduling requests
GB2508684A (en) Directing data packets for processing in parallel processing computers
KR101634672B1 (ko) 네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램
Shahane et al. Performance Efficient NoC Router Implementation on FPGA
JP5659798B2 (ja) データ転送制御装置及び方法並びにデータ処理装置
CN117435548A (zh) 用于硬件组件之间的通信的方法和系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150430

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20150430

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20150520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150826

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151030

R150 Certificate of patent or registration of utility model

Ref document number: 5834145

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250