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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/507—Low-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
スクプロセッサおよびリソースアクセス技術を提供す
る。 【解決手段】 マルチタスクパイプラインプロセッサに
おいて、連続する命令が種々のタスクによって実行さ
れ、前の命令を完了できないときに後の命令の命令実行
パイプラインを取除く必要をなくす。タスクはタスク特
定値をストアするレジスタを共用せず、それによって新
しいタスクが実行のためにスケジュールされるときにレ
ジスタをセーブまたはロードする必要をなくす。命令が
利用不可なリソースにアクセスすれば、その命令はサス
ペンドされ、リソースが利用可となるまで他のタスクの
命令が代わりに実行される。ハードウェアによってタス
クスケジュールが行なわれ、オペレーティングシステム
は必要ではない。
Description
当せず
的にはパイプライン化された命令実行、マルチタスキン
グおよびリソースアクセス技術に関する。
よりプロセッサの帯域幅が増加する。これらの技術に伴
う時間および複雑さを低減することが望ましい。
と、プロセッサは、命令を実行すべきであるかどうかが
わかる前に命令を実行し始めることもあり得る。たとえ
ば、プロセッサが命令I1を実行し始め、次に、I1の
実行が完了する前に命令I2を実行し始めたとする。I
1の実行が完了できないのであれば、命令I2を実行す
べきではなく、命令I2をパイプラインから除去しなけ
ればならない。実際に、どの時点においてもプロセッサ
はパイプラインから除去すべきである2つ以上の命令を
実行しているかもしれない。パイプライン除去に関連す
る回路の複雑さを低減することが望ましい。
ざまなタスク間での切替えに伴うオーバヘッドを低減す
ることも望ましい。タスクを切替えるには、プロセッサ
により実行されるオペレーティングシステムが、どのタ
スクが次に実行されるべきであるかを定めなければなら
ない。また、オペレーティングシステムは、あるタスク
により用いられたレジスタ値をセーブし、別のタスクに
より用いられる値をレジスタにロードしなければならな
い。これらの機能は相当な数のオペレーティングシステ
ム命令を伴うことがある。こうした動作に関連のある命
令の数を減少することが望ましい。
スへのアクセスを改善することが望ましい。そのような
リソースの一例としては、プロセッサが読もうとする際
には空であり、またはプロセッサが書こうとする際には
一杯であるかもしれないFIFOが挙げられる。FIF
Oにアクセスする前に、プロセッサはFIFOが利用可
能であるかどうかを示すフラグを調べる。利用可能でな
いかもしれないリソースにアクセスする速度を改善する
ことが望ましい。
ソースの利用を同期化するための単純な同期化方法を提
供し、リソースが別のタスクによりアクセスされるよう
設定されている際に、あるタスクがそのリソースにアク
セスすることによって生じ得るエラーを回避することが
望ましい。
効率のよいパイプラインプロセッサ、マルチタスキング
プロセッサおよびリソースアクセス技術を提供する。
おいて、パイプライン除去オーバヘッドはプロセッサが
どのタスクに対しても続けて実行できる命令の数を制限
することによって低減または消去される。このため、い
くつかの実施例では、連続した命令は別々のタスクによ
り実行される。そのため、命令を実行できない場合で
も、次の命令は異なるタスクに属するため当該次の命令
は依然として実行されなければならない。このため、次
の命令はパイプラインから除去されない。
2つの命令の間でも、プロセッサは別のタスクからの十
分な数の命令を実行してパイプライン除去の必要をなく
している。
減するため、いくつかの実施例では各々のタスクに対す
る別個のレジスタが含まれており、レジスタ値がタスク
切替え動作においてセーブされたり、またはリストアさ
れたりする必要がないようにする。特に、いくつかの実
施例では、各タスクは別個のプログラムカウンタ(P
C)レジスタおよび別個のフラグを有する。いくつかの
実施例において、タスク切替えはハードウェアによって
1クロックサイクルで行なわれる。
は、リソースが利用可能であるかどうかを予めチェック
することなくリソースにアクセスすることができる。プ
ロセッサがリソースにアクセスする命令を実行する際に
リソースが利用可能でない場合、プロセッサはその命令
をサスペンドする。その命令を実行するはずであったプ
ロセッサ回路は、たとえば別のタスクの命令など、別の
命令を実行するのに利用可能となる。
ッサはすべてのリソース(たとえばFIFOなど)の状
態を追跡する。(特に断っていない限り、ここで用いて
いる術語「リソース」はある時点において利用可能であ
るかもしれない、または利用可能でないかもしれない何
かを意味する。)生成される信号は各リソースの状態を
示しており、特にどのリソースがどのタスクに利用可能
であるのかを示す。あるタスクが利用可能でないリソー
スにアクセスを試みた場合、そのタスクはサスペンドさ
れ、プロセッサは本来そのサスペンドされたタスクが利
用できたはずのタイムスロット内で他のタスクを実行で
きる。リソースが利用可能となると、そのサスペンドさ
れたタスクは再開され、そのリソースにアクセスする命
令が再実行される。
する際の同期エラーを避けるため、いくつかの実施例で
は、あるタスクがリソースのいずれか1つにアクセスし
終わると、そのタスクは、そのリソースを共用する他の
すべてのタスクがそのリソースにアクセスし終わるまで
そのリソースにアクセスすることができない。このた
め、いくつかのネットワーク実施例では、さまざまなタ
スクがFIFOリソースを共用してデータフレームを処
理する。各タスクは別個のデータフレームを処理する。
フレームを処理するには、タスクは「リクエスト」FI
FOからフレームアドレスを読む。次に、タスクはコマ
ンドFIFOに、チャネルプロセッサがフレームを処理
するようにというチャネルプロセッサへのコマンドを書
込む。2つ目のタスクは異なるフレームに対して同様の
動作を行なう。始めのタスクは再び、さらに別のフレー
ムに対して同じ動作を行なう。あるフレームに対して書
かれたコマンドが別のフレームに誤って適用された場
合、フレームは誤って処理される可能性がある。
におけるフレームアドレスとコマンドFIFOにおける
コマンドとを正確に一致させるため、以下の技術が用い
られる。まず、あるタスク(たとえばT1)がリクエス
トFIFOおよびコマンドFIFOの双方にアクセスを
許されるが、他のどのタスクもこれらのリソースにアク
セスすることを許されない。一旦タスクT1がいずれか
のリソースにアクセスし終わると、そのリソースに別の
タスクがアクセスすることが許可され、さらにタスクT
1は、そのリソースを共用する他のすべてのタスクがそ
のリソースにアクセスし終わるまでは再びそのリソース
にアクセスすることを許されない。このため、リクエス
トFIFOにおけるフレームアドレスの順序はコマンド
FIFOにおけるコマンドの順序と対応しており、チャ
ネルがフレームアドレスとコマンドとを正確に一致させ
ることができるようにする。この一致を確立するのに特
殊なタグは何ら必要ではなく、この一致は単純なデータ
構造であるFIFOを用いて確立される。
トワークのデータフローを処理するいくつかのタスクを
実行する。プロセッサは高い帯域幅をもたらすのに、上
述のパイプラインおよびタスク切替え技術を用いる。
る。この発明は添付の特許請求の範囲により規定され
る。
れたマルチタスキングプロセッサ(マイクロコントロー
ラ)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を参照されたい。
ATMまたはイーサネットではない他のネットワーク間
でインターフェイスがもたらされる。いくつかの実施例
では、スライサ140は適当なMACで置換えられる。
サネット変換)を実行するのに加えて、PIF110は
IPルーティング、レイヤー2スイッチングまたは、P
IFマイクロコントローラ160により実行されるソフ
トウェアにより定められる他の処理を行なうことができ
る。図3、図4に関連して以下の説明を参照されたい。
また、本出願と同日出願のA.ヨッフェ他による「ネッ
トワークでデータを転送するためのネットワークプロセ
ッサシステムおよび方法」(“SYSTEMS AND METHODS FO
R DATA TRANSFORMATION AND TRANSFER IN NETWORKS”)
と題された米国特許出願(代理人事件番号M−4855
US)も参照されたい。これもここに引用により援用
される。
度においてであってもスループットが高い。そのため、
いくつかの実施例では、PIF110はわずか50MH
zのクロック速度において4つの100MB/秒イーサ
ネットポートおよびそれぞれ対応の4つの155MB/
秒ATMポートに対してIPルーティングを行なうこと
ができる。
応するMAC130.xとの間のデータフローは対応す
るチャネル150.x(以下、チャネル「x」、すなわ
ちチャネル0,1,2または3、とも称される)により
制御される。チャネル150はマイクロコントローラ1
60からのコマンドを実行する。いくつかの実施例で
は、4つのチャネル150.xは、時分割多重方式を用
いて4つのチャネル150の機能を果たす1つのチャネ
ル回路により実現される。ここに引用により援用される
前述の米国特許出願代理人事件番号M−4855 US
「ネットワークでデータを転送するためのネットワーク
プロセッサシステムおよび方法」を参照されたい。
サ140およびMAC130はメモリ164を介して通
信し、メモリ164は以下に説明する内部メモリ(「フ
レームおよびコマンドメモリ」)170およびFIFO
230、240を含む。
イクロコントローラはMII(メディア独立インターフ
ェイス)管理回路180に接続され、MII管理回路1
80は当該技術分野において公知であるイーサネット物
理層装置に接続される。
0内にアドレス導出データベースを保持し、IPルーテ
ィングまたはソフトウェアにより定められる他の処理を
行なう。SM190はまた、メモリ200内に(たとえ
ばVLANまたはアクセス制御リストを規定することに
よって)ネットワーク接続性を制限するデータベースを
保持する。サーチマシンはマイクロコントローラ160
により提示されるキー(たとえばイーサネットまたはI
Pアドレス)を探索することができ、学習アルゴリズム
を実行してそのアドレスがデータベースにない場合にレ
イヤー2またはレイヤー3アドレスを学習する。サーチ
マシン190はいくつかの実施例ではソフトウェアプロ
グラマブルではないが、サーチマシンはフレキシブルな
データベースノード構造をサポートしており、このた
め、サーチマシンは異なる機能(たとえばIPルーティ
ング、レイヤー2スイッチングなど)にたやすく適合で
きる。サーチマシン190は、サーチ、インサート、デ
リートなどのマイクロコントローラからのコマンドを実
行する。サーチマシンはまた、マイクロコントローラに
メモリ200への直接のアクセスを与える。サーチマシ
ンについては、追補8に記載する。
ロースルー動作モードにおいてシンクロナススタティッ
クRAMを用いて実現される。いくつかの実施例では複
数のメモリバンクが用いられている。
積回路である。メモリ200は集積回路の一部ではない
ため「外部」と称される。しかしながら、他の実施例で
は、メモリ200は同じ集積回路の一部である。この発
明はいかなる特定の集積方式によっても限定されるもの
ではない。
モリ(ROM)204(いくつかの実施例ではシリアル
EPROM)に接続され、ブート時にROM204から
マイクロコントローラへソフトウェア(「ファームウェ
ア」)がロードされるようにする。
ル150.xおよびその関連のFIFOリソースが示さ
れる。チャネルは以下の2つの類似した部分に分割され
る。すなわち、対応するMAC130から対応するスラ
イサ140へのデータフローを制御する入ってくる(イ
ングレス)サブチャネル150Iと、スライサ140か
らMIC130へのデータフローを制御する出ていく
(イーグレス)サブチャネル150Eとである。特に断
っていない限り、参照番号においてサフィックス「I」
はイングレスサブチャネルに属する回路を示し、サフィ
ックス「E」はイーグレスサブチャネルに属する回路を
示す。
てデータ処理は以下のステップを含む。
(すなわち210Iまたは210E)は対応するデータ
FIFO220に入来データをストアする。マイクロコ
ントローラがアドレス変換または他の処理を開始できる
ようにするのに十分なデータフレームの部分が受取られ
ると(たとえばIPルーティング実施例ではIPアドレ
スおよびホップカウントが受取られると)、入力制御2
10はそれぞれ対応のリクエストFIFO230にリク
エストを書く。リクエストがFIFO230に書かれる
前に受取られるフレームバイトの数は、前述の米国特許
出願代理人事件番号M−4855 USに説明されるよ
うにマイクロコントローラにより書込可能なレジスタに
より規定される。
クエストを読み、対応するデータFIFO220から適
当なパラメータ(たとえばイングレス側での発信元およ
び行先アドレスまたはイーグレス側でのVPI/VC
I)を読み、適当な処理を行なう。マイクロコントロー
ラはたとえばアドレス導出探索を行なうため、必要に応
じてサーチマシン190を用いる。
ントローラ160に探索結果を返すと、マイクロコント
ローラはそれぞれ対応のコマンドFIFO260に1つ
以上のチャネルコマンドを書き、これはフレームをどの
ように出力装置(MAC130またはスライサ140)
に転送するべきであるかを特定する。
力制御210はそれぞれ対応のステータスFIFO24
0にステータス情報を書く。ステータスFIFOはマイ
クロコントローラ160により読まれる。ステータスに
よりフレームが不良であることが示されると(たとえば
チェックサムが不良である場合)、マイクロコントロー
ラはコマンドFIFO260に「破棄」コマンドを書い
て出力制御250がそのフレームを破棄するようにさせ
る。
テップ(4)は図3、図4に関連して以下に説明する他
の処理を含んでいてもよい。
コマンドFIFO260からのコマンドを実行する。
20およびコマンドFIFO260は内部メモリ170
内にストアされる。リクエストFIFO230およびス
テータスFIFO240はメモリ230、240(図
1)内にストアされる。
力はマイクロコントローラに接続され、ATMスイッチ
120がプログラム(「アプレット」)をマイクロコン
トローラにロードして実行できるようにする。アプレッ
トはまず、他のフレームと類似した態様でイーグレス側
に転送されるが、これらのアプレットのVPI/VCI
パラメータはマイクロコントローラを示している。そこ
で、アプレットはMAC130には転送されない。代わ
りに、アプレットは回路250Eの出力からマイクロコ
ントローラプログラムメモリ314(図6)にDMA転
送によりロードされる。
自身のフレームを発生し、これをいずれかのデータFI
FO220へ書き、対応するコマンドFIFO260へ
コマンドを書くことができる。対応する出力制御250
はそのコマンドにより特定されるとおりにフレームを転
送する。
IFO260に、各サブチャネル150I、150Eの
ための別個のメモリ(図示せず)にストアされる統計情
報を転送するコマンドを書くことができる。
ーラ160は費用のかかるリソースである。注目すべき
ことは、いくつかの実施例においてマイクロコントロー
ラ命令実行ユニット(図6において310として示され
以下に説明される)がPIF110のゲートカウントの
約70%を占めることである。このため、マイクロコン
トローラを常に稼動させることが望ましい。以下のよう
に適当なマルチタスキングによって完全稼動させること
ができる。
1、2、3につき1つずつの、4つの「ハードウェアタ
スク」HT0、HT1、HT2、HT3を実行する。ハ
ードウェアタスクは以下の表に示すように時分割多重方
式で実行される。
(たとえば、ハードウェアタスクがサーチマシンを待っ
ているためなど)、それぞれのクロックサイクルにおい
てどのマイクロコントローラ命令も開始されない。
ウェアタスクを含む。各ソフトウェアタスクはフレーム
全体を処理するコードを含む。イングレス側のフレーム
とイーグレス側のフレームとが並列に到着し得るため、
いくつかの実施例では各ハードウェアタスクは少なくと
も2つのソフトウェアタスクを含んでおり少なくとも2
つのフレームを並列処理できるようにする。いくつかの
実施例では、異なるソフトウェアタスクがイングレス側
とイーグレス側とに提供される。イングレスソフトウェ
アタスクが、たとえばマイクロコントローラがサーチマ
シンを待っているため実行できない場合、マイクロコン
トローラはイーグレスソフトウェアタスクを実行でき
る。また、その逆も可能である。
ェアタスク」と記載しない限り、ソフトウェアタスクを
意味するものとする。
フレームのレイヤー3処理が示される。ステージ290
DAでは、サブステージ290DA.1においてマイク
ロコントローラはフレームから、イーサネット(MA
C)行先アドレスDAを読む。マイクロコントローラは
このアドレスをサーチマシン190に供給し、サーチマ
シン190はサブステージ290DA.2において探索
を行なう。
イクロコントローラは探索結果を調べる。DAが見つか
らなかった場合、フレームは捨てられるか、またはブロ
ードキャストされる。DAが見つかり、サーチマシンが
そのDAを最終行先ステーションのアドレスであると認
識した場合、探索結果は、フレームが最終行先に送られ
ることとなる仮装接続(VC)のVPI/VCIを含む
ことになる。この場合、IPステージ290IPはスキ
ップされる。探索結果からDAがIPルーティングエン
ティティに割当てられたアドレスであることが示される
と、IP処理がステージ290IPにおいて行なわれ
る。
P.1においてマイクロコントローラはフレームからI
P行先アドレスを読む。サーチマシンはステージ290
IP.2においてそのアドレスに対して探索を行なう。
マイクロコントローラはサブステージ290IP.3に
おいて探索結果を調べる。結果にはVPI/VCIが含
まれ、またアクセス制御制約が含まれることもある。サ
ブステージ290IP.3において、マイクロコントロ
ーラはアクセス制御制約をIP発信元アドレスと突き合
わせ、フレームが許可されるかどうかを判定する。許可
されない場合、フレームは捨てられる。
ト発信元アドレスSAは処理され、アドレス学習アルゴ
リズムを実現し、またVLANを実現する。より特定的
には、サブステージ290SA.1において、サーチマ
シンはSAに対して探索を行なう。サーチマシンは学習
アルゴリズムがリクエストするのであればSAデータを
挿入または修正する。サブステージ290SA.2にお
いて、サーチマシンは、SAが属するVLANを戻す。
サブステージ290SA.3において、マイクロコント
ローラはそのVLANをステージ290DA.2におい
てサーチマシンが返したDA VLANと比較する。イ
ーサネット発信元および行先アドレスが異なるVLAN
に属する場合、フレームは捨てられる。
P.3、290SA.3のうちの1つまたは2つ以上に
おいて、マイクロコントローラはそれぞれ対応のデータ
フロー(すなわちそれぞれ対応のサブチャネル)に対し
てコマンドFIFO260Iへコマンドを書く。コマン
ドはチャネル150がフレームを捨てるように指示して
も、またはフレームをそれぞれ対応のスライサ140に
転送するように指示してもよい。フレームが転送される
場合、チャネルは、コマンドの指示に従い、スライサに
VPI/VCIを供給したり、また、IPホップカウン
トをインクリメントしたり、および/または発信元アド
レスをそれぞれ対応のMAC130のアドレスで置換え
たりする。
レスタスクにより行なわれる処理が示される。ステージ
294VCにおいて、タスクはVPI/VCIを調べて
フレームがアプレットであるかどうかを判定する。もし
そうであれば、タスクはそのフレームをマイクロコント
ローラプログラムメモリ(以下に説明する図6において
314として示される)にロードし、アプレットを実行
する。ステージ294IPはスキップされる。
TMスイッチ120からの情報リクエストであることを
示していてもよい。そのようなリクエストの例として
は、PIF110内のレジスタを読むリクエスト、また
は統計情報を読むリクエストが含まれる。イーグレスタ
スクがそのリクエストを行なう。それが情報のリクエス
トであれば、イーグレスタスクは、イーグレスタスクを
実行するのと同じハードウェアタスクのイングレスコマ
ンドFIFO260Iに1つ以上のコマンドを書く。こ
れらのコマンドにより、チャネルがその情報をスイッチ
に送ることになる。ステージ294IPはスキップされ
る。
の管理リクエスト(情報のリクエストなど)をも示さな
い場合、ステージ294IPが行なわれる。サブステー
ジ294IP.1において、タスク(すなわちマイクロ
コントローラ)はフレームからIP行先アドレスを読
み、そのアドレスをサーチマシンに供給する。ステージ
294IP.2において、サーチマシンは探索を行な
い、イーサネット行先アドレスを返し、場合によっては
アクセス制御情報をも返す。ステージ294IP.3に
おいて、タスクはそのイーグレスコマンドFIFO26
0Eへコマンドを書き、フレームのイーサネット行先ア
ドレスをサーチマシンがもたらすアドレスで置換えさ
せ、イーサネット発信元アドレスをそれぞれ対応のMA
C130.xのアドレスで置換えさせ、フレームをMA
Cへ転送させる。また、タスクソフトウェアに応じて他
の種類の処理が行なわれてもよい。
A.2、290IP.2、290ISA.2、294I
P.2においてサーチマシンを待っている間、マイクロ
コントローラは同じまたは別のハードウェアタスクにお
ける別のソフトウェアタスクを実行するのに利用可能で
ある。
ーおよび各イーグレスフローに対して1つのタスクを有
しているだけではマイクロコントローラを完全に稼動さ
せることにならず、そのため、各半二重データフローに
対して2つ以上のタスクが提供され、マイクロコントロ
ーラが各データフローにおいて2つ以上のフレームを並
列に処理できるようにする。このことは以下を考慮する
ことによって説明される。イーサネットフレームが短い
ときにマイクロコントローラの速度が最もリクエストさ
れる。なぜなら、図3、図4に示される同じ処理を短い
フレームと長いフレームとの双方に対して行なわなけれ
ばならないからである。最も短いイーサネットフレーム
は64バイトを有する。たとえば、4つのイーサネット
ポートが100MB/秒ポートであり、ATMポートが
155MB/秒であるとする。100MB/秒では、最
も短いフレームはイーサネットポートを5.12マイク
ロ秒で通過する。このため、マイクロコントローラおよ
びサーチマシンはフレームを5.12+1.6=6.7
2マイクロ秒で処理しなければならない(1.6マイク
ロ秒はフレーム間ギャップである)。
ク速度を仮定しよう。これは信頼性のある動作を確実に
するためのかなり遅いクロック速度である。他の実施例
ではより速い速度(たとえば100MHz)が用いられ
る。50MHzにおいて、6.72マイクロ秒は336
クロックサイクルである。このため、1つのハードウェ
アタスクのイングレスおよびイーグレスタスクのための
クロックサイクル割当は336/4=84クロックサイ
クルである。
サーチマシンとで分けられているが、これらは必ずしも
同じフレームに対して並列に作業する訳ではないため、
同じハードウェアタスク内の1つのイングレスフレーム
と1つのイーグレスフレームとに対する処理レイテンシ
は結線速度での処理においてさえ、84サイクルより長
くてよい。処理するのに84サイクルよりも長くかか
り、64バイトのフレームがイングレス側およびイーグ
レス側において連続して到着する場合、同じデータフロ
ーにおける前のフレームが処理される前に次のフレーム
が到着し始めることがあり得る。このため、マイクロコ
ントローラが、同じデータフローにおける前のフレーム
の処理が完了する前に次のフレームを処理し始めること
ができるようにすることが望ましい。同じデータフロー
における複数のフレームのこのような並列処理を実現す
るために、各データフローに対して2つ以上のソフトウ
ェアタスクが提供される。
ードウェアタスクHTxは2つのイングレスタスクIG
x.0、IGx.1および2つのイーグレスタスクEG
x.0、EGx.1を含む。たとえば、ハードウェアタ
スクHT1はイングレスタスクIG1.0、IG1.1
およびイーグレスタスクEG1.0、EG1.1を含
む。各タスクは以下のものを含む4ビットのタスク番号
により識別される。
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である。
される。フレームがアプレットである場合、そのアプレ
ットは同じタスクにより実行される。
イン化される。このため、上記の表1では、それぞれ対
応のハードウェアタスクに対して新しい命令が開始され
るクロックサイクルが示される。たとえば、サイクル1
では、ハードウェアタスクHT0に対して命令実行が開
始される。命令実行は後続のサイクルにおいても続く。
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を読むことが許さ
れない。
へのタスクのアクセスを制御する。スイッチ「b」は、
タスク0によってあるフレームに対するすべてのコマン
ドが書かれた際に切替えられる。
クセスを制御するスイッチ「c」はステータスFIFO
がタスク0により読まれた際に切替えられる。
化するため、サーチマシン190は次々にコマンドを実
行し、結果を同じ順序でもたらす。
択するのには1クロックサイクルしか要さない(以下に
説明する図7におけるパイプラインステージTS)。さ
らに、タスクの選択はパイプライン化されており、その
ためスループットに影響を及ぼさない。タスクの選択は
ハードウェアにより行なわれる。マイクロコントローラ
においてオペレーティングシステムは用いられない。こ
のため、低いレイテンシが達成される。
態、すなわち、アクティブ、レディまたはサスペンド、
のうちの1つにある。アクティブ状態では、タスクは実
行されている状態である。最も多くて4つのタスク(各
ハードウェアタスクにつき1つ)が同時にアクティブで
あり得る。各アクティブタスクは4クロックサイクルご
とに実行がスケジュールされる(上の表1を参照のこ
と)。
ないリソースにアクセスを試みるとサスペンド状態に移
行する。リソースは追補2に記載される。リソースが利
用可能となるとタスクはレディ状態に入る。
同じチャネルにおけるレディ状態にあるタスクのうちの
1つがタスク制御320(図6)により実行のため選択
され、アクティブ状態に移行する。
ック図である。実行ユニット310はプログラムメモリ
314にストアされるプログラムを実行する。プログラ
ムはブートの間に、ROM204(図1)からダウンロ
ードされる。さらに、上述のようにアプレットをロード
して動的に実行することもできる。アプレットは実行さ
れた後に破棄されてもよく、またはアプレットはメモリ
314に残されてもよい。
するレジスタファイル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
において「定数レジスタ」と記される)。
14から読まれる命令の即値フィールド「imm」を受
取る。
トバスres _bus に接続され、64ビットバスres _bu
s はレジスタファイル312、データメモリ316およ
び特殊レジスタブロック315の入力に接続される。
16および特殊レジスタ315は追補6に記載される。
そこに記載されるように、レジスタおよびデータメモリ
はタスク間で分けられているため、タスクが再スケジュ
ールされる際にセーブ/リストア動作は必要ではない。
特に、特殊レジスタ315は各タスクにつき1つずつの
16個のPC(プログラムカウンタ)レジスタを含む。
は実行ユニット310、サーチマシン190および内部
メモリ170の間でインターフェイスをもたらす。LS
U330は、メモリからレジスタをロードするか、また
はレジスタ内容をメモリにストアするためのロードおよ
びストアリクエストの待ち行列を維持する。LSU33
0の入力はres _bus に接続され、またLSU330の
64ビットの出力rfiはレジスタファイル312の入
力に接続される。
bus に接続され、実行ユニット310がDMA340を
プログラムできるようにする。DMA340はアプレッ
トをプログラムメモリにロードすることができる。
る。パイプラインには7つのステージがある。
t0。このステージでは、アクティブタスクがタスク制
御320によってそれぞれ対応のチャネル150.xに
対して選択される。いくつかの実施例では、タスク制御
ブロックは固定優先順位機構を実現しており、タスクI
Gx.0が最高優先順位を有し、次にIGx.1、その
次にEGx.0、そしてその次にEGx.1となる。
ティブにされると、より高い優先順位のタスクがランす
る用意ができたというだけではサスペンドされない。そ
の優先順位のより低いタスクは利用可能でないリソース
にアクセスを試みるまでアクティブのままである。
いて、タスク制御ブロック320は実行ユニット310
に対してアクティブタスク番号信号task# _t1(追補1
の表A1−1におけるtsk _taskNumt1 と同じ)を駆動
する。信号task# _t1は特殊レジスタ315内の16個
のPC値のうちの1つを選択する。
スク制御ブロック320は実行ユニット310に「アイ
ドル」信号をアサートする。この信号は表A1−1にお
いて「tsk _idle」と表わされている。「アイドル」が
アサートされると、task# _t1は「ドントケア」であ
り、命令実行ユニット310は残りのパイプラインステ
ージにおいてNOP(ノーオペレーション)命令を実行
する。
レジスタブロック315においてtask# _t1により選択
されたPCレジスタ値はプログラムメモリ314に与え
られる。選択されたPCにより示される命令がメモリか
ら実行ユニット310へ読出される。
いて、命令は実行ユニットによりデコードされる。
て、レジスタファイル312および/または特殊レジス
タ315および/またはデータメモリ316から命令オ
ペランドが読まれ、ALU318に提示される。
から図15に関連してより詳しく説明するように、タス
ク制御320は配線410(図6)上にサスペンド信号
(表A1−1におけるtsk _susp)を発生する。サスペ
ンド信号がアサートされると、タスクはサスペンドさ
れ、命令実行はアボートされ、タスクのPCレジスタは
凍結される。後にタスクがアクティブにされると、同じ
命令が再実行されることになる。
ト310はウェイト信号を発生する。ウェイト信号がア
サートされると、命令実行は完了させられずPCレジス
タは凍結するが、タスクはアクティブのままであり、次
のクロックサイクルから命令は再び実行される。たとえ
ば、図7の命令1が、サイクル3においてアサートされ
るウェイト信号によって遅延された場合、同じ命令はサ
イクル4において開始される命令番号5として再実行さ
れることになる。
が、同じハードウェアタスクが再スケジュールされるこ
ろまでにはなくなりそうである場合にアサートされる。
ウェイト条件は追補3に記載される。
サートされると、PCレジスタは次の命令を指すように
変えられる。
て、命令は実行される。 (6) ライトバック(WB)ステージt5において、
実行ステージの結果は行先がレジスタファイル312内
にある場合を除いて、その行先に書かれる。
おいて、実行ステージの結果は必要であればレジスタフ
ァイル312に書込まれる。
(たとえばサイクル6の命令1)が同じハードウェアタ
スクの次の命令のRステージの前に起こることである
(サイクル7の命令5を参照のこと)。そのため、たと
えば命令5が命令1の結果を用いるとすると、その結果
は命令5がそれをサイクル7において読む前にレジスタ
ファイルまたは特殊レジスタに書かれることになる。
て)命令がアボートされると、パイプラインはすでに開
始された他の命令から除去されなくてもよい。なぜな
ら、これらの命令は他のタスク(さらには他のハードウ
ェアタスク)に属するからである。たとえば、命令1を
アボートしなければならない場合、命令1のRステージ
において、またはその前に開始された他の命令とは命令
2、3および4だけである。これらの命令は他のタスク
によって実行されるため、除去されなくてもよい。
する4つのソフトウェアタスクの間で切替えをするの
に、タスク切替えがオペレーティングシステムソフトウ
ェアにより行なわれる場合とは異なり、別個の命令を実
行することは必要ではない。このため、高いスループッ
トが達成される。
0またはステータスFIFO240に関するタスク同期
化のバブル図が示される。下方のダイアグラム704で
は、「タスク0」および「タスク1」は図5と同じ意味
を有する。より特定的には、これらはリクエストまたは
ステータスFIFOを共用する2つのソフトウェアタス
クである。いくつかの実施例では、タスク0はイングレ
スサブチャネルに対するIGi.0またはイーグレスサ
ブチャネルに対するEGi.0である。
示す状態機械である。RESETにおいて、FIFOは
状態710RS.0によって示されるようにタスク0に
より所有される。
と、FIFOは状態710RS.1により示されるよう
に、タスク1により所有されることになる。FIFOを
読むことは図5の「a」または「c」スイッチを切替え
ることに等しい。タスク1がFIFOを読むのに成功す
ると、状態機械は状態710RS.0に戻る。
により示される。信号mfsel は追補4に記載される。信
号ffrdは、マイクロコントローラによりいずれかのリク
エストまたはステータスFIFOが読まれると、ステー
ジt3において実行ユニットによりアサートされる。別
個のffrdバージョンが各リクエストおよびステータスF
IFOに対して生成される(FIFO読出が成功する
と、追補4の信号mfrdがステージt5においてアサート
される)。
6個ある。これらFIFOの各々は0から15までの一
意の数「x」により識別される。FIFO「x」が読ま
れている際、図8のmfsel[x]により示されるように、そ
の数「x」はラインmfsel 上に駆動される。
0およびタスク1がFIFOに関連してどのように状態
を変化させるかを示している。上に示したように、各タ
スクには3つの状態、すなわちレディ(「RDY」)、
アクティブおよびサスペンドがある。RESETにおい
て、すべてのタスクはレディとなる。タスクはパイプラ
インステージt0において選択されるとアクティブとな
る。
アクティブ状態からレディ状態へ移行することができな
いが、これは他の実施例では可能である。
「サスペンド」条件730が生ずるとアクティブ状態か
らサスペンド状態へ移行する。サスペンドされたタスク
はリリース条件734が生ずるとレディとなる。可能な
サスペンド条件を追補1の表A1−2に列挙する。リリ
ース条件は表A1−3に列挙する。
730は、タスク0がFIFOが利用可能でないときに
FIFOにアクセスを試みる際に生じる。より特定的に
は、条件730とは以下のとおりである。
3にあること(実行ユニット310により生成される信
号「T3」により示される)。
出動作を示していること。 (3) mfsel がFIFO「x」を識別していること。
また、 (4) FIFOがタスク1により所有されている(状
態機械704が状態710RS.1にある)か、または
信号cfifordy[x] がローであり、FIFO「x」が空で
あることを示していること。(信号cfifordyは追補4に
記載される。この信号は4つ目のサイクルごとにサンプ
リングされ、サンプリングされる際には有効である。) FIFOがタスク0によって読まれておりそれ以外のど
のタスクによっても読まれているのではないことは、タ
スク0がパイプラインステージt3にあることにより確
証される。
ム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]
)である。
Ireqf はFIFOがイングレスタスク1により所有され
ていることを示す。表A1−2のすべての信号はステー
ジt3においてサンプリングされるため、「t3」は表
中の条件のいくつかでは省いてある。イーグレスタスク
0に関して、信号Ereqf はそれぞれ対応のリクエストF
IFOがイーグレスタスク1により所有されていること
を示す。すなわち、Ereqf がIreqf と入れ代わってい
る。タスク制御320は各リクエストFIFOに対して
別個の信号Ireqf またはEreqf を発生する。
dyのように)信号名称の前の「〜」により示されるか、
または(イーグレスタスク1に対する条件1のEreqf _
のように)信号名称の後に続く下線によって示される。
条件730は表A1−2において2と番号のつけられた
条件である。信号exe _SfifoRd はステータスFIFO
に対するffrdバージョンである。ステータスFIFOを
識別する番号は「x」ではなく「y」で示される。
734は、タスク0がFIFOを所有している(状態機
械704が状態710RS.0にある)ことと、cfifor
dy[x] がハイでありFIFOが空ではないことを示して
いることである。タスク1に対するリリース条件734
(ダイアグラム740)は同様である。
れている。各リリース条件は表A1−2の同じスロット
内のサスペンド条件に対応する。たとえば、表A1−3
における「イングレスタスク0」セクションのリリース
条件1は、タスクが表A1−2における「イングレスタ
スク0」セクションのサスペンド条件1によりサスペン
ドされた場合にそのタスクをレディ状態にリリースす
る。このように、表A1−3におけるリリース条件1お
よび2は、リクエストおよびステータスFIFOに対す
るダイアグラム720および740でのリリース条件7
34に対応する。
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」
に対してアサートされる。
信号により示され、「アンロック」信号は、コマンドF
IFOを書くのに用いられるマイクロコントローラ命令
「CMD」(追補7)のLフラグから実行ユニット31
0によって生成される。
をロックすることなく(「x」がイングレスタスク1を
示しているIcmdFifoWr[x] により示されるように)その
コマンドFIFOに書くと、状態機械は状態S0に戻
る。
FOに書き、「ロック」信号がアサートされてそのFI
FOをロックすべきであることを示すと、状態機械は状
態S2に移行する。この状態においては、FIFOは依
然としてイングレスタスク0により所有されている。ロ
ック信号は、マイクロコントローラ命令CMD(追補
7)におけるLフラグから実行ユニット310により生
成される。FIFOは、イングレスタスク0が「アンロ
ック」信号がアサートされている状態でFIFOに書く
まで状態S2に留まる。書かれた時点でFIFOは状態
S1に移行する。
がアサートされている状態で状態S1にあるFIFOに
書くと、FIFOは状態S3に移行する。この状態にお
いてFIFOは依然としてイングレスタスク1により所
有されている。FIFOは、イングレスタスク1が「ア
ンロック」がアサートされた状態でFIFOに書くまで
状態S3に留まる。書かれた時点でFIFOは状態S0
に移行する。
ーグレスタスクがコマンドFIFOをロックすることな
くそのコマンドFIFOに書く場合、状態遷移は起こら
ない。イーグレスタスク0が状態S0にあるFIFOを
ロックしてFIFOに書くと、FIFOは状態S4に移
行する。この状態において、コマンドFIFOはイーグ
レスタスク0により所有される。状態機械は、イーグレ
スタスク0が「アンロック」がアサートされている状態
でコマンドFIFOに書くまで状態S4に留まる。書い
た時点で、状態機械は状態S0に戻る。
レスタスク1がコマンドFIFOに書込をしこれを所有
することを表わす。
S4およびS5に類似しているが、状態S6およびS7
には状態S0ではなくS1から入る。
マンド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)。
マンドFIFOに書込むことにより生じたサスペンド条
件は表A1−2の条件8である。信号IcmdfOwnedByE0
は、コマンドFIFOがイーグレスタスク0により所有
されていることを示す(ダイアグラム804における状
態S4、S6)。信号IcmdfOwnedByE1は、コマンドFI
FOがイーグレスタスク1により所有されていることを
示す(ダイアグラム804における状態S5、S3)。
におけるイングレスタスクに対する条件3である。
グレスタスク同期化も同様である。イーグレスFIFO
については、状態S4、S5、S6、S7は存在しな
い。表A1−2およびA1−3において、関係のある条
件は番号が3である条件である。信号exe _EcmdFifoWr
がexe _IcmdFifoWrと置換わり、イーグレスFIFOへ
の書込動作を示す。信号Ecmdf1は、FIFOがイーグレ
スタスク1により所有されていることを示す。
グレスタスク同期化が示される。下部のダイアグラム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であ
る。
うに、転送が完了すると、DMAはレディ(「RD
Y」)となる。
タスクがDMAアドレスレジスタを読むと(図10にお
いて「dmaa_rd」として示される)、DMAは実行状態
に移行する。DMA所有者はDMAレディ状態において
しかアドレスレジスタを読むことが許されない。非所有
者タスクはどのDMA状態においてもDMAアドレスレ
ジスタを読むことが許される。
タスクはDMAによりロードされるアプレットを実行す
る。新たなDMAアクセスは許されない。
1をDMAAレジスタ(追補1)のOPフィールドに書
込むと、DMAはアイドル状態に戻る。
も同じハードウェアタスクにあるわけではない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により生成される。
DMA所有者タスクが、DMAがアクティブである間に
ステージt3においてDMAアドレスレジスタを読もう
と試みるか、またはDMAアドレスレジスタに書こうと
試みる際にサスペンドされる。所有者タスクはDMAが
レディとなるとリリースされる。非所有者タスクはDM
Aがレディである間にステージt3においてDMAレジ
スタに書こうと試みる際にサスペンドされる。非所有者
タスクはDMAがアイドルとなるとリリースされる。
イーグレスタスク0および1に対する条件7において
「clast _word」として示される。
(追補2、6)に関するタスク同期化が示される。サス
ペンド条件730は表A1−2において条件5として示
される。各サスペンド条件は以下のとおりである。すな
わち、(1)タスクがパイプラインステージt3にある
ことと、(2)BITCまたはBITCI命令がタスク
により実行され、そのターゲットのオペランドがセマフ
ォレジスタであり、その命令が、その命令の以前からセ
マフォレジスタビットが有していた値と同じ値をセマフ
ォレジスタビットに書こうとしているためアボートされ
なければならないこと(これは表A1−2の信号exe _
bitcSemRegにより示されており、「exe _」で始まる信
号名称はすべて実行ユニット310により生成される信
号を表わしている)とである。サスペンドが生じると、
タスク制御ブロック320はフラグSPxを1に設定
し、ここで「x」はタスク番号(0−15)である。
アされる(すなわち0に設定される)ことである。タス
ク制御ブロック320は以下の2つの条件のうちのいず
れか1つでも生じるとすべてのフラグSPxをクリアす
る。すなわち、 (1) パイプラインステージt3において、命令BI
TCまたはBITCIの実行がどれか他のタスクYによ
って成功したこと。この条件は表A1−3におけるリリ
ース条件5の信号exe _bitcSemAccにより示される。
タに書くこと。これはcstrobe がアサートされており
(追補4における表A4−1)、csem[5]が1に
あることによって示される。チャネルは、チャネルコマ
ンドによりコマンドされると、セマフォレジスタにアク
セスしてマイクロコントローラ160に表示を送る。こ
こに引用により援用される、上記の米国特許出願代理人
事件番号M−4855US「ネットワークでデータを転
送するためのネットワークプロセッサシステムおよび方
法」を参照されたい。
タスク状態遷移が示される。サスペンド条件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 の記
載を参照されたい。
こと(「x」はタスク番号)により示されるように、サ
ーチマシンリソースがタスクによって利用可能でないこ
と。この信号は追補1の表A1−1およびA1−2では
sm_task_ownbitとして示される。名称が「sm_」で始
まる信号はサーチマシン190により生成される。サー
チマシンリソースおよびサスペンド条件は追補2に記載
される。
sk_ownbit[x] が1であることである。
リストのスクラッチバッファ1610(図18および追
補5)に関するタスク同期化が示される。サスペンド条
件730(表A1−2での条件6)は、以下のすべてが
真であることである。すなわち、 (1) タスクがパイプラインステージt3にあるこ
と。
号ifreel_rdにより示されるように、タスクが内部フリ
ーリストレジスタIFREEL(追補6)を読んでいる
こと。この信号は表A1−2においてはexu _ifreelRd
と表わされる。IFREELレジスタが読まれてフリー
バッファ番号が得られる。
free_buf 」)信号が特殊レジスタブロック315によ
りアサートされ、フリーバッファがないことを示してい
ること。
のうちのいずれかが真となることである。すなわち、 (1) cstrobe (追補4における表A4−1)がチャ
ネル150によりアサートされ、csem[5]が0で
あり、チャネル150が、信号csem[4:0]によ
り特定されるスクラッチバッファ1610を内部フリー
リストに戻そうとしていることを示していること。
るexu _ifreelWr)は実行ユニットによりアサートさ
れ、マイクロコントローラがIFREELレジスタ(追
補6)へ書いていることを示していること。このレジス
タには、フリーとなったスクラッチバッファの番号が書
込まれる。
が実行ユニットによりアサートされ、マイクロコントロ
ーラがIFREERレジスタへ書いていることを示して
いること。
ック図である。タスク制御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におけるソフトウェアタスクがサスペンドされる
べきであるかどうかを判定するのに用いられ、また、以
下に説明するようにそれぞれ対応のハードウェアタスク
に対するソフトウェアタスクの状態を判定するのに用い
られる。
ず)によりクロックされる。各ブロック1304におい
て、ラッチ1320はそれぞれ対応のハードウェアタス
ク番号HT#(上のCHIDと同じ)をストアする。ラ
ッチ1322はハードウェアタスクに対するアクティブ
なソフトウェアタスク番号ST#=<SN,I/E>をストアする。
そのハードウェアタスクに対していずれのタスクもアク
ティブではない場合、ラッチ1322の出力は「ドント
ケア」である。
チ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)。
出力はブロック1304.0のラッチ1320の入力に
接続される。
アタスク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の左の欄に示される。
対応のラッチ1330Sにストアされる状態が「サスペ
ンド」である場合にしか意味をもたない。レディおよび
アクティブ状態に対しては、ラッチ1330Cにある情
報は「ドントケア」である。
0を含み、6つのラッチ1350は対応するハードウェ
アタスクに対する6つのそれぞれ対応のリクエスト、ス
テータスおよびコマンドFIFOの状態をストアする。
可能な状態はダイヤグラム704(図8)および804
(図9)に示され、上に説明したとおりである。
0、1350の出力は次の状態および条件発生器135
4に接続される。回路1354はタスクとリクエスト、
ステータスおよびコマンドFIFOとの次の状態を生成
し、また次のリリース条件値を生成する。これらの状態
および条件信号はバス1358を介してブロック130
4.0の回路1330、1350の入力へ与えられる。
れる。回路1354において、リソース次ステージ発生
器1380はブロック1304.3のラッチ回路135
0からリクエスト、ステータスおよびコマンドFIFO
の状態を受取る。発生器1380はまた、いずれかのリ
ソース、ステータスおよびコマンドFIFOの状態遷移
を引き起こし得る、ダイヤグラム704および804に
関連して上に説明した信号のすべてを受取る。発生器1
380はダイヤグラム704および804に従ってFI
FOの次の状態を計算し、次の状態を同じクロックサイ
クルt3においてラッチブロック1304.0のラッチ
回路1350へ与える。
応の回路1390の入力に接続される。簡単にするた
め、タスクE1のための回路1390のみが詳しく示さ
れる。タスクE1に関して、ラッチ1330Cのリリー
ス条件出力はマルチプレクサ1394のセレクト入力に
接続される。マルチプレクサ1394のデータ入力はタ
スクE1に対する7つの可能なリリース条件734を受
取る(表A1−3「イーグレスタスク1」のセクショ
ン)。マルチプレクサ1394に入力される各データ
は、対応するリリース条件が真である場合にはアサート
され条件が偽である場合にはデアサートされる1ビット
信号である。
リリース条件信号(すなわち、ブロック1304.3の
ラッチ1330Cにストアされるリリース条件に対応す
る信号)はタスク次状態発生器1398に与えられる。
発生器1398はまた、タスクの現在の状態をラッチ1
330Sから受取り、配線410上のサスペンド信号を
以下に説明するサスペンド論理およびリリース条件発生
器1401から受取る。タスク次状態発生器1398
は、タスクがサスペンドされたままであるかどうか、ま
たは代わりにタスクが同じクロックサイクル内にアクテ
ィブになれるかどうかを示す信号Aを発生する。信号A
は以下の表2に従って生成される。
らA出力を受取り、これらからバス1358上に以下の
信号を発生する。すなわち、(1)ブロック1304.
0のそれぞれ対応のラッチ1330Sに対する各タスク
の次のステージと、(2)配線1404上のアクティブ
ソフトウェアタスク番号ST#とである。ソフトウェア
タスク番号はブロック1304.0のラッチ1322へ
送られる。
ル」を発生し、これはアサートされるとどのタスクもア
クティブではないことを示す(図6も参照のこと)。
390は、マルチプレクサへのリリース条件入力を、そ
れぞれ対応のタスク(イングレスタスク0、イングレス
タスク1またはイーグレスタスク0)に対応する表A1
−3のセクションから取っていることを除いて、タスク
E1のためのタスク次状態発生器1398およびマルチ
プレクサ1394と同じである信号A発生論理を含む。
1401はブロック1304.3のラッチ回路1350
の出力を受取り、また、サスペンド条件730(図8か
ら図13および追補1の表A1−2)を計算するのに必
要である信号のすべて(たとえばcfifordy、mfsel な
ど)を受取る。ブロック1401は、ブロック130
4.3のラッチ1322の出力により識別されるアクテ
ィブタスクに対するサスペンド条件を計算する。サスペ
ンド論理1401は配線410上に、タスク次状態発生
器1398と他の3つの回路1390内の同様の発生器
とへサスペンド信号をもたらす。
チプレクサ1394と他の3つのブロック1390内の
同様のマルチプレクサ(図示せず)とに対するリリース
条件データ入力734を生成する。リリース条件は表A
1−3の式に従って生成される。
ク1304.3におけるすべての状態ラッチ1330S
の状態出力を受取る。各タスクについて、(1)状態出
力がアクティブ状態を示し、かつ(2)タスクに対する
サスペンド条件のうちの1つが真である場合、サスペン
ド論理1401は、そのタスクをレディにするのに必要
なリリース条件のインデックス734_inを発生す
る。別個のインデックス734_inが表A1−3のそ
れぞれ対応のセクションに従って各タスクに対して生成
される。図15にはタスクE1のためだけのインデック
ス734_inが示される。
ち、タスクに対する状態出力が「アクティブ」ではない
か、または状態出力はアクティブであるがタスクに対す
るサスペンド条件のいずれも真ではない場合)、タスク
に対するリリースインデックス734_inは「ドント
ケア」である。
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へ供給する。
は以下のものを選択する同様なマルチプレクサ1406
(図示せず)を含む。すなわち、同様なマルチプレクサ
1406は(1)それぞれ対応のタスクに対するブロッ
ク1304.3のラッチ回路1330からの出力「ac
t」がアクティブ状態を示す場合には、サスペンド論理
1401からのそれぞれ対応のタスクに対するリリース
条件インデックス734_inを選択し、また、(2)
「act」が非アクティブ状態を示す場合には、それぞ
れ対応のタスクに対するブロック1304.3のラッチ
1330の条件出力を選択する。選択された条件インデ
ックスはブロック1304.0におけるそれぞれ対応の
ラッチ1330の入力に与えられる。
スペンドされると、タスク特有の値を有するレジスタは
セーブされない。特に、各タスクは、タスクPCおよび
フラグを有するそれ自体のPCレジスタを有する(追補
6を参照のこと)。さらに、レジスタファイル312は
8つのバンクに分割される。各バンクは、同じチャネル
からのイングレスタスクおよびイーグレスタスクの対の
専用のものである。タスク対により実行されるソフトウ
ェアは、その対の間に共通のレジスタがないような態様
で書かれる。このため、レジスタファイルレジスタはタ
スク特有の値をストアするのだが、これらのレジスタを
セーブしたりリストアしたりする必要はない。
るものではない。特に、この発明はポートの数によって
も、ポートが全二重または半二重であるということによ
っても、いかなるタイミング、信号、コマンドまたは命
令によっても限定されない。いくつかの実施例では、マ
イクロコントローラは、図7のパイプラインまたは何ら
かの別のパイプラインを有する複数の実行ユニットを含
む。いくつかの実施例では、1つ以上のマイクロコント
ローラが、スーパースカラまたはVLIW(very large
instruction word )プロセッサに存在するような複数
の実行ユニットを含む。いくつかの実施例では、マイク
ロコントローラは複数の集積回路で実現されるプロセッ
サにより置換えられる。ここで用いた術語「タスク」に
はプロセスおよびスレッドも含まれる。他の実施例およ
び変更例も、添付の特許請求の範囲に記載されるこの発
明の範囲内に含まれる。
ーラコマンドによってアクセスされる。
れるコマンドと結果との2個のリソースを有する。
(タスクごとに1個)。このリソースが利用可でない唯
一の場合は、同じタスクからの先のコマンドが完了され
ていないときである。
スクごとに1個)。あるコマンドがサーチマシンに通知
されると、そのコマンドが実行されるまで結果が利用不
可となる。いくつかのコマンド(たとえば、インサート
またはデリート)は結果を持たない。
IFO230およびステータスFIFO240との3種
のリソースを有する。
不可である。 a.リソースが別のタスクに属する。この場合、他のタ
スクがそのリソースをリリースすると、それはこのタス
クに対して利用可となる。
場合、コマンドFIFOがフルでなくなると、タスクは
このリソースを使用し続けることができる。
る(すなわち、いくつかのコマンドがあるタスクによっ
て書込まれ得るのはリソースが別のタスクに渡される前
である)。これは、最初のアクセスの間にリソースをロ
ックし、最後のアクセスの際にそれをアンロックするこ
とによって達成される。コマンドリソースがロックされ
ると、他のどのタスクもこのリソースにアクセスできな
い。
Gxは、メッセージをスイッチ120に送るために同じ
チャネル150.xのイングレスコマンドFIFO26
0Iにコマンドを書込むことができる。イングレスコマ
ンドFIFOがアンロックされるたびにイーグレスタス
クがイングレスコマンドFIFOに書込まれ得る。イー
グレスタスクがその最初のコマンドをイングレスコマン
ドFIFO260Iに書込むと、イーグレスタスクから
の最後のコマンドが書込まれるまでコマンドFIFOが
ロックされた状態となる。
ースは以下の2つの場合利用可でない。
場合、他のタスクがFIFOを読出すと、リソースはこ
のタスクに対して利用可となる。
FOがレディになると、タスクはこのリソースを使用し
続けることができる。
14にダウンロードするのはDMAブロックである。こ
のリソースは、転送前にDMAアドレスをセットし、転
送完了時に最後のワードアドレスを読出すイーグレスタ
スクによって用いられる。転送の間に最後のワードアド
レスが読出されると、最後のワードが転送されるまでタ
スクがサスペンドされる。また、最初の転送が完了して
いないときに別のイーグレスタスクによって新しいDM
Aアドレスを書込む試みもタスクサスペンドを引き起こ
す。
バッファ1610(図17)を管理するのは内部メモリ
管理である。メモリには32個のフリーバッファがあ
る。タスクは、次の利用可能なフリーバッファを得るこ
とを望むとき、フリーリスト(FreeL)リソース
(追補6のレジスタIFREEL)にアクセスする。バ
ッファが残されていなければ、このタスクはサスペンド
される。このバッファを用いたチャネルコマンドによっ
てバッファがリリースされるべきだと示されると、バッ
ファはリリースされてフリーリストに戻る。
各々がマイクロコントローラの即値ビット変更(BIT
CI)およびBITCコマンドを用いて直接的にアクセ
ス可能である。セマフォは保護とタスク間の通信とのた
めに用いられる。
値を現在のビット値としてこのビットに書込もうと試み
る場合、それはアボートされ、そのタスクがサスペンド
される。その後、セマフォレジスタが変更される(レジ
スタにおける何らかのビットが変更される)と、セマフ
ォを待っている全タスクがレディとなり、Bit_ch
ange_Immediate(即値ビット変更)コマ
ンドを再び実行しようとする。
IF110のそれぞれの予め定められた外部ピン(図示
せず)を0から1に変更することによってセットされ得
る。
テータスを表示する1スコアボードビットがある。この
ビットがセットされていれば、レジスタはダーティであ
り、すなわち、データがLSU330によってロードさ
れるのを待っている。起こり得るシナリオは以下のとお
りである。
ロードをリクエストする。 (b) タスクがソースとしてのこのレジスタの使用を
リクエストする。しかしながら、スコアボードはダーテ
ィである。したがって、ウエイト信号がアサートされ
る。
する。 (d) タスクがソースとしてのこのレジスタの使用を
再びリクエストする。今回は使用が許可される。 (2) LSU FIFOフル これはウエイト信号を発生するための別の条件である。
ロード・ストアリクエストを待ち行列に格納しているL
SU FIFOが一旦レディとなると、この条件はクリ
アされる。
ェイスにおいて用いられるいくつかの信号をリストにし
て挙げる。「I」は信号がチャネルのための入力である
ことを意味する。「O」は信号がチャネル出力であるこ
とを意味する。
−1FFF 16進法) このエリアはスクラッチパッド1610、データFIF
OおよびコマンドFIFOのために用いられる。このエ
リアは相対アドレスを用いてアクセスされる。データエ
リアメモリマップを図17に示す。
ングレス側のための(後述する)CFGRレジスタの
「DBASE」フィールドである。同様に、DLEN、
CBASE、CLENは対応のCFGRレジスタのフィ
ールドである。サフィックス「_I」はイングレスを表
わし、「_E」はイーグレスを表わす。
りである。
ンレジスタ(イングレスおよびイーグレス) 各チャネルの方向ごとに1個、8個のCFGRレジスタ
がある。それらのフィールドは以下のとおりである。
ァベースポインタ(64バイト整列) DLEN (7ビット) データバッファ長(64バイ
ト粒度) CBASE (9ビット) コマンドバッファベースポ
インタ(64バイト整列) CLEN (3ビット) コマンドバッファ長(64バ
イト粒度) GAP (4ビット) フレーム制御ワードが無効であ
るときのデータ読出ポインタとデータ書込ポインタとの
間の最小ギャップ(8バイト粒度)。
−5FFF 16進法) このエリアは上述の米国特許出願出願人書類番号M−4
855 USに説明される。
(図18)。各バンクは同じチャネル150.xからの
1対のイングレスタスクとイーグレスタスクとの専用の
ものである。いくつかの実施例では、イングレス処理の
方がより複雑なのでイングレスタスクがイーグレスタス
クよりも多くのレジスタを用いる。また、いくつかの実
施例では、タスクソフトウェアは、2つのタスク間に共
通のレジスタがないようなものである。
の幅である。連続する8バイトがレジスタファイルから
並列に読出され得る。7ビットレジスタアドレスを形成
するために、レジスタ番号(0から63)が、それ自体
チャネルID「CHID」とタスク対番号(0または
1)とを連結したものであるバンクIDと連結され、ア
ドレスMSBが(特殊レジスタ314に対して)レジス
タファイル312を表示するために0となる。
ントローラコマンドによって直接的にアクセス可能であ
る。レジスタマップはレジスタファイル312および特
殊レジスタ315という2領域に分割される。レジスタ
アドレスは7ビットからなる。特殊レジスタ315では
アドレスMSBが1であり、レジスタファイル312で
はMSBが0である。
するいくつかのパラメータとのために用いられる。
3領域に分割される。 a.タスクごとのタスクレジスタtr0−tr5(タス
クごとに6個)。これらのレジスタはそれぞれのタスク
専用である。
ャネル150.xごとに4個)。これらのレジスタはハ
ードウェアタスク専用である。同じチャネルの全タスク
(2個のイングレスタスクおよび2個のイーグレスタス
ク)がこれらのレジスタにアクセスする。
ジスタ)。これらのレジスタは全タスクに対してグロー
バルである。
ワードである。データメモリ316のための7ビットア
ドレス発生方式を図20に示す。
る。tnはタスク番号(0−15)である(trおよび
tnがタスクレジスタアドレスを形成する)。
3;「110」、crおよびcnがチャネルレジスタア
ドレスを形成する)。
rはグローバルレジスタ番号(0−15)である。
6−1参照)は(レジスタファイルと同様に)マイクロ
コントローラコマンドによって直接的にアクセス可能で
ある。特殊レジスタ315は以下の3タイプに分割でき
る。
プログラムカウンタ(PC)、タスク番号(TIN)
等。
ストFIFO(reqf)、ステータスFIFO(st
tf)、サーチマシンコマンド(scmd)等(追補2
参照)。
ば、タスクレジスタ(tr)、チャネルレジスタ(c
r)およびグローバルレジスタ(gr)。
プ(b)および(c))はそのアクセスを簡単にするた
めに特殊レジスタにマッピングされる。
べる。
ルは以下のとおりである。 PC−プログラムカウンタおよびフラグ PC (10ビット) プログラムカウンタ G (1ビット) フラグ−より大きい L (1ビット) フラグ−より小さい E (1ビット) フラグ−等しい C (1ビット) フラグ−桁上げ G、L、EおよびCは読出専用である。
(1)。
マンド拡張 書込動作の間、これらの32ビットレジスタはサーチマ
シンのためのコマンドを形成する。読出動作の間、これ
らのレジスタは結果を与える。SCMDEはSCMDの
前に書込まれるべきである。
リ200におけるフリーリストスタックに付加される。
このレジスタからの読出によって、1ブロックがスタッ
クから取除かれ得る。
ックがある。各レジスタはスタックの先頭を指す16ビ
ットポインタを含む。
テムクロックが8計時するごとに進む自走カウンタであ
る。
あるか調べるための次エントリを指すポインタ。このフ
ィールドは書込専用である。リセット後に初期化される
べきである。
ル。このフィールドは書込動作の間に用いられる。ET
=1であれば、タイマは書込まれた値をとる。ET=0
であれば、タイマカウンタは書込によって影響を与えら
れない。
ーブル。このフィールドは書込動作の間に用いられる。
EN=1であれば、次ポインタが新しい値を得る。EN
=0であれば、NXTEフィールドが無効である。
インタ。このポインタはサーチノードエリアを定義する
(このエリアの後部が0xFFFFである)。自動エイ
ジング機構はこのエリア内でのみ実行される。
ブル(0−ディセーブル;1−イネーブル)。
ドエリアにおけるフリーリスト内のエントリ数を含む。
大値は0x10000である)。 AGEL0、AGEL1−エイジリスト0、1の先頭 これらは読出専用レジスタである(チャネルごとに2
個)。各々がエイジリストの先頭を含む(チャネルごと
に2個のエイジリストがある)。これらのレジスタのど
の1つからの読出もレジスタをクリアさせる。ここで、
ノード(追補8)におけるTSTMP(タイムスタン
プ)がこのリストにおけるノードを互いにリンクするた
めに用いられる。レジスタが0なら、リストは空であ
る。
ポインタの先頭。 しきい値0、しきい値1−しきい値レジスタ これらのレジスタの各々は対応のエイジリストと関連し
たしきい値を含む。
であり、かつエントリがLRND(学習されたエント
リ)のタイプであると、エントリはエイジリストに付加
される。
い値。 MSGR−メッセージレジスタはマイクロコントローラ
とスイッチ120CPU(図示せず)との間でメッセー
ジを転送するために用いられる。メッセージはヘッダラ
インによって転送される。
込むときはCPUへの、レジスタを読出すときはCPU
からのメッセージ。このフィールドは読出の後にクリア
される。
(テストのために)読出すときのCPUへのメッセー
ジ。
ビット) F[i] (1ビット) メモリ170のスクラッチパ
ッドエリアにおけるブロック「i」がフリーであるかど
うかを示す。
ち、スクラッチバッファ番号:図17参照)。このレジ
スタの読出によってスクラッチバッファBLKNがフリ
ーリストから取除かれる。このレジスタへの書込によっ
て、書込まれるBLKN値によって特定されるバッファ
がフリーリストに戻される。
ーサネットPHY装置と通信するために用いられる。
マンドでセットされ、コマンド完了時にリセットされ
る。
が有効でないときにセットされる。
で算術論理演算を行なう。結果はオペランド_C に書込
まれる。命令は以下のとおりである。
(行先タイプ)が以下のようにオペランド_C のタイプ
を特定する。
ァイル312または特殊レジスタ315におけるレジス
タである。
0内にある。オペランド_C フィールドはアドレス発生
のためにロード/ストアユニットにおいて7ビット即値
として用いられる。
200内にある。オペランド_C フィールドはdt
[1]ビットとともにアドレス発生のためにロード/ス
トアユニットにおいて8ビット即値として用いられる。
ペランドとしてリソースを用いることができない。
命令はオペランド_A と即値バイトとの間で算術論理演
算を行なう。結果はオペランド_C に書込まれる。命令
は以下のとおりである。
タイプ)が3オペランド命令におけるようにオペランド
_C フィールドのタイプを特定する。
比較演算を行なう。命令は以下のとおりである。
移動させる CMP−オペランドCとオペランドAとを比較する 命令のサイズフィールドがオペランドのサイズを特定す
る。
動演算および比較演算を行なう。命令は以下のとおりで
ある。
定する。
を行なう。
0との間でロードおよびストア演算を行なう。命令は以
下のとおりである。
のタイプを特定する。
即値フィールドはアドレス発生のためのロード/ストア
ユニットにおいて7ビット即値として用いられる。
即値フィールドはdt「1」ビットとともにアドレス発
生のためのロード/ストアユニットにおいて8ビット即
値として用いられる。
マンドFIFOに書込むために用いられる。
B、SBIのための)ボローが(オペランドopCのサ
イズに基づいて)発生されたときにセットされる。
ORI、ANDI、XORI、SHLI、SHRI フラグ:Eは結果が0に等しいときにセットされる。
18]=opA、[17:16]=dt、[14:8]
=opB、[7]=v 演算:opC<-opA[opB]<-v(すなわち、opCにおけるビ
ット番号opBがvにセットされること以外では、op
CがopAの値を受取る) フラグ:Eは(opA[opB]==v)であるときに
セットされる。
18]=opA、[17:16]=dt、[12:8]
=imm、[7]=v 演算:opC<-opA[imm]<-v フラグ:Eは(opA[imm]==v)であるときに
セットされる。
18]=opA、[7:5]=オペランドサイズ 演算:opC?opA フラグ:Eは(opC==opA)であるときにセット
される Gは(opC>opA)であるときにセットされる Lは(opC<opA)であるときにセットされる。
8]=imm 演算:opC?imm フラグ:Eは(opC==imm)であるときにセット
される Gは(opC>imm)であるときにセットされる Lは(opC<imm)であるときにセットされる。
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)であるときにセ
ットされる。
らのロード オペランド:ビット[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)である。
実行は同じチャネルからの先のストア演算が完了してい
なければ遅延される。
アドレスビットである(「{}」は連結を示す)。
へのストア オペランド:ビット[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命
令と同じ意味を有する。
ある(セットされると、命令のロック状態が変更され
る)。
= L, [6] = P 演算: Command _port <- {opC[63:16],imm} ifP=0, Command _port = cmd_i ; (イングレスコマンド) ifP=1, Command _port = cmd_e ; (イーグレスコマンド) 命令における1ビットLフラグがロック/アンロック制
御である(セットされると、ロック状態が変更され
る)。
sk, [12:8] =シフト 演算:PC<-PC+ ((opC&bit _mask)>>シフト)+1。
[12:8] = ビット, [7]= v 演算:if(opC[bit]==v )then PC<-addr 。
(1996年8月13日にG. C. Stone に発行され、引
用によりここに援用される米国特許第5,546,39
0号「基数判定パケット処理のための方法および装置」
(“Method and Apparatus for Radix Decision Packet
Processing ”)を参照されたい。
ノードは64ビットの4ワードの長さである。ノードフ
ォーマットは以下のとおりである。
ロック図である。
ク図である。
示すタイミング図である。
示すタイミング図である。
うに共用されるリソースにアクセスするのかを示す論理
図である。
のブロック図である。
す図である。
状態遷移を示す図である。
状態遷移を示す図である。
ス状態遷移を示す図である。
ス状態遷移を示す図である。
ス状態遷移を示す図である。
ス状態遷移を示す図である。
のブロック図である。
のブロック図である。
ある。
マップの図である。
マップの図である。
プの図である。
を示す図である。
出データベースにおけるツリーノードを示す図である。
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
スクラッチバッファ。
Claims (29)
- 【請求項1】 各々が1個以上のコンピュータ命令を実
行する複数個のタスクを実行するためのプロセッサであ
って、通常動作においては、プロセッサ実行ユニットは
任意の所与のタスクからの最大N個の命令の実行を任意
の他のタスクからの間に介在するどのような命令も実行
開始せずに開始し、前記N個の命令の後、前記実行ユニ
ットは別のタスクが実行のために利用可であれば別のタ
スクの命令を実行開始する、プロセッサ。 - 【請求項2】 N=1である、請求項1に記載のプロセ
ッサ。 - 【請求項3】 前記命令の実行はパイプライン化され
る、請求項2に記載のプロセッサ。 - 【請求項4】 各タスクはネットワーク間のデータフロ
ーに対して処理を行ない、任意の所与のデータフローに
対する処理を行なう任意のタスクの任意の所与の命令の
実行開始の後、前記実行ユニットは、他のタスクが実行
のために利用可であれば、異なるデータフローに対する
処理を行なう別のタスクの命令を実行開始する、請求項
2に記載のプロセッサ。 - 【請求項5】 複数個のタスクを実行するための方法で
あって、 実行ユニットが任意の所与のタスクからの最大N個の命
令の実行を任意の他のタスクからの任意の命令を実行開
始せずに開始するステップを含み、Nは予め定められた
数であり、さらに、 任意の所与のタスクからの最大N個の命令の実行開始の
後、別のタスクが実行のために利用可であれば別のタス
クの命令を実行開始するステップを含む、方法。 - 【請求項6】 N=1である、請求項5に記載の方法。
- 【請求項7】 タスク特有の値をストアする1個以上の
レジスタをタスクごとに含み、前記1個以上のレジスタ
のどの1個もタスクが実行のためにスケジュールされて
いるときはセーブもリストアもされる必要はない、マル
チタスクコンピュータプロセッサ。 - 【請求項8】 前記1個以上のレジスタはタスクごとに
プログラムカウンタレジスタを含む、請求項7に記載の
プロセッサ。 - 【請求項9】 前記タスクは1個以上のタスクの組に細
分割され、前記プロセッサは前記組のタスクのタスク特
有の値をストアするための1個以上のレジスタを組ごと
に含む、請求項7に記載のプロセッサ。 - 【請求項10】 コンピュータプロセッサによって複数
個のタスクを実行するための方法であって、前記方法は
タスクを実行するステップを含み、前記タスクはタスク
特有の値をストアする1個以上のレジスタを用いるが異
なるタスクは前記1個以上のレジスタの異なるものを用
い、したがって、あるタスクの実行を中断して別のタス
クの実行を開始するためには、前記1個以上のレジスタ
の値をセーブすることも前記1個以上のレジスタの値を
リストアすることも必要ない、方法。 - 【請求項11】 複数個のタスクによって共用されるべ
き複数個のリソースを含むマルチタスクコンピュータシ
ステムにおいて、データユニットを処理する際に前記タ
スクのあるものが前記リソースのあるものへのアクセス
を終えた後に、他の前記タスクがいずれも前記リソース
へのアクセスを終えるまで前記タスクが同じリソースに
アクセスしないように、前記タスクに各リソースを割当
てるための回路。 - 【請求項12】 少なくとも1個のリソースに対して、
各タスクは前記リソースをロックしてそれを他のどのタ
スクに対しても利用不可にすることによって前記リソー
スへのアクセスを開始し、前記タスクは前記リソースを
アンロックすることによって前記リソースへのアクセス
を終了する、請求項11に記載の回路。 - 【請求項13】 複数個のコンピュータタスクによって
複数個のリソースを共用するための方法であって、 前記タスクの1つであるタスクT1に前記リソースのす
べてにアクセスさせ、他のタスクに前記リソースのどの
1つへもアクセスさせないステップと、 リソースごとに、前記タスクT1が前記リソースへのア
クセスを終了した後、別のタスクに前記リソースにアク
セスさせ、前記リソースを共用する他のいずれのタスク
も前記リソースへのアクセスを終了するまで前記タスク
T1に前記リソースへアクセスさせないステップとを含
む、方法。 - 【請求項14】 プロセッサが利用不可のリソースにア
クセスする第1の命令を実行するときに、前記プロセッ
サが前記第1の命令をサスペンドし、前記第1の命令を
実行しようとしたプロセッサ回路が1個以上の他の命令
を実行するよう動作可能となるように命令を実行するた
めのプロセッサ。 - 【請求項15】 前記リソースが利用可となると前記プ
ロセッサは前記第1の命令の実行を完了する、請求項1
4に記載のプロセッサ。 - 【請求項16】 前記第1の命令がサスペンドされる
と、前記第1の命令はキャンセルされ、前記第1の命令
は前記リソースが利用可となるときに再び実行される、
請求項14に記載のプロセッサ。 - 【請求項17】 前記プロセッサはマルチタスクを行な
い、前記第1の命令を実行するタスクは前記第1の命令
がサスペンドされるとサスペンドされ、前記タスクがサ
スペンドされている間、前記第1の命令を実行しようと
した前記プロセッサ回路は1個以上の他のタスクを実行
するよう動作可能となる、請求項14に記載のプロセッ
サ。 - 【請求項18】 プロセッサによって実行されるタスク
TA1が利用不可なリソースにアクセスしようと試みる
ときに、少なくとも前記リソースが利用可となるまでタ
スクスケジューリング回路が前記タスクTA1をサスペ
ンドし、前記リソースが前記タスクTA1に対して利用
不可であるときに前記タスクTA1の代わりに別のタス
クTA2が実行の準備ができていれば、前記タスクスケ
ジューリング回路が前記タスクTA1をスケジュールす
るような、タスクスケジューリング回路を含むマルチタ
スクプロセッサであって、 前記タスクスケジューリング回路の動作は前記プロセッ
サによる命令実行を必要としない、マルチタスクプロセ
ッサ。 - 【請求項19】 タスクサスペンド条件が真であるかど
うかを示す第1の信号を発生するための第1の回路と、 前記第1の信号に応答して実行のために単数または複数
のタスクをスケジュールするための第2の回路とを含
む、マルチタスクプロセッサ。 - 【請求項20】 前記サスペンド条件からタスクをリリ
ースするためのリリース条件が真であるかどうかを示す
リリース信号を発生するための第3の回路をさらに含
み、 前記第2の回路は、前記第2の回路が実行のために単数
または複数のタスクをスケジュールするときに前記リリ
ース信号に応答する、請求項19に記載のプロセッサ。 - 【請求項21】 前記タスクが実行の準備ができている
かどうかを示す信号SIG1を発生するための別個の回
路をタスクごとにさらに含み、前記第2の回路は実行の
ために単数または複数のタスクをスケジュールする際に
1個以上の信号SIG1に応答する、請求項19に記載
のプロセッサ。 - 【請求項22】 前記プロセッサが何らかの命令を実行
しようとするたびに、前記命令を実行するタスクをスケ
ジュールするためのタスクスケジューリングを前記第2
の回路が行なうように、前記第2の回路は前記プロセッ
サによって実行される各命令ごとに、単数または複数の
タスクを実行のためにスケジュールする、請求項19に
記載のプロセッサ。 - 【請求項23】 コンピュータ命令を実行するための方
法であって、 コンピュータリソースにアクセスする第1の命令を実行
するステップと、 前記リソースが利用不可であれば、前記第1の命令をサ
スペンドし、前記第1の命令を実行しようとした回路に
よって1個以上の他の命令を実行するステップとを含
む、方法。 - 【請求項24】 前記リソースが利用可となると前記第
1の命令の実行を完了するステップをさらに含む、請求
項23に記載の方法。 - 【請求項25】 前記第1の命令を実行する前記ステッ
プは第1のタスクによって前記第1の命令を実行するス
テップを含み、 前記第1の命令がサスペンドされていると、前記第1の
タスクがサスペンドされ、前記1個以上の他の命令が1
個以上の他のタスクの実行を含む、請求項23に記載の
方法。 - 【請求項26】 タスクサスペンド条件が真であるかど
うかを示す第1の信号を発生するステップと、 前記第1の信号に応答して単数または複数のタスクを実
行のためにスケジュールするステップとを含む、マルチ
タスク方法。 - 【請求項27】 前記サスペンド条件からタスクをリリ
ースするためのリリース条件が真であるかどうかを示す
リリース信号を発生するステップをさらに含み、 単数または複数のタスクを実行のためにスケジュールす
る前記ステップは前記リリース信号に応答して行なわれ
る、請求項26に記載の方法。 - 【請求項28】 前記タスクが実行の準備ができている
かどうかを示す別個の信号をタスクごとに発生するステ
ップをさらに含む、請求項26に記載の方法。 - 【請求項29】 命令が実行されようとするたびに、前
記命令を実行するタスクをスケジュールするようにタス
クスケジュールが行なわれるように、単数または複数の
タスクを実行のためにスケジュールする前記ステップは
前記タスクの任意の1つによって実行される各命令ごと
に行なわれる、請求項26に記載の方法。
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)
| 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)
| 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)
| 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 |
-
1998
- 1998-04-03 US US09/055,033 patent/US6330584B1/en not_active Expired - Lifetime
-
1999
- 1999-03-23 EP EP99302248A patent/EP0947926A3/en not_active Withdrawn
- 1999-04-02 JP JP09657099A patent/JP3670160B2/ja not_active Expired - Fee Related
-
2004
- 2004-08-02 JP JP2004225517A patent/JP4263147B2/ja not_active Expired - Fee Related
Cited By (2)
| 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 |