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
Application number
JP2001558844A
Other languages
English (en)
Other versions
JP3801919B2 (ja
Inventor
ネミロフスキイ,マリオ
ムソル,エンリケ
メルビン,ステイーブン
サンカー,ナレンドラ
サンパス,ナンダクマール
ネミロフスキイ,アドルフオ
Original Assignee
クリアウオーター・ネツトワークス・インコーポレイテツド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クリアウオーター・ネツトワークス・インコーポレイテツド filed Critical クリアウオーター・ネツトワークス・インコーポレイテツド
Publication of JP2003523112A publication Critical patent/JP2003523112A/ja
Application granted granted Critical
Publication of JP3801919B2 publication Critical patent/JP3801919B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/621Individual queue per connection or flow, e.g. per VC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6215Individual queue per QOS, rate or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/205Quality 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

(57)【要約】 データパケットプロセッサ201において、処理中のパケットアカウンティングのための構成可能なキューイングシステム211が、1つまたは複数のクラスタに配置された複数のキューと、到着するパケットのパケット識別子を作成する識別機構と、パケット識別子をキューに挿入し、パケット識別子をどのキューに挿入するかを決定する挿入論理と、識別されたパケットの処理、完了したパケットのダウンロードの開始のためにキューからパケット識別子を選択し、または選択されたパケット識別子の再エンキューのための選択論理とを有する。

Description

【発明の詳細な説明】
【0001】 (発明の分野) 本発明は、ディジタル処理の分野で、パケットネットワーク用のルータ内での
パケットの処理の装置および方法に関し、具体的には、特にダイナミックマルチ
ストリーミングプロセッサでの、異なるタイプのプロセッサおよびマルチプロセ
ッサシステムを使用するルーティング動作でのパケットのキューイングおよび優
先順位付けの装置および方法に関する。
【0002】 (関連文書の相互参照) 本明細書は、2000年8月2日出願の米国仮特許出願第60/181364
号の米国特許法119(e)条の下での優先の利益を主張し、前の特許出願のす
べての開示を参照によって組み込む。
【0003】 (発明の背景) よく知られているインターネットネットワークは、本願の提出の時点で有名な
よく知られた公衆がアクセス可能な通信ネットワークであり、これまでに使用可
能にされたものの中で最も堅牢な情報および通信のソースであると論証できる。
インターネットは、主な例として、本明細書で教示される装置および方法から利
益を得るデータパケットネットワークの現在の応用分野の例で使用されるが、こ
のデータパケットネットワークは、特定の標準化されたプロトコルに従うネット
ワークの1つにすぎない。やはり非常によく知られているように、インターネッ
ト(および関係するネットワーク)は、常に仕掛品である。すなわち、多数の研
究者および開発者が、そのようなネットワークの動作を機能強化するための、ソ
フトウェアを含む新しいよりよい装置および方法を提供するために常時競争して
いる。
【0004】 一般に、データパケットネットワークでの最も需要の多い改良は、より高速の
ルーティング(単位時間あたりのパケット数が多い)と、メッセージングでのよ
りよい信頼性および忠実度を提供するものである。一般に必要とされているもの
は、パケットをルータ内で処理できる速度を高めるルータ装置および方法である
【0005】 当技術分野でよく知られているように、パケットルータは、データパケットを
、通常は複数のポートの1つまたは複数で受信し、ある形で処理し、ルータの同
一のまたは他のポートに送出して、下流の宛先へ継続する、コンピュータ化され
た機械である。そのようなコンピュータ化された動作の例として、インターネッ
トが、個々のルータの膨大な相互接続されたネットワークであることを念頭にお
くと、個々のルータは、それが通信ポートによって接続されている外部ルータが
どれであるかと、着信パケットについてネットワークを介する代替経路のどれが
最適経路であるかを記憶しなければならない。個々のルータは、フローアカウン
ティングも達成しなければならず、フローは、一般に、共通のソースおよび終点
宛先を有するパケットのストリームを意味する。一般に望まれているものは、個
々のフローが共通の経路に従うことである。当業者は、コンピュータ化された処
理に関する多数のそのような要件を知っている。
【0006】 通常、インターネットネットワーク内のルータは、必要な多数のコンピューテ
ィングタスクを達成するための専用マイクロプロセッサとして1つまたは複数の
中央処理装置(CPU)を有する。本願出願時点での最新技術では、これらが、
単一ストリーミングプロセッサである、すなわち、各プロセッサが、命令の単一
のストリームを処理することができる。いくつかの場合に、開発者は、そのよう
なルーティング動作にマルチプロセッサ技術を適用する。本発明人は、複数の命
令ストリームを同時に処理することができるダイナミックマルチストリーミング
(DMS)プロセッサの開発にしばらくかかわった。そのようなプロセッサに好
ましい応用分野が、インターネットなどのパケットネットワークでのパケットの
処理である。
【0007】 上の「関連文書の相互参照」に記載の仮特許出願に、パケット処理へのDMS
応用に好ましいアーキテクチャの説明および図面がある。そのアーキテクチャの
機能領域の1つが、キューイングシステムを含む、汎用キューとそれに関連する
方法および回路である。本発明が関係するのは、権能を付与する詳細を下で説明
する、このキューイングシステムである。
【0008】 (発明の概要) 本発明の好ましい実施形態では、データパケットプロセッサにおいて、処理中
のパケットアカウンティング用の構成可能キューイングシステムが提供され、こ
のシステムには、1つまたは複数のクラスタに配置された複数のキューと、到着
するパケットのパケット識別子を作成する識別機構と、パケット識別子をキュー
に挿入し、パケット識別子をどのキューに挿入するかを決定する挿入論理と、識
別されたパケットの処理の開始、完了したパケットのダウンロード、または選択
されたパケット識別子の再キューイングのためにキューからのパケット識別子を
選択する選択論理とが含まれる。
【0009】 いくつかの実施形態では、すべてのキュー内のパケット識別子の総数が、固定
され、クラスタの数およびクラスタごとのキューの数を、1から同一の最大個数
まで変更することができ、クラスタの数が1と等しい場合に、キューの数が最大
個数になり、逆も同様である。また、いくつかの実施形態で、キューの数を決定
するクラスタの相対的な数が、プロセッサに関連する構成レジスタをセットする
ことによってセットされる。
【0010】 いくつかの場合に、パケット識別子の総数が256であり、256個のパケッ
トが、どの時点でもデータパケットプロセッサ内で処理中になることができるこ
とを意味する。また、いくつかの場合に、クラスタまたはキューのいずれかの最
大個数が32であり、クラスタまたはキューの数が2のべきになるように制御さ
れる。
【0011】 いくつかの実施形態で、作成される前記パケット識別子が、前記パケット自体
が処理中に保管されるメモリ位置に関連する。この場合に、処理中にパケットデ
ータを保管するオンボードメモリが、パケットページに配置され、前記パケット
識別子が、パケットの前記パケットデータが保管されるパケットページの先頭を
識別するアドレスである。もう1つの機能強化で、作成されキューイングされる
前記パケット識別子が、前記メモリ位置の他に、前記パケットがそこから受信さ
れた装置の1つまたは複数の識別子と、前記パケットが処理中に総サイズが増加
または減少したかどうかの表示と、関連するパケットに対する処理が完了したか
否かの表示と、前記パケット識別子を挿入しなければならない次のキューと、前
記パケットが現在処理中であるかどうかの識別子とを含む。
【0012】 いくつかの実施形態で、前記挿入論理が、パケットの優先順位を判定し、判定
された前記優先順位に応じて前記パケットを特定のキューに挿入する。クラスタ
に番号を付けることができ、識別されたパケットを処理する優先順位が、これら
の場合では、クラスタ番号による。
【0013】 いくつかの実施形態で、選択システムが、前記パケット識別子内でセットされ
た次のキュー番号の値に基づいて再キューイングのためにパケットを選択する。
また、いくつかの実施形態で、選択システムが、関連するパケットに対する処理
が完了したかどうかの表示の値に基づいて、ダウンロードのためにパケットを選
択する。
【0014】 いくつかの実施形態で、選択システムが、キュー番号による優先順位に基づい
て処理のためにパケットを選択し、いくつかの場合に、処理のためにパケットを
選択するために優先順位クラスタ内のキューを選択する時に、公平アルゴリズム
に従う。
【0015】 いくつかの好ましい実施形態では、前記データパケットプロセッサが、コンテ
キストレジスタによって実施され個々のストリームに関連する別々のコンテキス
トを有するマルチストリーミングプロセッサであり、選択システムが、選択され
た識別子に関連するパケットからのヘッダ情報を、使用可能なコンテキストにロ
ードさせる。ストリームより多数のコンテキストが存在することができ、使用可
能なコンテキストへのヘッダ情報のローディングを、バックグラウンドすなわち
、パケットの処理と並列に、達成することができる。
【0016】 本発明のいくつかの実施形態では、プロセッサによって実行されるソフトウェ
アが、パケット識別子内のフィールドの個々の1つの値を操作することをイネー
ブルされる。また、いくつかの実施形態では、前記挿入論理が、少なくとも部分
的にフローに従って、パケットをキューに挿入し、挿入および選択論理が、個々
のフロー内のパケットの順序を保存するために協力する。さらなる実施形態では
、前記挿入論理が、ネットワークまたはスイッチングファブリックから着信する
パケットを、キューへの識別子挿入に関する最高の優先順位を用いて扱い、再キ
ューイングされるパケット識別子を次に高い優先順位を用いて扱い、ソフトウェ
アによって生成されるパケットの識別子を最低の優先順位を用いて扱う。
【0017】 本発明のもう1つの態様では、1つまたは複数のソースからの着信パケットを
バッファリングする入力バッファと、処理中にパケットデータを保管するローカ
ルパケットメモリと、パケットデータを処理するストリームプロセッサユニット
と、処理中のパケットアカウンティング用の構成可能なキューイングシステムと
を含むデータパケットプロセッサが提供される。前記キューイングシステムが、
1つまたは複数のクラスタに配置された複数のキューと、到着するパケットのパ
ケット識別子を作成する識別機構と、パケット識別子をキューに挿入し、パケッ
ト識別子をどのキューに挿入するかを決定する挿入論理と、識別されたパケット
の処理の開始、完了したパケットのダウンロード、または選択されたパケット識
別子の再キューイングのためにキューからパケット識別子を選択する選択論理と
を含む。
【0018】 プロセッサのいくつかの実施形態では、すべてのキュー内のパケット識別子の
総数が、固定され、クラスタの数およびクラスタごとのキューの数を、1から同
一の最大個数まで変更することができ、クラスタの数が1と等しい場合に、キュ
ーの数が最大個数になり、逆も同様である。また、いくつかの実施形態で、キュ
ーの数を決定するクラスタの相対的な数が、プロセッサに関連する構成レジスタ
をセットすることによってセットされる。
【0019】 いくつかの場合に、パケット識別子の総数が256であり、256個のパケッ
トが、どの時点でも前記データパケットプロセッサ内で処理中になることができ
ることを意味する。また、いくつかの場合に、クラスタまたはキューのいずれか
の最大個数が32であり、クラスタまたはキューの数が2のべきになるように制
御される。
【0020】 いくつかの実施形態で、作成される前記パケット識別子が、前記パケット自体
が処理中に保管されるメモリ位置に関連する。これらの実施形態では、処理中に
パケットデータを保管するオンボードメモリが、パケットページに配置され、前
記パケット識別子が、パケットの前記パケットデータが保管されるパケットペー
ジの先頭を識別するアドレスである。
【0021】 いくつかの場合に、作成されキューイングされる前記パケット識別子が、前記
メモリ位置の他に、前記パケットがそこから受信された装置の1つまたは複数の
識別子と、前記パケットが処理中に総サイズが増加または減少したかどうかの表
示と、関連するパケットに対する処理が完了したか否かの表示と、前記パケット
識別子を挿入しなければならない次のキューと、前記パケットが現在処理中であ
るかどうかの識別子とを含む。
【0022】 いくつかの実施形態で、前記挿入論理が、パケットの優先順位を判定し、判定
された前記優先順位に応じて前記パケットを特定のキューに挿入する。これらの
実施形態の一部では、クラスタが、番号を付けられ、識別されたパケットを処理
する優先順位が、クラスタ番号による。
【0023】 いくつかの場合に、選択システムが、前記パケット識別子内でセットされた次
のキュー番号の値に基づいて再キューイングのためにパケットを選択する。また
、いくつかの場合に、選択システムが、関連するパケットに対する処理が完了し
たかどうかの表示の値に基づいて、ダウンロードのためにパケットを選択する。
さらに、キューが優先順位によって番号を付けられる場合に、選択システムが、
キュー番号による優先順位に基づいて処理のためにパケットを選択することがで
きる。この場合に、処理のためにパケットを選択するために優先順位クラスタ内
のキューを選択する時に従う公平アルゴリズムを設けることができる。
【0024】 いくつかの好ましい実施形態では、前記データパケットプロセッサが、コンテ
キストレジスタによって実施され個々のストリームに関連する別々のコンテキス
トを有するマルチストリーミングプロセッサであり、選択システムが、選択され
た識別子に関連するパケットからのヘッダ情報を、使用可能なコンテキストにロ
ードさせる。これらの実施形態のいくつかで、ストリームより多数のコンテキス
トがあり、使用可能なコンテキストへのヘッダ情報のローディングが、バックグ
ラウンドすなわち、パケットの処理と並列に、達成される。
【0025】 このプロセッサのいくつかの実施形態で、プロセッサによって実行されるソフ
トウェアが、パケット識別子内のフィールドの個々の1つの値を操作することを
イネーブルされる。また、このプロセッサのいくつかの実施形態で、前記挿入論
理が、少なくとも部分的にフローに従って、パケットをキューに挿入し、挿入お
よび選択論理が、個々のフロー内のパケットの順序を保存するために協力する。
いくつかの場合に、前記挿入論理が、ネットワークまたはスイッチングファブリ
ックから着信するパケットを、キューへの識別子挿入に関する最高の優先順位を
用いて扱い、再キューイングされるパケット識別子を次に高い優先順位を用いて
扱い、ソフトウェアによって生成されるパケットの識別子を最低の優先順位を用
いて扱う。
【0026】 本発明のもう1つの態様で、データパケットプロセッサ内でのパケットのアカ
ウンティングの方法であって、(a)プロセッサ内で1つまたは複数のクラスタ
内の複数のキューを設けるステップと、(b)到着するパケットのパケット識別
子を作成するステップと、(c)どのキューに挿入するかを決定する論理を有す
る挿入機構によってパケット識別子をキューに挿入するステップと、(d)識別
されたパケットの処理の開始、完了したパケットのダウンロード、または選択さ
れたパケット識別子の再キューイングのために、選択論理によってキューからパ
ケット識別子を選択するステップとを含む方法。
【0027】 この方法のいくつかの実施形態では、すべてのキュー内のパケット識別子の総
数が、固定され、クラスタの数およびクラスタごとのキューの数を、1から同一
の最大個数まで変更することができ、クラスタの数が1と等しい場合に、キュー
の数が最大個数になり、逆も同様である。いくつかの実施形態では、キューの数
を決定するクラスタの相対的な数が、プロセッサに関連する構成レジスタをセッ
トすることによってセットされる。
【0028】 この方法のいくつかの実施形態では、パケット識別子の総数が256であり、
256個のパケットが、どの時点でもデータパケットプロセッサ内で処理中にな
ることができることを意味する。クラスタまたはキューのいずれかの最大個数を
32にすることができ、クラスタまたはキューの数が2のべきになるように制御
される。
【0029】 この方法の他の実施形態では、作成される前記パケット識別子が、前記パケッ
ト自体が処理中に保管されるメモリ位置に関連する。メモリをパケットページに
配置することができ、前記パケット識別子が、パケットの前記パケットデータが
保管されるパケットページの先頭を識別するアドレスである。
【0030】 いくつかの場合に、作成されキューイングされる前記パケット識別子が、前記
メモリ位置の他に、前記パケットがそこから受信された装置の1つまたは複数の
識別子と、前記パケットが処理中に総サイズが増加または減少したかどうかの表
示と、関連するパケットに対する処理が完了したか否かの表示と、前記パケット
識別子を挿入しなければならない次のキューと、前記パケットが現在処理中であ
るかどうかの識別子とを含む。
【0031】 いくつかの実施形態で、前記挿入論理が、パケットの優先順位を判定し、判定
された前記優先順位に応じて前記パケットを特定のキューに挿入する。これらの
場合のいくつかでは、クラスタが、番号を付けられ、識別されたパケットを処理
する優先順位が、クラスタ番号による。これらの場合では、選択システムが、前
記パケット識別子内でセットされた次のキュー番号の値に基づいて再キューイン
グのためにパケットを選択する。
【0032】 この方法のいくつかの実施形態では、選択システムが、関連するパケットに対
する処理が完了したかどうかの表示の値に基づいて、ダウンロードのためにパケ
ットを選択し、キュー番号による優先順位に基づいて処理のためにパケットを選
択することができる。処理のためにパケットを選択するために優先順位クラスタ
内のキューを選択する時に、公平アルゴリズムに従うことができる。
【0033】 本発明のいくつかの好ましい実施形態では、前記データパケットプロセッサが
、コンテキストレジスタによって実施され個々のストリームに関連する別々のコ
ンテキストを有するマルチストリーミングプロセッサであり、選択システムが、
選択された識別子に関連するパケットからのヘッダ情報を、使用可能なコンテキ
ストにロードさせる。
【0034】 いくつかの実施形態で、ストリームより多数のコンテキストがあり、使用可能
なコンテキストへのヘッダ情報のローディングが、バックグラウンドすなわち、
パケットの処理と並列に、達成される。
【0035】 いくつかの実施形態で、プロセッサによって実行されるソフトウェアが、パケ
ット識別子内のフィールドの個々の1つの値を操作することをイネーブルされる
。また、いくつかの実施形態で、前記挿入論理が、少なくとも部分的にフローに
従って、パケットをキューに挿入し、挿入および選択論理が、個々のフロー内の
パケットの順序を保存するために協力する。いくつかの場合に、前記挿入論理が
、ネットワークまたはスイッチングファブリックから着信するパケットを、キュ
ーへの識別子挿入に関する最高の優先順位を用いて扱い、再キューイングされる
パケット識別子を次に高い優先順位を用いて扱い、ソフトウェアによって生成さ
れるパケットの識別子を最低の優先順位を用いて扱う。
【0036】 本発明のもう1つの態様では、処理を待っている到着するパケットを管理する
キューイングシステムを有するデータパケットプロセッサにおいて、固定された
範囲のパケット番号と、割当機構とを有するパケット番号付けシステムが提供さ
れる。前記割当機構が、前記固定された範囲の個別の番号をアカウンティングし
、前記キューイングシステム内のパケットが処理のために送られる時に番号をイ
ンアクティブとマークし、インアクティブな番号を前記キューイングシステムに
置かれる新たに到着したパケットに再割り当てする。
【0037】 いくつかの実施形態で、プローブビットが、ある時点でパケットに割り当てら
れたパケット番号が別の時点で同一のパケットに割り当てられることを保証する
ために各パケットに関連付けられ、前記プローブビットが、パケット番号が割り
当てられる時にデアサートされ、ストリームによって実行されるProbe a
nd Setコマンドによってアサートされ、プローブビットがアサートされた
後のどの時刻にも、アサートされたプローブビットが、前記パケット番号が前記
同一のパケットに関連することを示すようにすることを特徴とする。
【0038】 下の権能を付与する詳細で教示される本発明の実施形態は、初めて、従来の機
器を用いて前に可能であった速度をはるかに超える速度で、効率的でコスト効率
のよい形で、着信パケットをキューに入れ、管理する、データパケットプロセッ
サを提供する。
【0039】 (好ましい実施形態の説明) 上で参照した仮特許出願第60/181364号に、発明人がXCalibe
rプロセッサと呼ぶ、パケットネットワークでのパケット処理専用のDMSプロ
セッサのアーキテクチャに関する開示がある。参照された開示には、2つの広範
囲の図面が提供され、その1つのNIOブロック図と称する図には、XCali
berプロセッサの全体的なアーキテクチャが、パケット処理ASICとの間の
入出力ポートと共に示され、他方の図には、NIO図に示された汎用キューの多
数の態様が示されている。この優先権書類のNIOシステムは、本明細書のパケ
ット管理ユニット(PMU)と等しい。本明細書が対象とするものは、汎用キュ
ーの複数の態様である。
【0040】 図1は、優先権文書のNIO図に示されたものより高水準の機能ユニットの副
分割を伴うXCaliber DMSプロセッサ101の単純化されたブロック
図である。図1では、XCaliber DMSプロセッサ101が、3つの機
能領域に編成されるものとして示されている。外側のシステムインターフェース
ユニット(SIU)領域107は、外部装置すなわち、XCaliberプロセ
ッサの外部の、通常はパケットを送信し、受信するための装置との通信を提供す
る。内側では、プロセッサ101が、2つの広範囲の機能ユニットすなわち、上
記の優先権文書のNIOシステムと等しいパケット管理ユニット(PMU)10
3と、ストリームプロセッサユニット(SPU)107に分割される。PMUの
機能には、受信され処理されるすべてのパケットの、アカウンティングと管理が
含まれる。SPUは、すべての計算タスクの責任を負う。
【0041】 PMUは、XCaliberプロセッサのうちで、コストの高いパケットヘッ
ダアクセスとパケットのソートおよび管理のタスクの実行からSPUをオフロー
ドする部分であり、これらのタスクは、こうなっていなければ、プロセッサ全体
の性能を大きく低下させるはずである。
【0042】 パケット管理は、(a)パケット記憶用に割り振られるオンチップメモリの管
理と、(b)バックグラウンドで、着信パケットからのパケットヘッダ情報をX
Caliberプロセッサの異なるコンテキスト(下でさらに説明するコンテキ
ストレジスタ)にアップロードすることと、(c)柔軟なキューイングシステム
で、現在XCaliber内で処理中のパケットのパケット識別子を維持するこ
とによって達成される。
【0043】 説明した、PMUによって実行されるパケット管理およびアカウンティングの
タスクは、SPUコアによるパケットの処理と並列に実行される。この機能性を
実装するために、PMUは、ネットワークから着信するパケットをバッファリン
グし、それらをSPUコアに供給し、必要な場合に、処理が完了した時にそれら
をネットワークに送出する、ハードウェア構造の組を有する。PMUは、本明細
書の焦点である、内部パケットメモリストレージおよびキューイングシステムの
構成など、その複数の機能の高い度合のプログラム可能性を特徴とする。
【0044】 図2は、追加の詳細を示す、図1のXCaliberプロセッサのブロック図
である。SIU107およびSPU105は、図1で使用されたものと同一の符
号を有する、単一のブロックとして図2に示されている。しかし、PMUは、要
素の間に通信回線を示されて、かなり拡大されて詳細に示されている。
【0045】 図2では、ネットワーク/スイッチングファブリックインターフェース203
が示されており、これは、いくつかの場合に、たとえばインターネットなどのネ
ットワークへまたは、たとえばパケットを受信し、送信し、XCaliberプ
ロセッサとパケットをやりとりする、パケットルータ内のスイッチングファブリ
ックへの直接のインターフェース専用の特定用途向け集積回路(ASIC)であ
る。この特定の例では、プロセッサ201と通信する2つのインポートと2つの
アウトポートがある。ネットワークインインターフェース回路205およびネッ
トワークアウトインターフェース回路215は、プロセッサへおよびプロセッサ
からのパケットトラフィックを処理し、これらの2つのインターフェースは、図
2では便宜上別々に図示されているが、正しくはSIU107の一部である。
【0046】 また、PMU内のネットワークインターフェースには、プロセッサ201内に
、入力バッファ207および出力バッファ217があり、これらは、プロセッサ
201から出入りするパケットのフローをバッファリングするように働く。
【0047】 図1をもう一度参照すると、パケット管理ユニット(PMU)103が示され
ており、このPMU103を、パケット管理およびアカウンティングの要件をス
トリーム処理ユニットからオフロードするユニットとして説明した。これは、具
体的には、図2で展開されたユニットであり、実質的に、入力バッファ(IB)
207、出力バッファ(OB)217、ページングメモリ管理ユニット(PMM
U)209、ローカルパケットメモリ(LPM)219、コマンドユニット(C
U)213、キューイングシステム(QS)211、構成レジスタ221、およ
びレジスタ転送ユニット(RTU)227からなる。PMUの要素の間の通信経
路は、図2では矢印によって示されており、特に本明細書の特定の焦点であるQ
S211を含む、PMUの要素のさらなる説明を、下で提供する。
【0048】 PMUの概要 図2に、PMUの要素が示されており、これらを下で簡単に識別する。パケッ
トは、この例では、16バイトネットワーク入力インターフェースを介してPM
Uに到着する。この実施形態では、パケットデータが、20Gbps(最大)の
速度でPMUに到着する。300MHzのXCaliberコア周波数動作速度
で、平均8バイトのパケットデータが、すべてのXCaliberコアサイクル
に受信される。ネットワーク入力インターフェースからの着信データは、インバ
ッファ(IB)ブロック207でバッファリングされる。XCaliber内の
ネットワークインターフェース205は、外部装置がパケット送信の前にパケッ
トにサイズを付加できなかった場合に、送信されるパケットのサイズをパケット
自体に付加する機能を有する。2つまでの装置が、XCaliberに(装置ご
とに10Gbps)でパケットデータを送信することができ、2つのインポート
が、接続されたASICから図示されている。特定のASICの存在および使用
が、例示的であり、パケットを、他の装置から受信できることを理解されたい。
さらに、いくつかの実施形態で、図示された2つのインポートより多数またはよ
り少数のポートを設けることができる。
【0049】 パケットメモリマネージャユニット(PMMU)209は、各着信パケットを
オンチップローカルパケットメモリ(LPM)219に保管しなければならない
かどうかを決定するか、たとえばLPMにそれを保管する余地が存在しない場合
に、SIUブロックを介して、図示されていない外部パケットメモリ(EPM)
にパケットを送り出すかパケットをドロップすることを決定することができる。
パケットをLPMに保管する場合には、PMMUは、パケットを保管する位置を
決定し、それを行うのに必要なすべてのアドレスを生成する。生成されるアドレ
スは、好ましい実施形態では、LPM内の16バイトラインに対応し、パケット
が、このメモリ内に連続して保管される。
【0050】 PMMUが着信パケットをドロップしない(最もありそうな)場合に、パケッ
ト識別子が作成され、このパケット識別子には、パケットが保管され始めたパケ
ットメモリ内の固定サイズページへのポインタ(packetPageと称する
)が含まれる。識別子は、作成され、キューイングシステム(QS)ブロック2
11にエンキューされる。QSは、0から255までの番号(packetNu
mberと称する)を、新しいパケットのそれぞれに割り当てる。QSは、パケ
ットの優先順位に基づいて、XCaliber内で生きているパケットの識別子
をソートし、SPUコアがパケットの状況に対する変更を通知する時に、ソーテ
ィングを更新する。QSは、次にSPUに供給されるパケット識別子を選択する
。やはり、QSは、本発明の特定の焦点である。
【0051】 レジスタ転送ユニット(RTU)ブロック227は、QSからパケット識別子
(packetPageおよびpacketNumber)を受け取る時に、好
ましい実施形態のXCaliberが特徴とする8つのコンテキストの中から、
使用可能なコンテキスト(229、図2)を検索する。アーキテクチャおよび説
明の目的から、コンテキストは、図2では別のユニット229として図示されて
いるが、より広義のストリーム処理ユニットの一部とみなされる。
【0052】 使用可能なコンテキストがない場合には、RTUは、1組の割込みを介してS
PUにこのイベントについて通知する能力を有する。コンテキストが使用可能で
ある場合には、RTUは、パケット識別子情報とパケットのヘッダの選択された
フィールドとをコンテキストにロードし、その後、コンテキストを解放する(こ
れは、その時点でSPUの制御下に来る。RTUは、SIUを介してパケットの
ヘッダ情報にアクセスする。というのは、パケットが、オフチップEPMに保管
されている可能性があるからである。
【0053】 結局、SPUコア内のストリームが、コンテキストを処理し、この事実につい
てQSに通知する。好ましい実施形態では、DMSコア内に8つのストリームが
ある。その後、QSは、パケットの状況を(完了に)更新し、結局、このパケッ
トが、ダウンロードのために選択される(すなわち、対応するパケットのパケッ
トデータが、XCaliberプロセッサから2つの外部装置の1つに送り出さ
れる)。
【0054】 パケットが、ダウンロードのために選択される時に、QSは、packetP
age(他の情報の中でも)をPMMUブロックに送り、PMMUブロックは、
対応するラインアドレスを生成して、LPMからパケットデータを読み取るか(
パケットがオンチップローカルメモリに保管された場合)、SIUに外部パケッ
トメモリからPMUにパケットを移動するように指示する。どの場合でも、読み
取られたパケットデータのラインが、アウトバッファ(OB)ブロックにバッフ
ァリングされ、そこから、16バイトネットワーク出力インターフェースを介し
て装置に送り出される。このインターフェースは、出力の相対物と独立である。
好ましい実施形態のこのインターフェースの最大集計帯域幅も、出力装置ごとに
10Gbpsの20Gbpsである。
【0055】 コマンドユニット(CU)213は、SPU105によって送られたコマンド
を受け取る。コマンドは、多くの場合に新たに定義された命令である、SPUコ
アによってディスパッチされたパケット命令である。これらのコマンドは、3つ
の独立のタイプに分類され、PMUは、サイクルごとにタイプごとに1つのコマ
ンド(合計3コマンド毎サイクルまで)を実行することができる。コマンドは、
ロード様またはストア様とすることができる(PMUがSPUへの応答を提供す
るか否かに依存する)。
【0056】 PMUの多数の特徴が、メモリマップされた構成レジスタ221を介して、S
PUによって構成される。そのような特徴の一部は、ブート時にプログラムされ
なければならず、残りは、動的に変更することができる。後者の一部について、
SPUは、特徴の機能性を正しくプログラムするために、単一スレッドモードで
動作していなければならない。CUブロックは、これらの構成レジスタの更新を
管理する。
【0057】 PMUは、ASIC203とXCaliber DMSプロセッサ201の間
のフロー制御を助ける機構を提供する。LPM219またはQS211が満杯に
なろうとしている時に、2つの異なる割込みが、SPU105に対してPMUに
よって生成される。ソフトウェアによって、対応する構造が完全に満杯になる前
に、前もって何回の割込みが生成されるかが制御される。ソフトウェアは、これ
らの割込みの生成をディスエーブルすることもできる。
【0058】 LPM219も、メモリマップ式であり、SPU105は、従来のロード/ス
トア機構を介してこれにアクセスすることができる。構成レジスタ221とLP
M219の両方が、SIU107によって保たれる開始アドレス(ベースアドレ
ス)を有する。SPU105からのLPM219および構成スペースに対する要
求は、SIUブロック107を介してPMUに到達する。SIUは、外部パケッ
トメモリのベースアドレスも知っている。
【0059】 インバッファ(IB) 外部装置によって送られたパケットデータは、ネットワーク入力インターフェ
ース205を介して、好ましい実施形態ではXCaliberコアサイクルごと
に8バイトの平均速度でPMUに到着する。PMUのIBブロック207が、こ
のデータを受け取り、バッファリングし、FIFO様の形でLPM219に供給
し、いくつかの場合に、SIUにも供給する(本明細書の別の個所で説明する、
パケットオーバーフローの場合に)。
【0060】 XCaliber DMSプロセッサ201は、潜在的に、2つまでの独立の
装置との間でパケットデータを送信/受信することができる。各装置は、パケッ
トデータと共に供給される装置識別子を用いてSIU107でタグを付けられる
。1つの装置がパケットからのデータの送信を開始する時に、その装置は、パケ
ットの終りに達するかバスエラーがSIUによって検出されるまで、その同一の
パケットからのデータの送信を継続する。
【0061】 好ましい実施形態では、パケットの最初のバイトが、必ず、そのパケットの最
初に送信される16バイトのバイト0から始まる。パケットの最初の2バイトに
よって、パケットのバイト単位のサイズ(最初の2バイトを含む)が指定される
。これらの2バイトは、外部装置がそれを付加しなかった場合に、SIUによっ
て必ず付加される。16バイトチャンクのバイトkが、有効なバイトである場合
に、バイト0からk−1も、有効なバイトである。これを保証できるのは、パケ
ットの最初のバイトが、必ずバイト0から始まるからである。パケットが、必ず
16バイトチャンクのバイト0から始まり、パケットのサイズが前もって知られ
る(最初の2バイトで)ので、各バイトを検証するための有効ビットが不要であ
ることに留意されたい。ネットワークインターフェースは、すべてのコアクロッ
クで、16バイトチャンクに少なくとも1つの有効なバイトが含まれるかどうか
を指定する制御ビットを供給する。
【0062】 ネットワーク入力インターフェースから受け取られた有効なデータは、バッフ
ァ207内で編成される。これは、8エントリのバッファであり、各エントリが
、16バイトのデータと各チャンクに関連する制御ビットとを保持する。PMM
U209は、各エントリの制御ビットを調べ、新しいパケットが開始されるのか
どうか、または2つ(までの)アクティブパケットのどちらにデータが属するか
を判定し、それ相応に動作する。
【0063】 IB207のエントリのそれぞれの16バイトチャンクは、LPM219内ま
たはEPM(図示せず)内に保管される。LPMコントローラまたはSIUのい
ずれかによって、パケットメモリに書き込む帯域幅が、少なくとも着信パケット
データの帯域幅に一致することと、パケットメモリへの着信パケットデータの書
込が、パケットメモリへの他のアクセスより高い優先順位を有することが保証さ
れる。
【0064】 いくつかの場合に、PMMU209がストールしたのでIB207が満杯にな
る可能性があり、したがって、LPMが、ストールが解決されるまでIBのデー
タをそれ以上消費しなくなる。IBが満杯になった時には、必ず、信号がネット
ワーク入力インターフェース205に送られ、ネットワーク入力インターフェー
ス205は、IBが受け入れるまで、必要な回数だけ次の16バイトチャンクを
再送出する。したがって、IBが満杯になることに起因して失われるパケットデ
ータはない。
【0065】 アウトバッファ(OB) ネットワーク出力インターフェース215も、入力インターフェースと同様に
、20Gbps(出力装置ごとに10Gbps)の総集計帯域幅をサポートする
。300MHzのXCaliberクロック周波数で、ネットワーク出力インタ
ーフェースは、OBブロックから、すべてのXCaliberサイクルに平均8
バイトのデータを受け入れ、2つの出力装置の1つにそれを送る。ネットワーク
入力インターフェースおよびネットワーク出力インターフェースは、互いに完全
に独立である。
【0066】 2つまでのパケット(出力装置ごとに1つ)を、同時に送ることができる。パ
ケットが送られる装置は、パケットを送る装置に対応する必要がない。送出され
るパケットデータは、LPM219またはEPM(図示せず)のいずれかから来
る。
【0067】 ネットワークアウトインターフェース215で接続された2つの出力装置のそ
れぞれについて、PMMU209は、ダウンロードされ始める準備ができたパケ
ットまたはダウンロード中のパケットを有するか、ダウンロードすべきパケット
を有しないことができる。すべてのサイクルに、PMMU209は、両方の出力
装置にまたがって最高のパケットを選択し、そのパケットに関する16バイトの
データのダウンロードを開始する。PMMUが、パケットから出力装置にパケッ
トデータをダウンロードしている時には、必ず、現在のパケットが完全にダウン
ロードされるまで、異なるパケットからのデータが、同一の装置にダウンロード
されない。
【0068】 LPM219から読み取られた(関連する制御情報と共に)パケットデータの
16バイトチャンクは、2つの8エントリバッファ(装置識別子ごとに1つ)の
1つに供給される。これらのバッファの1つの先頭の内容は、ネットワーク出力
インターフェースがそれを要求する時に、必ずネットワーク出力インターフェー
スに供給される。両方のバッファの先頭が有効である時には、OBが、ラウンド
ロビン式にデータを供給する。
【0069】 ネットワーク入力インターフェースと異なって、ネットワーク出力インターフ
ェースに送られる16ビットチャンク内では、バイトkが有効である場合に、バ
イト0からk−1も有効であることを保証できない。この理由は、パケットが送
出される時に、メモリ内の16バイトチャンクのバイト0から開始する必要がな
いからである。したがって、送出されるパケットの先頭を含むデータの16バイ
トチャンクのそれぞれについて、OB217は、チャンクの第1の有効なバイト
がどこに存在するかをネットワークインターフェースに通知する必要がある。さ
らに、パケットの最初の2バイトにバイト単位のパケットのサイズが含まれるの
で、ネットワーク出力インターフェースは、そのパケットの最後の16バイトチ
ャンクのデータ内にあるパケットの最後の有効なバイトを見つけるための情報を
有する。さらに、OB217は、SIU107に、それがパケットのCRCを計
算する必要があるかどうかと、必要な場合にCRCのタイプを知らせる制御ビッ
トも供給する。この制御ビットは、PMMU209によってOB217に供給さ
れる。
【0070】 ページングメモリ管理ユニット(PMMU) パケットメモリアドレススペースは、16MBである。16MBのうちで、X
Caliberプロセッサは、256KBオンチップを特徴とする。残り(また
は一部)は、外部ストレージを使用して実装される。
【0071】 パケットメモリアドレススペースは、SPU105のTLB内で、ユーザスペ
ースまたはカーネルスペースとして、かつ、キャッシュ可能またはキャッシュ不
能としてマッピングすることができる。キャッシュ可能としてマッピングされる
場合に、パケットメモリスペースは、SPU105のL1データキャッシュにキ
ャッシュ(ライトスルー)されるが、L2キャッシュにはキャッシュされない。
【0072】 PMMU209の目標は、着信パケット(およびSPUが生成したパケットも
)をパケットメモリに保管することである。ネットワーク入力インターフェース
からのパケットがLPM219におさまる場合に、PMMU209は、それを保
管する場所を決定し、LPM219への必要な書込アクセスを生成するが、ネッ
トワーク入力インターフェースからのパケットがEPMに保管されようとしてい
る場合には、SPU105は、EPM内のどこにパケットを保管する必要がある
かを判定し、SIU107が、パケットの保管を担当する。どちらの場合でも、
パケットは、連続的に保管され、パケット識別子が、PMMU209によって作
成され、QS211に送られる。
【0073】 SPU105は、所与のサイズより大きいパケットが絶対にLPMに保管され
ないように、LPM219を構成することができる。そのようなパケットならび
に、余地がないのでLPMにおさまらないパケットは、PMMU209によって
、SIU107を介してEPMに送られる。これは、オーバーフローと呼ばれる
機構であり、PMUがそれを行うようにSPUによって構成される。パケットの
オーバーフローが許容されない場合には、パケットがドロップされる。この場合
には、PMMU209が、SPUに割り込む(やはり、そうするように構成され
ている場合)。
【0074】 パケットメモリへのパケットのアップロード IB205の先頭に有効なデータがある時には、必ず、対応する装置識別子ビ
ットを使用して、データがどのパケット(受け取られる2つの可能なパケットの
うちの)に属するかを判定する。ネットワーク入力インターフェースが、装置識
別子dと共に新しいパケットのデータの送出を開始する時に、データの残りのす
べてが、エラーがネットワークインターフェースブロックによって識別されない
かぎり、結局、同一の装置識別子dと共に到着する。ネットワーク入力インター
フェースは、2つの異なる装置識別子からのデータをインターリーブすることが
できるが、所与のサイクル内には、1つの装置からのデータだけがIB207に
よって受け取られる。
【0075】 パケットをLPM219に保管する必要がある時には、PMMU209が、L
PM219に対するすべての書込アドレスおよび書込ストローブを生成する。パ
ケットをEPMに保管する必要がある場合には、SIU107がそれらを生成す
る。
【0076】 図3は、LPM219または、図3で要素305として示されているが図2に
図示されていないEPMのいずれかへのデータのアップロードを示す図である。
LPMまたはEPMへの書込ストローブは、IBのヘッダが有効なデータを有し
ない場合には生成されない。書込ストローブが生成される時には、必ず、IBの
先頭のデータの16バイトチャンク(LMPラインに対応する)が、IBから削
除され、LPMまたはEPMに保管される。IBの先頭の装置識別子ビットは、
2つのアドレスジェネレータ(入力装置ごとに1つ)から正しい書込アドレスを
選択するのに使用される。
【0077】 現在の実施形態では、1つの着信パケットだけを、SIUによってEPMに同
時に保管することができる(すなわち、1時に1つのオーバーフローパケットだ
けを、SIUによって処理することができる)。したがって、オーバーフローを
必要とする第2のパケットがネットワーク入力インターフェースによって送られ
る場合に、このパケットのデータは、捨てられる(すなわち、パケットがドロッ
プされる)。
【0078】 2バイトパケットサイズヘッダ ネットワーク入力インターフェースは、必ず、外部装置から受信したパケット
に2バイトを付加する(この外部装置がまだそれを行っていない場合。そうでな
い場合には、SIUが、それらを付加しないようにプログラムされる)。この付
加されたデータは、2つの付加されたバイトを含む、パケット全体のバイト単位
のサイズを示す。したがって、XCaliber DMSプロセッサによって処
理されるパケットの最大サイズは、最初の2バイトを含めて65535バイトで
ある。
【0079】 ネットワーク出力インターフェースは、パケットがPMUによって返される時
に(その処理中にドロップされなかった場合)、最初の2バイトが、やはり処理
されたパケットのサイズを示すことを期待する。元のパケットのサイズが、XC
aliberプロセッサによって実行される処理の結果として変更される可能性
がある(パケットが増大または縮小する可能性がある)。したがって、処理が6
4K−1バイトを超えるサイズの増加をもたらす場合には、そのパケットを2つ
の異なるより小さいパケットに分割することが、ソフトウェアの責任になる。
【0080】 PMUは、受け取られるパケットの優先順位が前もってわかっている時に、よ
り効率的である。外部装置が優先順位情報をPMUに提供できる場合に、パケッ
トの第3バイトが、優先順位のために使用される。ソフトウェアは、PMUを、
このバイトの情報を使用するか否かについてプログラムし、これは、Log2I
nQueuesと称するブート時構成レジスタを介して行われる。
【0081】 パケットのドロップ LPM219またはEPM305のいずれかに完全に保管されたパケットは、
SPU105が、それをドロップするコマンドを明示的にPMUに送った場合に
限ってドロップされる。パケットメモリに既に保管されているパケットの自動的
なドロップは、行うことができない。言い換えると、XCaliber DMS
プロセッサによって受け取られたパケットのドロップアルゴリズムは、すべて、
ソフトウェアで実装される。
【0082】 しかし、PMUが着信パケットをドロップする可能性がある、いくつかの情況
が存在する。(a)パケットがLPMにおさまらず、パケットのオーバーフロー
がディスエーブルされている、(b)パケットに関する受け取られたバイトの総
数が、ASIC固有ヘッダの最初の2バイトでASICによって指定されたバイ
ト数と同一でない、または(c)外部装置とSIUのネットワーク入力インター
フェースブロックの間で送信エラーが発生した場合がある。PMMUブロックは
、そのようなエラーについて通知される。
【0083】 上のケース(a)、(b)、および(c)のそれぞれについて、SPUへの割
込みが生成される。ソフトウェアは、AutomaticPacketDrop
IntEnable、PacketErrorIntEnableオンザフライ
構成フラグを使用して、これらの割込みの生成をディスエーブルすることができ
る。
【0084】 仮想ページ PMMU209の重要な処理が、メモリ断片化をできる限り少なくして、パケ
ットをLPM219に連続的に保管する効率的な方法を提供することである。好
ましい実施形態のアーキテクチャでは、SPU105に、LPM219の同一の
領域内で類似するサイズのパケットをできる限りグループ化する機能が与えられ
る。これによって、総合的なメモリ断片化が減る。
【0085】 低断片化特徴を実装するために、LPM219が、それぞれ64KBの4つの
ブロックに論理的に分割される。各ブロックは、256バイトの固定されたアト
ミックページに分割される。しかし、すべてのブロックが、2のべきの増分での
256バイトから64KBまで範囲の仮想ページを有する。ソフトウェアは、V
irtualPageEnableと称するオンザフライ構成レジスタを使用し
て、4つのブロックのそれぞれについて仮想ページの異なるサイズをイネーブル
/ディスエーブルすることができる。これによって、いくつかのブロックを、あ
るサイズまでのパケットを保管するように構成することができるようになる。
【0086】 PMUの編成および特徴は、サイズsのパケットが、s未満の最大仮想ページ
サイズを有するブロックに絶対に保管されないことを保証する。しかし、rの最
小仮想ページサイズを有するブロックは、rより小さいサイズのパケットを受け
入れる。これは、通常は、たとえば、1つまたは複数の他のブロックがより小さ
いパケットを保管するように構成されているが、満杯である場合に、そうなる。
【0087】 ソフトウェアは、LPMの4つのブロックのどれであっても所有権を得ること
ができ、これは、対応する64KBのメモリが、ソフトウェア管理になることを
意味する。このために、ブロックごとに構成フラグ(SoftwareOwne
d)が存在する。PMMUブロックは、関連するSoftwareOwnedフ
ラグがアサートされているLPMのブロックには、ネットワーク入力インターフ
ェースからの着信パケットを保管しない。同様に、PMMUは、Softwar
eOwnedフラグがアサートされているブロックのメモリについて、GetS
pace動作(他所で説明する)を満足しない。しかし、PMMUは、ソフトウ
ェア所有ブロックにソフトウェアによって保管されたパケットを、どれでもダウ
ンロードすることができる。
【0088】 PMMU論理は、着信パケットがLPMのブロックのどれかにおさまるかどう
かを判定する。パケットがおさまる場合に、PMMUは、4つのブロックのどれ
におさまるかを判定し(パケットが複数のブロックにおさまる可能性があるので
)、選択されたブロック内でパケットが使用する最初および最後のアトミックペ
ージを判定する。アトミックページが、着信パケットのために割り振られる。ア
トミックページに保管されるパケットデータが、ネットワーク出力インターフェ
ースを介してXCaliberプロセッサから安全に送出された時に、LPM内
の対応するスペースを割振り解除する(すなわち、他の着信パケットに使用可能
にする)ことができる。
【0089】 EPMは、LPNと同様に、256バイトのアトミックページに論理的に分割
される。しかし、PMMUは、これらのページの割振り状況を維持しない。これ
らのページの割振り状況は、ソフトウェアによって管理される。どのパケットを
保存するかに無関係に、PMMUは、パケットの最初のデータが保管される位置
の、パケットメモリ内のオフセット(アトミックページ単位)を生成する。この
オフセットを、今後、packetPageと呼ぶ。パケットメモリの最大サイ
ズは16MBなので、packetPageは16ビット値である。
【0090】 PMMUが、パケットをLPM内に安全に保管するか、パケットの最後のバイ
トがEPMに安全に保管されたことの肯定応答をSIU107から受け取るや否
や、そのパケットのために作成されたpacketPageが、QSに送られる
。QSの動作は、下の権能を付与する詳細で説明する。
【0091】 packetPageオフセットの生成 PMMUは、IBの先頭のパケットデータに関連する装置識別子(devic
eId)を常に監視する。deviceIdが現在アクティブでない(すなわち
、そのdeviceIdによって送信された前のパケットが完全に受信済みであ
る)場合に、これは、IBの先頭に新しいパケットの最初のデータが含まれるこ
とを示す。この場合には、最初の2バイト(16バイトチャンクのバイト0およ
びバイト1)によって、バイト単位のパケットのサイズが指定される。新しい着
信パケットのサイズの情報を用いて、PMMUは、そのパケットがLPM219
におさまるかどうかを判定し、そうである場合には、それが4つのブロックのど
れに保管されるかと、そのブロック内の開始アトミックページおよび終了アトミ
ックページを判定する。
【0092】 パケットがLPM219におさまるかどうかを判定し、その場合にどのアトミ
ックページが必要であるかを判定する、PMMUの現在の実施形態での必要なス
ループットは、2サイクルごとに1パケットである。1つの可能な2サイクル実
装は、次のようになる:(a)判定が1サイクルで行われ、1時に1つの判定だ
けが行われ、(b)判定の次のサイクルに、パケットを保管するのに必要なアト
ミックページが、割り振られ、仮想ページの新しい状態(割振り済み/割振り解
除)を計算する。このサイクルでは、判定は許容されない。
【0093】 図4aは、ローカルパケットメモリに関する、並列の判定および割振りを示す
図である。判定論理は、図示のように、4つの64KBブロックのすべてについ
て並列に実行される。
【0094】 図4bに、4つの64KBブロックのそれぞれについて維持される必要がある
状態を示す。この状態は、AllocationMatrixと呼ばれ、1つま
たは複数のアトミックページが割り振られるか割振り解除されるたびに再計算さ
れ、判定論理の入力である。FitsVectorおよびIndexVecto
rに、AllocationMatrixから計算される情報が含まれる。
【0095】 AllocationMatrix[VPSize][VPIndex]は、
バイト単位のサイズVPSizeの仮想ページ番号VPIndexが既に割り振
られているか否かを示す。FitsVector[VPSize]は、ブロック
が、少なくとも1つの割り振られていないサイズVPSizeの仮想ページを有
するかどうかを示す。FitsVector[VPSize]がアサートされて
いる場合には、IndexVector[VPSize]ベクトルに、サイズV
PSizeの割り振られていない仮想ページのインデックスが含まれる。
【0096】 SPUは、どの仮想ページサイズがイネーブルされているかをブロックのそれ
ぞれについてプログラムする。EnableVector[VPSize]にこ
の情報が含まれる。この構成は、VirtualPageEnableオンザフ
ライ構成レジスタを使用して実行される。対応するSoftwareOwned
フラグがアサートされている場合に、AllocationMatrix[][
]、FitsVector[]、IndexVector[]、およびEnab
leVector[]が、ドントケアであることに留意されたい。
【0097】 この例では、判定論理のアルゴリズム(サイズsバイトのパケットに関する)
が、次のようになる。
【0098】 1)Fits論理:ブロックのそれぞれについて、パケットがおさまるか否か
を検査する。おさまる場合に、仮想ページサイズと、そのサイズの最初の仮想ペ
ージの番号を記憶する。
【数1】
【0099】 2)ブロック選択:パケットをおさめることができる最小の仮想ページ(イネ
ーブルされていてもいなくても)を有するブロックが候補である。最小のイネー
ブルされた仮想ページを有するブロックを選択する。
【数2】
【0100】 パケットがLPMにおさまる場合に、作成されるpacketPageは、パ
ケットの最初のデータが保管されるLPM内のアトミックページの番号(LPM
内には1K個までの異なるアトミックページがある)になる。パケットがおさま
らない場合には、packetPageは、構成レジスタOverflowAd
dressの内容を右に8ビットシフトしたものになる。パケットオーバーフロ
ー機構を、副題「パケットオーバーフロー」の下で、本明細書の他所で説明する
【0101】 パケットをどこに保管するかの判定の次のサイクルに、選択されたブロックに
ついて、AllocationMatrix、FitsVector、およびI
ndexVectorの新しい値を再計算しなければならない。FitsVec
tor[VPSize]がアサートされる場合には、IndexVector[
VPSize]が、対応する仮想ページサイズについて可能な最大の割り振られ
ていない仮想ページのインデックスである。FitsVector[VPSiz
e]がデアサートされる場合には、IndexVector[VPSize]は
未定義である。
【0102】 パケットを保管するのに必要なアトミックページの数を計算し(NumAPs
)、対応するアトミックページを割り振る。選択されたブロック(B)に関する
アトミックページの割振りは、下記のように行われる。
【0103】 1.jが最初のアトミックページ、kが最後のアトミックページ(k−j+1
=NumAPs)であるものとして、AllocationMatrix[AP
size][j..k]内のアトミックページの割振り状況に、割振り済みをセ
ットする。
【0104】 2.AllocationMatrix[r][s]の仮想ページの割振り状
況を、図4bのメッシュ構造に従って更新する。(2k+1バイト仮想ページを
構成する2つの2バイト仮想ページのいずれかが割り振られる場合に、2k+ バイト仮想ページが割り振られる)。
【0105】 packetPageが生成された時に、そのpacketPageが、エン
キューのためにQSに送られる。QSは、満杯の場合(非常にまれ)に、PMM
Uによって供給されるpacketPageを受け入れることができない。この
場合には、PMMUは、次の新しいパケットのために新しいpacketPag
eを生成することができなくなる。これがIBに圧力をかけ、IBは、QSが複
数サイクルにわたって満杯のままである場合に満杯になる可能性がある。
【0106】 PMMUブロックは、QSがpacketPageを保管しなければならない
キュー番号も送る。PMMUがこのキュー番号を生成する方法は、下で特にQS
に割り当てられた節で説明する。
【0107】 ページ割振りの例 図5aおよび5bに、アトミックページを割り振る方法の例を示す。簡単にす
るために、この例では、それぞれ2KBの2つのブロック(0および1)があり
、アトミックページサイズが256バイトであり、両方のブロックがSoftw
areOwnedフラグをデアサートされていると仮定する。単一および二重の
斜線区域は、割り振られた仮想ページを表す(単一の斜線のページは、現在のサ
イクルで割り振られるページに対応する)。この例では、256バイト、512
バイト、1Kバイト、および512バイトのパケットサイズのシーケンスについ
て、ページがどのように割り振られるかを示す。このシーケンスの後に、たとえ
ば2Kバイトパケットが、この例のLPMにおさまらないことに留意されたい。
【0108】 FitsVector[VPSize]がアサートされる時には、必ず、In
dexVector[VPSize]に、仮想ページサイズVPSizeの最大
の割り振られていない仮想ページインデックスが含まれる。最大のインデックス
を選択する理由は、メモリスペースがよりよく利用されるからである。これを、
図6aおよび6bに示すが、この図では、2つの256バイトパケットが、1ブ
ロックに保管されている。シナリオAでは、256バイト仮想ページが、ランダ
ムに選択されるが、シナリオBでは、最大のインデックスが必ず選択される。図
からわかるように、シナリオAのブロックでは、2つの512バイト仮想ページ
だけが許容されるが、シナリオBのブロックでは、3つが許容される。しかし、
両方が、同数の256バイトパケットを許容するが、これは、このサイズが最小
の割振り単位であるからである。常に最小の仮想ページインデックス番号を選択
することによって、同一の効果が得られることに留意されたい。
【0109】 パケットオーバーフロー パケットをLPMに保管できない理由は、次の2つだけである。(a)パケッ
トのサイズが、4つのすべてのブロックにまたがってイネーブルされた最大の仮
想ページより大きい、または(b)パケットのサイズが、イネーブルされた最大
仮想ページ以下であるが、LPM内で余地を見つけることができない。
【0110】 パケットがLPMにおさまらない時には、PMMUが、SIUを介してEPM
にパケットをオーバーフローさせる。それを行うために、PMMUは、パケット
が保管される初期アドレスをSIUに供給する(パケットメモリ内の16バイト
オフセット)。この20ビットアドレスは、次のようにして得られる。(a)1
6MSBビットは、OverflowAddress構成レジスタの16MSB
ビットに対応する(すなわち、パケットメモリ内のアトミックページ番号)。(
b)4LSBビットは、HeaderGrowthOffset構成レジスタに
対応する。このオーバーフローされるパケットのpacketPage値(QS
に送られる)は、OverflowAddress構成レジスタの16MSBビ
ットである。
【0111】 オンザフライ構成フラグOverflowEnableがアサートされている
場合に、PMMUは、OverflowStartedInt割込みを生成する
。OverflowStartedInt割込みが生成される時に、オーバーフ
ローされるパケットのバイト単位のサイズが、PMMUによって、SPU読取専
用構成レジスタSizeOfOverflowedPacketに書き込まれる
。この時点で、PMMUは、新しいパケットのオーバーフローを防ぐ内部ロック
フラグをセットする。このロックフラグは、ソフトウェアがオンザフライ構成レ
ジスタOverflowAddressに書き込む時にリセットされる。パケッ
トのオーバーフローが必要であるが、ロックフラグがセットされている場合には
、そのパケットがドロップされる。
【0112】 この機構を用いて、オーバーフローされるパケットごとに1つの割込みだけが
生成され、サービスされることが保証される。これによって、オーバーフローさ
れる次のパケットが保管される開始アドレスが、SizeOfOverflow
edPacketレジスタを介して割り込みサービスルーチンに可視になる場所
をソフトウェアが決定するためのプラットフォームも作られる。言い換えると、
ソフトウェアがEPMを管理する。
【0113】 ソフトウェアが、2つのOverflowStartedInt割込みの間に
OverflowAddressを複数回書き込む場合には、その結果は未定義
である。さらに、ソフトウェアが、OverflowAddressの16MS
Bビットに0から1023をセットする場合に、パケットメモリ内の最初の1K
アトミックページがLPMに対応するので、その結果も未定義である。
【0114】 パケットメモリからのパケットのダウンロード 結局、SPUは、パケットの処理を完了し、その事実をQSに知らせる。この
時点で、パケットを、LPMまたはEPMのいずれかのメモリからダウンロード
し、OBを介して、接続された装置の1つに送信することができる。図7は、パ
ケットのダウンロードに使用されるXCaliber DMSプロセッサのブロ
ックの最上位の概略であり、図7の要素は、図2と同一の符号を付されている。
ダウンロード処理は、以下の説明の助けを得て図7で追跡することができる。
【0115】 QS211が、パケットの処理が完了したことを知らされた時に、QSは、こ
のパケットを完了としてマークし、数サイクル後(パケットの優先順位に依存す
る)に、QSが、パケットに関する下記の情報をPMMU209に供給する(P
MMUがそれを要求する限り)。 (a)packetPage (b)優先順位(それが抽出された元のクラスタ番号) (c)末尾増大/縮小情報(本明細書で後で説明する) (d)アウトバウンド装置識別子ビット (e)CRCタイプフィールド(本明細書で後で説明する) (f)KeepSpaceビット
【0116】 PMMUブロック209に送られる装置識別子は、パケットが送信される外部
装置を指定する1ビット値である。このアウトバウンド装置識別子は、ソフトウ
ェアによって、2ビット値としてQS211に供給される。
【0117】 パケットがLPM219に保管された場合には、PMMU209が、LPM2
19への(16ビットライン)読取アドレスおよび読取ストローブのすべてを生
成する。読取アドレスが計算され、LPM219から読み取られるラインをバッ
ファリングするのに十分な余地がOB217にあると、すぐに、読取ストローブ
が生成される。OB内のバッファdが、装置識別子dに関連付けられる。このバ
ッファは、2つの理由すなわち、(a)外部装置dが、一時的にXCalibe
rからのデータを受け入れないか、(b)OBからの読取データの速度が、それ
に書き込まれるデータの速度より低いのいずれかである場合に、満杯になる可能
性がある。
【0118】 アトミックページ内のパケットデータが、すべてダウンロードされ、OBに送
られると、すぐに、そのアトミックページを割振り解除することができる。1つ
または複数のアトミックページの割振り解除は、上で説明したものと同一の手順
に従う。しかし、LPMビットがデアサートされている場合には、アトミックペ
ージの割振り解除は行われない。パケットがEPM701にある場合には、Ke
epSpaceビットがドントケアになる。
【0119】 パケットがEPM701に保管された場合には、PMMU209は、パケット
の最初のバイトがあるEPM内のアドレスをSIU107に供給する。SIUは
、EPMからのパケットのダウンロードを実行する。SIUは、OB217内の
対応するバッファ内のバッファスペースも監視して、EPM701から読み取ら
れる16バイトチャンクを書き込む余地があるかどうかを判定する。パケットが
完全にダウンロードされた時に、SIUは、その事実についてPMMUに知らせ
、その結果、PMMUが、同一の装置識別子を有する次のパケットをダウンロー
ドできるようにする。
【0120】 2つのパケット(装置ごとに1つ)が、同時に送信されている時に、最高優先
順位のパケットからのデータが、まずメモリから読み出される。このプリエンプ
ションは、16バイト境界で、またはパケットがその伝送を終了した時に、発生
する可能性がある。両方のパケットが同一の優先順位(QSによって供給される
)を有する場合には、ラウンドロビン法を使用して、データを次にダウンロード
されるパケットを選択する。この選択論理では、OB内の2つのバッファがどれ
ほど満杯であるかも考慮に入れる。たとえばバッファdが満杯である場合に、装
置識別子dを有するパケットは、データの次の16バイトチャンクのダウンロー
ドのためにPMMU内で選択されなくなる。
【0121】 パケットが、パケットメモリ(ローカルまたは外部)からのダウンロードを開
始される時に、PMMUは、パケットの最初の有効なバイトがどこに存在するか
を知っている。しかし、パケットのサイズは、パケットデータの最初のライン(
または、いくつかの場合に最初の2ライン)がパケットメモリから読み取られる
まで未知である。というのは、パケットのサイズが、パケットデータの最初の2
バイトに含まれるからである。したがって、パケットのダウンロードの処理では
、まず、パケットのサイズを判定するのに必要なラインアドレスを生成し、その
後、必要な場合に、アクセスの残りを生成する。
【0122】 この論理では、パケットのサイズを指定する最初の2バイトが、データの16
バイトライン内のどの位置にも存在する可能性があることを考慮に入れる。特定
のケースが、最初の2バイトが2つの連続するラインにまたがる時である(これ
は、最初のバイトがラインの第16バイトであり、第2バイトが次のラインの第
1バイトである時に発生する。
【0123】 PMMUが、パケットのダウンロードを終了する(パケットのすべてのデータ
がパケットメモリから読み取られ、OBに送られた)とすぐに、PMMUが、こ
のイベントについてQSに通知する。QSは、対応するパケットをそのキューイ
ングシステムから無効化する。
【0124】 パケットのダウンロードが開始される時に、パケットを先取りすることができ
ない、すなわち、パケットが、その送信を終了する。同一のアウトバウンド装置
識別子を有する、ダウンロードの準備ができた他のパケットは、前のパケットが
送信されつつある間は、前のパケットが完全に送信されるまで送信することがで
きない。
【0125】 パケットの増大/縮小 パケットの処理の結果として、ネットワークパケットのサイズが、増大、縮小
、または同一サイズにとどまる可能性がある。サイズが変化する場合には、SP
Uが、パケットの同一の最初の2バイトにパケットの新しいサイズを書き込まな
ければならない。パケットの増大および縮小の現象を、図8に示す。
【0126】 パケットのヘッダと末尾の両方が、増大または縮小することができる。パケッ
トが増大する時に、追加されるデータによって、ヘッダ増大を経験するパケット
の直前に保管されていた可能性がある別のパケットまたは末尾増大の場合には真
後に保管された別のパケットのデータが上書きされる可能性がある。この問題を
避けるために、パケットがパケットメモリに保管される時に、すべてのパケット
の前後に空のスペースが割り振られるようにPMUを構成することができる。こ
れらの空のスペースは、それぞれHeaderGrowthOffsetおよび
TailGrowthOffsetというブート時構成レジスタを用いて指定さ
れ、これらのレジスタの粒度は、16バイトである。最大のHeaderGro
wthOffsetは240バイト(15個の16バイトチャンク)であり、最
大のTailGrowthOffsetは、1008バイト(63個の16バイ
トチャンク)である。どちらの場合でも、最小値は0バイトである。これらの増
大オフセットが、すべての着信パケットに適用される、すなわち、異なる増大オ
フセットを異なるパケットに適用する機構がないことに留意されたい。
【0127】 PMMUは、LPM内のスペースを検索する時に、Size(packet)
+((HeaderGrowthOffset+TailGrowthOffs
et)<<4)の連続したスペースを探す。したがって、パケットの最初のバイ
ト(ASIC固有ヘッダの最初のバイト)は、実際には、パケットメモリ内のオ
フセット((packetPage<<8)+(HeaderGrowthOf
fset<<4))から始まる。
【0128】 ソフトウェアは、デフォルトオフセットがいくつであるかを知っており、した
がって、パケットが先頭と末尾の両方でどれだけ安全に増大できるかを知ってい
る。パケットが最大オフセットを超えて増大する必要がある場合には、ソフトウ
ェアは、パケットメモリ内の新しい位置にパケットを明示的に移動しなければな
らない。これを行うステップは、次の通りである。
【0129】 1)ソフトウェアが、PMUに、新しいサイズの連続したスペースのチャンク
を要求する。PMUは、この新しいスペースを識別する(ポイントする)新しい
packetPageを返す。
【0130】 2)ソフトウェアが、データを新しいメモリスペースに書き込む。
【0131】 3)ソフトウェアが、新しいpacketPageを用いて古いpacket
Pageの名前を変更する。
【0132】 4)ソフトウェアが、PMUに、古いpacketPageに関連付けられた
スペースを割振り解除するように要求する。
【0133】 ヘッダ増大または縮小の場合に、パケットデータは、もはや((packet
Page<<8)+(HeaderGrowthOffset<<4))から始
まらない。新しい開始位置は、パケットの処理が完了した時にSPUによって実
行される特殊な命令を用いてPMUに供給される。この情報が、QSブロックに
よってPMMUに供給される。
【0134】 タイムスタンプ PMU(次の節で詳細に説明する)のQSブロックは、XCaliberプロ
セッサ内で処理中のパケットのpacketPage識別子をFIFO様キュー
に保存することによって、着信パケットの順序を保証する。しかし、ソフトウェ
アは、QSから明示的に識別子を抽出し、それらをキューのいずれかの末尾に挿
入することによって、この順序付けを破ることができる。
【0135】 ソフトウェアがパケットの相対順序を保証するのを助けるために、PMMUブ
ロックに到着するすべてのパケットにタイムスタンプを付けるように、オンザフ
ライ構成フラグTimeStampEnabledを使用してPMUを構成する
ことができる。タイムスタンプは、8バイト値であり、コアクロックサイクルご
とに増分される64ビットカウンタから得られる。
【0136】 タイムスタンプ機能がオンである時には、PMMUが、各パケットの前に8バ
イトタイムスタンプ値を付加し、タイムスタンプは、パケットがネットワーク出
力インターフェースに送られる時にはぎとられる。タイムスタンプ値は、必ず、
パケットメモリの第(k−1)16バイトチャンクの8MSBバイトを占め、こ
こで、kは、パケットのデータが開始される16バイトラインオフセットである
(k>0)。HeaderGrowthOffsetが0の場合には、タイムス
タンプ値は、TimeStampEnabledがアサートされている場合であ
っても、付加されない。
【0137】 完全な64ビットタイムカウンタ値は、読取専用構成レジスタ(TimeCo
unter)を介してソフトウェアに供給される。
【0138】 PMMUでのソフトウェア動作 ソフトウェアは、PMMUにアクセスして、連続するスペースのチャンクを要
求するか解放する。具体的に言うと、ソフトウェアがPMMMUに対して実行で
きる2つの動作がある。まず、ソフトウェアは、動作GetSpace(siz
e)を介して、LPM内でsizeバイトの連続したスペースを見つけることを
試みることができる。PMUは、見つかった連続するスペースが始まるアトミッ
クページ番号(すなわちpacketPage)と、成功ビットを用いて応答す
る。PMUが、スペースを見つけることができた場合には、成功ビットに「1」
がセットされ、そうでない場合には「0」がセットされる。SoftwareO
wned構成ビットがアサートされているメモリのブロックについては、Get
Spaceは満足されない。したがって、ソフトウェアは、ソフトウェア所有の
LPMブロックのメモリスペースを明示的に管理する。
【0139】 PMMUは、要求されたスペースに必要なアトミックページを割り振る。着信
パケットのアトミックページの割振りに使用されるビットの組EnableVe
ctorは、GetSpace動作ではドントケアである。言い換えると、si
zeバイトを含むのに十分な連続する割り振られていないアトミックページが、
特定のブロックに存在する限り、GetSpace(size)動作は、そのブ
ロック内のすべての仮想ページがディスエーブルされている場合であっても成功
する。
【0140】 さらに、ソフトウェア所有でないブロックの中で、GetSpace動作は、
まずその仮想ページのすべてをディスエーブルされているブロックを使用してサ
ービスされる。そのようなブロックが複数存在する場合には、最も小さいブロッ
ク番号が選択される。sizeが0である場合には、GetSpace(siz
e)は「0」を返す。
【0141】 ソフトウェアがPMMUに対して実行できる第2の動作が、FreeSpac
e(packetPage)である。この動作では、PMUが、前に割り振られ
たアトミックページ(packetPageで始まる)を割振り解除する。この
スペースは、着信パケットの結果としてPMMUによって自動的に割り振られた
ものまたはGetSpaceコマンドの結果としてのいずれかであった可能性が
ある。FreeSpaceは、結果をソフトウェアに返さない。Softwar
eOwnedビットをアサートされたブロックに対するFreeSpace動作
は、無視される(何も行われず、結果がSPUに返されない)。
【0142】 ローカルパケットメモリ 図2および7の219に示されたローカルパケットメモリ(LPM)は、この
実施形態では、256KBのサイズ、バイトイネーブルを伴う16バイトライン
幅、2バンク(偶数/奇数)、バンクごとに1つの読取ポートと1つの書込ポー
トを有し、完全にパイプライン式であり、1サイクルの待ち時間を有する。
【0143】 パケット処理において、LPMは、PMMUおよびSIUの両方から読取要求
および書込要求を受け取る。LPMコントローラが、PMMUからの要求が最高
の優先順位を有することを保証する。PMMUは、別のパケットを書き込んでい
る間に、多くとも1つのパケットを読み取る。LPMコントローラは、PMMU
が、必ずLPMへの専用ポートを有することを保証する。
【0144】 悪意のあるソフトウェアが、PMMUによって書き込まれている/読み取られ
ているものと同一のデータを読み取る/書き込むことができる。したがって、同
一サイクル内の読取アクセスと書込アクセスが、異なる16バイトラインアドレ
スに対して実行されるという保証はない。
【0145】 LPMへの要求は、この例では、16バイトの単一アクセス(読取または書込
のいずれか)として定義される。SIUは、マスクドロードまたはマスクドスト
アに関する複数の要求を生成するが、これは、本発明人が知っている新しい命令
であり、少なくとも1つの別の特許申請書の主題である。したがって、マスクド
ロード/ストア動作は、最高優先順位のPMMUアクセスが同一のポートを必要
とする場合に、これらの複数の要求の途中でストールされる可能性がある。
【0146】 PMMUが読み取るか書き込む時に、バイトイネーブル信号が、セットされて
いると仮定される(すなわち、ライン内の16バイトのすべてが、読み取られる
か書き込まれる)。SIUが読取または書込を行う時には、バイトイネーブル信
号が、意味を持ち、SIUによって供給される。
【0147】 SPUが、LPM内の単一のバイト/ワードを読み取る時に、SIUは、対応
する16バイトラインを読み取り、所望のバイト/ワードの抽出および右寄せを
実行する。SPUが、単一のバイト/ワードを書き込む時には、SIUが、正し
い位置にそのバイト/ワードを有する16バイトラインと有効バイト信号を生成
する。
【0148】 動作の間の優先順位付け PMMUは、3つの異なるソース(IB、QS、およびソフトウェア)から、
動作を実行する要求を3つまで受け取ることができる。たとえば、連続するスペ
ースのチャンクに関する検索を実行する要求と、対応するアトミックページサイ
ズを割り振る要求と、生成されたpacketPageを供給する要求が、IB
および/またはソフトウェアから来る場合がある。所与のpacketPage
に関連するアトミックページの割振り解除を実行する要求が、QSおよび/また
はソフトウェアから来る場合もある。
【0149】 これらの動作の最初の動作が、2つを超えないサイクルを要することと、第2
の動作が、1つを超えないサイクルを要することが必要である。PMMUは、1
時に1つの動作だけを実行する。PMMUブロックは、最高から最低への順で、
IB、QS、およびソフトウェアからの要求に優先順位を与える。
【0150】 早期満杯PMMU検出 PMUは、外部装置とXCaliberプロセッサの間のフロー制御を助ける
機構を実施する。この機構の一部は、LPMが満杯になることの検出であり、こ
の場合には、SPUに対するNoMorePagesOfXsizeInt割込
みが生成される。EPMは、ソフトウェア制御であり、したがって、その状態は
、PMMUハードウェアによって維持されない。
【0151】 ソフトウェアは、仮想ページサイズsを指定することによって、NoMore
PagesOfXsizeInt割込みをイネーブルすることができる。PMM
Uは、そのサイズの使用可能な仮想ページが使用可能でない(すなわち、すべて
のブロックについてFitsVector[s]がデアサートされている)こと
を検出した時に、必ずこの割込みを生成する。選択された仮想ページサイズが大
きいほど、割込みが早く生成される。仮想ページのサイズは、オンザフライ構成
レジスタIntIfNoMoreThanXsizePages内の4ビット値
(0:256バイト、1:512バイト、…、8:64KB)を用いて示される
。この値が8を超える時には、割込みは絶対に生成されない。
【0152】 最小仮想ページサイズが選択される(256バイト)場合には、LPMが完全
に満杯(すなわち、1バイトパケットであっても、これ以上パケットが受け入れ
られない)時に、NoMorePagesOfXsizeInt割込みが生成さ
れる。
【0153】 一般に、IntIfNoMoreThanXsizePagesがXである場
合に、最も早く割込みが生成されるのは、ローカルパケットメモリが(100/
)%満杯の時である。アトミックページが256バイトなので、LPMが、
3Kバイトのパケットデータで満杯になる可能性がある(パケットごとに3バイ
ト、各パケットが1アトミックページを使用)ことに留意されたい。
【0154】 パケットサイズ不一致 PMMUは、何バイトがLPMまたはEPMにアップロードされているかを記
憶する。このサイズが、最初の2バイトで指定されたサイズと異なる場合には、
SPUに対するPacketErrorInt割込みが生成される。この場合に
、不一致のパケットサイズを有するパケットは、ドロップされる(既に割り振ら
れたアトミックページは、割振り解除され、packetPageは作成されな
い)。この場合には、AutomaticDropInt割込みは生成されない
。実際のサイズが、最初の2バイトで指定されたサイズより大きい場合には、A
SCIから受け取られつつある残りのパケットデータが、安全に破棄される。
【0155】 パケットサイズ不一致が、インバウンド装置識別子D(D=0、1)で検出さ
れた時には、同一の装置識別子から受け取られるそれ以降のパケットが、ソフト
ウェアがClearErrorD構成レジスタに(なんらかの値を)書き込むま
で、ドロップされる。
【0156】 バスエラー回復 不完全なパケットデータが、外部バスエラーに起因して、PMUに到着するか
PMUから出てゆく可能性がある。具体的に言うと、ネットワーク入力インター
フェースが、送り込まれたデータの16バイトチャンクがバスエラーを有するこ
とを通知する場合があり、また、SIUが、EPMからダウンロードされたデー
タの16バイトチャンクがバスエラーを有することを通知する場合がある。どち
らの場合でも、PMMUは、PacketErrorInt割込みを生成して、
このイベントについてSPUに通知する。他の情報は、SPUには供給されない
【0157】 エラーがLPM内で生成される場合には、このオンチップメモリ内でエラー検
出機構が実装されていないので、そのエラーが検出されないことに留意されたい
。バスエラーが発生する時には、必ず、影響されたパケットのデータが、それ以
上はPMUによって受け取られなくなる。これは、どちらの場合でもSIUによ
って行われる。第1の場合について、PMMUは、エラーイベントの前に受け取
ったパケットデータのために使用された既に割り振られているアトミックページ
を割振り解除するだけでよい。
【0158】 バスエラーが、インバウンド装置識別子D(D=0、1)で検出される時には
、同一の装置識別子から受け取られるそれ以降のパケットが、ソフトウェアがC
learErrorD(D=0、1)構成レジスタに(なんらかの値を)書き込
むまでドロップされる。
【0159】 キューイングシステム(QS) XCaliberプロセッサのPMU内のキューイングシステム(QS)は、
現在XCaliberプロセッサ内で処理中のパケットのパケット識別子および
パケットの状態を保持する機能、デフォルトまたはソフトウェア供給の優先順位
によってパケットをソートされた状態に保つ機能、使用可能なコンテキストの1
つにプリロードされる必要がある(バックグラウンドで)パケットを選択する機
能、および外部装置への送出の準備ができた処理済みパケットを選択する機能を
有する。
【0160】 図9は、QSと、PMUおよびSPU内の他のブロックとの間の高水準通信を
示すブロック図である。PMMUが、packetPageを作成する時に、そ
のpacketPageが、キュー番号および装置識別子と共にQSに送られる
。QSは、そのpacketPageを対応するキューにエンキューし、そのパ
ケットに番号(packetNumber)を関連付ける。結局、パケットが、
選択され、RTUに供給され、RTUは、packetPage、packet
Numberおよびパケットヘッダの選択されたフィールドを、使用可能なコン
テキストにロードする。結局、SPUが、そのコンテキストを処理し、他の情報
の中でも、パケットの処理が完了するかパケットがドロップされた時を、PMU
に通信する。この通信に関して、SPUは、パケット識別子としてpacket
Numberを供給する。QSは、完了(最初のケースで)としてそのパケット
をマークし、パケットは、結局、パケットメモリからのダウンロードのために選
択される。
【0161】 同一のフロー(同一のソースおよび宛先)のパケットが、XCaliberプ
ロセッサに到着したのと同一の順序で外部装置に送出される必要がある(ソフト
ウェアが明示的にこの順序付けを壊さない限り)ことが、この実施形態の要件で
ある(非常に望ましい)。SPUがパケットの処理を開始する時には、フローは
知られていない。フロー内のパケットの順序付けの記憶は、必要な処理の量に起
因して、また、応用分野によってはアクティブフローの数が非常に大きくなる可
能性があるので、コストの高いタスクである。したがって、フロー内の順序は、
通常は、アグリゲーテッドフローキューを使用することによって記憶される。ア
グリゲーテッドフローキューでは、異なるフローからのパケット識別子が、順序
付けのために同一のフローからのものとして扱われる。
【0162】 QSは、アグリゲーテッドフローキューの維持というコストの高いタスクを、
ハードウェアでバックグラウンドで行うことによって、このタスクをオフロード
する。現在の実施形態では、32個までのアグリゲーテッドフローキューを維持
することができ、これらのキューのそれぞれが、暗黙の優先順位を有する。ソフ
トウェアは、32個までのキューのどれにでもpacketPageをエンキュ
ーすることができ、あるキューから別のキューへpacketPage識別子を
移動することができる(たとえば、そのパケットの優先順位がソフトウェアによ
って発見された時に)。ソフトウェアは、必要な場合に、同一のフローに属する
パケットのすべてのpacketPage識別子を同一のキューにエンキューす
ることが期待される。そうでなければ、パケットが、同一のフロー内で順序はず
れで送出されるので、ネットワークの性能の低下が発生する可能性がある。ソフ
トウェアの介入なしで、QSは、フローごとの到着の順序を保証する。
【0163】 汎用キュー QSは、32個までのFIFO様キューの組を実装し、これらのキューは、3
2キューの場合に、0から31までの番号が付けられる。各キューは、256個
までのエントリを有することができる。しかし、すべてのキューのすべてのエン
トリの合計が、256を超えることはできない。したがって、キューサイズは動
的である。キューエントリは、packetPage識別子と他の情報を合わせ
たものに対応する。したがって、256個までのパケットが、所与の時点でXC
aliberプロセッサ内で処理中であることを許容される。この最大値は、ソ
フトウェアには不可視である。
【0164】 QSがpacketPageをエンキューする時には、必ず、0から255ま
での番号(packetNumber)が、packetPageに割り当てら
れる。この番号は、packetPageの値と共にソフトウェアに供給される
。ソフトウェアは、QSに対する動作を実行したい時に、packetNumb
er識別子を供給する。この識別子は、QSによって、packetPage(
および対応するパケットに関連する他の情報)をそのキューの中およびキューの
間で突き止めるのに使用される。
【0165】 ソフトウェアは、XCaliberプロセッサ内のキューの最大の個数が32
であることを知っている。キューは、使用されない限りディスエーブルされる。
すなわち、ソフトウェアは、何個のキューが必要であるかを前もって判断する必
要がない。キューは、少なくとも1つのパケットがそのキューに存在する時にイ
ネーブルされる。
【0166】 異なるキューからの複数のパケット識別子が、実行される特定の動作の候補に
なることができる。したがって、動作が最初に適用されるパケット識別子を選択
するための、優先順位付け機構が存在しなければならない。ソフトウェアは、「
オンザフライ」構成レジスタPriorityClustersを使用して、キ
ューの間での相対優先順位を(オンザフライで)構成することができる。これは
、異なるキューをクラスタにグループ化する方法を指定する3ビット値である。
各クラスタは、優先順位を関連付けられる(クラスタ番号が高いほど、優先順位
が高い)。QSを構成することができる現在の実施形態での6つの異なるモード
を、図10に示す。
【0167】 図10の最初の列は、「オンザフライ」構成レジスタPriorityClu
stersの値である。ソフトウェアは、この番号を制御し、それによってQS
構成が定義される。たとえば、PriorityClusters=2の場合に
、QSは、4つのクラスタに構成され、各クラスタに8つのキューがある。4つ
のクラスタの第1のクラスタが、キュー0から7を有し、第2のクラスタが、キ
ュー8から15を有し、第3のクラスタが、16から23、4つのクラスタの最
後のクラスタが、キュー24から31を有する。
【0168】 クラスタ内のキューは、ラウンドロビン式に公平に扱われる。クラスタは、厳
密な優先順位式に扱われる。したがって、すべてのキューの枯渇がないことを保
証する唯一のモードが、32個のキューの1つのクラスタを意味する、Prio
rityClustersが0である時である。
【0169】 QSへのpacketPage/deviceIdの挿入 図11は、この実施形態の、図2および7のQS211の包括的なアーキテク
チャを示す図である。packetPageおよびDeviceIdの情報の挿
入が、個々のキューに向かう矢印によって示されている(この例では32個のキ
ュー)。この情報は、3つの可能なソースすなわち、PMMU、SPU、および
QSからの再挿入から挿入される可能性がある。複数のソースがQSへの挿入の
準備ができているpacketPageを有する場合のための、機能要素110
1によって示される優先順位論理がある。この実施形態では、優先順位は、優先
順位の降順で、PMMU、QS、およびSPU(ソフトウェア)である。
【0170】 SPU(ソフトウェア)からのパケットの挿入に関して、ソフトウェアは、そ
れ自体でパケットを作成することができる。それを行うために、ソフトウェアは
、まず、所与のサイズの空きスペースの連続したチャンク(SPUドキュメンテ
ーションを参照されたい)をPMUに要求し、PMUが、スペースが見つかった
場合にpacketPageを返す。ソフトウェアは、パケットが結局送出され
るようにするために、そのpacketPageを明示的に挿入する必要がある
。QSがこのpacketPageを挿入する時に、作成されたpacketN
umberがSPUに返される。ソフトウェアは、コマンドユニットを介して挿
入を要求する(図2を参照されたい)。
【0171】 QSからの挿入の場合には、キューの先頭にあるエントリを、別のキューの末
尾に移動することができる。この動作は、選択機能1103として図示されてい
る。
【0172】 PMUからの挿入の場合には、パケットがXCaliberプロセッサに到着
した時に、PMMUが、パケットにpacketPageを割り当て、対応する
パケットがパケットメモリに安全に保管されるや否や、packetPageが
QSに送られる。
【0173】 キュー内の例示的なエントリが、要素1105として図示されており、これは
、下記のフィールドを有する。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によって無
視される。
【0174】 QSは、packetPageが挿入されるキューの番号を知る必要がある。
ソフトウェアがpacketPageを挿入する時には、キュー番号が、XSt
reamパケット命令によって明示的に供給され、このXStreamパケット
命令は、SPUの機能であり、本明細書の他所で説明する。packetPag
eが、QS自体によって挿入される場合には、キュー番号は、packetPa
geが存在するエントリのNextQueueフィールドの値である。
【0175】 packetPageがPMMUによって挿入される時に、キュー番号は、ソ
フトウェアがLog2InputQueues構成レジスタを(ブート時に)ど
のように構成したかに依存する。Log2InputQueuesに0がセット
されている場合には、着信パケットのすべてのpacketPageが、同一の
キューにエンキューされ、このキューは、オンザフライ構成レジスタFirst
InputQueueによって指定される。Log2InputQueuesに
k(1≦k≦5)がセットされている場合には、パケットの第3バイトのk個の
MSBビットによって、キュー番号が決定される。したがって、外部装置(また
はSIUのネットワーク入力インターフェースブロック)は、PMUに送られる
パケットのそれぞれについて、256個までの優先順位を割り当てることができ
る。QSは、この256個の優先順位を、2にマッピングし、キュー番号Fi
rstInputQueueからFirstInputQueue+2−1ま
でを使用して、着信パケットのpacketPageおよびdeviceId情
報を挿入する。
【0176】 外部装置が、同一フローのすべてのパケットについて、第3バイトの同一の5
MSBビットを送信することが期待される。そうでないと、パケットが同一のフ
ロー内で順序はずれで外部装置に送り返される可能性があるので、ネットワーク
の性能の低下が発生する可能性がある。ソフトウェアは、外部装置(またはSI
U)が第3バイトでパケットの優先順位の情報を提供できるか否かを知っている
【0177】 packetPage pがキューqに挿入される時に、使用されるエントリ
のPacketPageフィールドにpがセットされ、Validフィールドに
「1」がセットされる。他のフィールドの値は、挿入のソースに依存する。ソー
スがソフトウェア(SPU)である場合には、Completedが「0」であ
り、NextQueueがSPUによって供給され、DeviceIdが「0」
であり、Activeが「1」であり、CRCtypeが0であり、KeepS
paceが0であり、Probedが0である。
【0178】 ソースがQSである場合には、残りのフィールドに、挿入されるpacket
Pageが現在存在するエントリでそれらのフィールドが有する値が割り当てら
れる。ソースがPMMUである場合には、Completedが「0」であり、
NextQueueがqであり、DeviceIdが、パケットをXCalib
erに送信した外部装置の装置識別子であり、Activeが「0」であり、C
RCtypeが0であり、KeepSpaceが0であり、Probedが0で
ある。
【0179】 監視論理 QSは、すべてのキューのエントリを監視して、ある状態を検出するか、エン
トリを再エンキューする、ダウンロードのためにPMMUにpacketPag
e(および他の情報)を送る、packetPage(および他の情報)をRT
Uに送るなど、対応する動作を実行する。
【0180】 検出のすべてが、単一サイクルで行われ、並列に行われる。
【0181】 エントリの再エンキュー QSは、キューの先頭のエンティティのすべてを監視して、パケットを別のキ
ューに移動する必要があるかどうかを判定する。再エンキューされる候補エント
リは、有効であり、キューの先頭にあり、パケットが現在存在するキューのキュ
ー番号と異なるNextQueueフィールド値を有する必要がある。
【0182】 再エンキューの複数の候補が存在する場合には、選択されるエントリは、本明
細書で後で説明する優先順位方式に従って選択される。
【0183】 ダウンロードのためのエントリのPMMUへの送出 QSは、キューの先頭のエンティティのすべてを監視して、パケットがパケッ
トメモリからのダウンロードを必要としているかどうかを判定する。この動作が
、図11の1102である。XCaliberから送出される候補エントリは、
有効であり、キューの先頭にあり、パケットが現在存在するキューのキュー番号
と同一のNextQueueフィールド値を有し、Completedフラグを
アサートされ、Activeフラグをデアサートされている必要がある。さらに
、QSは、ダウンロードコマンドをQSに発行したものと同一のコンテキストか
らの保留中の読取または書込が存在しないことを保証する必要がある。
【0184】 ダウンロードの候補が複数存在する場合には、選択されるエントリは、本明細
書で後で説明する優先順位方式に従って選択される。
【0185】 選択された候補は、PMMUがそれを要求した場合に、PMMUに送られるの
みである。候補が要求された場合に、選択されたpacketPageが、それ
が抽出されたクラスタ番号、末尾増大/縮小、アウトバウンド装置識別子ビット
、CRCtypeおよびKeepSpaceビットと共に、PMMUに送られる
【0186】 図12は、Deviceidフィールドのコーディングを示す表である。De
viceidフィールドが0である場合には、アウトバウンドデバイス識別子は
、インバウンドデバイス識別子と同一であり、後は表に示された通りである。
【0187】 エントリがPMMUに送られる時に、そのエントリは、「送信中」としてマー
クされ、キューイングシステムから抽出される(その結果、そのエントリが、送
信の準備ができている他のパケットをブロックせず、異なるアウトバウンド装置
識別子に進むようになる)。しかし、エントリは、対応するパケットが完全にダ
ウンロードされたことをPMMUが通知するまで、無効化されない。したがって
、このエントリに対するプローブタイプの動作は、有効としてすなわち、まだX
Caliberプロセッサ内に存在するものとして扱われる。
【0188】 リインカーネーション効果 上で説明したように、QSは、0から255まで(合計256個の数)のpa
cketNumberを、XCaliberに到達し、キューに挿入されるパケ
ットのそれぞれに割り当てる。これは、パケット識別子が挿入される256エン
トリのテーブルを維持することによって行われる。この時点で、パケット識別子
のValidビットもアサートされる。XCaliberによって処理されるパ
ケットの総数は256をはるかに超えるので、パケット番号は、もちろん、XC
aliberプロセッサの動作全体を通じて再利用されなければならない。した
がって、パケットがダウンロードのために選択される時に、ある時点で、pac
ketNumberが、もはや進行中の有効なパケットに関連しなくなり、その
番号を再利用できるようになる。
【0189】 パケットは、XCaliber内で有効である限り、当初に割り当てられたp
acketNumberに関連する。packetNumberを再利用に使用
可能にする通常の形は、処理の前にコンテキストにプリロードするためにパケッ
トがQSによってRTUに送られることである。その後、パケットが、完全に処
理され、完全にメモリからダウンロードされた時に、packetNumber
を関連付けるテーブル内のパケット識別子が、Validビットを操作すること
によって無効とマークされる(図11および付随するテキストを参照されたい)
【0190】 通常の動作では、これまでに説明したシステムが、完全に妥当である。しかし
、発明人は、ActiveビットおよびValidビットが、ストリームの間の
競合を回避するのに十分でない状況があることを発見した。これらの状況の1つ
が、時々ガーベジコレクションと称するクリーンアップ処理に関係し、この処理
では、ソフトウェアが、すべてのパケット番号を監視して、パケットがシステム
内に長くとどまりすぎている時を判定し、ある条件の下でパケットを破棄し、新
たに到着するパケットのためにシステム内のスペースを解放する。
【0191】 ガーベジコレクションなどのこれらの特殊な動作では、ストリームが、パケッ
トの所有権を得なければならず、ストリームがパケットに対して実行する動作が
、実際に正しいパケットに対して実行されることを保証しなければならない。し
かし、ソフトウェアがパケットをプローブする時に、処置を講ずる前に、複数の
ストリームが動作しているので、また、システムの通常の動作によって、パケッ
トがたとえばRTUにも送られる可能性があるので、これらの特殊な動作で、プ
ローブされるパケットが、特殊な動作が完了する前に、別のストリームによって
選択され、影響を受けることが、完全に可能である。パケットは、たとえば、R
TUに送られ、処理され、ダウンロードされる可能性があり、新しいパケットが
、そのpacketNumberに割り当てられる可能性があり、その新しいパ
ケットが、当初のパケットと正確に同一のpacketPageに保管される可
能性さえある。ガーベジコレクション処理でのパケットの破棄などの特殊な動作
が、元々破棄のために選択されたパケットではなく、新しい完全に有効なパケッ
トを破棄する危険性がある。これは、もちろん、トラブルにつながる可能性があ
る、潜在的に多数のそのような特殊な動作の1つにすぎない。
【0192】 上記を検討して、発明人は、時間上の2つの異なる絶対点、たとえば時刻sお
よび時刻rを与えられて、時刻sでの有効なpacketNumberと時刻r
での同一のpacketNumberが、同一のパケットに関連付けられている
ことを保証する機構を提供した。単純なプローブ動作は、十分でない。というの
は、sの後でrの前のある時に関連するパケットがダウンロードされ、もう1つ
の(異なる)パケットが到着し、前のパケットと正確に同一のメモリ位置に保管
され、ダウンロードされたパケットと同一のpacketNumberを割り当
てられている可能性があるからである。
【0193】 異なる時刻での特定のパケットとのpacketNumberの関連を保証す
るためにXCaliberで実装された機構には、パケット識別子内のプローブ
ビットが含まれる。ガーベジコレクションなどの処理を実行する第1のストリー
ムが、パケットをプローブする時に、Probe&Setと称する特殊なコマン
ドが使用される。Probe&Setは、プローブビットをセット(アサート)
し、Validビット、Activeビット、packetPageアドレス、
およびプローブビットの古い値などの通常の情報が、返される。第1ストリーム
は、その後、本明細書の他所で説明するConditional Activa
te命令を実行して、パケットの所有権を得る。また、キューイングシステムは
、このConditional Activate命令を実行する時に、パケッ
トのアクティブビットをアサートする。第1ストリームによってプローブビット
がセットされた後のどの時刻であっても、第2ストリームが、後に同一のパケッ
トをプローブする時に、アサートされたプローブビットによって、第1ストリー
ムがこのパケットの制御を得ようとしていることが示される。第2ストリームは
、このパケットをそのままにしておくことを知る。このプローブビットは、パケ
ットがXCaliberプロセッサに入り、新しい(有効でない)番号が割り当
てられる時にデアサートされる。
【0194】 RTUへのエントリの送出 RTUは、SPU内でXCaliberプロセッサに対してバックグラウンド
で、到着し、パケットメモリに完全に保管されたパケットのヘッダのいくつかの
フィールドをアップロードする。このバックグラウンドでのパケットのヘッダの
アップロードは、同一のパケットに関して複数回行われる場合がある。QSは、
どのパケットをRTUに送る必要があるかを記憶する。この選択動作が、図11
に1104として図示されている。
【0195】 RTUは、パケットをプリロードするコンテキストを選択する時に、かならず
、対応するパケットがもはやインアクティブパケットでないことをQSに通知す
る。QSは、そのパケットをアクティブとしてマークする。
【0196】 RTUに送られる候補エントリは、有効であり、ActiveビットおよびC
ompletedビットをデアサートされた最も古いエントリであり、パケット
が現在存在するキューのキュー番号と同一のNextQueueフィールド値を
有し、候補が存在するキュー内のある個数を超えないパケットがSPU内で現在
処理されつつあるという制限に従う必要がる。この制限に関するさらなる詳細は
、本明細書で後に提供する。エントリがプリロードのためにRTUに送られる時
に、対応するActiveビットがアサートされる。
【0197】 キューは、既にRTUに提示されたパケット識別子を有するエントリと、まだ
提示されていないエントリを有することができる。すべてのキューが、RTUに
送られる必要がある、そのキュー内で最も古いエントリをポイントするポインタ
(NextPacketForRTU)を有する。キュー内では、パケット識別
子が、キューに挿入されたのと同じ順序で、RTUに送られる。
【0198】 RTUに送られる候補パケット識別子は、キューに関連する異なるNextP
acketForRTUによってポイントされる識別子である。しかし、これら
のポインタのいくつかが、存在しないエントリをポイントする場合がある(たと
えば、キューが空の時、またはすべてのエントリが既にRTUに送られている時
)。キューのそれぞれの状態を記憶するハードウェアが、これらの状態を判定す
る。NextPacketForRTUポインタによってポイントされる有効な
エントリであることのほかに、候補エントリは、現在RTU内で別のエントリに
よって使用されていないRTU優先順位(本明細書で後に説明する)を関連付け
られることが必要である。複数の候補が存在する場合には、選択されるエントリ
は、本明細書で後に説明する優先順位方式に従って選択される。
【0199】 エントリがダウンロードのためにPMMUに送られる場合と異なって、RTU
に送られるエントリは、そのキューから抽出されない。そうではなく、対応する
NextPacketForRTUポインタが更新され、対応するActive
ビットがアサートされる。
【0200】 QSは、エントリが有効な候補であり、RTUテーブル内の対応するスロット
が空いている限り、RTUブロック内の8エントリテーブルにエントリを送る。
RTUは、RTUがSPUに対して生成できる割込みのそれぞれについて1つの
、多くとも8つのエントリを受け入れる。
【0201】 QSは、RTUに送りたいエントリ(それが存在するキュー番号によって与え
られる)の優先順位を、RTUによって処理される8つの優先順位(RTU優先
順位)の1つにマッピングする。このマッピングを、図13の表に示すが、この
マッピングは、異なるキューがグループ化されるクラスタの数(構成レジスタP
riorityClusters)およびエントリが存在するキュー番号に依存
する。
【0202】 RTUは、RTU優先順位ごとに1つの8エントリのテーブルを有する。各エ
ントリには、パケット識別子(packetPage、packetNumbe
r、キュー番号)と、それを検証するValidビットが含まれる。RTUは、
そのテーブルのエントリpの対応するValidビットがデアサートされている
場合に、必ずRTU優先順位pのパケット識別子を受け入れる。RTUが、QS
からRTU優先順位pのパケット識別子を受け取る時に、テーブルのエントリp
のValidビットがアサートされ、パケット識別子が保管される。その時に、
QSが、対応するNextPacketForRTUポインタを更新することが
できる。
【0203】 キュー内で送られるパケット数の制限 ソフトウェアが、キューごとに、アクティブにすることができる(すなわち、
SPU内のストリームのいずれかによって処理される)パケットの数を制限する
ことができる。これは、MaxActivePacketsオンザフライ構成レ
ジスタを介して達成され、このレジスタでは、キューごとに、そのキュー内でス
トリームによって処理されることができるパケットの最大個数に対応する、1と
256の間の値が指定される。
【0204】 QSは、キューqの現在アクティブなパケットの数を記憶する、キューqごと
のカウンタを維持する。このカウンタは、パケット識別子がキューqからRTU
に送られる時、Move動作によってパケットがキューqに移動される時、また
はInsert動作によってパケット識別子がキューqに挿入される時に、必ず
増分され、下記の動作のいずれかがキューq内の有効なエントリ内で実行される
時に減分される:Complete動作、Extract動作、エントリを異な
るキューに移動するMove動作、またはエントリをいずれかのキュー(同一の
キューを含む)に移動するMoveAndReactivate動作。Move
、MoveAndReactivate、Insert、Complete、お
よびExtractは、本明細書の他所で説明する動作である。
【0205】 キューqのカウンタの値が、MaxActivePackets構成レジスタ
で指定された対応する最大値以上である時には、必ず、キューqのエントリが、
RTUへの送出を許可されない。カウンタの値が、より大きくなる可能性がある
のは、ソフトウェアが、変更の時点でカウンタ値より小さい値にキューのMax
ActivePackets構成レジスタを変更することができ、キューが移動
または挿入のバーストを受け取ることができるからである。
【0206】 QSに対するソフトウェア動作 ソフトウェアは、QSに影響する複数の命令を実行する。下記は、XStre
amパケット命令のSPUコアによるディスパッチの結果としてQSに対して生
成される可能性があるすべての命令のリストである。
【0207】 Insert(p、q):packetPage pを、キューqに挿入する
。挿入が成功であった場合には、SPUに「1」が返され、そうでない場合には
「0」が返される。挿入は、使用可能なエントリがない時(すなわち、256個
のエントリのすべてが有効である時)に限って不成功になる。
【0208】 Move(n、q):qに対して、packetNumber nが存在する
エントリのNextQueueフィールドをアサートする。
【0209】 MoveAndReactivate(w、q):packetNumber
nが存在するエントリのNextQueueフィールドをqにアサートし、A
ctiveビットをデアサートする。
【0210】 Complete(n、d、e):packetNumber nが存在する
エントリのCompletedフラグをアサートし、Deltaフィールドをd
にアサートし、deviceIdフィールドをeにアサートする。Active
ビットをデアサートし、KeepSpaceビットをデアサートする。
【0211】 CompleteAndKeepSpace(n、d、e):Complet
e()と同一であるが、KeepSpaceビットをアサートする。
【0212】 Extract(n):packetNumber nが存在するエントリの
Validフラグをリセットする。
【0213】 Replace(n、p):packetNumber nが存在するエント
リのPacketPageフィールドにpacketPage pをセットする
【0214】 Probe(n):packetNumber nがQS内に存在するか否か
の情報をソフトウェアに返す。存在する場合には、PacketPage、Co
mpleted、NextQueue、DeviceId、CRCtype、A
ctive、KeepSpace、およびProbedフィールドを返す。
【0215】 ConditionalActivate(n):packetNumber
nが有効であり、Probedがアサートされ、Activeがデアサートさ
れ、パケットが送信中でない場合に、「1」を返す。この場合に、Active
ビットがアサートされる。
【0216】 QSは、潜在的にアクティブにされているパケットのパケット識別子が、RT
Uテーブルにあり、プリロードを待っている、またはプリロードされているかど
うかを判定するためにRTUに照会する。パケット識別子がテーブル内にある場
合に、RTUがそれを無効化する。キューが、たまたは同時にそのパケットのプ
リロードを開始する場合には、QSはそのパケットをアクティブにしない。
【0217】 ProbeAndSet(n):Probe()と同一であるが、Probe
dビットをアサートする(返されるProbedビットは、古いProbedビ
ットである)。
【0218】 Probe(q):キューq内のサイズ(すなわち、有効なエントリの数)を
提供する。
【0219】 無効な(すなわち存在しない)packetNumberに対するMove(
)、MoveAndReactivate()、Complete()、Com
pleteAndKeepSpace()、Extract()、およびRep
lace()は、無視される(割込みが生成されない)。
【0220】 Activeビットがデアサートされている有効なpacketNumber
に対するMove、MoveAndReactivate、Complete、
CompleteAndKeepSpace、Extract、およびRepl
aceは、生じてはならない(ソフトウェアによって保証される)。生じた場合
には、結果は未定義である。Insert、Probe、ProbeAndSe
t、およびConditionalActivate動作だけが、SPUに応答
する。
【0221】 ソフトウェアが、同一のパケットに影響するmove様動作をPMUに発行す
る場合に、結果は未定義である。というのは、移動がソフトウェアが指定した通
りに発生するという保証がないからである。
【0222】 図14は、有効なパケットのActiveビット、Completedビット
、およびProbedビットの許容される組合せを示す表である。
【0223】 基本動作 ソフトウェア動作および監視論理をサポートするために、QSは、下記の基本
動作をサポートする。 1.エントリを、キューの末尾にエンキューする。 2.エントリを、それが存在するキューからデキューする。 3.エントリを、それが現在存在するキューの先頭から別のキューの末尾に移
動する。 4.キューのエントリをRTUに供給する。 5.キューのサイズを供給する。 6.packetNumberに関連するフィールドのいずれかを更新する。
【0224】 上の動作1、2、4、および6(同時に異なるパケットに適用される)は、本
発明の好ましい実施形態では4サイクルで完了する。これは、1サイクルあたり
1命令のスループットを暗示する。
【0225】 複数の動作が、同時に実行を開始される可能性がある時に、なんらかの優先順
位付けが必要である。最高から最低の優先順位への順で、これらのイベントは、
PMMUからの挿入、エントリのデキュー、あるキューから別のキューへのエン
トリの移動、プリロードのためにRTUへのエントリの送出、またはソフトウェ
ア動作である。ソフトウェア動作の間の優先順位付けは、ソフトウェア動作が必
ず順番に実行されるので、設計によって提供される。
【0226】 早期QS満杯検出 PMUは、ASIC(図2の要素203など)とXCaliberプロセッサ
の間のフロー制御を助ける機構を実装する。この機構の一部は、QSが満杯にな
りつつあることを検出することであり、この場合には、SPUに対してLess
ThanXpacketIdEntriesInt割込みが生成される。ソフト
ウェアは、0より大きい数zを指定する(IntIfLessThanXpac
ketIdEntries構成レジスタで)ことによって、この割込みをイネー
ブルすることができる。割込みは、256−y<zの時に生成され、このyは、
現在XCaliber内で処理中のパケットの総数である。z=0の時には、割
込みは絶対に発生しない。
【0227】 レジスタ転送ユニット(RTU) RTUブロックの目標は、使用可能なコンテキストに、XCaliber内で
生きているパケットの情報をプリロードすることである。この情報は、パケット
のpacketPageおよびpacketNumberと、そのヘッダのいく
つかのフィールドである。選択されたコンテキストは、プリロードの時点でPM
Uによって所有され、プリロードされるや否や、SPUに解放される。したがっ
て、SPUは、ヘッダ情報をロードする、コストの高いロード動作を実行する必
要がなく、したがって、パケット処理の総合的な待ち時間が減らされる。
【0228】 RTUは、QSからパケット識別子(packetPage、packetN
umber)と、パケットがそこから来たキューの番号を)QSから受け取る。
この識別子は、部分的にはネットワーク入力インターフェースを介してXCal
iberに新しいパケットが到着した結果としてPMMUによって作成され(p
acketPage)、部分的にはpacketPageおよびデバイス識別子
がエンキューされる時にQSによって作成される(packetNumber)
【0229】 RTUのもう1つの機能が、SPUコアによってディスパッチされたマスクド
ロード/ストア命令を実行することである。というのは、マスクドロード/スト
ア命令を実行する論理が、プリロードを実行する論理に類似するからである。し
たがって、両方の動作についてハードウェアを共用することができる。この理由
から、RTUは、1時に両方ではなく、マスクドロード/ストア命令またはプリ
ロードのいずれかを実行する。マスクドロード/ストア命令は、コマンドキュー
(CU)ブロックを介してRTUに到達する。
【0230】 コンテキストの状態 コンテキストは、PMU所有またはSPU所有の2つの状態の1つになること
ができる。コンテキストの所有権は、現在の所有者がコンテキストを解放する時
に変更される。PMUは、3つの場合にSPUにコンテキストを解放する。第1
に、RTUが、コンテキストへのパケットの情報のプリロードを終了した時であ
る。第2に、SPUがRTUにコンテキストを要求する時に、PMUがSPUに
コンテキストを解放する。この場合には、RTUが、解放できるコンテキストを
有する場合に、そのコンテキストを解放する。第3に、8つのすべてのコンテキ
ストが、PMU所有である。プリロードされているコンテキストは、PMU所有
コンテキストとみなされることに留意されたい。
【0231】 SPUは、XStream RELEASE命令をディスパッチする時に、R
TUにコンテキストを解放する。
【0232】 コンテキストのプリロード ブート時に、PMUが、現在の例で説明される本発明の実施形態で使用可能な
8つのコンテキストのうちの7つを所有し、SPUが、1つのコンテキストを所
有する。PMUは、それが所有するコンテキストにパケットの情報をプリロード
することだけができる。コンテキストへのパケットの情報のプリロードの処理は
、2ステップに分割することができる。パケットが開始されるアドレス(パケッ
トメモリアドレススペース内のオフセット)をロードする第1フェーズ。このオ
フセットは、パケットのバイト単位のサイズをコーディングする2バイト値の第
1バイトをポイントする。パケットが、タイムスタンプされ、HeaderGr
owthOffsetが、0でない場合には、タイムスタンプ値が、オフセット
−4に配置される。オフセットアドレスは、(packetPage<<8)|
(HeaderGrowthOffset<<4)として計算される。このオフ
セットは、選択されたコンテキストのレジスタ番号StartLoadingR
egisterにロードされる。StartLoadingRegisterは
、ブート時構成レジスタである。packetNumber値は、レジスタ番号
StartLoadingRegister+1にロードされる。
【0233】 第2フェーズは、パケットヘッダをロードすることである。パケットヘッダは
、レジスタStartLoadingRegister+2、StartLoa
dingRegister+3、…(GPRレジスタが存在する限り、必要なだ
けいくつでも)を使用してロードされる。PatternMatchingTa
ble[q](qは、パケットに関連するキュー番号である)マスクによって、
パケットのヘッダをコンテキストのGPRレジスタにロードする方法が指定され
る。PatternMatchingTableは、マスクを含む、オンザフラ
イ構成レジスタである。ヘッダデータを得るために、RTUは、必要な数のパケ
ットデータの16バイトラインをパケットメモリに読み込むようにSIUに要求
する。RTUは、パケットメモリから16バイトライン(ローカルまたは外部の
いずれか)を受け取る時に、この動作を制御するパターンマスクを使用して、コ
ンテキストにロードすることが望まれるバイトを選択する。
【0234】 直前で説明した、パケットヘッダをロードするステップは、オンザフライPr
eloadMaskNumber構成レジスタを介して、キューごとに、ソフト
ウェアによってディスエーブルすることができる。このレジスタでは、QS内の
可能な32個のキューのそれぞれについて、PatternMatchingT
able内のどのマスク(0から23まで)が、プリロードに使用されることに
なるかを指定する。24と31の間の値が、この構成レジスタ内で指定される場
合には、それは、RTUによって、実行しないものとして解釈される。
【0235】 RTUは、コンテキストのGPRレジスタにロードするだけである。必要なC
P0レジスタは、SPUによって初期化される。ロードされるコンテキストは、
PMU所有コンテキストなので、RTUは、ロードを実行するために、そのコン
テキストへの使用可能なすべての書込ポート(この実施形態では4つ)を有する
【0236】 プリロード動作が開始される時には、必ず、RTUが、専用インターフェース
を介して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所有コンテキストがある場合)。
【0237】 パターン照合テーブル 図15に、サブマスクの組を含むオンザフライ構成レジスタであるパターン照
合テーブルを示す。RTUは、コンテキストのプリロードに、このテーブル内の
サブマスク(0から23まで)のどれでも使用することができる。サブマスクを
、複数のサブマスクを含むより大きいマスクにグループ化することもできる。
【0238】 図16に、マスクのフォーマットを示す。マスクは、図示のように、それぞれ
32×2ビットのサブマスクの変数番号(1から8まで)である。すべてのサブ
マスクが、複合マスクが対応するサブマスクで終るのか、次のサブマスクに継続
するのかを示す、関連付けられたビット(EndOfMask)を有する。サブ
マスクの最大の総数は32であり、そのうちの24個(サブマスクインデックス
0から23)がグローバルであり、これは、SPU内のすべてのストリームが、
それを使用でき更新できることを意味し、8個が、ストリームごとのサブマスク
である。ストリームごとのサブマスクは、EndOfMaskビットを有しない
が、これは、ストリームごとのサブマスクのグループ化が許容されないからであ
る。
【0239】 各サブマスクの2つの32ビットベクトルを、SelectVectorおよ
びRegisterVectorと呼ぶ。SelectVectorは、パケッ
トのヘッダからのどのバイトが、コンテキストに保管されるかを示す。Regi
sterVectorは、SelectVectorによって選択されたバイト
を保管し続けるためにコンテキスト内の次の連続するレジスタに切り替える時を
示す。バイトは、レジスタ内で必ず右寄せされる。
【0240】 図17に、図16のマスクを使用するプリロード動作の例を示す。Selec
tVectorでアサートされたビットによって、ヘッダの対応するバイトがレ
ジスタに保管されることが示される。たとえば、ヘッダのバイト0、1、および
7が、それぞれGPR番号StartLoadingRegister+2のバ
イト0、1、および2にロードされる(すなわち、ヘッダバイトは、レジスタに
ロードされる時に右寄せされる)。RegisterVectorでアサートさ
れたビットは、現在のGPRレジスタにそれ以上のヘッダバイトがロードされな
いことと、次のヘッダバイトがある場合に、それが次の(連続する)GPRレジ
スタにロードされることを示す。この例では、ヘッダのバイト12および13が
、GPR番号StartLoadingRegister+3にロードされる。
【0241】 PMU所有コンテキストの選択 PMUコアには、合計8つの機能ユニットがある。しかし、複雑さと性能のト
レードオフに起因して、ストリーム(コンテキスト)は、4つの機能ユニットの
固定された組に命令を発行することだけができる。
【0242】 RTUは、所与の時に複数のコンテキストを所有することができる。したがっ
て、プリロードが実行される時またはコンテキストをSPUに供給する時に、コ
ンテキストの1つを選択する論理が設けられる。この論理は、PMUコア内の異
なるストリーム(コンテキスト)が、異なる機能ユニットに潜在的にどのように
命令をディスパッチできるかに基づいて定義され、この論理の目標は、SPU内
の機能ユニットが潜在的に受け取ることができる動作のバランスをとることであ
る。
【0243】 選択論理は、入力として、コンテキストごとに1ビットの、そのコンテキスト
がPMU所有またSPU所有のどちらであるかを示す8ビットをとる。この論理
は、選択が可能なPMU所有コンテキストを出力する。
【表1】
【0244】 選択論理は、前の254個の番号のリストを用いて指定される。数のそれぞれ
が、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コア内の機能ユニットの使用のバ
ランスをとるための最適の選択ではない。
【0245】 使用可能なコンテキストがない時の割込み RTUは、NewPacketIdTable)と呼ばれる8エントリのテー
ブルを有する。このテーブルのエントリpには、pのRTU優先順位を有するパ
ケット識別子(packetPage、packetNumber、およびキュ
ー番号)と、その識別子を検証するValidビットが含まれる。RTUは、プ
リローディングまたはマスクドロード/ストアの実行でビジーでない時に、この
テーブルから、最高のRTU優先順位を有する有効な識別子を得る。それが存在
し、少なくとも1つのPMU所有コンテキストがある場合に、RTUは、PMU
所有コンテキストのプリロードを開始し、テーブル内のValidビットをリセ
ットする。
【0246】 PMU所有コンテキストがない場合には、RTUは、コンテキストがSPUに
よって解放されるまで、アイドルになる(保留中のソフトウェア動作がないと仮
定して)。コンテキストが解放された時点で、RTUは、やはり、NewPac
ketIdTableから最高の有効なRTU優先順位の識別子を得る(RTU
がSPUによるコンテキストの解放を待っている間に、最高のRTU優先順位を
有する新しい識別子が、QSによって送られた可能性があるので)。Valid
ビットがリセットされ、パケット情報が、使用可能なコンテキストへのプリロー
ドを開始される。この時点で、RTUは、QSからRTU優先順位pのパケット
を受け入れることができる。
【0247】 RTU優先順位pを有する識別子が、QSによってRTUに送られる時に、そ
の識別子が、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がデアサートされている場合
には、生成されない。
【0248】 SPUは、割込みを受け取った時に、RTUが新しいパケットのpacket
Page、packetNumber、およびヘッダ情報をプリロードできるよ
うにするために、それが所有するコンテキストを解放するか否かを決定する。
【0249】 RTUは、PacketAvailableButNoContextPri
orityPInt割込みを生成する時に、数サイクル後に、SPUによって解
放されたコンテキストを受け取る場合がある。しかし、このコンテキストは、た
とえばストリームの1つがパケットの処理を終了した時に解放されたものである
可能性がある。これは、PacketAvailableButNoConte
xtPriorityPInt割込みの割り込みサービスルーチンが終了する前
に発生する可能性がある。したがって、コンテキストが、ISR完了に起因して
解放される時に、割込みを引き起こしたプリロードされたパケットが、すでに、
SPU内の別のストリームによって最初に解放されたコンテキストを使用してい
る可能性がある。したがって、割込みに起因して解放されるコンテキストが、別
の(おそらく将来の)パケットプリロードに使用される。NewPacketI
dTable内の他のエントリが有効でない場合には、コンテキストは、識別子
がRTUに到達するか、SPRがRTUにコンテキストを要求するまで、使用さ
れ、そのままになる。
【0250】 コンテキストがSPU所有になり、RTUが保留中のプリロードを有する時に
は、必ず、RTUが、最高優先順位の保留中のプリロード(NewPacket
Table内の最高の有効なエントリに対応する)を選択し、プリロードを開始
する。このレベルに関連するPacketAvailableButNoCon
textPriorityint割込みがアサートされた場合には、プリロード
が開始される時に、その割込みがデアサートされる。
【0251】 RTUでのソフトウェア動作 ソフトウェアは、RTUに影響する複数の命令を実行する。下記は、SPUコ
アによるXStreamパケット命令のディスパッチの結果としてRTUに対し
て生成される可能性があるすべての動作のリストである。動作は、コマンドキュ
ー(CU)を介して、命令を発行したストリームに関連するコンテキスト番号と
共にRTUに到着する。
【0252】 1.Release(c):コンテキスト番号cが、PMU所有になる。
【0253】 2.GetContext:RTUが、PMU所有コンテキスト番号の番号を
返す。このコンテキストは、存在する場合に、SPU所有になり、成功フラグが
アサートされて返される。存在しない場合には、デアサートされて返され、この
場合には、コンテキスト番号は無意味である。
【0254】 3.MaskedLoad(r、a、m)、MaskedStore(r、a
、m):SPUコアが、特殊な機能ユニットとしてRTUを使用して、マスクド
ロード/ストア命令を実行する。というのは、マスクドロード/ストア命令を実
行する論理が、プリロードを実行する論理に似ているからである。したがって、
両方の動作についてハードウェアを共用することができる。この理由から、RT
Uは、1時に、両方ではなく、マスクドロード/ストアまたはプリロードのいず
れかを実行する。マスクドロードまたはマスクドストアのいずれかについて、R
TUは、下記のパラメータを受け取る。 (a)マスクドロード/ストア動作によって使用される、PatternMa
tchingTable内の最初のサブマスクのインデックスに対応するマスク
番号m。 (b)マスクの適用が開始される(すべての)メモリ内の最初のバイトをポイ
ントする36ビットアドレスa。 (c)マスクドロード/ストア動作に用いられる最初のレジスタに対応するレ
ジスタ番号r(供給されたコンテキスト番号内の)。同一のコンテキスト番号内
の後続のレジスタが、選択されたマスクに従って使用される。
【0255】 マスクドロード/ストア動作に関して、マスクは、メモリの任意のバイトで適
用を開始されることができるが、プリロード動作で(マスクドロード様動作)は
、マスクが、必ず16バイト境界アドレスから適用される。というのは、ネット
ワーク入力インターフェースから来るパケットデータが、必ず、パケットメモリ
内で16バイトライン内のLSBバイトから保管されるからである。
【0256】 MaskedLoad動作、MaskedStore動作、およびGetCo
ntext動作は、RTUとSPUの間の専用インターフェースを介して、完了
した時をSPUに通信する。RTUは、ソフトウェア動作にパケットプリロード
より高い優先順位を与える。プリロードでは、パケットメモリにアクセスするが
、マスクドロード/ストアでは、キャッシュ可能またはライトスルーでない限り
、システム内のどのメモリにもアクセスすることができる。そうでない場合には
、結果は未定義である。
【0257】 RTUは、前のマスクドロード/ストアコマンドを実行している間にGetC
ontextコマンドまたはReleaseコマンドを実行することができる。
【0258】 プログラミングモデル ソフトウェアは、ブート時またはオンザフライのいずれかで、PMUの特徴の
いくつかを構成することができる。ブート時のみに構成可能な特徴のすべて、お
よびオンザフライで構成可能な特徴の一部が、SPUが単一ストリームモードで
動作している時に限って発生しなければならない。そうでない場合には、結果は
未定義である。PMUは、SPUがどのモードで動作しているかを検査しない。
【0259】 ソフトウェアは、所与のパケットについてPMUが維持する情報の一部を更新
することができ、この情報を得ることもできる。これは、別の特許出願の対象で
ある新しいXStreamパケット命令を介して、ソフトウェアによって達成さ
れる。これらの命令は、PMUによって実行される3つの異なるタイプの動作(
動作がPMUのどのブロックすなわち、PMMU、QS、またはRTUのどれに
影響するかに依存する)を作る。これらの動作の一部が、結果をPMUからSP
Uに送り返すことを必要とする。
【0260】 パケットメモリおよび構成スペースは、メモリマップ式である。SIUは、パ
ケットメモリのベースアドレスを用いて構成レジスタ(16MB整列)を維持し
、EPMのベースアドレスを用いて第2の構成レジスタを維持する。ソフトウェ
アは、連続するスペースとしてパケットメモリを見る。しかし、このシステムで
は、パケットメモリのEPM部分を異なるスペースにマッピングすることができ
る。
【0261】 SIUは、PMU構成レジスタスペースのベースを用いて、第3の構成レジス
タも維持する。SPUによって実行されるLPMおよびおよび構成スペースへの
ロード/ストアアクセスのすべてが、SIUを介してPMUに達する。SIUは
、アクセスがどのスペースに属するかを判定し、PMUに、アクセスがLPMま
たはPMU構成スペースのどちらに対するものであるかを知らせる。EPMへの
アクセスは、PMUには透過的である。
【0262】 PMUは、あるイベントが発生した時にSPUに割り込むことができる。ソフ
トウェアは、構成レジスタを介して、これらの割込みのすべてをディスエーブル
することができる。
【0263】 構成レジスタ PMUの構成レジスタは、XCaliberアドレススペースのPMU構成ス
ペース内にある。このスペースのベースアドレスは、SIUによって維持され、
PMUによって可視にする必要はない。SIUは、SPUによって実行される読
取/書込アクセスがこのスペースに属する時を、書込アクセスの際に特定のレジ
スタを更新するのに必要な情報と共に、信号を用いてPMUに通知する。
【0264】 PMU構成レジスタには、ブート時にのみ構成することができるものと、オン
ザフライで構成することができるものがある。すべてのブート時構成レジスタお
よび一部のオンザフライ構成レジスタには、単一ストリームモードでアクセスす
る必要がある。ブート時構成レジスタは、PMUがリセットモードである場合に
のみ更新されなければならない。そうでない場合には、結果は未定義である。P
MUは、単一ストリームモード構成レジスタが更新される時に、SPUが実際に
単一ストリームモードであるかどうかを検査しない。すべての構成レジスタが、
リセットシーケンスの後にデフォルト値を有する。
【0265】 この実施形態では、4KBのXCaliberアドレススペースが、PMU構
成スペースに割り振られる。XCaliberのPMU内では、これらの構成レ
ジスタの一部が、使用されないか、まばらに使用される(すなわち、32ビット
構成レジスタの一部のビットだけが意味を持つ)のいずれかである。PMU構成
スペース内の定義されていないビットは、将来のPMU世代のために予約されて
いる。ソフトウェアは、これらの予約済みビットを読み取るか書き込むことがで
きるが、その内容は、完全に決定的ではあるが、未定義である。
【0266】 図18に、論理的に32ビットワードに分割される、PMU構成スペースを示
す。各ワードまたはワードの組に、構成レジスタが含まれる。
【0267】 図19aおよび19bは、異なるPMU構成レジスタの、構成スペースの異な
るワードへのマッピングを示す表の2つの部分である。各構成レジスタのブロッ
ク所有者も、この表に示されている。
【0268】 下記は、この特定の実施形態のすべての構成レジスタと、説明およびデフォル
ト値(PMUリセット後の)のリストである。構成レジスタのそれぞれについて
、ビット幅を括弧内に示す。特に指定されない限り、構成レジスタの値は、構成
スペース内の対応するワード内で右寄せされる。
【0269】 ブート時のみ構成レジスタ 1.Log2InputQueues(5) (a)デフォルト値:0 (b)説明:入力キューとして使用されるQS内のキューの数(すなわち、
PMMUからのpacketPage/deviceIdが挿入されるキューの
数)。
【0270】 2.PriorityClustering(3) (a)デフォルト値:5(32クラスタ) (b)説明:QS内の異なるキューが優先順位クラスタ内でどのようにグル
ープ化されるかを指定する(0:1クラスタ、1:2クラスタ、2:4クラスタ
、…、5:32クラスタ)。
【0271】 3.HeaderGrowthOffset(4) (a)デフォルト値:0 (b)説明:パケットがパケットメモリに保管される時にパケットの前に残
される空の16バイトチャンクの数。最大値は、15個の16バイトチャンク。
最小値は0。
【0272】 4.TailGrowthOffset(6) (a)フォルト値:0 (b)説明:パケットがパケットメモリに保管される時にパケットの後に残
される空の16バイトチャンクの数。最大値は、63個の16バイトチャンク。
最小値は0。
【0273】 5.PacketAvailableButNoContextIntMap
ping(1) (a)デフォルト値:0 (b)説明:PacketAvailableButNoContextP
riorityPInt割込みがイネーブルされる場合のPを指定する。可能な
値は次の通り: (1)0:PはDefaultPacketPriorityレジスタに
よって指定される。 (2)1:PはRTU優先順位である。
【0274】 6.StartLoadingRegister(5) (a)デフォルト値:1 (b)説明:選択されたコンテキストでのパケットヘッダのバックグラウン
ドロードを実行する時にRTUによってロードされる最初のGPRレジスタ番号
を決定する。このレジスタには、値(packetPage<<8)|(Hea
derGrowthOffset<<4)がロードされる。packetNum
berは、次のGPRレジスタにロードされる。それに続くGPRレジスタは、
PatternMatchingMask0マスクがイネーブルされる場合に、
それに続いてパケットヘッダデータをプリロードするのに使用される。
【0275】 7.PreloadMaskNumber(32×5) (a)デフォルト値:すべてのキューについてマスク31(すなわち、ヘッ
ダのプリロードがディスエーブルされる)。 (b)説明:QSの32個の可能なキューのそれぞれについて、Patte
rnMatchingTable内のどのマスクがプリロードに使用されるかを
指定する。
【0276】 図19aから19cに、PreloadMaskNumber構成レジスタの
マッピングを示す。
【0277】 上で説明した構成レジスタは、現在の例のブート時のみ構成レジスタである。
真下に、オンザフライ構成レジスタをリストする。
【0278】 単一ストリーム構成レジスタ 1.OverflowEnable(1) (a)デフォルト値:0 (b)説明:パケットがLPMにおさまらない場合のパケットのオーバーフ
ローをイネーブル/ディスエーブルする。ディスエーブルされた時には、パケッ
トがドロップされる。
【0279】 2.PatternMatchingTable(24×(32×2+1) (a)デフォルト値(24個のエントリのそれぞれについて) (1)SelectVector:すべてのバイトを選択する (2)RegisterVector:レジスタごとに4つの連続するバ
イトを保管する (3)EndOfMask:1 (b)説明:マスクドロード/ストア動作について、どのバイトをどの(連
続する)レジスタにロード/ストアするかを指定する。このテーブルのマスク0
は、RTUによって、バックグラウンドで、使用可能なコンテキストの1つにパ
ケットのヘッダの一部のバイトをプリロードするのに使用される。合計24個の
マスクがある。 (c)注:マスク0は、PMUがフリーズされる時(セクション0を参照さ
れたい)に書き込まれる必要があり、そうでなければ、結果は未定義である。
【0280】 図21に、真上で説明したPatternMatchingTableを示す
【0281】 3.Freeze(1) (a)デフォルト値:1 (b)説明:フリーズモードをイネーブル/ディスエーブルする。
【0282】 4.Reset(1) (a)デフォルト値:0 (b)説明:1がセットされている時に、PMUに強制的にリセットシーケ
ンスを実行させる。PMU内のすべてのパケットデータが失われる。リセットシ
ーケンスの後には、すべての構成レジスタがデフォルト値を有する。
【0283】 複数ストリーム構成レジスタ 1.ClearErrorD(D=0、1) (a)デフォルト値:0 (b)説明:ソフトウェアによって(なんらかのデータを)書き込まれる時
に、装置識別子Dで検出されたパケットエラー状態がクリアされる。
【0284】 2.PacketAvailableButNoContextPriori
tyPintEnable(8)[P=0..7] (a)デフォルト値:0(すべてのレベルについて) (b)説明:PacketAvailableButNoContextP
riorityPint割込みをイネーブル/ディスエーブルする。
【0285】 3.AutomaticPacketDropIntEnable(1) (a)デフォルト値:1 (b)説明:AutomaticPacketDropInt割込みをイネ
ーブル/ディスエーブルする。
【0286】 4.TimeStampEnable(1) (a)デフォルト値:0 (b)説明:パケットのタイムスタンプをイネーブル/ディスエーブルする
。イネーブルされ、HeaderGrowthOffsetが0より大きい時に
、パケットがパケットメモリに書き込まれる前に、4バイトのタイムスタンプが
パケットに付加される。
【0287】 5.PacketErrorIntEnable(1) (a)デフォルト値:0 (b)説明:PacketErrorInt割込みをイネーブル/ディスエ
ーブルする。
【0288】 6.VirtualPageEnable(9×4) (a)デフォルト値:すべてのブロックについてすべての仮想ページがイネ
ーブルされる。 (b)説明:LPMが分割される4つのブロックのそれぞれの仮想ページを
イネーブル/ディスエーブルする。256バイト(LSBビットによってイネー
ブルされる)から64Kバイト(MSBビットによってイネーブルされる)まで
の、その間は2のべきのサイズの、9つまでの仮想ページがある。
【0289】 図22に、VirtualPageEnableレジスタを示す。
【0290】 7.OverflowAddress(24) (a)デフォルト値:0x40000(EPM内の最初のアトミックページ
)。 (b)説明:16MSBビットが、オーバーフローしたパケットが保管され
始めるパケットメモリ内のアトミックページ番号に対応する。8LSBビットは
、「0」にハードワイヤされる(すなわち、ソフトウェアによってこれらのビッ
トにセットされた値が、無視される)。OverflowAddressは、1
6MBパケットメモリ内のオフセットアドレスである。SIUは、このオフセッ
トを、EPM内の対応する物理アドレスに変換する。パケットメモリの最初の1
Kアトミックページが、LPMに対応する。ソフトウェアが、Overflow
Addressの16MSBに0から1023までの値をセットした場合には、
結果は未定義である。パケットがオーバーフローした時に、OverflowA
ddressの16MSBビットが、そのパケットのpacketPageにな
る。SPUは、この構成レジスタに書き込んだ時に、次のパケットオーバーフロ
ーを許容する。
【0291】 8.IntIfNoMoreXsizePages(4) (a)デフォルト値:0xF(すなわち、割込みが絶対に生成されない)。 (b)説明:仮想ページのインデックスを指定する(0:256バイト、1
:512バイト、…、8:64Kバイト、9から15:仮想ページなし)。PM
MUが、すべてのLPMにそのサイズの仮想ページがこれ以上存在しないことを
検出した時に、必ず、SPUに対してNoMoreThanXSizePage
sInt割込みが生成される。
【0292】 9.IntIfLessThanXpacketIdEntries(9) (a)デフォルト値:0 (b)説明:新しいパケット識別子に使用可能なQS内のエントリの最小個
数。使用可能なエントリの実際の個数がこの数未満である場合には、SPUに対
して割込みが生成される。この数が0である場合には、LessThanXPa
cketIdEntriesInt割込みは生成されない。
【0293】 10.DefaultPacketPriority(3) (a)デフォルト値:0 (b)説明:PacketAvailableButNoContextM
appingが0である時の、PacketAvailableButNoCo
ntextInt割込みの優先順位レベルを与える。
【0294】 11.ContextSpecificPatternMatchingMa
sk:(8×(32×2)) (a)デフォルト値: (1)SelectVector:すべてのバイトを選択する (2)RegisterVector:各レジスタに4バイトを保管する
(EndOfMaskは1にハードワイヤされる) (b)説明:マスクドロード/ストア動作について、どのバイトをどの(連
続する)レジスタにロード/ストアするかを指定する。ソフトウェアは、ストリ
ームがその対応するコンテキスト固有マスクだけにアクセスすることを保証する
【0295】 図23に、ContextSpecificPAtternMAtching
マスク構成レジスタを示す。
【0296】 12.FirstInputQueue(5) (a)デフォルト値:0 (b)説明:PMMUからのパケットが挿入されるキューの最小の番号を指
定する。
【0297】 13.SoftwareOwned(4) (a)デフォルト値:0(ソフトウェア所有でない) (b)説明:LPMブロックごとに1ビット。「1」の場合に、そのブロッ
クがソフトウェア所有され、そのブロックのメモリがソフトウェアによって管理
されることを示し、そのブロックのVirtualPageEnableビット
がドントケアであることを示す。
【0298】 14.MaxActivePackets(32×9) (a)デフォルト値:キューのそれぞれについて256。 (b)説明:各キューqについて、SPUによって処理できるキューq内の
パケットの最大個数に対応する、0と256の間の値を指定する。
【0299】 図24に、MaxActivePackets構成レジスタを示す。
【0300】 15.CodeEntryPoint(32×30) (a)デフォルト値:キューのそれぞれについて0。 (b)説明:キューqに関連するCodeEntryPointレジスタの
内容は、キューqに存在するパケットをプリロードされたコンテキストがアクテ
ィブにされる時に、SPUに送られる。
【0301】 16.CodeEntryPointSpecial(30) (a)デフォルト値:0 (b)説明:このレジスタの内容は、すべてのコンテキストがPMU所有に
なるという事実に起因してコンテキストがアクティブにされる時に、SPUに送
られる。
【0302】 17.BypassHooks(9) (a)デフォルト値:0 (b)説明:図32を参照されたい。各ビットが、1つのハードウェアバイ
パスフックをアクティブにする。バイパスフックは、このレジスタの対応するビ
ットがアサートされているサイクルに適用される。
【0303】 18.InternalStateWrite(12) (a)デフォルト値:0 (b)説明:図33を参照されたい。内部PMU状態の1ワードを指定する
。内部状態のワードは、InternalStateRead構成レジスタを読
み取る時に、ソフトウェアから使用可能になる。InternalStateW
rite構成レジスタは、1実施形態では、PMUのデバッグに使用されるのみ
である。
【0304】 読取専用レジスタ 1.SizeOfOverflowedPacket(16) (a)デフォルト値:0 (b)説明:PMUがパケットをオーバーフローしなければならない時に、
必ず、このレジスタに、そのパケットのバイト単位のサイズが含まれる。
【0305】 2.TimeCounter(64) (a)デフォルト値:0 (b)説明:PMUの最後のリセット以降のコアクロックサイクルの数が含
まれる。
【0306】 TimeCounter構成レジスタを、図25に示す。
【0307】 3.StatusRegister(8) (a)デフォルト値:1 (b)説明:PMUの状態が含まれる。このレジスタは、リセットまたはフ
リーズが完了した時を見つける(FreezeビットおよびResetビット)
か、インバウンド装置識別子ごとのパケットエラーのソースを見つける(Err
:1−エラー、0−エラーなし;EPM:1−パケットをEPMにオーバーフロ
ーする間にエラーが発生した、0−パケットをLPMにストアしている間にエラ
ーが発生した;PSM:1−パケットサイズ不一致に起因するエラー、0−バス
エラーに起因するエラー)ために、SPUによってポーリングされる。
【0308】 図26に、StatusRegister構成レジスタを示す。
【0309】 割込み PMUは、あるイベントが発生した時にSPUに割り込むことができる。ソフ
トウェアは、上にリストした構成レジスタの一部を使用して、これらの割込みの
すべてをディスエーブルすることができる。さらに、各ストリームが、これらの
割込みを個別にマスクすることができるが、これは、別の特許出願の対象である
。PMUが生成する割込みのリストは、次の通りである。
【0310】 1.OverflowStartedInt (a)割込み条件:PMMUは、着信パケットをLocalPacketM
emoryに保管できない時に、SIUを介してExternalPacket
Memoryにパケットをオーバーフローする。 (b)ディスエーブル条件:OverflowEnable=「0」
【0311】 2.NoMorePagesOfXSizeInt (a)割込み条件:IntIfNoMoreXSizePagesで示され
たサイズの、使用可能な空き仮想ページがない。 (b)ディスエーブル条件:IntIfNoMoreXSizePages
={10、11、12、13、14、15}。
【0312】 3.LessThanXPacketIdEntriesInt (a)割込み条件:QS内で使用可能なエントリの実際の個数が、IntI
fLessThanXPacketIdEntries未満である。 (b)ディスエーブル条件:IntIfLessThanXPacketI
dEntries=0
【0313】 4.PacketAvailableButNoContextPriori
tyPint(P=0..7) (a)割込み条件:パケットが、QSからRTUによって受け取られたが、
使用可能なコンテキストがない。
【0314】 (b)ディスエーブル条件:PacketAvailableButNoC
ontextPriorityPIntEnable=「0」
【0315】 5.AutomaticPacketDropInt (a)割込み条件:パケットをLPMに保管することができず、Overf
lowEnable=「0」である時。 (b)ディスエーブル条件:AutomaticPacketDropIn
tEnable=「0」
【0316】 6.PacketErrorInt (a)割込み条件:ASICから受け取られるパケットの実際のサイズが、
ASIC固有ヘッダの最初の2バイトの値と一致しない時、またはバスエラーが
発生した時。 (b)ディスエーブル条件:PacketErrorIntEnable=
「0」
【0317】 この実施形態でのSPUへの割込みは、エッジトリガであり、これは、割込み
がサービスされる時に、割込みを引き起こした条件がハードウェアでクリアされ
ることを意味する。これは、割込みがSPUによってサービスされる前に、割込
みを引き起こした条件が複数回発生する可能性があることも意味する。したがっ
て、対応する割込みサービスルーチンは、割込みを引き起こした条件が複数回発
生した場合であっても、1回だけ実行される。
【0318】 この挙動は、いくつかの割込みについて望ましくない。それらの場合について
、割込みがサービスされるまでその条件がさらに発生しないことを保証する特殊
なインターロック機構が、ハードウェアで実装される。
【0319】 特殊なインターロック機構の例が、OverflowStartedInt割
込みおよびPacketAvailableButNoContextPrio
rityPInt割込みの場合である。第1の場合には、パケットがオーバーフ
ローされた時に、ソフトウェアがオンザフライ構成レジスタOverflowA
ddressに新しいアドレスを書き込むまで、他のパケットはオーバーフロー
されない。パケットがオーバーフローされたが、OverflowAddres
sレジスタがまだソフトウェアによって書き込まれていない場合には、LPMに
おさまらないのでそうでなければオーバーフローされるはずの後続のパケットを
、ドロップしなければならない。
【0320】 8つのPacketAvailableButNoContextPrior
ityPInt(P=0..7)割込みについて、PMUアーキテクチャは、暗
黙のうちに、複数の条件(Pのそれぞれについて)が発生しないことを保証する
。これが設計によって保証されるのは、下記の理由による。 (a)PacketAvailableButNoContextPrior
ityPInt割込みは、RTU優先順位Pのパケット識別子がRTUに到達し
た時に限って生成され、 (b)RTU優先順位Pを有するパケット識別子は、多くとも1つだけがRT
Uに存在する。
【0321】 他の割込みは、複数の条件の影響をこうむる可能性がある。したがって、ソフ
トウェアは、条件が発生した回数を正確に知るために、所与のタイプの割込みが
発生した回数をカウントすることに頼ってはならない。
【0322】 保護の問題 この実施形態のPMUのアーキテクチャは、下記の保護の問題を生じる。
【0323】 1.ストリームが、それが処理しているもの以外のパケットからデータを読み
取る/書き込むことができる。ストリームは、すべてのパケットメモリにアクセ
スでき、パケットメモリがカーネルスペースとしてマッピングされない限り、ス
トリームが、全く関係のないパケットからのデータにアクセスできなくする機構
がない。
【0324】 2.構成レジスタがメモリマップ式なので、どのストリームでも、SPUが単
一ストリームモードであるか否かに無関係に、構成レジスタを更新することがで
きる。具体的に言うと、どのストリームでも、PMUをフリーズし、リセットす
ることができる。
【0325】 3.パケットが、再アクティブ化を伴う完了または移動を行われる時に、必ず
、ソフトウェアがそのパケットの「処理」を継続することを妨げるものがない。
【0326】 コマンドユニット(CU) ソフトウェアは、所与のパケットについてPMUが維持するいくつかの情報を
更新し、この情報を得ることができる。これは、上で参照した新しいXStre
amパケット命令の一部を介して、ソフトウェアによって達成される。これらの
命令の一部は、PMUからの応答を必要とするという意味で、ロード様である。
他の命令は、ストア様命令であり、PMUからの応答を必要としない。
【0327】 図27は、この例のXCaliberの他のブロックに関連する、図2のコマ
ンドユニット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にコマンドをディスパッチする。
【0328】 CUは、コマンドをめいめいのブロックにディスパッチし、SPUに返される
応答をキューイングする8エントリのResponseQueue2709に応
答(ある場合に)を収集する責任を負う。CUは、所与のサイクルで3つ(3つ
のブロックのそれぞれから1つ)までの応答を受け取ることができる。(a)ス
トリームごとに1つの未解決のパケット命令だけが許容され、(b)Respo
nse Queueが、ストリームと同数のエントリを有し、(c)PMUに対
するコマンドがパケット命令ごとに1つだけ生成され、(d)各ロード様コマン
ドごとに1つの応答だけが生成されるので、PMUブロックによって生成された
応答をエンキューするのに十分なスペースがResponseQueueにある
ことが保証される。ResponseQueueは、1時に2つまでのコマンド
をエンキューできなければならない。
【0329】 CU213は、SIU107から、構成レジスタを更新する要求も受け取る。
これらのコマンドは、コマンドとしてPMMU、RTU、およびQSブロックに
も送られる。PMMU、QS、およびRTUは、それらに適用される構成レジス
タのローカルコピーを保持する。CUも、すべての構成レジスタのコピーを保持
し、このコピーが、SIUからの構成レジスタ読取を満足するのに使用される。
【0330】 読取専用構成レジスタに関して、CUと読取専用構成レジスタを所有する特定
のユニットとの間に特殊なインターフェースが設けられる。XCaliberの
PMU内には、2つの読取専用構成レジスタが存在し、一方はPMMUブロック
内(SizeOfOverflowedPacket)、他方はCUブロック内
(StatusRegister)に存在する。PMMUは、SizeOfOv
erflowedPacketレジスタに書き込む時に、必ず、CUに通知し、
CUは、そのローカルコピーを更新する。
【0331】 異なるキュー内のコマンドは、独立であり、PMUによって順序はずれで実行
することができる。しかし、キュー内では、コマンドが、順番に、1時に1つず
つ実行される。PMUは、1サイクルあたり3つまでのコマンドの実行を開始す
ることができる。PMMUブロックおよびQSブロックは、他のイベント(新し
いパケットがPMMUに達した時の新しいpacketPageの作成、または
QSに送出する必要があるパケット識別子の抽出など)に、SPUからのコマン
ドより高い優先順位を与える。これは、SPUにデータを送り返すことを要求す
るコマンドが、PMMUまたはQSのいずれかが他の動作の実行でビジーなので
、実行に複数サイクルを要する可能性があることを意味する。
【0332】 RTU227は、コマンドの2つのソースすなわち、QS(使用可能なコンテ
キストにパケット情報をプリロードするため)およびSPU(ソフトウェアコマ
ンド)を有する。RTUは、必ず、より高い優先順位をSPUコマンドに与える
。しかし、RTUは、保留中のSPUコマンドを実行する前に、進行中のコンテ
キストプリロード動作を終了する。
【0333】 コマンド/応答フォーマット CMUによって受け取られるコマンドは、この実施形態では3つのフィールド
を有する。 1.コンテキスト番号。これは、コマンドを生成したストリームに関連するコ
ンテキストである。 2.コマンドオペコード。これは、PMUによって実行されるコマンドのタイ
プを指定する数である。 3.コマンドデータ。これは、コマンドオペコードフィールドで指定されたコ
マンドを実行するために、PMUが必要とする異なる情報である。
【0334】 PMUは、コマンドを受け取った時に、そのコマンドを挿入する必要があるコ
マンドキューがどれであるかを判定する。キューのいずれかに挿入されたコマン
ドは、受け取られたコマンドに類似する構造を有するが、オペコードおよびデー
タのビット幅は、キューによって変化する。図28の表に、キューのそれぞれに
挿入されるコマンドのフォーマットを示す。含まれていないのが、CUがPMM
Uブロック、QSブロック、およびRTUブロックに送るRead Confi
guration RegisterコマンドおよびWrite Config
uration Registerコマンドである。
【0335】 応答を必要とするコマンドのそれぞれが、そのコマンドを生成したストリーム
に関連するコンテキストに対応する番号を用いてタグを付けられる。生成される
応答も、同一のコンテキスト番号を用いてタグを付けられ、その結果、SPUが
、発行されたコマンドのどれにその応答が属するかを知るようになる。
【0336】 上で説明したように、3つのPMUブロックからの応答をバッファリングする
ResponseQueue2709(図27)が、1つだけ存在する。応答を
必要とするパケット命令が、ストリームごとに多くとも1つが未解決になるので
、応答がどのブロックから来たかを示す必要がないことに留意されたい。したが
って、応答に関連するコンテキスト番号は、応答をストリームに関連付けるのに
十分な情報である。
【0337】 図29は、異なるブロックが生成してCUに返す応答のフォーマットを示す表
である。この表に含まれていないのは、CUが構成レジスタ読取を実行する時の
、ブロックのそれぞれによってCUに供給される構成レジスタ値である。
【0338】 RTUは、下記のイベントについて、CUをバイパスする専用インターフェー
ス(図27の経路2711)を介してSPUに通知する。
【0339】 1.マスクドロード/ストア動作が完了した。インターフェースは、コンテキ
スト番号を供給する。
【0340】 2.GetContextが完了した。GetContext動作をディスパ
ッチしたストリームに関連するコンテキスト番号およびRTUによって選択され
たコンテキスト番号が、インターフェースによって供給される。GetCont
extが成功した時には、成功ビットがアサートされ、そうでない場合にはデア
サートされる。
【0341】 3.プリロードの開始または終了。パケットに関連するコンテキスト番号およ
び優先順位が、SPUに供給される。
【0342】 リセットモードおよびフリーズモード PMUは、次の2つの場合にリセットモードに入ることができる。 1.SPUがReset構成フラグをセットした。 2.XCaliberがブートされた。
【0343】 PMUは、次の2つの場合にフリーズモードに入ることができる。 1.SPUがFreeze構成フラグをセットした。 2.PMUがリセットシーケンスを完了した
【0344】 PMUのリセットシーケンスは、数サイクルを要する。このシーケンス中に、
StatusRegister構成レジスタのResetビットがセットされる
。リセットシーケンスの後に、すべての構成レジスタに、そのデフォルト値がセ
ットされ、PMUが、フリーズモードに入る(StatusRegisterの
Resetビットが、リセットされ、Freezeビットがセットされる)。こ
れが終わった時に、SPUが、Freeze構成フラグをリセットし、その時点
から、PMUが通常モードで動作する。
【0345】 SPUが、Freeze構成フラグをセットする時に、PMUは、Statu
sRegisterのFreezeビットをセットする前に、現在の1つまたは
複数のトランザクションを終了する。フリーズモードに入った後は、PMUは、
ネットワーク入力インターフェースからのデータを受け入れず、ネットワーク出
力インターフェースを介してデータを送出せず、パケットをプリロードしない。
【0346】 PMUは、フリーズモードである間にすべてのSPUコマンドの実行を継続す
る。
【0347】 SPUは、StatusRegister構成レジスタをポーリングして、P
MUがどのモードであるか(リセットまたはフリーズ)を判定し、PMUがモー
ドを変更する時を検出する必要がある。
【0348】 CUブロックは、残りのブロックに、リセットおよびフリーズを実行するよう
に指示する。下記は、CUがリセットおよび/またはフリーズ構成ビットへの書
込を受け取る時の、CUと他のブロックの間のプロトコルである。 1.CUは、フリーズまたはリセットのいずれかを実行する必要があるブロッ
クに通知する。 2.すべてのブロックが、フリーズまたはリセットを実行する。完了の後に、
ブロックが、フリーズまたはリセットを完了したことをCUにシグナルバックす
る。 3.CUは、リセットまたはフリーズが完了されるや否や、StatusRe
gisterのビットを更新する。ソフトウェアが、StatusRegist
erをポーリングして、PMUが完全にフリーズした時を判定する。
【0349】 PMU内の異なるブロックは、下記の時にフリーズを終了する。 1.IB、LPM、CU、およびQSは、フリーズする必要がない。 2.インバウンドパケットがある場合に、PMMUがインバウンドパケットの
アップロードを終了すると同時に、およびアウトバウンドパケットがある場合に
、PMMUがそのダウンロードを終了すると同時に。 3.プリロード動作がある場合に、RTUが現在のプリロード動作を終了する
と同時に。 4.OBが空になると同時に。
【0350】 フリーズモードの時には、ブロックは、 1.新しいパケットのアップロードを開始せず、完了したパケットのダウンロ
ードを開始せず、SPU(PMMU)への割込みを生成せず、 2.コンテキストをプリロードせず、SPU(RTU)への割込みを生成しな
い。
【0351】 ソフトウェアが、Freeze/Reset構成レジスタに「1」を書き込み
、その後、PMUがフリーズまたはリセットする前に「0」を書き込む場合に、
結果は未定義である。PMUは、フリーズ/リセットシーケンスを開始した後に
、それを完了する。
【0352】 性能カウンタインターフェース PMUは、異なるユニット内のいくつかのイベントをプローブする。これらの
プローブは、SIUに送られ、性能プローブとしてソフトウェアによって使用さ
れる。SIUは、PMUがSIUに送るイベントの一部をカウントするのに使用
されるカウンタの組を有する。ソフトウェアが、XCaliberチップ全体を
通じて監視したいイベントを決定する。ソフトウェアが性能カウンタをどのよう
に構成できるかに関するさらなる情報については、SUIアーキテクチャ仕様文
書を参照されたい。
【0353】 図30に、PMUとSIUの間の性能カウンタインターフェースを示す。64
個までのイベントを、PMU内でプローブすることができる。64個のすべての
イベントが、各サイクルに、64ビットバスを介してSIU(EventVec
tor)に送られる。
【0354】 64個のイベントのそれぞれに、値(0から64K−1)を関連付けることが
できる。ソフトウェアが、イベントのうちの2つを選択する(EventAおよ
びEventB)。この2つのそれぞれについて、PMUが、イベントがEve
ntVectorバスに供給されるのと同時に、関連する16ビット値(それぞ
れEventDataAおよびEventDataB)を供給する。
【0355】 イベントは、レベルトリガである。したがって、PMUが、2つの連続するサ
イクルにわたってイベントをアサートする場合に、そのイベントは、2回カウン
トされる。EventVectorの対応する信号は、イベントが発生した場合
に限って、イベントの状態が保持されるサイクルにわたってアサートされる。
【0356】 SIUは、実際にカウントされるイベントを選択する(ソフトウェアがSIU
をどのようにプログラムしたかに基づく)。SIUが、EventAまたはEv
entBと異なるイベント番号をカウントすると決定した場合に、SIU内のカ
ウンタが、EventVector内の対応するビットがアサートされるサイク
ルについてイベントをカウントする。監視されるイベントがEventAおよび
/またはEventBである場合に、SIUは、イベント/sをカウントするほ
かに、イベントが発生するたびに、EventDataAおよび/またはEve
ntDataBによってもう1つのカウンタを増分する。
【0357】 図31に、PMU103内の異なるブロック間の内部インターフェースの可能
な実装を示す。CUは、PMUとSIUの間の、性能カウンタに関するインター
フェースとして働く。CU213は、EventAおよびEventB内の情報
を異なるユニットに分配し、ユニットのそれぞれの個々のEventVecto
r、EventDataA、およびEventDataBを収集する。
【0358】 CUブロックは、異なるブロックからすべてのイベントを収集し、それらをS
IUに送る。CUは、異なるブロックとインターフェースして、各ブロック内の
どのイベントがEventDataAおよび/またはEventDataB値を
提供する必要があるかを通知する。
【0359】 性能イベントは、タイムクリティカルではない、すなわち、性能イベントは、
発生したのと同一のサイクルにSIUに報告される必要がない。
【0360】 図34から39に、性能カウンタに関連するすべてのイベントをリストした表
が含まれる。これらのイベントは、PMU内のブロックによってグループ化され
る。イベント番号を、第2列に示す。この番号は、イベントが発生する時にアサ
ートされる、EventVector内のビットに対応する。第3列は、イベン
ト名である。第4列に、イベントに関連するデータ値と、括弧内にそのビット幅
を示す。最後の列に、イベントの説明を示す。
【0361】 CUブロックは、異なるブロックからすべてのイベントを収集し、それらをS
IUに送る。CUは、異なるブロックとインターフェースして、各ブロック内の
どのイベントがEventDataAおよび/またはEventDataB値を
提供する必要があるかを通知する。
【0362】 性能イベントは、タイムクリティカルではない、すなわち、性能イベントは、
発生したのと同一のサイクルにSIUに報告される必要がない。
【0363】 デバッグバイパスおよびトリガイベント ハードウェアデバッグフックが、シリコンのデバッグを助けるためにPMU内
で実装されている。デバッグフックは、下記の2つのカテゴリに分類される。 1.バイパスフック:これによって、潜在的に欠陥のある機能をバイパスする
。これらの機能によって生成される不完全な結果(または、場合によっては、結
果が全くない)の代わりに、バイパスフックは、他の隣接するブロックをテスト
できるようにする少なくともいくつかの機能性を提供する。 2.トリガイベント:PMU内で特定の条件(トリガイベント)が発生する時
に、PMUは、自動的にシングルステップモードに入り、これは、OCIインタ
ーフェース(セクション)を介して、SIUがシングルステップモードを抜ける
コマンドをPMUに送るまで続く。
【0364】 さらに、PMUは、シングルステップされる能力を有する。信号(Singl
eStep)が、OCIインターフェースから来る。サイクルごとに、PMUの
異なるブロックが、この信号を監視する。この信号がデアサートされている時に
、PMUは、普通に機能する。SingleStepがアサートされた時に、P
MUは、作業を一切実行しなくなり、進行中のすべての動作が、この信号がデア
サートされるまで保持される。言い換えると、PMUは、この信号がアサートさ
れた時に何も行わない。これに対する唯一の例外が、ブロックがデータを失う可
能性がある時である(例は、2つのブロックの間のインターフェース内とするこ
とができる。ブロックAが、データをブロックBに送り、ブロックBが次のサイ
クルにそのデータを得ると仮定する。SingleStepがこのサイクルにア
サートされた場合には、ブロックBは、Aからのデータが失われないことを保証
しなければならない)。
【0365】 バイパスフック PMU内の異なるバイパスフックは、オンザフライBypassHooks構
成レジスタを介してアクティブ化される。図40は、PMU内で実装される異な
るバイパスフックを示す表である。各フックの番号は、BypassHooks
レジスタ内のビット番号に対応する。バイパスフックは、このレジスタ内の対応
するビットがアサートされているサイクルの間、適用される。
【0366】 トリガイベント 下記は、PMU内で実装されるトリガイベントのリストである。
【0367】 1.サイズsバイトの新しいパケットが、IBUの先頭にある。
【数3】
【0368】 2.packetPage ppを有するソースsからのpacketIdが
、QSのキューqに挿入される。
【数4】
【0369】 3.packetPage ppおよびpacketNumbet pnを有
するキューqからのpacketIdが、RTUに送られる。
【数5】
【0370】 4.packetPage ppおよびpacketNumber pnを有
するpacketIdが、QSのキューqの先頭に達する。
【数6】
【0371】 5.RTU優先順位pとpacketPage ppおよびpacketNu
mber pnを有するパケットが、コンテキストcにプリロードされる。
【数7】
【0372】 6.packetPage ppおよびpacketNumber pnを有
するキューqからのpacketIdが、ダウンロードのためにPMMに送られ
る。
【数8】
【0373】 7.packetPage ppおよびpacketNumber pnを有
するpacketIdが、QSのキューqの先頭に達する。
【数9】
【0374】 8.パケットコマンドpcが、ブロックbによって実行される。
【数10】
【0375】 SPUおよびSIUとの詳細なインターフェース 前の節で説明したアーキテクチャは、図41に示されたハードウェアブロック
で実装される。
【0376】 SPU−PMUインターフェース 図42から45で、SPU−PMUインターフェースを説明する。
【0377】 SPU−PMUインターフェース 図46から49で、SIU−PMUインターフェースを説明する。
【0378】 上の明細書で、パケットの処理に適応するマルチストリーミングプロセッサの
パケットメモリユニット(PMU)を権能を付与する詳細で説明した。アーキテ
クチャ、ハードウェア、ソフトウェア、および動作の詳細が、例示的実施形態で
与えられる。説明した実施形態を、本発明の趣旨および範囲から逸脱せずにかな
り詳細に変更できることが、当業者に明白であろう。たとえば、教示された新規
のアーキテクチャおよび機能性を厳守しながらICハードウェア、ファームウェ
ア、およびソフトウェアをさまざまな形で達成できることが、よく知られている
。したがって、添付の請求項は、最も広義の解釈と一致しなければならない。
【図面の簡単な説明】
【図1】 本発明の好ましい実施形態のDMSプロセッサの機能領域の関係を示す単純化
されたブロック図である。
【図2】 追加の詳細を示す、図1のDMSプロセッサのブロック図である。
【図3】 本発明の実施形態でのLPMまたはEPMへのデータのアップロードを示すブ
ロック図である。
【図4a】 本発明の実施形態でのデータアップロードのための判定および割振りを示す図
である。
【図4b】 4つの64KBブロックのそれぞれについて維持される必要がある状態を示す
図である。
【図5a】 本発明の実施形態でアトミックページがどのように割り振られるかの例を示す
図である。
【図5b】 本発明の実施形態でアトミックページがどのように割り振られるかの例を示す
図である。
【図6a】 本発明の実施形態でメモリスペースがどのように効率的に使用されるかを示す
図である。
【図6b】 本発明の実施形態でメモリスペースがどのように効率的に使用されるかを示す
図である。
【図7】 パケットのダウンロードに使用されるXCaliber PMUユニットのブ
ロックの最上位の概略を示す図である。
【図8】 パケットの増大および縮小の現象を示す図である。
【図9】 本発明の実施形態での、QSと、PMUおよびSPU内の他のブロックとの間
の高水準通信を示すブロック図である。
【図10】 QSを構成できる、本発明の実施形態での6つの異なるモードを示す表である
【図11】 本発明の実施形態での、図2および図7のQSの包括的なアーキテクチャを示
す図である。
【図12】 本発明の実施形態でのアウトバウンドDeviceIdフィールドのコーディ
ングを示す表である。
【図13】 本発明の実施形態でのRTU転送の優先順位マッピングを示す表である。
【図14】 本発明の実施形態での有効パケットのActiveビット、Complete
dビット、およびProbedビットの許容される組合せを示す表である。
【図15】 本発明の実施形態でのパターン照合テーブルの図である。
【図16】 本発明の1実施形態でのマスクのフォーマットを示す図である。
【図17】 図16のマスクを使用するプリロード動作の例を示す図である。
【図18】 本発明の実施形態でのPMU構成スペースを示す図である。
【図19a】 構成レジスタマッピングの表である。
【図19b】 構成レジスタマッピングの表である。
【図19c】 構成レジスタマッピングの表である。
【図20】 PreloadMaskNumber構成レジスタを示す図である。
【図21】 本発明の好ましい実施形態のPatternMatchingTableを示
す図である。
【図22】 本発明の好ましい実施形態のVirtualPageEnable構成レジス
タを示す図である。
【図23】 本発明の好ましい実施形態のContextSpecificPattern
MatchingMask構成レジスタを示す図である。
【図24】 本発明の実施形態のMaxActivePackets構成レジスタを示す図
である。
【図25】 本発明の実施形態のTimeCounter構成レジスタを示す図である。
【図26】 本発明の実施形態のStatusRegister構成レジスタを示す図であ
る。
【図27】 本発明の実施形態のコマンドユニットおよびコマンドキューの概略を示す図で
ある。
【図28】 本発明の実施形態のコマンドキューに挿入されるコマンドのフォーマットを示
す表である。
【図29】 本発明の実施形態の異なるブロックが生成してCUに返す応答のフォーマット
を示す図である。
【図30】 本発明の実施形態のPMUとSIUの間の性能カウンタインターフェースを示
す図である。
【図31】 本発明の実施形態のPMU内の異なるユニット間の内部インターフェースの可
能な実装を示す図である。
【図32】 本発明の実施形態のBypassHooks構成レジスタの図である。
【図33】 本発明の実施形態のInternalStateWrite構成レジスタの図
である。
【図34】 本発明の実施形態の性能カウンタに関連するイベントをリストした表である。
【図35】 本発明の実施形態の性能カウンタに関連するイベントをリストした表である。
【図36】 本発明の実施形態の性能カウンタに関連するイベントをリストした表である。
【図37】 本発明の実施形態の性能カウンタに関連するイベントをリストした表である。
【図38】 本発明の実施形態の性能カウンタに関連するイベントをリストした表である。
【図39】 本発明の実施形態の性能カウンタに関連するイベントをリストした表である。
【図40】 本発明の実施形態のPMU内で実装される異なるバイパスフックを示す表であ
る。
【図41】 本発明の実施形態の関連するアーキテクチャブロックおよびハードウェアブロ
ックを示す表である。
【図42】 本発明の実施形態のSPU−PMUインターフェースを示す表である。
【図43】 本発明の実施形態のSPU−PMUインターフェースを示す表である。
【図44】 本発明の実施形態のSPU−PMUインターフェースを示す表である。
【図45】 本発明の実施形態のSPU−PMUインターフェースを示す表である。
【図46】 本発明の実施形態のSIU−PMUインターフェースを示す表である。
【図47】 本発明の実施形態のSIU−PMUインターフェースを示す表である。
【図48】 本発明の実施形態のSIU−PMUインターフェースを示す表である。
【図49】 本発明の実施形態のSIU−PMUインターフェースを示す表である。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE,TR),OA(BF ,BJ,CF,CG,CI,CM,GA,GN,GW, ML,MR,NE,SN,TD,TG),AP(GH,G M,KE,LS,MW,MZ,SD,SL,SZ,TZ ,UG,ZW),EA(AM,AZ,BY,KG,KZ, MD,RU,TJ,TM),AE,AL,AM,AT, AU,AZ,BA,BB,BG,BR,BY,CA,C H,CN,CR,CU,CZ,DE,DK,DM,EE ,ES,FI,GB,GD,GE,GH,GM,HR, HU,ID,IL,IN,IS,JP,KE,KG,K P,KR,KZ,LC,LK,LR,LS,LT,LU ,LV,MA,MD,MG,MK,MN,MW,MX, NO,NZ,PL,PT,RO,RU,SD,SE,S G,SI,SK,SL,TJ,TM,TR,TT,TZ ,UA,UG,UZ,VN,YU,ZA,ZW (72)発明者 メルビン,ステイーブン アメリカ合衆国、カリフオルニア・94114、 サン・フランシスコ、フオーテイーンス・ ストリート・967 (72)発明者 サンカー,ナレンドラ アメリカ合衆国、カリフオルニア・95051、 サンタ・クララ、オーク・グローブ・ドラ イブ・450、アパートメント・313 (72)発明者 サンパス,ナンダクマール アメリカ合衆国、カリフオルニア・95054、 サンタ・クララ、ミル・クリーク・レイ ン・580 (72)発明者 ネミロフスキイ,アドルフオ アメリカ合衆国、カリフオルニア・95129、 サン・ホセ、オールダーブルツク・レイ ン・1044 Fターム(参考) 5B045 BB01 BB28 BB31 BB44 5K030 HA08 HB17 HD03 LE05 MB15

Claims (59)

    【特許請求の範囲】
  1. 【請求項1】 データパケットプロセッサにおいて、処理中のパケットアカ
    ウンティング用の構成可能なキューイングシステムであって、 1つまたは複数のクラスタに配置された複数のキューと、 到着するパケットのパケット識別子を作成する識別機構と、 パケット識別子をキューに挿入し、パケット識別子をどのキューに挿入するか
    を決定する挿入論理と、 識別されたパケットの処理、完了したパケットのダウンロードの開始のために
    キューからパケット識別子を選択し、または選択したパケット識別子を再キュー
    イングする選択論理と を有するキューイングシステム。
  2. 【請求項2】 すべてのキューのパケット識別子の総数が、固定され、クラ
    スタの数およびクラスタごとのキューの数を、1から同一の最大個数まで変化す
    ることができ、クラスタの数が1と等しい場合、キューの数が最大個数になり、
    逆も同様である、請求項1に記載のキューイングシステム。
  3. 【請求項3】 キューの数を決定するクラスタの相対的な数が、プロセッサ
    に関連する構成レジスタをセットすることによってセットされる、請求項2に記
    載のキューイングシステム。
  4. 【請求項4】 パケット識別子の総数が256であり、256個のパケット
    が、どの時点でもデータパケットプロセッサで処理中になることができることを
    意味する、請求項2に記載のキューイングシステム。
  5. 【請求項5】 クラスタまたはキューのいずれかの最大個数が32であり、
    クラスタまたはキューの数が2のべきになるように制御される、請求項2に記載
    のキューイングシステム。
  6. 【請求項6】 作成される前記パケット識別子が、前記パケット自体が処理
    中に保管されるメモリ位置に関連する、請求項1に記載のキューイングシステム
  7. 【請求項7】 処理中にパケットデータを保管するオンボードメモリが、パ
    ケットページに配置され、前記パケット識別子が、パケットの前記パケットデー
    タが保管されるパケットページの先頭を識別するアドレスである、請求項6に記
    載のキューイングシステム。
  8. 【請求項8】 作成されキューイングされる前記パケット識別子が、前記メ
    モリ位置の他に、前記パケットを受信する装置の1つまたは複数の識別子と、前
    記パケットが処理中に総サイズが増加または減少したかの表示と、関連するパケ
    ットに関する処理が完了したか否かの表示と、前記パケット識別子を挿入すべき
    次のキューと、前記パケットが現在処理中であるかどうかの識別子とを含む、請
    求項6に記載のキューイングシステム。
  9. 【請求項9】 前記挿入論理が、パケットの優先順位を決定し、決定した前
    記優先順位に応じて前記パケットを特定のキューに挿入する、請求項1に記載の
    キューイングシステム。
  10. 【請求項10】 クラスタが、番号を付けられ、識別されたパケットを処理
    する優先順位が、クラスタ番号による、請求項9に記載のキューイングシステム
  11. 【請求項11】 選択システムが、前記パケット識別子にセットされた次の
    キュー番号の値に基づいて再キューイングするパケットを選択する、請求項8に
    記載のキューイングシステム。
  12. 【請求項12】 選択システムが、関連するパケットに関する処理が完了し
    たかどうかの表示の値に基づいて、ダウンロードするパケットを選択する、請求
    項8に記載のキューイングシステム。
  13. 【請求項13】 選択システムが、キュー番号による優先順位に基づいて処
    理するパケットを選択する、請求項10に記載のキューイングシステム。
  14. 【請求項14】 処理するパケットを選択するために優先順位クラスタのキ
    ューを選択する時に、公平アルゴリズムを伴う、請求項13に記載のキューイン
    グシステム。
  15. 【請求項15】 前記データパケットプロセッサが、コンテキストレジスタ
    によって実施され個々のストリームに関連する別々のコンテキストを有するマル
    チストリーミングプロセッサであり、選択システムが、選択された識別子に関連
    するパケットからのヘッダ情報を、使用可能なコンテキストにロードさせる、請
    求項1に記載のキューイングシステム。
  16. 【請求項16】 ストリームより多数のコンテキストがあり、使用可能なコ
    ンテキストへのヘッダ情報のローディングが、バックグラウンドで、すなわち、
    パケットの処理と並列に、達成される、請求項15に記載のキューイングシステ
    ム。
  17. 【請求項17】 プロセッサによって実行されるソフトウェアが、パケット
    識別子のフィールドの個々の値を操作することが可能な、請求項8に記載のキュ
    ーイングシステム。
  18. 【請求項18】 前記挿入論理が、少なくとも部分的にフローに従って、パ
    ケットをキューに挿入し、挿入および選択論理が、個々のフローのパケット順序
    を保存するために協力する、請求項1に記載のキューイングシステム。
  19. 【請求項19】 前記挿入論理が、ネットワークまたは交換装置から着信す
    るパケットを、キューへの識別子挿入に関する最高の優先順位を用いて扱い、再
    キューイングするパケット識別子を次に高い優先順位を用いて扱い、ソフトウェ
    アによって生成されるパケットの識別子を最低の優先順位を用いて扱う、請求項
    1に記載のキューイングシステム。
  20. 【請求項20】 データパケットプロセッサであって、 1つまたは複数のソースからの着信パケットをバッファリングする入力バッフ
    ァと、 処理中にパケットデータを保管するローカルパケットメモリと、 パケットデータを処理するストリームプロセッサユニットと、 処理中のパケットアカウンティング用の構成可能なキューイングシステムと を含み、前記キューイングシステムが、1つまたは複数のクラスタに配置され
    た複数のキューと、到着するパケットのパケット識別子を作成する識別機構と、
    パケット識別子をキューに挿入し、パケット識別子をどのキューに挿入するかを
    決定する挿入論理と、識別されたパケットの処理の開始のためにキューからパケ
    ット識別子を選択し、完了したパケットをダウンロードし、または選択したパケ
    ット識別子を再キューイングする選択論理とを含む データパケットプロセッサ。
  21. 【請求項21】 すべてのキューのパケット識別子の総数が固定され、クラ
    スタの数およびクラスタごとのキューの数が、1から同一の最大個数まで変化す
    ることができ、クラスタの数が1と等しい場合、キューの数が最大個数になり、
    逆も同様である、請求項20に記載のプロセッサ。
  22. 【請求項22】 キューの数を決定するクラスタの相対的な数が、プロセッ
    サに関連する構成レジスタをセットすることによってセットされる、請求項21
    に記載のプロセッサ。
  23. 【請求項23】 パケット識別子の総数が256であり、256個のパケッ
    トが、どの時点でも前記データパケットプロセッサで処理中になることができる
    ことを意味する、請求項21に記載のプロセッサ。
  24. 【請求項24】 クラスタまたはキューのいずれかの最大個数が32であり
    、クラスタまたはキューの数が2のべきになるように制御される、請求項21に
    記載のプロセッサ。
  25. 【請求項25】 作成される前記パケット識別子が、前記パケット自体が処
    理中に保管されるメモリ位置に関連する、請求項20に記載のプロセッサ。
  26. 【請求項26】 処理中にパケットデータを保管するオンボードメモリが、
    パケットページに配置され、前記パケット識別子が、パケットの前記パケットデ
    ータが保管されるパケットページの先頭を識別するアドレスである、請求項25
    に記載のプロセッサ。
  27. 【請求項27】 作成されキューイングされる前記パケット識別子が、前記
    メモリ位置の他に、前記パケットを受信する装置の1つまたは複数の識別子と、
    前記パケットが処理中に総サイズが増加または減少したかの表示と、関連するパ
    ケットに関する処理が完了したか否かの表示と、前記パケット識別子を挿入すべ
    き次のキューと、前記パケットが現在処理中かどうかの識別子とを含む、請求項
    25に記載のプロセッサ。
  28. 【請求項28】 前記挿入論理が、パケットの優先順位を決定し、決定した
    前記優先順位に応じて前記パケットを特定のキューに挿入する、請求項20に記
    載のプロセッサ。
  29. 【請求項29】 クラスタが、番号を付けられ、識別されたパケットを処理
    する優先順位が、クラスタ番号による、請求項28に記載のプロセッサ。
  30. 【請求項30】 選択システムが、前記パケット識別子にセットされた次の
    キュー番号の値に基づいて再キューイングするパケットを選択する、請求項27
    に記載のプロセッサ。
  31. 【請求項31】 選択システムが、関連するパケットに関する処理が完了し
    たかどうかの表示の値に基づいて、ダウンロードするパケットを選択する、請求
    項27に記載のプロセッサ。
  32. 【請求項32】 選択システムが、キュー番号による優先順位に基づいて処
    理するパケットを選択する、請求項29に記載のプロセッサ。
  33. 【請求項33】 処理するパケットを選択する優先順位クラスタのキューを
    選択する時に、公平アルゴリズムを伴う、請求項32に記載のプロセッサ。
  34. 【請求項34】 前記データパケットプロセッサが、コンテキストレジスタ
    によって実施され個々のストリームに関連する別々のコンテキストを有するマル
    チストリーミングプロセッサであり、選択システムが、選択された識別子に関連
    するパケットからのヘッダ情報を、使用可能なコンテキストにロードさせる、請
    求項20に記載のプロセッサ。
  35. 【請求項35】 ストリームより多数のコンテキストがあり、使用可能なコ
    ンテキストへのヘッダ情報のローディングが、バックグラウンドで、すなわち、
    パケットの処理と並列に、達成される、請求項34に記載のプロセッサ。
  36. 【請求項36】 プロセッサによって実行されるソフトウェアが、パケット
    識別子のフィールドの個々の値を操作することができる、請求項27に記載のプ
    ロセッサ。
  37. 【請求項37】 前記挿入論理が、少なくとも部分的にフローに従って、パ
    ケットをキューに挿入し、挿入および選択論理が、個々のフローでパケットの順
    序を保存するために協力する、請求項20に記載のプロセッサ。
  38. 【請求項38】 前記挿入論理が、ネットワークまたは交換装置から着信す
    るパケットを、キューへの識別子挿入に関する最高の優先順位を用いて扱い、再
    キューイングするパケット識別子を次に高い優先順位を用いて扱い、ソフトウェ
    アによって生成されるパケットの識別子を最低の優先順位を用いて扱う、請求項
    20に記載のプロセッサ。
  39. 【請求項39】 データパケットプロセッサのパケットのアカウンティング
    の方法であって、 (a)プロセッサで1つまたは複数のクラスタに複数のキューを設けるステッ
    プと、 (b)到着するパケットのパケット識別子を作成するステップと、 (c)どのキューに挿入するかを決定する論理を有する挿入機構によってパケ
    ット識別子をキューに挿入するステップと、 (d)識別されたパケットの処理の開始、完了したパケットのダウンロード、
    または選択されたパケット識別子の再キューイングのために、選択論理によって
    キューからパケット識別子を選択するステップと を含む方法。
  40. 【請求項40】 すべてのキューのパケット識別子の総数が、固定され、ク
    ラスタの数およびクラスタごとのキューの数が、1から同一の最大個数まで変化
    することができ、クラスタの数が1と等しい場合に、キューの数が最大個数にな
    り、逆も同様である、請求項39に記載の方法。
  41. 【請求項41】 キューの数を決定するクラスタの相対的な数が、プロセッ
    サに関連する構成レジスタをセットすることによってセットされる、請求項40
    に記載の方法。
  42. 【請求項42】 パケット識別子の総数が256であり、256個のパケッ
    トが、どの時点でもデータパケットプロセッサで処理中になることができること
    を意味する、請求項40に記載の方法。
  43. 【請求項43】 クラスタまたはキューのいずれかの最大個数が32であり
    、クラスタまたはキューの数が2のべきになるように制御される、請求項40に
    記載の方法。
  44. 【請求項44】 作成される前記パケット識別子が、前記パケット自体が処
    理中に保管されるメモリ位置に関連する、請求項39に記載の方法。
  45. 【請求項45】 処理中にパケットデータを保管するオンボードメモリが、
    パケットページに配置され、前記パケット識別子が、パケットの前記パケットデ
    ータが保管されるパケットページの先頭を識別するアドレスである、請求項44
    に記載の方法。
  46. 【請求項46】 作成され、キューイングされる前記パケット識別子が、前
    記メモリ位置の他に、前記パケットを受信する装置の1つまたは複数の識別子と
    、前記パケットが処理中に総サイズが増加または減少したかの表示と、関連する
    パケットに関する処理が完了したか否かの表示と、前記パケット識別子を挿入す
    べき次のキューと、前記パケットが現在処理中であるかの識別子とを含む、請求
    項44に記載の方法。
  47. 【請求項47】 前記挿入論理が、パケットの優先順位を決定し、決定した
    前記優先順位に応じて前記パケットを特定のキューに挿入する、請求項39に記
    載の方法。
  48. 【請求項48】 クラスタが、番号を付けられ、識別したパケットを処理す
    る優先順位が、クラスタ番号による、請求項47に記載の方法。
  49. 【請求項49】 選択システムが、前記パケット識別子にセットされた次の
    キュー番号の値に基づいて再キューイングのためにパケットを選択する、請求項
    46に記載の方法。
  50. 【請求項50】 選択システムが、関連するパケットに関する処理が完了し
    たかどうかの表示の値に基づいて、ダウンロードのためにパケットを選択する、
    請求項46に記載の方法。
  51. 【請求項51】 選択システムが、キュー番号による優先順位に基づく処理
    のためにパケットを選択する、請求項48に記載の方法。
  52. 【請求項52】 処理のためにパケットを選択する優先順位クラスタのキュ
    ーを選択する時に、公平アルゴリズムを伴う、請求項13に記載の方法。
  53. 【請求項53】 前記データパケットプロセッサが、コンテキストレジスタ
    によって実施され、個々のストリームに関連する別々のコンテキストを有するマ
    ルチストリーミングプロセッサであり、選択システムが、選択された識別子に関
    連するパケットからのヘッダ情報を、使用可能なコンテキストにロードさせる、
    請求項39に記載の方法。
  54. 【請求項54】 ストリームより多数のコンテキストがあり、使用可能なコ
    ンテキストへのヘッダ情報のローディングが、バックグラウンドすなわち、パケ
    ットの処理と並列に、達成される、請求項53に記載の方法。
  55. 【請求項55】 プロセッサによって実行されるソフトウェアが、パケット
    識別子のフィールドの個々の値を操作することが可能な、請求項8に記載の方法
  56. 【請求項56】 前記挿入論理が、少なくとも部分的にフローに従って、パ
    ケットをキューに挿入し、挿入および選択論理が、個々のフローのパケット順序
    を保存するために協力する、請求項39に記載の方法。
  57. 【請求項57】 前記挿入論理が、ネットワークまたは交換装置から着信す
    るパケットを、キューへの識別子挿入のために最高の優先順位を用いて扱い、再
    キューイングされるパケット識別子を次に高い優先順位を用いて扱い、ソフトウ
    ェアによって生成されるパケットの識別子を最低の優先順位を用いて扱う、請求
    項39に記載の方法。
  58. 【請求項58】 処理を待っている到着するパケットを管理するキューイン
    グシステムを有するデータパケットプロセッサにおいて、 パケット番号の固定された範囲と、 割当機構と を有し、前記割当機構が、前記固定された範囲の個別の番号をアカウンティン
    グし、前記キューイングシステムのパケットが処理のために送られるかソフトウ
    ェアがパケットをアクティブにする時に番号を無効とマークし、前記キューイン
    グシステムに置かれる新たに到着したパケットに無効な番号を再割り当てするこ
    とを特徴とする パケット番号付けシステム。
  59. 【請求項59】 ある時点でパケットに割り当てられたパケット番号が別の
    時点で同一のパケットに割り当てられることを保証するために、プローブビット
    が各パケットに関連付けられ、前記プローブビットが、パケット番号が割り当て
    られる時にデアサートされ、ストリームによって実行されるプローブ・アンド・
    セット(Probe and Set)コマンドによってアサートされ、プロー
    ブビットがアサートされた後のどの時刻にも、アサートされたプローブビットが
    、前記パケット番号が前記同一のパケットに関連することを示すようにすること
    を特徴とする、請求項58に記載のシステム。
JP2001558844A 2000-02-08 2001-01-08 パケットルーティング動作におけるプロセッサ用キューイングシステム Expired - Fee Related JP3801919B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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