JPH11327930A - 複数個のタスクを実行するためのプロセッサおよび方法、マルチタスクコンピュ―タプロセッサ、タスクに各リソ―スを割当てるための回路、複数個のリソ―スを共用するための方法、命令を実行するためのプロセッサ、マルチタスクプロセッサ、コンピュ―タ命令を実行するための方法、ならびにマルチタスク方法 - Google Patents

複数個のタスクを実行するためのプロセッサおよび方法、マルチタスクコンピュ―タプロセッサ、タスクに各リソ―スを割当てるための回路、複数個のリソ―スを共用するための方法、命令を実行するためのプロセッサ、マルチタスクプロセッサ、コンピュ―タ命令を実行するための方法、ならびにマルチタスク方法

Info

Publication number
JPH11327930A
JPH11327930A JP11096570A JP9657099A JPH11327930A JP H11327930 A JPH11327930 A JP H11327930A JP 11096570 A JP11096570 A JP 11096570A JP 9657099 A JP9657099 A JP 9657099A JP H11327930 A JPH11327930 A JP H11327930A
Authority
JP
Japan
Prior art keywords
task
processor
instruction
tasks
resource
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP11096570A
Other languages
English (en)
Other versions
JP3670160B2 (ja
Inventor
Alexander Joffe
アレクサンダー・ヨッフェ
Dmitry Vyshetsky
ドゥミトゥリー・ビシェツキー
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.)
MACOM Connectivity Solutions LLC
Original Assignee
MMC Networks Inc
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 MMC Networks Inc filed Critical MMC Networks Inc
Publication of JPH11327930A publication Critical patent/JPH11327930A/ja
Application granted granted Critical
Publication of JP3670160B2 publication Critical patent/JP3670160B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/507Low-level

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

(57)【要約】 【課題】 効率的なパイプラインプロセッサ、マルチタ
スクプロセッサおよびリソースアクセス技術を提供す
る。 【解決手段】 マルチタスクパイプラインプロセッサに
おいて、連続する命令が種々のタスクによって実行さ
れ、前の命令を完了できないときに後の命令の命令実行
パイプラインを取除く必要をなくす。タスクはタスク特
定値をストアするレジスタを共用せず、それによって新
しいタスクが実行のためにスケジュールされるときにレ
ジスタをセーブまたはロードする必要をなくす。命令が
利用不可なリソースにアクセスすれば、その命令はサス
ペンドされ、リソースが利用可となるまで他のタスクの
命令が代わりに実行される。ハードウェアによってタス
クスケジュールが行なわれ、オペレーティングシステム
は必要ではない。

Description

【発明の詳細な説明】
【0001】
【関連出願への相互参照】該当なし
【0002】
【連邦政府資金による研究または開発に関する陳述】該
当せず
【0003】
【発明の背景】この発明はデータ処理に関し、より特定
的にはパイプライン化された命令実行、マルチタスキン
グおよびリソースアクセス技術に関する。
【0004】パイプライン化およびマルチタスキングに
よりプロセッサの帯域幅が増加する。これらの技術に伴
う時間および複雑さを低減することが望ましい。
【0005】特に、命令実行がパイプライン化される
と、プロセッサは、命令を実行すべきであるかどうかが
わかる前に命令を実行し始めることもあり得る。たとえ
ば、プロセッサが命令I1を実行し始め、次に、I1の
実行が完了する前に命令I2を実行し始めたとする。I
1の実行が完了できないのであれば、命令I2を実行す
べきではなく、命令I2をパイプラインから除去しなけ
ればならない。実際に、どの時点においてもプロセッサ
はパイプラインから除去すべきである2つ以上の命令を
実行しているかもしれない。パイプライン除去に関連す
る回路の複雑さを低減することが望ましい。
【0006】また、マルチタスキング環境においてさま
ざまなタスク間での切替えに伴うオーバヘッドを低減す
ることも望ましい。タスクを切替えるには、プロセッサ
により実行されるオペレーティングシステムが、どのタ
スクが次に実行されるべきであるかを定めなければなら
ない。また、オペレーティングシステムは、あるタスク
により用いられたレジスタ値をセーブし、別のタスクに
より用いられる値をレジスタにロードしなければならな
い。これらの機能は相当な数のオペレーティングシステ
ム命令を伴うことがある。こうした動作に関連のある命
令の数を減少することが望ましい。
【0007】また、利用可能でないかもしれないリソー
スへのアクセスを改善することが望ましい。そのような
リソースの一例としては、プロセッサが読もうとする際
には空であり、またはプロセッサが書こうとする際には
一杯であるかもしれないFIFOが挙げられる。FIF
Oにアクセスする前に、プロセッサはFIFOが利用可
能であるかどうかを示すフラグを調べる。利用可能でな
いかもしれないリソースにアクセスする速度を改善する
ことが望ましい。
【0008】また、複数のタスクによるコンピュータリ
ソースの利用を同期化するための単純な同期化方法を提
供し、リソースが別のタスクによりアクセスされるよう
設定されている際に、あるタスクがそのリソースにアク
セスすることによって生じ得るエラーを回避することが
望ましい。
【0009】
【発明の概要】この発明はいくつかの実施例において、
効率のよいパイプラインプロセッサ、マルチタスキング
プロセッサおよびリソースアクセス技術を提供する。
【0010】いくつかの命令実行パイプライン実施例に
おいて、パイプライン除去オーバヘッドはプロセッサが
どのタスクに対しても続けて実行できる命令の数を制限
することによって低減または消去される。このため、い
くつかの実施例では、連続した命令は別々のタスクによ
り実行される。そのため、命令を実行できない場合で
も、次の命令は異なるタスクに属するため当該次の命令
は依然として実行されなければならない。このため、次
の命令はパイプラインから除去されない。
【0011】いくつかの実施例では、同じタスクのどの
2つの命令の間でも、プロセッサは別のタスクからの十
分な数の命令を実行してパイプライン除去の必要をなく
している。
【0012】タスク切替えに関連するオーバヘッドを低
減するため、いくつかの実施例では各々のタスクに対す
る別個のレジスタが含まれており、レジスタ値がタスク
切替え動作においてセーブされたり、またはリストアさ
れたりする必要がないようにする。特に、いくつかの実
施例では、各タスクは別個のプログラムカウンタ(P
C)レジスタおよび別個のフラグを有する。いくつかの
実施例において、タスク切替えはハードウェアによって
1クロックサイクルで行なわれる。
【0013】いくつかの実施例において、プロセッサ
は、リソースが利用可能であるかどうかを予めチェック
することなくリソースにアクセスすることができる。プ
ロセッサがリソースにアクセスする命令を実行する際に
リソースが利用可能でない場合、プロセッサはその命令
をサスペンドする。その命令を実行するはずであったプ
ロセッサ回路は、たとえば別のタスクの命令など、別の
命令を実行するのに利用可能となる。
【0014】そのため、いくつかの実施例では、プロセ
ッサはすべてのリソース(たとえばFIFOなど)の状
態を追跡する。(特に断っていない限り、ここで用いて
いる術語「リソース」はある時点において利用可能であ
るかもしれない、または利用可能でないかもしれない何
かを意味する。)生成される信号は各リソースの状態を
示しており、特にどのリソースがどのタスクに利用可能
であるのかを示す。あるタスクが利用可能でないリソー
スにアクセスを試みた場合、そのタスクはサスペンドさ
れ、プロセッサは本来そのサスペンドされたタスクが利
用できたはずのタイムスロット内で他のタスクを実行で
きる。リソースが利用可能となると、そのサスペンドさ
れたタスクは再開され、そのリソースにアクセスする命
令が再実行される。
【0015】複数のタスクが1つ以上のリソースを共用
する際の同期エラーを避けるため、いくつかの実施例で
は、あるタスクがリソースのいずれか1つにアクセスし
終わると、そのタスクは、そのリソースを共用する他の
すべてのタスクがそのリソースにアクセスし終わるまで
そのリソースにアクセスすることができない。このた
め、いくつかのネットワーク実施例では、さまざまなタ
スクがFIFOリソースを共用してデータフレームを処
理する。各タスクは別個のデータフレームを処理する。
フレームを処理するには、タスクは「リクエスト」FI
FOからフレームアドレスを読む。次に、タスクはコマ
ンドFIFOに、チャネルプロセッサがフレームを処理
するようにというチャネルプロセッサへのコマンドを書
込む。2つ目のタスクは異なるフレームに対して同様の
動作を行なう。始めのタスクは再び、さらに別のフレー
ムに対して同じ動作を行なう。あるフレームに対して書
かれたコマンドが別のフレームに誤って適用された場
合、フレームは誤って処理される可能性がある。
【0016】この可能性をなくし、リクエストFIFO
におけるフレームアドレスとコマンドFIFOにおける
コマンドとを正確に一致させるため、以下の技術が用い
られる。まず、あるタスク(たとえばT1)がリクエス
トFIFOおよびコマンドFIFOの双方にアクセスを
許されるが、他のどのタスクもこれらのリソースにアク
セスすることを許されない。一旦タスクT1がいずれか
のリソースにアクセスし終わると、そのリソースに別の
タスクがアクセスすることが許可され、さらにタスクT
1は、そのリソースを共用する他のすべてのタスクがそ
のリソースにアクセスし終わるまでは再びそのリソース
にアクセスすることを許されない。このため、リクエス
トFIFOにおけるフレームアドレスの順序はコマンド
FIFOにおけるコマンドの順序と対応しており、チャ
ネルがフレームアドレスとコマンドとを正確に一致させ
ることができるようにする。この一致を確立するのに特
殊なタグは何ら必要ではなく、この一致は単純なデータ
構造であるFIFOを用いて確立される。
【0017】いくつかの実施例では、プロセッサはネッ
トワークのデータフローを処理するいくつかのタスクを
実行する。プロセッサは高い帯域幅をもたらすのに、上
述のパイプラインおよびタスク切替え技術を用いる。
【0018】他の実施例および変更例を以下に説明す
る。この発明は添付の特許請求の範囲により規定され
る。
【0019】
【好ましい実施例の説明】図1には、パイプライン化さ
れたマルチタスキングプロセッサ(マイクロコントロー
ラ)160を含むポートインターフェイス(PIF)回
路110が示される。ポートインターフェイス110
は、4つの全二重ポートを含み、これらはATMスイッ
チ120とそれぞれ対応の4つのイーサネットセグメン
ト(図示せず)との間でインターフェイスをもたらし、
4つのイーサネットセグメントの各々は対応するMAC
130.0−130.3に接続される。各ポート「x」
(x=0,1,2,3)において、イーサネットセグメ
ントとATMスイッチ120との間のデータは、対応す
るMAC130.xおよび対応するスライサ140.x
を通って流れる。スライサは周知のATM SAR機能
を実行し、イーサネットフレームをATMセルに分割
し、ATMへ向かう途中でセルにATMヘッダを付加
し、イーサネットへ向かう途中でセルからフレームをア
センブルする。いくつかの実施例では、PIF110へ
のATMスイッチインターフェイスはフレームモードで
動作し、このモードにおいてはATMスイッチは、間に
介在するセルのない状態でセルのフレームをスライサ1
40に送る。スライサ140はAAL−5プロトコルを
用いる。フレームモードはたとえば、A.ヨッフェ(Jo
ffe )他による1996年8月30日出願の「ATMス
イッチにおけるセルキューイング」(“Cell Queuing i
n ATM Switches”)と題された米国特許出願第08/7
06,104号に記述される。また、1997年8月2
8日出願の、ここに引用により援用されるPCT出願P
CT/US97/14821を参照されたい。
【0020】PIF110の他の実施例では、必ずしも
ATMまたはイーサネットではない他のネットワーク間
でインターフェイスがもたらされる。いくつかの実施例
では、スライサ140は適当なMACで置換えられる。
【0021】プロトコル変換(たとえば、ATM/イー
サネット変換)を実行するのに加えて、PIF110は
IPルーティング、レイヤー2スイッチングまたは、P
IFマイクロコントローラ160により実行されるソフ
トウェアにより定められる他の処理を行なうことができ
る。図3、図4に関連して以下の説明を参照されたい。
また、本出願と同日出願のA.ヨッフェ他による「ネッ
トワークでデータを転送するためのネットワークプロセ
ッサシステムおよび方法」(“SYSTEMS AND METHODS FO
R DATA TRANSFORMATION AND TRANSFER IN NETWORKS”)
と題された米国特許出願(代理人事件番号M−4855
US)も参照されたい。これもここに引用により援用
される。
【0022】PIF110はさほど速くないクロック速
度においてであってもスループットが高い。そのため、
いくつかの実施例では、PIF110はわずか50MH
zのクロック速度において4つの100MB/秒イーサ
ネットポートおよびそれぞれ対応の4つの155MB/
秒ATMポートに対してIPルーティングを行なうこと
ができる。
【0023】図1では、各スライサ140.xとその対
応するMAC130.xとの間のデータフローは対応す
るチャネル150.x(以下、チャネル「x」、すなわ
ちチャネル0,1,2または3、とも称される)により
制御される。チャネル150はマイクロコントローラ1
60からのコマンドを実行する。いくつかの実施例で
は、4つのチャネル150.xは、時分割多重方式を用
いて4つのチャネル150の機能を果たす1つのチャネ
ル回路により実現される。ここに引用により援用される
前述の米国特許出願代理人事件番号M−4855 US
「ネットワークでデータを転送するためのネットワーク
プロセッサシステムおよび方法」を参照されたい。
【0024】チャネル、マイクロコントローラ、スライ
サ140およびMAC130はメモリ164を介して通
信し、メモリ164は以下に説明する内部メモリ(「フ
レームおよびコマンドメモリ」)170およびFIFO
230、240を含む。
【0025】いくつかのイーサネットの実施例では、マ
イクロコントローラはMII(メディア独立インターフ
ェイス)管理回路180に接続され、MII管理回路1
80は当該技術分野において公知であるイーサネット物
理層装置に接続される。
【0026】サーチマシン(SM)190はメモリ20
0内にアドレス導出データベースを保持し、IPルーテ
ィングまたはソフトウェアにより定められる他の処理を
行なう。SM190はまた、メモリ200内に(たとえ
ばVLANまたはアクセス制御リストを規定することに
よって)ネットワーク接続性を制限するデータベースを
保持する。サーチマシンはマイクロコントローラ160
により提示されるキー(たとえばイーサネットまたはI
Pアドレス)を探索することができ、学習アルゴリズム
を実行してそのアドレスがデータベースにない場合にレ
イヤー2またはレイヤー3アドレスを学習する。サーチ
マシン190はいくつかの実施例ではソフトウェアプロ
グラマブルではないが、サーチマシンはフレキシブルな
データベースノード構造をサポートしており、このた
め、サーチマシンは異なる機能(たとえばIPルーティ
ング、レイヤー2スイッチングなど)にたやすく適合で
きる。サーチマシン190は、サーチ、インサート、デ
リートなどのマイクロコントローラからのコマンドを実
行する。サーチマシンはまた、マイクロコントローラに
メモリ200への直接のアクセスを与える。サーチマシ
ンについては、追補8に記載する。
【0027】いくつかの実施例では、メモリ200はフ
ロースルー動作モードにおいてシンクロナススタティッ
クRAMを用いて実現される。いくつかの実施例では複
数のメモリバンクが用いられている。
【0028】いくつかの実施例では、PIF110は集
積回路である。メモリ200は集積回路の一部ではない
ため「外部」と称される。しかしながら、他の実施例で
は、メモリ200は同じ集積回路の一部である。この発
明はいかなる特定の集積方式によっても限定されるもの
ではない。
【0029】PIF110はまた、シリアル読出専用メ
モリ(ROM)204(いくつかの実施例ではシリアル
EPROM)に接続され、ブート時にROM204から
マイクロコントローラへソフトウェア(「ファームウェ
ア」)がロードされるようにする。
【0030】図2には、メモリ164内の1つのチャネ
ル150.xおよびその関連のFIFOリソースが示さ
れる。チャネルは以下の2つの類似した部分に分割され
る。すなわち、対応するMAC130から対応するスラ
イサ140へのデータフローを制御する入ってくる(イ
ングレス)サブチャネル150Iと、スライサ140か
らMIC130へのデータフローを制御する出ていく
(イーグレス)サブチャネル150Eとである。特に断
っていない限り、参照番号においてサフィックス「I」
はイングレスサブチャネルに属する回路を示し、サフィ
ックス「E」はイーグレスサブチャネルに属する回路を
示す。
【0031】各サブチャネル150I、150Eにおい
てデータ処理は以下のステップを含む。
【0032】(1) 対応する入力制御ブロック210
(すなわち210Iまたは210E)は対応するデータ
FIFO220に入来データをストアする。マイクロコ
ントローラがアドレス変換または他の処理を開始できる
ようにするのに十分なデータフレームの部分が受取られ
ると(たとえばIPルーティング実施例ではIPアドレ
スおよびホップカウントが受取られると)、入力制御2
10はそれぞれ対応のリクエストFIFO230にリク
エストを書く。リクエストがFIFO230に書かれる
前に受取られるフレームバイトの数は、前述の米国特許
出願代理人事件番号M−4855 USに説明されるよ
うにマイクロコントローラにより書込可能なレジスタに
より規定される。
【0033】(2) マイクロコントローラ160はリ
クエストを読み、対応するデータFIFO220から適
当なパラメータ(たとえばイングレス側での発信元およ
び行先アドレスまたはイーグレス側でのVPI/VC
I)を読み、適当な処理を行なう。マイクロコントロー
ラはたとえばアドレス導出探索を行なうため、必要に応
じてサーチマシン190を用いる。
【0034】(3) サーチマシン190がマイクロコ
ントローラ160に探索結果を返すと、マイクロコント
ローラはそれぞれ対応のコマンドFIFO260に1つ
以上のチャネルコマンドを書き、これはフレームをどの
ように出力装置(MAC130またはスライサ140)
に転送するべきであるかを特定する。
【0035】(4) フレーム全体が受取られた後、入
力制御210はそれぞれ対応のステータスFIFO24
0にステータス情報を書く。ステータスFIFOはマイ
クロコントローラ160により読まれる。ステータスに
よりフレームが不良であることが示されると(たとえば
チェックサムが不良である場合)、マイクロコントロー
ラはコマンドFIFO260に「破棄」コマンドを書い
て出力制御250がそのフレームを破棄するようにさせ
る。
【0036】ステップ(2)、ステップ(3)およびス
テップ(4)は図3、図4に関連して以下に説明する他
の処理を含んでいてもよい。
【0037】(5) 出力制御250はそれぞれ対応の
コマンドFIFO260からのコマンドを実行する。
【0038】いくつかの実施例では、データFIFO2
20およびコマンドFIFO260は内部メモリ170
内にストアされる。リクエストFIFO230およびス
テータスFIFO240はメモリ230、240(図
1)内にストアされる。
【0039】イーグレス出力制御ブロック250Eの出
力はマイクロコントローラに接続され、ATMスイッチ
120がプログラム(「アプレット」)をマイクロコン
トローラにロードして実行できるようにする。アプレッ
トはまず、他のフレームと類似した態様でイーグレス側
に転送されるが、これらのアプレットのVPI/VCI
パラメータはマイクロコントローラを示している。そこ
で、アプレットはMAC130には転送されない。代わ
りに、アプレットは回路250Eの出力からマイクロコ
ントローラプログラムメモリ314(図6)にDMA転
送によりロードされる。
【0040】マイクロコントローラ160はまた、それ
自身のフレームを発生し、これをいずれかのデータFI
FO220へ書き、対応するコマンドFIFO260へ
コマンドを書くことができる。対応する出力制御250
はそのコマンドにより特定されるとおりにフレームを転
送する。
【0041】マイクロコントローラはまた、コマンドF
IFO260に、各サブチャネル150I、150Eの
ための別個のメモリ(図示せず)にストアされる統計情
報を転送するコマンドを書くことができる。
【0042】いくつかの実施例では、マイクロコントロ
ーラ160は費用のかかるリソースである。注目すべき
ことは、いくつかの実施例においてマイクロコントロー
ラ命令実行ユニット(図6において310として示され
以下に説明される)がPIF110のゲートカウントの
約70%を占めることである。このため、マイクロコン
トローラを常に稼動させることが望ましい。以下のよう
に適当なマルチタスキングによって完全稼動させること
ができる。
【0043】マイクロコントローラは、各ポート0、
1、2、3につき1つずつの、4つの「ハードウェアタ
スク」HT0、HT1、HT2、HT3を実行する。ハ
ードウェアタスクは以下の表に示すように時分割多重方
式で実行される。
【0044】
【表1】
【0045】ハードウェアタスクが利用可能でない場合
(たとえば、ハードウェアタスクがサーチマシンを待っ
ているためなど)、それぞれのクロックサイクルにおい
てどのマイクロコントローラ命令も開始されない。
【0046】各ハードウェアタスクは1つ以上のソフト
ウェアタスクを含む。各ソフトウェアタスクはフレーム
全体を処理するコードを含む。イングレス側のフレーム
とイーグレス側のフレームとが並列に到着し得るため、
いくつかの実施例では各ハードウェアタスクは少なくと
も2つのソフトウェアタスクを含んでおり少なくとも2
つのフレームを並列処理できるようにする。いくつかの
実施例では、異なるソフトウェアタスクがイングレス側
とイーグレス側とに提供される。イングレスソフトウェ
アタスクが、たとえばマイクロコントローラがサーチマ
シンを待っているため実行できない場合、マイクロコン
トローラはイーグレスソフトウェアタスクを実行でき
る。また、その逆も可能である。
【0047】以下、術語「タスク」は、特に「ハードウ
ェアタスク」と記載しない限り、ソフトウェアタスクを
意味するものとする。
【0048】図3には、イングレスタスクによる1つの
フレームのレイヤー3処理が示される。ステージ290
DAでは、サブステージ290DA.1においてマイク
ロコントローラはフレームから、イーサネット(MA
C)行先アドレスDAを読む。マイクロコントローラは
このアドレスをサーチマシン190に供給し、サーチマ
シン190はサブステージ290DA.2において探索
を行なう。
【0049】サブステージ290DA.3において、マ
イクロコントローラは探索結果を調べる。DAが見つか
らなかった場合、フレームは捨てられるか、またはブロ
ードキャストされる。DAが見つかり、サーチマシンが
そのDAを最終行先ステーションのアドレスであると認
識した場合、探索結果は、フレームが最終行先に送られ
ることとなる仮装接続(VC)のVPI/VCIを含む
ことになる。この場合、IPステージ290IPはスキ
ップされる。探索結果からDAがIPルーティングエン
ティティに割当てられたアドレスであることが示される
と、IP処理がステージ290IPにおいて行なわれ
る。
【0050】そのステージでは、サブステージ290I
P.1においてマイクロコントローラはフレームからI
P行先アドレスを読む。サーチマシンはステージ290
IP.2においてそのアドレスに対して探索を行なう。
マイクロコントローラはサブステージ290IP.3に
おいて探索結果を調べる。結果にはVPI/VCIが含
まれ、またアクセス制御制約が含まれることもある。サ
ブステージ290IP.3において、マイクロコントロ
ーラはアクセス制御制約をIP発信元アドレスと突き合
わせ、フレームが許可されるかどうかを判定する。許可
されない場合、フレームは捨てられる。
【0051】ステージ290SAにおいて、イーサネッ
ト発信元アドレスSAは処理され、アドレス学習アルゴ
リズムを実現し、またVLANを実現する。より特定的
には、サブステージ290SA.1において、サーチマ
シンはSAに対して探索を行なう。サーチマシンは学習
アルゴリズムがリクエストするのであればSAデータを
挿入または修正する。サブステージ290SA.2にお
いて、サーチマシンは、SAが属するVLANを戻す。
サブステージ290SA.3において、マイクロコント
ローラはそのVLANをステージ290DA.2におい
てサーチマシンが返したDA VLANと比較する。イ
ーサネット発信元および行先アドレスが異なるVLAN
に属する場合、フレームは捨てられる。
【0052】サブステージ290DA.3、290I
P.3、290SA.3のうちの1つまたは2つ以上に
おいて、マイクロコントローラはそれぞれ対応のデータ
フロー(すなわちそれぞれ対応のサブチャネル)に対し
てコマンドFIFO260Iへコマンドを書く。コマン
ドはチャネル150がフレームを捨てるように指示して
も、またはフレームをそれぞれ対応のスライサ140に
転送するように指示してもよい。フレームが転送される
場合、チャネルは、コマンドの指示に従い、スライサに
VPI/VCIを供給したり、また、IPホップカウン
トをインクリメントしたり、および/または発信元アド
レスをそれぞれ対応のMAC130のアドレスで置換え
たりする。
【0053】図4には、1つのフレームに対してイーグ
レスタスクにより行なわれる処理が示される。ステージ
294VCにおいて、タスクはVPI/VCIを調べて
フレームがアプレットであるかどうかを判定する。もし
そうであれば、タスクはそのフレームをマイクロコント
ローラプログラムメモリ(以下に説明する図6において
314として示される)にロードし、アプレットを実行
する。ステージ294IPはスキップされる。
【0054】代わりに、VPI/VCIはフレームがA
TMスイッチ120からの情報リクエストであることを
示していてもよい。そのようなリクエストの例として
は、PIF110内のレジスタを読むリクエスト、また
は統計情報を読むリクエストが含まれる。イーグレスタ
スクがそのリクエストを行なう。それが情報のリクエス
トであれば、イーグレスタスクは、イーグレスタスクを
実行するのと同じハードウェアタスクのイングレスコマ
ンドFIFO260Iに1つ以上のコマンドを書く。こ
れらのコマンドにより、チャネルがその情報をスイッチ
に送ることになる。ステージ294IPはスキップされ
る。
【0055】VIP/VCIがスイッチ120からのど
の管理リクエスト(情報のリクエストなど)をも示さな
い場合、ステージ294IPが行なわれる。サブステー
ジ294IP.1において、タスク(すなわちマイクロ
コントローラ)はフレームからIP行先アドレスを読
み、そのアドレスをサーチマシンに供給する。ステージ
294IP.2において、サーチマシンは探索を行な
い、イーサネット行先アドレスを返し、場合によっては
アクセス制御情報をも返す。ステージ294IP.3に
おいて、タスクはそのイーグレスコマンドFIFO26
0Eへコマンドを書き、フレームのイーサネット行先ア
ドレスをサーチマシンがもたらすアドレスで置換えさ
せ、イーサネット発信元アドレスをそれぞれ対応のMA
C130.xのアドレスで置換えさせ、フレームをMA
Cへ転送させる。また、タスクソフトウェアに応じて他
の種類の処理が行なわれてもよい。
【0056】マイクロコントローラがステージ290D
A.2、290IP.2、290ISA.2、294I
P.2においてサーチマシンを待っている間、マイクロ
コントローラは同じまたは別のハードウェアタスクにお
ける別のソフトウェアタスクを実行するのに利用可能で
ある。
【0057】いくつかの実施例では、各イングレスフロ
ーおよび各イーグレスフローに対して1つのタスクを有
しているだけではマイクロコントローラを完全に稼動さ
せることにならず、そのため、各半二重データフローに
対して2つ以上のタスクが提供され、マイクロコントロ
ーラが各データフローにおいて2つ以上のフレームを並
列に処理できるようにする。このことは以下を考慮する
ことによって説明される。イーサネットフレームが短い
ときにマイクロコントローラの速度が最もリクエストさ
れる。なぜなら、図3、図4に示される同じ処理を短い
フレームと長いフレームとの双方に対して行なわなけれ
ばならないからである。最も短いイーサネットフレーム
は64バイトを有する。たとえば、4つのイーサネット
ポートが100MB/秒ポートであり、ATMポートが
155MB/秒であるとする。100MB/秒では、最
も短いフレームはイーサネットポートを5.12マイク
ロ秒で通過する。このため、マイクロコントローラおよ
びサーチマシンはフレームを5.12+1.6=6.7
2マイクロ秒で処理しなければならない(1.6マイク
ロ秒はフレーム間ギャップである)。
【0058】50MHzのマイクロコントローラクロッ
ク速度を仮定しよう。これは信頼性のある動作を確実に
するためのかなり遅いクロック速度である。他の実施例
ではより速い速度(たとえば100MHz)が用いられ
る。50MHzにおいて、6.72マイクロ秒は336
クロックサイクルである。このため、1つのハードウェ
アタスクのイングレスおよびイーグレスタスクのための
クロックサイクル割当は336/4=84クロックサイ
クルである。
【0059】フレームの処理はマイクロコントローラと
サーチマシンとで分けられているが、これらは必ずしも
同じフレームに対して並列に作業する訳ではないため、
同じハードウェアタスク内の1つのイングレスフレーム
と1つのイーグレスフレームとに対する処理レイテンシ
は結線速度での処理においてさえ、84サイクルより長
くてよい。処理するのに84サイクルよりも長くかか
り、64バイトのフレームがイングレス側およびイーグ
レス側において連続して到着する場合、同じデータフロ
ーにおける前のフレームが処理される前に次のフレーム
が到着し始めることがあり得る。このため、マイクロコ
ントローラが、同じデータフローにおける前のフレーム
の処理が完了する前に次のフレームを処理し始めること
ができるようにすることが望ましい。同じデータフロー
における複数のフレームのこのような並列処理を実現す
るために、各データフローに対して2つ以上のソフトウ
ェアタスクが提供される。
【0060】このように、いくつかの実施例では、各ハ
ードウェアタスクHTxは2つのイングレスタスクIG
x.0、IGx.1および2つのイーグレスタスクEG
x.0、EGx.1を含む。たとえば、ハードウェアタ
スクHT1はイングレスタスクIG1.0、IG1.1
およびイーグレスタスクEG1.0、EG1.1を含
む。各タスクは以下のものを含む4ビットのタスク番号
により識別される。
【0061】CHID−−それぞれ対応のポート0、
1、2、3に対してのチャネルID(2ビット)=0、
1、2、または3 SN−−シーケンス番号(IGx.0、EGx.0では
0、IGx.1、EGx.1では1) I/E−−イングレスには0、イーグレスには1 タスクの総数はすなわち16である。
【0062】1つのフレームは1つのタスクにより処理
される。フレームがアプレットである場合、そのアプレ
ットは同じタスクにより実行される。
【0063】マイクロコントローラ命令実行はパイプラ
イン化される。このため、上記の表1では、それぞれ対
応のハードウェアタスクに対して新しい命令が開始され
るクロックサイクルが示される。たとえば、サイクル1
では、ハードウェアタスクHT0に対して命令実行が開
始される。命令実行は後続のサイクルにおいても続く。
【0064】各サブチャネルにおけるFIFO230、
240、260へのタスクのアクセスは図5の論理図に
示される態様で制御される。図5では、「タスク0」お
よび「タスク1」は同じサブチャネルに対する2つのタ
スクであり、たとえばチャネル150.1のサブチャネ
ル150Iに対するイングレスタスクIG1.0、IG
1.1である。始めはタスク0のみがサブチャネルFI
FO230、240、260へのアクセスを有する。タ
スク0がリクエストFIFO230にアクセスすると、
スイッチ「a」が切替えられ、リクエストFIFOをタ
スク1に接続する。タスク0はタスク1がリクエストF
IFOを読むまでリクエストFIFOを読むことが許さ
れない。
【0065】スイッチ「b」はコマンドFIFO260
へのタスクのアクセスを制御する。スイッチ「b」は、
タスク0によってあるフレームに対するすべてのコマン
ドが書かれた際に切替えられる。
【0066】ステータスFIFO240へのタスクのア
クセスを制御するスイッチ「c」はステータスFIFO
がタスク0により読まれた際に切替えられる。
【0067】サーチマシンへのタスクのアクセスを同期
化するため、サーチマシン190は次々にコマンドを実
行し、結果を同じ順序でもたらす。
【0068】各命令において、実行のためのタスクを選
択するのには1クロックサイクルしか要さない(以下に
説明する図7におけるパイプラインステージTS)。さ
らに、タスクの選択はパイプライン化されており、その
ためスループットに影響を及ぼさない。タスクの選択は
ハードウェアにより行なわれる。マイクロコントローラ
においてオペレーティングシステムは用いられない。こ
のため、低いレイテンシが達成される。
【0069】どの時点においても、各タスクは3つの状
態、すなわち、アクティブ、レディまたはサスペンド、
のうちの1つにある。アクティブ状態では、タスクは実
行されている状態である。最も多くて4つのタスク(各
ハードウェアタスクにつき1つ)が同時にアクティブで
あり得る。各アクティブタスクは4クロックサイクルご
とに実行がスケジュールされる(上の表1を参照のこ
と)。
【0070】アクティブタスクは、タスクが利用可能で
ないリソースにアクセスを試みるとサスペンド状態に移
行する。リソースは追補2に記載される。リソースが利
用可能となるとタスクはレディ状態に入る。
【0071】アクティブタスクがサスペンドされると、
同じチャネルにおけるレディ状態にあるタスクのうちの
1つがタスク制御320(図6)により実行のため選択
され、アクティブ状態に移行する。
【0072】図6はマイクロコントローラ160のブロ
ック図である。実行ユニット310はプログラムメモリ
314にストアされるプログラムを実行する。プログラ
ムはブートの間に、ROM204(図1)からダウンロ
ードされる。さらに、上述のようにアプレットをロード
して動的に実行することもできる。アプレットは実行さ
れた後に破棄されてもよく、またはアプレットはメモリ
314に残されてもよい。
【0073】実行ユニット310は、汎用レジスタを有
するレジスタファイル312、特殊レジスタブロック3
15およびデータメモリ316を含む。レジスタファイ
ル312は、それぞれ対応のバスsa_bus 、sb_bus に
接続される2つの32ビット出力を含み、バスsa_bus
、sb_bus はALU318の入力に接続される。デー
タメモリ316および特殊レジスタブロック315の3
2ビット出力はsa_busに接続される。バスsa_bus に
別個に接続されているのは特殊レジスタ「ヌル」および
「ワン」の出力であり(追補6、表A6−1)、特殊レ
ジスタは定数値をストアする(これらのレジスタは図6
において「定数レジスタ」と記される)。
【0074】バスsa_bus はまた、プログラムメモリ3
14から読まれる命令の即値フィールド「imm」を受
取る。
【0075】ALU318の64ビット出力は64ビッ
トバスres _bus に接続され、64ビットバスres _bu
s はレジスタファイル312、データメモリ316およ
び特殊レジスタブロック315の入力に接続される。
【0076】レジスタファイル312、データメモリ3
16および特殊レジスタ315は追補6に記載される。
そこに記載されるように、レジスタおよびデータメモリ
はタスク間で分けられているため、タスクが再スケジュ
ールされる際にセーブ/リストア動作は必要ではない。
特に、特殊レジスタ315は各タスクにつき1つずつの
16個のPC(プログラムカウンタ)レジスタを含む。
【0077】ロード/ストアユニット(LSU)330
は実行ユニット310、サーチマシン190および内部
メモリ170の間でインターフェイスをもたらす。LS
U330は、メモリからレジスタをロードするか、また
はレジスタ内容をメモリにストアするためのロードおよ
びストアリクエストの待ち行列を維持する。LSU33
0の入力はres _bus に接続され、またLSU330の
64ビットの出力rfiはレジスタファイル312の入
力に接続される。
【0078】DMAブロック340の入力はバスres _
bus に接続され、実行ユニット310がDMA340を
プログラムできるようにする。DMA340はアプレッ
トをプログラムメモリにロードすることができる。
【0079】図7には命令実行パイプラインが示され
る。パイプラインには7つのステージがある。
【0080】(1) タスクセレクト(TS)ステージ
t0。このステージでは、アクティブタスクがタスク制
御320によってそれぞれ対応のチャネル150.xに
対して選択される。いくつかの実施例では、タスク制御
ブロックは固定優先順位機構を実現しており、タスクI
Gx.0が最高優先順位を有し、次にIGx.1、その
次にEGx.0、そしてその次にEGx.1となる。
【0081】いくつかの実施例では、タスクは一度アク
ティブにされると、より高い優先順位のタスクがランす
る用意ができたというだけではサスペンドされない。そ
の優先順位のより低いタスクは利用可能でないリソース
にアクセスを試みるまでアクティブのままである。
【0082】(2) フェッチ(F)ステージt1にお
いて、タスク制御ブロック320は実行ユニット310
に対してアクティブタスク番号信号task# _t1(追補1
の表A1−1におけるtsk _taskNumt1 と同じ)を駆動
する。信号task# _t1は特殊レジスタ315内の16個
のPC値のうちの1つを選択する。
【0083】どのタスクもアクティブではない場合、タ
スク制御ブロック320は実行ユニット310に「アイ
ドル」信号をアサートする。この信号は表A1−1にお
いて「tsk _idle」と表わされている。「アイドル」が
アサートされると、task# _t1は「ドントケア」であ
り、命令実行ユニット310は残りのパイプラインステ
ージにおいてNOP(ノーオペレーション)命令を実行
する。
【0084】「アイドル」がデアサートされると、特殊
レジスタブロック315においてtask# _t1により選択
されたPCレジスタ値はプログラムメモリ314に与え
られる。選択されたPCにより示される命令がメモリか
ら実行ユニット310へ読出される。
【0085】(3) デコード(D)ステージt2にお
いて、命令は実行ユニットによりデコードされる。
【0086】(4) 読出(R)ステージt3におい
て、レジスタファイル312および/または特殊レジス
タ315および/またはデータメモリ316から命令オ
ペランドが読まれ、ALU318に提示される。
【0087】また、このステージにおいて、以下に図8
から図15に関連してより詳しく説明するように、タス
ク制御320は配線410(図6)上にサスペンド信号
(表A1−1におけるtsk _susp)を発生する。サスペ
ンド信号がアサートされると、タスクはサスペンドさ
れ、命令実行はアボートされ、タスクのPCレジスタは
凍結される。後にタスクがアクティブにされると、同じ
命令が再実行されることになる。
【0088】また、このステージにおいて、実行ユニッ
ト310はウェイト信号を発生する。ウェイト信号がア
サートされると、命令実行は完了させられずPCレジス
タは凍結するが、タスクはアクティブのままであり、次
のクロックサイクルから命令は再び実行される。たとえ
ば、図7の命令1が、サイクル3においてアサートされ
るウェイト信号によって遅延された場合、同じ命令はサ
イクル4において開始される命令番号5として再実行さ
れることになる。
【0089】ウェイト信号は、命令を妨害している条件
が、同じハードウェアタスクが再スケジュールされるこ
ろまでにはなくなりそうである場合にアサートされる。
ウェイト条件は追補3に記載される。
【0090】サスペンド信号およびウェイト信号がデア
サートされると、PCレジスタは次の命令を指すように
変えられる。
【0091】(5) 実行(E)ステージt4におい
て、命令は実行される。 (6) ライトバック(WB)ステージt5において、
実行ステージの結果は行先がレジスタファイル312内
にある場合を除いて、その行先に書かれる。
【0092】(7) レジスタ書込(WR)ステージに
おいて、実行ステージの結果は必要であればレジスタフ
ァイル312に書込まれる。
【0093】注目すべきなのは、各命令のWRステージ
(たとえばサイクル6の命令1)が同じハードウェアタ
スクの次の命令のRステージの前に起こることである
(サイクル7の命令5を参照のこと)。そのため、たと
えば命令5が命令1の結果を用いるとすると、その結果
は命令5がそれをサイクル7において読む前にレジスタ
ファイルまたは特殊レジスタに書かれることになる。
【0094】図7に示したように、(Rステージにおい
て)命令がアボートされると、パイプラインはすでに開
始された他の命令から除去されなくてもよい。なぜな
ら、これらの命令は他のタスク(さらには他のハードウ
ェアタスク)に属するからである。たとえば、命令1を
アボートしなければならない場合、命令1のRステージ
において、またはその前に開始された他の命令とは命令
2、3および4だけである。これらの命令は他のタスク
によって実行されるため、除去されなくてもよい。
【0095】所与のハードウェアタスクに関して、対応
する4つのソフトウェアタスクの間で切替えをするの
に、タスク切替えがオペレーティングシステムソフトウ
ェアにより行なわれる場合とは異なり、別個の命令を実
行することは必要ではない。このため、高いスループッ
トが達成される。
【0096】図8には、1つのリクエストFIFO23
0またはステータスFIFO240に関するタスク同期
化のバブル図が示される。下方のダイアグラム704で
は、「タスク0」および「タスク1」は図5と同じ意味
を有する。より特定的には、これらはリクエストまたは
ステータスFIFOを共用する2つのソフトウェアタス
クである。いくつかの実施例では、タスク0はイングレ
スサブチャネルに対するIGi.0またはイーグレスサ
ブチャネルに対するEGi.0である。
【0097】ダイアグラム704はFIFOの所有権を
示す状態機械である。RESETにおいて、FIFOは
状態710RS.0によって示されるようにタスク0に
より所有される。
【0098】タスク0がFIFOを読むのに成功する
と、FIFOは状態710RS.1により示されるよう
に、タスク1により所有されることになる。FIFOを
読むことは図5の「a」または「c」スイッチを切替え
ることに等しい。タスク1がFIFOを読むのに成功す
ると、状態機械は状態710RS.0に戻る。
【0099】FIFO読出動作は条件mfsel[x] & ffrd
により示される。信号mfsel は追補4に記載される。信
号ffrdは、マイクロコントローラによりいずれかのリク
エストまたはステータスFIFOが読まれると、ステー
ジt3において実行ユニットによりアサートされる。別
個のffrdバージョンが各リクエストおよびステータスF
IFOに対して生成される(FIFO読出が成功する
と、追補4の信号mfrdがステージt5においてアサート
される)。
【0100】リクエストおよびステータスFIFOは1
6個ある。これらFIFOの各々は0から15までの一
意の数「x」により識別される。FIFO「x」が読ま
れている際、図8のmfsel[x]により示されるように、そ
の数「x」はラインmfsel 上に駆動される。
【0101】ダイアグラム720および740はタスク
0およびタスク1がFIFOに関連してどのように状態
を変化させるかを示している。上に示したように、各タ
スクには3つの状態、すなわちレディ(「RDY」)、
アクティブおよびサスペンドがある。RESETにおい
て、すべてのタスクはレディとなる。タスクはパイプラ
インステージt0において選択されるとアクティブとな
る。
【0102】ここで説明する実施例では、タスクは直接
アクティブ状態からレディ状態へ移行することができな
いが、これは他の実施例では可能である。
【0103】ここで説明する実施例では、各タスクは
「サスペンド」条件730が生ずるとアクティブ状態か
らサスペンド状態へ移行する。サスペンドされたタスク
はリリース条件734が生ずるとレディとなる。可能な
サスペンド条件を追補1の表A1−2に列挙する。リリ
ース条件は表A1−3に列挙する。
【0104】ダイアグラム720では、サスペンド条件
730は、タスク0がFIFOが利用可能でないときに
FIFOにアクセスを試みる際に生じる。より特定的に
は、条件730とは以下のとおりである。
【0105】(1) タスクがパイプラインステージt
3にあること(実行ユニット310により生成される信
号「T3」により示される)。
【0106】(2) ffrdがアサートされ、FIFO読
出動作を示していること。 (3) mfsel がFIFO「x」を識別していること。
また、 (4) FIFOがタスク1により所有されている(状
態機械704が状態710RS.1にある)か、または
信号cfifordy[x] がローであり、FIFO「x」が空で
あることを示していること。(信号cfifordyは追補4に
記載される。この信号は4つ目のサイクルごとにサンプ
リングされ、サンプリングされる際には有効である。) FIFOがタスク0によって読まれておりそれ以外のど
のタスクによっても読まれているのではないことは、タ
スク0がパイプラインステージt3にあることにより確
証される。
【0107】タスク1に対する条件730(ダイアグラ
ム740)も同様である。ダイアグラム720、740
における条件730は表A1−2(追補1)において、
各種類のタスク(イングレスタスク0、イングレスタス
ク1、イーグレスタスク0、イーグレスタスク1)およ
び各種類のFIFO(リクエストおよびステータス)に
ついて別々に示される。リクエストFIFO条件は4つ
のセクション「イングレスタスク0」、「イングレスタ
スク1」、「イーグレスタスク0」、「イーグレスタス
ク1」の各々において条件番号1として列挙されてい
る。すなわち、イングレスタスク0についての条件は、
exe _RfifoRd & mfsel[x] &(Ireqf |〜cfifordy[x]
)である。
【0108】信号exe _RfifoRd はffrdと同じである。
Ireqf はFIFOがイングレスタスク1により所有され
ていることを示す。表A1−2のすべての信号はステー
ジt3においてサンプリングされるため、「t3」は表
中の条件のいくつかでは省いてある。イーグレスタスク
0に関して、信号Ereqf はそれぞれ対応のリクエストF
IFOがイーグレスタスク1により所有されていること
を示す。すなわち、Ereqf がIreqf と入れ代わってい
る。タスク制御320は各リクエストFIFOに対して
別個の信号Ireqf またはEreqf を発生する。
【0109】追補1において、信号の否定は(〜cfifor
dyのように)信号名称の前の「〜」により示されるか、
または(イーグレスタスク1に対する条件1のEreqf _
のように)信号名称の後に続く下線によって示される。
【0110】ステータスFIFOに関して、サスペンド
条件730は表A1−2において2と番号のつけられた
条件である。信号exe _SfifoRd はステータスFIFO
に対するffrdバージョンである。ステータスFIFOを
識別する番号は「x」ではなく「y」で示される。
【0111】ダイアグラム720におけるリリース条件
734は、タスク0がFIFOを所有している(状態機
械704が状態710RS.0にある)ことと、cfifor
dy[x] がハイでありFIFOが空ではないことを示して
いることである。タスク1に対するリリース条件734
(ダイアグラム740)は同様である。
【0112】リリース条件は追補1の表A1−3に示さ
れている。各リリース条件は表A1−2の同じスロット
内のサスペンド条件に対応する。たとえば、表A1−3
における「イングレスタスク0」セクションのリリース
条件1は、タスクが表A1−2における「イングレスタ
スク0」セクションのサスペンド条件1によりサスペン
ドされた場合にそのタスクをレディ状態にリリースす
る。このように、表A1−3におけるリリース条件1お
よび2は、リクエストおよびステータスFIFOに対す
るダイアグラム720および740でのリリース条件7
34に対応する。
【0113】図9には、サブチャネルコマンドFIFO
260(すなわち260I)に関するイングレスサブチ
ャネルにおけるタスク同期化が示される。下部のダイア
グラム804には、イングレスコマンドFIFOのため
の状態機械が示される。このFIFOはイングレスタス
クおよびイーグレスタスクの双方により所有され得る。
RESETにおいて、状態機械は状態S0にある。この
状態において、FIFOはイングレスタスク0により所
有されている。イングレスタスク0が、(図5のスイッ
チ「b」を切替えて)FIFOをロックすることなく1
つのワードをFIFOに書くと、FIFOは状態S1に
移行し、この状態ではFIFOはイングレスタスク1に
より所有される。書込動作は信号IcmdFifoWr[x] により
示され、ここで「x」はイングレスコマンドFIFOに
書くことができる4つのイングレスおよびイーグレスタ
スクのうちの1つを特定する。(IcmdFifoWr[x] がステ
ージt3において実行ユニットによりアサートされる
と、対応するmfloadビット(追補4)がステージt5に
おいてアサートされる。)信号IcmdFifoWr[x] は、それ
ぞれ対応のタスクがFIFOに書くたびに適当な「x」
に対してアサートされる。
【0114】ロックされていないことは「アンロック」
信号により示され、「アンロック」信号は、コマンドF
IFOを書くのに用いられるマイクロコントローラ命令
「CMD」(追補7)のLフラグから実行ユニット31
0によって生成される。
【0115】イングレスタスク1が、コマンドFIFO
をロックすることなく(「x」がイングレスタスク1を
示しているIcmdFifoWr[x] により示されるように)その
コマンドFIFOに書くと、状態機械は状態S0に戻
る。
【0116】イングレスタスク0が状態S0にあるFI
FOに書き、「ロック」信号がアサートされてそのFI
FOをロックすべきであることを示すと、状態機械は状
態S2に移行する。この状態においては、FIFOは依
然としてイングレスタスク0により所有されている。ロ
ック信号は、マイクロコントローラ命令CMD(追補
7)におけるLフラグから実行ユニット310により生
成される。FIFOは、イングレスタスク0が「アンロ
ック」信号がアサートされている状態でFIFOに書く
まで状態S2に留まる。書かれた時点でFIFOは状態
S1に移行する。
【0117】同様に、イングレスタスク1が「ロック」
がアサートされている状態で状態S1にあるFIFOに
書くと、FIFOは状態S3に移行する。この状態にお
いてFIFOは依然としてイングレスタスク1により所
有されている。FIFOは、イングレスタスク1が「ア
ンロック」がアサートされた状態でFIFOに書くまで
状態S3に留まる。書かれた時点でFIFOは状態S0
に移行する。
【0118】状態機械が状態S0またはS1にあり、イ
ーグレスタスクがコマンドFIFOをロックすることな
くそのコマンドFIFOに書く場合、状態遷移は起こら
ない。イーグレスタスク0が状態S0にあるFIFOを
ロックしてFIFOに書くと、FIFOは状態S4に移
行する。この状態において、コマンドFIFOはイーグ
レスタスク0により所有される。状態機械は、イーグレ
スタスク0が「アンロック」がアサートされている状態
でコマンドFIFOに書くまで状態S4に留まる。書い
た時点で、状態機械は状態S0に戻る。
【0119】状態S5はS4に類似しているが、イーグ
レスタスク1がコマンドFIFOに書込をしこれを所有
することを表わす。
【0120】状態S6およびS7はそれぞれ対応の状態
S4およびS5に類似しているが、状態S6およびS7
には状態S0ではなくS1から入る。
【0121】ダイアグラム820および840には、コ
マンドFIFOに関するそれぞれ対応のイングレスタス
ク0および1の状態遷移が示される。サスペンド条件7
30は表A1−2において番号が3の条件である。信号
IcmdFifoWr[x] はイングレスタスク0および1に対する
条件3におけるexe _IcmdFifoWr[x] と同じである。表
A1−2における信号task# _t3はダイアグラム820
および840における「T3」と同じである。信号ccmd
full[x] は、コマンドFIFO「x」が一杯であるとい
う信号である(追補4を参照のこと)。この信号はステ
ージt3において有効である。信号IcmdfOwnedByI0は、
コマンドFIFOがイングレスタスク0により所有され
ていることを示す(すなわち、状態機械804は状態S
0またはS2にある)。信号IcmdfOwnedByI1は、コマン
ドFIFOがイングレスタスク1により所有されている
ことを示す(ダイアグラム804における状態S1、S
3)。
【0122】イーグレスタスクに関して、イングレスコ
マンドFIFOに書込むことにより生じたサスペンド条
件は表A1−2の条件8である。信号IcmdfOwnedByE0
は、コマンドFIFOがイーグレスタスク0により所有
されていることを示す(ダイアグラム804における状
態S4、S6)。信号IcmdfOwnedByE1は、コマンドFI
FOがイーグレスタスク1により所有されていることを
示す(ダイアグラム804における状態S5、S3)。
【0123】リリース条件734(図9)は表A1−3
におけるイングレスタスクに対する条件3である。
【0124】イーグレスコマンドFIFOに関するイー
グレスタスク同期化も同様である。イーグレスFIFO
については、状態S4、S5、S6、S7は存在しな
い。表A1−2およびA1−3において、関係のある条
件は番号が3である条件である。信号exe _EcmdFifoWr
がexe _IcmdFifoWrと置換わり、イーグレスFIFOへ
の書込動作を示す。信号Ecmdf1は、FIFOがイーグレ
スタスク1により所有されていることを示す。
【0125】図10には、DMAリソースに関するイー
グレスタスク同期化が示される。下部のダイアグラム9
04には、DMA状態機械が示される。RESETにお
いて、DMAはIDLEである。図10において「dmaa
_wr」により示されるように、イーグレスタスクがDM
Aアドレス(プログラムメモリ314におけるDMA転
送先アドレス)をDMA340(図6)のDMAアドレ
スレジスタDMAA(追補6)へ書くと、そのタスクは
DMA所有者となり、DMA340がアクティブとなり
内部メモリ170からDMA転送を開始する。図10の
例において、DMA所有者はイーグレスタスク0であ
る。
【0126】図10の「last_word」により示されるよ
うに、転送が完了すると、DMAはレディ(「RD
Y」)となる。
【0127】DMAがレディ状態にあり、DMA所有者
タスクがDMAアドレスレジスタを読むと(図10にお
いて「dmaa_rd」として示される)、DMAは実行状態
に移行する。DMA所有者はDMAレディ状態において
しかアドレスレジスタを読むことが許されない。非所有
者タスクはどのDMA状態においてもDMAアドレスレ
ジスタを読むことが許される。
【0128】DMAが実行状態にあると、DMA所有者
タスクはDMAによりロードされるアプレットを実行す
る。新たなDMAアクセスは許されない。
【0129】DMA所有者タスクがリリースコード11
1をDMAAレジスタ(追補1)のOPフィールドに書
込むと、DMAはアイドル状態に戻る。
【0130】ダイアグラム920、930には、必ずし
も同じハードウェアタスクにあるわけではない2つのイ
ーグレスタスク、すなわちタスク0、タスクN、に対す
る状態遷移が示される。条件730は表A1−2におけ
るイーグレスタスクに対する条件7である。表におい
て、exe _dmaaRdは図10のdmaa_rdと同じであり、ex
e _dmaaWrはdmaa_wrと同じである。図10の「dmaa_
rd,wr 」は「dmaa_rdまたはdmaa_wr」という意味であ
る。信号exe _dmaaRd、exe _dmaaWrは実行ユニット3
10により生成される。
【0131】このように、DMA所有者タスクは、この
DMA所有者タスクが、DMAがアクティブである間に
ステージt3においてDMAアドレスレジスタを読もう
と試みるか、またはDMAアドレスレジスタに書こうと
試みる際にサスペンドされる。所有者タスクはDMAが
レディとなるとリリースされる。非所有者タスクはDM
Aがレディである間にステージt3においてDMAレジ
スタに書こうと試みる際にサスペンドされる。非所有者
タスクはDMAがアイドルとなるとリリースされる。
【0132】リリース条件734は表A1−2において
イーグレスタスク0および1に対する条件7において
「clast _word」として示される。
【0133】図11には、セマフォレジスタsemr
(追補2、6)に関するタスク同期化が示される。サス
ペンド条件730は表A1−2において条件5として示
される。各サスペンド条件は以下のとおりである。すな
わち、(1)タスクがパイプラインステージt3にある
ことと、(2)BITCまたはBITCI命令がタスク
により実行され、そのターゲットのオペランドがセマフ
ォレジスタであり、その命令が、その命令の以前からセ
マフォレジスタビットが有していた値と同じ値をセマフ
ォレジスタビットに書こうとしているためアボートされ
なければならないこと(これは表A1−2の信号exe _
bitcSemRegにより示されており、「exe _」で始まる信
号名称はすべて実行ユニット310により生成される信
号を表わしている)とである。サスペンドが生じると、
タスク制御ブロック320はフラグSPxを1に設定
し、ここで「x」はタスク番号(0−15)である。
【0134】リリース条件730はフラグSPxがクリ
アされる(すなわち0に設定される)ことである。タス
ク制御ブロック320は以下の2つの条件のうちのいず
れか1つでも生じるとすべてのフラグSPxをクリアす
る。すなわち、 (1) パイプラインステージt3において、命令BI
TCまたはBITCIの実行がどれか他のタスクYによ
って成功したこと。この条件は表A1−3におけるリリ
ース条件5の信号exe _bitcSemAccにより示される。
【0135】(2) チャネル150がセマフォレジス
タに書くこと。これはcstrobe がアサートされており
(追補4における表A4−1)、csem[5]が1に
あることによって示される。チャネルは、チャネルコマ
ンドによりコマンドされると、セマフォレジスタにアク
セスしてマイクロコントローラ160に表示を送る。こ
こに引用により援用される、上記の米国特許出願代理人
事件番号M−4855US「ネットワークでデータを転
送するためのネットワークプロセッサシステムおよび方
法」を参照されたい。
【0136】図12には、サーチマシン190に関する
タスク状態遷移が示される。サスペンド条件730(表
A1−2における条件4)は以下の条件(1)および
(2)の両方が真であることである。すなわち、 (1) タスクがパイプラインステージT3にあり、そ
のタスクがサーチマシンにコマンドを書くという命令を
実行する(表A1−2においてexe _scmdWrとして示さ
れる、信号scmd_wr)か、またはサーチマシンから結果
を読むという命令を実行すること(表A1−2において
exe _scmdRdとして示される、信号sres_rd)。追補7
のマイクロコントローラ命令SMWR(サーチマシンコ
マンド書込)および追補6のレジスタscmd、scmde の記
載を参照されたい。
【0137】(2) 信号task_ownbit[x] が0である
こと(「x」はタスク番号)により示されるように、サ
ーチマシンリソースがタスクによって利用可能でないこ
と。この信号は追補1の表A1−1およびA1−2では
sm_task_ownbitとして示される。名称が「sm_」で始
まる信号はサーチマシン190により生成される。サー
チマシンリソースおよびサスペンド条件は追補2に記載
される。
【0138】リリース条件734とはそれぞれ対応のta
sk_ownbit[x] が1であることである。
【0139】図13には、メモリ170におけるフリー
リストのスクラッチバッファ1610(図18および追
補5)に関するタスク同期化が示される。サスペンド条
件730(表A1−2での条件6)は、以下のすべてが
真であることである。すなわち、 (1) タスクがパイプラインステージt3にあるこ
と。
【0140】(2) 実行ユニットにより生成される信
号ifreel_rdにより示されるように、タスクが内部フリ
ーリストレジスタIFREEL(追補6)を読んでいる
こと。この信号は表A1−2においてはexu _ifreelRd
と表わされる。IFREELレジスタが読まれてフリー
バッファ番号が得られる。
【0141】(3) 「no_free_buffers 」(「no_
free_buf 」)信号が特殊レジスタブロック315によ
りアサートされ、フリーバッファがないことを示してい
ること。
【0142】リリース条件734は、以下の3つの条件
のうちのいずれかが真となることである。すなわち、 (1) cstrobe (追補4における表A4−1)がチャ
ネル150によりアサートされ、csem[5]が0で
あり、チャネル150が、信号csem[4:0]によ
り特定されるスクラッチバッファ1610を内部フリー
リストに戻そうとしていることを示していること。
【0143】(2) 信号IfreelWr(表A1−3におけ
るexu _ifreelWr)は実行ユニットによりアサートさ
れ、マイクロコントローラがIFREELレジスタ(追
補6)へ書いていることを示していること。このレジス
タには、フリーとなったスクラッチバッファの番号が書
込まれる。
【0144】(3) 信号IfreerWr(exu _ifreerWr)
が実行ユニットによりアサートされ、マイクロコントロ
ーラがIFREERレジスタへ書いていることを示して
いること。
【0145】図14はタスク制御ブロック320のブロ
ック図である。タスク制御320は、4つの同じラッチ
のブロック1304.0、1304.1、1304.
2、1304.3を含む。ラッチ1304.0はパイプ
ラインステージt0(TS)におけるハードウェアタス
クに関する情報をストアする。その情報はラッチ130
4.1の入力に与えられる。ラッチ1304.1はパイ
プラインステージt1におけるハードウェアタスクに関
する情報をストアする。同様にラッチ1304.2、1
304.3はそれぞれ対応のステージt2、t3におけ
るハードウェアタスクに関する情報をストアする。ラッ
チ1304.1の出力はラッチ1304.2のそれぞれ
対応の入力に接続される。ラッチ1304.2の出力は
ラッチ1304.3のそれぞれ対応の入力に接続され
る。ラッチ1304.3の出力は、パイプラインステー
ジt3におけるソフトウェアタスクがサスペンドされる
べきであるかどうかを判定するのに用いられ、また、以
下に説明するようにそれぞれ対応のハードウェアタスク
に対するソフトウェアタスクの状態を判定するのに用い
られる。
【0146】すべてのラッチは同じクロック(図示せ
ず)によりクロックされる。各ブロック1304におい
て、ラッチ1320はそれぞれ対応のハードウェアタス
ク番号HT#(上のCHIDと同じ)をストアする。ラ
ッチ1322はハードウェアタスクに対するアクティブ
なソフトウェアタスク番号ST#=<SN,I/E>をストアする。
そのハードウェアタスクに対していずれのタスクもアク
ティブではない場合、ラッチ1322の出力は「ドント
ケア」である。
【0147】このように、ブロック1304.1のラッ
チ1320、1322の出力は信号task# _t1を形成し
(図6)、ブロック1304.2のラッチ1320、1
322の出力は信号task# _t2を形成する。ブロック1
304.3のラッチ1320、1322の出力はラッチ
回路1360の入力に接続され、ラッチ回路1360の
出力はラッチ回路1362の入力に接続される。回路1
362の出力は信号task# _t5をもたらす(図6)。
【0148】ブロック1304.3のラッチ1320の
出力はブロック1304.0のラッチ1320の入力に
接続される。
【0149】各ブロック1304は、4つのソフトウェ
アタスクIGx.0(図14において「I0」とも示さ
れる)、IGx.1(「I1」)、EGx.0(「E
0」)およびEGx.1(「E1」)の各々につき1つ
ずつの4つのラッチ回路1330を含み、ここで「x」
はそれぞれ対応のラッチ1320にストアされるハード
ウェアタスク番号である。各ラッチ回路1330は2つ
のラッチ1330S、1330Cを含み、これらは簡単
にするためタスクE1に対してのみ示される。回路13
30Sはタスクの状態(すなわちレディ、アクティブま
たはサスペンド)をストアする。回路1330Cはタス
クをレディ状態に移行させるのに必要であるリリース条
件734をストアする。リリース条件は(表A1−3に
あるように)1から7まで、または0から6までのイン
デックスの形でストアされる。各種のタスク(I0、I
1、E0、E1)に対する可能なリリース条件のインデ
ックスは追補1の表A1−3の左の欄に示される。
【0150】ラッチ1330Cにある情報は、それぞれ
対応のラッチ1330Sにストアされる状態が「サスペ
ンド」である場合にしか意味をもたない。レディおよび
アクティブ状態に対しては、ラッチ1330Cにある情
報は「ドントケア」である。
【0151】各ブロック1304は6つのラッチ135
0を含み、6つのラッチ1350は対応するハードウェ
アタスクに対する6つのそれぞれ対応のリクエスト、ス
テータスおよびコマンドFIFOの状態をストアする。
可能な状態はダイヤグラム704(図8)および804
(図9)に示され、上に説明したとおりである。
【0152】ブロック1304.3のラッチ回路133
0、1350の出力は次の状態および条件発生器135
4に接続される。回路1354はタスクとリクエスト、
ステータスおよびコマンドFIFOとの次の状態を生成
し、また次のリリース条件値を生成する。これらの状態
および条件信号はバス1358を介してブロック130
4.0の回路1330、1350の入力へ与えられる。
【0153】図15には回路1354がより詳しく示さ
れる。回路1354において、リソース次ステージ発生
器1380はブロック1304.3のラッチ回路135
0からリクエスト、ステータスおよびコマンドFIFO
の状態を受取る。発生器1380はまた、いずれかのリ
ソース、ステータスおよびコマンドFIFOの状態遷移
を引き起こし得る、ダイヤグラム704および804に
関連して上に説明した信号のすべてを受取る。発生器1
380はダイヤグラム704および804に従ってFI
FOの次の状態を計算し、次の状態を同じクロックサイ
クルt3においてラッチブロック1304.0のラッチ
回路1350へ与える。
【0154】各ラッチ回路1330の出力はそれぞれ対
応の回路1390の入力に接続される。簡単にするた
め、タスクE1のための回路1390のみが詳しく示さ
れる。タスクE1に関して、ラッチ1330Cのリリー
ス条件出力はマルチプレクサ1394のセレクト入力に
接続される。マルチプレクサ1394のデータ入力はタ
スクE1に対する7つの可能なリリース条件734を受
取る(表A1−3「イーグレスタスク1」のセクショ
ン)。マルチプレクサ1394に入力される各データ
は、対応するリリース条件が真である場合にはアサート
され条件が偽である場合にはデアサートされる1ビット
信号である。
【0155】マルチプレクサ1394により選択される
リリース条件信号(すなわち、ブロック1304.3の
ラッチ1330Cにストアされるリリース条件に対応す
る信号)はタスク次状態発生器1398に与えられる。
発生器1398はまた、タスクの現在の状態をラッチ1
330Sから受取り、配線410上のサスペンド信号を
以下に説明するサスペンド論理およびリリース条件発生
器1401から受取る。タスク次状態発生器1398
は、タスクがサスペンドされたままであるかどうか、ま
たは代わりにタスクが同じクロックサイクル内にアクテ
ィブになれるかどうかを示す信号Aを発生する。信号A
は以下の表2に従って生成される。
【0156】
【表2】
【0157】アービタ1403は4つの回路1390か
らA出力を受取り、これらからバス1358上に以下の
信号を発生する。すなわち、(1)ブロック1304.
0のそれぞれ対応のラッチ1330Sに対する各タスク
の次のステージと、(2)配線1404上のアクティブ
ソフトウェアタスク番号ST#とである。ソフトウェア
タスク番号はブロック1304.0のラッチ1322へ
送られる。
【0158】アービタ1403はまた、信号「アイド
ル」を発生し、これはアサートされるとどのタスクもア
クティブではないことを示す(図6も参照のこと)。
【0159】タスクI0、I1、E0に対する各回路1
390は、マルチプレクサへのリリース条件入力を、そ
れぞれ対応のタスク(イングレスタスク0、イングレス
タスク1またはイーグレスタスク0)に対応する表A1
−3のセクションから取っていることを除いて、タスク
E1のためのタスク次状態発生器1398およびマルチ
プレクサ1394と同じである信号A発生論理を含む。
【0160】サスペンド論理およびリリース条件発生器
1401はブロック1304.3のラッチ回路1350
の出力を受取り、また、サスペンド条件730(図8か
ら図13および追補1の表A1−2)を計算するのに必
要である信号のすべて(たとえばcfifordy、mfsel な
ど)を受取る。ブロック1401は、ブロック130
4.3のラッチ1322の出力により識別されるアクテ
ィブタスクに対するサスペンド条件を計算する。サスペ
ンド論理1401は配線410上に、タスク次状態発生
器1398と他の3つの回路1390内の同様の発生器
とへサスペンド信号をもたらす。
【0161】さらに、サスペンド論理1401は各マル
チプレクサ1394と他の3つのブロック1390内の
同様のマルチプレクサ(図示せず)とに対するリリース
条件データ入力734を生成する。リリース条件は表A
1−3の式に従って生成される。
【0162】さらに、サスペンド論理1401はブロッ
ク1304.3におけるすべての状態ラッチ1330S
の状態出力を受取る。各タスクについて、(1)状態出
力がアクティブ状態を示し、かつ(2)タスクに対する
サスペンド条件のうちの1つが真である場合、サスペン
ド論理1401は、そのタスクをレディにするのに必要
なリリース条件のインデックス734_inを発生す
る。別個のインデックス734_inが表A1−3のそ
れぞれ対応のセクションに従って各タスクに対して生成
される。図15にはタスクE1のためだけのインデック
ス734_inが示される。
【0163】これ以外のすべての場合において(すなわ
ち、タスクに対する状態出力が「アクティブ」ではない
か、または状態出力はアクティブであるがタスクに対す
るサスペンド条件のいずれも真ではない場合)、タスク
に対するリリースインデックス734_inは「ドント
ケア」である。
【0164】タスクE1に対するリリースインデックス
734_inはマルチプレクサ1406の1つのデータ
入力に与えられる。マルチプレクサの他方のデータ入力
はタスクE1のためのブロック1304.3のラッチ1
330Cからの条件出力を受取る。セレクト入力はタス
クE1に対するブロック1304.3のラッチ1330
Sの状態出力から「act」ビットを受取る。状態出力
は2ビットを有する。ビット「act」は2ビットのう
ちの1ビットである。ビット「act」は状態が「アク
ティブ」であるかどうかを示す。「act」がアクティ
ブ状態を示す場合、マルチプレクサ1406はリリース
インデックス734_inを選択する。「act」が非
アクティブ状態を示す場合、マルチプレクサ1406は
条件ラッチ1330Cの出力を選択する。選択された信
号はバス1358に与えられ、バス1358はその信号
をブロック1304.0におけるタスクE1に対するラ
ッチ1330Cへ供給する。
【0165】同様に、各タスクのための各回路1390
は以下のものを選択する同様なマルチプレクサ1406
(図示せず)を含む。すなわち、同様なマルチプレクサ
1406は(1)それぞれ対応のタスクに対するブロッ
ク1304.3のラッチ回路1330からの出力「ac
t」がアクティブ状態を示す場合には、サスペンド論理
1401からのそれぞれ対応のタスクに対するリリース
条件インデックス734_inを選択し、また、(2)
「act」が非アクティブ状態を示す場合には、それぞ
れ対応のタスクに対するブロック1304.3のラッチ
1330の条件出力を選択する。選択された条件インデ
ックスはブロック1304.0におけるそれぞれ対応の
ラッチ1330の入力に与えられる。
【0166】いくつかの実施例では、1つのタスクがサ
スペンドされると、タスク特有の値を有するレジスタは
セーブされない。特に、各タスクは、タスクPCおよび
フラグを有するそれ自体のPCレジスタを有する(追補
6を参照のこと)。さらに、レジスタファイル312は
8つのバンクに分割される。各バンクは、同じチャネル
からのイングレスタスクおよびイーグレスタスクの対の
専用のものである。タスク対により実行されるソフトウ
ェアは、その対の間に共通のレジスタがないような態様
で書かれる。このため、レジスタファイルレジスタはタ
スク特有の値をストアするのだが、これらのレジスタを
セーブしたりリストアしたりする必要はない。
【0167】ここで説明する実施例はこの発明を限定す
るものではない。特に、この発明はポートの数によって
も、ポートが全二重または半二重であるということによ
っても、いかなるタイミング、信号、コマンドまたは命
令によっても限定されない。いくつかの実施例では、マ
イクロコントローラは、図7のパイプラインまたは何ら
かの別のパイプラインを有する複数の実行ユニットを含
む。いくつかの実施例では、1つ以上のマイクロコント
ローラが、スーパースカラまたはVLIW(very large
instruction word )プロセッサに存在するような複数
の実行ユニットを含む。いくつかの実施例では、マイク
ロコントローラは複数の集積回路で実現されるプロセッ
サにより置換えられる。ここで用いた術語「タスク」に
はプロセスおよびスレッドも含まれる。他の実施例およ
び変更例も、添付の特許請求の範囲に記載されるこの発
明の範囲内に含まれる。
【0168】追補1 タスク制御ブロック
【0169】
【表3】
【0170】
【表4】
【0171】
【表5】
【0172】追補2 リソース 全リソースは特殊レジスタまたは専用マイクロコントロ
ーラコマンドによってアクセスされる。
【0173】サーチマシン サーチマシンは、マイクロコントローラによって書込ま
れるコマンドと結果との2個のリソースを有する。
【0174】書込専用のコマンドリソースは16個ある
(タスクごとに1個)。このリソースが利用可でない唯
一の場合は、同じタスクからの先のコマンドが完了され
ていないときである。
【0175】読出専用の結果リソースは16個ある(タ
スクごとに1個)。あるコマンドがサーチマシンに通知
されると、そのコマンドが実行されるまで結果が利用不
可となる。いくつかのコマンド(たとえば、インサート
またはデリート)は結果を持たない。
【0176】チャネル制御 チャネル制御はコマンドFIFO260、リクエストF
IFO230およびステータスFIFO240との3種
のリソースを有する。
【0177】コマンドリソースは以下の2つの場合利用
不可である。 a.リソースが別のタスクに属する。この場合、他のタ
スクがそのリソースをリリースすると、それはこのタス
クに対して利用可となる。
【0178】b.コマンドFIFOがフルである。この
場合、コマンドFIFOがフルでなくなると、タスクは
このリソースを使用し続けることができる。
【0179】コマンドリソースはセッション保護を有す
る(すなわち、いくつかのコマンドがあるタスクによっ
て書込まれ得るのはリソースが別のタスクに渡される前
である)。これは、最初のアクセスの間にリソースをロ
ックし、最後のアクセスの際にそれをアンロックするこ
とによって達成される。コマンドリソースがロックされ
ると、他のどのタスクもこのリソースにアクセスできな
い。
【0180】チャネル150.xのイーグレスタスクE
Gxは、メッセージをスイッチ120に送るために同じ
チャネル150.xのイングレスコマンドFIFO26
0Iにコマンドを書込むことができる。イングレスコマ
ンドFIFOがアンロックされるたびにイーグレスタス
クがイングレスコマンドFIFOに書込まれ得る。イー
グレスタスクがその最初のコマンドをイングレスコマン
ドFIFO260Iに書込むと、イーグレスタスクから
の最後のコマンドが書込まれるまでコマンドFIFOが
ロックされた状態となる。
【0181】リクエストまたはステータスFIFOリソ
ースは以下の2つの場合利用可でない。
【0182】a.リソースが別のタスクに属する。この
場合、他のタスクがFIFOを読出すと、リソースはこ
のタスクに対して利用可となる。
【0183】b.FIFOが空である。この場合、FI
FOがレディになると、タスクはこのリソースを使用し
続けることができる。
【0184】DMA データFIFOからのアプレットをプログラムメモリ3
14にダウンロードするのはDMAブロックである。こ
のリソースは、転送前にDMAアドレスをセットし、転
送完了時に最後のワードアドレスを読出すイーグレスタ
スクによって用いられる。転送の間に最後のワードアド
レスが読出されると、最後のワードが転送されるまでタ
スクがサスペンドされる。また、最初の転送が完了して
いないときに別のイーグレスタスクによって新しいDM
Aアドレスを書込む試みもタスクサスペンドを引き起こ
す。
【0185】内部メモリ170管理 内部メモリにおけるスクラッチパッドエリア内のフリー
バッファ1610(図17)を管理するのは内部メモリ
管理である。メモリには32個のフリーバッファがあ
る。タスクは、次の利用可能なフリーバッファを得るこ
とを望むとき、フリーリスト(FreeL)リソース
(追補6のレジスタIFREEL)にアクセスする。バ
ッファが残されていなければ、このタスクはサスペンド
される。このバッファを用いたチャネルコマンドによっ
てバッファがリリースされるべきだと示されると、バッ
ファはリリースされてフリーリストに戻る。
【0186】セマフォ セマフォレジスタsemrは32ビットを有する。その
各々がマイクロコントローラの即値ビット変更(BIT
CI)およびBITCコマンドを用いて直接的にアクセ
ス可能である。セマフォは保護とタスク間の通信とのた
めに用いられる。
【0187】BITCIまたはBITCコマンドが同じ
値を現在のビット値としてこのビットに書込もうと試み
る場合、それはアボートされ、そのタスクがサスペンド
される。その後、セマフォレジスタが変更される(レジ
スタにおける何らかのビットが変更される)と、セマフ
ォを待っている全タスクがレディとなり、Bit_ch
ange_Immediate(即値ビット変更)コマ
ンドを再び実行しようとする。
【0188】セマフォレジスタのビット31−24はP
IF110のそれぞれの予め定められた外部ピン(図示
せず)を0から1に変更することによってセットされ得
る。
【0189】追補3 タスクウェイト条件 ウエイト信号をアサートできる条件は2つある。 (1) レジスタスコアボード マイクロコントローラにおけるレジスタごとに、そのス
テータスを表示する1スコアボードビットがある。この
ビットがセットされていれば、レジスタはダーティであ
り、すなわち、データがLSU330によってロードさ
れるのを待っている。起こり得るシナリオは以下のとお
りである。
【0190】(a) タスクがLSUによるレジスタの
ロードをリクエストする。 (b) タスクがソースとしてのこのレジスタの使用を
リクエストする。しかしながら、スコアボードはダーテ
ィである。したがって、ウエイト信号がアサートされ
る。
【0191】(c) 次に、LSUがレジスタをロード
する。 (d) タスクがソースとしてのこのレジスタの使用を
再びリクエストする。今回は使用が許可される。 (2) LSU FIFOフル これはウエイト信号を発生するための別の条件である。
ロード・ストアリクエストを待ち行列に格納しているL
SU FIFOが一旦レディとなると、この条件はクリ
アされる。
【0192】追補4 以下の表はチャネル/マイクロコントローラインターフ
ェイスにおいて用いられるいくつかの信号をリストにし
て挙げる。「I」は信号がチャネルのための入力である
ことを意味する。「O」は信号がチャネル出力であるこ
とを意味する。
【0193】
【表6】
【0194】追補5 メモリ 内部メモリ170のマップ 内部メモリマップを図16に示す。
【0195】データエリア1510(アドレス0000
−1FFF 16進法) このエリアはスクラッチパッド1610、データFIF
OおよびコマンドFIFOのために用いられる。このエ
リアは相対アドレスを用いてアクセスされる。データエ
リアメモリマップを図17に示す。
【0196】図17において、「DBASE_I」はイ
ングレス側のための(後述する)CFGRレジスタの
「DBASE」フィールドである。同様に、DLEN、
CBASE、CLENは対応のCFGRレジスタのフィ
ールドである。サフィックス「_I」はイングレスを表
わし、「_E」はイーグレスを表わす。
【0197】各チャネルのための制御エリア1520 このエリアにおけるレジスタタイプの1つは以下のとお
りである。
【0198】CFGR−チャネルコンフィギュレーショ
ンレジスタ(イングレスおよびイーグレス) 各チャネルの方向ごとに1個、8個のCFGRレジスタ
がある。それらのフィールドは以下のとおりである。
【0199】DBASE (9ビット) データバッフ
ァベースポインタ(64バイト整列) DLEN (7ビット) データバッファ長(64バイ
ト粒度) CBASE (9ビット) コマンドバッファベースポ
インタ(64バイト整列) CLEN (3ビット) コマンドバッファ長(64バ
イト粒度) GAP (4ビット) フレーム制御ワードが無効であ
るときのデータ読出ポインタとデータ書込ポインタとの
間の最小ギャップ(8バイト粒度)。
【0200】データエリア1530(アドレス4000
−5FFF 16進法) このエリアは上述の米国特許出願出願人書類番号M−4
855 USに説明される。
【0201】追補6 マイクロコントローラレジスタ レジスタファイルマップ レジスタファイル312は8個のバンクへと分割される
(図18)。各バンクは同じチャネル150.xからの
1対のイングレスタスクとイーグレスタスクとの専用の
ものである。いくつかの実施例では、イングレス処理の
方がより複雑なのでイングレスタスクがイーグレスタス
クよりも多くのレジスタを用いる。また、いくつかの実
施例では、タスクソフトウェアは、2つのタスク間に共
通のレジスタがないようなものである。
【0202】各レジスタr0.0−r7.7は1バイト
の幅である。連続する8バイトがレジスタファイルから
並列に読出され得る。7ビットレジスタアドレスを形成
するために、レジスタ番号(0から63)が、それ自体
チャネルID「CHID」とタスク対番号(0または
1)とを連結したものであるバンクIDと連結され、ア
ドレスMSBが(特殊レジスタ314に対して)レジス
タファイル312を表示するために0となる。
【0203】マイクロコントローラレジスタマップ マイクロコントローラにおける全レジスタがマイクロコ
ントローラコマンドによって直接的にアクセス可能であ
る。レジスタマップはレジスタファイル312および特
殊レジスタ315という2領域に分割される。レジスタ
アドレスは7ビットからなる。特殊レジスタ315では
アドレスMSBが1であり、レジスタファイル312で
はMSBが0である。
【0204】データメモリ316 データメモリ316(図19)は変数の一時記憶と後述
するいくつかのパラメータとのために用いられる。
【0205】したがって、データメモリ316は以下の
3領域に分割される。 a.タスクごとのタスクレジスタtr0−tr5(タス
クごとに6個)。これらのレジスタはそれぞれのタスク
専用である。
【0206】b.チャネルレジスタcr0−cr3(チ
ャネル150.xごとに4個)。これらのレジスタはハ
ードウェアタスク専用である。同じチャネルの全タスク
(2個のイングレスタスクおよび2個のイーグレスタス
ク)がこれらのレジスタにアクセスする。
【0207】c.グローバルレジスタgr(16個のレ
ジスタ)。これらのレジスタは全タスクに対してグロー
バルである。
【0208】データメモリ316は32ビットの128
ワードである。データメモリ316のための7ビットア
ドレス発生方式を図20に示す。
【0209】trはタスクレジスタ番号(0−5)であ
る。tnはタスク番号(0−15)である(trおよび
tnがタスクレジスタアドレスを形成する)。
【0210】crはチャネルレジスタ番号である(0−
3;「110」、crおよびcnがチャネルレジスタア
ドレスを形成する)。
【0211】cnはチャネル番号(0−3)である。g
rはグローバルレジスタ番号(0−15)である。
【0212】特殊レジスタ(SR)315(以下の表A
6−1参照)は(レジスタファイルと同様に)マイクロ
コントローラコマンドによって直接的にアクセス可能で
ある。特殊レジスタ315は以下の3タイプに分割でき
る。
【0213】a.タスクに属するレジスタ、たとえば、
プログラムカウンタ(PC)、タスク番号(TIN)
等。
【0214】b.リソースレジスタ、たとえば、リクエ
ストFIFO(reqf)、ステータスFIFO(st
tf)、サーチマシンコマンド(scmd)等(追補2
参照)。
【0215】c.データメモリ316レジスタ、たとえ
ば、タスクレジスタ(tr)、チャネルレジスタ(c
r)およびグローバルレジスタ(gr)。
【0216】リソースおよびデータメモリ316(タイ
プ(b)および(c))はそのアクセスを簡単にするた
めに特殊レジスタにマッピングされる。
【0217】適切な特殊レジスタを以下の表に手短に述
べる。
【0218】
【表7】
【0219】いくつかの特殊レジスタのレジスタフィー
ルは以下のとおりである。 PC−プログラムカウンタおよびフラグ PC (10ビット) プログラムカウンタ G (1ビット) フラグ−より大きい L (1ビット) フラグ−より小さい E (1ビット) フラグ−等しい C (1ビット) フラグ−桁上げ G、L、EおよびCは読出専用である。
【0220】TN−タスク番号 CHID (2ビット) チャネルId SN (1ビット) シーケンス番号 I/E (1ビット) イングレス(0)/イーグレス
(1)。
【0221】SCMD、SCMDE−コマンドおよびコ
マンド拡張 書込動作の間、これらの32ビットレジスタはサーチマ
シンのためのコマンドを形成する。読出動作の間、これ
らのレジスタは結果を与える。SCMDEはSCMDの
前に書込まれるべきである。
【0222】XFREEL−外部フリーリスト このレジスタへの書込によって、1ブロックが外部メモ
リ200におけるフリーリストスタックに付加される。
このレジスタからの読出によって、1ブロックがスタッ
クから取除かれ得る。
【0223】1チャネルごとに1個のフリーリストスタ
ックがある。各レジスタはスタックの先頭を指す16ビ
ットポインタを含む。
【0224】TIMER−汎用タイマ Timer (32ビット) タイマ値。タイマはシス
テムクロックが8計時するごとに進む自走カウンタであ
る。
【0225】NXTE (16ビット) エイジングが
あるか調べるための次エントリを指すポインタ。このフ
ィールドは書込専用である。リセット後に初期化される
べきである。
【0226】ET (1ビット) タイマ更新イネーブ
ル。このフィールドは書込動作の間に用いられる。ET
=1であれば、タイマは書込まれた値をとる。ET=0
であれば、タイマカウンタは書込によって影響を与えら
れない。
【0227】EN (1ビット) 次エントリ更新イネ
ーブル。このフィールドは書込動作の間に用いられる。
EN=1であれば、次ポインタが新しい値を得る。EN
=0であれば、NXTEフィールドが無効である。
【0228】SMCNTL−サーチマシン制御レジスタ Pointer (16ビット) ノードエリア開始ポ
インタ。このポインタはサーチノードエリアを定義する
(このエリアの後部が0xFFFFである)。自動エイ
ジング機構はこのエリア内でのみ実行される。
【0229】AGE (1ビット) エイジングイネー
ブル(0−ディセーブル;1−イネーブル)。
【0230】FLCNT−フリーリストカウンタ この読出専用レジスタはメモリ170のスクラッチパッ
ドエリアにおけるフリーリスト内のエントリ数を含む。
【0231】Count (17ビット)カウンタ(最
大値は0x10000である)。 AGEL0、AGEL1−エイジリスト0、1の先頭 これらは読出専用レジスタである(チャネルごとに2
個)。各々がエイジリストの先頭を含む(チャネルごと
に2個のエイジリストがある)。これらのレジスタのど
の1つからの読出もレジスタをクリアさせる。ここで、
ノード(追補8)におけるTSTMP(タイムスタン
プ)がこのリストにおけるノードを互いにリンクするた
めに用いられる。レジスタが0なら、リストは空であ
る。
【0232】Pointer (16ビット) リスト
ポインタの先頭。 しきい値0、しきい値1−しきい値レジスタ これらのレジスタの各々は対応のエイジリストと関連し
たしきい値を含む。
【0233】|current _time-timestamp|>しきい値
であり、かつエントリがLRND(学習されたエント
リ)のタイプであると、エントリはエイジリストに付加
される。
【0234】threshold (16ビット)しき
い値。 MSGR−メッセージレジスタはマイクロコントローラ
とスイッチ120CPU(図示せず)との間でメッセー
ジを転送するために用いられる。メッセージはヘッダラ
インによって転送される。
【0235】MSGA (16ビット) MSGRに書
込むときはCPUへの、レジスタを読出すときはCPU
からのメッセージ。このフィールドは読出の後にクリア
される。
【0236】MSGB (16ビット) レジスタを
(テストのために)読出すときのCPUへのメッセー
ジ。
【0237】 DMAA−DMAアドレス OP (3ビット) 動作 000−nop 001−EPROM204からのロード 010−スイッチ120からのロード 111−リリース EPA (13ビット) EPROM開始アドレス LER (1ビット) ロードエラー PMA (10ビット) プログラムメモリアドレス。
【0238】SEMR−セマフォレジスタ S[i] (1ビット) セマフォビット「i」。
【0239】IFREER−内部フリーレジスタ(16
ビット) F[i] (1ビット) メモリ170のスクラッチパ
ッドエリアにおけるブロック「i」がフリーであるかど
うかを示す。
【0240】IFREEL−内部フリーリスト BLKN (5ビット) フリーブロック番号(すなわ
ち、スクラッチバッファ番号:図17参照)。このレジ
スタの読出によってスクラッチバッファBLKNがフリ
ーリストから取除かれる。このレジスタへの書込によっ
て、書込まれるBLKN値によって特定されるバッファ
がフリーリストに戻される。
【0241】MIR−MII制御レジスタ このレジスタはMII制御インターフェイスによってイ
ーサネットPHY装置と通信するために用いられる。
【0242】BSY (1ビット) ビジー。新しいコ
マンドでセットされ、コマンド完了時にリセットされ
る。
【0243】 NV (1ビット) 有効でない。PHYからのデータ
が有効でないときにセットされる。
【0244】 FIAD (5ビット) PHYアドレス RGAD (5ビット) レジスタアドレス Data (16ビット) データ。
【0245】追補7 マイクロコントローラ命令 3オペランド命令 これらの命令はオペランド_A とオペランド_B との間
で算術論理演算を行なう。結果はオペランド_C に書込
まれる。命令は以下のとおりである。
【0246】ADD−加算 SUB−減算 OR−論理OR AND−論理AND XOR−論理XOR SHL−左シフト SHR−右シフト BITC−ビット変更 命令サイズフィールドがオペランドサイズを特定する。
【0247】命令における2ビット「dt」フィールド
(行先タイプ)が以下のようにオペランド_C のタイプ
を特定する。
【0248】dt=00−オペランド_C はレジスタフ
ァイル312または特殊レジスタ315におけるレジス
タである。
【0249】dt=10−オペランド_C はメモリ17
0内にある。オペランド_C フィールドはアドレス発生
のためにロード/ストアユニットにおいて7ビット即値
として用いられる。
【0250】dt=x1−オペランド_C は外部メモリ
200内にある。オペランド_C フィールドはdt
[1]ビットとともにアドレス発生のためにロード/ス
トアユニットにおいて8ビット即値として用いられる。
【0251】ここで、非ゼロdtを有する命令はそのオ
ペランドとしてリソースを用いることができない。
【0252】即値バイトでの2オペランド命令これらの
命令はオペランド_A と即値バイトとの間で算術論理演
算を行なう。結果はオペランド_C に書込まれる。命令
は以下のとおりである。
【0253】ADI−即値加算 SBI−即値減算 ORI−即値論理OR ANDI−即値論理AND XORI−即値論理XOR SHLI−即値左シフト SHRI−即値右シフト BITCI−即値ビット変更 サイズフィールドがオペランドのサイズを特定する。
【0254】命令の2ビット「dt」フィールド(行先
タイプ)が3オペランド命令におけるようにオペランド
_C フィールドのタイプを特定する。
【0255】2オペランド命令 これらの命令は2つのオペランドの間で移動演算および
比較演算を行なう。命令は以下のとおりである。
【0256】MOVE−オペランドAをオペランドCに
移動させる CMP−オペランドCとオペランドAとを比較する 命令のサイズフィールドがオペランドのサイズを特定す
る。
【0257】即値での1オペランド命令 これらの命令はオペランドと即値フィールドとの間で移
動演算および比較演算を行なう。命令は以下のとおりで
ある。
【0258】MVIW−即値ワードを移動させる MVIB−即値バイトを移動させる CPIB−即値バイトを比較する CPIW−即値ワードを比較する 命令のサイズフィールドがオペランド_C のサイズを特
定する。
【0259】即値フィールドでの特殊1オペランド命令 これらの命令は以下のようにオペランドCに対して演算
を行なう。
【0260】SMWR−サーチマシン書込 CMD−チャネルコマンド書込 CASE−ケースステートメント BTJ−ビットテストおよびジャンプ。
【0261】ロードおよびストア命令 これらの命令はオペランドAとメモリ170または20
0との間でロードおよびストア演算を行なう。命令は以
下のとおりである。
【0262】 LOAD STORE 「dt」フィールド(行先タイプ)が以下のように行先
のタイプを特定する。
【0263】dt=10−行先がメモリ170である。
即値フィールドはアドレス発生のためのロード/ストア
ユニットにおいて7ビット即値として用いられる。
【0264】dt=x1−行先がメモリ200である。
即値フィールドはdt「1」ビットとともにアドレス発
生のためのロード/ストアユニットにおいて8ビット即
値として用いられる。
【0265】特殊即値命令 この命令はCMDI(即値コマンド)である。これはコ
マンドFIFOに書込むために用いられる。
【0266】選択された命令 ADD、SUB、ADI、SBI フラグ:Eは結果が0に等しいときにセットされる Cは(ADD、ADIのための)キャリーまたは(SU
B、SBIのための)ボローが(オペランドopCのサ
イズに基づいて)発生されたときにセットされる。
【0267】OR、AND、XOR、SHL、SHR、
ORI、ANDI、XORI、SHLI、SHRI フラグ:Eは結果が0に等しいときにセットされる。
【0268】BITC−ビット変更 オペランド:ビット[31:25]=opC、[24:
18]=opA、[17:16]=dt、[14:8]
=opB、[7]=v 演算:opC<-opA[opB]<-v(すなわち、opCにおけるビ
ット番号opBがvにセットされること以外では、op
CがopAの値を受取る) フラグ:Eは(opA[opB]==v)であるときに
セットされる。
【0269】BITCI−即値ビット変更 オペランド:ビット[31:25]=opC、[24:
18]=opA、[17:16]=dt、[12:8]
=imm、[7]=v 演算:opC<-opA[imm]<-v フラグ:Eは(opA[imm]==v)であるときに
セットされる。
【0270】CMP−比較 オペランド;ビット[31:25]=opC、[24:
18]=opA、[7:5]=オペランドサイズ 演算:opC?opA フラグ:Eは(opC==opA)であるときにセット
される Gは(opC>opA)であるときにセットされる Lは(opC<opA)であるときにセットされる。
【0271】CPIW−即値ワード比較 オペランド:ビット[31:25]=opC、[23:
8]=imm 演算:opC?imm フラグ:Eは(opC==imm)であるときにセット
される Gは(opC>imm)であるときにセットされる Lは(opC<imm)であるときにセットされる。
【0272】CPIB−即値バイト比較 オペランド:バイト[31:25]=opC、[23:
16]=bit _mask、[15:8]=imm 演算:(bit _mask & opC)?imm フラグ:Eは((bit _mask & opC)==imm)であ
るときにセットされる Gは((bit _mask & opC)>imm)であるときにセ
ットされる Lは((bit _mask & opC)<imm)であるときにセ
ットされる。
【0273】LOAD−内部メモリまたは外部メモリか
らのロード オペランド:ビット[31:25]=aop、[24:
18]=opA、[17:16]=dt、[7]=i、
[6]=f 演算: if [dt==10] opA<-IM[{aop,imp }] ; imp=imp+i ; if [dt==x1] opA<-XM[{aop,xmp }] ; xmp=xmp+i ; IMは内部メモリ170であり、impは内部メモリポ
インタレジスタ(表A6−1)であり、XMは外部メモ
リ200であり、xpmは外部メモリポインタレジスタ
(表A6−1)である。
【0274】fビットがセットされると、ロード命令の
実行は同じチャネルからの先のストア演算が完了してい
なければ遅延される。
【0275】aopはimpまたはxmpと連結される
アドレスビットである(「{}」は連結を示す)。
【0276】STORE−内部メモリまたは外部メモリ
へのストア オペランド:ビット[31:25] = aop, [24:18] = opA, [1
7:16] = dt, [7]= i 演算: if [dt==10] opA->IM[{aop,imp }] ; imp=imp+i ; if [dt==x1] opA->XM[{aop,xmp }] ; xmp=xmp+i ; IM、XM、imp、xmpおよびaopがLOAD命
令と同じ意味を有する。
【0277】SMWR−サーチマシンコマンド書込 オペランド:ビット[31:25] = opC, [23:8] = imm 演算:scmd<-{opC[63:16], imm }。
【0278】CMDI−チャネルへの即値コマンド オペランド:ビット[31:8] = imm, [7] = L, [6] = P 演算: Command _port <- {40'b0, imm} ここで40′b0は40個の2進零を示す。
【0279】 ifP=0, Command _port = cmd_i ; (イングレスコマンド) ifP=1, Command _port = cmd_e ; (イーグレスコマンド) 命令Lフラグ(1ビット)はロック/アンロック制御で
ある(セットされると、命令のロック状態が変更され
る)。
【0280】CMD−チャネルへのコマンド オペランド:ビット[31:25] = opC, [23:8] = imm, [7]
= L, [6] = P 演算: Command _port <- {opC[63:16],imm} ifP=0, Command _port = cmd_i ; (イングレスコマンド) ifP=1, Command _port = cmd_e ; (イーグレスコマンド) 命令における1ビットLフラグがロック/アンロック制
御である(セットされると、ロック状態が変更され
る)。
【0281】CASE オペランド:ビット[31:25] = opC, [23:16] = bit_ma
sk, [12:8] =シフト 演算:PC<-PC+ ((opC&bit _mask)>>シフト)+1。
【0282】BTJ−ビットテストおよびジャンプ オペランド:ビット[31:25] = opC, [24:13] = addr,
[12:8] = ビット, [7]= v 演算:if(opC[bit]==v )then PC<-addr 。
【0283】追補8 サーチマシン サーチマシンは周知のパトリシアツリー構造を用いる
(1996年8月13日にG. C. Stone に発行され、引
用によりここに援用される米国特許第5,546,39
0号「基数判定パケット処理のための方法および装置」
(“Method and Apparatus for Radix Decision Packet
Processing ”)を参照されたい。
【0284】図21はツリーノード2400を示す。各
ノードは64ビットの4ワードの長さである。ノードフ
ォーマットは以下のとおりである。
【0285】
【表8】
【0286】
【表9】
【0287】
【表10】
【0288】
【表11】
【0289】
【表12】
【0290】
【表13】
【0291】
【表14】
【0292】
【表15】
【0293】
【表16】
【図面の簡単な説明】
【図1】この発明によるプロセッサを含むシステムのブ
ロック図である。
【図2】図1のシステムにおけるリソースを示すブロッ
ク図である。
【図3】図1のシステムにおけるデータフレーム処理を
示すタイミング図である。
【図4】図1のシステムにおけるデータフレーム処理を
示すタイミング図である。
【図5】図1のシステムにおいて異なるタスクがどのよ
うに共用されるリソースにアクセスするのかを示す論理
図である。
【図6】図1のシステムにおいて用いられるプロセッサ
のブロック図である。
【図7】図6のプロセッサの命令実行パイプラインを示
す図である。
【図8】図1のシステムにおけるタスクおよびリソース
状態遷移を示す図である。
【図9】図1のシステムにおけるタスクおよびリソース
状態遷移を示す図である。
【図10】図1のシステムにおけるタスクおよびリソー
ス状態遷移を示す図である。
【図11】図1のシステムにおけるタスクおよびリソー
ス状態遷移を示す図である。
【図12】図1のシステムにおけるタスクおよびリソー
ス状態遷移を示す図である。
【図13】図1のシステムにおけるタスクおよびリソー
ス状態遷移を示す図である。
【図14】図6のプロセッサのタスク制御ブロック回路
のブロック図である。
【図15】図6のプロセッサのタスク制御ブロック回路
のブロック図である。
【図16】図1のシステムのためのメモリマップの図で
ある。
【図17】図1のシステムのためのデータエリアメモリ
マップの図である。
【図18】図1のプロセッサのためのレジスタファイル
マップの図である。
【図19】図1のプロセッサのためのデータメモリマッ
プの図である。
【図20】図19のデータメモリのためのアドレス発生
を示す図である。
【図21】図1のシステムにより用いられるアドレス導
出データベースにおけるツリーノードを示す図である。
【符号の説明】
110 ポートインターフェイス(PIF)回路、12
0 ATMスイッチ、130 MAC、140 スライ
サ、150 チャネル、160 マイクロコントロー
ラ、170 内部メモリ、190 サーチマシン(S
M)、200 外部メモリ、210 入力制御ブロッ
ク、220 データFIFO、230 リクエストFI
FO、240 ステータスFIFO、250 出力制
御、260 コマンドFIFO、310 マイクロコン
トローラ命令実行ユニット、312 レジスタファイ
ル、314 マイクロコントローラプログラムメモリ、
315 特殊レジスタブロック、316 データメモ
リ、318 ALU、320 タスク制御ブロック、3
30 ロード/ストアユニット(LSU)、340 D
MAブロック、410 配線、704、720、74
0、804、820、840、920、930 ダイヤ
グラム、730 サスペンド条件、734 リリース条
件、1304、1320、1322、1330、135
0、1360、1362 ラッチ、1354 次の状態
および条件発生器、1358 バス、1380 リソー
ス次ステージ発生器、1390 回路、1394、14
06 マルチプレクサ、1398 タスク次状態発生
器、1401 サスペンド論理およびリリース条件発生
器、1403 アービタ、1404 配線、1610
スクラッチバッファ。
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成11年4月28日
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正内容】
【図1】
【図5】
【図2】
【図4】
【図7】
【図20】
【図3】
【図6】
【図11】
【図8】
【図12】
【図13】
【図9】
【図18】
【図10】
【図21】
【図14】
【図15】
【図16】
【図17】
【図19】
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ドゥミトゥリー・ビシェツキー アメリカ合衆国、95014 カリフォルニア 州、クペルティーノ、セダー・スプリン グ・コート、11627 (54)【発明の名称】 複数個のタスクを実行するためのプロセッサおよび方法、マルチタスクコンピュ―タプロセッ サ、タスクに各リソ―スを割当てるための回路、複数個のリソ―スを共用するための方法、命令 を実行するためのプロセッサ、マルチタスクプロセッサ、コンピュ―タ命令を実行するための方 法、ならびにマルチタスク方法

Claims (29)

    【特許請求の範囲】
  1. 【請求項1】 各々が1個以上のコンピュータ命令を実
    行する複数個のタスクを実行するためのプロセッサであ
    って、通常動作においては、プロセッサ実行ユニットは
    任意の所与のタスクからの最大N個の命令の実行を任意
    の他のタスクからの間に介在するどのような命令も実行
    開始せずに開始し、前記N個の命令の後、前記実行ユニ
    ットは別のタスクが実行のために利用可であれば別のタ
    スクの命令を実行開始する、プロセッサ。
  2. 【請求項2】 N=1である、請求項1に記載のプロセ
    ッサ。
  3. 【請求項3】 前記命令の実行はパイプライン化され
    る、請求項2に記載のプロセッサ。
  4. 【請求項4】 各タスクはネットワーク間のデータフロ
    ーに対して処理を行ない、任意の所与のデータフローに
    対する処理を行なう任意のタスクの任意の所与の命令の
    実行開始の後、前記実行ユニットは、他のタスクが実行
    のために利用可であれば、異なるデータフローに対する
    処理を行なう別のタスクの命令を実行開始する、請求項
    2に記載のプロセッサ。
  5. 【請求項5】 複数個のタスクを実行するための方法で
    あって、 実行ユニットが任意の所与のタスクからの最大N個の命
    令の実行を任意の他のタスクからの任意の命令を実行開
    始せずに開始するステップを含み、Nは予め定められた
    数であり、さらに、 任意の所与のタスクからの最大N個の命令の実行開始の
    後、別のタスクが実行のために利用可であれば別のタス
    クの命令を実行開始するステップを含む、方法。
  6. 【請求項6】 N=1である、請求項5に記載の方法。
  7. 【請求項7】 タスク特有の値をストアする1個以上の
    レジスタをタスクごとに含み、前記1個以上のレジスタ
    のどの1個もタスクが実行のためにスケジュールされて
    いるときはセーブもリストアもされる必要はない、マル
    チタスクコンピュータプロセッサ。
  8. 【請求項8】 前記1個以上のレジスタはタスクごとに
    プログラムカウンタレジスタを含む、請求項7に記載の
    プロセッサ。
  9. 【請求項9】 前記タスクは1個以上のタスクの組に細
    分割され、前記プロセッサは前記組のタスクのタスク特
    有の値をストアするための1個以上のレジスタを組ごと
    に含む、請求項7に記載のプロセッサ。
  10. 【請求項10】 コンピュータプロセッサによって複数
    個のタスクを実行するための方法であって、前記方法は
    タスクを実行するステップを含み、前記タスクはタスク
    特有の値をストアする1個以上のレジスタを用いるが異
    なるタスクは前記1個以上のレジスタの異なるものを用
    い、したがって、あるタスクの実行を中断して別のタス
    クの実行を開始するためには、前記1個以上のレジスタ
    の値をセーブすることも前記1個以上のレジスタの値を
    リストアすることも必要ない、方法。
  11. 【請求項11】 複数個のタスクによって共用されるべ
    き複数個のリソースを含むマルチタスクコンピュータシ
    ステムにおいて、データユニットを処理する際に前記タ
    スクのあるものが前記リソースのあるものへのアクセス
    を終えた後に、他の前記タスクがいずれも前記リソース
    へのアクセスを終えるまで前記タスクが同じリソースに
    アクセスしないように、前記タスクに各リソースを割当
    てるための回路。
  12. 【請求項12】 少なくとも1個のリソースに対して、
    各タスクは前記リソースをロックしてそれを他のどのタ
    スクに対しても利用不可にすることによって前記リソー
    スへのアクセスを開始し、前記タスクは前記リソースを
    アンロックすることによって前記リソースへのアクセス
    を終了する、請求項11に記載の回路。
  13. 【請求項13】 複数個のコンピュータタスクによって
    複数個のリソースを共用するための方法であって、 前記タスクの1つであるタスクT1に前記リソースのす
    べてにアクセスさせ、他のタスクに前記リソースのどの
    1つへもアクセスさせないステップと、 リソースごとに、前記タスクT1が前記リソースへのア
    クセスを終了した後、別のタスクに前記リソースにアク
    セスさせ、前記リソースを共用する他のいずれのタスク
    も前記リソースへのアクセスを終了するまで前記タスク
    T1に前記リソースへアクセスさせないステップとを含
    む、方法。
  14. 【請求項14】 プロセッサが利用不可のリソースにア
    クセスする第1の命令を実行するときに、前記プロセッ
    サが前記第1の命令をサスペンドし、前記第1の命令を
    実行しようとしたプロセッサ回路が1個以上の他の命令
    を実行するよう動作可能となるように命令を実行するた
    めのプロセッサ。
  15. 【請求項15】 前記リソースが利用可となると前記プ
    ロセッサは前記第1の命令の実行を完了する、請求項1
    4に記載のプロセッサ。
  16. 【請求項16】 前記第1の命令がサスペンドされる
    と、前記第1の命令はキャンセルされ、前記第1の命令
    は前記リソースが利用可となるときに再び実行される、
    請求項14に記載のプロセッサ。
  17. 【請求項17】 前記プロセッサはマルチタスクを行な
    い、前記第1の命令を実行するタスクは前記第1の命令
    がサスペンドされるとサスペンドされ、前記タスクがサ
    スペンドされている間、前記第1の命令を実行しようと
    した前記プロセッサ回路は1個以上の他のタスクを実行
    するよう動作可能となる、請求項14に記載のプロセッ
    サ。
  18. 【請求項18】 プロセッサによって実行されるタスク
    TA1が利用不可なリソースにアクセスしようと試みる
    ときに、少なくとも前記リソースが利用可となるまでタ
    スクスケジューリング回路が前記タスクTA1をサスペ
    ンドし、前記リソースが前記タスクTA1に対して利用
    不可であるときに前記タスクTA1の代わりに別のタス
    クTA2が実行の準備ができていれば、前記タスクスケ
    ジューリング回路が前記タスクTA1をスケジュールす
    るような、タスクスケジューリング回路を含むマルチタ
    スクプロセッサであって、 前記タスクスケジューリング回路の動作は前記プロセッ
    サによる命令実行を必要としない、マルチタスクプロセ
    ッサ。
  19. 【請求項19】 タスクサスペンド条件が真であるかど
    うかを示す第1の信号を発生するための第1の回路と、 前記第1の信号に応答して実行のために単数または複数
    のタスクをスケジュールするための第2の回路とを含
    む、マルチタスクプロセッサ。
  20. 【請求項20】 前記サスペンド条件からタスクをリリ
    ースするためのリリース条件が真であるかどうかを示す
    リリース信号を発生するための第3の回路をさらに含
    み、 前記第2の回路は、前記第2の回路が実行のために単数
    または複数のタスクをスケジュールするときに前記リリ
    ース信号に応答する、請求項19に記載のプロセッサ。
  21. 【請求項21】 前記タスクが実行の準備ができている
    かどうかを示す信号SIG1を発生するための別個の回
    路をタスクごとにさらに含み、前記第2の回路は実行の
    ために単数または複数のタスクをスケジュールする際に
    1個以上の信号SIG1に応答する、請求項19に記載
    のプロセッサ。
  22. 【請求項22】 前記プロセッサが何らかの命令を実行
    しようとするたびに、前記命令を実行するタスクをスケ
    ジュールするためのタスクスケジューリングを前記第2
    の回路が行なうように、前記第2の回路は前記プロセッ
    サによって実行される各命令ごとに、単数または複数の
    タスクを実行のためにスケジュールする、請求項19に
    記載のプロセッサ。
  23. 【請求項23】 コンピュータ命令を実行するための方
    法であって、 コンピュータリソースにアクセスする第1の命令を実行
    するステップと、 前記リソースが利用不可であれば、前記第1の命令をサ
    スペンドし、前記第1の命令を実行しようとした回路に
    よって1個以上の他の命令を実行するステップとを含
    む、方法。
  24. 【請求項24】 前記リソースが利用可となると前記第
    1の命令の実行を完了するステップをさらに含む、請求
    項23に記載の方法。
  25. 【請求項25】 前記第1の命令を実行する前記ステッ
    プは第1のタスクによって前記第1の命令を実行するス
    テップを含み、 前記第1の命令がサスペンドされていると、前記第1の
    タスクがサスペンドされ、前記1個以上の他の命令が1
    個以上の他のタスクの実行を含む、請求項23に記載の
    方法。
  26. 【請求項26】 タスクサスペンド条件が真であるかど
    うかを示す第1の信号を発生するステップと、 前記第1の信号に応答して単数または複数のタスクを実
    行のためにスケジュールするステップとを含む、マルチ
    タスク方法。
  27. 【請求項27】 前記サスペンド条件からタスクをリリ
    ースするためのリリース条件が真であるかどうかを示す
    リリース信号を発生するステップをさらに含み、 単数または複数のタスクを実行のためにスケジュールす
    る前記ステップは前記リリース信号に応答して行なわれ
    る、請求項26に記載の方法。
  28. 【請求項28】 前記タスクが実行の準備ができている
    かどうかを示す別個の信号をタスクごとに発生するステ
    ップをさらに含む、請求項26に記載の方法。
  29. 【請求項29】 命令が実行されようとするたびに、前
    記命令を実行するタスクをスケジュールするようにタス
    クスケジュールが行なわれるように、単数または複数の
    タスクを実行のためにスケジュールする前記ステップは
    前記タスクの任意の1つによって実行される各命令ごと
    に行なわれる、請求項26に記載の方法。
JP09657099A 1998-04-03 1999-04-02 タスクに各リソースを割当てるための回路、複数のリソースを共用するための方法、命令を実行するためのプロセッサ、マルチタスクプロセッサ、コンピュータ命令を実行するための方法、マルチタスク方法、コンピュータプロセッサを含む装置、複数の所定のグループのタスクを実行するステップを含む方法、ネットワークデータを処理するステップを含む方法、複数のソフトウェアタスクを実行するための方法およびコンピュータプロセッサを含むネットワーク装置 Expired - Fee Related JP3670160B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/055,033 US6330584B1 (en) 1998-04-03 1998-04-03 Systems and methods for multi-tasking, resource sharing and execution of computer instructions
US09/055033 1998-04-03

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2004225517A Division JP4263147B2 (ja) 1998-04-03 2004-08-02 コンピュータプロセッサを含む装置、複数の所定のグループのタスクを実行するステップを含む方法、ネットワークデータを処理するステップを含む方法、複数のソフトウェアタスクを実行するための方法およびコンピュータプロセッサを含むネットワーク装置

Publications (2)

Publication Number Publication Date
JPH11327930A true JPH11327930A (ja) 1999-11-30
JP3670160B2 JP3670160B2 (ja) 2005-07-13

Family

ID=21995128

Family Applications (2)

Application Number Title Priority Date Filing Date
JP09657099A Expired - Fee Related JP3670160B2 (ja) 1998-04-03 1999-04-02 タスクに各リソースを割当てるための回路、複数のリソースを共用するための方法、命令を実行するためのプロセッサ、マルチタスクプロセッサ、コンピュータ命令を実行するための方法、マルチタスク方法、コンピュータプロセッサを含む装置、複数の所定のグループのタスクを実行するステップを含む方法、ネットワークデータを処理するステップを含む方法、複数のソフトウェアタスクを実行するための方法およびコンピュータプロセッサを含むネットワーク装置
JP2004225517A Expired - Fee Related JP4263147B2 (ja) 1998-04-03 2004-08-02 コンピュータプロセッサを含む装置、複数の所定のグループのタスクを実行するステップを含む方法、ネットワークデータを処理するステップを含む方法、複数のソフトウェアタスクを実行するための方法およびコンピュータプロセッサを含むネットワーク装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2004225517A Expired - Fee Related JP4263147B2 (ja) 1998-04-03 2004-08-02 コンピュータプロセッサを含む装置、複数の所定のグループのタスクを実行するステップを含む方法、ネットワークデータを処理するステップを含む方法、複数のソフトウェアタスクを実行するための方法およびコンピュータプロセッサを含むネットワーク装置

Country Status (3)

Country Link
US (1) US6330584B1 (ja)
EP (1) EP0947926A3 (ja)
JP (2) JP3670160B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007507805A (ja) * 2003-10-01 2007-03-29 インテル・コーポレーション マルチスレッド・コンピュータ・システムにおいてスレッドの実行をイネーブルにするための方法および装置
US8006244B2 (en) 2000-04-04 2011-08-23 International Business Machines Corporation Controller for multiple instruction thread processors

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7643481B2 (en) * 1999-03-17 2010-01-05 Broadcom Corporation Network switch having a programmable counter
US7184441B1 (en) 1999-03-17 2007-02-27 Broadcom Corporation Network switch stacking configuration
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
WO2001001272A2 (en) * 1999-06-30 2001-01-04 Apptitude, Inc. Method and apparatus for monitoring traffic in a network
US6985431B1 (en) * 1999-08-27 2006-01-10 International Business Machines Corporation Network switch and components and method of operation
AU2134301A (en) * 1999-12-08 2001-06-18 University Of British Columbia, The Weighted fair queuing scheduler
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
JP3475900B2 (ja) * 2000-03-29 2003-12-10 日本電気株式会社 調停方式及びそれを用いたアービタ回路
US7237022B1 (en) * 2000-06-29 2007-06-26 Microsoft Corporation Suspension and reinstatement of reference handles
US7847803B1 (en) * 2000-07-26 2010-12-07 Ati Technologies Ulc Method and apparatus for interleaved graphics processing
US6591358B2 (en) * 2001-01-26 2003-07-08 Syed Kamal H. Jaffrey Computer system with operating system functions distributed among plural microcontrollers for managing device resources and CPU
US7130916B2 (en) * 2001-02-23 2006-10-31 International Business Machines Corporation Linking frame data by inserting qualifiers in control blocks
US6990101B1 (en) * 2001-03-23 2006-01-24 Advanced Micro Devices, Inc. System and method for performing layer 3 switching in a network device
US20060218556A1 (en) * 2001-09-28 2006-09-28 Nemirovsky Mario D Mechanism for managing resource locking in a multi-threaded environment
SG155038A1 (en) * 2001-09-28 2009-09-30 Consentry Networks Inc A multi-threaded packet processing engine for stateful packet processing
US8782287B2 (en) * 2001-12-21 2014-07-15 Agere Systems Llc Methods and apparatus for using multiple reassembly memories for performing multiple functions
US7421693B1 (en) 2002-04-04 2008-09-02 Applied Micro Circuits Corporation Logic for synchronizing multiple tasks at multiple locations in an instruction stream
US6820170B1 (en) 2002-06-24 2004-11-16 Applied Micro Circuits Corporation Context based cache indexing
US7372864B1 (en) 2002-08-01 2008-05-13 Applied Micro Circuits Corporation Reassembly of data fragments in fixed size buffers
US6912596B2 (en) * 2002-08-02 2005-06-28 Texas Instruments Incorporated Automatic resume from suspend for IEEE-1394 PHY
US7254696B2 (en) * 2002-12-12 2007-08-07 Alacritech, Inc. Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests
US20040123298A1 (en) * 2002-12-20 2004-06-24 Shebanow Michael C. Distributed resource allocation mechanism
US7337438B1 (en) 2003-03-31 2008-02-26 Applied Micro Circuits Corporation Macros to support structures for an assembler that does not support structures
US7558890B1 (en) 2003-12-19 2009-07-07 Applied Micro Circuits Corporation Instruction set for programmable queuing
US7457241B2 (en) * 2004-02-05 2008-11-25 International Business Machines Corporation Structure for scheduler pipeline design for hierarchical link sharing
US9189230B2 (en) 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US7827558B2 (en) * 2004-06-30 2010-11-02 Devicevm, Inc. Mechanism for enabling a program to be executed while the execution of an operating system is suspended
US8745627B2 (en) 2005-06-27 2014-06-03 Qualcomm Incorporated System and method of controlling power in a multi-threaded processor
US7823158B2 (en) * 2005-08-18 2010-10-26 International Business Machines Corporation Adaptive scheduling and management of work processing in a target context in resource contention
US9059946B2 (en) * 2005-09-29 2015-06-16 Broadcom Corporation Passive optical network (PON) packet processor
US7643753B2 (en) 2005-09-29 2010-01-05 Broadlight Ltd. Enhanced passive optical network (PON) processor
US7861060B1 (en) * 2005-12-15 2010-12-28 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior
US7865894B1 (en) * 2005-12-19 2011-01-04 Nvidia Corporation Distributing processing tasks within a processor
US8645955B2 (en) * 2006-06-12 2014-02-04 Samsung Electronics Co., Ltd. Multitasking method and apparatus for reconfigurable array
JP5573038B2 (ja) * 2009-07-23 2014-08-20 日本電気株式会社 マルチスレッドプロセッサ及びプログラム
DE102010003565A1 (de) * 2010-03-31 2011-10-06 Robert Bosch Gmbh Zyklischer Priorisierungswechsel bei einer Datenverarbeitung
DE102010003512A1 (de) * 2010-03-31 2011-10-06 Robert Bosch Gmbh Geteilte zentrale Verarbeitung von Daten
US8817799B2 (en) 2011-04-14 2014-08-26 Broadcom Corporation Network processor for supporting residential gateway applications
US9141438B2 (en) 2011-06-30 2015-09-22 Net Navigation Systems, Llc Logic for synchronizing multiple tasks
US9465670B2 (en) 2011-12-16 2016-10-11 Intel Corporation Generational thread scheduler using reservations for fair scheduling

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2686844A (en) 1953-04-13 1954-08-17 Bell Telephone Labor Inc Telephone set
FR2616604B1 (fr) 1987-06-15 1989-09-22 Lespagnol Albert Equipement de reconstitution et multiplexage de trames d'origines diverses constituees de paquets de longueur fixe en nombre variable
US5058144A (en) 1988-04-29 1991-10-15 Xerox Corporation Search tree data structure encoding for textual substitution data compression systems
JP2860661B2 (ja) 1989-03-14 1999-02-24 国際電信電話 株式会社 Atm交換機
JPH03150637A (ja) * 1989-11-08 1991-06-27 Oki Electric Ind Co Ltd パイプライン対応のレジスタ割付け方式
US5233606A (en) 1991-08-02 1993-08-03 At&T Bell Laboratories Arrangement for controlling shared-buffer-memory overflow in a multi-priority environment
DE69129851T2 (de) 1991-09-13 1999-03-25 International Business Machines Corp., Armonk, N.Y. Konfigurierbare gigabit/s Vermittlunganpassungseinrichtung
US5983004A (en) * 1991-09-20 1999-11-09 Shaw; Venson M. Computer, memory, telephone, communications, and transportation system and methods
US5357617A (en) * 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
JPH05207062A (ja) 1992-01-27 1993-08-13 Nec Corp パケット交換方式
SE515178C2 (sv) 1992-03-20 2001-06-25 Ericsson Telefon Ab L M Förfaranden och anordningar för prioritering vid bufferthantering i paketnät
US5457687A (en) 1993-09-02 1995-10-10 Network Equipment Technologies, Inc. Method and apparatus for backward explicit congestion notification (BECN) in an ATM network
JP2639335B2 (ja) 1993-12-22 1997-08-13 日本電気株式会社 Atm網における輻輳制御方式
GB9401092D0 (en) 1994-01-21 1994-03-16 Newbridge Networks Corp A network management system
EP0680173B1 (en) 1994-04-28 2003-09-03 Hewlett-Packard Company, A Delaware Corporation Multicasting apparatus
FI98774C (fi) 1994-05-24 1997-08-11 Nokia Telecommunications Oy Menetelmä ja laitteisto liikenteen priorisoimiseksi ATM-verkossa
US5633867A (en) 1994-07-01 1997-05-27 Digital Equipment Corporation Local memory buffers management for an ATM adapter implementing credit based flow control
IT1266895B1 (it) 1994-07-26 1997-01-21 Cselt Centro Studi Lab Telecom Procedimento per l'allocazione ottimale delle risorse per il trasporto di flussi informativi a banda variabile su reti in tecnica atm, e nodo
US5528588A (en) 1994-09-14 1996-06-18 Fore Systems, Inc. Multicast shared memory
US5633859A (en) 1994-09-16 1997-05-27 The Ohio State University Method and apparatus for congestion management in computer networks using explicit rate indication
EP0705006B1 (en) 1994-09-28 1999-09-01 Siemens Aktiengesellschaft ATM communication system for statistical multiplexing of cells
US5541912A (en) 1994-10-04 1996-07-30 At&T Corp. Dynamic queue length thresholds in a shared memory ATM switch
US5517495A (en) 1994-12-06 1996-05-14 At&T Corp. Fair prioritized scheduling in an input-buffered switch
EP0717532A1 (en) 1994-12-13 1996-06-19 International Business Machines Corporation Dynamic fair queuing to support best effort traffic in an ATM network
US5546390A (en) 1994-12-29 1996-08-13 Storage Technology Corporation Method and apparatus for radix decision packet processing
US5583863A (en) 1995-01-31 1996-12-10 Bell Atlantic Network Services, Inc. Full service network using asynchronous transfer mode multiplexing
JP2723071B2 (ja) 1995-03-31 1998-03-09 日本電気株式会社 Atm−lan接続装置及びatm−lan
US5809024A (en) 1995-07-12 1998-09-15 Bay Networks, Inc. Memory architecture for a local area network module in an ATM switch
US5787086A (en) 1995-07-19 1998-07-28 Fujitsu Network Communications, Inc. Method and apparatus for emulating a circuit connection in a cell based communications network
US5751951A (en) 1995-10-30 1998-05-12 Mitsubishi Electric Information Technology Center America, Inc. Network interface
US5689508A (en) 1995-12-21 1997-11-18 Xerox Corporation Reservation ring mechanism for providing fair queued access in a fast packet switch networks
US5944816A (en) * 1996-05-17 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute multiple threads including interrupt service routines
US6128278A (en) 1996-08-30 2000-10-03 Mmc Networks, Inc. Cell queuing in ATM switches
US6233590B1 (en) * 1996-12-13 2001-05-15 Venson M. Shaw Server apparatus for distributed communications supporting multiple user/application environment
US6018759A (en) * 1997-12-22 2000-01-25 International Business Machines Corporation Thread switch tuning tool for optimal performance in a computer processor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8006244B2 (en) 2000-04-04 2011-08-23 International Business Machines Corporation Controller for multiple instruction thread processors
JP2007507805A (ja) * 2003-10-01 2007-03-29 インテル・コーポレーション マルチスレッド・コンピュータ・システムにおいてスレッドの実行をイネーブルにするための方法および装置

Also Published As

Publication number Publication date
EP0947926A2 (en) 1999-10-06
EP0947926A3 (en) 2006-10-11
JP2004342132A (ja) 2004-12-02
US6330584B1 (en) 2001-12-11
JP4263147B2 (ja) 2009-05-13
JP3670160B2 (ja) 2005-07-13

Similar Documents

Publication Publication Date Title
JP3670160B2 (ja) タスクに各リソースを割当てるための回路、複数のリソースを共用するための方法、命令を実行するためのプロセッサ、マルチタスクプロセッサ、コンピュータ命令を実行するための方法、マルチタスク方法、コンピュータプロセッサを含む装置、複数の所定のグループのタスクを実行するステップを含む方法、ネットワークデータを処理するステップを含む方法、複数のソフトウェアタスクを実行するための方法およびコンピュータプロセッサを含むネットワーク装置
US9110714B2 (en) Systems and methods for multi-tasking, resource sharing, and execution of computer instructions
CN100535850C (zh) 用于在编程引擎之间传送数据的方法和装置
US20060143415A1 (en) Managing shared memory access
US7873817B1 (en) High speed multi-threaded reduced instruction set computer (RISC) processor with hardware-implemented thread scheduler
US6665755B2 (en) External memory engine selectable pipeline architecture
US6829697B1 (en) Multiple logical interfaces to a shared coprocessor resource
US8762581B2 (en) Multi-thread packet processor
US5784630A (en) Method and apparatus for processing data in multiple modes in accordance with parallelism of program by using cache memory
CN100367257C (zh) 并行处理器体系结构的sdram控制器
US20050060705A1 (en) Optimizing critical section microblocks by controlling thread execution
EP1217795A2 (en) Route switch packet architecture
EP1217530A2 (en) Global access bus architecture
CN107077390A (zh) 一种任务处理方法以及网卡
GB2380834A (en) Thread ending method
WO2007015900A2 (en) Lock sequencing
US20030159021A1 (en) Selected register decode values for pipeline stage register addressing
WO2005048113A2 (en) Dynamically caching engine instructions for on demand program execution
CN112306703B (zh) 一种numa系统中的临界区执行方法及装置
US7437535B1 (en) Method and apparatus for issuing a command to store an instruction and load resultant data in a microcontroller
US20150279465A1 (en) Systems and methods for order scope transitions using cam
US7441245B2 (en) Phasing for a multi-threaded network processor
US11409553B1 (en) System and method for isolating work within a virtualized scheduler using tag-spaces
CN113703841A (zh) 一种寄存器数据读取的优化方法、装置及介质
EP2860643A2 (en) Collective communications apparatus and method for parallel systems

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040203

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20040220

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040428

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040802

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040831

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041228

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050111

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050413

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090422

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090422

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100422

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100422

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110422

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120422

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees