JP2004524781A - マルチキャスト伝送の効率的処理 - Google Patents
マルチキャスト伝送の効率的処理 Download PDFInfo
- Publication number
- JP2004524781A JP2004524781A JP2002584540A JP2002584540A JP2004524781A JP 2004524781 A JP2004524781 A JP 2004524781A JP 2002584540 A JP2002584540 A JP 2002584540A JP 2002584540 A JP2002584540 A JP 2002584540A JP 2004524781 A JP2004524781 A JP 2004524781A
- Authority
- JP
- Japan
- Prior art keywords
- frame
- buffer
- queue
- field
- multicast
- 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.)
- Granted
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 64
- 238000012545 processing Methods 0.000 title description 8
- 239000000872 buffer Substances 0.000 claims abstract description 208
- 238000000034 method Methods 0.000 claims abstract description 15
- 230000008569 process Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 abstract description 7
- 230000006870 function Effects 0.000 description 22
- 230000008859 change Effects 0.000 description 17
- 230000003068 static effect Effects 0.000 description 15
- 238000013500 data storage Methods 0.000 description 7
- 239000004744 fabric Substances 0.000 description 7
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 108090000841 L-Lactate Dehydrogenase (Cytochrome) Proteins 0.000 description 1
- 241000712062 Patricia Species 0.000 description 1
- QJSUPSSECDJUED-YACUFSJGSA-N [(2r)-2-hexadecanoyloxy-3-[hydroxy-[3-(4-methoxyphenyl)-2-oxochromen-7-yl]oxyphosphoryl]oxypropyl] hexadecanoate Chemical compound O=C1OC2=CC(OP(O)(=O)OC[C@@H](COC(=O)CCCCCCCCCCCCCCC)OC(=O)CCCCCCCCCCCCCCC)=CC=C2C=C1C1=CC=C(OC)C=C1 QJSUPSSECDJUED-YACUFSJGSA-N 0.000 description 1
- 210000005098 blood-cerebrospinal fluid barrier Anatomy 0.000 description 1
- 238000012508 change request Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005498 polishing Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1881—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/20—Traffic policing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/43—Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]
Abstract
【解決手段】ネットワーク・プロセッサにおけるマルチキャスト伝送のためのフレーム・データが、バッファに読み出され、そのバッファが、様々な制御構造および参照フレームに関連づけられる。参照フレームおよび関連づけられた制御構造によって、フレームの複数のコピーを作成することなく、マルチキャスト・ターゲットがサービスを受けるようになる。さらに、この同じ参照フレームおよび制御構造により、すべてのマルチキャスト伝送が完了するまで待つことなく、各マルチキャスト・ターゲットに割り当てられたバッファを、空きバッファ・キューに戻すことが可能になる。
【選択図】図1
Description
【0001】
本発明は、全般的には、ネットワーク・プロセッサにおけるマルチキャスト伝送に関し、より詳細には、ネットワーク・プロセッサにおけるマルチキャスト伝送を従来の手法よりも効率的に実施する方法に関する。
【背景技術】
【0002】
ネットワーク・プロセッサにおけるマルチキャスト伝送方式の実施においては、ユニキャスト方式では起こらないいくつかの問題に対処しなければならない。たとえば、1つまたは複数のフレームを単一のターゲットに伝送する(すなわち、ユニキャスト伝送)場合、フレームに関連づけられたバッファ(すなわち、メモリ・バッファ中に格納されたすべての関連データ)は、データが各バッファから読み出されると、空きバッファ・キュー(すなわち、フレーム・データ用に利用可能なメモリ・バッファの、リンク・リスト)に戻すことができる。しかし、いくつかのターゲット位置が存在するマルチキャストのシナリオでは、フレームに関連づけられたバッファは、空きキューに直接戻すことができず、その代わり、最後のマルチキャスト伝送が行われた後、リンク・リストを「再歩行(re-walk)」して戻さなければならない。ユニキャスト伝送では起こらない、マルチキャストの問題の別の要因は、各マルチキャスト・ターゲットの位置が参照フレーム中で異なる開始位置を必要とする可能性があり、あるいは、さらなる情報の追加を必要とする可能性があることである。こうした問題に対する一般的な解決策は、各マルチキャスト要求ごとに(したがって、各マルチキャスト・ターゲットごとに)、参照フレーム全体のコピーを作成することである。複数のコピーを作成することにより、問題は解決するが、マルチキャスト要求を満たすために多数のメモリ・バッファを借りる必要があり、その結果、システム性能に負担がかかることになる。
【0003】
フレームのコピーを複数作成する代わりに、参照フレームにリンクすることによってマルチキャスト伝送を実施する場合、一部のポートが他のポートよりも高い性能レベルで動作することがあるので、ポート性能の不一致が、対処しなければならない問題となる。特に、参照フレームにリンクバックすることによって、問題が起こる。というのは、最後に伝送を開始するフレームが、最後に終了するフレームではないことがあるからである。開始フレームと停止フレームの間のこの不一致により、いつ参照フレーム・バッファを空きバッファ・キューに戻すべきかを知らなければならないという問題が生じる。具体的には、開始フレームが終了した後、単純にバッファを戻すことはできない。1つの解決策は、すべてのマルチキャスト伝送が完了するまで待つことであるが、やはりこのような手法も、不必要にシステム性能を妨げることがある。
【発明の開示】
【発明が解決しようとする課題】
【0004】
高性能ネットワーク・プロセッサにおいて、マルチキャスト伝送メモリの必要量を最小限にし、かつポート性能の不一致を補償する新規な解決策が必要である。
【課題を解決するための手段】
【0005】
本発明は、請求項1に記載の、ネットワーク・プロセッサにおけるマルチキャスト伝送方法に関する。
【0006】
本発明はまた、請求項7に記載のネットワーク・プロセッサ、および請求項6に記載のコンピュータ・プログラムに関する。
【0007】
本発明によると、新しい手法によって、各マルチキャストのインスタンス(すなわち、各マルチキャスト・ターゲット)ごとにフレーム全体をコピーする必要がなくなり、それによって、メモリの必要量が削減され、かつポート性能の不一致による問題が解決される。さらに、好ましくは、借りたバッファは、使用されると(他のインスタンスがいつ伝送を完了するかとは無関係に)空きキューに戻される。また、好ましくは、すべてのインスタンスがいつ伝送されるかをカウンタを使用して判定し、したがって参照フレームも同様に空きキューに戻すことができる。
【0008】
前述および他の目的、態様、利点は、以下の本発明の好ましい実施形態の詳細な説明を、図面を参照しながら読めば、よりよく理解されるであろう。
【発明を実施するための最良の形態】
【0009】
ここで図面、より具体的には図1を参照すると、本発明の好ましい実施形態によるデータ構造を示してある。フレームが、一連のバッファ1011〜1015中に格納される。各バッファ101は、対応するバッファ制御ブロック(BCB)1021〜1025を有し、このBCBは、一連のバッファをフレームにリンクするのに使用する。各フレームは、対応するフレーム制御ブロック(FCB)1031〜103nを有し、このFCBは、一連のフレームをキューにリンクするのに使用する。各キューは、キュー制御ブロック(QCB)104を有し、このQCBは、キュー中の最初および最後のFCB103のアドレスと、キュー中のフレーム数のカウントとを保持する。
【0010】
データ構造の定義
バッファ101は、データの格納に使用する。各バッファ101は、大きさが64バイトであり、1〜64バイトの有効データを格納することができる。バッファ101内部のすべての有効データは、単一の隣接するバイト範囲として格納しなければならない。複数のバッファを、リンク・リストを介して互いに連鎖し、64バイトより大きいフレームを格納する。
【0011】
最初に、すべてのバッファを、空きバッファ・キューに入れる。フレームが届くと、バッファは、空きバッファ・キューの先頭からポップ(削除)され、フレーム・データの格納に使用される。最後のフレーム伝送が実施されると、フレーム・データの格納に使用したバッファは、空きバッファ・キューの末尾にプッシュされる。
【0012】
バッファ制御ブロック(BCB)102は、複数のバッファをフレームに連鎖するために、リンク・リストを形成する。また、バッファ101のどのバイトが有効データを含むかを記録する。各バッファ101ごとに、対応するBCB102がある。データ記憶メモリ(図2に示す205および206)内のバッファ101のアドレスは、BCBアレイ中の対応するBCB102のアドレスとしても使用される。BCB102は、以下のフィールドを含む。
【0013】
・次のバッファ・アドレス(NBA)フィールドは、フレーム中の次のバッファ101へのポインタを格納するのに使用される。現在のバッファ101用のBCB102中のNBAフィールドは、フレームの次のバッファ101(および対応するBCB102)のアドレスを含む。
【0014】
・開始バイト位置(SBP)フィールドは、フレームの次のバッファ101中のデータの最初の有効バイトのオフセットを格納するのに使用される。有効な値は、0〜63である。
【0015】
・終了バイト位置(EBP)フィールドは、フレームの次のバッファ101中のデータの最後の有効バイトのオフセットを格納するのに使用される。有効な値は、0〜63である。
【0016】
・非常駐バッファ(TBUF)ビットは、フレーム中の次のバッファ101を、そのデータを伝送のために読み出した後で空きバッファ・キューに戻すべきかどうかを指定するために、マルチキャスト・フレームを伝送するときだけ使用される。このビットは、マルチキャスト・フレームに対してのみ有効である。これは、フレームの受信の際、デフォルト状態である0に設定される。
【0017】
SBP、EBP、TBUFフィールドは、フレーム中の「次の」バッファ101に適用され、現在のBCB102に対応するバッファ101には適用されないことに留意されたい。これらのフィールドは、次のバッファ101のSBP、EBP、TBUF情報をそのアドレス(NBA)と同時に取り出せるようにするためにこのように定義される。
【0018】
BCB102内のフィールドのそれぞれは、フレームの受取り中、最初にデータフロー・ハードウェア202(図2)によってロードされる。その後、ピココードが、BCB102内のフィールドを修正して、伝送の前にフレームを「編集」することができる。NBAフィールドは、フレーム中にバッファを追加または削除するために、修正することができる。SBPおよびEBPフィールドは、バッファ101中の有効バイト数を変えるために、修正することができる。マルチキャスト・フレームの一部であるバッファに対するTBUFビットを設定して、バッファ101を、そのデータを伝送したらすぐに空きバッファ・キューに戻すよう要求することができる。
【0019】
BCB102のNBAフィールドは、また、空きバッファ・キュー中のバッファのリンク・リストを形成するのに使用する。NBAは、対応するバッファ101が空きバッファ・キュー中にあるときに有効な情報を含む、BCB102内の唯一のフィールドである。
【0020】
フレーム制御ブロック(FCB)103は、キュー中のフレームのリンク・リストを形成する。また、フレーム中の有効バイトの総数と、フレーム中の第1バッファ101のバッファ・アドレスおよびSBP/EBPと、2ビットのフレーム「Type」フィールドとを記録する。FCB103は、以下のフィールドを含む。
【0021】
・次のフレーム・アドレス(NFA)フィールドは、フレーム・キュー中の次のフレームへのポインタを格納するのに使用する。現在のフレームに対するFCB103のNFAフィールドは、キュー中の次のフレームに対するFCB103のアドレスを含む。このフィールドは、対応するフレームがキュー中の最後のフレームである場合、有効データを含まない。QCBの「QCNT」フィールドがゼロの場合、キューにはフレームが存在しない。QCBの「QCNT」フィールドが1の場合、キューの先頭にあるFCBの「NFA」フィールドは、キューに「次のフレーム」がないので、無効である。
【0022】
・バイト・カウント(BCNT)フィールドは、フレーム・キュー中の次のフレームのすべてのバッファ中の有効バイトの総数のカウントを格納するのに使用される。BCNTは、キュー中の「次の」フレームに適用され、そのBCNTフィールドを格納するFCB103に関連づけられたフレームには適用されないことに留意されたい。BCNTフィールドは、キュー中の次のフレームのアドレス(NFA)および長さ(BCNT)を同時に取り出すことを可能にするためにこのように定義される。
【0023】
・第1バッファ・アドレス(FBA)フィールドは、フレーム中の第1バッファ101(および対応するBCB102)のアドレスを格納するのに使用される。
【0024】
・SBPおよびEBPフィールドは、フレームの第1バッファ101中の有効データの開始および終了バイト位置を格納するのに使用される。
【0025】
・Typeフィールドは、データフロー・ハードウェア202に、伝送されるフレームの形式およびタイプを知らせるためにピココードによって使用される。
【0026】
・00 「FACBを有するユニキャスト・フレーム」 フレームは、単一の宛先に伝送され(ユニキャスト)、各バッファ101は、伝送用にデータが読み出されると、空きバッファ・キューに戻される。1つまたは複数のフレーム変更制御ブロック(FACB)が、フレームの第1バッファ101に格納される。
【0027】
・01 「FACBを有する静的フレーム」 このフレームは、どのバッファも空きバッファ・キューに戻さずに伝送される。1つまたは複数のフレーム変更制御ブロック(FACB)が、フレームの第1バッファ101に格納される。
【0028】
・10 「FACBをもたないユニキャスト・フレーム」 このフレームは、単一の宛先に伝送され(ユニキャスト)、各バッファ101は、データが伝送のために読み出されると、空きバッファ・キューに戻される。フレーム変更制御ブロック(FACB)は、フレームの第1バッファ101に格納されない。
【0029】
・11 「FACBを有するマルチキャスト・フレームで、第1バッファがTBUF」 このフレームは、複数の宛先に伝送され(マルチキャスト)、フレームのすべてのインスタンスに共通のバッファは、フレームがすべての宛先に完全に伝送された後でのみ、空きバッファ・キューに戻される。1つまたは複数のフレーム変更制御ブロック(FACB)が、各フレーム・インスタンスの第1バッファ101に格納される。また、フレームの第1バッファ101、およびBCB102中のTBUFビットがセットされているどの後続のバッファ101も、1つのフレーム・インスタンスに関連づけられていると仮定され、データがバッファ101から伝送された直後に、空きバッファ・キューに戻される。
【0030】
FCB103中のフィールドはそれぞれ、まず、フレームの受取り中に、データフロー・ハードウェア202(図2)によってロードされる。続いてフレーム伝送の前に、ピココードが、FCB103のBCNT、FBA、SBP、EBP、およびTypeフィールドをオーバーレイする。編集の結果、フレームの長さが変わった場合、BCNTフィールドを修正することができる。フレームの第1バッファ101のアドレスまたは有効データ範囲に変化があった場合、FBA、SBP、およびEBPフィールドを修正することができる。Typeフィールドは、フレーム伝送のタイプを設定するために書き込まれる。
【0031】
空きFCBキューは、フレームに現在割り当てられていないFCBのリンク・リストを維持するのに使用する。FCB103のNFAフィールドは、空きFCBキュー中のFCBのリンク・リストを形成するに使用する。NFAは、対応するFCB103が空きFCBキュー中にあるときに、FCB103の中で有効な情報を含む唯一のフィールドである。
【0032】
キュー制御ブロック(QCB)104は、キュー中の最初および最後のFCBのアドレス、およびキュー中の総フレーム数のカウントを格納することによって、フレームのキューを維持する。QCB104は、以下のフィールドを含む。
・先頭FCBA:キューの先頭にあるフレームのFCBアドレス(FCBA)を格納するのに使用する。
・先頭BCNT:キューの一番上にあるフレーム中の有効バイトの総数のカウントを格納するのに使用する。
・末尾FCBA:キューの末尾にあるフレームのFCBアドレス(FCBA)を格納するのに使用する。
・QCNT:キュー中に現在あるフレーム数のカウントを格納するのに使用する。
【0033】
フレームは、以下のようにしてキューの末尾に追加される。
1.1つまたは複数のフレームが既にキュー中にある場合(QCNTが1以上)、元々キューの末尾にあったFCB103中のNFAおよびBCNTフィールドは、キューの末尾に新しいフレームを連鎖するように書き込まれる。それ以前にキュー中にフレームがなかった場合(QCNT=0)、QCB104の先頭FCBAおよび先頭BCNTフィールドは、キューの先頭として新しいフレームを確立するように書き込まれる。
2.QCB104の末尾FCBAは、キューの末尾に追加された新しいFCB103をポイントするように書き込まれる。
3.QCB104のQCNTは、キュー中の1つの追加フレームを反映するように1だけ増分される。
【0034】
フレームは、キューの先頭から以下のようにして削除される。
1.複数のフレームが既にキュー中にある場合(QCNTが1以上)、キューの先頭にあるFCB103中のNFAおよびBCNTフィールドは、キューの先頭にある新しいフレームに対するFCBAおよびBCNTを取得するために読み出される。次いで、このFCBAおよびBCNTの値が、キューの先頭にある新しいフレームを確立するために、QCB104の先頭FCBAおよび先頭BCNTに書き込まれる。
2.QCB104のQCNTは、キュー中のフレームが1つ減ったことを反映するように1だけ減分される。
【0035】
フレームの受取り
このセクションでは、フレームの受取りからネットワーク・プロセッサへのディスパッチまでの間のデータ構造の使用を説明する。
ステップ1:第1フレーム・データが受け取られると、空きバッファ・アドレスが空きバッファ・キューの先頭からポップされ、空きFCB103が空きFCBキューの先頭からポップされる。最大64バイトのフレーム・データが、バッファ101に書き込まれる。FCB103には、第1バッファ101に対するFBA、SBP、およびEBP値が書き込まれる。作業用バイト・カウント・レジスタは、第1バッファ101に書き込まれたバイト数に設定される。フレーム全体が第1バッファ101に収まる場合はステップ3に進むが、それ以外の場合はステップ2に進む。
【0036】
ステップ2:追加バッファ101が空きバッファ・キューからポップされ、最大64バイトのデータがバッファ101に書き込まれる。直前のバッファ101に対するBCB102には、現在のバッファ101に対するNBA、SBP、およびEBP値が書き込まれる。バッファ101に書き込まれるバイト数が、作業用バイト・カウント・レジスタに加えられる。フレームの最後が受け取られた場合はステップ3に進むが、それ以外の場合はステップ2を繰り返す。
【0037】
ステップ3:次いで、フレームは、入力キューの末尾に入れられ、ネットワーク・プロセッサへのディスパッチを待つ。
1.それ以前に入力キュー中にフレームがなかった場合、入力キューのQCB104中の先頭FCBAおよび末尾FCBAには、新しいフレームのFCB103のアドレスが書き込まれる。QCB104中の先頭BCNTには、新しいフレームの全長を記録する、作業用バイト・カウント・レジスタが書き込まれる。QCB104中のQCNTは、1だけ増分される。
【0038】
2.入力キュー中に1つまたは複数のフレームが既にあった場合、入力キューの末尾にある1つ前のフレーム用のFCB103のNFAおよびBCNTフィールドが書き込まれる。NFAフィールドには、新しいフレームのFCB103のアドレスが書き込まれる。BCNTフィールドには、新しいフレームの長さを記録する作業用バイト・カウント・レジスタの値が書き込まれる。次いで、入力キューのQCB104の末尾FCBAには、新しいフレームのFCB103のアドレスが書き込まれる。QCB104中のQCNTは、1だけ増分される。
【0039】
フレームは、入力キューの先頭に達すると、ネットワーク・プロセッサへのディスパッチのためにキューからはずされる。先頭FCBAおよび先頭BCNTフィールドは、入力キューのQCB104から読み出される。次いで、先頭FCBAの値を使用して、キューの先頭にあるFCB103の内容が読み出される。FCB103から読み出されるNFAおよびBCNTの値は、フィールドQCB104の先頭FCBAおよび先頭BCNTの更新に使用される。FCB103から読み出されるFBA、SBP、およびEBPの値は、ネットワーク・プロセッサへのディスパッチのためのフレーム・データの位置決めおよび読出しに使用される。ディスパッチに必要なフレーム・データが読み出されるまで、BCB102の連鎖が続く。QCB104中のQCNTは、1だけ増分される。
【0040】
図2は、本発明の好ましい実施形態を実施するチップ・セット・システム環境を示す。より具体的に言うと、データは、交換ファブリック201からデータフロー・チップ202に流れ、次いで、POS(Packet-Over-SONET)フレーマまたはイーサネット(R)MAC(媒体アクセス制御)203に流れる。POSフレーマまたはイーサネット(R)MAC203から、データは、データフロー・チップ204に流れ、次いで、交換ファブリック201に流れる。データフロー・チップ202および204は、データ記憶機構(ダイナミック・ランダム・アクセス・メモリ(DRAM))205および206、ならびに制御記憶機構(スタティック・ランダム・アクセス・メモリ(SRAM))207および208によってそれぞれサポートされる。データフロー・チップ202および204は、それぞれの組込みプロセッサ複合体(EPC)209および210とそれぞれ通信し、スケジューラ・チップ211および212とそれぞれ任意選択で通信する。EPCチップ209および210は、DRAMで実装されるルックアップ・テーブル213および214、ならびにSRAMで実装されるルックアップ・テーブル215および216によってそれぞれサポートされる。EPCチップ209は、さらに、コプロセッサ・インタフェースおよびPCI(周辺装置相互接続)ローカル・バスを備え、EPCチップ210は、さらに、CAM(連想記憶装置)217によってサポートされる。スケジューラ・チップ211および212が使用される場合、それらは、それぞれ、SRAMで実装されるフロー・キュー218および219によってサポートされる。
【0041】
図3は、データフロー・チップ202(204)、EPCチップ209(210)およびスケジューラ・チップ211(212)をより詳細に示す。EPCチップ209(210)は、ネットワーク・トラフィックの転送に責任のあるソフトウェアを実行する。EPCチップは、テーブル探索、ポリシング(policing)、およびカウントなど、共通動作を実行するハードウェア補助機能を含む。データフロー・チップ202(204)は、ネットワーク・ポートまたは交換ファブリック・インタフェースあるいはその両方を経由してトラフィックを送受信する主要データ経路として働く。データフロー・チップは、トラフィックがネットワーク・プロセッサ・サブシステムを介して流れるときに、それをバッファリングする大型データ記憶メモリ205(206)へのインタフェースを提供する。データフロー・チップは、処理のためにフレーム・ヘッダをEPCにディスパッチし、EPCからの要求に応答してフレームをそのターゲットの宛先に転送する。任意選択のスケジューラ・チップ211(212)を追加して、ネットワーク・プロセッサ・サブシステムによって提供されるサービス品質(QoS)を高めることができる。スケジューラ・チップは、数千のネットワーク・トラフィックの「フロー」が、その割り当てられたQoSレベルごとに別々にスケジューリングされるようにする。
【0042】
EPCチップ209(210)は、ネットワーク・トラフィックの並列処理を提供する、12個の2項プロトコル・プロセッサ・ユニット(DPPU)301を含む。各DPPUは、2つの「ピココード」エンジンを含む。各ピココード・エンジンは、2つのスレッドをサポートする。スレッド間では、ゼロ・オーバヘッドのコンテキスト切換えがサポートされる。ピココード命令格納は、EPCチップ内部で統合される。入力フレームは、データフロー・チップ202(204)から、データフロー・インタフェース302を介して受け取られ、パケット・バッファ303に一時的に格納される。ディスパッチ機能は、入力フレームをプロトコル・プロセッサ301に分配する。12個の入力キューのカテゴリは、フレームが特定のスレッドに向けられるように、またはすべてのスレッドに分配されるようにする。完了ユニット機能は、プロトコル・プロセッサ301の出力の所でフレーム順序が確実に維持されるようにする。
【0043】
組込み型PowerPC(R)マイクロプロセッサのコア304が、より高いレベルのシステム管理ソフトウェアの実行を可能にする。外部DDR SDRAMへの18ビットのインタフェースが、最大64Mバイトの命令格納を提供する。32ビットのPCIインタフェースが、他の制御機能への接続のために、またはMACやフレーマ構成要素などの周辺回路を構成するために提供される。
【0044】
ハードウェアベースの分類機能は、フレームがプロトコル・プロセッサにディスパッチされると、それを解析して、公知のレイヤ2およびレイヤ3のフレーム形式を識別する。分類装置の出力は、各フレームの処理を開始する前に、ピココード・スレッドの状態の事前条件を決定するのに使用される。
【0045】
テーブル探索エンジンは、テーブル探索を実施するためのハードウェア補助を提供する。テーブルは、探索を終了すると「リーフ」項目のアドレスが得られる、パトリシア・ツリーとして保持される。リーフ項目は、ピココードがそれを使ってフローに適した情報を格納する。3つのテーブル探索アルゴリズムがサポートされる。すなわち、複合規則に基づく探索のための、固定マッチ(FM)、最長接頭部マッチ(LPM)、およびユニークなソフトウェア管理ツリー(SMT)アルゴリズムである。制御記憶メモリ207(208)は、数百万のフローのワイア速度の分類をサポートするために、大型DRAMテーブルおよび高速SRAMテーブルを提供する。ルックアップ性能の向上のために、任意選択でSRAMインタフェースを、連想記憶装置(CAM)(図2の217)の接続に使用することもできる。
【0046】
ピココードは、データフロー・チップ202(204)に接続されたデータ記憶メモリ205(206)を読み出し、かつそこに書き込むことによって、フレームを直接編集することができる。性能をより高めるために、ピココードは、データフロー・チップに、フレームが出力ポートを介して送信されるときに修正を実施するよう命令するフレーム変更コマンドを生成することもできる。
【0047】
カウンタ管理機能は、統計カウンタを保持する際にピココードを助ける。オンチップのSRAMおよび任意選択の外部SRAM(方針マネージャと共有)を、フレームが到着する間隔の割合で起こるイベントをカウントするのに使用することができる。外部制御記憶機構DDR SDRAM(テーブル探索機能と共有)の1つを、より遅い割合で起こるイベント用の多数のカウンタを保持するのに使用することができる。
【0048】
方針マネージャ機能は、入力トラフィック・フローをポリシングする際に、ピココードを助ける。この機能は、選択可能なパラメータおよびアルゴリズムを有する数千のリーキー・バケット・メータを保持する。千個のポリシング制御ブロック(PolCBs)をオンチップのSRAM中に保持することができる。任意選択の外部SRAM(カウンタ・マネージャと共有)を追加して、PolCBsの数を増やすことができる。
【0049】
データフロー・チップ202(204)は、「ポート」または「交換」インタフェース・モードで動作するように独立して構成することができる、送受信インタフェースを実装する。ポート・モードでは、データフロー・チップは、イーサネット(R)MACやPOS(Packet−Over−SONET)フレーマなど様々なネットワーク媒体を接続するためフレームを交換する。これは、受信コントローラ305および送信コントローラ306によって行われる。交換モードでは、データフロー・チップは、セル・ベースの交換ファブリックに接続するため64バイトのセル・セグメントの形のフレームを交換する。データフロー・チップの送受信インタフェース306および305によってそれぞれ実装される物理バスは、64ビットのデータ・バスである。インタフェースは、業界POSフレーマの直接接続をサポートし、プログラマブル・ゲート・アレイ(FPGA)論理を介して、業界イーサネット(R)MACおよび交換ファブリック・インタフェース(CSIXなど)に適合させることもできる。
【0050】
データベース・アービタ307を介してデータフロー・チップ202(204)に接続された大型データ・メモリ205(206)は、入力フレームの速度が出力フレームの速度を超えたときにトラフィックのバーストを吸収する、「ネットワーク・バッファ」を提供する。大型データ・メモリはまた、IPフラグメントを再アセンブルするリポジトリとしても、TCP終了などのアプリケーションにおいて可能な再伝送を待つフレームのためのリポジトリとしても働く。ポート・インタフェースおよび交換インタフェースのための持続型送受信帯域幅を提供するために、DRAMインタフェースが複数サポートされる。追加の帯域幅が、EPCピココードによるデータ記憶メモリの直接読出し/書込みのために予約される。データ記憶メモリ205(206)は、バッファのリンク・リストを介して管理される。2つの外部SRAMが、バッファおよびフレームのリンク・リストの保持に使用される。
【0051】
データフロー・チップ202(204)は、データ記憶メモリ205(206)のオーバフローを防止するために、「ランダム早期破棄」(RED)などの高度な輻輳制御アルゴリズムを実装する。輻輳制御アルゴリズムは、どちらもEPCインタフェース308を介して通信する、EPCピココードが提供する入力と、EPCポリシング機能と、データフローおよびスケジューラ・チップが保持する、様々なキューの閾値とによって動作する。データフロー内部の「破棄確率メモリ」は、EPCピココードによって保持され、様々な標準または固有の破棄アルゴリズムの実装を可能にする輻輳制御機能によって参照される。
【0052】
データフロー・チップ202(204)は、フレーム変更制御ブロック(FACB)(図5)に格納されたコマンドに基づいてフレーム変更論理309内でフレーム変更を実施する、多くのハードウェア補助機能からなるセットを実装する。よく知られている変更には、以下のフレーム・フィールドの修正がある。すなわち、イーサネット(R)DA/SA、VLAN、DIX、SAP、SNAP、MPLS、IP TTL、IP TOSバイト、およびIPヘッダ・チェックサムである。FACBは、2つの目的を果たす。すなわち、マルチキャスト・アルゴリズム内で使用する参照FCBアドレスを格納し、フレーム変更論理309(データフローの伝送コントローラ306の一部)に、フレーム・データが出力ポートを介して送信されるときにそのデータに修正を施すよう命令するフレーム変更コマンドを格納する。フレーム変更論理309が実施する公知のフレーム修正の例として、以下のものがある。すなわち、イーサネット(R)宛先またはソース・アドレス・オーバレイ、イーサネット(R)・プロトコル・タイプ・オーバレイ、マルチプロトコル・ラベル交換(MPLS)ラベルの挿入および削除、インターネット・プロトコル(IP)活動時間(TTL)減分などである。フレーム変更論理は、本発明の実施に必要ないことに留意されたい。データフロー・チップ202(204)がフレーム変更論理機能を含まない場合でも、同じマルチキャスト技術を使用することができる。
【0053】
データフロー・チップ202(204)は、異なる出力ポートまたはターゲットの宛先向けのフレームのために別々の出力キューが保持される、「仮想出力キュー」として知られる技術を実装する。この方式は、単一の出力ポートが閉塞される場合に「ラインの先頭の閉塞」が起こるのを防止する。優先順位が高いキューおよび低いキューが各出力ポートごとに保持されて、予約されたまたは予約されていない帯域幅のトラフィックがそれぞれ独立にキューに入れられるようにする。
【0054】
任意選択によるスケジューラ・チップ211(212)は、「保証帯域幅」、「ベスト・エフォート」、「ピーク帯域幅」など、様々なアルゴリズムを使用してスケジューリングできるフロー・キューを保持することにより、「サービス品質」を提供する。2つの外部SRAMは、アクティブなフレームが数十万個入っている、数千のフロー・キューを保持するのに使用される。スケジューラ・チップ211(212)は、フレームがフロー・キューごとの閾値に基づいて破棄されるようにすることによって、データフロー・チップの輻輳制御アルゴリズムを補足する。
【0055】
データフロー202(204)、EPC209(210)およびスケジューラ211(212)の間のすべての情報の流れは「メッセージ」と呼ばれる形で交換されることに留意されたい。交換ファブリック201、データフロー202、およびPOSフレーマ/イーサネット(R)MAC203の間の情報の流れは、「フレーム」の形である。メッセージは、データフロー、EPCおよびスケジューラ・チップの間の「制御」情報の交換にのみ使用される。このようなメッセージの例として、次のようなものがある。すなわち、ディスパッチ、キュー作成、中断/例外、データ読出し、データ書込み、レジスタ読出しおよびレジスタ書込みである。メッセージは、要求からなるものでも、応答からなるものでもよい。
【0056】
一般的なメッセージ形式を図4に示す。図4を参照すると、メッセージ形式は、以下の構成要素を含む。
メッセージID:Message_IDフィールドは、メッセージ・タイプを一義的に識別する、メッセージの第1ワードにある符号化された8ビットの値である。
メッセージ・パラメータ:Message_Parametersフィールドは、メッセージの第1ワードにある24ビットの値である。このフィールドは、以下のような様々な目的のために、メッセージ・タイプごとに指定することができる。
・他のメッセージ・タイプを定義するために、Message_IDフィールドへの拡張として使用することができる。
・メッセージの目的をさらに修飾(qualify)するために、各メッセージ・タイプに基づいて使用することができる。
・「シーケンス番号」、または応答で戻されたデータを相関させる他の「参照id」情報を搬送するのに使用することができる
・可変長メッセージの場合、メッセージ長を指定するのに使用することができる。
・そのメッセージ特有の他のデータ・パラメータを搬送するのに使用することができる。
データ:メッセージの残りの部分は、「0」〜「N−1」個の、追加の32ビットの「データ」ワードで構成することができる。
【0057】
マルチキャスト伝送
このセクションでは、マルチキャスト・フレームのキュー作成および伝送の処理を説明する。図5は、マルチキャスト伝送の例を示す。この場合、マルチキャスト・フレームは、3つの宛先に伝送されつつあり、したがって3つの「インスタンス」を有すると言うことができる。フレームを最初に受け取ったときに割り当てられたFCBは、フレームの寿命がある間保存され、「参照FCB」501と呼ばれる。ネットワーク・プロセッサは、(図5にFCB1、FCB2、およびFCB3で示す)さらなるFCB5021、5022、5023、およびバッファ5031、5032、5033を取得し、それらを元の参照フレーム501にリンクしてマルチキャスト・フレーム伝送の各インスタンスを作成する。次いで、各インスタンスは伝送のためにキューに入れられる。
【0058】
各インスタンスに独自のFCB502およびバッファ503は、各インスタンスが伝送されるたびに破棄される。しかし、参照FCB501およびそれに関連づけられたバッファ5051〜5055は、すべてのインスタンスが伝送された後でのみ破棄される。フレームの各インスタンスは、異なるポートを介して送信することができるので、キューに入れられたのとは異なる順序で伝送を完了することができる。マルチキャスト・カウンタ(MCC)は、いつすべてのインスタンスが伝送されて、参照フレームを破棄することができるかを判定するのに使用される。MCCは、図5の左上に示すように、参照FCB501の未使用のNFAフィールドに格納される。MCCは、マルチキャストにおけるインスタンス数で初期化され、その後、各マルチキャスト・インスタンスが伝送されるたびに減分される。MCCがゼロになると、参照FCB501およびそれに関連づけられたバッファ5051〜5055は、それぞれ空きFCBおよび空きバッファ・キューに戻されることによって破棄される。
【0059】
参照FCB501および他のFCB5021、5022および5023はすべて、同じFCBの空きプールから来たものである。FCBが参照FCBとして使用されているとき、NFA/MCCフィールドはMCCとして使用される。FCBが正規のもの(非参照FCB)として使用されているとき、NFA/MCCフィールドはNFAとして使用される。QCBとFCBの間の関係は、図1に示してある。FCB5021、5022および5023はすべて、伝送のためにキューに入れられる。データフローは、各出力キューごとにQCBを含む。各出力キューは通常、ポート(すなわち、POSフレーマ/イーサネット(R)MACを介したネットワーク通信リンク、または交換ファブリックを介した別のネットワーク・プロセッサ)と関連づけられる。図5に示す3つのマルチキャスト・インスタンスはそれぞれ、出力キューに入れられる。3つのインスタンスをすべて、同じポートを介して送信するためにキューに入れることも、異なるポートを介して送信するためにキューに入れることも可能である。しかし、3つのFCBはそれぞれ、ちょうど1つのポートを介して送信する場合には、フレームの1つのキューに配置される。こうしたFCB中のNFAフィールドは、キュー中のフレームのリンク・リストを形成するのに使用される。ただし、参照FCB501は、どのキューにも含められない。参照FCBは、フレームのすべてのインスタンスが伝送された後で元の(参照)フレームのバッファをバッファの空きキューに戻すのに使用されるパラメータを格納する。参照FCB501は、フレームのキューに含められず、NFAフィールドは、リンク・リストの形成に必要ない。そうではなく、NFAのこれらのビットは、MCCを記憶するために使用される。各フレーム・インスタンスが伝送されるたびに参照FCBを配置するのに使用されるフレーム・データの前に、参照FCBのアドレスがFACB(図5)に格納される。
【0060】
EPCチップ202は、マルチキャスト・フレームの各インスタンスをキューに入れるために、以下の動作を実施する。
【0061】
1.FCB502を空きFCBキューから取得して、インスタンスに割り当てる。
【0062】
2.FACBおよびインスタンスに独自のヘッダ・データを含めるための、1つまたは複数のバッファ503を空きバッファ・キューから取得する。FACBの使用は、マルチキャスト伝送に必須である。
【0063】
3.インスタンスに独自のデータを、上で取得したバッファ503に書き込む。マルチキャストの異なるインスタンスが異なるヘッダ・データを有するのは一般的である。たとえば、マルチキャストのあるインスタンスは、イーサネット(R)・ポートを介して送信されるのでイーサネット(R)・ヘッダを有し、別のインスタンスは、POSポートを介して送信されるのでPOSヘッダを必要とする。
【0064】
4.独自のインスタンス・バッファに関連づけられたBCB504は、BCBを元の「参照フレーム」のバッファに接続するリンク・リストを作成するために書き込まれる。独自のインスタンス・バッファは、参照フレームの第1バッファにリンクされる必要はない。参照フレームの先行バイトの一部がインスタンスから除外される場合、インスタンスに独自のバッファを参照フレーム中の第1バッファとは別のバッファにリンクすることができる。次のバッファ中の有効バイトを反映するSBPおよびEBPの値が、各BCB504に書き込まれる。これにより、インスタンスに独自の最後のバッファに対するBCB504が、他のインスタンス用に指定された他のバイト・オフセットとは異なる、参照フレームからリンクされた第1のバッファ中の開始バイト・オフセットを指定するようになる。TBUFビットは、次のバッファが、そのデータが伝送された後ですぐに空きバッファ・キューに戻されるべきかどうかを示すように設定される。インスタンスに独自の最後のバッファは、そのBCB504中のTBUFビットを0に設定しなければならない。インスタンスに独自の他のすべてのバッファのBCB504中のTBUFビットは、そのTBUFビットを1に設定しなければならない。
【0065】
5.次いで、ネットワーク・プロセッサが、キュー作成動作を発行して、インスタンスを伝送のためにデータフロー202に解放する。キュー作成動作の一部として、以下の情報がデータフロー202に提供される。
【0066】
・ターゲット・キューの番号:どの出力キューにマルチキャスト・インスタンスを入れるかを指定する。
【0067】
・FCBA:ネットワーク・プロセッサによってマルチキャスト・インスタンスに割り当てられたフレーム制御ブロック・アドレス(FCBA)を指定する。
【0068】
・BCNT:フレームの全長を指定する。各マルチキャスト・インスタンスごとに異なることがある。
【0069】
・FBA:マルチキャスト・インスタンスにおける第1バッファ101のアドレスを指定する。第1バッファ101は、常にマルチキャスト・インスタンスに独自である。
【0070】
・SBP/EBP:第1バッファ101中の有効データの開始および終了バイト位置を指定する。
【0071】
・Type:伝送されるフレームのタイプおよび形式を指定する。「マルチキャスト」フレームの場合、常にバイナリ値「11」に設定される。この値は、1)フレームがマルチキャスト・インスタンスであること、2)第1バッファ101がFACBを含むこと、3)第1バッファ101が非常駐バッファ(TBUF=1)であることを意味する。
【0072】
・FACB:フレーム・データが伝送されるときにそれに適用される、データフロー202に関する変更を指定する、フレーム変更制御ブロック(FACB)情報。FACBは、マルチキャスト・インスタンスごとに異なるフレーム変更要求を含むことができる。ただし、各インスタンスは、すべてのインスタンスが伝送された後で参照フレームを破棄するのに使用される、参照FCB501のアドレスを含まなければならない。
【0073】
・マルチキャスト動作:マルチキャスト・インスタンスをキューに入れるとき、ネットワーク・プロセッサが、現在のキュー作成がマルチキャスト伝送の最初、中間、または最後のインスタンスのどれであるかを指定する。
*01:マルチキャストの最初:キューに入れられる最初のインスタンスは、「マルチキャストの最初」と識別される。
*10:マルチキャストの中間:マルチキャスト・フレームが2つより多いインスタンスから構成される場合、間にあるインスタンスはどれも「マルチキャストの中間」と識別される。
*11:マルチキャストの最後:キューに入れられる最後のインスタンスは、「マルチキャストの最後」と識別される。
【0074】
以下では、キュー作成動作の受信から、ターゲット出力ポートを介したマルチキャスト・フレーム・インスタンスの送信までのデータフロー・チップの動作を説明する。
【0075】
1.データフロー・チップ202は、情報が書き込まれるバッファ・アドレスおよびオフセットとしてキュー作成中に提供されるFBAおよびSBPの値を使って、FACB情報をフレームの第1バッファ5021に書き込む。
【0076】
2.データフロー・チップ202は、FACB情報内部から、参照FCB501のアドレスを抽出する。このアドレスを使用して、MCCの値を記憶する参照FCB501にアクセスする。MCCの値は、参照FCB501のNFAフィールドに格納される(参照フレームがどのキュー中にも直接存在しないので、参照FCB501のNFAフィールドは未使用である)。MCC506の値は、キュー作成に基づいて以下のように更新される。
・マルチキャスト動作が01(マルチキャストの最初)の場合、MCC506は2に設定される。
・マルチキャスト動作が10(マルチキャストの中間)の場合、MCC506は1だけ増分される。
・マルチキャスト動作が11(マルチキャストの最後)の場合、MCC506は変更されない。
【0077】
3.データフロー・チップ202は、FBA、SBP、EBPおよびTypeの値を、キュー作成中に提供されるFCBAの値で指定されたFCB502に書き込む。
【0078】
4.データフロー・チップ202は、キュー作成中に提供されるターゲット・キュー番号の値で指定される、要求された出力キューにフレームを入れる。これは以下のように行われる。
a.それ以前に出力キュー中にフレームがなかった場合、出力キューのQCB104(図1)中の先頭FCBAおよび末尾FCBAには、キュー作成中に提供されるFCBAの値が書き込まれる。QCB104中の先頭BCNTには、キュー作成中に提供されるBCNTの値が書き込まれる。QCB104中のQCNTは、1だけ増分される。
b.出力キュー中にすでに1つまたは複数のフレームがあった場合、それ以前は出力キューの末尾にあったフレームに対するFCB502のNFAおよびBCNTフィールドが書き込まれる。NFAおよびBCNTフィールドには、キュー作成中に提供されるFCBAおよびBCNTの値が書き込まれる。次いで、出力キューのQCB104(図1)の末尾FCBAフィールドには、キュー作成中に提供されるFCBAの値が書き込まれる。QCB104中のQCNTは、1だけ増分される。
【0079】
5.フレームは、出力キューの先頭に到達すると、出力ポートを介して送信するためにキューからはずされる。先頭FCBAおよび先頭BCNTフィールドは、出力キューのQCB104から読み出される。先頭BCNTの値は、フレーム伝送の間使用するために、作業用バイト・カウント・レジスタにロードされる。先頭FCBAの値は、キューの先頭にあるFCB502の内容を読み出すのに使用される。FCB502から読み出されるNFAおよびBCNTの値は、QCB104(図1)の先頭FCBAおよび先頭BCNTフィールドを更新するのに使用される。FCB502から読み出されるFBA、SBP、EBP、およびTypeフィールドは、第1バッファ5041からのデータ伝送中に使用するために、作業用レジスタにロードされる。次いで、FCB502は、そのアドレスが空きFCBキューの末尾にプッシュされると、破棄される。QCB104中のQCNTは、1だけ減分される。
【0080】
6.FCB103から読み出されたFBA、SBP、EBP、およびTypeの値は、フレームの第1バッファ101の内容の位置決定および読出しに使用する。Typeフィールドはマルチキャストを示し、すなわちFACBが存在することを意味する。したがって、次いでFACBが、読み出されてフレーム変更論理に転送される。このフレーム変更論理は、フレーム・データが伝送されるとき、それに要求された修正を施すのに使用する。参照FCB501のアドレスも、FACBから抽出され、フレーム伝送が完了した後で使用するために、作業用レジスタに格納される。バッファ101(存在するものがある場合)のフレーム・データは、次いで、出力ポートを介して送信するために、出力FIFO(先入れ先出しバッファ)に配置される。出力FIFOに配置されるバイト数は、作業用バイト・カウント・レジスタと、SBPおよびEBPの値で示される、バッファ101中の有効バイト数とのうちの小さい方である。作業用バイト・カウント・レジスタは、次いで、出力FIFOに配置されたデータのバイト数だけ減分される。作業用バイト・カウント・レジスタ中の値が依然としてゼロより大きい場合、NBA、SBP、EBP、およびTBUFの値が、第1バッファ101に対応するBCB102から読み出され、次のバッファ101の伝送に使用するために作業用レジスタにロードされる。第1バッファ101は、次いで、そのバッファ・アドレスが空きバッファ・キューの末尾にプッシュされたとき、破棄される。
【0081】
7.BCB102から読み出されたNBA、SBP、EBP、およびTBUFの値は、フレームの次のバッファ101の内容の位置決定および読出しに使用される。バッファ101のフレーム・データは、次いで、出力ポートを介して送信するために出力FIFOに入れられる。出力FIFOに入れられるバイト数は、作業用バイト・カウント・レジスタと、SBPおよびEBPの値で示される、バッファ101中の有効バイト数とのうちの小さい方である。作業用バイト・カウント・レジスタは、次いで、出力FIFOに入れられたデータのバイト数だけ減分される。作業用バイト・カウント・レジスタ中の値が依然としてゼロより大きい場合、NBA、SBP、EBP、およびTBUFの値は、現在のバッファ101に対するBCB102から読み出され、次のバッファ101の伝送に使用するために作業用レジスタにロードされる。現在のバッファ101に対するTBUFビットが設定されている場合、現在のバッファ101は、そのバッファ・アドレスを空きバッファ・キューの末尾にプッシュすることによって、破棄される。次いで、作業用バイト・カウント・レジスタがゼロに減分されるまで、ステップ7を繰り返す。
【0082】
8.フレーム伝送の完了後、それ以前に作業用レジスタに格納されていた参照FCBアドレスを、参照FCB501のNFAフィールドに格納されていた、参照FCB501中のMCCフィールドを読み出すのに使用する。次いで、以下の2つの動作のうち一方を実施する。
・MCCの値が0より大きい場合、その値を1だけ減分して参照FCB501のNFAフィールドに戻して書き込む。次いで、このマルチキャスト・インスタンスの伝送が完了する。ただし、他のマルチキャスト・インスタンスが伝送を完了していないので、参照フレームは破棄しなくてよい。
・MCCの値が1の場合、参照FCB501は、参照フレームに関連づけられたFCBおよびバッファを空きキューに戻すために、「破棄キュー」に入れられる。次いで、マルチキャスト・フレームのすべてのインスタンスの伝送が完了する。
【0083】
静的フレーム伝送も、図5にあてはまる。FCBおよびバッファが、空きFCBおよびバッファ・キューに戻されず、参照FCB501中のMCCの値が減分されないという点を除けば、静的フレーム伝送は、マルチキャスト伝送と同一である。静的フレーム伝送は、以降の再伝送のためにフレームのコピーを保持する必要がある場合に使用される。図5に示すフレーム・インスタンスはそれぞれ、(FCBのタイプ・フィールドを、静的フレームを示すようにバイナリ「01」に設定することによって)1回または複数回、静的フレームとして伝送することができる。フレーム・インスタンスは、(FCBのTypeフィールドを、マルチキャスト・フレームを示すようにバイナリ「11」に設定することによって)最後の伝送が行われているとき、通常のマルチキャスト・フレームとして伝送される。したがって、各フレーム・インスタンスは、1〜「N」回、静的フレームとして伝送することができ、その後で通常のマルチキャスト・フレームとして1回伝送される。各インスタンスが通常のマルチキャスト・フレームとして伝送されると、参照フレームの参照FCB501およびバッファは、空きFCBおよびバッファ・キューに戻される。EPCチップ209内で実行されるピココード・ソフトウェアが、フレーム・インスタンスを静的またはマルチキャスト・フレームのどちらとして伝送するか決定する。
【0084】
データフロー・チップ202は、フレームのFCB103およびバッファ101が空きキューに戻されないという1つの例外を除き、「FACBを有するユニキャスト」のフレームのTypeと全く同じ静的フレームを伝送する。次いで、EPCチップ202は、同じFCB103を、フレームを再伝送するように指定して、別のキュー作成動作を発行することができる。フレームは、静的フレーム・タイプの値を指定することによって、何回でも再伝送することができる。静的フレーム・タイプは、ユニキャストまたはマルチキャスト・フレーム・タイプいずれの再伝送の許可にも適用することができる。マルチキャストの場合、TBUFビットが設定されていてもバッファが破棄されないように、静的フレームではTBUFパラメータは無視される。
【0085】
静的フレームの最後の再伝送が実施されるとき、静的フレームは、Typeバイナリ「00」(FACBを有するユニキャスト)、またはTypeバイナリ「11」(マルチキャスト)として、単にキューに入れられる。次いで、フレームは、前のセクションで説明したのと同様にして伝送され、FCB103および関連づけられたバッファ101は、空きキューに戻される。
【0086】
図6は、本発明の好ましい実施形態の動作を説明するフロー図を示す。処理は、機能ブロック601で始まり、EPC209が、データフロー・チップ202がフレームをEPC209にディスパッチするために、クレジットを発行する。判断ブロック602で、フレームがディスパッチされたかどうかに関する判定が行われる。ディスパッチされていない場合、機能ブロック603で待機する。フレームがディスパッチされると、機能ブロック604で、EPC209は、「N」個の空きFCBアドレスの借用をデータフロー・チップ202に要求する。判断ブロック605で、FCBアドレスが転送されたかどうかに関する判定が行われる。転送されていない場合、処理は機能ブロック606で待機する。FCBアドレスが転送された場合、機能ブロック607で、EPC209は、「N」個のバッファの借用をデータフロー・チップ202に要求する。次いで、判断ブロック608で、バッファが転送されたかどうかに関する判定が行われる。転送されていない場合、処理は機能ブロック609で待機する。バッファが転送されると、機能ブロック610で、EPC209は、1つまたは複数の新しい第1バッファを元の第1バッファ101に連鎖する。次に、機能ブロック611で、EPC209は、FACB(フレーム変更制御ブロック)情報を有する各インスタンスをキューに入れる。最後に、機能ブロック612で、EPC209は、パケットが1つ伝送される度にカウンタを更新するよう、データフロー・チップ202に信号を送る。同様の処理が、EPCチップ210およびデータフロー・チップ202にも適用される。ここで説明したフローは、入力にも出力にも等しく適用される。図2に示すように、3つの主要チップ、すなわちEPC、データフロー、およびスケジューラが、入力および出力の両方で使用される。データの流れる方向が異なるだけである。マルチキャストなど、すべての機能が入力および出力において同一である。
【図面の簡単な説明】
【0087】
【図1】データ構造を示すブロック図である。
【図2】本発明の好ましい実施形態のチップ・セット・システム環境を示すブロック図である。
【図3】図2のチップ・セット中で使用する、組込みプロセッサ複合体およびデータフロー・チップをより詳細に示すブロック図である。
【図4】一般的なメッセージ形式を示す図である。
【図5】本発明の好ましい実施形態によるデータ構造を示すブロック図である。
【図6】本発明の好ましい実施形態によって実装される処理を示すフロー図である。
Claims (10)
- ネットワーク・プロセッサにおけるマルチキャスト伝送方法であって、
伝送されるフレームを、リンク・リストによって互いに連鎖された一連のバッファに格納するステップと、
バッファ制御ブロックを各バッファに関連づけるステップと、
フレーム制御ブロックを各フレームに関連づけるステップと、
ネットワーク・プロセッサによるディスパッチを待つために、フレームをキュー中で受け取るステップと、
キュー制御ブロックを、前記伝送されるフレーム・キューに関連づけるステップと、
追加バッファおよび追加フレーム制御ブロックを各マルチキャスト・ターゲットに割り当て、これらの追加フレーム制御ブロックを、前記フレームに関連づけられた前記元のフレーム制御ブロックとリンクするステップと、
前記フレームが前記マルチキャスト・ターゲットのそれぞれにいつ送られたかを判定するために、マルチキャスト・カウンタを使用するステップと、
前記フレームが各ターゲットに送られると、各マルチキャスト・ターゲットに割り当てられた前記バッファおよびフレーム制御ブロックを空きキューに戻すステップと、
前記フレームが前記マルチキャスト・ターゲットのすべてに送られた後で、前記元のバッファおよびフレーム制御ブロックを前記空きキューに戻すステップとを含む、マルチキャスト伝送方法。 - 各バッファに関連づけられた前記バッファ制御ブロックが、バッファをフレームに連鎖するリンク・リストを形成し、かつ複数のフィールドを含み、前記フィールドには、
前記フレーム中の次のバッファへのポインタを格納するフィールド、
次のフレーム・バッファ中のデータの最初の有効バイトのオフセットを格納するフィールド、
前記次のフレーム・バッファ中のデータの最後の有効バイトのオフセットを格納するフィールド、および
前記フレーム中の次のバッファを、前記空きバッファまたはキューに戻すべきか、それともマルチキャスト伝送を続けるために保持するべきかを示すフィールドがある、請求項1に記載のマルチキャスト伝送のための方法。 - 各フレームに関連づけられた前記フレーム制御ブロックが、フレームをキューに連鎖するリンク・リストを形成し、かつ複数のフィールドを含み、前記フィールドには、
前記キュー中の次のフレームへのポインタを格納するフィールド、
前記キュー中の次のフレームの総バイト数のカウントを格納するフィールド、
フレーム中の第1バッファの前記アドレスを格納するフィールド、
フレームの第1バッファ中の有効データの開始バイト位置を格納するフィールド、
フレームの第1バッファ中の有効データの終了バイト位置を格納するフィールド、および
伝送される前記フレームの形式およびタイプに関する情報を格納するフィールドがある、請求項1または2に記載のマルチキャスト伝送のための方法。 - フレームをキュー中で受け取る前記ステップが、
前記空きバッファ・キューの先頭から空きバッファ・アドレスをポップするステップと、
前記空きフレーム制御ブロック・キューの先頭から空きフレーム制御ブロックをポップするステップと、
フレーム・データを前記バッファに書き込むステップと、
第1バッファ・アドレス、前記第1バッファ中の有効データの開始および終了バイト位置を含む制御情報を、前記フレーム制御ブロックに書き込むステップと、
作業用バイト・カウント・レジスタを前記第1バッファに書き込むバイト数に設定するステップと、
前記フレーム全体がバッファに書き込まれるまでこの処理を繰り返すステップと、
前記ネットワーク・プロセッサへのディスパッチを待つために、前記フレームを入力キューの末尾に追加するステップとをさらに含む、請求項1ないし3のいずれかに記載のマルチキャスト伝送のための方法。 - 伝送される前記フレーム・キューに関連づけられた前記キュー制御ブロックが、複数のフィールドを含み、前記フィールドには、
前記キューの先頭にある前記フレームに関連づけられた前記フレーム制御ブロックの前記アドレスを格納するフィールド、
前記キューの先頭にある前記フレーム中の有効バイトの総数のカウントを格納するフィールド、および
前記キューの末尾にある前記フレームに関連づけられた前記フレーム制御ブロックの前記アドレスを格納するフィールドがある、請求項1ないし4のいずれかに記載のマルチキャスト伝送のための方法。 - 方法に関する請求項1ないし5のいずれかに記載の方法の前記各ステップをコンピュータに実行させる、コンピュータ・プログラム。
- マルチキャスト伝送をサポートするネットワーク・プロセッサであって、
伝送されるフレームを、リンク・リストによって互いに連鎖された一連のバッファに格納する手段と、
バッファ制御ブロックを各バッファに関連づけ、フレーム制御ブロックを各フレームに関連づける手段と、
ディスパッチを待つために、フレームをキュー中で受け取る手段と、
キュー制御ブロックを、伝送される前記フレーム・キューに関連づける手段と、
追加バッファおよび追加フレーム制御ブロックを各マルチキャスト・ターゲットに割り当て、これらの追加フレーム制御ブロックを、前記フレームに関連づけられた前記元のフレーム制御ブロックにリンクする手段と、
前記フレームが前記マルチキャスト・ターゲットのそれぞれにいつ送られたかを判定するために、マルチキャスト・カウンタを使用する手段と、
前記フレームが各ターゲットに送られると、各マルチキャスト・ターゲットに割り当てられた前記バッファおよびフレーム制御ブロックを空きキューに戻し、かつ、前記フレームが前記マルチキャスト・ターゲットのすべてに送られた後で、前記元のバッファおよびフレーム制御ブロックを前記空きキューに戻す手段とを備える、ネットワーク・プロセッサ。 - 各バッファに関連づけられた前記バッファ制御ブロックが、バッファをフレームに連鎖するためにリンク・リストを形成し、かつ複数のフィールドを含み、前記フィールドには、
前記フレーム中の次のバッファへのポインタを格納するフィールド、
フレームの次のバッファ中のデータの最初の有効バイトのオフセットを格納するフィールド、
フレームの次のバッファ中のデータの最後の有効バイトのオフセットを格納するフィールド、および
前記フレーム中の次のバッファを、前記空きバッファまたはキューに戻すべきか、それともマルチキャスト伝送を続けるために保持するベきかを示すフィールドがある、請求項7に記載のネットワーク・プロセッサ。 - 各フレームに関連づけられた前記フレーム制御ブロックが、フレームをキューに連鎖するためのリンク・リストを形成し、かつ複数のフィールドを含み、前記フィールドには、
前記キュー中の次のフレームへのポインタを格納するフィールド、
前記キュー中の次のフレームの総バイト数のカウントを格納するフィールド、
フレーム中の第1バッファの前記アドレスを格納するフィールド、
フレームの第1バッファ中の有効データの開始バイト位置を格納するフィールド、
フレームの第1バッファ中の有効データの終了バイト位置を格納するフィールド、および
伝送される前記フレームの形式およびタイプに関する情報を格納するフィールドがある、請求項7または8に記載のネットワーク・プロセッサ。 - フレームをキュー中で受け取る前記手段が、
前記空きバッファ・キューの先頭から空きバッファ・アドレスをポップする手段と、
前記空きフレーム制御ブロック・キューの先頭から空きフレーム制御ブロックをポップする手段と、
フレーム・データを前記バッファに書き込む手段と、
第1バッファ・アドレス、第1バッファ中の有効データの開始および終了バイト位置を含む制御情報を、前記フレーム制御ブロックに書き込む手段と、
作業用バイト・カウント・レジスタを、第1バッファに書き込むバイト数に設定する手段と、
前記フレーム全体がバッファに書き込まれるのに応答して、前記ネットワーク・プロセッサへのディスパッチを待つために、前記フレームを入力キューの末尾に追加する手段とを備える、請求項7、8、または9に記載のネットワーク・プロセッサ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/839,079 US6836480B2 (en) | 2001-04-20 | 2001-04-20 | Data structures for efficient processing of multicast transmissions |
PCT/GB2002/000383 WO2002087156A2 (en) | 2001-04-20 | 2002-01-28 | Method and device for multicast transmissions |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004524781A true JP2004524781A (ja) | 2004-08-12 |
JP3777161B2 JP3777161B2 (ja) | 2006-05-24 |
Family
ID=25278799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002584540A Expired - Lifetime JP3777161B2 (ja) | 2001-04-20 | 2002-01-28 | マルチキャスト伝送の効率的処理 |
Country Status (10)
Country | Link |
---|---|
US (1) | US6836480B2 (ja) |
EP (1) | EP1380133B1 (ja) |
JP (1) | JP3777161B2 (ja) |
KR (1) | KR100690418B1 (ja) |
CN (1) | CN1219384C (ja) |
AT (1) | ATE291802T1 (ja) |
AU (1) | AU2002225237A1 (ja) |
DE (1) | DE60203380T2 (ja) |
TW (1) | TW573413B (ja) |
WO (1) | WO2002087156A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007532103A (ja) * | 2004-04-07 | 2007-11-15 | アキシオジェネシス エージー | 非侵襲性生体外機能組織検定システム |
Families Citing this family (101)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6937606B2 (en) * | 2001-04-20 | 2005-08-30 | International Business Machines Corporation | Data structures for efficient processing of IP fragmentation and reassembly |
US7167471B2 (en) * | 2001-08-28 | 2007-01-23 | International Business Machines Corporation | Network processor with single interface supporting tree search engine and CAM |
US7206310B1 (en) * | 2001-12-28 | 2007-04-17 | Redback Networks Inc. | Method and apparatus for replicating packet data with a network element |
WO2003067381A2 (en) * | 2002-02-04 | 2003-08-14 | Intel Corporation | Table driven programming system for a services processor |
US7680043B2 (en) * | 2002-03-20 | 2010-03-16 | International Business Machines Corporation | Network processor having fast flow queue disable process |
US7230922B1 (en) | 2002-04-05 | 2007-06-12 | Cingular Wireless Ii, Llc | Real-time rate control mechanism for multi-rate data transmissions in wireless networks |
US7685008B2 (en) * | 2004-02-20 | 2010-03-23 | Accenture Global Services Gmbh | Account level participation for underwriting components |
WO2006015513A1 (en) * | 2004-08-12 | 2006-02-16 | Intel Corporation | Method and system for processing multicast packets |
US20060187963A1 (en) * | 2005-02-18 | 2006-08-24 | International Business Machines Corporation | Method for sharing single data buffer by several packets |
US7466715B2 (en) * | 2005-03-28 | 2008-12-16 | International Business Machines Corporation | Flexible control block format for frame description and management |
US7474662B2 (en) * | 2005-04-29 | 2009-01-06 | International Business Machines Corporation | Systems and methods for rate-limited weighted best effort scheduling |
KR100717239B1 (ko) * | 2005-06-22 | 2007-05-11 | 엔에이치엔(주) | 동일한 멀티캐스트 그룹에 속하는 구성원 서버들 간의신뢰성 있는 통신을 제공하기 위한 방법 및 장치 |
TWI269972B (en) * | 2005-10-21 | 2007-01-01 | Ind Tech Res Inst | Method for releasing data of storage apparatus |
US7945816B1 (en) | 2005-11-30 | 2011-05-17 | At&T Intellectual Property Ii, L.P. | Comprehensive end-to-end storage area network (SAN) application transport service |
US7779016B2 (en) * | 2006-09-14 | 2010-08-17 | International Business Machines Corporation | Parallel execution of operations for a partitioned binary radix tree on a parallel computer |
US8713582B2 (en) * | 2006-10-26 | 2014-04-29 | International Business Machines Corporation | Providing policy-based operating system services in an operating system on a computing system |
US8656448B2 (en) * | 2006-10-26 | 2014-02-18 | International Business Machines Corporation | Providing policy-based application services to an application running on a computing system |
US8032899B2 (en) | 2006-10-26 | 2011-10-04 | International Business Machines Corporation | Providing policy-based operating system services in a hypervisor on a computing system |
US20080273678A1 (en) | 2007-05-01 | 2008-11-06 | Igor Balk | Systems and methods for phone call management |
US7286661B1 (en) | 2007-05-01 | 2007-10-23 | Unison Technologies Llc | Systems and methods for scalable hunt-group management |
US20080285588A1 (en) | 2007-05-16 | 2008-11-20 | Unison Technologies Llc | Systems and methods for providing unified collaboration systems with combined communication log |
US20080285736A1 (en) | 2007-05-16 | 2008-11-20 | Unison Technolgies Llc | Systems and methods for providing unified collaboration systems with conditional communication handling |
US8296430B2 (en) | 2007-06-18 | 2012-10-23 | International Business Machines Corporation | Administering an epoch initiated for remote memory access |
US7958274B2 (en) * | 2007-06-18 | 2011-06-07 | International Business Machines Corporation | Heuristic status polling |
US9065839B2 (en) | 2007-10-02 | 2015-06-23 | International Business Machines Corporation | Minimally buffered data transfers between nodes in a data communications network |
US7984450B2 (en) * | 2007-11-28 | 2011-07-19 | International Business Machines Corporation | Dispatching packets on a global combining network of a parallel computer |
US8127235B2 (en) | 2007-11-30 | 2012-02-28 | International Business Machines Corporation | Automatic increasing of capacity of a virtual space in a virtual world |
CN101453485B (zh) * | 2007-12-07 | 2011-12-07 | 英业达股份有限公司 | 使用多播数据流进行数据传输及写入的方法 |
US20090164919A1 (en) | 2007-12-24 | 2009-06-25 | Cary Lee Bates | Generating data for managing encounters in a virtual world environment |
CN101489184B (zh) * | 2008-01-14 | 2010-12-08 | 华为技术有限公司 | 区分小区内子帧状态的方法、装置以及系统 |
CN101222344B (zh) * | 2008-01-23 | 2010-12-29 | 中兴通讯股份有限公司 | 文件组播传输方法和系统 |
JP5159375B2 (ja) | 2008-03-07 | 2013-03-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メタバースにおけるオブジェクトの真贋判断システム、方法及びそのコンピュータ・プログラム |
US7895260B2 (en) * | 2008-07-28 | 2011-02-22 | International Business Machines Corporation | Processing data access requests among a plurality of compute nodes |
KR101326983B1 (ko) * | 2009-12-21 | 2014-01-15 | 한국전자통신연구원 | 트래픽 제어 장치 및 방법 |
US9205328B2 (en) | 2010-02-18 | 2015-12-08 | Activision Publishing, Inc. | Videogame system and method that enables characters to earn virtual fans by completing secondary objectives |
US8365186B2 (en) | 2010-04-14 | 2013-01-29 | International Business Machines Corporation | Runtime optimization of an application executing on a parallel computer |
US9682324B2 (en) | 2010-05-12 | 2017-06-20 | Activision Publishing, Inc. | System and method for enabling players to participate in asynchronous, competitive challenges |
US8504730B2 (en) | 2010-07-30 | 2013-08-06 | International Business Machines Corporation | Administering connection identifiers for collective operations in a parallel computer |
CN102377576B (zh) * | 2010-08-06 | 2014-09-17 | 高通创锐讯通讯科技(上海)有限公司 | 多播的实现方法 |
US8565120B2 (en) | 2011-01-05 | 2013-10-22 | International Business Machines Corporation | Locality mapping in a distributed processing system |
US9317637B2 (en) | 2011-01-14 | 2016-04-19 | International Business Machines Corporation | Distributed hardware device simulation |
US8689228B2 (en) | 2011-07-19 | 2014-04-01 | International Business Machines Corporation | Identifying data communications algorithms of all other tasks in a single collective operation in a distributed processing system |
CN102281192B (zh) * | 2011-07-19 | 2017-09-29 | 中兴通讯股份有限公司 | 交换网络芯片的信元处理方法及装置 |
US9250948B2 (en) | 2011-09-13 | 2016-02-02 | International Business Machines Corporation | Establishing a group of endpoints in a parallel computer |
US10137376B2 (en) | 2012-12-31 | 2018-11-27 | Activision Publishing, Inc. | System and method for creating and streaming augmented game sessions |
US10286326B2 (en) | 2014-07-03 | 2019-05-14 | Activision Publishing, Inc. | Soft reservation system and method for multiplayer video games |
US11351466B2 (en) | 2014-12-05 | 2022-06-07 | Activision Publishing, Ing. | System and method for customizing a replay of one or more game events in a video game |
US10118099B2 (en) | 2014-12-16 | 2018-11-06 | Activision Publishing, Inc. | System and method for transparently styling non-player characters in a multiplayer video game |
US10286314B2 (en) | 2015-05-14 | 2019-05-14 | Activision Publishing, Inc. | System and method for providing continuous gameplay in a multiplayer video game through an unbounded gameplay session |
US10486068B2 (en) | 2015-05-14 | 2019-11-26 | Activision Publishing, Inc. | System and method for providing dynamically variable maps in a video game |
US10315113B2 (en) | 2015-05-14 | 2019-06-11 | Activision Publishing, Inc. | System and method for simulating gameplay of nonplayer characters distributed across networked end user devices |
US10213682B2 (en) | 2015-06-15 | 2019-02-26 | Activision Publishing, Inc. | System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game |
US10471348B2 (en) | 2015-07-24 | 2019-11-12 | Activision Publishing, Inc. | System and method for creating and sharing customized video game weapon configurations in multiplayer video games via one or more social networks |
US10099140B2 (en) | 2015-10-08 | 2018-10-16 | Activision Publishing, Inc. | System and method for generating personalized messaging campaigns for video game players |
US11185784B2 (en) | 2015-10-08 | 2021-11-30 | Activision Publishing, Inc. | System and method for generating personalized messaging campaigns for video game players |
US10232272B2 (en) | 2015-10-21 | 2019-03-19 | Activision Publishing, Inc. | System and method for replaying video game streams |
US10245509B2 (en) | 2015-10-21 | 2019-04-02 | Activision Publishing, Inc. | System and method of inferring user interest in different aspects of video game streams |
US10376781B2 (en) | 2015-10-21 | 2019-08-13 | Activision Publishing, Inc. | System and method of generating and distributing video game streams |
US10694352B2 (en) | 2015-10-28 | 2020-06-23 | Activision Publishing, Inc. | System and method of using physical objects to control software access |
CN105471837A (zh) * | 2015-11-09 | 2016-04-06 | 北京捷思锐科技股份有限公司 | 信息处理方法及装置 |
US10300390B2 (en) | 2016-04-01 | 2019-05-28 | Activision Publishing, Inc. | System and method of automatically annotating gameplay of a video game based on triggering events |
US10226701B2 (en) | 2016-04-29 | 2019-03-12 | Activision Publishing, Inc. | System and method for identifying spawn locations in a video game |
US10179289B2 (en) | 2016-06-21 | 2019-01-15 | Activision Publishing, Inc. | System and method for reading graphically-encoded identifiers from physical trading cards through image-based template matching |
US10586380B2 (en) | 2016-07-29 | 2020-03-10 | Activision Publishing, Inc. | Systems and methods for automating the animation of blendshape rigs |
US10709981B2 (en) | 2016-11-17 | 2020-07-14 | Activision Publishing, Inc. | Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps |
US10463964B2 (en) | 2016-11-17 | 2019-11-05 | Activision Publishing, Inc. | Systems and methods for the real-time generation of in-game, locally accessible heatmaps |
US10500498B2 (en) | 2016-11-29 | 2019-12-10 | Activision Publishing, Inc. | System and method for optimizing virtual games |
US10055880B2 (en) | 2016-12-06 | 2018-08-21 | Activision Publishing, Inc. | Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional |
US10861079B2 (en) | 2017-02-23 | 2020-12-08 | Activision Publishing, Inc. | Flexible online pre-ordering system for media |
CN108989840B (zh) * | 2017-06-02 | 2020-10-16 | 上海数字电视国家工程研究中心有限公司 | 适用于高速运动接收的数据帧的设计方法和传输系统 |
US10818060B2 (en) | 2017-09-05 | 2020-10-27 | Activision Publishing, Inc. | Systems and methods for guiding motion capture actors using a motion reference system |
US10561945B2 (en) | 2017-09-27 | 2020-02-18 | Activision Publishing, Inc. | Methods and systems for incentivizing team cooperation in multiplayer gaming environments |
US10974150B2 (en) | 2017-09-27 | 2021-04-13 | Activision Publishing, Inc. | Methods and systems for improved content customization in multiplayer gaming environments |
US11040286B2 (en) | 2017-09-27 | 2021-06-22 | Activision Publishing, Inc. | Methods and systems for improved content generation in multiplayer gaming environments |
US10537809B2 (en) | 2017-12-06 | 2020-01-21 | Activision Publishing, Inc. | System and method for validating video gaming data |
US10463971B2 (en) | 2017-12-06 | 2019-11-05 | Activision Publishing, Inc. | System and method for validating video gaming data |
US10981051B2 (en) | 2017-12-19 | 2021-04-20 | Activision Publishing, Inc. | Synchronized, fully programmable game controllers |
US11278813B2 (en) | 2017-12-22 | 2022-03-22 | Activision Publishing, Inc. | Systems and methods for enabling audience participation in bonus game play sessions |
US10765948B2 (en) | 2017-12-22 | 2020-09-08 | Activision Publishing, Inc. | Video game content aggregation, normalization, and publication systems and methods |
US10596471B2 (en) | 2017-12-22 | 2020-03-24 | Activision Publishing, Inc. | Systems and methods for enabling audience participation in multi-player video game play sessions |
US11263670B2 (en) | 2018-11-19 | 2022-03-01 | Activision Publishing, Inc. | Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user |
US11192028B2 (en) | 2018-11-19 | 2021-12-07 | Activision Publishing, Inc. | Systems and methods for the real-time customization of video game content based on player data |
US11115712B2 (en) | 2018-12-15 | 2021-09-07 | Activision Publishing, Inc. | Systems and methods for indexing, searching for, and retrieving digital media |
US11679330B2 (en) | 2018-12-18 | 2023-06-20 | Activision Publishing, Inc. | Systems and methods for generating improved non-player characters |
US11305191B2 (en) | 2018-12-20 | 2022-04-19 | Activision Publishing, Inc. | Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay |
US11344808B2 (en) | 2019-06-28 | 2022-05-31 | Activision Publishing, Inc. | Systems and methods for dynamically generating and modulating music based on gaming events, player profiles and/or player reactions |
US11097193B2 (en) | 2019-09-11 | 2021-08-24 | Activision Publishing, Inc. | Methods and systems for increasing player engagement in multiplayer gaming environments |
US11423605B2 (en) | 2019-11-01 | 2022-08-23 | Activision Publishing, Inc. | Systems and methods for remastering a game space while maintaining the underlying game simulation |
US11712627B2 (en) | 2019-11-08 | 2023-08-01 | Activision Publishing, Inc. | System and method for providing conditional access to virtual gaming items |
US11537209B2 (en) | 2019-12-17 | 2022-12-27 | Activision Publishing, Inc. | Systems and methods for guiding actors using a motion capture reference system |
US11420122B2 (en) | 2019-12-23 | 2022-08-23 | Activision Publishing, Inc. | Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay |
US11563774B2 (en) | 2019-12-27 | 2023-01-24 | Activision Publishing, Inc. | Systems and methods for tracking and identifying phishing website authors |
US11524234B2 (en) | 2020-08-18 | 2022-12-13 | Activision Publishing, Inc. | Multiplayer video games with virtual characters having dynamically modified fields of view |
US11351459B2 (en) | 2020-08-18 | 2022-06-07 | Activision Publishing, Inc. | Multiplayer video games with virtual characters having dynamically generated attribute profiles unconstrained by predefined discrete values |
US11717753B2 (en) | 2020-09-29 | 2023-08-08 | Activision Publishing, Inc. | Methods and systems for generating modified level of detail visual assets in a video game |
US11724188B2 (en) | 2020-09-29 | 2023-08-15 | Activision Publishing, Inc. | Methods and systems for selecting a level of detail visual asset during the execution of a video game |
US11833423B2 (en) | 2020-09-29 | 2023-12-05 | Activision Publishing, Inc. | Methods and systems for generating level of detail visual assets in a video game |
US11439904B2 (en) | 2020-11-11 | 2022-09-13 | Activision Publishing, Inc. | Systems and methods for imparting dynamic and realistic movement to player-controlled avatars in video games |
US11853439B2 (en) | 2020-12-30 | 2023-12-26 | Activision Publishing, Inc. | Distributed data storage system providing enhanced security |
US11794107B2 (en) | 2020-12-30 | 2023-10-24 | Activision Publishing, Inc. | Systems and methods for improved collision detection in video games |
CN115378887B (zh) * | 2022-07-05 | 2024-01-23 | 西安电子科技大学 | 一种时间触发以太网交换机tt业务交换装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0365731B1 (en) * | 1988-10-28 | 1994-07-27 | International Business Machines Corporation | Method and apparatus for transferring messages between source and destination users through a shared memory |
EP0622922B1 (en) | 1993-04-29 | 2000-11-29 | International Business Machines Corporation | Method and device of multicasting data in a communications system |
JP3486946B2 (ja) | 1994-03-16 | 2004-01-13 | 富士通株式会社 | マルチキャスト通信中継装置 |
US5684797A (en) * | 1995-04-05 | 1997-11-04 | International Business Machines Corporation | ATM cell multicasting method and apparatus |
US5925099A (en) * | 1995-06-15 | 1999-07-20 | Intel Corporation | Method and apparatus for transporting messages between processors in a multiple processor system |
JP2842522B2 (ja) * | 1995-12-06 | 1999-01-06 | 日本電気株式会社 | Atmスイッチ及びその制御方法 |
US5689506A (en) * | 1996-01-16 | 1997-11-18 | Lucent Technologies Inc. | Multicast routing in multistage networks |
US5898687A (en) * | 1996-07-24 | 1999-04-27 | Cisco Systems, Inc. | Arbitration mechanism for a multicast logic engine of a switching fabric circuit |
US6094435A (en) * | 1997-06-30 | 2000-07-25 | Sun Microsystems, Inc. | System and method for a quality of service in a multi-layer network element |
US6111880A (en) * | 1997-12-05 | 2000-08-29 | Whittaker Corporation | Hybrid packet/cell switching, linking, and control system and methodology for sharing a common internal cell format |
-
2001
- 2001-04-20 US US09/839,079 patent/US6836480B2/en not_active Expired - Lifetime
-
2002
- 2002-01-28 KR KR1020037013729A patent/KR100690418B1/ko active IP Right Grant
- 2002-01-28 AU AU2002225237A patent/AU2002225237A1/en not_active Abandoned
- 2002-01-28 AT AT02715591T patent/ATE291802T1/de not_active IP Right Cessation
- 2002-01-28 JP JP2002584540A patent/JP3777161B2/ja not_active Expired - Lifetime
- 2002-01-28 CN CNB028071778A patent/CN1219384C/zh not_active Expired - Lifetime
- 2002-01-28 DE DE60203380T patent/DE60203380T2/de not_active Expired - Lifetime
- 2002-01-28 WO PCT/GB2002/000383 patent/WO2002087156A2/en active IP Right Grant
- 2002-01-28 EP EP02715591A patent/EP1380133B1/en not_active Expired - Lifetime
- 2002-04-17 TW TW91107849A patent/TW573413B/zh not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007532103A (ja) * | 2004-04-07 | 2007-11-15 | アキシオジェネシス エージー | 非侵襲性生体外機能組織検定システム |
Also Published As
Publication number | Publication date |
---|---|
US20020154634A1 (en) | 2002-10-24 |
KR100690418B1 (ko) | 2007-03-09 |
US6836480B2 (en) | 2004-12-28 |
CN1219384C (zh) | 2005-09-14 |
EP1380133A2 (en) | 2004-01-14 |
DE60203380T2 (de) | 2006-02-02 |
KR20040002922A (ko) | 2004-01-07 |
EP1380133B1 (en) | 2005-03-23 |
CN1498480A (zh) | 2004-05-19 |
AU2002225237A1 (en) | 2002-11-05 |
JP3777161B2 (ja) | 2006-05-24 |
ATE291802T1 (de) | 2005-04-15 |
DE60203380D1 (de) | 2005-04-28 |
WO2002087156A2 (en) | 2002-10-31 |
WO2002087156A3 (en) | 2002-12-19 |
TW573413B (en) | 2004-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3777161B2 (ja) | マルチキャスト伝送の効率的処理 | |
US6937606B2 (en) | Data structures for efficient processing of IP fragmentation and reassembly | |
JP4068166B2 (ja) | 高性能多層スイッチ要素用探索エンジン・アーキテクチャ | |
JP4260899B2 (ja) | 中継データベースへの中央処理装置のハードウェア支援によるアクセス | |
US6504846B1 (en) | Method and apparatus for reclaiming buffers using a single buffer bit | |
US7017020B2 (en) | Apparatus and method for optimizing access to memory | |
US6912637B1 (en) | Apparatus and method for managing memory in a network switch | |
USRE44151E1 (en) | Switching ethernet controller | |
US6847645B1 (en) | Method and apparatus for controlling packet header buffer wrap around in a forwarding engine of an intermediate network node | |
US6687247B1 (en) | Architecture for high speed class of service enabled linecard | |
EP1430658B1 (en) | Method, apparatus and computer program for the decapsulation and encapsulation of packets with multiple headers | |
US7830884B2 (en) | Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability | |
JP2002541732A (ja) | バルクデータトランスファのためのサービスアジャストメントの自動検出方法 | |
US6546010B1 (en) | Bandwidth efficiency in cascaded scheme | |
US20040037302A1 (en) | Queuing and de-queuing of data with a status cache | |
US7085266B2 (en) | Apparatus, method and limited set of messages to transmit data between components of a network processor | |
US6850999B1 (en) | Coherency coverage of data across multiple packets varying in sizes | |
US20060187963A1 (en) | Method for sharing single data buffer by several packets | |
US6336156B1 (en) | Increased speed initialization using dynamic slot allocation | |
US7289455B2 (en) | Network statistics | |
US6816498B1 (en) | Method for aging table entries in a table supporting multi-key searches | |
US7080135B1 (en) | Systems and methods for accessing an address table of a network device | |
EP1239382A2 (en) | Binary search engine and method | |
US6487199B1 (en) | Method and apparatus for maintaining randomly accessible copy number information on a network switch |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060111 |
|
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: 20060214 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060224 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3777161 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100303 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110303 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120303 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130303 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130303 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140303 Year of fee payment: 8 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140303 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140303 Year of fee payment: 8 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |