JP2002149424A - 共有コプロセッサ・リソースに対する複数の論理インタフェース - Google Patents

共有コプロセッサ・リソースに対する複数の論理インタフェース

Info

Publication number
JP2002149424A
JP2002149424A JP2001265792A JP2001265792A JP2002149424A JP 2002149424 A JP2002149424 A JP 2002149424A JP 2001265792 A JP2001265792 A JP 2001265792A JP 2001265792 A JP2001265792 A JP 2001265792A JP 2002149424 A JP2002149424 A JP 2002149424A
Authority
JP
Japan
Prior art keywords
coprocessor
thread
clp
execution
data
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
JP2001265792A
Other languages
English (en)
Inventor
Gordon Taylor Davis
ゴードン・テイラー・デイビス
C Heads Marko
マルコ・シィ・ヘッズ
Rose Boyed Riwens
ロス・ボイド・リーベンス
Mark Anthony Rinaldi
マーク・アンソニー・リナルディ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2002149424A publication Critical patent/JP2002149424A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7864Architectures of general purpose stored program computers comprising a single central processing unit with memory on more than one IC chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 (修正有) 【課題】ネットワーク・プロセッサにおいて、プロトコ
ル・プロセッサ・ユニット(PPU)とコプロセッサと
の通信効率を上げる。 【解決手段】 組み込みプロセッサ複合体は複数のプロ
トコル・プロセッサ・ユニット(PPU)を含む。各ユ
ニットに少なくとも1つの、好適には2つの個別に機能
するコア言語プロセッサ(CLP)が含まれる。各CL
Pは、各PPUに用いられる複数の専用コプロセッサと
の論理コプロセッサ実行/データ・インタフェースを通
してデュアル・スレッドをサポートする。操作命令によ
り、PPUが待ち時間の長いイベントと短いイベントを
識別し、この識別をもとにスレッド実行の優先順位を制
御し切り替える。また操作命令により、指定された特定
のイベントの発生時または非発生時、特定のコプロセッ
サ・オペレーションの条件付き実行が可能になる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ネットワーク・プ
ロセッサ・システムに関し、特に1つ以上のプロトコル
・プロセッサ・ユニット(PPU)を含む組み込みプロ
セッサ複合体に関する。プロセッサ装置内でPPUと複
数のコプロセッサを相互接続するインタフェースを通し
て、それらの間でデータや命令を転送するため、PPU
とともに複数のコプロセッサが用いられる。
【0002】
【従来の技術】ネットワーク・プロセッサのプログラミ
ング機能を実現し、これを制御するためプロトコル・プ
ロセッサ・ユニットが用いられていることは周知の通り
である。同様に、コンピュータ・システム処理複合体ア
ーキテクチャを設計する際に、PPUとともにコプロセ
ッサが用いられることも一般的になっている。リアルタ
イム処理を必要とする処理イベントの遅れは、システム
性能に直接影響を与える問題である。PPUによりタス
クを実行するのではなく、特定のコプロセッサにタスク
を割当てることによって、コンピュータ・システムの効
率と性能を上げることができる。PPUがコプロセッサ
と効率よく通信することが重要である。この通信を改良
し続けることが求められる。
【0003】
【発明が解決しようとする課題】本発明の目的は、1つ
以上のコア言語プロセッサ(CLP)を含み、各CLP
が複数のスレッドを持ち、論理コプロセッサ・インタフ
ェースを通して特別タスク・コプロセッサに指示を与え
るプロトコル・プロセッサ・ユニット(PPU)を使用
することである。
【0004】本発明の他の目的は、共有コプロセッサ・
リソースにアクセスするため(プログラマから見て)複
数の論理コプロセッサ・インタフェースを使用すること
である。コプロセッサ・リソースは、PPU内の複数の
処理スレッドにより共有されることがあり、複数のPP
U間で1つのコプロセッサ・リソースが共有されること
もある。
【0005】本発明の他の目的は、PPUとそのコプロ
セッサのインタフェース側で有効になる特定の操作に関
する。この操作の1つは、コプロセッサ命令を条件付き
で実行する機能である。これは特にカウンタ・コプロセ
ッサで有効であるが、一般には他のコプロセッサにも適
用できる。コプロセッサ・インタフェースは、特定のコ
プロセッサ・コマンドに関する予測応答時間に従って、
待ち時間の長いイベントと短いイベントを識別する機能
を持つ。この識別により、スレッドを実行する優先順位
が制御される。
【0006】本発明の他の目的は、これまでのコプロセ
ッサ・インタフェースに比べてフレキシビリティと効率
が向上したコプロセッサ・インタフェースを提供するこ
とである。
【0007】
【課題を解決するための手段】以上の目的は、他の目的
を含めて、以下に述べるようにして達成される。
【0008】ネットワーク・プロセッサのプログラミン
グ機能を制御する組み込みプロセッサ複合体の動作につ
いて説明する。プロセッサ複合体は、複数のプロトコル
・プロセッサ・ユニット(PPU)を含み、PPUはそ
れぞれ1つ以上のコア言語プロセッサ(CLP)を含
む。CLPはそれぞれ複数のコード・スレッドを持つ。
各PPUが、PPUに対して特定のタスクを実行する上
で有用な複数のコプロセッサを利用する。複合体は、複
数の論理コプロセッサ・インタフェースを使用し、CL
Pとの共有コプロセッサ・リソースにアクセスする。C
LPにより特定の動作命令が実行され、これによりコプ
ロセッサにコマンドが送られる。これらの命令の1態様
は、特定のコプロセッサ命令の条件付き実行を可能にす
ることである。命令は、特定のコプロセッサ・コマンド
に関する予測応答時間に従って、待ち時間の長いイベン
トと短いイベントを識別することができる。これにより
複合体は、処理されている待ち時間の長さとタイプに応
じて、制御をスレッドからスレッドへ切り替えることが
できる。
【0009】
【発明の実施の形態】本発明については、ネットワーク
・プロセッサのプログラミング機能を提供し制御する埋
め込みプロセッサ複合体の文脈で説明する。複合体の実
施形態は通常、ハードウェア・アクセラレータと連携し
て高速パターン検索、データ操作、内部チップ管理機
能、フレーム解析、及びデータのプリフェッチをサポー
トする8つのメイン処理ユニットまたはプロトコル・プ
ロセッサ・ユニット(PPU)を含む。各PPUはそれ
ぞれ構造コンポーネントを含み、構造コンポーネントは
2つのCLPと、少なくとも1つ、好適には数個の専用
/共有コプロセッサ・ユニット、及びメイン処理ユニッ
トと各コプロセッサ・ユニットのインタフェースを含
む。
【0010】各コプロセッサ・ユニットは、特定のネッ
トワーク・タスクを実行することができる。メイン処理
ユニットは、記憶プログラムの一連の命令を実行する。
コプロセッサ・ユニットはそれぞれ、該メイン処理ユニ
ットを担当し、メイン処理ユニットの制御下で特定のタ
スクを効率よく実行するようにされる。メイン処理ユニ
ットと各コプロセッサ・ユニットのインタフェースによ
り、次の機能のうち1つ以上が有効になる。各コプロセ
ッサ・ユニットの構成、各コプロセッサ・ユニットによ
り完了する特定のタスクの起動、各コプロセッサ・ユニ
ットに関するステータス情報へのアクセス、及び各コプ
ロセッサ・ユニットにより完了する特定のタスクに関す
る結果を返す手段の提供である。メイン処理ユニットと
コプロセッサ・ユニットはそれぞれ1つ以上の専用レジ
スタを含む。インタフェースは、専用レジスタを該メイ
ン処理ユニットとコプロセッサ・ユニットから共通アド
レス・マップにマップすることができる。
【0011】各PPUはそれぞれ1つ以上のコア言語プ
ロセッサ(CLP)及び数個の専用コプロセッサを含
む。PPUに複数のCLPが含まれるとき、コプロセッ
サはCLP間で共有される。
【0012】各CLPはそれぞれ1つの演算論理ユニッ
ト(ALU)を含み、2つのコード・スレッドをサポー
トする(PPU毎に合計4つのスレッド)。CLPとコ
プロセッサは、スカラ・レジスタとアレイ・レジスタを
含む専用レジスタの個別コピーを格納する。特定のコプ
ロセッサは、CLPからコプロセッサのアレイ・レジス
タやスカラ・レジスタへのコプロセッサ・コマンドの転
送を調整するFIFOバッファを含む。CLPは一度に
1つのスレッド・コマンドのみ実行する。プログラマか
ら見ると、各スレッドはそれぞれ自体のコプロセッサま
たはコプロセッサ・セットに見える。コプロセッサのほ
とんどは、専用機能を実行し、相互に並行して、またC
LPとともに動作することができる。
【0013】PPUの制御記憶は、通常、内部メモリと
外部メモリの両方により与えられる。例えば即時アクセ
スには内部SRAMを、高速アクセスには外部ZBT
SRAMを、大容量が求められる場合にはDDR SD
RAMを使用できる。
【0014】図1に、ツリー検索エンジン12、チェッ
クサム・コプロセッサ20、ストリング・コピー・コプ
ロセッサ22、エンキュー・コプロセッサ24、データ
ストア・コプロセッサ26、制御アクセス・バス・コプ
ロセッサ28、カウンタ・コプロセッサ30、及びポリ
シ・コプロセッサ32を含む数個のコプロセッサとのデ
ータ・インタフェース14と実行インタフェース16を
維持するプロトコル・プロセッサ・ユニット(PPU)
10を示す。
【0015】PPUは、コア言語プロセッサ(CLP)
のペア34及び36を含む。各CLPに命令フェッチ・
デコード/実行ユニット、複数の専用レジスタ、汎用レ
ジスタ、及び2つのスレッドが含まれる。コプロセッサ
実行インタフェース(CPEI)アービタ40は、2つ
のCLPとコプロセッサ間で命令を調停する。コプロセ
ッサ・データ・インタフェース(CPDI)アービタ4
2は、コプロセッサとCLP34及び36間で通信の優
先順位を確認する。CLPの命令は全て命令メモリ(図
1には示していない)に保存される。
【0016】CLP#1 34は、バス46を通してハ
ードウェア・クラシファイア(classifier)からの通信
を受信する。ハードウェア・クラシファイアは、ディス
パッチャからの刺激を与え、新しいパケットの処理を開
始する。CLPは、命令メモリからのフェッチ命令をバ
ス48を通して送り、新しいパケットを処理する。同様
にCLP36は、バス50を通してハードウェア・クラ
シファイアから分類結果を受信し、バス52を通して命
令メモリ・インタフェースに要求を送る。命令メモリ・
インタフェースとハードウェア・クラシファイアはPP
Uの外部にあり、図1には示していない。
【0017】エンキュー・コプロセッサ24はバス60
を通して外部完了ユニット(図示せず)に命令を送る。
データストア・コプロセッサ26は、データをバス62
を通して入口データストア・インタフェースに、または
バス64を通して出口データストア・インタフェースに
送る。制御データのフローは、バス68を通して外部制
御アクセス・バス・アービタ(図示せず)により調停さ
れる。アクセスの調整は、書込まれているか読取られて
いるデータがバス70を通して流れている間にCABア
ービタ68上で行われる。データ・アクセスはバス70
を通して入力または出力される。カウンタ・コプロセッ
サ30とポリシ・コプロセッサ32はそれぞれ、カウン
タ・マネージャとポリシ・マネージャへのアクセスを、
それぞれバス72及び74を通して提供する。
【0018】図2に、本発明に従った2つのCLPの他
の詳細を示す。各CLPはそれぞれ汎用レジスタ80と
専用レジスタ82を含む。これら専用レジスタは複数の
スカラ・レジスタ84とアレイ・レジスタ86を含む。
また命令フェッチ/デコード/実行の機能88も含む。
【0019】処理複合体は次のコンポーネントを含む。 ・複数のプロトコル・プロセッサ・ユニット。好適な実
施例では、サーバが8つのプロトコル・プロセッサ・ユ
ニット(PPU)を使用する。各PPUに、複数(図で
は7つ)のコプロセッサを共有する1つ以上のCLPが
含まれる。PPUは、フレームを転送し、テーブルを更
新し、ネットワーク処理ユニットを維持するためのコー
ドを実行する。
【0020】CLPは、共通命令メモリに保存されたコ
ードを並行して実行する。各CLPはコアと3ステージ
のパイプライン、16のGPR(汎用レジスタ)、及び
ALU(演算論理ユニット)を含む。コプロセッサは操
作を互いに並行して、またCLPと並行して実行するこ
とができる。コプロセッサは、CLPとインタフェース
を取る際、基本CLP命令とレジスタ・モデルを拡張す
る。各コプロセッサのコマンドは新しいアセンブラ・ニ
ーモニックとして現れ、コプロセッサのレジスタは、C
LPプログラマから見て新しいスカラ・レジスタ、及び
アレイ・レジスタとして現れる。アレイ・レジスタの一
部は共有メモリ・プール44に位置する。コプロセッサ
はCLPと非同期に実行可能である。これによりCLP
は、コプロセッサがコマンドを実行している間に命令の
処理を続けることができる。CLPは、待機命令により
コプロセッサのコマンド実行が完了するまで待機する。
【0021】命令メモリ56は通常、8つの組み込みR
AMで構成される。これらは、初期化時にロードされ、
フレームを転送し、システムを管理するプログラム命令
を格納する。命令メモリは、データ転送タスク、管理ト
ラフィック、及び制御タスクのため16Kの命令を保持
する。
【0022】ディスパッチャ・ユニット。これはスレッ
ドの使用を管理し、新しいフレームをフェッチしアイド
ル・スレッドにディスパッチする。データ・フレーム
は、次に使用できるPPUにディスパッチされる。これ
によりアップ/ダウン・ディスパッチャ・キュー(up
−GDQ、up−GCQ、dn−GRO/1、dn−G
BO/1、及びdn−GCQ)からフレーム・アドレス
のエンキューが解除される。エンキュー解除の後、ディ
スパッチャ・ユニットはアップ/ダウン・データストア
(DS)からフレーム・ヘッダの一部を読取り、これを
共有メモリ・プール44に保存する。CLPがアイドル
になるとすぐ、ディスパッチャ・ユニットがコード命令
アドレス(CIA)等の対応する制御情報をバス46ま
たは50を介してCLPに渡す。ディスパッチャは別の
バス58を使用してヘッダ情報を共有メモリ・プール4
4に送る。ディスパッチャはまたタイマと割込みを処理
するため、それらの機能の作業を利用できるスレッドに
ディスパッチする。
【0023】ツリー検索メモリ(TSM)アービタ11
0。内部と外部に複数の共有メモリ位置があり、各CL
Pから利用できる。このメモリは共有されるので、アー
ビタはメモリ・アクセス制御に用いられる。TSMはコ
ードによって直接アクセスでき、例えばTSMにルーテ
ィング・テーブルを保存するため使用できる。またTS
Mは、ツリー検索時にTSE12によりアクセスされ
る。
【0024】完了ユニット(CU)。完了ユニットは2
つの機能を実行する。第1に、CLPとUp/Dn E
DS(エンキュー、エンキュー解除、及びアイランドの
スケジュール(Schedule Island)のインタフェースを
取る。EDSはエンキュー操作を実行し、これによりフ
レーム・アドレスがFCBPageと呼ばれるパラメー
タとともに転送キュー、破棄キュー、またはディスパッ
チャ・キューにエンキューされる。ターゲットが転送キ
ューのとき、ハードウェアにより構成されるフロー制御
機構によって、フレームを転送キューにエンキューする
か、破棄キューにエンキューするか確認される。第2
に、完了ユニットはフレーム・シーケンスを保証する。
同じフローに属するフレームは複数のスレッドによって
処理される可能性があるので、それらのフレームがUp
/Dn転送キューに正しい順序でエンキューされるよう
な予防措置が必要である。完了ユニットは、フレーム・
ディスパッチ時にハードウェア・クラシファイア54に
より生成されるラベルを使用する。
【0025】ハードウェア・クラシファイア。これはデ
ィスパッチ・ユニットとPPUの間のデータ・パスに置
かれる。分類を行い、宛先スレッドに情報を提供する。
Upフレームの場合、ハードウェア・クラシファイア・
アシストがフレーム・フォーマットの周知のケースにつ
いて分類を行う。分類結果は、フレーム・ディスパッチ
の間、CIA(コード命令アドレス)及び4つのGPR
(汎用レジスタ)の内容の形でCLPに渡される。Dn
フレームの場合、ハードウェア・クラシファイア・アシ
ストが、フレーム・ヘッダに応じてCIAを確認する。
ハードウェア・クラシファイア・アシストは、Up及び
Dn両方のフレーム・ディスパッチでは、フレーム・シ
ーケンスを維持するため完了ユニットにより用いられる
ラベルを生成する。
【0026】Up/Dnデータストア・インタフェース
とアービタ。各スレッドからデータストア・コプロセッ
サ26を通してUp/Dnデータストアにアクセスする
ことができる。"他のデータ"を読取るときは読取りアク
セスができ、データプールの内容をデータストアに書戻
すときは書込みアクセスができる。複数のスレッドがあ
り、Upデータストアに一度にアクセスできるのは1ス
レッドのみ、Dnデータストアに一度にアクセスできる
のも1スレッドのみなので、データストア毎に1つのア
ービタが必要である。
【0027】制御アクセス・バス(CAB)アービタと
WEBWatchインタフェース。CABアービタはC
ABへのアクセスをスレッド間で調停する。スレッドは
全て、CABコプロセッサ28を通してCABにアクセ
スすることができる。これによりプロセッサ・ユニット
にある全てのメモリ及びレジスタの機能にアクセスでき
る。またどのスレッドも、全ての構成領域を変更または
読取ることができる。CABは、プロセッサ・ユニット
のメモリ・マップと考えることができる。
【0028】CABWatchインタフェースは、3つ
のチップI/Oを使用して、チップ外部からCAB全体
へのアクセスを提供する。
【0029】デバッグ、割込み、シングル・ステップ制
御。CABにより、GCHスレッドまたはCABWat
chが各スレッドを制御することができる。例えばGF
HスレッドまたはCABWatchがCABを使用し
て、シングル・ステップ実行モードで選択されたスレッ
ドを実行することができる。
【0030】コア言語プロセッサ(CLP):ネットワ
ーク・サーバは、そのアーキテクチャで数種類のCLP
を利用する。CLPの種類は、それぞれ特定の機能を処
理するようにプログラムされる。
【0031】GDHは、汎用データ・ハンドラで、主に
フレームの転送に用いられる。通常、GDHはそれぞれ
専用制御プロセッサを持つ。制御プロセッサはそれぞ
れ、本発明に従って複数のコプロセッサを使用する。シ
ステムに必要なCLPの数は一般に、パフォーマンス評
価により求められる。アーキテクチャと構造は完全にス
ケーラブルであり、シリコン領域によってのみ制限され
る。CLPの数が増えると、シリコン領域に含まれるア
ービタと命令メモリが大きくなる。
【0032】管理セル・ハンドラ(GCH)のハードウ
ェアはGDHと同じであるが、管理フレームはGCHに
よってのみ処理できる。GCHがデータ・フレームも処
理するようになっている場合はWeb(CLP対応レジ
スタ)上でプログラミングできる(その場合GDHの役
割を担う)。GCHは、ツリーの挿入や削除を行うた
め、GDHハードウェア・アシストにはないハードウェ
アを含む。GCHは、管理セル関連コードの実行、エー
ジングのようなチップ、ツリー管理関連コードの実行、
及びCPや他のGCHとの制御情報の交換に用いられ
る。そのような実行タスクがない場合、GCHはフレー
ム転送関連コードを実行し、その場合はGDHと全く同
じように動作する。
【0033】汎用プロセッサ・ハンドラ(GPH)。こ
のプロセッサは、Power PCに接続されるハードウェア・
メールボックスにアクセスする。RIT1/2にはPowe
r PCはないので、GPHはGDHと全く同じように動作
する。
【0034】汎用ツリー・ハンドラ(GTH)には、ツ
リーの挿入、ツリーの削除、及びロープの管理を行うた
め、GDH及びGCHハードウェア・アシストにはない
ハードウェアがある。GTHは、GPQにツリー管理コ
マンドを含むフレームがないときデータ・フレームを処
理する。
【0035】図2を参照する。CLP#1 34は、命
令フェッチ/デコード/実行ユニット88、汎用レジス
タ80、及びスカラ・レジスタ84とアレイ・レジスタ
86が含まれる専用レジスタ82を含む。CLP#2
36も同種のコンポーネントを含む。
【0036】CLP34は、2つの命令を除いて、その
実行ユニット102内で命令を完全に実行する。2つの
例外は、図4の直接/間接コプロセッサ実行命令417
である。これら2つの命令は、接続されたコプロセッサ
のうち1つでコマンド処理を開始する。コプロセッサは
コマンドを互いに並行して実行でき、またCLP内の命
令処理と並行して実行できる。CLP命令にコプロセッ
サがかかわるときは、コプロセッサ識別子と呼ばれ、操
作のため選択されたコプロセッサを示す0乃至15の範
囲内の4ビットの数が指定される。
【0037】共有メモリ・プール: 4Kバイトの共有メモリ・プール44は、コプロセッサ
の少なくとも一部に対するアレイ・レジスタを保持す
る。PPUで動作する全てのスレッドにより用いられ
る。各スレッドにより1Kバイトが用いられ、次の領域
に分けられる。FCBpage(エンキュー・コプロセ
ッサのアレイ・レジスタと見なされる)、データ・フェ
ッチ、スクラッチ・メモリ領域(CLPのアレイ・レジ
スタと見なされる)、及びシステム領域である。プール
はスレッド数に応じて、等しいセグメントに分けられて
いると見なすことができる。各セグメントでは、アドレ
ス・スペースがCLP及びアレイ・レジスタを必要とす
る各種コプロセッサのアレイ・レジスタに分けられる。
プールのアドレス・ラインのうち2つは、どのCLPが
アクティブか、どのスレッドがアクティブかに応じて駆
動される。
【0038】PPUコプロセッサ:コプロセッサはそれ
ぞれ専用ハードウェア・アシスト・エンジンであり、コ
アに組み込まれた場合は、大量の直列化コードを必要と
するような機能を実行する。コプロセッサはCLPと並
列に動作し、IPヘッダの変更、フロー制御アルゴリズ
ムに用いられるフロー情報の維持、CABを介した内部
レジスタへのアクセス、フロー制御及び管理情報ブロッ
ク(MIB)のカウントの維持(標準とプロプライエタ
リ)、転送されるフレームのエンキュー等、データの移
動に用いられる機能を提供する。プロセッサはそれぞ
れ、他に明記しない限り、PPUの各スレッドに対する
スカラ・レジスタとアレイのセットを維持する。
【0039】再び図2を参照する。PPU10は2つの
コア言語プロセッサ34、36と接続された数個のコプ
ロセッサ12、20、22、24、26、28、30及
び32を含む。これらのコプロセッサは、高速パターン
検索、データ操作、内部チップ管理機能、フレーム解
析、及びデータ・フェッチ等、特定のネットワーク処理
タスクについてハードウェア・アクセラレーションを実
現する。
【0040】以下、各種コプロセッサとその機能につい
て説明する。
【0041】ツリー検索コプロセッサ:ツリー検索エン
ジン(TSE)コプロセッサ12には、コプロセッサ識
別子2が割当てられる。TSEは、ツリー管理とアービ
タ110を介したツリー検索メモリへの直接アクセスに
関するコマンドを持つ。LPM(可変長の一致を必要と
する最長プレフィックス一致パターン)、FM(正確な
一致のある固定サイズ・パターン)、及びSMT(範囲
またはビット・マスク・セットを定義するパターンを伴
うソフトウェア管理ツリー)の検索を行うアルゴリズム
を持ち、フレームの転送、及び変更情報を取得する。コ
プロセッサ識別子1が割当てられるデータストア・コプ
ロセッサ26は、フレーム・データの収集、変更、また
はネットワーク・プロセッサのフレーム・データ・メモ
リ112への導入に用いられる。本発明に有用なツリー
検索のアーキテクチャや動作の詳細については、米国特
許出願ドケット番号RAL9990139、同RAL9
990140、及びRAL9990141を参照された
い。
【0042】チェックサム・コプロセッサ:従来のチェ
ックサム・コプロセッサ20は、インターネット・チェ
ックサムを計算するため提供されるアルゴリズムを使用
してチェックサムを計算し検証する。その際、ハーフワ
ード・データに対してチェックサム操作を実行し、ハー
フワード・チェックサム結果を返す。次のコマンドを使
用できる。 ・チェックサム生成、及び ・チェックサム確認
【0043】コマンドの結果は累算スカラ・レジスタと
ステイク・スカラ・レジスタに置かれる。累算スカラ・
レジスタは、チェックサム計算の結果を格納し、ステイ
ク・スカラ・レジスタは、チェックサムに含まれる最後
のハーフワードに続くバイト位置を格納する。チェック
サム・コプロセッサのデータは共有メモリ・プールに置
かれる。
【0044】コプロセッサに対するコマンドは次のオプ
ションを含む。 1)IPヘッダ:IPヘッダが指示されたとき、レイヤ
3ヘッダの開始位置(つまりステイク)が渡される。ハ
ードウェアが、ヘッダ長フィールドからIPヘッダの長
さを確認し、この値を長さスカラ・レジスタにロードす
る。チェックサムを生成する際、現在のチェックサムを
格納したハーフワードの代わりに0の値が用いられる。 2)データ・ブロック:共有メモリ・プールにあるデー
タは、データのブロックとして処理され、チェックサム
を生成または確認することができる。共有メモリ・プー
ルの開始位置及び長さが渡される。データのブロックを
確認する際、チェックサムは累算スカラ・レジスタに置
かれる。データのブロックをチェックする際、チェック
サムは累算レジスタに置かれている。
【0045】エンキュー・コプロセッサ:エンキュー・
コプロセッサ24は2つの機能を提供する。 1)コードにより、ワーキングFCBPageと呼ば
れ、アップ/ダウンFCBページを作成するため用いら
れる256ビット・レジスタ、FCB(フレーム制御ブ
ロック)ページを作成することができる。レジスタは、
フレームをEDS(エンキュー、デキュー/スケジュー
リング)アップまたはEDSダウンでエンキューするた
め必要な全てのパラメータを格納する。レジスタに格納
されるパラメータの例として、アップのFCBアドレ
ス、ターゲット・パート番号、フレーム変更情報、及び
次ループID等がある。 2)CLPと完了ユニット(CU)のインタフェースを
提供する。CUはCLPから独立して動作するが、CL
Pプロセッサ毎にReady FCBPageというレ
ジスタを格納する。レジスタは、エンキューの後、CU
にコピーされ、その後、エンキューはエンキュー・プロ
セッサにより引き継がれる。その際、CLPが解放され
て次のフレームが処理される。EQはそのレディ・ビッ
ト(?)を設定する。ただし、CUのReady FC
BPageが空でない場合、EQは、EQレジスタが空
になるまでCLPからCUへの転送をブロックし、その
後転送を可能にする。エンキュー・コプロセッサは、ス
レッドと完了ユニットの間のインタフェース及び共有メ
モリ・プールに維持されるFCBPageの使用を管理
する。各スレッドに3つのFCBPage位置があり、
フレームに関するエンキュー情報をそこに維持すること
ができる。ページのうち2つは、連続したエンキュー間
で2つのページをスワップすることによって、完了ユニ
ット・インタフェースに対するパフォーマンスを改良す
るため用いられる。スレッドに対して書かれるアセンブ
リ言語コードは、ハードウェアによって管理されるので
これら2つのページを区別しない。3番目のページは、
コードにより新しいフレームを作成できるようにするた
めスレッドにより用いられる。この例として、学習のた
めの管理トラフィック(guided traffic for learnin
g)の作成がある。これはGTHスレッドにより実行さ
れるように再エンキューされる。
【0046】CLPスレッドがエンキュー・コマンドを
発行すると、FCBPageは使用中と指示される。他
の位置が使用できる場合は、エンキュー・コプロセッサ
からの応答を待たずに新しいフレームがスレッドにディ
スパッチされる。完了ユニットは、エンキュー・コプロ
セッサを通して共有メモリ・プールからFCBPage
をフェッチし、これをEDS(エンキュー・コマンドに
より示される入口または出口)に提供する。これが起こ
るとFCBPageはフリーと指示される。両方のFC
BPageが使用中と指示された場合、第3のフレーム
は起動できない。
【0047】エンキュー・コプロセッサでは次のコマン
ドがサポートされる。 ・エンキュー入口(ENQUP)は、完了ユニットを介
して入口フロー制御/スケジューラにエンキューする。 ・エンキュー出口(ENQDN)は、完了ユニットを介
して出口フロー制御/スケジューラにエンキューする。 ・エンキュー・クリア(ENQCLR)は、現在のFC
BPageをクリアする(全フィールドを0に設定す
る)。
【0048】データストア・コプロセッサ:このコプロ
セッサ26は次の機能を実行する。 1)アップ・データストア及びダウン・データストアと
のインタフェースを取る。 2)タイマ・イベントのディスパッチまたは割込みのと
き構成情報を受信する。 3)フレームのチェックサムを計算する。 このコプロセッサは通常、320バイトのデータ・バッ
ファ及びそれぞれ128ビットのワード8個のメモリを
含む。
【0049】フレーム・データはデータストア・コプロ
セッサを通してアクセスされ、メディアから受信された
フレームを格納する入口データストアと、パケット・ル
ーティング・スイッチから受信され再アセンブルされた
フレームを格納する出口データストアとのインタフェー
スが取られる。また、タイマ・イベントのディスパッチ
や割込みのとき構成情報も受信される。
【0050】データストア・コプロセッサは、共有メモ
リ・プールで定義されたアレイを使用する。アレイはデ
ータプールであり、8つのクォドワード及び2つのスク
ラッチ・アレイを保持でき、スクラッチ・アレイの1つ
は8つのクォドワード、もう1つは4つのクォドワード
を保持する。データストア・コプロセッサには、入口、
出口のデータストアとの間のアレイ内容の読取り、書込
みの制御に用いられる別のスカラ・レジスタが維持され
る。データストア・コプロセッサによりサポートされる
スレッド毎に、アレイとスカラ・レジスタの1セットが
定義されている。
【0051】これら共有メモリ・プールのアレイは、デ
ータストア・コプロセッサの作業領域になる。データス
トアを直接読取りまたはそこに直接書込む代わりに、大
量のフレーム・データがデータストアからこれら共有メ
モリ・プールのアレイに読取られるか、または大量のデ
ータがこれらアレイからデータストアに書込まれる。転
送単位はクォドワードであり、クォドワードは16バイ
トとして定義される。
【0052】データストア・コプロセッサには次のコマ
ンドを使用できる。 1)出口データストア書込み(WRDNDS):CLP
により出口データストアへの書込みができる。書込みは
クォドワード単位の倍数でのみ発生する。データはデー
タストア・コプロセッサのアレイのいずれか(データプ
ールまたはスクラッチ・アレイ)から取られる。 2)出口データストア読取り(RDDNDS):CLP
により出口データストアからデータを読取り、データス
トア・コプロセッサのアレイの1つに入れることができ
る。読取りは、出口データストアに対して、クォドワー
ド単位の倍数でのみ発生する。 3)入口データストア書込み(WRUPDS):CLP
により入口データストアへデータを書込むことができ
る。読取りは、入口データストアに対して、クォドワー
ド単位の倍数でのみ発生する。 4)入口データストア読取り(RDUPDS):CLP
により入口データストアからデータを読取ることができ
る(クォドワード単位の倍数でのみ)。 5)出口データストアからの他のフレーム・データの読
取り(RDMOREDN):出口データストアからのハ
ードウェア・アシスト読取り。RDMOREDNは、最
後の読取りが停止したところからフレームの読取りを続
け、データをデータプールに置く。データはデータプー
ルに移されるので、ハードウェアは、読取られているフ
レームの現在位置を管理し、次のツイン・バッファの位
置を確認するためツイン・バッファからリンク・ポイン
タをキャプチャする。このアドレスは、ツインが尽きて
次のツインが読取られるまで、後続のRDMOREDN
要求のためハードウェアにより用いられる。データプー
ルの内容はツインの内容のマップなので、データプール
内でフレーム・データがラップされる可能性がある。コ
ードによりデータプール内のデータの位置が管理され
る。 6)入口データストアからの他のフレーム・データの読
取り(RDMOREUP):入口データストアからのハ
ードウェア・アシスト読取り。RDMOREUPは、最
後の読取りが停止したところからフレームの読取りを続
け、データをデータプールに置く。データはデータプー
ルに移されるので、ハードウェアは、読取られているフ
レームの現在位置を管理し、フレームの次のデータ・バ
ッファの位置を確認するためバッファ制御ブロック領域
に維持されたリンクをキャプチャする。このアドレス
は、データ・バッファが尽きて次のバッファが読取られ
るまで、後続のRDMOREUP要求のためハードウェ
アにより用いられる。コードによりデータプール内のフ
レームのデータの位置が管理される。 7)リース・ツイン・バッファ(LEASETWI
N):フリー・ツイン・バッファ(出口データストアで
新しいデータを作成するときに用いられる)のアドレス
を返す。
【0053】制御アクセス・バス(CAB)コプロセッ
サ:このコプロセッサ28では、ネットワーク・プロセ
ッサが、ネットワーク・プロセッサ・システム全体で、
選択されたレジスタを制御することができる。システム
初期化等のために特定のレジスタを初期化でき、システ
ム診断やメンテナンスのため特定のレジスタを読取るこ
とができる。
【0054】コプロセッサは、組み込みプロセッサ複合
体(EPC)Webアービタとインタフェースを取る。
アービタはCLPとWebウォッチ間の調停を行う。こ
れによりCLPは全てWeb上で読取り、書込みができ
る。
【0055】CABコプロセッサは、CLPスレッドに
関してCABアービタと制御アクセス・バスにインタフ
ェースを与える。スレッドは、CABのアドレス、デー
タ等、CABアクセスのオペランドをロードする必要が
ある。その場合、CABにアクセスするプロトコルは、
CABインタフェース・コプロセッサにより処理され
る。CABインタフェース・コプロセッサは次のコマン
ドを提供する。 ・CABアクセス調停(WEBARB):CABへのア
クセスを取得するためスレッドにより用いられる。アク
セスが取得されると、スレッドはCABを解放するまで
CABの制御を維持する。 ・CAB読取り/書込み(WEBACCESS):CA
B及びCABからアクセスできる接続されたレジスタと
の間でデータを移動する。PPU内の送信元と宛先は汎
用レジスタ(GPR)である。 ・CAB優先使用(WEBPREEMPT):GFHス
レッドによってのみ用いられ、これによりGFHは、1
回の読取り/書込みアクセスについて、CABがすでに
他のスレッドに与えられている場合でもCABの制御を
取得する。
【0056】チェックサム、データストア、エンキュ
ー、CABの各コプロセッサのアーキテクチャ、動作に
関する他の詳細については、整理番号RAL99900
83の米国特許出願、"String Copy(StrCopy)Coproce
ssor"を参照されたい。
【0057】ストリング・コピー・コプロセッサ22は
CLPの機能を拡張し、データのブロックを移動する。
データは共有メモリ・プール内でのみ移動する。次のコ
マンドが使用できる。 ・ストリング・コピー(Strcopy):このコマンドは、
アレイ間でデータの複数のバイトを移動するため用いら
れる。コマンドは、ソース・データ・ブロックとシンク
・データ・ブロックの開始バイト位置及び移動するバイ
ト数を渡す。
【0058】カウンタ・コプロセッサ:カウンタ・コプ
ロセッサ30は、全PPU間で共有できるカウンタ・マ
ネージャ(図示せず)へのアクセスをバス72を通して
提供する。コプロセッサは、全てのカウンタ・プログラ
ムとインタフェースを取り、カウンタの更新を行う。ス
カラ・レジスタとコプロセッサ実行インタフェース16
間のFIFOバッファ76で実装される。アレイ・レジ
スタとコプロセッサ・データ・インタフェース14間に
第2FIFOバッファ78が置かれる。スレッドはそれ
ぞれ自体のカウンタ・コプロセッサを持っているかのよ
うに動作する。このコプロセッサには外部(PPUに対
して)アドレス/データ・バスが用いられる。これによ
り、外部バスを通してカウンタ・コプロセッサを使用す
るため2つ以上のPPUが調停を行えるようにシステム
を実装することができる。
【0059】スレッドは、カウンタ・コプロセッサを通
してカウンタの更新を要求し、カウンタ・マネージャが
操作を完了するのを待たずに処理を続けることができ
る。カウンタ・コプロセッサはその要求をカウンタ・マ
ネージャに通知し、カウンタ・アクセス・コマンドのオ
ペランドを処理のためカウンタ・マネージャに渡す。カ
ウンタ・コプロセッサには、PPUで動作する4つのス
レッドにより発行されたカウンタ・アクセス・コマンド
を入れる8ディープ・キューがある。カウンタ・コプロ
セッサは次のコマンドを提供する。
【0060】カウンタ・アクセス(CtrAccess)は、カ
ウンタを増分するかまたはカウンタに値を追加する。コ
マンド・オペランドは、カウンタ識別子(カウンタ・メ
モリの形)、インデックスとオフセット、増分もしくは
追加コマンド、値フィールド、カウントの読取りもしく
は書込み、またはカウント値の読取りとクリアである。
スレッドは、カウンタ・コプロセッサ・キューが一杯で
なければ、コマンドの実行を待たない。
【0061】カウンタ・コプロセッサとその動作につい
て詳しくは、整理番号RAL920000078US1
の米国特許出願、"Coprocessor for Managing Large Co
unter Arrays"を参照されたい。
【0062】ポリシ・コプロセッサ:ポリシ・コプロセ
ッサ32は、スレッドに関してポリシ・マネージャ(図
示せず)とのインタフェース74を提供する。スカラ・
レジスタとコプロセッサ実行インタフェース16間のF
IFOバッファ76で実装される。アレイ・レジスタと
コプロセッサ・データ・インタフェース14間には第2
FIFOバッファ78が置かれる。スレッドは、このイ
ンタフェースを通してフレームの"カラー"の更新を要求
する。フレームのカラーは、ネットワーク・プロセッサ
の構成可能なフロー制御機構の一部として用いられ、こ
の機構によりフレームに対する処理が決定される。スレ
ッドはポリシ・マネージャが、ポリシ・コプロセッサを
介して結果を返すまで待機する必要がある。ポリシ・マ
ネージャは、このフレームがメンバーであるフローにつ
いてポリシ制御ブロックにアクセスする。オペランドに
は、ポリシ制御ブロック・アドレス、パケット長、フレ
ームに現在割当てられているカラー等がある。返される
結果はフレームの新しいカラーである。
【0063】CLP34、36はそれぞれ、コプロセッ
サ実行インタフェース16とコプロセッサ・データ・イ
ンタフェース14の2つのインタフェースを通してコプ
ロセッサ12、20、22、24、26、28、30及
び32に接続される。これらのインタフェースの機能に
ついては図4で詳しく説明する。
【0064】PPU内のコプロセッサはそれぞれ、4ビ
ット・コプロセッサ識別子により識別される。各コプロ
セッサが最大256の専用レジスタをサポートする。コ
プロセッサ内の専用レジスタは、0乃至255の範囲の
8ビット・レジスタ番号により識別される。コプロセッ
サ番号(CP#)とレジスタ番号の組み合わせにより、
PPU内のレジスタが識別される。スカラ・レジスタと
アレイ・レジスタの2種類の専用レジスタがある。
【0065】レジスタ番号0乃至239はスカラ・レジ
スタに予約されている。スカラ・レジスタは最小1ビッ
ト、最大32ビットである。スカラ・レジスタのビット
には0乃至31までの番号が振られ、0は右端またはL
SB(least significant bit)、31は左端またはM
SB(most significant bit)である。32ビット未満
の長さのスカラ・レジスタは右揃えされ、残りのビット
は非実装と見なされる。CLPが32ビット未満の長さ
のスカラ・レジスタを読取るとき、非実装ビットの値は
ハードウェアに依存する。非実装ビットへの書込みは無
効である。
【0066】レジスタ番号240乃至255はアレイ・
レジスタに予約されている。アレイ・レジスタは最小2
バイト、最大256バイトである。CLPはアレイ・レ
ジスタを読取るか書込み、共有メモリ・プール44内で
一度に2バイト(ハーフワード)、一度に4バイト(ワ
ード)、または一度に16バイト(クォドワード)パー
ティションをきる。
【0067】汎用レジスタの使用方法は周知の通りであ
り、ここでは一般的なことについて述べる。プログラマ
から見た汎用レジスタは2通りある。汎用レジスタは、
0、2、4、...14の集合から4ビット数で表され
る32ビット・ラベルで示されるように、32ビット・
レジスタと見なすこともできる。この意味でプログラマ
は8個の32ビット汎用レジスタを扱う。またプログラ
マは汎用レジスタを、0、1、2、...15の集合か
らの4ビット数として表される16ビット・ラベルに従
って、16ビット・レジスタとして扱うこともできる。
この意味でプログラマは16個の16ビット・レジスタ
を扱う。
【0068】各コプロセッサに、ビジー信号フィールド
からの情報を格納するステータス・レジスタが含まれ
る。このレジスタは、所与のコプロセッサが利用できる
か、またはビジー状態かどうかをプログラマに示す。コ
プロセッサ完了コード・レジスタが図4のOK/K.
O.フィールド415からの情報を格納する。従って、
プログラマは、所与のコプロセッサがビジーかまたは利
用できるか知る必要のある場合、この情報をコプロセッ
サのステータス・レジスタから取得することができる。
同様にコプロセッサ完了コード・レジスタが、コプロセ
ッサ・タスクの完了についてプログラマに情報を提供す
る。
【0069】各CLPに次の16ビット・プログラム・
レジスタが含まれる。プログラム・カウンタ・レジス
タ、プログラム・ステータス・レジスタ、リンク・レジ
スタ、及びキー長レジスタである。タイムスタンプ・レ
ジスタと乱数ジェネレータ・レジスタの2つの32ビッ
ト・レジスタも追加される。前記レジスタそれぞれにス
カラ・レジスタ番号も与えられる。
【0070】プログラマから見た汎用レジスタは2通り
考えられる。プログラマは汎用レジスタを32ビット・
レジスタと見なすことができ、16ビット・レジスタと
見なすこともできる。
【0071】アレイ・レジスタは、アレイ・レジスタ番
号を通してプログラマに知られる。
【0072】図4は、コプロセッサ実行インタフェース
16とコプロセッサ・データ・インタフェース14を通
してCLP34をそのコプロセッサ401に接続するイ
ンタフェース信号を示す。個々のワイヤ接続数は、個々
の割当てアイテムの矢印の横にある番号ラベルに示して
ある。ここの説明では、選択コプロセッサ20、2
2、...は、コプロセッサ識別子が、後述する操作に
応じて411、420、または429に現れるコプロセ
ッサ識別子に一致するコプロセッサを表す。
【0073】CLP34は、実行インタフェース16に
より、任意のコプロセッサ20、22、...上でコマ
ンドの実行を開始することができる。コプロセッサ番号
411は、コマンドのターゲットとして16のコプロセ
ッサのうち1つを選択する。CLTにより開始フィール
ド410が論理"1"になると、コプロセッサ番号411
により示される選択コプロセッサ450が、6ビットO
pフィールド412により指定されたコマンドの実行を
開始する。Op引数413は、44ビットのデータで、
コプロセッサ450により処理されるようにコマンドと
ともに渡される。ビジー信号414は16ビット・フィ
ールドで、各コプロセッサ401に1ビットであり、コ
プロセッサがコマンドを実行していてビジーか(ビット
=1)または、そのコプロセッサがコマンドを実行して
いない(ビット=0)ことを示す。これら16ビットは
スカラ・レジスタに保存され、レジスタのビット0はコ
プロセッサ0に、ビット1はコプロセッサ1に、以下同
様に対応する。OK/K.O.フィールド415は16
ビット・フィールドで、各コプロセッサ401に1ビッ
トである。これは1ビット戻り値コードであり、コマン
ドに依存する。例えば、コプロセッサ401に与えられ
たコマンドが失敗に終わったか、コマンドが成功したか
をCLP34に示すためこれを使用できる。この情報は
CLPスカラ・レジスタ内に保存され、レジスタのビッ
ト0はコプロセッサ0に、ビット1はコプロセッサ1
に、以下同様に対応する。直接/間接フィールド417
は、コプロセッサ実行命令のどのフォーマットが実行さ
れているかを選択コプロセッサ450に示す。直接/間
接=0のとき、直接フォーマットが実行されている。直
接/間接=1のときは間接フォーマットが実行されてい
る。
【0074】コプロセッサ・データ・インタフェース1
4は3つの信号グループを含む。書込みインタフェース
419、420、421、422、423、424は、
コプロセッサ内のスカラ・レジスタまたはアレイ・レジ
スタにデータを書込むときに関係する。読取りインタフ
ェース427、428、429、430、431、43
2、433は、コプロセッサ内のスカラ・レジスタ84
またはアレイ・レジスタ86のいずれかの専用レジスタ
82からデータを読取るときに関係する。第3のグルー
プ425、426、427は、スカラ・レジスタまたは
アレイ・レジスタの読取りと書込みの両方で用いられ
る。読取りインタフェースと書込みインタフェース両方
に対する複製機能は、レジスタからレジスタへデータを
移動するための同時読取り/書込みをサポートするよう
に働く。
【0075】書込みインタフェースは、書込みフィール
ド419を使用して、コプロセッサ番号420により示
されるコプロセッサ450を選択する。書込みフィール
ド419は、CLP34が選択コプロセッサにデータを
書込もうとするときに1に設定される。コプロセッサ・
レジスタ識別子421は、CLP34が選択コプロセッ
サ内450に書込もうとすることをレジスタに示す。コ
プロセッサ・レジスタ識別子421は8ビット・フィー
ルドで、よって256のレジスタがサポートされる。0
乃至239の範囲のコプロセッサ・レジスタ識別子はス
カラ・レジスタへの書込みを示す。240乃至255の
範囲のコプロセッサ・レジスタ識別子はアレイ・レジス
タへの書込みを示す。アレイ・レジスタ書込みの場合、
オフセット・フィールド422は、アレイ・レジスタの
データ書込み操作の開始点を示す。このフィールドは8
ビットで、従ってアレイ内で256のアドレスをサポー
トする。データ出力フィールドは、コプロセッサ450
に書込まれるデータを入れる。これは128ビットの大
きさで、従って最大128ビットの情報を一度に書込む
ことができる。書込み有効フィールド424は、コプロ
セッサ450がデータの受信をいつ終了したかをCLP
34に示す。これによりCLP34は、コプロセッサ4
50がデータを取る間、一時停止し、データを有効な状
態に保つことができる。
【0076】読取りインタフェース14は、書込みイン
タフェース16と構造は似ているが、データはコプロセ
ッサから読取られる。読取りフィールド428は書込み
フィールド419に対応し、選択コプロセッサ450で
読取り操作がいつ実行されるか示すためCLP34によ
り用いられる。コプロセッサ番号識別子フィールド42
9は、どのコプロセッサ450が選択されているかを示
す。レジスタ番号フィールド430、オフセット・フィ
ールド431、及び読取り有効フィールド433は、書
込みインタフェースの421、422及び424に対応
する。データ入力フィールド432は、コプロセッサ4
50からCLP34へのデータを入れる。
【0077】読取りまたは書込みの操作は、3つの長さ
のうちいずれか1つをとる。16ビットが転送されるこ
とを示すハーフワード、32ビットが転送されることを
示すワード、及び128ビットが転送されることを示す
クォドワードである。読取りデータ432と書込みデー
タ423は128ビット幅である。128ビット未満の
データ転送は右揃えされる。信号425及び426は、
データ転送サイズを示す。16ビットの転送は425と
426が両方とも0で示され、32ビットの転送は42
5と426がそれぞれ1と0で示され、128ビットの
転送は425と426がそれぞれ0と1で示される。
【0078】修飾フィールド427は、データ読取りま
たはデータ書込みの操作で用いられる。コプロセッサは
それぞれ、コプロセッサのハードウェア・デザイナによ
り定義された独自の方法でその意味を解釈する。これに
よりプログラマは、読取りまたは書込みの操作のときに
ハードウェアに対して情報ビットを追加指定することが
できる。データストア・コプロセッサは、パケット・バ
ッファのリンク・リストでパケット・バッファのリンク
・フィールドを省略することができる。
【0079】コプロセッサでタスクを開始した後、CL
Pは、命令の実行を続けるか、またはコプロセッサでタ
スクが完了するまで実行を中断することができる。CL
Pが、コプロセッサ内のタスク実行と並行して命令の実
行を続ける場合、後の時点で、メイン・プロセッサ・ユ
ニットによるWAIT命令の実行のため、1つ以上のコ
プロセッサでのタスク実行が完了するまで他の命令の実
行が中断する。WAIT命令は、形式によっては1つ以
上のコプロセッサ内でタスクが完了するまでCLP上の
実行を中断させる。その時点でCLPは命令の実行をW
AIT命令に続く命令から再開する。他の形では、WA
IT命令により、特定のコプロセッサ内でタスクが完了
するまでCLPの実行が中断する。そのタスクが完了す
ると、CLPはコプロセッサからの1ビット戻りコード
を、WAIT命令からの1ビットとともに調べ、WAI
T命令に続く命令から命令の実行を再開するか、実行を
プログラマにより指定された他の命令に分岐するか確認
する。
【0080】コプロセッサ実行命令は、コプロセッサで
のコマンド処理を真似るため、図1のコプロセッサ実行
インタフェース16の"開始"信号を1に設定する。図5
乃至8を参照する。コプロセッサ識別子520は、命令
フィールド500から取得され、開始信号を介して選択
コプロセッサを示す。6ビット・コプロセッサ・コマン
ドは命令フィールド501から取得され、どのコマンド
の実行を開始するかを信号により選択コプロセッサに示
す。開始信号がアクティブにされ1になると、選択コプ
ロセッサはそのビジー信号をアクティブにし(1にす
る)、コマンドの実行を完了するまで1のままにしてお
く。コマンドの実行が完了すると、この信号を0にする
(非アクティブ化)。CLPは継続して16ビットの信
号を読取り、それらをそのスカラ・レジスタに入れる。
コマンドの完了後、選択コプロセッサはこのステータス
をスカラ・レジスタに入れる。
【0081】再び図5乃至図8を参照する。命令の非同
期実行フィールド502が0のとき、CLPはコマンド
の完了を示すため、そのビジー信号を無効化する。その
とき、CLPは命令のフェッチと実行を再開する。命令
の非同期実行フィールド502が1のとき、CLPは、
ビジー信号の状態にかかわらず命令のフェッチと実行を
続ける。
【0082】選択コプロセッサでコマンド処理が開始さ
れると、CLPは44ビットの他のコマンド対応情報を
信号によりコプロセッサに与える。この情報は、図5乃
至図8に示すように命令フォーマットに応じて4つの方
法のいずれかで引き出される。
【0083】図5のコプロセッサ実行間接フォーマット
は、上位12ビット523のコマンド情報を命令フィー
ルド504から取得する。下位32ビットのコマンド情
報524は32ビット汎用レジスタ505から取得され
る。選択レジスタは、値{0、2、4、...14}に
制限された4ビット命令フィールド503により求めら
れる。こうしてそのレジスタから32ビット・レジスタ
が選択される。CLPは信号を1に設定し、これが命令
の間接フォームであることを選択コプロセッサに示す。
【0084】実行命令の条件付きコプロセッサ実行間接
フォーマットを図6に示す。ここで命令は、満足した特
定の条件をもとに図5と同じように実行される。条件を
満足しない場合、命令は実行されない。命令は、CLP
のALUコードをもとに実行される。条件付き実行には
4ビットが使用され、その結果Opフィールドは2ビッ
トに短縮される。従って考えられる64のコマンドのう
ち4つに対して条件付き実行が可能になる。他のコマン
ドは0と見なされる。よって長い待ち時間と短い待ち時
間をもとにした条件付き実行を実現することができる。
コプロセッサ命令の条件付き実行は特に、カウンタ・コ
プロセッサの動作と関連するときに有益である。
【0085】図7のコプロセッサ実行直接フォーマット
は、下位16ビット527のコマンド情報を命令フィー
ルド506から取得する。上位28ビット526のコマ
ンド情報は0に設定される。CLPは信号を0に設定
し、これが命令の直接形式であることを選択コプロセッ
サに示す。
【0086】条件付きコプロセッサ実行直接フォーマッ
トを、図7と同じように実行されるように構成された形
で図8に示す。図6と同様、条件付き実行では、4ビッ
トが使用され、その結果Opフィールドは2ビットに短
縮される。よって、考えられる64のコマンドのうち4
つに対して条件付き実行が可能になる。
【0087】図9は、コプロセッサ待機命令のフォーマ
ットを示す。CLPは、コプロセッサ・ステータス・レ
ジスタで、命令フィールド600から取得された16ビ
ット・マスクに対してビット単位でAND演算を行う。
結果が0でない、つまり1つ以上のコプロセッサが現在
まだコマンドを実行している場合、CLPは命令のフェ
ッチと実行を中断する。ただし、前記AND演算の実行
は、結果が0になるまで継続する。
【0088】図10は、コプロセッサ待機/分岐フォー
マットを示す。コプロセッサ識別子フィールド601
は、コプロセッサ・ステータスの特定のビットがテスト
されることを示す。例えばフィールド601に1がある
とき、コプロセッサ・ステータス・レジスタのビット1
がテストされる。識別子フィールド601に15がある
とき、コプロセッサ・ステータスのビット15がテスト
される。テストされるビットの値が1で、対応するコプ
ロセッサがコマンドの実行をまだ完了していないことを
示す場合、CLPは命令のフェッチと実行を中断する。
ただし前記の演算はテスト・ビットの値が0、つまり対
応するコプロセッサがコマンドの実行を完了するまで継
続する。この時点で、命令のOKフィールド602の値
と、コプロセッサ識別子601により選択された、スカ
ラ・レジスタのコプロセッサ完了コードのビットの値に
応じて、2つの処理のうちいずれかが発生する。CLP
は、下表に応じて、次のシーケンシャル命令のフェッチ
と実行を再開するか、または分岐して、命令フィールド
603により示される命令アドレスから命令のフェッチ
と実行を再開する。
【表1】 602の値 選択コプロセッサ 選択コプロセッサ 完了コード・ビットの値=0 完了コード・ビットの値=1 0 分岐 次の命令 1 次の命令 分岐
【0089】コプロセッサ・ユニットでタスクを開始す
るときの命令の実行については、米国特許出願第548
109号、"Coprocessor Structure and Method for a
Communications System Network Processor"を参照され
たい。
【0090】本発明は、更に、各CLPの複数の命令実
行スレッド(それぞれ、処理中の別々のパケットに関係
する)それぞれの独立したプロセス及びデータ・アクセ
ス時の待ち時間の処理に関する。実行スレッドはそれぞ
れ独立したプロセスであり、スレッドがコプロセッサ・
ハードウェアにアクセスできるときに命令のシーケンス
を実行する。ツリー検索コプロセッサは、パイプライン
にされ、ツリー検索パイプラインで複数の実行スレッド
がそれぞれ同時に、ただし異なるフェーズで(オーバラ
ップして)アクセスすることができる。本発明は、好適
には、オーバヘッド0で複数の命令実行スレッドを採用
し、実行をスレッドからスレッドに切り替える。スレッ
ドはキューにされ、共有メモリに対するアクセスが高速
に配信される。スレッドをキューにすることで、長い待
ち時間のイベントに対して優先順位が最大のスレッドを
可能な限り速く得ることができる。
【0091】前述のように、PPUはそれぞれ、実行ス
レッド毎に1つ、複数の命令プリフェッチ・バッファを
含む。これらのプリフェッチ・バッファにより、アクテ
ィブな実行スレッドにより命令の帯域幅が十分利用され
ていないインターバル時、アイドル中の実行スレッドの
ため命令のプリフェッチが可能になる。これにより、制
御が新しい実行スレッドに切り替わったとき、そのスレ
ッドの命令プリフェッチ・バッファが一杯になりやす
く、よって、実行に利用できる命令が足りないために新
しいスレッドがすぐ中断する可能性がなくなる。こうし
て、命令メモリに対するアクセス優先順位は、現在実行
中のスレッドが最大の優先順位になり、現在のスレッド
が中断したときに制御を取る立場にある実行スレッドが
第2の優先順位を与えられるように制御される。同様
に、実行キューの下端にある実行スレッドには、命令フ
ェッチ・アクセスで最後の優先順位が与えられる。
【0092】待ち時間の長いイベントのため(ツリー検
索等)、アクティブなスレッドの実行が中断したとき、
次のスレッドにフル制御が与えられるか、または待ち時
間の短いイベント(ローカル・データ・ストレージでの
コプロセッサの操作もしくは命令フェッチ待ち時間)の
ため実行が中断したときは、一時的制御が次のスレッド
に与えられる。一時的制御が他のスレッドに与えられた
場合、制御は、ブロックが解除されるとすぐに元のスレ
ッドに返される。逆に他のスレッドにフル制御が与えら
れた場合、その他のスレッドは、ブロックされるまで制
御を保つ。これにより待ち時間の短いイベントでのサイ
クルの無駄が避けられるが、1次実行スレッドが待ち時
間の長いイベントに届くまでの時間は短くなる。他の場
合、複数の実行スレッドがほぼ同じ時間に待ち時間の長
いイベントに届く可能性があり、1つのスレッドのPP
U実行を他のスレッドのツリー検索とオーバラップする
メリットは少なくなる。待ち時間をもとに制御を割当て
ることについて詳しくは、整理番号RAL920000
008の米国特許出願第542189号、"NetworkProc
essor with Multiple Instruction Threads"を参照され
たい。この割当てとスレッド実行制御の詳細は次のよう
になる。
【0093】コンピュータの電源が初めて投入されたと
き、各CLPスレッドは初期化状態にある。パケットが
プロセッサにディスパッチされると、対応するスレッド
がレディ状態に変わり、その時点で実行サイクル要求を
開始する。
【0094】アービタが、アービタの論理関数をもとに
ブール式に従って実行サイクルをスレッドに与える。サ
イクルが与えられた場合、スレッドはレディ状態から実
行状態に移る。実行状態のスレッドは、待ち時間イベン
トまたは処理されているパケットがエンキューされ、よ
ってそのパケットに対するコードの作業が終了したこと
が示されたため実行が中断するまで要求を出し続ける。
サイクルが与えられなくなると、これは他のスレッドが
制御を取ったことを示す。これは、アービタがサイクル
を与えない唯一の理由である。ただし、これら2つの状
態のいずれか(レディまたは実行)で、スレッドは、パ
ケット処理が終わりに達し、次のパケットがディスパッ
チのためキューに入るまで、新しい実行サイクルを要求
し続け、待ち時間イベントで一時停止する。システムは
そこで初期化状態に戻り、次のパケットを待機する。待
機状態は、待ち時間の長いイベントまたは短いイベント
を扱う。どのイベントが発生するかにかかわらず、プロ
セッサは中断し、アクティブなスレッドはデフォルトで
待機状態になる。スレッドはそこで、待ち時間イベント
が完了するまで実行サイクルの要求を停止する。
【0095】スレッドを初期化状態からレディ状態に移
すのと同じディスパッチ操作により、スレッド番号がF
IFOバッファに入り、第1パケットがディスパッチさ
れるスレッドは、優先順位が最高のスレッドになる。後
のディスパッチ操作では、他のスレッド番号がFIFO
に送られる。FIFOの優先順位が最大のスレッド番号
は、待ち時間の長いイベントに出会うまでその位置にと
どまり、その後、スレッドはFIFOの始めに戻り、最
大優先順位から最小優先順位のスレッドに変わる。待ち
時間の短いイベントによってスレッドがFIFOバッフ
ァで優先順位を失うことはない。
【0096】スレッドがパケットの処理を終了すると、
パケットは、出力ポートに転送するためエンキューさ
れ、スレッド番号がFIFOバッファから移される。
【0097】新しいパケットは、ハイレベル・コントロ
ーラ(図示せず)からディスパッチされる。このコント
ローラはスレッドとプロセッサを選択して各パケットを
処理する。この決定により入力コマンドがFIFOバッ
ファに送られる。また入力が状態機械に送られ、初期化
状態からレディ状態に移行することが状態機械に指示さ
れる。外部コントローラからのそのコマンドとともに、
パケットのディスパッチ先であるスレッド番号もコント
ローラからFIFOに送る必要がある。
【0098】基本的に、実行を中断させるイベントは現
在のプログラムの流れで短い割込みになるイベントと長
い割込みになるイベントの2種類ある。短い割込みは、
プログラムの流れが変わったため命令プリフェッチ・キ
ューを再び埋める必要のある分岐命令により発生するこ
とがある。或いはまた、プログラムはコプロセッサがプ
ロセッサのローカル・メモリでデータ関連タスクを実行
するのを待機している間に中断することがある。この例
は、チェックサム・コプロセッサが、変更されたヘッダ
・フィールドで新しいチェックサムを計算する場合であ
る。待ち時間が25プロセッサ・サイクル未満のとき、
イベントは、短い割込みと見なされる。待ち時間の長い
イベントは通常、25を超える待ち時間を伴い、通常は
50プロセッサ・サイクル乃至100プロセッサ・サイ
クルを超える。これらは全体のパフォーマンスに大きな
影響を与える。
【0099】待ち時間の長いイベント、短いイベントを
確認する手段は他に多数ある。待ち時間の長さはプログ
ラマが制御でき、その場合ハードウェアやその構成は確
認の際の要素にはならない。一方、しきい値レジスタを
25サイクルのしきい値で設定することもでき、その場
合、操作に必要になるサイクル数はハードウェアにより
確認され、その確認をもとに自動的な判断が行われる。
【0100】コプロセッサ命令は、プロセッサが実行す
る命令の1タイプである。フィールドのビットの一部
は、どのコプロセッサが対象かを示す。1ビットによ
り、特定の命令が待ち時間の長いイベントまたは短いイ
ベントとして定義される。従って、プログラマは、同じ
アクセスを2つ定義することができる。1つは待ち時間
の長いイベントとして、もう1つは待ち時間の短いイベ
ントとして定義される。スレッド実行制御関数は、こう
した待ち時間の長いイベントの影響を最小にするために
設計されている。よって待ち時間の長いイベントによ
り、フル制御が別の実行スレッドに切り替わり、待ち時
間の短いイベントにより一時的にのみ他のスレッドへの
切り替えが起こる。
【0101】プロトコル・プロセッサ・ユニット(PP
U)とコア言語プロセッサの詳細は、当業者には周知の
通りであり、本発明の一部を構成しないが、それらは、
変更或いは実装することでネットワーク・プロセッサ・
システム全体のアーキテクチャの一部になっており、特
定の機能コプロセッサやシステムの他のコンポーネント
と連携する。本発明で有用な個々のコプロセッサのアー
キテクチャやプログラミングを含めた詳細は、本発明の
一部を構成するものと見なされない。
【0102】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0103】(1)ネットワーク・プロセッサのプログ
ラミング機能を制御する組み込みプロセッサ複合体のオ
ペレーションであって、該プロセッサ複合体は、複数の
プロトコル・プロセッサ・ユニット(PPU)を含み、
各PPUは少なくとも1つのコア言語プロセッサ(CL
P)を含み、各CLPは少なくとも2つのコード・スレ
ッドを持ち、各PPUはPPUの特定のタスクを実行す
る上で有用な複数のコプロセッサ及び複数の論理コプロ
セッサ・インタフェースを利用し、各CLPと該コプロ
セッサ間のアクセスを実現する、オペレーション。 (2)前記コプロセッサは、各CLPの複数のコード・
スレッドをサポートする専用コプロセッサを含む、前記
(1)記載のオペレーション。 (3)前記コプロセッサは、ツリー検索コプロセッサ、
チェックサム・コプロセッサ、ストリングコピー・コプ
ロセッサ、エンキュー・コプロセッサ、データストア・
コプロセッサ、CABコプロセッサ、カウンタ・コプロ
セッサ、及びポリシ・コプロセッサを含むグループから
選択される、前記(1)記載のオペレーション。 (4)複数のスレッド間の優先順位を確認するためコプ
ロセッサ実行インタフェース・アービタを含む、前記
(3)記載のオペレーション。 (5)データ・スレッド間の優先順位を確認するためコ
プロセッサ・データ・インタフェース・アービタを含
む、前記(3)記載のオペレーション。 (6)各スレッドと少なくとも1つのコプロセッサ間に
FIFOバッファを含む、前記(3)記載のオペレーシ
ョン。 (7)前記FIFOバッファは各スレッドと前記カウン
タ・コプロセッサの間にある、前記(6)記載のオペレ
ーション。 (8)前記FIFOバッファは各スレッドと前記ポリシ
・コプロセッサの間にある、前記(6)記載のオペレー
ション。 (9)ネットワーク・プロセッサのプログラミング機能
を制御する組み込みプロセッサ複合体を含むネットワー
ク処理システムであって、該複合体は複数のプロトコル
・プロセッサ・ユニット(PPU)を含み、各PPU
は、それぞれ少なくとも2つのコード・スレッドを持つ
少なくとも1つのコア言語プロセッサ(CLP)と、前
記システムの特定のタスクを実行する複数のコプロセッ
サ及び該コプロセッサのリソースにアクセスし各CLP
と共有する複数のコプロセッサ・インタフェースと、を
含む、システム。 (10)前記コプロセッサ・インタフェースは、各CL
Pのコード・スレッドをサポートすることにのみ用いら
れる、前記(9)記載のネットワーク処理システム。 (11)前記コプロセッサは、ツリー検索コプロセッ
サ、チェックサム・コプロセッサ、ストリングコピー・
コプロセッサ、エンキュー・コプロセッサ、データスト
ア・コプロセッサ、CABコプロセッサ、カウンタ・コ
プロセッサ、及びポリシ・コプロセッサを含むグループ
から選択される、前記(10)記載のネットワーク処理
システム。 (12)各スレッドと前記コプロセッサのうち少なくと
も1つの間にFIFOバッファを含む、前記(10)記
載のネットワーク処理システム。 (13)前記FIFOバッファは各スレッドと前記カウ
ンタ・コプロセッサの間にある、前記(12)記載のネ
ットワーク処理システム。 (14)前記FIFOバッファは各スレッドと前記ポリ
シ・コプロセッサの間にある、前記(12)記載のネッ
トワーク処理システム。 (15)前記CLPのスレッドにより実行される特定の
操作命令を含み、該実行の結果、コプロセッサ・オペレ
ーションを制御するコマンドが得られ、該コマンドは前
記CLPとコプロセッサ間のインタフェースを流れる、
前記(9)記載のネットワーク処理システム。 (16)前記命令は、特定のコプロセッサ・オペレーシ
ョンの条件付き実行を可能にするように働く、前記(1
5)記載のネットワーク処理システム。 (17)前記命令により、前記システムが、特定のコプ
ロセッサ・コマンドに応答してデータにアクセスするた
めの予測応答時間に従って、待ち時間の長いイベントと
待ち時間の短いイベントを識別し、アクティブなスレッ
ドの実行が待ち時間の長いイベントにより中断したとき
に他のスレッドにフル制御を与えるか、またはアクティ
ブなスレッドの実行が待ち時間の短いイベントにより中
断したときに他のスレッドに一時的制御を与える、前記
(15)記載のネットワーク処理システム。 (18)複数のプロトコル・プロセッサ・ユニット(P
PU)を含む組み込みプロセッサ複合体内の命令の実行
を制御する方法であって、該プロトコル・プロセッサ・
ユニットはそれぞれ少なくとも1つのコア言語プロセッ
サ(CLP)を含み、該CLPはそれぞれ少なくとも2
つのコード・スレッドを持ち、該方法は、該PUに対す
る特定のタスクを実行するため、各PPUによる複数の
コプロセッサの使用、及び該コプロセッサと各CLP間
のアクセスを提供する複数の論理コプロセッサ・インタ
フェースの使用を含む、方法。 (19)前記PPUの複数のコード・スレッドをサポー
トする専用コプロセッサの使用を含む、前記(18)記
載の方法。 (20)前記コプロセッサの1つ以上は、ツリー検索コ
プロセッサ、チェックサム・コプロセッサ、ストリング
コピー・コプロセッサ、エンキュー・コプロセッサ、デ
ータストア・コプロセッサ、CABコプロセッサ、カウ
ンタ・コプロセッサ、及びポリシ・コプロセッサを含む
グループから選択される、前記(19)記載の方法。 (21)実行スレッド間の優先順位を確認するためコプ
ロセッサ実行インタフェース・アービタが用いられる、
前記(20)記載の方法。 (22)データ・スレッド間の優先順位を確認するため
コプロセッサ・データ・インタフェース・アービタが用
いられる、前記(20)記載の方法。 (23)各スレッドと前記コプロセッサのうち少なくと
も1つの間にFIFOバッファを提供するステップを含
む、前記(20)記載の方法。 (24)前記FIFOバッファは各スレッドと前記カウ
ンタ・コプロセッサの間にある、前記(23)記載の方
法。 (25)前記FIFOバッファは各スレッドと前記ポリ
シ・コプロセッサの間にある、前記(23)記載の方
法。 (26)前記CLPにより実行される特定の操作命令を
提供するステップを含み、該実行の結果、コプロセッサ
・オペレーションを制御するコマンドが得られ、該コマ
ンドは前記CLPとコプロセッサの間のインタフェース
を流れる、前記(18)記載の方法。 (27)前記操作命令により特定のコプロセッサ・オペ
レーションの条件付き実行が可能になる、前記(26)
記載の方法。 (28)前記実行は直接的または間接的である、前記
(27)記載の方法。 (29)前記システムが、特定のコプロセッサ・コマン
ドに関する予測応答時間に従って、待ち時間の長いイベ
ントと待ち時間の短いイベントを識別し、アクティブな
スレッドの実行が待ち時間の長いイベントにより中断し
たときに他のスレッドにフル制御を与えるか、またはア
クティブなスレッドの実行が待ち時間の短いイベントに
より中断したときに他のスレッドに一時的制御を与え
る、命令を提供するステップを含む、前記(18)記載
の方法。
【図面の簡単な説明】
【図1】2つのコア言語プロセッサとコプロセッサを持
つプロトコル処理ユニットを示す図である。
【図2】2つのコア言語プロセッサとコプロセッサがイ
ンタフェースを取るプロトコル処理ユニットを示す図で
ある。
【図3】コア言語プロセッサと選択されたコプロセッサ
のインタフェースを示す図である。
【図4】コプロセッサ実行インタフェースとコア言語プ
ロセッサを複数のコプロセッサに接続するコプロセッサ
・データ・インタフェースを示す図である。
【図5】コプロセッサ実行命令フォーマットを示す図で
ある。
【図6】コプロセッサ実行命令フォーマットを示す図で
ある。
【図7】コプロセッサ実行命令フォーマットを示す図で
ある。
【図8】コプロセッサ実行命令フォーマットを示す図で
ある。
【図9】コプロセッサ待機命令フォーマットを示す図で
ある。
【図10】コプロセッサ待機命令フォーマットを示す図
である。
【符号の説明】
10 プロトコル・プロセッサ・ユニット(PPU) 12 ツリー検索エンジン 14 データ・インタフェース 16 実行インタフェース 20 チェックサム・コプロセッサ 22 ストリング・コピー・コプロセッサ 24 エンキュー・コプロセッサ 26 データストア・コプロセッサ 28 制御アクセス・バス・コプロセッサ 30 カウンタ・コプロセッサ 32 ポリシ・コプロセッサ 34、36 コア言語プロセッサ(CLP) 40 コプロセッサ実行インタフェース(CPE)アー
ビタ 42 コプロセッサ・データインタフェース(CPD
I)アービタ 44 共有メモリ・プール 56 命令メモリ 68 CABアービタ 74 インタフェース 76、78 FIFOバッファ 80 汎用レジスタ 82 専用レジスタ 84 スカラ・レジスタ 86 アレイ・レジスタ 88 命令フェッチ/デコード/実行ユニット 102 実行ユニット 110 ツリー検索メモリ(TSM)アービタ 112 フレーム・データ・メモリ 401、450 コプロセッサ 413 Op引数 414 ビジー信号 419、420、421、422、423、424 書
込みインタフェース 421 コプロセッサ・レジスタ識別子 427、428、429、430、431、432、4
33 読取りインタフェース 450 選択コプロセッサ 505 32ビット汎用レジスタ 520 コプロセッサ識別子 523 上位12ビット 524 コマンド情報
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ゴードン・テイラー・デイビス アメリカ合衆国27514、ノース・カロライ ナ州チャペル・ヒル、フランクリン・リッ ジ 97603 (72)発明者 マルコ・シィ・ヘッズ アメリカ合衆国27612、ノース・カロライ ナ州ローリー、ナンバー 308、グラン ド・メナー・コート 4109 (72)発明者 ロス・ボイド・リーベンス アメリカ合衆国27511、ノース・カロライ ナ州カーリー、ウィランダー・ドライブ 123 (72)発明者 マーク・アンソニー・リナルディ アメリカ合衆国27713、ノース・カロライ ナ州ダーハム、クイーンズバリー・サーク ル 1201 Fターム(参考) 5B013 DD03 5B098 AA10 GA04 GA05 GA07 GB09 GB14 GC03

Claims (29)

    【特許請求の範囲】
  1. 【請求項1】ネットワーク・プロセッサのプログラミン
    グ機能を制御する組み込みプロセッサ複合体のオペレー
    ションであって、該プロセッサ複合体は、複数のプロト
    コル・プロセッサ・ユニット(PPU)を含み、各PP
    Uは少なくとも1つのコア言語プロセッサ(CLP)を
    含み、各CLPは少なくとも2つのコード・スレッドを
    持ち、各PPUはPPUの特定のタスクを実行する上で
    有用な複数のコプロセッサ及び複数の論理コプロセッサ
    ・インタフェースを利用し、各CLPと該コプロセッサ
    間のアクセスを実現する、オペレーション。
  2. 【請求項2】前記コプロセッサは、各CLPの複数のコ
    ード・スレッドをサポートする専用コプロセッサを含
    む、請求項1記載のオペレーション。
  3. 【請求項3】前記コプロセッサは、ツリー検索コプロセ
    ッサ、チェックサム・コプロセッサ、ストリングコピー
    ・コプロセッサ、エンキュー・コプロセッサ、データス
    トア・コプロセッサ、CABコプロセッサ、カウンタ・
    コプロセッサ、及びポリシ・コプロセッサを含むグルー
    プから選択される、請求項1記載のオペレーション。
  4. 【請求項4】複数のスレッド間の優先順位を確認するた
    めコプロセッサ実行インタフェース・アービタを含む、
    請求項3記載のオペレーション。
  5. 【請求項5】データ・スレッド間の優先順位を確認する
    ためコプロセッサ・データ・インタフェース・アービタ
    を含む、請求項3記載のオペレーション。
  6. 【請求項6】各スレッドと少なくとも1つのコプロセッ
    サ間にFIFOバッファを含む、請求項3記載のオペレ
    ーション。
  7. 【請求項7】前記FIFOバッファは各スレッドと前記
    カウンタ・コプロセッサの間にある、請求項6記載のオ
    ペレーション。
  8. 【請求項8】前記FIFOバッファは各スレッドと前記
    ポリシ・コプロセッサの間にある、請求項6記載のオペ
    レーション。
  9. 【請求項9】ネットワーク・プロセッサのプログラミン
    グ機能を制御する組み込みプロセッサ複合体を含むネッ
    トワーク処理システムであって、該複合体は複数のプロ
    トコル・プロセッサ・ユニット(PPU)を含み、各P
    PUは、 それぞれ少なくとも2つのコード・スレッドを持つ少な
    くとも1つのコア言語プロセッサ(CLP)と、 前記システムの特定のタスクを実行する複数のコプロセ
    ッサ及び該コプロセッサのリソースにアクセスし各CL
    Pと共有する複数のコプロセッサ・インタフェースと、 を含む、システム。
  10. 【請求項10】前記コプロセッサ・インタフェースは、
    各CLPのコード・スレッドをサポートすることにのみ
    用いられる、請求項9記載のネットワーク処理システ
    ム。
  11. 【請求項11】前記コプロセッサは、ツリー検索コプロ
    セッサ、チェックサム・コプロセッサ、ストリングコピ
    ー・コプロセッサ、エンキュー・コプロセッサ、データ
    ストア・コプロセッサ、CABコプロセッサ、カウンタ
    ・コプロセッサ、及びポリシ・コプロセッサを含むグル
    ープから選択される、請求項10記載のネットワーク処
    理システム。
  12. 【請求項12】各スレッドと前記コプロセッサのうち少
    なくとも1つの間にFIFOバッファを含む、請求項1
    0記載のネットワーク処理システム。
  13. 【請求項13】前記FIFOバッファは各スレッドと前
    記カウンタ・コプロセッサの間にある、請求項12記載
    のネットワーク処理システム。
  14. 【請求項14】前記FIFOバッファは各スレッドと前
    記ポリシ・コプロセッサの間にある、請求項12記載の
    ネットワーク処理システム。
  15. 【請求項15】前記CLPのスレッドにより実行される
    特定の操作命令を含み、該実行の結果、コプロセッサ・
    オペレーションを制御するコマンドが得られ、該コマン
    ドは前記CLPとコプロセッサ間のインタフェースを流
    れる、請求項9記載のネットワーク処理システム。
  16. 【請求項16】前記命令は、特定のコプロセッサ・オペ
    レーションの条件付き実行を可能にするように働く、請
    求項15記載のネットワーク処理システム。
  17. 【請求項17】前記命令により、前記システムが、特定
    のコプロセッサ・コマンドに応答してデータにアクセス
    するための予測応答時間に従って、待ち時間の長いイベ
    ントと待ち時間の短いイベントを識別し、アクティブな
    スレッドの実行が待ち時間の長いイベントにより中断し
    たときに他のスレッドにフル制御を与えるか、またはア
    クティブなスレッドの実行が待ち時間の短いイベントに
    より中断したときに他のスレッドに一時的制御を与え
    る、請求項15記載のネットワーク処理システム。
  18. 【請求項18】複数のプロトコル・プロセッサ・ユニッ
    ト(PPU)を含む組み込みプロセッサ複合体内の命令
    の実行を制御する方法であって、該プロトコル・プロセ
    ッサ・ユニットはそれぞれ少なくとも1つのコア言語プ
    ロセッサ(CLP)を含み、該CLPはそれぞれ少なく
    とも2つのコード・スレッドを持ち、該方法は、該PP
    Uに対する特定のタスクを実行するため、各PPUによ
    る複数のコプロセッサの使用、及び該コプロセッサと各
    CLP間のアクセスを提供する複数の論理コプロセッサ
    ・インタフェースの使用を含む、方法。
  19. 【請求項19】前記PPUの複数のコード・スレッドを
    サポートする専用コプロセッサの使用を含む、請求項1
    8記載の方法。
  20. 【請求項20】前記コプロセッサの1つ以上は、ツリー
    検索コプロセッサ、チェックサム・コプロセッサ、スト
    リングコピー・コプロセッサ、エンキュー・コプロセッ
    サ、データストア・コプロセッサ、CABコプロセッ
    サ、カウンタ・コプロセッサ、及びポリシ・コプロセッ
    サを含むグループから選択される、請求項19記載の方
    法。
  21. 【請求項21】実行スレッド間の優先順位を確認するた
    めコプロセッサ実行インタフェース・アービタが用いら
    れる、請求項20記載の方法。
  22. 【請求項22】データ・スレッド間の優先順位を確認す
    るためコプロセッサ・データ・インタフェース・アービ
    タが用いられる、請求項20記載の方法。
  23. 【請求項23】各スレッドと前記コプロセッサのうち少
    なくとも1つの間にFIFOバッファを提供するステッ
    プを含む、請求項20記載の方法。
  24. 【請求項24】前記FIFOバッファは各スレッドと前
    記カウンタ・コプロセッサの間にある、請求項23記載
    の方法。
  25. 【請求項25】前記FIFOバッファは各スレッドと前
    記ポリシ・コプロセッサの間にある、請求項23記載の
    方法。
  26. 【請求項26】前記CLPにより実行される特定の操作
    命令を提供するステップを含み、該実行の結果、コプロ
    セッサ・オペレーションを制御するコマンドが得られ、
    該コマンドは前記CLPとコプロセッサの間のインタフ
    ェースを流れる、請求項18記載の方法。
  27. 【請求項27】前記操作命令により特定のコプロセッサ
    ・オペレーションの条件付き実行が可能になる、請求項
    26記載の方法。
  28. 【請求項28】前記実行は直接的または間接的である、
    請求項27記載の方法。
  29. 【請求項29】前記システムが、特定のコプロセッサ・
    コマンドに関する予測応答時間に従って、待ち時間の長
    いイベントと待ち時間の短いイベントを識別し、アクテ
    ィブなスレッドの実行が待ち時間の長いイベントにより
    中断したときに他のスレッドにフル制御を与えるか、ま
    たはアクティブなスレッドの実行が待ち時間の短いイベ
    ントにより中断したときに他のスレッドに一時的制御を
    与える、命令を提供するステップを含む、請求項18記
    載の方法。
JP2001265792A 2000-09-06 2001-09-03 共有コプロセッサ・リソースに対する複数の論理インタフェース Pending JP2002149424A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/656,582 US6829697B1 (en) 2000-09-06 2000-09-06 Multiple logical interfaces to a shared coprocessor resource
US09/656582 2000-09-06

Publications (1)

Publication Number Publication Date
JP2002149424A true JP2002149424A (ja) 2002-05-24

Family

ID=24633666

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001265792A Pending JP2002149424A (ja) 2000-09-06 2001-09-03 共有コプロセッサ・リソースに対する複数の論理インタフェース

Country Status (6)

Country Link
US (1) US6829697B1 (ja)
JP (1) JP2002149424A (ja)
KR (1) KR100422491B1 (ja)
CN (1) CN1188794C (ja)
SG (1) SG100751A1 (ja)
TW (1) TW581950B (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006039711A1 (en) * 2004-10-01 2006-04-13 Lockheed Martin Corporation Service layer architecture for memory access system and method
JP2008243203A (ja) * 2007-03-28 2008-10-09 Internatl Business Mach Corp <Ibm> 仮想化されたデータ処理環境におけるワークロード管理
JP2008299740A (ja) * 2007-06-01 2008-12-11 Seiko Epson Corp 非同期マイクロプロセッサ、電子情報装置
JP2009009477A (ja) * 2007-06-29 2009-01-15 Toshiba Corp 演算方式を制御して情報を処理する装置、方法およびプログラム
JP2009026135A (ja) * 2007-07-20 2009-02-05 Nec Electronics Corp マルチプロセッサ装置
US7987341B2 (en) 2002-10-31 2011-07-26 Lockheed Martin Corporation Computing machine using software objects for transferring data that includes no destination information

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
DE59710317D1 (de) 1996-12-27 2003-07-24 Pact Inf Tech Gmbh VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US7003660B2 (en) 2000-06-13 2006-02-21 Pact Xpp Technologies Ag Pipeline configuration unit protocols and communication
US20140325175A1 (en) * 2013-04-29 2014-10-30 Pact Xpp Technologies Ag Pipeline configuration protocol and configuration unit communication
JP2003505753A (ja) 1999-06-10 2003-02-12 ペーアーツェーテー インフォルマツィオーンステヒノロギー ゲゼルシャフト ミット ベシュレンクテル ハフツング セル構造におけるシーケンス分割方法
US6985431B1 (en) * 1999-08-27 2006-01-10 International Business Machines Corporation Network switch and components and method of operation
US6865663B2 (en) * 2000-02-24 2005-03-08 Pts Corporation Control processor dynamically loading shadow instruction register associated with memory entry of coprocessor in flexible coupling mode
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US7080238B2 (en) * 2000-11-07 2006-07-18 Alcatel Internetworking, (Pe), Inc. Non-blocking, multi-context pipelined processor
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
WO2005045692A2 (en) 2003-08-28 2005-05-19 Pact Xpp Technologies Ag Data processing device and method
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
EP1402382B1 (de) 2001-06-20 2010-08-18 Richter, Thomas Verfahren zur bearbeitung von daten
GB2378271B (en) * 2001-07-30 2004-12-29 Advanced Risc Mach Ltd Handling of coprocessor instructions in a data processing apparatus
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US7577822B2 (en) * 2001-12-14 2009-08-18 Pact Xpp Technologies Ag Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization
EP1483682A2 (de) 2002-01-19 2004-12-08 PACT XPP Technologies AG Reconfigurierbarer prozessor
US7073048B2 (en) * 2002-02-04 2006-07-04 Silicon Lease, L.L.C. Cascaded microcomputer array and method
AU2003214003A1 (en) 2002-02-18 2003-09-09 Pact Xpp Technologies Ag Bus systems and method for reconfiguration
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US8015303B2 (en) * 2002-08-02 2011-09-06 Astute Networks Inc. High data rate stateful protocol processing
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
AU2003250575A1 (en) * 2002-08-07 2004-02-25 Mmagix Technology Limited Apparatus, method and system for a synchronicity independent, resource delegating, power and instruction optimizing processor
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
AU2003256870A1 (en) * 2002-08-09 2004-02-25 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
JP4388895B2 (ja) 2002-09-06 2009-12-24 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト リコンフィギュアラブルなシーケンサ構造
US7596621B1 (en) 2002-10-17 2009-09-29 Astute Networks, Inc. System and method for managing shared state using multiple programmed processors
US7814218B1 (en) 2002-10-17 2010-10-12 Astute Networks, Inc. Multi-protocol and multi-format stateful processing
US8151278B1 (en) 2002-10-17 2012-04-03 Astute Networks, Inc. System and method for timer management in a stateful protocol processing system
US7802001B1 (en) 2002-10-18 2010-09-21 Astute Networks, Inc. System and method for flow control within a stateful protocol processing system
US20040190555A1 (en) * 2003-03-31 2004-09-30 Meng David Q. Multithreaded, multiphase processor utilizing next-phase signals
US20050055594A1 (en) * 2003-09-05 2005-03-10 Doering Andreas C. Method and device for synchronizing a processor and a coprocessor
US7539760B1 (en) 2003-09-12 2009-05-26 Astute Networks, Inc. System and method for facilitating failover of stateful connections
US7058424B2 (en) * 2004-01-20 2006-06-06 Lucent Technologies Inc. Method and apparatus for interconnecting wireless and wireline networks
US8006071B2 (en) * 2004-03-31 2011-08-23 Altera Corporation Processors operable to allow flexible instruction alignment
US7451397B2 (en) 2004-12-15 2008-11-11 Microsoft Corporation System and method for automatically completing spreadsheet formulas
CN101167077A (zh) * 2005-02-01 2008-04-23 梅塔利克斯有限公司 电子通信分析和可视化
US7395517B2 (en) * 2005-09-20 2008-07-01 International Business Machines Corporation Data aligner in reconfigurable computing environment
US7330964B2 (en) * 2005-11-14 2008-02-12 Texas Instruments Incorporated Microprocessor with independent SIMD loop buffer
TWI335521B (en) * 2005-12-19 2011-01-01 Via Tech Inc Dsp system with multi-tier accelerator architecture and method for operating the same
EP1974265A1 (de) 2006-01-18 2008-10-01 PACT XPP Technologies AG Hardwaredefinitionsverfahren
JP2007200180A (ja) * 2006-01-30 2007-08-09 Nec Electronics Corp プロセッサシステム
US9665970B2 (en) * 2006-09-19 2017-05-30 Imagination Technologies Limited Variable-sized concurrent grouping for multiprocessing
JP4770664B2 (ja) * 2006-09-20 2011-09-14 株式会社デンソー マイクロプロセッサおよびそれを用いたマイクロコンピュータ
US8438365B2 (en) * 2006-10-06 2013-05-07 Calos Fund Limited Liability Company Efficient data loading in a data-parallel processor
US7627744B2 (en) * 2007-05-10 2009-12-01 Nvidia Corporation External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level
US7669036B2 (en) * 2007-06-14 2010-02-23 Qualcomm Incorporated Direct path monitoring by primary processor to each status register in pipeline chained secondary processors for task allocation via downstream communication
JP2009026136A (ja) * 2007-07-20 2009-02-05 Nec Electronics Corp マルチプロセッサ装置
US8806181B1 (en) * 2008-05-05 2014-08-12 Marvell International Ltd. Dynamic pipeline reconfiguration including changing a number of stages
US20130138921A1 (en) * 2011-11-28 2013-05-30 Andes Technology Corporation De-coupled co-processor interface
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
US9582287B2 (en) 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US9430390B2 (en) 2013-09-21 2016-08-30 Oracle International Corporation Core in-memory space and object management architecture in a traditional RDBMS supporting DW and OLTP applications
US9465618B2 (en) 2014-01-08 2016-10-11 Oracle International Corporation Methods and systems for optimally selecting an assist unit
US10362093B2 (en) * 2014-01-09 2019-07-23 Netronome Systems, Inc. NFA completion notification
CN104901901B (zh) * 2014-03-07 2019-03-12 深圳市中兴微电子技术有限公司 一种微引擎及其处理报文的方法
ES2929626T3 (es) * 2015-05-21 2022-11-30 Goldman Sachs & Co Llc Arquitectura de computación paralela de propósito general
US10210134B2 (en) * 2015-05-21 2019-02-19 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
US11449452B2 (en) * 2015-05-21 2022-09-20 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
US10025823B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Techniques for evaluating query predicates during in-memory table scans
US10067954B2 (en) 2015-07-22 2018-09-04 Oracle International Corporation Use of dynamic dictionary encoding with an associated hash table to support many-to-many joins and aggregations
US9929858B2 (en) * 2015-09-21 2018-03-27 Nxp B.V. Method and system for detecting fault attacks
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
AU2018248439C1 (en) * 2017-04-06 2021-09-30 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
US10528414B2 (en) * 2017-09-13 2020-01-07 Toshiba Memory Corporation Centralized error handling in application specific integrated circuits
US10540219B2 (en) * 2017-09-13 2020-01-21 Toshiba Memory Corporation Reset and error handling in application specific integrated circuits
US10877766B2 (en) * 2018-05-24 2020-12-29 Xilinx, Inc. Embedded scheduling of hardware resources for hardware acceleration
CN112513809A (zh) * 2019-12-27 2021-03-16 深圳市大疆创新科技有限公司 处理器、任务响应方法、可移动平台、及相机
US11210104B1 (en) * 2020-09-11 2021-12-28 Apple Inc. Coprocessor context priority
CN114071222B (zh) * 2021-11-15 2023-07-25 深圳Tcl新技术有限公司 音视频数据共享装置及电子设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809169A (en) * 1986-04-23 1989-02-28 Advanced Micro Devices, Inc. Parallel, multiple coprocessor computer architecture having plural execution modes
US4876643A (en) * 1987-06-24 1989-10-24 Kabushiki Kaisha Toshiba Parallel searching system having a master processor for controlling plural slave processors for independently processing respective search requests
US5008816A (en) * 1987-11-06 1991-04-16 International Business Machines Corporation Data processing system with multi-access memory
JP2741867B2 (ja) * 1988-05-27 1998-04-22 株式会社日立製作所 情報処理システムおよびプロセツサ
EP0519348B1 (en) * 1991-06-19 1999-07-28 Hewlett-Packard Company Co-processor supporting architecture adapted to a processor which does not natively support co-processing
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5748468A (en) * 1995-05-04 1998-05-05 Microsoft Corporation Prioritized co-processor resource manager and method
US5928322A (en) * 1996-11-20 1999-07-27 Silicon Graphics, Inc. Low-latency real-time dispatching in general purpose multiprocessor systems
US6226738B1 (en) * 1997-08-01 2001-05-01 Micron Technology, Inc. Split embedded DRAM processor
US6505290B1 (en) * 1997-09-05 2003-01-07 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
DE69737750T2 (de) * 1997-12-17 2008-03-06 Hewlett-Packard Development Co., L.P., Houston Erst- und Zweitprozessoren verwendetes Verfahren
US6016542A (en) * 1997-12-31 2000-01-18 Intel Corporation Detecting long latency pipeline stalls for thread switching
KR100308618B1 (ko) * 1999-02-27 2001-09-26 윤종용 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법
US6829666B1 (en) * 1999-09-29 2004-12-07 Silicon Graphics, Incorporated Modular computing architecture having common communication interface
US6865663B2 (en) * 2000-02-24 2005-03-08 Pts Corporation Control processor dynamically loading shadow instruction register associated with memory entry of coprocessor in flexible coupling mode

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7987341B2 (en) 2002-10-31 2011-07-26 Lockheed Martin Corporation Computing machine using software objects for transferring data that includes no destination information
US8250341B2 (en) 2002-10-31 2012-08-21 Lockheed Martin Corporation Pipeline accelerator having multiple pipeline units and related computing machine and method
WO2006039711A1 (en) * 2004-10-01 2006-04-13 Lockheed Martin Corporation Service layer architecture for memory access system and method
US7487302B2 (en) 2004-10-01 2009-02-03 Lockheed Martin Corporation Service layer architecture for memory access system and method
US7676649B2 (en) 2004-10-01 2010-03-09 Lockheed Martin Corporation Computing machine with redundancy and related systems and methods
US7809982B2 (en) 2004-10-01 2010-10-05 Lockheed Martin Corporation Reconfigurable computing machine and related systems and methods
US8073974B2 (en) 2004-10-01 2011-12-06 Lockheed Martin Corporation Object oriented mission framework and system and method
JP2008243203A (ja) * 2007-03-28 2008-10-09 Internatl Business Mach Corp <Ibm> 仮想化されたデータ処理環境におけるワークロード管理
JP2008299740A (ja) * 2007-06-01 2008-12-11 Seiko Epson Corp 非同期マイクロプロセッサ、電子情報装置
JP2009009477A (ja) * 2007-06-29 2009-01-15 Toshiba Corp 演算方式を制御して情報を処理する装置、方法およびプログラム
JP2009026135A (ja) * 2007-07-20 2009-02-05 Nec Electronics Corp マルチプロセッサ装置

Also Published As

Publication number Publication date
KR20020020186A (ko) 2002-03-14
CN1342940A (zh) 2002-04-03
TW581950B (en) 2004-04-01
US6829697B1 (en) 2004-12-07
KR100422491B1 (ko) 2004-03-11
CN1188794C (zh) 2005-02-09
SG100751A1 (en) 2003-12-26

Similar Documents

Publication Publication Date Title
JP2002149424A (ja) 共有コプロセッサ・リソースに対する複数の論理インタフェース
US5251306A (en) Apparatus for controlling execution of a program in a computing device
US5185868A (en) Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
US7360217B2 (en) Multi-threaded packet processing engine for stateful packet processing
US8230144B1 (en) High speed multi-threaded reduced instruction set computer (RISC) processor
US5499349A (en) Pipelined processor with fork, join, and start instructions using tokens to indicate the next instruction for each of multiple threads of execution
JP3461704B2 (ja) 条件コードを使用する命令処理システムおよびコンピュータ
US5560029A (en) Data processing system with synchronization coprocessor for multiple threads
US4829425A (en) Memory-based interagent communication mechanism
US20040172631A1 (en) Concurrent-multitasking processor
US20100205608A1 (en) Mechanism for Managing Resource Locking in a Multi-Threaded Environment
JP2001350638A (ja) 多重スレッド使用方法、多重スレッド処理システム、スレッド実行コントローラおよびバッファ使用方法
US8001547B2 (en) Logic for synchronizing multiple tasks at multiple locations in an instruction stream
US8595747B2 (en) Efficient task scheduling by assigning fixed registers to scheduler
Melvin et al. A massively multithreaded packet processor
JPH0778088A (ja) プロセッサシステムで複数個の割込を処理するための装置、プロセッサシステムで複数個の割込トリガからの割込に応動する方法、ならびに複数個のプロセッサ間の同時タスクのための方法および装置
US20090138880A1 (en) Method for organizing a multi-processor computer
GB2582784A (en) Booting tiles of processing units
US20170147345A1 (en) Multiple operation interface to shared coprocessor
US7155718B1 (en) Method and apparatus to suspend and resume on next instruction for a microcontroller
WO2002046887A2 (en) Concurrent-multitasking processor
WO2021013727A1 (en) Processor
US20240095103A1 (en) System and Method for Synchronising Access to Shared Memory
WO2007039837A2 (en) Implied instruction set computing (iisc) / dual instruction set computing (disc) / single instruction set computing (sisc) / recurring multiple instruction set computing (rmisc) based computing machine / apparatus / processor
JPH0340169A (ja) 多重プロセツサシステムおよび複数の処理装置を制御する方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050209

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050428

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050809

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060404

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060628

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060704

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20061205