JP2003523112A - パケットルーティング動作におけるプロセッサ用キューイングシステム - Google Patents
パケットルーティング動作におけるプロセッサ用キューイングシステムInfo
- Publication number
- JP2003523112A JP2003523112A JP2001558844A JP2001558844A JP2003523112A JP 2003523112 A JP2003523112 A JP 2003523112A JP 2001558844 A JP2001558844 A JP 2001558844A JP 2001558844 A JP2001558844 A JP 2001558844A JP 2003523112 A JP2003523112 A JP 2003523112A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- queue
- processor
- identifier
- packets
- 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
- 238000000034 method Methods 0.000 claims abstract description 60
- 230000007246 mechanism Effects 0.000 claims abstract description 27
- 230000008569 process Effects 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims description 91
- 238000003780 insertion Methods 0.000 claims description 44
- 230000037431 insertion Effects 0.000 claims description 44
- 239000000523 sample Substances 0.000 claims description 31
- 239000000872 buffer Substances 0.000 claims description 26
- 238000004422 calculation algorithm Methods 0.000 claims description 8
- 230000003247 decreasing effect Effects 0.000 claims description 5
- 230000003139 buffering effect Effects 0.000 claims description 2
- 230000003213 activating effect Effects 0.000 claims 1
- 230000000875 corresponding effect Effects 0.000 description 43
- 230000036316 preload Effects 0.000 description 42
- 238000010586 diagram Methods 0.000 description 31
- 230000004044 response Effects 0.000 description 19
- 238000007726 management method Methods 0.000 description 11
- 230000009471 action Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 240000007320 Pinus strobus Species 0.000 description 5
- 238000001514 detection method Methods 0.000 description 5
- 239000004744 fabric Substances 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 4
- 238000012913 prioritisation Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013467 fragmentation Methods 0.000 description 3
- 238000006062 fragmentation reaction Methods 0.000 description 3
- 230000008676 import Effects 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 239000012190 activator Substances 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 229910052799 carbon Inorganic materials 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 101150094817 entB gene Proteins 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000007420 reactivation Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- 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/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/621—Individual queue per connection or flow, e.g. per VC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6215—Individual queue per QOS, rate or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/201—Multicast operation; Broadcast operation
-
- 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
- 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
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
- H04L49/9073—Early interruption upon arrival of a fraction of a packet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/205—Quality of Service based
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Multi Processors (AREA)
- Studio Devices (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Hardware Redundancy (AREA)
Abstract
Description
パケットの処理の装置および方法に関し、具体的には、特にダイナミックマルチ
ストリーミングプロセッサでの、異なるタイプのプロセッサおよびマルチプロセ
ッサシステムを使用するルーティング動作でのパケットのキューイングおよび優
先順位付けの装置および方法に関する。
号の米国特許法119(e)条の下での優先の利益を主張し、前の特許出願のす
べての開示を参照によって組み込む。
よく知られた公衆がアクセス可能な通信ネットワークであり、これまでに使用可
能にされたものの中で最も堅牢な情報および通信のソースであると論証できる。
インターネットは、主な例として、本明細書で教示される装置および方法から利
益を得るデータパケットネットワークの現在の応用分野の例で使用されるが、こ
のデータパケットネットワークは、特定の標準化されたプロトコルに従うネット
ワークの1つにすぎない。やはり非常によく知られているように、インターネッ
ト(および関係するネットワーク)は、常に仕掛品である。すなわち、多数の研
究者および開発者が、そのようなネットワークの動作を機能強化するための、ソ
フトウェアを含む新しいよりよい装置および方法を提供するために常時競争して
いる。
ルーティング(単位時間あたりのパケット数が多い)と、メッセージングでのよ
りよい信頼性および忠実度を提供するものである。一般に必要とされているもの
は、パケットをルータ内で処理できる速度を高めるルータ装置および方法である
。
、通常は複数のポートの1つまたは複数で受信し、ある形で処理し、ルータの同
一のまたは他のポートに送出して、下流の宛先へ継続する、コンピュータ化され
た機械である。そのようなコンピュータ化された動作の例として、インターネッ
トが、個々のルータの膨大な相互接続されたネットワークであることを念頭にお
くと、個々のルータは、それが通信ポートによって接続されている外部ルータが
どれであるかと、着信パケットについてネットワークを介する代替経路のどれが
最適経路であるかを記憶しなければならない。個々のルータは、フローアカウン
ティングも達成しなければならず、フローは、一般に、共通のソースおよび終点
宛先を有するパケットのストリームを意味する。一般に望まれているものは、個
々のフローが共通の経路に従うことである。当業者は、コンピュータ化された処
理に関する多数のそのような要件を知っている。
ィングタスクを達成するための専用マイクロプロセッサとして1つまたは複数の
中央処理装置(CPU)を有する。本願出願時点での最新技術では、これらが、
単一ストリーミングプロセッサである、すなわち、各プロセッサが、命令の単一
のストリームを処理することができる。いくつかの場合に、開発者は、そのよう
なルーティング動作にマルチプロセッサ技術を適用する。本発明人は、複数の命
令ストリームを同時に処理することができるダイナミックマルチストリーミング
(DMS)プロセッサの開発にしばらくかかわった。そのようなプロセッサに好
ましい応用分野が、インターネットなどのパケットネットワークでのパケットの
処理である。
応用に好ましいアーキテクチャの説明および図面がある。そのアーキテクチャの
機能領域の1つが、キューイングシステムを含む、汎用キューとそれに関連する
方法および回路である。本発明が関係するのは、権能を付与する詳細を下で説明
する、このキューイングシステムである。
のパケットアカウンティング用の構成可能キューイングシステムが提供され、こ
のシステムには、1つまたは複数のクラスタに配置された複数のキューと、到着
するパケットのパケット識別子を作成する識別機構と、パケット識別子をキュー
に挿入し、パケット識別子をどのキューに挿入するかを決定する挿入論理と、識
別されたパケットの処理の開始、完了したパケットのダウンロード、または選択
されたパケット識別子の再キューイングのためにキューからのパケット識別子を
選択する選択論理とが含まれる。
され、クラスタの数およびクラスタごとのキューの数を、1から同一の最大個数
まで変更することができ、クラスタの数が1と等しい場合に、キューの数が最大
個数になり、逆も同様である。また、いくつかの実施形態で、キューの数を決定
するクラスタの相対的な数が、プロセッサに関連する構成レジスタをセットする
ことによってセットされる。
トが、どの時点でもデータパケットプロセッサ内で処理中になることができるこ
とを意味する。また、いくつかの場合に、クラスタまたはキューのいずれかの最
大個数が32であり、クラスタまたはキューの数が2のべきになるように制御さ
れる。
が処理中に保管されるメモリ位置に関連する。この場合に、処理中にパケットデ
ータを保管するオンボードメモリが、パケットページに配置され、前記パケット
識別子が、パケットの前記パケットデータが保管されるパケットページの先頭を
識別するアドレスである。もう1つの機能強化で、作成されキューイングされる
前記パケット識別子が、前記メモリ位置の他に、前記パケットがそこから受信さ
れた装置の1つまたは複数の識別子と、前記パケットが処理中に総サイズが増加
または減少したかどうかの表示と、関連するパケットに対する処理が完了したか
否かの表示と、前記パケット識別子を挿入しなければならない次のキューと、前
記パケットが現在処理中であるかどうかの識別子とを含む。
された前記優先順位に応じて前記パケットを特定のキューに挿入する。クラスタ
に番号を付けることができ、識別されたパケットを処理する優先順位が、これら
の場合では、クラスタ番号による。
た次のキュー番号の値に基づいて再キューイングのためにパケットを選択する。
また、いくつかの実施形態で、選択システムが、関連するパケットに対する処理
が完了したかどうかの表示の値に基づいて、ダウンロードのためにパケットを選
択する。
て処理のためにパケットを選択し、いくつかの場合に、処理のためにパケットを
選択するために優先順位クラスタ内のキューを選択する時に、公平アルゴリズム
に従う。
キストレジスタによって実施され個々のストリームに関連する別々のコンテキス
トを有するマルチストリーミングプロセッサであり、選択システムが、選択され
た識別子に関連するパケットからのヘッダ情報を、使用可能なコンテキストにロ
ードさせる。ストリームより多数のコンテキストが存在することができ、使用可
能なコンテキストへのヘッダ情報のローディングを、バックグラウンドすなわち
、パケットの処理と並列に、達成することができる。
アが、パケット識別子内のフィールドの個々の1つの値を操作することをイネー
ブルされる。また、いくつかの実施形態では、前記挿入論理が、少なくとも部分
的にフローに従って、パケットをキューに挿入し、挿入および選択論理が、個々
のフロー内のパケットの順序を保存するために協力する。さらなる実施形態では
、前記挿入論理が、ネットワークまたはスイッチングファブリックから着信する
パケットを、キューへの識別子挿入に関する最高の優先順位を用いて扱い、再キ
ューイングされるパケット識別子を次に高い優先順位を用いて扱い、ソフトウェ
アによって生成されるパケットの識別子を最低の優先順位を用いて扱う。
バッファリングする入力バッファと、処理中にパケットデータを保管するローカ
ルパケットメモリと、パケットデータを処理するストリームプロセッサユニット
と、処理中のパケットアカウンティング用の構成可能なキューイングシステムと
を含むデータパケットプロセッサが提供される。前記キューイングシステムが、
1つまたは複数のクラスタに配置された複数のキューと、到着するパケットのパ
ケット識別子を作成する識別機構と、パケット識別子をキューに挿入し、パケッ
ト識別子をどのキューに挿入するかを決定する挿入論理と、識別されたパケット
の処理の開始、完了したパケットのダウンロード、または選択されたパケット識
別子の再キューイングのためにキューからパケット識別子を選択する選択論理と
を含む。
総数が、固定され、クラスタの数およびクラスタごとのキューの数を、1から同
一の最大個数まで変更することができ、クラスタの数が1と等しい場合に、キュ
ーの数が最大個数になり、逆も同様である。また、いくつかの実施形態で、キュ
ーの数を決定するクラスタの相対的な数が、プロセッサに関連する構成レジスタ
をセットすることによってセットされる。
トが、どの時点でも前記データパケットプロセッサ内で処理中になることができ
ることを意味する。また、いくつかの場合に、クラスタまたはキューのいずれか
の最大個数が32であり、クラスタまたはキューの数が2のべきになるように制
御される。
が処理中に保管されるメモリ位置に関連する。これらの実施形態では、処理中に
パケットデータを保管するオンボードメモリが、パケットページに配置され、前
記パケット識別子が、パケットの前記パケットデータが保管されるパケットペー
ジの先頭を識別するアドレスである。
メモリ位置の他に、前記パケットがそこから受信された装置の1つまたは複数の
識別子と、前記パケットが処理中に総サイズが増加または減少したかどうかの表
示と、関連するパケットに対する処理が完了したか否かの表示と、前記パケット
識別子を挿入しなければならない次のキューと、前記パケットが現在処理中であ
るかどうかの識別子とを含む。
された前記優先順位に応じて前記パケットを特定のキューに挿入する。これらの
実施形態の一部では、クラスタが、番号を付けられ、識別されたパケットを処理
する優先順位が、クラスタ番号による。
のキュー番号の値に基づいて再キューイングのためにパケットを選択する。また
、いくつかの場合に、選択システムが、関連するパケットに対する処理が完了し
たかどうかの表示の値に基づいて、ダウンロードのためにパケットを選択する。
さらに、キューが優先順位によって番号を付けられる場合に、選択システムが、
キュー番号による優先順位に基づいて処理のためにパケットを選択することがで
きる。この場合に、処理のためにパケットを選択するために優先順位クラスタ内
のキューを選択する時に従う公平アルゴリズムを設けることができる。
キストレジスタによって実施され個々のストリームに関連する別々のコンテキス
トを有するマルチストリーミングプロセッサであり、選択システムが、選択され
た識別子に関連するパケットからのヘッダ情報を、使用可能なコンテキストにロ
ードさせる。これらの実施形態のいくつかで、ストリームより多数のコンテキス
トがあり、使用可能なコンテキストへのヘッダ情報のローディングが、バックグ
ラウンドすなわち、パケットの処理と並列に、達成される。
トウェアが、パケット識別子内のフィールドの個々の1つの値を操作することを
イネーブルされる。また、このプロセッサのいくつかの実施形態で、前記挿入論
理が、少なくとも部分的にフローに従って、パケットをキューに挿入し、挿入お
よび選択論理が、個々のフロー内のパケットの順序を保存するために協力する。
いくつかの場合に、前記挿入論理が、ネットワークまたはスイッチングファブリ
ックから着信するパケットを、キューへの識別子挿入に関する最高の優先順位を
用いて扱い、再キューイングされるパケット識別子を次に高い優先順位を用いて
扱い、ソフトウェアによって生成されるパケットの識別子を最低の優先順位を用
いて扱う。
ウンティングの方法であって、(a)プロセッサ内で1つまたは複数のクラスタ
内の複数のキューを設けるステップと、(b)到着するパケットのパケット識別
子を作成するステップと、(c)どのキューに挿入するかを決定する論理を有す
る挿入機構によってパケット識別子をキューに挿入するステップと、(d)識別
されたパケットの処理の開始、完了したパケットのダウンロード、または選択さ
れたパケット識別子の再キューイングのために、選択論理によってキューからパ
ケット識別子を選択するステップとを含む方法。
数が、固定され、クラスタの数およびクラスタごとのキューの数を、1から同一
の最大個数まで変更することができ、クラスタの数が1と等しい場合に、キュー
の数が最大個数になり、逆も同様である。いくつかの実施形態では、キューの数
を決定するクラスタの相対的な数が、プロセッサに関連する構成レジスタをセッ
トすることによってセットされる。
256個のパケットが、どの時点でもデータパケットプロセッサ内で処理中にな
ることができることを意味する。クラスタまたはキューのいずれかの最大個数を
32にすることができ、クラスタまたはキューの数が2のべきになるように制御
される。
ト自体が処理中に保管されるメモリ位置に関連する。メモリをパケットページに
配置することができ、前記パケット識別子が、パケットの前記パケットデータが
保管されるパケットページの先頭を識別するアドレスである。
メモリ位置の他に、前記パケットがそこから受信された装置の1つまたは複数の
識別子と、前記パケットが処理中に総サイズが増加または減少したかどうかの表
示と、関連するパケットに対する処理が完了したか否かの表示と、前記パケット
識別子を挿入しなければならない次のキューと、前記パケットが現在処理中であ
るかどうかの識別子とを含む。
された前記優先順位に応じて前記パケットを特定のキューに挿入する。これらの
場合のいくつかでは、クラスタが、番号を付けられ、識別されたパケットを処理
する優先順位が、クラスタ番号による。これらの場合では、選択システムが、前
記パケット識別子内でセットされた次のキュー番号の値に基づいて再キューイン
グのためにパケットを選択する。
する処理が完了したかどうかの表示の値に基づいて、ダウンロードのためにパケ
ットを選択し、キュー番号による優先順位に基づいて処理のためにパケットを選
択することができる。処理のためにパケットを選択するために優先順位クラスタ
内のキューを選択する時に、公平アルゴリズムに従うことができる。
、コンテキストレジスタによって実施され個々のストリームに関連する別々のコ
ンテキストを有するマルチストリーミングプロセッサであり、選択システムが、
選択された識別子に関連するパケットからのヘッダ情報を、使用可能なコンテキ
ストにロードさせる。
なコンテキストへのヘッダ情報のローディングが、バックグラウンドすなわち、
パケットの処理と並列に、達成される。
ット識別子内のフィールドの個々の1つの値を操作することをイネーブルされる
。また、いくつかの実施形態で、前記挿入論理が、少なくとも部分的にフローに
従って、パケットをキューに挿入し、挿入および選択論理が、個々のフロー内の
パケットの順序を保存するために協力する。いくつかの場合に、前記挿入論理が
、ネットワークまたはスイッチングファブリックから着信するパケットを、キュ
ーへの識別子挿入に関する最高の優先順位を用いて扱い、再キューイングされる
パケット識別子を次に高い優先順位を用いて扱い、ソフトウェアによって生成さ
れるパケットの識別子を最低の優先順位を用いて扱う。
キューイングシステムを有するデータパケットプロセッサにおいて、固定された
範囲のパケット番号と、割当機構とを有するパケット番号付けシステムが提供さ
れる。前記割当機構が、前記固定された範囲の個別の番号をアカウンティングし
、前記キューイングシステム内のパケットが処理のために送られる時に番号をイ
ンアクティブとマークし、インアクティブな番号を前記キューイングシステムに
置かれる新たに到着したパケットに再割り当てする。
れたパケット番号が別の時点で同一のパケットに割り当てられることを保証する
ために各パケットに関連付けられ、前記プローブビットが、パケット番号が割り
当てられる時にデアサートされ、ストリームによって実行されるProbe a
nd Setコマンドによってアサートされ、プローブビットがアサートされた
後のどの時刻にも、アサートされたプローブビットが、前記パケット番号が前記
同一のパケットに関連することを示すようにすることを特徴とする。
器を用いて前に可能であった速度をはるかに超える速度で、効率的でコスト効率
のよい形で、着信パケットをキューに入れ、管理する、データパケットプロセッ
サを提供する。
rプロセッサと呼ぶ、パケットネットワークでのパケット処理専用のDMSプロ
セッサのアーキテクチャに関する開示がある。参照された開示には、2つの広範
囲の図面が提供され、その1つのNIOブロック図と称する図には、XCali
berプロセッサの全体的なアーキテクチャが、パケット処理ASICとの間の
入出力ポートと共に示され、他方の図には、NIO図に示された汎用キューの多
数の態様が示されている。この優先権書類のNIOシステムは、本明細書のパケ
ット管理ユニット(PMU)と等しい。本明細書が対象とするものは、汎用キュ
ーの複数の態様である。
分割を伴うXCaliber DMSプロセッサ101の単純化されたブロック
図である。図1では、XCaliber DMSプロセッサ101が、3つの機
能領域に編成されるものとして示されている。外側のシステムインターフェース
ユニット(SIU)領域107は、外部装置すなわち、XCaliberプロセ
ッサの外部の、通常はパケットを送信し、受信するための装置との通信を提供す
る。内側では、プロセッサ101が、2つの広範囲の機能ユニットすなわち、上
記の優先権文書のNIOシステムと等しいパケット管理ユニット(PMU)10
3と、ストリームプロセッサユニット(SPU)107に分割される。PMUの
機能には、受信され処理されるすべてのパケットの、アカウンティングと管理が
含まれる。SPUは、すべての計算タスクの責任を負う。
ダアクセスとパケットのソートおよび管理のタスクの実行からSPUをオフロー
ドする部分であり、これらのタスクは、こうなっていなければ、プロセッサ全体
の性能を大きく低下させるはずである。
理と、(b)バックグラウンドで、着信パケットからのパケットヘッダ情報をX
Caliberプロセッサの異なるコンテキスト(下でさらに説明するコンテキ
ストレジスタ)にアップロードすることと、(c)柔軟なキューイングシステム
で、現在XCaliber内で処理中のパケットのパケット識別子を維持するこ
とによって達成される。
タスクは、SPUコアによるパケットの処理と並列に実行される。この機能性を
実装するために、PMUは、ネットワークから着信するパケットをバッファリン
グし、それらをSPUコアに供給し、必要な場合に、処理が完了した時にそれら
をネットワークに送出する、ハードウェア構造の組を有する。PMUは、本明細
書の焦点である、内部パケットメモリストレージおよびキューイングシステムの
構成など、その複数の機能の高い度合のプログラム可能性を特徴とする。
である。SIU107およびSPU105は、図1で使用されたものと同一の符
号を有する、単一のブロックとして図2に示されている。しかし、PMUは、要
素の間に通信回線を示されて、かなり拡大されて詳細に示されている。
が示されており、これは、いくつかの場合に、たとえばインターネットなどのネ
ットワークへまたは、たとえばパケットを受信し、送信し、XCaliberプ
ロセッサとパケットをやりとりする、パケットルータ内のスイッチングファブリ
ックへの直接のインターフェース専用の特定用途向け集積回路(ASIC)であ
る。この特定の例では、プロセッサ201と通信する2つのインポートと2つの
アウトポートがある。ネットワークインインターフェース回路205およびネッ
トワークアウトインターフェース回路215は、プロセッサへおよびプロセッサ
からのパケットトラフィックを処理し、これらの2つのインターフェースは、図
2では便宜上別々に図示されているが、正しくはSIU107の一部である。
、入力バッファ207および出力バッファ217があり、これらは、プロセッサ
201から出入りするパケットのフローをバッファリングするように働く。
ており、このPMU103を、パケット管理およびアカウンティングの要件をス
トリーム処理ユニットからオフロードするユニットとして説明した。これは、具
体的には、図2で展開されたユニットであり、実質的に、入力バッファ(IB)
207、出力バッファ(OB)217、ページングメモリ管理ユニット(PMM
U)209、ローカルパケットメモリ(LPM)219、コマンドユニット(C
U)213、キューイングシステム(QS)211、構成レジスタ221、およ
びレジスタ転送ユニット(RTU)227からなる。PMUの要素の間の通信経
路は、図2では矢印によって示されており、特に本明細書の特定の焦点であるQ
S211を含む、PMUの要素のさらなる説明を、下で提供する。
トは、この例では、16バイトネットワーク入力インターフェースを介してPM
Uに到着する。この実施形態では、パケットデータが、20Gbps(最大)の
速度でPMUに到着する。300MHzのXCaliberコア周波数動作速度
で、平均8バイトのパケットデータが、すべてのXCaliberコアサイクル
に受信される。ネットワーク入力インターフェースからの着信データは、インバ
ッファ(IB)ブロック207でバッファリングされる。XCaliber内の
ネットワークインターフェース205は、外部装置がパケット送信の前にパケッ
トにサイズを付加できなかった場合に、送信されるパケットのサイズをパケット
自体に付加する機能を有する。2つまでの装置が、XCaliberに(装置ご
とに10Gbps)でパケットデータを送信することができ、2つのインポート
が、接続されたASICから図示されている。特定のASICの存在および使用
が、例示的であり、パケットを、他の装置から受信できることを理解されたい。
さらに、いくつかの実施形態で、図示された2つのインポートより多数またはよ
り少数のポートを設けることができる。
オンチップローカルパケットメモリ(LPM)219に保管しなければならない
かどうかを決定するか、たとえばLPMにそれを保管する余地が存在しない場合
に、SIUブロックを介して、図示されていない外部パケットメモリ(EPM)
にパケットを送り出すかパケットをドロップすることを決定することができる。
パケットをLPMに保管する場合には、PMMUは、パケットを保管する位置を
決定し、それを行うのに必要なすべてのアドレスを生成する。生成されるアドレ
スは、好ましい実施形態では、LPM内の16バイトラインに対応し、パケット
が、このメモリ内に連続して保管される。
ト識別子が作成され、このパケット識別子には、パケットが保管され始めたパケ
ットメモリ内の固定サイズページへのポインタ(packetPageと称する
)が含まれる。識別子は、作成され、キューイングシステム(QS)ブロック2
11にエンキューされる。QSは、0から255までの番号(packetNu
mberと称する)を、新しいパケットのそれぞれに割り当てる。QSは、パケ
ットの優先順位に基づいて、XCaliber内で生きているパケットの識別子
をソートし、SPUコアがパケットの状況に対する変更を通知する時に、ソーテ
ィングを更新する。QSは、次にSPUに供給されるパケット識別子を選択する
。やはり、QSは、本発明の特定の焦点である。
(packetPageおよびpacketNumber)を受け取る時に、好
ましい実施形態のXCaliberが特徴とする8つのコンテキストの中から、
使用可能なコンテキスト(229、図2)を検索する。アーキテクチャおよび説
明の目的から、コンテキストは、図2では別のユニット229として図示されて
いるが、より広義のストリーム処理ユニットの一部とみなされる。
PUにこのイベントについて通知する能力を有する。コンテキストが使用可能で
ある場合には、RTUは、パケット識別子情報とパケットのヘッダの選択された
フィールドとをコンテキストにロードし、その後、コンテキストを解放する(こ
れは、その時点でSPUの制御下に来る。RTUは、SIUを介してパケットの
ヘッダ情報にアクセスする。というのは、パケットが、オフチップEPMに保管
されている可能性があるからである。
てQSに通知する。好ましい実施形態では、DMSコア内に8つのストリームが
ある。その後、QSは、パケットの状況を(完了に)更新し、結局、このパケッ
トが、ダウンロードのために選択される(すなわち、対応するパケットのパケッ
トデータが、XCaliberプロセッサから2つの外部装置の1つに送り出さ
れる)。
age(他の情報の中でも)をPMMUブロックに送り、PMMUブロックは、
対応するラインアドレスを生成して、LPMからパケットデータを読み取るか(
パケットがオンチップローカルメモリに保管された場合)、SIUに外部パケッ
トメモリからPMUにパケットを移動するように指示する。どの場合でも、読み
取られたパケットデータのラインが、アウトバッファ(OB)ブロックにバッフ
ァリングされ、そこから、16バイトネットワーク出力インターフェースを介し
て装置に送り出される。このインターフェースは、出力の相対物と独立である。
好ましい実施形態のこのインターフェースの最大集計帯域幅も、出力装置ごとに
10Gbpsの20Gbpsである。
を受け取る。コマンドは、多くの場合に新たに定義された命令である、SPUコ
アによってディスパッチされたパケット命令である。これらのコマンドは、3つ
の独立のタイプに分類され、PMUは、サイクルごとにタイプごとに1つのコマ
ンド(合計3コマンド毎サイクルまで)を実行することができる。コマンドは、
ロード様またはストア様とすることができる(PMUがSPUへの応答を提供す
るか否かに依存する)。
PUによって構成される。そのような特徴の一部は、ブート時にプログラムされ
なければならず、残りは、動的に変更することができる。後者の一部について、
SPUは、特徴の機能性を正しくプログラムするために、単一スレッドモードで
動作していなければならない。CUブロックは、これらの構成レジスタの更新を
管理する。
のフロー制御を助ける機構を提供する。LPM219またはQS211が満杯に
なろうとしている時に、2つの異なる割込みが、SPU105に対してPMUに
よって生成される。ソフトウェアによって、対応する構造が完全に満杯になる前
に、前もって何回の割込みが生成されるかが制御される。ソフトウェアは、これ
らの割込みの生成をディスエーブルすることもできる。
トア機構を介してこれにアクセスすることができる。構成レジスタ221とLP
M219の両方が、SIU107によって保たれる開始アドレス(ベースアドレ
ス)を有する。SPU105からのLPM219および構成スペースに対する要
求は、SIUブロック107を介してPMUに到達する。SIUは、外部パケッ
トメモリのベースアドレスも知っている。
ース205を介して、好ましい実施形態ではXCaliberコアサイクルごと
に8バイトの平均速度でPMUに到着する。PMUのIBブロック207が、こ
のデータを受け取り、バッファリングし、FIFO様の形でLPM219に供給
し、いくつかの場合に、SIUにも供給する(本明細書の別の個所で説明する、
パケットオーバーフローの場合に)。
装置との間でパケットデータを送信/受信することができる。各装置は、パケッ
トデータと共に供給される装置識別子を用いてSIU107でタグを付けられる
。1つの装置がパケットからのデータの送信を開始する時に、その装置は、パケ
ットの終りに達するかバスエラーがSIUによって検出されるまで、その同一の
パケットからのデータの送信を継続する。
初に送信される16バイトのバイト0から始まる。パケットの最初の2バイトに
よって、パケットのバイト単位のサイズ(最初の2バイトを含む)が指定される
。これらの2バイトは、外部装置がそれを付加しなかった場合に、SIUによっ
て必ず付加される。16バイトチャンクのバイトkが、有効なバイトである場合
に、バイト0からk−1も、有効なバイトである。これを保証できるのは、パケ
ットの最初のバイトが、必ずバイト0から始まるからである。パケットが、必ず
16バイトチャンクのバイト0から始まり、パケットのサイズが前もって知られ
る(最初の2バイトで)ので、各バイトを検証するための有効ビットが不要であ
ることに留意されたい。ネットワークインターフェースは、すべてのコアクロッ
クで、16バイトチャンクに少なくとも1つの有効なバイトが含まれるかどうか
を指定する制御ビットを供給する。
ァ207内で編成される。これは、8エントリのバッファであり、各エントリが
、16バイトのデータと各チャンクに関連する制御ビットとを保持する。PMM
U209は、各エントリの制御ビットを調べ、新しいパケットが開始されるのか
どうか、または2つ(までの)アクティブパケットのどちらにデータが属するか
を判定し、それ相応に動作する。
たはEPM(図示せず)内に保管される。LPMコントローラまたはSIUのい
ずれかによって、パケットメモリに書き込む帯域幅が、少なくとも着信パケット
データの帯域幅に一致することと、パケットメモリへの着信パケットデータの書
込が、パケットメモリへの他のアクセスより高い優先順位を有することが保証さ
れる。
る可能性があり、したがって、LPMが、ストールが解決されるまでIBのデー
タをそれ以上消費しなくなる。IBが満杯になった時には、必ず、信号がネット
ワーク入力インターフェース205に送られ、ネットワーク入力インターフェー
ス205は、IBが受け入れるまで、必要な回数だけ次の16バイトチャンクを
再送出する。したがって、IBが満杯になることに起因して失われるパケットデ
ータはない。
、20Gbps(出力装置ごとに10Gbps)の総集計帯域幅をサポートする
。300MHzのXCaliberクロック周波数で、ネットワーク出力インタ
ーフェースは、OBブロックから、すべてのXCaliberサイクルに平均8
バイトのデータを受け入れ、2つの出力装置の1つにそれを送る。ネットワーク
入力インターフェースおよびネットワーク出力インターフェースは、互いに完全
に独立である。
ケットが送られる装置は、パケットを送る装置に対応する必要がない。送出され
るパケットデータは、LPM219またはEPM(図示せず)のいずれかから来
る。
れぞれについて、PMMU209は、ダウンロードされ始める準備ができたパケ
ットまたはダウンロード中のパケットを有するか、ダウンロードすべきパケット
を有しないことができる。すべてのサイクルに、PMMU209は、両方の出力
装置にまたがって最高のパケットを選択し、そのパケットに関する16バイトの
データのダウンロードを開始する。PMMUが、パケットから出力装置にパケッ
トデータをダウンロードしている時には、必ず、現在のパケットが完全にダウン
ロードされるまで、異なるパケットからのデータが、同一の装置にダウンロード
されない。
16バイトチャンクは、2つの8エントリバッファ(装置識別子ごとに1つ)の
1つに供給される。これらのバッファの1つの先頭の内容は、ネットワーク出力
インターフェースがそれを要求する時に、必ずネットワーク出力インターフェー
スに供給される。両方のバッファの先頭が有効である時には、OBが、ラウンド
ロビン式にデータを供給する。
ェースに送られる16ビットチャンク内では、バイトkが有効である場合に、バ
イト0からk−1も有効であることを保証できない。この理由は、パケットが送
出される時に、メモリ内の16バイトチャンクのバイト0から開始する必要がな
いからである。したがって、送出されるパケットの先頭を含むデータの16バイ
トチャンクのそれぞれについて、OB217は、チャンクの第1の有効なバイト
がどこに存在するかをネットワークインターフェースに通知する必要がある。さ
らに、パケットの最初の2バイトにバイト単位のパケットのサイズが含まれるの
で、ネットワーク出力インターフェースは、そのパケットの最後の16バイトチ
ャンクのデータ内にあるパケットの最後の有効なバイトを見つけるための情報を
有する。さらに、OB217は、SIU107に、それがパケットのCRCを計
算する必要があるかどうかと、必要な場合にCRCのタイプを知らせる制御ビッ
トも供給する。この制御ビットは、PMMU209によってOB217に供給さ
れる。
Caliberプロセッサは、256KBオンチップを特徴とする。残り(また
は一部)は、外部ストレージを使用して実装される。
ースまたはカーネルスペースとして、かつ、キャッシュ可能またはキャッシュ不
能としてマッピングすることができる。キャッシュ可能としてマッピングされる
場合に、パケットメモリスペースは、SPU105のL1データキャッシュにキ
ャッシュ(ライトスルー)されるが、L2キャッシュにはキャッシュされない。
)をパケットメモリに保管することである。ネットワーク入力インターフェース
からのパケットがLPM219におさまる場合に、PMMU209は、それを保
管する場所を決定し、LPM219への必要な書込アクセスを生成するが、ネッ
トワーク入力インターフェースからのパケットがEPMに保管されようとしてい
る場合には、SPU105は、EPM内のどこにパケットを保管する必要がある
かを判定し、SIU107が、パケットの保管を担当する。どちらの場合でも、
パケットは、連続的に保管され、パケット識別子が、PMMU209によって作
成され、QS211に送られる。
ないように、LPM219を構成することができる。そのようなパケットならび
に、余地がないのでLPMにおさまらないパケットは、PMMU209によって
、SIU107を介してEPMに送られる。これは、オーバーフローと呼ばれる
機構であり、PMUがそれを行うようにSPUによって構成される。パケットの
オーバーフローが許容されない場合には、パケットがドロップされる。この場合
には、PMMU209が、SPUに割り込む(やはり、そうするように構成され
ている場合)。
ットを使用して、データがどのパケット(受け取られる2つの可能なパケットの
うちの)に属するかを判定する。ネットワーク入力インターフェースが、装置識
別子dと共に新しいパケットのデータの送出を開始する時に、データの残りのす
べてが、エラーがネットワークインターフェースブロックによって識別されない
かぎり、結局、同一の装置識別子dと共に到着する。ネットワーク入力インター
フェースは、2つの異なる装置識別子からのデータをインターリーブすることが
できるが、所与のサイクル内には、1つの装置からのデータだけがIB207に
よって受け取られる。
PM219に対するすべての書込アドレスおよび書込ストローブを生成する。パ
ケットをEPMに保管する必要がある場合には、SIU107がそれらを生成す
る。
図示されていないEPMのいずれかへのデータのアップロードを示す図である。
LPMまたはEPMへの書込ストローブは、IBのヘッダが有効なデータを有し
ない場合には生成されない。書込ストローブが生成される時には、必ず、IBの
先頭のデータの16バイトチャンク(LMPラインに対応する)が、IBから削
除され、LPMまたはEPMに保管される。IBの先頭の装置識別子ビットは、
2つのアドレスジェネレータ(入力装置ごとに1つ)から正しい書込アドレスを
選択するのに使用される。
時に保管することができる(すなわち、1時に1つのオーバーフローパケットだ
けを、SIUによって処理することができる)。したがって、オーバーフローを
必要とする第2のパケットがネットワーク入力インターフェースによって送られ
る場合に、このパケットのデータは、捨てられる(すなわち、パケットがドロッ
プされる)。
に2バイトを付加する(この外部装置がまだそれを行っていない場合。そうでな
い場合には、SIUが、それらを付加しないようにプログラムされる)。この付
加されたデータは、2つの付加されたバイトを含む、パケット全体のバイト単位
のサイズを示す。したがって、XCaliber DMSプロセッサによって処
理されるパケットの最大サイズは、最初の2バイトを含めて65535バイトで
ある。
に(その処理中にドロップされなかった場合)、最初の2バイトが、やはり処理
されたパケットのサイズを示すことを期待する。元のパケットのサイズが、XC
aliberプロセッサによって実行される処理の結果として変更される可能性
がある(パケットが増大または縮小する可能性がある)。したがって、処理が6
4K−1バイトを超えるサイズの増加をもたらす場合には、そのパケットを2つ
の異なるより小さいパケットに分割することが、ソフトウェアの責任になる。
り効率的である。外部装置が優先順位情報をPMUに提供できる場合に、パケッ
トの第3バイトが、優先順位のために使用される。ソフトウェアは、PMUを、
このバイトの情報を使用するか否かについてプログラムし、これは、Log2I
nQueuesと称するブート時構成レジスタを介して行われる。
SPU105が、それをドロップするコマンドを明示的にPMUに送った場合に
限ってドロップされる。パケットメモリに既に保管されているパケットの自動的
なドロップは、行うことができない。言い換えると、XCaliber DMS
プロセッサによって受け取られたパケットのドロップアルゴリズムは、すべて、
ソフトウェアで実装される。
が存在する。(a)パケットがLPMにおさまらず、パケットのオーバーフロー
がディスエーブルされている、(b)パケットに関する受け取られたバイトの総
数が、ASIC固有ヘッダの最初の2バイトでASICによって指定されたバイ
ト数と同一でない、または(c)外部装置とSIUのネットワーク入力インター
フェースブロックの間で送信エラーが発生した場合がある。PMMUブロックは
、そのようなエラーについて通知される。
込みが生成される。ソフトウェアは、AutomaticPacketDrop
IntEnable、PacketErrorIntEnableオンザフライ
構成フラグを使用して、これらの割込みの生成をディスエーブルすることができ
る。
ットをLPM219に連続的に保管する効率的な方法を提供することである。好
ましい実施形態のアーキテクチャでは、SPU105に、LPM219の同一の
領域内で類似するサイズのパケットをできる限りグループ化する機能が与えられ
る。これによって、総合的なメモリ断片化が減る。
ブロックに論理的に分割される。各ブロックは、256バイトの固定されたアト
ミックページに分割される。しかし、すべてのブロックが、2のべきの増分での
256バイトから64KBまで範囲の仮想ページを有する。ソフトウェアは、V
irtualPageEnableと称するオンザフライ構成レジスタを使用し
て、4つのブロックのそれぞれについて仮想ページの異なるサイズをイネーブル
/ディスエーブルすることができる。これによって、いくつかのブロックを、あ
るサイズまでのパケットを保管するように構成することができるようになる。
サイズを有するブロックに絶対に保管されないことを保証する。しかし、rの最
小仮想ページサイズを有するブロックは、rより小さいサイズのパケットを受け
入れる。これは、通常は、たとえば、1つまたは複数の他のブロックがより小さ
いパケットを保管するように構成されているが、満杯である場合に、そうなる。
ができ、これは、対応する64KBのメモリが、ソフトウェア管理になることを
意味する。このために、ブロックごとに構成フラグ(SoftwareOwne
d)が存在する。PMMUブロックは、関連するSoftwareOwnedフ
ラグがアサートされているLPMのブロックには、ネットワーク入力インターフ
ェースからの着信パケットを保管しない。同様に、PMMUは、Softwar
eOwnedフラグがアサートされているブロックのメモリについて、GetS
pace動作(他所で説明する)を満足しない。しかし、PMMUは、ソフトウ
ェア所有ブロックにソフトウェアによって保管されたパケットを、どれでもダウ
ンロードすることができる。
かを判定する。パケットがおさまる場合に、PMMUは、4つのブロックのどれ
におさまるかを判定し(パケットが複数のブロックにおさまる可能性があるので
)、選択されたブロック内でパケットが使用する最初および最後のアトミックペ
ージを判定する。アトミックページが、着信パケットのために割り振られる。ア
トミックページに保管されるパケットデータが、ネットワーク出力インターフェ
ースを介してXCaliberプロセッサから安全に送出された時に、LPM内
の対応するスペースを割振り解除する(すなわち、他の着信パケットに使用可能
にする)ことができる。
される。しかし、PMMUは、これらのページの割振り状況を維持しない。これ
らのページの割振り状況は、ソフトウェアによって管理される。どのパケットを
保存するかに無関係に、PMMUは、パケットの最初のデータが保管される位置
の、パケットメモリ内のオフセット(アトミックページ単位)を生成する。この
オフセットを、今後、packetPageと呼ぶ。パケットメモリの最大サイ
ズは16MBなので、packetPageは16ビット値である。
トがEPMに安全に保管されたことの肯定応答をSIU107から受け取るや否
や、そのパケットのために作成されたpacketPageが、QSに送られる
。QSの動作は、下の権能を付与する詳細で説明する。
eId)を常に監視する。deviceIdが現在アクティブでない(すなわち
、そのdeviceIdによって送信された前のパケットが完全に受信済みであ
る)場合に、これは、IBの先頭に新しいパケットの最初のデータが含まれるこ
とを示す。この場合には、最初の2バイト(16バイトチャンクのバイト0およ
びバイト1)によって、バイト単位のパケットのサイズが指定される。新しい着
信パケットのサイズの情報を用いて、PMMUは、そのパケットがLPM219
におさまるかどうかを判定し、そうである場合には、それが4つのブロックのど
れに保管されるかと、そのブロック内の開始アトミックページおよび終了アトミ
ックページを判定する。
ックページが必要であるかを判定する、PMMUの現在の実施形態での必要なス
ループットは、2サイクルごとに1パケットである。1つの可能な2サイクル実
装は、次のようになる:(a)判定が1サイクルで行われ、1時に1つの判定だ
けが行われ、(b)判定の次のサイクルに、パケットを保管するのに必要なアト
ミックページが、割り振られ、仮想ページの新しい状態(割振り済み/割振り解
除)を計算する。このサイクルでは、判定は許容されない。
図である。判定論理は、図示のように、4つの64KBブロックのすべてについ
て並列に実行される。
状態を示す。この状態は、AllocationMatrixと呼ばれ、1つま
たは複数のアトミックページが割り振られるか割振り解除されるたびに再計算さ
れ、判定論理の入力である。FitsVectorおよびIndexVecto
rに、AllocationMatrixから計算される情報が含まれる。
バイト単位のサイズVPSizeの仮想ページ番号VPIndexが既に割り振
られているか否かを示す。FitsVector[VPSize]は、ブロック
が、少なくとも1つの割り振られていないサイズVPSizeの仮想ページを有
するかどうかを示す。FitsVector[VPSize]がアサートされて
いる場合には、IndexVector[VPSize]ベクトルに、サイズV
PSizeの割り振られていない仮想ページのインデックスが含まれる。
ぞれについてプログラムする。EnableVector[VPSize]にこ
の情報が含まれる。この構成は、VirtualPageEnableオンザフ
ライ構成レジスタを使用して実行される。対応するSoftwareOwned
フラグがアサートされている場合に、AllocationMatrix[][
]、FitsVector[]、IndexVector[]、およびEnab
leVector[]が、ドントケアであることに留意されたい。
が、次のようになる。
を検査する。おさまる場合に、仮想ページサイズと、そのサイズの最初の仮想ペ
ージの番号を記憶する。
ーブルされていてもいなくても)を有するブロックが候補である。最小のイネー
ブルされた仮想ページを有するブロックを選択する。
ケットの最初のデータが保管されるLPM内のアトミックページの番号(LPM
内には1K個までの異なるアトミックページがある)になる。パケットがおさま
らない場合には、packetPageは、構成レジスタOverflowAd
dressの内容を右に8ビットシフトしたものになる。パケットオーバーフロ
ー機構を、副題「パケットオーバーフロー」の下で、本明細書の他所で説明する
。
ついて、AllocationMatrix、FitsVector、およびI
ndexVectorの新しい値を再計算しなければならない。FitsVec
tor[VPSize]がアサートされる場合には、IndexVector[
VPSize]が、対応する仮想ページサイズについて可能な最大の割り振られ
ていない仮想ページのインデックスである。FitsVector[VPSiz
e]がデアサートされる場合には、IndexVector[VPSize]は
未定義である。
)、対応するアトミックページを割り振る。選択されたブロック(B)に関する
アトミックページの割振りは、下記のように行われる。
=NumAPs)であるものとして、AllocationMatrix[AP
size][j..k]内のアトミックページの割振り状況に、割振り済みをセ
ットする。
況を、図4bのメッシュ構造に従って更新する。(2k+1バイト仮想ページを
構成する2つの2kバイト仮想ページのいずれかが割り振られる場合に、2k+ 1 バイト仮想ページが割り振られる)。
キューのためにQSに送られる。QSは、満杯の場合(非常にまれ)に、PMM
Uによって供給されるpacketPageを受け入れることができない。この
場合には、PMMUは、次の新しいパケットのために新しいpacketPag
eを生成することができなくなる。これがIBに圧力をかけ、IBは、QSが複
数サイクルにわたって満杯のままである場合に満杯になる可能性がある。
キュー番号も送る。PMMUがこのキュー番号を生成する方法は、下で特にQS
に割り当てられた節で説明する。
るために、この例では、それぞれ2KBの2つのブロック(0および1)があり
、アトミックページサイズが256バイトであり、両方のブロックがSoftw
areOwnedフラグをデアサートされていると仮定する。単一および二重の
斜線区域は、割り振られた仮想ページを表す(単一の斜線のページは、現在のサ
イクルで割り振られるページに対応する)。この例では、256バイト、512
バイト、1Kバイト、および512バイトのパケットサイズのシーケンスについ
て、ページがどのように割り振られるかを示す。このシーケンスの後に、たとえ
ば2Kバイトパケットが、この例のLPMにおさまらないことに留意されたい。
dexVector[VPSize]に、仮想ページサイズVPSizeの最大
の割り振られていない仮想ページインデックスが含まれる。最大のインデックス
を選択する理由は、メモリスペースがよりよく利用されるからである。これを、
図6aおよび6bに示すが、この図では、2つの256バイトパケットが、1ブ
ロックに保管されている。シナリオAでは、256バイト仮想ページが、ランダ
ムに選択されるが、シナリオBでは、最大のインデックスが必ず選択される。図
からわかるように、シナリオAのブロックでは、2つの512バイト仮想ページ
だけが許容されるが、シナリオBのブロックでは、3つが許容される。しかし、
両方が、同数の256バイトパケットを許容するが、これは、このサイズが最小
の割振り単位であるからである。常に最小の仮想ページインデックス番号を選択
することによって、同一の効果が得られることに留意されたい。
トのサイズが、4つのすべてのブロックにまたがってイネーブルされた最大の仮
想ページより大きい、または(b)パケットのサイズが、イネーブルされた最大
仮想ページ以下であるが、LPM内で余地を見つけることができない。
にパケットをオーバーフローさせる。それを行うために、PMMUは、パケット
が保管される初期アドレスをSIUに供給する(パケットメモリ内の16バイト
オフセット)。この20ビットアドレスは、次のようにして得られる。(a)1
6MSBビットは、OverflowAddress構成レジスタの16MSB
ビットに対応する(すなわち、パケットメモリ内のアトミックページ番号)。(
b)4LSBビットは、HeaderGrowthOffset構成レジスタに
対応する。このオーバーフローされるパケットのpacketPage値(QS
に送られる)は、OverflowAddress構成レジスタの16MSBビ
ットである。
場合に、PMMUは、OverflowStartedInt割込みを生成する
。OverflowStartedInt割込みが生成される時に、オーバーフ
ローされるパケットのバイト単位のサイズが、PMMUによって、SPU読取専
用構成レジスタSizeOfOverflowedPacketに書き込まれる
。この時点で、PMMUは、新しいパケットのオーバーフローを防ぐ内部ロック
フラグをセットする。このロックフラグは、ソフトウェアがオンザフライ構成レ
ジスタOverflowAddressに書き込む時にリセットされる。パケッ
トのオーバーフローが必要であるが、ロックフラグがセットされている場合には
、そのパケットがドロップされる。
生成され、サービスされることが保証される。これによって、オーバーフローさ
れる次のパケットが保管される開始アドレスが、SizeOfOverflow
edPacketレジスタを介して割り込みサービスルーチンに可視になる場所
をソフトウェアが決定するためのプラットフォームも作られる。言い換えると、
ソフトウェアがEPMを管理する。
OverflowAddressを複数回書き込む場合には、その結果は未定義
である。さらに、ソフトウェアが、OverflowAddressの16MS
Bビットに0から1023をセットする場合に、パケットメモリ内の最初の1K
アトミックページがLPMに対応するので、その結果も未定義である。
時点で、パケットを、LPMまたはEPMのいずれかのメモリからダウンロード
し、OBを介して、接続された装置の1つに送信することができる。図7は、パ
ケットのダウンロードに使用されるXCaliber DMSプロセッサのブロ
ックの最上位の概略であり、図7の要素は、図2と同一の符号を付されている。
ダウンロード処理は、以下の説明の助けを得て図7で追跡することができる。
のパケットを完了としてマークし、数サイクル後(パケットの優先順位に依存す
る)に、QSが、パケットに関する下記の情報をPMMU209に供給する(P
MMUがそれを要求する限り)。 (a)packetPage (b)優先順位(それが抽出された元のクラスタ番号) (c)末尾増大/縮小情報(本明細書で後で説明する) (d)アウトバウンド装置識別子ビット (e)CRCタイプフィールド(本明細書で後で説明する) (f)KeepSpaceビット
装置を指定する1ビット値である。このアウトバウンド装置識別子は、ソフトウ
ェアによって、2ビット値としてQS211に供給される。
19への(16ビットライン)読取アドレスおよび読取ストローブのすべてを生
成する。読取アドレスが計算され、LPM219から読み取られるラインをバッ
ファリングするのに十分な余地がOB217にあると、すぐに、読取ストローブ
が生成される。OB内のバッファdが、装置識別子dに関連付けられる。このバ
ッファは、2つの理由すなわち、(a)外部装置dが、一時的にXCalibe
rからのデータを受け入れないか、(b)OBからの読取データの速度が、それ
に書き込まれるデータの速度より低いのいずれかである場合に、満杯になる可能
性がある。
られると、すぐに、そのアトミックページを割振り解除することができる。1つ
または複数のアトミックページの割振り解除は、上で説明したものと同一の手順
に従う。しかし、LPMビットがデアサートされている場合には、アトミックペ
ージの割振り解除は行われない。パケットがEPM701にある場合には、Ke
epSpaceビットがドントケアになる。
の最初のバイトがあるEPM内のアドレスをSIU107に供給する。SIUは
、EPMからのパケットのダウンロードを実行する。SIUは、OB217内の
対応するバッファ内のバッファスペースも監視して、EPM701から読み取ら
れる16バイトチャンクを書き込む余地があるかどうかを判定する。パケットが
完全にダウンロードされた時に、SIUは、その事実についてPMMUに知らせ
、その結果、PMMUが、同一の装置識別子を有する次のパケットをダウンロー
ドできるようにする。
順位のパケットからのデータが、まずメモリから読み出される。このプリエンプ
ションは、16バイト境界で、またはパケットがその伝送を終了した時に、発生
する可能性がある。両方のパケットが同一の優先順位(QSによって供給される
)を有する場合には、ラウンドロビン法を使用して、データを次にダウンロード
されるパケットを選択する。この選択論理では、OB内の2つのバッファがどれ
ほど満杯であるかも考慮に入れる。たとえばバッファdが満杯である場合に、装
置識別子dを有するパケットは、データの次の16バイトチャンクのダウンロー
ドのためにPMMU内で選択されなくなる。
始される時に、PMMUは、パケットの最初の有効なバイトがどこに存在するか
を知っている。しかし、パケットのサイズは、パケットデータの最初のライン(
または、いくつかの場合に最初の2ライン)がパケットメモリから読み取られる
まで未知である。というのは、パケットのサイズが、パケットデータの最初の2
バイトに含まれるからである。したがって、パケットのダウンロードの処理では
、まず、パケットのサイズを判定するのに必要なラインアドレスを生成し、その
後、必要な場合に、アクセスの残りを生成する。
バイトライン内のどの位置にも存在する可能性があることを考慮に入れる。特定
のケースが、最初の2バイトが2つの連続するラインにまたがる時である(これ
は、最初のバイトがラインの第16バイトであり、第2バイトが次のラインの第
1バイトである時に発生する。
がパケットメモリから読み取られ、OBに送られた)とすぐに、PMMUが、こ
のイベントについてQSに通知する。QSは、対応するパケットをそのキューイ
ングシステムから無効化する。
ない、すなわち、パケットが、その送信を終了する。同一のアウトバウンド装置
識別子を有する、ダウンロードの準備ができた他のパケットは、前のパケットが
送信されつつある間は、前のパケットが完全に送信されるまで送信することがで
きない。
、または同一サイズにとどまる可能性がある。サイズが変化する場合には、SP
Uが、パケットの同一の最初の2バイトにパケットの新しいサイズを書き込まな
ければならない。パケットの増大および縮小の現象を、図8に示す。
トが増大する時に、追加されるデータによって、ヘッダ増大を経験するパケット
の直前に保管されていた可能性がある別のパケットまたは末尾増大の場合には真
後に保管された別のパケットのデータが上書きされる可能性がある。この問題を
避けるために、パケットがパケットメモリに保管される時に、すべてのパケット
の前後に空のスペースが割り振られるようにPMUを構成することができる。こ
れらの空のスペースは、それぞれHeaderGrowthOffsetおよび
TailGrowthOffsetというブート時構成レジスタを用いて指定さ
れ、これらのレジスタの粒度は、16バイトである。最大のHeaderGro
wthOffsetは240バイト(15個の16バイトチャンク)であり、最
大のTailGrowthOffsetは、1008バイト(63個の16バイ
トチャンク)である。どちらの場合でも、最小値は0バイトである。これらの増
大オフセットが、すべての着信パケットに適用される、すなわち、異なる増大オ
フセットを異なるパケットに適用する機構がないことに留意されたい。
+((HeaderGrowthOffset+TailGrowthOffs
et)<<4)の連続したスペースを探す。したがって、パケットの最初のバイ
ト(ASIC固有ヘッダの最初のバイト)は、実際には、パケットメモリ内のオ
フセット((packetPage<<8)+(HeaderGrowthOf
fset<<4))から始まる。
がって、パケットが先頭と末尾の両方でどれだけ安全に増大できるかを知ってい
る。パケットが最大オフセットを超えて増大する必要がある場合には、ソフトウ
ェアは、パケットメモリ内の新しい位置にパケットを明示的に移動しなければな
らない。これを行うステップは、次の通りである。
を要求する。PMUは、この新しいスペースを識別する(ポイントする)新しい
packetPageを返す。
Pageの名前を変更する。
スペースを割振り解除するように要求する。
Page<<8)+(HeaderGrowthOffset<<4))から始
まらない。新しい開始位置は、パケットの処理が完了した時にSPUによって実
行される特殊な命令を用いてPMUに供給される。この情報が、QSブロックに
よってPMMUに供給される。
セッサ内で処理中のパケットのpacketPage識別子をFIFO様キュー
に保存することによって、着信パケットの順序を保証する。しかし、ソフトウェ
アは、QSから明示的に識別子を抽出し、それらをキューのいずれかの末尾に挿
入することによって、この順序付けを破ることができる。
ロックに到着するすべてのパケットにタイムスタンプを付けるように、オンザフ
ライ構成フラグTimeStampEnabledを使用してPMUを構成する
ことができる。タイムスタンプは、8バイト値であり、コアクロックサイクルご
とに増分される64ビットカウンタから得られる。
イトタイムスタンプ値を付加し、タイムスタンプは、パケットがネットワーク出
力インターフェースに送られる時にはぎとられる。タイムスタンプ値は、必ず、
パケットメモリの第(k−1)16バイトチャンクの8MSBバイトを占め、こ
こで、kは、パケットのデータが開始される16バイトラインオフセットである
(k>0)。HeaderGrowthOffsetが0の場合には、タイムス
タンプ値は、TimeStampEnabledがアサートされている場合であ
っても、付加されない。
unter)を介してソフトウェアに供給される。
求するか解放する。具体的に言うと、ソフトウェアがPMMMUに対して実行で
きる2つの動作がある。まず、ソフトウェアは、動作GetSpace(siz
e)を介して、LPM内でsizeバイトの連続したスペースを見つけることを
試みることができる。PMUは、見つかった連続するスペースが始まるアトミッ
クページ番号(すなわちpacketPage)と、成功ビットを用いて応答す
る。PMUが、スペースを見つけることができた場合には、成功ビットに「1」
がセットされ、そうでない場合には「0」がセットされる。SoftwareO
wned構成ビットがアサートされているメモリのブロックについては、Get
Spaceは満足されない。したがって、ソフトウェアは、ソフトウェア所有の
LPMブロックのメモリスペースを明示的に管理する。
パケットのアトミックページの割振りに使用されるビットの組EnableVe
ctorは、GetSpace動作ではドントケアである。言い換えると、si
zeバイトを含むのに十分な連続する割り振られていないアトミックページが、
特定のブロックに存在する限り、GetSpace(size)動作は、そのブ
ロック内のすべての仮想ページがディスエーブルされている場合であっても成功
する。
まずその仮想ページのすべてをディスエーブルされているブロックを使用してサ
ービスされる。そのようなブロックが複数存在する場合には、最も小さいブロッ
ク番号が選択される。sizeが0である場合には、GetSpace(siz
e)は「0」を返す。
e(packetPage)である。この動作では、PMUが、前に割り振られ
たアトミックページ(packetPageで始まる)を割振り解除する。この
スペースは、着信パケットの結果としてPMMUによって自動的に割り振られた
ものまたはGetSpaceコマンドの結果としてのいずれかであった可能性が
ある。FreeSpaceは、結果をソフトウェアに返さない。Softwar
eOwnedビットをアサートされたブロックに対するFreeSpace動作
は、無視される(何も行われず、結果がSPUに返されない)。
実施形態では、256KBのサイズ、バイトイネーブルを伴う16バイトライン
幅、2バンク(偶数/奇数)、バンクごとに1つの読取ポートと1つの書込ポー
トを有し、完全にパイプライン式であり、1サイクルの待ち時間を有する。
および書込要求を受け取る。LPMコントローラが、PMMUからの要求が最高
の優先順位を有することを保証する。PMMUは、別のパケットを書き込んでい
る間に、多くとも1つのパケットを読み取る。LPMコントローラは、PMMU
が、必ずLPMへの専用ポートを有することを保証する。
ているものと同一のデータを読み取る/書き込むことができる。したがって、同
一サイクル内の読取アクセスと書込アクセスが、異なる16バイトラインアドレ
スに対して実行されるという保証はない。
のいずれか)として定義される。SIUは、マスクドロードまたはマスクドスト
アに関する複数の要求を生成するが、これは、本発明人が知っている新しい命令
であり、少なくとも1つの別の特許申請書の主題である。したがって、マスクド
ロード/ストア動作は、最高優先順位のPMMUアクセスが同一のポートを必要
とする場合に、これらの複数の要求の途中でストールされる可能性がある。
いると仮定される(すなわち、ライン内の16バイトのすべてが、読み取られる
か書き込まれる)。SIUが読取または書込を行う時には、バイトイネーブル信
号が、意味を持ち、SIUによって供給される。
する16バイトラインを読み取り、所望のバイト/ワードの抽出および右寄せを
実行する。SPUが、単一のバイト/ワードを書き込む時には、SIUが、正し
い位置にそのバイト/ワードを有する16バイトラインと有効バイト信号を生成
する。
動作を実行する要求を3つまで受け取ることができる。たとえば、連続するスペ
ースのチャンクに関する検索を実行する要求と、対応するアトミックページサイ
ズを割り振る要求と、生成されたpacketPageを供給する要求が、IB
および/またはソフトウェアから来る場合がある。所与のpacketPage
に関連するアトミックページの割振り解除を実行する要求が、QSおよび/また
はソフトウェアから来る場合もある。
の動作が、1つを超えないサイクルを要することが必要である。PMMUは、1
時に1つの動作だけを実行する。PMMUブロックは、最高から最低への順で、
IB、QS、およびソフトウェアからの要求に優先順位を与える。
機構を実施する。この機構の一部は、LPMが満杯になることの検出であり、こ
の場合には、SPUに対するNoMorePagesOfXsizeInt割込
みが生成される。EPMは、ソフトウェア制御であり、したがって、その状態は
、PMMUハードウェアによって維持されない。
PagesOfXsizeInt割込みをイネーブルすることができる。PMM
Uは、そのサイズの使用可能な仮想ページが使用可能でない(すなわち、すべて
のブロックについてFitsVector[s]がデアサートされている)こと
を検出した時に、必ずこの割込みを生成する。選択された仮想ページサイズが大
きいほど、割込みが早く生成される。仮想ページのサイズは、オンザフライ構成
レジスタIntIfNoMoreThanXsizePages内の4ビット値
(0:256バイト、1:512バイト、…、8:64KB)を用いて示される
。この値が8を超える時には、割込みは絶対に生成されない。
に満杯(すなわち、1バイトパケットであっても、これ以上パケットが受け入れ
られない)時に、NoMorePagesOfXsizeInt割込みが生成さ
れる。
合に、最も早く割込みが生成されるのは、ローカルパケットメモリが(100/
2X)%満杯の時である。アトミックページが256バイトなので、LPMが、
3Kバイトのパケットデータで満杯になる可能性がある(パケットごとに3バイ
ト、各パケットが1アトミックページを使用)ことに留意されたい。
憶する。このサイズが、最初の2バイトで指定されたサイズと異なる場合には、
SPUに対するPacketErrorInt割込みが生成される。この場合に
、不一致のパケットサイズを有するパケットは、ドロップされる(既に割り振ら
れたアトミックページは、割振り解除され、packetPageは作成されな
い)。この場合には、AutomaticDropInt割込みは生成されない
。実際のサイズが、最初の2バイトで指定されたサイズより大きい場合には、A
SCIから受け取られつつある残りのパケットデータが、安全に破棄される。
れた時には、同一の装置識別子から受け取られるそれ以降のパケットが、ソフト
ウェアがClearErrorD構成レジスタに(なんらかの値を)書き込むま
で、ドロップされる。
PMUから出てゆく可能性がある。具体的に言うと、ネットワーク入力インター
フェースが、送り込まれたデータの16バイトチャンクがバスエラーを有するこ
とを通知する場合があり、また、SIUが、EPMからダウンロードされたデー
タの16バイトチャンクがバスエラーを有することを通知する場合がある。どち
らの場合でも、PMMUは、PacketErrorInt割込みを生成して、
このイベントについてSPUに通知する。他の情報は、SPUには供給されない
。
出機構が実装されていないので、そのエラーが検出されないことに留意されたい
。バスエラーが発生する時には、必ず、影響されたパケットのデータが、それ以
上はPMUによって受け取られなくなる。これは、どちらの場合でもSIUによ
って行われる。第1の場合について、PMMUは、エラーイベントの前に受け取
ったパケットデータのために使用された既に割り振られているアトミックページ
を割振り解除するだけでよい。
、同一の装置識別子から受け取られるそれ以降のパケットが、ソフトウェアがC
learErrorD(D=0、1)構成レジスタに(なんらかの値を)書き込
むまでドロップされる。
現在XCaliberプロセッサ内で処理中のパケットのパケット識別子および
パケットの状態を保持する機能、デフォルトまたはソフトウェア供給の優先順位
によってパケットをソートされた状態に保つ機能、使用可能なコンテキストの1
つにプリロードされる必要がある(バックグラウンドで)パケットを選択する機
能、および外部装置への送出の準備ができた処理済みパケットを選択する機能を
有する。
示すブロック図である。PMMUが、packetPageを作成する時に、そ
のpacketPageが、キュー番号および装置識別子と共にQSに送られる
。QSは、そのpacketPageを対応するキューにエンキューし、そのパ
ケットに番号(packetNumber)を関連付ける。結局、パケットが、
選択され、RTUに供給され、RTUは、packetPage、packet
Numberおよびパケットヘッダの選択されたフィールドを、使用可能なコン
テキストにロードする。結局、SPUが、そのコンテキストを処理し、他の情報
の中でも、パケットの処理が完了するかパケットがドロップされた時を、PMU
に通信する。この通信に関して、SPUは、パケット識別子としてpacket
Numberを供給する。QSは、完了(最初のケースで)としてそのパケット
をマークし、パケットは、結局、パケットメモリからのダウンロードのために選
択される。
ロセッサに到着したのと同一の順序で外部装置に送出される必要がある(ソフト
ウェアが明示的にこの順序付けを壊さない限り)ことが、この実施形態の要件で
ある(非常に望ましい)。SPUがパケットの処理を開始する時には、フローは
知られていない。フロー内のパケットの順序付けの記憶は、必要な処理の量に起
因して、また、応用分野によってはアクティブフローの数が非常に大きくなる可
能性があるので、コストの高いタスクである。したがって、フロー内の順序は、
通常は、アグリゲーテッドフローキューを使用することによって記憶される。ア
グリゲーテッドフローキューでは、異なるフローからのパケット識別子が、順序
付けのために同一のフローからのものとして扱われる。
ハードウェアでバックグラウンドで行うことによって、このタスクをオフロード
する。現在の実施形態では、32個までのアグリゲーテッドフローキューを維持
することができ、これらのキューのそれぞれが、暗黙の優先順位を有する。ソフ
トウェアは、32個までのキューのどれにでもpacketPageをエンキュ
ーすることができ、あるキューから別のキューへpacketPage識別子を
移動することができる(たとえば、そのパケットの優先順位がソフトウェアによ
って発見された時に)。ソフトウェアは、必要な場合に、同一のフローに属する
パケットのすべてのpacketPage識別子を同一のキューにエンキューす
ることが期待される。そうでなければ、パケットが、同一のフロー内で順序はず
れで送出されるので、ネットワークの性能の低下が発生する可能性がある。ソフ
トウェアの介入なしで、QSは、フローごとの到着の順序を保証する。
2キューの場合に、0から31までの番号が付けられる。各キューは、256個
までのエントリを有することができる。しかし、すべてのキューのすべてのエン
トリの合計が、256を超えることはできない。したがって、キューサイズは動
的である。キューエントリは、packetPage識別子と他の情報を合わせ
たものに対応する。したがって、256個までのパケットが、所与の時点でXC
aliberプロセッサ内で処理中であることを許容される。この最大値は、ソ
フトウェアには不可視である。
での番号(packetNumber)が、packetPageに割り当てら
れる。この番号は、packetPageの値と共にソフトウェアに供給される
。ソフトウェアは、QSに対する動作を実行したい時に、packetNumb
er識別子を供給する。この識別子は、QSによって、packetPage(
および対応するパケットに関連する他の情報)をそのキューの中およびキューの
間で突き止めるのに使用される。
であることを知っている。キューは、使用されない限りディスエーブルされる。
すなわち、ソフトウェアは、何個のキューが必要であるかを前もって判断する必
要がない。キューは、少なくとも1つのパケットがそのキューに存在する時にイ
ネーブルされる。
なることができる。したがって、動作が最初に適用されるパケット識別子を選択
するための、優先順位付け機構が存在しなければならない。ソフトウェアは、「
オンザフライ」構成レジスタPriorityClustersを使用して、キ
ューの間での相対優先順位を(オンザフライで)構成することができる。これは
、異なるキューをクラスタにグループ化する方法を指定する3ビット値である。
各クラスタは、優先順位を関連付けられる(クラスタ番号が高いほど、優先順位
が高い)。QSを構成することができる現在の実施形態での6つの異なるモード
を、図10に示す。
stersの値である。ソフトウェアは、この番号を制御し、それによってQS
構成が定義される。たとえば、PriorityClusters=2の場合に
、QSは、4つのクラスタに構成され、各クラスタに8つのキューがある。4つ
のクラスタの第1のクラスタが、キュー0から7を有し、第2のクラスタが、キ
ュー8から15を有し、第3のクラスタが、16から23、4つのクラスタの最
後のクラスタが、キュー24から31を有する。
密な優先順位式に扱われる。したがって、すべてのキューの枯渇がないことを保
証する唯一のモードが、32個のキューの1つのクラスタを意味する、Prio
rityClustersが0である時である。
チャを示す図である。packetPageおよびDeviceIdの情報の挿
入が、個々のキューに向かう矢印によって示されている(この例では32個のキ
ュー)。この情報は、3つの可能なソースすなわち、PMMU、SPU、および
QSからの再挿入から挿入される可能性がある。複数のソースがQSへの挿入の
準備ができているpacketPageを有する場合のための、機能要素110
1によって示される優先順位論理がある。この実施形態では、優先順位は、優先
順位の降順で、PMMU、QS、およびSPU(ソフトウェア)である。
れ自体でパケットを作成することができる。それを行うために、ソフトウェアは
、まず、所与のサイズの空きスペースの連続したチャンク(SPUドキュメンテ
ーションを参照されたい)をPMUに要求し、PMUが、スペースが見つかった
場合にpacketPageを返す。ソフトウェアは、パケットが結局送出され
るようにするために、そのpacketPageを明示的に挿入する必要がある
。QSがこのpacketPageを挿入する時に、作成されたpacketN
umberがSPUに返される。ソフトウェアは、コマンドユニットを介して挿
入を要求する(図2を参照されたい)。
尾に移動することができる。この動作は、選択機能1103として図示されてい
る。
した時に、PMMUが、パケットにpacketPageを割り当て、対応する
パケットがパケットメモリに安全に保管されるや否や、packetPageが
QSに送られる。
、下記のフィールドを有する。Valid(1)は、エントリを検証する。Pa
cketPage(16)は、パケットによって使用されるメモリ内の最初のア
トミックページ番号である。NextQueue(5)は、このエントリが現在
属するキュー番号と異なる場合があり、その場合には、この番号によって、エン
トリがキューの先頭に達した時にpacketPageが次に挿入される必要が
あるキューを示す。Delta(10)には、パケットのヘッダが増大または縮
小のいずれかを受けたバイト数が含まれる。この値は、2の補数でコード化され
る。Completed(1)は、ソフトウェアが対応するパケットの処理を終
了したかどうかを示す単一ビットである。DeviceId(2)は、パケット
に関連する装置識別子である。Complete動作がパケットに対して実行さ
れる(下で説明する)前には、DeviceIdフィールドに、パケットを送り
込んだ外部装置の装置識別子が含まれる。Complete動作の後には、この
フィールドに、パケットが送られる装置の装置識別子が含まれる。Active
(1)は、関連するパケットが現在SPUによって処理中であるかどうかを示す
単一ビットである。CRCtype(2)は、CRCをパケットについて計算す
る必要がある場合に、そのCRCのタイプをネットワーク出力インターフェース
に示す。Complete動作がパケットに対して実行される前には、このフィ
ールドは0である。KeepSpace(1)は、パケットがLPM内で占める
アトミックページを、PMMUが割振り解除する(KeepSpaceがデアサ
ートされている)か否か(KeepSpaceがアサートされている)を指定す
る。パケットがEPMに存在する場合には、このビットは、PMMUによって無
視される。
ソフトウェアがpacketPageを挿入する時には、キュー番号が、XSt
reamパケット命令によって明示的に供給され、このXStreamパケット
命令は、SPUの機能であり、本明細書の他所で説明する。packetPag
eが、QS自体によって挿入される場合には、キュー番号は、packetPa
geが存在するエントリのNextQueueフィールドの値である。
フトウェアがLog2InputQueues構成レジスタを(ブート時に)ど
のように構成したかに依存する。Log2InputQueuesに0がセット
されている場合には、着信パケットのすべてのpacketPageが、同一の
キューにエンキューされ、このキューは、オンザフライ構成レジスタFirst
InputQueueによって指定される。Log2InputQueuesに
k(1≦k≦5)がセットされている場合には、パケットの第3バイトのk個の
MSBビットによって、キュー番号が決定される。したがって、外部装置(また
はSIUのネットワーク入力インターフェースブロック)は、PMUに送られる
パケットのそれぞれについて、256個までの優先順位を割り当てることができ
る。QSは、この256個の優先順位を、2kにマッピングし、キュー番号Fi
rstInputQueueからFirstInputQueue+2k−1ま
でを使用して、着信パケットのpacketPageおよびdeviceId情
報を挿入する。
MSBビットを送信することが期待される。そうでないと、パケットが同一のフ
ロー内で順序はずれで外部装置に送り返される可能性があるので、ネットワーク
の性能の低下が発生する可能性がある。ソフトウェアは、外部装置(またはSI
U)が第3バイトでパケットの優先順位の情報を提供できるか否かを知っている
。
のPacketPageフィールドにpがセットされ、Validフィールドに
「1」がセットされる。他のフィールドの値は、挿入のソースに依存する。ソー
スがソフトウェア(SPU)である場合には、Completedが「0」であ
り、NextQueueがSPUによって供給され、DeviceIdが「0」
であり、Activeが「1」であり、CRCtypeが0であり、KeepS
paceが0であり、Probedが0である。
Pageが現在存在するエントリでそれらのフィールドが有する値が割り当てら
れる。ソースがPMMUである場合には、Completedが「0」であり、
NextQueueがqであり、DeviceIdが、パケットをXCalib
erに送信した外部装置の装置識別子であり、Activeが「0」であり、C
RCtypeが0であり、KeepSpaceが0であり、Probedが0で
ある。
トリを再エンキューする、ダウンロードのためにPMMUにpacketPag
e(および他の情報)を送る、packetPage(および他の情報)をRT
Uに送るなど、対応する動作を実行する。
ューに移動する必要があるかどうかを判定する。再エンキューされる候補エント
リは、有効であり、キューの先頭にあり、パケットが現在存在するキューのキュ
ー番号と異なるNextQueueフィールド値を有する必要がある。
細書で後で説明する優先順位方式に従って選択される。
トメモリからのダウンロードを必要としているかどうかを判定する。この動作が
、図11の1102である。XCaliberから送出される候補エントリは、
有効であり、キューの先頭にあり、パケットが現在存在するキューのキュー番号
と同一のNextQueueフィールド値を有し、Completedフラグを
アサートされ、Activeフラグをデアサートされている必要がある。さらに
、QSは、ダウンロードコマンドをQSに発行したものと同一のコンテキストか
らの保留中の読取または書込が存在しないことを保証する必要がある。
書で後で説明する優先順位方式に従って選択される。
みである。候補が要求された場合に、選択されたpacketPageが、それ
が抽出されたクラスタ番号、末尾増大/縮小、アウトバウンド装置識別子ビット
、CRCtypeおよびKeepSpaceビットと共に、PMMUに送られる
。
viceidフィールドが0である場合には、アウトバウンドデバイス識別子は
、インバウンドデバイス識別子と同一であり、後は表に示された通りである。
クされ、キューイングシステムから抽出される(その結果、そのエントリが、送
信の準備ができている他のパケットをブロックせず、異なるアウトバウンド装置
識別子に進むようになる)。しかし、エントリは、対応するパケットが完全にダ
ウンロードされたことをPMMUが通知するまで、無効化されない。したがって
、このエントリに対するプローブタイプの動作は、有効としてすなわち、まだX
Caliberプロセッサ内に存在するものとして扱われる。
cketNumberを、XCaliberに到達し、キューに挿入されるパケ
ットのそれぞれに割り当てる。これは、パケット識別子が挿入される256エン
トリのテーブルを維持することによって行われる。この時点で、パケット識別子
のValidビットもアサートされる。XCaliberによって処理されるパ
ケットの総数は256をはるかに超えるので、パケット番号は、もちろん、XC
aliberプロセッサの動作全体を通じて再利用されなければならない。した
がって、パケットがダウンロードのために選択される時に、ある時点で、pac
ketNumberが、もはや進行中の有効なパケットに関連しなくなり、その
番号を再利用できるようになる。
acketNumberに関連する。packetNumberを再利用に使用
可能にする通常の形は、処理の前にコンテキストにプリロードするためにパケッ
トがQSによってRTUに送られることである。その後、パケットが、完全に処
理され、完全にメモリからダウンロードされた時に、packetNumber
を関連付けるテーブル内のパケット識別子が、Validビットを操作すること
によって無効とマークされる(図11および付随するテキストを参照されたい)
。
、発明人は、ActiveビットおよびValidビットが、ストリームの間の
競合を回避するのに十分でない状況があることを発見した。これらの状況の1つ
が、時々ガーベジコレクションと称するクリーンアップ処理に関係し、この処理
では、ソフトウェアが、すべてのパケット番号を監視して、パケットがシステム
内に長くとどまりすぎている時を判定し、ある条件の下でパケットを破棄し、新
たに到着するパケットのためにシステム内のスペースを解放する。
トの所有権を得なければならず、ストリームがパケットに対して実行する動作が
、実際に正しいパケットに対して実行されることを保証しなければならない。し
かし、ソフトウェアがパケットをプローブする時に、処置を講ずる前に、複数の
ストリームが動作しているので、また、システムの通常の動作によって、パケッ
トがたとえばRTUにも送られる可能性があるので、これらの特殊な動作で、プ
ローブされるパケットが、特殊な動作が完了する前に、別のストリームによって
選択され、影響を受けることが、完全に可能である。パケットは、たとえば、R
TUに送られ、処理され、ダウンロードされる可能性があり、新しいパケットが
、そのpacketNumberに割り当てられる可能性があり、その新しいパ
ケットが、当初のパケットと正確に同一のpacketPageに保管される可
能性さえある。ガーベジコレクション処理でのパケットの破棄などの特殊な動作
が、元々破棄のために選択されたパケットではなく、新しい完全に有効なパケッ
トを破棄する危険性がある。これは、もちろん、トラブルにつながる可能性があ
る、潜在的に多数のそのような特殊な動作の1つにすぎない。
よび時刻rを与えられて、時刻sでの有効なpacketNumberと時刻r
での同一のpacketNumberが、同一のパケットに関連付けられている
ことを保証する機構を提供した。単純なプローブ動作は、十分でない。というの
は、sの後でrの前のある時に関連するパケットがダウンロードされ、もう1つ
の(異なる)パケットが到着し、前のパケットと正確に同一のメモリ位置に保管
され、ダウンロードされたパケットと同一のpacketNumberを割り当
てられている可能性があるからである。
るためにXCaliberで実装された機構には、パケット識別子内のプローブ
ビットが含まれる。ガーベジコレクションなどの処理を実行する第1のストリー
ムが、パケットをプローブする時に、Probe&Setと称する特殊なコマン
ドが使用される。Probe&Setは、プローブビットをセット(アサート)
し、Validビット、Activeビット、packetPageアドレス、
およびプローブビットの古い値などの通常の情報が、返される。第1ストリーム
は、その後、本明細書の他所で説明するConditional Activa
te命令を実行して、パケットの所有権を得る。また、キューイングシステムは
、このConditional Activate命令を実行する時に、パケッ
トのアクティブビットをアサートする。第1ストリームによってプローブビット
がセットされた後のどの時刻であっても、第2ストリームが、後に同一のパケッ
トをプローブする時に、アサートされたプローブビットによって、第1ストリー
ムがこのパケットの制御を得ようとしていることが示される。第2ストリームは
、このパケットをそのままにしておくことを知る。このプローブビットは、パケ
ットがXCaliberプロセッサに入り、新しい(有効でない)番号が割り当
てられる時にデアサートされる。
で、到着し、パケットメモリに完全に保管されたパケットのヘッダのいくつかの
フィールドをアップロードする。このバックグラウンドでのパケットのヘッダの
アップロードは、同一のパケットに関して複数回行われる場合がある。QSは、
どのパケットをRTUに送る必要があるかを記憶する。この選択動作が、図11
に1104として図示されている。
、対応するパケットがもはやインアクティブパケットでないことをQSに通知す
る。QSは、そのパケットをアクティブとしてマークする。
ompletedビットをデアサートされた最も古いエントリであり、パケット
が現在存在するキューのキュー番号と同一のNextQueueフィールド値を
有し、候補が存在するキュー内のある個数を超えないパケットがSPU内で現在
処理されつつあるという制限に従う必要がる。この制限に関するさらなる詳細は
、本明細書で後に提供する。エントリがプリロードのためにRTUに送られる時
に、対応するActiveビットがアサートされる。
提示されていないエントリを有することができる。すべてのキューが、RTUに
送られる必要がある、そのキュー内で最も古いエントリをポイントするポインタ
(NextPacketForRTU)を有する。キュー内では、パケット識別
子が、キューに挿入されたのと同じ順序で、RTUに送られる。
acketForRTUによってポイントされる識別子である。しかし、これら
のポインタのいくつかが、存在しないエントリをポイントする場合がある(たと
えば、キューが空の時、またはすべてのエントリが既にRTUに送られている時
)。キューのそれぞれの状態を記憶するハードウェアが、これらの状態を判定す
る。NextPacketForRTUポインタによってポイントされる有効な
エントリであることのほかに、候補エントリは、現在RTU内で別のエントリに
よって使用されていないRTU優先順位(本明細書で後に説明する)を関連付け
られることが必要である。複数の候補が存在する場合には、選択されるエントリ
は、本明細書で後に説明する優先順位方式に従って選択される。
に送られるエントリは、そのキューから抽出されない。そうではなく、対応する
NextPacketForRTUポインタが更新され、対応するActive
ビットがアサートされる。
が空いている限り、RTUブロック内の8エントリテーブルにエントリを送る。
RTUは、RTUがSPUに対して生成できる割込みのそれぞれについて1つの
、多くとも8つのエントリを受け入れる。
られる)の優先順位を、RTUによって処理される8つの優先順位(RTU優先
順位)の1つにマッピングする。このマッピングを、図13の表に示すが、この
マッピングは、異なるキューがグループ化されるクラスタの数(構成レジスタP
riorityClusters)およびエントリが存在するキュー番号に依存
する。
ントリには、パケット識別子(packetPage、packetNumbe
r、キュー番号)と、それを検証するValidビットが含まれる。RTUは、
そのテーブルのエントリpの対応するValidビットがデアサートされている
場合に、必ずRTU優先順位pのパケット識別子を受け入れる。RTUが、QS
からRTU優先順位pのパケット識別子を受け取る時に、テーブルのエントリp
のValidビットがアサートされ、パケット識別子が保管される。その時に、
QSが、対応するNextPacketForRTUポインタを更新することが
できる。
SPU内のストリームのいずれかによって処理される)パケットの数を制限する
ことができる。これは、MaxActivePacketsオンザフライ構成レ
ジスタを介して達成され、このレジスタでは、キューごとに、そのキュー内でス
トリームによって処理されることができるパケットの最大個数に対応する、1と
256の間の値が指定される。
のカウンタを維持する。このカウンタは、パケット識別子がキューqからRTU
に送られる時、Move動作によってパケットがキューqに移動される時、また
はInsert動作によってパケット識別子がキューqに挿入される時に、必ず
増分され、下記の動作のいずれかがキューq内の有効なエントリ内で実行される
時に減分される:Complete動作、Extract動作、エントリを異な
るキューに移動するMove動作、またはエントリをいずれかのキュー(同一の
キューを含む)に移動するMoveAndReactivate動作。Move
、MoveAndReactivate、Insert、Complete、お
よびExtractは、本明細書の他所で説明する動作である。
で指定された対応する最大値以上である時には、必ず、キューqのエントリが、
RTUへの送出を許可されない。カウンタの値が、より大きくなる可能性がある
のは、ソフトウェアが、変更の時点でカウンタ値より小さい値にキューのMax
ActivePackets構成レジスタを変更することができ、キューが移動
または挿入のバーストを受け取ることができるからである。
amパケット命令のSPUコアによるディスパッチの結果としてQSに対して生
成される可能性があるすべての命令のリストである。
。挿入が成功であった場合には、SPUに「1」が返され、そうでない場合には
「0」が返される。挿入は、使用可能なエントリがない時(すなわち、256個
のエントリのすべてが有効である時)に限って不成功になる。
エントリのNextQueueフィールドをアサートする。
nが存在するエントリのNextQueueフィールドをqにアサートし、A
ctiveビットをデアサートする。
エントリのCompletedフラグをアサートし、Deltaフィールドをd
にアサートし、deviceIdフィールドをeにアサートする。Active
ビットをデアサートし、KeepSpaceビットをデアサートする。
e()と同一であるが、KeepSpaceビットをアサートする。
Validフラグをリセットする。
リのPacketPageフィールドにpacketPage pをセットする
。
の情報をソフトウェアに返す。存在する場合には、PacketPage、Co
mpleted、NextQueue、DeviceId、CRCtype、A
ctive、KeepSpace、およびProbedフィールドを返す。
nが有効であり、Probedがアサートされ、Activeがデアサートさ
れ、パケットが送信中でない場合に、「1」を返す。この場合に、Active
ビットがアサートされる。
Uテーブルにあり、プリロードを待っている、またはプリロードされているかど
うかを判定するためにRTUに照会する。パケット識別子がテーブル内にある場
合に、RTUがそれを無効化する。キューが、たまたは同時にそのパケットのプ
リロードを開始する場合には、QSはそのパケットをアクティブにしない。
dビットをアサートする(返されるProbedビットは、古いProbedビ
ットである)。
提供する。
)、MoveAndReactivate()、Complete()、Com
pleteAndKeepSpace()、Extract()、およびRep
lace()は、無視される(割込みが生成されない)。
に対するMove、MoveAndReactivate、Complete、
CompleteAndKeepSpace、Extract、およびRepl
aceは、生じてはならない(ソフトウェアによって保証される)。生じた場合
には、結果は未定義である。Insert、Probe、ProbeAndSe
t、およびConditionalActivate動作だけが、SPUに応答
する。
る場合に、結果は未定義である。というのは、移動がソフトウェアが指定した通
りに発生するという保証がないからである。
、およびProbedビットの許容される組合せを示す表である。
動作をサポートする。 1.エントリを、キューの末尾にエンキューする。 2.エントリを、それが存在するキューからデキューする。 3.エントリを、それが現在存在するキューの先頭から別のキューの末尾に移
動する。 4.キューのエントリをRTUに供給する。 5.キューのサイズを供給する。 6.packetNumberに関連するフィールドのいずれかを更新する。
発明の好ましい実施形態では4サイクルで完了する。これは、1サイクルあたり
1命令のスループットを暗示する。
位付けが必要である。最高から最低の優先順位への順で、これらのイベントは、
PMMUからの挿入、エントリのデキュー、あるキューから別のキューへのエン
トリの移動、プリロードのためにRTUへのエントリの送出、またはソフトウェ
ア動作である。ソフトウェア動作の間の優先順位付けは、ソフトウェア動作が必
ず順番に実行されるので、設計によって提供される。
の間のフロー制御を助ける機構を実装する。この機構の一部は、QSが満杯にな
りつつあることを検出することであり、この場合には、SPUに対してLess
ThanXpacketIdEntriesInt割込みが生成される。ソフト
ウェアは、0より大きい数zを指定する(IntIfLessThanXpac
ketIdEntries構成レジスタで)ことによって、この割込みをイネー
ブルすることができる。割込みは、256−y<zの時に生成され、このyは、
現在XCaliber内で処理中のパケットの総数である。z=0の時には、割
込みは絶対に発生しない。
生きているパケットの情報をプリロードすることである。この情報は、パケット
のpacketPageおよびpacketNumberと、そのヘッダのいく
つかのフィールドである。選択されたコンテキストは、プリロードの時点でPM
Uによって所有され、プリロードされるや否や、SPUに解放される。したがっ
て、SPUは、ヘッダ情報をロードする、コストの高いロード動作を実行する必
要がなく、したがって、パケット処理の総合的な待ち時間が減らされる。
umber)と、パケットがそこから来たキューの番号を)QSから受け取る。
この識別子は、部分的にはネットワーク入力インターフェースを介してXCal
iberに新しいパケットが到着した結果としてPMMUによって作成され(p
acketPage)、部分的にはpacketPageおよびデバイス識別子
がエンキューされる時にQSによって作成される(packetNumber)
。
ロード/ストア命令を実行することである。というのは、マスクドロード/スト
ア命令を実行する論理が、プリロードを実行する論理に類似するからである。し
たがって、両方の動作についてハードウェアを共用することができる。この理由
から、RTUは、1時に両方ではなく、マスクドロード/ストア命令またはプリ
ロードのいずれかを実行する。マスクドロード/ストア命令は、コマンドキュー
(CU)ブロックを介してRTUに到達する。
ができる。コンテキストの所有権は、現在の所有者がコンテキストを解放する時
に変更される。PMUは、3つの場合にSPUにコンテキストを解放する。第1
に、RTUが、コンテキストへのパケットの情報のプリロードを終了した時であ
る。第2に、SPUがRTUにコンテキストを要求する時に、PMUがSPUに
コンテキストを解放する。この場合には、RTUが、解放できるコンテキストを
有する場合に、そのコンテキストを解放する。第3に、8つのすべてのコンテキ
ストが、PMU所有である。プリロードされているコンテキストは、PMU所有
コンテキストとみなされることに留意されたい。
TUにコンテキストを解放する。
8つのコンテキストのうちの7つを所有し、SPUが、1つのコンテキストを所
有する。PMUは、それが所有するコンテキストにパケットの情報をプリロード
することだけができる。コンテキストへのパケットの情報のプリロードの処理は
、2ステップに分割することができる。パケットが開始されるアドレス(パケッ
トメモリアドレススペース内のオフセット)をロードする第1フェーズ。このオ
フセットは、パケットのバイト単位のサイズをコーディングする2バイト値の第
1バイトをポイントする。パケットが、タイムスタンプされ、HeaderGr
owthOffsetが、0でない場合には、タイムスタンプ値が、オフセット
−4に配置される。オフセットアドレスは、(packetPage<<8)|
(HeaderGrowthOffset<<4)として計算される。このオフ
セットは、選択されたコンテキストのレジスタ番号StartLoadingR
egisterにロードされる。StartLoadingRegisterは
、ブート時構成レジスタである。packetNumber値は、レジスタ番号
StartLoadingRegister+1にロードされる。
、レジスタStartLoadingRegister+2、StartLoa
dingRegister+3、…(GPRレジスタが存在する限り、必要なだ
けいくつでも)を使用してロードされる。PatternMatchingTa
ble[q](qは、パケットに関連するキュー番号である)マスクによって、
パケットのヘッダをコンテキストのGPRレジスタにロードする方法が指定され
る。PatternMatchingTableは、マスクを含む、オンザフラ
イ構成レジスタである。ヘッダデータを得るために、RTUは、必要な数のパケ
ットデータの16バイトラインをパケットメモリに読み込むようにSIUに要求
する。RTUは、パケットメモリから16バイトライン(ローカルまたは外部の
いずれか)を受け取る時に、この動作を制御するパターンマスクを使用して、コ
ンテキストにロードすることが望まれるバイトを選択する。
eloadMaskNumber構成レジスタを介して、キューごとに、ソフト
ウェアによってディスエーブルすることができる。このレジスタでは、QS内の
可能な32個のキューのそれぞれについて、PatternMatchingT
able内のどのマスク(0から23まで)が、プリロードに使用されることに
なるかを指定する。24と31の間の値が、この構成レジスタ内で指定される場
合には、それは、RTUによって、実行しないものとして解釈される。
P0レジスタは、SPUによって初期化される。ロードされるコンテキストは、
PMU所有コンテキストなので、RTUは、ロードを実行するために、そのコン
テキストへの使用可能なすべての書込ポート(この実施形態では4つ)を有する
。
を介してSPUにこのイベントを通知する。同様に、プリロード動作が完了する
時にも、RTUが、SPUに通知する。したがって、SPUは、パケットのプリ
ロードのそれぞれについて、2回の通知(開始および終了)を期待する。RTU
が、同一サイクルでプリロードを開始し、終了する時(これは、パケットヘッダ
のロードのステップがディスエーブルされてる時に発生する)には、特別な通知
が、SPUに供給される。この3つの場合のどれでも、RTUは、パケットに関
連するコンテキスト番号およびCodeEntryPoint構成レジスタの内
容を供給する。PMUが、8つのすべてのコンテキストがPMU所有なのでSP
Uにコンテキストを解放する場合には、CodeEntryPointSpec
ialの内容が、SPUに供給される。RTUは、8エントリのテーブル(コン
テキストごとに1エントリ)を有し、各エントリが、プリロードの準備ができて
いるパケット識別子と、そのエントリを検証する有効ビットを有する。RTUは
、プリロードを行うために、必ず、最高のエントリインデックスの有効な識別子
を選択する。コンテキストが、この識別子に関連付けられる時に、対応する有効
ビットが、デアサートされる。RTUは、1時に1つのコンテキストをプリロー
ドする。コンテキストをロードした後に、そのコンテキストが、SPUに解放さ
れ、SPU所有コンテキストになる。この時点で、RTUは、コンテキストにプ
リロードされる次のパケットについてテーブルを検索する(少なくとも1つのP
MU所有コンテキストがある場合)。
合テーブルを示す。RTUは、コンテキストのプリロードに、このテーブル内の
サブマスク(0から23まで)のどれでも使用することができる。サブマスクを
、複数のサブマスクを含むより大きいマスクにグループ化することもできる。
32×2ビットのサブマスクの変数番号(1から8まで)である。すべてのサブ
マスクが、複合マスクが対応するサブマスクで終るのか、次のサブマスクに継続
するのかを示す、関連付けられたビット(EndOfMask)を有する。サブ
マスクの最大の総数は32であり、そのうちの24個(サブマスクインデックス
0から23)がグローバルであり、これは、SPU内のすべてのストリームが、
それを使用でき更新できることを意味し、8個が、ストリームごとのサブマスク
である。ストリームごとのサブマスクは、EndOfMaskビットを有しない
が、これは、ストリームごとのサブマスクのグループ化が許容されないからであ
る。
びRegisterVectorと呼ぶ。SelectVectorは、パケッ
トのヘッダからのどのバイトが、コンテキストに保管されるかを示す。Regi
sterVectorは、SelectVectorによって選択されたバイト
を保管し続けるためにコンテキスト内の次の連続するレジスタに切り替える時を
示す。バイトは、レジスタ内で必ず右寄せされる。
tVectorでアサートされたビットによって、ヘッダの対応するバイトがレ
ジスタに保管されることが示される。たとえば、ヘッダのバイト0、1、および
7が、それぞれGPR番号StartLoadingRegister+2のバ
イト0、1、および2にロードされる(すなわち、ヘッダバイトは、レジスタに
ロードされる時に右寄せされる)。RegisterVectorでアサートさ
れたビットは、現在のGPRレジスタにそれ以上のヘッダバイトがロードされな
いことと、次のヘッダバイトがある場合に、それが次の(連続する)GPRレジ
スタにロードされることを示す。この例では、ヘッダのバイト12および13が
、GPR番号StartLoadingRegister+3にロードされる。
レードオフに起因して、ストリーム(コンテキスト)は、4つの機能ユニットの
固定された組に命令を発行することだけができる。
て、プリロードが実行される時またはコンテキストをSPUに供給する時に、コ
ンテキストの1つを選択する論理が設けられる。この論理は、PMUコア内の異
なるストリーム(コンテキスト)が、異なる機能ユニットに潜在的にどのように
命令をディスパッチできるかに基づいて定義され、この論理の目標は、SPU内
の機能ユニットが潜在的に受け取ることができる動作のバランスをとることであ
る。
がPMU所有またSPU所有のどちらであるかを示す8ビットをとる。この論理
は、選択が可能なPMU所有コンテキストを出力する。
が、SPU/PMU所有コンテキストの可能な組合せに関連する。たとえば、第
1の数は、組合せ「00000001」に対応する、すなわち、コンテキスト番
号0がPMU所有であり、コンテキスト番号1から7がSPU所有である(LS
B桁がコンテキスト0に対応し、MSB桁がコンテキスト7に対応し、0の値が
SPU所有を意味し、1の値がPMU所有を意味する)。第2の数は、組合せ「
00000010」に対応し、第3の数は、組合せ「00000011」に対応
し、組合せ「11111110」まで同様である。19番目の組合せ(「000
10011」)は、前のリストの数3(または「00000011」)に関連し
、これは、コンテキスト0および1を選択できることを意味する。コンテキスト
4を選択することもできるが、これは、SPUコア内の機能ユニットの使用のバ
ランスをとるための最適の選択ではない。
ブルを有する。このテーブルのエントリpには、pのRTU優先順位を有するパ
ケット識別子(packetPage、packetNumber、およびキュ
ー番号)と、その識別子を検証するValidビットが含まれる。RTUは、プ
リローディングまたはマスクドロード/ストアの実行でビジーでない時に、この
テーブルから、最高のRTU優先順位を有する有効な識別子を得る。それが存在
し、少なくとも1つのPMU所有コンテキストがある場合に、RTUは、PMU
所有コンテキストのプリロードを開始し、テーブル内のValidビットをリセ
ットする。
よって解放されるまで、アイドルになる(保留中のソフトウェア動作がないと仮
定して)。コンテキストが解放された時点で、RTUは、やはり、NewPac
ketIdTableから最高の有効なRTU優先順位の識別子を得る(RTU
がSPUによるコンテキストの解放を待っている間に、最高のRTU優先順位を
有する新しい識別子が、QSによって送られた可能性があるので)。Valid
ビットがリセットされ、パケット情報が、使用可能なコンテキストへのプリロー
ドを開始される。この時点で、RTUは、QSからRTU優先順位pのパケット
を受け入れることができる。
の識別子が、NewPacketIdTableのエントリpにロードされ、V
alidビットがセットされる。この時に、NewPacketIdTable
内の有効な識別子の数(やってくる1つをカウントせずに)が、現在の使用可能
なPMU所有コンテキスト(RTUが現在ロードしようとしているコンテキスト
をカウントせずに)以上である場合に、PacketAvailableBut
NoContextPriorityPInt割込みが、SPUに対して生成さ
れる。Pは、0から7までの範囲であり、その値は、ブート時構成フラグPac
ketAvailableButNo ContextIntMappingに
よって決定される。このフラグが「0」である場合には、Pは、3ビットのブー
ト時構成レジスタDefaultPacketPriorityによって決定さ
れる。このフラグが「1」の場合には、Pは、RTU優先順位である。しかし、
PacketAvailableButNoContextPriorityP
intは、対応する構成フラグPacketAvailableButNoCo
ntextPriorityPintEnableがデアサートされている場合
には、生成されない。
Page、packetNumber、およびヘッダ情報をプリロードできるよ
うにするために、それが所有するコンテキストを解放するか否かを決定する。
orityPInt割込みを生成する時に、数サイクル後に、SPUによって解
放されたコンテキストを受け取る場合がある。しかし、このコンテキストは、た
とえばストリームの1つがパケットの処理を終了した時に解放されたものである
可能性がある。これは、PacketAvailableButNoConte
xtPriorityPInt割込みの割り込みサービスルーチンが終了する前
に発生する可能性がある。したがって、コンテキストが、ISR完了に起因して
解放される時に、割込みを引き起こしたプリロードされたパケットが、すでに、
SPU内の別のストリームによって最初に解放されたコンテキストを使用してい
る可能性がある。したがって、割込みに起因して解放されるコンテキストが、別
の(おそらく将来の)パケットプリロードに使用される。NewPacketI
dTable内の他のエントリが有効でない場合には、コンテキストは、識別子
がRTUに到達するか、SPRがRTUにコンテキストを要求するまで、使用さ
れ、そのままになる。
は、必ず、RTUが、最高優先順位の保留中のプリロード(NewPacket
Table内の最高の有効なエントリに対応する)を選択し、プリロードを開始
する。このレベルに関連するPacketAvailableButNoCon
textPriorityint割込みがアサートされた場合には、プリロード
が開始される時に、その割込みがデアサートされる。
アによるXStreamパケット命令のディスパッチの結果としてRTUに対し
て生成される可能性があるすべての動作のリストである。動作は、コマンドキュ
ー(CU)を介して、命令を発行したストリームに関連するコンテキスト番号と
共にRTUに到着する。
返す。このコンテキストは、存在する場合に、SPU所有になり、成功フラグが
アサートされて返される。存在しない場合には、デアサートされて返され、この
場合には、コンテキスト番号は無意味である。
、m):SPUコアが、特殊な機能ユニットとしてRTUを使用して、マスクド
ロード/ストア命令を実行する。というのは、マスクドロード/ストア命令を実
行する論理が、プリロードを実行する論理に似ているからである。したがって、
両方の動作についてハードウェアを共用することができる。この理由から、RT
Uは、1時に、両方ではなく、マスクドロード/ストアまたはプリロードのいず
れかを実行する。マスクドロードまたはマスクドストアのいずれかについて、R
TUは、下記のパラメータを受け取る。 (a)マスクドロード/ストア動作によって使用される、PatternMa
tchingTable内の最初のサブマスクのインデックスに対応するマスク
番号m。 (b)マスクの適用が開始される(すべての)メモリ内の最初のバイトをポイ
ントする36ビットアドレスa。 (c)マスクドロード/ストア動作に用いられる最初のレジスタに対応するレ
ジスタ番号r(供給されたコンテキスト番号内の)。同一のコンテキスト番号内
の後続のレジスタが、選択されたマスクに従って使用される。
用を開始されることができるが、プリロード動作で(マスクドロード様動作)は
、マスクが、必ず16バイト境界アドレスから適用される。というのは、ネット
ワーク入力インターフェースから来るパケットデータが、必ず、パケットメモリ
内で16バイトライン内のLSBバイトから保管されるからである。
ntext動作は、RTUとSPUの間の専用インターフェースを介して、完了
した時をSPUに通信する。RTUは、ソフトウェア動作にパケットプリロード
より高い優先順位を与える。プリロードでは、パケットメモリにアクセスするが
、マスクドロード/ストアでは、キャッシュ可能またはライトスルーでない限り
、システム内のどのメモリにもアクセスすることができる。そうでない場合には
、結果は未定義である。
ontextコマンドまたはReleaseコマンドを実行することができる。
いくつかを構成することができる。ブート時のみに構成可能な特徴のすべて、お
よびオンザフライで構成可能な特徴の一部が、SPUが単一ストリームモードで
動作している時に限って発生しなければならない。そうでない場合には、結果は
未定義である。PMUは、SPUがどのモードで動作しているかを検査しない。
することができ、この情報を得ることもできる。これは、別の特許出願の対象で
ある新しいXStreamパケット命令を介して、ソフトウェアによって達成さ
れる。これらの命令は、PMUによって実行される3つの異なるタイプの動作(
動作がPMUのどのブロックすなわち、PMMU、QS、またはRTUのどれに
影響するかに依存する)を作る。これらの動作の一部が、結果をPMUからSP
Uに送り返すことを必要とする。
ケットメモリのベースアドレスを用いて構成レジスタ(16MB整列)を維持し
、EPMのベースアドレスを用いて第2の構成レジスタを維持する。ソフトウェ
アは、連続するスペースとしてパケットメモリを見る。しかし、このシステムで
は、パケットメモリのEPM部分を異なるスペースにマッピングすることができ
る。
タも維持する。SPUによって実行されるLPMおよびおよび構成スペースへの
ロード/ストアアクセスのすべてが、SIUを介してPMUに達する。SIUは
、アクセスがどのスペースに属するかを判定し、PMUに、アクセスがLPMま
たはPMU構成スペースのどちらに対するものであるかを知らせる。EPMへの
アクセスは、PMUには透過的である。
トウェアは、構成レジスタを介して、これらの割込みのすべてをディスエーブル
することができる。
ペース内にある。このスペースのベースアドレスは、SIUによって維持され、
PMUによって可視にする必要はない。SIUは、SPUによって実行される読
取/書込アクセスがこのスペースに属する時を、書込アクセスの際に特定のレジ
スタを更新するのに必要な情報と共に、信号を用いてPMUに通知する。
ザフライで構成することができるものがある。すべてのブート時構成レジスタお
よび一部のオンザフライ構成レジスタには、単一ストリームモードでアクセスす
る必要がある。ブート時構成レジスタは、PMUがリセットモードである場合に
のみ更新されなければならない。そうでない場合には、結果は未定義である。P
MUは、単一ストリームモード構成レジスタが更新される時に、SPUが実際に
単一ストリームモードであるかどうかを検査しない。すべての構成レジスタが、
リセットシーケンスの後にデフォルト値を有する。
成スペースに割り振られる。XCaliberのPMU内では、これらの構成レ
ジスタの一部が、使用されないか、まばらに使用される(すなわち、32ビット
構成レジスタの一部のビットだけが意味を持つ)のいずれかである。PMU構成
スペース内の定義されていないビットは、将来のPMU世代のために予約されて
いる。ソフトウェアは、これらの予約済みビットを読み取るか書き込むことがで
きるが、その内容は、完全に決定的ではあるが、未定義である。
す。各ワードまたはワードの組に、構成レジスタが含まれる。
るワードへのマッピングを示す表の2つの部分である。各構成レジスタのブロッ
ク所有者も、この表に示されている。
ト値(PMUリセット後の)のリストである。構成レジスタのそれぞれについて
、ビット幅を括弧内に示す。特に指定されない限り、構成レジスタの値は、構成
スペース内の対応するワード内で右寄せされる。
PMMUからのpacketPage/deviceIdが挿入されるキューの
数)。
ープ化されるかを指定する(0:1クラスタ、1:2クラスタ、2:4クラスタ
、…、5:32クラスタ)。
される空の16バイトチャンクの数。最大値は、15個の16バイトチャンク。
最小値は0。
される空の16バイトチャンクの数。最大値は、63個の16バイトチャンク。
最小値は0。
ping(1) (a)デフォルト値:0 (b)説明:PacketAvailableButNoContextP
riorityPInt割込みがイネーブルされる場合のPを指定する。可能な
値は次の通り: (1)0:PはDefaultPacketPriorityレジスタに
よって指定される。 (2)1:PはRTU優先順位である。
ドロードを実行する時にRTUによってロードされる最初のGPRレジスタ番号
を決定する。このレジスタには、値(packetPage<<8)|(Hea
derGrowthOffset<<4)がロードされる。packetNum
berは、次のGPRレジスタにロードされる。それに続くGPRレジスタは、
PatternMatchingMask0マスクがイネーブルされる場合に、
それに続いてパケットヘッダデータをプリロードするのに使用される。
ダのプリロードがディスエーブルされる)。 (b)説明:QSの32個の可能なキューのそれぞれについて、Patte
rnMatchingTable内のどのマスクがプリロードに使用されるかを
指定する。
マッピングを示す。
真下に、オンザフライ構成レジスタをリストする。
ローをイネーブル/ディスエーブルする。ディスエーブルされた時には、パケッ
トがドロップされる。
イトを保管する (3)EndOfMask:1 (b)説明:マスクドロード/ストア動作について、どのバイトをどの(連
続する)レジスタにロード/ストアするかを指定する。このテーブルのマスク0
は、RTUによって、バックグラウンドで、使用可能なコンテキストの1つにパ
ケットのヘッダの一部のバイトをプリロードするのに使用される。合計24個の
マスクがある。 (c)注:マスク0は、PMUがフリーズされる時(セクション0を参照さ
れたい)に書き込まれる必要があり、そうでなければ、結果は未定義である。
。
ンスを実行させる。PMU内のすべてのパケットデータが失われる。リセットシ
ーケンスの後には、すべての構成レジスタがデフォルト値を有する。
に、装置識別子Dで検出されたパケットエラー状態がクリアされる。
tyPintEnable(8)[P=0..7] (a)デフォルト値:0(すべてのレベルについて) (b)説明:PacketAvailableButNoContextP
riorityPint割込みをイネーブル/ディスエーブルする。
ーブル/ディスエーブルする。
。イネーブルされ、HeaderGrowthOffsetが0より大きい時に
、パケットがパケットメモリに書き込まれる前に、4バイトのタイムスタンプが
パケットに付加される。
ーブルする。
ーブルされる。 (b)説明:LPMが分割される4つのブロックのそれぞれの仮想ページを
イネーブル/ディスエーブルする。256バイト(LSBビットによってイネー
ブルされる)から64Kバイト(MSBビットによってイネーブルされる)まで
の、その間は2のべきのサイズの、9つまでの仮想ページがある。
)。 (b)説明:16MSBビットが、オーバーフローしたパケットが保管され
始めるパケットメモリ内のアトミックページ番号に対応する。8LSBビットは
、「0」にハードワイヤされる(すなわち、ソフトウェアによってこれらのビッ
トにセットされた値が、無視される)。OverflowAddressは、1
6MBパケットメモリ内のオフセットアドレスである。SIUは、このオフセッ
トを、EPM内の対応する物理アドレスに変換する。パケットメモリの最初の1
Kアトミックページが、LPMに対応する。ソフトウェアが、Overflow
Addressの16MSBに0から1023までの値をセットした場合には、
結果は未定義である。パケットがオーバーフローした時に、OverflowA
ddressの16MSBビットが、そのパケットのpacketPageにな
る。SPUは、この構成レジスタに書き込んだ時に、次のパケットオーバーフロ
ーを許容する。
:512バイト、…、8:64Kバイト、9から15:仮想ページなし)。PM
MUが、すべてのLPMにそのサイズの仮想ページがこれ以上存在しないことを
検出した時に、必ず、SPUに対してNoMoreThanXSizePage
sInt割込みが生成される。
数。使用可能なエントリの実際の個数がこの数未満である場合には、SPUに対
して割込みが生成される。この数が0である場合には、LessThanXPa
cketIdEntriesInt割込みは生成されない。
appingが0である時の、PacketAvailableButNoCo
ntextInt割込みの優先順位レベルを与える。
sk:(8×(32×2)) (a)デフォルト値: (1)SelectVector:すべてのバイトを選択する (2)RegisterVector:各レジスタに4バイトを保管する
(EndOfMaskは1にハードワイヤされる) (b)説明:マスクドロード/ストア動作について、どのバイトをどの(連
続する)レジスタにロード/ストアするかを指定する。ソフトウェアは、ストリ
ームがその対応するコンテキスト固有マスクだけにアクセスすることを保証する
。
マスク構成レジスタを示す。
定する。
クがソフトウェア所有され、そのブロックのメモリがソフトウェアによって管理
されることを示し、そのブロックのVirtualPageEnableビット
がドントケアであることを示す。
パケットの最大個数に対応する、0と256の間の値を指定する。
内容は、キューqに存在するパケットをプリロードされたコンテキストがアクテ
ィブにされる時に、SPUに送られる。
なるという事実に起因してコンテキストがアクティブにされる時に、SPUに送
られる。
パスフックをアクティブにする。バイパスフックは、このレジスタの対応するビ
ットがアサートされているサイクルに適用される。
。内部状態のワードは、InternalStateRead構成レジスタを読
み取る時に、ソフトウェアから使用可能になる。InternalStateW
rite構成レジスタは、1実施形態では、PMUのデバッグに使用されるのみ
である。
必ず、このレジスタに、そのパケットのバイト単位のサイズが含まれる。
まれる。
リーズが完了した時を見つける(FreezeビットおよびResetビット)
か、インバウンド装置識別子ごとのパケットエラーのソースを見つける(Err
:1−エラー、0−エラーなし;EPM:1−パケットをEPMにオーバーフロ
ーする間にエラーが発生した、0−パケットをLPMにストアしている間にエラ
ーが発生した;PSM:1−パケットサイズ不一致に起因するエラー、0−バス
エラーに起因するエラー)ために、SPUによってポーリングされる。
トウェアは、上にリストした構成レジスタの一部を使用して、これらの割込みの
すべてをディスエーブルすることができる。さらに、各ストリームが、これらの
割込みを個別にマスクすることができるが、これは、別の特許出願の対象である
。PMUが生成する割込みのリストは、次の通りである。
emoryに保管できない時に、SIUを介してExternalPacket
Memoryにパケットをオーバーフローする。 (b)ディスエーブル条件:OverflowEnable=「0」
たサイズの、使用可能な空き仮想ページがない。 (b)ディスエーブル条件:IntIfNoMoreXSizePages
={10、11、12、13、14、15}。
fLessThanXPacketIdEntries未満である。 (b)ディスエーブル条件:IntIfLessThanXPacketI
dEntries=0
tyPint(P=0..7) (a)割込み条件:パケットが、QSからRTUによって受け取られたが、
使用可能なコンテキストがない。
ontextPriorityPIntEnable=「0」
lowEnable=「0」である時。 (b)ディスエーブル条件:AutomaticPacketDropIn
tEnable=「0」
ASIC固有ヘッダの最初の2バイトの値と一致しない時、またはバスエラーが
発生した時。 (b)ディスエーブル条件:PacketErrorIntEnable=
「0」
がサービスされる時に、割込みを引き起こした条件がハードウェアでクリアされ
ることを意味する。これは、割込みがSPUによってサービスされる前に、割込
みを引き起こした条件が複数回発生する可能性があることも意味する。したがっ
て、対応する割込みサービスルーチンは、割込みを引き起こした条件が複数回発
生した場合であっても、1回だけ実行される。
、割込みがサービスされるまでその条件がさらに発生しないことを保証する特殊
なインターロック機構が、ハードウェアで実装される。
込みおよびPacketAvailableButNoContextPrio
rityPInt割込みの場合である。第1の場合には、パケットがオーバーフ
ローされた時に、ソフトウェアがオンザフライ構成レジスタOverflowA
ddressに新しいアドレスを書き込むまで、他のパケットはオーバーフロー
されない。パケットがオーバーフローされたが、OverflowAddres
sレジスタがまだソフトウェアによって書き込まれていない場合には、LPMに
おさまらないのでそうでなければオーバーフローされるはずの後続のパケットを
、ドロップしなければならない。
ityPInt(P=0..7)割込みについて、PMUアーキテクチャは、暗
黙のうちに、複数の条件(Pのそれぞれについて)が発生しないことを保証する
。これが設計によって保証されるのは、下記の理由による。 (a)PacketAvailableButNoContextPrior
ityPInt割込みは、RTU優先順位Pのパケット識別子がRTUに到達し
た時に限って生成され、 (b)RTU優先順位Pを有するパケット識別子は、多くとも1つだけがRT
Uに存在する。
トウェアは、条件が発生した回数を正確に知るために、所与のタイプの割込みが
発生した回数をカウントすることに頼ってはならない。
取る/書き込むことができる。ストリームは、すべてのパケットメモリにアクセ
スでき、パケットメモリがカーネルスペースとしてマッピングされない限り、ス
トリームが、全く関係のないパケットからのデータにアクセスできなくする機構
がない。
一ストリームモードであるか否かに無関係に、構成レジスタを更新することがで
きる。具体的に言うと、どのストリームでも、PMUをフリーズし、リセットす
ることができる。
、ソフトウェアがそのパケットの「処理」を継続することを妨げるものがない。
更新し、この情報を得ることができる。これは、上で参照した新しいXStre
amパケット命令の一部を介して、ソフトウェアによって達成される。これらの
命令の一部は、PMUからの応答を必要とするという意味で、ロード様である。
他の命令は、ストア様命令であり、PMUからの応答を必要としない。
ンドユニット213の図であり、図27のブロックのすべてが、図2と同一の符
号を有する。SPUは、すべてのコンテキストにまたがって1サイクルあたり多
くとも2つのパケット命令をディスパッチする(SPUのクラスタごとに1命令
)。パケット命令のタイプは、命令が影響するPMUブロック(PMMU、QS
、またはRTU)に対応する。SPUがパケット命令をディスパッチする時に、
PMUへの単一のコマンドが、生成され、CUブロック内の3つの異なるキュー
の1つに挿入される(コマンドが送られるPMUブロックごとに1つのキュー)
。PMUに対するコマンドは、PMMUコマンドキュー2703に発行され、Q
Sへのコマンドは、QSコマンドキュー2705に進み、RTUへのコマンドは
、RTUコマンドキュー2707に進む。各キューが、8つまでのコマンドを保
持することができる。SPUは、対応するキューに十分な空きエントリがある場
合に限って、CUにコマンドをディスパッチする。
応答をキューイングする8エントリのResponseQueue2709に応
答(ある場合に)を収集する責任を負う。CUは、所与のサイクルで3つ(3つ
のブロックのそれぞれから1つ)までの応答を受け取ることができる。(a)ス
トリームごとに1つの未解決のパケット命令だけが許容され、(b)Respo
nse Queueが、ストリームと同数のエントリを有し、(c)PMUに対
するコマンドがパケット命令ごとに1つだけ生成され、(d)各ロード様コマン
ドごとに1つの応答だけが生成されるので、PMUブロックによって生成された
応答をエンキューするのに十分なスペースがResponseQueueにある
ことが保証される。ResponseQueueは、1時に2つまでのコマンド
をエンキューできなければならない。
これらのコマンドは、コマンドとしてPMMU、RTU、およびQSブロックに
も送られる。PMMU、QS、およびRTUは、それらに適用される構成レジス
タのローカルコピーを保持する。CUも、すべての構成レジスタのコピーを保持
し、このコピーが、SIUからの構成レジスタ読取を満足するのに使用される。
のユニットとの間に特殊なインターフェースが設けられる。XCaliberの
PMU内には、2つの読取専用構成レジスタが存在し、一方はPMMUブロック
内(SizeOfOverflowedPacket)、他方はCUブロック内
(StatusRegister)に存在する。PMMUは、SizeOfOv
erflowedPacketレジスタに書き込む時に、必ず、CUに通知し、
CUは、そのローカルコピーを更新する。
することができる。しかし、キュー内では、コマンドが、順番に、1時に1つず
つ実行される。PMUは、1サイクルあたり3つまでのコマンドの実行を開始す
ることができる。PMMUブロックおよびQSブロックは、他のイベント(新し
いパケットがPMMUに達した時の新しいpacketPageの作成、または
QSに送出する必要があるパケット識別子の抽出など)に、SPUからのコマン
ドより高い優先順位を与える。これは、SPUにデータを送り返すことを要求す
るコマンドが、PMMUまたはQSのいずれかが他の動作の実行でビジーなので
、実行に複数サイクルを要する可能性があることを意味する。
キストにパケット情報をプリロードするため)およびSPU(ソフトウェアコマ
ンド)を有する。RTUは、必ず、より高い優先順位をSPUコマンドに与える
。しかし、RTUは、保留中のSPUコマンドを実行する前に、進行中のコンテ
キストプリロード動作を終了する。
を有する。 1.コンテキスト番号。これは、コマンドを生成したストリームに関連するコ
ンテキストである。 2.コマンドオペコード。これは、PMUによって実行されるコマンドのタイ
プを指定する数である。 3.コマンドデータ。これは、コマンドオペコードフィールドで指定されたコ
マンドを実行するために、PMUが必要とする異なる情報である。
マンドキューがどれであるかを判定する。キューのいずれかに挿入されたコマン
ドは、受け取られたコマンドに類似する構造を有するが、オペコードおよびデー
タのビット幅は、キューによって変化する。図28の表に、キューのそれぞれに
挿入されるコマンドのフォーマットを示す。含まれていないのが、CUがPMM
Uブロック、QSブロック、およびRTUブロックに送るRead Confi
guration RegisterコマンドおよびWrite Config
uration Registerコマンドである。
に関連するコンテキストに対応する番号を用いてタグを付けられる。生成される
応答も、同一のコンテキスト番号を用いてタグを付けられ、その結果、SPUが
、発行されたコマンドのどれにその応答が属するかを知るようになる。
ResponseQueue2709(図27)が、1つだけ存在する。応答を
必要とするパケット命令が、ストリームごとに多くとも1つが未解決になるので
、応答がどのブロックから来たかを示す必要がないことに留意されたい。したが
って、応答に関連するコンテキスト番号は、応答をストリームに関連付けるのに
十分な情報である。
である。この表に含まれていないのは、CUが構成レジスタ読取を実行する時の
、ブロックのそれぞれによってCUに供給される構成レジスタ値である。
ス(図27の経路2711)を介してSPUに通知する。
スト番号を供給する。
ッチしたストリームに関連するコンテキスト番号およびRTUによって選択され
たコンテキスト番号が、インターフェースによって供給される。GetCont
extが成功した時には、成功ビットがアサートされ、そうでない場合にはデア
サートされる。
び優先順位が、SPUに供給される。
StatusRegister構成レジスタのResetビットがセットされる
。リセットシーケンスの後に、すべての構成レジスタに、そのデフォルト値がセ
ットされ、PMUが、フリーズモードに入る(StatusRegisterの
Resetビットが、リセットされ、Freezeビットがセットされる)。こ
れが終わった時に、SPUが、Freeze構成フラグをリセットし、その時点
から、PMUが通常モードで動作する。
sRegisterのFreezeビットをセットする前に、現在の1つまたは
複数のトランザクションを終了する。フリーズモードに入った後は、PMUは、
ネットワーク入力インターフェースからのデータを受け入れず、ネットワーク出
力インターフェースを介してデータを送出せず、パケットをプリロードしない。
る。
MUがどのモードであるか(リセットまたはフリーズ)を判定し、PMUがモー
ドを変更する時を検出する必要がある。
に指示する。下記は、CUがリセットおよび/またはフリーズ構成ビットへの書
込を受け取る時の、CUと他のブロックの間のプロトコルである。 1.CUは、フリーズまたはリセットのいずれかを実行する必要があるブロッ
クに通知する。 2.すべてのブロックが、フリーズまたはリセットを実行する。完了の後に、
ブロックが、フリーズまたはリセットを完了したことをCUにシグナルバックす
る。 3.CUは、リセットまたはフリーズが完了されるや否や、StatusRe
gisterのビットを更新する。ソフトウェアが、StatusRegist
erをポーリングして、PMUが完全にフリーズした時を判定する。
アップロードを終了すると同時に、およびアウトバウンドパケットがある場合に
、PMMUがそのダウンロードを終了すると同時に。 3.プリロード動作がある場合に、RTUが現在のプリロード動作を終了する
と同時に。 4.OBが空になると同時に。
ードを開始せず、SPU(PMMU)への割込みを生成せず、 2.コンテキストをプリロードせず、SPU(RTU)への割込みを生成しな
い。
、その後、PMUがフリーズまたはリセットする前に「0」を書き込む場合に、
結果は未定義である。PMUは、フリーズ/リセットシーケンスを開始した後に
、それを完了する。
プローブは、SIUに送られ、性能プローブとしてソフトウェアによって使用さ
れる。SIUは、PMUがSIUに送るイベントの一部をカウントするのに使用
されるカウンタの組を有する。ソフトウェアが、XCaliberチップ全体を
通じて監視したいイベントを決定する。ソフトウェアが性能カウンタをどのよう
に構成できるかに関するさらなる情報については、SUIアーキテクチャ仕様文
書を参照されたい。
個までのイベントを、PMU内でプローブすることができる。64個のすべての
イベントが、各サイクルに、64ビットバスを介してSIU(EventVec
tor)に送られる。
できる。ソフトウェアが、イベントのうちの2つを選択する(EventAおよ
びEventB)。この2つのそれぞれについて、PMUが、イベントがEve
ntVectorバスに供給されるのと同時に、関連する16ビット値(それぞ
れEventDataAおよびEventDataB)を供給する。
イクルにわたってイベントをアサートする場合に、そのイベントは、2回カウン
トされる。EventVectorの対応する信号は、イベントが発生した場合
に限って、イベントの状態が保持されるサイクルにわたってアサートされる。
をどのようにプログラムしたかに基づく)。SIUが、EventAまたはEv
entBと異なるイベント番号をカウントすると決定した場合に、SIU内のカ
ウンタが、EventVector内の対応するビットがアサートされるサイク
ルについてイベントをカウントする。監視されるイベントがEventAおよび
/またはEventBである場合に、SIUは、イベント/sをカウントするほ
かに、イベントが発生するたびに、EventDataAおよび/またはEve
ntDataBによってもう1つのカウンタを増分する。
な実装を示す。CUは、PMUとSIUの間の、性能カウンタに関するインター
フェースとして働く。CU213は、EventAおよびEventB内の情報
を異なるユニットに分配し、ユニットのそれぞれの個々のEventVecto
r、EventDataA、およびEventDataBを収集する。
IUに送る。CUは、異なるブロックとインターフェースして、各ブロック内の
どのイベントがEventDataAおよび/またはEventDataB値を
提供する必要があるかを通知する。
発生したのと同一のサイクルにSIUに報告される必要がない。
が含まれる。これらのイベントは、PMU内のブロックによってグループ化され
る。イベント番号を、第2列に示す。この番号は、イベントが発生する時にアサ
ートされる、EventVector内のビットに対応する。第3列は、イベン
ト名である。第4列に、イベントに関連するデータ値と、括弧内にそのビット幅
を示す。最後の列に、イベントの説明を示す。
IUに送る。CUは、異なるブロックとインターフェースして、各ブロック内の
どのイベントがEventDataAおよび/またはEventDataB値を
提供する必要があるかを通知する。
発生したのと同一のサイクルにSIUに報告される必要がない。
で実装されている。デバッグフックは、下記の2つのカテゴリに分類される。 1.バイパスフック:これによって、潜在的に欠陥のある機能をバイパスする
。これらの機能によって生成される不完全な結果(または、場合によっては、結
果が全くない)の代わりに、バイパスフックは、他の隣接するブロックをテスト
できるようにする少なくともいくつかの機能性を提供する。 2.トリガイベント:PMU内で特定の条件(トリガイベント)が発生する時
に、PMUは、自動的にシングルステップモードに入り、これは、OCIインタ
ーフェース(セクション)を介して、SIUがシングルステップモードを抜ける
コマンドをPMUに送るまで続く。
eStep)が、OCIインターフェースから来る。サイクルごとに、PMUの
異なるブロックが、この信号を監視する。この信号がデアサートされている時に
、PMUは、普通に機能する。SingleStepがアサートされた時に、P
MUは、作業を一切実行しなくなり、進行中のすべての動作が、この信号がデア
サートされるまで保持される。言い換えると、PMUは、この信号がアサートさ
れた時に何も行わない。これに対する唯一の例外が、ブロックがデータを失う可
能性がある時である(例は、2つのブロックの間のインターフェース内とするこ
とができる。ブロックAが、データをブロックBに送り、ブロックBが次のサイ
クルにそのデータを得ると仮定する。SingleStepがこのサイクルにア
サートされた場合には、ブロックBは、Aからのデータが失われないことを保証
しなければならない)。
成レジスタを介してアクティブ化される。図40は、PMU内で実装される異な
るバイパスフックを示す表である。各フックの番号は、BypassHooks
レジスタ内のビット番号に対応する。バイパスフックは、このレジスタ内の対応
するビットがアサートされているサイクルの間、適用される。
、QSのキューqに挿入される。
するキューqからのpacketIdが、RTUに送られる。
するpacketIdが、QSのキューqの先頭に達する。
mber pnを有するパケットが、コンテキストcにプリロードされる。
するキューqからのpacketIdが、ダウンロードのためにPMMに送られ
る。
するpacketIdが、QSのキューqの先頭に達する。
で実装される。
パケットメモリユニット(PMU)を権能を付与する詳細で説明した。アーキテ
クチャ、ハードウェア、ソフトウェア、および動作の詳細が、例示的実施形態で
与えられる。説明した実施形態を、本発明の趣旨および範囲から逸脱せずにかな
り詳細に変更できることが、当業者に明白であろう。たとえば、教示された新規
のアーキテクチャおよび機能性を厳守しながらICハードウェア、ファームウェ
ア、およびソフトウェアをさまざまな形で達成できることが、よく知られている
。したがって、添付の請求項は、最も広義の解釈と一致しなければならない。
されたブロック図である。
ロック図である。
である。
図である。
図である。
図である。
図である。
図である。
ロックの最上位の概略を示す図である。
の高水準通信を示すブロック図である。
。
す図である。
ングを示す表である。
dビット、およびProbedビットの許容される組合せを示す表である。
す図である。
タを示す図である。
MatchingMask構成レジスタを示す図である。
である。
る。
ある。
す表である。
を示す図である。
す図である。
能な実装を示す図である。
である。
る。
ックを示す表である。
Claims (59)
- 【請求項1】 データパケットプロセッサにおいて、処理中のパケットアカ
ウンティング用の構成可能なキューイングシステムであって、 1つまたは複数のクラスタに配置された複数のキューと、 到着するパケットのパケット識別子を作成する識別機構と、 パケット識別子をキューに挿入し、パケット識別子をどのキューに挿入するか
を決定する挿入論理と、 識別されたパケットの処理、完了したパケットのダウンロードの開始のために
キューからパケット識別子を選択し、または選択したパケット識別子を再キュー
イングする選択論理と を有するキューイングシステム。 - 【請求項2】 すべてのキューのパケット識別子の総数が、固定され、クラ
スタの数およびクラスタごとのキューの数を、1から同一の最大個数まで変化す
ることができ、クラスタの数が1と等しい場合、キューの数が最大個数になり、
逆も同様である、請求項1に記載のキューイングシステム。 - 【請求項3】 キューの数を決定するクラスタの相対的な数が、プロセッサ
に関連する構成レジスタをセットすることによってセットされる、請求項2に記
載のキューイングシステム。 - 【請求項4】 パケット識別子の総数が256であり、256個のパケット
が、どの時点でもデータパケットプロセッサで処理中になることができることを
意味する、請求項2に記載のキューイングシステム。 - 【請求項5】 クラスタまたはキューのいずれかの最大個数が32であり、
クラスタまたはキューの数が2のべきになるように制御される、請求項2に記載
のキューイングシステム。 - 【請求項6】 作成される前記パケット識別子が、前記パケット自体が処理
中に保管されるメモリ位置に関連する、請求項1に記載のキューイングシステム
。 - 【請求項7】 処理中にパケットデータを保管するオンボードメモリが、パ
ケットページに配置され、前記パケット識別子が、パケットの前記パケットデー
タが保管されるパケットページの先頭を識別するアドレスである、請求項6に記
載のキューイングシステム。 - 【請求項8】 作成されキューイングされる前記パケット識別子が、前記メ
モリ位置の他に、前記パケットを受信する装置の1つまたは複数の識別子と、前
記パケットが処理中に総サイズが増加または減少したかの表示と、関連するパケ
ットに関する処理が完了したか否かの表示と、前記パケット識別子を挿入すべき
次のキューと、前記パケットが現在処理中であるかどうかの識別子とを含む、請
求項6に記載のキューイングシステム。 - 【請求項9】 前記挿入論理が、パケットの優先順位を決定し、決定した前
記優先順位に応じて前記パケットを特定のキューに挿入する、請求項1に記載の
キューイングシステム。 - 【請求項10】 クラスタが、番号を付けられ、識別されたパケットを処理
する優先順位が、クラスタ番号による、請求項9に記載のキューイングシステム
。 - 【請求項11】 選択システムが、前記パケット識別子にセットされた次の
キュー番号の値に基づいて再キューイングするパケットを選択する、請求項8に
記載のキューイングシステム。 - 【請求項12】 選択システムが、関連するパケットに関する処理が完了し
たかどうかの表示の値に基づいて、ダウンロードするパケットを選択する、請求
項8に記載のキューイングシステム。 - 【請求項13】 選択システムが、キュー番号による優先順位に基づいて処
理するパケットを選択する、請求項10に記載のキューイングシステム。 - 【請求項14】 処理するパケットを選択するために優先順位クラスタのキ
ューを選択する時に、公平アルゴリズムを伴う、請求項13に記載のキューイン
グシステム。 - 【請求項15】 前記データパケットプロセッサが、コンテキストレジスタ
によって実施され個々のストリームに関連する別々のコンテキストを有するマル
チストリーミングプロセッサであり、選択システムが、選択された識別子に関連
するパケットからのヘッダ情報を、使用可能なコンテキストにロードさせる、請
求項1に記載のキューイングシステム。 - 【請求項16】 ストリームより多数のコンテキストがあり、使用可能なコ
ンテキストへのヘッダ情報のローディングが、バックグラウンドで、すなわち、
パケットの処理と並列に、達成される、請求項15に記載のキューイングシステ
ム。 - 【請求項17】 プロセッサによって実行されるソフトウェアが、パケット
識別子のフィールドの個々の値を操作することが可能な、請求項8に記載のキュ
ーイングシステム。 - 【請求項18】 前記挿入論理が、少なくとも部分的にフローに従って、パ
ケットをキューに挿入し、挿入および選択論理が、個々のフローのパケット順序
を保存するために協力する、請求項1に記載のキューイングシステム。 - 【請求項19】 前記挿入論理が、ネットワークまたは交換装置から着信す
るパケットを、キューへの識別子挿入に関する最高の優先順位を用いて扱い、再
キューイングするパケット識別子を次に高い優先順位を用いて扱い、ソフトウェ
アによって生成されるパケットの識別子を最低の優先順位を用いて扱う、請求項
1に記載のキューイングシステム。 - 【請求項20】 データパケットプロセッサであって、 1つまたは複数のソースからの着信パケットをバッファリングする入力バッフ
ァと、 処理中にパケットデータを保管するローカルパケットメモリと、 パケットデータを処理するストリームプロセッサユニットと、 処理中のパケットアカウンティング用の構成可能なキューイングシステムと を含み、前記キューイングシステムが、1つまたは複数のクラスタに配置され
た複数のキューと、到着するパケットのパケット識別子を作成する識別機構と、
パケット識別子をキューに挿入し、パケット識別子をどのキューに挿入するかを
決定する挿入論理と、識別されたパケットの処理の開始のためにキューからパケ
ット識別子を選択し、完了したパケットをダウンロードし、または選択したパケ
ット識別子を再キューイングする選択論理とを含む データパケットプロセッサ。 - 【請求項21】 すべてのキューのパケット識別子の総数が固定され、クラ
スタの数およびクラスタごとのキューの数が、1から同一の最大個数まで変化す
ることができ、クラスタの数が1と等しい場合、キューの数が最大個数になり、
逆も同様である、請求項20に記載のプロセッサ。 - 【請求項22】 キューの数を決定するクラスタの相対的な数が、プロセッ
サに関連する構成レジスタをセットすることによってセットされる、請求項21
に記載のプロセッサ。 - 【請求項23】 パケット識別子の総数が256であり、256個のパケッ
トが、どの時点でも前記データパケットプロセッサで処理中になることができる
ことを意味する、請求項21に記載のプロセッサ。 - 【請求項24】 クラスタまたはキューのいずれかの最大個数が32であり
、クラスタまたはキューの数が2のべきになるように制御される、請求項21に
記載のプロセッサ。 - 【請求項25】 作成される前記パケット識別子が、前記パケット自体が処
理中に保管されるメモリ位置に関連する、請求項20に記載のプロセッサ。 - 【請求項26】 処理中にパケットデータを保管するオンボードメモリが、
パケットページに配置され、前記パケット識別子が、パケットの前記パケットデ
ータが保管されるパケットページの先頭を識別するアドレスである、請求項25
に記載のプロセッサ。 - 【請求項27】 作成されキューイングされる前記パケット識別子が、前記
メモリ位置の他に、前記パケットを受信する装置の1つまたは複数の識別子と、
前記パケットが処理中に総サイズが増加または減少したかの表示と、関連するパ
ケットに関する処理が完了したか否かの表示と、前記パケット識別子を挿入すべ
き次のキューと、前記パケットが現在処理中かどうかの識別子とを含む、請求項
25に記載のプロセッサ。 - 【請求項28】 前記挿入論理が、パケットの優先順位を決定し、決定した
前記優先順位に応じて前記パケットを特定のキューに挿入する、請求項20に記
載のプロセッサ。 - 【請求項29】 クラスタが、番号を付けられ、識別されたパケットを処理
する優先順位が、クラスタ番号による、請求項28に記載のプロセッサ。 - 【請求項30】 選択システムが、前記パケット識別子にセットされた次の
キュー番号の値に基づいて再キューイングするパケットを選択する、請求項27
に記載のプロセッサ。 - 【請求項31】 選択システムが、関連するパケットに関する処理が完了し
たかどうかの表示の値に基づいて、ダウンロードするパケットを選択する、請求
項27に記載のプロセッサ。 - 【請求項32】 選択システムが、キュー番号による優先順位に基づいて処
理するパケットを選択する、請求項29に記載のプロセッサ。 - 【請求項33】 処理するパケットを選択する優先順位クラスタのキューを
選択する時に、公平アルゴリズムを伴う、請求項32に記載のプロセッサ。 - 【請求項34】 前記データパケットプロセッサが、コンテキストレジスタ
によって実施され個々のストリームに関連する別々のコンテキストを有するマル
チストリーミングプロセッサであり、選択システムが、選択された識別子に関連
するパケットからのヘッダ情報を、使用可能なコンテキストにロードさせる、請
求項20に記載のプロセッサ。 - 【請求項35】 ストリームより多数のコンテキストがあり、使用可能なコ
ンテキストへのヘッダ情報のローディングが、バックグラウンドで、すなわち、
パケットの処理と並列に、達成される、請求項34に記載のプロセッサ。 - 【請求項36】 プロセッサによって実行されるソフトウェアが、パケット
識別子のフィールドの個々の値を操作することができる、請求項27に記載のプ
ロセッサ。 - 【請求項37】 前記挿入論理が、少なくとも部分的にフローに従って、パ
ケットをキューに挿入し、挿入および選択論理が、個々のフローでパケットの順
序を保存するために協力する、請求項20に記載のプロセッサ。 - 【請求項38】 前記挿入論理が、ネットワークまたは交換装置から着信す
るパケットを、キューへの識別子挿入に関する最高の優先順位を用いて扱い、再
キューイングするパケット識別子を次に高い優先順位を用いて扱い、ソフトウェ
アによって生成されるパケットの識別子を最低の優先順位を用いて扱う、請求項
20に記載のプロセッサ。 - 【請求項39】 データパケットプロセッサのパケットのアカウンティング
の方法であって、 (a)プロセッサで1つまたは複数のクラスタに複数のキューを設けるステッ
プと、 (b)到着するパケットのパケット識別子を作成するステップと、 (c)どのキューに挿入するかを決定する論理を有する挿入機構によってパケ
ット識別子をキューに挿入するステップと、 (d)識別されたパケットの処理の開始、完了したパケットのダウンロード、
または選択されたパケット識別子の再キューイングのために、選択論理によって
キューからパケット識別子を選択するステップと を含む方法。 - 【請求項40】 すべてのキューのパケット識別子の総数が、固定され、ク
ラスタの数およびクラスタごとのキューの数が、1から同一の最大個数まで変化
することができ、クラスタの数が1と等しい場合に、キューの数が最大個数にな
り、逆も同様である、請求項39に記載の方法。 - 【請求項41】 キューの数を決定するクラスタの相対的な数が、プロセッ
サに関連する構成レジスタをセットすることによってセットされる、請求項40
に記載の方法。 - 【請求項42】 パケット識別子の総数が256であり、256個のパケッ
トが、どの時点でもデータパケットプロセッサで処理中になることができること
を意味する、請求項40に記載の方法。 - 【請求項43】 クラスタまたはキューのいずれかの最大個数が32であり
、クラスタまたはキューの数が2のべきになるように制御される、請求項40に
記載の方法。 - 【請求項44】 作成される前記パケット識別子が、前記パケット自体が処
理中に保管されるメモリ位置に関連する、請求項39に記載の方法。 - 【請求項45】 処理中にパケットデータを保管するオンボードメモリが、
パケットページに配置され、前記パケット識別子が、パケットの前記パケットデ
ータが保管されるパケットページの先頭を識別するアドレスである、請求項44
に記載の方法。 - 【請求項46】 作成され、キューイングされる前記パケット識別子が、前
記メモリ位置の他に、前記パケットを受信する装置の1つまたは複数の識別子と
、前記パケットが処理中に総サイズが増加または減少したかの表示と、関連する
パケットに関する処理が完了したか否かの表示と、前記パケット識別子を挿入す
べき次のキューと、前記パケットが現在処理中であるかの識別子とを含む、請求
項44に記載の方法。 - 【請求項47】 前記挿入論理が、パケットの優先順位を決定し、決定した
前記優先順位に応じて前記パケットを特定のキューに挿入する、請求項39に記
載の方法。 - 【請求項48】 クラスタが、番号を付けられ、識別したパケットを処理す
る優先順位が、クラスタ番号による、請求項47に記載の方法。 - 【請求項49】 選択システムが、前記パケット識別子にセットされた次の
キュー番号の値に基づいて再キューイングのためにパケットを選択する、請求項
46に記載の方法。 - 【請求項50】 選択システムが、関連するパケットに関する処理が完了し
たかどうかの表示の値に基づいて、ダウンロードのためにパケットを選択する、
請求項46に記載の方法。 - 【請求項51】 選択システムが、キュー番号による優先順位に基づく処理
のためにパケットを選択する、請求項48に記載の方法。 - 【請求項52】 処理のためにパケットを選択する優先順位クラスタのキュ
ーを選択する時に、公平アルゴリズムを伴う、請求項13に記載の方法。 - 【請求項53】 前記データパケットプロセッサが、コンテキストレジスタ
によって実施され、個々のストリームに関連する別々のコンテキストを有するマ
ルチストリーミングプロセッサであり、選択システムが、選択された識別子に関
連するパケットからのヘッダ情報を、使用可能なコンテキストにロードさせる、
請求項39に記載の方法。 - 【請求項54】 ストリームより多数のコンテキストがあり、使用可能なコ
ンテキストへのヘッダ情報のローディングが、バックグラウンドすなわち、パケ
ットの処理と並列に、達成される、請求項53に記載の方法。 - 【請求項55】 プロセッサによって実行されるソフトウェアが、パケット
識別子のフィールドの個々の値を操作することが可能な、請求項8に記載の方法
。 - 【請求項56】 前記挿入論理が、少なくとも部分的にフローに従って、パ
ケットをキューに挿入し、挿入および選択論理が、個々のフローのパケット順序
を保存するために協力する、請求項39に記載の方法。 - 【請求項57】 前記挿入論理が、ネットワークまたは交換装置から着信す
るパケットを、キューへの識別子挿入のために最高の優先順位を用いて扱い、再
キューイングされるパケット識別子を次に高い優先順位を用いて扱い、ソフトウ
ェアによって生成されるパケットの識別子を最低の優先順位を用いて扱う、請求
項39に記載の方法。 - 【請求項58】 処理を待っている到着するパケットを管理するキューイン
グシステムを有するデータパケットプロセッサにおいて、 パケット番号の固定された範囲と、 割当機構と を有し、前記割当機構が、前記固定された範囲の個別の番号をアカウンティン
グし、前記キューイングシステムのパケットが処理のために送られるかソフトウ
ェアがパケットをアクティブにする時に番号を無効とマークし、前記キューイン
グシステムに置かれる新たに到着したパケットに無効な番号を再割り当てするこ
とを特徴とする パケット番号付けシステム。 - 【請求項59】 ある時点でパケットに割り当てられたパケット番号が別の
時点で同一のパケットに割り当てられることを保証するために、プローブビット
が各パケットに関連付けられ、前記プローブビットが、パケット番号が割り当て
られる時にデアサートされ、ストリームによって実行されるプローブ・アンド・
セット(Probe and Set)コマンドによってアサートされ、プロー
ブビットがアサートされた後のどの時刻にも、アサートされたプローブビットが
、前記パケット番号が前記同一のパケットに関連することを示すようにすること
を特徴とする、請求項58に記載のシステム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18136400P | 2000-02-08 | 2000-02-08 | |
US60/181,364 | 2000-02-08 | ||
US09/737,375 | 2000-12-14 | ||
US09/737,375 US7058064B2 (en) | 2000-02-08 | 2000-12-14 | Queueing system for processors in packet routing operations |
PCT/US2001/000587 WO2001059585A1 (en) | 2000-02-08 | 2001-01-08 | Queueing system for processors in packet routing operations |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003523112A true JP2003523112A (ja) | 2003-07-29 |
JP3801919B2 JP3801919B2 (ja) | 2006-07-26 |
Family
ID=26877123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001558844A Expired - Fee Related JP3801919B2 (ja) | 2000-02-08 | 2001-01-08 | パケットルーティング動作におけるプロセッサ用キューイングシステム |
Country Status (7)
Country | Link |
---|---|
US (3) | US7058064B2 (ja) |
EP (1) | EP1259888B1 (ja) |
JP (1) | JP3801919B2 (ja) |
AT (1) | ATE460030T1 (ja) |
AU (1) | AU2001227736A1 (ja) |
DE (1) | DE60141452D1 (ja) |
WO (1) | WO2001059585A1 (ja) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7155516B2 (en) * | 2000-02-08 | 2006-12-26 | Mips Technologies, Inc. | Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory |
US20010052053A1 (en) * | 2000-02-08 | 2001-12-13 | Mario Nemirovsky | Stream processing unit for a multi-streaming processor |
US7649901B2 (en) | 2000-02-08 | 2010-01-19 | Mips Technologies, Inc. | Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing |
US7032226B1 (en) | 2000-06-30 | 2006-04-18 | Mips Technologies, Inc. | Methods and apparatus for managing a buffer of events in the background |
US7058065B2 (en) | 2000-02-08 | 2006-06-06 | Mips Tech Inc | Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing |
US7165257B2 (en) | 2000-02-08 | 2007-01-16 | Mips Technologies, Inc. | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts |
US7502876B1 (en) | 2000-06-23 | 2009-03-10 | Mips Technologies, Inc. | Background memory manager that determines if data structures fits in memory with memory state transactions map |
US7065096B2 (en) * | 2000-06-23 | 2006-06-20 | Mips Technologies, Inc. | Method for allocating memory space for limited packet head and/or tail growth |
US7076630B2 (en) * | 2000-02-08 | 2006-07-11 | Mips Tech Inc | Method and apparatus for allocating and de-allocating consecutive blocks of memory in background memo management |
US7082552B2 (en) * | 2000-02-08 | 2006-07-25 | Mips Tech Inc | Functional validation of a packet management unit |
US7058064B2 (en) | 2000-02-08 | 2006-06-06 | Mips Technologies, Inc. | Queueing system for processors in packet routing operations |
US7042887B2 (en) | 2000-02-08 | 2006-05-09 | Mips Technologies, Inc. | Method and apparatus for non-speculative pre-fetch operation in data packet processing |
US7139901B2 (en) * | 2000-02-08 | 2006-11-21 | Mips Technologies, Inc. | Extended instruction set for packet processing applications |
US7000034B2 (en) * | 2000-03-02 | 2006-02-14 | Agere Systems Inc. | Function interface system and method of processing issued functions between co-processors |
US7162615B1 (en) * | 2000-06-12 | 2007-01-09 | Mips Technologies, Inc. | Data transfer bus communication using single request to perform command and return data to destination indicated in context to allow thread context switch |
GB2371705B (en) * | 2001-01-30 | 2003-04-23 | 3Com Corp | Network switch with mutually coupled look-up engine and network processor |
JP2004071103A (ja) * | 2002-08-08 | 2004-03-04 | Sharp Corp | 自己同期型fifoメモリ装置 |
US7263105B2 (en) * | 2002-12-18 | 2007-08-28 | Intel Corporation | WLAN device and method for interfacing between a MAC sublayer and a physical layer |
US8731378B2 (en) | 2003-06-30 | 2014-05-20 | Broadcom Corporation | System, method, and apparatus for playing back a plurality of video elementary streams with one playback channel |
US7664823B1 (en) | 2003-09-24 | 2010-02-16 | Cisco Technology, Inc. | Partitioned packet processing in a multiprocessor environment |
US8243744B2 (en) * | 2004-03-01 | 2012-08-14 | Futurewei Technologies, Inc. | Priority sorting |
US8161270B1 (en) * | 2004-03-30 | 2012-04-17 | Extreme Networks, Inc. | Packet data modification processor |
US7385984B2 (en) * | 2004-03-30 | 2008-06-10 | Extreme Networks, Inc. | Packet processing system architecture and method |
US7778168B1 (en) * | 2004-08-02 | 2010-08-17 | Lsi Corporation | Queuing system with mechanism to limit blocking of high-priority packets |
US7366865B2 (en) * | 2004-09-08 | 2008-04-29 | Intel Corporation | Enqueueing entries in a packet queue referencing packets |
CA2590686C (en) * | 2004-12-17 | 2013-05-21 | Onechip Photonics Inc. | Compact load balanced switching structures for packet based communication networks |
US8331380B2 (en) * | 2005-02-18 | 2012-12-11 | Broadcom Corporation | Bookkeeping memory use in a search engine of a network device |
US7664041B2 (en) * | 2005-05-26 | 2010-02-16 | Dale Trenton Smith | Distributed stream analysis using general purpose processors |
WO2007018852A1 (en) * | 2005-07-27 | 2007-02-15 | Sinett Corporation | Queuing and scheduling architecture using both internal and external packet memory for network appliances |
US7584286B2 (en) * | 2006-06-28 | 2009-09-01 | Intel Corporation | Flexible and extensible receive side scaling |
JP4626582B2 (ja) * | 2006-07-03 | 2011-02-09 | ソニー株式会社 | カード型周辺機器およびカード通信システム |
US7760748B2 (en) | 2006-09-16 | 2010-07-20 | Mips Technologies, Inc. | Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch |
US7773621B2 (en) | 2006-09-16 | 2010-08-10 | Mips Technologies, Inc. | Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch |
US7961745B2 (en) | 2006-09-16 | 2011-06-14 | Mips Technologies, Inc. | Bifurcated transaction selector supporting dynamic priorities in multi-port switch |
US7990989B2 (en) * | 2006-09-16 | 2011-08-02 | Mips Technologies, Inc. | Transaction selector employing transaction queue group priorities in multi-port switch |
CN101277175B (zh) * | 2007-03-30 | 2012-02-29 | 国际商业机器公司 | 改进会话启动协议服务器性能的方法和装置 |
US8170042B2 (en) * | 2007-11-27 | 2012-05-01 | Cisco Technology, Inc. | Transmit-side scaler and method for processing outgoing information packets using thread-based queues |
WO2010117359A1 (en) * | 2009-04-07 | 2010-10-14 | Cisco Technology, Inc. | Transmit-side scaler and method for processing outgoing information packets using thread-based queues |
WO2010147473A1 (en) * | 2009-06-16 | 2010-12-23 | Ontime Networks As | Method on a network element for the purpose of synchronization of clocks in a network |
CN102385558B (zh) * | 2010-08-31 | 2015-08-19 | 国际商业机器公司 | 请求控制装置、请求控制方法及相关的处理器 |
US9197576B2 (en) * | 2010-11-15 | 2015-11-24 | Rockwell Automation Technologies, Inc. | Method and apparatus for allocating and prioritizing data transmission |
US8605732B2 (en) | 2011-02-15 | 2013-12-10 | Extreme Networks, Inc. | Method of providing virtual router functionality |
US8490107B2 (en) | 2011-08-08 | 2013-07-16 | Arm Limited | Processing resource allocation within an integrated circuit supporting transaction requests of different priority levels |
US9582440B2 (en) | 2013-02-10 | 2017-02-28 | Mellanox Technologies Ltd. | Credit based low-latency arbitration with data transfer |
US9641465B1 (en) * | 2013-08-22 | 2017-05-02 | Mellanox Technologies, Ltd | Packet switch with reduced latency |
CN105912273B (zh) * | 2016-04-15 | 2019-05-24 | 成都欧飞凌通讯技术有限公司 | 一种报文共享储存管理的fpga实现方法 |
US10545786B2 (en) | 2017-09-22 | 2020-01-28 | International Business Machines Corporation | Accounting and enforcing non-process execution by container-based software transmitting data over a network |
US10810038B2 (en) | 2017-09-22 | 2020-10-20 | International Business Machines Corporation | Accounting and enforcing non-process execution by container-based software receiving data over a network |
CN111258832B (zh) * | 2020-01-22 | 2023-06-20 | 泰康保险集团股份有限公司 | 一种接口参数校验方法、装置、设备及介质 |
CN112187667B (zh) * | 2020-09-16 | 2022-09-13 | 深圳希施玛数据科技有限公司 | 数据下载方法、装置、设备及存储介质 |
Family Cites Families (143)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR294864A (fr) * | 1899-12-01 | 1900-01-01 | Vicarino Charles Auguste | Nouveau systeme d'eclairage des voitures de chemins de fer par dynamo a vitesse variable et accumulateurs |
US4200927A (en) * | 1978-01-03 | 1980-04-29 | International Business Machines Corporation | Multi-instruction stream branch processing mechanism |
US4707784A (en) * | 1983-02-28 | 1987-11-17 | Honeywell Bull Inc. | Prioritized secondary use of a cache with simultaneous access |
US4942518A (en) * | 1984-06-20 | 1990-07-17 | Convex Computer Corporation | Cache store bypass for computer |
US5021945A (en) | 1985-10-31 | 1991-06-04 | Mcc Development, Ltd. | Parallel processor system for processing natural concurrencies and method therefor |
CA1293819C (en) * | 1986-08-29 | 1991-12-31 | Thinking Machines Corporation | Very large scale computer |
US5023776A (en) * | 1988-02-22 | 1991-06-11 | International Business Machines Corp. | Store queue for a tightly coupled multiple processor configuration with two-level cache buffer storage |
US5295258A (en) * | 1989-12-22 | 1994-03-15 | Tandem Computers Incorporated | Fault-tolerant computer system with online recovery and reintegration of redundant components |
US5161156A (en) * | 1990-02-02 | 1992-11-03 | International Business Machines Corporation | Multiprocessing packet switching connection system having provision for error correction and recovery |
US5121383A (en) * | 1990-11-16 | 1992-06-09 | Bell Communications Research, Inc. | Duration limited statistical multiplexing in packet networks |
US5291461A (en) * | 1990-11-28 | 1994-03-01 | Raytheon Company | Elastomer structure for transducers |
US5367643A (en) | 1991-02-06 | 1994-11-22 | International Business Machines Corporation | Generic high bandwidth adapter having data packet memory configured in three level hierarchy for temporary storage of variable length data packets |
EP0504537A1 (en) | 1991-03-22 | 1992-09-23 | International Business Machines Corporation | Method and apparatus for the testing and evaluation of geographically distributed telecommunication networks |
US5659797A (en) * | 1991-06-24 | 1997-08-19 | U.S. Philips Corporation | Sparc RISC based computer system including a single chip processor with memory management and DMA units coupled to a DRAM interface |
US5291481A (en) * | 1991-10-04 | 1994-03-01 | At&T Bell Laboratories | Congestion control for high speed packet networks |
US5295133A (en) * | 1992-02-12 | 1994-03-15 | Sprint International Communications Corp. | System administration in a flat distributed packet switch architecture |
US6047122A (en) | 1992-05-07 | 2000-04-04 | Tm Patents, L.P. | System for method for performing a context switch operation in a massively parallel computer system |
US5742760A (en) * | 1992-05-12 | 1998-04-21 | Compaq Computer Corporation | Network packet switch using shared memory for repeating and bridging packets at media rate |
US5465331A (en) * | 1992-12-23 | 1995-11-07 | International Business Machines Corporation | Apparatus having three separated and decentralized processors for concurrently and independently processing packets in a communication network |
US5796966A (en) * | 1993-03-01 | 1998-08-18 | Digital Equipment Corporation | Method and apparatus for dynamically controlling data routes through a network |
US5675790A (en) * | 1993-04-23 | 1997-10-07 | Walls; Keith G. | Method for improving the performance of dynamic memory allocation by removing small memory fragments from the memory pool |
JPH06314264A (ja) * | 1993-05-06 | 1994-11-08 | Nec Corp | セルフ・ルーティング・クロスバー・スイッチ |
US5864679A (en) | 1993-09-06 | 1999-01-26 | Kabushiki Kaisha Toshiba | Transaction routing in a multiple processor system using an extracted transaction feature parameter and transaction historical data |
US5471598A (en) * | 1993-10-18 | 1995-11-28 | Cyrix Corporation | Data dependency detection and handling in a microprocessor with write buffer |
GB2288097B (en) | 1994-03-23 | 1998-09-23 | Roke Manor Research | ATM queuing and scheduling apparatus |
US5812810A (en) * | 1994-07-01 | 1998-09-22 | Digital Equipment Corporation | Instruction coding to support parallel execution of programs |
US5521916A (en) * | 1994-12-02 | 1996-05-28 | At&T Corp. | Implementation of selective pushout for space priorities in a shared memory asynchronous transfer mode switch |
US5619497A (en) * | 1994-12-22 | 1997-04-08 | Emc Corporation | Method and apparatus for reordering frames |
US5724565A (en) * | 1995-02-03 | 1998-03-03 | International Business Machines Corporation | Method and system for processing first and second sets of instructions by first and second types of processing systems |
US5550803A (en) * | 1995-03-17 | 1996-08-27 | Advanced Micro Devices, Inc. | Method and system for increasing network information carried in a data packet via packet tagging |
US5684797A (en) | 1995-04-05 | 1997-11-04 | International Business Machines Corporation | ATM cell multicasting method and apparatus |
US5918050A (en) * | 1995-05-05 | 1999-06-29 | Nvidia Corporation | Apparatus accessed at a physical I/O address for address and data translation and for context switching of I/O devices in response to commands from application programs |
US5742840A (en) * | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US5893077A (en) | 1995-08-23 | 1999-04-06 | Microsoft Corporation | Method and apparatus for generating and collecting a billing event object within an on-line network |
US5708814A (en) * | 1995-11-21 | 1998-01-13 | Microsoft Corporation | Method and apparatus for reducing the rate of interrupts by generating a single interrupt for a group of events |
US5784649A (en) * | 1996-03-13 | 1998-07-21 | Diamond Multimedia Systems, Inc. | Multi-threaded FIFO pool buffer and bus transfer control system |
KR100225910B1 (ko) * | 1996-04-04 | 1999-10-15 | 구자홍 | 액정표시장치(liquid crystal display device) |
US5778187A (en) | 1996-05-09 | 1998-07-07 | Netcast Communications Corp. | Multicasting method and apparatus |
US7266686B1 (en) | 1996-05-09 | 2007-09-04 | Two-Way Media Llc | Multicasting method and apparatus |
US5784699A (en) * | 1996-05-24 | 1998-07-21 | Oracle Corporation | Dynamic memory allocation in a computer using a bit map index |
US5978893A (en) * | 1996-06-19 | 1999-11-02 | Apple Computer, Inc. | Method and system for memory management |
US6247105B1 (en) * | 1996-06-20 | 2001-06-12 | Sun Microsystems, Inc. | Externally identifiable descriptor for standard memory allocation interface |
US5987578A (en) * | 1996-07-01 | 1999-11-16 | Sun Microsystems, Inc. | Pipelining to improve the interface of memory devices |
US6173327B1 (en) | 1996-07-11 | 2001-01-09 | Jeroen De Borst | Object-oriented method and apparatus for information delivery |
US5951670A (en) | 1996-09-06 | 1999-09-14 | Intel Corporation | Segment register renaming in an out of order processor |
US6247040B1 (en) | 1996-09-30 | 2001-06-12 | Lsi Logic Corporation | Method and structure for automated switching between multiple contexts in a storage subsystem target device |
US6009516A (en) * | 1996-10-21 | 1999-12-28 | Texas Instruments Incorporated | Pipelined microprocessor with efficient self-modifying code detection and handling |
US5951679A (en) | 1996-10-31 | 1999-09-14 | Texas Instruments Incorporated | Microprocessor circuits, systems, and methods for issuing successive iterations of a short backward branch loop in a single cycle |
US5835491A (en) * | 1996-11-21 | 1998-11-10 | Xerox Corporation | Method for supporting multicast capabilities in switching networks with a reservation ring |
US5978379A (en) * | 1997-01-23 | 1999-11-02 | Gadzoox Networks, Inc. | Fiber channel learning bridge, learning half bridge, and protocol |
US6412004B1 (en) | 1997-03-27 | 2002-06-25 | Microsoft Corporation | Metaserver for a multimedia distribution network |
US6314511B2 (en) * | 1997-04-03 | 2001-11-06 | University Of Washington | Mechanism for freeing registers on processors that perform dynamic out-of-order execution of instructions using renaming registers |
US6067608A (en) | 1997-04-15 | 2000-05-23 | Bull Hn Information Systems Inc. | High performance mechanism for managing allocation of virtual memory buffers to virtual processes on a least recently used basis |
US5892966A (en) | 1997-06-27 | 1999-04-06 | Sun Microsystems, Inc. | Processor complex for executing multimedia functions |
US5896517A (en) | 1997-08-18 | 1999-04-20 | Bull Hn Information Systems Inc. | High performance processor employing background memory move mechanism |
US6226680B1 (en) * | 1997-10-14 | 2001-05-01 | Alacritech, Inc. | Intelligent network interface system method for protocol processing |
US6567839B1 (en) | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US6085294A (en) | 1997-10-24 | 2000-07-04 | Compaq Computer Corporation | Distributed data dependency stall mechanism |
EP0918280B1 (en) * | 1997-11-19 | 2004-03-24 | IMEC vzw | System and method for context switching on predetermined interruption points |
US6188699B1 (en) | 1997-12-11 | 2001-02-13 | Pmc-Sierra Ltd. | Multi-channel encoder/decoder |
US6131163A (en) * | 1998-02-17 | 2000-10-10 | Cisco Technology, Inc. | Network gateway mechanism having a protocol stack proxy |
US6219339B1 (en) * | 1998-02-20 | 2001-04-17 | Lucent Technologies Inc. | Method and apparatus for selectively discarding packets |
US6088745A (en) * | 1998-03-17 | 2000-07-11 | Xylan Corporation | Logical output queues linking buffers allocated using free lists of pointer groups of multiple contiguous address space |
US6023738A (en) * | 1998-03-30 | 2000-02-08 | Nvidia Corporation | Method and apparatus for accelerating the transfer of graphical images |
US6151644A (en) * | 1998-04-17 | 2000-11-21 | I-Cube, Inc. | Dynamically configurable buffer for a computer network |
US6219783B1 (en) | 1998-04-21 | 2001-04-17 | Idea Corporation | Method and apparatus for executing a flush RS instruction to synchronize a register stack with instructions executed by a processor |
EP0953898A3 (en) * | 1998-04-28 | 2003-03-26 | Matsushita Electric Industrial Co., Ltd. | A processor for executing Instructions from memory according to a program counter, and a compiler, an assembler, a linker and a debugger for such a processor |
GB2339035B (en) * | 1998-04-29 | 2002-08-07 | Sgs Thomson Microelectronics | A method and system for transmitting interrupts |
AU4071499A (en) | 1998-05-08 | 1999-11-29 | C-Port Corporation | Digital communications processor |
US7100020B1 (en) | 1998-05-08 | 2006-08-29 | Freescale Semiconductor, Inc. | Digital communications processor |
US6070202A (en) * | 1998-05-11 | 2000-05-30 | Motorola, Inc. | Reallocation of pools of fixed size buffers based on metrics collected for maximum number of concurrent requests for each distinct memory size |
US6157955A (en) * | 1998-06-15 | 2000-12-05 | Intel Corporation | Packet processing system including a policy engine having a classification unit |
US6593937B2 (en) | 1998-06-18 | 2003-07-15 | Sony Corporation | Method of and apparatus for handling high bandwidth on-screen-display graphics data over a distributed IEEE 1394 network utilizing an isochronous data transmission format |
US6820087B1 (en) | 1998-07-01 | 2004-11-16 | Intel Corporation | Method and apparatus for initializing data structures to accelerate variable length decode |
US6640248B1 (en) * | 1998-07-10 | 2003-10-28 | Malibu Networks, Inc. | Application-aware, quality of service (QoS) sensitive, media access control (MAC) layer |
US6249801B1 (en) * | 1998-07-15 | 2001-06-19 | Radware Ltd. | Load balancing |
US6195680B1 (en) | 1998-07-23 | 2001-02-27 | International Business Machines Corporation | Client-based dynamic switching of streaming servers for fault-tolerance and load balancing |
US6155840A (en) | 1998-09-18 | 2000-12-05 | At Home Corporation | System and method for distributed learning |
US6389449B1 (en) | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US6477562B2 (en) | 1998-12-16 | 2002-11-05 | Clearwater Networks, Inc. | Prioritized instruction scheduling for multi-streaming processors |
US7257814B1 (en) | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
US6574230B1 (en) * | 1998-12-18 | 2003-06-03 | Nortel Networks Limited | Scheduling technique for delayed queue service |
US6377972B1 (en) | 1999-01-19 | 2002-04-23 | Lucent Technologies Inc. | High quality streaming multimedia |
US6393028B1 (en) | 1999-02-25 | 2002-05-21 | Advanced Micro Devices, Inc. | Method and apparatus for providing EOF for frame modification |
US6546366B1 (en) | 1999-02-26 | 2003-04-08 | Mitel, Inc. | Text-to-speech converter |
US6453360B1 (en) * | 1999-03-01 | 2002-09-17 | Sun Microsystems, Inc. | High performance network interface |
US6389468B1 (en) | 1999-03-01 | 2002-05-14 | Sun Microsystems, Inc. | Method and apparatus for distributing network traffic processing on a multiprocessor computer |
US6483804B1 (en) * | 1999-03-01 | 2002-11-19 | Sun Microsystems, Inc. | Method and apparatus for dynamic packet batching with a high performance network interface |
US6650640B1 (en) | 1999-03-01 | 2003-11-18 | Sun Microsystems, Inc. | Method and apparatus for managing a network flow in a high performance network interface |
US6721794B2 (en) | 1999-04-01 | 2004-04-13 | Diva Systems Corp. | Method of data management for efficiently storing and retrieving data to respond to user access requests |
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6618820B1 (en) | 2000-01-10 | 2003-09-09 | Imagex.Com, Inc. | Method for configuring an application server system |
US6813268B1 (en) * | 1999-05-21 | 2004-11-02 | Broadcom Corporation | Stacked network switch configuration |
US6581102B1 (en) | 1999-05-27 | 2003-06-17 | International Business Machines Corporation | System and method for integrating arbitrary isochronous processing algorithms in general media processing systems |
US6169745B1 (en) * | 1999-06-18 | 2001-01-02 | Sony Corporation | System and method for multi-level context switching in an electronic network |
US6549996B1 (en) | 1999-07-02 | 2003-04-15 | Oracle Corporation | Scalable multiple address space server |
US6539476B1 (en) | 1999-08-12 | 2003-03-25 | Handspring, Inc. | Mobile computer system capable for copying set-up application including removal routine from peripheral device for removing device programs after the device is removed |
US6477580B1 (en) | 1999-08-31 | 2002-11-05 | Accenture Llp | Self-described stream in a communication services patterns environment |
US6502213B1 (en) * | 1999-08-31 | 2002-12-31 | Accenture Llp | System, method, and article of manufacture for a polymorphic exception handler in environment services patterns |
US6738371B1 (en) * | 1999-09-28 | 2004-05-18 | Ericsson Inc. | Ingress data queue management in a packet data router |
US6529515B1 (en) * | 1999-09-30 | 2003-03-04 | Lucent Technologies, Inc. | Method and apparatus for efficient network management using an active network mechanism |
US6438135B1 (en) * | 1999-10-21 | 2002-08-20 | Advanced Micro Devices, Inc. | Dynamic weighted round robin queuing |
US6523109B1 (en) * | 1999-10-25 | 2003-02-18 | Advanced Micro Devices, Inc. | Store queue multimatch detection |
US6611724B1 (en) | 1999-11-24 | 2003-08-26 | Square D Company | On line monitor for a control device |
US20020124262A1 (en) * | 1999-12-01 | 2002-09-05 | Andrea Basso | Network based replay portal |
US6714978B1 (en) * | 1999-12-04 | 2004-03-30 | Worldcom, Inc. | Method and system for processing records in a communications network |
EP1258142A4 (en) | 1999-12-10 | 2005-08-10 | Sedna Patent Services Llc | METHOD AND DEVICE FOR CARRYING OUT A USER LIFE IN A POLLING VIDEO SERVICE ENVIRONMENT |
US6625808B1 (en) * | 1999-12-10 | 2003-09-23 | Microsoft Corporation | Method and apparatus for facilitating memory management in a program comprised of heterogeneous components |
EP1258144A1 (en) * | 1999-12-14 | 2002-11-20 | General Instrument Corporation | Dynamic configuration of input filtering parameters for an mpeg re-multiplexer |
US7076630B2 (en) * | 2000-02-08 | 2006-07-11 | Mips Tech Inc | Method and apparatus for allocating and de-allocating consecutive blocks of memory in background memo management |
US7065096B2 (en) | 2000-06-23 | 2006-06-20 | Mips Technologies, Inc. | Method for allocating memory space for limited packet head and/or tail growth |
US20010052053A1 (en) * | 2000-02-08 | 2001-12-13 | Mario Nemirovsky | Stream processing unit for a multi-streaming processor |
US7058065B2 (en) | 2000-02-08 | 2006-06-06 | Mips Tech Inc | Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing |
US7155516B2 (en) | 2000-02-08 | 2006-12-26 | Mips Technologies, Inc. | Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory |
US7649901B2 (en) * | 2000-02-08 | 2010-01-19 | Mips Technologies, Inc. | Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing |
US7032226B1 (en) * | 2000-06-30 | 2006-04-18 | Mips Technologies, Inc. | Methods and apparatus for managing a buffer of events in the background |
US7058064B2 (en) | 2000-02-08 | 2006-06-06 | Mips Technologies, Inc. | Queueing system for processors in packet routing operations |
US7082552B2 (en) * | 2000-02-08 | 2006-07-25 | Mips Tech Inc | Functional validation of a packet management unit |
US7042887B2 (en) * | 2000-02-08 | 2006-05-09 | Mips Technologies, Inc. | Method and apparatus for non-speculative pre-fetch operation in data packet processing |
US7502876B1 (en) | 2000-06-23 | 2009-03-10 | Mips Technologies, Inc. | Background memory manager that determines if data structures fits in memory with memory state transactions map |
US7165257B2 (en) | 2000-02-08 | 2007-01-16 | Mips Technologies, Inc. | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts |
US7139901B2 (en) * | 2000-02-08 | 2006-11-21 | Mips Technologies, Inc. | Extended instruction set for packet processing applications |
US6381242B1 (en) * | 2000-08-29 | 2002-04-30 | Netrake Corporation | Content processor |
US20020107962A1 (en) | 2000-11-07 | 2002-08-08 | Richter Roger K. | Single chassis network endpoint system with network processor for load balancing |
US6792509B2 (en) | 2001-04-19 | 2004-09-14 | International Business Machines Corporation | Partitioned cache of multiple logical levels with adaptive reconfiguration based on multiple criteria |
US7058070B2 (en) * | 2001-05-01 | 2006-06-06 | Integrated Device Technology, Inc. | Back pressure control system for network switch port |
US20020174244A1 (en) | 2001-05-18 | 2002-11-21 | Telgen Corporation | System and method for coordinating, distributing and processing of data |
US6965982B2 (en) | 2001-06-29 | 2005-11-15 | International Business Machines Corporation | Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread |
US6738378B2 (en) * | 2001-08-22 | 2004-05-18 | Pluris, Inc. | Method and apparatus for intelligent sorting and process determination of data packets destined to a central processing unit of a router or server on a data packet network |
US7272659B2 (en) | 2002-06-25 | 2007-09-18 | Olympus Corporation | Information rewriting method, recording medium storing information rewriting program and information terminal device |
US7283549B2 (en) * | 2002-07-17 | 2007-10-16 | D-Link Corporation | Method for increasing the transmit and receive efficiency of an embedded ethernet controller |
US20040049570A1 (en) * | 2002-09-17 | 2004-03-11 | Frank Ed H. | Method and system for network management in a hybrid wired/wireless network |
AU2003270828A1 (en) | 2002-09-18 | 2004-04-08 | Netezza Corporation | Asymmetric data streaming architecture having autonomous and asynchronous job processing unit |
US7099997B2 (en) * | 2003-02-27 | 2006-08-29 | International Business Machines Corporation | Read-modify-write avoidance using a boundary word storage mechanism |
US20040210663A1 (en) * | 2003-04-15 | 2004-10-21 | Paul Phillips | Object-aware transport-layer network processing engine |
US7138019B2 (en) * | 2003-07-30 | 2006-11-21 | Tdk Corporation | Method for producing magnetostrictive element and sintering method |
US7346680B2 (en) | 2003-09-22 | 2008-03-18 | Intel Corporation | Speculative prefetch of a protocol control block from an external memory unit |
US7325099B2 (en) | 2004-10-27 | 2008-01-29 | Intel Corporation | Method and apparatus to enable DRAM to support low-latency access via vertical caching |
JP2006187901A (ja) * | 2005-01-04 | 2006-07-20 | Funai Electric Co Ltd | プリンタ装置およびレーザビームプリンタ装置 |
US7463593B2 (en) * | 2005-01-13 | 2008-12-09 | International Business Machines Corporation | Network host isolation tool |
US8121148B2 (en) * | 2005-03-24 | 2012-02-21 | Ixia | Protocol stack using shared memory |
US20070008989A1 (en) | 2005-06-30 | 2007-01-11 | Intel Corporation | Packet processing |
US20080072264A1 (en) * | 2006-08-02 | 2008-03-20 | Aaron Crayford | Distribution of content on a network |
-
2000
- 2000-12-14 US US09/737,375 patent/US7058064B2/en not_active Expired - Lifetime
-
2001
- 2001-01-08 AU AU2001227736A patent/AU2001227736A1/en not_active Abandoned
- 2001-01-08 JP JP2001558844A patent/JP3801919B2/ja not_active Expired - Fee Related
- 2001-01-08 DE DE60141452T patent/DE60141452D1/de not_active Expired - Lifetime
- 2001-01-08 EP EP01901882A patent/EP1259888B1/en not_active Expired - Lifetime
- 2001-01-08 AT AT01901882T patent/ATE460030T1/de not_active IP Right Cessation
- 2001-01-08 WO PCT/US2001/000587 patent/WO2001059585A1/en active Application Filing
-
2006
- 2006-02-23 US US11/360,338 patent/US7551626B2/en not_active Expired - Lifetime
- 2006-03-23 US US11/277,293 patent/US7715410B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP3801919B2 (ja) | 2006-07-26 |
US7058064B2 (en) | 2006-06-06 |
EP1259888A1 (en) | 2002-11-27 |
WO2001059585A1 (en) | 2001-08-16 |
ATE460030T1 (de) | 2010-03-15 |
US7715410B2 (en) | 2010-05-11 |
US20060159104A1 (en) | 2006-07-20 |
US20010043610A1 (en) | 2001-11-22 |
US7551626B2 (en) | 2009-06-23 |
EP1259888B1 (en) | 2010-03-03 |
EP1259888A4 (en) | 2008-02-13 |
DE60141452D1 (de) | 2010-04-15 |
AU2001227736A1 (en) | 2001-08-20 |
US20060153197A1 (en) | 2006-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3801919B2 (ja) | パケットルーティング動作におけるプロセッサ用キューイングシステム | |
US7765554B2 (en) | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts | |
US7197043B2 (en) | Method for allocating memory space for limited packet head and/or tail growth | |
US8081645B2 (en) | Context sharing between a streaming processing unit (SPU) and a packet management unit (PMU) in a packet processing environment | |
US7139901B2 (en) | Extended instruction set for packet processing applications | |
US7058065B2 (en) | Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing | |
US7280548B2 (en) | Method and apparatus for non-speculative pre-fetch operation in data packet processing | |
US7644307B2 (en) | Functional validation of a packet management unit | |
US8539199B2 (en) | Hash processing in a network communications processor architecture | |
US8321385B2 (en) | Hash processing in a network communications processor architecture | |
US8537832B2 (en) | Exception detection and thread rescheduling in a multi-core, multi-thread network processor | |
US6822959B2 (en) | Enhancing performance by pre-fetching and caching data directly in a communication processor's register set | |
US20020051460A1 (en) | Method for automatic resource reservation and communication that facilitates using multiple processing events for a single processing task | |
WO2002011368A2 (en) | Pre-fetching and caching data in a communication processor's register set |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050812 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050927 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20051221 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060104 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060322 |
|
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: 20060418 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060426 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3801919 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090512 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100512 Year of fee payment: 4 |
|
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: 20110512 Year of fee payment: 5 |
|
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: 20110512 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120512 Year of fee payment: 6 |
|
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: 20120512 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130512 Year of fee payment: 7 |
|
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: 20140512 Year of fee payment: 8 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |