JP2003527755A - Digital communication processor - Google Patents

Digital communication processor

Info

Publication number
JP2003527755A
JP2003527755A JP2000548818A JP2000548818A JP2003527755A JP 2003527755 A JP2003527755 A JP 2003527755A JP 2000548818 A JP2000548818 A JP 2000548818A JP 2000548818 A JP2000548818 A JP 2000548818A JP 2003527755 A JP2003527755 A JP 2003527755A
Authority
JP
Japan
Prior art keywords
processor
data
packet
queue
bus
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.)
Pending
Application number
JP2000548818A
Other languages
Japanese (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 JP2003527755A publication Critical patent/JP2003527755A/en
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/50Circuit switching systems, i.e. systems in which the path is physically permanent during the communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • 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]

Landscapes

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

Abstract

(57)【要約】 一般にデータ・ストリームを、特別な場合にパケット・ストリームを処理するために集積回路(203)が使用される。この集積回路は、多数のパケット・プロセッサ(307,313,303)と、テーブル参照エンジン(301)と、待ち行列(キュー)管理エンジン(305)と、バッファ管理エンジン(315)とを備える。パケット・プロセッサは、受信プロセッサ(421)と、送信プロセッサ(427)と、リスク(RISC)コア・プロセッサ(401)と、プログラム可能な他の要素とを備える。 (57) Summary In general, an integrated circuit (203) is used to process a data stream and, in special cases, a packet stream. The integrated circuit comprises a number of packet processors (307, 313, 303), a table lookup engine (301), a queue management engine (305), and a buffer management engine (315). The packet processor comprises a receiving processor (421), a transmitting processor (427), a risk (RISC) core processor (401), and other programmable elements.

Description

【発明の詳細な説明】 (発明の属する技術分野) 本発明は一般にディジタル・パケット・ネットワークに関し、特に、そのよう
なネットワークで使用されるスイッチに関する。 【0001】 (背景技術) ディジタル・ストリームにおける通信は、一般にパケットを利用して行われる
。このようなパケットは図1中113で示されている。 【0002】 (発明の開示) 一般にはデータ・ストリームを、特別な場合にはパケット・ストリームを処理
するために集積回路(203)が使用される。この集積回路は、多数のパケット
・プロセッサ(307,313,303)と、テーブル参照エンジン(301)
と、待ち行列(キュー)管理エンジン(305)と、バッファ管理エンジン(3
15)とを備える。パケット・プロセッサは、受信プロセッサ(421)と、送
信プロセッサ(427)と、リスク(RISC)コア・プロセッサ(401)と、プロ
グラム可能な他の要素とを備える。 【0003】 (発明を実施するための最良の形態) 以下の説明は、本発明によるディジタル通信プロセッサを含めたディジタル・
パケット・スイッチの構造および動作に関する説明に始まり、ディジタル通信プ
ロセッサの構造および動作に関する説明が続き、そのディジタル通信プロセッサ
の構成要素の構造および動作の詳細に及ぶ。 【図面の簡単な説明】 【図1】 ネットワークにおけるパケット・スイッチのブロック図を示す。
Description: FIELD OF THE INVENTION The present invention relates generally to digital packet networks, and more particularly to switches used in such networks. BACKGROUND ART Communication in a digital stream is generally performed using packets. Such a packet is shown at 113 in FIG. DISCLOSURE OF THE INVENTION In general, an integrated circuit (203) is used to process data streams and, in special cases, packet streams. This integrated circuit comprises a number of packet processors (307, 313, 303) and a table lookup engine (301).
And a queue management engine (305) and a buffer management engine (3).
15). The packet processor comprises a receiving processor (421), a transmitting processor (427), a risk (RISC) core processor (401), and other programmable elements. DETAILED DESCRIPTION OF THE INVENTION The following description describes a digital communication system including a digital communication processor according to the present invention.
Beginning with a description of the structure and operation of the packet switch, followed by a description of the structure and operation of the digital communication processor, and will cover details of the structure and operation of the components of the digital communication processor. BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 shows a block diagram of a packet switch in a network.

【手続補正書】 【提出日】平成13年2月7日(2001.2.7) 【手続補正1】 【補正対象書類名】明細書 【補正対象項目名】全文 【補正方法】変更 【補正の内容】 【発明の名称】 ディジタル通信プロセッサ 【特許請求の範囲】 【請求項1】 データのストリームを受信および/または送信する複数のデ
ータ・ストリーム入力および/または出力; 前記データ・ストリームを処理する複数のデータ・ストリーム・プロセッサで
あって、各々がデータ・ストリーム入力および/または出力に結合され: 命令を含む書込可能命令メモリ;および 前記命令のうち特定の命令を順次実行して、前記データ・ストリーム入力か
ら受信される前記データ・ストリームを処理する受信プロセッサ;および/また
は 前記命令のうち特定の命令を順次実行して、前記データ・ストリームを処理
し、前記データ・ストリーム出力に出力する送信プロセッサ; を備える複数のデータ・ストリーム・プロセッサ; によって構成されることを特徴とする集積回路。 【請求項2】 データ・ストリームを受信および/または送信する複数のデ
ータ・ストリーム入力および/または出力;および 前記データ・ストリームを処理する複数のデータ・ストリーム・プロセッサで
あって、各々がデータ・ストリーム入力および/または出力に結合され、前記デ
ータ・ストリーム・プロセッサに局在する書込可能なローカル・メモリを備える
複数のデータ・プロセッサ; によって構成され、前記複数のローカル・メモリが前記データ処理システム・
プロセッサのうち任意のプロセッサによりアドレス指定可能なグローバル・アド
レス空間に属することを特徴とする集積回路。 【請求項3】 データ・ストリームを受信および/または送信する複数のデ
ータ・ストリーム入力および/または出力; 各々がデータ・ストリーム入力および/または出力に結合される、前記データ
・ストリームを処理する複数のデータ・ストリーム・プロセッサ;および データ・ストリームを処理する特定のデータ・ストリーム・プロセッサから受
信される情報に応答し、前記特定のデータ・ストリームのコンテクストに関する
情報を生成し、前記コンテクスト情報を前記プロセッサに提供するコンテクスト
・プロセッサ; によって構成され、前記特定のデータ・ストリーム・プロセッサが前記コンテ
クスト情報を利用して前記データ・ストリームを処理することを特徴とする集積
回路。 【請求項4】 前記コンテクスト・プロセッサが前記情報を受信し、前記デ
ータ・ストリーム・プロセッサおよび前記コンテクスト・プロセッサの各々に関
して待ち時間の上限が存在するバスを介して前記コンテクスト情報を提供するこ
とを特徴とする請求項3記載の集積回路。 【請求項5】 データ・ストリームと、制御データを含むデータ・ストリー
ムと、ペイロードとを受信および/または送信する複数のデータ・ストリーム入
力および/または出力; 前記データ・ストリームを処理する複数のデータ・ストリーム・プロセッサで
あって、各データ・ストリーム・プロセッサがデータ・ストリーム入力および/
または出力に結合され、被受信データ・ストリームが処理されて前記制御データ
および前記ペイロードを抜粋し、被送信データ・ストリームが処理されて制御デ
ータを前記ペイロードに加える複数のデータ・ストリーム・プロセッサ; ペイロードを格納するバッファのアドレスを提供し、バッファ・アドレスを伴
う書込動作に応答して前記アドレス指定されるバッファにペイロードを書き込み
、バッファ・アドレスを伴う読込動作に応答して前記アドレス指定されるバッフ
ァからペイロードを読み込むバッファ・マネージャ;および ペイロードの記述子の待行列を管理する待行列マネージャであって、各記述子
が少なくとも1つのバッファ・アドレスを備え、前記待行列マネージャは、エン
キュー・コマンドを伴って提供される記述子を、前記コマンド内に指定される待
行列内に入れることによって前記コマンドに応答し、前記コマンドに指定される
前記待行列から記述子を取り出すことによりデキュー・コマンドに応答する待行
列マネージャ; によって構成され、データ・ストリーム・プロセッサが、前記被受信データ・
ストリームのペイロードと前記バッファ・マネージャにより提供されるアドレス
により前記バッファ・マネージャに対する書込動作を実行し、前記アドレスを含
む記述子でエンキュー動作を実行することにより被受信データ・ストリームに応
答し、前記バッファ・マネージャに対する読込動作内の前記デキュー動作の結果
として得られる記述子内のアドレスを用いてデキュー動作を実行し、前記バッフ
ァ・マネージャから受信される前記ペイロードを利用してデータ・ストリームを
生成し、前記被生成データ・ストリームを送信することによりデータ・ストリー
ムを送信することを特徴とする集積回路。 【請求項6】 データ・ストリームを受信および/または送信する複数のデ
ータ・ストリーム入力および/または出力; 各々がデータ・ストリーム入力および/または出力に結合される、前記データ
・ストリームを処理する複数のデータ・ストリーム・プロセッサ;および 前記データ・ストリーム・プロセッサのうち特定のプロセッサを統合して、前
記被統合データ・ストリーム・プロセッサがデータ・ストリームの処理において
協働する統合装置であって: 前記被統合データ・ストリーム・プロセッサ間の設定可能な相互接続部; 前記被統合データ・ストリーム・プロセッサの動作を調整する設定可能動作
コーディネータ;および 前記設定可能相互接続部と前記設定可能動作コーディネータとを必要に応じ
て指定し、前記データ・ストリーム・プロセッサを統合する設定装置; を備える統合装置; によって構成されることを特徴とする集積回路。 【請求項7】 データ・ストリームを受信および/または送信する複数のデ
ータ・ストリーム入力および/または出力; 前記データ・ストリームを処理する複数のデータ・ストリーム・プロセッサで
あって、各々がデータ・ストリーム入力および/または出力に結合され: 制御データ・プロセッサ; 前記データ・ストリーム入力から受信されるデータ・ストリームを処理する
受信プロセッサ;および/または データ・ストリームを処理して前記データ・ストリーム出力に出力する送信
プロセッサ;および 前記制御データ・プロセッサと前記受信プロセッサおよび/または前記送信
プロセッサとにより共有され、前記受信プロセッサおよび/または前記送信プロ
セッサと前記制御データ・プロセッサとにより利用されて前記受信プロセッサお
よび/または前記送信プロセッサおよび前記制御データ・プロセッサによるデー
タ・ストリームのパイプライン化処理の調整を行う情報を含むデータ構造; を備える複数のデータ・ストリーム・プロセッサ; によって構成されることを特徴とする集積回路。 【請求項8】 データ・ストリームを受信および/または送信する複数のデ
ータ・ストリーム入力および/または出力;および 前記データ・ストリームを処理する複数のデータ・ストリーム・プロセッサで
あって、各々がデータ・ストリーム入力および/または出力に結合され: 前記データ・ストリーム入力から受信されるデータ・ストリームをシリアル
に処理する受信プロセッサ;および/または データ・ストリームをシリアルに処理して、前記データ・ストリーム出力に
出力する送信プロセッサ; を備える複数のデータ・ストリーム・プロセッサ; によって構成され、前記受信プロセッサおよび/または前記送信プロセッサが
複数の処理コンポーネントを有し、前記コンポーネントのうち1つ以上のコンポ
ーネントを前記データ・ストリームの処理において迂回するよう設定することが
できることを特徴とする集積回路。 【請求項9】 データ・ストリームを受信および/または送信する複数のシ
リアル・データ・ストリーム入力および/または出力;および 前記データ・ストリームを処理する複数のデータ・ストリーム・プロセッサで
あって、各々がデータ・ストリーム入力および/または出力に結合され: 前記シリアル・データ・ストリーム入力から受信されるデータ・ストリーム
をシリアルに処理する受信プロセッサ;および/または データ・ストリームをシリアルに処理して、前記シリアル・データ・ストリ
ーム出力に出力する送信プロセッサ; を備える複数のデータ・ストリーム・プロセッサ; によって構成され、前記受信プロセッサが被処理データ・ストリームをメモリ
に書き込み、さらに/あるいは、前記送信プロセッサが被処理データ・ストリー
ムをメモリから読み込み、前記受信プロセッサは前記メモリから、処理すべきデ
ータ・ストリームを読むよう再設定することができ、さらに/あるいは、前記送
信プロセッサが被処理データ・ストリームを前記メモリに書き込むよう再設定す
ることができることを特徴とする集積回路。 【請求項10】 データ・ストリームをシリアルに受信および/または送信
する複数のシリアル・データ・ストリーム入力および/または出力; データ・ストリームを平行に受信および/または送信する少なくとも1組のパ
ラレル・データ・ストリーム入力および/または出力;および 前記データ・ストリームを処理する複数のシリアル・データ・ストリーム・プ
ロセッサであって、各々がシリアル・データ・ストリーム入力および/または出
力に結合され: 前記シリアルデータ・ストリーム・入力から受信されるデータ・ストリーム
を処理するシリアル受信プロセッサ;および/または データ・ストリームを処理して、前記データ・ストリーム出力に出力するシ
リアル送信プロセッサ;および 前記1組のパラレル・データ・ストリーム入力に結合される少なくとも1つ
のパラレル・データ・ストリーム・プロセッサであって: 前記1組のパラレル・データ・ストリーム入力から受信されるデータ・ス
トリームを処理するパラレル受信プロセッサ;および/または データ・ストリームを処理して、前記1組のパラレル・データ・ストリー
ム出力に出力するパラレル送信プロセッサ; を備える少なくとも1つのパラレル・データ・ストリーム・プロセッサ; を備える複数のシリアル・データ・ストリーム・プロセッサ; によって構成されることを特徴とする集積回路。 【請求項11】 信号を受信および/または送信する複数のI/Oピン; 前記信号により表されるデータを処理するデータ・ストリーム・プロセッサ; その複数の設定を指定する書込可能設定指定子;および 前記複数のI/Oピンと前記データ・ストリームプロセッサとの間に結合され、
前記設定指定子に応答して前記設定指定子による指定に応じて前記I/Oピンを設
定する設定回路構成; によって構成されることを特徴とする集積回路。 【請求項12】 前記設定指定子が前記I/Oピンの電気的特性を指定し、前
記設定回路構成が要求される前記電気的特性により前記I/Oピンを設定すること
を特徴とする請求項11記載の集積回路。 【請求項13】 複数のデータ・ストリーム・プロセッサが存在し、前記設
定指定子が、前記複数のデータ・ストリーム・プロセッサのうちどのプロセッサ
を前記複数のI/Oピンに接続するかを指定し、それにより、複数のデータ・スト
リーム・プロセッサが前記複数のI/Oピンにより受信および/または送信される
前記信号が表す前記データの処理を共有することができることを特徴とする請求
項11記載の集積回路。 【請求項14】 前記データ・ストリーム入力および/または出力に信号を
受信および/または送信する複数のI/Oピン; その複数の設定を指定する書込可能な設定指定子;および 前記複数のI/Oピンと前記データ・ストリーム・プロセッサとの間に結合され
、前記設定指定子に応答して、前記設定指定子による指定に応じて前記I/Oピン
を設定し、それにより前記集積回路を複数の送信プロトコルで利用することがで
きるようにする設定回路構成; によってさらに構成されることを特徴とする請求項5記載の集積回路。 【請求項15】 各データ・ストリーム・プロセッサが複数の処理コンポー
ネントを有し、前記データ・ストリームの処理において前記コンポーネントのう
ち1つ以上のコンポーネントを迂回するよう個別に設定することができることを
特徴とする請求項5記載の集積回路。 【請求項16】 前記データ・ストリーム・プロセッサのうち特定のデータ
・ストリームプロセッサを統合して、前記被統合データ・ストリーム・プロセッ
サがデータ・ストリームの処理において協働する統合装置であって: 前記被統合データ・ストリーム・プロセッサ間の設定可能な相互接続部; 前記被統合データ・ストリーム・プロセッサの動作を調整する設定可能動作
コーディネータ;および 前記データ・ストリームプロセッサを統合するための必要性に応じて、前記
設定可能相互接続部と、前記設定可能動作コーディネータとを指定する設定装置
; を備える統合装置; によってさらに構成されることを特徴とする請求項5記載の集積回路。 【請求項17】 前記データ・ストリーム入力および/または出力が平行に
データ・ストリームを受信および/または送信する少なくとも1組のパラレル・
データ・ストリーム入力および/または出力を備え、前記データ・ストリーム・
プロセッサが、前記1組のパラレル・データ・ストリーム入力および/または出
力に結合される少なくとも1つのパラレル・データ・ストリーム・プロセッサを
備え、各パラレル・データ・ストリーム・プロセッサが前記1組のパラレルデー
タ・ストリーム入力から受信されるデータを処理するか、さらに/あるいはデー
タ・ストリームを処理して、前記1組のパラレル・データ・ストリーム出力に出
力することを特徴とする請求項5記載の集積回路。 【請求項18】 前記データ・ストリーム・プロセッサ,前記待行列マネー
ジャおよび前記バッファ・マネージャのすべてが1つのアドレス空間を共有する
ことを特徴とする請求項17記載の集積回路。 【請求項19】 データ・ストリームを処理する特定のデータ・ストリーム
・プロセッサから受信される情報に応答して、前記特定のデータ・ストリームの
コンテクストに関する情報を生成し、前記コンテクスト情報を前記プロセッサに
提供するコンテクスト・プロセッサによってさらに構成されることを特徴とする
請求項5または17記載の集積回路。 【請求項20】 前記コンテクスト・プロセッサを前記データ・ストリーム
・プロセッサに結合する第1バス構造;および 前記データ・ストリーム・プロセッサを前記待行列マネージャと前記バッファ
・マネージャとに結合する第2バス構造; によってさらに構成されることを特徴とする請求項19記載の集積回路。 【発明の詳細な説明】 (産業上の利用分野) 本発明は、一般にディジタル・パケット・ネットワークに関し、さらに詳しく
は、このようなネットワークで用いられるスイッチに関する。 【0001】 (従来の技術):図1 パケットおよびプロトコル ディジタル・システム間の通信は、一般にパケットを介して行われる。パケッ
トは、図1の113に図示される。パケットとは、その意味がプロトコルにより
決定されるビットのシーケンスに過ぎない。プロトコルは、パケットを処理する
ディジタル装置がそのパケット内のビットをどのように解釈するかを定義する。
プロトコルに関わらず、多くのパケットはヘッダ115を有し、このヘッダによ
って、その特定のパケットがプロトコルに従ってどのように処理されるかが示さ
れる。また、パケットはパケットにより通信される実際の情報であるペイロード
117を有する。パケットは、トレーラ119も有し、これは単にパケットの終
点を示すものであるが、パケットの送信または処理中に起こったエラーの検出お
よび/または修正を行うことのできる情報を含む場合もある。それを定義するプ
ロトコルにより、パケットは固定長または可変長を有する。以下の説明では、ヘ
ッダ115とトレーラ119の内容をプロトコル・データと称する。これは、こ
れらの内容が解釈される方法が完全にプロトコルにより決定されるためである。
また、ペイロード117の内容をペイロード・データと呼ぶ。特定のプロトコル
のパケットを、フレームまたはセルと呼ぶことが多い。 【0002】 パケットは、ディジタル・システム内の通信のために多くの異なるレベルにお
いて用いられる。このため、ディジタル・システムのあるレベルにおけるパケッ
ト群のペイロードは、より高いレベルのパケットである場合がある。これを図1
の137に示す。IPパケット121は、IPプロトコルに従って解釈されるパケッ
トである。IPパケット121は、IPヘッダ123と、可変長のIPペイロード12
5とを有する。IPヘッダ123内の情報には、IPペイロード125の長さが含ま
れる。IPパケット121が実際のネットワーク内で移送されるとき、これは移送
パケット127のストリーム135のペイロード内に運ばれる。各移送パケット
127は、それ自身のヘッダ129と、ペイロード131と、トレーラ133と
を有する。本明細書で移送パケットと呼ぶものは、ISOの7層モデルのリンク層
にあるパケットである。移送パケットは、リンク層で用いられるプロトコルによ
り、固定長または可変長を有する。 【0003】 移送パケットを扱う装置は、パケット内のヘッダ129およびトレーラ133
により示されるようにパケットに対処し、ペイロード131の内容を検証するこ
とはない。移送パケットがその宛先に到達すると、ペイロードを目的のシステム
部分、この場合はIPプロトコルに従って動作するコンポーネントに渡して、この
コンポーネントがIPヘッダ123内に指示されるようにIPパケット121を扱う
。もちろん、IPペイロード125は、別のさらに高いレベルのパケットである場
合もある。たとえば、デクリプタ(暗号解読装置)に宛てられるパケットであり
、そのパケットのペイロードが暗号化されたIPパケット121であることもある
。このような場合は、IPパケット121を扱うコンポーネントがペイロードをデ
クリプタに渡し、デクリプタは暗号化されたIPパケット121を解読して、解読
済みのIPパケットをコンポーネントに戻し、コンポーネントはIPパケットを更な
る処理のために対処する。この処理には、もちろん、解読済みIPパケットを別の
宛先に送付することが含まれ、その宛先との通信が移送パケット127に関する
プロトコルを介するものである場合は、IPパケットを扱うコンポーネントが、移
送パケット・ストリームを生成するコンポーネントに解読済みIPパケットを送り
、解読済みIPパケットは移送パケット127のペイロード内に運ばれる。 パケット・スイッチ パケットを用いて、互いに遠隔に位置するディジタル・システム間で通信を行
う場合は、パケットはシステム間を接続するディジタル・ネットワーク上を移動
する。物理的レベルにおいて、ディジタル・ネットワークは、2つの装置間に信
号を送信するための何らかの媒体、たとえば放送電波,導線または光ケーブルを
用いる。パケットは、パケット・スイッチにより伝送路間に配信される。パケッ
ト・スイッチは、パケット・ヘッダに通常含まれる情報に従ってパケットを配信
する。 【0004】 予想されるように、各種のプロトコルは、それ自身の配信規則を持つ。たとえ
ば、IPプロトコルは論理配信を用いる。すなわち、IPパケットの各発信源または
宛先には論理IPアドレスがあり、ある宛先に宛てられるIPパケットは、そのヘッ
ダ内に宛先の論理IPアドレスを有する。ヘッダは、宛先の物理的位置を示さない
。IPパケット・スイッチは、IPアドレスを物理的アドレスに変換しなければなら
ず、その物理的アドレスがパケットを少なくとも宛先までの道筋の一部まで送り
出す。また、IPパケット・スイッチは、IPパケットをペイロード131として運
ぶ、その物理的アドレスに向けられる移送パケットのストリーム135を構築し
なければならない。このため、IPノード109(n)はイーサネットLAN105
(a)上のイーサネット・ノード107(n)であり、LAN105(a)に接続
されるIPパケット・スイッチは、IPパケットをペイロードとして運ぶイーサネッ
ト・ノード107(n)に向けられるIPパケットに応答しなければならない。 【0005】 典型的なパケット・スイッチを101に示す。パケット・スイッチ101は、
いくつかの物理的媒体106に接続され、それを介して、パケット・スイッチ1
01はデータを受信および送信する。このような媒体の例としては、光ファイバ
・ケーブルまたは電気導体で作られるケーブルがある。これらの各媒体106は
、媒体を介して送付されるデータを定義するための独自のプロトコルを有する。
たとえば、光ケーブルを介してデータを送付するために広く用いられるプロトコ
ルの1つにSONETプロトコルがある。図1においては、媒体106(a...m)はSO
NETプロトコルを利用する光ケーブルであり、媒体106(n...z)は、電気ケー
ブルである。中間媒体レベルにあるパケット−−ここでは媒体パケットと呼ぶ−
−は、そのペイロードとして移送パケットを有する。ISO7層モデルにおいては
、媒体パケットは、物理層パケットである。スイッチ103において、光ケーブ
ル上に送受信される移送パケットは、ATM広域ネットワーク111で用いられるA
TMプロトコルに従って構築され、電気ケーブル上に送受信される移送パケットは
ローカル・エリア・ネットワーク109で用いられるイーサネット(商標)プロ
トコルに従って構築される。多くの場合、移送パケットは、そのペイロードとし
てIPパケットを有し、その場合、パケット・スイッチ103はIPパケットをIPノ
ード109に配信する。上述のように、IPパケットをその宛先に到達させるため
に移動する媒体106(i)を決定し、ペイロードとしてその媒体で用いられる
移送パケット・ストリームを有する媒体に必要なプロトコルに従ってパケットの
ストリームを構築することによって、パケット・スイッチはそれを行う。また、
これらのパケットは、そのペイロードとしてIPパケットを有する。このため、パ
ケット・スイッチ103がIPノード109(n)に向けられるWAN111からIP
パケットを受信し、IPノード109(n)がイーサネットLAN105(a)上の
イーサネット・ノード107(n)である場合は、パケット・スイッチ103は
、媒体106(n)が必要とする形式でパケットのストリームを構築しなければ
ならない。その媒体のペイロードは、イーサネット・ノード107(n)に向け
られるイーサネット・パケットのストリームであり、これらはIPパケットをその
ペイロードとして有する。 【0006】 そのため、スイッチ103は、次のことができなければならない: ・入力媒体のプロトコルが必要とする形式を有するパケットの着信ストリームを
読み込み、そのペイロードである移送パケットと移送パケットのペイロードであ
る他の種類のパケットとを検索すること; ・ATM WAN111上に受信される移送パケットをパケット・スイッチ103に接
続されるイーサネットLANの1つにある他の宛先に配信すること; ・イーサネットLAN105上に受信される移送パケットをパケット・スイッチ1
03に接続されるイーサネットLANの1つにある他の宛先に配信すること; ・IPパケットと共にIPアドレスが必要とするパケットを配信すること; ・出力媒体のプロトコルが必要とする形式を有し、そのペイロードとして他種の
パケットを含むペイロードとして移送パケットを有するパケットの発信ストリー
ムを生成すること。 【0007】 このような配信には、ある種の移送パケットを他種の移送パケットに変換する
ことが必要になる。たとえば、IPパケットがATM WAN111から来て、イーサネ
ットLAN105(a)内のイーサネット・ノード109(n)を宛先として有す
る場合、パケット・スイッチ103はATM移送パケットのペイロードからIPパケ
ットを抜粋し、それをイーサネット・ノード107(n)に向けられるイーサネ
ット・パケットのペイロードに入れなければならない。 【0008】 さらに、パケット・スイッチは、フィルタリング,暗号化/暗号解読またはス
クランブリング/デスクランブリング(スクランブル解除)など機密保持機能を
実行するために用いられることが多い。パケット・スイッチ103は、ここでは
私的ネットワーク104と公的ネットワーク102との間の境界にあるものとし
て図示される。各IPパケット121のヘッダには、パケットの発信源IPアドレス
と宛先IPアドレスとが含まれ、私的ネットワーク104の機密保持手段は、特定
の発信源アドレスを伴う公的ネットワーク102から私的ネットワーク104へ
のIPパケットによるアクセスを禁じ、さらに特定の発信源アドレスを伴う私的ネ
ットワーク104から公的ネットワーク102へのパケットによるアクセスも禁
じる。スイッチ103は、各々の着信IPパケットをその発信源アドレスを禁止さ
れる発信源アドレスのリストと比較することによりフィルタリングし、着信パケ
ットがリストにある場合は、それを廃棄する。スイッチ103は、着信パケット
を同様の方法でフィルタリングする。暗号化/暗号解読に関しては、パケット・
スイッチ103は、そのペイロードが私的ネットワーク104内のIPアドレスに
宛てられる暗号化されたIPパケットである公的ネットワーク102からのIPパケ
ットを受信することもある。このような場合、パケット・スイッチ103は、暗
号化されたIPパケットを取り出し、それを暗号解読し、私的ネットワーク104
内の宛先に送付する。同様に、パケット・スイッチ103は、公的ネットワーク
102を介して私的ネットワーク104に属する宛先に送付されるIPパケットを
受信し、IPパケットを暗号化して、公的ネットワーク102を介して他のIPパケ
ットを送付する前に他のIPパケットにペイロードとして配置することもある。 パケット・スイッチにより起こる問題点 パケット・スイッチの設計のために、エンジニアにとって多くの問題が起こる
。上記の説明から明らかなように、パケット・スイッチは着信パケット・ストリ
ーム内にペイロードを配置し、発信パケット・ストリームを生成し、移送レベル
またはさらに高度なレベルにおいて配信し、パケット内の情報を変換し、フィル
タリングし、暗号化/暗号解読を行うなど、複雑な動作を実行しなければならな
い。パケット・スイッチは、これらの動作を迅速に、しかも高い処理能力をもっ
て実行しなければならない。また、パケット・スイッチは、eメールがディジタ
ルTVなどのサービスを通じて送られてから妥当な時刻に(時間で測定)到着しさ
えすればよく、パケットはその宛先に互いの一定の時間内に到着しなければなら
ないeメールなどから、パケット間の時間的間隔のみならず、パケットがその発
信源から宛先まで移動する時間の長さの合計にも厳格な制約が加えられるパケッ
ト電話方式まで、種々のサービスを扱うことができなければならない。 【0009】 現代の電子装置においては、高速,高処理能力および時間的制約を満足させる
ことは、特殊な目的のハードウェアを利用することで実現されてきたのに対し、
複雑な部分はプログラマブル・プロセッサを利用することで対処されてきた。特
殊目的のハードウェアによる装置は、通常、高速であるが高価で、融通がきかず
、複雑な処理を行うことができない。プログラマブル・プロセッサによる装置は
、通常は安価で融通性があり、任意の所望の処理を行うことができるが低速であ
る。 【0010】 このため、高速パケット・スイッチは、特殊目的ハードウェアに準拠していた
。予想されるように、このようなパケット・スイッチは高速で処理能力も高く、
時間的制約を満足させることができたが、高価で、融通がきかず、フィルタリン
グまたは暗号化/暗号解読などの複雑な機能を実行することができなかった。さ
らに、各種の移送プロトコルは、それ自身の特殊なハードウェアを必要とし、そ
のために、高速スイッチで利用される移送プロトコルを変更するには、スイッチ
の特殊目的ハードウェアを変更することが必要であった。 【0011】 より低速のパケット・スイッチは、プログラマブル・プロセッサに準拠するも
のであった。この場合も、予想されるように、これらのスイッチはまず、比較的
安価で、任意の所望の複雑な機能を実行することができ、移送プロトコルまたは
その他のプロトコルの変更に対処するためには再プログラミングしさえすれば済
む。しかしながら、プログラマブル・プロセッサに準拠するパケット・スイッチ
は、特殊目的ハードウェアを伴って構築されるパケット・スイッチに見られるよ
うな速度,処理能力または時間的制約を満足する能力を持たない。 【0012】 必要とされるのは、融通性があり、低価格で、プログラマブル・プロセッサ準
拠のパケット・スイッチに特有の複雑な機能を実行する能力を有するが、時間的
制約を満足させ、高速で高処理能力を提供することができるパケット・スイッチ
である。このようなパケット・スイッチを提供することが、本明細書に開示され
るディジタル通信プロセッサの目的である。 【0013】 (発明の概要) 本発明は、複数のデータ・ストリーム・プロセッサと、ストリーム・コンテク
スト・プロセッサと、待行列マネージャと、バッファ・マネージャとを備える集
積回路を提供することにより、一般にデータのストリームを処理するパケット・
スイッチおよび装置の上記の問題点を克服する。 【0014】 データ・ストリームを受信するデータ・ストリーム・プロセッサは、データ・
ストリームから制御情報を抜粋し、それをコンテクスト・プロセッサに送り、デ
ータ・ストリームのコンテクストに必要とされるように解釈し、コンテクスト・
プロセッサにより与えられる結果を用いてデータ・ストリームを処理する。デー
タ・ストリームをさらに送信する場合は、データ・ストリーム・プロセッサが着
信データ・ストリームからのペイロードをバッファ・マネージャに与えて、バッ
ファ内に格納し、エンキュー・コマンド(enqueue command)を待行列マネージ
ャに送付する。エンキュー・コマンドは、少なくともバッファを識別するタッグ
を含む記述子(descriptor)と、データ・ストリームを送信中のデータ・ストリ
ーム・プロセッサが読み込む待行列に関する待行列指定子(queue specifier)
とを含む。待行列マネージャは、記述子を適切な待行列に入れる(エンキューす
る)。送信側のデータ・ストリーム・プロセッサが記述子を待行列から外す(デ
キューする)と、タッグを用いてバッファからペイロードを取り出し、ペイロー
ドを用いて出力データ・ストリームを作成し、出力データ・ストリームに関して
必要であれば制御情報を加える。記述子は、データ・ストリーム・プロセッサ上
で働くプログラムにより完全に定義されるので、その結果、待行列マネージャが
受信側のデータ・ストリーム・プロセッサと送信側のデータ・ストリーム・プロ
セッサとの間に順序を付けて情報を伝えるための一般的なメカニズムを提供する
。 【0015】 データ・ストリーム・プロセッサは、受信プロセッサと、送信プロセッサと、
制御データ・プロセッサと、ローカル・メモリと、受信プロセッサ,送信プロセ
ッサおよびバッファ・マネージャの間と、ローカル・メモリとバッファ・マネー
ジャとの間のDMAアクセスを行うDMAエンジンとを備える。データ・ストリーム・
プロセッサの各々に属するローカル・メモリと、バッファ・マネージャおよび待
行列マネージャに属するローカル・メモリとが、単独のグローバル・アドレス空
間のすべての部分であり、グローバル・アドレス空間に対してアクセスする装置
により読み書きされる。データ・ストリーム・プロセッサがデータ・ストリーム
を受信している間、受信プロセッサと制御データ・プロセッサとは協働してスト
リームを以下のように処理する:送信プロセッサがストリームを受信し、ストリ
ームから制御情報を抜粋し、それを制御データ・プロセッサに渡し、ペイロード
をバッファ・マネージャにDMA処理する。送信プロセッサがストリームの次の部
分に関して働いている間、制御データ・プロセッサはコンテクスト・プロセッサ
を用いてDMA処理された部分に関するコンテクスト情報を処理し、エンキュー・
コマンドをDMA処理されたペイロードの記述子と共に待行列マネージャに送付す
る。データ・スコープと呼ばれるデータ構造により、制御データ・プロセッサと
受信プロセッサとの間の情報交換が簡素化される。送信プロセッサと制御データ
・プロセッサとの間の相互作用は実質的に同じであるが、ペイロードは逆方向に
移動する。 【0016】 データ・ストリーム・プロセッサは、シリアル・データ・ストリーム・プロセ
ッサと、少なくとも1つのパラレル・データ・ストリーム・プロセッサとを備え
る。パラレル・データ・ストリーム・プロセッサは、集積回路を、同じ種類の別
の集積回路や、バスまたは切換組織に接続するために用いられる。 【0017】 シリアル・データ・プロセッサは高度に設定可能である。設定は、グローバル
・アドレス空間内のレジスタにより行われる。各シリアル・データ・プロセッサ
は別々のデータ・ストリームを受信および/または送信することができ、あるい
はシリアル・データ・プロセッサ群が1つのデータ・ストリームを処理する際に
協働するよう統合される場合もある。シリアル・データ・プロセッサのI/Oピン
は、異なる物理的媒体の電気要件を満たすよう設定され、また統合されるシリア
ル・データ・プロセッサのすべてが同じ入力を受信するように設定することもで
きる。受信プロセッサまたは送信プロセッサ内の種々の装置を必要に応じて可能
化または不能化し、受信または送信される特定の種類のシリアル入力ストリーム
に対処することができる。また、受信または送信プロセッサは、すでに処理した
データ・ストリームを再循環させることもできる。 【0018】 本願は、以下の米国出願に基づく優先権主張出願である。 ・第60/084,706号,Brown他「Programmable packet switch」(19
98年5月8日出願);および ・第60/105,823号,Brown他「Digital communications processor」
(1998年10月27日出願)。 【0019】 (好適な実施例の説明) 以下の詳細な説明は、本発明のディジタル通信プロセッサを含むディジタル・
パケット・スイッチの構造および動作の概要から始まり、続いてディジタル通信
プロセッサの構造および動作の概要を述べ、その上でディジタル通信プロセッサ
のコンポーネントの構造および動作の詳細を述べる。 ディジタル通信プロセッサを含むディジタル・パケット・スイッチ:図2 図2は、パケット・スイッチ201のブロック図である。パケット・スイッチ
201は、本発明のディジタル通信プロセッサを実現するディジタル通信プロセ
ッサ集積回路203を用いて構築される。集積回路201は、次の外部装置のた
めのインタフェースを有する: ・移送プロトコルにより送付または受信されるパケットのための、最大16対2
05(0...15)のシリアル入力204とシリアル出力206; ・オプションのディジタル切換装置からの32ビット出力および32ビット入力
(インタフェース221) ・オプションのホスト・プロセッサ227とのPCIバス・インタフェース225
; ・SDRAMバッファ・メモリ229との128ビット幅インタフェース228; ・SRAM変換テーブル・メモリ207との64ビット幅インタフェース;および ・待行列メモリ213との32ビット幅インタフェース。 【0020】 これらのインタフェースに関してより詳細に述べると、ディジタル通信プロセ
ッサ203は、単独のDCP203内のシリアル入力および出力を多くの異なる媒
体および移送プロトコルのために用いることができるようにプログラミングされ
る。DCP203が用いられているネットワークが変更されると、DCP203は新た
なネットワーク配置に対処するよう再プログラミングされる。高速プロトコルは
、いくつかのシリアル入力または出力を高速プロトコル用の送信媒体に接続する
ことにより対応される。好適な実施例においては、媒体および移送プロトコルに
は次のものが含まれる: ・10Mbイーサネット; ・100Mbイーサネット; ・1Gbイーサネット; ・T1/E1インタフェース; ・T3/E3インタフェース; ・OC-3cインタフェース;および ・OC-12cインタフェース。 【0021】 DCP203は、入力204において媒体パケットを受信し、出力206から媒
体パケットを出力する。媒体パケットが入力204で受信され出力206で送信
されるまでの間に何が起こるかは、DCPがどのようにプログラミングされている
かにより決まる。DCP203をプログラミングすることのできる方法には、次の
ものがある: ・各入力が受信プロセッサを有し、各出力が送信プロセッサを有する。これらの
プロセッサは、異なる種類の媒体パケット,移送パケットおよび移送パケットの
ペイロードであるパケットに対処するよう個別にプログラミングされる; ・入力と出力とが統合される; ・パケットのストリームに関わる状態の動作をプログラミングすることができる
;例としては、アドレス変換およびエラー修正コード処理がある; ・DCP内のパケットの発信源と宛先との関係をプログラミングすることができる
;また ・パケット発信源からパケット宛先まで伝えられる情報を、宛先で解釈されるよ
うにプログラミングすることができる。 【0022】 典型的なパケット切換用途に関しては、DCP203は、次のように動作するよ
うプログラミングされる。入力204において各媒体パケットが受信されると、
DCP203は媒体パケットのペイロードからのデータをバッファ・メモリ229
内のバッファ231に格納する。この被格納データを、ここではプロトコル・デ
ータ・ユニットまたはPDU(protocol data unit)と称する。多くの場合、PDUは
、媒体パケットのペイロードの一部である移送パケットである。媒体パケットが
出力されると、DCP203はバッファ231からPDUを検索し、それに必要な変更
を加え(たとえば移送パケット内の配信情報の変更や移送パケットの種類の変更
)、媒体パケットのためのプロトコル・データを加える。 【0023】 DCP203は、変換テーブル・メモリ207内の変換テーブル209を用いて
移送パケットと、より高度なレベルのパケットとを配信する。パケットが配信さ
れると、DCP203はパケットのためのPDUを含むバッファ231に関する記述子
217をパケットが出力される出力206に関する待行列メモリ213の待行列
215の最後尾に置く。一般に、各待行列215は1つの出力206と関連する
が、入力204で受信されるパケットをどの待行列215の最後尾に置いてもよ
く、そのためにある入力204で受信されるパケットを複数の出力206を介し
て出力することができる。パケットはマルチキャストされる場合もある。すなわ
ち、2つ以上の待行列215に入れられる。DCP203は、出力206に関わる
待行列の最前部から記述子217を取り出し、記述子により識別されるバッファ
231の内容を待行列の出力206に出力する。 【0024】 DCP203は、221に示されるように、任意のディジタル切換組織からパケ
ット・データを受信し、それにパケット・データを与えることもできる。切換組
織は、パケット・スイッチ201などの別のパケット・スイッチである場合も、
あるいはディジタル・データのストリームを配信することのできる任意の別の装
置である場合もある。たとえば、パケット・スイッチ201を、クロスバー・ス
イッチまたはバスに対する他のパケット・スイッチに接続することもできる。イ
ンタフェース221から受信される、あるいはインタフェース221に出力され
るパケット・データの配信は、基本的にはシリアル入力204において受信され
るパケットに関して上記に説明した通りである。最後に、DCP203はPCIバス2
25を介して、オプションのホスト227からデータを受信し、それにパケット
・データを送る。 【0025】 外部制御インタフェースには、GPIOインタフェース223とPCIバス・インタ
フェース225とが含まれる。GPIOインタフェース223は、LED,不揮発性メ
モリ,物理層シリアル送信および受信コンポーネントおよび電源などの外部シス
テム要素の監視と制御を行うユーティリティ・インタフェースである。PCIバス
・インタフェース225は、DCP203と、切換システム201を制御し、シス
テム201で受信されるパケット内容のアクセス・チェックなどより高度なレベ
ルの動作も実行するホスト・プロセッサとの間の通信を行う。 動作の詳細な例 関連技術の説明の例を用いて、パケット・スイッチ201のコンポーネントが
パケットを配信するためにどのようにプログラミングされるかを、より詳細に説
明する。例として、シリアル対205(i)のシリアル入力204(i)は、そ
のペイロードとしてATM移送パケットのストリームを有するSONETパケットのスト
リームを受信している。ATM移送パケットは、そのペイロードとして、IPノード
109(n)に向けられるIPパケットを有し、これはイーサネットLAN105(
a)に付属される装置107(n)上にある。イーサネットLAN105(a)は
、シリアル対205(j)のシリアル出力206(j)に接続される。パケット
・スイッチ201はIPパケットを配信するために用いられるので、DCP203はI
Pパケットのヘッダを含むペイロードに関して、シリアル入力204(i)上の
着信移送パケットを走査するようプログラミングされている。IPパケット・ヘッ
ダが見つかると、DCP203はATM移送パケットからのペイロードを、バッファ・
タッグ233により指定されるバッファ・メモリ229内のバッファ231に送
り始める。IPパケットがバッファよりも長い場合は、追加のバッファが採用され
る。 【0026】 IPパケットがバッファ・メモリ229に転送される間、DCP203はIPパケッ
トのヘッダ内の情報を処理して、IPパケットをどのように配信するかを決定し、
その後でIPパケットを配信する。ヘッダ情報の処理は、変換テーブル・メモリ2
07内の変換テーブルを用いて行われる。この場合、2回の変換が行われる。す
なわち、IPパケットのヘッダ内のIP宛先アドレスを、その宛先アドレスを持つIP
ノードが位置する装置107(n)のイーサネット・アドレスに変換しなければ
ならず、また装置107(n)のイーサネット・アドレスを待行列メモリ213
内の待行列の識別子に変換しなければならない。そこから、シリアル出力206
(j)はイーサネット・パケットを出力する。これらのうち1つ、IP宛先アドレ
ス(IPA: IP destination address)からイーサネット・アドレス(ENA: Ethern
et address)への変換に関する変換テーブルの入力値211(i)を変換テーブ
ル209(a)に示す。 【0027】 DCP203は、IPパケットのヘッダからの情報と変換テーブル209(a)と
を用いて、IPパケットの記述子207を作成する。この記述子には、イーサネッ
ト・アドレスと、パケットを含むバッファ231のバッファ・タッグ233とが
含まれる。DCP203は、次に、記述子207をシリアル出力206(j)から
出力されるパケットのための待行列215(j)の最後尾221に置く。記述子
207が待行列215(j)の最前部に到達すると、DCP203はIPAを含むバッ
ファ231の内容を取り出し、その内容を、シリアル出力206(j)に関して
適切な媒体プロトコルを有するパケットのストリームにする。これらの媒体パケ
ットは、そのペイロードとして、イーサネット移送パケットを有する。情報記述
子207を利用して、DCP203はイーサネット移送パケットに、装置107(
n)のイーサネット・アドレスを与える。次にイーサネット移送パケットのペイ
ロードは、バッファ・タッグにより指定されるバッファ内に格納される。 【0028】 DCP203は、もちろん上記の動作またはその変形を、最大16個の着信移送
パケットのシリアル・ストリームと16個の発信移送パケットのストリームに関
して同時に実行し、場合によっては、それ自身とインタフェース221における
ディジタル・スイッチとの間のデータ・ストリームおよび/または、PCIインタ
フェース227を介してそれ自身と外部ホスト227との間のデータ・ストリー
ムを転送するのと同時に実行することがあることに留意されたい。さらに、上記
に説明したように、多くの場合、パケット切換動作は厳格なタイミング上の制約
により支配される。下記に、より詳細に説明するように、DCP203の設計にお
ける重要な要素は、DCP203内部に、上記に説明したような種類の動作に必要
な速度と待ち時間の特性を有するデータ経路およびメモリ構造を提供することで
ある。 DCP203の構造:図3および図5 図3は、DCP203の内部構造の高レベルのブロック図である。図3に示され
る図2のコンポーネントは、図2内に示す参照番号を付される。移送パケットが
送受信されるシリアル入力および出力205から始まり、各シリアル対205は
、自身のプログラマブル・チャネル・プロセッサ307に接続される。このプロ
セッサ307は、対からのシリアル入力と対へのシリアル出力とを処理する。そ
のため、好適な実施例においては、16個のチャネル・プロセッサ307が存在
する。非常に高速の移送プロトコルに関しては、最大4個までののチャネル・プ
ロセッサ307を、309に示すチャネル・プロセッサ・クラスタ内に結合する
ことができる。 【0029】 組織プロセッサ303は、チャネル・プロセッサと同様であるが、インタフェ
ース221から受信しインタフェース221に送り出すパラレル・データを処理
する点が異なる。テーブル・ルックアップ・エンジン301は、変換テーブル・
メモリ207内のテーブルを用いてアドレス変換を行う。待行列管理エンジン3
05は、記述子の待行列215を管理する。実施例によっては、待行列がDCP IC
203内のメモリに格納されることも、待行列メモリ213が別個の外付けメモ
リである場合もある。バッファ管理エンジン315は、バッファ・メモリ229
内のバッファ231を管理する。実行プロセッサ313は、他のコンポーネント
内のデータを初期化および維持して、オプションの外部ホスト227とのPCIバ
ス・インタフェースおよびGPIOインタフェースを管理し、必要に応じて、より高
レベルの処理を実行する。実行プロセッサ313のプログラムとデータは、SDRA
M229に格納される。実行プロセッサ313,チャネル・プロセッサ309お
よび組織プロセッサ303は、すべて、TLE301,QME305およびBME314
の装備を利用して、パケットおよび/またはフレームを処理し、本明細書におい
ては、集合的にパケット・プロセッサと称される。しかしここでは、パケット・
プロセッサはパケットのみならず他のあらゆるデータのストリームを処理するた
めにも用いられ、汎用のビット/nバイト/バイト/または(組織プロセッサの
場合は)32ビット・ワード・ストリーム・プロセッサと見なすこともできるこ
とに注目すべきである。 【0030】 DCP203のすべての処理コンポーネントは、プログラミング可能である。チ
ャネル・プロセッサ307は、異なる種類の媒体パケット,移送パケットおよび
移送パケット・ペイロードを処理するよう個別にプログラミングすることができ
、組織プロセッサ303は、異なる切換装置で採用されるデータを処理するよう
プログラミングすることができる。テーブル格納部207内のテーブルは書込な
らびに読込が可能で、テーブル・ルックアップ・エンジン301はテーブル上で
異なる種類の照合(ルックアップ)を行うようプログラミングされる。待行列管
理エンジン305は、異なる数の待行列を設定し、待行列内に異なるサイズの記
述子を用いるようプログラミングすることができ、バッファ管理エンジン315
は、異なるサイズのプールをプール内で異なるバッファ・サイズにバッファする
ようプログラミングされる。最後に、XP313は、汎用プロセッサであり、任意
の機能を実行するようプログラミングすることができる。コンポーネントのプロ
グラムはDCP203が初期化されるときにロードされる。プログラム・コードは
外部ホスト227によりSDRAM229内にロードされるか、あるいはBME315に
より管理されるアドレス空間の一部である外部PROM内に格納される。いずれの場
合も、XP313はコードをコンポーネントのメモリにロードする。 【0031】 ディジタル通信プロセッサ203のバスおよびメモリ構造により、DCP203
は、テーブル・ルックアップ・エンジン301,待行列管理エンジン305およ
びバッファ管理エンジン315を共有資源として採用しながらパケット切換の速
度および時間的制約を満足することが可能になる。テーブル・ルックアップ・エ
ンジン301を除く、ディジタル通信プロセッサ203のすべてのコンポーネン
トは、1つのグローバル・アドレス空間321を共有する。各パケット・プロセ
ッサは、グローバル・アドレス空間321内に自身のローカル・メモリを有し、
そのローカル・メモリがグローバル・アドレス空間321に属する他のパケット
・プロセッサのローカル・メモリならびにBME315およびQME305に属するメ
モリにもアクセスすることができる。各パケット・プロセッサは、自身のローカ
ル・メモリには直接的にアクセスし、他のコンポーネントのローカル・メモリに
は32ビット・グローバル・バス319を介してアクセスすることができる。ま
た、組織プロセッサ303は、待行列管理エンジン305に対する独自の経路3
04を有する。 【0032】 図5は、グローバル・アドレス空間321の概要を示す。まず、チャネル・プ
ロセッサ307(0...15)のローカル・メモリ501からなるグローバル・
アドレス空間の部分504がある。部分504は、チャネル・プロセッサの各ク
ラスタ309のためのクラスタ・メモリ503にさらに細分される。特定のチャ
ネル・プロセッサ307(i)が自身のローカル・メモリ501(i)に対して
最速のアクセスを行うことができ、共にクラスタ・メモリ503を構成するその
クラスタ内の他のチャネル・プロセッサのローカル・メモリに対して次に速いア
クセスを行うことができ、グローバル・アドレス空間321の残りについては最
も遅いアクセスを行う。そのローカル・メモリがグローバル・アドレス空間32
1の一部である他のコンポーネントは、そのローカル・メモリが505に示され
る組織プロセッサ303と、そのローカル・メモリが507に示されるQME30
5と、そのローカル・メモリが513に示されるBME315と、そのローカル・
メモリが517に示されるQME305である。グローバル・アドレス空間を共有
するプロセッサは、一般に、プロセッサ間の通信のためにグローバル・アドレス
空間を使用することができる。たとえば、プロセッサは、それらの動作を調整す
るために、グローバル・アドレス空間内のシグナル(semaphores)を設定するこ
とができる。このようなシグナルを作成し使用するために、好適な実施例におけ
るプロセッサは、ビット試験および設定(test-and-set-bit)命令を有する。グ
ローバル・アドレス空間内で利用可能な他の情報には、QMEローカル・メモリ5
07内の待行列状況情報505,バッファ管理エンジン・ローカル・メモリ51
3内のバッファ状況情報515およびXPローカル・メモリ517内のシステム設
定レジスタ519およびシステム・インタフェース設定情報521がある。最後
に、QME305は、パケット・プロセッサが読み込んだ待行列に関する待行列状
況情報をパケット・プロセッサのローカル・メモリに書き込む。 【0033】 図3をさらに参照して、コンポーネントのローカル・メモリの各々は、ペイロ
ード・バス317によりバッファ管理エンジン315に結合される。これは、4
サイクル・バーストで動作して最大64バイトまでのデータをSDRAM229と他
のコンポーネントとの間に転送する128ビット幅バスである。ペイロード・バ
ス317を介して転送されるデータには、以下のものがある: ・実行プロセッサ313により用いられるプログラムおよびデータ; ・実行プロセッサ313がDCP203を設定するために用いるデータ; ・SDRAM229とパケット・プロセッサとの間に転送されるプロトコル・データ
・ユニット; ・バッファ・タッグ233;および ・パケット・プロセッサにより待行列に入れられ、そこから取り出される記述子
。 【0034】 SDRAM229とローカル・メモリとの間の転送は、直接メモリ・アクセス(DMA
:direct memory access)メカニズムにより行われる。転送を行うコンポーネン
トは、DMAメカニズムに対して転送のDMA命令を与え、DMAメカニズムは、コンポ
ーネントから更なる介入を受けなくとも転送を実行する。この構造により、プロ
トコル・データ・ユニットの転送と、コンポーネントによる他の処理とを平行に
行うことができ、DCP203の動作速度と処理能力とが大幅に向上する。 【0035】 ルックアップ・エンジン301とパケット・プロセッサとは、すべてリング・
バス311を介して接続される。リング・バス311は、64ビット幅で、それ
が接続するノード間で時間多重される。任意のある瞬間において、これらのコン
ポーネントの各々には1つないし5つのバス・スロットが割り当てられる。各ス
ロットは、64ビット・メッセージを伝えることができる。バスはそのノード間
で時間多重され、各ノードは所定の最大数のスロットを有するので、メッセージ
が確実にリング・バス311上のあるノードから他のノードへと一定の時間内に
移動することができる。好適な実施例においては、実行プロセッサ313はリン
グ・バス・メッセージを用いて、テーブル格納部207内のテーブルを設定およ
び読み込み、パケット・プロセッサは、リング・バス・メッセージを用いて、変
換のためにテーブル・ルックアップ・エンジン301に情報を与え、テーブル・
ルックアップ・エンジン301は、リング・バス・メッセージを用いて、変換結
果をパケット・プロセッサに送る。リング・バス311に結合されるすべての装
置がリング・バス311に結合される他の任意の装置との間でリング・バス・メ
ッセージを送受信することができるので、他の実施例においては、リング・バス
・メッセージを、たとえば、クラスタ309を構成するチャネル・プロセッサ3
07の動作を調整するために用いることができる。 DCP203のコンポーネントの協働例 図3によって示される詳細のレベルにおいて図1および図2の例を引き続き参
照すると、ATMパケットのストリームが入力線204(i)に受信される。入力
線204(i)は、チャネル・プロセッサ307(i)に属する。ATMパケット
が到着すると、チャネル・プロセッサ307(i)は一連のDMA転送を開始し、
まずパケットをチャネル・プロセッサ307(i)のローカル・メモリに送り、
次に、チャネル・プロセッサ307(i)が所有するバッファ・タッグ233に
よって指定されるバッファ231に転送する。これが進行する間、チャネル・プ
ロセッサ307(i)は、IPパケットを求めてATMパケットのペイロードを走査
する。IPパケットの始点を発見すると、チャネル・プロセッサ307(i)は、
IPパケット・ヘッダからIPパケットの宛先アドレスを抜粋し、テーブル・ルック
アップ・エンジン301に関する宛先アドレスを含むメッセージを作成する。こ
の場合、宛先アドレスは、イーサネットLAN105(a)に接続される装置10
7(n)上のIPノード109(n)を指定する。イーサネットLAN105(a)
はシリアル出力206(j)からパケット出力を受信する。チャネル・プロセッ
サ307(i)は、次に、リング・バス311内のスロットの1つにメッセージ
を入れる。チャネル・プロセッサ307(i)が装置107(n)のイーサネッ
ト・アドレスと、シリアル出力206(j)が対応する待行列の番号mとを伴う
メッセージに対する返信を受信すると、少なくともイーサネット・アドレスとバ
ッファのバッファ・タッグ233とを含む記述子217(k)を作成する。次に
、チャネル・プロセッサ307(i)は、ペイロード・バス317を介してエン
キュー・コマンドを、チャネル・プロセッサ307(i)に属するメールボック
スに書き込む。エンキュー・コマンドには、少なくとも記述子217(k)と待
行列番号mとが含まれる。待行列管理エンジン305は、記述子217(k)を
待行列215(m)の最後尾221に置くことによってコマンドに応答する。 【0036】 シリアル出力206(j)は、チャネル・プロセッサ306(j)に属し、待
行列管理エンジン305は、それに対して待行列215(m)の最前部219か
ら記述子を与える。プロセッサは、ペイロード・バス317を介して待行列21
5(m)を指定するデキュー・コマンドをそのメールボックスに書き込むことに
よりこれを実行する。待行列管理エンジン305は、待行列215(m)の最前
部219にある記述子217をペイロード・バス317を介してチャネル・プロ
セッサ307(j)に与えることにより、デキュー・コマンドに応答する。 【0037】 結局、待行列215(m)の最前部219にある記述子217が記述子217
(k)となる。チャネル・プロセッサ307(j)が記述子217(k)を有す
ると、記述子217(k)内のバッファ・タッグ233を用いて、IPパケットを
含むバッファからチャネル・プロセッサ307(j)のローカル・メモリに対す
るIPパケットのDMA転送を開始する。IPパケットが到着すると、チャネル・プロ
セッサ307(j)は、イーサネット装置107(n)にアドレス指定されるイ
ーサネット移送パケットのストリームを作成し、IPパケットをそのペイロードと
して備え、イーサネット・パケットのストリームをシリアル出力206(j)に
出力する。パケット内のイーサネット・アドレスは、もちろん記述子217(k
)から来るものである。 DCP203のバスおよびメモリ・アーキテクチャの利点 上記の説明から明らかになるように、DCP203のバスおよびメモリ・アーキ
テクチャにより、パケット・プロセッサは、パケット・ヘッダ処理,プロトコル
・データ・ユニット転送およびエンキュー操作とデキュー操作とを平行に行うこ
とができる。さらに、異なるバスが異なる経路となるだけでなく、それらに関し
て実行される動作の待ち時間要件を満足させる。このため、最も時間に敏感な動
作は、パケット・ヘッダ内の情報の変換である。これは、変換の結果が入手され
るまで配信を行うことができないためである。パケット・プロセッサの各々は、
リング・バス311内にスロットを有するので、各パケット・プロセッサは、保
証された時間内にテーブル・ルックアップ・エンジン301にアクセスすること
ができ、その結果、変換の時間的制約が満足される。 【0038】 一方で、パケット・プロセッサとSDRAM229との間のプロトコル・データ・
ユニット転送には、高帯域幅のバースト、すなわち正確にはローカル・メモリと
SDRAM229との間のペイロード・バス317を介するDMA転送により提供される
バーストが必要になる。バッファ管理エンジン315およびチャネル・プロセッ
サ307(i)からのバッファ・タッグの転送と、待行列管理エンジン305と
チャネル・プロセッサ307(i)との間の記述子の転送も時間的に厳格なもの
であるので、これらもぺイロード・バス317上で行われる。 【0039】 読み書きなど、時間的制約の少ない動作はグローバル・アドレス空間321内
で行うことができる。このような読み書きに要する時間は、グローバル・アドレ
ス空間にあるか否かにより決まる。特定のプロセッサ自身のグローバル・アドレ
ス空間の部分に対する読み書きが最も時間がかからず、次にかからないのが特定
のプロセッサのクラスタ309に属するプロセッサに対する読み書きであり、特
定のプロセッサのクラスタ309に属さないプロセッサに対する読み書きが最も
時間がかかる。 【0040】 TLE301を除くDCP203のプロセッサのすべてがグローバル・アドレス空間
321を共有することにより、プロセッサ間の通信が容易になる。たとえば、実
行プロセッサ313は、グローバル・アドレス空間321のその部分にデータを
書き込むことにょって他のコンポーネントを初期化および/または再設定するこ
とができ、パケット・プロセッサ307は待行列管理エンジン305により管理
される待行列215やバッファ管理エンジン315により管理されるバッファ2
31に関する状況情報またはクラスタ309内の他のパケット・プロセッサの状
況を、これらの装置に属するグローバル・アドレス空間の部分から状況情報を読
み込むことで入手することができ、プロセッサ群は、グローバル・アドレス空間
内のシグナルによってその行動を調整することができる。受信側のパケット・プ
ロセッサは、さらに、ある用途においては、グローバル・アドレス空間を利用し
て、それが受信するプロトコル・データ・ユニットをプロトコル・データが出力
される送信側パケット・プロセッサのローカル・メモリに直接書き込むこともで
きる。実行プロセッサ313は、最終的には、グローバル・アドレス空間を利用
して、実行プロセッサ313がグローバル・アドレス空間を共有する各々のプロ
セッサの状況を判断することができる。 【0041】 グローバル・アドレス空間の動作がきわめて頻繁に行われる場合は、専用のハ
ードウェア支援が行われる。たとえば、組織プロセッサ303は、待行列管理エ
ンジン305のグローバル・アドレス空間に専用にアクセスすることができ、そ
のためにグローバル・バス319に負担を与えずに待行列状況情報を入手するこ
とができる。同様に、各パケット・プロセッサは、グローバル・アドレス空間の
部分内にQME305のメールボックスに関する状況ビットを有し、これらのビッ
トは、待行列管理エンジン305に直接配線されるので、各パケット・プロセッ
サは、グローバル・バス319に負担を与えずにそのメールボックスの状況を判
断することができる。 パケット・プロセッサの詳細 次のセクションでは、チャネル・プロセッサ307(0...n)を詳細に説明
し、次に組織プロセッサ303を、最後に実行プロセッサ313を説明する。 チャネル・プロセッサ307(i)の概要:図4および図6 図4は、チャネル・プロセッサ307(i)のコンポーネントのブロック図で
ある。図3に示されるように、チャネル・プロセッサ307(i)は、シリアル
入力204(i)を介してシリアル・パケット入力を受信し、シリアル出力20
6(i)を介してシリアル・パケット出力を送り、リング・バス311に接続さ
れてその中にスロットを有し、ペイロード・バス317とグローバル・バス31
9とに接続される。統合経路433,435とクラスタ経路437,439とに
より、チャネル・プロセッサ307(i)は、そのクラスタ309内の他のチャ
ネル・プロセッサ307と統合して、きわめて高速の送信媒体を処理することが
できる。 【0042】 高レベルにおいて、チャネル・プロセッサ307(i)は3つのコンポーネン
トを有する:すなわち、他のコンポーネントの動作を制御しグローバル・アドレ
ス空間321にアクセスすることのできる汎用プロセッサであるチャネル・プロ
セッサ・リスク・コア(CPRC:channel processor risc core)401と、シリ
アル入力204(i)からパケットを受信し、シリアル出力206(i)にパケ
ットを出力する場合の処理を行うシリアル・データ・プロセッサ(SDP: serial
data processor)420と、チャネル・プロセッサ307(i)とBME315ま
たはQME305との間のグローバル・バス317を介するデータ転送を処理するD
MAエンジン411である。SDP420およびCP RISC コア401の両方が、リン
グ・バス・インタフェース415を介してリング・バス311に接続される。S
DP420は、2つのサブコンポーネントを有する:すなわち、着信パケットを
処理するRxSDP421と発信パケットを処理するTxSDP427である。 【0043】 続いてCPRC401の詳細を述べると、CPRC401は、周知のMIPS1命令集合の
部分集合を採用する汎用マイクロプロセッサである。CPRC401は、リング・バ
ス311上にメッセージを送受信することができ、SDP420と2つのレジスタ
・ファイルを共有する。抜粋空間417を用いて、SDP420により着信パケッ
トから抜粋されるプロトコル・データを格納し、CPRC401によって利用する。
一方で、合併空間419を用いてCPRC401によりSDP420に送られるプロト
コル・データを格納して、発信パケットの作成に用いる。 【0044】 CPRCには4つのコンテクスト、すなわち独立した集合のレジスタ・ファイルが
ある。CPRC401は、プログラム内の中断(BREAK)コマンドに応答するか、あ
るいはハードウェア割込に応答してコンテクスト間で切り替わることができる。
コンテクストには、優先順位が最も高い0から最も低い3までの番号により優先
順位が付けられる。各コンテクストは、コンテクスト・エントリ・レジスタとコ
ンテクスト・リターン・レジスタとを有する。コンテクストが変更されると、現
コンテクストで実行される次の命令のアドレスが現コンテクストのコンテクスト
・リターン・レジスタに格納され、新たなコンテクストのコンテクスト・エント
リ・レジスタに格納されるアドレスにおける命令により実行が進行する。 【0045】 コンテクスト切換を起こす5つのシステム・イベントがある: ・マスタ・リセット ・マスキング不可割込 ・デバッグ割込 ・ユーザ割込1 ・ユーザ割込2 マスタ・リセット・イベントとデバッグ割込イベントに関するコンテクスト・
エントリ・レジスタの設定はシステムに定義される。他のイベントに関してはプ
ログラミング可能である。 【0046】 命令メモリ403は、CPRC401による実行のコードを含む。このコードは、
CPRC401と、CP307(i)が属するクラスタ309内の他のCP307のCPRC
によってのみ読み書きされる。好適な実施例においては、コードは次の要領でIM
EM403内にロードされる。まず、実行プロセッサ313がグローバル・バス3
19を介してDMEM407にコードをロードし、次にCPRC401がそのコードをDM
EM407からIMEM403に転送する。 【0047】 DMEM405は、チャネル・プロセッサ307(i)のローカル・データ・メモ
リである。これは、CPRC401によるローカル格納と、ペイロード・バス413
を介するデータのDMA処理との両方に用いられる。DMEM405,抜粋空間417
および合併空間419はすべてグローバル・アドレス空間321の部分であり、
チャネル・プロセッサ307(i)のクラスタ309内の他のチャネル・プロセ
ッサ307と、DCP203内の他のプロセッサとにグローバル・バス317を介
してアクセスすることができる。好適な実施例においてこの構造を実現するDMEM
405に加わるメモリ・コンポーネントは、要求FIFO407,MUX407,グロ
ーバル・バス・インタフェース413およびペイロード・バス・インタフェース
411である。MUX407は、RxSDP421,TxSDP427,ペイロード・バス・
インタフェース411および要求FIFO406の間でDMEM405に対するアクセス
を多重化する。要求FIFO406は、グローバル・バス319に結合されるCCP2
03内の他のプロセッサがDMEM405に対してアクセスすること、CPRC401が
DM405とグローバル・アドレス空間321にアクセスすること、またCP30
7(i)のクラスタ309内のチャネル・プロセッサ307の他のCPRC401が
DMEM405にアクセスすることを可能にする。MUX407,DMEM405およびペ
イロード・バス・インタフェース411は、共にDMAエンジン441を構成し、
これがSRAM229とCPRC405およびSDP420の間でペイロード・バス317
を介してDMA動作を実行する。 【0048】 上記の構造に示されるように、RxDSP421,TxSDP427とペイロード・バス
・インタフェース411が、DMEM411に対するアクセスの第1優先順位を有し
、グローバル・バス・インタフェース413,CPRC401および他のCPRC401
は、残りのアクセス権に関して競合しなければならない。このため、この構造は
、一方でSDP420とDMEM405との間の、また、他方でDMEM405とSDRAM22
9との間のプロトコル・データ・ユニットのDMA転送に第1優先権を与える。 【0049】 シリアル・データ・プロセッサ420のコンポーネントの詳細をさらに説明す
ると、RxSDP421は着信パケットのストリームの処理を専門に行う。RxSDP42
1は、着信ストリームからプロトコル・データを含むフィールドを抜粋し、フィ
ールドの内容をリング・バス・インタフェース413を介してリング・バス31
1に、あるいは抜粋空間417を介してCPRC401に与える。またDMA転送を介
してパケット・ストリームからプロトコル・データ・ユニットをDMEM405に与
える。RxDSP421は、3つのサブコンポーネントを有する。すなわち、送信媒
体内のパケット・ストリームを表す物理的信号を受信するピン論理443と、パ
ケット・ストリーム内に媒体パケットと移送パケットとを配置するフレーミング
支援プロセッサ407と、移送パケットおよびそのペイロードからプロトコル情
報を抜粋し、なおかつ経路425を介してDMEM405に移送パケットを伝えるバ
イト・プロセッサ453である。バイト・プロセッサ453は、抜粋空間417
内に抜粋したプロトコル情報を配置することができ、さらに/あるいは、リング
・バス・インタフェース415を介してリング・バス・メッセージを配置するこ
とができる。 【0050】 TxSDP427は、TxSDP427がDMEM405からDMAを介して入手するプロトコ
ル・データ・ユニットを運ぶ発信移送パケットのストリームの生成を専門に行う
。そのために、TxSDP427は、CPRC401が合併空間419内に入れたプロト
コル・データをプロトコル・データ・ユニットに合併する。TxSDP427のコン
ポーネントは、機能的にはRxSDP421のコンポーネントと同等である。このた
め、バイト・プロセッサ453が、移送パケットとそのペイロード内のプロトコ
ル・データを操作し、フレーミング支援プロセッサ449が媒体パケットが必要
とするプロトコル情報を与え、ピン論理445がそのデータを、データが出力さ
れる物理的媒体に必要とされる形式にする。 【0051】 SDP420のその他の興味深い特徴は、再循環経路441と統合経路433,
435である。再循環経路441は、DMEM405に格納されるパケットをRxSDP
421に戻して、さらに処理を行いDMEM405に出力することを可能にする。統
合経路433は、クラスタ309内のすべてのRxDSP421が同じ入力データを
受信できるようにし、統合経路435はTxSDP427がCP307(i)が属する
クラスタの他のCP307の中のTxSDPからの出力に関するデータを受信できるよ
うにする。 チャネル・プロセッサ307の動作例:図25 図25は、いかにして受信側チャネル・プロセッサ307(i)が送信側チャ
ネルプロセッサ307(j)と協働して、受信側チャネル・プロセッサ307(
i)に属する入力204(i)において移送パケットのシーケンスを含む媒体パ
ケットのストリームを受信し、そのペイロードがチャネル・プロセッサ307(
i)において受信される移送パケットである送信側チャネル・プロセッサ307
(j)に属する出力206(j)において移送パケットのシーケンスを含む媒体
パケットのシーケンスを出力することができるかを示す。受信され送信される媒
体パケットと移送パケットとは、もちろん異なるプロトコルに属する。 【0052】 被受信媒体パケットは、チャネル・プロセッサ307(i)のRxSDP421に
おいて受信される。RxSDP421は、移送パケットとそのペイロードからプロト
コル・データを抜粋空間417に抜粋して、DMEM405およびペイロード・バス
317を介して移送パケットからなるプロトコル・データ・ユニットをBME31
5にDMA処理する。BME315は、このプロトコル・データ・ユニットをSDRAM2
29のバッファ231に入れる。プロトコル・データ・ユニットは2503に示
される。一方で、チャネル・プロセッサ307(i)内のCPRC401は、プロト
コル・データを利用して記述子217を作成する。次にCPRC401はこれをペイ
ロード・バス317を介してQME305に転送して、待行列に入れる。(プロト
コル・データの一部をリング・バス311を介してTLE301に送信のために送
付する様子はこの図には示されないことに注意。)CPRC401が待行列に入れる
べき記述子217を送付すると、CPRC401は、最前部が送信側チャネル・プロ
セッサ307(j)により読み込まれている待行列215の最後尾にそれを入れ
るよう指定する。QME305は、指定された待行列215の最後尾に記述子21
7を入れる。 【0053】 チャネル・プロセッサ307(j)が待行列215の最前部から記述子207
を取り出すと、QME305はそれをペイロード・バス317を介してチャネル・
プロセッサ307(j)に送付する。チャネル・プロセッサ307(j)は、記
述子217を利用して、出力されるパケットのストリームに関するプロトコル・
データを作成し、そのプロトコル・データを合併空間419に入れる。次に、ペ
イロード・バス317およびDMEM405を介してSDRAM229内のバッファ23
1からプロトコル・データ・ユニットをシリアル・データ・プロセッサ420に
転送するDMA動作を開始する。ここで、TxSDP427は、プロトコル・データ・ユ
ニット2503を204(i)において受信されるパケットから伝える出力20
6(j)に関して媒体パケット2505のストリームを作成するために必要なプ
ロトコル・データを加える。 ローカル・メモリ501の詳細:図6 図6は、チャネル・プロセッサ307(i)のためのローカル・メモリ501
(i)を示す。前述のように、ローカル・メモリ501(i)のすべては、グロ
ーバル・アドレス空間321を共有するディジタル通信プロセッサ203のあら
ゆるコンポーネントによって読み書きすることができる。 データ・スコープ625(0)および625(1) 上記のように、RxSDP421は、着信パケット・ストリームをSDRAM229にDM
A処理し、それを行う際に、着信パケット・ストリームからプロトコル・データ
を抜粋して、それをCPRC401に送って処理する。一方で、TxSDP427はSDRAM
229から発信プロトコル・データ・ユニットを受信し、その際にCPRC401か
らプロトコル・データを受信して、それを発信パケット・ストリーム内の適切な
場所に入れる。1つの移送パケットに関して、処理には2段階が含まれる。着信
パケットの場合、それは以下の段階である: ・プロトコル・データを抜粋し、プロトコル・データ・ユニットをSDRAM229
にDMA処理する;および ・プロトコル・データをCPRC401で処理する。 【0054】 チャネル・プロセッサ307においては、この2段階はパイプライン処理され
る。着信パケット・ストリームの場合、CPRC401は以前のプロトコル・データ
・ユニットから抜粋されたプロトコル・データを処理するが、RxSDP421は、
パケット・ストリームからプロトコル・データを抜粋して、パケット・ストリー
ムから現行のプロトコル・データ・ユニットをDMA処理する。送信は同じ方法で
処理され、TxSDP427が現行のプロトコル・データ・ユニットをDMA処理し、CP
RC401が次のプロトコル・データ・ユニットに含まれるプロトコル・データを
処理する。 【0055】 パイプライン処理は、データ・スコープ625(0),625(1)により可
能になる。これらは、CPRC401から可視で、アクセス可能なデータ構造であり
、SDP420の動作とCPRC401とSDP420との間の相互作用とを制御する。あ
るデータ・スコープ625(i)には、データ・スコープ・レジスタ624の集
合と、データスコープ・イベント・レジスタ632のフラッグ632(i)の集
合とが含まれる。データ・スコープ・レジスタ624は、さらにTxデータ・スコ
ープ641とRxデータ・スコープ643とからなる。Rxデータ・スコープ643
は、第1段階の間に着信パケット・ストリームからRxSDP421により抜粋され
るプロトコル・データを受信し、CPRC401がそのプロトコル・データを第2段
階で処理する。同様に、Txデータ・スコープ643はCPRC401が第1段階の間
に発信パケット・ストリームに関して処理したプロトコル・データを受信し、Tx
SDP427が第2段階の間にTxデータ・スコープ643からプロトコル・データ
を出力する。 【0056】 パケット処理のパイプライン化を可能にするだけでなく、データ・スコープ6
25は、CPRC401上で、現在SDPのRx421により受信されている、あるいはT
xSDP427により送信されているパケットのストリームに対して実行中のプログ
ラムのための均一なインタフェースを提供する。ストリームの更なる処理が必要
な用途においては、データ・スコープの数を増やすことができる。たとえば、着
信ストリームの処理,それに由来するPDUのDMEM405内への格納、再循環経路
441を利用した、DMEM405に格納されるPDUの再処理および最終的なPDUをSD
RAM229にDMA処理することを含むRxSDP処理は、4つのデータ・スコープを含
むことがある。 【0057】 CPRC401上で実行するプログラムは、現在SDP420によりどのデータ・ス
コープが使用されているかを判断する。SPD420がデータ・スコープ625(
9)からプロトコル・データを抜粋しそれにプロトコル・データを合併している
間、CPRC401はデータ・スコープ621(1)でプロトコル・データを処理す
る。SDP420がデータ・スコープ625(0)を終了すると、CPRC401にそ
れを知らせ、CPRC401は、SDP420がデータ・スコープ625(1)での作
業を開始できるようにデータ・スコープ625(1)を準備して、データ・スコ
ープ621(0)での作業を開始する。 【0058】 データ・スコープ625(i)の内容に関してより詳細に説明すると、Rxデー
タ・スコープ643は、RxSDP601により抜粋されるプロトコル情報を含む抜
粋レジスタ601と、SDRAM229に対しRxSDP421が受信するパケットをDMA
処理するために必要な情報を含むRxCB633と、RxSDP421が作業中のパケッ
トのDMA処理が終了したか否かを含めてRxSDP421に関する状況情報を含むRx状
況635とを備える。Txデータ・スコープ641は、パケット送信のための類似
のレジスタを含む。合併レジスタ603は、発信パケットと合併されるプロトコ
ル・データを含み、TxCB633はSDRAM229からTxSDPにより送信されるパケッ
トのDMA処理に必要な情報を含み、Tx状況は、TxSDP427が作業中のパケットの
処理を完了したか否かを含めてTxSDP427に関する状況情報を含む。 制御ブロック・レジスタ611 制御ブロック・レジスタ611は、CPRC401とSDRAM229との間のDMA転送
を制御する4つのレジスタの集合である。WrCB610はCPRC401からSDRAM2
29へのDMA転送を制御し、RdCBがCPRC401へのDMA転送を制御する。 リング・バス制御レジスタ617 これらのレジスタは、リング・バス・インタフェース415の一部である。こ
れらのレジスタにより、RxSDP421とCPRC401とはリング・バス上にメッセ
ージを送付することができ、CPRC401は、このリング・バス上にメッセージを
受信することができる。メッセージを送るための4つのレジスタと、CP307(
i)により送付されるメッセージに対する返答を受信するための8つのレジスタ
と、自発的なメッセージを受信するためのレジスタの待行列が1つある。 SONETオーバーヘッド・ビット612 このレジスタは、CP307(i)により出力されるSONETパケットに関するSON
ETオーバーヘッド・ビットを含む。 RxSDP制御613およびTxSDP制御615 これらのレジスタは、RxSDP421とTxSDP427の動作をそれぞれ制御するパ
ラメータを含む。 CPモード・レジスタ625 このレジスタは、CP307(i)の動作を制御するパラメータを含む。 SDPモード・レジスタ627 このレジスタは、SDP420の動作を制御するパラメータを含む。 待行列状況621 待行列状況621は、QME305内のチャネル・プロセッサ307(i)のメ
ールボックスの状況と、チャネル・プロセッサ307(i)により読み込まれる
待行列の状況とに関する情報を含む。チャネル・プロセッサ307(i)のメー
ルボックスの状況を示すレジスタのためのハードウェアは、QME305により直
接的に制御される。そのため、レジスタの読み書きによりグローバル・バス31
9上にトラフィックが発生することはない。QME305は、チャネル・プロセッ
サ307(i)により読み込まれる待行列の状況をペイロード・バス317を介
してDMEM405に対してDMA処理する。 イベント・タイマ620 このレジスタは、CPRC401内で実行されるソフトウェアにより設定および始
動されるイベント・タイマを含む。タイマの期間が終了すると、RC401のイ
ベント・メカニズムが応答するイベントが起こる。 サイクル・カウンタ・レジスタ619 サイクル・カウンタ・レジスタ619は、カウンタ値,クロック分割値および
CCイネーブル・ビットを含む。CPRC401は、カウンタ値,クロック分割値およ
びCCイネーブル・ビットを設定することができる。クロック分割値は、CPRC40
1のクロックに相対してカウンタ値が増分する比率を指定する。CPRC401がCC
イネーブル・ビットを設定すると、カウンタが動き始める。CPRC401がCCイネ
ーブル・ビットをクリアすると、カウンタは動きを停止する。現カウンタ値は、
CCイネーブル・ビットの設定またはクリアにより影響を受けない。 イベント・レジスタ631 このレジスタは、CPRC401が応答しなければならない非同期イベントが起こ
ったか否かを示すフラッグを含む。イベントには2種類ある:すなわち、そのフ
ラッグがレジスタ630内にある一般イベントと、そのフラッグがデータ・スコ
ープ・イベント・レジスタ632内にあるデータ・スコープ625に関するイベ
ントである。 説明されたすべてのレジスタと共に、CPRC401はそのローカル・データ・メ
モリ405内のデータにもアクセスすることができ、SDRAM229とローカル・
データ・メモリ405との間と、SDPとSDRAM229との間で、ローカル・メモリ
405を介して上記のようにDMA転送を設定することができる。 CPRC401,RxSDP421,TxSDP427の協働例の詳細:図7ないし図9 7 RISCコアとSDPの間のメモリ・インタフェースに格納される 図7は、RxSDP421とCPRC401とが、着信パケットのストリームを処理す
る際に相互作用を行うために、どのようにプログラミングすることができるかを
示す。流れ図701は、実行される動作を示すだけでなく、RxSDP421,CPRC
401およびQME305のうちどれが動作を実行するかを示す。703から始ま
り、着信パケットがRxSDP421により読み込まれる(705)。RxSDP421が
読み込むものに対して何を行うかは、パケット内の材料の位置により決まる。Rx
SDP421が処理しなければならない情報には3種類ある。すなわち、プロトコ
ル・データ・ユニットと、TLE301により変換しなければならないプロトコル
情報と、CPRC401により変換しなければならないプロトコル情報である。ボッ
クス707に示されるように、RxSDP421はDMAを利用してプロトコル・データ
・ユニットを読み込むとそれをDMEM405を介してSDRAM229に転送する。7
09に示されるように、RxSDP421はリング・バス311を利用して、TLE30
1が変換しなければならないプロトコル情報と共にメッセージをTLE301に送
付する。711に示されるように、最後にRxSDP421は抜粋空間601を利用
して、CPRC401がプロトコル情報を処理する必要のある情報をCPRC401に転
送する。 【0059】 ブロック713において、CPRC401は、RxSDP421から受信した情報と、R
xSDP421のメッセージに応答してTLE301から受信した返答とを利用して、
移送パケットについて何を実行すべきかを決定する。内容が破壊されているか、
あるいはそのペイロードがパケット・スイッチにより除去された発信源から来る
ものであるか、いずれかの理由により移送パケットが無効の場合は、CPRC401
はそのパケットにマークを付けて廃棄する。マーク(DMA中に加えられるトレー
ラ内に含まれる)に応答して、DMAエンジンは送信を中止し、BME315がパケッ
トを受信中のバッファ231を解放する。 【0060】 移送パケットが有効な場合は、CPRC401は、TLE301から受信した情報と
抜粋空間601内の情報とを利用して、パケットからのプロトコル・データ・ユ
ニットを入れる待行列215を決定し、その待行列のための記述子217を作成
する。次に751において、記述子とプロトコル・データ・ユニットをペイロー
ド・バス317上に入れる待行列の数とを含むエンキュー・コマンドを配置する
。 【0061】 QME305は、記述子217を適切な待行列215に入れることによってエン
キュー・コマンドに応答する。ボックス717,719,721に示されるよう
に、待行列を読み込むDCP203のコンポーネントに応じて3つの広い範囲の待
行列が存在する。すなわち、XPプロセッサ313が読み込む待行列と、チャネル
・プロセッサ307が読み込む待行列と、組織プロセッサ303が読み込む待行
列である。XPプロセッサ313により読み込まれる待行列の場合、記述子に対応
するプロトコル・データ・ユニットは、ホスト227に進む。組織プロセッサ3
03により読み込まれる待行列の場合、記述子に対応するプロトコル・データ・
ユニットは切換組織に進む。 【0062】 ここでは、RxSDP421,CPRC401およびQME305がすべて独立して動作す
るプロセッサであるので、流れ図701に示される処理を平行に行うことができ
ることに注目されたい。RxSDP421とCPRC401とのパイプライン化は、すで
に説明した。その上、CPRC401はQME305がCPRC401のエンキュー・コマ
ンドに応答するのを待つ必要がない。 【0063】 CPRC401とRxSDP421の相互作用におけるデータ・スコープ625の役割
をさらに詳細に説明するために、受信データ・スコープ643の詳細を図9に示
す。RxSDP421とCPRC401との間の相互作用の状態を示すRx状況レジスタ6
35から始める。レジスタには目的のフィールドが4つある。OWNフィールド9
35はハードウェアによりセットされる。ビットはRxSDP421またはCPRC40
1のいずれかが、Rx状況635が現在属するデータ・スコープ625を利用して
いることを示す。L5:L0 937は、プログラム制御下でRxSDP421とCPRC40
1とによりセットおよびリセットされる6個のハンドシェーク・ビットである。
ビジー941はRxSDP941によりセットされ、RxSDP421が現在ビジー(使用
中)であることを示す。Tx状況639は、機能と内容はRx状況635と同様であ
る。 【0064】 RxCB633は、着信パケットのDMA処理中のRxSDP421とDMAエンジン441
との間の相互作用を支配する。CPRC401は、RxCB633が属するデータ・スコ
ープ625(i)を所有するときにRxCB633を設定し、RxSDP421はRxCB6
33を利用してRxSDP421とCPRC401とがデータ・スコープ625(i)の
所有権を交代しながら着信パケットのDMA処理を続ける。RxCB633内のフィー
ルドのほとんどには、DMAを実行するために必要とされる種々のアドレス指定情
報が含まれる。バッファ・プール番号909,BTAG933およびオフセット93
1は共に、DMAエンジン441がRxSDP421により受信されるパケットを現在書
き込んでいるDRAM229内の位置を指定する。 【0065】 下記に、より詳細に説明するように、DRAM229はバッファ・プールに分割さ
れる。BTAG933は、プール内のバッファのためのバッファ・タッグ233であ
り、オフセット931はデータが現在書き込まれているバッファ内のオフセット
である。DMAエンジン441がデータを書き込むと、オフセット931を更新す
る。DMEM DMAアドレス907は、DMAエンジン411がDRAM229に現在DMA処理
しているDMEM405内のデータの16バイト線のアドレスである。Txrcyアドレ
ス905とRxrcyアドレス903は、RxSDP421がDMEM405からデータを再循
環する際に用いる特殊なアドレスである。Txrcyアドレス905は、TxSDP427
に関してDMAエンジン441により現在データが書き込まれているDMEM405線
を指定し、Rxrcyアドレス903は、RxSDP421が現在データを書き込んでいる
DMEM405線を指定する。このため、これらのアドレスによりRxSDP421はSDR
AM229に書き込む前に、あるいはSDRAM229に書き込んだ後にパケットを再
循環させることができる。DMEMバイト・アドレス901は、RxSDP421が現在
データを書き込んでいるDMEM405内の線である。 【0066】 RxDBCTL913は、CPRC401,RxSDP421およびDMAエンジン441の間の
相互作用を支配する制御および状況フィールドを含む: ・Avail929は、RxCB633が使用できるか否かを示す; ・NR927は、DMAエンジン441が転送を断念する前にDRAM229に対しデー
タを転送すべき要求回数を示す; ・Error(エラー)925は、現在RxCB933により表される転送の間にエラー
が起こったか否かを示す; ・Own(所有)921は、RxSDP421が書き込み、DMAエンジン411が読むDME
M405内の線が、現在RxSDP421により書き込まれているか、あるいはDMAエ
ンジン411により読まれているかを示す; ・EOP917は、RxSDP421がDMEM405内の線に書き込まれるデータ内のパケ
ット指標の終点に遭遇したときにRxSDP421によりセットされる; ・ST915は、SDP420の現在の状況である; ・BCTL状態919は、ペイロード・バス317の現在の状態である;および ・長さ911はRxSDP421によりセットされる。これは、RxSDP421が書き込
んでいるDMEM405内の線のデータ長である。 【0067】 TxCB637は、実質的にRxCB633と同様であるが、それが支配するDMA転送
が反対方向に進み、フィールドはその方向に対応する意味を有する点が異なる。 【0068】 RxSDP421がOWNビット935,L2 Done937またはL1 done939をRx状況
レジスタ636またはRxCB633内のAvailビット929にセットすると、結果
としてCPRC401に対する割込が起こる。どの動作が割込を発生させたかは、Rx
SDPが当該のビットをセットした際に存在するスコープのデータ・スコープ・イ
ベント・レジスタ632内のビットにより示される。同じ構造は、Txデータ・ス
コープ641内の対応ビットに関しても用いられる。 【0069】 まず、CPRC401はデータ・スコープ625を設定し、RxSDP421に所有権
を与える。CPRC401は、これでデータ・スコープ625(1)を所有する。パ
ケットが来ると、RxSDP421はプロトコル・データを抜粋し、それを抜粋空間
レジスタ601(0)に書き込む。RxSDP421は、変換を必要とするプロトコ
ル・データを含むメッセージをTxmsg645(0)内にTLE301に対して送付す
る。照合結果は、RxRespレジスタ747(0,i)に現れる。これが進行する間
、RxSDP421はRxCB633(0)に指定されるDMEM405内の線へのプロトコ
ル・データ・ユニットの書き込みを開始する。線全体が受信されると、RxSDP4
21はオーナ・ビット935をRx状況635にセットして、CPRC401が現在デ
ータ・スコープ625の所有権を有し、RxCB633(0)内のオーナ・ビット9
21をセットしてDMAエンジン411が、書き込んだ線を読んでいることを示し
、RxSDP421をデータ・スコープ910(1)に自動的に切り換える信号を生
成する。RxSDP421は、次にデータ・スコープ625(1)のオーナ・ビット
935を検証して、CPRC401が依然としてその制御権を有するか否かを確認す
る。CPRC401が制御を有する場合、RxSDP421はCPRC401が、次のパケッ
トの処理を始める前にデータ・スコープ625(1)の制御を放棄するまで待機
する。処理は、RxSDP421がデータ・スコープ625(0)の代わりにデータ
・スコープ625(1)の資源を利用することを除いては上記と同じである。 【0070】 RxSDP421が受信データ・スコープ625(1)と作業を続行する間、CPRC
401は受信データ・スコープ625(0)を処理する。CPRC401は、RxSDP
421が抜粋空間レジスタ601(9)に入れたプロトコル・データを検証およ
び/または除去し、RxCB633を検証してSDRAM229に対するDMA処理がエラー
を起こさずに終了したか否かを判断し、RxSDP421が次に用いるためにRxCB6
33(0)を設定する。次に、RxSDP421が抜粋レジスタ601に入れたプロ
トコル・データと、RxRsp構造647(0,i)内のTLE301から受信される変
換とを利用して、SDRAM229に書き込まれているデータに関する記述子を作成
し、その記述子をQME305内のチャネル・プロセッサ307のメールボックス
に入れる。これがすべて終了すると、CPRC401は、オーナ・ビット935(0
)を、受信データ・スコープ625(0)がRxSDP421に再び利用可能になる
ようセットする。オーナ・ビット935(1)がセットされて、RxSDP421が
受信データ・スコープ625(1)との作業が終了したことが示されると、CPRC
401は、受信データ・スコープ625(0)に関して説明したのと同様の方法
で、受信データ・スコープ625(1)に関する作業を行う。 【0071】 803 開始 805 RISCコアがローカル状況を介して待行列管理エンジンから送信するデ
ータを検出 図8は、移送パケットのストリームを送信する際にCPRC401とTxSDP427
とがどのように相互作用するかを示す概要である。発信パケットは組み合わせて
送信するだけで、変換する必要がないので、送信は、受信よりはるかに簡単であ
る。送信に関する作業の大半は、CPRC401により実行される。803から始ま
り、CPRC401は、まずループ805を実行する。すなわち、QME305から受
信した待行列状況情報をチェックして、チャネル・プロセッサ307(i)が読
み込んでいる待行列217内に記述子があるか否かを確認する。807に示され
るように、記述子がある場合は、CPRC401はペイロード・バス317上にデキ
ュー・コマンドを配置し、これもペイロード・バス317を介してQME305か
ら記述子を受信する。次にCPRC401は、記述子内の情報を利用して送信される
パケットの必要性に応じて合併レジスタ603を設定し(811)、記述子内の
バッファ・タッグを用いてTx制御ブロック・レジスタ637内にレジスタを設定
し、バッファの内容をSDRAM229からTxSDP427に転送し(813)、転送を
開始する(815)。状況915またはEOP917が転送の終点を示すと、CPRC
401はTxSDP427と転送に用いた他の資源とを解放する(817)。TxSDP4
27とCPRC401は、RxSDP421およびCPRC401と同じ方法で、データ・ス
コープ625(0)と(1)とを交代に利用する。データ・スコープ間の交代は
CPRC401によって実行されているプログラムの制御下にあるので、プログラム
はデータ・スコープにより表される資源をTxSDP427とRxSDP421との間に割
り付けるために必要なあらゆることを実行することができる。 RxSDP421の詳細:図10および図11 RxSDP421とTxSDP427とは、それぞれシリアル入力204(i),シリア
ル出力206(i)およびチャネル・プロセッサ307(i)の他のコンポーネ
ントとの間のプログラマブル・インタフェースをチャネル・プロセッサ307(
i)に提供する。このため、特定の入力204(i)は、特定のプロトコルに属
する媒体および移送パケットに適切に対処するために必要とされるようプログラ
ミングすることができ、特定の出力204(j)は、特定のプロトコルに属する
媒体および移送パケットを出力するようプログラミングすることができる。各SD
P421または427は、自身のマイクロプログラム格納装置と独立するレジス
タの集合を有する。 【0072】 図10はRxSDP421のブロック図である。コンポーネントは、シリアル入力
をパラレルに変換し、まず媒体パケット・レベルにあり、次に移送パケット・レ
ベル以上にある入力を処理するプロセッサとFIFOのシーケンスである。プロセッ
サの一部は、特定のプロトコルに対処するよう専用化される。バイパス経路は、
データがいずれかのプロセッサおよび/またはFIFOを迂回することを許すように
プログラミングすることができる。全体として、コンポーネントは次の通りであ
る: ・設定可能な物理的論理443で、物理層からシリアル入力を受信し、それを解
釈して10ビット・コードのストリームを生成する。 ・物理層から10ビット・コードを受信するピン・インタフェース204(i)
。 ・ピン論理443から受信した10ビット・コードからバイトを生成する8b/
10b/解読1001。 ・異なるプログラマブル読み書きクロックと非同期のFIFO(待行列)である小型
FIFO1003。書込クロックは入力データ・ストリームに必要とされる周波数で
動き、読込クロックはCPRC401の速度で動く。好適な実施例においては、FIFO
1003は8個の9ビット・ワード深さを持つ。 ・小型FIFO1003から、経路1005を介して抜粋空間417に来る抜粋フィ
ールドを伴って受信したバイトのストリーム上にパターン・マッチングとフィー
ルド抜粋とを行う受信ビット・プロセッサ1005。 ・SONETフレームを処理する受信SONETフレーマ1007。フレーム内のデータの
スクランブルを解除し、プロトコル・データをフレームから除去し、パリティを
チェックし、プロトコル・データを経路1008を介して抜粋空間417に書き
込む。 ・ATMセルを処理する同期プロセッサ1009。セル境界を発見し、プロトコル
・データを戻し、プロトコル・データによるTLE動作を始め、ペイロードのスク
ランブルを解除し、プロトコル・データを経路1019を介して抜粋空間417
に書き込む。 ・非同期FIFOである大型受信非同期FIFO1011。好適な実施例においては、FI
FO1011は64ビット・ワード深さである。FIFO1011は、主に、VPI/VCI
がTLE301により検証されている間にATMセルの実行に用い、さらに高速受信パ
ケットに弾力性を与えるために用いられる。 ・マイクロコード制御下で動作し、9ビット・ワードのデータに関してパターン
・マッチングとフィールド抜粋を行う受信バイト・プロセッサ1013。 【0073】 バイパス経路1015は、MUX1002,1006,1014,1010によ
り構築される。MUX1010は、再循環経路441も構築する。バイパス経路お
よび再循環経路は、SDPモード627においてビットをセットすることによって
、ダイナミックに設定可能である。データは、CPRC401とビット・プロセッサ
1005,同期プロセッサ1009またはバイト・プロセッサ1013との間で
、RxSDP制御613内のレジスタを介して直接伝えられる。 【0074】 前述の如く、チャネル・プロセッサ307を統合して、きわめて高速のデータ
・ストリームを処理することができる。統合されると、統合されたチャネル・プ
ロセッサは、1つのパイプラインとして動作し、統合チャネルプロセッサの各々
がデータ・ストリームの一部分を順番に処理する。統合のRxSDP421間の調整
は、トークン・バス1027,1017,1028によって実現される。たとえ
ば、統合に際して、可能化されたRxビット・プロセッサ1005は、トークン・
バス1004により提供されるトークンを有するときしか着信データ・ストリー
ムの処理を行わない。着信ストリームを処理するために用いられるRxSDP421
のコンポーネントは入力ストリームの種類により変わるので、いくつかのトーク
ン・バスが必要である。 設定可能ピン論理443の詳細:図46および図47 設定可能ピン論理443は、2種類の方法で設定することができる: ・クラスタ内のSDP420のうち1つ,2つ,3つまたは4つのSDPに入力ストリ
ームを与え、そこから出力ストリームを受信する;および ・入力ストリームまたは出力ストリームのいずれかがそれを介して送信される媒
体に必要とされる異なる物理的インタフェースと共に働く。 【0075】 第1種類の設定は、クラスタ309内のチャネル・プロセッサ307の統合を
可能にして、高速の入力または出力ストリームを処理する要素の1つである。第
2種類の設定は、DCP203外部に装置を追加することなくDCP203を異なる送
信媒体と共に用いることができるようにして、媒体から受信される信号をDCP2
03で用いるために適応する。いずれの種類の設定も、チャネル・プロセッサの
ローカル・メモリ内のレジスタにより制御される。レジスタは、チャネル・プロ
セッサ自身またはXP313によりセットされる。 【0076】 図46は、DCP203内のクラスタ309がRMII,OC-3,DS1,DS3,GMII,TBI
およびOC-12基準に準拠するシリアル・データ・ストリームを受信および生成す
るためにどのように設定されるかを示すテーブル4601である。列4603は
、クラスタ内の各チャネル・プロセッサのI/Oピンを列記する;列4605は、
ピンの一般的な目的を示す;そのため、各チャネル・プロセッサにおいてはI/O
ピン0と1は、クロック信号のためのものであり、残りのピンはデータ用である
。残りの列は、各媒体に関してピンをどのように使用するかを示す。列4607
は、RAMIIにおけるピンの使用法を示す;4609はOC-3におけるピンの使用法
を示す;4611はDS3における使用法を示す;4615は、クラスタ内のチャ
ネル・プロセッサのうち2つのプロセッサを用いてデータを受信し、2つのプロ
セッサを送信に用いる場合のGMIIでの使用法を示す;4617は、チャネル・プ
ロセッサを同様に用いる場合のTBIでの使用法を示す;4619は、クラスタ内
のチャネル・プロセッサが送信機と受信機との間で交代する場合にOC-12でどの
ように用いられるかを示す。 【0077】 種々の媒体は、I/Oピンに関して異なる種類のドライバと受信機とを必要とす
る。そのため、設定可能ピン論理443内の各I/Oピンは、3状態ドライバ,TTL
ドライバおよびPECLドライバを有する。PECL論理を用いるOC-3などの媒体では、
I/Oピンの対は列4609に示されるように異なる対として設定される。 【0078】 図47は、ピン・モード・レジスタ4701とSDPモード・レジスタ4713
とを示す。各チャネル・プロセッサ307は、これらのレジスタのうち1つを有
する。レジスタ4701が、チャネル・プロセッサのI/Oピンがどのように設定
されるかを決定する。データCnfgビット4703は、I/Oピンが3状態ドライバ
,TTLドライバまたはPECLドライバのいずれかに駆動されるかを決定する4つの
ビットである。RxClk Mux4705とTxClk Mux4707は、それぞれ、受信およ
び/または送信クロック信号を運ぶためにどのピンが用いられているかを指定す
る。Rxデータ・イネーブル4709は、データを受信するためにどのピンが用い
られるかを指定する。最後に、Txデータ・イネーブル4711は、データを送信
するためにどのピンが用いられるかを指定する。 【0079】 SDPモード・レジスタ4713は、RxSDP421のコンポーネントのどれが可能
化され、どの再循環回路構成が可能化され、チャネル・プロセッサ309が属す
るクラスタ内でどのような種類の統合が現在採用されているかを制御するビット
を含む。チャネル・プロセッサのTxSDP427についても同様のレジスタが存在
する。RxEnビット4715は、チャネル・プロセッサのRxSDP421が可能化さ
れているか否かを示す。ビット4717は、そのバイト・プロセッサ1013が
可能化されているか否かを示す。ビット4719は、そのビット・プロセッサ1
005が可能化されているか否かを示す。ビット4721は、Rx Sonetフレーマ
1007が可能化されているか否かを示す。ビット4723は、Rx同期プロセッ
サ1009が可能化されているか否かを示す。次の2ビットは、再循環制御のた
めのもので、ビット4725はバイト・プロセッサ1013に対する再循環を示
し、ビット4729は抜粋空間417からビット・プロセッサ1005への再循
環を示す。統合モード・フィールド4731は、クラスタ内に統合が行われない
か、双方向の統合が行われるか(すなわち2つのチャネル・プロセッサが受信を
行い2つのチャネル・プロセッサが送信を行う)、あるいは4方向の統合が行わ
れるか(4つすべてのチャネル・プロセッサが受信または送信を行う)を指定す
る2ビット・フィールドである。 SDPにおけるプロセッサの構築:図11 図11は、SDP内のプロセッサがどのように構築されるかを示す。ここに詳細
に図示されるプロセッサは、Rxバイト・プロセッサ1013であるが、Rxビット
・プロセッサ1005と受信同期プロセッサ1009内のプロセッサも同様であ
る。ソネット・フレーマ1007は、図11内のようなプロセッサを用いて構築
される設定可能な状態装置である。 【0080】 MUX1107に示されるように、Rxバイト・プロセッサ1013は、大型FIFO
1011から外部入力を受信する。Rxバイト・プロセッサ1013は、MUX11
23を介してリング・バス・インタフェース415,抜粋空間417またはバッ
ファ1025に外部出力を提供し、これがプロトコル・データ・ユニットをDMEM
405に提供する。Rxバイト・プロセッサ1013に内蔵されるコンポーネント
には、次のものがある: ・プロセッサ1013が処理するマイクロコードを含み、プロセッサ1013の
他のコンポーネントを制御する制御信号(破線の矢印)を提供することによって
現在アドレス指定されるマイクロ命令に応答する制御格納部1101。制御格納
部1101は、XP313によりロードされる。 ・次アドレス論理1105。制御格納部1105からの制御信号と、条件コード
MUX1121および内容アドレス指定可能メモリ(CAM:content-addressable me
mory1117)からの入力に、制御格納部1101から実行される次のマイクロ
命令を選択することによって応答する。 ・カウンタ109と一般レジスタ1115。カウンタは、処理が現在行われてい
るパケット内のビット位置を追跡する。8ビット・カウンタ1109(0...
3)が4個あり、これらは2個の16ビット・カウンタとして設定され、またカ
ウンタから次のアドレス論理1105への入力により示されるように、マイクロ
コードがカウンタ値に依存する駆動を指定する。一般レジスタ1115は処理中
に用いられるデータを格納する6個の8ビット・レジスタである。 ・CAM(内容アドレス指定メモリ)1117:CAMは、パターン・マッチングに用
いられるメモリである。CAM内の各セルにはパターンが含まれ、CAMセルに格納さ
れるパターンと一致するデータがCAMに提示されると、CAMはCAM内のセルの位置
を出力する。マイクロコードは、CAMにより出力される値に依存する行動を指定
する。CAM1117は、CPRC401またはXP313によりロードされる。CAM内に
は64個の9ビット・ワードがあり、CAMは最大16個の論理CAMにプログラミン
グ可能に分割することができる。 ・CRC1111は、巡回冗長検査を実行する専用のハードウェアである。他の専
用ハードウェアはパケットのスクランブル解除のために含まれる。 ・ALU1119は、バレル・ローテータを内蔵する8ビットALUである。 【0081】 上記からわかるように、XP313が、CTL格納部1101およびCAM1117を
ロードすることによって動作に関してRxバイト・プロセッサ1013を設定する
。CPRC401は、リセット信号によりバイト・プロセッサ1013の停止および
始動を行う。 【0082】 バイト・プロセッサ1013が始動にセットされると、各々が受信するバイト
をCAM1117に送る。移送パケットの始点を示す一致が発見されると、制御論
理1105は移送パケットの処理を行うためのマイクロコードの実行を開始する
。カウンタがセットされ、バイト・プロセッサ1013が、CAM117が発見し
た更なる一致とカウンタ値とにより示されるようにパケットを処理する。一致は
、マイクロコード内で、(パターン,マスク,長さ)または(オフセット,パタ
ーン,マスク,長さ)のいずれかにより指定される。ただし、オフセットとは、
パケット内のオフセットであり、マスクは「無視(don't care)」ビットを指定
し、長さは一致内のビット数を指定する。移送パケットからのプロトコル・デー
タが抜粋され、抜粋空間417またはリング・バス・インタフェース415に、
経路1019を介して送られ、プロトコル・データ・ユニットは経路425を介
して抜粋され16バイト・バッファ1025に送られる。ここから、プロトコル
・データ・ユニットはDMEM405内の線にDMA処理される。抜粋は、(オフセッ
ト,長さ,レジスタ・アドレス)によりマイクロコード内に指定される。オフセ
ットは、ここでもパケット内のオフセットを示し、長さは抜粋されるフィールド
の長さをビットで表したものであり、レジスタ・アドレスは格納されるフィール
ドにある一般レジスタ1115内のレジスタのアドレスである。 Rxビット・プロセッサ1005の詳細 RxSDP421のコンポーネントにより実行される機能の詳細の説明を続けるが
、Rxビット・プロセッサ1005は、Rxバイト・プロセッサ1013と同様であ
るが、CRC1111の代わりに線形帰還シフト・レジスタを有する点が異なる。
線形帰還シフト・レジスタは、最大32ビットの長さまで設定することができ、
多項式とデータ・ストリームに関する位置を有する。線形帰還レジスタは、ハシ
ュ値(hash values)または他のチェックサムを生成するために用いられる。Rx
ビット・プロセッサ1105は、RxSDP421により最低レベルで受信されるバ
イトのストリームを処理する。このため、HDLCフレームおよび無効シーケンスを
検出し、詰め込まれたゼロを排除し、OC-3データ・ストリーム内のSTSフレーム
を発見し、着信イーサネット・フレームのプレアンブルを発見および削除するよ
うプログラミングされる。 受信SONETフレーマ1007の詳細 受信SONETフレーマ1007は、SONETフレームを扱う。フレーマ1007は、
Rxビット・プロセッサ1005から、あるいはバイパス1015を介して直接ピ
ン・インタフェース204(i)からフレームを受信する。SONETフレーマ10
07への入力は、ピン・インタフェース204(i)に接続される物理層インタ
フェース・チップにより回復される受信クロック・フレーム同期信号と、フレー
ムに含まれる8ビット・データとを含む。SONETフレームは、移送オーバーヘッ
ドと、フレームのペイロードを含む同期ペイロード・エンベロープ(SPE:synch
ronous payload envelope)とを含む。移送オーバーヘッドには、同期ペイロー
ド・エンベロープを指示するSTSポインタが含まれる。同期ペイロード・エンベ
ロープは、経路オーバーヘッド・バイトを含む。 【0083】 受信SONETフレーマ1007は、SONETフレーム内のバイトのスクランブルを解
除し、パリティをチェックし、移送オーバーヘッドを経路1008を介して抜粋
空間に書き込む。受信SONETフレーマ1007はさらにSTSポインタを解釈して、
SPEを発見する。それを発見すると、フレーマ1007はパリティをチェックし
、SPEの経路オーバーヘッドを抜粋空間に書き込む。SPE内のペイロードは、ペイ
ロードの種類により必要に応じて、RxSDP421の別のコンポーネントに送られ
る。たとえば、ペイロードがATMセルの場合は、受信同期プロセッサ1009に
送られる。好適な実施例においては、受信SONETフレーマ1007は、SPEペイロ
ードの多重解除を行わない。 受信同期プロセッサ1009の詳細 受信同期プロセッサ1009は、ATMセルを専門に扱う。ATMセルには53バイ
トが含まれる。5バイトは、仮想経路インジケータ,仮想チャネル・インジケー
タ,ペイロード種類インジケータ,セル損失優先度インジケータ,包括流制御情
報およびヘッダエラー・チェック・バイトを含むヘッダである。残りの48バイ
トは、ペイロードである。受信同期プロセッサ1009は、ヘッダ・エラー・チ
ェックを5バイト・シーケンスに順次適用し、シーケンス内の5番目のバイトを
シーケンス内で先行する4個のバイトのヘッダ・エラー・チェック・バイトとし
て取り出すことにより、バイトのストリームがATMセルのストリームであること
を判定する。ヘッダー・エラー・チェックが失敗すると、受信同期プロセッサ1
009はその試行を続ける。ヘッダ・エラー・チェックが成功すると、受信同期
プロセッサ1009はATMセルを発見する。1行の中にプログラミング可能な数
のセルを発見すると、ATMセルのストリームに同期される。プロセッサ1009
は、プログラミング可能な数の連続するヘッダ・エラー・チェックが不良になり
、同期プロセッサ1009がATMセルのストリームと同期していないことが示さ
れるまで、同期されたままになる。 【0084】 受信同期プロセッサ1009がATMストリーム上で同期状態にあるときは、ATM
セルのヘッダを分散させ、ヘッダの内容を抜粋空間に出力する。受信同期プロセ
ッサ1009は、さらに、ペイロードのスクランブルを解除し、状況バイトを付
加して、セルに関するヘッダ・チェックが不良の場合はそれを廃棄することがで
きるようにして、ペイロードをさらに処理する。一般的に言って、受信同期プロ
セッサ1009から出力されるペイロードは大型FIFO1011に進む。このFIFO
は、ペイロードの更なる処理が必要とされないうちにVPI-VCIに関するTLE照合を
可能にする充分な深さを有する。 受信バイト・プロセッサ1013の詳細 受信バイト・プロセッサ1013は、いくつかの機能を実行するようプログラ
ミングすることができる: ・SONETに関してPPPのためのHDLCエスケープ・シーケンスを処理する; ・イーサネットおよびAAL5に関するフレーム・チェック・シーケンスを含む3
2ビットCRCチェックを実行する; ・チャネル・プロセッサ307(i)が他のプロセッサと統合されて、1000BASE
-XGigabitイーサネットを処理する場合、受信バイト・プロセッサ1013はイ
ーサネット区切り認識を行う;再循環経路を利用して、受信バイト・プロセッサ
1013は、他のプロセッサと統合して、T1およびT3データ速度を処理すること
ができる。再循環経路は、多重チャネルHDLCおよび暗号化/暗号解読の処理も行
うことを可能にする。 ・受信バイト・プロセッサ1013は、フレーム終点を検出すると状況ワードを
抜粋空間に書き込む。 ・受信バイト・プロセッサ1013は、ATMセルのヘッダからVPI/VCIを抜粋し、
仮想経路インジケータおよび仮想チャネル・インジケータを含むメッセージをリ
ング・バス311を介してTLE301に送る。TLE301は、チャネル・プロセッ
サ307(i)に対して、VPI-VCIの組み合わせを有するATMストリームのための
出力待行列を知らせるメッセージを返すことによってメッセージに応答する。 【0085】 受信バイト・プロセッサ1013は、9ビット・ワードを処理する。その動作
は、すでに詳細に説明されている。 コンポーネントの協働例 以下の例では、RxSDP421のピン・インタフェース204(i)が、光ケー
ブルに接続されることを前提とする。この光ケーブル上にペイロード・データが
SONETプロトコルを用いて送信される。SONETフレーム内のペイロード・データは
ATMセルであり、そのヘッダが特定のVPI/VCI対を有するATMセル内のペイロード
はIPパケットである。RxSDP421は、SONETフレームからATMセルを抜粋し、そ
のATMセルを処理するようプログラミングされる。 【0086】 SONETフレームからのバイトは、まずRxビット・プロセッサ1005に進む。
このプロセッサがバイトをSONETフレーマ1007に送る。Rxビット・プロセッ
サ1005は、フレームの始点の検出も行い、その到着を知らせる信号を受信SO
NETフレーマ1007に送る。受信SONETフレーマ1007は、スクランブルを解
除し、パリティ・チェックを行い、SONETフレーム内にペイロード・データを配
置する。ATMセルのペイロードは受信同期プロセッサ1009に進み、このプロ
セッサがATMセルを検出し、そのヘッダを読み込み、その中の情報を抜粋空間4
17に送る。次に、ATMセルのペイロードがRxバイト・プロセッサ1013に進
み、プロセッサ1013はATMセルのVPI/VCI対をTLE301に送って変換し、ATM
パケットのペイロードに含まれるパケットのヘッダから抜粋空間417に情報を
読み込む。 TxSDP427の詳細:図12 TxSDP427は、RxSDP421と逆の動作を行う。すなわち、SDRAM229から
プロトコル・データ・ユニットを受信し、その宛先と、ピン・インタフェース2
06(i)が接続される物理的インタフェースとにより必要とされる形式にプロ
トコル・データ・ユニットを出力するために必要なプロトコル・データを加える
。この場合も、動作は階層的であり、移送パケットのためのプロトコル・データ
は媒体パケットに関するプロトコル・データよりも先に追加される。図12は、
TxSDP427の詳細を示す。プロトコル・データ・ユニットはDMEM405から経
路431を介して、16バイト・バッファ1229に到達する。バッファ122
9から、データ・ユニットはTxバイト・プロセッサ1213により読み込まれる
。プロトコル・データは経路429を介して合併空間419から着き、Tx SONET
フレーマ1207とTxビット・プロセッサ1205ならびにTxバイト・プロセッ
サ1213に進む。RxSDP421への再循環経路は441にある。MUX1206,
1204,1202がバイパス経路1215を構築する。統合経路1223によ
り、特定のTxSDP427は媒体プロトコル・データを、特定のTxSDP427と統合
される他のTxSDP427により生成される移送パケットのストリームに加えるこ
とができる。特定のTxSDP427が統合の一部である場合、Txバイト・プロセッ
サ1213の出力は、Txバイト・トークン・バス1225上のトークンにより制
御される。TxSDP427のコンポーネントは、RxSDP421の同様に名付けられた
コンポーネントと類似するが、その機能はプロトコル・データを抜粋するのでは
なく、プロトコル・データ・ユニットのストリームにプロトコル・データを追加
することである点が異なる。機能の差による結果として、TxSDP427内にはリ
ング・バス・メッセージを送付するための装備がない。Tx状況639およびTxCB
637は、Rxデータ・スコープ643の対応するコンポーネントと同様であるが
、この場合もその方向に差異がある。TxSDP ctl 615により、さらに、CPRC4
01はTxSDP427と通信することができ、SDPモード627のレジスタはバイパ
ス経路を設定することができる。 【0087】 コンポーネントは、出力が処理される順番に次のようになる: ・Txバイト・プロセッサ1213はDMEM405からプロトコル・データ・ユニッ
トを読み込み、フィールドの挿入,削除および入れ替えを行うようプログラミン
グ可能である。また、Txバイト・プロセッサ1213は、ATMヘッダをプロトコ
ル・データ・ユニットの48バイト・チャンク前に付加しセル内容を任意にスク
ランブルすることによってATMセルを生成するようプログラミング可能である。
送信すべきプロトコル・データ・ユニットがない場合は、Txバイト・プロセッサ
1213は、アイドルATMセルを生成する。 ・大型非同期FIFO1211は64ワードの深さと9ビットの幅を有し、プロセッ
サ1213により実行されるフィールドの挿入と削除に必要な弾力性を与える。
FIFO1211は、コア・クロック速度で書き込まれ、コア・クロックまたはシリ
アル・クロック速度のいずれかで読まれる。 ・SONETフレーマ1207は、Txバイト・プロセッサ1213の出力がペイロー
ドであるSONETフレームを生成する。 ・Txビット・プロセッサ1205は、インテリジェント・パラレル−シリアル・
プロセッサである。プログラム制御下で、このプロセッサは、受信するデータに
関してフィールドの挿入,削除および入れ替えを実行する。入力データは18ビ
ット幅であり、出力データは物理的インタフェースに応じて、1度に1ビット,
2ビットまたは4ビットとなる。プロセッサ1205は、汎用線形帰還シフト・
レジスタを備える。 ・小型FIFO1203:データはコア・クロック速度でこのFIFOに書き込まれ、シ
リアル・クロック速度でここから読まれる。FIFOは8ワードの深さで9ビット幅
である。 ・8b/10bエンコーダ1201はデータの8b/10bエンコーディングを実行する。 【0088】 プロセッサ1213,1207,1205は、プログラミング可能であり、上
記のRxバイト・プロセッサ1013と同様の一般的な内部構造を有する。 コンポーネントの協働を例をあげて示す。この例はRxSDP421で用いたのと
逆である。入力は、IPパケットであるプロトコル・データ・ユニットである。出
力は、そのペイロードとしてATMセルを有するSONETフレームであり、ATMセルは
そのペイロードとしてIPパケットを有する。IPパケットは、最終的にはSRAM22
9に格納され、そこからDMEM405にDMA処理される。ATMセルとSONETフレーム
を形成するために必要なプロトコル・データは合併空間419にある。IPパケッ
トは、48バイト・チャンクにおいてDMEM405から読み込まれる。Txバイト・
プロセッサ1213は、各48バイト・チャンクのATMヘッダを作成し、それに
由来するATMセルが大型FIFO1211に進む。ここから、セルはSONETフレーマ1
207により読まれる。SONETフレーマ1207は、ATMセルをATMフレームのペ
イロードとして一括し、必要なSONETプロトコル・データを追加する。SONETフレ
ームは次にTxビット・プロセッサ1205に出力され、プロセッサ1205がそ
れをシリアル化し、小型FIFO1203に出力する。ここから、フレームはエンコ
ード1201に進み、さらにピン・インタフェース206(i)に進む。 PDH電話方式でのチャネル・プロセッサ307の利用 長距離電話サービスのプロバイダは、長年の間、長距離通話を伝えるためにデ
ィジタル幹線を利用してきた。このようなシステムでは、呼により接続される電
話が生成する音声信号が1バイト・サンプルにディジタル化され、多くの呼から
ディジタル化されたサンプルは、サンプルに関する配信情報と共に幹線上に多重
化される。 【0089】 サンプルとその配信情報とはきわめて簡単なパケットに見えるが、このシステ
ム内ではパケットの階層は存在せず、受信ポートと送信ポートとの間の関係は一
定である。その結果、SDRAM229内のパケットのためのテーブル・ルックアッ
プ,記述子待行列またはバッファは必要ない。その代わりに、受信側チャネル・
プロセッサ307(i)は、送信側のチャネル・プロセッサ308(j)とグロ
ーバル・アドレス空間を共有するという事実を利用して、各サンプルを送信側プ
ロセッサ307(j)のDMEM405内の待行列に単に書き込むに過ぎない。送信
側チャネル・プロセッサ307(j)のCPRC401がこの待行列を管理する。 チャネル・プロセッサ307の統合:図13,図14および図26〜27 前述の如く、チャネル・プロセッサ307は4つのチャネル・プロセッサ30
7のクラスタ309内に配置される。クラスタにチャネル・プロセッサを配置す
ることにより、単独のチャネル・プロセッサ307で可能な速度より速い速度で
受信または送信を行うことができるように、これらを統合することができる。好
適な実施例においては、統合を用いて、OC-12cおよびギガビット・イーサネット
・プロトコルを送受信する。OC-12cプロトコルでは、クラスタ内の4つのチャネ
ル・プロセッサのうち2つをデータを受信するために利用し、他の2つをデータ
を送信するために利用することができる。あるいは、2つのクラスタを利用して
、一方をデータの受信に、他方をデータの送信に用いることもできる。ギガビッ
ト・イーサネット・プロトコルでは、2つのクラスタが利用され、プロトコルに
従って、一方のクラスタ内の4つのチャネル・プロセッサが受信に利用され、プ
ロトコルに従って、他方のクラスタ内の4つのチャネル・プロセッサが送信に利
用される。 【0090】 プロトコルを受信するために1群のチャネル・プロセッサを統合することを、
ここでは受信統合と称し、それに対して、プロトコルを送信するために1群のチ
ャネル・プロセッサを統合することを送信統合と称する。受信統合においては、
チャネル・プロセッサの各々がプロトコルから入力のすべてを受信するが、その
一部しか処理しない。送信統合では、チャネル・プロセッサの各々が、プロトコ
ルの出力の一部を受信して、必要に応じてその部分を、送信媒体に出力を実際に
送り出すチャネル・プロセッサに出力する。クラスタ内のチャネル・プロセッサ
のシリアルI/Oピンは、クラスタ内のすべてのチャネル・プロセッサが同じシリ
アル入力を受信するように配線される。また、すべてのチャネル・プロセッサが
同じタイマにより制御されるように被統合チャネル・プロセッサを設定すること
も可能である。最後に、共有メモリにおけるシグナルとして構築されるトークン
を用いて、クラスタ内のチャネル・プロセッサの動作を調整する。統合は、クラ
スタに属するチャネル・プロセッサ内の設定レジスタをセットすることによって
実行される。 【0091】 図13は、好適な実施例において統合を行うことのできる配置の詳細を示す。
4つのチャネル・プロセッサ307(j,0...3)からなるクラスタ309(j)
が図示される。クラスタに対する入力は次のように統合される。各チャネル・プ
ロセッサ307(j,k)は7つのI/OピンCPP(0...6)を有して、28のクラ
スタI/Oピン1301を与える。クラスタI/Oピン1301(0)はチャネル・プ
ロセッサI/Oピン1303(0,0)であり、CLP1301(2)はCPP1303
(0,1)であり、この順に続いてCLP1301(27)がCPP1303(3,6
)となる。ピンは、CLP1301(0),CLP1301(7),CLP1301(1
4),CLP1302(21)のいずれかにおける入力がすべてのCPP1303(0
,0),1303(1,0),1303(2,0),1303(3,0)で同時
に受信されるように相互接続される。出力は、図12に示されるセル/フレーム
統合経路1223を介して統合される。図示されるように、各TxSDP427(j
,i)からの出力がクラスタ内の他のTxSDP427の各々のMUX1208に接続さ
れるので、あるTxSDP427(j,i)は、クラスタの他のTxSDP427のうちい
ずれかの大型FIFO2122から出力を受信することができ、大型FIFO1023に
続く装置内で出力を処理することができる。特定のRxSDP421またはTxSDP42
7がそのクラスタにどのように関わるかは、SDPモード627においてビットを
セットすることにより決まる。 【0092】 各チャネル・プロセッサ307は、11個のクロック入力のうち1つを選択す
ることを可能にするクロックMUX1307をさらに有する。クロック入力のうち
の8つである外部グローバル・クロック入力1309(0..7)はディジタル・チ
ャネル・プロセッサIC203の外部のクロックのためのものであり、クロック入
力のうち2つ、CPPGC1311は、1つのチャネル・プロセッサにより回復され
、他のチャネル・プロセッサに提供されるグローバル・クロック入力であり、入
力の1つ、ローカル・クロック1313は、ディジタル・チャネル・プロセッサ
IC203に特有のクロックのものである。 【0093】 チャネル・プロセッサのクラスタによる処理の調整は、3組のトークン・リン
グにより行われる:すなわち、TxSDPトークン・リング1225は、クラスタのT
xSDP427のTxバイト・プロセッサ1213からの出力を調整する。トークンを
伴うTxSDP427のみが大型FIFO1211に出力する。図10に示されるように
、RxSDP421内のどの装置が提供するかは、3つのトークン・リング、すなわ
ちRxビット・プロセッサ1005のためのリング1027,Rx同期プロセッサ1
017のためのリング1017およびRxバイト・プロセッサ1013のためのリ
ング1028により決まる。トークン・リングを有し、可能化されるRxSDP42
1内の装置は、トークンを有するときのみ出力を提供する。どのトークン・リン
グが用いられるかは、RxSDP421内のどの装置が可能化されるかにより決まる
。TxSDP427とRxSDP421のためのリングの中のトークンは、TxSDPおよびRxS
DPにより実行されるマイクロコードにより伝送および試験される。チャネル・プ
ロセッサ・トークン・リング1315は、統合内のチャネル・プロセッサにより
グローバル・バス319に対する書込アクセスを制御する。リング1315のト
ークンを現在もっているチャネル・プロセッサのみが、グローバル・バス319
に対する書込アクセスを行うことができる。チャネル・プロセッサ・トークン・
リング1315が、クラスタのチャネル・プロセッサが共有するクラスタ・メモ
リ503内のシグナルにより構築される。 【0094】 統合は、図14に示されるクラスタ内のローカルおよび共有メモリの配置によ
りさらに支援される。この配置の結果、クラスタ・メモリ503が得られる。ク
ラスタ・メモリ503は、クラスタ309(j)内のチャネル・プロセッサ(0.
..3)の各々に関してチャネル・プロセッサ・ローカル・メモリ503を備える
。各チャネル・プロセッサ・メモリ503(j,i)は、シリアル・データ・プ
ロセッサのためのチャネル・プロセッサ307(j,i)メモリ1403と、DM
EM405と、バス制御メモリ1405と、CPRC401のためのメモリ1407と
、命令メモリ403の一部とを備える。クラスタ内の各チャネル・プロセッサ3
07は、クラスタ経路439を介して、クラスタ内の他のチャネル・プロセッサ
の各々のDMEM405に対するアクセスを行うことができる。他のチャネル・プロ
セッサのDMEM405へのアクセスには1サイクルの待ち時間がある。命令メモリ
は、通信プロセッサ203が初期化されたときに、命令メモリが共有IMEM140
9のように4つすべてのチャネル・プロセッサ間で共有されるように設定するこ
とができる。あるいは、4つすべてのチャネル・プロセッサ間で分割することが
できる(IMEM403)。命令メモリが共有IMEM1409として設定されると、ク
ラスタ内の4つのチャネル・プロセッサの各々には、一定の周回順序で1サイク
ルにつき1回ずつ共有IMEM1409へのアクセス権が与えられる。共有メモリIM
EM403は、チャネル・プロセッサのプログラマまたはそのクラスタが、チャネ
ル・プロセッサのより大きなプログラムを犠牲にして個別のチャネル・プロセッ
サの融通性を増大させることを可能にする。 被統合チャネル・プロセッサの動作例:図26および図27 被統合チャネル・プロセッサがギガビット・イーサネットを扱うとき、受信機
は4つのチャネル・プロセッサのクラスタ309(i)であり、送信機は4つの
チャネル・プロセッサの別のクラスタ309(j)である。図26は、RxSDP4
21(i,0...3)がどのように設定されるかを示し、図27はTxSDP427(j
,0...3)がどのように設定されるかを示す。両方のクラスタ309(i),3
09(j)は、送信機内のチャネル・プロセッサの1つの受信クロックが両クラ
スタのためのマスタ受信クロックとなるよう設定される。送信機クラスタ内のチ
ャネル・プロセッサのすべてが、ギガビット・イーサネット・クロックのための
外部グローバル・クロック1309内の信号を選択する。クラスタのCP307内
のCPRC401間の同期は、クラスタ・メモリ503内のシグナルにより行われる
。 RxSDPの統合:図26 図26に示されるように、RxSDPの各々は、デコーダ1001,Rxビット・プ
ロセッサ1005およびRxバイトプロセッサ1013以外のプロセッサが迂回さ
れるよう設定される。デコーダ1001は、CPRC401に3ビットの同期損失出
力2603を与える。Rxビット・プロセッサ1005による入力の受信は、トー
クン・バス1027により制御され、Rxバイトプロセッサ1013による出力は
トークン・バス1028により制御される。このため、Rxビット・プロセッサは
、小型FIFO1003の内容の処理結果を、トークンを有するときのみ、大型FIFO
1011に出力し、同様にRxバイトプロセッサ1013は、トークンを有すると
きのみ、大型FIFO1011の内容の処理結果を出力する。 【0095】 好適な実施例においては、各チャネル・プロセッサは、トークンを有するとき
ギガビット・イーサネット・データの1フレームを受信し、フレームを受信する
と、トークンをクラスタ内の次のチャネル・プロセッサに渡して、受信したばか
りのフレームを処理する。すでに述べたように、データ処理の結果の1つは、デ
ータのための記述子である。チャネル・プロセッサは、グローバル・バス319
を介して待行列管理エンジン305内のメールボックス511にエンキュー・コ
マンドを書き込み、待行列管理エンジン305は、記述子を待行列に入れること
によってコマンドに応答する。最後に、共有メモリ内にシグナルとして構築され
るトークンは、受信クラスタ内の特定のチャネル・プロセッサが、トークンを有
するときのみグローバル・バス319に書き込めるように、受信クラスタのメン
バによるグローバル・バスへのアクセスを規制する。 TxSDPの統合:図27 図27は、出力クラスタ内のTxSDP427(j,0...3)がどのように設定され
るかを示す。図に示されるように、TxSDP(j,0...3)の可能化された部分だけ
がTxバイト・プロセッサ1213,大型FIFO1223および統合経路1223で
ある。出力ストリームの処理の残りの部分は、TxSDP(j,0)により行われ、
ここではTxビット・プロセッサ1205およびエンコーダ1201と、Txバイ
ト・プロセッサ1213とが可能化される。あるTxSDP427(j,k)がトー
クン・バス1225上にトークンを有する場合、そのTxバイト・プロセッサ12
13は大型FIFOおよび統合経路1223を介してデータをTxSDP427(j,0
)に出力する。TxSDP427(j,0)はMUX1228において適切な入力を選択
し、MUX1208に続く可能化プロセッサにおいてその入力を処理する。 【0096】 設定2701においては、クラスタ内の各チャネル・プロセッサ307がギガ
ビット・イーサネット・データのフレームを出力する。すでに説明したように、
チャネル・プロセッサ307は、デキュー・コマンドをQME305に発すること
により送信を開始し、送信しようとするフレームのプロトコル・データ・ユニッ
トに関する記述子を入手する。CPトークン・リング1315は、送信クラスタ内
のチャネル・プロセッサが正しい順序で記述子を確実に得るようにするために利
用される。送信クラスタ内のチャネル・プロセッサは、グローバル・バス319
にアクセスして、チャネル・プロセッサがCPトークン・リング1315内にトー
クンを有するときのみ、待行列管理エンジン305にデキュー・コマンドを与え
ることができる。チャネル・プロセッサが、出力されるデータに関する記述子を
得ると、そのTxバイト・プロセッサ1213においてデータの処理を開始するこ
とができる。データは、Txバイト・プロセッサ1213がトークン・リング13
15により提供されるトークンを有するときのみ、Txバイト・プロセッサ121
3から出力することができる。Txバイト・プロセッサ1213の出力は、統合経
路1223を介してTxSDP(j,0)に進み、そこで出力される。この場合も、
この配置によって、クラスタ内の特定のチャネル・プロセッサが、出力しようと
するフレームを処理することができ、一方で、送信クラスタ内の他のチャネル・
プロセッサは、そのフレームを出力する。 【0097】 OC-12cのクラスタは、上記と実質的に同様に機能するが、4つのクラスタ内の
うち2つのチャネル・プロセッサが受信用に設定され、2つが送信用に設定され
る点が異なる。トークン・リングは、上記のように使用されるが、OC-12cがATM
セルを送信するために利用されているとき、トークン・リング11017が受信
チャネル・プロセッサ内の受信同期プロセッサ1009を制御する点が異なる。 実行プロセッサ(XP)313の詳細:図15 XP313はMIPS IV命令集合を構築する汎用CPUである。これは、ディジタル通
信プロセッサ203において以下の機能を実行する: ・DCP203のリセットおよび初期化; ・チャネル・プロセッサ307および組織プロセッサ303へのプログラムのロ
ードと、それらの動作に関するパラメータのセット; ・テーブル・ルックアップ・エンジン301により用いられる変換テーブル20
9の設定および維持と、テーブル・ルックアップ・エンジン301内のレジスタ
のセット; ・例外の処理; ・DCP203のリアルタイム・オペレーティング・システムの実行;および ・ホスト227がある場合、それとのインタフェース。 【0098】 ホスト227とのインタフェースは、可変寸法ウィンドウを有するホスト22
7をグローバル・アドレス空間321内に提供する段階を含み、またXP313が
ホスト227から受信する、あるいはそれに送信するパケットの処理も含む。 図15は、XP313のブロック図である。XP313は、チャネル・プロセッサ
307と同じコンポーネントを多く有する。チャネル・プロセッサと同様に、こ
れはリング・バス311,ペイロード・バス313およびグローバル・バス31
9に結合される。基本的な処理要素は、XP RISCコア・プロセッサ1501で、
これはCPRC401と同様のプロセッサである。リング・バス311とのインタフ
ェース,ローカル・データ・メモリの2つのバンク1507,1508,ペイロ
ード・バス317とのインタフェースおよびグローバル・バス319とのインタ
フェース1513がある。DMEM1507とDMEM1508は両方とも、ペイロード
・バス・インタフェース1511を介してアクセス可能であり、実際にはペイロ
ード・バス315上の別々のノードである。DMEM1507のみがグローバル・バ
ス・インタフェース1513を介してアクセス可能である。チャネル・プロセッ
サ内に存在しないXP313のインタフェースは、汎用I/Oインタフェース151
7,PROMインタフェース1525およびPCIインタフェース1523である。命
令メモリには3つのコンポーネントがある。すなわち、ロード可能な命令メモリ
1503と、命令読取専用メモリ1504と、XPRC1501がDRAM229からIM
EM1503をロードするために実行するプログラムを含む命令メモリ・ローダ1
506である。XP RISCコア1501により実行されるコードとコードの実行に
利用されるデータは、SDRAM229に格納され、XP RISCコア1501の必要性に
応じて、DMAを介してSDRAM229からDMEM1507,DMEM1508およびIMEM1
503に移動される。チャネル・プロセッサ307と同様に、XP313は、グロ
ーバル・アドレス空間321にアクセスすることができる。XP/CP設定レジスタ
1517は、XP313内のグローバル・アドレス空間321の一部である。 実行プロセッサ313により実行される機能の詳細 実行プロセッサ313は、リセット信号を各チャネル・プロセッサ307に送
付することによって、ディジタル通信プロセッサ203内に受信されるチップ・
リセット信号に応答する。それを行うと、XP313は、初期化コードの実行を開
始する。初期化コードはPCIインタフェース1523およびグローバル・バス3
17を介してSDRAM229にすでにロードされているか、あるいは、PROMインタ
フェース1521に結合されるオプションの外部PROM内に含まれる。初期化コー
ドは各チャネル・プロセッサに関するIMEM403ならびにクラスタのための共有
IMEM1409をロードし、RxSDP421およびTxSDP427が実行するプログラム
をロードし、設定情報をグローバル・アドレス空間321内のレジスタにロード
する。 【0099】 ディジタル通信プロセッサ203が初期化されると、XP313はディジタル通
信プロセッサ203のためのリアルタイム・オペレーティング・システムを実行
し、ネットワーク監視プロトコルを支援し、チャネル・プロセッサにより通知さ
れる例外を扱う。XP313は、さらにグローバル・アドレス空間321に対する
アクセスを利用して、チャネル・プロセッサ,組織プロセッサ303,待行列管
理エンジン305およびバッファ管理エンジン315を管理する。XP313は、
リング・バス311とのインタフェースを利用して、テーブル・ルックアップ・
エンジン301を管理する。ある管理機能が変換テーブル209内に変換テーブ
ル・エントリを挿入および削除し、別の機能が統計値のテーブルを管理する。変
換テーブル209およびバッファ管理エンジン315を管理する能力は、XP31
3にDCP203内の入力ポートと出力ポートとの間の関係を設定する力を与える
。 【0100】 ホスト227がある場合、XP313はホストに対して、DCP203のグローバ
ル・アドレス空間内への可視性を与え、TLE301がそのために管理するテーブ
ルを読み込むことができる。XP313は、さらに、ホスト226から受信される
、あるいはそれに宛てられるパケットのためのパケット・トランシーバとしても
働くことができる。たとえば、ホスト227は、インターネット・プロトコル・
ノードであって、インターネット・パケットを受信または送信することがある。
XP313は、パケット・トランシーバとしては、チャネル・プロセッサと実質的
に同じ方式で動作するが、そのI/OインタフェースがPCIバスである点が異なる。 組織プロセッサ303:図16ないし図20 図3に示されるように、組織プロセッサ(FP)303は、ディジタル通信プロ
セッサ203と切換組織222との間のインタフェースを管理する。切換組織2
22は、通信プロセッサ203などいくつかの切換装置間の通信を行うために利
用される。図19は、1901に、複数のDCP203(1...x)をそれぞれFP30
3(i)によって切換組織222に結合する方法を示す。DCP203(i)に属
するシリアル入力(i,j)で受信されるパケットは、FP303(i)および切
換組織222を介して別のDCP(k)に配信され、そこでFP303(k)内に受
信され、シリアル出力206(k,l)において出力される。 【0101】 データは、組織222内を組織フレームとして移動する。組織フレームの正確
な形は切換組織により変わるが、組織フレームは一般的に図18に示される部分
を有する: ・組織ヘッダ1803は、組織222が組織222内の配信および流れ制御のた
めに用いる情報を含む; ・フレーム・ヘッダ1805は、組織フレーム1801を組織222に入力する
発信源装置が、組織222からフレーム1801を受信する宛先装置に与える情
報を含む;および ・ペイロード1807は、ネットワークから発信源装置に受信されるペイロード
であり、宛先装置によってネットワークに出力される。 【0102】 下記に、さらに詳細に説明するが、組織プロセッサ303は、異なる種類の組
織フレームを処理するようプログラミングすることができる。好適な環境におい
ては、組織プロセッサ303は、一定の長さ(FL1809)を有するフレームを
処理するようプログラミングすることができる。この一定長は32バイトから1
28バイトの範囲である。 【0103】 上記の説明から、組織プロセッサ303が基本的にはチャネル・プロセッサ3
07と同じ機能を有することは明らかであろう。ただし、シリアル・ポートでは
なく切換組織222から入力を受信し、組織222に出力を送る点が異なる。こ
の差が重要な結果をもたらす。第1に、切換組織222は、シリアル入力および
出力ではなく、パラレル入力を受信して、パラレル出力を提供する。入力または
出力の幅は切換組織により決まる。好適な実施例においては、組織プロセッサ3
03は、クロック・サイクルあたり8,16または32ビットの幅でデータを出
力するようプログラミングされる。 【0104】 第2に、組織プロセッサ303は、チャネル・プロセッサ307よりも速い速
度でデータを処理しなければならない。この理由の1つは、入力と出力がシリア
ルではなくパラレルであるためである。もう1つの理由は、切換組織222が他
の装置と共有され、組織プロセッサ303が切換組織222からデータを受信し
、切換組織222にデータを与えることのできる速度が、装置すべての速度およ
び処理能力にも影響を与えるためである。必要な動作速度を実現するために、組
織プロセッサ303は、1対の有限状態装置として構築される。有限状態装置は
、好適な実施例においては、以下の特性を有する組織フレーム1801と共に働
く: ・フレームが所定長を有する; ・データは一定長の組織ヘッダ1803に先行される; ・切換組織は、組織ヘッダ内の宛先ビット・マスクによりマルチキャスティング
(2つ以上の宛先にパケットを同時に配信すること)を実現する; ・単純な状態装置により組織ヘッダから輻輳情報を抜粋することができる;およ
び ・関連組織フレーム1801のシーケンスにおける第1祖送信機フレーム180
1の関係が決定論的である。 組織プロセッサ303の詳細:図16 図16は、組織プロセッサ303のブロック図である。チャネル・プロセッサ
を示す図4との一般的な類似性はすぐに明らかになる。チャネル・プロセッサ3
07と同様に、組織プロセッサ303は、ペイロード・バス317,グローバル
・バス319およびリング・バス311に結合される。そのため、SDRAM229
との間にプロトコル・データ・ユニットを送受信し、グローバル・アドレス空間
321にアクセスし、テーブル・ルックアップ・エンジン301との間にメッセ
ージを送受信することができる。主な違いは3点ある: ・Rx組織プロセッサ1617とTx組織プロセッサ1621は、32ビット・バス
1619,1623により組織222に接続される; ・組織制御エンジン1601は完全にプログラミング可能なRISCプロセッサでは
なく、2つのパラメータ化可能な状態装置である。すなわち、組織プロセッサ3
03内で受信されるフレーム1801を処理するRx組織制御エンジン1604と
、組織プロセッサ303から出力されるフレーム1801を処理するTx組織制御
エンジン1602である;および ・組織制御エンジン1601は、待行列管理エンジン305に対し直接的な接続
部1625,1627を有し、それによって、グローバル・バス319を介して
可能なアクセスよりも一時的変化の少ない待行列管理エンジン305に対するア
クセスを得る。 【0105】 組織プロセッサ303の動作は、チャネル・プロセッサ307の動作と一般的
には類似する。切換組織222により、組織フレーム1801は、Rx組織データ
・プロセッサ1617において8,16または32ビット・チャンクにおいて受
信される。Rx組織データ・プロセッサ1617は、ヘッダ1803,1805を
ペイロード1807と分離する。ヘッダ内の情報の一部は抜粋空間1613に進
み、そこでRx組織制御エンジン1604による利用が可能となる。Rx組織データ
・プロセッサ1617は、他の情報を用いて、TLE301に関するメッセージを
作成する。プロトコル・データ・ユニットは、MUX1605,DMEM1603およ
びペイロード・バス317を介して、SDRAM229内のバッファ231(i)にD
MA処理される。Rx組織制御エンジン1604は、バッファ231(i)のバッフ
ァ・タッグ233と、抜粋空間1513内のヘッダ情報と、Rx組織データ・プロ
セッサ1617により送付されるリング・バス・メッセージに応答してTLE30
1から受信される情報とを利用して、プロトコル・データ・ユニットのための記
述子217を作成する。待行列管理エンジン305に対する個別の接続1625
を用いて、組織制御エンジン1601は記述子のためのエンキュー動作を行う。 【0106】 送信処理はTx組織制御エンジン1602により実行される。Txエンジン160
2は、切換組織222が到達可能な宛先を指定する記述子217に関して行列管
理エンジン305が保持する待行列215から記述子を読み込む。組織プロセッ
サ303は、待行列の最前部から記述子を読む。各記述子に関して、組織プロセ
ッサ303は、記述子内の情報を利用して、合併空間1615を設定する。これ
は、記述子のバッファ・タッグ233により指定されるデータに関する組織フレ
ーム1801のためにヘッダ1803,1805を作成するために必要とされる
情報により行われる。また、組織プロセッサ303は、記述子のバッファ・タッ
グ233を利用して、ペイロード・バス317,DMEM1603およびMUX160
5を介してバッファ・メモリ229からTx組織データ・プロセッサ1621に対
するDMAを開始する。データ・プロセッサ1621は、合併空間1615内の情
報を利用してヘッダ1803,1805を作成し、DMA処理されたプロトコル・
データ・ユニットを利用してペイロードを作成する。Tx組織データ・プロセッサ
1621が組織フレーム1801を作成すると、それをバス1623を介して8
,16または32ビット・チャンク内に切換組織222に出力する。 Rx組織データ・プロセッサ167とTx組織データ・プロセッサ1621の詳細:
図17 図17は、Rx組織データ・プロセッサ1617とTx組織データ・プロセッサ1
621の詳細なブロック図である。Rx組織データ・プロセッサ1617から始め
ると、Rx組織データ・プロセッサ1617は、入力データ・バス1619に結合
される入力FIFO1708と、組織ヘッダ・インタープリタ1707と、ヘッダ・
ペイロード・セパレータ1703と、ペイロードFIFO1705と、ヘッダ・エク
ストラクタおよびインタープリタ1701とを備える。ペイロードFIFO1705
は、バス1616を介してMUX1605に結合され、ヘッダ・エクストラクタお
よびインタープリタ1701は、経路1614により抜粋空間1613に、経路
1616によりリング・バス・インタフェース1611に結合される。コンポー
ネント1701,1703,1707は、RxSDP421およびTxSDP427に用い
られるのと同じ種類のプログラミング可能マイクロシーケンスを利用して構築さ
れる。Rx組織データ・プロセッサ1617の動作は、一般にRxSDP421の動作
と同様であるが、シリアル−パラレル・データ変換が行われない点が異なる。切
換組織222から受信される組織フレーム1801のバイトはまずFIFO1708
に進み、FIFO1708により組織プロセッサ303と組織222とは異なるクロ
ック速度で動作することができる。切換組織222は、FIFO1708の最後尾に
書き込み、組織ヘッダ・インタープリタ1707は、FIFO1708の最前部から
読み込む。組織ヘッダ・インタープリタ1707は、組織ヘッダ1803を読み
、組織ヘッダ1803の選択された部分を抜粋空間1613に出力する。処理の
次の段階は、ヘッダ・ペイロード・セパレータ1703であり、これはフレーム
・ヘッダ1808をペイロード1807から切り離して、ペイロードをFIFO17
05に送り、そこからペイロードはバッファ・メモリ229にDMA処理される。F
IFO1705は、DMEM1603に対するDMAアクセスが可能になるまでペイロード
を保持するのに充分な大きさを持つ。次にフレーム・ヘッダ1808は、ヘッダ
・エクストラクタおよびインタープリタ1701に進み、ここでヘッダが解釈さ
れ、ヘッダからの情報を抜粋空間1613および/またはリング・バス・インタ
フェース1611に出力する。 【0107】 Tx組織データ・プロセッサ1621は、3つのプログラミング可能コンポーネ
ントと2つのFIFOとを有する。Rx組織データ・プロセッサと同様に、プログラミ
ング可能コンポーネントは、マイクロシーケンスを利用して構築される。プログ
ラミング可能コンポーネントは、組織制御エンジン1601が合併空間1615
に入れた情報を利用してフレーム・ヘッダ1805を生成するヘッダ生成器17
09と、ヘッダ1805とバッファ・メモリ229から経路1620を介してDM
A処理されたペイロード1807とを合併するヘッダおよびペイロード合併17
11と、組織ヘッダ1803を生成し、それをフレーム1801が切換組織22
2に出力される前にフレーム1801に加える組織ヘッダ生成器1715とを備
える。FIFO1717は、組織プロセッサ303と切換組織222とを異なる速度
で動作させ、FIFO1713は、DMEM1603にアクセスする際の遅延に対処する
ために必要とされる柔軟性を与える。 DCP203を利用する切換システムの設定:図19および図20 組織プロセッサ303は、DCP203が、上記の制約に合致するフレーム18
01を送受信することのできる切換コンポーネントと容易に対話することができ
るようにする。図19および図20は、可能な数多くの設定のうち3種類を示す
。設定1901は、いくつかのDCPが1つの切換組織222を共有するが、すで
に詳細に説明されている。設定1905では、別の切換組織は存在せず、代わり
に切換は、2つのDCP203を組織プロセッサ303を介して互いに接続するこ
とにより行われる。いくつかのDCP203の組織プロセッサを1つのバスに接続
し、DCP203をバスに送信することでアクセスを規制するトークン・リングま
たは他のメカニズムを提供することによって、このようなシステムを拡張するこ
ともできる。設定2001では、切換組織222に対して、いくつかのDCP20
3のみならず、DCP203が対処しない回線インタフェース2003のための非D
CP論理2002が接続される。このような設定2002を用いると、既存の装置
をDCP203を利用する切換システムに統合することができる。 テーブル・ルックアップ・エンジン301および変換テーブル・メモリ207の
詳細:図21ないし図24 前述の如く、テーブル・ルックアップ・エンジン301は、チャネル・プロセ
ッサ307,組織プロセッサ303および実行プロセッサ313からリング・バ
ス311上に受信されるメッセージに応答して、変換テーブル・メモリ207内
の変換テーブル209に関してルックアップ動作を実行し、メッセージを受信し
た装置に対してその動作結果を伴うリング・バス・メッセージを返送する。 【0108】 図21は、変換テーブル・メモリ207の好適な実施例の詳細を示す。変換テ
ーブル・メモリ207は、64ビット幅のパイプライン化バースティング・スタ
ティックRAMモジュールを利用して構築される。メモリ207は、8つのテーブ
ル・プール2101(0...7)に細分される。テーブル・プールは異なるサ
イズで、異なるサイズのテーブル・エントリにさらに細分することもできるが、
特定のテーブル・プール内のすべてのテーブル・エントリは同じサイズでなけれ
ばならない。このようなテーブル・エントリのうち2つを図21に示す。すなわ
ち、リンク・テーブル・エントリ2111とデータ・テーブル・エントリ211
9である。テーブル・プール2101は、さらに連続するテーブル・エントリか
らなるコンポーネント・テーブル2106に細分される。これらのうち2つを図
21に示す。すなわちテーブル・プール2101(1)のリンク・テーブル21
07と、テーブル・プール2101(7)のデータ・テーブル2117である。
各テーブル・エントリは、それが属するコンポーネント・テーブル2106内に
インデックスを有する。このため、LTE2111はリンク・インデックス210
9を、DTE2119はデータ・インデックス2114を有する。コンポーネント
・テーブル2106内106内のエントリは、そのインデックスにテーブル・プ
ール内のエントリのサイズを掛け算し、コンポーネント・テーブル2106の始
点の位置にその結果を加えることによって位置が特定される コンポーネント・テーブル2106には一般に2つの種類がある。すなわち、
リンク・テーブルとデータ・テーブルである。いずれの種類のコンポーネント・
テーブル2106も、データ・テーブル内のデータと関連するキーと共に用いら
れる。たとえば、変換テーブル209は、ATMパケット・ヘッダ内のVPI/VCI対を
ATMパケットの記述子を受信することになっている待行列メモリ213内の待行
列215の番号に変換する。VPI/VCI対がキーであり、そのキーにより位置が特
定されるデータ・テーブル・エントリ2119が待行列の番号を含む。検索アル
ゴリズムが、変換テーブル内でキーをどのように利用するかを決定する。リンク
・テーブルには、他のインデックス・テーブル・エントリまたはデータ・テーブ
ル・エントリのインデックスが含まれる。これは、データ・テーブル・エントリ
2119の位置を特定するために変換されるキーと共に利用される。リンク・テ
ーブル・エントリが他のエントリの位置を特定するために利用されるという事実
から予測されるように、リンク・テーブル・エントリ2111には、制御情報2
113とリンク情報2115とが含まれる。制御情報2113は、リンク情報2
115内のどのインデックスに従うかを決定するために変換されるキーと共に用
いられる。制御情報2113とリンク情報2115の正確な性質は、リンク・テ
ーブル2107が属する変換テーブル2109の検索アルゴリズムにより決まる
。データ・テーブル・エントリ2119は、キー2120とデータ2121とを
含む。変換されるキーがキー2120と一致する場合は、エントリ2119内の
データ2121はキーの変換、たとえばVPI/VCI対に待行列番号を含む。 【0109】 変換テーブル209は、好適な実施例においては、検索アルゴリズム番号21
25により特定される。検索アルゴリズム番号は、変換テーブルのコンポーネン
ト・テーブル2106を特定する仮想テーブル番号2127と、変換テーブル2
09と共に用いられる検索アルゴリズムの種類を特定するアルゴリズム指定子2
129とを含むデータ構造2124を識別する。仮想テーブル番号は、TLE30
1がコンポーネント・テーブルに関するテーブル・ポインタ2105に解読する
番号によって、コンポーネント・テーブル2106を識別する。仮想テーブル番
号を用いることによって、チャネル・プロセッサおよび組織プロセッサが現在用
いるよりも多くのコンポーネント・テーブル2106をテーブル・メモリ207
に維持して、仮想テーブル番号が表すテーブル・ポインタ2105を変更するだ
けで1つのコンポーネント・テーブル2106を他のコンポーネント・テーブル
と交換することを可能にする。たとえば、実行プロセッサ313は、新たなコン
ポーネント・テーブルを構築することができ、チャネル・プロセッサと組織プロ
セッサとは、特定のコンポーネント・テーブルを用いて、仮想テーブル番号に関
わるTLE301内のレジスタ内のテーブル・ポインタ2105をテーブル・ポイ
ンタ2105に変更するwriteregコマンド2415と共にリング・バス・メッセ
ージを送付するだけで、特定のテーブルを新たなテーブルと置き換えることがで
きる。 【0110】 特定の変換テーブル209は、最大4つのコンポーネント・テーブル2106
から構築される。コンポーネント・テーブルの1つはデータ・テーブル2117
でなければならず、他のテーブルはリンク・テーブル2117である。図21に
示される変換テーブル209には、2つのコンポーネント・テーブル、すなわち
リンク・テーブル2107とデータ・テーブル2117とがある。コンポーネン
ト・テーブルは、変換テーブル記述子2124内のその仮想テーブル番号により
識別される。 【0111】 ハッシング・アルゴリズムにより行われる変換は、変換テーブル209を用い
てキーをデータに変換する方法の一例として見ることができる。ハッシング・ア
ルゴリズムは周知である。これが実行するのは、長い列のビットをより短い列の
ビットにマッピングすることである。この場合、長い列のビットがキーとなり、
より短い列のビットがテーブル・エントリのインデックスとなる。ハッシング・
アルゴリズムは、データ・テーブル・コンポーネント2117のみを含む変換テ
ーブル209と共に用いることができる。データ・テーブル・コンポーネント2
117が設定されると、データ・テーブル・エントリ2119がそのためのデー
タを含むというキーがハッシングされ、そのキーのデータ・テーブル・エントリ
が、可能な場合にはハッシュ・アルゴリズムにより生成されるインデックス(i
)において作成され、そうでない場合は、インデックスiに続く最初の利用可能
なインデックスに作成される。インデックスiにハッシュするキーを後続キー(
i)と呼ぶ。キー(i)がハッシング・アルゴリズムに提供されると、ハッシン
グ・アルゴリズムはインデックス2114(i)を返送する。キーに対応するDT
E2119がインデックス2114(i)にあると、検索が終了し、そうでない
場合はハッシュ衝突、すなわち2つ以上のキーが同じインデックス(i)にハッ
シングする。この場合、そのキーが同じインデックス(i)にハッシングするDT
ESが2114(i)に続くインデックスを持つようにデータ・テーブル2117
が設定され、その結果として、検索アルゴリズムはインデックス2114(i)
で始まり、キーを次のデータ・テーブル・エントリ2119内のキー2120と
比較し、キー2120がキーに一致するキーを発見するか、あるいは一致しない
場合は、データ・テーブル2117の終点に到達するまでこれを続ける。終点に
到達した場合は、一致なしを報告する。速度を速くすることが望まれる場合は、
衝突が起こるインデックス2114に関してLTEを伴うリンク・テーブルを設定
し、衝突が起こった後でリンク・テーブルにインデックスを適用することができ
る。リンク・テーブルは、DTE内のインデックスに対応するエントリのインデッ
クスを与えることになる。 【0112】 テーブル・ルックアップ・エンジン301は、リング・バス・メッセージに応
答して検索テーブル209に関する検索および保守動作を実行する。テーブル・
ルックアップ・エンジン301は、ハッシング・アルゴリズム,バイナリ・トリ
・アルゴリズム(binary trie algorithm)およびパトリシア・トリ・アルゴリ
ズム(Patrcia trie algorithm)を含む種々の検索アルゴリズムを用いて検索を
行う。テーブルの保守は、検索とテーブル・エントリのインデックスとを利用し
て実行される。一般に、テーブル保守動作を特定するメッセージは実行プロセッ
サ313から与えられる。 リング・バス・メッセージ:図28 TLE301と、DCP203の他のコンポーネントとの間のすべての対話は、リン
グ・バス311上のメッセージを介する。XP313は、リング・バス・メッセー
ジを利用して変換テーブル209の設定と保守を行い、パケット・プロセッサは
リング・バス・メッセージを利用して変換すべき項目をTLE301に送付し、TLE
301はリング・バス・メッセージを利用して変換結果を返送する。図28は、
好適な実施例におけるリング・バス・メッセージを示す。メッセージ2801は
、2つの主要なコンポーネントであるデータ2817と制御2803とを有する
。データは、任意の種類の64ビットのデータとすることができる。リング・バ
ス・メッセージがTLE301に宛てられる場合、データ2817はTLEコマンドを
含む。TLE301は、そのコマンドを実行し、その結果を、TLEコマンドの発信源
に配信されるリング・バス・メッセージのデータ2817内に返送する。制御2
803は、次のフィールドを有する: ・Mフィールド2805はハードウェアにより設定され、メッセージが64ビッ
トよりも長いために、連続スロット内のメッセージのシーケンス内に含まれるこ
とを示す; ・TYフィールド2807は、メッセージの種類を示す;メッセージには4種類が
ある: ・非占有:リング・バス・スロットがメッセージを含まない; ・メッセージが標示である; ・メッセージが確認である; ・メッセージが要求である; ・メッセージが応答である。 ・LENフィールド2809は、データ2817内のメッセージの長さを示す; ・SEQフィールド2811は、応答メッセージの順序を決定することができるよ
うに送り手が設定することのできるシーケンス番号である; ・DESTフィールド2813は、メッセージの宛先であるリング・バス311上の
装置を示す; ・SRCフィールド2815は、発信源の装置を示す。 【0113】 標示および確認のメッセージの種類は、リング・バスに接続される装置のリン
グ・バス・インタフェースが機能しているか否かを判断するために用いられるに
過ぎない。装置が別の装置から標示メッセージを受信すると、その装置に確認メ
ッセージを返送する。リング・バス上の装置は、他の装置に送り手装置のための
動作を実行してほしい場合に、その装置に要求メッセージを送付する。他の装置
がその動作を実行すると、結果メッセージを用いてその結果を送り手装置に返送
する。 【0114】 このように、テーブル・ルックアップにより、テーブル・ルックアップを実行
しようとするチャネル・プロセッサは、要求種類の要求メッセージを送付し、そ
の中でチャネル・プロセッサが、自身を発信源として、またTLE301を宛先と
して指定する。データ2817には、動作のためのTLEコマンドが含まれ、SEQ2
811は、チャネル・プロセッサが応答メッセージを識別することができるよう
にする値に設定される。TLE301は、メッセージのTLEコマンドを実行し、実行
の結果を応答メッセージ内でチャネル・プロセッサに送付することにより要求メ
ッセージに応答する。結果はデータ2817にあり、TLEが自身を発信源として
、またチャネル・プロセッサを宛先として指定し、SEQ2811は要求メッセー
ジ内の値を有する。 【0115】 図24は、テーブル・ルックアップ・エンジン301がリング・バス311を
介してコマンドを受信するときに応答するテーブル・ルックアップ動作に関する
コマンドのリストである。各コマンドはテーブル内に行を有する。第1列はコマ
ンド内容を指定し、第2列はそのID番号を指定し、第3列はそれが返送するデー
タを示し、第4列はコマンドの効果を示す。テーブル・ルックアップは、FindR
コマンド2409を用いて実行され、残りのコマンドは変換テーブル209の設
定と保守,テーブル・ルックアップ・エンジン301の初期化およびTLEが機能
しているか否かの試験に用いられる。 【0116】 コマンドは、テーブル内のエントリをどのように位置づけるかと、位置づけた
エントリに関して実行する動作とにより、さらに細分することができる。キー・
コマンド2423は、キーを用いてエントリの位置を特定する: ・Findコマンド2405は、キーとアルゴリズム番号を引数として取り、変換テ
ーブル209とアルゴリズム番号が指定する検索アルゴリズムとを利用してキー
に関するデータ・テーブル・エントリ2119を検索し、データ・エントリ21
19の内容を、あるいはそのキーのエントリが見つからない場合はエラーを返送
する。 ・FindWコマンド2407は、キー,アルゴリズム番号,書き込むべきデータお
よびオフセットと長さ指定子を引数として取る;コマンド2407は、キーとア
ルゴリズムを用いてキーに関するデータ・エントリ2119を探し、長さに指定
されるデータ長をオフセットに指定されるエントリ内の位置から始まるエントリ
に書き込む。 ・FindRコマンド2409は、FindWと同じ引数を取るが、キーのエントリ211
9からのオフセットで始まるデータ長を読み込み、それを返送する。 【0117】 インデックス・コマンド2421,2425は、仮想テーブル番号およびイン
デックスを用いて、コンポーネント・テーブル2106内のエントリの位置を特
定する。グループ2421に属するコマンドは、コマンド内に指定されるエント
リからデータを読み、そこにデータを書き込む。グループ2425に属するコマ
ンドは、コマンドに指定されるエントリのデータを変更する。 ・Write(書込)コマンド2401は、コンポーネント・テーブル2106を指
定する仮想テーブル番号と、コンポーネント・テーブル内のエントリを指定する
インデックスと、書き込むべきデータと、書き込むべきデータの部分を指定する
マスクと、書込を始めるオフセットと、書き込むべきデータの長さとを引数とし
て有する。コマンド2401は、コマンド内に指定されるようにデータを書き込
む。 ・Read(読込)コマンド2403は、マスク以外の同じ引数を有する。このコマ
ンドは、指定されるテーブルの指定されるエントリにある指定される位置のデー
タを読み、それを返送する。 ・XORコマンド2411は、指定されるテーブルの指定されるエントリの指定さ
れる位置のデータに関して、コマンド内のデータを用いてXOR演算またはCRC計算
を実行する。CRC計算の場合は、CRCを返送する。 ・Add(加算)コマンド2423は、指定されるテーブルの指定されるエントリ
内の指定される位置にあるデータにコマンド内のデータを加える。 【0118】 レジスタ・コマンド2427は、TLE301にレジスタの読込(2417)と
書込(2415)を行う。レジスタは、レジスタ・アドレスにより指定される。
これらのコマンドは、変換テーブル,コンポーネント・テーブル内106および
検索アルゴリズムのコードの位置を特定するのに必要な情報によりTLE301を
初期化し、単純にコンテクスト情報をTLE301に書き込み、それを読む。 【0119】 Echo(エコー)コマンド2419は、コマンド内のデータを送り手に単純に返
送する。このコマンドは、リング・バス311と付属装置のリング・バス・イン
タフェースが正しく機能しているか否かをチェックするために用いられる。 【0120】 Nopコマンド2420は、実行されると何もしないコマンドである。 【0121】 TLE301は、次の基本ループを実行する: 1.リング・バスからコマンドを読む; 2.コマンドを実行する;および 3.結果をリング・バスを介して返送する。 【0122】 コマンドがテーブルに関する演算の場合は、コマンドの実行段階には次の段階
が含まれる: a)テーブル・エントリのインデックスを決定する;および b)テーブル・エントリ内の指定される位置にあるデータに関して標示される動
作を実行する。キーを含むコマンドでは、テーブル・エントリのインデックスを
決定する段階には、次の段階が含まれる: i.キーを第1インデックス値に変換する; ii.インデックス値に指定される変換テーブル・エントリに格納されるキーを
取り出す; iii.キーと取り出したキーが一致する場合、段階vに進む; iv.一致しない場合は、検索アルゴリズムに従って新しいインデックスを計算
する;段階iiに進む;および v.インデックス値に指定されるテーブル・エントリに格納されるデータに動作
を実行する。 【0123】 図22は、テーブル・ルックアップ・エンジン301の内部アーキテクチャを
示す。テーブル・ルックアップ・エンジン301にアドレス指定されるリング・
バス・メッセージがリング・バス・ノード2201に受信される。メッセージ内
のコマンドがコマンド・プロセッサ2203とテーブル・ルックアップ・エンジ
ン301の他のコンポーネントにより処理される。処理を行うために必要な情報
がレジスタ格納部2205に格納され、アルゴリズムのためのプログラムが制御
格納部2215に格納される。 【0124】 図23は、レジスタ格納部2205と制御格納部2215の詳細を示す。説明
のために、レジスタ格納部2205の4種類のレジスタをあげる。すなわち、ア
ルゴリズム設定レジスタ2301,テーブル設定レジスタ2311,仮想テーブ
ル設定レジスタ2341およびメッセージ・コンテクスト・レジスタ2319で
ある。アルゴリズム設定レジスタ2301は、コマンド内で用いられるアルゴリ
ズム番号を制御格納部2215内のテーブル209およびハッシュ・コード23
23に関連づける。TLE301が現在使用中の各テーブル207の各々について
アルゴリズム設定レジスタ(ACR:algorithm configuration register)230
1があり、ACR2301(i)のインデックスは、そのアルゴリズム番号312
5である。図23には1つのACR2301(i)が示される。特定のACR2301
には、テーブル207を構成するコンポーネント・テーブルの仮想テーブル番号
が含まれる。LVT12325は、第1インデックス・テーブルのための仮想テーブ
ル番号であり、LVT22327は、第2インデックス・テーブルのための仮想テー
ブル番号であり、LVT32329は、第3インデックス・テーブルのための仮想テ
ーブル番号である。最後に、DVT2333は、データ・テーブルのための仮想テ
ーブル番号である。HASHF#2331は、仮想テーブル検索に用いられるハッシュ
関数の番号である。 【0125】 コンポーネント・テーブル設定レジスタ2311は、SRAM207内のコンポー
ネント・テーブル2106を記述する。各コンポーネント・テーブル2106に
はCTCR2311(i)があり、テーブル2311のインデックスがテーブルの物
理的なテーブル番号2343となる。各CTCR2335は、そのテーブルの種類2
335,そのテーブルエントリのサイズ2337およびSRAM207内のテーブル
の始点のオフセット2339を示す。最後に、VTCR2341は、現在使用されて
いる仮想テーブルを記述する。各テーブル番号2127には1つのVTCR2341
があり、特定の仮想テーブル番号のVTCR2341(i)には、VTCR2341(i
)のVT#2127により現在指定されるコンポーネント・テーブルの物理的なテ
ーブル番号2323が含まれる。特定のVT#2127により表されるコンポーネ
ント・テーブルを切り換えるには、VT#2127に対応するVTCR2341のPT#2
323を変更すればよい。 【0126】 メッセージ・コンテクスト・レジスタ2319は、現在テーブル・ルックアッ
プ・エンジン301により処理されているリング・バス・メッセージに関連する
データを含む。メッセージ・コンテクスト・レジスタには4種類があり、TLE3
01は4つのリング・バス・メッセージを同時に処理することができる。待機メ
ッセージは入力FIFO2202内に、あるいはリング・バス311自身の上に格納
される。図23には、ただ1つのメッセージ・コンテクスト・レジスタ、メッセ
ージ・コンテクスト・レジスタ2319(k)が図示される。各メッセージ・コ
ンテクスト・レジスタ2319は、その中に3種類のデータを有する。すなわち
、リング・バス・メッセージからのメッセージ情報2321,テーブル・ルック
アップ・エンジン301内でリング・バス・メッセージの処理中に生成使用され
る処理情報2327および現在の処理結果を含む結果2329である。処理が終
了すると、結果がリング・バス・メッセージ内に処理されるメッセージの発信源
に返送される。メッセージ情報2321は、コマンドの種類,コマンドと共に送
付される情報,リング・バス・メッセージの発信源であるプロセッサおよびメッ
セージのシーケンス番号を含む。処理情報2327は、アルゴリズム・コード2
323内のプログラム・カウンタと、検索により取り出される最後のリンク・テ
ーブル・エントリ2111の内容と、次に取り出されるリンク・テーブル・エン
トリ2111のSRAM207内のアドレスとを含む。結果2329は、コマンドの
実行結果の情報を含む。FindRコマンドの場合は、結果には、コマンドがキーに
関わるデータ・テーブル・エントリ2119から読み出すことを指定するデータ
、あるいはそのキーのデータ・テーブル2117119が見つからない場合はヌ
ル値が含まれる。 【0127】 図22に戻って、コンポーネント2203,2207,2213,2209,
2211,2219は、制御格納部2215およびレジスタ格納部2205にア
クセスすることのできる処理要素によって構築される。コンポーネント2209
は、テーブル・メモリ207上でSRAMメモリ・コントローラ2217を介して読
込動作を実行することができ、コンポーネント2219は、テーブル・メモリ2
07上でSRAMメモリ・コントローラ2217を介して読み書き動作を実行するこ
とができる。TLE301に宛てられるメッセージがリング・バス311上にある
と、リング・バス・ノード2201が入力FIFO2202の最後尾にそのメッセー
ジを置く;コマンド・プロセッサ2203がFIFO2202の最前部を読み込む。
コマンド・プロセッサ2203は、メッセージからの情報を1組のメッセージ・
コンテクスト・レジスタ2319(i)に格納する。このメッセージ・コンテク
スト・レジスタ2319(i)の集合は、他のコンポーネントがメッセージのコ
マンドを実行する際に用いる。 【0128】 コンポーネントの機能は次の通りである: ・初期インデックス生成器2207は、1組のコンテクスト・レジスタ2319
(k)のキーからコンポーネント・テーブル・エントリの初期インデックスを生
成する; ・アドレス生成コンポーネント2209は、インデックスからコンポーネント・
テーブル・エントリのアドレスを生成し、コンポーネント・テーブル・エントリ
からキーを取り出す; ・比較およびレジスタ取出コンポーネント2219は、コンテクスト・レジスタ
2319(k)の集合に格納されたキーを取り出す; ・SRAMデータ・ラッチ2219は、取り出したキーと格納されるキーとを比較し
、この比較に基づいて格納されたキーのためのデータ・テーブル・エントリ21
19が発見されたか否かを判断する。発見された場合は、データ・テーブル・エ
ントリを取り出し、データ・テーブル・エントリの内容と共にリング・バス・メ
ッセージを出力FIFO2221に送付する;そうでない場合は、リンク・テーブル
・エントリを取り出し、それをコンテクスト・レジスタ2319(k)に入れ、
処理はインデックス生成2213で続行される; ・インデックス生成コンポーネント2213は、格納されるキーと取り出される
リンク・テーブル・エントリとを用いて、次のテーブル・エントリ2111(1
)のインデックスを生成し、そのインデックスをコンテクスト・レジスタ231
9(k)に入れる;アドレス生成コンポーネント2219は、それを用いて次の
テーブル・エントリのアドレスを生成する。 【0129】 findRコマンド2409を含むリング・バス・メッセージを一例に取り、コマ
ンド内のalg#がハッシング・アルゴリズムを指定するとすると、コマンド・プロ
セッサ2203がメッセージに関してコンテクスト・レジスタ2319(k)内
にメッセージ情報2321を設定すると、初期インデックス生成2207がコマ
ンドからのキーによりハッシング・アルゴリズムを実行して、値lを得る。アド
レス生成2209は、lを用いてデータ・テーブル・エントリ2119(l)の
アドレスを計算し、SRAMデータ・ラッチ2219がエントリ2119(l)を取
り出す。そのキー・フィールド2120がキーを含む場合、検索が実行され、SR
AMデータ・ラッチ2219は、データ・フィールド2121内にデータを含むリ
ング・バス応答メッセージを作る。そうでない場合は、インデックス生成221
3がDIX2114を増分して、アドレス生成2209が次のDTE2119のアドレ
スを生成し、それを取り出して、上記の試験を実行する。そのキー・フィールド
2120がキーに一致するDTE2119が発見されるか、あるいはデータ・テー
ブルの終点に到達するまで実行はこの要領で続行される。 テーブル・ルックアップ・エンジン301の他の利用法 XOR2411および加算2413コマンドの存在から明らかになるように、TLE
301はテーブルを維持し、その中で情報を検証する以上のことができる。パケ
ット・プロセッサの各々は、TLE301に対して一定の最大待ち時間をもって迅
速なアクセスを行うことができるので、一般に、TLE301と変換テーブル・メ
モリ207とを用いてパケット・プロセッサにより処理されている着信パケット
のストリームに関するコンテクスト情報を格納および処理することができ、さら
に、それによってパケット・プロセッサが利用することのできる比較的少量のDM
EM405により課される制約を克服することができる。アドレス変換を行うため
に必要な情報は、このようなコンテクスト情報の一例である。他にも、別のパケ
ットのペイロードとして伝えられるパケットの正確性を検証するために必要な情
報がある。 【0130】 パケットの正確性の検証は、パケット終点において巡回冗長コード(CRC: cyc
lic redundancy code)を用いて実行される。CRCは、パケット作成時にパケット
の内容から作成され、パケットがその宛先に到着すると、CRCが再計算され、パ
ケットに含まれるCRCと比較される。これらが同じであれば、パケットが変造さ
れずに到着した確率はきわめて高い。もし異なる場合は、パケットが変造された
可能性が同じように高い。後者の場合は、パケットが廃棄され、パケットの再送
付を要求するメッセージが送り手に送付される。SDP420は、着信パケット内
のCRCをチェックし、発信パケットのCRCを提供するという両方の目的で、パケッ
トのCRCを計算することができなければならない。パケットが受信または出力さ
れた場合に、CRCを処理中に計算するための多くのアルゴリズムが知られている
。 【0131】 上記から明らかなように、SDP420でCRCを計算するには、パケットに関する
CRC情報を、パケットがSDP420を通過中は全時間にわたり維持することが必要
とされる。そのCRCを計算中のパケットが、移送パケット内のペイロードよりも
高レベルのパケットであり、異なる高レベルパケットに属するペイロードをペイ
ロードを伝える移送パケットが、SDP420に受信またはそこから送信されるパ
ケット・ストリームに挟み込まれる場合には、問題はより複雑になる。このよう
な場合は、高レベルのパケットの各々について別々にCRC計算を行わねばならな
い。 【0132】 DCP IC203において、CRCを計算する問題はTLEを利用して中間結果を処理お
よび格納することで解決される。そのRCを計算している、より高レベルのパケッ
トの各部がSDPを通過すると、CPRC401は高レベル・パケットのその部分の中
間CRCを計算するために必要な情報を収集し、その情報と、情報を高レベルのパ
ケットの前回の中間CRCにどのように適用するかを指定するコマンドと共にリン
グ・バス・メッセージをTLE301に送付する。高レベル部分の最後の部分が通
過すると、その情報を伴う最後のリング・バス・メッセージが送付され、TLE3
01はコマンドを実行してCRC計算を完了する。次に、CPRC401は、結果を読
み込む読込コマンド2403を送付し、パケットが変造されたか否かを判断する
ためにパケットの終点に結果と共にTLE301が送付するリング・バス・メッセ
ージ内に返送される結果を比較する。 【0133】 TLE301を用いてパケット・ストリーム・コンテクストを格納することがで
きる別の領域は、トラフィック数値である。これらの数値は、パケット・プロセ
ッサからのリング・バス・メッセージに応答してTLE301内に蓄積することが
でき、実行プロセッサ313により読み込まれ、実行プロセッサ313またはホ
スト・プロセッサ227により用いられて、DCP203が属するネットワーク上
でトラフィックの現状の要求に応じてDCP203を設定することができる。 待行列管理エンジン305の詳細 待行列管理エンジン305は、パケット・プロセッサによる指定に従って待行
列215内に記述子217を入れ、これもパケット・プロセッサによる指定に従
って待行列から記述子を取り出す。パケット・プロセッサが単独で動作する場合
、通常、2つ以上の待行列に記述子を入れ、1つの待行列からしかそれらを取り
出さない。パケット・プロセッサが統合されると、統合されるすべてのパケット
・プロセッサは、一般に1つの待行列から読み込む。QME305は、さらに、個
別のエンキューおよびデキュー動作に関わり、待行列そのものに関わる状況情報
をパケット・プロセッサに与える。QME305は、待行列に入れた記述子を読み
込んだり、特定のパケット・プロセッサが、次にどの待行列から取り出すかを決
定することはない。待行列は、DPC302内に完全に格納され、その中および
/または外部待行列メモリ213内に格納されるか、あるいは外部のキューイン
グおよびスケジューリング・ユニット内に格納および管理される。後者の場合、
QME305は、エンキューおよびデキュー・コマンドをパケット・プロセッサか
ら外部のキューイングおよびスケジューリング・ユニットに伝え、コマンドの結
果と状況情報とをパケット・プロセッサに返送する。この場合に待行列が配列さ
れる方法は、もちろん、外部のキューイングおよびスケジューリング・ユニット
に完全に依存する。 【0134】 記述子の内容は、記述子をQME305に送ってエンキューするパケット・プロ
セッサにより完全に決定されること、またその記述子の内容は記述子を取り出す
パケット・プロセッサにより完全に解釈されることに留意されたい。このため、
QME305は、DCP203が1コンポーネントである切換システムに属するパケッ
ト・プロセッサ間のメッセージの規則正しい伝達と、パケット・プロセッサと外
部のキューイングおよびスケジューリング・ユニットとの間の情報の伝達を行う
一般的システムである。 パケット・プロセッサのためのQMEインタフェース:図29 図29は、チャネル・プロセッサ307(i)のためのQMEインタフェース2
901を示すが、他のパケット・プロセッサも、組織プロセッサ303がQME3
05に対する独自の私的接続を有する以外は、同じインタフェースを有する。QM
E305内部にあるインタフェース部分から始めると、QME305のローカル・メ
モリはもちろんグローバル・アドレス空間321の一部であり、そのためCP30
7(i)によりアクセス可能である。QME305のローカル・メモリには、待行
列状況情報2902が含まれる。下記に、より詳細に示すが、待行列状況情報2
902によって、チャネル・プロセッサ307(i)は、QME305内のどの待
行列で記述子を取り出すか、およびその待行列の状態を決定する。このため、チ
ャネル・プロセッサ307(i)のCPRC401は、QSI2901にアクセスして
、その待行列のうち、どの待行列で次に記述子を取り出すかを決定することがで
きる。パケット・プロセッサの各々について、QME305内に待行列メールボッ
クス2903がある。待行列に記述子を入れる、あるいは取り出すために、CP3
07(i)はペイロード・バス317を介して待行列コマンド2913をCP30
7(i)のQMB203に送付する。デキュー・コマンドに応答して、QME305は
デキュー・メッセージ2907をペイロード・バス317を介してCP307(i
)に返送する。デキュー・メッセージ2907には、待行列から取り出された記
述子と、その記述子が表すプロトコル・データ・ユニットおよび記述子が取り出
された待行列の状態に関する情報とが含まれる。QME305は、さらに、グロー
バル・バス319内のスペア・サイクルを利用して、待行列状況リポート(BQSR
:queue status reports)2915を、パケット・プロセッサが対応する待行列
に関わる個別のパケット・プロセッサに送信する。これらのリポートは、パケッ
ト・プロセッサが対応するどの待行列が空になったか、また空になるのをやめた
かを知らせる。これらのリポートは、パケット・プロセッサのローカル・アドレ
ス空間内の待行列状況レジスタ601の被受信待行列状況リポート(RQSR:rece
ived queue status reports)2915として現れる。最後に、CP307(i)
には待行列動作状況レジスタがあり、これにはQME305がCP307(i)から
受信した最後の待行列コマンドの実行の状況を示す2ビットが含まれる。4つの
可能な状況は次の通りである: ・成功裡に実行された、および/またはアイドリング ・失敗した ・使用中,コマンド実行の開始を待機中 ・使用中,QMEによりコマンド実行中。 【0135】 CP307(i)がパケットの受信も送信も行うとすると、通常は、インタフェ
ースを次のように用いる:被受信パケットに関する記述子を作成し待行列から取
り出すために必要とする情報を得て、CP307(i)が書込制御ブロック610
を設定し、エンキュー・コマンドをCP307(i)のQMB2903に送付し、QOS
2911をチェックしてメールボックスが使用中でないことを確認し、エンキュ
ー・コマンドを送付するDMAを開始する。このように記述子のエンキュー動作中
に、RQSR2915を定期的にチェックして、そこからパケットを送信している待
行列のいずれかが空でない状態になったか否かを判断する。空でない状態のもの
があると、CP307(i)はエンキュー・コマンドについて説明したのと全く同
じ方法でデキュー・コマンドを送付する。QME305は、DEQM2907でデキュ
ー・コマンドに応答し、CP307(i)はDEQM2907に含まれる記述子を用い
て、それが表すパケットを送信する。DEQM2907に含まれる他の情報を用いて
、記述子が表すパケットの送信のスケジュール決定を行い、あるいは待行列の状
態の独自のコピーを更新することができる。CP307(i)は、グローバル・ア
ドレス空間321のQME305の部分にアクセスせずに、すなわちグローバル・
バス319に負担をかけずに、説明したすべてのことを実行することができるこ
とに注目されたい。もちろん、CP307(i)が書き込みまたは読み込もうとす
る待行列の状態に関してさらに情報を必要とする場合は、QSI2902にアクセ
スすることができる。 待行列コマンド2913の詳細:図30 好適な実施例においては、パケット・プロセッサはQME305に対して、次の
4つの動作を実行することを命令することができる: ・待行列設定; ・待行列に記述子を入れる(エンキュー); ・待行列から記述子を取り出す(デキュー);および ・複数の待行列に記述子を入れる。 【0136】 これらの動作に関するコマンドは、ペイロード・バス317を介してQME30
5に送信される。ペイロード・バス317上のトランザクションには2つの部分
がある:すなわち、アドレスとデータである。単独の待行列に関わる待行列コマ
ンドでは、アドレスを動作と待行列を指定するために用いる。これを3001に
示す。カウント・フィールド(CNT)3003,トランザクション番号(T#)3
005およびプール識別子(PI:pool identifier)3007は、すべてのペイ
ロード・バス・アドレスに共通である。CNT3003は、トランザクションで読
まれるあるいは書き込まれる16ビット数量の数を指定する;T#3005は、同
一の発信源による特定の宛先へのトランザクションの区別を行う;PI3007は
、BME315内のバッファ・プールまたはBME315により実行されるバッファ・
タッグ動作とQME305により実行される待行列動作のために確保されるプール
番号のいずれかの宛先指定を行う。PI3007がQME305を指定するアドレス
では、アドレスには、上記の動作の1つを特定する動作指定子3009がさらに
含まれ、単独の待行列に関する動作については、待行列番号3011も含まれる
。 【0137】 コマンドのデータ部分の内容は、コマンドにより変わる。待行列設定コマンド
については、データ3013は、アドレスの3011において指定される待行列
が3015に含むことのできる記述子217の最大数と、3017において記述
子が取り出されるQME305内の記述子プールと、待行列に属するが実際には使
用されない記述子217の数を指定する記述子許容値3019とを指定する。待
行列設定コマンドにより、特定の待行列を読むパケット・プロセッサは、条件の
変化に応じて待行列に割り当てられる資源の量を動的に変化させることができる
。たとえば、待行列から送信中のチャネル・プロセッサ307が対応する出力ポ
ートについてトラフィックのバーストが起こると、そのチャネル・プロセッサ3
07は、待行列設定コマンドを用いて記述子または記述子許容値の最大数を増大
させることができ、バーストが終わると、チャネル・プロセッサ307は記述子
および/または記述子許容値の最大値を減少させることができる。 【0138】 ユニキャスト・エンキュー・コマンドについては、2ワードのデータ3021
がある。第1ワードは、記述子加重3023を含み、これは待行列に入れられる
記述子が表すDRAM229内のデータ量を指定する。第2ワードは、3011で指
定される待行列に入れられる記述子217を含む。デキュー・コマンドに関して
も2ワードのデータ3025がある。第1ワードは、待行列から取り出される記
述子の記述子加重3023と、まだ待行列内にある記述子の記述子加重の総数で
ある待行列加重3027と、待行列内に残る記述子の数である待行列長2039
とを含む。第2ワードは、3011で指定される待行列から取り出された記述子
217を含む。待行列から取り出された記述子217を受信するパケット・プロ
セッサは、第1ワード内の情報を利用して、プロセッサが送信している待行列の
うちどれから、次にデキュー・コマンドを発するかを決定し、あるいは、待行列
に使用することのできる資源の量を変更するための待行列設定コマンドを発する
ことができる。 【0139】 そのアドレス部分が3031に示され、データ部分が3035に示されるマル
チキャスト・エンキュー・コマンドは、2つ以上のパケット・プロセッサによる
送信のために記述子を待行列に入れる。アドレス部分3031とアドレス部分3
001との唯一の違いは、待行列番号フィールド3011の代わりに待行列レベ
ル(QLEV: queue level)フィールド3033を含むことである。待行列レベル
・フィールド3033は、記述子を受信することになっている待行列に関する最
小限のサービスまたは優先度のレベルを指定する。コマンドのデータ部分303
5は、どのパケット・プロセッサが待行列を出力するかを示す第1ワード内に、
マルチキャスト・ベクトル(MCV:multicast vector)3707を含む。第1ワ
ードには、第2ワード内にある記述子217の記述子加重3023も含まれる。
コマンド内のデータが示すように、マルチキャスト・エンキュー・コマンドは、
特定の待行列の代わりにパケット・プロセッサとサービス・レベルを指定し、QM
E305は少なくとも最低限のサービス・レベルを有する指定されるパケット・
プロセッサが対応する待行列内に記述子217を入れる。記述子は、実際には、
すべての待行列にコピーされるわけではない。これについては、下記に詳細に説
明する。QME305にマルチキャスト・エンキュー・コマンドを送付する受信側
のパケット・プロセッサは、BME315に対しても、マルチキャスト・エンキュ
ー・コマンドの記述子内に指定されるBT233のカウンタを設定するコマンドを
送付する。送信側のパケット・プロセッサがマルチキャスト用に(記述子内に標
示される)待行列に入れられた記述子を受信し、記述子のBT233に指定される
PDUを送信するたびに、送信側パケット・プロセッサは、BT233のカウンタを
1だけ減分するコマンドをBME315に送付する。 待行列データ構造の詳細:図31および図32 図31および図32は、好適な実施例においてバッファ管理エンジン305内
に待行列215を構築するデータ構造の詳細を示す。DCP203が採用される特
定の状況について必要とされる待行列の数とサイズとに依存して、データ構造は
、すべてDCP203内部のメモリにあるか、待行列制御データ構造がDCP203内
部のメモリにあるか、待行列そのものが待行列メモリ213にあるか、あるいは
すべての待行列データ構造が待行列メモリ213内にある。 【0140】 待行列215は、記述子記録3111のリンクされたリストである。すべての
記述子記録3111は同じサイズであるが、そのサイズは、システムの初期化時
にパラメータにより設定される。記述子記録は、複数の記述子プール3109(
0...q)内に格納され、プールのサイズと数は、QME305が利用可能な格納部の
量により決まる。特定の待行列に属する記述子記録3111は、すべて1つの記
述子プール3109(i)のものでなければならない。各記述子記録3111に
は、少なくとも次のフィールドが含まれる: ・使用中カウント(IUC: in-use count)3139,記述子が現在入れられてい
る待行列の数を示す;および ・次ポインタ(NPTR: next pointer)3115,待行列内の次のバッファ記録を
指す。 【0141】 記述子がバッファ231に関する情報を受信側パケット・プロセッサから送信
側パケット・プロセッサに伝えるために用いられる場合は、記述子記録3111
には次の項目も含まれる: ・記述子加重(DW: descriptro weight)3137,記述子のバッファ・タッグ
233が表すバッファのサイズを示す;および ・バッファ・タッグ(BT: buffer tag)233,記述子が表すSDRAM229のバ
ッファに関するバッファ・タッグである。 【0142】 あるいは、記述子217、従って記述子記録3111の内容は、記述子の発信
源であるパケット・プロセッサにより決まる。たとえば、発信側パケット・プロ
セッサがパケットの最終目的地が複数のイーサネット・ノードであるストリーム
内でパケットを処理しており、宛先のパケット・プロセッサがイーサネット・ノ
ードが属するLANにパケットを出力する送信側パケット・プロセッサである場合
には、記述子217にはバッファ・タッグ233により指定されるバッファの内
容から作成されるパケットのイーサネット・アドレスが含まれることになる。図
31には、マルチキャスト・リスト記録(MCLR: multicast list records)31
23のプール3121も図示される。下記に、より詳細に説明するように、これ
らの記録はマルチキャストにおいて用いられる。 【0143】 各待行列215は、待行列リスト3101内の待行列記録3103により表さ
れる。待行列リスト3101は、グローバル・アドレス空間321のバッファ管
理エンジン305の部分内にあり、その結果として、パケット・プロセッサによ
り読み込まれる。待行列の待行列番号3105は、リスト3101内のその待行
列記録3103のインデックスである。待行列リスト3101は、セクション3
107に分割され、1つのセクションがパケットを送信する各パケット・プロセ
ッサに関する。特定のパケット・プロセッサのすべての待行列は、リスト310
1のパケット・プロセッサのセクション3107の連続する1組の待行列記録に
より表される。グローバル・アドレス空間321のQME305の部分内の設定情
報には、待行列リスト3101の各パケット・プロセッサのセクションのベース
・アドレス3108と、パケット・プロセッサが読み込む待行列の数とが含まれ
る。その結果、パケット・プロセッサは、どの待行列がどのパケット・プロセッ
サに対応されるかを決定することができ、特定の待行列番号,待行列記録310
3を発見することができる。待行列リスト3101は、さらにQME305によっ
て特定のパケット・プロセッサがどの待行列に関するブロードキャスト待行列状
況リポート2915を受信するかを決定するために用いられる。 【0144】 各待行列記録3103には次のフィールドが含まれる: ・ヘッド・ポインタ(HDPTR:head pointer)3113,記録の待行列の最前部
に現在ある記述子記録3111を指す; ・テール・ポインタ(TPTR: tail pointer)23113,記録の待行列の最後尾
に現在ある記述子記録3111を指す; ・待行列長(QL: quele length)3129,現在記録の待行列にある記述子記録
3111の数; ・総記述子加重(TDW: total descriptor weight)3131,記録の待行列にあ
るすべての記述子記録のDWフィールド3137の値の和; ・割当記述子許容値(ADA: allocated descriptor allowance)3133,待行
列に割り当てられる待行列内に実際ある記述子数よりも大きい数;および ・待行列長制限(QLL: queue length limit)3135,待行列の最大許容長を
指定する。 【0145】 ADA3133とQLL3135は、待行列の記述子の発信源となるプール3809
と共に、待行列設定コマンドにより設定されることに注目されたい。 【0146】 図31に1つの待行列215(0)を示す。待行列215(0)は、記述子記
録3111(i...k)を含み、記述子記録3111(i)は待行列の最前部にあ
り、そのためにQR3103(0)のHDPTR3113に示され、記述子記録311
1(k)は最後尾にあってQR3103(0)のTPTR3117に示される。記述子
記録3111(k)の後には、割当記述子記録3111(q...t)のリンク・リ
スト3119が続く。これらの記述子記録は、待行列215(0)に割り当てら
れているが、待行列215(0)の最後尾に続くのでその一部ではない。ADAフ
ィールド3133は、リンク・リスト3119内に入れることのできる記述子記
録の最大数を決定する。 【0147】 待行列215(i)が待行列設定コマンドにより初期化されると、QME305
は、割当記述子記録3111のリンク・リスト3119を設定し、ヘッド・ポイ
ンタ3113とテール・ポインタ3117がリンク・リスト3119内の第1記
述子記録3111を指すように待行列記録3103(i)を設定し、QLフィー
ルド3129が0に設定される。QME305は動作を実行すると、QOSレジスタ2
911にその状況を標示させる。 【0148】 エンキュー・コマンドがパケット・プロセッサの待行列メールボックス290
3に受信されると、QME305はコマンド内の記述子217を取り出し、それを
コマンド内に指定される待行列に属するリスト3119の第1記述子記録311
1に書き込み、QL319を増分し、記述子記録3111が書き込まれた記述子記
録3111をTPTR3117が指すように更新する。リンク・リスト3119内に
記述子記録3111がない場合は、QME305はADA3133に指定される数をリ
ストに追加する。この場合も、QME305はQOSレジスタ2911を利用して動作
状況を標示する。記述子217が待行列に入れられる前の待行列215の待行列
長が0であった場合には、QME305はブロードキャスト・アナウンスメント2
905を、その待行列が空でないことを示している待行列のパケット・プロセッ
サに送付する。 【0149】 デキュー・コマンドが受信されると、QME305はヘッド・ポインタ3113
を用いて、待行列の最前部にある記述子記録3111の位置を特定し、そこから
記述子217を読み込み、ヘッド・ポインタ3113を更新して、待行列内の次
の記述子記録3111を指す。また、ADAフィールド3113で許されるよりも
少ない記述子記録3111がリスト3119内にある場合には、前のヘッド記述
子記録3111をリスト3119に追加する。この場合も、QOSレジスタ291
1は、動作状況を標示する。記述子217はコマンドの返送データ内に返送され
る。待行列から出された記述子が待行列内の最後のものである場合は、QME30
5は待行列が現在空であることを示すBQSR2905を送付する。 マルチキャスト・エンキュー動作およびデキュー動作:図32および図33 待行列コマンドの説明に示すように、マルチキャスト・エンキュー・コマンド
は、1つの記述子を2つ以上の送信側パケット・プロセッサにより利用できるよ
うに、パケット・プロセッサが待行列に入れることを可能にする。図32は、好
適な実施例においてマルチキャスト・エンキュー動作を実現する方法を示す。待
行列リスト3101の待行列に加えて、待行列管理エンジン305は、1つのマ
ルチキャスト・リスト3201を維持する。QME305は、マルチキャスト・エ
ンキュー・コマンドに受信される記述子215を、マルチキャスト・リスト32
01の記述子記録3111に置き、記述子は、記述子により標示されるプロトコ
ル・データ・ユニットを送信することになっているすべてのパケット・プロセッ
サがそれを行うまで、マルチキャスト・リスト3201内に残る。 【0150】 マルチキャスト・リスト3201に関して続けると、これはリスト3201内
の第1DR3111(g)を指すマルチキャスト・リスト記録3203により表さ
れる。パケット・プロセッサが依然として記述子215のプロトコル・データ・
ユニットを送信しなければならない記述子215を表すリスト3201内のDR3
111には、それに関する1つ以上のマルチキャスト・リスト記録3123があ
る。DR3111に関するマルチキャスト・リスト記録3123は、ポインタのリ
スト3209を格納する。ポインタには、マルチキャスト・リスト3201内の
次のDR3111に対するポインタと、ユニキャスト待行列内のDR311に対する
ポインタとが含まれる。 【0151】 図32において、DR3111(h)のポインタを詳細に示す。DR3111(h
)の記述子215は、マルチキャスト・エンキュー・コマンドにより待行列に入
れられ、その結果として、記述子215がユニキャスト待行列215(i),2
15(j)に入れられた。このため、待行列215(i)のDR3111(a)内
のNXTPTR3115は、マルチキャスト・リスト3201のDR3111(h)を指
し、待行列215(j)のDR3111(k)内のNXTPTR3115も同様である
。DR3111(h)のNXTPTR3115は、DR3111(h)に関する第1MCLRで
あるMCLR3123(r)を指す。MCLR3123(r)には3つのポインタがある
。すなわち、1つはポインタ3211で、マルチキャスト・リスト3201内の
次のDR3111を指し、もう1つは3212で待行列215(i)の中でDR31
11(h)に続くDRを指し、第3は、3213で、待行列215(j)内でDR3
111(h)に続くDRを指す第4のポインタ3214を有するMCLR3123(s
)を指す。 【0152】 MCLR3123の詳細を図33に示す。各MCLR3123には2つの待行列ポイン
タ3301があり、各々が待行列番号(3203)と待行列番号3203により
指定される次のDR3111(h)に対する次ポインタ(NPTR)3205と、DR3
111に関する次のMCLRを指す次MCLRポインタ(NXTMCLR)3213とを指定す
る。マルチキャスト・リスト3201内の特定のDR3111に関する第1MCLRに
おいては、第1QPTR3301がマルチキャスト・リスト内の次DR3111を指す
。 【0153】 上記からわかるように、DR3111(h)は、各待行列215内の先行するDR
3111にDR3111(h)を指示させ、DR3111(h)に関するMCLR312
3内の各待行列の次のDR3111に対するポインタを含めることで、任意の数の
ユニキャスト待行列215内のDRとすることができる。マルチキャスト・エンキ
ュー動作は、このように、リスト3201に入れられる記述子217に関してDR
3111を追加し、どのユニキャスト待行列215 記述子217を入れるかを決定し、ユニキャスト待行列215の必要性に応じて
MCLR3123を追加し、図32に示すようにユニキャスト待行列内の先行DR31
11にポインタを設定し、ユニキャスト待行列215内のテール・ポインタがマ
ルチキャスト・リスト内のDR3111を指すよう設定し、使用中カウント313
9を設定して、記述子217が入れられたユニキャスト待行列の総数を示すとい
うことである。ユニキャスト待行列がマルチキャスト待行列内のDR3111に続
くDR3111を待行列に入れると、NPTR3205をMCLR3123内のQPTR330
1にセットして、新たに加えられるDR3111を指す。QME305がどのユニキ
ャスト待行列に記述子を入れるかを決定する方法については、下記に詳述する。 【0154】 マルチキャスト・リスト3201におけるDR3111によるデキュー動作は、
次のように進む。使用中カウントが1より大きい限り、デキュー動作はマルチキ
ャスト・リスト3201上にはないDR3111に関して説明したように機能する
が、各デキュー動作が使用中カウントを1だけ減分し、新たな最後尾DR3111
のNPTR3115が、ユニキャスト待行列のQPTR3301のNPTR3205からセッ
トされる点だけが異なる。DR3111の使用中カウントが1の場合は、デキュー
動作によりさらに、DR3111の使用カウントが0にセットされ、そのNPTR31
15はマルチキャスト・リスト内の次のDR3111を指すよう設定され、そのMC
LR3123をフリー・リストに戻す。 マルチキャスト・エンキュー動作におけるユニキャスト待行列の選択 マルチキャスト・エンキュー・コマンド は、記述子が入れられる待行列を指
定せず、送信側パケット・プロセッサ(MCVフィールド3037)と待行列また
はサービス・レベル(QLEV3033)を指定することを思い出してほしい。特定
の待行列またはサービス・レベルの意味は、待行列を読み込んでいるパケット・
プロセッサがプログラミングされる様式により完全に決まる。マルチキャスト・
エンキュー・コマンドを実行するにあたり、QME305はこの情報をユニキャス
ト待行列番号に変換しなければならない。これは、図33に示す待行列番号マッ
ピング・テーブル(QNMT:queue number mapping table)3303によって実行
される。 【0155】 送信側パケット・プロセッサが待行列またはサービス・レベルをどのように利
用するかの簡単な例をあげると、サービス・レベルは、待行列間の優先順位を単
純に示すとすると、つまり番号が大きいほど高い優先順位を示すと、送信側パケ
ット・プロセッサは、優先度の高い、空でない待行列がある限り、特定の優先順
位を持つ待行列には対応しないことになる。 【0156】 待行列番号マッピング・テーブル3303は、各パケット・プロセッサに関す
る部分3307を有する。この部分は、パケット・プロセッサ番号の順に並べら
れる。各部分3307は、各サービス・レベルに関するエントリ(QNMTE)330
5を有する。好適な実施例においては、8つのサービス・レベルがある。パケッ
ト・プロセッサ0に関する部分3307の例を図33に示す。ここでは、サービ
ス・レベルが高いほうが優先度が高い単純な優先度システムをパケット・プロセ
ッサ0が用いており、パケット・プロセッサ0はサービス・レベル0,3,4の
待行列を有することを前提とする。パケット・プロセッサ0が待行列を持たない
サービス・レベルに関する各エントリ3305はヌル値を有する。パケット・プ
ロセッサ0が待行列を有するサービス・レベルに関する各エントリ3305には
QROFFが含まれる。これは、待行列リスト3101内のサービス・レベルの待行
列に関する待行列記録3103のブロックのオフセットである。さらに、エント
リのサービス・レベルを有するパケット・プロセッサの待行列の数が含まれる。 【0157】 QNMTE3305は、3309に示されるように、パケット・プロセッサ番号と
待行列レベル番号とによりアドレス指定される。このため、アドレス3309が
パケット・プロセッサ番号0と待行列レベル3を指定すると、アドレスにより位
置が特定されるエントリ3305は3305(0,3)となる。エントリ330
5は3305(0,3)に指定されるQROFFを用いると、QME305はそのパケッ
ト・プロセッサの第1待行列記録3103と待行列レベルとを発見することがで
きる。QME305は、その待行列を使用することを選ぶことも、あるいはその待
行列レベルを有する待行列に関する別の待行列記録3103により指定される待
行列を選択することもできる。アドレス3309が、その待行列レベルに関する
待行列をパケット・プロセッサが持たないことを示すヌル値を持つQNMTE330
5を指定すると、QME305は、より高い待行列レベルに関するQNMTE3305を
発見するまで部分3307を上げ、ここで説明したようにそのレベルでの待行列
を選択する。 QME305による待行列管理:図34 前述のように、QME305が管理する待行列215は、QME305からのコマン
ドに応じて、DCP IC203内のQME305のメモリ内に完全に含まれるか、拡張
待行列メモリ213に含まれるか、あるいは外部のキューイングおよびスケジュ
ーリング・ユニットにより管理される。図34は、外部スケジューリング・ユニ
ットのある設定とない設定の例を示す。この図面では、記述子217の流れを太
く幅の広いライトグレーの矢印で示し、プロトコル・データ・ユニットの流れを
破線のダークグレーの矢印で示す。 【0158】 3401に、QMU305により直接的に管理される格納部に待行列が含まれる
スタンドアロンDCP203が図示される。3403には、外部キューイングおよ
びスケジューリング・ユニット3405が追加されたスタンドアロンDCPが図示
される。このような設定において、外部キューイングおよびスケジューリング・
ユニットは、特定のパケット・プロセッサに関する待行列数,待行列のレベルお
よびマルチキャスティングなどの問題を扱う。外部キューイングおよびスケジュ
ーリング・ユニットを伴うQME305,QME305はDCP203内にメモリを有す
るだけである。そのメモリ内には、外部ユニット3405に送付される記述子2
17に関する1つの待行列と、送信側パケット・プロセッサにより送信するため
に外部ユニット3405から送付される記述子217を受信する送信側パケット
・プロセッサの各々に関する待行列とがある。これらの待行列の機能は、パケッ
ト・プロセッサと外部キューイングおよびスケジューリング・ユニットとの間の
バッファを提供することである。 【0159】 3407に、2つのDCP203(0,1)が切換組織222により接続される
設定が示され、両方のDCP203の待行列管理は、DCP203(1)のQME305
(1)により実行される。QME305(0)は、組織222を介して組織プロセ
ッサ303(1)にコマンドを送る組織プロセッサ303(0)が読み込んだ待
行列上に入れられる記述子217のエンキュー・コマンドを入れるに過ぎない。
組織プロセッサ303(1)は、コマンドをQME305(1)に伝える。QME30
5(1)は、コマンドの標示に従い待行列215に記述子を入れる。待行列21
5は、DCP203(0)またはDCP203(1)のいずれかの送信側パケット・プ
ロセッサにより読み込まれる待行列である。DCP203(0)内のパケット・プ
ロセッサが読み込む待行列に関する待行列状況情報が、QME305(1)から組
織プロセッサ303(1),組織222および組織プロセッサ303(0)を介
してQME305(0)に伝えられ、QME305(0)は、環境の必要性に応じて、
受け手のQOSレジスタ2911をセットするか、あるいはブロードキャスト待行
列状況リポート2915を受け手に送付する。デキュー・コマンドでは、コマン
ドは前述のようにQME305(1)に伝えられ、コマンドに応じて待行列から取
り出された記述子が状況情報について説明されたようにQME305(0)に返送
され、さらにQME305(0)から送信側パケット・プロセッサに返送される。 【0160】 DCP203の一方のパケット・プロセッサにより受信されたプロトコル・デー
タ・ユニットを他方のDCPから送信しようとする場合、送信側パケット・プロセ
ッサが属するDCP内のBME315は、組織プロセッサを介し受信側パケット・プロ
セッサのバッファ管理エンジンに対してバッファ・タッグを転送することにより
、送信側パケット・プロセッサの要求に応える。受信側パケット・プロセッサは
、組織プロセッサを介してプロトコル・データ・ユニットを送信側パケット・プ
ロセッサのバッファ管理エンジンに送ることによってバッファ・タッグに応答す
る。その後、エンジンは送信側パケット・プロセッサにそれを送る。 【0161】 3409に、3407と同様であるが、待行列がQME305(1)が管理する
外部キューイングおよびスケジューリング・ユニット3411にある点が異なる
構造を示す。待行列コマンド,状況情報および記述子は、前述のようにDCP20
3(0)とDCP203(1)との間で伝えられるが、QME305(1)がコマンド
を外部キューイングおよびスケジューリング・ユニット3411に伝え、状況と
記述子をそこから受信する点が異なる。3413には、QME305(0)とQME3
05(1)の両方に直接的に対応する外部キューイングおよびスケジューリング
・ユニット3415を持つ構造を示す。動作は上記と同様であるが、一方のQME
305がそれ自身として、あるいは他方のQME305の代理として外部ユニット
3415に対応する点が異なる。 QME305の外部インタフェース:図35 好適な実施例においては、QME305は、外部同期SRAMメモリ・バンクと共に
、あるいは上記のキューイングおよびスケジューリング・ユニットと共に用いら
れる55ピン外部インタフェースを有する。図35は、それぞれの場合に外部イ
ンタフェースがどのように用いられるかを示す。3501に、メモリ外部インタ
フェースを示す。32本の双方向データ線3503と、20本の単方向アドレス
線3505と、4本または5本の制御線3506とがある。メモリ・バンク21
3に対する読み書きは通常の方法で行われる。 【0162】 3507に、55ピン外部インタフェースをキューイングおよびスケジューリ
ング・ユニット3508と用いる方法を示す。この場合も、32本の双方向デー
タ線3509と、16本のコマンド線3511と、8本の制御線3513とがあ
る。インタフェースに関する限り、QME305がマスタでスケジューラ3508
がスレーブである。スケジューラ3508もQME305も他方にメッセージを送
信することができるが、メッセージが送信される方向はQME305が決める。メ
ッセージの転送は流れが制御される。すなわち、スケジューラ3508とQME3
05は互いに、メッセージを受けれることができるか否か、どのメッセージを受
け入れることができるかを知らせ、受け手がメッセージを受け入れることができ
なければ送り手はメッセージを送ることはない。QME305は、インタフェース
のクロック信号の発信源にもなる。 メッセージには4つの可能なサイズがある: ・12バイト;そのうち4バイトがコマンドで、8がデータであり、2クロック
・サイクル内に送信される; ・24バイト;そのうち8がコマンドで16がデータであり、4クロック・サイ
クル内に送信される; ・36バイト;そのうち12がコマンドで24がデータであり、6クロック・サ
イクル内に送信される;および ・48バイト;そのうち16がコマンドで24がデータであり、8クロック・サ
イクル内に送信される。 【0163】 メッセージのサイズは、DCP203が初期化されるときに決まる。メッセージ
の内容は、もちろんQME305とスケジューラ3508との間の対話により決ま
るが、多くの場合、スケジューラ3508が管理する待行列に入れられるか、あ
るいはスケジューラ3508が管理する待行列から取り出された記述子217を
含む。 【0164】 流れの制御は、QME305がすべての送信側パケット・プロセッサの代理とし
て機能しており、これらのパケット・プロセッサがそれぞれ特定の瞬間にスケジ
ューラ3508から記述子を受け取ることができたり、できなかったりするため
に多少複雑になる。好適な実施例においては、パケット・プロセッサに関して最
大25個の待行列がある。実行プロセッサ313用に1個,16のチャネル・プ
ロセッサ307のそれぞれに1個および組織プロセッサ303用に8個である。
組織プロセッサ303は、切換組織222を介するすべての通信に対して責任を
負うので8個の待行列を有し、上記からわかるようにこれらの通信にはシステム
制御情報ならびにプロトコル・データ・ユニットが含まれる。さらに、異なる種
類のフレームを必要とする装置が単独の組織プロセッサにより接続されることも
ある。 【0165】 外部スケジューラ3508と共に用いる場合、QME305には1つの受信機待
行列(RQ:receiver queue)3519があり、その中にQME305は、スケジュ
ーラ3508に出力して待行列に入れることができるまでに受信側パケット・プ
ロセッサから受信する記述子217のすべてを入れる。また、QME305は送信
側パケット・プロセッサの各々のための送信待行列(TQ:transmit queue)35
21を有する。送信側パケット・プロセッサのためのTQ3521が満杯になると
、QME305は、その送信側パケット・プロセッサの待行列のための記述子21
7をそれ以上受信できなくなる。 【0166】 出力待行列は1つしかないので、スケジューラ3506に宛てられるメッセー
ジの流れ制御は単純である。スケジューラがメッセージを受け入れることができ
るときは、制御3513で信号を起動し、スケジューラ流れ制御レジスタ351
7が信号の状態を標示するので、QME305は制御レジスタ3517がそれを標
示するまで次のメッセージの送信を待機するだけでよい。QME305に向けられ
るメッセージの流れ制御は、スケジューラ3508内のDCP流れ制御レジスタ3
535により行われる。このレジスタには、可能な送信側パケット・プロセッサ
の各々について1つずつ、25の流れ制御ビットが含まれる。DCP流れ制御レジ
スタ3515内の送信側パケット・プロセッサに関する流れ制御ビットがそれを
標示する場合のみ、スケジューラ3508は、その最終目的地が特定の送信側パ
ケット・プロセッサであるメッセージを送付する。QME305がスケジューラ3
508に送付する各メッセージの部分が、レジスタ3515の流れ制御ビットを
セットまたはクリアするために用いられ、QME305は、送信機の送信待行列3
521が満杯のときは送信側パケット・プロセッサのためのビットをセットする
メッセージを送付し、送信待行列3521が記述子のための余地を再び有すると
きには、ビットをリセットするメッセージを送付する。 【0167】 QME305の外部インタフェースは、一般に、待行列管理装置との通信に用い
られるが、それを行う必要はない。記述子の内容はそれを作成するパケット・プ
ロセッサによって完全に決定されるので、外部インタフェースをパケット・プロ
セッサにより用いて、外部インタフェースを介してアクセス可能な装置にデータ
を書き込んだり、さらに/あるいは、その装置からデータを読むことができる。
この機能を利用する1つの方法は、パケット・プロセッサを「パケット・スニッ
ファ」、すなわちパケット・ストリーム内のパケットに関する情報を単に収集す
る装置としてプログラミングすることである。パケット・ストリームから各パケ
ットに関する所望の情報を抽出するようRxSDP421をプログラミングして、そ
れをCPRC401に送ることができる。CPRC401は、情報を記述子にまとめて、
その記述子を、情報を格納および分析することができる外部装置に対してQME3
05で配信するように待行列に入れることができる。 スケジューラ外部インタフェースの詳細:図36および図37 図36は、外部インタフェースの個々のピンをスケジューラ3508とどのよ
うに用いるかを示す。図8において、ピン3601と記される列は、1つのグル
ープを構成するピンの数を示し、方向3603と記される列の矢印は、情報の流
れの方向を示す。DCP→SCHEは、QME305からスケジューラ3508への流れを
示し、DCP←SCHEは反対方向を示す。8つの制御ピン3513から始める; ・クロックピン3605は、QME305からスケジューラ3508へクロック
信号を提供する; ・D_流れ_ctrl3607は、3ビットの流れ制御情報をQME305からスケジ
ューラ3508への各サイクルに提供する;スケジューラ3508はメッセージ
の最初の2サイクルに受信されるD_流れ_ctrl3607の6ビットを利用して
、D流れ制御レジスタ3515にビットをセットまたはクリアする; ・S_流れ_ctrl3609は、スケジューラ3508からQME305への1ビッ
トの制御情報である;QME305はピン3609の値を用いてS流れ制御レジス
タ3517をセットする; ・Xfer_rqst3611は、QME305にメッセージを送付しようとする場合に、
スケジューラ3508が起動する信号である;および ・Xfer_ctrl3613は、ピン上のデータおよび制御信号が次のクロック・サイ
クルでどのように解釈されるべきかを示すためにQME305がスケジューラ35
08に送付する2ビットである;詳細は後述する。 【0168】 コマンド・ピン3511は双方向である;これには16のコマンド・ビットと
1個のパリティ・ビットが含まれる。データ・ピン3509も双方向である;3
2のデータ・ビットと1個のパリティ・ビットが含まれる。 【0169】 インタフェース3507の動作は、Xfer_ctrl3613により制御される。2
つの線の4つの値の意味は次の通りである: ・00:メッセージが後に続くクロック・サイクルではない; ・01:QME305からのメッセージの第1サイクルが2サイクル後に続くクロ
ック・サイクルである;メッセージの送信に必要とされる最初の2つのサイクル
の間に、D_流れ_ctrl3607が流れ制御情報をスケジューラ3508に転送
する; ・10:2サイクル後にスケジューラ3508からQME305へのメッセージの
第1サイクルが続くクロック・サイクルである;メッセージの送信に必要とされ
る最初の2つのサイクルの間に、D_流れ_ctrl3607が流れ制御情報をスケ
ジューラ3508に転送する; ・11:2サイクル後に2つのクロック・サイクルが続くクロック・サイクルで
、この中でD_流れ_ctrl3607を介してスケジューラ3508に流れ制御情
報が転送される。 【0170】 上記からわかるように、メッセージの転送が行われていないときは、各メッセ
ージを伴い、2クロック・サイクル毎に、6ビットの流れ制御情報が潜在的にQM
E305からスケジューラ3508に転送される。6ビットの値は、不能動作を
指定する値と、スケジューラ3508がD流れ制御レジスタ3515において送
信側パケット・プロセッサの25の待行列の各々に関して個別の流れ制御ビット
をセットまたはリセットすることにより応答する値とを含む。 【0171】 前述のように、メッセージは2,4,6または8サイクルの長さを持ち、各サ
イクルが16ビットのコマンド・データと32ビットの記述データとを転送する
。コマンド・データの意味は、スケジューラ3508およびQME305がプログ
ラミングされる方式により決まる。ただし、スケジューラ3508からQME30
5に対するメッセージに関して、第1サイクルのコマンド・データが3514に
示すような形式をとらねばならない。すなわち、最初の6ビットは、パターン3
615を有し、最後の6ビットはメッセージが宛てられる待行列の番号を含まね
ばならない。この番号がもちろん、メッセージがどの送信待行列3521に入れ
られたかを決定する。 【0172】 図37は、2サイクルと4サイクルのメッセージによるインタフェース350
7の動作例を示す。2サイクル・メッセージを3701に示す。3703には、
インタフェースのためのクロック・サイクルが示される。3613には、クロッ
ク・サイクル中のXfer_Ctrl3613の値が示される。3511には、コマンド
・データ・ピン3511にあるものが示される。3509には、記述子データ・
ピン3509にあるものが示される。3607には、D_流れ_Ctrlピン360
7にあるものが示される。このようにして、サイクル1では、Xfer_Ctrl361
3が01にセットされて次の後のサイクル(サイクル3)がQME305からスケ
ジューラ3509に宛てられる2サイクル・メッセージ3702の第1サイクル
になることが示される。サイクル2においては、Xfer_Ctrl3613が00にセ
ットされて、次の後のサイクルがメッセージの第1サイクルにはならないことが
示される。サイクル3では、コマンド3511とデータ3509が、第1サイク
ル分のメッセージのコマンド・データおよび記述子データを含み、D_流れ_Ct
rl3607が、第1サイクル分のスケジューラ3508に関する流れ制御データ
を含む。Xfer_Ctrl3613が再び01にセットされ、QME305からスケジュ
ーラ3508への別のメッセージの第1サイクルがサイクル5において始まるこ
とを示す。 【0173】 サイクル4では、メッセージ3702の後半部が送付され、コマンド3511
とデータ3509は第2サイクル分のコマンド・データおよび記述子データを含
み、D_流れ_Ctrlピン3613が第2サイクル分の流れ制御データを含む。Xf
er_Ctrl3613が再び00にセットされる。サイクル5,6において、第2メ
ッセージが送信され、サイクル5ではXfer_Ctrl3613が、サイクル7で始ま
る第3メッセージが続くことを示す。 【0174】 スケジューラ3508からQME305への2つの4サイクル・メッセージ37
07を3705に示す。サイクル1では、Xfer_Ctrl3613が10にセットさ
れて、サイクル3で始まる第1メッセージがQME305に宛てられることを示す
。サイクル2〜4では、メッセージが4サイクルの長さであるために、Xfer_Ct
rl3613が00にセットされる。サイクル3〜6では、第1メッセージのため
の4サイクル分のコマンド・データ3511と記述子データ3509が送信され
る。D_流れ_Ctrl3613は、メッセージの最初の2サイクル、すなわちサイ
クル3,4でしか送信されない。サイクル5でXfer_Ctrl3613が再び10に
セットされ、第2メッセージの第1サイクルがサイクル7で始まる。 【0175】 スケジューラ3508への流れ制御情報の送信は、2サイクル・メッセージの
送信と同様に働くが、Xfer_Ctrl3613が流れ制御シーケンスの開始より2サ
イクル前に値11を有する点が異なる。サイクル3で、流れ制御情報の最初の3
ビットがD_流れ_Ctrl3607上に送信され、サイクル4で次の3ビットが送
信される。スケジューラ3508およびQME305は、コマンド・データ351
1と記述子データ3509の値を無視する。 バッファ管理エンジン315とバッファ・メモリ229の詳細説明 バッファ管理エンジン315の主な機能は、プロトコル・データ・ユニットが
DCP203で受信されてから、DCP203に送信されるまで格納されるバッファ・
メモリ229のバッファ231を管理することである。以下の説明は、まずバッ
ファ管理エンジン315がパケット・プロセッサに与えるバッファ・メモリ33
9へのインタフェースを説明し、次にインタフェースの詳細とBME315が実行
する他の機能とを説明する。 BME315の論理的概要:図38 図38は、バッファ管理エンジン315により作成されるバッファ・メモリ2
29へのインタフェースを示す。バッファ・メモリ229は、好適な実施例にお
いては、最大32個のバッファ・プール3803に分割される。nがプール数と
すると、これらのプールのうちn−1にバッファ231が含まれ、バッファ23
1にはプロトコル・データ・ユニット2503が含まれる。n−1のプールのサ
イズとバッファ231の数とサイズは、DCP203の初期化時に決定される。1
つのプールは最大64Kバッファを有し、バッファ231のすべてが同じサイズ
であり、これは好適な実施例においては、64バイトないし64Kバイトである
。各プール2803は、プールID3819により識別され、プール内の各バッフ
ァはバッファ・タッグ233により識別される。バッファ233内では、位置は
オフセット3802により特定される。ここでは、オフセットはPDU3804の
始点を特定する。好適な実施例においては、オフセットがデータの16バイト・
チャンクの始点を特定する。 【0176】 n番目のバッファ・プール2803には、そのバッファのバッファ・タッグ2
33が含まれる。n−1のバッファ・プール2803の各々についてバッファ・
タッグ待行列3805がある。バッファ・プール2803(i)のためのバッフ
ァ・タッグ待行列3805(i)は、バッファ・プール2803(i)内のバッ
ファ231の各々のバッファ・タッグ・エントリ3806を含み、バッファ23
1(i,j)のバッファ・タッグ・エントリ3806(i,j)はバッファ23
1(i,j)のバッファ・タッグ233を含む。各待行列2805は、待行列の
最前部に対するポインタ3807と、待行列の最後尾に対するポインタ3809
とを有する。DCP203が初期化されると、待行列が設定される。DCP203の受
信側パケット・プロセッサがプール2803(i)のバッファのためのバッファ
・タッグを必要とする場合は、タッグを待行列3805(i)の最前部から受け
取る。送信側パケット・プロセッサがバッファ・タッグを解放すると、タッグは
待行列3805(i)の最後尾に戻される。 【0177】 もちろん、マルチキャスト・コマンドが特定のバッファ・タッグ(i,j)を
伴う記述子を待行列管理エンジン305内の2つ以上の待行列215内に入れた
場合、バッファ・タッグ(i,j)を、バッファ・タッグ(i,j)の最後のコ
ピーが戻されるまでは、待行列3805(i)の最後尾に戻すことはできない。
この問題は、好適な実施例においては、バッファ・タッグ・カウンタ3811に
より対処される。QME305内の2つ以上の待行列215にあるバッファ・タッ
グの各々について、バッファ・タッグ・カウンタ3188内にエントリ3813
があり、そのエントリにはバッファ・タッグが現在ある待行列のカウントが含ま
れる。このエントリは、プールIDおよびバッファ・タッグによってアドレス指定
することができる。 【0178】 受信側プロセッサが記述子のためにマルチキャスト・エンキュー・コマンドを
作成すると、BME315に対して、記述子がある待行列の数を示すメッセージを
送付する。送信側パケット・プロセッサにより受信される記述子には、その送信
に関してDR3111からのINC値が含まれる。INCが0より大きいときは、パケッ
ト・プロセッサはBME315にカウンタ減分を送付して、BTカウンタ3811内
のBTAGのカウンタを減分すべきことを知らせる。カウンタが0まで減分されると
、バッファ・タッグ233はバッファ・タッグ待行列30¥805の最後尾に戻
される。 【0179】 BME315は、バッファ231に書き込み、バッファ231から読み込み、バ
ッファ・タッグを維持し、バッファ・タッグを返送し、ペイロード・バス317
を介してパケット・プロセッサからBTカウンタにエントリをセットおよび減分す
るコマンドを受信する。バッファに読み書きするコマンドは、図39の3901
に示す形式を有する。フィールドには、次のような意味がある: ・CNTフィールド3903は転送中の有効な連続する16バイト数量の数を示す
; ・T#3905は、特定のパケット・プロセッサによるトランザクションの区別を
するために用いられる; ・プールID3907は、バッファ・プール3803(0...n-1)を識別する; ・オフセット3909は、BTAG3911により識別されるバッファ内のオフセッ
ト3802を指定する;および ・BTAG3911は、読込中または書込中のバッファ231を識別する。 【0180】 プールID3907,オフセット3909,BTAG3911は、共にバッファ・ア
ドレス3913を構成する。下記のペイロード・バスの説明でさらに詳細に説明
するが、コマンドが読込コマンドであるか書込コマンドであるかは、コマンドが
現れるペイロード・バス・サイクルから決まる。プールID値0は、BTプール38
03(n)を指定し、プールID0x1Fは、QME305のコマンドを指定する。読込
コマンドの場合は、QME305は指定された量のデータを指定されたバッファか
ら、トランザクション#3905と共に要求するパケット・プロセッサに返送す
る。このようにして要求者は、トランザクション番号を用いて、返送されたデー
タがどの要求に対応するかを追跡することができる。 【0181】 パケット・プロセッサは、BTAGプール3803(n)においてBTAG233に関
する次のBTAG読込動作を実行することができる: ・BTAG233の割当;および ・BTカウンタ211内のBTAG233のCNTエントリ2813の読込; BTAG書込動作は次の通りである: ・BTAG233の初期化; ・BTAG233の割当解除; ・BTAG233のカウンタをカウンタ3811にセット; ・BTAG233のカウンタを減分。 【0182】 これらのコマンドの形式を3915に示す。BTプールID3907は、BTAGが指
定されるBTAGプール3803(n)を示し、BTAGはカウントが指定されるBTAGフ
ィールド3911にあり、これはCNT3903にある。またオフセット3909
は、BTAGコマンドの1つを指定するコマンド値3917と、BTAGコマンドに影響
を受けるBTAGが属するバッファ・プールを指定するプールID3919とを含む。
コマンドが応答を要求する場合、応答と共にトランザクション番号3905が返
送される。 【0183】 フィールドは、次のようにBTAG読込コマンドに採用される:割当コマンドでは
CNT3903が、コマンドを発するパケット・プロセッサが要求するBTAGの数を
示す。その値に応じて、要求者はプールID3939に指定されるプールから、8
,16,24または32個のBTAG233を受信することになる。BTAGフィールド
3911はもちろん無視される。BME315は、ペイロード・バス上の要求者へ
の書込によって要求者にBTAG233を返送する。 【0184】 カウンタ読込コマンドにおいては、CNT3903が0にセットされ、BTAG39
11はBTカウンタ内のそのカウント値が読み込まれるBTAG233を含み、プール
ID3919は、BTAG233が属するプール3803のプール識別子3819を含
む。BME315は、ペイロード・バス上の要求者への書込によりカウント値を返
送する。 【0185】 BTAG書込コマンドについて続けると、初期化コマンドを用いてBTAG233の値
をBTE3806にセットする。このコマンドでは、CNTが初期化されるBTE380
6の数を指定する。可能な数は8,16,24,32である。プールID3919
は、初期化されるBTAG233が属するプール3803を指定する。このため、書
き込まれるバッファ・タッグ待行列3805も指定される。 【0186】 データ割当解除コマンドは、1つのBTAG233をBME315に戻して再利用す
る。コマンド内では、プールID3919が返送されるBTAG233が属するバッフ
ァ・プール3803を指定し、BTAG3911がBTAG233を含む。 【0187】 カウンタ・コマンドにおいては、プールID3919が、そのカウンタがセット
されるあるいは減分されるBTAG233のバッファ・プールIDを指定し、BTAG39
11がBTAG233そのものを指定する。カウンタ・セット・コマンドにおいては
、CNT3903がカウンタがセットされる値を含む。QME315は、BTAG233の
BTカウンタ内のCNTエントリ3813を作成し、それをコマンド内に指定される
値にセットすることにより、セット・カウンタ・コマンドに応答する。カウンタ
・セット・コマンドは、受信側パケット・プロセッサがマルチキャスト・エンキ
ュー・コマンドをBTAG233が表すPDUに関する記述子と共にQME305に送付す
るときに、受信側パケット・プロセッサにより発される。カウンタ減分コマンド
は、PDUを送信したときにマルチキャストされるプロトコル・データ・ユニット
を送信する各送信側パケット・プロセッサにより発される。減分されるカウンタ
が0に到達すると、CNT3813が属するBTAG233がBTAG233のバッファ・
プールのBTQ3805の最後尾に戻され、カウンタ3811内のBTAGに関するエ
ントリが無効になる。 BME315の実行の詳細:図40および図41 バッファ231への書込とバッファ・タッグ233の割当および返送を行うイ
ンタフェースとしての機能に加えて、BME315は、SDRAM229への包括的イン
タフェースとして機能する。図41は、SDRAM229の内容を示す。4103のB
TAGおよびバッファ・プール3803(0...n)の他に、SDRAM229は次の要素
を含む: ・メモリ設定情報4111,SDRAM229の設定を規定する; ・パケット・プロセッサ・コードおよびデータ4109,DCP203の初期化時
にXP313がパケット・プロセッサにロードするコードとデータとを含む;チャ
ネル・プロセッサでは、コードおよびデータには、シリアル・データ・プロセッ
サを初期化するために用いられるコードおよびデータが含まれる。 ・変換テーブル4107には、DCP203の初期化時にXP313が変換テーブル
・メモリ207にロードする変換テーブルが含まれる; ・RTOS4101は、XP313が実行するリアルタイム・オペレーティング・シス
テムのコードである;XPデータ・メモリ4105は、RTOS4101を実行する際
にXP313が用いるデータを含む。 【0188】 XP313は、必要に応じて、RTOS4101およびXPデータ・メモリ4105か
ら、IMEM1503およびDMEM1507,1508内に命令を取り出す。 【0189】 図40は、本発明の好適な実施例によるBME315のハードウェアのブロック
図である。BME315は、グローバル・バス319とペイロード・バス317の
両方に結合される。BME315は、ペイロード・バス317を介してBTAGおよび
バッファ・コマンドを受信し、それに応答する。BME315は、グローバル・バ
ス319上でXP313からメモリ読込要求を受信し、ペイロード・バス317を
介して読込要求に応答する。パケット・プロセッサの初期化は、同じ方法で実行
される。 【0190】 BME315がこれらのバスを介して受信するトランザクション要求の各々には
、コマンド4004とアドレス3919が含まれ、書込コマンドにはデータ38
18も含まれる。アドレスがどのように解釈されるかは、もちろん、コマンドの
種類に依存する。コマンドは、コマンド・パーサ4003内で分解される。SDRA
M229を設定するコマンドは他のコマンドとは異なる扱いを受ける。4001
に示されるように、このコマンドはDRAM設定論理4035に進み、そこでデータ
が設定FIFO4037に伝えられ、そこからデータはDRAM設定レジスタ4030に
ロードされる。 【0191】 他のコマンドの対処法は、これらが読込または書込コマンドであるか、他のコ
マンドであるかによって決まる。他のコマンドはコマンドFIFOに進む。読込コマ
ンドのためのアドレスは読込アドレスFIFO4013に進み、書込コマンドのため
のアドレスは書込アドレスFIFO4021に進む。データは、書込データFIFO40
17に進む。コマンドに応答して読み込まれるデータは、データ読込(READ DAT
A)FIFO4043に進む。これらのFIFOは、DCP293とSDRAM227との間のイ
ンタフェースに必要とされる弾力性を与えるよう機能する。アドレスの場合、ア
ドレス生成ブロック4011がバッファおよびBTAGコマンド内で用いられるアド
レスを、SDRAM229のための適切な形式に変換する。これを実行するために、
アドレス生成ブロック4011はSDRAM229内のバッファ231が現在どのよ
うに設定されているかを指定するバッファ設定ファイルを含む。現在のように実
現されると、特定のバッファ・アドレス3913に対応するSDRAM2029のア
ドレスは、次のように求められる: SDRAMアドレス=プール・ベース・アドレス(プールID)+ ((Bタッグ&Bタッグ・マスク(プールID))>> Bタッグ・シフト(プールID)CAT ((オフセット&オフセット・マスク(プールID))) FIFOから、コマンド,読込アドレスおよび書込アドレスは、それぞれ、待行列
4067,4015,4025に進む。待行列4067の最前部のコマンドがDR
AM CTRL4009により読まれる。これは、コマンドをDRAM設定レジスタ403
9の現在の設定による必要性に応じて解釈し、必要な制御信号をMUX4025と
、SDRAM229のアドレス・ドライバ4019およびデータ・トランシーバ40
41とに送る。 【0192】 読込アドレス待行列415の最前部のアドレスは、アドレス生成器4027に
より読まれ、これはこのアドレスをドライバ4019に送って、読込動作を標示
する。書込アドレス待行列4025の最前部のアドレスも、アドレス・ドライバ
4019によって読まれ、アドレスと書込コマンドがアドレス・ドライバ419
に与えられる。同時に、書込データ待行列4029の最前部のデータが、データ
・トランシーバ4041に出力されるので、それをSDRAM229に入力すること
ができる。アドレス生成器4017は、送信側パケット・プロセッサに対するPD
Uの準備がSDRAM229にPDUを格納するよりも時間的に制約を受けるので、読込
アドレス待行列4015に優先権を与える。 【0193】 書込データ待行列4029内に書き込まれることを待っているデータを読込動
作が読んで、結果としてデータが古くなってしまう事態を避けるために、BME3
15は、CAM4023を備える。アドレスが書込アドレス待行列4025の最後
尾に書き込まれると、アドレスのエントリがCAM4023に作成される。アドレ
スが読込アドレス待行列4015の最後尾に書き込まれると、これもCAM402
3に出力される。これらが一致すると、書込アドレス待行列4025内のアドレ
スの待行列は、読込アドレス待行列4015内の次のアドレスがアドレス生成器
4017に読まれる前に空にされる。 【0194】 BTAGキャッシュ4031は、BTAG待行列3805の各々の最前部からのBTAG2
33を含む。待行列3805の残りは、SDRAM229内にある。BTAG233に関
する要求がパケット・プロセッサから到着すると、可能であればBTAGキャッシュ
4031から満たされる。そうでない場合は、SDRAM229内の待行列3805
の部分から満たされ、その待行列のBTAGキャッシュが、待行列3805の部分か
ら再ロードされる。 【0195】 BTCNT3811は、BTカウンタ3811を実現する。バッファ・タッグ・カウ
ント・コマンドは、BTCNT3811内の値をセットし、読み込み、減分する。BTA
G減分コマンドが受信されるたびに、BTAGのCNTエントリ内のCNT値が前述のよう
に減分される。 【0196】 SDRAM229から読まれるPDUは読み込みデータFIFO4043に出力される。FI
FO4043からの出力が、DRAM設定4035,BTAGキャッシュ4031およびBT
CNT3811の出力と共に、すべてMUX4046に進み、そこで読込データ待行
列4045への出力が選択されて、待行列4045がペイロード・バス317に
出力する。 リング・バス311の詳細:図28および図42 リング・バス311は、主に、パケット・プロセッサがプロトコル・データを
TLE301に送付して変換し、TLE301から変換結果を受信するために用いられ
る。しかし、リング・バス311は、リング・バス311上の任意のノードにメ
ッセージを送付し、返答を受信するためにも用いられる。好適な実施例において
は、ノードとはパケット・プロセッサとTLE301である。 【0197】 リング・バス311は、バスのノード間のメッセージに関するアクセス帯域幅
を保証し、待ち時間を制限するよう設計される。バスは91ビット幅で、27ビ
ットが制御情報のためのものであり、64ビットが送信側ノードから受信側ノー
ドに送付されるデータのためのものである。バスは、可変数のスロットに時分割
多重されており、各スロットは1つのコア・クロック・サイクルで構成される。
各スロットは、バケット・グリゲード方式でノード間に伝えられる。現在、ある
ノードのスロットが非占有状態である(すなわちリング・バス・メッセージ28
01を含まない)ときは、ノードはスロット内のノードの1つに関するメッセー
ジを書き込むことができる(他の実施例では、1つのスロットに複数のノードに
関するメッセージを書き込むこともできる)。メッセージは、宛先ノードがメッ
セージをスロットから取り出すまで、ノード間を循環する。 【0198】 各ノードは、リング・バス311内に、その発信源がノードであるメッセージ
を含む1ないし5個のスロットを有する。ノードが2つ以上のスロットを用いな
い場合は、これらのスロットはリング・バス311には存在しない。この説明か
らわかるように、あるノードからバス上の他のノードへメッセージを送信するた
めに要する時間は、バス上のメッセージ数により変わる。上限は、各ノードがリ
ング・ノード上にメッセージを含む5つのスロットを有する場合に必要な時間で
ある。 【0199】 メッセージ2801には5種類がある。各メッセージの種類は、スロット内の
種類フィールド2807の値により示される。メッセージの発信源であるノード
は、SRC2825により示され、宛先であるノードはDEST2813により示され
る。その種類とは次の通りである: ・非占有 ・標示,発信源が、宛先がリング・バス・メッセージに応答しているか否かを問
い合わせるために用いる。標示にはデータは含まれない。 【0200】 ・確認,標示の宛先が標示の発信源に応答するために用いる。確認にはデータ
は含まれない。 ・要求,データを伴う自発的メッセージで、これにより宛先が動作する。場合に
よっては、要求の発信源に対し動作結果を伴う応答メッセージを返送する。 ・応答,要求の宛先により要求の発信源に対して、発信源のために宛先が実行し
た動作の結果を伴って送付されるメッセージ。 【0201】 図42は、各ノードがリング・バスに対して有するリング・バス・インタフェ
ース4201を示す。宛先がノードであるメッセージのためのFIFOが2つある。
FIFO4203は要求メッセージを含む。FIFO4209はその宛先がノードである
応答メッセージを含む。FIFO4203もFIFO4209もノードによって読み込ま
れる。オーバーフローFIFO4211は、宛先がまだ読んでいないためにリング・
バス311上を循環し続けなければならない、ノードが発信源であるメッセージ
に用いられる。宛先がノードであるメッセージがそのノードに到着すると、メッ
セージはその種類により必要とされるFIFOに入れられる。そのFIFOに余地がない
場合は、メッセージは循環を続ける。 【0202】 ノードはバッファ4214を介してリング・バス311上にメッセージを出力
する。バッファ4214は、ノードが送付した要求メッセージを含むrbus_in4
202,オーバーフローFIFO4211および要求FIFO4217から、メッセージ
を受信する。オーバーフローFIFO4211が空の場合、その発信源がノードであ
るメッセージがノードに受信されると、すぐにバッファ4214に入れられ、到
着したスロット内に出力される。オーバーフローFIFO4211が空でない場合は
、その発信源がノードである新たに受信されたメッセージがオーバーフローFIFO
4211の最後尾に置かれ、オーバーフローFIFO4211の最前部のメッセージ
はバッファ4214に入れられて、新たに到着したメッセージが到着したスロッ
ト内に出力される。新たに到着したメッセージが空で、オーバーフローFIFO42
11が満杯でない場合は、要求FIFO4217の最前部のメッセージが空のメッセ
ージのスロットに入る。そうでない場合は、オーバーフローFIFO4211の最前
部のメッセージがスロットに入る。このメカニズムによって、他のノードが送付
中のメッセージを処理している場合に限り、あるノードはリング・バス311を
介して新しいメッセージを確実に送付する。標示と確認は、インタフェース42
01によりハードウェア・レベルで処理され、待行列に入れられることはない。 グローバル・バスおよびペイロード・バス これらのバスの実行例に関する以下の説明は、両バスに用いられる1つのバス
構造の説明から始める。次に、バスそのものを詳細に説明する。 要求バスと返送バス:図43および図44 好適な実施例においては、グローバル・バス319とペイロード・バス317
とは、単独の下層バス構造上に時間多重される。このバス構造を図43の430
1に示す。バス構造4301はスロット化された多重チャネル,共有仲裁バスで
あり、パイプライン化され重複する動作を可能にする。各動作は、5クロック・
サイクル・スロットを占有する要求で始まる。バスは、166MHzのクロック速
度で動作する。パケット・プロセッサ4303,BME315およびQME305はす
べてバス構造に接続され、ここではバス・ノードと称する。 【0203】 バス構造4301には、2つの部分がある。すなわち、バス・ノードがバス要
求を行い、その要求に関するアドレスとデータを提供する要求バス4305と、
バス要求の結果を要求側のバス・ノードに返送するために用いられる返送バス4
317である。要求バス4305には3つのチャネルがある。2つは、コマンド
とアドレスを運ぶコマンド/アドレス・チャネル、すなわちグローバル・バス動
作のためのアドレスとコマンドを運ぶグローバル・バス・コマンド/アドレス・
チャネル4307と、ペイロード・バス動作のためのアドレスとコマンドを運ぶ
ペイロード・バス・コマンド/アドレス・チャネル4309であり、1つはグロ
ーバル・バスとペイロード・バスの両方のためにデータを運ぶデータ・チャネル
4311である。好適な実施例においては、コマンド−アドレス・チャネルの各
々は32ビット幅であり、データ・チャネル4311は128ビット幅である。
返送バス4317には2つのチャネル、すなわち要求と返送データを返送するア
ドレスとを運ぶ返送アドレス・チャネル4321と、返送されるデータを運ぶ返
送データ・チャネル4319がある。この場合も、返送アドレス・チャネル43
21は32ビット幅で、返送データ・チャネル4319は、128ビット幅であ
る。バス動作を実行するために、スロットにアクセスすることのできるノードが
、コマンド−アドレス・チャネル4307の一方に関する動作のために必要なコ
マンドおよびアドレスと、要求データ・チャネル4311に関する動作に必要な
データとを配置する。動作が要求者にデータを返送すると、バス制御4315が
返送アドレス・チャネル上に返送データの発信源に対して要求を送り、続いて、
返送データを返送すべきアドレスが送られ、返送データの発信源は返送すべきデ
ータを返送データ・チャネル4319に入れる。ノードによるバス構造4301
へのアクセスは、バス制御4315により制御される。下記にさらに詳細に説明
するが、バス制御4315は、各ノードに対して、要求バス4305および返送
バス4317の両方の帯域幅に保証される部分を提供する。 【0204】 図44は、バス動作がどのようにノードに行われるかを示す。各スロットは、
5バス・サイクルを占有する。コマンド−アドレス・チャネル4307または4
309において、スロットのサイクル中にバス上にある情報が4402に示され
る: ・サイクル0:要求4405,動作を指定する; ・サイクル0:アドレス4407,動作のアドレスを指定する; ・サイクル2:バス認可4409:バス制御4315がこのサイクルの間に、要
求側ノードがアクセスを受信したことを示す信号を返送する; ・サイクル3:肯定応答4411:先行するスロットに指定される動作が成功す
ると、バス制御4315は、このサイクルに肯定応答信号を返送する。 ・サイクル4:アドレス4413,動作の第2アドレスを指定する。 【0205】 下記に、より詳細に説明するようにアドレスの用途は、動作により定義される
。 【0206】 バス構造4301によりノードが実行することのできる動作には、一般に2つ
のクラスがあり、4バイトのデータを転送する短期動作と64バイトのデータを
転送する長期動作である。各クラスには読込動作と書込動作とがある。特定のス
ロット4402内では、1つのパケット・プロセッサ4303がそのクラスの読
込動作と別の書込動作を実行する。短期動作はグローバル・バス・コマンド−ア
ドレス・チャネル4307上に指定され、長期動作はペイロード・バス・コマン
ド−アドレス・チャネル上に指定される。 【0207】 図44において、短期動作を4425に示す。短期動作では、データが動作に
書き込まれる場合は、動作が要求コマンド−アドレス・チャネル4303上に要
求されるスロット4402の第1アドレスが書込アドレス4415であり、デー
タが読み込まれる場合には最後のアドレスが読込アドレス4417である。書込
動作では、要求バス3305に対するアクセスが認められたノードが、書込アド
レスにより指定されるアドレスに書き込むべき4バイトのデータを、スロット4
402の第5サイクル内の要求データ・チャネル4311に入れる。 【0208】 短期読込動作の場合、バス・コントローラ4315が読込動作に関してバスを
認可すると、ノードに関する要求4421をスロット4402の第4サイクル内
の返送アドレス・チャネル4321に入れる。バス・コントローラ4315は、
データ4423に関する返送アドレスを次のスロット4402の第1サイクル内
の返送アドレス・チャネル4321に入れ、要求4421に指定されるノードが
返送データ4420そのものを、次のスロット4402の第3サイクル内の返送
アドレス・チャネル4321に入れる。 【0209】 4427には、長期動作を示す。ノードが長期動作を要求するスロット440
2のサイクルの間、ノードは、長期読込動作に関する読込アドレス4417を、
サイクル1の要求アドレス・バス上に入れる。ノードは、長期書込動作に関する
書込アドレス4417をサイクル4の要求アドレス・バスに入れる。長期書込動
作においては、ノードにアクセスが認められると、要求データ・チャネル431
1に書き込むべき64バイトのデータ4429を、次のスロット4402のサイ
クル1〜4の16バイト・チャンクに入れる。長期読込動作においては、ノード
にアクセスが認められると、バス・コントローラ4315は、応答ノードを指定
する要求をスロット4402の第5サイクル内の返送アドレス・チャネル432
1に入れる。また、要求側ノードのアドレスを次のスロット4402の第1サイ
クル内の返送アドレス・チャネル4321に入れる。応答側のノードは、有効な
返送データ内の16バイト・チャンクの数を示すカウント値4435を、次のス
ロット4402の第2サイクル内の返送アドレス・チャネル4321上に入れ、
応答側のノードは、次のスロット4402の第3サイクルで始まる4つの16バ
イト・チャンクにおいて返送データ・チャネル4319上に返送データ4437
を入れる。 要求および返送バス上のグローバル・バス319とペイロード・バス317の実
現:図45 図45は、グローバル・バス319とペイロード・バス317の両方がバス構
造4301上にどのように多重化されるかを示す。図4から明らかなように、ス
ロット4402は5サイクル長で、書き込まれる長データ4429と返送される
長データ4437とはそれぞれ4サイクル長であり、書き込まれる短データ44
19と返送される短データ4420はそれぞれ1サイクル長である。 【0210】 そのため、図45に示すようにバス構造4305上で短期動作と長期動作とを
重複させることが可能であり、それにより、要求データ・チャネル4311の各
5サイクルのうちの4サイクルをペイロード・データのために利用し、第5サイ
クルをグローバル・バス・データのために、また同じサイクルを返送データ・チ
ャネル4319のために利用することが可能である。図45では、グローバル・
バス319を構築する短期動作が、図面の上半分に描かれ、グローバル・バス3
17を構築する長期動作が図面の下半分に描かれる。図面の中央で要求コマンド
−アドレス・チャネル4307,4309の表現に示されるように、ペイロード
・スロット4507はグローバル・スロット4504よりも1サイクル早く始ま
る。そのため、ペイロード・スロット4507について書き込まれる長データ4
429は、グローバル・バス・スロット4503に関して書き込まれる短データ
4419と、グローバル・バス・スロット4505に関して書き込まれる短デー
タ4419との間に現れる。同様に、返送バス4317では、ペイロード要求4
509に関して返送される長返送データ4437は、グローバル要求4503に
関して返送される短データと、グローバル要求4505に関して返送される短デ
ータとの間の返送データ・チャネル4319上に現れる。 グローバル・バス317におけるバス・アクセスおよびアドレス指定:図45 図45は、グローバル・バス319およびペイロード・バス317のスロット
4402が偶数スロットと奇数スロットとに分割される様子を示す。偶数スロッ
トと奇数スロットの対は、10サイクル期間4502を構成する。偶数および奇
数のスロットは、パケット・プロセッサ4303の偶数グループと奇数グループ
に対応する。グループの構成は次の通りである: 【0211】 【表1】 各期間4502内に、4つのグローバル・バス・トランザクションを実行する
ことができる。 ・偶数スロットにおいて:短期読込動作および短期書込動作; ・奇数スロットにおいて:短期読込動作および短期書込動作。 これらのトランザクションの種類の各々について別々のトークンがある。トー
クンは、グループ内のパケット・プロセッサ間を周回方式で回転し、ある動作の
トークンを有するパケット・プロセッサが、そのグループ内のその動作に関して
最も高い優先順位を有する。そのパケット・プロセッサがトークンを有するトラ
ンザクションを要求しない場合は、昇順でそのトークンに最も近い要求側のパケ
ット・プロセッサにバスが認められる。バスに対するアクセスを得るためのパケ
ット・プロセッサの最大待ち時間は100サイクルである。書込要求を有するパ
ケット・プロセッサがないスロットは、待行列管理エンジン305が用いて、待
行列状況リポート2915をパケット・プロセッサにブロードキャストする。 【0212】 グローバル・バス・トランザクションにおいては、読込アドレス4417と書
込アドレス4415は、正確に32ビットアドレスである。返送データ・チャネ
ル4319のアドレスが有効ビットであり、その後にパケット・プロセッサの1
つを受け手として識別するプロセッサ識別子,BME315,QME305が続く。 ペイロード・バス317上のバス・アクセスおよびアドレス指定:図45 ペイロード・バス317上のバス・アクセスは、グローバル・バス319に関
して上述されたように機能する。この場合も、各期間4502は、奇数スロット
と偶数スロットに分割され、パケット・プロセッサはグローバル・バスに関する
のと同様に奇数と偶数のスロットに割り当てられる。この場合も、1つの期間4
502内には、4つのペイロード・バス・トランザクションのためのスロットが
ある。 ・偶数スロットにおいて:長期読込動作および長期書込動作; ・奇数スロットにおいて:長期読込動作および長期書込動作。 【0213】 グローバル・バスについて説明したのと同様に、パケット・プロセッサ間の優
先順位を決定するためにトークンが用いられる。ただし、QME305および実行
プロセッサ313のための特別の配置は存在しない。アドレスに関しては、長期
読み書き動作のためのアドレスは、図39に示されるペイロード・バッファ・コ
マンドである。返送アドレス・チャネル4321上の返送ペイロード・データの
アドレスは、返送グローバル・データのものと同様であるが、3ビットのトラン
ザクション番号をさらに含む点が異なる。これは、バス・コントローラ4315
が、データが返送されるペイロード・バッファ・コマンド内のトランザクション
番号3905からコピーするものである。 汎用化データ・ストリーム・プロセッサとしてのDCP203 上記の説明は、DCP203をパケット・スイッチ内でどのように利用できるか
を開示したが、DCP203はデータのストリームが処理されるあらゆる用途にお
いて利用できることは、当業者には明らかであろう。統合により、DCP203の
チャネル・プロセッサ307を、シリアル・ビット・ストリーム,ニブル・スト
リームおよびバイト・ストリームのデータを処理するよう設定することができ、
組織プロセッサ303は、32ビット・ワードからなるストリームのデータを処
理することができる。TLE301は、データ毎ストリーム・コンテクスト情報を
格納および処理するメカニズムを提供し、QME305は、ペイロードを含むスト
リームを受信するパケット・プロセッサから、ペイロードを含むストリームを送
信するパケット・プロセッサならびにQME305に接続される外部ユニットに対
して、ストリームに含まれるペイロードに関する情報を伝えるメカニズムを提供
する。組織プロセッサ303は、DCP203を別のDCP203,パラレル・バスま
たは切換組織に接続することを可能にし、それにより複数のDCP203からのデ
ータ・ストリームを処理する大型の装置の構築を可能にし、さらにDCP203を
データ・ストリームを処理する他の装置と組み合わせることも可能にする。 【0214】 パケット・プロセッサは、あらゆる種類のデータ・ストリームを扱うようプロ
グラミングすることができる。プログラミング可能CPRC401を伴うプログラミ
ング可能SDP420とDMAエンジンとを各プロセッサに組み合わせることによって
、ストリーム内の制御データをストリームのペイロードから抽出し、制御データ
を処理し、ペイロードをBME315に転送する動作を分離することができる。CPR
C401内でデータ・スコープを利用してSDP420およびDMAエンジンによるス
トリームの処理の現状に関する情報を維持することによって、制御データの処理
をBME315とSDP420との間のペイロードの移動と平行して進めることができ
、CPRC401のプログラミングが大幅に簡素化される。SDP420内の送信プロ
セッサと受信プロセッサとを、入力ストリーム内のパターンとビット・カウント
とに応答するようプログラミングすることができ、バイパス装置により、異なる
種類のストリームを扱うための送信プロセッサと受信プロセッサの設定を容易に
することができる。ストリームを再循環するようSDPを設定する装備,チャネル
・プロセッサを高速のシリアル・ストリームまたはニブルまたはバイトで構成さ
れるストリームを扱うよう統合する装備およびI/Oピンが異なる種類の送信媒体
と共に機能するよう設定する装備により、さらに柔軟性が得られる。 【0215】 DCP203は、パケット・プロセッサとTLE301との間の通信に関する最小待
ち時間を保証するリング・バスを利用し、BME315とパケット・プロセッサと
の間にペイロードの転送のためのデータのバーストを転送するスロット化バス,
BME315からまたパケット・プロセッサへのバッファ・タッグの転送およびパ
ケット・プロセッサとQME305との間の記述子の転送を用いることにより、デ
ータ・ストリームの処理に生来あるタイミングの制約に対処する。パケット・プ
ロセッサ,QME305およびBME315の間の調整は、これらの装置による互いの
ローカル・メモリへのアクセスを可能にするグローバル・アドエス空間により実
現される。パケット・プロセッサのクラスタの場合には、クラスタのメンバが互
いのローカル・メモリに迅速なアクセスを行うことができる。 上記の詳細な説明は、当業者に対して、パケットを処理し配信するために設計
されるディジタル通信プロセッサ集積回路にデータ・ストリームを処理する技術
を採用する発明者に現在知られる最良のモードを開示した。当業者には、本ディ
ジタル通信プロセッサの個別の特徴を本明細書に開示した以外のコンテクストに
おいて採用することができること、また、本明細書に開示されたものとは異なる
方法で組み合わせることができることを直ちに理解頂けよう。当業者は、さらに
、この特徴の多くの異なる実施例が可能であることも認識されよう。上記すべて
の理由から、詳細な説明は、あらゆる点において、例と見なすべきであって制限
と見なすべきではない。 【図面の簡単な説明】 【図1】 ネットワーク内のパケット・スイッチのブロック図である。 【図2】 本発明のディジタル信号プロセッサを含むパケット・スイッチの
高レベル・ブロック図である。 【図3】 本発明のディジタル通信プロセッサの高レベル・ブロック図であ
る。 【図4】 ディジタル通信プロセッサ内のチャネル・プロセッサの高レベル
・ブロック図である。 【図5】 グローバル・アドレス空間のマップである。 【図6】 チャネル・プロセッサのローカル・メモリのマップである。 【図7】 チャネル・プロセッサ内に受信されるパケットの処理の流れ図で
ある。 【図8】 チャネル・プロセッサにより出力されるパケットの処理の流れ図
である。 【図9】 受信および送信データ・スコープを示す。 【図10】 受信プロセッサ421の詳細なブロック図である。 【図11】 受信バイト・プロセッサのブロック図である。 【図12】 送信プロセッサ427の詳細なブロック図である。 【図13】 チャネル・プロセッサのクラスタのブロック図である。 【図14】 チャネル・プロセッサのクラスタに関するローカルおよび共有
メモリのブロック図である。 【図15】 実行プロセッサ313のブロック図である。 【図16】 組織プロセッサ303のブロック図である。 【図17】 RxおよびTx組織データ・プロセッサの詳細なブロック図である
。 【図18】 2つのDCPを接続することにより作成されるスイッチを示す。 【図19】 複数のDCPを切換組織に接続することにより作成されるスイッ
チを示す。 【図20】 DCPと別種のディジタル切換論理とを切換組織に接続すること
によりスイッチが作成される方法を示す。 【図21】 好適な実施例におけるテーブル・メモリ207の詳細を示す。 【図22】 TLE301の内部アーキテクチャを示す。 【図23】 レジスタ格納部2205および制御格納部2215の詳細を示
す。 【図24】 TLE301により実行されるコマンドを示す。 【図25】 受信側チャネル・プロセッサ307(i)と送信側チャネル・
プロセッサ307(j)とが協働して、移送パケットのシーケンスを切り換える
方法を示す。 【図26】 クラスタ内のRxSDP421の統合例を示す。 【図27】 クラスタ内のTxSDP427の統合例を示す。 【図28】 リング・バス・メッセージを示す。 【図29】 QME305に対するチャネル・プロセッサ・インタフェースを
示す。 【図30】 好適な実施例において採用される待行列コマンドを示す。 【図31】 好適な実施例における待行列データ構造を示す。 【図32】 好適な実施例におけるマルチキャスト・データ構造を示す。 【図33】 好適な実施例におけるMCL3123の詳細である。 【図34】 待行列を管理する種々の設定を示す。 【図35】 QME305の拡張インタフェースを示す。 【図36】 スケジューラ拡張インタフェースの詳細を示す。 【図37】 スケジューラ・インタフェース上のメッセージに関するタイミ
ングを示す。 【図38】 バッファ管理の論理的概要を示す。 【図39】 BME305のコマンドの詳細を示す。 【図40】 BME305のハードウェアの詳細を示す。 【図41】 SDRAM229の内容の詳細を示す。 【図42】 リング・バス・ノード・インタフェースの詳細を示す。 【図43】 グローバル・バス319とペイロード・バス317とが構築さ
れるバス構造を示す。 【図44】 図43のバス構造に関する長い動作および短い動作を示す。 【図45】 グローバル・バス319とペイロード・バス317との実行例
の詳細を示す。 【図46】 設定可能なピン論理443の種々の設定の詳細を示す。 【図47】 ピンと、受信および送信プロセッサとを設定するために用いら
れるレジスタを示す。 【手続補正2】 【補正対象書類名】図面 【補正対象項目名】全図 【補正方法】変更 【補正の内容】 【図1】 【図2】 【図3】 【図4】 【図5】 【図6】 【図7】 【図8】 【図9】 【図10】 【図11】 【図12】 【図13】 【図14】 【図15】 【図16】 【図17】 【図18】 【図19】 【図20】 【図21】 【図22】 【図23】 【図24】 【図25】 【図26】 【図27】 【図28】 【図29】 【図30】 【図31】 【図32】 【図33】 【図34】 【図35】 【図36】 【図37】 【図38】 【図39】 【図40】 【図41】 【図42】 【図43】 【図44】 【図45】 【図46】 【図47】
[Procedure amendment] [Date of submission] February 7, 2001 (2001.2.7) [Procedure amendment 1] [Document name to be amended] Description [Item name to be amended] Full text [Amendment method] Change [Amendment] Patent application title: DIGITAL COMMUNICATION PROCESSOR 1. A plurality of data receiving and / or transmitting data streams.
Data stream input and / or output; with a plurality of data stream processors processing said data stream
Wherein each is coupled to a data stream input and / or output: a writable instruction memory containing instructions; and sequentially executing certain ones of the instructions so that the data stream input
A receiving processor for processing the data stream received from the same; and / or
Processes the data stream by sequentially executing a specific one of the instructions
A plurality of data stream processors comprising: a transmission processor for outputting the data stream to the data stream output. 2. A method for receiving and / or transmitting a plurality of data streams.
Data stream input and / or output; and a plurality of data stream processors for processing said data stream.
Each being coupled to a data stream input and / or output,
With local writable memory located in the data stream processor
A plurality of data processors, wherein the plurality of local memories are associated with the data processing system.
A global address that can be addressed by any of the processors
An integrated circuit characterized by belonging to the address space. 3. A plurality of data receiving and / or transmitting data streams.
Data stream input and / or output; said data each being coupled to a data stream input and / or output
A plurality of data stream processors for processing the stream; and receiving from a particular data stream processor for processing the data stream.
Responding to the transmitted information and relating to the context of the particular data stream.
Context for generating information and providing the context information to the processor
A processor, wherein the specific data stream processor is the content
Processing said data stream using custom information
circuit. 4. The context processor receives the information and receives the information.
Data stream processor and each of the context processors
To provide the context information via a bus having an upper limit of the waiting time.
The integrated circuit according to claim 3, wherein: 5. A data stream and a data stream containing control data.
And multiple data streams that receive and / or transmit
Power and / or output; with a plurality of data stream processors processing said data stream
Where each data stream processor has a data stream input and / or
Or the output is coupled and the received data stream is processed to
And the payload is extracted, and the transmitted data stream is processed to control data.
A plurality of data stream processors for adding data to the payload; providing an address of a buffer for storing the payload, and accompanying a buffer address.
Write the payload to the addressed buffer in response to a write operation
Buffer addressed in response to a read operation with a buffer address.
A buffer manager for reading a payload from a queue; and a queue manager for managing a queue of descriptors of the payload, the queue manager comprising:
Comprises at least one buffer address, wherein the queue manager
The descriptor provided with the queue command is sent to the queue specified in the command.
Responds to the command by putting it in a matrix and is specified in the command
Queue responding to dequeue commands by removing descriptors from the queue
A column manager; wherein the data stream processor comprises a
The payload of the stream and the address provided by the buffer manager
Performs a write operation on the buffer manager, and includes the address.
Respond to the received data stream by performing an enqueue operation on the
The result of the dequeue operation in a read operation to the buffer manager
Perform a dequeue operation using the address in the descriptor obtained as
A data stream using the payload received from the
Data stream by generating and transmitting said generated data stream.
An integrated circuit for transmitting a program. 6. A plurality of data receiving and / or transmitting data streams.
Data stream input and / or output; said data each being coupled to a data stream input and / or output
A plurality of data stream processors for processing the stream; and integrating a particular one of said data stream processors to
The integrated data stream processor is used to process data streams.
A cooperating integrated device comprising: a configurable interconnect between the integrated data stream processors; a configurable operation for coordinating the operation of the integrated data stream processors.
A coordinator; and optionally the configurable interconnect and the configurable operation coordinator.
And a setting device for integrating the data stream processor. 7. A plurality of data receiving and / or transmitting data streams.
Data stream input and / or output; with a plurality of data stream processors processing said data stream
Wherein each is coupled to a data stream input and / or output: a control data processor; for processing a data stream received from said data stream input.
A receiving processor; and / or a transmission for processing a data stream and outputting to the data stream output
A processor; and the control data processor and the receiving processor and / or the transmitting
Processor and shared by the receiving processor and / or the transmitting processor.
The receiving processor and the control processor are used by the processor and the control data processor.
And / or data by said transmitting processor and said control data processor.
A data structure containing information for coordinating the pipelining of the data stream. A plurality of data stream processors comprising: 8. A plurality of data receiving and / or transmitting data streams.
Data stream input and / or output; and a plurality of data stream processors for processing said data stream.
Wherein each is coupled to a data stream input and / or output: serializing a data stream received from said data stream input
A receiving processor for processing the data stream serially and / or serially processing the data stream to output the data stream.
A plurality of data stream processors comprising: a transmitting processor for outputting; and the receiving processor and / or the transmitting processor
A plurality of processing components, and one or more of the components
Components to bypass the processing of the data stream.
An integrated circuit characterized by being able to. 9. A plurality of systems for receiving and / or transmitting data streams.
A real data stream input and / or output; and a plurality of data stream processors for processing said data stream.
Wherein each is coupled to a data stream input and / or output: a data stream received from said serial data stream input
A receiving processor for serially processing the data stream; and / or serially processing the data stream to obtain the serial data stream.
A plurality of data stream processors comprising: a transmission processor for outputting the processed data stream to a memory;
And / or the transmitting processor processes the data stream to be processed.
The receiving processor reads from the memory the data to be processed.
Data stream can be reconfigured to read and / or
Resets the communication processor to write the processed data stream to the memory.
An integrated circuit characterized in that it can be used. 10. A method for serially receiving and / or transmitting a data stream.
A plurality of serial data stream inputs and / or outputs; at least one set of packets for receiving and / or transmitting data streams in parallel.
A plurality of serial data stream processors for processing the data stream;
Processor, each of which is a serial data stream input and / or output
Coupled to the input: a data stream received from the serial data stream input
And / or a serial receiving processor that processes the data stream and outputs the data stream to the data stream output.
A real transmit processor; and at least one coupled to the set of parallel data stream inputs
A parallel data stream processor comprising: a data stream received from the set of parallel data stream inputs;
A parallel receiving processor for processing the stream; and / or for processing the data stream, the set of parallel data streams.
An integrated circuit comprising: a plurality of serial data stream processors comprising: a parallel transmission processor for outputting to a system output; and at least one parallel data stream processor comprising: 11. A plurality of I / O pins for receiving and / or transmitting signals; a data stream processor for processing data represented by the signals; a writable setting specifier for specifying the plurality of settings; And coupled between the plurality of I / O pins and the data stream processor;
In response to the setting specifier, the I / O pin is set according to the specification of the setting specifier.
An integrated circuit, comprising: 12. The method according to claim 11, wherein the setting specifier specifies an electrical characteristic of the I / O pin.
Setting the I / O pins according to the electrical characteristics required for the setting circuit configuration
The integrated circuit according to claim 11, wherein: 13. A data stream processor, comprising: a plurality of data stream processors;
The specifier is any one of the plurality of data stream processors.
Connected to the plurality of I / O pins, thereby enabling
A stream processor is received and / or transmitted by the plurality of I / O pins
The processing of the data represented by the signal can be shared.
Item 12. The integrated circuit according to Item 11. 14. A signal at the data stream input and / or output.
A plurality of I / O pins for receiving and / or transmitting; a writable setting specifier for specifying the plurality of settings; and a plurality of I / O pins coupled between the plurality of I / O pins and the data stream processor.
Responding to the setting specifier, the I / O pin according to the specification by the setting specifier.
To allow the integrated circuit to be used with multiple transmission protocols.
6. The integrated circuit according to claim 5, further comprising: a setting circuit configuration for enabling the setting. 15. Each data stream processor may include a plurality of processing components.
Components in the processing of the data stream.
That it can be individually configured to bypass one or more components.
The integrated circuit according to claim 5, wherein: 16. The method according to claim 16, wherein the data stream processor includes a specific data stream.
Integrating the stream processor to form the integrated data stream processor;
An integrated device with which the integrated data stream processor cooperates in processing the data stream: a configurable interconnect between the integrated data stream processors; a configurable operation that coordinates operation of the integrated data stream processor.
A coordinator; and if necessary to integrate said data stream processor,
A setting device for specifying a configurable interconnect and the configurable operation coordinator
The integrated circuit according to claim 5, further comprising: an integrated device comprising: 17. The method according to claim 16, wherein said data stream input and / or output is parallel.
At least one set of parallel receivers for receiving and / or transmitting data streams.
A data stream input and / or output;
A processor configured to output and / or output the set of parallel data streams;
At least one parallel data stream processor coupled to the
And each parallel data stream processor is provided with the set of parallel data streams.
Process and / or process data received from the data stream input.
Data stream to output to the set of parallel data streams.
6. The integrated circuit according to claim 5, wherein the integrated circuit is activated. 18. The data stream processor, the queue money
Manager and all of the buffer managers share one address space
The integrated circuit according to claim 17, wherein: 19. A specific data stream for processing a data stream.
Responsive to the information received from the processor, the particular data stream
Generate information about a context, and send the context information to the processor.
Further characterized by providing a context processor
An integrated circuit according to claim 5. 20. The method according to claim 20, wherein the context processor is configured to transmit the data stream to the data stream.
A first bus structure coupling the processor to the processor; and the data stream processor to the queuing manager and the buffer.
20. The integrated circuit of claim 19, further comprising: a second bus structure coupled to the manager. The present invention relates generally to digital packet networks, and more particularly to digital packet networks.
Relates to switches used in such networks. BACKGROUND OF THE INVENTION FIG. 1 Packets and Protocols Communication between digital systems generally occurs via packets. Packet
This is illustrated at 113 in FIG. The meaning of a packet depends on the protocol.
It is just a sequence of bits to be determined. Protocol processes packets
Defines how the digital device interprets the bits in the packet.
Regardless of the protocol, many packets have a header 115, which
Shows how that particular packet is processed according to the protocol.
It is. A packet is a payload that is the actual information communicated by the packet.
117. The packet also has a trailer 119, which simply indicates the end of the packet.
To indicate that an error occurred during the transmission or processing of a packet.
And / or may contain information that can be modified. The process that defines it
Depending on the protocol, packets have a fixed or variable length. In the following description,
The contents of the header 115 and the trailer 119 are referred to as protocol data. This is
The way in which these contents are interpreted is completely determined by the protocol.
The contents of the payload 117 are called payload data. Specific protocol
Are often referred to as frames or cells. [0002] Packets are at many different levels for communication in digital systems.
Used. As a result, packets at some level in a digital system
The group payload may be a higher level packet. Figure 1
137. The IP packet 121 is a packet interpreted according to the IP protocol.
It is. The IP packet 121 includes an IP header 123 and a variable-length IP payload 12
And 5. The information in the IP header 123 includes the length of the IP payload 125
It is. When the IP packet 121 is transported in the actual network,
It is carried in the payload of stream 135 of packet 127. Each transport packet
127 has its own header 129, payload 131, trailer 133,
Having. What is called a transport packet in this specification is the link layer of the ISO 7-layer model.
Packet. Transport packets depend on the protocol used at the link layer.
And have a fixed or variable length. A device that handles a transport packet includes a header 129 and a trailer 133 in the packet.
Address the packet and verify the contents of the payload 131 as indicated by
And not. When the transport packet reaches its destination, the payload is transferred to the target system.
Part, in this case, to components that operate according to the IP protocol,
Component handles IP packet 121 as indicated in IP header 123
. Of course, if the IP payload 125 is another higher-level packet,
In some cases. For example, a packet addressed to a decryptor
, The payload of the packet may be an encrypted IP packet 121
. In such a case, the component handling the IP packet 121 decodes the payload.
Passed to the crypter, the decryptor decrypts the encrypted IP packet 121 and decrypts it
Component that has already been sent back to the component.
Take action for processing. For this process, of course, the decrypted IP packet
Includes sending to a destination, and communication with that destination involves transport packets 127.
If it is through a protocol, the component that handles IP packets
Sends the decrypted IP packet to the component that generates the packet stream
, The decrypted IP packet is carried in the payload of the transport packet 127. Packet switch Packets are used to communicate between digital systems located remotely from each other.
The packet travels over the digital network that connects the systems.
I do. At the physical level, a digital network communicates between two devices.
Transmission medium, such as broadcast radio waves, conductors or optical cables.
Used. Packets are distributed between transmission paths by a packet switch. Packet
Switch distributes the packet according to the information normally contained in the packet header.
I do. [0004] As expected, various protocols have their own distribution rules. for example
For example, the IP protocol uses logical distribution. That is, each source of IP packets or
The destination has a logical IP address, and IP packets addressed to a certain destination are
The destination logical IP address. The header does not indicate the physical location of the destination
. IP packet switches must translate IP addresses to physical addresses
The physical address sends the packet at least part of the way to the destination
put out. Also, the IP packet switch carries the IP packet as the payload 131.
Constructs a stream 135 of transport packets destined for that physical address.
There must be. Therefore, the IP node 109 (n) is connected to the Ethernet LAN 105
Ethernet node 107 (n) on (a), connected to LAN 105 (a)
IP packet switches that carry IP packets as payload
Must respond to the IP packet destined for node 107 (n). A typical packet switch is shown at 101. The packet switch 101
Connected to several physical media 106 through which the packet switch 1
01 receives and transmits data. Examples of such media include optical fiber
・ There are cables or cables made of electric conductors. Each of these media 106
, Has its own protocol for defining data sent over the medium.
For example, a protocol widely used to send data over optical cables
One of the rules is the SONET protocol. In FIG. 1, the medium 106 (a ... m) is SO
An optical cable using the NET protocol, and the medium 106 (n ... z) is an electric cable.
Bull. Packets at the intermediate media level-referred to herein as media packets-
-Has a transport packet as its payload. In the ISO 7 layer model
, The media packet is a physical layer packet. In the switch 103, an optical cable
The transport packets transmitted and received on the ATM
Transport packets built according to the TM protocol and sent and received on electrical cables
Ethernet (TM) Pro used by Local Area Network 109
It is built according to Tokor. In most cases, the transport packet is used as its payload.
In this case, the packet switch 103 converts the IP packet to an IP packet.
To the host 109. As mentioned above, to make an IP packet reach its destination
Determine which medium 106 (i) is to be used and use that medium as the payload
Packets according to the protocol required for the medium with the transport packet stream
By building the stream, the packet switch does that. Also,
These packets have IP packets as their payload. For this reason,
The packet switch 103 is switched from the WAN 111 to the IP node 109 (n).
Upon receiving the packet, the IP node 109 (n) transmits the packet on the Ethernet LAN 105 (a).
If it is an Ethernet node 107 (n), the packet switch 103
Must construct a stream of packets in the format required by medium 106 (n).
No. The media payload is destined for Ethernet node 107 (n).
Streams of Ethernet packets that are
Have as payload. [0006] Therefore, the switch 103 must be able to:-switch the incoming stream of packets having the format required by the protocol of the input medium.
Read the payload, the transport packet and the payload of the transport packet.
Connecting the transport packet received on the ATM WAN 111 to the packet switch 103;
Delivering to other destinations in one of the connected Ethernet LANs; a packet switch 1 for transport packets received on the Ethernet LAN 105;
Delivering to other destinations in one of the Ethernet LANs connected to 03; delivering packets required by the IP address along with the IP packets; having the format required by the protocol of the output medium; Other types of payload
Outgoing stream of packets with transport packets as payload containing packets
Generating a system. For such a delivery, one type of transport packet is converted to another type of transport packet.
It becomes necessary. For example, an IP packet comes from ATM WAN 111 and
Ethernet node 109 (n) in the network LAN 105 (a) as a destination.
In this case, the packet switch 103 extracts the IP packet from the payload of the ATM transport packet.
Excerpt, and route it to Ethernet node 107 (n).
Must be included in the payload of the packet. [0008] In addition, the packet switch may provide filtering, encryption / decryption or switching.
Confidentiality functions such as scrambling / descrambling (descrambling)
Often used to perform. The packet switch 103 here
At the boundary between the private network 104 and the public network 102
Is shown. In the header of each IP packet 121, the source IP address of the packet
And the destination IP address, and the security means of the private network 104
Public network 102 with private source address to private network 104
Prohibits access by IP packets of private networks and private networks with specific source addresses.
Access from the network 104 to the public network 102 by packets is also prohibited.
I will. Switch 103 bans each incoming IP packet from its source address.
Filter by comparing to a list of source addresses
If the entry is on the list, discard it. The switch 103 receives the incoming packet
Is filtered in a similar manner. For encryption / decryption,
The switch 103 sends the payload to an IP address in the private network 104
IP packet from public network 102 that is an encrypted IP packet destined for
In some cases, may receive data. In such a case, the packet switch 103
Take out the encrypted IP packet, decrypt it, and
Send to the destination within. Similarly, the packet switch 103 is connected to the public network
IP packets sent to destinations belonging to private network 104 via
Receive, encrypt the IP packet, and send it to another IP
Before sending the packet, it may be placed as a payload in another IP packet. Problems caused by the packet switch The design of the packet switch causes many problems for engineers
. As is evident from the above description, the packet switch determines the incoming packet stream.
Place the payload in the stream, generate the outgoing packet stream, and
Or at a higher level to transform the information in the packet and fill
Perform complex operations, such as tapping and performing encryption / decryption.
No. Packet switches can perform these operations quickly and with high processing power.
Must be executed. In addition, the packet switch uses an e-mail
At a reasonable time (measured in time) after being sent through a service such as TV
Packets must arrive at their destination within a certain time of each other.
Not only the time interval between packets, but also the
Packets that impose strict restrictions on the total length of travel from the source to the destination
It must be able to handle a variety of services, up to the telephone system. In modern electronic devices, high speed, high throughput and time constraints are satisfied.
This has been achieved through the use of special-purpose hardware,
The complexity has been addressed by using programmable processors. Special
Special purpose hardware devices are usually fast but expensive and inflexible.
In addition, complicated processing cannot be performed. Devices with programmable processors
Is usually inexpensive and versatile and can perform any desired processing, but
You. [0010] For this reason, high speed packet switches have been compliant with special purpose hardware.
. As expected, such a packet switch is fast and has high processing power,
Time constraints could be met, but expensive, inflexible, and filtered
Complex functions such as encryption or encryption / decryption could not be performed. Sa
In addition, various transport protocols require their own specialized hardware,
Switch to change the transport protocol used by the high-speed switch
It was necessary to change the special purpose hardware. [0011] Slower packet switches are more programmable processor compliant.
It was. Again, as expected, these switches are relatively
It is inexpensive, can perform any desired complex function, and can be
All other protocol changes need to be reprogrammed
No. However, a packet switch compliant with a programmable processor
Is found in packet switches built with special purpose hardware.
Does not have the ability to satisfy such speed, processing, or time constraints. What is needed is a flexible, inexpensive, programmable processor standard.
Has the ability to perform complex functions specific to
Packet switch that satisfies constraints and can provide high speed and high processing power
It is. Providing such a packet switch is disclosed herein.
The purpose of a digital communications processor. SUMMARY OF THE INVENTION The present invention comprises a plurality of data stream processors and a stream context.
A collection comprising a host processor, a queuing manager, and a buffer manager.
By providing an integrated circuit, packets and packets that typically process a stream of data
Overcoming the above problems of switches and devices. [0014] The data stream processor receiving the data stream includes a data stream processor.
Extract control information from the stream, send it to the context processor,
Interpret as required by the context of the data stream
Process the data stream using the results provided by the processor. Day
To send more data streams, the data stream processor
The buffer from the incoming data stream is given to the buffer
Stored in a file and queue management of the enqueue command
To the sender. The enqueue command is a tag that identifies at least the buffer
And the data stream that is transmitting the data stream.
Queue specifier for the queue read by the
And The queue manager places the descriptor in the appropriate queue (enqueue
). The transmitting data stream processor removes the descriptor from the queue (data
Cue) and use the tag to remove the payload from the buffer and
Create an output data stream using the
Add control information if necessary. Descriptors are on the data stream processor
Is completely defined by the programs that work in
The receiving data stream processor and the transmitting data stream processor
Provides a general mechanism for ordering and communicating information with Sessa
. The data stream processor includes a receiving processor, a transmitting processor,
Control data processor, local memory, receive processor, transmit processor
Between the server and buffer manager, and between local memory and buffer manager.
And a DMA engine for performing a DMA access with the controller. Data stream
Local memory belonging to each of the processors;
The local memory belonging to the matrix manager has a single global address
Device that has access to the global address space, everything in between
Is read and written by Data stream processor is the data stream
While receiving the data, the receiving processor and the control data processor work together to
Process the stream as follows: the transmit processor receives the stream,
Extract control information from the robot, pass it to the control data processor,
To the buffer manager. The transmitting processor is the next part of the stream
Control data processor while working on the minute
Process the context information about the DMA-processed part using
Sends a command to the queuing manager with the descriptor of the DMA-processed payload
You. The data structure, called the data scope, allows the control data processor
Information exchange with the receiving processor is simplified. Transmit processor and control data
The interaction with the processor is substantially the same, but the payload is reversed
Moving. The data stream processor includes a serial data stream processor.
And at least one parallel data stream processor
You. Parallel data stream processors use integrated circuits to
Used to connect to integrated circuits, buses or switching fabrics. [0017] Serial data processors are highly configurable. Settings are global
• Performed by a register in the address space. Each serial data processor
Can receive and / or transmit separate data streams, or
Is used when serial data processors process a single data stream.
Sometimes integrated to work together. Serial data processor I / O pins
Are set up and integrated to meet the electrical requirements of different physical media.
All data processors can be configured to receive the same input.
Wear. Various devices in the receive or transmit processor are available as required
A particular type of serial input stream that is received or transmitted, disabled or disabled
Can be dealt with. Also, the receiving or transmitting processor has already processed
The data stream can be recirculated. This application is a priority application based on the following US application. No. 60 / 084,706, Brown et al., "Programmable packet switch" (19
No. 60 / 105,823, Brown et al., "Digital communications processor"
(Filed October 27, 1998). DESCRIPTION OF THE PREFERRED EMBODIMENT The following detailed description is directed to a digital communication system including a digital communication processor of the present invention.
Begin with an overview of the structure and operation of the packet switch, followed by digital communications
Outlines the structure and operation of the processor, and then describes the digital communication processor
The details of the structure and operation of the components are described. Digital Packet Switch Including Digital Communication Processor: FIG. 2 FIG. 2 is a block diagram of the packet switch 201. Packet switch
201 is a digital communication processor for realizing the digital communication processor of the present invention.
It is constructed using the power integrated circuit 203. The integrated circuit 201 has the following external devices.
With an interface for: up to 16 to 2 for packets sent or received by the transport protocol
05 (0 ... 15) serial input 204 and serial output 206; 32 bit output and 32 bit input from optional digital switching device
(Interface 221)-PCI bus interface 225 with optional host processor 227
A 128-bit wide interface 228 with the SDRAM buffer memory 229; a 64-bit wide interface with the SRAM conversion table memory 207; and a 32-bit wide interface with the queue memory 213; More specifically regarding these interfaces, the digital communication process
The processor 203 connects the serial inputs and outputs in a single DCP 203 to many different media.
Programmed to be used for body and transport protocols
You. When the network in which the DCP 203 is used is changed, the DCP 203
Reprogrammed to handle the different network configurations. Fast protocol is
, Connect some serial input or output to transmission medium for high speed protocol
It is dealt with by. In the preferred embodiment, media and transport protocols
Includes: 10 Mb Ethernet; 100 Mb Ethernet; 1 Gb Ethernet; T1 / E1 interface; T3 / E3 interface; OC-3c interface; and OC-12c interface. DCP 203 receives a media packet at input 204 and receives a media packet from output 206.
Output body packet. Media packets are received on input 204 and transmitted on output 206
What happens in the interim is how the DCP is programmed
Is determined by The methods by which the DCP 203 can be programmed include:
There are: each input has a receiving processor, and each output has a transmitting processor. these
The processor has different types of media packets, transport packets and transport packets.
Independently programmed to address the packet that is the payload; the input and output are integrated; the state behavior associated with the stream of packets can be programmed
Examples include address translation and error correction code processing; the ability to program the source and destination relationships of packets in the DCP
The information transmitted from the packet source to the packet destination is interpreted by the destination;
Can be programmed as For a typical packet switching application, DCP 203 operates as follows.
Be programmed. As each media packet is received at input 204,
DCP 203 stores data from the payload of the media packet in buffer memory 229.
Is stored in the buffer 231 in the file. This stored data is used here for protocol data
Data unit or PDU (protocol data unit). PDUs are often
, A transport packet that is part of the payload of the media packet. The media packet is
When output, the DCP 203 retrieves the PDU from the buffer 231 and makes the necessary changes.
(For example, changing the delivery information in the transport packet or changing the type of transport packet)
), Add protocol data for media packets. The DCP 203 uses the conversion table 209 in the conversion table memory 207 to
Deliver transport packets and higher level packets. Packets delivered
The DCP 203, the descriptor for the buffer 231 containing the PDU for the packet
217 is a queue in the queue memory 213 for the output 206 from which the packet is output.
Put at the end of 215. In general, each queue 215 is associated with one output 206
May put the packet received at input 204 at the end of any queue 215
Therefore, packets received at an input 204 are transmitted through a plurality of outputs 206.
Can be output. Packets may be multicast. Sand
That is, it is put in two or more queues 215. DCP 203 relates to output 206
Takes the descriptor 217 from the front of the queue and places it in the buffer identified by the descriptor.
231 is output to the queue output 206. The DCP 203 receives packets from any digital switching organization, as shown at 221.
It can also receive packet data and provide it with packet data. Switching group
The fabric may be another packet switch, such as packet switch 201,
Or any other device capable of delivering a stream of digital data.
It can be a device. For example, the packet switch 201 is connected to the crossbar switch.
It can also be connected to switches or other packet switches for the bus. I
Received from the interface 221 or output to the interface 221.
The delivery of the packet data is basically received at the serial input 204.
This is as described above with respect to the packet to be transmitted. Finally, DCP203 is PCI bus 2
25, receive data from the optional host 227 and send a packet
・ Send data. The external control interface includes a GPIO interface 223 and a PCI bus interface.
And a face 225. The GPIO interface 223 includes an LED and a nonvolatile memory.
External systems such as memory, physical layer serial transmit and receive components and power supplies.
Utility interface for monitoring and controlling system elements. PCI bus
The interface 225 controls the DCP 203 and the switching system 201, and
Advanced level such as access check of packet contents received by
Communication with a host processor that also performs the operations of the Detailed Example of Operation Using the example of the description of the related art, the components of the packet switch 201
Describes in more detail how it is programmed to deliver packets.
I will tell. As an example, the serial input 204 (i) of the serial pair 205 (i) is
A stream of SONET packets with a stream of ATM transport packets as the payload of the
Ream is being received. An ATM transport packet has an IP node as its payload.
109 (n), which is directed to the Ethernet LAN 105 (
On device 107 (n) attached to a). Ethernet LAN 105 (a)
, Serial pair 205 (j). packet
-Since the switch 201 is used to distribute IP packets, the DCP 203
For the payload, including the header of the P packet, on the serial input 204 (i)
It is programmed to scan incoming transport packets. IP packet header
If found, the DCP 203 buffers the payload from the ATM transport packet into a buffer
To the buffer 231 in the buffer memory 229 specified by the tag 233.
Start to work. If the IP packet is longer than the buffer, an additional buffer is adopted.
You. While the IP packet is being transferred to the buffer memory 229, the DCP 203
Process the information in the header of the packet to determine how to deliver the IP packet,
After that, the IP packet is delivered. Processing of the header information is performed in the conversion table memory 2
07 is performed using the conversion table. In this case, two conversions are performed. You
That is, the IP destination address in the header of the IP packet is changed to the IP having the destination address.
Must convert to the Ethernet address of device 107 (n) where the node is located
And the Ethernet address of the device 107 (n) is stored in the queue memory 213.
Must be converted to a queue identifier within. From there, the serial output 206
(J) outputs an Ethernet packet. One of these, the IP destination address
(IPA: IP destination address) to Ethernet address (ENA: Ethern
et address) into the conversion table
209 (a). The DCP 203 stores information from the header of the IP packet and the conversion table 209 (a).
Is used to create the descriptor 207 of the IP packet. This descriptor includes Ethernet
Address and the buffer tag 233 of the buffer 231 containing the packet
included. DCP 203 then outputs descriptor 207 from serial output 206 (j).
It is placed at the end 221 of the queue 215 (j) for packets to be output. descriptor
When 207 reaches the forefront of queue 215 (j), DCP 203 returns a buffer containing IPA.
The contents of the file 231 are extracted, and the contents are output with respect to the serial output 206 (j).
Stream the packets with the appropriate media protocol. These media packages
The packet has an Ethernet transport packet as its payload. Information description
Using the device 207, the DCP 203 converts the device 107 (
n) Ethernet address. Next, pay for the Ethernet transport packet.
The load is stored in the buffer specified by the buffer tag. The DCP 203 can, of course, perform the above operation or a variant thereof for up to 16 incoming calls.
Packet serial stream and 16 outgoing transport packet streams.
And at the same time, in some cases,
Data stream to and / or from a digital switch
Data stream between itself and external host 227 via interface 227
Note that it may be performed at the same time as the system is transferred. In addition,
In many cases, packet switching operations are subject to strict timing constraints, as described in
Is governed by As described in more detail below, the design of DCP 203
An important factor in the DCP 203 is that it is necessary for the types of operations described above.
By providing data paths and memory structures with high speed and latency characteristics
is there. DCP 203 Structure: FIGS. 3 and 5 FIG. 3 is a high-level block diagram of the internal structure of DCP 203. Shown in FIG.
2 are labeled with the reference numbers shown in FIG. Transport packet
Starting with the serial input and output 205 sent and received, each serial pair 205
, Connected to its own programmable channel processor 307. This professional
The processor 307 processes serial input from the pair and serial output to the pair. So
Therefore, in the preferred embodiment, there are 16 channel processors 307
I do. For very fast transport protocols, up to four channel channels
Coupling processor 307 into the channel processor cluster shown at 309
be able to. The organization processor 303 is similar to the channel processor, except that
Process parallel data received from source 221 and sent to interface 221
Is different. The table lookup engine 301 uses a conversion table
Address conversion is performed using a table in the memory 207. Queue management engine 3
05 manages a queue 215 of descriptors. In some embodiments, the queue is DCP IC
Queue memory 213 may be stored in a separate external memory
In some cases. The buffer management engine 315 has a buffer memory 229.
Manages the buffer 231 in the inside. The execution processor 313 includes other components.
Initialize and maintain the data in the PCI bus with the optional external host 227.
Interface and GPIO interface, and higher if necessary.
Perform level processing. The program and data of the execution processor 313 are stored in SDRA
It is stored in M229. Execution processor 313, channel processor 309 and
And organization processor 303, all of TLE 301, QME 305 and BME 314
To process packets and / or frames, and
Are collectively referred to as packet processors. But here, the packet
The processor processes not only packets but also any other stream of data.
General purpose bits / n bytes / byte / or (of tissue processor)
(If) can be considered a 32-bit word stream processor.
It should be noted that. All processing components of DCP 203 are programmable. H
The channel processor 307 has different types of media packets, transport packets and
Can be individually programmed to handle transport packet payloads
, Tissue processor 303 to process data employed by different switching devices
Can be programmed. Do not write the table in the table storage unit 207.
And the table lookup engine 301
It is programmed to perform different types of lookups. Queuing pipe
The engine 305 sets up a different number of queues and stores different sizes of queues in the queues.
The buffer management engine 315 can be programmed to use a predicate.
Buffers pools of different sizes to different buffer sizes in the pool
Is programmed as Finally, XP313 is a general purpose processor,
Can be programmed to perform the functions of Component Pro
Grams are loaded when DCP 203 is initialized. The program code is
Loaded into SDRAM 229 by external host 227 or stored in BME 315
It is stored in an external PROM that is part of the address space managed by the user. Any place
Again, XP 313 loads the code into the component's memory. Due to the bus and memory structure of the digital communication processor 203, the DCP 203
Are the table lookup engine 301, the queue management engine 305, and
Packet switching speed while employing the buffer management engine 315 as a shared resource.
Degree and time constraints can be satisfied. Table lookup
All components of the digital communication processor 203 except the engine 301
Shares one global address space 321. Each packet process
Has its own local memory in the global address space 321;
Other packets whose local memory belongs to the global address space 321
The local memory of the processor and the memory belonging to the BME 315 and QME 305
Mori can also be accessed. Each packet processor has its own local
Access directly to the local memory of other components.
Are accessible via a 32-bit global bus 319. Ma
In addition, the organization processor 303 has a unique route 3 for the queue management engine 305.
04. FIG. 5 shows an outline of the global address space 321. First, the channel
Global memory consisting of the local memory 501 of the processor 307 (0 ... 15)
There is a portion 504 of the address space. Portion 504 includes each channel processor channel.
It is further subdivided into a cluster memory 503 for the raster 309. Specific cha
The channel processor 307 (i) accesses its local memory 501 (i)
The fastest access can be performed, and the
Next fastest access to local memory of other channel processors in the cluster.
Access to the rest of the global address space 321
Even do slow access. The local memory is in the global address space 32
Other components that are part of one have their local memory shown at 505.
Organization processor 303 and QME 30 whose local memory is shown at 507
5, the BME 315 whose local memory is shown at 513, and its local memory.
The memory is the QME 305 shown at 517. Share global address space
Processors generally use global addresses for communication between the processors.
Space can be used. For example, processors coordinate their operations.
To set up signals (semaphores) in the global address space to
Can be. In order to create and use such signals, the preferred embodiment
Some processors have a bit-test-and-set-bit instruction. The
Other information available in the global address space includes the QME local memory 5
07, the queue status information 505, the buffer management engine local memory 51
3 and the system setting in the XP local memory 517.
There is a constant register 519 and system interface setting information 521. last
In addition, the QME 305 has a queue state for the queue read by the packet processor.
Write the status information to the local memory of the packet processor. With further reference to FIG. 3, each of the component's local memories contains
A bus 317 is coupled to the buffer management engine 315. This is 4
Operates in a cycle burst and stores up to 64 bytes of data to SDRAM 229 and other
Is a 128-bit wide bus for transferring data to and from a component. Payload bar
The data transferred via the data processor 317 includes:-programs and data used by the execution processor 313;-data used by the execution processor 313 to set the DCP 203;-SDRAM 229 and the packet processor. Protocol data transferred during
A unit; a buffer tag 233; and a descriptor queued by the packet processor and retrieved therefrom.
. The transfer between the SDRAM 229 and the local memory is performed by direct memory access (DMA
: Direct memory access) mechanism. Component that performs the transfer
Gives a DMA instruction for transfer to the DMA mechanism, and the DMA mechanism
Perform the transfer without further intervention from the component. With this structure, professional
Parallel transfer of protocol data units and other processing by components
The operation speed and the processing capacity of the DCP 203 can be greatly improved. The lookup engine 301 and the packet processor are all ring processors.
It is connected via a bus 311. Ring bus 311 is 64 bits wide,
Are time-multiplexed between connected nodes. At any one moment, these components
Each of the components is assigned one to five bus slots. Each
Lots can carry 64-bit messages. The bus is between its nodes
Since each node has a predetermined maximum number of slots, the message
Is reliably transferred from one node on the ring bus 311 to another node within a certain period of time.
You can move. In the preferred embodiment, execution processor 313
The table in the table storage unit 207 is set and
The packet processor uses ring bus messages to modify
Information to the table lookup engine 301 for
Lookup engine 301 uses the ring bus message to convert and
Send the result to the packet processor. All devices coupled to the ring bus 311
The ring bus 311 to any other device coupled to the ring bus 311.
In another embodiment, the ring bus
The message is passed, for example, to channel processor 3 comprising cluster 309
07 can be used to adjust the operation. Example of Cooperation of Components of DCP 203 Continuing with the example of FIGS. 1 and 2 at the level of detail indicated by FIG.
In response, a stream of ATM packets is received on input line 204 (i). input
Line 204 (i) belongs to channel processor 307 (i). ATM packets
Arrives, the channel processor 307 (i) starts a series of DMA transfers,
First, send the packet to the local memory of the channel processor 307 (i),
Next, in the buffer tag 233 owned by the channel processor 307 (i),
Therefore, the data is transferred to the designated buffer 231. While this is in progress, the channel
The processor 307 (i) scans the payload of the ATM packet for an IP packet
I do. Upon finding the beginning of an IP packet, the channel processor 307 (i)
Extract destination address of IP packet from IP packet header and look up table
Create a message containing the destination address for the up engine 301. This
, The destination address is the device 10 connected to the Ethernet LAN 105 (a).
7 (n) is designated as the IP node 109 (n). Ethernet LAN 105 (a)
Receives the packet output from serial output 206 (j). Channel processor
The server 307 (i) then sends a message to one of the slots in the ring bus 311.
Insert Channel processor 307 (i) communicates with Ethernet of device 107 (n).
Address and the number m of the queue to which the serial output 206 (j) corresponds.
Upon receiving a reply to the message, at least the Ethernet address and
Create a descriptor 217 (k) containing the buffer tag 233 of the buffer. next
, Channel processor 307 (i)
The queue command is transferred to the mailbox belonging to the channel processor 307 (i).
Write to The enqueue command includes at least a descriptor 217 (k) and a wait
Matrix number m. The queue management engine 305 stores the descriptor 217 (k)
Respond to the command by placing it at the end 221 of the queue 215 (m). The serial output 206 (j) belongs to the channel processor 306 (j) and waits
Queue management engine 305 determines whether queue 215 (m) is at the forefront 219
Gives the descriptor. The processor communicates with the queue 21 via the payload bus 317.
Writing a dequeue command specifying 5 (m) to that mailbox
Do this more. The queue management engine 305 is located at the front of the queue 215 (m).
The descriptor 217 in the section 219 is transferred to the channel processor via the payload bus 317.
Responds to a dequeue command by giving it to the processor 307 (j). After all, the descriptor 217 at the forefront 219 of the queue 215 (m) is the descriptor 217
(K). Channel processor 307 (j) has descriptor 217 (k)
Then, using the buffer tag 233 in the descriptor 217 (k), the IP packet is
From the containing buffer to the local memory of channel processor 307 (j).
Starts DMA transfer of IP packets. When an IP packet arrives, the channel
The processor 307 (j) has an address addressed to the Ethernet device 107 (n).
Creates a stream of Ethernet transport packets and associates the IP packet with its payload.
And a stream of Ethernet packets on serial output 206 (j).
Output. The Ethernet address in the packet is, of course, the descriptor 217 (k
). Advantages of DCP 203 Bus and Memory Architecture As will be apparent from the above description, DCP 203 bus and memory architecture
Depending on the architecture, the packet processor can handle packet headers,
-Data unit transfer and enqueue and dequeue operations can be performed in parallel.
Can be. In addition, different buses not only have different paths,
Satisfies the latency requirements of the operations performed. For this reason, the most time-sensitive
Operation is the conversion of information in the packet header. This is the result of the conversion is obtained
Distribution cannot be performed until the Each of the packet processors
Each slot processor has a slot in the ring bus 311 so that
Accessing the table lookup engine 301 within a proven time
As a result, the time constraint of the conversion is satisfied. On the other hand, protocol data between the packet processor and the SDRAM 229
Unit transfers include high-bandwidth bursts, or more precisely, local memory
Provided by DMA transfer to and from SDRAM 229 via payload bus 317
A burst is required. Buffer management engine 315 and channel processor
Transfer of the buffer tag from the server 307 (i);
Transfer of descriptors to / from the channel processor 307 (i) is also strict in time
Therefore, these operations are also performed on the payload bus 317. Operations with less time constraints such as reading and writing are performed in the global address space 321.
Can be done with The time required for such reading and writing depends on the global address.
It is determined by whether or not it is in the space. The global address of a particular processor itself
Identify that reading and writing to the part of the source space takes the shortest time and the second
Read / write to processors belonging to the cluster 309 of
Read and write to processors that do not belong to the fixed processor cluster 309 are the most
take time. All of the processors of the DCP 203 except the TLE 301 have a global address space.
Sharing the H.321 facilitates communication between the processors. For example,
Row processor 313 stores data in that portion of global address space 321.
Initialize and / or reconfigure other components by writing
The packet processor 307 is managed by the queue management engine 305.
Queue 215 and the buffer 2 managed by the buffer management engine 315
31 or status of other packet processors in cluster 309
Status information from the part of the global address space belonging to these devices.
The processor group has a global address space
Signals within can regulate that behavior. Receive packet
The processor may also take advantage of the global address space in some applications.
And the protocol data output by the protocol data unit it receives
Can be written directly to the local memory of the sending packet processor.
Wear. The execution processor 313 eventually uses the global address space
In this case, the execution processor 313 controls each processor sharing the global address space.
The situation of Sessa can be judged. When operations in the global address space are performed very frequently, a dedicated hardware
Hardware support is provided. For example, the organization processor 303 may
Dedicated access to the global address space of the engine 305.
To obtain queuing status information without burdening global bus 319
Can be. Similarly, each packet processor has a global address space
In the part there are status bits for the mailbox of the QME 305 and these bits
Since the packet is routed directly to the queue management engine 305, each packet processor
The security officer checks the status of the mailbox without burdening the global bus 319.
Can be turned off. Packet Processor Details The next section describes the channel processors 307 (0 ... n) in detail.
Next, the organization processor 303 and finally the execution processor 313 will be described. Overview of Channel Processor 307 (i): FIGS. 4 and 6 FIG. 4 is a block diagram of components of the channel processor 307 (i).
is there. As shown in FIG. 3, the channel processor 307 (i)
A serial packet input is received via input 204 (i) and serial output 20 is received.
6 (i) and sends the serial packet output to the ring bus 311.
And has a slot therein, and the payload bus 317 and the global bus 31
9 is connected. Integration routes 433 and 435 and cluster routes 437 and 439
Thus, the channel processor 307 (i) can use other channels in the cluster 309
Integrated with the processor 307 to handle very fast transmission media.
it can. At a high level, the channel processor 307 (i) has three components
Have a global address that controls the operation of other components.
Channel processor, which is a general-purpose processor capable of accessing the
A channel processor risc core (CPRC) 401 and a serial processor
The packet is received from the serial input 204 (i) and is sent to the serial output 206 (i).
Serial data processor (SDP: serial
data processor) 420, channel processor 307 (i) and BME 315
D which handles data transfer to / from the QME 305 via the global bus 317.
The MA engine 411. Both SDP 420 and CP RISC core 401
It is connected to the ring bus 311 via the bus interface 415. S
DP 420 has two sub-components:
An RxSDP 421 for processing and a TxSDP 427 for processing outgoing packets. Next, the details of the CPRC 401 will be described. The CPRC 401 is a well-known MIPS1 instruction set.
A general-purpose microprocessor that employs a subset. CPRC 401 is a ring
Messages can be sent and received on the SDP 420, the SDP 420 and two registers
・ Share files. Using the extract space 417, the incoming packet is
The protocol data extracted from the protocol is stored and used by the CPRC 401.
On the other hand, the protocol sent to the SDP 420 by the CPRC 401 using the merged space 419
The col data is stored and used for creating an outgoing packet. The CPRC has four contexts, an independent set of register files.
is there. The CPRC 401 responds to a break (BREAK) command in the program,
Alternatively, it can switch between contexts in response to a hardware interrupt.
The context is prioritized by the highest priority number from 0 to 3
The ranking is given. Each context has a context entry register and a context.
And a text return register. When the context changes, the current
The address of the next instruction executed in the context is the context of the current context
-Context entry of new context stored in return register
Execution proceeds according to the instruction at the address stored in the re-register. There are five system events that cause a context switch: • Master reset • Masking disabled interrupt • Debug interrupt • User interrupt 1 • User interrupt 2 Context related to master reset event and debug interrupt event・
The entry register settings are system defined. For other events,
It can be programmed. The instruction memory 403 includes a code executed by the CPRC 401. This code
The CPRC 401 and the CPRCs of the other CPs 307 in the cluster 309 to which the CP 307 (i) belongs.
Read and write only by In the preferred embodiment, the code is IM
Loaded in EM403. First, the execution processor 313 sets the global bus 3
19, the code is loaded into DMEM 407, and then CPRC 401
The data is transferred from the EM 407 to the IMEM 403. The DMEM 405 stores the local data memo of the channel processor 307 (i).
Ri. This is due to local storage by CPRC 401 and payload bus 413
Used for both DMA processing of data through DMEM405, excerpt space 417
And the merged space 419 are all part of the global address space 321;
Other channel processors in cluster 309 of channel processor 307 (i)
307 and other processors in the DCP 203 via the global bus 317.
Can be accessed. DMEM implementing this structure in preferred embodiment
The memory components added to 405 include a request FIFO 407, a MUX 407, and a global
Global bus interface 413 and payload bus interface
411. The MUX 407 is composed of RxSDP421, TxSDP427, payload bus
Access to DMEM 405 between interface 411 and request FIFO 406
Are multiplexed. Request FIFO 406 is CCP2 coupled to global bus 319.
03 accesses the DMEM 405, the CPRC 401
Access to DM 405 and global address space 321;
The other CPRC 401 of the channel processor 307 in the cluster 309 of FIG.
Enables access to DMEM 405. MUX 407, DMEM 405 and
The erase bus interface 411 together constitute the DMA engine 441,
This is the payload bus 317 between the SRAM 229 and the CPRC 405 and the SDP 420.
Execute DMA operation via. As shown in the above structure, RxDSP 421, TxSDP 427 and payload bus
The interface 411 has the first priority of access to the DMEM 411
, Global bus interface 413, CPRC 401 and other CPRC 401
Must compete for the remaining access rights. For this reason, this structure
On the one hand, between the SDP 420 and the DMEM 405, and, on the other hand, the DMEM 405 and the SDRAM 22.
The first priority is given to the DMA transfer of the protocol data unit between 9 and 9. The details of the components of the serial data processor 420 are further described
Then, the RxSDP 421 specializes in processing the stream of the incoming packet. RxSDP42
1 extracts the field containing the protocol data from the incoming stream,
The contents of the field are transferred to the ring bus 31 via the ring bus interface 413.
1 or via the excerpt space 417 to the CPRC 401. Also via DMA transfer
To provide the protocol data unit from the packet stream to DMEM 405
I can. RxDSP 421 has three subcomponents. That is, the transmission medium
A pin logic 443 for receiving a physical signal representing a packet stream within the body;
Framing to place media packets and transport packets in the packet stream
An assist processor 407 and protocol information from the transport packet and its payload.
Information, and transmit a transfer packet to the DMEM 405 via the path 425.
453 processor. The byte processor 453 has the extract space 417
The extracted protocol information can be placed in the
Placing ring bus messages via bus interface 415
Can be. TxSDP 427 is a protocol that TxSDP 427 obtains from DMEM 405 via DMA.
Specializing in the generation of streams of outgoing transport packets carrying digital data units
. For this purpose, the TxSDP 427 uses the protocol that the CPRC 401 puts into the merged space 419.
Merge col data into protocol data units. TxSDP427
The components are functionally equivalent to the components of the RxSDP 421. others
For this reason, the byte processor 453 checks the transport packet and the protocol in its payload.
Manipulates data and framing support processor 449 needs media packets
And the pin logic 445 outputs the data and the data is output.
In the format required by the physical medium being used. Another interesting feature of SDP 420 is that recirculation path 441 and integration path 433,
435. The recirculation path 441 transmits the packet stored in the DMEM 405 to RxSDP
Returning to step 421, further processing is performed and output to the DMEM 405 is enabled. Sum
The path 433 is a state where all the RxDSPs 421 in the cluster 309 share the same input data.
In order to enable reception, the integrated path 435 belongs to TxSDP 427 to which CP 307 (i) belongs.
You can receive data about the output from TxSDP in other CPs 307 of the cluster.
To do. Operation example of channel processor 307: FIG. 25 FIG. 25 shows how the receiving-side channel processor 307 (i)
In cooperation with the channel processor 307 (j).
media path containing a sequence of transport packets at input 204 (i) belonging to i).
Receive a stream of packets and its payload is
Sender channel processor 307 which is the transport packet received in i)
A medium comprising a sequence of transport packets at output 206 (j) belonging to (j)
Indicates whether a sequence of packets can be output. Medium to be received and transmitted
The body packet and the transport packet belong to different protocols, of course. The received medium packet is sent to the RxSDP 421 of the channel processor 307 (i).
Received. RxSDP 421 uses the transport packet and its payload to
The col data is extracted to the extraction space 417, and the DMEM 405 and the payload bus are extracted.
The protocol data unit consisting of the transport packet via 317 is transmitted to the BME 31
5 is DMA-processed. The BME 315 transfers this protocol data unit to SDRAM2
29 buffer 231. Protocol data unit is shown in 2503
Is done. On the other hand, the CPRC 401 in the channel processor 307 (i)
The descriptor 217 is created using the col data. Next, CPRC 401 pays this
Transfer to QME 305 via load bus 317 and queue. (Prototype
A part of the col data is transmitted to the TLE 301 via the ring bus 311 for transmission.
Note that the appearance is not shown in this figure. ) CPRC 401 put in queue
When the CPRC 401 sends the power descriptor 217, the CPRC 401 sends the
Put it at the end of the queue 215 read by Sessa 307 (j)
Specify that The QME 305 stores the descriptor 21 at the end of the designated queue 215.
Insert 7. The channel processor 307 (j) starts the descriptor 207 from the front of the queue 215.
, The QME 305 passes it over the payload bus 317 to the channel
It is sent to the processor 307 (j). Channel processor 307 (j)
Using the predicate 217, a protocol relating to a stream of output packets
Data is created, and the protocol data is entered into the merge space 419. Next,
The buffer 23 in the SDRAM 229 via the erase bus 317 and the DMEM 405
1 to Protocol Data Unit to Serial Data Processor 420
Start the DMA operation to transfer. Here, TxSDP 427 is a protocol data unit.
Output 20 conveying unit 2503 from the packet received at 204 (i)
Necessary to create a stream of media packets 2505 for 6 (j).
Add protocol data. Details of Local Memory 501: FIG. 6 FIG. 6 shows the local memory 501 for the channel processor 307 (i).
(I) is shown. As described above, all of the local memory 501 (i)
Of the digital communication processor 203 sharing the global address space 321
Can be read and written by all components. Data Scope 625 (0) and 625 (1) As described above, the RxSDP 421 transmits the incoming packet stream to the SDRAM 229 by DM.
A process and perform protocol data from incoming packet streams
And sends it to the CPRC 401 for processing. On the other hand, TxSDP427 is SDRAM
The outgoing protocol data unit is received from the H.229 and the CPRC 401
Receive the protocol data and send it to the appropriate
Put in place. For one transport packet, the process involves two stages. Incoming call
In the case of a packet, it is the following stages: Extract protocol data and transfer protocol data unit to SDRAM 229
And the protocol data is processed by the CPRC 401. In channel processor 307, these two stages are pipelined.
You. For an incoming packet stream, CPRC 401 contains the previous protocol data
Processes the protocol data extracted from the unit, but the RxSDP421
Extracting protocol data from the packet stream
DMA the current protocol data unit from the system. Send in the same way
Processed, TxSDP 427 DMAs the current protocol data unit,
RC 401 converts the protocol data contained in the next protocol data unit
To process. The pipeline processing can be performed by the data scopes 625 (0) and 625 (1).
It will work. These are data structures that are visible and accessible from CPRC 401
, SDP 420 and the interaction between CPRC 401 and SDP 420. Ah
The data scope 625 (i) has a collection of data scope registers 624.
And a set of flags 632 (i) of the data scope event register 632.
Is included. The data scope register 624 further stores the Tx data
Loop 641 and an Rx data scope 643. Rx data scope 643
Is extracted by the RxSDP 421 from the incoming packet stream during the first stage
CPRC 401 receives the protocol data in the second stage.
Process on the floor. Similarly, the Tx data scope 643 indicates that the CPRC 401 is
Receives the processed protocol data for the outgoing packet stream at Tx
SDP 427 sends protocol data from Tx data scope 643 during the second phase
Is output. In addition to enabling packet processing to be pipelined, data scope 6
25 is currently received by Rx 421 of SDP on CPRC 401, or
The running program for the stream of packets being sent by xSDP 427
Provides a uniform interface for RAM. Stream needs further processing
In some applications, the number of data scopes can be increased. For example, wear
Processing of communication stream, storing of PDUs derived from it in DMEM 405, recirculation path
Reprocessing of the PDU stored in the DMEM 405 using the 441 and the final PDU
RxSDP processing including DMA processing to RAM 229 includes four data scopes.
Can be The program to be executed on the CPRC 401 currently determines which data
Determine if a co-op is being used. The SPD 420 has the data scope 625 (
Extract protocol data from 9) and merge protocol data with it
Meanwhile, the CPRC 401 processes the protocol data with the data scope 621 (1).
You. When the SDP 420 terminates the data scope 625 (0), the data scope is sent to the CPRC 401.
The CPRC 401 informs the SDP 420 that the data scope 625 (1)
Prepare the data scope 625 (1) so that you can start
The operation in the loop 621 (0) is started. The contents of the data scope 625 (i) will be described in more detail.
The data scope 643 is an abstract including the protocol information extracted by the RxSDP 601.
The packet received by the RxSDP 421 is transferred to the smart register 601 and the SDRAM 229 by the DMA.
The RxCB 633 containing the information necessary for processing and the RxSDP 421
Rx status including status information about RxSDP421, including whether DMA
Status 635. Tx data scope 641 is similar for packet transmission
Register. The merge register 603 stores the protocol to be merged with the outgoing packet.
TxCB633 is the packet transmitted from the SDRAM 229 by TxSDP.
Tx status contains information necessary for DMA processing of the packet, and the Tx SDP 427
It includes status information on TxSDP 427, including whether or not processing has been completed. Control block register 611 The control block register 611 controls the DMA transfer between the CPRC 401 and the SDRAM 229.
Is a set of four registers that control. WrCB610 is from CPRC401 to SDRAM2
RdCB controls the DMA transfer to the CPRC 401. Ring bus control registers 617 These registers are part of the ring bus interface 415. This
With these registers, RxSDP421 and CPRC401 send messages on the ring bus.
The CPRC 401 sends a message on this ring bus.
Can be received. 4 registers for sending messages and CP307 (
8 registers for receiving replies to the message sent by i)
And one queue of registers for receiving spontaneous messages. SONET overhead bit 612 This register contains the SON for the SONET packet output by CP 307 (i).
Includes ET overhead bit. RxSDP control 613 and TxSDP control 615 These registers control the operation of RxSDP 421 and TxSDP 427, respectively.
Including parameters. CP Mode Register 625 This register contains parameters that control the operation of CP 307 (i). SDP Mode Register 627 This register contains parameters that control the operation of SDP 420. Queue status 621 The queue status 621 indicates the status of the channel processor 307 (i) in the QME 305.
Read by the channel processor 307 (i)
Contains information about queue status. Channel processor 307 (i)
The hardware for the registers that indicate the status of the
Directly controlled. Therefore, the global bus 31 is read and written by the register.
No traffic will occur on 9. QME305 is a channel processor
The status of the queue read by the server 307 (i) is transmitted via the payload bus 317.
Then, DMA processing is performed on the DMEM 405. Event Timer 620 This register is set and started by software running in CPRC 401.
Includes event timer that is activated. When the timer expires, the RC 401
An event occurs to which the vent mechanism responds. Cycle Counter Register 619 The cycle counter register 619 stores a counter value, a clock division value,
Includes CC enable bit. The CPRC 401 has a counter value, a clock division value,
And the CC enable bit can be set. The clock division value is CPRC40
Specifies the rate at which the counter value increases relative to one clock. CPRC 401 is CC
Setting the enable bit starts the counter. CPRC401 is CC rice
Clearing the table bit stops the counter from running. The current counter value is
Unaffected by setting or clearing the CC enable bit. Event Register 631 This register is used to generate asynchronous events to which the CPRC 401 must respond.
Contains a flag indicating whether the There are two types of events:
The general event whose lag is in register 630 and its flag
Event related to data scope 625 in loop event register 632
It is an event. CPRC 401, along with all the registers described, has its local data
The data in the memory 405 can be accessed, and the SDRAM 229 and the local memory
Local memory between data memory 405 and SDP and SDRAM 229
Via 405, a DMA transfer can be set as described above. Details of an example of cooperation between the CPRC 401, the RxSDP 421, and the TxSDP 427: FIGS. 7 to 97 Stored in the memory interface between the RISC core and the SDP FIG.
How they can be programmed to interact when
Show. The flowchart 701 not only shows the operations performed, but also the RxSDP 421, CPRC
It indicates which of 401 and QME 305 performs the operation. Start at 703
The incoming packet is read by the RxSDP 421 (705). RxSDP421
What to do with what you read depends on the position of the material in the packet. Rx
There are three types of information that the SDP 421 must process. That is, the protocol
Data units and protocols that must be converted by TLE301
Information and protocol information that must be converted by the CPRC 401. Bob
As shown in the box 707, the RxSDP 421 uses the DMA to transmit protocol data.
When a unit is read, it is transferred to the SDRAM 229 via the DMEM 405. 7
09, the RxSDP 421 utilizes the ring bus 311 to
1 sends a message to TLE 301 with the protocol information
Attached. Finally, as shown in 711, the RxSDP 421 uses the excerpt space 601
Then, the information that the CPRC 401 needs to process the protocol information is transferred to the CPRC 401.
Send. In block 713, the CPRC 401 determines whether the information received from the RxSDP 421
Using the response received from the TLE 301 in response to the message of xSDP421,
Decide what to do with the transport packet. If the content has been destroyed,
Or the payload comes from a source that was dropped by the packet switch
Or the transport packet is invalid for any reason, the CPRC 401
Marks the packet and discards it. Mark (tray added during DMA
In response, the DMA engine stops transmitting and the BME 315
The buffer 231 receiving the packet is released. If the transport packet is valid, the CPRC 401 checks the information received from the TLE 301
Utilizing the information in the extraction space 601, the protocol / data
Determine the queue 215 for inserting the knit and create the descriptor 217 for the queue
I do. Next, at 751, the descriptor and the protocol data unit are
An enqueue command including the number of queues to be put on the bus 317
. The QME 305 places the descriptor 217 in the appropriate queue 215 to
Respond to queue commands. As shown in boxes 717, 719, 721
There are three broad ranges of queues depending on the components of the DCP 203 that read the queues.
There is a matrix. That is, the queue read by the XP processor 313 and the channel
A queue read by the processor 307 and a queue read by the organization processor 303
Column. For queues read by XP processor 313, corresponds to descriptor
The protocol data unit to go to host 227. Tissue processor 3
03, the protocol data corresponding to the descriptor
The unit proceeds to the switching organization. Here, RxSDP 421, CPRC 401 and QME 305 all operate independently.
Processor, the processing shown in the flowchart 701 can be performed in parallel.
Note that The pipeline between RxSDP421 and CPRC401 has already been
Explained. In addition, the CPME 401 determines that the QME 305
No need to wait for a response to a command. Role of Data Scope 625 in Interaction of CPRC 401 and RxSDP 421
FIG. 9 shows details of the reception data scope 643 in order to explain
You. Rx status register 6 indicating the status of the interaction between RxSDP 421 and CPRC 401
Start with 35. The register has four target fields. OWN field 9
35 is set by hardware. Bit is RxSDP421 or CPRC40
Either one uses the data scope 625 to which the Rx status 635 currently belongs
To indicate that L5: L0 937 is used to control RxSDP421 and CPRC40 under program control.
Six handshake bits set and reset by one.
Busy 941 is set by RxSDP 941, and RxSDP 421 is currently busy (used
Medium). The Tx status 639 has the same functions and contents as the Rx status 635.
You. The RxCB 633 and the RxSDP 421 and the DMA engine 441 during the DMA processing of the incoming packet
Governs the interaction between CPRC401 is the data score to which RxCB633 belongs.
RxCB 633 is set when owning group 625 (i), and RxSDP 421 sets RxCB6
33, the RxSDP 421 and the CPRC 401 are connected to the data scope 625 (i).
Continue DMA processing of incoming packets while changing ownership. Fee in RxCB633
Most of the fields contain various addressing information needed to perform DMA.
Information is included. Buffer pool number 909, BTAG 933 and offset 93
1 both write the packet that the DMA engine 441 is currently receiving by the RxSDP 421.
The position in the DRAM 229 to which data is written is specified. As described in more detail below, DRAM 229 is divided into buffer pools.
It is. BTAG 933 is a buffer tag 233 for buffers in the pool.
Offset 931 is the offset in the buffer where the data is currently written.
It is. When the DMA engine 441 writes data, the offset 931 is updated.
You. The DMEM DMA address 907 indicates that the DMA engine 411 is currently performing DMA processing on the DRAM 229.
This is the address of the 16-byte line of the data in the DMEM 405. Txrcy address
Address 903 and the Rxrcy address 903, the RxSDP 421 recirculates data from the DMEM 405.
This is a special address used for looping. Txrcy address 905 is TxSDP427
DMEM 405 line to which data is currently written by the DMA engine 441
Rxrcy address 903 indicates that RxSDP 421 is currently writing data.
Specify DMEM405 line. Therefore, the RxSDP421 uses these addresses to perform SDR
Before writing to AM 229 or after writing to SDRAM 229,
Can be circulated. RxSDP421 is the DMEM byte address 901
This is a line in the DMEM 405 where data is written. The RxDBCTL 913 is provided between the CPRC 401, the RxSDP 421, and the DMA engine 441.
Includes control and status fields governing the interaction: Avail 929 indicates whether RxCB 633 is available; NR 927 indicates data to DRAM 229 before
Indicates the number of requests to transfer the data; Error 925 indicates an error during the transfer currently represented by RxCB 933
Indicates whether or not an ODD has occurred; Own (ownership) 921 is written by RxSDP 421 and read by DMA engine 411
If the line in M405 is currently being written by RxSDP 421 or DMA
EOP917 indicates that the RxSDP 421 is a packet in the data written to the line in the DMEM 405.
Set by RxSDP 421 when the end point of the set indicator is encountered; ST 915 is the current status of SDP 420; BCTL status 919 is the current status of payload bus 317; and length 911. Is set by the RxSDP 421. This is written by RxSDP421
This is the data length of the line in the DMEM 405 that is running. The TxCB 637 is substantially similar to the RxCB 633, except that the DMA transfer
Proceeds in the opposite direction, and the fields have a meaning corresponding to that direction. Rx SDP 421 sets OWN bit 935, L2 Done 937 or L1 done 939 to Rx status
Setting the Avail bit 929 in the register 636 or the RxCB 633 results in
As a result, an interrupt to the CPRC 401 occurs. Which action caused the interrupt depends on Rx
Data scope entry for the scope that exists when SDP sets the bit.
Indicated by a bit in vent register 632. The same structure is used for Tx data
It is also used for the corresponding bits in the scope 641. First, the CPRC 401 sets the data scope 625 and gives the RxSDP 421 the ownership
give. CPRC 401 now owns data scope 625 (1). Pa
When a packet comes, RxSDP421 extracts the protocol data and extracts it
Write to register 601 (0). RxSDP421 is a protocol that requires conversion.
Sends a message including data to TLE301 in Txmsg 645 (0)
You. The collation result appears in the RxResp register 747 (0, i). While this is going on
, RxSDP421 is the protocol to the line in DMEM405 designated to RxCB633 (0).
Start writing the data unit. When the entire line is received, RxSDP4
21 sets the owner bit 935 to the Rx status 635 and the CPRC 401
Data scope 625 and the owner bit 9 in RxCB 633 (0).
Set 21 to indicate that the DMA engine 411 is reading the line that was written
To automatically switch RxSDP421 to data scope 910 (1)
To achieve. The RxSDP 421 then uses the data scope 625 (1) owner bit
Verify 935 to see if CPRC 401 still has that control
You. If the CPRC 401 has control, the RxSDP 421 transmits the next packet to the CPRC 401.
Wait until control of data scope 625 (1) is relinquished before starting processing
I do. Processing is performed by the RxSDP 421 instead of the data scope 625 (0).
Same as above except that the resources of scope 625 (1) are used. While the RxSDP 421 continues to work with the received data scope 625 (1), the CPRC
401 processes the received data scope 625 (0). CPRC401 is RxSDP
421 verifies and verifies the protocol data entered in the excerpt space register 601 (9).
And / or remove, verify RxCB633 and error in DMA processing on SDRAM 229
It is determined whether or not the processing has been completed without causing the RxSDP 421 to be used by the RxSDP 421 for the next use.
33 (0) is set. Next, the program that RxSDP421 put into the extract register 601
Protocol data and a variable received from the TLE 301 in the RxRsp structure 647 (0, i).
Create descriptors for data written to SDRAM 229 by using
The descriptor is stored in the mailbox of the channel processor 307 in the QME 305.
Put in. When all this is done, the CPRC 401 sets the owner bit 935 (0
), The receive data scope 625 (0) becomes available to the RxSDP 421 again
Set as follows. Owner bit 935 (1) is set and RxSDP421
When the work with the received data scope 625 (1) is indicated to be completed, the CPRC
401 is the same method as described for the received data scope 625 (0)
Then, work related to the reception data scope 625 (1) is performed. 803 Start 805 The data that the RISC core sends from the queue management engine via the local
FIG. 8 shows the CPRC 401 and TxSDP 427 when transmitting a stream of transport packets.
Is an overview showing how and interact. Outgoing packets are combined
Sending is much easier than receiving because you only need to send it and do not need to convert it.
You. Most of the work related to transmission is performed by the CPRC 401. Start with 803
The CPRC 401 first executes a loop 805. That is, receiving from QME 305
The channel processor 307 (i) checks the received queue status information and reads it.
It is checked whether or not there is a descriptor in the queue 217 that has been inserted. Shown at 807
CPRC 401, if there is a descriptor,
Queue command, which is also transmitted to the QME 305 via the payload bus 317.
Receive the descriptor. Next, the CPRC 401 is transmitted using the information in the descriptor.
The merge register 603 is set according to the need of the packet (811), and the
Set register in Tx control block register 637 using buffer tag
Then, the contents of the buffer are transferred from the SDRAM 229 to the TxSDP 427 (813), and the transfer is performed.
Start (815). If status 915 or EOP 917 indicates the end of the transfer, the CPRC
401 releases the TxSDP 427 and other resources used for transfer (817). TxSDP4
27 and CPRC 401 in the same manner as RxSDP 421 and CPRC 401
Corps 625 (0) and (1) are used alternately. The shift between data scopes
Because it is under the control of the program being executed by CPRC 401, the program
Allocates the resource represented by the data scope between TxSDP 427 and RxSDP 421.
You can do whatever you need to do so. Details of RxSDP 421: FIGS. 10 and 11 RxSDP 421 and TxSDP 427 are serial input 204 (i) and serial
Output 206 (i) and other components of channel processor 307 (i).
And a programmable interface to the channel processor 307 (
i). Thus, a particular input 204 (i) belongs to a particular protocol.
Media and transport packets as needed to adequately address
Specific output 204 (j) belongs to a specific protocol
It can be programmed to output media and transport packets. Each SD
P421 or 427 is a registry independent of its own microprogram storage.
Data set. FIG. 10 is a block diagram of the RxSDP 421. Component is a serial input
To parallel, first at the media packet level, then at the transport packet level.
A sequence of a processor and a FIFO that processes the input above the bell. Process
Some of the services are dedicated to address a particular protocol. The bypass path is
To allow data to bypass any processor and / or FIFO
Can be programmed. Overall, the components are:
Configurable physical logic 443 receives serial input from the physical layer and resolves it.
To generate a stream of 10-bit codes. A pin interface 204 (i) for receiving a 10-bit code from the physical layer
. Generate byte from 10 bit code received from pin logic 443 8b /
10b / decryption 1001.・ Small size FIFO that is asynchronous with different programmable read / write clocks
FIFO 1003. The write clock is at the frequency required for the input data stream
The movement and the read clock move at the speed of the CPRC 401. In the preferred embodiment, the FIFO
1003 has eight 9-bit word depths. An excerpt file coming from the small FIFO 1003 via path 1005 to the excerpt space 417
Pattern matching and fielding on a stream of bytes received with
Receive bit processor 1005 which performs a field extract. A received SONET framer 1007 that processes SONET frames. Of the data in the frame
Unscramble, remove protocol data from frame, and remove parity
Check and write protocol data to extract space 417 via path 1008
Put in. A synchronization processor 1009 for processing ATM cells. Discover cell boundaries and protocols
・ Return data, start TLE operation with protocol data, and
The rumble is released, and the protocol data is transferred via the path 1019 to the extraction space 417.
Write to. A large receiving asynchronous FIFO 1011 which is an asynchronous FIFO. In a preferred embodiment, the FI
FO 1011 is 64 bits word deep. FIFO 1011 is mainly used for VPI / VCI
Is used to execute ATM cells while TLE 301 is verifying,
Used to give the ket elasticity. • Operates under microcode control and patterns for 9-bit word data
A receive byte processor 1013 that performs matching and field extraction. The bypass path 1015 is connected to the MUXs 1002, 1006, 1014, and 1010.
Is constructed. The MUX 1010 also establishes a recirculation path 441. Bypass path
And the recirculation path is set by setting a bit in SDP mode 627.
, Can be set dynamically. Data is CPRC401 and bit processor
1005, between synchronous processor 1009 or byte processor 1013
, RxSDP control 613 directly. As described above, the channel processor 307 is integrated to provide very high speed data.
-Streams can be processed. When integrated, an integrated channel
The processor operates as one pipeline and each of the integrated channel processors
Sequentially process portions of the data stream. Coordination between integrated RxSDP421
Are implemented by token buses 1027, 1017, 1028. for example
For example, upon integration, the enabled Rx bit processor 1005
Incoming data stream only if it has a token provided by bus 1004
Does not perform system processing. RxSDP421 used to process the incoming stream
Some of the components vary depending on the type of input stream, so some talk
Bus is required. Details of Configurable Pin Logic 443: FIGS. 46 and 47 Configurable Pin Logic 443 can be configured in two ways: one, two, three or four of the SDPs 420 in the cluster Input stream to
And receive an output stream therefrom; and the medium through which either the input stream or the output stream is transmitted.
Works with the different physical interfaces required by the body. The first type of setting involves the integration of the channel processors 307 in the cluster 309
One of the elements that enables and processes high-speed input or output streams. No.
The two types of settings allow different transmission of the DCP 203 without adding a device outside the DCP 203.
The signal received from the medium can be used with a DCP2
Adapted for use with 03. Either type of setting is dependent on the channel processor.
Controlled by registers in local memory. The registers are
Set by the processor itself or by the XP 313. FIG. 46 shows that the cluster 309 in the DCP 203 has RMII, OC-3, DS1, DS3, GMII, and TBI.
And generate and generate serial data streams that comply with OC-12 standards.
4601 is a table 4601 showing how the settings are made. Column 4603 is
, List the I / O pins of each channel processor in the cluster; column 4605
Indicates the general purpose of the pin; therefore, I / O at each channel processor
Pins 0 and 1 are for clock signals, the remaining pins are for data
. The remaining columns show how the pins are used for each medium. Row 4607
Indicates pin usage in RAMII; 4609 indicates pin usage in OC-3
4611 indicates usage in DS3; 4615 indicates a channel in a cluster.
Receive data using two of the two
4617 illustrates the use of the GMII when the processor is used for transmission;
4619 shows the use in the TBI when the processor is used similarly;
Which channel processor changes between the transmitter and receiver
To be used. Various media require different types of drivers and receivers for I / O pins.
You. Therefore, each I / O pin in the settable pin logic 443 is a three-state driver, TTL
It has a driver and a PECL driver. For media such as OC-3 using PECL logic,
The pairs of I / O pins are set as different pairs as shown in column 4609. FIG. 47 shows the pin mode register 4701 and the SDP mode register 4713
And Each channel processor 307 has one of these registers.
I do. Register 4701 configures how channel processor I / O pins are configured
Decide what to do. Data Cnfg bit 4703 indicates that the I / O pin is a 3-state driver
, TTL driver or PECL driver
Is a bit. RxClk Mux 4705 and TxClk Mux 4707 receive and
And / or specify which pins are used to carry the transmit clock signal.
You. Rx Data Enable 4709 determines which pin is used to receive data.
Is specified. Finally, Tx Data Enable 4711 sends data
Specify which pins will be used to The SDP mode register 4713 can be any of the components of the RxSDP 421
Which recirculation circuit configuration is enabled and to which the channel processor 309 belongs
That control what kind of integration is currently employed within the cluster
including. A similar register exists for the channel processor TxSDP427.
I do. RxEn bit 4715 enables RxSDP 421 of the channel processor.
Indicates whether or not it has been Bit 4717 indicates that byte processor 1013 has
Indicates whether it has been enabled. Bit 4719 is bit processor 1
005 indicates whether or not it is enabled. Bit 4721 is the Rx Sonet framer
Indicates whether 1007 is enabled. Bit 4723 is the Rx synchronization processor
Indicates whether or not the service 1009 is enabled. The next two bits are for recirculation control.
Bit 4725 indicates recirculation to byte processor 1013
However, bit 4729 is recycled from extract space 417 to bit processor 1005.
Shows a ring. Integration mode field 4731 indicates that no integration is performed in the cluster
Or whether bi-directional integration occurs (ie, two channel processors
And two channel processors transmit) or four-way integration
Is specified (all four channel processors receive or transmit)
This is a 2-bit field. Building the Processor in the SDP: FIG. 11 FIG. 11 shows how the processor in the SDP is built. Details here
Is an Rx byte processor 1013, but the Rx bit
The same applies to the processor in the processor 1005 and the processor in the reception synchronization processor 1009.
You. Sonnet framer 1007 is constructed using a processor as shown in FIG.
Is a configurable state device. As shown in MUX 1107, the Rx byte processor 1013 has a large FIFO
An external input is received from 1011. The Rx byte processor 1013
23, a ring bus interface 415, an excerpt space 417 or a buffer
Provides an external output to the file 1025, which converts the protocol data unit to DMEM
405. Components built into Rx byte processor 1013
Include: • Contains microcode that processor 1013 processes,
By providing control signals (dashed arrows) that control other components
A control store 1101 responsive to the currently addressed microinstruction. Control storage
The unit 1101 is loaded by the XP 313. -Next address logic 1105. Control signal from control storage unit 1105 and condition code
MUX1121 and content addressable memory (CAM: content-addressable me)
mory 1117) is input to the next microcontroller executed from the control storage unit 1101.
Responds by selecting an instruction. A counter 109 and a general register 1115; The counter indicates that processing is currently taking place.
Track the bit position in the packet. 8-bit counter 1109 (0 ...
3), which are set as two 16-bit counters, and
As indicated by the input to the next address logic 1105 from the counter.
Specify the drive whose code depends on the counter value. General register 1115 is being processed
6 8-bit registers for storing data used for CAM (content addressing memory) 1117: CAM is used for pattern matching
Memory. Each cell in the CAM contains a pattern and is stored in the CAM cell.
CAM is presented with data that matches the pattern to be
Is output. Microcode specifies actions that depend on values output by CAM
I do. The CAM 1117 is loaded by the CPRC 401 or the XP 313. In CAM
Has 64 9-bit words and the CAM is programmed into up to 16 logical CAMs.
Can be divided into groups. The CRC 1111 is dedicated hardware for performing a cyclic redundancy check. Other specialty
Hardware is included for descrambling the packet. ALU 1119 is an 8-bit ALU with a built-in barrel rotator. As can be seen from the above, the XP 313 stores the CTL storage unit 1101 and the CAM 1117
Set Rx byte processor 1013 for operation by loading
. The CPRC 401 stops and activates the byte processor 1013 by a reset signal.
Start up. When the byte processor 1013 is set to start, each received byte
To the CAM 1117. If a match is found indicating the beginning of the transport packet, control
The process 1105 starts executing microcode to process the transport packet.
. The counter is set and the byte processor 1013 detects the CAM 117
Process the packet as indicated by the further match and the counter value. Match is
, Microcode, (pattern, mask, length) or (offset, pattern)
, Mask, length). However, the offset is
Offset within packet, mask specifies "don't care" bit
And length specifies the number of bits in the match. Protocol data from transport packets
Data is extracted and the extracted space 417 or the ring bus interface 415 is
Sent via path 1019 and the protocol data unit is transmitted via path 425
And sent to the 16-byte buffer 1025. From here, the protocol
Data units are DMAed to lines in DMEM 405. The excerpt is (offset
, Length, register address) in the microcode. Office
Again indicates the offset within the packet, and the length is the field to be extracted.
The register address is the length of the stored field.
This is the address of the register in the general register 1115 located in the register. Details of Rx Bit Processor 1005 Continuing with a detailed description of the functions performed by the components of RxSDP 421
, Rx bit processor 1005 is similar to Rx byte processor 1013.
However, the difference is that a linear feedback shift register is provided instead of the CRC 1111.
The linear feedback shift register can be set up to 32 bits long,
It has positions for polynomials and data streams. The linear feedback register is
Used to generate hash values or other checksums. Rx
The bit processor 1105 controls the buffer received by the RxSDP 421 at the lowest level.
Process a stream of sites. Because of this, HDLC frames and invalid sequences
STS frames in OC-3 data stream, detecting and eliminating padded zeros
To detect and delete the preamble of incoming Ethernet frames.
Be programmed. Details of Received SONET Framer 1007 The received SONET framer 1007 handles SONET frames. Framer 1007 is
Rx bit processor 1005 or directly via bypass 1015
Frame from the interface 204 (i). SONET Framer 10
07 is the physical layer interface connected to the pin interface 204 (i).
The received clock / frame synchronization signal recovered by the face chip and the frame
8 bit data included in the system. SONET frames are transport overhead.
And a synchronous payload envelope (SPE: synch
ronous payload envelope). Synchronous payroll for transport overhead
Contains the STS pointer pointing to the de-envelope. Synchronous payload envelope
The rope contains path overhead bytes. [0083] Received SONET framer 1007 descrambles the bytes in the SONET frame.
, Check parity, and extract transport overhead via path 1008
Write in space. The receiving SONET framer 1007 further interprets the STS pointer,
Discover SPE. When it finds it, Framer 1007 checks the parity
Then, write the path overhead of the SPE into the extract space. Payload in SPE
It is sent to another component of RxSDP421 as needed depending on the type of load.
You. For example, if the payload is an ATM cell, the reception synchronization processor 1009
Sent. In the preferred embodiment, the receiving SONET framer 1007
Do not demultiplex the code. Details of Reception Synchronization Processor 1009 The reception synchronization processor 1009 specializes in ATM cells. 53 cells for ATM cells
Is included. 5 bytes are virtual path indicator, virtual channel indicator
Data, payload type indicator, cell loss priority indicator, comprehensive flow control information
This is the header that contains the report and header error check bytes. 48 remaining
Is the payload. The reception synchronization processor 1009 performs header error checking.
Check applied sequentially to the 5-byte sequence, and the fifth byte in the sequence is
The header error check byte of the preceding 4 bytes in the sequence
That the byte stream is a stream of ATM cells
Is determined. If the header error check fails, the reception synchronization processor 1
009 continues the trial. If the header error check is successful,
Processor 1009 finds the ATM cell. Programmable number in one line
When a cell is found, it is synchronized with the ATM cell stream. Processor 1009
Causes a programmable number of consecutive header error checks to fail.
Indicates that the synchronization processor 1009 is not synchronized with the stream of ATM cells.
Until they are synchronized. When the reception synchronization processor 1009 is in synchronization with the ATM stream, the ATM
The header of the cell is dispersed, and the contents of the header are output to the extraction space. Receive synchronization process
The processor 1009 further descrambles the payload and attaches a status byte.
In addition, if the header check for a cell is bad, it can be discarded.
To further process the payload. Generally speaking, receive sync pro
The payload output from the processor 1009 proceeds to the large FIFO 1011. This FIFO
Performs TLE matching on VPI-VCI before further processing of the payload is required.
It has enough depth to allow it. Details of Receive Byte Processor 1013 Receive Byte Processor 1013 is programmed to perform several functions.
Can handle: • Handle HDLC escape sequences for PPP for SONET; • Includes frame check sequences for Ethernet and AAL5 3
Perform 2-bit CRC check; Channel processor 307 (i) is integrated with other processors to 1000BASE
-When processing XGigabit Ethernet, the receive byte processor 1013
Recognize Ethernet segmentation; receive byte processor using recirculation path
1013 integrates with other processors to handle T1 and T3 data rates
Can be. The recirculation path also handles multi-channel HDLC and encryption / decryption
To be able to The receive byte processor 1013, upon detecting the end of the frame,
Write in the excerpt space. The receive byte processor 1013 extracts VPI / VCI from the header of the ATM cell,
Retrieve messages containing virtual path indicators and virtual channel indicators
To the TLE 301 via the switching bus 311. TLE 301 is a channel processor
307 (i) for ATM streams with VPI-VCI combinations.
Respond to the message by returning a message stating the output queue. [0085] Receive byte processor 1013 processes 9-bit words. Its behavior
Has already been described in detail. Example of Component Cooperation In the following example, the pin interface 204 (i) of the RxSDP 421 is an optical cable.
It is assumed that it is connected to a cable. Payload data on this optical cable
Sent using SONET protocol. The payload data in the SONET frame is
A payload in an ATM cell whose ATM cell has a specific VPI / VCI pair.
Is an IP packet. The RxSDP 421 extracts ATM cells from the SONET frame, and
Programmed to process the ATM cells of The bytes from the SONET frame go first to the Rx bit processor 1005.
This processor sends the bytes to SONET framer 1007. Rx bit processor
The sensor 1005 also detects the start point of the frame, and receives a signal notifying the arrival of the frame.
Send to NET framer 1007. The receiving SONET framer 1007 descrambles
And performs parity check, and places the payload data in the SONET frame.
Place. The ATM cell payload goes to the receive synchronization processor 1009, which
Sessa detects the ATM cell, reads its header, and extracts the information in it.
Send to 17. Next, the ATM cell payload advances to the Rx byte processor 1013.
The processor 1013 sends the VPI / VCI pair of the ATM cell to the TLE 301 for conversion, and
Extract information from the header of the packet included in the payload of the packet into the excerpt space 417
Read. Details of TxSDP 427: FIG. 12 The TxSDP 427 performs the reverse operation of the RxSDP 421. That is, from the SDRAM 229
Receiving the protocol data unit, its destination and pin interface 2
06 (i) to the format required by the physical interface to which it is connected.
Add the protocol data needed to output the protocol data unit
. Again, the operation is hierarchical and the protocol data for the transport packet is
Is added before the protocol data for the media packet. FIG.
The details of TxSDP 427 are shown. The protocol data unit starts from DMEM405
A 16-byte buffer 1229 is reached via path 431. Buffer 122
From 9, the data unit is read by the Tx byte processor 1213
. The protocol data arrives from the merged space 419 via the path 429 and the Tx SONET
Framer 1207 and Tx bit processor 1205 and Tx byte processor
Proceed to 1213. The recirculation path to RxSDP 421 is at 441. MUX1206
1204 and 1202 construct a bypass path 1215. According to the integration path 1223
Specific TxSDP 427 integrates media protocol data with specific TxSDP 427
Added to the stream of transport packets generated by other TxSDPs 427
Can be. If a particular TxSDP 427 is part of the integration, the Tx byte processor
The output of the source 1213 is controlled by a token on the Tx byte token bus 1225.
Is controlled. The components of TxSDP 427 are similarly named for RxSDP 421
Similar to a component, but its function is to extract protocol data
Without adding protocol data to the protocol data unit stream
The difference is that As a result of the difference in functions,
There is no equipment to send the bus message. Tx status 639 and TxCB
637 is similar to the corresponding component of the Rx data scope 643,
In this case as well, there is a difference in the direction. By TxSDP ctl 615, CPRC4
01 can communicate with TxSDP 427, and the register for SDP mode 627 is bypassed.
Service path can be set. The components are as follows in the order in which the outputs are processed: Tx byte processor 1213 sends protocol data unit from DMEM 405
Program to read, insert, delete and swap fields
Is possible. Also, the Tx byte processor 1213 converts the ATM header into a protocol.
Adds a 48-byte chunk before the data unit and arbitrarily changes the cell contents.
Programmable to generate ATM cells by rumble.
Tx byte processor if there is no protocol data unit to send
Reference numeral 1213 generates an idle ATM cell. Large asynchronous FIFO 1211 has a depth of 64 words and a width of 9 bits,
It provides the resiliency needed for field insertion and deletion performed by the server 1213.
The FIFO 1211 is written at the core clock speed and is either core clock or serial clock.
Read at any of the al clock speeds. -The output of the Tx byte processor 1213 is the payload of the SONET framer 1207.
Generates a SONET frame that is a code. Tx bit processor 1205 is an intelligent parallel-serial
Processor. Under program control, this processor
Perform field insertion, deletion and replacement for Input data is 18
Output data, one bit at a time, depending on the physical interface.
It becomes 2 bits or 4 bits. Processor 1205 includes a general-purpose linear feedback shift
It has a register. • Small FIFO 1203: Data is written to this FIFO at core clock speed and
Read from here at real clock speed. FIFO is 8 words deep and 9 bits wide
It is. The 8b / 10b encoder 1201 performs 8b / 10b encoding of data. The processors 1213, 1207, 1205 are programmable and
It has the same general internal structure as the Rx byte processor 1013 described above. The cooperation of the components is illustrated with an example. This example uses the RxSDP421
The opposite is true. The input is a protocol data unit, which is an IP packet. Out
The force is a SONET frame with ATM cells as its payload, and the ATM cells
It has an IP packet as its payload. The IP packet is finally transferred to the SRAM 22
9 and DMA-processed to the DMEM 405 from there. ATM cells and SONET frames
The protocol data needed to form the is in the merged space 419. IP packet
Is read from DMEM 405 in 48 byte chunks. Tx byte
The processor 1213 creates an ATM header for each 48-byte chunk,
The originating ATM cell proceeds to the large FIFO 1211. From here, the cell is SONET Framer 1.
Read by 207. The SONET framer 1207 converts ATM cells into ATM frame packets.
Batch and add necessary SONET protocol data. SONET frame
The frame is then output to the Tx bit processor 1205, which
This is serialized and output to the small FIFO 1203. From here, the frame is Enko
The process proceeds to the mode 1201 and further to the pin interface 206 (i). Utilization of Channel Processor 307 in PDH Telephony Long-distance telephone service providers have been using digital processors to carry long-distance calls for many years.
I have used the digital trunk line. In such systems, calls connected by calls
The speech signal generated by the talk is digitized into one byte samples, and from many calls
Digitized samples are multiplexed on the main line with distribution information about the samples
Be transformed into Although the sample and its distribution information look like a very simple packet, this system
There is no hierarchy of packets in the system, and the relationship between the receiving port and the transmitting port is one.
It is fixed. As a result, a table lookup for the packet in SDRAM 229 is performed.
No loops, descriptor queues or buffers are required. Instead, the receiving channel
The processor 307 (i) communicates with the transmitting channel processor 308 (j) globally.
Taking advantage of the fact that they share the global address space, each sample is
It simply writes to the queue in the DMEM 405 of the processor 307 (j). Submit
The CPRC 401 of the side channel processor 307 (j) manages this queue. Integration of channel processor 307: FIGS. 13, 14 and 26-27 As described above, channel processor 307 has four channel processors 30.
7 clusters 309. Place channel processors in the cluster
This allows for faster speeds than would be possible with a single channel processor 307
These can be integrated so that they can be received or transmitted. Good
In a preferred embodiment, OC-12c and Gigabit Ethernet
-Send and receive protocols. The OC-12c protocol uses four channels in a cluster.
Two processors are used to receive data and the other two are
Can be used to send. Or use two clusters
, One for data reception and the other for data transmission. Gigabit
The Ethernet protocol uses two clusters, and the protocol
Therefore, four channel processors in one cluster are used for reception, and
According to the protocol, four channel processors in the other cluster are available for transmission.
Used. Integrating a group of channel processors to receive the protocol
Here, it is called reception integration. In response to this, a group of channels is used to transmit the protocol.
Integrating the channel processors is called transmission integration. In the reception integration,
Each of the channel processors receives all of the input from the protocol, but
Process only part. In transmit integration, each of the channel processors is
Part of the output of the
Output to the sending channel processor. Channel processor in cluster
Serial I / O pins are shared by all channel processors in the cluster.
Wired to receive input. Also, all channel processors
Setting the integrated channel processor to be controlled by the same timer
Is also possible. Finally, a token constructed as a signal in shared memory
To coordinate the operation of the channel processors in the cluster. Integration is a
By setting a configuration register in the channel processor belonging to the
Be executed. FIG. 13 shows details of an arrangement in which the integration can be performed in the preferred embodiment.
Cluster 309 (j) of four channel processors 307 (j, 0 ... 3)
Is illustrated. The inputs to the cluster are integrated as follows. Each channel
The processor 307 (j, k) has seven I / O pins CPP (0 ... 6) and has 28
A star I / O pin 1301 is provided. Cluster I / O pin 1301 (0) is the channel
The processor I / O pin 1303 (0,0) is the CLP 1301 (2).
(0, 1), and the CLP 1301 (27) follows the CPP 1303 (3, 6) in this order.
). The pins are CLP1301 (0), CLP1301 (7), CLP1301 (1
4), the input in one of the CLPs 1302 (21) is
, 0), 1303 (1,0), 1303 (2,0), 1303 (3,0)
Interconnected to be received by The output is the cell / frame shown in FIG.
Integration is performed via the integration path 1223. As shown, each TxSDP 427 (j
, I) is connected to the MUX 1208 of each of the other TxSDPs 427 in the cluster.
Therefore, one TxSDP 427 (j, i) is one of the other TxSDPs 427 in the cluster.
The output can be received from one of the large FIFOs 2122 and
The output can be processed in subsequent equipment. Specific RxSDP421 or TxSDP42
How S7 participates in the cluster is indicated by a bit in SDP mode 627.
Determined by setting. Each channel processor 307 selects one of the eleven clock inputs
It also has a clock MUX 1307 that allows Of the clock inputs
The external global clock inputs 1309 (0.7) are digital clocks.
This is for a clock external to the channel processor IC 203, and
Two of the powers, CPPGC 1311, are recovered by one channel processor
Is the global clock input provided to other channel processors.
One of the local clocks 1313 is a digital channel processor.
The clock is specific to the IC 203. Coordination of processing by the cluster of channel processors is performed by three sets of token links.
In other words, the TxSDP token ring 1225
The output from the Tx byte processor 1213 of xSDP 427 is adjusted. The token
Only the associated TxSDP 427 outputs to the large FIFO 1211. As shown in FIG.
, The device in the RxSDP 421 provides three token rings, namely
Ring 1027 for Rx bit processor 1005, Rx synchronous processor 1
Ring 1017 for R.017 and resource for Rx byte processor 1013
1028. RxSDP 42 with token ring enabled
Devices in 1 provide output only when they have a token. Which Token Lin
Is used depends on which devices in RxSDP 421 are enabled
. The tokens in the ring for TxSDP 427 and RxSDP 421 are TxSDP and RxSDP
Transmitted and tested by microcode executed by the DP. Channel push
The Processor Token Ring 1315 is provided by the channel processor in the integration.
Controls write access to global bus 319. Ring 1315
Only the channel processor that currently has a
Can be accessed for writing. Channel processor token
Ring 1315 is a cluster memo shared by the channel processors of the cluster.
It is constructed by the signal in 503. The integration is based on the arrangement of local and shared memories in the cluster shown in FIG.
More support. As a result of this arrangement, a cluster memory 503 is obtained. K
The raster memory 503 stores the channel processor (0. 0) in the cluster 309 (j).
.. 3) with a channel processor local memory 503 for each
. Each channel processor memory 503 (j, i) stores a serial data program.
A channel processor 307 (j, i) memory 1403 for the processor;
EM 405, bus control memory 1405, memory 1407 for CPRC 401,
, And a part of the instruction memory 403. Each channel processor 3 in the cluster
07 is connected to other channel processors in the cluster via the cluster path 439.
Access to each DMEM 405 can be performed. Other channel pros
There is a one-cycle wait time for Sessa's access to DMEM 405. Instruction memory
When the communication processor 203 is initialized, the instruction memory is shared IMEM 140
9 to be shared among all four channel processors
Can be. Or splitting between all four channel processors
Yes (IMEM403). When the instruction memory is set as shared IMEM 1409,
Each of the four channel processors in the raster has one cycle in a fixed
The access right to the shared IMEM 1409 is given once per file. Shared memory IM
The EM 403 allows the channel processor programmer or cluster thereof to
Separate channel processor at the expense of larger processor
To increase the flexibility of the device. Example of operation of integrated channel processor: FIGS. 26 and 27 When integrated channel processor handles Gigabit Ethernet, receiver
Is a cluster 309 (i) of four channel processors and the transmitter has four
Another cluster of channel processors 309 (j). FIG. 26 shows RxSDP4
21 (i, 0... 3) are set, and FIG. 27 shows TxSDP 427 (j
, 0 ... 3) are set. Both clusters 309 (i), 3
09 (j) indicates that one reception clock of the channel processor in the transmitter is
It is set to be the master reception clock for the master. Check the transmitter cluster
All of the channel processors have a Gigabit Ethernet clock.
Select the signal in the external global clock 1309. Within CP 307 of the cluster
Between the CPRCs 401 is performed by a signal in the cluster memory 503.
. RxSDP Integration: FIG. 26 As shown in FIG. 26, each of the RxSDPs has a decoder 1001 and an Rx bit
Processors other than the processor 1005 and the Rx byte processor 1013 are bypassed.
Is set to The decoder 1001 outputs a 3-bit synchronization loss to the CPRC 401.
Give force 2603. Receiving input by the Rx bit processor 1005
The output from the Rx byte processor 1013 is controlled by the
Controlled by token bus 1028. For this reason, the Rx bit processor
When the processing result of the contents of the small FIFO 1003 has a token,
1011 and the Rx byte processor 1013 similarly has a token
Only when this is the case, the processing result of the contents of the large FIFO 1011 is output. In the preferred embodiment, each channel processor has a token
Receive one frame of Gigabit Ethernet data and receive the frame
Pass the token to the next channel processor in the cluster and receive
Process the next frame. As already mentioned, one of the consequences of data processing is
Descriptor for data. The channel processor uses the global bus 319
To the mailbox 511 in the queue management engine 305 via
Command, and the queue management engine 305 queues the descriptor.
Responds to commands by Finally, it is built as a signal in shared memory
The token that is received by a particular channel processor in the receiving cluster
To the global bus 319 only when
Restrict access to global buses by buses. FIG. 27 shows how the TxSDP 427 (j, 0 ... 3) in the output cluster is set.
Or As shown in the figure, only the enabled part of TxSDP (j, 0 ... 3)
Is the Tx byte processor 1213, large FIFO 1223 and integrated path 1223
is there. The rest of the processing of the output stream is performed by TxSDP (j, 0),
Here, the Tx bit processor 1205 and the encoder 1201 and the Tx bit
Processor 1213 is enabled. A certain TxSDP 427 (j, k)
If there is a token on the bus 1225, its Tx byte processor 12
13 transmits data via a large FIFO and an integrated path 1223 to the TxSDP 427 (j, 0).
). TxSDP427 (j, 0) selects appropriate input in MUX1228
The input is then processed in the enable processor following the MUX 1208. In the setting 2701, each channel processor 307 in the cluster
Outputs a frame of bit Ethernet data. As already explained,
The channel processor 307 issues a dequeue command to the QME 305
To start transmission, and the protocol data unit of the frame to be transmitted.
Get the descriptor for the event. CP token ring 1315 is in the sending cluster
To ensure that all channel processors get the descriptors in the correct order.
Used. The channel processor in the transmit cluster uses the global bus 319
And the channel processor talks into the CP token ring 1315.
Only when it has a token, the queue management engine 305 is given a dequeue command.
Can be The channel processor stores a descriptor for the output data.
Once obtained, the Tx byte processor 1213 can begin processing data.
Can be. The data is transferred to the Tx byte processor 1213 by the token ring 13.
Tx byte processor 121 only if it has a token provided by
3 can be output. The output of the Tx byte processor 1213 is
Proceed to TxSDP (j, 0) via the path 1223 and output there. Again,
This arrangement allows certain channel processors in the cluster to try to output.
Frame, while the other channels in the transmitting cluster
The processor outputs the frame. The OC-12c cluster functions substantially the same as above, but within four clusters
Two of the channel processors are configured for receive and two are configured for transmit.
Is different. Token Ring is used as described above, but OC-12c is an ATM
Token Ring 11017 receives when used to transmit cells
It differs in that it controls a receive synchronization processor 1009 in the channel processor. Details of Execution Processor (XP) 313: FIG. 15 XP 313 is a general-purpose CPU for constructing a MIPS IV instruction set. This is a digital communication
Performs the following functions in the communication processor 203: Resets and initializes the DCP 203; Loads programs to channel processor 307 and organization processor 303
A set of parameters for the code and their operation; the translation table 20 used by the table lookup engine 301
9 and the registers in the table lookup engine 301
Handling of exceptions; running the real-time operating system of DCP 203; and interfacing with host 227, if any. The interface with the host 227 is the host 22 having a variable size window.
7 in the global address space 321 and the XP 313
Processing of packets received from or transmitted to the host 227 is also included. FIG. 15 is a block diagram of the XP 313. XP313 is a channel processor
It has many of the same components as 307. Like the channel processor, this
These are the ring bus 311, the payload bus 313 and the global bus 31
9 The basic processing element is the XP RISC core processor 1501,
This is a processor similar to the CPRC 401. Interface with ring bus 311
Base, two banks of local data memory 1507, 1508, payroll
Interface with the global bus 319 and the interface with the global bus 319.
There is a face 1513. DMEM1507 and DMEM1508 are both payload
Accessible via the bus interface 1511 and actually
A separate node on the load bus 315. Only DMEM1507 is global
Accessible via the network interface 1513. Channel processor
The interface of the XP 313 which does not exist in the server is a general-purpose I / O interface 151.
7, a PROM interface 1525 and a PCI interface 1523. life
The command memory has three components. That is, loadable instruction memory
1503, instruction read-only memory 1504, and XPRC 1501
Instruction memory loader 1 including a program to be executed to load EM1503
506. For code executed by XP RISC core 1501 and code execution
The data to be used is stored in SDRAM 229, and needs for XP RISC core 1501
Accordingly, DMEM 1507, DMEM 1508, and IMEM 1 are transferred from SDRAM 229 via DMA.
Moved to 503. Like the channel processor 307, the XP 313
Global address space 321 can be accessed. XP / CP setting register
1517 is a part of the global address space 321 in the XP 313. Details of Functions Executed by Execution Processor 313 Execution processor 313 sends a reset signal to each channel processor 307.
The chip received by the digital communication processor 203
Responds to a reset signal. When doing so, XP 313 will start executing the initialization code.
Start. The initialization code is PCI interface 1523 and global bus 3
17 has already been loaded into the SDRAM 229 or via a PROM interface.
Included in an optional external PROM coupled to face 1521. Initialization code
Shared for IMEM403 and cluster for each channel processor
A program that loads IMEM1409 and is executed by RxSDP421 and TxSDP427
And the setting information is loaded into the register in the global address space 321.
I do. When the digital communication processor 203 is initialized, the XP 313
Implements real-time operating system for communication processor 203
Support network monitoring protocols and are notified by the channel processor.
Handle exceptions. The XP 313 further controls the global address space 321
Using access, channel processor, organization processor 303, queuing pipe
The management engine 305 and the buffer management engine 315 are managed. XP313,
Using the interface with the ring bus 311, the table lookup
Manage the engine 301. A certain management function stores the conversion table in the conversion table 209.
Insert and delete file entries and another function manages the table of statistics. Strange
The ability to manage the conversion table 209 and the buffer management engine 315 is based on XP31.
3 gives the power to set the relationship between input and output ports in DCP 203
. If the host 227 is present, the XP 313 notifies the host of the global
Table that provides visibility into the local address space and that TLE 301 manages for it.
Files can be read. XP 313 is further received from host 226
Or as a packet transceiver for packets destined for it
Can work. For example, host 227 may use Internet Protocol
A node that may receive or transmit Internet packets.
XP313 is essentially a packet processor and a channel processor.
Operates in the same way as the above, except that the I / O interface is a PCI bus. Organization Processor 303: FIGS. 16 to 20 As shown in FIG. 3, the organization processor (FP) 303 is a digital communication processor.
The interface between the processor 203 and the switching organization 222 is managed. Switching organization 2
22 is used to communicate between several switching devices, such as a communication processor 203.
Used. FIG. 19 shows that a plurality of DCPs 203 (1.
3 (i) shows a method of coupling to the switching tissue 222. Belongs to DCP203 (i)
The packet received at the serial input (i, j) is
Is transferred to another DCP (k) through the exchange organization 222, and is received by the FP 303 (k) there.
And output at serial output 206 (k, l). The data moves within the organization 222 as an organization frame. Organization frame accuracy
The shape depends on the switching tissue, but the tissue frame is generally the part shown in FIG.
Has: The organization header 1803 indicates that the organization 222 is responsible for distribution and flow control within the organization 222.
The frame header 1805 inputs the organization frame 1801 to the organization 222.
Information that the source device gives to the destination device that receives frame 1801 from organization 222
The payload 1807 is the payload received from the network to the source device
And output to the network by the destination device. As will be described in further detail below, the tissue processor 303 may be configured to use different types of sets.
It can be programmed to handle woven frames. Suitable environment
For example, the tissue processor 303 generates a frame having a fixed length (FL1809).
Can be programmed to process. This fixed length is 32 bytes to 1
The range is 28 bytes. From the above description, the organization processor 303 is basically the channel processor 3
It will be clear that it has the same function as 07. However, the serial port
The input is received from the switching organization 222 and the output is transmitted to the organization 222. This
Differences have important consequences. First, the switching organization 222 has a serial input and
It receives a parallel input, not an output, and provides a parallel output. Input or
The width of the output depends on the switching system. In the preferred embodiment, the tissue processor 3
03 outputs data at 8, 16, or 32 bits wide per clock cycle.
Programmed to force. Second, organization processor 303 is faster than channel processor 307.
You have to process the data in degrees. One reason for this is that the input and output are serial
This is because it is not parallel but parallel. Another reason is that the switching organization 222 is
The organization processor 303 receives data from the switching organization 222
The speed at which data can be provided to the switching system 222 is the speed and speed of all devices.
And the processing capacity. To achieve the required operating speed,
The weave processor 303 is constructed as a pair of finite state devices. Finite state machine
In a preferred embodiment, it works with a tissue frame 1801 having the following characteristics:
The frame has a predetermined length; the data is preceded by a fixed length organization header 1803; the switching organization is multicasting with the destination bit mask in the organization header.
(Delivery of packets to two or more destinations simultaneously); congestion information can be extracted from the organization header by a simple state machine; and
And the first ancestral transmitter frame 180 in the sequence of the
The relationship of 1 is deterministic. Details of Organization Processor 303: FIG. 16 FIG. 16 is a block diagram of the organization processor 303. Channel processor
The general similarity to FIG. Channel processor 3
07, the organization processor 303 includes a payload bus 317, global
Coupled to bus 319 and ring bus 311; Therefore, SDRAM229
Send and receive protocol data units to and from the global address space
321 and a message is communicated with the table lookup engine 301.
Page can be sent and received. There are three main differences: Rx organization processor 1617 and Tx organization processor 1621 are 32-bit buses
Connected to organization 222 by 1619, 1623; organization control engine 1601 is a fully programmable RISC processor
Rather, two parameterizable state machines. That is, the organization processor 3
Rx organization control engine 1604 that processes frame 1801 received in
, Tx organization control for processing frame 1801 output from organization processor 303
Engine 1602; and organization control engine 1601 is a direct connection to queue management engine 305.
Units 1625, 1627, thereby via the global bus 319
Access to the queuing management engine 305 that has fewer temporary changes than possible access.
Gain access. The operation of the organization processor 303 is different from the operation of the channel processor 307 in general.
Is similar to By the switching organization 222, the organization frame 1801 stores the Rx organization data.
Receive in 8, 16 or 32 bit chunks in processor 1617
Be trusted. The Rx organization data processor 1617 outputs the headers 1803 and 1805.
It is separated from the payload 1807. Part of the information in the header goes to extract space 1613
Then, use by the Rx organization control engine 1604 becomes possible. Rx organization data
Processor 1617 uses other information to generate a message for TLE 301
create. The protocol data units are MUX1605, DMEM1603 and
D and the buffer 231 (i) in the SDRAM 229 via the payload bus 317.
MA processed. The Rx organization control engine 1604 uses the buffer 231 (i)
Tag 233, the header information in the extraction space 1513, and the Rx organization data
TLE 30 in response to a ring bus message sent by sesa 1617
1 for the protocol data unit using the information received from
The predicate 217 is created. Individual connection 1625 to queue management engine 305
, The organization control engine 1601 performs an enqueue operation for the descriptor. The transmission processing is executed by the Tx organization control engine 1602. Tx engine 160
2 is a matrix tube for a descriptor 217 that specifies the destinations that the switching organization 222 can reach.
The descriptor is read from the queue 215 held by the processing engine 305. Tissue processor
The server 303 reads the descriptor from the forefront of the queue. For each descriptor, the organization process
The server 303 sets the merged space 1615 using the information in the descriptor. this
Is the organization frame for the data specified by the buffer tag 233 of the descriptor.
Needed to create headers 1803 and 1805 for
Done by information. The organization processor 303 also stores the buffer
233, the payload bus 317, the DMEM 1603 and the MUX 160
5 from the buffer memory 229 to the Tx tissue data processor 1621.
Start DMA. Data processor 1621 stores information in merged space 1615.
The headers 1803 and 1805 are created using the
Create a payload using a data unit. Tx organization data processor
When the 1621 creates the tissue frame 1801, the organization frame 1801 is
, 16 or 32 bit chunks. Details of Rx organization data processor 167 and Tx organization data processor 1621:
FIG. 17 shows the Rx organization data processor 1617 and the Tx organization data processor 1
FIG. 621 is a detailed block diagram of FIG. Start with Rx Organization Data Processor 1617
Then, Rx organization data processor 1617 couples to input data bus 1619
Input FIFO 1708, organization header interpreter 1707, header
Payload separator 1703, payload FIFO 1705, header
A tractor and interpreter 1701. Payload FIFO 1705
Is coupled to MUX 1605 via bus 1616 and includes header extractor and
And the interpreter 1701 passes the path 1614 to the extraction space 1613
1616 couples to the ring bus interface 1611. Compo
Nents 1701, 1703, and 1707 are used for RxSDP421 and TxSDP427.
Built using the same kind of programmable microsequences
It is. The operation of the Rx organization data processor 1617 generally corresponds to the operation of the RxSDP 421.
, Except that serial-parallel data conversion is not performed. Off
The bytes of the organization frame 1801 received from the replacement organization 222 are stored in the FIFO 1708 first.
And the organization processor 303 and the organization 222 are
It can operate at a lock speed. The switching organization 222 is located at the end of the FIFO 1708.
Write, organization header interpreter 1707 from the front of FIFO 1708
Read. The organization header interpreter 1707 reads the organization header 1803.
Then, the selected portion of the organization header 1803 is output to the extraction space 1613. Processing
The next stage is the header payload separator 1703, which
-The header 1808 is separated from the payload 1807, and the payload is
05, from which the payload is DMA processed to a buffer memory 229. F
IFO 1705 is the payload until DMA access to DMEM 1603 becomes possible.
Is large enough to hold Next, the frame header 1808 is the header
Go to the extractor and interpreter 1701, where the header is interpreted
And extract information from the header to extract space 1613 and / or ring bus interface.
Output to the face 1611. The Tx organization data processor 1621 has three programmable components.
And two FIFOs. As with the Rx organization data processor,
The configurable component is constructed utilizing microsequences. Blog
The ramming-enabled component is configured by the organization control engine 1601 by the merged space 1615.
Generator 17 that generates frame header 1805 using the information entered in
09 from the header 1805 and the buffer memory 229 via the path 1620.
A Header and Payload Merge 17 with Merged Payload 1807
11 and an organization header 1803, which is stored in the frame 1801 by the switching organization 22.
And an organization header generator 1715 to be added to the frame 1801 before being output to
I can. FIFO 1717 provides different speeds for tissue processor 303 and switching tissue 222.
And the FIFO 1713 copes with the delay in accessing the DMEM 1603.
Gives the flexibility needed for. Setting of switching system using DCP 203: FIGS. 19 and 20 The organization processor 303 determines that the DCP 203
01 can easily interact with switching components that can send and receive 01
So that 19 and 20 show three of the many possible settings
. The setting 1901 indicates that some DCPs share one switching organization 222, but already have
Is described in detail. In setting 1905, there is no other switching organization,
Switching is performed by connecting the two DCPs 203 to each other via the tissue processor 303.
Is performed by Connect several DCP203 tissue processors to one bus
And transmits a DCP 203 to the bus to regulate access, such as a token ring.
Or extend such a system by providing other mechanisms.
Can also be. In the setting 2001, several DCPs 20
3 as well as non-D for line interface 2003 that DCP 203 does not address
CP logic 2002 is connected. With such a setting 2002, existing devices can be used.
Can be integrated into the switching system using the DCP 203. Table lookup engine 301 and translation table memory 207
Details: FIG. 21 to FIG. 24 As described above, the table lookup engine 301 uses the channel
From the processor 307, the organization processor 303, and the execution processor 313.
In response to the message received on the translation table memory 207.
Performs a lookup operation on the translation table 209 of
A ring bus message with the operation result is returned to the device. FIG. 21 shows details of the preferred embodiment of the translation table memory 207. Conversion Te
The cable memory 207 is a 64-bit pipelined bursting star.
Built using tick RAM modules. Memory 207 has eight tables
Sub-pool 2101 (0 ... 7). Table pools are
Can be further subdivided into different sized table entries,
All table entries in a particular table pool must be the same size
Must. Two of these table entries are shown in FIG. Sand
That is, the link table entry 2111 and the data table entry 211
9 Table pool 2101 is a more contiguous table entry
Sub-component table 2106. Figure 2 of these
21. That is, the link table 21 of the table pool 2101 (1)
07 and the data table 2117 of the table pool 2101 (7).
Each table entry is stored in the component table 2106 to which it belongs.
Has an index. For this reason, LTE 2111 uses link index 210
9 and the DTE 2119 has a data index 2114. component
Entries in the table 106 in the table 2106 have a table
Multiply by the size of the entry in the
The location is specified by adding the result to the location of the point. There are generally two types of component tables 2106. That is,
A link table and a data table. Which kind of component
Table 2106 is also used with keys associated with the data in the data table.
It is. For example, the translation table 209 identifies the VPI / VCI pair in the ATM packet header.
Queue in queue memory 213 that is to receive the ATM packet descriptor
It is converted to the number in column 215. The VPI / VCI pair is the key, and its position
The specified data table entry 2119 contains the queue number. Search al
The algorithm determines how to use the key in the translation table. Link
Table contains other index table entries or data tables
Contains the index of the file entry. This is the data table entry
It is used together with the converted key to specify the position of 2119. Link Te
The fact that table entries are used to locate other entries
, The link table entry 2111 contains the control information 2
113 and link information 2115 are included. The control information 2113 is the link information 2
With the key to be converted to determine which index in 115 to follow
You can. The exact nature of the control information 2113 and link information 2115 depends on the link text.
Is determined by a search algorithm of the conversion table 2109 to which the cable 2107 belongs.
. The data table entry 2119 stores the key 2120 and the data 2121
Including. If the key to be converted matches the key 2120, the
Data 2121 includes key translations, eg, queue numbers for VPI / VCI pairs. The conversion table 209 stores the search algorithm number 21 in the preferred embodiment.
25. The search algorithm number is the component in the conversion table.
Virtual table number 2127 for specifying the table 2106 and the conversion table 2
Algorithm Specifier 2 for specifying the type of search algorithm used with 09
129 are identified. The virtual table number is TLE30
1 decodes to table pointer 2105 for component table
The component table 2106 is identified by the number. Virtual table number
Channel processor and organizational processor
More component tables 2106 than table memory 207
And change the table pointer 2105 represented by the virtual table number.
One component table 2106 to another component table
To be exchanged with. For example, execution processor 313 may
Component tables can be built, channel processors and organizational
Sessors use a specific component table to determine the virtual table number.
The table pointer 2105 in the register in the TLE 301
Ring bus message with writereg command 2415 to change to
Just send a page and you can replace a specific table with a new table.
Wear. The specific conversion table 209 has a maximum of four component tables 2106.
Built from. One of the component tables is a data table 2117
The other table is the link table 2117. In FIG.
The translation table 209 shown includes two component tables:
There is a link table 2107 and a data table 2117. Component
The table is identified by its virtual table number in the translation table descriptor 2124.
Be identified. The conversion performed by the hashing algorithm uses the conversion table 209.
Can be seen as an example of how to convert a key into data. Hashing a
Algorithms are well known. It does this by replacing the bits of a long column with the bits of a shorter column.
Mapping to bits. In this case, the bits in the long column are the key,
The shorter column bits are the index of the table entry. Hashing
The algorithm is a conversion text that contains only the data table component 2117.
Cable 209. Data Table Component 2
When 117 is set, the data table entry 2119 stores the data for that.
Key is hashed, and the data table entry for that key is hashed.
Is indexed by the hash algorithm where possible (i
), Otherwise the first available following index i
Index is created. The key hashed to the index i is changed to a subsequent key (
Called i). When key (i) is provided to the hashing algorithm,
The algorithm returns index 2114 (i). DT corresponding to the key
If E2119 is at index 2114 (i), the search ends, otherwise
Hash collision, that is, two or more keys have the same index (i).
Thing. In this case, the DT whose key hashes to the same index (i)
Data table 2117 so that ES has an index following 2114 (i)
Is set, and as a result, the search algorithm uses the index 2114 (i)
Beginning with the key 2120 in the next data table entry 2119
Compare, key 2120 finds a key that matches the key, or does not match
If so, this is continued until the end point of the data table 2117 is reached. At the end
If it does, report no match. If you want a faster speed,
Set up link table with LTE for index 2114 where collision occurs
And apply an index to the linked table after a collision has occurred.
You. The link table indexes the entry corresponding to the index in the DTE.
Will be given a job. The table lookup engine 301 responds to ring bus messages.
In response, the search and maintenance operations relating to the search table 209 are executed. table·
The lookup engine 301 has a hashing algorithm, a binary trie
Algorithm (binary trie algorithm) and Patricia tri algorithm
Search using a variety of search algorithms, including the algorithm (Patrcia trie algorithm).
Do. Table maintenance uses lookups and table entry indexes.
Executed. In general, messages identifying table maintenance operations are
Provided from the server 313. Ring Bus Message: FIG. 28 All interactions between TLE 301 and other components of DCP 203
Via a message on the bus 311. XP 313 is a ring bus message
The packet processor sets and maintains the conversion table 209 by using the
The item to be converted is sent to the TLE 301 using the ring bus message, and the
Numeral 301 returns a conversion result using a ring bus message. FIG.
4 illustrates a ring bus message in a preferred embodiment. Message 2801 is
Has two main components, data 2817 and control 2803
. The data can be any type of 64-bit data. Ring Ba
If the message is addressed to TLE 301, data 2817 contains the TLE command.
Including. The TLE 301 executes the command and reports the result to the source of the TLE command.
Is returned in the data 2817 of the ring bus message delivered to. Control 2
803 has the following fields: M field 2805 is set by hardware and the message is 64 bits
Be included in the sequence of messages in consecutive slots.
• The TY field 2807 indicates the type of the message;
There are: Unoccupied: the ring bus slot does not contain a message; the message is an indication; the message is a confirmation; the message is a request; the message is a response. LEN field 2809 indicates the length of the message in data 2817; SEQ field 2811 allows the order of the response messages to be determined
The DEST field 2813 is a sequence number that can be set by the sender as described above.
Indicates the device; • The SRC field 2815 indicates the source device. The type of the indication and confirmation message depends on the link of the device connected to the ring bus.
Used to determine if the bus interface is functional
Not just. When a device receives an indication message from another device, it sends a confirmation message to that device.
Return the message. Equipment on the ring bus is used for other equipment
If an operation is desired, a request message is sent to the device. Other devices
Performs the action, sends the result back to the sender device using the result message
I do. As described above, the table lookup is executed by the table lookup.
The intended channel processor sends a request message of the request type and
In the channel processor, source itself and destination TLE301
To specify. Data 2817 includes a TLE command for the operation,
811 allows the channel processor to identify the response message
Is set to the value TLE301 executes the TLE command of the message and executes
By sending the result of the request to the channel processor in the response message.
Respond to messages. The result is in data 2817, where TLE uses itself as the source
, And also designates the channel processor as the destination, and SEQ2811
With the values in the di. FIG. 24 shows that the table lookup engine 301 connects the ring bus 311
Table lookup operation that responds when receiving a command via
This is a list of commands. Each command has a row in the table. The first row is a frame
The second column specifies its ID number, and the third column specifies the data it returns.
The fourth column shows the effect of the command. Table lookup is FindR
Command 2409 is executed, and the remaining commands are set in conversion table 209.
Configuration and maintenance, initialization of table lookup engine 301 and TLE function
Used for testing whether or not The command determines how the entries in the table are positioned and
Depending on the operation to be performed on the entry, it can be further subdivided. Key·
The command 2423 specifies the position of the entry using the key: The Find command 2405 takes the key and the algorithm number as arguments, and
Table 209 and the search algorithm specified by the algorithm number
Search data table entry 2119 for data entry 21
Returns the contents of 19 or an error if the key entry is not found
I do. • The FindW command 2407 contains the key, algorithm number, data to be written,
And the offset and length specifiers as arguments;
Search data entry 2119 related to key using algorithm and specify length
Entry starting from the position in the entry specified by the data length to be offset
Write to. FindR command 2409 takes the same arguments as FindW, but key entry 211
Read the data length starting from the offset from 9, and return it. The index commands 2421 and 2425 include a virtual table number and an index.
Use the index to locate the entry in the component table 2106.
Set. Commands belonging to the group 2421 include entries specified in the command.
Read data from the memory and write data to it. Top belonging to group 2425
The command changes the data of the entry specified in the command. Write command 2401 points to component table 2106
Specify the virtual table number to be specified and the entry in the component table
Specify the index, the data to be written, and the part of the data to be written
The mask, the offset to start writing, and the length of the data to be written are used as arguments.
Have Command 2401 writes data as specified in the command
No. The Read command 2403 has the same arguments other than the mask. This frame
Command is the data at the specified location in the specified entry in the specified table.
Read the data and send it back. The XOR command 2411 specifies the specified entry of the specified table.
XOR operation or CRC calculation using the data in the command
Execute In the case of CRC calculation, the CRC is returned. The Add (addition) command 2423 is a specified entry of the specified table.
Adds the data in the command to the data at the specified position in. The register command 2427 is transmitted to the TLE 301 by reading a register (2417).
Write (2415) is performed. Registers are specified by register addresses.
These commands are in the translation table, in the component table 106 and
The information required to locate the code of the search algorithm
Initialize, simply write context information to TLE 301 and read it. An Echo (echo) command 2419 simply returns the data in the command to the sender.
Send. This command is applied to the ring bus 311 and the ring bus in
Used to check whether the interface is functioning properly. A Nop command 2420 is a command that does nothing when executed. The TLE 301 executes the following basic loop: 1. Read commands from the ring bus; Execute the command; and3. Return the result via the ring bus. When the command is an operation related to a table, the next stage is executed in the execution stage of the command.
Includes: a) determining the index of the table entry; and b) the action indicated for the data at the specified location in the table entry.
Perform the work. For commands containing keys, the index of the table entry is
Determining includes the following steps: i. Convert the key to a first index value; ii. The key stored in the translation table entry specified in the index value
Remove; iii. If the key matches the retrieved key, go to step v; iv. If not, calculate new index according to search algorithm
Go to step ii; and v. Operate on the data stored in the table entry specified by the index value
Execute FIG. 22 shows the internal architecture of the table lookup engine 301.
Show. The ring addressed to the table lookup engine 301
A bus message is received at ring bus node 2201. In the message
Command is the command processor 2203 and the table lookup engine
Process 301. Information required for processing
Is stored in the register storage unit 2205, and the program for the algorithm is controlled.
It is stored in the storage unit 2215. FIG. 23 shows details of the register storage unit 2205 and the control storage unit 2215. Description
For this purpose, four types of registers of the register storage unit 2205 will be described. That is,
Algorithm setting register 2301, table setting register 2311, virtual table
File setting register 2341 and message context register 2319
is there. The algorithm setting register 2301 stores the algorithm used in the command.
Table 209 in the control storage unit 2215 and the hash code 23
23. For each of the tables 207 currently used by the TLE 301
Algorithm configuration register (ACR) 230
1 and the index of ACR 2301 (i) is the algorithm number 312
5 FIG. 23 shows one ACR 2301 (i). Specific ACR2301
Is the virtual table number of the component table constituting the table 207
Is included. LVT12325 is a virtual table for the first index table.
LVT22327 is a virtual table for the second index table.
LVT32329 is a virtual table for the third index table.
Table number. Finally, the DVT 2333 provides a virtual table for the data table.
Table number. HASHF # 2331 is a hash used for virtual table search.
Function number. The component table setting register 2311 stores the component table in the SRAM 207.
Describe the Nent table 2106. In each component table 2106
Is the CTCR 2311 (i), and the index of the table 2311 is that of the table
It becomes a logical table number 2343. Each CTCR 2335 has a table type 2
335, the size of the table entry 2337 and the table in the SRAM 207
Of the start point 2339 of FIG. Finally, the VTCR 2341 is currently used
Describe the virtual table that is present. Each table number 2127 has one VTCR 2341
VTCR 2341 (i) of a specific virtual table number has VTCR 2341 (i).
) Physical table of the component table currently specified by VT # 2127.
Cable number 2323 is included. Component represented by specific VT # 2127
To switch the event table, PT # 2 of VTCR2341 corresponding to VT # 2127
323 may be changed. The message context register 2319 stores the current table lookup.
Associated with the ring bus message being processed by the
Including data. There are four message context registers, TLE3
01 can process four ring bus messages simultaneously. Waiting method
Messages are stored in the input FIFO 2202 or on the ring bus 311 itself
Is done. FIG. 23 shows only one message context register, the message
Page context register 2319 (k) is shown. Each message
Context register 2319 has three types of data therein. Ie
, Message information from ring bus message 2321, table look
Generated and used during processing of a ring bus message within the up engine 301.
2329 including the processing information 2327 and the current processing result. Processing is over
When finished, the origin of the message whose result is processed in the ring bus message
Will be returned to The message information 2321 is transmitted together with the command type and the command.
The information that is attached, the processor that is the source of the ring bus message, and the message
Contains the sequence number of the message. The processing information 2327 includes the algorithm code 2
323 and the last link text retrieved by the search.
Table entry 2111 and the link table entry to be fetched next.
And the address in the SRAM 207 of the bird 2111. The result 2329 is
Contains information on execution results. For the FindR command, the result shows that the command is the key
Data that specifies to read from related data table entry 2119
, Or null if the data table 2111719 for that key is not found.
Value is included. Returning to FIG. 22, the components 2203, 2207, 2213, 2209,
2211 and 2219 are stored in the control storage unit 2215 and the register storage unit 2205.
Constructed by accessible processing elements. Component 2209
Is read from the table memory 207 via the SRAM memory controller 2217.
Component 2219 can execute the table memory 2
07 via the SRAM memory controller 2217.
Can be. Message destined for TLE 301 is on ring bus 311
And the ring bus node 2201 puts the message at the end of the input FIFO 2202.
The command processor 2203 reads the forefront of the FIFO 2202.
Command processor 2203 converts information from the message into a set of message
It is stored in the context register 2319 (i). This message context
The set of strike registers 2319 (i) indicates that the other components
Used when executing a command. The functions of the components are as follows: The initial index generator 2207 is a set of context registers 2319
Generate initial index of component table entry from key (k)
The address generation component 2209 calculates the component
Generates the address of the table entry and the component table entry
The compare and fetch register component 2219 includes a context register
Retrieve the key stored in the set of 2319 (k); SRAM data latch 2219 compares the retrieved key with the stored key
, Data table entry 21 for the key stored based on this comparison
It is determined whether 19 has been found. If found, the data table
And retrieve the ring bus menu with the contents of the data table entry.
Send the message to the output FIFO 2221; otherwise, the link table
Fetch the entry and place it in the context register 2319 (k)
Processing continues with index generation 2213; index generation component 2213 is retrieved with stored keys
Using the link table entry, the next table entry 2111 (1
), And the index is stored in the context register 231.
9 (k); the address generation component 2219 uses it to
Generate the address of a table entry. Take a ring bus message including the findR command 2409 as an example, and
If alg # in the command specifies a hashing algorithm, the command
The processor 2203 is in the context register 2319 (k) for the message
When the message information 2321 is set in the
Execute the hashing algorithm with the key from the command to obtain the value l. Ad
The address generation 2209 uses the l to generate the data table entry 2119 (l).
The address is calculated, and the SRAM data latch 2219 takes the entry 2119 (l).
Start. If the key field 2120 contains a key, a search is performed and the SR
AM data latch 2219 contains a data field containing data in data field 2121.
Create a response bus response message. Otherwise, index generation 221
3 increments the DIX 2114, and the address generation 2209 sets the address of the next DTE 2119.
Generate the source, retrieve it, and perform the above test. Its key fields
If a DTE 2119 whose 2120 matches the key is found or the data
Execution continues in this manner until the end of the bull is reached. Other Uses of the Table Lookup Engine 301 As will be apparent from the presence of the XOR 2411 and Add 2413 commands, TLE
301 can do more than maintain a table and verify information in it. Pake
Each processor has a certain maximum waiting time for the TLE 301.
In general, TLE301 and conversion table
Incoming packets being processed by the packet processor using memory 207
Can store and process contextual information about
And the relatively small amount of DM that the packet processor can use
The constraints imposed by EM 405 can be overcome. To perform address translation
The information required for is one example of such context information. In addition, another package
Information needed to verify the correctness of the packet transmitted as the payload of the packet.
There is information. The verification of the correctness of the packet is performed by checking the cyclic redundancy code (CRC: cyc
lic redundancy code). CRC is used when creating a packet.
When the packet arrives at its destination, the CRC is recalculated and the packet is
Compared to the CRC included in the packet. If they are the same, the packet is
There is a very high probability of arriving without being returned. If not, the packet has been forged
The likelihood is equally high. In the latter case, the packet is dropped and the packet retransmitted
A message requesting attachment is sent to the sender. SDP 420 is in the incoming packet
Check the CRC of the packet and provide the CRC of the outgoing packet.
Must be able to calculate the CRC of the When a packet is received or output
Many algorithms are known for calculating the CRC during processing in the event that
. As is clear from the above, to calculate the CRC in SDP 420, the packet
CRC information must be maintained for the entire duration of the packet as it passes through SDP420
It is said. The packet for which the CRC is being calculated is smaller than the payload in the transport packet.
Pay for payloads that are high-level packets and belong to different high-level packets.
A transport packet carrying the load is transmitted to or received from SDP 420.
The problem becomes more complicated when pinched by a stream of packets. like this
In such cases, a separate CRC calculation must be performed for each high-level packet.
No. In the DCP IC 203, the problem of calculating the CRC is to process an intermediate result using the TLE.
It is solved by storing. The higher level packet that is calculating its RC
As each part of the packet passes through the SDP, the CPRC 401
Gather the information needed to calculate the CRC between
Link with commands that specify how to apply to the previous intermediate CRC of the
Send a bus message to the TLE 301. The last part of the high-level part
The last ring bus message with that information is sent and TLE3
01 executes the command to complete the CRC calculation. Next, the CPRC 401 reads the result.
Send a read command 2403 to determine whether or not the packet has been falsified
Bus message that TLE 301 sends to the end of the packet with the result
Compare the results returned in the page. [0133] The packet stream context can be stored using the TLE 301.
Another area that can be identified is traffic figures. These numbers are
In response to a ring bus message from the
Can be read by the execution processor 313 and executed by the execution processor 313 or
On the network to which the DCP 203 belongs.
Thus, the DCP 203 can be set according to the current traffic requirements. Details of the queue management engine 305 The queue management engine 305 waits according to the specification by the packet processor.
Descriptor 217 is placed in column 215, also according to the specification by the packet processor.
Fetches the descriptor from the queue. When the packet processor works alone
Usually puts descriptors in two or more queues and takes them out of only one queue
Not issued. When the packet processor is integrated, all packets to be integrated
The processor typically reads from one queue. QME305 is
Status information about the queue itself, involved in other enqueue and dequeue operations
To the packet processor. QME 305 reads the queued descriptor
Or the particular packet processor decides which queue to take next.
Not specified. The queue is stored entirely within the DPC 302 and includes
And / or stored in external queue memory 213 or external queue
Stored and managed in the logging and scheduling unit. In the latter case,
QME 305 sends enqueue and dequeue commands to the packet processor
To the external queuing and scheduling unit for command
Return the results and status information to the packet processor. In this case, the queue is
The method used is, of course, the external queuing and scheduling unit.
Completely dependent on. [0134] The contents of the descriptor are the packet pro- cessor that sends the descriptor to the QME 305 and enqueues it.
The descriptor is completely determined by the processor and the contents of the descriptor
Note that it is fully interpreted by the packet processor. For this reason,
QME 305 is a packet belonging to a switching system in which DCP 203 is one component.
Message transmission between the packet processor and the packet processor
Transfers information to and from the queuing and scheduling units of the department
It is a general system. FIG. 29 shows the QME interface 2 for the channel processor 307 (i).
901, the other packet processors also have the QME3
It has the same interface except that it has its own private connection to 05. QM
Starting from the interface part inside E305, the local
Memory is, of course, part of the global address space 321, and
7 (i). Waiting in the local memory of QME305
Column status information 2902 is included. As shown in more detail below, queue status information 2
902 causes channel processor 307 (i) to determine which wait in QME 305.
Retrieve the descriptor in a matrix and determine its queue status. For this reason,
The CPRC 401 of the channel processor 307 (i) accesses the QSI 2901
, You can determine which of the queues will take the next descriptor.
Wear. For each of the packet processors, a queuing mailbox
Box 2903. CP3 to put or remove descriptors on the queue
07 (i) transmits a queuing command 2913 through the payload bus 317 to the CP 30
7 (i) to the QMB 203. In response to the dequeue command, QME 305
The dequeue message 2907 is transferred via the payload bus 317 to the CP 307 (i
). The dequeue message 2907 contains a description
Retrieves the predicate and the protocol data unit and descriptor that it represents
And information on the state of the queue that has been placed. QME 305 also
Using the spare cycle in the val bus 319, the queuing status report (BQSR
: Queue status reports) 2915, the queue corresponding to the packet processor
To the individual packet processors involved in These reports are
Which queues the processor has been emptied of, and no longer empty
Let me know. These reports provide the local address of the packet processor.
Queue status report (RQSR: receive) of the queue status register 601 in the
ived queue status reports) 2915. Finally, CP307 (i)
Has a queue operation status register, in which the QME 305
Two bits indicating the status of execution of the last queue command received are included. Four
Possible situations are: • executed successfully and / or idling • failed • in use, waiting to start command execution • in use, command execution by QME. Assuming that the CP 307 (i) performs both reception and transmission of a packet, usually,
The source is used as follows: a descriptor for the received packet is created and dequeued.
CP 307 (i) obtains the information necessary for
Is set, the enqueue command is sent to the QMB 2903 of the CP 307 (i), and the QOS
Check 2911 to make sure the mailbox is not in use,
-Start DMA to send command. Descriptor enqueuing operation like this
RQSR2915 is checked periodically, and the
Determine if any of the matrices are not empty. Non-empty
The CP 307 (i) is exactly the same as described for the enqueue command.
Send the dequeue command in the same way. QME305 is decued with DEQM2907.
In response to the command, CP 307 (i) uses the descriptor contained in DEQM2907.
And sends the packet it represents. Using other information included in DEQM2907
Schedules the transmission of the packet represented by the descriptor, or
You can update your own copy of the state. CP 307 (i)
Without accessing the QME 305 portion of the dress space 321,
Be able to do all of the above without burdening bus 319
Please pay attention. Of course, CP 307 (i) tries to write or read
If you need more information about the status of your queue, access QSI 2902
Can be Details of Queue Command 2913: FIG. 30 In the preferred embodiment, the packet processor tells QME 305 the following:
It can be instructed to perform four operations: queuing; putting a descriptor in the queue (enqueue); removing a descriptor from the queue (dequeue); Put the descriptor. Commands related to these operations are transmitted via the payload bus 317 to the QME 30.
5 is sent. Transactions on payload bus 317 have two parts
There are: addresses and data. Queue pieces related to a single queue
In commands, addresses are used to specify operations and queues. This to 3001
Show. Count field (CNT) 3003, transaction number (T #) 3
005 and a pool identifier (PI) 3007
Common to load bus addresses. CNT 3003 is read by transaction
T # 3005 specifies the number of 16-bit quantities to be written or written;
Differentiate transactions to a specific destination by one source; PI 3007
, Buffer pools in BME 315 or buffer pools executed by BME 315
Pool reserved for tagging and queuing performed by QME 305
Specify the destination of one of the numbers. Address where PI3007 specifies QME305
Then, the address further includes an operation specifier 3009 for specifying one of the above operations.
For operations related to a single queue, the queue number 3011 is also included.
. The content of the data portion of the command changes depending on the command. Queue setting command
, The data 3013 is the queue specified in the address 3011
The maximum number of descriptors 217 that can be included in 3015 and the description in 3017
The descriptor pool in the QME 305 from which the child is fetched, and the
A descriptor allowable value 3019 that specifies the number of descriptors 217 not used is specified. Waiting
The queue setting command causes the packet processor, which reads a specific queue, to
The amount of resources allocated to the queue can be changed dynamically in response to changes
. For example, the channel processor 307 transmitting from the queue may output the corresponding output port.
When a traffic burst occurs for a channel, the channel processor 3
07 increases the maximum number of descriptors or descriptor allowed values using the Queue Set command
And at the end of the burst, the channel processor 307 sends the descriptor
And / or the maximum value of the descriptor tolerance can be reduced. For the unicast enqueue command, 2-word data 3021
There is. The first word contains a descriptor weight 3023, which is queued
The amount of data in the DRAM 229 represented by the descriptor is specified. The second word is the finger at 3011
Includes a queued descriptor 217. About the dequeue command
Also has data 3025 of two words. The first word is the description taken from the queue.
The descriptor weight of the predicate 3023 and the total number of descriptor weights of the descriptors still in the queue
A queue weight 3027 and a queue length 2039 which is the number of descriptors remaining in the queue
And The second word is a descriptor taken from the queue specified by 3011
217. A packet processor that receives the descriptor 217 extracted from the queue.
The Sessa uses the information in the first word to queue the processor
From which of them the next dequeue command is issued, or
Issues a queue setting command to change the amount of resources available for use
be able to. The address part is indicated by 3031 and the data part is indicated by 3035.
A multicast enqueue command is issued by two or more packet processors.
Queue the descriptor for transmission. Address part 3031 and address part 3
The only difference from 001 is that the queue level
(QLEV: queue level) field 3033. Queue level
• Field 3033 contains the maximum number for the queue that is to receive the descriptor.
Specify a minimal service or priority level. Command data part 303
5 in the first word indicating which packet processor outputs the queue,
A multicast vector (MCV: multicast vector) 3707 is included. No. 1
The code also includes a descriptor weight 3023 for the descriptor 217 in the second word.
As the data in the command indicates, the multicast enqueue command is
Specify a packet processor and service level instead of a specific queue, and use QM
E305 specifies the specified packet with at least the minimum service level.
The processor places the descriptor 217 in the corresponding queue. The descriptor is actually
Not all queues are copied. This is discussed in more detail below.
I will tell. Receiver sending multicast enqueue command to QME305
The packet processor of BME 315
-A command to set the BT233 counter specified in the command descriptor
Send it. The sender's packet processor uses the multicast
Receives the queued descriptor (shown) and is designated in the descriptor BT233
Each time a PDU is transmitted, the transmitting packet processor counts the BT233 counter.
A command for decrementing by 1 is sent to the BME 315. Details of the Queue Data Structure: FIGS. 31 and 32 FIGS. 31 and 32 illustrate the buffer management engine 305 in the preferred embodiment.
Shows details of the data structure for constructing the queue 215. Features where DCP203 is adopted
Depending on the number and size of queues required for a given situation, the data structure
Are all in the memory inside the DCP 203 or the queuing control data structure is
In the queue memory, the queue itself is in the queue memory 213, or
All queue data structures are in the queue memory 213. Queue 215 is a linked list of descriptor records 3111. All
Descriptor record 3111 is the same size, but its size is
Is set by parameters. The descriptor record contains a plurality of descriptor pools 3109 (
0 ... q), and the size and number of pools are
Depends on quantity. Descriptor records 3111 belonging to a specific queue all have one record.
Must be from predicate pool 3109 (i). In each descriptor record 3111
Contains at least the following fields: • In-use count (IUC) 3139, the descriptor is currently in
Indicates the number of queues to be queued; and • next pointer (NPTR) 3115, keeps track of the next buffer in the queue.
Point. Descriptor sends information about buffer 231 from receiving packet processor
Descriptor record 3111 if used to communicate to the side packet processor
Also includes the following items: Descriptor weight (DW) 3137, Descriptor buffer tag
Indicates the size of the buffer represented by 233; and the buffer tag (BT) 233 and the buffer of the SDRAM 229 represented by the descriptor.
This is a buffer tag for the buffer. Alternatively, the contents of the descriptor 217, and thus the descriptor record 3111, may be
Determined by the source packet processor. For example, the originating packet
Stream where the Sesser is the final destination of the packet is multiple Ethernet nodes
The packet processor in the Ethernet
If the sending packet processor outputs packets to the LAN to which the card belongs
The descriptor 217 contains the buffer specified by the buffer tag 233.
Will contain the Ethernet address of the packet created from the content. Figure
Reference numeral 31 denotes a multicast list record (MCLR) 31
23 pools 3121 are also shown. As explained in more detail below, this
These records are used in multicast. Each queue 215 is represented by a queue record 3103 in the queue list 3101.
It is. The queue list 3101 is a buffer list of the global address space 321.
Processing engine 305, and consequently by the packet processor.
Is read. The queue number 3105 of the queue is its queue in the list 3101
This is an index of the column record 3103. Queue list 3101 contains section 3
107, and each section transmits a packet.
About Sassa. All queues for a particular packet processor are listed 310
In a contiguous set of queue records in section 3107 of one packet processor
Is represented by Setting information in the QME 305 part of the global address space 321
The report contains the base of each packet processor section of the queue list 3101.
Contains address 3108 and the number of queues read by the packet processor
You. As a result, the packet processor knows which queue is which packet processor.
The queue number, the queue record 310
3 can be found. The queue list 3101 is further provided by the QME 305.
Broadcast queuing on which queues a particular packet processor
Used to determine whether to receive a status report 2915. Each queue record 3103 contains the following fields: head pointer (HDPTR) 3113, the front of the queue for recording
Points to the descriptor record 3111 currently present in the record; tail pointer (TPTR: tail pointer) 23113;
Queuing length (QL) 3129, the descriptor record in the queue of the current record
3111 number; ・ Total descriptor weight (TDW) 3131, in queue of record
Sum of the values of the DW fields 3137 of all the descriptor records that have been allocated; ADA: allocated descriptor allowance (ADA) 3133, waiting
A number greater than the number of actual descriptors in the queue allocated to the column; and a queue length limit (QLL) 3135,
specify. The ADA 3133 and the QLL 3135 provide a pool 3809 which is a source of a queue descriptor.
Together with the queue setting command. FIG. 31 shows one queue 215 (0). The queue 215 (0) is a descriptor notation.
Record 3111 (i ... k), and the descriptor record 3111 (i) is at the forefront of the queue.
Therefore, it is indicated in the HDPTR 3113 of the QR 3103 (0), and the descriptor record 311
1 (k) is at the end and is shown in TPTR3117 of QR3103 (0). descriptor
After record 3111 (k), the link descriptor of allocation descriptor record 3111 (q ... t)
The strike 3119 follows. These descriptor records are assigned to queue 215 (0).
However, since it follows the end of the queue 215 (0), it is not part of it. ADA
Field 3133 is a descriptor description that can be included in linked list 3119.
Determine the maximum number of records. When the queue 215 (i) is initialized by the queue setting command, the QME 305
Sets the linked list 3119 of the allocation descriptor record 3111 and sets the head
Counter 3113 and tail pointer 3117 are the first entry in link list 3119.
The queue record 3103 (i) is set to point to the predicate record 3111, and the QL fee is set.
Field 3129 is set to zero. When the QME 305 executes the operation, the QOS register 2
Let 911 mark the situation. The enqueue command is sent to the queue 290 of the packet processor.
3, the QME 305 retrieves the descriptor 217 in the command and
First descriptor record 311 of list 3119 belonging to the queue specified in the command
1, the QL 319 is incremented, and the descriptor record 3111 is written in the descriptor
Record 3111 is updated to point to TPTR 3117. In link list 3119
If there is no descriptor record 3111, QME 305 returns the number specified in ADA3133.
To the strike. Also in this case, the QME 305 operates using the QOS register 2911.
Indicate the situation. Queue of queue 215 before descriptor 217 is queued
If the length is 0, QME 305 broadcasts 2
905 is the queue's packet processor indicating that the queue is not empty.
Send to When a dequeue command is received, the QME 305 sets the head pointer 3113
To locate the descriptor record 3111 at the forefront of the queue, and from there
The descriptor 217 is read, the head pointer 3113 is updated, and the next
Descriptor record 3111 of the file. Also, than allowed by ADA field 3113
If fewer descriptor records 3111 are in list 3119, the previous head description
The child record 3111 is added to the list 3119. Also in this case, the QOS register 291
1 indicates an operation status. The descriptor 217 is returned in the return data of the command.
You. If the dequeued descriptor is the last one in the queue, QME30
5 sends BQSR 2905 indicating that the queue is currently empty. Multicast enqueue operation and dequeue operation: FIGS. 32 and 33 As shown in the description of the queue command, the multicast enqueue command
Allows one descriptor to be used by more than one sending packet processor.
Thus, it allows the packet processor to queue. FIG.
4 illustrates a method for implementing a multicast enqueue operation in a preferred embodiment. Waiting
In addition to the queue in the queue list 3101, the queue management engine 305 has one queue.
The multicast list 3201 is maintained. QME 305 is a multicast
The descriptor 215 received in the queue command is stored in the multicast list 32.
01 in the descriptor record 3111, and the descriptor is the protocol indicated by the descriptor.
All packet processors that are to send
It remains in the multicast list 3201 until it does so. Continuing with the multicast list 3201, this
Represented by a multicast list record 3203 pointing to the first DR 3111 (g) of the
It is. The packet processor still has the protocol data in descriptor 215
DR3 in list 3201 representing the descriptor 215 to which the unit must be sent
111 has one or more multicast list records 3123 associated with it.
You. The multicast list record 3123 relating to the DR 3111 contains a pointer
The strike 3209 is stored. The pointers in the multicast list 3201
Pointer to next DR3111 and to DR311 in unicast queue
Pointers. FIG. 32 shows the pointer of DR3111 (h) in detail. DR3111 (h
) Is placed in the queue by the multicast enqueue command.
As a result, the descriptor 215 is placed in the unicast queue 215 (i), 2
15 (j). For this reason, the DR 3111 (a) in the queue 215 (i)
NXTPTR 3115 of DR 3111 (h) of multicast list 3201
The same applies to NXTPTR 3115 in DR 3111 (k) of queue 215 (j).
. NXTPTR3115 of DR3111 (h) is the first MCLR for DR3111 (h)
Refers to a certain MCLR3123 (r). MCLR3123 (r) has three pointers
. That is, one is a pointer 3211, and the pointer 3211 in the multicast list 3201.
It points to the next DR3111 and the other at 3212 in the queue 215 (i)
11 (h), the third is 3213, DR3 in queue 215 (j).
MCLR 3123 (s) having a fourth pointer 3214 to the DR following 111 (h)
). FIG. 33 shows details of the MCLR 3123. Each MCLR3123 has two queue points
And a queue number (3203) and a queue number (3203).
A next pointer (NPTR) 3205 for the next designated DR 3111 (h);
A next MCLR pointer (NXTMCLR) 3213 that points to the next MCLR for 111
You. To the first MCLR for a particular DR 3111 in the multicast list 3201
, The first QPTR 3301 points to the next DR 3111 in the multicast list
. As can be seen from the above, the DR 3111 (h) is assigned to the preceding DR in each queue 215.
3111 directs the DR 3111 (h) to the MCLR 312 for the DR 3111 (h).
3 by including a pointer to the next DR 3111 in each queue.
It can be a DR in the unicast queue 215. Multicast Enki
The view operation is thus a DR operation on the descriptor 217 placed in the list 3201.
Add 3111 and decide which unicast queue 215 descriptor 217 to put in, depending on the need for unicast queue 215
MCLR3123 is added, and the leading DR31 in the unicast queue is added as shown in FIG.
11 and the tail pointer in the unicast queue 215 is
Set to point to DR3111 in the multicast list and use count 313
9 to indicate the total number of unicast queues with descriptors 217
That is. Unicast queue follows DR3111 in multicast queue
When the DR3111 is queued, the NPTR3205 is transferred to the QPTR330 in the MCLR3123.
Set to 1 to indicate the newly added DR3111. Which Unique QME305
The method for deciding whether to include a descriptor in the last queue is described in more detail below. A dequeue operation by the DR 3111 in the multicast list 3201 is as follows.
Proceed as follows. As long as the busy count is greater than 1, the dequeue operation is multi-key.
Functions as described for DR3111 not on the cast list 3201
However, each dequeue operation decrements the busy count by one and a new tail DR3111
NPTR 3115 is set from NPTR 3205 of QPTR 3301 in the unicast queue.
The only difference is that If the in-use count of DR3111 is 1, dequeue
The operation further sets the use count of DR3111 to 0, and sets its NPTR31
15 is set to point to the next DR 3111 in the multicast list and its MC
Return LR3123 to the free list. Selection of unicast queue in multicast enqueue operation The multicast enqueue command specifies the queue in which descriptors are placed.
Not determined, queued with sending packet processor (MCV field 3037)
Specifies the service level (QLEV3033). specific
Means the queue or service level of the packet that is reading the queue.
It is entirely determined by the manner in which the processor is programmed. Multicast
When executing the enqueue command, the QME 305
Must be converted to a queue number. This is the queue number map shown in FIG.
Performed by ping table (QNMT: queue number mapping table) 3303
Is done. How the transmitting packet processor takes advantage of queuing or service levels
To give a simple example of how to use it, service levels simply define the priority between queues.
If it indicates purely, that is, the higher the number, the higher the priority,
Processor has a specific priority as long as there is a high priority, non-empty queue.
It will not correspond to a queue having a rank. The queue number mapping table 3303 contains information on each packet processor.
3307. This part is arranged in order of packet processor number.
It is. Each part 3307 includes an entry (QNMTE) 330 for each service level.
5 In the preferred embodiment, there are eight service levels. Packet
FIG. 33 shows an example of the portion 3307 relating to the processor 0. Here, the service
A simple priority system with higher priority at higher packet levels
The processor 0 uses the service level 0, 3, 4
It is assumed that there is a queue. Packet processor 0 has no queue
Each entry 3305 for a service level has a null value. Packet pull
Each entry 3305 for a service level for which processor 0 has a queue has
Includes QROFF. This is the queue for the service level in the queue list 3101
This is the block offset of the queue record 3103 for the column. In addition, ent
The number of queues of the packet processor having the service level of the packet is included. The QNMTE 3305 has a packet processor number and a
It is addressed by the queue level number. Therefore, the address 3309 is
If packet processor number 0 and queuing level 3 are specified,
The entry 3305 whose position is specified is 3305 (0, 3). Entry 330
5 uses the QROFF specified in 3305 (0, 3), the QME 305
To find the first queue record 3103 and the queue level of the processor.
Wear. QME 305 may choose to use the queue, or
The queue specified by another queue record 3103 for the queue having the queue level
You can also select a matrix. Address 3309 is associated with the queue level.
QNMTE 330 with null value indicating that the packet processor has no queue
If 5 is specified, QME 305 generates QNMTE 3305 for higher queuing level.
Raise part 3307 until you find it, and queue at that level as described here
Select Queue management by QME 305: FIG. 34 As described above, queue 215 managed by QME 305
Depending on the password, it is either completely contained in the memory of the QME 305 in the DCP IC 203 or extended.
Queuing and scheduling included in queue memory 213 or external
Management unit. FIG. 34 shows the external scheduling unit.
The following shows examples of settings with and without settings. In this drawing, the flow of the descriptor 217 is
Wide, light gray arrows indicate the flow of protocol data units.
Shown by dashed dark gray arrows. [0158] Reference numeral 3401 includes a queue in a storage directly managed by the QMU 305.
A stand-alone DCP 203 is shown. 3403 includes external queuing and
Shows standalone DCP with added scheduling and scheduling unit 3405
Is done. In such a configuration, external queuing and scheduling
The unit is responsible for the number of queues, queuing levels and
And issues such as multicasting. External queuing and scheduling
QME 305 with QU 305, QME 305 has memory in DCP 203
It just works. Descriptor 2 sent to the external unit 3405 is stored in the memory.
17 for transmission by the transmitting packet processor.
Packet receiving the descriptor 217 sent from the external unit 3405 to the sender
There is a queue for each of the processors. These queuing functions are
Between the external processor and the external queuing and scheduling unit
Is to provide a buffer. At 3407, the two DCPs 203 (0, 1) are connected by the switching organization 222
The setting is shown, and the queue management of both DCPs 203 is performed by the QME 305 of DCP 203 (1).
This is performed by (1). QME 305 (0) communicates with the organization
Waiter read by the organization processor 303 (0) that sends a command to the processor 303 (1).
It only contains the enqueue command for the descriptor 217 to be put on the matrix.
The organization processor 303 (1) transmits the command to the QME 305 (1). QME30
5 (1) puts the descriptor in the queue 215 according to the indication of the command. Queue 21
5 is a packet packet on the transmitting side of either DCP 203 (0) or DCP 203 (1).
This is a queue read by the processor. Packets in DCP203 (0)
Queue status information on the queue read by the processor is set from QME305 (1).
Via the weave processor 303 (1), the tissue 222 and the tissue processor 303 (0)
Is transmitted to the QME 305 (0), and the QME 305 (0)
Set the recipient's QOS register 2911 or wait for broadcast
Send column status report 2915 to recipient. In the dequeue command, the command
Is transmitted to QME 305 (1) as described above, and is dequeued in response to the command.
The returned descriptor is returned to QME305 (0) as described for status information
Then, the packet is returned from the QME 305 (0) to the transmitting packet processor. The protocol data received by one of the packet processors of DCP 203
If the sender unit attempts to send a data unit from the other DCP,
The BME 315 in the DCP to which the processor belongs belongs via the organization processor to the receiving packet processor.
By transferring the buffer tag to Sessa's buffer management engine
, Responding to the request of the transmitting packet processor. The receiving packet processor
Sends the protocol data unit through the organization processor to the sending packet
Respond to buffer tags by sending them to the processor's buffer management engine.
You. The engine then sends it to the sending packet processor. 3409 is similar to 3407, but the queue is managed by QME 305 (1)
Except for the external queuing and scheduling unit 3411
The structure is shown. The queuing command, status information and descriptor are stored in the DCP 20 as described above.
3 (0) and DCP 203 (1), but QME 305 (1)
To the external queuing and scheduling unit 3411 and
The difference is that the descriptor is received therefrom. 3413, QME305 (0) and QME3
External queuing and scheduling directly corresponding to both
-The structure which has the unit 3415 is shown. Operation is the same as above, except that one QME
305 is an external unit on its own or on behalf of the other QME 305
3415. External Interface of QME 305: FIG. 35 In the preferred embodiment, QME 305 is configured with an external synchronous SRAM memory bank.
Or with the queuing and scheduling unit described above
It has a 55-pin external interface. FIG. 35 shows the external input in each case.
Shows how the interface is used. 3501 has a memory external interface
Show the face. 32 bidirectional data lines 3503 and 20 unidirectional addresses
There are lines 3505 and four or five control lines 3506. Memory bank 21
Reading from and writing to 3 are performed in the usual manner. At 3507, queuing and scheduling of the 55-pin external interface
And a method for use with the switching unit 3508. Also in this case, 32 interactive data
Data line 3509, 16 command lines 3511, and 8 control lines 3513.
You. As far as the interface is concerned, QME 305 is the master and scheduler 3508
Is a slave. Both scheduler 3508 and QME 305 send messages to other
QME 305 determines the direction in which the message is sent. Me
The flow of the message transfer is controlled. That is, scheduler 3508 and QME3
05 are able to receive messages from each other,
That the recipient can accept the message.
Otherwise, the sender will not send the message. QME305 is an interface
Clock signal source. The message has four possible sizes: 12 bytes; 4 bytes of which are commands, 8 are data and 2 clocks
Sent within a cycle; 24 bytes; 8 of which are commands, 16 are data, and 4 clock cycles
36 bytes; 12 of which are commands, 24 are data, and 6 clocks
48 bytes; 16 of which are commands, 24 are data, and 8 clock
Sent within the cycle. The size of the message is determined when the DCP 203 is initialized. message
Of course is determined by the dialogue between QME 305 and scheduler 3508.
However, in many cases, the queue is
Alternatively, the descriptor 217 extracted from the queue managed by the scheduler 3508 is
Including. [0164] Flow control is such that the QME 305 acts on behalf of all sending packet processors.
Each of these packet processors schedules at specific moments.
To receive or not receive the descriptor from the ruler 3508
Is somewhat complicated. In the preferred embodiment, the most
There are about 25 queues. 16 channel channels, one for execution processor 313
One for each of the processors 307 and eight for the tissue processor 303.
The organization processor 303 is responsible for all communications through the switching organization 222
Therefore, they have eight queues.
Contains control information as well as protocol data units. In addition, different species
Devices that require a type of frame may be connected by a single tissue processor.
is there. When used with an external scheduler 3508, the QME 305 has one receiver
There is a queue (RQ: receiver queue) 3519 in which the QME 305
Packet packet to the receiver 3508 before it can be output and queued.
Put all of the descriptors 217 received from the processor. QME305 sends
Transmit queue (TQ) 35 for each of the side packet processors
21. When TQ3521 for the transmitting packet processor is full
, QME 305 has a descriptor 21 for the queue of its transmitting packet processor.
7 can no longer be received. Since there is only one output queue, a message addressed to scheduler 3506 is output.
Flow control is simple. Scheduler can accept messages
When the signal is activated, the signal is activated by the control 3513 and the scheduler flow control register 351 is activated.
7 indicates the state of the signal, and the QME 305 indicates that the control register 3517 indicates it.
All that is required is to wait for the next message to be sent. Turned to QME305
The message flow control is performed by the DCP flow control register 3 in the scheduler 3508.
535. This register contains the possible sender packet processor
Include 25 flow control bits, one for each. DCP flow control register
The flow control bits for the transmitting packet processor in the
Only if so, the scheduler 3508 determines that its final destination is a specific sender
Send a message that is a packet processor. QME305 is the scheduler 3
The portion of each message that is sent to
Used to set or clear, the QME 305 is
Set bit for transmitting packet processor when 521 is full
Send the message, and if transmission queue 3521 again has room for the descriptor
Send a message to reset the bit. An external interface of the QME 305 is generally used for communication with a queue management device.
But need not do so. The contents of the descriptor are the packet
The external interface is completely determined by the
Used by the Sessa to transfer data to devices accessible via an external interface
And / or read data from the device.
One way to take advantage of this feature is to have the packet processor "packet sniff".
File, which simply collects information about the packets in the packet stream.
Is to program as a device. Each packet from the packet stream
The RxSDP 421 is programmed to extract the desired information about the
This can be sent to the CPRC 401. The CPRC 401 puts information into descriptors,
The descriptor is transferred to an external device capable of storing and analyzing information by QME3.
05 can be queued for distribution. Details of the scheduler external interface: FIGS. 36 and 37 FIG. 36 shows how the individual pins of the external interface are
Indicate how to use. In FIG. 8, a row denoted by a pin 3601 is a single group.
The number of pins constituting the loop indicates the number of pins, and the arrows in the column marked direction 3603 indicate the information flow.
This indicates the direction. DCP → SCHE shows the flow from QME 305 to scheduler 3508
DCP ← SCHE indicates the opposite direction. Start with eight control pins 3513; clock pin 3605 clocks from QME 305 to scheduler 3508
D_flow_ctrl 3607 provides 3 bits of flow control information from QME 305
Provide each cycle to the scheduler 3508;
Using the 6 bits of D_flow_ctrl 3607 received in the first two cycles of
, Set or clear a bit in the D flow control register 3515; S_flow_ctrl 3609 is a
QME 305 uses the value of pin 3609 to control the S flow control
Xfer_rqst 3611 sets a message to the QME 305
Xfer_ctrl 3613 is a signal that is activated by scheduler 3508;
The QME 305 has a scheduler 35 to indicate how to interpret
08 are two bits to be sent; details will be described later. Command pin 3511 is bi-directional; it includes 16 command bits and
One parity bit is included. Data pin 3509 is also bidirectional; 3
Two data bits and one parity bit are included. The operation of the interface 3507 is controlled by Xfer_ctrl3613. 2
The meaning of the four values of the three lines is as follows: 00: not a clock cycle followed by a message;
The first two cycles required to send the message
D_flow_ctrl 3607 transfers flow control information to scheduler 3508 during
10: Two messages after scheduler 3508 to QME 305 after two cycles
The first cycle is the clock cycle that follows; needed to send the message
During the first two cycles, D_flow_ctrl 3607 schedules the flow control information.
11: two clock cycles followed by two clock cycles, followed by two clock cycles
In this, the flow control information is sent to the scheduler 3508 via the D_flow_ctrl 3607.
Information is forwarded. As can be seen from the above, when no message is being transferred,
6 bits of flow control information every 2 clock cycles with potentially QM
The data is transferred from the E305 to the scheduler 3508. A 6-bit value indicates disabled operation
The specified value and the scheduler 3508 send the
Separate flow control bits for each of the 25 queues of the receiving packet processor
And a value that responds by setting or resetting. As described above, messages are 2, 4, 6 or 8 cycles long and each
Cycle transfers 16-bit command data and 32-bit descriptive data
. The meaning of the command data is determined by the scheduler 3508 and the QME 305.
Determined by the method of ramming. However, the scheduler 3508 sends the QME 30
5, the first cycle of command data at 3514
It must take the form shown. That is, the first 6 bits correspond to pattern 3
615 and the last six bits do not contain the number of the queue to which the message is addressed
Must. This number is, of course, the message
Determine if you have been. FIG. 37 shows an interface 350 using two-cycle and four-cycle messages.
7 shows an operation example. The two cycle message is shown at 3701. In 3703,
The clock cycle for the interface is shown. 3613
The value of Xfer_Ctrl 3613 during the cycle is shown. 3511 contains the command
• What is at the data pin 3511 is shown. 3509 includes descriptor data
What is at pin 3509 is shown. 3607 includes D_flow_Ctrl pin 360
7 are shown. Thus, in cycle 1, Xfer_Ctrl 361
3 is set to 01 and the next subsequent cycle (cycle 3) is scheduled from QME305.
First cycle of two-cycle message 3702 addressed to Jular 3509
Is shown. In cycle 2, Xfer_Ctrl 3613 is set to 00.
The next cycle may not be the first cycle of the message.
Is shown. In cycle 3, command 3511 and data 3509 are transmitted in the first cycle.
D_flow_Ct, including command data and descriptor data of the
rl3607 is flow control data on scheduler 3508 for the first cycle
including. Xfer_Ctrl3613 is set to 01 again, and schedule from QME305
That the first cycle of another message to the
And In cycle 4, the latter half of message 3702 is sent and command 3511
And data 3509 include command data and descriptor data for the second cycle.
Only, the D_flow_Ctrl pin 3613 contains the flow control data for the second cycle. Xf
er_Ctrl 3613 is set to 00 again. In cycles 5 and 6, the second menu
A message is sent and in cycle 5, Xfer_Ctrl 3613 starts in cycle 7.
Indicates that a third message will follow. Two Four-Cycle Messages 37 from Scheduler 3508 to QME 305
07 is shown at 3705. In cycle 1, Xfer_Ctrl 3613 is set to 10.
Indicates that the first message starting in cycle 3 is addressed to QME 305
. In cycles 2-4, the message is 4 cycles long, so Xfer_Ct
rl3613 is set to 00. In cycles 3-6, for the first message
Command data 3511 and descriptor data 3509 for four cycles of
You. D_Flow_Ctrl 3613 is the first two cycles of the message,
It is transmitted only in vehicles 3 and 4. Xfer_Ctrl3613 returns to 10 in cycle 5
Set, the first cycle of the second message begins in cycle 7. Transmission of flow control information to scheduler 3508 is a two-cycle message
Works the same as sending, but with Xfer_Ctrl 3613 two times from the start of the flow control sequence.
The difference is that it has the value 11 before the cycle. In cycle 3, the first three of the flow control information
Bits are sent on D_Flow_Ctrl 3607 and in cycle 4 the next 3 bits are sent
Be trusted. Scheduler 3508 and QME 305 provide command data 351
Ignore 1 and the value of descriptor data 3509. Detailed description of the buffer management engine 315 and the buffer memory 229 The main function of the buffer management engine 315 is that the protocol data unit
A buffer stored from when received by the DCP 203 until it is transmitted to the DCP 203
This is to manage the buffer 231 of the memory 229. The following description is based on
Buffer memory 33 that the file management engine 315 provides to the packet processor.
9 interface, then interface details and BME 315 run
And other functions will be described. FIG. 38 shows the buffer memory 2 created by the buffer management engine 315.
29 shows an interface to the E.29. Buffer memory 229 is a preferred embodiment.
Are divided into a maximum of 32 buffer pools 3803. n is the number of pools
Then, buffer 231 is included in n-1 of these pools,
1 includes a protocol data unit 2503. pool of n-1
The size and the number and size of the buffers 231 are determined when the DCP 203 is initialized. 1
One pool has a maximum of 64K buffers, and all of the buffers 231 are the same size
Which, in the preferred embodiment, is between 64 bytes and 64K bytes
. Each pool 2803 is identified by a pool ID 3819, and each buffer in the pool is
Keys are identified by buffer tags 233. In buffer 233, the position is
Specified by offset 3802. Here, the offset is the PDU 3804
Identify the starting point. In the preferred embodiment, the offset is 16 bytes of data.
Identify the starting point of the chunk. The nth buffer pool 2803 has buffer tag 2 for that buffer.
33 are included. buffer pool for each of the n-1 buffer pools 2803
There is a tag queue 3805. Buffer for buffer pool 2803 (i)
The tag queue 3805 (i) is stored in the buffer pool 2803 (i).
Buffer 231 including buffer tag entries 3806 for each of
The buffer tag entry 3806 (i, j) of 1 (i, j) is
1 (i, j) buffer tag 233. Each queue 2805 is a queue
A pointer 3807 to the forefront and a pointer 3809 to the tail of the queue
And When the DCP 203 is initialized, a queue is set. Receive DCP203
Buffer for pool 2803 (i) buffer for receiving packet processor
If you need a tag, pick it up from the front of queue 3805 (i)
take. When the sending packet processor releases the buffer tag, the tag is
It is returned to the end of the queue 3805 (i). [0177] Of course, the multicast command assigns a particular buffer tag (i, j).
Put the accompanying descriptor in two or more queues 215 in the queue management engine 305
, The buffer tag (i, j) is the last core tag of the buffer tag (i, j).
Until the p is returned, it cannot be returned to the end of the queue 3805 (i).
This problem is, in the preferred embodiment, a problem with the buffer tag counter 3811.
Will be dealt with more. Buffer touches in two or more queues 215 in QME 305
Entry 3813 in the buffer tag counter 3188 for each of the
And its entry contains the count of the queue in which the buffer tag is currently
It is. This entry is addressed by pool ID and buffer tag
can do. The receiving processor sends a multicast enqueue command for the descriptor
Once created, a message is sent to the BME 315 indicating the number of queues with descriptors.
Send it. Descriptors received by the sending packet processor include the
Includes the INC value from DR3111. If INC is greater than 0, the packet
The processor sends the counter decrement to the BME 315, and the
Notifies that the BTAG counter should be decremented. When the counter decrements to 0
, Buffer tag 233 returns to the end of buffer tag queue 30 待 805
Is done. The BME 315 writes to the buffer 231, reads from the buffer 231,
Maintain buffer tag, return buffer tag, payload bus 317
And decrement an entry in the BT counter from the packet processor via the
Receive a command to The command to read / write the buffer is 3901 in FIG.
It has the format shown in The fields have the following meanings: • The CNT field 3903 indicates the number of valid contiguous 16-byte quantities being transferred
T # 3905 distinguishes transactions by a particular packet processor
Pool ID 3907 identifies buffer pool 3803 (0 ... n-1); Offset 3909 is the offset in the buffer identified by BTAG 3911
BTAG 3911 identifies the buffer 231 that is reading or writing. The pool ID 3907, offset 3909, and BTAG 3911 are all buffer
The dress 3913 is formed. More details in the payload bus description below
However, whether a command is a read command or a write command
Determined by emerging payload bus cycles. Pool ID value 0 is the BT pool 38
03 (n), and the pool ID 0x1F specifies the command of the QME 305. Reading
In the case of a command, the QME 305 stores the specified amount of data in the specified buffer.
To the requesting packet processor along with transaction # 3905
You. In this way, the requester uses the transaction number to return the returned data.
Data can be tracked as to which request is being served. [0181] The packet processor associates the BTAG 233 in the BTAG pool 3803 (n).
The following BTAG read operations can be performed: allocating BTAG 233; and reading CNT entry 2813 of BTAG 233 in BT counter 211; BTAG write operation is as follows: BTAG 233 initialization; -Release of the BTAG 233 assignment;-Set the BTAG 233 counter to the counter 3811;-Decrement the BTAG 233 counter. The format of these commands is shown in 3915. BT pool ID 3907 is specified by BTAG
BTAG pool 3803 (n), where BTAG is the BTAG pool for which the count is specified.
Field 3911, which is in CNT 3903. Also, offset 3909
Affects the command value 3917 specifying one of the BTAG commands and the BTAG command
And a pool ID 3919 that specifies the buffer pool to which the BTAG to receive belongs.
If the command requires a response, transaction number 3905 is returned with the response.
Sent. Fields are employed in BTAG read commands as follows:
CNT3903 determines the number of BTAGs requested by the packet processor issuing the command.
Show. According to the value, the requester can retrieve 8 pools from the pool specified in the pool ID 3939.
, 16, 24 or 32 BTAGs 233 will be received. BTAG field
3911 is, of course, ignored. BME 315 sends to requester on payload bus
To return the BTAG 233 to the requester. In the counter read command, CNT 3903 is set to 0 and BTAG 39
11 includes a BTAG 233 from which the count value in the BT counter is read, and a pool
The ID 3919 includes the pool identifier 3819 of the pool 3803 to which the BTAG 233 belongs.
No. The BME 315 returns the count value by writing to the requester on the payload bus.
Send. Continuing with the BTAG write command, the value of the BTAG 233 is
Is set to BTE3806. In this command, BTE 380 that CNT is initialized
Specify the number 6. Possible numbers are 8, 16, 24, 32. Pool ID 3919
Specifies the pool 3803 to which the BTAG 233 to be initialized belongs. For this reason,
The incoming buffer tag queue 3805 is also specified. The data allocation release command returns one BTAG 233 to the BME 315 and reuses it.
You. In the command, the buffer to which the BTAG 233 to which the pool ID 3919 is returned belongs
A pool 3803 is designated, and the BTAG 3911 includes the BTAG 233. [0187] In the counter command, the pool ID 3919 is set and the counter is set.
Specify the BTAG 233 buffer pool ID to be
11 designates the BTAG 233 itself. In the counter set command
, CNT 3903 include the value at which the counter is set. QME 315 is
Create a CNT entry 3813 in the BT counter and specify it in the command
Responds to a set counter command by setting it to a value. counter
The set command is sent by the receiving packet processor to the multicast
Send a queue command to QME 305 together with a descriptor for the PDU represented by BTAG 233.
Issued by the receiving packet processor. Counter decrement command
Is the protocol data unit that is multicast when the PDU is sent
Issued by each transmitting packet processor. Counter decremented
Reaches 0, the BTAG 233 to which the CNT 3813 belongs is buffered by the BTAG 233.
Returned to the end of BTQ3805 in the pool,
Entry becomes invalid. Details of execution of BME 315: FIGS. 40 and 41. Writing to buffer 231 and assignment and return of buffer tag 233.
In addition to functioning as an interface, BME 315 also provides a comprehensive interface to SDRAM 229.
Interface. FIG. 41 shows the contents of the SDRAM 229. 4103 B
In addition to TAG and buffer pool 3803 (0 ... n), SDRAM 229 has the following elements:
Includes: ・ Specifies the settings of the memory setting information 4111 and the SDRAM 229; ・ At the time of initialization of the packet processor code and data 4109 and the DCP 203
Contains the code and data that XP 313 loads into the packet processor;
In a kernel processor, code and data are stored in a serial data processor.
Contains code and data used to initialize the server. In the conversion table 4107, the XP 313 stores the conversion table when the DCP 203 is initialized.
A translation table to be loaded into memory 207; RTOS 4101 is a real-time operating system
XP data memory 4105 is used to execute RTOS 4101
Includes data used by the XP 313. The XP 313 stores the data in the RTOS 4101 and the XP data memory 4105 as necessary.
Then, the instructions are extracted into the IMEM 1503 and the DMEMs 1507 and 1508. FIG. 40 is a block diagram of hardware of the BME 315 according to the preferred embodiment of the present invention.
FIG. The BME 315 is connected to the global bus 319 and the payload bus 317.
Combined to both. BME 315 communicates with BTAG and
Receive and respond to buffer commands. BME 315 is a global
Receives a memory read request from the XP 313 on the
Respond to read requests via Initialization of the packet processor is performed in the same way
Is done. Each of the transaction requests that the BME 315 receives over these buses includes
, A command 4004 and an address 3919, and the write command
18 is also included. How the address is interpreted, of course, depends on the command
Depends on the type. Commands are decomposed in a command parser 4003. SDRA
Commands that set M229 are treated differently from other commands. 4001
This command proceeds to the DRAM configuration logic 4035 where the data
Is transmitted to the setting FIFO 4037, from which the data is stored in the DRAM setting register 4030.
Loaded. [0191] Other commands can be used to determine whether these are read or write commands or other commands.
It depends on the command. Other commands go to the command FIFO. Read frame
The address for the command proceeds to the read address FIFO 4013, and the address for the write command.
Goes to the write address FIFO 4021. The data is the write data FIFO 40
Proceed to 17. The data read in response to the command is the data read (READ DAT
A) Go to FIFO4043. These FIFOs are provided between the DCP 293 and the SDRAM 227.
It functions to give the required elasticity to the interface. For addresses,
Address generation block 4011 is used for buffer and address used in BTAG command.
Address to the appropriate format for SDRAM 229. To do this,
The address generation block 4011 determines which buffer 231 in the SDRAM 229 is currently
Include a buffer configuration file that specifies whether the Real as it is now
When it is displayed, the address of the SDRAM 2029 corresponding to the specific buffer address 3913 is displayed.
The dress is determined as follows: SDRAM address = pool base address (pool ID) + ((B tag & B tag mask (pool ID)) >> B tag shift (pool ID) CAT ((offset & Offset mask (pool ID))) From the FIFO, the command, read address and write address are queued, respectively.
Proceed to 4067, 4015, 4025. DR is the first command in the queue 4067
Read by AM CTRL4009. This is because the command is sent to the DRAM setting register 403
9 according to the needs of the current settings, and the necessary control signals are
, SDRAM 229 address driver 4019 and data transceiver 40
Send to 41. The foremost address of the read address queue 415 is sent to the address generator 4027.
Read, which sends this address to the driver 4019, indicating a read operation.
I do. The foremost address of the write address queue 4025 is also an address driver.
4019, the address and the write command are read by the address driver 419.
Given to. At the same time, the data at the forefront of the write data queue 4029 is
-Output to the transceiver 4041 and input it to the SDRAM 229.
Can be. The address generator 4017 provides a PD to the transmitting packet processor.
Because the preparation of U is more time-sensitive than storing the PDU in SDRAM 229,
The priority is given to the address queue 4015. Read operation of data waiting to be written in the write data queue 4029
To avoid the situation where the work is read and the data becomes outdated as a result, BME3
15 is provided with CAM4023. The address is at the end of the write address queue 4025
When written to the tail, an entry for the address is created in the CAM 4023. Address
Is written to the end of the read address queue 4015,
3 is output. If they match, the address in the write address queue 4025 is
The next address in the read address queue 4015 is the address generator.
Empty before being read to 4017. BTAG cache 4031 stores BTAG2 from the front of each of BTAG queues 3805
33. The rest of queue 3805 is in SDRAM 229. About BTAG233
Request to arrive from the packet processor, if possible, the BTAG cache
Satisfied from 4031. Otherwise, the queue 3805 in the SDRAM 229
Are filled from the part of the queue, and the BTAG cache of the queue is
Will be reloaded. The BTCNT 3811 realizes a BT counter 3811. Buffer Tag Cow
The event command sets, reads, and decrements the value in BTCNT 3811. BTA
Each time a G decrement command is received, the CNT value in the BTAG CNT entry is
Is decremented to The PDU read from the SDRAM 229 is output to the read data FIFO 4043. FI
The output from FO 4043 is DRAM setting 4035, BTAG cache 4031 and BT
With the output of the CNT 3811, all proceed to the MUX 4046, where the read data waits.
Output to column 4045 is selected and queue 4045 is placed on payload bus 317.
Output. Details of Ring Bus 311: FIGS. 28 and 42 The ring bus 311 is mainly used by a packet processor to transfer protocol data.
Used to send to TLE301 for conversion and receive the conversion result from TLE301
You. However, the ring bus 311 is stored in any node on the ring bus 311.
It is also used to send messages and receive replies. In the preferred embodiment
, The nodes are the packet processor and the TLE 301. Ring bus 311 provides access bandwidth for messages between nodes of the bus.
It is designed to guarantee and limit latency. The bus is 91 bits wide and 27 bits
The bits are for control information, and 64 bits are transmitted from the transmitting node to the receiving node.
For data sent to the server. Bus time-divided into a variable number of slots
Multiplexed, each slot consists of one core clock cycle.
Each slot is communicated between nodes in a bucket gligade fashion. Currently
The node's slot is unoccupied (ie, ring bus message 28
01 is not included), the node sends a message about one of the nodes in the slot.
Can be written (in other embodiments, a single slot can be
You can write a message about it.) The message is sent when the destination node
Cycle through the nodes until the message is removed from the slot. Each node has in its ring bus 311 a message whose source is a node.
Has 1 to 5 slots. Node does not use more than one slot
Otherwise, these slots do not exist on the ring bus 311. This explanation
As you can see, sending a message from one node to another on the bus
The time required depends on the number of messages on the bus. The upper limit is set by each node.
The time required if you have 5 slots containing messages on the
is there. There are five types of message 2801. The type of each message is
It is indicated by the value of the type field 2807. The node that originated the message
Is indicated by SRC 2825 and the destination node is indicated by DEST 2813
You. The types are: • Unoccupied • Indication, the source asks whether the destination is responding to the ring bus message.
Used to join. Signs do not include data. The destination of the confirmation / sign is used to respond to the source of the sign. Data for confirmation
Is not included. A spontaneous message with a request and data, by which the destination operates. In case
Therefore, a response message with the operation result is returned to the source of the request.・ Response, the destination of the request is performed by the destination of the request,
Message sent with the result of the action taken. FIG. 42 shows a ring bus interface that each node has for the ring bus.
FIG. There are two FIFOs for messages whose destination is a node.
FIFO 4203 contains the request message. FIFO 4209 has its destination as a node
Contains the response message. Both FIFO4203 and FIFO4209 are read by node
It is. The overflow FIFO 4211 indicates that the destination has not yet read the ring
Messages originating from nodes that must continue to circulate on bus 311
Used for When a message destined for a node arrives at that node, the message
The sage is put into the FIFO required by its type. There is no room for that FIFO
If the message continues to cycle. Node Outputs Message on Ring Bus 311 via Buffer 4214
I do. Buffer 4214 contains rbus_in4 containing the request message sent by the node.
202, message from overflow FIFO 4211 and request FIFO 4217
To receive. If the overflow FIFO 4211 is empty, its source is a node.
As soon as a message is received by the node, it is
It is output in the slot where it arrived. If the overflow FIFO 4211 is not empty
, The newly received message whose source is node is overflow FIFO
Message placed at the end of 4211 and at the forefront of the overflow FIFO 4211
Is placed in buffer 4214 and the slot in which the newly arrived message arrives.
Output in the The newly arrived message is empty and overflow FIFO 42
If 11 is not full, the first message in request FIFO 4217 is an empty message.
Enter the slot of the page. Otherwise, before the overflow FIFO 4211
Some messages enter the slot. This mechanism allows other nodes to send
Only when processing a message inside is a node
Make sure you send new messages through. Marking and confirmation are performed by the interface 42
01 is processed at the hardware level and is not queued. Global Bus and Payload Bus The following description of the implementation of these buses will refer to one bus used for both buses.
Start with a description of the structure. Next, the bus itself will be described in detail. Request Bus and Return Bus: FIGS. 43 and 44 In the preferred embodiment, the global bus 319 and the payload bus 317
Is time-multiplexed on a single lower layer bus structure. This bus structure is shown at 430 in FIG.
It is shown in FIG. Bus structure 4301 is a slotted multi-channel, shared arbitration bus
Yes, pipelined to allow overlapping operations. Each operation consists of 5 clocks
Begin with a request to occupy a cycle slot. The bus has a clock speed of 166MHz
Work at degrees. Packet processor 4303, BME 315 and QME 305
All are connected to a bus structure and are referred to herein as bus nodes. [0203] The bus structure 4301 has two parts. That is, if the bus node
A request bus 4305 for making requests and providing addresses and data for the requests;
A return bus 4 used to return the result of the bus request to the requesting bus node
317. The request bus 4305 has three channels. The two are commands
Command / address channel carrying address and global bus activity
Global bus command / address carrying address and command for operation
Channel 4307 and carries addresses and commands for payload bus operation
Payload bus command / address channel 4309, one for global
Data channels that carry data for both global and payload buses
4311. In the preferred embodiment, each of the command-address channels
Each is 32 bits wide and the data channel 4311 is 128 bits wide.
The return bus 4317 has two channels, ie, an interface for returning a request and return data.
Return address channel 4321 carrying the address and return address carrying the returned data.
There is a send data channel 4319. Also in this case, the return address channel 43
21 is 32 bits wide and return data channel 4319 is 128 bits wide.
You. A node that can access the slot to perform a bus operation
Required for operation on one of the command-address channels 4307.
Command and address and required for operation on the request data channel 4311.
And place the data. When the operation returns the data to the requestor, the bus control 4315
Sending a request to the source of the return data on the return address channel,
The address to which the return data should be returned is sent, and the source of the return data is
Data into the return data channel 4319. Bus structure 4301 with nodes
Access to is controlled by the bus control 4315. More details below
However, the bus control 4315 sends a request bus 4305 and return
The bus 4317 provides a guaranteed portion of both bandwidths. FIG. 44 shows how bus operations are performed on nodes. Each slot is
Occupies 5 bus cycles. Command-address channel 4307 or 4
At 309, the information on the bus during the slot cycle is shown at 4402.
Cycle 0: request 4405, specify operation; cycle 0: address 4407, specify operation address; cycle 2: bus grant 4409: bus control 4315 is required during this cycle.
The requesting node returns a signal indicating that the access has been received; cycle 3: acknowledgment 4411: the operation specified in the preceding slot succeeds
Then, the bus control 4315 returns an acknowledgment signal in this cycle. Cycle 4: Address 4413, specifying the second address of the operation. As described in more detail below, the use of an address is defined by the operation
. The operations that a node can execute by the bus structure 4301 generally include two operations.
There is a class of short-term operation to transfer 4-byte data and 64-byte data
It is a long-term operation to transfer. Each class has a read operation and a write operation. Specific
Within lot 4402, one packet processor 4303 reads the class.
Write operation different from the write operation. Short-term operation is a global bus command
Long-term operation is specified on the dress channel 4307 and the payload bus command
Specified on the do-address channel. In FIG. 44, the short-term operation is shown at 4425. In short-term operation, the data
If written, the operation must be on request command-address channel 4303.
The first address of the requested slot 4402 is the write address 4415,
When the data is read, the last address is the read address 4417. write
In operation, a node that has been granted access to request bus 3305 is
4 bytes of data to be written to the address specified by the
The request data channel 4311 in the fifth cycle of 402 is entered. In the case of a short-term read operation, the bus controller 4315 controls the bus for the read operation.
Upon authorization, a request 4421 for the node is made in the fourth cycle of slot 4402.
To the return address channel 4321. The bus controller 4315
Return address for data 4423 in the first cycle of next slot 4402
Into the return address channel 4321, and the node specified in the request 4421 is
The return data 4420 itself is returned in the third cycle of the next slot 4402.
Put into address channel 4321. [0209] Reference numeral 4427 shows a long-term operation. Slot 440 where node requires long-term operation
During two cycles, the node sets the read address 4417 for the long-term read operation to
Place on cycle 1 request address bus. The node is responsible for long-term write operations
Write address 4417 is placed on the request address bus in cycle 4. Long-term write operation
In operation, if access is granted to a node, the request data channel 431
64 bytes of data 4429 to be written to the next slot 4402
Put them in 16 byte chunks of channels 1-4. In the long-term read operation, the node
When access is granted, the bus controller 4315 designates the response node.
Address 432 in the fifth cycle of slot 4402
Put in 1. Also, the address of the requesting node is set to the first size of the next slot 4402.
Into the return address channel 4321 in the vehicle. The responding node must be a valid
A count value 4435 indicating the number of 16-byte chunks in the returned data is stored in the next space.
Put on return address channel 4321 in the second cycle of lot 4402,
The responding node has four 16-bars starting in the third cycle of the next slot 4402.
Return data 4437 on return data channel 4319 in the write chunk
Insert The realization of the global bus 319 and the payload bus 317 on the request and return buses
Current: FIG. 45 FIG. 45 shows that both the global bus 319 and the payload bus 317 have a bus structure.
It shows how it is multiplexed on structure 4301. As is clear from FIG.
Lot 4402 is 5 cycles long and is returned with long data 4429 to be written
The long data 4437 is 4 cycles long, and the short data 44
19 and the returned short data 4420 are each one cycle long. Therefore, as shown in FIG. 45, short-term operation and long-term operation are performed on the bus structure 4305.
Can be duplicated so that each of the requested data channels 4311
Four of the five cycles are used for payload data and the fifth cycle is used.
Cycle for global bus data and the same cycle for return data
Available for channel 4319. In FIG. 45, the global
The short-term operation of building bus 319 is depicted in the upper half of the drawing, and global bus 3
The long term operation of building 17 is depicted in the lower half of the figure. Request command in the center of the drawing
The payload, as indicated in the representation of the address channels 4307, 4309
Slot 4507 starts one cycle earlier than global slot 4504
You. Therefore, long data 4 written for payload slot 4507
429 is short data written for the global bus slot 4503
4419 and short data written for global bus slot 4505
And appears between them. Similarly, the return bus 4317 sends the payload request 4
The long return data 4437 returned for 509
Short data returned for the global request 4505 and short data returned for the global request 4505.
Data channel 4319. Bus Access and Addressing on Global Bus 317: FIG. 45 FIG. 45 shows slots on the global bus 319 and the payload bus 317.
4402 shows a state where 4402 is divided into even-numbered slots and odd-numbered slots. Even slot
The pair of the slot and the odd-numbered slot constitute a 10-cycle period 4502. Even and odd
The number of slots corresponds to the even and odd groups of the packet processor 4303.
Corresponding to The composition of the group is as follows: Perform four global bus transactions during each period 4502
be able to. In even slots: short-term read and short-term write operations; In odd slots: short-term read and short-term write operations. There is a separate token for each of these transaction types. toe
Kun rotates between the packet processors in the group in a circular fashion,
The packet processor with the token is responsible for its operation in the group
Has the highest priority. A transaction whose packet processor has a token.
If no transaction is requested, the requesting packet closest to the token in ascending order
The bus is granted to the processor. Pake to get access to the bus
The maximum wait time of a packet processor is 100 cycles. A file that has a write request
Slots without a packet processor are used by the queue management engine 305 to
Broadcast a queue status report 2915 to the packet processor. In the global bus transaction, the read address 4417 and the write
The write address 4415 is exactly a 32-bit address. Return data channel
The address of the packet processor 4319 is a valid bit,
Followed by a processor identifier, BME315, QME305, which identifies the recipient. Bus access and addressing on payload bus 317: FIG. 45 Bus access on payload bus 317 is related to global bus 319.
And functions as described above. Also in this case, each period 4502 is an odd slot.
And the even numbered slots, and the packet processor
Are assigned to odd and even slots. Again, one period 4
Within 502 are slots for four payload bus transactions.
is there. In an even slot: a long-term read operation and a long-term write operation; In an odd slot: a long-term read operation and a long-term write operation. In the same manner as described for the global bus, there is an advantage between the packet processors.
Tokens are used to determine priorities. However, QME305 and execution
There is no special arrangement for processor 313. For address, long term
The address for the read / write operation corresponds to the payload buffer code shown in FIG.
Mand. Return payload data on return address channel 4321
The address is similar to that of the returned global data, except that the 3-bit
The difference is that it further includes a Zaction number. This is the bus controller 4315
Is the transaction in the payload buffer command where the data is returned
The number is copied from 3905. DCP 203 as a generalized data stream processor The above description shows how DCP 203 can be used in a packet switch
However, DCP 203 can be used in any application where a stream of data is processed.
Will be apparent to those skilled in the art. By integration, DCP203
The channel processor 307 is connected to the serial bit stream, nibble stream.
Can be configured to process data from streams and byte streams,
The organization processor 303 processes data of a stream composed of 32-bit words.
Can be managed. The TLE 301 stores stream context information for each data.
Providing a mechanism to store and process, the QME 305
Stream containing the payload from the packet processor that receives the stream.
To the incoming packet processor and external units connected to the QME 305.
Provides a mechanism to convey information about the payload contained in the stream
I do. The organization processor 303 converts the DCP 203 to another DCP 203, a parallel bus, or the like.
Or switching to the switching organization, thereby allowing data from multiple DCPs 203 to be connected.
A large-scale device for processing data streams.
It can also be combined with other devices that process data streams. [0214] The packet processor is designed to handle all types of data streams.
Can be grammed. Programmable with programmable CPRC401
Combining the SDP420 with DMA and the DMA engine for each processor
Extract the control data in the stream from the payload of the stream,
, And the operation of transferring the payload to the BME 315 can be separated. CPR
Using the data scope in C401, SDP 420 and DMA engine
Processing of control data by maintaining information about the current state of trim processing
Can proceed in parallel with the movement of the payload between BME 315 and SDP 420
, The programming of the CPRC 401 is greatly simplified. The sending pro in SDP420
Pattern and bit count in the input stream to the processor and receiver
And can be programmed to respond to different bypass devices.
Easy setup of send and receive processors to handle different types of streams
can do. Equipment and channels to set SDP to recirculate stream
Configure the processor with high-speed serial streams or nibbles or bytes
Equipment that integrates to handle incoming streams and transmission media with different I / O pins
Equipment that is configured to work with provides additional flexibility. The DCP 203 has a minimum wait for communication between the packet processor and the TLE 301.
Using a ring bus that guarantees time, the BME 315 and the packet processor
A slotted bus that transfers bursts of data for payload transfer during
Transfer and parsing of buffer tags from BME 315 to packet processor
By using the transfer of descriptors between the packet processor and the QME 305,
Address the inherent timing constraints of data stream processing. Packet pull
Coordination between the processor, QME 305 and BME 315 is controlled by these devices.
Realized by a global address space that allows access to local memory
Will be revealed. In the case of a cluster of packet processors, the members of the cluster
Quick access to local memory. The above detailed description is designed for those skilled in the art to process and deliver packets.
For processing data streams in digital communication processor integrated circuits
The best mode currently known to the inventor employing is disclosed. For those skilled in the art,
Individual features of digital communications processors in contexts other than those disclosed herein.
And may differ from those disclosed herein.
You will immediately understand that they can be combined in a way. Those skilled in the art
It will also be appreciated that many different embodiments of this feature are possible. All of the above
The detailed description should, in all respects, be considered as an example and not restrictive.
Should not be considered. BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a block diagram of a packet switch in a network. FIG. 2 illustrates a packet switch including the digital signal processor of the present invention.
FIG. 3 is a high-level block diagram. FIG. 3 is a high level block diagram of the digital communication processor of the present invention.
You. FIG. 4 shows the high level of the channel processor in the digital communication processor.
-It is a block diagram. FIG. 5 is a map of a global address space. FIG. 6 is a map of a local memory of a channel processor. FIG. 7 is a flow chart of the processing of a packet received in a channel processor.
is there. FIG. 8 is a flowchart of processing of a packet output by a channel processor.
It is. FIG. 9 shows receive and transmit data scopes. FIG. 10 is a detailed block diagram of a reception processor 421. FIG. 11 is a block diagram of a receive byte processor. FIG. 12 is a detailed block diagram of a transmission processor 427. FIG. 13 is a block diagram of a cluster of channel processors. FIG. 14: Local and shared for a cluster of channel processors
It is a block diagram of a memory. FIG. 15 is a block diagram of an execution processor 313. FIG. 16 is a block diagram of an organization processor 303. FIG. 17 is a detailed block diagram of the Rx and Tx organization data processors.
. FIG. 18 shows a switch created by connecting two DCPs. FIG. 19 shows a switch created by connecting a plurality of DCPs to a switching organization.
Show. FIG. 20: Connecting DCP and another kind of digital switching logic to the switching organization
Shows how a switch is created. FIG. 21 shows details of the table memory 207 in the preferred embodiment. FIG. 22 shows the internal architecture of TLE301. FIG. 23 shows details of a register storage unit 2205 and a control storage unit 2215.
You. FIG. 24 shows commands executed by the TLE 301. FIG. 25: the receiving channel processor 307 (i) and the transmitting channel
The processor 307 (j) cooperates to switch the sequence of transport packets.
Here's how. FIG. 26 shows an example of integration of RxSDP 421 in a cluster. FIG. 27 shows an example of integration of TxSDP 427 in a cluster. FIG. 28 shows a ring bus message. FIG. 29 shows a channel processor interface for QME305.
Show. FIG. 30 illustrates the queuing commands employed in the preferred embodiment. FIG. 31 shows a queue data structure in a preferred embodiment. FIG. 32 illustrates a multicast data structure in a preferred embodiment. FIG. 33 shows details of the MCL 3123 in the preferred embodiment. FIG. 34 shows various settings for managing a queue. FIG. 35 shows an extension interface of QME305. FIG. 36 shows details of a scheduler extension interface. FIG. 37. Timing of messages on the scheduler interface
Indicate FIG. 38 shows a logical overview of buffer management. FIG. 39 shows details of a command of the BME 305. FIG. 40 shows details of hardware of BME 305. FIG. 41 shows details of the contents of the SDRAM 229. FIG. 42 shows details of the ring bus node interface. FIG. 43 shows that a global bus 319 and a payload bus 317 are constructed.
Shows the bus structure to be used. FIG. 44 illustrates long and short operations for the bus structure of FIG. 43. FIG. 45 shows an execution example of the global bus 319 and the payload bus 317.
The details are shown below. FIG. 46 shows details of various settings for configurable pin logic 443. FIG. 47 is used to configure pins and receive and transmit processors.
Indicates the register to be used. [Procedure amendment 2] [Document name to be amended] Drawing [Item name to be amended] All drawings [Correction method] Change [Contents of amendment] FIG. 2 FIG. 3 FIG. 4 FIG. 5 FIG. 6 FIG. 7 FIG. 8 FIG. 9 FIG. 10 FIG. 11 FIG. FIG. 13 FIG. 14 FIG. FIG. 16 FIG. FIG. FIG. FIG. FIG. 21 FIG. FIG. 23 FIG. 24 FIG. 25 FIG. 26 FIG. 27 FIG. 28 FIG. 29 FIG. FIG. 31 FIG. 32 FIG. 33 FIG. 34 FIG. 35 FIG. 36 FIG. 37 FIG. 38 FIG. 39 FIG. 40 FIG. 41 FIG. 42 FIG. 43 FIG. 44 FIG. 45 FIG. 46 FIG. 47

───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,UG,ZW),E A(AM,AZ,BY,KG,KZ,MD,RU,TJ ,TM),AL,AU,BA,BB,BG,BR,CA ,CN,CU,CZ,EE,GE,HR,HU,ID, IL,IS,JP,KP,KR,LC,LK,LR,L T,LV,MG,MK,MN,MX,NO,NZ,PL ,RO,SG,SI,SK,SL,TR,TT,UA, US,VN,YU (72)発明者 ジョン・エフ・ブラウン アメリカ合衆国マサチューセッツ州ウェレ スレイ、ウォッシュバーン・アベニュー30 (72)発明者 ジェームス・エー・ファレル アメリカ合衆国マサチューセッツ州ハーバ ード、オーリン・レーン3 (72)発明者 アンドリュー・ディー・ファンク アメリカ合衆国マサチューセッツ州ボック スフォード、ウィロー・ロード81 (72)発明者 デビット・ジェイ・フサック アメリカ合衆国ニュー・ハンプシャー州ウ ィンダム、ランカスター・ロード15 (72)発明者 エドワード・ジェイ・マクレラン アメリカ合衆国マサチューセッツ州ホリス トン、ワシントン・パス5 (72)発明者 ドナルド・エー・プリオレ アメリカ合衆国マサチューセッツ州メイナ ード、ディックス・ロード27 (72)発明者 マーク・エー・サンキー アメリカ合衆国マサチューセッツ州アクト ン、ニュートン・ロード90 (72)発明者 ポール・シュミット アメリカ合衆国マサチューセッツ州プリン ストン、ウィタッカー・レーン26 Fターム(参考) 5K030 GA01 HA08 HC01 HD09 KA01 KA12 KX11 KX23 ────────────────────────────────────────────────── ─── Continuation of front page    (81) Designated country EP (AT, BE, CH, CY, DE, DK, ES, FI, FR, GB, GR, IE, I T, LU, MC, NL, PT, SE), OA (BF, BJ , CF, CG, CI, CM, GA, GN, GW, ML, MR, NE, SN, TD, TG), AP (GH, GM, K E, LS, MW, SD, SL, SZ, UG, ZW), E A (AM, AZ, BY, KG, KZ, MD, RU, TJ , TM), AL, AU, BA, BB, BG, BR, CA , CN, CU, CZ, EE, GE, HR, HU, ID, IL, IS, JP, KP, KR, LC, LK, LR, L T, LV, MG, MK, MN, MX, NO, NZ, PL , RO, SG, SI, SK, SL, TR, TT, UA, US, VN, YU (72) Inventor John F. Brown             Welle, Massachusetts, United States             Slay, Washburn Avenue 30 (72) Inventor James A. Farrell             Herba, Massachusetts, United States             , Olin Lane 3 (72) Inventor Andrew D. Funk             Bock, Massachusetts, United States             Sford, Willow Road 81 (72) Inventor David Jay Hussack             United States New Hampshire             Indam, Lancaster Road 15 (72) Inventor Edward Jay McClellan             Hollis, Mass., USA             Ton, Washington Pass 5 (72) Inventor Donald A Priore             Meina, Massachusetts, United States             Mode, Dix Road 27 (72) Inventor Mark A. Sankey             Act, Massachusetts, United States             Newton Road 90 (72) Inventor Paul Schmidt             Pudding, Massachusetts, United States             Ston, Whittaker Lane 26 F term (reference) 5K030 GA01 HA08 HC01 HD09 KA01                       KA12 KX11 KX23

Claims (1)

【特許請求の範囲】 【請求項1】 データ・ストリームを受信および/または送信する複数のデー
タ・ストリーム入力および/または出力; データ・ストリームを処理する複数のデータ・ストリーム・プロセッサであっ
て、各データ・ストリーム・プロセッサは、データ・ストリーム入力および/ま
たはデータ・ストリーム出力に結合され、かつ、命令が含まれている書き込み可
能な命令メモリを有するところの複数のデータ・ストリーム・プロセッサ;およ
び 前記データ・ストリーム入力から受信した前記データ・ストリームを処理する
ための所定の命令を順次実行する受信プロセッサ、および/または 前記データ・ストリーム出力に出力する前記データ・ストリームを処理するた
めの所定の命令を順次実行する送信プロセッサ; を備えることを特徴とする集積回路。
Claims: 1. A plurality of data stream inputs and / or outputs for receiving and / or transmitting a data stream; a plurality of data stream processors for processing the data stream, each data stream processor comprising: A plurality of data stream processors coupled to a data stream input and / or a data stream output and having a writable instruction memory containing instructions; and the data stream processor; A receiving processor for sequentially executing predetermined instructions for processing the data stream received from a stream input, and / or sequentially executing predetermined instructions for processing the data stream output to the data stream output. A transmitting processor to execute; Integrated circuit, characterized in that.
JP2000548818A 1998-05-08 1999-05-07 Digital communication processor Pending JP2003527755A (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US8470698P 1998-05-08 1998-05-08
US60/084,706 1998-05-08
US10582398P 1998-10-27 1998-10-27
US60/105,823 1998-10-27
PCT/US1999/010002 WO1999059078A1 (en) 1998-05-08 1999-05-07 Digital communications processor

Publications (1)

Publication Number Publication Date
JP2003527755A true JP2003527755A (en) 2003-09-16

Family

ID=26771325

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000548818A Pending JP2003527755A (en) 1998-05-08 1999-05-07 Digital communication processor

Country Status (6)

Country Link
EP (1) EP1082668A1 (en)
JP (1) JP2003527755A (en)
KR (1) KR100633755B1 (en)
CN (1) CN100422976C (en)
AU (1) AU4071499A (en)
WO (1) WO1999059078A1 (en)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
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
US7058064B2 (en) 2000-02-08 2006-06-06 Mips Technologies, Inc. Queueing system for processors in packet routing operations
US7032226B1 (en) 2000-06-30 2006-04-18 Mips Technologies, Inc. Methods and apparatus for managing a buffer of events in the background
US20020010810A1 (en) 2000-03-01 2002-01-24 Ming-Kang Liu xDSL function ASIC processor & method of operation
US6871257B2 (en) * 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
FR2856863B1 (en) * 2003-06-30 2005-08-19 Thales Sa METHOD AND DEVICE FOR MANAGING REDUNDANCY OF A REDUNDANT COMMUNICATION NETWORK
AU2003262927A1 (en) 2003-08-27 2005-04-14 Thomson Licensing S.A. Transport network multiplexer background of the invention
US7933207B2 (en) 2004-02-19 2011-04-26 Nxp B.V. Electronic stream processing circuit with test access
EP1647894A3 (en) * 2004-10-12 2007-11-21 NEC Electronics Corporation Information processing apparatus with parallel DMA processes
US7831749B2 (en) * 2005-02-03 2010-11-09 Solarflare Communications, Inc. Including descriptor queue empty events in completion events
US8724636B2 (en) * 2008-03-31 2014-05-13 Qualcomm Incorporated Methods of reliably sending control signal
US9129072B2 (en) * 2012-10-15 2015-09-08 Qualcomm Incorporated Virtual GPIO
US10318305B2 (en) * 2013-09-06 2019-06-11 Huawei Technologies Co., Ltd. System and method for an asynchronous processor with pepelined arithmetic and logic unit
US9674086B2 (en) * 2013-11-05 2017-06-06 Cisco Technology, Inc. Work conserving schedular based on ranking
CN105791296A (en) * 2016-03-08 2016-07-20 浪潮集团有限公司 Method for quickly scrambling and descrambling network message
CN105847233A (en) * 2016-03-10 2016-08-10 浪潮集团有限公司 Switch which carries out encrypted transmission according to fields
CN105978681A (en) * 2016-05-13 2016-09-28 浪潮集团有限公司 Anti-eavesdrop safe switcher
CN112486704B (en) * 2020-11-27 2024-02-06 中船重工(武汉)凌久电子有限责任公司 Multi-core multiprocessor synchronization and communication system based on shared storage

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4314355A (en) * 1977-05-18 1982-02-02 Martin Marietta Corporation Apparatus and method for receiving digital data at a first rate and outputting the data at a different rate
US4935674A (en) * 1988-12-27 1990-06-19 Rca Licensing Corporation Digitally controlled convergence system
WO1994003852A1 (en) * 1992-08-05 1994-02-17 David Sarnoff Research Center, Inc. Advanced massively-parallel computer apparatus
US5526051A (en) * 1993-10-27 1996-06-11 Texas Instruments Incorporated Digital television system
US5870436A (en) * 1997-01-02 1999-02-09 Raytheon Company Uniform discrete fourier transform filter parameter encoder

Also Published As

Publication number Publication date
CN100422976C (en) 2008-10-01
AU4071499A (en) 1999-11-29
KR20010043460A (en) 2001-05-25
WO1999059078A1 (en) 1999-11-18
CN1319209A (en) 2001-10-24
WO1999059078A9 (en) 2000-06-02
KR100633755B1 (en) 2006-10-16
EP1082668A1 (en) 2001-03-14

Similar Documents

Publication Publication Date Title
US7647472B2 (en) High speed and high throughput digital communications processor with efficient cooperation between programmable processing components
JP2003527755A (en) Digital communication processor
US6226267B1 (en) System and process for application-level flow connection of data processing networks
US7729351B2 (en) Pipelined packet switching and queuing architecture
US5311509A (en) Configurable gigabits switch adapter
US5640399A (en) Single chip network router
US5838904A (en) Random number generating apparatus for an interface unit of a carrier sense with multiple access and collision detect (CSMA/CD) ethernet data network
US5446726A (en) Error detection and correction apparatus for an asynchronous transfer mode (ATM) network device
US5668809A (en) Single chip network hub with dynamic window filter
US6714553B1 (en) System and process for flexible queuing of data packets in network switching
US6430184B1 (en) System and process for GHIH-speed pattern matching for application-level switching of data packets
US6522188B1 (en) High-speed data bus for network switching
US6324164B1 (en) Asynchronous transfer mode (A.T.M.) protocol adapter for a high speed cell switching system
US20020002626A1 (en) Function interface system and method of processing issued functions between co-processors

Legal Events

Date Code Title Description
A625 Written request for application examination (by other person)

Free format text: JAPANESE INTERMEDIATE CODE: A625

Effective date: 20060508

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20070411

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070411

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081007

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081225

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090130

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090721