JP4263147B2 - コンピュータプロセッサを含む装置、複数の所定のグループのタスクを実行するステップを含む方法、ネットワークデータを処理するステップを含む方法、複数のソフトウェアタスクを実行するための方法およびコンピュータプロセッサを含むネットワーク装置 - Google Patents

コンピュータプロセッサを含む装置、複数の所定のグループのタスクを実行するステップを含む方法、ネットワークデータを処理するステップを含む方法、複数のソフトウェアタスクを実行するための方法およびコンピュータプロセッサを含むネットワーク装置 Download PDF

Info

Publication number
JP4263147B2
JP4263147B2 JP2004225517A JP2004225517A JP4263147B2 JP 4263147 B2 JP4263147 B2 JP 4263147B2 JP 2004225517 A JP2004225517 A JP 2004225517A JP 2004225517 A JP2004225517 A JP 2004225517A JP 4263147 B2 JP4263147 B2 JP 4263147B2
Authority
JP
Japan
Prior art keywords
task
tasks
network
group
circuit
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.)
Expired - Fee Related
Application number
JP2004225517A
Other languages
English (en)
Other versions
JP2004342132A (ja
Inventor
アレクサンダー・ヨッフェ
ドゥミトゥリー・ビシェツキー
Original Assignee
アプライド マイクロサーキッツ コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アプライド マイクロサーキッツ コーポレイション filed Critical アプライド マイクロサーキッツ コーポレイション
Publication of JP2004342132A publication Critical patent/JP2004342132A/ja
Application granted granted Critical
Publication of JP4263147B2 publication Critical patent/JP4263147B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/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; CALCULATING OR 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)

Description

(関連出願への相互参照)
該当なし
(連邦政府資金による研究または開発に関する陳述)
該当せず
この発明はデータ処理に関し、より特定的にはパイプライン化された命令実行、マルチタスキングおよびリソースアクセス技術に関する。
パイプライン化およびマルチタスキングによりプロセッサの帯域幅が増加する。これらの技術に伴う時間および複雑さを低減することが望ましい。
特に、命令実行がパイプライン化されると、プロセッサは、命令を実行すべきであるかどうかがわかる前に命令を実行し始めることもあり得る。たとえば、プロセッサが命令I1を実行し始め、次に、I1の実行が完了する前に命令I2を実行し始めたとする。I1の実行が完了できないのであれば、命令I2を実行すべきではなく、命令I2をパイプラインから除去しなければならない。実際に、どの時点においてもプロセッサはパイプラインから除去すべきである2つ以上の命令を実行しているかもしれない。パイプライン除去に関連する回路の複雑さを低減することが望ましい。
また、マルチタスキング環境においてさまざまなタスク間での切替えに伴うオーバヘッドを低減することも望ましい。タスクを切替えるには、プロセッサにより実行されるオペレーティングシステムが、どのタスクが次に実行されるべきであるかを定めなければならない。また、オペレーティングシステムは、あるタスクにより用いられたレジスタ値をセーブし、別のタスクにより用いられる値をレジスタにロードしなければならない。これらの機能は相当な数のオペレーティングシステム命令を伴うことがある。こうした動作に関連のある命令の数を減少することが望ましい。
また、利用可能でないかもしれないリソースへのアクセスを改善することが望ましい。そのようなリソースの一例としては、プロセッサが読もうとする際には空であり、またはプロセッサが書こうとする際には一杯であるかもしれないFIFOが挙げられる。FIFOにアクセスする前に、プロセッサはFIFOが利用可能であるかどうかを示すフラグを調べる。利用可能でないかもしれないリソースにアクセスする速度を改善することが望ましい。
また、複数のタスクによるコンピュータリソースの利用を同期化するための単純な同期化方法を提供し、リソースが別のタスクによりアクセスされるよう設定されている際に、あるタスクがそのリソースにアクセスすることによって生じ得るエラーを回避することが望ましい。
この発明はいくつかの実施例において、効率のよいパイプラインプロセッサ、マルチタ
スキングプロセッサおよびリソースアクセス技術を提供する。
いくつかの命令実行パイプライン実施例において、パイプライン除去オーバヘッドはプロセッサがどのタスクに対しても続けて実行できる命令の数を制限することによって低減または消去される。このため、いくつかの実施例では、連続した命令は別々のタスクにより実行される。そのため、命令を実行できない場合でも、次の命令は異なるタスクに属するため当該次の命令は依然として実行されなければならない。このため、次の命令はパイプラインから除去されない。
いくつかの実施例では、同じタスクのどの2つの命令の間でも、プロセッサは別のタスクからの十分な数の命令を実行してパイプライン除去の必要をなくしている。
タスク切替えに関連するオーバヘッドを低減するため、いくつかの実施例では各々のタスクに対する別個のレジスタが含まれており、レジスタ値がタスク切替え動作においてセーブされたり、またはリストアされたりする必要がないようにする。特に、いくつかの実施例では、各タスクは別個のプログラムカウンタ(PC)レジスタおよび別個のフラグを有する。いくつかの実施例において、タスク切替えはハードウェアによって1クロックサイクルで行なわれる。
いくつかの実施例において、プロセッサは、リソースが利用可能であるかどうかを予めチェックすることなくリソースにアクセスすることができる。プロセッサがリソースにアクセスする命令を実行する際にリソースが利用可能でない場合、プロセッサはその命令をサスペンドする。その命令を実行するはずであったプロセッサ回路は、たとえば別のタスクの命令など、別の命令を実行するのに利用可能となる。
そのため、いくつかの実施例では、プロセッサはすべてのリソース(たとえばFIFOなど)の状態を追跡する。(特に断っていない限り、ここで用いている術語「リソース」はある時点において利用可能であるかもしれない、または利用可能でないかもしれない何かを意味する。)生成される信号は各リソースの状態を示しており、特にどのリソースがどのタスクに利用可能であるのかを示す。あるタスクが利用可能でないリソースにアクセスを試みた場合、そのタスクはサスペンドされ、プロセッサは本来そのサスペンドされたタスクが利用できたはずのタイムスロット内で他のタスクを実行できる。リソースが利用可能となると、そのサスペンドされたタスクは再開され、そのリソースにアクセスする命令が再実行される。
複数のタスクが1つ以上のリソースを共用する際の同期エラーを避けるため、いくつかの実施例では、あるタスクがリソースのいずれか1つにアクセスし終わると、そのタスクは、そのリソースを共用する他のすべてのタスクがそのリソースにアクセスし終わるまでそのリソースにアクセスすることができない。このため、いくつかのネットワーク実施例では、さまざまなタスクがFIFOリソースを共用してデータフレームを処理する。各タスクは別個のデータフレームを処理する。フレームを処理するには、タスクは「リクエスト」FIFOからフレームアドレスを読む。次に、タスクはコマンドFIFOに、チャネルプロセッサがフレームを処理するようにというチャネルプロセッサへのコマンドを書込む。2つ目のタスクは異なるフレームに対して同様の動作を行なう。始めのタスクは再び、さらに別のフレームに対して同じ動作を行なう。あるフレームに対して書かれたコマンドが別のフレームに誤って適用された場合、フレームは誤って処理される可能性がある。
この可能性をなくし、リクエストFIFOにおけるフレームアドレスとコマンドFIFOにおけるコマンドとを正確に一致させるため、以下の技術が用いられる。まず、あるタ
スク(たとえばT1)がリクエストFIFOおよびコマンドFIFOの双方にアクセスを許されるが、他のどのタスクもこれらのリソースにアクセスすることを許されない。一旦タスクT1がいずれかのリソースにアクセスし終わると、そのリソースに別のタスクがアクセスすることが許可され、さらにタスクT1は、そのリソースを共用する他のすべてのタスクがそのリソースにアクセスし終わるまでは再びそのリソースにアクセスすることを許されない。このため、リクエストFIFOにおけるフレームアドレスの順序はコマンドFIFOにおけるコマンドの順序と対応しており、チャネルがフレームアドレスとコマンドとを正確に一致させることができるようにする。この一致を確立するのに特殊なタグは何ら必要ではなく、この一致は単純なデータ構造であるFIFOを用いて確立される。
いくつかの実施例では、プロセッサはネットワークのデータフローを処理するいくつかのタスクを実行する。プロセッサは高い帯域幅をもたらすのに、上述のパイプラインおよびタスク切替え技術を用いる。
他の実施例および変更例を以下に説明する。この発明は添付の特許請求の範囲により規定される。
図1には、パイプライン化されたマルチタスキングプロセッサ(マイクロコントローラ)160を含むポートインターフェイス(PIF)回路110が示される。ポートインターフェイス110は、4つの全二重ポートを含み、これらはATMスイッチ120とそれぞれ対応の4つのイーサネット(登録商標)セグメント(図示せず)との間でインターフェイスをもたらし、4つのイーサネット(登録商標)セグメントの各々は対応するMAC130.0−130.3に接続される。各ポート「x」(x=0,1,2,3)において、イーサネット(登録商標)セグメントとATMスイッチ120との間のデータは、対応するMAC130.xおよび対応するスライサ140.xを通って流れる。スライサは周知のATM SAR機能を実行し、イーサネット(登録商標)フレームをATMセルに分割し、ATMスイッチへ向かう途中でセルにATMヘッダを付加し、イーサネット(登録商標)セグメントへ向かう途中でセルからフレームをアセンブルする。いくつかの実施例では、PIF110へのATMスイッチインターフェイスはフレームモードで動作し、このモードにおいてはATMスイッチは、間に介在するセルのない状態でセルのフレームをスライサ140に送る。スライサ140はAAL−5プロトコルを用いる。フレームモードはたとえば、A.ヨッフェ(Joffe )他による1996年8月30日出願の「ATMスイッチにおけるセルキューイング」(“Cell Queuing in ATM Switches”)と題された米国特許出願第08/706,104号に記述される。また、1997年8月28日出願の、ここに引用により援用されるPCT出願PCT/US97/14821を参照されたい。
PIF110の他の実施例では、必ずしもATMまたはイーサネット(登録商標)ではない他のネットワーク間でインターフェイスがもたらされる。いくつかの実施例では、スライサ140は適当なMACで置換えられる。
プロトコル変換(たとえば、ATM/イーサネット(登録商標)変換)を実行するのに加えて、PIF110はIPルーティング、レイヤー2スイッチングまたは、PIFマイクロコントローラ160により実行されるソフトウェアにより定められる他の処理を行なうことができる。図3、図4に関連して以下の説明を参照されたい。また、本出願と同日出願のA.ヨッフェ他による「ネットワークでデータを転送するためのネットワークプロセッサシステムおよび方法」(“SYSTEMS AND METHODS FOR DATA TRANSFORMATION AND TRANSFER IN NETWORKS”)と題された米国特許出願第09/055,044号(代理人事件番号M−4855 US)も参照されたい。これもここに引用により援用される。
PIF110はさほど速くないクロック速度においてであってもスループットが高い。そのため、いくつかの実施例では、PIF110はわずか50MHzのクロック速度において4つの100MB/秒イーサネット(登録商標)ポートおよびそれぞれ対応の4つの155MB/秒ATMポートに対してIPルーティングを行なうことができる。
図1では、各スライサ140.xとその対応するMAC130.xとの間のデータフローは対応するチャネル150.x(以下、チャネル「x」、すなわちチャネル0,1,2または3、とも称される)により制御される。チャネル150はマイクロコントローラ160からのコマンドを実行する。いくつかの実施例では、4つのチャネル150.xは、時分割多重方式を用いて4つのチャネル150の機能を果たす1つのチャネル回路により実現される。ここに引用により援用される前述の米国特許出願第09/055,044号の代理人事件番号M−4855 US「ネットワークでデータを転送するためのネットワークプロセッサシステムおよび方法」を参照されたい。
チャネル、マイクロコントローラ、スライサ140およびMAC130はメモリ164を介して通信し、メモリ164は以下に説明する内部メモリ(「フレームおよびコマンドメモリ」)170およびFIFO230、240を含む。
いくつかのイーサネット(登録商標)の実施例では、マイクロコントローラはMII(メディア独立インターフェイス)管理回路180に接続され、MII管理回路180は当該技術分野において公知であるイーサネット(登録商標)物理層装置に接続される。
サーチマシン(SM)190はメモリ200内にアドレス導出データベースを保持し、IPルーティングまたはソフトウェアにより定められる他の処理を行なう。SM190はまた、メモリ200内に(たとえばVLANまたはアクセス制御リストを規定することによって)ネットワーク接続性を制限するデータベースを保持する。サーチマシンはマイクロコントローラ160により提示されるキー(たとえばイーサネット(登録商標)またはIPアドレス)を探索することができ、学習アルゴリズムを実行してそのアドレスがデータベースにない場合にレイヤー2またはレイヤー3アドレスを学習する。サーチマシン190はいくつかの実施例ではソフトウェアプログラマブルではないが、サーチマシンはフレキシブルなデータベースノード構造をサポートしており、このため、サーチマシンは異なる機能(たとえばIPルーティング、レイヤー2スイッチングなど)にたやすく適合できる。サーチマシン190は、サーチ、インサート、デリートなどのマイクロコントローラからのコマンドを実行する。サーチマシンはまた、マイクロコントローラにメモリ200への直接のアクセスを与える。サーチマシンについては、追補8に記載する。
いくつかの実施例では、メモリ200はフロースルー動作モードにおいてシンクロナススタティックRAMを用いて実現される。いくつかの実施例では複数のメモリバンクが用いられている。
いくつかの実施例では、PIF110は集積回路である。メモリ200は集積回路の一部ではないため「外部」と称される。しかしながら、他の実施例では、メモリ200は同じ集積回路の一部である。この発明はいかなる特定の集積方式によっても限定されるものではない。
PIF110はまた、シリアル読出専用メモリ(ROM)204(いくつかの実施例ではシリアルEPROM)に接続され、ブート時にROM204からマイクロコントローラへソフトウェア(「ファームウェア」)がロードされるようにする。
図2には、メモリ164内の1つのチャネル150.xおよびその関連のFIFOリソースが示される。チャネルは以下の2つの類似した部分に分割される。すなわち、対応するMAC130から対応するスライサ140へのデータフローを制御する入ってくる(イングレス)サブチャネル150Iと、スライサ140からMIC130へのデータフローを制御する出ていく(イーグレス)サブチャネル150Eとである。特に断っていない限り、参照番号においてサフィックス「I」はイングレスサブチャネルに属する回路を示し、サフィックス「E」はイーグレスサブチャネルに属する回路を示す。
各サブチャネル150I、150Eにおいてデータ処理は以下のステップを含む。
(1) 対応する入力制御ブロック210(すなわち210Iまたは210E)は対応するデータFIFO220に入来データをストアする。マイクロコントローラがアドレス変換または他の処理を開始できるようにするのに十分なデータフレームの部分が受取られると(たとえばIPルーティング実施例ではIPアドレスおよびホップカウントが受取られると)、入力制御210はそれぞれ対応のリクエストFIFO230にリクエストを書く。リクエストがFIFO230に書かれる前に受取られるフレームバイトの数は、前述の米国特許出願第09/055,044号の代理人事件番号M−4855 USに説明されるようにマイクロコントローラにより書込可能なレジスタにより規定される。
(2) マイクロコントローラ160はリクエストを読み、対応するデータFIFO220から適当なパラメータ(たとえばイングレス側での発信元および行先アドレスまたはイーグレス側でのVPI/VCI)を読み、適当な処理を行なう。マイクロコントローラはたとえばアドレス導出探索を行なうため、必要に応じてサーチマシン190を用いる。
(3) サーチマシン190がマイクロコントローラ160に探索結果を返すと、マイクロコントローラはそれぞれ対応のコマンドFIFO260に1つ以上のチャネルコマンドを書き、これはフレームをどのように出力装置(MAC130またはスライサ140)に転送するべきであるかを特定する。
(4) フレーム全体が受取られた後、入力制御210はそれぞれ対応のステータスFIFO240にステータス情報を書く。ステータスFIFOはマイクロコントローラ160により読まれる。ステータスによりフレームが不良であることが示されると(たとえばチェックサムが不良である場合)、マイクロコントローラはコマンドFIFO260に「破棄」コマンドを書いて出力制御250がそのフレームを破棄するようにさせる。
ステップ(2)、ステップ(3)およびステップ(4)は図3、図4に関連して以下に説明する他の処理を含んでいてもよい。
(5) 出力制御250はそれぞれ対応のコマンドFIFO260からのコマンドを実行する。
いくつかの実施例では、データFIFO220およびコマンドFIFO260は内部メモリ170内にストアされる。リクエストFIFO230およびステータスFIFO240はメモリ230、240(図1)内にストアされる。
イーグレス出力制御ブロック250Eの出力はマイクロコントローラに接続され、ATMスイッチ120がプログラム(「アプレット」)をマイクロコントローラにロードして実行できるようにする。アプレットはまず、他のフレームと類似した態様でイーグレス側に転送されるが、これらのアプレットのVPI/VCIパラメータはマイクロコントローラを示している。そこで、アプレットはMAC130には転送されない。代わりに、アプ
レットは回路250Eの出力からマイクロコントローラプログラムメモリ314(図6)にDMA転送によりロードされる。
マイクロコントローラ160はまた、それ自身のフレームを発生し、これをいずれかのデータFIFO220へ書き、対応するコマンドFIFO260へコマンドを書くことができる。対応する出力制御250はそのコマンドにより特定されるとおりにフレームを転送する。
マイクロコントローラはまた、コマンドFIFO260に、各サブチャネル150I、150Eのための別個のメモリ(図示せず)にストアされる統計情報を転送するコマンドを書くことができる。
いくつかの実施例では、マイクロコントローラ160は費用のかかるリソースである。注目すべきことは、いくつかの実施例においてマイクロコントローラ命令実行ユニット(図6において310として示され以下に説明される)がPIF110のゲートカウントの約70%を占めることである。このため、マイクロコントローラを常に稼動させることが望ましい。以下のように適当なマルチタスキングによって完全稼動させることができる。
マイクロコントローラは、各ポート0、1、2、3につき1つずつの、4つの「ハードウェアタスク」HT0、HT1、HT2、HT3を実行する。ハードウェアタスクは以下の表に示すように時分割多重方式で実行される。
Figure 0004263147
ハードウェアタスクが利用可能でない場合(たとえば、ハードウェアタスクがサーチマシンを待っているためなど)、それぞれのクロックサイクルにおいてどのマイクロコントローラ命令も開始されない。
各ハードウェアタスクは1つ以上のソフトウェアタスクを含む。各ソフトウェアタスクはフレーム全体を処理するコードを含む。イングレス側のフレームとイーグレス側のフレームとが並列に到着し得るため、いくつかの実施例では各ハードウェアタスクは少なくとも2つのソフトウェアタスクを含んでおり少なくとも2つのフレームを並列処理できるようにする。いくつかの実施例では、異なるソフトウェアタスクがイングレス側とイーグレス側とに提供される。イングレスソフトウェアタスクが、たとえばマイクロコントローラがサーチマシンを待っているため実行できない場合、マイクロコントローラはイーグレスソフトウェアタスクを実行できる。また、その逆も可能である。
以下、術語「タスク」は、特に「ハードウェアタスク」と記載しない限り、ソフトウェアタスクを意味するものとする。
図3には、イングレスタスクによる1つのフレームのレイヤー3処理が示される。ステージ290DAでは、サブステージ290DA.1においてマイクロコントローラはフレームから、イーサネット(登録商標)(MAC)行先アドレスDAを読む。マイクロコントローラはこのアドレスをサーチマシン190に供給し、サーチマシン190はサブステ
ージ290DA.2において探索を行なう。
サブステージ290DA.3において、マイクロコントローラは探索結果を調べる。DAが見つからなかった場合、フレームは捨てられるか、またはブロードキャストされる。DAが見つかり、サーチマシンがそのDAを最終行先ステーションのアドレスであると認識した場合、探索結果は、フレームが最終行先に送られることとなる仮装接続(VC)のVPI/VCIを含むことになる。この場合、IPステージ290IPはスキップされる。探索結果からDAがIPルーティングエンティティに割当てられたアドレスであることが示されると、IP処理がステージ290IPにおいて行なわれる。
そのステージでは、サブステージ290IP.1においてマイクロコントローラはフレームからIP行先アドレスを読む。サーチマシンはステージ290IP.2においてそのアドレスに対して探索を行なう。マイクロコントローラはサブステージ290IP.3において探索結果を調べる。結果にはVPI/VCIが含まれ、またアクセス制御制約が含まれることもある。サブステージ290IP.3において、マイクロコントローラはアクセス制御制約をIP発信元アドレスと突き合わせ、フレームが許可されるかどうかを判定する。許可されない場合、フレームは捨てられる。
ステージ290SAにおいて、イーサネット(登録商標)発信元アドレスSAは処理され、アドレス学習アルゴリズムを実現し、またVLANを実現する。より特定的には、サブステージ290SA.1において、サーチマシンはSAに対して探索を行なう。サーチマシンは学習アルゴリズムがリクエストするのであればSAデータを挿入または修正する。サブステージ290SA.2において、サーチマシンは、SAが属するVLANを戻す。サブステージ290SA.3において、マイクロコントローラはそのVLANをステージ290DA.2においてサーチマシンが返したDA VLANと比較する。イーサネット(登録商標)発信元および行先アドレスが異なるVLANに属する場合、フレームは捨てられる。
サブステージ290DA.3、290IP.3、290SA.3のうちの1つまたは2つ以上において、マイクロコントローラはそれぞれ対応のデータフロー(すなわちそれぞれ対応のサブチャネル)に対してコマンドFIFO260Iへコマンドを書く。コマンドはチャネル150がフレームを捨てるように指示しても、またはフレームをそれぞれ対応のスライサ140に転送するように指示してもよい。フレームが転送される場合、チャネルは、コマンドの指示に従い、スライサにVPI/VCIを供給したり、また、IPホップカウントをインクリメントしたり、および/または発信元アドレスをそれぞれ対応のMAC130のアドレスで置換えたりする。
図4には、1つのフレームに対してイーグレスタスクにより行なわれる処理が示される。ステージ294VCにおいて、タスクはVPI/VCIを調べてフレームがアプレットであるかどうかを判定する。もしそうであれば、タスクはそのフレームをマイクロコントローラプログラムメモリ(以下に説明する図6において314として示される)にロードし、アプレットを実行する。ステージ294IPはスキップされる。
代わりに、VPI/VCIはフレームがATMスイッチ120からの情報リクエストであることを示していてもよい。そのようなリクエストの例としては、PIF110内のレジスタを読むリクエスト、または統計情報を読むリクエストが含まれる。イーグレスタスクがそのリクエストを行なう。それが情報のリクエストであれば、イーグレスタスクは、イーグレスタスクを実行するのと同じハードウェアタスクのイングレスコマンドFIFO260Iに1つ以上のコマンドを書く。これらのコマンドにより、チャネルがその情報をスイッチに送ることになる。ステージ294IPはスキップされる。
VIP/VCIがスイッチ120からのどの管理リクエスト(情報のリクエストなど)をも示さない場合、ステージ294IPが行なわれる。サブステージ294IP.1において、タスク(すなわちマイクロコントローラ)はフレームからIP行先アドレスを読み、そのアドレスをサーチマシンに供給する。ステージ294IP.2において、サーチマシンは探索を行ない、イーサネット(登録商標)行先アドレスを返し、場合によってはアクセス制御情報をも返す。ステージ294IP.3において、タスクはそのイーグレスコマンドFIFO260Eへコマンドを書き、フレームのイーサネット(登録商標)行先アドレスをサーチマシンがもたらすアドレスで置換えさせ、イーサネット(登録商標)発信元アドレスをそれぞれ対応のMAC130.xのアドレスで置換えさせ、フレームをMACへ転送させる。また、タスクソフトウェアに応じて他の種類の処理が行なわれてもよい。
マイクロコントローラがステージ290DA.2、290IP.2、290ISA.2、294IP.2においてサーチマシンを待っている間、マイクロコントローラは同じまたは別のハードウェアタスクにおける別のソフトウェアタスクを実行するのに利用可能である。
いくつかの実施例では、各イングレスフローおよび各イーグレスフローに対して1つのタスクを有しているだけではマイクロコントローラを完全に稼動させることにならず、そのため、各半二重データフローに対して2つ以上のタスクが提供され、マイクロコントローラが各データフローにおいて2つ以上のフレームを並列に処理できるようにする。このことは以下を考慮することによって説明される。イーサネット(登録商標)フレームが短いときにマイクロコントローラの速度が最も要求される。なぜなら、図3、図4に示される同じ処理を短いフレームと長いフレームとの双方に対して行なわなければならないからである。最も短いイーサネット(登録商標)フレームは64バイトを有する。たとえば、4つのイーサネット(登録商標)ポートが100MB/秒ポートであり、ATMポートが155MB/秒であるとする。100MB/秒では、最も短いフレームはイーサネット(登録商標)ポートを5.12マイクロ秒で通過する。このため、マイクロコントローラおよびサーチマシンはフレームを5.12+1.6=6.72マイクロ秒で処理しなければならない(1.6マイクロ秒はフレーム間ギャップである)。
50MHzのマイクロコントローラクロック速度を仮定しよう。これは信頼性のある動作を確実にするためのかなり遅いクロック速度である。他の実施例ではより速い速度(たとえば100MHz)が用いられる。50MHzにおいて、6.72マイクロ秒は336クロックサイクルである。このため、1つのハードウェアタスクのイングレスおよびイーグレスタスクのためのクロックサイクル割当は336/4=84クロックサイクルである。
フレームの処理はマイクロコントローラとサーチマシンとで分けられているが、これらは必ずしも同じフレームに対して並列に作業する訳ではないため、同じハードウェアタスク内の1つのイングレスフレームと1つのイーグレスフレームとに対する処理レイテンシは結線速度での処理においてさえ、84サイクルより長くてよい。処理するのに84サイクルよりも長くかかり、64バイトのフレームがイングレス側およびイーグレス側において連続して到着する場合、同じデータフローにおける前のフレームが処理される前に次のフレームが到着し始めることがあり得る。このため、マイクロコントローラが、同じデータフローにおける前のフレームの処理が完了する前に次のフレームを処理し始めることができるようにすることが望ましい。同じデータフローにおける複数のフレームのこのような並列処理を実現するために、各データフローに対して2つ以上のソフトウェアタスクが提供される。
このように、いくつかの実施例では、各ハードウェアタスクHTxは2つのイングレスタスクIGx.0、IGx.1および2つのイーグレスタスクEGx.0、EGx.1を含む。たとえば、ハードウェアタスクHT1はイングレスタスクIG1.0、IG1.1およびイーグレスタスクEG1.0、EG1.1を含む。各タスクは以下のものを含む4ビットのタスク番号により識別される。
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である。
1つのフレームは1つのタスクにより処理される。フレームがアプレットである場合、そのアプレットは同じタスクにより実行される。
マイクロコントローラ命令実行はパイプライン化される。このため、上記の表1では、それぞれ対応のハードウェアタスクに対して新しい命令が開始されるクロックサイクルが示される。たとえば、サイクル1では、ハードウェアタスクHT0に対して命令実行が開始される。命令実行は後続のサイクルにおいても続く。
各サブチャネルにおけるFIFO230、240、260へのタスクのアクセスは図5の論理図に示される態様で制御される。図5では、「タスク0」および「タスク1」は同じサブチャネルに対する2つのタスクであり、たとえばチャネル150.1のサブチャネル150Iに対するイングレスタスクIG1.0、IG1.1である。始めはタスク0のみがサブチャネルFIFO230、240、260へのアクセスを有する。タスク0がリクエストFIFO230にアクセスすると、スイッチ「a」が切替えられ、リクエストFIFOをタスク1に接続する。タスク0はタスク1がリクエストFIFOを読むまでリクエストFIFOを読むことが許されない。
スイッチ「b」はコマンドFIFO260へのタスクのアクセスを制御する。スイッチ「b」は、タスク0によってあるフレームに対するすべてのコマンドが書かれた際に切替えられる。
ステータスFIFO240へのタスクのアクセスを制御するスイッチ「c」はステータスFIFOがタスク0により読まれた際に切替えられる。
サーチマシンへのタスクのアクセスを同期化するため、サーチマシン190は次々にコマンドを実行し、結果を同じ順序でもたらす。
各命令において、実行のためのタスクを選択するのには1クロックサイクルしか要さない(以下に説明する図7におけるパイプラインステージTS)。さらに、タスクの選択はパイプライン化されており、そのためスループットに影響を及ぼさない。タスクの選択はハードウェアにより行なわれる。マイクロコントローラにおいてオペレーティングシステムは用いられない。このため、低いレイテンシが達成される。
どの時点においても、各タスクは3つの状態、すなわち、アクティブ、レディまたはサスペンド、のうちの1つにある。アクティブ状態では、タスクは実行されている状態である。最も多くて4つのタスク(各ハードウェアタスクにつき1つ)が同時にアクティブで
あり得る。各アクティブタスクは4クロックサイクルごとに実行がスケジュールされる(上の表1を参照のこと)。
アクティブタスクは、タスクが利用可能でないリソースにアクセスを試みるとサスペンド状態に移行する。リソースは追補2に記載される。リソースが利用可能となるとタスクはレディ状態に入る。
アクティブタスクがサスペンドされると、同じチャネルにおけるレディ状態にあるタスクのうちの1つがタスク制御320(図6)により実行のため選択され、アクティブ状態に移行する。
図6はマイクロコントローラ160のブロック図である。実行ユニット310はプログラムメモリ314にストアされるプログラムを実行する。プログラムはブートの間に、ROM204(図1)からダウンロードされる。さらに、上述のようにアプレットをロードして動的に実行することもできる。アプレットは実行された後に破棄されてもよく、またはアプレットはメモリ314に残されてもよい。
実行ユニット310は、汎用レジスタを有するレジスタファイル312、特殊レジスタブロック315およびデータメモリ316を含む。レジスタファイル312は、それぞれ対応のバスsa_bus 、sb_bus に接続される2つの32ビット出力を含み、バスsa_bus 、sb_bus はALU318の入力に接続される。データメモリ316および特殊レジスタブロック315の32ビット出力はsa_bus に接続される。バスsa_bus に別個に接続されているのは特殊レジスタ「ヌル」および「ワン」の出力であり(追補6、表A6−1)、特殊レジスタは定数値をストアする(これらのレジスタは図6において「定数レジスタ」と記される)。
バスsa_bus はまた、プログラムメモリ314から読まれる命令の即値フィールド「imm」を受取る。
ALU318の64ビット出力は64ビットバスres _bus に接続され、64ビットバスres _bus はレジスタファイル312、データメモリ316および特殊レジスタブロック315の入力に接続される。
レジスタファイル312、データメモリ316および特殊レジスタ315は追補6に記載される。そこに記載されるように、レジスタおよびデータメモリはタスク間で分けられているため、タスクが再スケジュールされる際にセーブ/リストア動作は必要ではない。特に、特殊レジスタ315は各タスクにつき1つずつの16個のPC(プログラムカウンタ)レジスタを含む。
ロード/ストアユニット(LSU)330は実行ユニット310、サーチマシン190および内部メモリ170の間でインターフェイスをもたらす。LSU330は、メモリからレジスタをロードするか、またはレジスタ内容をメモリにストアするためのロードおよびストアリクエストの待ち行列を維持する。LSU330の入力はres _bus に接続され、またLSU330の64ビットの出力rfiはレジスタファイル312の入力に接続される。
DMAブロック340の入力はバスres _bus に接続され、実行ユニット310がDMA340をプログラムできるようにする。DMA340はアプレットをプログラムメモリにロードすることができる。
図7には命令実行パイプラインが示される。パイプラインには7つのステージがある。
(1) タスクセレクト(TS)ステージt0。このステージでは、アクティブタスクがタスク制御320によってそれぞれ対応のチャネル150.xに対して選択される。いくつかの実施例では、タスク制御ブロックは固定優先順位機構を実現しており、タスクIGx.0が最高優先順位を有し、次にIGx.1、その次にEGx.0、そしてその次にEGx.1となる。
いくつかの実施例では、タスクは一度アクティブにされると、より高い優先順位のタスクがランする用意ができたというだけではサスペンドされない。その優先順位のより低いタスクは利用可能でないリソースにアクセスを試みるまでアクティブのままである。
(2) フェッチ(F)ステージt1において、タスク制御ブロック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へ読出される。
(3) デコード(D)ステージt2において、命令は実行ユニットによりデコードされる。
(4) 読出(R)ステージt3において、レジスタファイル312および/または特殊レジスタ315および/またはデータメモリ316から命令オペランドが読まれ、ALU318に提示される。
また、このステージにおいて、以下に図8から図15に関連してより詳しく説明するように、タスク制御320は配線410(図6)上にサスペンド信号(表A1−1におけるtsk _susp)を発生する。サスペンド信号がアサートされると、タスクはサスペンドされ、命令実行はアボートされ、タスクのPCレジスタは凍結される。後にタスクがアクティブにされると、同じ命令が再実行されることになる。
また、このステージにおいて、実行ユニット310はウェイト信号を発生する。ウェイト信号がアサートされると、命令実行は完了させられずPCレジスタは凍結するが、タスクはアクティブのままであり、次のクロックサイクルから命令は再び実行される。たとえば、図7の命令1が、サイクル3においてアサートされるウェイト信号によって遅延された場合、同じ命令はサイクル4において開始される命令番号5として再実行されることになる。
ウェイト信号は、命令を妨害している条件が、同じハードウェアタスクが再スケジュールされるころまでにはなくなりそうである場合にアサートされる。ウェイト条件は追補3に記載される。
サスペンド信号およびウェイト信号がデアサートされると、PCレジスタは次の命令を指すように変えられる。
(5) 実行(E)ステージt4において、命令は実行される。
(6) ライトバック(WB)ステージt5において、実行ステージの結果は行先がレジスタファイル312内にある場合を除いて、その行先に書かれる。
(7) レジスタ書込(WR)ステージにおいて、実行ステージの結果は必要であればレジスタファイル312に書込まれる。
注目すべきなのは、各命令のWRステージ(たとえばサイクル6の命令1)が同じハードウェアタスクの次の命令のRステージの前に起こることである(サイクル7の命令5を参照のこと)。そのため、たとえば命令5が命令1の結果を用いるとすると、その結果は命令5がそれをサイクル7において読む前にレジスタファイルまたは特殊レジスタに書かれることになる。
図7に示したように、(Rステージにおいて)命令がアボートされると、パイプラインはすでに開始された他の命令から除去されなくてもよい。なぜなら、これらの命令は他のタスク(さらには他のハードウェアタスク)に属するからである。たとえば、命令1をアボートしなければならない場合、命令1のRステージにおいて、またはその前に開始された他の命令とは命令2、3および4だけである。これらの命令は他のタスクによって実行されるため、除去されなくてもよい。
所与のハードウェアタスクに関して、対応する4つのソフトウェアタスクの間で切替えをするのに、タスク切替えがオペレーティングシステムソフトウェアにより行なわれる場合とは異なり、別個の命令を実行することは必要ではない。このため、高いスループットが達成される。
図8には、1つのリクエストFIFO230またはステータスFIFO240に関するタスク同期化のバブル図が示される。下方のダイアグラム704では、「タスク0」および「タスク1」は図5と同じ意味を有する。より特定的には、これらはリクエストまたはステータスFIFOを共用する2つのソフトウェアタスクである。いくつかの実施例では、タスク0はイングレスサブチャネルに対するIGi.0またはイーグレスサブチャネルに対するEGi.0である。
ダイアグラム704はFIFOの所有権を示す状態機械である。RESETにおいて、FIFOは状態710RS.0によって示されるようにタスク0により所有される。
タスク0がFIFOを読むのに成功すると、FIFOは状態710RS.1により示されるように、タスク1により所有されることになる。FIFOを読むことは図5の「a」または「c」スイッチを切替えることに等しい。タスク1がFIFOを読むのに成功すると、状態機械は状態710RS.0に戻る。
FIFO読出動作は条件mfsel[x] & ffrd により示される。信号mfsel は追補4に記載される。信号ffrdは、マイクロコントローラによりいずれかのリクエストまたはステータスFIFOが読まれると、ステージt3において実行ユニットによりアサートされる。別個のffrdバージョンが各リクエストおよびステータスFIFOに対して生成される(FIFO読出が成功すると、追補4の信号mfrdがステージt5においてアサートされる)。
リクエストおよびステータスFIFOは16個ある。これらFIFOの各々は0から15までの一意の数「x」により識別される。FIFO「x」が読まれている際、図8のmfsel[x]により示されるように、その数「x」はラインmfsel 上に駆動される。
ダイアグラム720および740はタスク0およびタスク1がFIFOに関連してどのように状態を変化させるかを示している。上に示したように、各タスクには3つの状態、すなわちレディ(「RDY」)、アクティブおよびサスペンドがある。RESETにおいて、すべてのタスクはレディとなる。タスクはパイプラインステージt0において選択されるとアクティブとなる。
ここで説明する実施例では、タスクは直接アクティブ状態からレディ状態へ移行することができないが、これは他の実施例では可能である。
ここで説明する実施例では、各タスクは「サスペンド」条件730が生ずるとアクティブ状態からサスペンド状態へ移行する。サスペンドされたタスクはリリース条件734が生ずるとレディとなる。可能なサスペンド条件を追補1の表A1−2に列挙する。リリース条件は表A1−3に列挙する。
ダイアグラム720では、サスペンド条件730は、タスク0がFIFOが利用可能でないときにFIFOにアクセスを試みる際に生じる。より特定的には、条件730とは以下のとおりである。
(1) タスクがパイプラインステージt3にあること(実行ユニット310により生成される信号「T3」により示される)。
(2) ffrdがアサートされ、FIFO読出動作を示していること。
(3) mfsel がFIFO「x」を識別していること。また、
(4) FIFOがタスク1により所有されている(状態機械704が状態710RS.1にある)か、または信号cfifordy[x] がローであり、FIFO「x」が空であることを示していること。(信号cfifordyは追補4に記載される。この信号は4つ目のサイクルごとにサンプリングされ、サンプリングされる際には有効である。)
FIFOがタスク0によって読まれておりそれ以外のどのタスクによっても読まれているのではないことは、タスク0がパイプラインステージt3にあることにより確証される。
タスク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] )である。
信号exe _RfifoRd はffrdと同じである。Ireqf はFIFOがイングレスタスク1により所有されていることを示す。表A1−2のすべての信号はステージt3においてサンプリングされるため、「t3」は表中の条件のいくつかでは省いてある。イーグレスタスク
0に関して、信号Ereqf はそれぞれ対応のリクエストFIFOがイーグレスタスク1により所有されていることを示す。すなわち、Ereqf がIreqf と入れ代わっている。タスク制御320は各リクエストFIFOに対して別個の信号Ireqf またはEreqf を発生する。
追補1において、信号の否定は(〜cfifordyのように)信号名称の前の「〜」により示されるか、または(イーグレスタスク1に対する条件1のEreqf _のように)信号名称の後に続く下線によって示される。
ステータスFIFOに関して、サスペンド条件730は表A1−2において2と番号のつけられた条件である。信号exe _SfifoRd はステータスFIFOに対するffrdバージョンである。ステータスFIFOを識別する番号は「x」ではなく「y」で示される。
ダイアグラム720におけるリリース条件734は、タスク0がFIFOを所有している(状態機械704が状態710RS.0にある)ことと、cfifordy[x] がハイでありFIFOが空ではないことを示していることである。タスク1に対するリリース条件734(ダイアグラム740)は同様である。
リリース条件は追補1の表A1−3に示されている。各リリース条件は表A1−2の同じスロット内のサスペンド条件に対応する。たとえば、表A1−3における「イングレスタスク0」セクションのリリース条件1は、タスクが表A1−2における「イングレスタスク0」セクションのサスペンド条件1によりサスペンドされた場合にそのタスクをレディ状態にリリースする。このように、表A1−3におけるリリース条件1および2は、リクエストおよびステータスFIFOに対するダイアグラム720および740でのリリース条件734に対応する。
図9には、サブチャネルコマンドFIFO260(すなわち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」に対してアサートされる。
ロックされていないことは「アンロック」信号により示され、「アンロック」信号は、コマンドFIFOを書くのに用いられるマイクロコントローラ命令「CMD」(追補7)のLフラグから実行ユニット310によって生成される。
イングレスタスク1が、コマンドFIFOをロックすることなく(「x」がイングレスタスク1を示しているIcmdFifoWr[x] により示されるように)そのコマンドFIFOに書くと、状態機械は状態S0に戻る。
イングレスタスク0が状態S0にあるFIFOに書き、「ロック」信号がアサートされてそのFIFOをロックすべきであることを示すと、状態機械は状態S2に移行する。この状態においては、FIFOは依然としてイングレスタスク0により所有されている。ロ
ック信号は、マイクロコントローラ命令CMD(追補7)におけるLフラグから実行ユニット310により生成される。FIFOは、イングレスタスク0が「アンロック」信号がアサートされている状態でFIFOに書くまで状態S2に留まる。書かれた時点でFIFOは状態S1に移行する。
同様に、イングレスタスク1が「ロック」がアサートされている状態で状態S1にあるFIFOに書くと、FIFOは状態S3に移行する。この状態においてFIFOは依然としてイングレスタスク1により所有されている。FIFOは、イングレスタスク1が「アンロック」がアサートされた状態でFIFOに書くまで状態S3に留まる。書かれた時点でFIFOは状態S0に移行する。
状態機械が状態S0またはS1にあり、イーグレスタスクがコマンドFIFOをロックすることなくそのコマンドFIFOに書く場合、状態遷移は起こらない。イーグレスタスク0が状態S0にあるFIFOをロックしてFIFOに書くと、FIFOは状態S4に移行する。この状態において、コマンドFIFOはイーグレスタスク0により所有される。状態機械は、イーグレスタスク0が「アンロック」がアサートされている状態でコマンドFIFOに書くまで状態S4に留まる。書いた時点で、状態機械は状態S0に戻る。
状態S5はS4に類似しているが、イーグレスタスク1がコマンドFIFOに書込をしこれを所有することを表わす。
状態S6およびS7はそれぞれ対応の状態S4およびS5に類似しているが、状態S6およびS7には状態S0ではなくS1から入る。
ダイアグラム820および840には、コマンドFIFOに関するそれぞれ対応のイングレスタスク0および1の状態遷移が示される。サスペンド条件730は表A1−2において番号が3の条件である。信号IcmdFifoWr[x] はイングレスタスク0および1に対する条件3におけるexe _IcmdFifoWr[x] と同じである。表A1−2における信号task# _t3はダイアグラム820および840における「T3」と同じである。信号ccmdfull[x] は、コマンドFIFO「x」が一杯であるという信号である(追補4を参照のこと)。この信号はステージt3において有効である。信号IcmdfOwnedByI0は、コマンドFIFOがイングレスタスク0により所有されていることを示す(すなわち、状態機械804は状態S0またはS2にある)。信号IcmdfOwnedByI1は、コマンドFIFOがイングレスタスク1により所有されていることを示す(ダイアグラム804における状態S1、S3)。
イーグレスタスクに関して、イングレスコマンドFIFOに書込むことにより生じたサスペンド条件は表A1−2の条件8である。信号IcmdfOwnedByE0は、コマンドFIFOがイーグレスタスク0により所有されていることを示す(ダイアグラム804における状態S4、S6)。信号IcmdfOwnedByE1は、コマンドFIFOがイーグレスタスク1により所有されていることを示す(ダイアグラム804における状態S5、S3)。
リリース条件734(図9)は表A1−3におけるイングレスタスクに対する条件3である。
イーグレスコマンドFIFOに関するイーグレスタスク同期化も同様である。イーグレスFIFOについては、状態S4、S5、S6、S7は存在しない。表A1−2およびA1−3において、関係のある条件は番号が3である条件である。信号exe _EcmdFifoWrがexe _IcmdFifoWrと置換わり、イーグレスFIFOへの書込動作を示す。信号Ecmdf1は、FIFOがイーグレスタスク1により所有されていることを示す。
図10には、DMAリソースに関するイーグレスタスク同期化が示される。下部のダイアグラム904には、DMA状態機械が示される。RESETにおいて、DMAはIDLEである。図10において「dmaa_wr」により示されるように、イーグレスタスクがDMAアドレス(プログラムメモリ314におけるDMA転送先アドレス)をDMA340(図6)のDMAアドレスレジスタDMAA(追補6)へ書くと、そのタスクはDMA所有者となり、DMA340がアクティブとなり内部メモリ170からDMA転送を開始する。図10の例において、DMA所有者はイーグレスタスク0である。
図10の「last_word」により示されるように、転送が完了すると、DMAはレディ(「RDY」)となる。
DMAがレディ状態にあり、DMA所有者タスクがDMAアドレスレジスタを読むと(図10において「dmaa_rd」として示される)、DMAは実行状態に移行する。DMA所有者はDMAレディ状態においてしかアドレスレジスタを読むことが許されない。非所有者タスクはどのDMA状態においてもDMAアドレスレジスタを読むことが許される。
DMAが実行状態にあると、DMA所有者タスクはDMAによりロードされるアプレットを実行する。新たなDMAアクセスは許されない。
DMA所有者タスクがリリースコード111をDMAAレジスタ(追補1)のOPフィールドに書込むと、DMAはアイドル状態に戻る。
ダイアグラム920、930には、必ずしも同じハードウェアタスクにあるわけではない2つのイーグレスタスク、すなわちタスク0、タスクN、に対する状態遷移が示される。条件730は表A1−2におけるイーグレスタスクに対する条件7である。表において、exe _dmaaRdは図10のdmaa_rdと同じであり、exe _dmaaWrはdmaa_wrと同じである。図10の「dmaa_rd,wr 」は「dmaa_rdまたはdmaa_wr」という意味である。信号exe _dmaaRd、exe _dmaaWrは実行ユニット310により生成される。
このように、DMA所有者タスクは、このDMA所有者タスクが、DMAがアクティブである間にステージt3においてDMAアドレスレジスタを読もうと試みるか、またはDMAアドレスレジスタに書こうと試みる際にサスペンドされる。所有者タスクはDMAがレディとなるとリリースされる。非所有者タスクはDMAがレディである間にステージt3においてDMAレジスタに書こうと試みる際にサスペンドされる。非所有者タスクはDMAがアイドルとなるとリリースされる。
リリース条件734は表A1−2においてイーグレスタスク0および1に対する条件7において「clast _word」として示される。
図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)である。
リリース条件730はフラグSPxがクリアされる(すなわち0に設定される)ことである。タスク制御ブロック320は以下の2つの条件のうちのいずれか1つでも生じるとすべてのフラグSPxをクリアする。すなわち、
(1) パイプラインステージt3において、命令BITCまたはBITCIの実行がどれか他のタスクYによって成功したこと。この条件は表A1−3におけるリリース条件5の信号exe _bitcSemAccにより示される。
(2) チャネル150がセマフォレジスタに書くこと。これはcstrobe がアサートされており(追補4における表A4−1)、csem[5]が1にあることによって示される。チャネルは、チャネルコマンドによりコマンドされると、セマフォレジスタにアクセスしてマイクロコントローラ160に表示を送る。ここに引用により援用される、上記の米国特許出願第09/055,044号の代理人事件番号M−4855 US「ネットワークでデータを転送するためのネットワークプロセッサシステムおよび方法」を参照されたい。
図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 の記載を参照されたい。
(2) 信号task_ownbit[x] が0であること(「x」はタスク番号)により示されるように、サーチマシンリソースがタスクによって利用可能でないこと。この信号は追補1の表A1−1およびA1−2ではsm_task_ownbitとして示される。名称が「sm_」で始まる信号はサーチマシン190により生成される。サーチマシンリソースおよびサスペンド条件は追補2に記載される。
リリース条件734とはそれぞれ対応のtask_ownbit[x] が1であることである。
図13には、メモリ170におけるフリーリストのスクラッチバッファ1610(図18および追補5)に関するタスク同期化が示される。サスペンド条件730(表A1−2での条件6)は、以下のすべてが真であることである。すなわち、
(1) タスクがパイプラインステージt3にあること。
(2) 実行ユニットにより生成される信号ifreel_rdにより示されるように、タスクが内部フリーリストレジスタIFREEL(追補6)を読んでいること。この信号は表A1−2においてはexu _ifreelRdと表わされる。IFREELレジスタが読まれてフリーバッファ番号が得られる。
(3) 「no_free_buffers 」(「no_free_buf 」)信号が特殊レジスタブロック315によりアサートされ、フリーバッファがないことを示していること。
リリース条件734は、以下の3つの条件のうちのいずれかが真となることである。すなわち、
(1) cstrobe (追補4における表A4−1)がチャネル150によりアサートされ、csem[5]が0であり、チャネル150が、信号csem[4:0]により特定さ
れるスクラッチバッファ1610を内部フリーリストに戻そうとしていることを示していること。
(2) 信号IfreelWr(表A1−3におけるexu _ifreelWr)は実行ユニットによりアサートされ、マイクロコントローラがIFREELレジスタ(追補6)へ書いていることを示していること。このレジスタには、フリーとなったスクラッチバッファの番号が書込まれる。
(3) 信号IfreerWr(exu _ifreerWr)が実行ユニットによりアサートされ、マイクロコントローラがIFREERレジスタへ書いていることを示していること。
図14はタスク制御ブロック320のブロック図である。タスク制御320は、4つの同じラッチのブロック1304.0、1304.1、1304.2、1304.3を含む。ラッチ1304.0はパイプラインステージt0(TS)におけるハードウェアタスクに関する情報をストアする。その情報はラッチ1304.1の入力に与えられる。ラッチ1304.1はパイプラインステージt1におけるハードウェアタスクに関する情報をストアする。同様にラッチ1304.2、1304.3はそれぞれ対応のステージt2、t3におけるハードウェアタスクに関する情報をストアする。ラッチ1304.1の出力はラッチ1304.2のそれぞれ対応の入力に接続される。ラッチ1304.2の出力はラッチ1304.3のそれぞれ対応の入力に接続される。ラッチ1304.3の出力は、パイプラインステージt3におけるソフトウェアタスクがサスペンドされるべきであるかどうかを判定するのに用いられ、また、以下に説明するようにそれぞれ対応のハードウェアタスクに対するソフトウェアタスクの状態を判定するのに用いられる。
すべてのラッチは同じクロック(図示せず)によりクロックされる。
各ブロック1304において、ラッチ1320はそれぞれ対応のハードウェアタスク番号HT#(上のCHIDと同じ)をストアする。ラッチ1322はハードウェアタスクに対するアクティブなソフトウェアタスク番号ST#=<SN,I/E>をストアする。そのハードウェアタスクに対していずれのタスクもアクティブではない場合、ラッチ1322の出力は「ドントケア」である。
このように、ブロック1304.1のラッチ1320、1322の出力は信号task# _t1を形成し(図6)、ブロック1304.2のラッチ1320、1322の出力は信号task# _t2を形成する。ブロック1304.3のラッチ1320、1322の出力はラッチ回路1360の入力に接続され、ラッチ回路1360の出力はラッチ回路1362の入力に接続される。回路1362の出力は信号task# _t5をもたらす(図6)。
ブロック1304.3のラッチ1320の出力はブロック1304.0のラッチ1320の入力に接続される。
各ブロック1304は、4つのソフトウェアタスクIGx.0(図14において「I0」とも示される)、IGx.1(「I1」)、EGx.0(「E0」)およびEGx.1(「E1」)の各々につき1つずつの4つのラッチ回路1330を含み、ここで「x」はそれぞれ対応のラッチ1320にストアされるハードウェアタスク番号である。各ラッチ回路1330は2つのラッチ1330S、1330Cを含み、これらは簡単にするためタスクE1に対してのみ示される。回路1330Sはタスクの状態(すなわちレディ、アクティブまたはサスペンド)をストアする。回路1330Cはタスクをレディ状態に移行させるのに必要であるリリース条件734をストアする。リリース条件は(表A1−3にあるように)1から7まで、または0から6までのインデックスの形でストアされる。各種
のタスク(I0、I1、E0、E1)に対する可能なリリース条件のインデックスは追補1の表A1−3の左の欄に示される。
ラッチ1330Cにある情報は、それぞれ対応のラッチ1330Sにストアされる状態が「サスペンド」である場合にしか意味をもたない。レディおよびアクティブ状態に対しては、ラッチ1330Cにある情報は「ドントケア」である。
各ブロック1304は6つのラッチ1350を含み、6つのラッチ1350は対応するハードウェアタスクに対する6つのそれぞれ対応のリクエスト、ステータスおよびコマンドFIFOの状態をストアする。可能な状態はダイヤグラム704(図8)および804(図9)に示され、上に説明したとおりである。
ブロック1304.3のラッチ回路1330、1350の出力は次の状態および条件発生器1354に接続される。回路1354はタスクとリクエスト、ステータスおよびコマンドFIFOとの次の状態を生成し、また次のリリース条件値を生成する。これらの状態および条件信号はバス1358を介してブロック1304.0の回路1330、1350の入力へ与えられる。
図15には回路1354がより詳しく示される。回路1354において、リソース次ステージ発生器1380はブロック1304.3のラッチ回路1350からリクエスト、ステータスおよびコマンドFIFOの状態を受取る。発生器1380はまた、いずれかのリソース、ステータスおよびコマンドFIFOの状態遷移を引き起こし得る、ダイヤグラム704および804に関連して上に説明した信号のすべてを受取る。発生器1380はダイヤグラム704および804に従ってFIFOの次の状態を計算し、次の状態を同じクロックサイクルt3においてラッチブロック1304.0のラッチ回路1350へ与える。
各ラッチ回路1330の出力はそれぞれ対応の回路1390の入力に接続される。簡単にするため、タスクE1のための回路1390のみが詳しく示される。タスクE1に関して、ラッチ1330Cのリリース条件出力はマルチプレクサ1394のセレクト入力に接続される。マルチプレクサ1394のデータ入力はタスクE1に対する7つの可能なリリース条件734を受取る(表A1−3「イーグレスタスク1」のセクション)。マルチプレクサ1394に入力される各データは、対応するリリース条件が真である場合にはアサートされ条件が偽である場合にはデアサートされる1ビット信号である。
マルチプレクサ1394により選択されるリリース条件信号(すなわち、ブロック1304.3のラッチ1330Cにストアされるリリース条件に対応する信号)はタスク次状態発生器1398に与えられる。発生器1398はまた、タスクの現在の状態をラッチ1330Sから受取り、配線410上のサスペンド信号を以下に説明するサスペンド論理およびリリース条件発生器1401から受取る。タスク次状態発生器1398は、タスクがサスペンドされたままであるかどうか、または代わりにタスクが同じクロックサイクル内にアクティブになれるかどうかを示す信号Aを発生する。信号Aは以下の表2に従って生成される。
Figure 0004263147
アービタ1403は4つの回路1390からA出力を受取り、これらからバス1358上に以下の信号を発生する。すなわち、(1)ブロック1304.0のそれぞれ対応のラッチ1330Sに対する各タスクの次のステージと、(2)配線1404上のアクティブソフトウェアタスク番号ST#とである。ソフトウェアタスク番号はブロック1304.0のラッチ1322へ送られる。
アービタ1403はまた、信号「アイドル」を発生し、これはアサートされるとどのタスクもアクティブではないことを示す(図6も参照のこと)。
タスクI0、I1、E0に対する各回路1390は、マルチプレクサへのリリース条件入力を、それぞれ対応のタスク(イングレスタスク0、イングレスタスク1またはイーグレスタスク0)に対応する表A1−3のセクションから取っていることを除いて、タスクE1のためのタスク次状態発生器1398およびマルチプレクサ1394と同じである信号A発生論理を含む。
サスペンド論理およびリリース条件発生器1401はブロック1304.3のラッチ回路1350の出力を受取り、また、サスペンド条件730(図8から図13および追補1の表A1−2)を計算するのに必要である信号のすべて(たとえばcfifordy、mfsel など)を受取る。ブロック1401は、ブロック1304.3のラッチ1322の出力により識別されるアクティブタスクに対するサスペンド条件を計算する。サスペンド論理1401は配線410上に、タスク次状態発生器1398と他の3つの回路1390内の同様の発生器とへサスペンド信号をもたらす。
さらに、サスペンド論理1401は各マルチプレクサ1394と他の3つのブロック1390内の同様のマルチプレクサ(図示せず)とに対するリリース条件データ入力734を生成する。リリース条件は表A1−3の式に従って生成される。
さらに、サスペンド論理1401はブロック1304.3におけるすべての状態ラッチ1330Sの状態出力を受取る。各タスクについて、(1)状態出力がアクティブ状態を示し、かつ(2)タスクに対するサスペンド条件のうちの1つが真である場合、サスペンド論理1401は、そのタスクをレディにするのに必要なリリース条件のインデックス734_inを発生する。別個のインデックス734_inが表A1−3のそれぞれ対応のセクションに従って各タスクに対して生成される。図15にはタスクE1のためだけのインデックス734_inが示される。
これ以外のすべての場合において(すなわち、タスクに対する状態出力が「アクティブ
」ではないか、または状態出力はアクティブであるがタスクに対するサスペンド条件のいずれも真ではない場合)、タスクに対するリリースインデックス734_inは「ドントケア」である。
タスクE1に対するリリースインデックス734_inはマルチプレクサ1406の1つのデータ入力に与えられる。マルチプレクサの他方のデータ入力はタスクE1のためのブロック1304.3のラッチ1330Cからの条件出力を受取る。セレクト入力はタスクE1に対するブロック1304.3のラッチ1330Sの状態出力から「act」ビットを受取る。状態出力は2ビットを有する。ビット「act」は2ビットのうちの1ビットである。ビット「act」は状態が「アクティブ」であるかどうかを示す。「act」がアクティブ状態を示す場合、マルチプレクサ1406はリリースインデックス734_inを選択する。「act」が非アクティブ状態を示す場合、マルチプレクサ1406は条件ラッチ1330Cの出力を選択する。選択された信号はバス1358に与えられ、バス1358はその信号をブロック1304.0におけるタスクE1に対するラッチ1330Cへ供給する。
同様に、各タスクのための各回路1390は以下のものを選択する同様なマルチプレクサ1406(図示せず)を含む。すなわち、同様なマルチプレクサ1406は(1)それぞれ対応のタスクに対するブロック1304.3のラッチ回路1330からの出力「act」がアクティブ状態を示す場合には、サスペンド論理1401からのそれぞれ対応のタスクに対するリリース条件インデックス734_inを選択し、また、(2)「act」が非アクティブ状態を示す場合には、それぞれ対応のタスクに対するブロック1304.3のラッチ1330の条件出力を選択する。選択された条件インデックスはブロック1304.0におけるそれぞれ対応のラッチ1330の入力に与えられる。
いくつかの実施例では、1つのタスクがサスペンドされると、タスク特有の値を有するレジスタはセーブされない。特に、各タスクは、タスクPCおよびフラグを有するそれ自体のPCレジスタを有する(追補6を参照のこと)。さらに、レジスタファイル312は8つのバンクに分割される。各バンクは、同じチャネルからのイングレスタスクおよびイーグレスタスクの対の専用のものである。タスク対により実行されるソフトウェアは、その対の間に共通のレジスタがないような態様で書かれる。このため、レジスタファイルレジスタはタスク特有の値をストアするのだが、これらのレジスタをセーブしたりリストアしたりする必要はない。
ここで説明する実施例はこの発明を限定するものではない。特に、この発明はポートの数によっても、ポートが全二重または半二重であるということによっても、いかなるタイミング、信号、コマンドまたは命令によっても限定されない。いくつかの実施例では、マイクロコントローラは、図7のパイプラインまたは何らかの別のパイプラインを有する複数の実行ユニットを含む。いくつかの実施例では、1つ以上のマイクロコントローラが、スーパースカラまたはVLIW(very large instruction word )プロセッサに存在するような複数の実行ユニットを含む。いくつかの実施例では、マイクロコントローラは複数の集積回路で実現されるプロセッサにより置換えられる。ここで用いた術語「タスク」にはプロセスおよびスレッドも含まれる。他の実施例および変更例も、添付の特許請求の範囲に記載されるこの発明の範囲内に含まれる。
追補1
タスク制御ブロック
Figure 0004263147
Figure 0004263147
Figure 0004263147
追補2
リソース
全リソースは特殊レジスタまたは専用マイクロコントローラコマンドによってアクセスされる。
サーチマシン
サーチマシンは、マイクロコントローラによって書込まれるコマンドと結果との2個のリソースを有する。
書込専用のコマンドリソースは16個ある(タスクごとに1個)。このリソースが利用可でない唯一の場合は、同じタスクからの先のコマンドが完了されていないときである。
読出専用の結果リソースは16個ある(タスクごとに1個)。あるコマンドがサーチマシンに通知されると、そのコマンドが実行されるまで結果が利用不可となる。いくつかのコマンド(たとえば、インサートまたはデリート)は結果を持たない。
チャネル制御
チャネル制御はコマンドFIFO260、リクエストFIFO230およびステータスFIFO240との3種のリソースを有する。
コマンドリソースは以下の2つの場合利用不可である。
a.リソースが別のタスクに属する。この場合、他のタスクがそのリソースをリリースすると、それはこのタスクに対して利用可となる。
b.コマンドFIFOがフルである。この場合、コマンドFIFOがフルでなくなると、タスクはこのリソースを使用し続けることができる。
コマンドリソースはセッション保護を有する(すなわち、いくつかのコマンドがあるタスクによって書込まれ得るのはリソースが別のタスクに渡される前である)。これは、最初のアクセスの間にリソースをロックし、最後のアクセスの際にそれをアンロックすることによって達成される。コマンドリソースがロックされると、他のどのタスクもこのリソースにアクセスできない。
チャネル150.xのイーグレスタスクEGxは、メッセージをスイッチ120に送るために同じチャネル150.xのイングレスコマンドFIFO260Iにコマンドを書込むことができる。イングレスコマンドFIFOがアンロックされるたびにイーグレスタスクがイングレスコマンドFIFOに書込まれ得る。イーグレスタスクがその最初のコマンドをイングレスコマンドFIFO260Iに書込むと、イーグレスタスクからの最後のコマンドが書込まれるまでコマンドFIFOがロックされた状態となる。
リクエストまたはステータスFIFOリソースは以下の2つの場合利用可でない。
a.リソースが別のタスクに属する。この場合、他のタスクがFIFOを読出すと、リソースはこのタスクに対して利用可となる。
b.FIFOが空である。この場合、FIFOがレディになると、タスクはこのリソースを使用し続けることができる。
DMA
データFIFOからのアプレットをプログラムメモリ314にダウンロードするのはDMAブロックである。このリソースは、転送前にDMAアドレスをセットし、転送完了時に最後のワードアドレスを読出すイーグレスタスクによって用いられる。転送の間に最後のワードアドレスが読出されると、最後のワードが転送されるまでタスクがサスペンドされる。また、最初の転送が完了していないときに別のイーグレスタスクによって新しいDMAアドレスを書込む試みもタスクサスペンドを引き起こす。
内部メモリ170管理
内部メモリにおけるスクラッチパッドエリア内のフリーバッファ1610(図17)を管理するのは内部メモリ管理である。メモリには32個のフリーバッファがある。タスクは、次の利用可能なフリーバッファを得ることを望むとき、フリーリスト(FreeL)リソース(追補6のレジスタIFREEL)にアクセスする。バッファが残されていなけ
れば、このタスクはサスペンドされる。このバッファを用いたチャネルコマンドによってバッファがリリースされるべきだと示されると、バッファはリリースされてフリーリストに戻る。
セマフォ
セマフォレジスタsemrは32ビットを有する。その各々がマイクロコントローラの即値ビット変更(BITCI)およびBITCコマンドを用いて直接的にアクセス可能である。セマフォは保護とタスク間の通信とのために用いられる。
BITCIまたはBITCコマンドが同じ値を現在のビット値としてこのビットに書込もうと試みる場合、それはアボートされ、そのタスクがサスペンドされる。その後、セマフォレジスタが変更される(レジスタにおける何らかのビットが変更される)と、セマフォを待っている全タスクがレディとなり、Bit_change_Immediate(即値ビット変更)コマンドを再び実行しようとする。
セマフォレジスタのビット31−24はPIF110のそれぞれの予め定められた外部ピン(図示せず)を0から1に変更することによってセットされ得る。
追補3
タスクウェイト条件
ウエイト信号をアサートできる条件は2つある。
(1) レジスタスコアボード
マイクロコントローラにおけるレジスタごとに、そのステータスを表示する1スコアボードビットがある。このビットがセットされていれば、レジスタはダーティであり、すなわち、データがLSU330によってロードされるのを待っている。起こり得るシナリオは以下のとおりである。
(a) タスクがLSUによるレジスタのロードをリクエストする。
(b) タスクがソースとしてのこのレジスタの使用をリクエストする。しかしながら、スコアボードはダーティである。したがって、ウエイト信号がアサートされる。
(c) 次に、LSUがレジスタをロードする。
(d) タスクがソースとしてのこのレジスタの使用を再びリクエストする。今回は使用が許可される。
(2) LSU FIFOフル
これはウエイト信号を発生するための別の条件である。ロード・ストアリクエストを待ち行列に格納しているLSU FIFOが一旦レディとなると、この条件はクリアされる。
追補4
以下の表はチャネル/マイクロコントローラインターフェイスにおいて用いられるいくつかの信号をリストにして挙げる。「I」は信号がチャネルのための入力であることを意味する。「O」は信号がチャネル出力であることを意味する。
Figure 0004263147
追補5
メモリ
内部メモリ170のマップ
内部メモリマップを図16に示す。
データエリア1510(アドレス0000−1FFF 16進法)
このエリアはスクラッチパッド1610、データFIFOおよびコマンドFIFOのために用いられる。このエリアは相対アドレスを用いてアクセスされる。データエリアメモリマップを図17に示す。
図17において、「DBASE_I」はイングレス側のための(後述する)CFGRレジスタの「DBASE」フィールドである。同様に、DLEN、CBASE、CLENは対応のCFGRレジスタのフィールドである。サフィックス「_I」はイングレスを表わし、「_E」はイーグレスを表わす。
各チャネルのための制御エリア1520
このエリアにおけるレジスタタイプの1つは以下のとおりである。
CFGR−チャネルコンフィギュレーションレジスタ(イングレスおよびイーグレス)
各チャネルの方向ごとに1個、8個のCFGRレジスタがある。それらのフィールドは以下のとおりである。
DBASE (9ビット) データバッファベースポインタ(64バイト整列)
DLEN (7ビット) データバッファ長(64バイト粒度)
CBASE (9ビット) コマンドバッファベースポインタ(64バイト整列)
CLEN (3ビット) コマンドバッファ長(64バイト粒度)
GAP (4ビット) フレーム制御ワードが無効であるときのデータ読出ポインタとデータ書込ポインタとの間の最小ギャップ(8バイト粒度)。
データエリア1530(アドレス4000−5FFF 16進法)
このエリアは上述の米国特許出願第09/055,044号の出願人書類番号M−4855 USに説明される。
追補6
マイクロコントローラレジスタ
レジスタファイルマップ
レジスタファイル312は8個のバンクへと分割される(図18)。各バンクは同じチャネル150.xからの1対のイングレスタスクとイーグレスタスクとの専用のものである。いくつかの実施例では、イングレス処理の方がより複雑なのでイングレスタスクがイーグレスタスクよりも多くのレジスタを用いる。また、いくつかの実施例では、タスクソフトウェアは、2つのタスク間に共通のレジスタがないようなものである。
各レジスタr0.0−r7.7は1バイトの幅である。連続する8バイトがレジスタファイルから並列に読出され得る。8バイトレジスタワードの7ビットアドレスを形成するために、レジスタ番号(0から63)が、それ自体チャネルID「CHID」とタスク対番号(0または1)とを連結したものであるバンクIDと連結され、アドレスMSBが(特殊レジスタ314に対して)レジスタファイル312を表示するために0となる。
マイクロコントローラレジスタマップ
マイクロコントローラにおける全レジスタがマイクロコントローラコマンドによって直接的にアクセス可能である。レジスタマップはレジスタファイル312および特殊レジスタ315という2領域に分割される。レジスタアドレスは7ビットからなる。特殊レジスタ315ではアドレスMSBが1であり、レジスタファイル312ではMSBが0である。
データメモリ316
データメモリ316(図19)は変数の一時記憶と後述するいくつかのパラメータとのために用いられる。
したがって、データメモリ316は以下の3領域に分割される。
a.タスクごとのタスクレジスタtr0−tr5(タスクごとに6個)。これらのレジスタはそれぞれのタスク専用である。
b.チャネルレジスタcr0−cr3(チャネル150.xごとに4個)。これらのレジスタはハードウェアタスク専用である。同じチャネルの全タスク(2個のイングレスタスクおよび2個のイーグレスタスク)がこれらのレジスタにアクセスする。
c.グローバルレジスタgr(16個のレジスタ)。これらのレジスタは全タスクに対してグローバルである。
データメモリ316は32ビットの128ワードである。
データメモリ316のための7ビットアドレス発生方式を図20に示す。
trはタスクレジスタ番号(0−5)である。
tnはタスク番号(0−15)である(trおよびtnがタスクレジスタアドレスを形成する)。
crはチャネルレジスタ番号である(0−3;「110」、crおよびcnがチャネルレジスタアドレスを形成する)。
cnはチャネル番号(0−3)である。
grはグローバルレジスタ番号(0−15)である。
特殊レジスタ(SR)315(以下の表A6−1参照)は(レジスタファイルと同様に)マイクロコントローラコマンドによって直接的にアクセス可能である。特殊レジスタ315は以下の3タイプに分割できる。
a.タスクに属するレジスタ、たとえば、プログラムカウンタ(PC)、タスク番号(TIN)等。
b.リソースレジスタ、たとえば、リクエストFIFO(reqf)、ステータスFIFO(sttf)、サーチマシンコマンド(scmd)等(追補2参照)。
c.データメモリ316レジスタ、たとえば、タスクレジスタ(tr)、チャネルレジスタ(cr)およびグローバルレジスタ(gr)。
リソースおよびデータメモリ316(タイプbおよびc)はそのアクセスを簡単にするために特殊レジスタにマッピングされる。
適切な特殊レジスタを以下の表に手短に述べる。
Figure 0004263147
いくつかの特殊レジスタのレジスタフィールは以下のとおりである。
PC−プログラムカウンタおよびフラグ
PC (10ビット) プログラムカウンタ
G (1ビット) フラグ−より大きい
L (1ビット) フラグ−より小さい
E (1ビット) フラグ−等しい
C (1ビット) フラグ−桁上げ
G、L、EおよびCは読出専用である。
TN−タスク番号
CHID (2ビット) チャネルId
SN (1ビット) シーケンス番号
I/E (1ビット) イングレス(0)/イーグレス(1)。
SCMD、SCMDE−コマンドおよびコマンド拡張
書込動作の間、これらの32ビットレジスタはサーチマシンのためのコマンドを形成する。読出動作の間、これらのレジスタは結果を与える。SCMDEはSCMDの前に書込まれるべきである。
XFREEL−外部フリーリスト
このレジスタへの書込によって、1ブロックが外部メモリ200におけるフリーリストスタックに付加される。このレジスタからの読出によって、1ブロックがスタックから取除かれ得る。
1チャネルごとに1個のフリーリストスタックがある。各レジスタはスタックの先頭を指す16ビットポインタを含む。
TIMER−汎用タイマ
Timer (32ビット) タイマ値。タイマはシステムクロックが8計時するごとに進む自走カウンタである。
NXTE (16ビット) エイジングがあるか調べるための次エントリを指すポインタ。このフィールドは書込専用である。リセット後に初期化されるべきである。
ET (1ビット) タイマ更新イネーブル。このフィールドは書込動作の間に用いられる。ET=1であれば、タイマは書込まれた値をとる。ET=0であれば、タイマカウンタは書込によって影響を与えられない。
EN (1ビット) 次エントリ更新イネーブル。このフィールドは書込動作の間に用いられる。EN=1であれば、次ポインタが新しい値を得る。EN=0であれば、NXTEフィールドが無効である。
SMCNTL−サーチマシン制御レジスタ
Pointer (16ビット) ノードエリア開始ポインタ。このポインタはサーチノードエリアを定義する(このエリアの後部が0xFFFFである)。自動エイジング機構はこのエリア内でのみ実行される。
AGE (1ビット) エイジングイネーブル(0−ディセーブル;1−イネーブル)。
FLCNT−フリーリストカウンタ
この読出専用レジスタはメモリ170のスクラッチパッドエリアにおけるフリーリスト内のエントリ数を含む。
Count (17ビット)カウンタ(最大値は0x10000である)。
AGEL0、AGEL1−エイジリスト0、1の先頭
これらは読出専用レジスタである(チャネルごとに2個)。各々がエイジリストの先頭を含む(チャネルごとに2個のエイジリストがある)。これらのレジスタのどの1つからの読出もレジスタをクリアさせる。ここで、ノード(追補8)におけるTSTMP(タイ
ムスタンプ)がこのリストにおけるノードを互いにリンクするために用いられる。レジスタが0なら、リストは空である。
Pointer (16ビット) リストポインタの先頭。
しきい値0、しきい値1−しきい値レジスタ
これらのレジスタの各々は対応のエイジリストと関連したしきい値を含む。
|current _time-timestamp|>しきい値であり、かつエントリがLRND(学習されたエントリ)のタイプであると、エントリはエイジリストに付加される。
threshold (16ビット)しきい値。
MSGR−メッセージレジスタはマイクロコントローラとスイッチ120CPU(図示せず)との間でメッセージを転送するために用いられる。メッセージはヘッダラインによって転送される。
MSGA (16ビット) MSGRに書込むときはCPUへの、レジスタを読出すときはCPUからのメッセージ。このフィールドは読出の後にクリアされる。
MSGB (16ビット) レジスタを(テストのために)読出すときのCPUへのメッセージ。
DMAA−DMAアドレス
OP (3ビット) 動作
000−nop
001−EPROM204からのロード
010−スイッチ120からのロード
111−リリース
EPA (13ビット) EPROM開始アドレス
LER (1ビット) ロードエラー
PMA (10ビット) プログラムメモリアドレス。
SEMR−セマフォレジスタ
S[i] (1ビット) セマフォビット「i」。
IFREER−内部フリーレジスタ(16ビット)
F[i] (1ビット) メモリ170のスクラッチパッドエリアにおけるブロック「i」がフリーであるかどうかを示す。
IFREEL−内部フリーリスト
BLKN (5ビット) フリーブロック番号(すなわち、スクラッチバッファ番号:図17参照)。このレジスタの読出によってスクラッチバッファBLKNがフリーリストから取除かれる。このレジスタへの書込によって、書込まれるBLKN値によって特定されるバッファがフリーリストに戻される。
MIR−MII制御レジスタ
このレジスタはMII制御インターフェイスによってイーサネット(登録商標)PHY装置と通信するために用いられる。
BSY (1ビット) ビジー。新しいコマンドでセットされ、コマンド完了時にリセットされる。
CMD (4ビット) コマンド
1000−スキャンオン
0000−スキャンオフ
0100−制御情報を送る
0010−ステータス読出
NV (1ビット) 有効でない。PHYからのデータが有効でないときにセットされる。
FIAD (5ビット) PHYアドレス
RGAD (5ビット) レジスタアドレス
Data (16ビット) データ。
追補7
マイクロコントローラ命令
3オペランド命令
これらの命令はオペランド_A とオペランド_B との間で算術論理演算を行なう。結果はオペランド_C に書込まれる。命令は以下のとおりである。
ADD−加算
SUB−減算
OR−論理OR
AND−論理AND
XOR−論理XOR
SHL−左シフト
SHR−右シフト
BITC−ビット変更
命令サイズフィールドがオペランドサイズを特定する。
命令における2ビット「dt」フィールド(行先タイプ)が以下のようにオペランド_C のタイプを特定する。
dt=00−オペランド_C はレジスタファイル312または特殊レジスタ315におけるレジスタである。
dt=10−オペランド_C はメモリ170内にある。オペランド_C フィールドはアドレス発生のためにロード/ストアユニットにおいて7ビット即値として用いられる。
dt=x1−オペランド_C は外部メモリ200内にある。オペランド_C フィールドはdt[1]ビットとともにアドレス発生のためにロード/ストアユニットにおいて8ビット即値として用いられる。
ここで、非ゼロdtを有する命令はそのオペランドとしてリソースを用いることができない。
即値バイトでの2オペランド命令
これらの命令はオペランド_A と即値バイトとの間で算術論理演算を行なう。結果はオペランド_C に書込まれる。命令は以下のとおりである。
ADI−即値加算
SBI−即値減算
ORI−即値論理OR
ANDI−即値論理AND
XORI−即値論理XOR
SHLI−即値左シフト
SHRI−即値右シフト
BITCI−即値ビット変更
サイズフィールドがオペランドのサイズを特定する。
命令の2ビット「dt」フィールド(行先タイプ)が3オペランド命令におけるようにオペランド_C フィールドのタイプを特定する。
2オペランド命令
これらの命令は2つのオペランドの間で移動演算および比較演算を行なう。命令は以下のとおりである。
MOVE−オペランドAをオペランドCに移動させる
CMP−オペランドCとオペランドAとを比較する
命令のサイズフィールドがオペランドのサイズを特定する。
即値での1オペランド命令
これらの命令はオペランドと即値フィールドとの間で移動演算および比較演算を行なう。命令は以下のとおりである。
MVIW−即値ワードを移動させる
MVIB−即値バイトを移動させる
CPIB−即値バイトを比較する
CPIW−即値ワードを比較する
命令のサイズフィールドがオペランド_C のサイズを特定する。
即値フィールドでの特殊1オペランド命令
これらの命令は以下のようにオペランドCに対して演算を行なう。
SMWR−サーチマシン書込
CMD−チャネルコマンド書込
CASE−ケースステートメント
BTJ−ビットテストおよびジャンプ。
ロードおよびストア命令
これらの命令はオペランドAとメモリ170または200との間でロードおよびストア演算を行なう。命令は以下のとおりである。
LOAD
STORE
「dt」フィールド(行先タイプ)が以下のように行先のタイプを特定する。
dt=10−行先がメモリ170である。即値フィールドはアドレス発生のためのロード/ストアユニットにおいて7ビット即値として用いられる。
dt=x1−行先がメモリ200である。即値フィールドはdt「1」ビットとともにアドレス発生のためのロード/ストアユニットにおいて8ビット即値として用いられる。
特殊即値命令
この命令はCMDI(即値コマンド)である。これはコマンドFIFOに書込むために用いられる。
選択された命令
ADD、SUB、ADI、SBI
フラグ:
Eは結果が0に等しいときにセットされる
Cは(ADD、ADIのための)キャリーまたは(SUB、SBIのための)ボローが(オペランドopCのサイズに基づいて)発生されたときにセットされる。
OR、AND、XOR、SHL、SHR、ORI、ANDI、XORI、SHLI、SHRI
フラグ:
Eは結果が0に等しいときにセットされる。
BITC−ビット変更
オペランド:ビット[31:25]=opC、[24:18]=opA、[17:16]=dt、[14:8]=opB、[7]=v
演算:opC<-opA[opB]<-v(すなわち、opCにおけるビット番号opBがvにセットされること以外では、opCがopAの値を受取る)
フラグ:Eは(opA[opB]==v)であるときにセットされる。
BITCI−即値ビット変更
オペランド:ビット[31:25]=opC、[24:18]=opA、[17:16]=dt、[12:8]=imm、[7]=v
演算:opC<-opA[imm]<-v
フラグ:Eは(opA[imm]==v)であるときにセットされる。
CMP−比較
オペランド;ビット[31:25]=opC、[24:18]=opA、[7:5]=オペランドサイズ
演算:opC?opA
フラグ:
Eは(opC==opA)であるときにセットされる
Gは(opC>opA)であるときにセットされる
Lは(opC<opA)であるときにセットされる。
CPIW−即値ワード比較
オペランド:ビット[31:25]=opC、[23:8]=imm
演算:opC?imm
フラグ:
Eは(opC==imm)であるときにセットされる
Gは(opC>imm)であるときにセットされる
Lは(opC<imm)であるときにセットされる。
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)であるときにセットされる。
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)である。
fビットがセットされると、ロード命令の実行は同じチャネルからの先のストア演算が完了していなければ遅延される。
aopはimpまたはxmpと連結されるアドレスビットである(「{}」は連結を示す)。
STORE−内部メモリまたは外部メモリへのストア
オペランド:ビット[31:25] = aop, [24:18] = opA, [17: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命令と同じ意味を有する。
SMWR−サーチマシンコマンド書込
オペランド:ビット[31:25] = opC, [23:8] = imm
演算:scmd<-{opC[63:16], imm }。
CMDI−チャネルへの即値コマンド
オペランド:ビット[31:8] = imm, [7] = L, [6] = P
演算:
Command _port <- {40'b0, imm}
ここで40′b0は40個の2進零を示す。
ifP=0, Command _port = cmd_i ; (イングレスコマンド)
ifP=1, Command _port = cmd_e ; (イーグレスコマンド)
命令Lフラグ(1ビット)はロック/アンロック制御である(セットされると、命令のロック状態が変更される)。
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フラグがロック/アンロック制御である(セットされると、ロック状態が変更される)。
CASE
オペランド:ビット[31:25] = opC, [23:16] = bit_mask, [12:8] =シフト
演算:PC<-PC+ ((opC&bit _mask)>>シフト)+1。
BTJ−ビットテストおよびジャンプ
オペランド:ビット[31:25] = opC, [24:13] = addr, [12:8] = ビット, [7] = v
演算:if(opC[bit]==v )then PC<-addr 。
追補8
サーチマシン
サーチマシンは周知のパトリシアツリー構造を用いる(1996年8月13日にG. C. Stone に発行され、引用によりここに援用される米国特許第5,546,390号「基数判定パケット処理のための方法および装置」(“Method and Apparatus for Radix Decision Packet Processing ”)を参照されたい。
図21はツリーノード2400を示す。各ノードは64ビットの4ワードの長さである。ノードフォーマットは以下のとおりである。
Figure 0004263147
Figure 0004263147
Figure 0004263147
Figure 0004263147
Figure 0004263147
Figure 0004263147
Figure 0004263147
Figure 0004263147
Figure 0004263147
この発明によるプロセッサを含むシステムのブロック図である。 図1のシステムにおけるリソースを示すブロック図である。 図1のシステムにおけるデータフレーム処理を示すタイミング図である。 図1のシステムにおけるデータフレーム処理を示すタイミング図である。 図1のシステムにおいて異なるタスクがどのように共用されるリソースにアクセスするのかを示す論理図である。 図1のシステムにおいて用いられるプロセッサのブロック図である。 図6のプロセッサの命令実行パイプラインを示す図である。 図1のシステムにおけるタスクおよびリソース状態遷移を示す図である。 図1のシステムにおけるタスクおよびリソース状態遷移を示す図である。 図1のシステムにおけるタスクおよびリソース状態遷移を示す図である。 図1のシステムにおけるタスクおよびリソース状態遷移を示す図である。 図1のシステムにおけるタスクおよびリソース状態遷移を示す図である。 図1のシステムにおけるタスクおよびリソース状態遷移を示す図である。 図6のプロセッサのタスク制御ブロック回路のブロック図である。 図6のプロセッサのタスク制御ブロック回路のブロック図である。 図1のシステムのためのメモリマップの図である。 図1のシステムのためのデータエリアメモリマップの図である。 図1のプロセッサのためのレジスタファイルマップの図である。 図1のプロセッサのためのデータメモリマップの図である。 図19のデータメモリのためのアドレス発生を示す図である。 図1のシステムにより用いられるアドレス導出データベースにおけるツリーノードを示す図である。
符号の説明
110 ポートインターフェイス(PIF)回路、120 ATMスイッチ、130 MAC、140 スライサ、150 チャネル、160 マイクロコントローラ、170
内部メモリ、190 サーチマシン(SM)、200 外部メモリ、210 入力制御ブロック、220 データFIFO、230 リクエストFIFO、240 ステータスFIFO、250 出力制御、260 コマンドFIFO、310 マイクロコントローラ命令実行ユニット、312 レジスタファイル、314 マイクロコントローラプログラムメモリ、315 特殊レジスタブロック、316 データメモリ、318 ALU、320 タスク制御ブロック、330 ロード/ストアユニット(LSU)、340 DMAブロック、410 配線、704、720、740、804、820、840、920、930 ダイヤグラム、730 サスペンド条件、734 リリース条件、1304、1320、1322、1330、1350、1360、1362 ラッチ、1354 次の状態および条件発生器、1358 バス、1380 リソース次ステージ発生器、1390 回路、1394、1406 マルチプレクサ、1398 タスク次状態発生器、1401 サスペンド論理およびリリース条件発生器、1403 アービタ、1404 配線、1610 スクラッチバッファ。

Claims (40)

  1. 長さの等しい連続したタイムスロットにおいてネットワークデータを処理する複数の所定のグループ{G1}のタスクを実行するためのコンピュータプロセッサを含む装置であって、各タスクグループG1は複数のタスクを含み、前記コンピュータプロセッサは
    各タイムスロットをタスクグループG1と関連づけ、かつ各タイムスロットに対し、関連づけられたタスクグループG1からのタスクのうちの1つを選択するタスク選択回路を含み、どの2個の連続したタイムスロットもそれぞれの異なるタスクグループG1と関連づけられており、前記コンピュータプロセッサはさらに
    各タイムスロットにおいて、前記タイムスロットに対して選択された前記タスクに対する最大1個の命令の実行を開始する命令実行ユニットを含む、装置。
  2. 前記タスク選択回路は
    グループG1における各タスクに対し、前記タスクが実行のために利用可能であるかどうかを判定するタスク情報に基づいて単一のタスクグループG1の前記タスクからあるタスクを選択するための選択回路と、
    各々が1個のタスクグループG1に対する前記タスク情報を保持する複数のラッチ回路とを含み、各タイムスロットにおいて、各ラッチ回路の内容は次のラッチ回路に転送され、最後のラッチ回路の内容が前記選択回路に与えられる、請求項1に記載の装置。
  3. 各々がどの所与の時点においてもあるタスクに対して利用可能であるかもしれずまたは利用可能でないかもしれない複数のリソースをさらに含み、各リソースはただ1個のタスクグループG1のタスクによって共用される、請求項1に記載の装置。
  4. 前記装置は、1個以上のネットワークセグメントからデータのフレームを受信し、および/または1個以上のネットワークセグメントへデータのフレームを送信し、データの各フレームは前記タスクの単一のものによって処理されるものである、請求項1に記載の装置。
  5. 前記命令実行ユニットは、各タスクに対し、タスク特有の値をストアする1個以上のレ
    ジスタを含み、タスクが実行のためにスケジュールされているときは前記1個以上のレジスタのいずれのものもセーブもリストアもされる必要がないようにする、請求項1に記載の装置。
  6. 複数のネットワークポート上でネットワークデータを受信し、および/または前記ネットワークポート上でネットワークデータを送信するための複数の第1の回路をさらに含み、異なる第1の回路はそれぞれの異なるネットワークポート上でデータを受信および/または送信し、各タスクグループG1は前記第1の回路のうちの1つと関連づけられ、各タスクグループG1は関連づけられた第1の回路によって受信および/または送信されたネットワークデータを処理する、請求項1に記載の装置。
  7. 各第1の回路はただ1個のポート上でネットワークデータを受信および/または送信する、請求項6に記載の装置。
  8. 前記第1の回路は前記ネットワークポートとネットワークスイッチとの間のインターフェイスをもたらす、請求項6に記載の装置。
  9. 各々が1個以上のそれぞれのネットワークデータフロー上でネットワークデータを受信および/または送信する複数の第1の回路をさらに含み、異なる第1の回路はそれぞれの異なるフロー上でデータを受信および/または送信し、各タスクグループG1は前記第1の回路のうちの1つと関連づけられており、各タスクグループG1は関連づけられた第1の回路によって受信および/または送信されたネットワークデータを処理する、請求項1に記載の装置。
  10. 各タスクグループG1はネットワークポートに対応し、各タスクグループG1の前記タスクは対応するネットワークポートへの、および対応するネットワークポートからのデータフローを処理する、請求項9に記載の装置。
  11. 各タスクグループG1は各データフローのデータを処理するため少なくとも2個のタスクを含む、請求項9に記載の装置。
  12. 各タスクに対してプログラムカウンタレジスタをさらに含み、
    各タイムスロットにおいて、(a)前記タイムスロットに対してあるタスクが選択された場合、前記命令実行ユニットは、選択されたタスクのプログラムカウンタレジスタによって識別される命令に対する実行を開始し、(b)前記タイムスロットに対して選択されたタスクがない場合、前記実行ユニットはNOP命令の実行を開始する、請求項1に記載の装置。
  13. ネットワークデータを処理する複数の所定のグループ{G1}のタスクを実行するためのコンピュータプロセッサを含む装置であって、各タスクグループG1は複数のタスクを含み、前記コンピュータプロセッサは
    連続したタスク選択動作を行なうためのタスク選択回路を含み、各タスク選択動作はグループG1と関連づけられ、関連づけられたグループG1からの前記タスクのうちの1つを選択し、どの2個の連続したタスク選択動作もそれぞれ異なるタスクグループG1と関連づけられており、前記コンピュータプロセッサはさらに
    前記連続したタスク選択動作によって選択された前記タスクに対する命令を実行するための命令実行ユニットを含み、各タスク選択動作に対し、前記命令実行ユニットは対応する選択されたタスクに対して最大1個の命令の実行を開始する、装置。
  14. 前記タスク選択回路は
    グループG1における各タスクに対し、前記タスクが実行のために利用可能であるかどうかを判定するタスク情報に基づいて単一のタスクグループG1の前記タスクからあるタスクを選択するための選択回路と、
    各々が1個のタスクグループG1に対する前記タスク情報を保持する複数のラッチ回路とを含み、各タスク選択動作の後、各ラッチ回路の内容は次のラッチ回路へ転送され、最後のラッチ回路の内容は前記選択回路に与えられる、請求項13に記載の装置。
  15. 各々がどの所与の時点においてもあるタスクに対して利用可能であるかもしれずまたは利用可能ではないかもしれない複数のリソースをさらに含み、各リソースはただ1個のタスクグループG1のタスクによって共用される、請求項13に記載の装置。
  16. 前記リソースは、前記コンピュータプロセッサへのリクエストをストアしてネットワークデータを処理するためのリクエストFIFOと、ネットワークデータに適用すべき前記プロセッサからのコマンドをストアするためのコマンドFIFOとを含む、請求項15に記載の装置。
  17. 複数のネットワークポート上でネットワークデータを受信し、および/または前記ネットワークポート上でネットワークデータを送信する複数の第1の回路をさらに含み、異なる第1の回路はそれぞれの異なるネットワークポート上でデータを受信および/または送信し、各タスクグループG1は前記第1の回路のうちの1つと関連づけられ、各タスクグループG1は関連づけられた第1の回路によって受信および/または送信されたネットワークデータを処理する、請求項13に記載の装置。
  18. 各第1の回路はただ1個のポート上でネットワークデータを受信および/または送信する、請求項17に記載の装置。
  19. 各々が1個以上のそれぞれのネットワークデータフロー上でネットワークデータを受信および/または送信する複数の第1の回路をさらに含み、異なる第1の回路はそれぞれの異なるフロー上でデータを受信および/または送信し、各タスクグループG1は前記第1の回路のうちの1つと関連づけられており、各タスクグループG1は関連づけられた第1の回路によって受信および/または送信されたネットワークデータを処理する、請求項13に記載の装置。
  20. 各タスクグループG1はネットワークポートに対応し、各グループの前記タスクは対応するネットワークポートへの、および対応するネットワークポートからのデータフローを処理する、請求項19に記載の装置。
  21. 命令実行回路を含む回路によって複数の所定のグループ{G1}のタスク{TSK1}を実行するステップを含む方法であって、前記タスクTSK1はネットワーク上で受信および/または送信されたネットワークデータを処理し、前記命令実行回路は長さの等しい複数の連続したタイムスロットにおける各タイムスロットT1において命令を実行することを始めるように動作可能であり、前記複数のタスクを実行するステップは
    どの2個の連続したタイムスロットもそれぞれの異なるグループG1と関連づけられるように、前記所定のタスクグループのうちの1つであるタスクグループG1(T1)に各タイムスロットT1を関連づけるステップを含み、前記実行するステップはさらに
    各タイムスロットT1に対し、タスク選択動作TSOP1(T1)を行なって前記タイムスロットT1と関連づけられた前記グループG1(T1)からあるタスクを選択するステップと、
    各タイムスロットT1において、前記タスク選択動作TSOP1(T1)によってタスクがうまく選択された場合、前記命令実行回路が前記タイムスロットに対して選択された
    前記タスクに対する命令の実行を開始するステップとを含む、方法。
  22. 前記タスクTSK1は、各々がどの所与の時点においてもあるタスクに対して利用可能であるかもしれずまたは利用可能ではないかもしれないリソースを共用しており、各リソースはただ1個のタスクグループG1の前記タスクによって共用される、請求項21に記載の方法。
  23. 前記タスクTSK1は前記ネットワークデータからアドレス情報を抽出し、アドレス変換を行なう、請求項21に記載の方法。
  24. 前記タスクTSK1は、複数のネットワークデータフローのネットワークデータを処理し、ネットワークデータは複数の回路C1によって受信および/または送信され、各回路C1は、異なる回路C1がそれぞれの異なるフロー上でネットワークデータを受信および/または送信する態様で1個以上のそれぞれのデータフロー上でデータを受信および/または送信し、各回路C1は、そのタスクが前記回路C1によって受信および/または送信されたデータに対して動作するグループG1に対応する、請求項21に記載の方法。
  25. 各グループG1はネットワークポートに対応し、各グループG1の前記タスクは対応するネットワークポートへの、および対応するネットワークポートからのデータフローを処理する、請求項24に記載の方法。
  26. 命令実行回路を含む回路によって複数の所定のグループ{G1}のタスク{TSK1}を実行するステップを含む方法であって、前記タスクTSK1はネットワーク上で受信および/または送信されたネットワークデータを処理し、前記複数のタスクを実行するステップは
    前記命令実行回路によって実行すべき各命令に対し、その命令が実行されるべきタスクTSK1を選択する選択動作を実行するステップを含み、各選択動作はグループG1に関連づけられ、前記グループG1が実行に利用可能であるタスクを有している場合に、前記グループG1からあるタスクを選択し、どの2個の連続した選択動作もそれぞれの異なるグループG1と関連づけられており、前記実行するステップはさらに
    タスクの選択につながる各選択動作に対し、前記命令実行回路が、選択されたタスクに対する命令を実行するステップを含む、方法。
  27. 1個以上のネットワークセグメントからデータのフレームを受信するステップおよび/または1個以上のネットワークセグメントへデータのフレームを送信するステップをさらに含み、データの各フレームは単一のタスクTSK1によって処理される、請求項26に記載の方法。
  28. 前記タスクTSK1は、各々がどの所与の時点においてもあるタスクに対して利用可能であるかもしれずまたは利用可能ではないかもしれないリソースを共用しており、各リソースはただ1個のタスクグループG1の前記タスクによって共用される、請求項26に記載の方法。
  29. 前記タスクTSK1は前記ネットワークデータからアドレス情報を抽出し、アドレス変換を行なう、請求項26に記載の方法。
  30. 前記タスクTSK1は複数のネットワークポートに対するネットワークデータを処理し、ネットワークデータは、異なる回路C1がそれぞれの異なるネットワークポート上でネットワークデータを受信および/または送信する態様で複数の回路C1によって受信および/または送信され、各回路C1は、そのタスクが前記回路C1によって受信および/ま
    たは送信されたデータに対して動作するグループG1に対応し、
    前記回路C1は前記ネットワークポートとネットワークスイッチとの間のインターフェイスをもたらす、請求項26に記載の方法。
  31. 前記タスクTSK1は、複数のネットワークデータフローのネットワークデータを処理し、ネットワークデータは複数の回路C1によって受信および/または送信され、各回路C1は、異なる回路C1がそれぞれの異なるフロー上でネットワークデータを受信および/または送信する態様で1個以上のそれぞれのデータフロー上でネットワークデータを受信および/または送信し、各回路C1は、そのタスクが前記回路C1によって受信および/または送信されたデータに対して動作するグループG1に対応する、請求項26に記載の方法。
  32. 各グループG1はネットワークポートに対応し、各グループG1の前記タスクTSK1は対応するネットワークポートへの、および対応するネットワークポートからのデータフローを処理する、請求項31に記載の方法。
  33. 各グループG1は、各データフローのデータを処理するため少なくとも2個のタスクTSK1を含む、請求項31に記載の方法。
  34. 複数のタスクに対するコンピュータ命令を実行して複数のネットワークポートに対するネットワークデータを処理するステップを含む方法であって、ネットワークデータは、異なるポート回路がそれぞれの異なるネットワークポート上でネットワークデータを受信および/または送信する態様で複数のポート回路によって受信および/または送信され、各ポート回路は、前記ポート回路によって受信および/または送信されたデータに対して動作する複数の対応するタスクに対応し、
    前記タスクに対して実行されるべき各コンピュータ命令に対し、前記方法は
    どの2個の連続した命令もそれぞれ異なるポート回路に対して実行される態様で、前記命令が実行されるべきポート回路P1を定めるステップを含み、前記方法はさらに
    タスク選択動作を行ない、前記ポート回路P1に対応する前記タスクのうちの1つを選択するステップと、
    前記タスク選択動作によってタスクが選択された場合、選択されたタスクに対して命令を実行するステップと、
    実行されるのに利用可能である前記ポート回路P1にいずれの前記タスクも対応していないことにより前記タスク選択動作によってタスクが選択されなかった場合、NOP命令を実行するステップとを含む、方法。
  35. 複数のネットワークポート上で受信されるネットワークデータおよび/または前記ネットワークポート上で送信されるネットワークデータを処理するポートインターフェイス回路を制御するパイプライン化されたネットワークプロセッサによって複数のソフトウェアタスクを実行するための方法であって、前記ポートインターフェイス回路は、異なるハードウェアタスクがそれぞれの異なるネットワークポートに対するネットワークデータを処理する態様で複数のハードウェアタスクを含み、各ソフトウェアタスクは前記ハードウェアタスクのうちの対応する1つによって処理されるデータに対して動作し、各ハードウェアタスクは複数の前記ソフトウェアタスクに対応し、
    長さの等しい連続したタイムスロットの各々において、前記パイプライン化されたプロセッサは前の命令を実行し続けるとともに命令の実行を始めるように動作可能であり、
    前記方法は
    各タイムスロットをハードウェアタスクと関連づけるステップを含み、このため、各タイムスロットにおいて、前記プロセッサは、関連づけられたハードウェアタスクに対応するソフトウェアタスクが実行のために利用可能である場合に前記関連づけられたハードウ
    ェアタスクに対応するソフトウェアタスクの命令の実行を始め、どの2個の連続したタイムスロットもそれぞれの異なるハードウェアタスクと関連づけられており、前記方法はさらに
    各タイムスロットに対し、前記タイムスロットに関連づけられた前記ハードウェアタスクに対応するソフトウェアタスクが実行のため利用可能である場合に前記タイムスロットに関連づけられた前記ハードウェアタスクに対応するソフトウェアタスクを選択するステップと、
    各タイムスロットにおいて、前記タイムスロットに関連づけられた前記ハードウェアタスクに対応する前記ソフトウェアタスクが実行のため利用可能である場合に、前記タイムスロットに対して選択された前記ソフトウェアタスクからの命令の実行を開始するステップとを含む、方法。
  36. 長さの等しい連続したタイムスロットにおいてネットワークデータを処理する複数の所定のグループのタスクを実行するためのコンピュータプロセッサを含む装置であって、各所定のグループのタスクは複数のタスクを含み、前記コンピュータプロセッサは
    各タイムスロットにおいて、所定のグループのタスクからあるタスクを選択するためのタスク選択回路を含み、どの2個の連続したタイムスロットにおいても、前記タスク選択回路はそれぞれの異なる所定のグループのタスクからタスクを選択し、前記コンピュータプロセッサはさらに
    前記タスクが選択されるたびにタスクに対する最大1個の命令の実行を開始する命令実行ユニットを含む、装置。
  37. 前記タスクは、各々がどの所与の時点においてもタスクに対して利用可能であるかもしれずまたは利用可能ではないかもしれないリソースを共用し、各リソースは前記所定のグループのタスクのうちのただ1個のグループのタスクによって共用される、請求項36に記載の装置。
  38. 各々が、1個以上のそれぞれのネットワークデータフロー上でネットワークデータを受信および/または送信する複数の第1の回路をさらに含み、異なる第1の回路はそれぞれの異なるフロー上でデータを受信および/または送信し、各所定のグループのタスクは、前記第1の回路のうちの1つと関連づけられており、各所定のグループのタスクは関連づけられた第1の回路によって受信および/または送信されたネットワークデータを処理する、請求項36に記載の装置。
  39. 長さの等しい連続したタイムスロットにおいて複数のタスクを実行するためのコンピュータプロセッサを含むネットワーク装置であって、各タスクは前記タスクに対応する1個以上のネットワークデータフロー上で受信された、および/または前記タスクに対応する1個以上のネットワークデータフロー上で送信されたネットワークデータを処理するものであり、前記コンピュータプロセッサは
    各タイムスロットにおいてタスクを選択するためのタスク選択回路を含み、2個の連続したタイムスロットにおいて選択されたどの2個のタスクTSK1およびTSK2に対しても、前記タスクTSK1によって処理された前記1個以上のネットワークデータフローは前記タスクTSK2によって処理された前記1個以上のデータフローとは異なり、このため、前記タスクTSK1およびTSK2の双方によって処理されるデータフローがなく、前記コンピュータプロセッサはさらに
    前記タスクが選択されるたびにタスクに対して最大1個の命令の実行を開始する命令実行ユニットを含む、ネットワーク装置。
  40. 複数のタスクを実行するためのコンピュータプロセッサを含むネットワーク装置であって、各タスクは対応するネットワークポート上で受信された、または対応するネットワー
    クポート上で送信されたデータを処理するものであり、前記コンピュータプロセッサは
    長さの等しい2個の連続したタイムスロットにおいて選択されたどの2個のタスクもそれぞれ異なるポートに対するデータを処理する態様で、各タイムスロットにおいてタスクを選択するためのタスク選択回路を含み、前記コンピュータプロセッサはさらに
    タスクが選択されるたびに前記タスクに対する最大1個の命令の実行を開始する命令実行ユニットを含む、ネットワーク装置。
JP2004225517A 1998-04-03 2004-08-02 コンピュータプロセッサを含む装置、複数の所定のグループのタスクを実行するステップを含む方法、ネットワークデータを処理するステップを含む方法、複数のソフトウェアタスクを実行するための方法およびコンピュータプロセッサを含むネットワーク装置 Expired - Fee Related JP4263147B2 (ja)

Applications Claiming Priority (1)

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

Related Parent Applications (1)

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

Publications (2)

Publication Number Publication Date
JP2004342132A JP2004342132A (ja) 2004-12-02
JP4263147B2 true JP4263147B2 (ja) 2009-05-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 Before (1)

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

Country Status (3)

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

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6850521B1 (en) * 1999-03-17 2005-02-01 Broadcom Corporation Network switch
US7643481B2 (en) * 1999-03-17 2010-01-05 Broadcom Corporation Network switch having a programmable counter
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
CN1293502C (zh) * 1999-06-30 2007-01-03 倾向探测公司 用于监控网络流量的方法和设备
US6985431B1 (en) * 1999-08-27 2006-01-10 International Business Machines Corporation Network switch and components and method of operation
DE10085287T1 (de) * 1999-12-08 2003-03-27 Univ British Columbia Zeitplaner für einen gewichteten fairen Warteschlagenbetrieb
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 日本電気株式会社 調停方式及びそれを用いたアービタ回路
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
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
US7360217B2 (en) * 2001-09-28 2008-04-15 Consentry Networks, Inc. Multi-threaded packet processing engine for stateful packet processing
US20060218556A1 (en) * 2001-09-28 2006-09-28 Nemirovsky Mario D Mechanism for managing resource locking in a multi-threaded environment
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
US7472390B2 (en) * 2003-10-01 2008-12-30 Intel Corporation Method and apparatus to enable execution of a thread in a multi-threaded computer system
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
US7643753B2 (en) * 2005-09-29 2010-01-05 Broadlight Ltd. Enhanced passive optical network (PON) processor
US9059946B2 (en) * 2005-09-29 2015-06-16 Broadcom Corporation Passive optical network (PON) packet 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 日本電気株式会社 マルチスレッドプロセッサ及びプログラム
DE102010003512A1 (de) 2010-03-31 2011-10-06 Robert Bosch Gmbh Geteilte zentrale Verarbeitung von Daten
DE102010003565A1 (de) * 2010-03-31 2011-10-06 Robert Bosch Gmbh Zyklischer Priorisierungswechsel bei einer Datenverarbeitung
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
EP0531599B1 (en) 1991-09-13 1998-07-22 International Business Machines Corporation Configurable gigabit/s switch adapter
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
DE69420408T2 (de) 1994-09-28 2000-01-05 Siemens Ag ATM-Übermittlungssystem zur statistischen Multiplexbildung von Zellen
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
US6141346A (en) 1995-07-19 2000-10-31 Fujitsu Network Communications, Inc. Point-to-multipoint transmission using subqueues
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4263147B2 (ja) コンピュータプロセッサを含む装置、複数の所定のグループのタスクを実行するステップを含む方法、ネットワークデータを処理するステップを含む方法、複数のソフトウェアタスクを実行するための方法およびコンピュータプロセッサを含むネットワーク装置
US9110714B2 (en) Systems and methods for multi-tasking, resource sharing, and execution of computer instructions
US7873817B1 (en) High speed multi-threaded reduced instruction set computer (RISC) processor with hardware-implemented thread scheduler
EP1242883B1 (en) Allocation of data to threads in multi-threaded network processor
US6665755B2 (en) External memory engine selectable pipeline architecture
US6804815B1 (en) Sequence control mechanism for enabling out of order context processing
US8762581B2 (en) Multi-thread packet processor
US7853951B2 (en) Lock sequencing to reorder and grant lock requests from multiple program threads
US8655962B2 (en) Shared address collectives using counter mechanisms
CN109690475A (zh) 用于转移操作的硬件加速器和方法
US20060143415A1 (en) Managing shared memory access
US20020116442A1 (en) Route switch packet architecture
US6920562B1 (en) Tightly coupled software protocol decode with hardware data encryption
US7139899B2 (en) Selected register decode values for pipeline stage register addressing
US6332188B1 (en) Digital signal processor with bit FIFO
JPH11312141A (ja) バス・ブリッジ
US7441245B2 (en) Phasing for a multi-threaded network processor
EP1631906B1 (en) Maintaining entity order with gate managers
US11409553B1 (en) System and method for isolating work within a virtualized scheduler using tag-spaces
Inagami et al. The specification of a new Manchester dataflow machine
US7275145B2 (en) Processing element with next and previous neighbor registers for direct data transfer
Morales et al. Design of a header processor for the PSi implementation of the logical link control protocol in LANs
JP3625586B2 (ja) プロセッサの命令実行制御システム
CN113254070A (zh) 加速单元、片上系统、服务器、数据中心和相关方法
CN114827054A (zh) 加速单元、相关装置和路径选择方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060324

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080826

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081126

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: 20090127

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090210

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

Free format text: PAYMENT UNTIL: 20120220

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees