図面 (/)

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

出願人 アプライドマイクロサーキッツコーポレイション
発明者 アレクサンダー・ヨッフェドゥミトゥリー・ビシェツキー
出願日 1999年4月2日 (21年7ヶ月経過) 出願番号 1999-096570
公開日 1999年11月30日 (20年11ヶ月経過) 公開番号 1999-327930
状態 特許登録済
技術分野 先行制御 マルチプログラミング
主要キーワード レスフロー リリース信号 出力制御ブロック 処理レイテンシ コンピュータタスク ソフトウェアタスク サスペンド信号 タスク特有
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(1999年11月30日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

解決手段

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

概要

背景

概要

効率的なパイプラインプロセッサマルチタスクプロセッサおよびリソースアクセス技術を提供する。

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

目的

効果

実績

技術文献被引用数
0件
牽制数
2件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項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の命令の実行を完了する、請求項14に記載のプロセッサ。

請求項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に記載の方法。

--

0001

該当なし

0002

該当せず

背景技術

0003

この発明はデータ処理に関し、より特定的にはパイプライン化された命令実行マルチタスキングおよびリソースアクセス技術に関する。

0004

パイプライン化およびマルチタスキングによりプロセッサ帯域幅が増加する。これらの技術に伴う時間および複雑さを低減することが望ましい。

0005

特に、命令実行がパイプライン化されると、プロセッサは、命令を実行すべきであるかどうかがわかる前に命令を実行し始めることもあり得る。たとえば、プロセッサが命令I1を実行し始め、次に、I1の実行が完了する前に命令I2を実行し始めたとする。I1の実行が完了できないのであれば、命令I2を実行すべきではなく、命令I2をパイプラインから除去しなければならない。実際に、どの時点においてもプロセッサはパイプラインから除去すべきである2つ以上の命令を実行しているかもしれない。パイプライン除去に関連する回路の複雑さを低減することが望ましい。

0006

また、マルチタスキング環境においてさまざまなタスク間での切替えに伴うオーバヘッドを低減することも望ましい。タスクを切替えるには、プロセッサにより実行されるオペレーティングシステムが、どのタスクが次に実行されるべきであるかを定めなければならない。また、オペレーティングシステムは、あるタスクにより用いられたレジスタ値セーブし、別のタスクにより用いられる値をレジスタにロードしなければならない。これらの機能は相当な数のオペレーティングシステム命令を伴うことがある。こうした動作に関連のある命令の数を減少することが望ましい。

0007

また、利用可能でないかもしれないリソースへのアクセスを改善することが望ましい。そのようなリソースの一例としては、プロセッサが読もうとする際には空であり、またはプロセッサが書こうとする際には一杯であるかもしれないFIFOが挙げられる。FIFOにアクセスする前に、プロセッサはFIFOが利用可能であるかどうかを示すフラグを調べる。利用可能でないかもしれないリソースにアクセスする速度を改善することが望ましい。

0008

また、複数のタスクによるコンピュータリソースの利用を同期化するための単純な同期化方法を提供し、リソースが別のタスクによりアクセスされるよう設定されている際に、あるタスクがそのリソースにアクセスすることによって生じ得るエラーを回避することが望ましい。

発明の概要

0009

この発明はいくつかの実施例において、効率のよいパイプラインプロセッサ、マルチタスキングプロセッサおよびリソースアクセス技術を提供する。

0010

いくつかの命令実行パイプライン実施例において、パイプライン除去オーバヘッドはプロセッサがどのタスクに対しても続けて実行できる命令の数を制限することによって低減または消去される。このため、いくつかの実施例では、連続した命令は別々のタスクにより実行される。そのため、命令を実行できない場合でも、次の命令は異なるタスクに属するため当該次の命令は依然として実行されなければならない。このため、次の命令はパイプラインから除去されない。

0011

いくつかの実施例では、同じタスクのどの2つの命令の間でも、プロセッサは別のタスクからの十分な数の命令を実行してパイプライン除去の必要をなくしている。

0012

タスク切替えに関連するオーバヘッドを低減するため、いくつかの実施例では各々のタスクに対する別個のレジスタが含まれており、レジスタ値がタスク切替え動作においてセーブされたり、またはリストアされたりする必要がないようにする。特に、いくつかの実施例では、各タスクは別個のプログラムカウンタ(PC)レジスタおよび別個のフラグを有する。いくつかの実施例において、タスク切替えはハードウェアによって1クロックサイクルで行なわれる。

0013

いくつかの実施例において、プロセッサは、リソースが利用可能であるかどうかを予めチェックすることなくリソースにアクセスすることができる。プロセッサがリソースにアクセスする命令を実行する際にリソースが利用可能でない場合、プロセッサはその命令をサスペンドする。その命令を実行するはずであったプロセッサ回路は、たとえば別のタスクの命令など、別の命令を実行するのに利用可能となる。

0014

そのため、いくつかの実施例では、プロセッサはすべてのリソース(たとえばFIFOなど)の状態を追跡する。(特に断っていない限り、ここで用いている術語「リソース」はある時点において利用可能であるかもしれない、または利用可能でないかもしれない何かを意味する。)生成される信号は各リソースの状態を示しており、特にどのリソースがどのタスクに利用可能であるのかを示す。あるタスクが利用可能でないリソースにアクセスを試みた場合、そのタスクはサスペンドされ、プロセッサは本来そのサスペンドされたタスクが利用できたはずのタイムスロット内で他のタスクを実行できる。リソースが利用可能となると、そのサスペンドされたタスクは再開され、そのリソースにアクセスする命令が再実行される。

0015

複数のタスクが1つ以上のリソースを共用する際の同期エラーを避けるため、いくつかの実施例では、あるタスクがリソースのいずれか1つにアクセスし終わると、そのタスクは、そのリソースを共用する他のすべてのタスクがそのリソースにアクセスし終わるまでそのリソースにアクセスすることができない。このため、いくつかのネットワーク実施例では、さまざまなタスクがFIFOリソースを共用してデータフレームを処理する。各タスクは別個のデータフレームを処理する。フレームを処理するには、タスクは「リクエスト」FIFOからフレームアドレス読む。次に、タスクはコマンドFIFOに、チャネルプロセッサがフレームを処理するようにというチャネルプロセッサへのコマンドを書込む。2つ目のタスクは異なるフレームに対して同様の動作を行なう。始めのタスクは再び、さらに別のフレームに対して同じ動作を行なう。あるフレームに対して書かれたコマンドが別のフレームに誤って適用された場合、フレームは誤って処理される可能性がある。

0016

この可能性をなくし、リクエストFIFOにおけるフレームアドレスとコマンドFIFOにおけるコマンドとを正確に一致させるため、以下の技術が用いられる。まず、あるタスク(たとえばT1)がリクエストFIFOおよびコマンドFIFOの双方にアクセスを許されるが、他のどのタスクもこれらのリソースにアクセスすることを許されない。一旦タスクT1がいずれかのリソースにアクセスし終わると、そのリソースに別のタスクがアクセスすることが許可され、さらにタスクT1は、そのリソースを共用する他のすべてのタスクがそのリソースにアクセスし終わるまでは再びそのリソースにアクセスすることを許されない。このため、リクエストFIFOにおけるフレームアドレスの順序はコマンドFIFOにおけるコマンドの順序と対応しており、チャネルがフレームアドレスとコマンドとを正確に一致させることができるようにする。この一致を確立するのに特殊なタグは何ら必要ではなく、この一致は単純なデータ構造であるFIFOを用いて確立される。

0017

いくつかの実施例では、プロセッサはネットワークのデータフローを処理するいくつかのタスクを実行する。プロセッサは高い帯域幅をもたらすのに、上述のパイプラインおよびタスク切替え技術を用いる。

0018

他の実施例および変更例を以下に説明する。この発明は添付の特許請求の範囲により規定される。

0019

図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を通って流れる。スライサは周知のATMSAR機能を実行し、イーサネットフレーム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を参照されたい。

0020

PIF110の他の実施例では、必ずしもATMまたはイーサネットではない他のネットワーク間でインターフェイスがもたらされる。いくつかの実施例では、スライサ140は適当なMACで置換えられる。

0021

プロトコル変換(たとえば、ATM/イーサネット変換)を実行するのに加えて、PIF110はIPルーティングレイヤースイッチングまたは、PIFマイクロコントローラ160により実行されるソフトウェアにより定められる他の処理を行なうことができる。図3図4に関連して以下の説明を参照されたい。また、本出願と同日出願のA.ヨッフェ他による「ネットワークでデータを転送するためのネットワークプロセッサステムおよび方法」(“SYSTEMS AND METHODS FORDATA TRANSFORMATION AND TRANSFERIN NETWORKS”)と題された米国特許出願(代理人事件番号M−4855 US)も参照されたい。これもここに引用により援用される。

0022

PIF110はさほど速くないクロック速度においてであってもスループットが高い。そのため、いくつかの実施例では、PIF110はわずか50MHzのクロック速度において4つの100MB/秒イーサネットポートおよびそれぞれ対応の4つの155MB/秒ATMポートに対してIPルーティングを行なうことができる。

0023

図1では、各スライサ140.xとその対応するMAC130.xとの間のデータフローは対応するチャネル150.x(以下、チャネル「x」、すなわちチャネル0,1,2または3、とも称される)により制御される。チャネル150はマイクロコントローラ160からのコマンドを実行する。いくつかの実施例では、4つのチャネル150.xは、時分割多重方式を用いて4つのチャネル150の機能を果たす1つのチャネル回路により実現される。ここに引用により援用される前述の米国特許出願代理人事件番号M−4855 US「ネットワークでデータを転送するためのネットワークプロセッサシステムおよび方法」を参照されたい。

0024

チャネル、マイクロコントローラ、スライサ140およびMAC130はメモリ164を介して通信し、メモリ164は以下に説明する内部メモリ(「フレームおよびコマンドメモリ」)170およびFIFO230、240を含む。

0025

いくつかのイーサネットの実施例では、マイクロコントローラはMII(メディア独立インターフェイス管理回路180に接続され、MII管理回路180は当該技術分野において公知であるイーサネット物理層装置に接続される。

0026

サーチマシンSM)190はメモリ200内にアドレス導出データベースを保持し、IPルーティングまたはソフトウェアにより定められる他の処理を行なう。SM190はまた、メモリ200内に(たとえばVLANまたはアクセス制御リストを規定することによって)ネットワーク接続性を制限するデータベースを保持する。サーチマシンはマイクロコントローラ160により提示されるキー(たとえばイーサネットまたはIPアドレス)を探索することができ、学習アルゴリズムを実行してそのアドレスがデータベースにない場合にレイヤー2またはレイヤー3アドレスを学習する。サーチマシン190はいくつかの実施例ではソフトウェアプログラマブルではないが、サーチマシンはフレキシブルデータベースノード構造をサポートしており、このため、サーチマシンは異なる機能(たとえばIPルーティング、レイヤー2スイッチングなど)にたやすく適合できる。サーチマシン190は、サーチインサートデリートなどのマイクロコントローラからのコマンドを実行する。サーチマシンはまた、マイクロコントローラにメモリ200への直接のアクセスを与える。サーチマシンについては、追補8に記載する。

0027

いくつかの実施例では、メモリ200はフロースルー動作モードにおいてシンクロナススタティックRAMを用いて実現される。いくつかの実施例では複数のメモリバンクが用いられている。

0028

いくつかの実施例では、PIF110は集積回路である。メモリ200は集積回路の一部ではないため「外部」と称される。しかしながら、他の実施例では、メモリ200は同じ集積回路の一部である。この発明はいかなる特定の集積方式によっても限定されるものではない。

0029

PIF110はまた、シリアル読出専用メモリ(ROM)204(いくつかの実施例ではシリアルEPROM)に接続され、ブート時にROM204からマイクロコントローラへソフトウェア(「ファームウェア」)がロードされるようにする。

0030

図2には、メモリ164内の1つのチャネル150.xおよびその関連のFIFOリソースが示される。チャネルは以下の2つの類似した部分に分割される。すなわち、対応するMAC130から対応するスライサ140へのデータフローを制御する入ってくる(イングレスサブチャネル150Iと、スライサ140からMIC130へのデータフローを制御する出ていく(イーグレス)サブチャネル150Eとである。特に断っていない限り、参照番号においてサフィックス「I」はイングレスサブチャネルに属する回路を示し、サフィックス「E」はイーグレスサブチャネルに属する回路を示す。

0031

各サブチャネル150I、150Eにおいてデータ処理は以下のステップを含む。

0032

(1) 対応する入力制御ブロック210(すなわち210Iまたは210E)は対応するデータFIFO220に入来データストアする。マイクロコントローラがアドレス変換または他の処理を開始できるようにするのに十分なデータフレームの部分が受取られると(たとえばIPルーティング実施例ではIPアドレスおよびホップカウントが受取られると)、入力制御210はそれぞれ対応のリクエストFIFO230にリクエストを書く。リクエストがFIFO230に書かれる前に受取られるフレームバイトの数は、前述の米国特許出願代理人事件番号M−4855 USに説明されるようにマイクロコントローラにより書込可能なレジスタにより規定される。

0033

(2)マイクロコントローラ160はリクエストを読み、対応するデータFIFO220から適当なパラメータ(たとえばイングレス側での発信元および行先アドレスまたはイーグレス側でのVPIVCI)を読み、適当な処理を行なう。マイクロコントローラはたとえばアドレス導出探索を行なうため、必要に応じてサーチマシン190を用いる。

0034

(3)サーチマシン190がマイクロコントローラ160に探索結果を返すと、マイクロコントローラはそれぞれ対応のコマンドFIFO260に1つ以上のチャネルコマンドを書き、これはフレームをどのように出力装置(MAC130またはスライサ140)に転送するべきであるかを特定する。

0035

(4)フレーム全体が受取られた後、入力制御210はそれぞれ対応のステータスFIFO240にステータス情報を書く。ステータスFIFOはマイクロコントローラ160により読まれる。ステータスによりフレームが不良であることが示されると(たとえばチェックサムが不良である場合)、マイクロコントローラはコマンドFIFO260に「破棄」コマンドを書いて出力制御250がそのフレームを破棄するようにさせる。

0036

ステップ(2)、ステップ(3)およびステップ(4)は図3図4に関連して以下に説明する他の処理を含んでいてもよい。

0037

(5)出力制御250はそれぞれ対応のコマンドFIFO260からのコマンドを実行する。

0038

いくつかの実施例では、データFIFO220およびコマンドFIFO260は内部メモリ170内にストアされる。リクエストFIFO230およびステータスFIFO240はメモリ230、240(図1)内にストアされる。

0039

イーグレス出力制御ブロック250Eの出力はマイクロコントローラに接続され、ATMスイッチ120がプログラム(「アプレット」)をマイクロコントローラにロードして実行できるようにする。アプレットはまず、他のフレームと類似した態様でイーグレス側に転送されるが、これらのアプレットのVPI/VCIパラメータはマイクロコントローラを示している。そこで、アプレットはMAC130には転送されない。代わりに、アプレットは回路250Eの出力からマイクロコントローラプログラムメモリ314(図6)にDMA転送によりロードされる。

0040

マイクロコントローラ160はまた、それ自身のフレームを発生し、これをいずれかのデータFIFO220へ書き、対応するコマンドFIFO260へコマンドを書くことができる。対応する出力制御250はそのコマンドにより特定されるとおりにフレームを転送する。

0041

マイクロコントローラはまた、コマンドFIFO260に、各サブチャネル150I、150Eのための別個のメモリ(図示せず)にストアされる統計情報を転送するコマンドを書くことができる。

0042

いくつかの実施例では、マイクロコントローラ160は費用のかかるリソースである。注目すべきことは、いくつかの実施例においてマイクロコントローラ命令実行ユニット図6において310として示され以下に説明される)がPIF110のゲートカウントの約70%を占めることである。このため、マイクロコントローラを常に稼動させることが望ましい。以下のように適当なマルチタスキングによって完全稼動させることができる。

0043

マイクロコントローラは、各ポート0、1、2、3につき1つずつの、4つの「ハードウェアタスクHT0、HT1、HT2、HT3を実行する。ハードウェアタスクは以下の表に示すように時分割多重方式で実行される。

0044

0045

ハードウェアタスクが利用可能でない場合(たとえば、ハードウェアタスクがサーチマシンを待っているためなど)、それぞれのクロックサイクルにおいてどのマイクロコントローラ命令も開始されない。

0046

各ハードウェアタスクは1つ以上のソフトウェアタスクを含む。各ソフトウェアタスクはフレーム全体を処理するコードを含む。イングレス側のフレームとイーグレス側のフレームとが並列到着し得るため、いくつかの実施例では各ハードウェアタスクは少なくとも2つのソフトウェアタスクを含んでおり少なくとも2つのフレームを並列処理できるようにする。いくつかの実施例では、異なるソフトウェアタスクがイングレス側とイーグレス側とに提供される。イングレスソフトウェアタスクが、たとえばマイクロコントローラがサーチマシンを待っているため実行できない場合、マイクロコントローラはイーグレスソフトウェアタスクを実行できる。また、その逆も可能である。

0047

以下、術語「タスク」は、特に「ハードウェアタスク」と記載しない限り、ソフトウェアタスクを意味するものとする。

0048

図3には、イングレスタスクによる1つのフレームのレイヤー3処理が示される。ステージ290DAでは、サブステージ290DA.1においてマイクロコントローラはフレームから、イーサネット(MAC)行先アドレスDAを読む。マイクロコントローラはこのアドレスをサーチマシン190に供給し、サーチマシン190はサブステージ290DA.2において探索を行なう。

0049

サブステージ290DA.3において、マイクロコントローラは探索結果を調べる。DAが見つからなかった場合、フレームは捨てられるか、またはブロードキャストされる。DAが見つかり、サーチマシンがそのDAを最終行ステーションのアドレスであると認識した場合、探索結果は、フレームが最終行先に送られることとなる仮装接続(VC)のVPI/VCIを含むことになる。この場合、IPステージ290IPはスキップされる。探索結果からDAがIPルーティングエンティティ割当てられたアドレスであることが示されると、IP処理がステージ290IPにおいて行なわれる。

0050

そのステージでは、サブステージ290IP.1においてマイクロコントローラはフレームからIP行先アドレスを読む。サーチマシンはステージ290IP.2においてそのアドレスに対して探索を行なう。マイクロコントローラはサブステージ290IP.3において探索結果を調べる。結果にはVPI/VCIが含まれ、またアクセス制御制約が含まれることもある。サブステージ290IP.3において、マイクロコントローラはアクセス制御制約をIP発信元アドレスと突き合わせ、フレームが許可されるかどうかを判定する。許可されない場合、フレームは捨てられる。

0051

ステージ290SAにおいて、イーサネット発信元アドレスSAは処理され、アドレス学習アルゴリズムを実現し、またVLANを実現する。より特定的には、サブステージ290SA.1において、サーチマシンはSAに対して探索を行なう。サーチマシンは学習アルゴリズムがリクエストするのであればSAデータを挿入または修正する。サブステージ290SA.2において、サーチマシンは、SAが属するVLANを戻す。サブステージ290SA.3において、マイクロコントローラはそのVLANをステージ290DA.2においてサーチマシンが返したDA VLANと比較する。イーサネット発信元および行先アドレスが異なるVLANに属する場合、フレームは捨てられる。

0052

サブステージ290DA.3、290IP.3、290SA.3のうちの1つまたは2つ以上において、マイクロコントローラはそれぞれ対応のデータフロー(すなわちそれぞれ対応のサブチャネル)に対してコマンドFIFO260Iへコマンドを書く。コマンドはチャネル150がフレームを捨てるように指示しても、またはフレームをそれぞれ対応のスライサ140に転送するように指示してもよい。フレームが転送される場合、チャネルは、コマンドの指示に従い、スライサにVPI/VCIを供給したり、また、IPホップカウントをインクリメントしたり、および/または発信元アドレスをそれぞれ対応のMAC130のアドレスで置換えたりする。

0053

図4には、1つのフレームに対してイーグレスタスクにより行なわれる処理が示される。ステージ294VCにおいて、タスクはVPI/VCIを調べてフレームがアプレットであるかどうかを判定する。もしそうであれば、タスクはそのフレームをマイクロコントローラプログラムメモリ(以下に説明する図6において314として示される)にロードし、アプレットを実行する。ステージ294IPはスキップされる。

0054

代わりに、VPI/VCIはフレームがATMスイッチ120からの情報リクエストであることを示していてもよい。そのようなリクエストの例としては、PIF110内のレジスタを読むリクエスト、または統計情報を読むリクエストが含まれる。イーグレスタスクがそのリクエストを行なう。それが情報のリクエストであれば、イーグレスタスクは、イーグレスタスクを実行するのと同じハードウェアタスクのイングレスコマンドFIFO260Iに1つ以上のコマンドを書く。これらのコマンドにより、チャネルがその情報をスイッチに送ることになる。ステージ294IPはスキップされる。

0055

VIP/VCIがスイッチ120からのどの管理リクエスト(情報のリクエストなど)をも示さない場合、ステージ294IPが行なわれる。サブステージ294IP.1において、タスク(すなわちマイクロコントローラ)はフレームからIP行先アドレスを読み、そのアドレスをサーチマシンに供給する。ステージ294IP.2において、サーチマシンは探索を行ない、イーサネット行先アドレスを返し、場合によってはアクセス制御情報をも返す。ステージ294IP.3において、タスクはそのイーグレスコマンドFIFO260Eへコマンドを書き、フレームのイーサネット行先アドレスをサーチマシンがもたらすアドレスで置換えさせ、イーサネット発信元アドレスをそれぞれ対応のMAC130.xのアドレスで置換えさせ、フレームをMACへ転送させる。また、タスクソフトウェアに応じて他の種類の処理が行なわれてもよい。

0056

マイクロコントローラがステージ290DA.2、290IP.2、290ISA.2、294IP.2においてサーチマシンを待っている間、マイクロコントローラは同じまたは別のハードウェアタスクにおける別のソフトウェアタスクを実行するのに利用可能である。

0057

いくつかの実施例では、各イングレスフローおよび各イーグレスフローに対して1つのタスクを有しているだけではマイクロコントローラを完全に稼動させることにならず、そのため、各半二重データフローに対して2つ以上のタスクが提供され、マイクロコントローラが各データフローにおいて2つ以上のフレームを並列に処理できるようにする。このことは以下を考慮することによって説明される。イーサネットフレームが短いときにマイクロコントローラの速度が最もリクエストされる。なぜなら、図3図4に示される同じ処理を短いフレームと長いフレームとの双方に対して行なわなければならないからである。最も短いイーサネットフレームは64バイトを有する。たとえば、4つのイーサネットポートが100MB/秒ポートであり、ATMポートが155MB/秒であるとする。100MB/秒では、最も短いフレームはイーサネットポートを5.12マイクロ秒で通過する。このため、マイクロコントローラおよびサーチマシンはフレームを5.12+1.6=6.72マイクロ秒で処理しなければならない(1.6マイクロ秒はフレーム間ギャップである)。

0058

50MHzのマイクロコントローラクロック速度を仮定しよう。これは信頼性のある動作を確実にするためのかなり遅いクロック速度である。他の実施例ではより速い速度(たとえば100MHz)が用いられる。50MHzにおいて、6.72マイクロ秒は336クロックサイクルである。このため、1つのハードウェアタスクのイングレスおよびイーグレスタスクのためのクロックサイクル割当は336/4=84クロックサイクルである。

0059

フレームの処理はマイクロコントローラとサーチマシンとで分けられているが、これらは必ずしも同じフレームに対して並列に作業する訳ではないため、同じハードウェアタスク内の1つのイングレスフレームと1つのイーグレスフレームとに対する処理レイテンシ結線速度での処理においてさえ、84サイクルより長くてよい。処理するのに84サイクルよりも長くかかり、64バイトのフレームがイングレス側およびイーグレス側において連続して到着する場合、同じデータフローにおける前のフレームが処理される前に次のフレームが到着し始めることがあり得る。このため、マイクロコントローラが、同じデータフローにおける前のフレームの処理が完了する前に次のフレームを処理し始めることができるようにすることが望ましい。同じデータフローにおける複数のフレームのこのような並列処理を実現するために、各データフローに対して2つ以上のソフトウェアタスクが提供される。

0060

このように、いくつかの実施例では、各ハードウェアタスクHTxは2つのイングレスタスクIGx.0、IGx.1および2つのイーグレスタスクEGx.0、EGx.1を含む。たとえば、ハードウェアタスクHT1はイングレスタスクIG1.0、IG1.1およびイーグレスタスクEG1.0、EG1.1を含む。各タスクは以下のものを含む4ビットタスク番号により識別される。

0061

CHID−−それぞれ対応のポート0、1、2、3に対してのチャネルID(2ビット)=0、1、2、または3
SN−−シーケンス番号(IGx.0、EGx.0では0、IGx.1、EGx.1では1)
I/E−−イングレスには0、イーグレスには1
タスクの総数はすなわち16である。

0062

1つのフレームは1つのタスクにより処理される。フレームがアプレットである場合、そのアプレットは同じタスクにより実行される。

0063

マイクロコントローラ命令実行はパイプライン化される。このため、上記の表1では、それぞれ対応のハードウェアタスクに対して新しい命令が開始されるクロックサイクルが示される。たとえば、サイクル1では、ハードウェアタスクHT0に対して命令実行が開始される。命令実行は後続のサイクルにおいても続く。

0064

各サブチャネルにおけるFIFO230、240、260へのタスクのアクセスは図5論理図に示される態様で制御される。図5では、「タスク0」および「タスク1」は同じサブチャネルに対する2つのタスクであり、たとえばチャネル150.1のサブチャネル150Iに対するイングレスタスクIG1.0、IG1.1である。始めはタスク0のみがサブチャネルFIFO230、240、260へのアクセスを有する。タスク0がリクエストFIFO230にアクセスすると、スイッチ「a」が切替えられ、リクエストFIFOをタスク1に接続する。タスク0はタスク1がリクエストFIFOを読むまでリクエストFIFOを読むことが許されない。

0065

スイッチ「b」はコマンドFIFO260へのタスクのアクセスを制御する。スイッチ「b」は、タスク0によってあるフレームに対するすべてのコマンドが書かれた際に切替えられる。

0066

ステータスFIFO240へのタスクのアクセスを制御するスイッチ「c」はステータスFIFOがタスク0により読まれた際に切替えられる。

0067

サーチマシンへのタスクのアクセスを同期化するため、サーチマシン190は次々にコマンドを実行し、結果を同じ順序でもたらす。

0068

各命令において、実行のためのタスクを選択するのには1クロックサイクルしか要さない(以下に説明する図7におけるパイプラインステージTS)。さらに、タスクの選択はパイプライン化されており、そのためスループットに影響を及ぼさない。タスクの選択はハードウェアにより行なわれる。マイクロコントローラにおいてオペレーティングシステムは用いられない。このため、低いレイテンシが達成される。

0069

どの時点においても、各タスクは3つの状態、すなわち、アクティブレディまたはサスペンド、のうちの1つにある。アクティブ状態では、タスクは実行されている状態である。最も多くて4つのタスク(各ハードウェアタスクにつき1つ)が同時にアクティブであり得る。各アクティブタスクは4クロックサイクルごとに実行がスケジュールされる(上の表1を参照のこと)。

0070

アクティブタスクは、タスクが利用可能でないリソースにアクセスを試みるサスペンド状態移行する。リソースは追補2に記載される。リソースが利用可能となるとタスクはレディ状態に入る。

0071

アクティブタスクがサスペンドされると、同じチャネルにおけるレディ状態にあるタスクのうちの1つがタスク制御320(図6)により実行のため選択され、アクティブ状態に移行する。

0072

図6はマイクロコントローラ160のブロック図である。実行ユニット310はプログラムメモリ314にストアされるプログラムを実行する。プログラムはブートの間に、ROM204(図1)からダウンロードされる。さらに、上述のようにアプレットをロードして動的に実行することもできる。アプレットは実行された後に破棄されてもよく、またはアプレットはメモリ314に残されてもよい。

0073

実行ユニット310は、汎用レジスタを有するレジスタファイル312、特殊レジスタブロック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において「定数レジスタ」と記される)。

0074

バスsa_bus はまた、プログラムメモリ314から読まれる命令の即値フィールド「imm」を受取る。

0075

ALU318の64ビット出力は64ビットバスres _bus に接続され、64ビットバスres _bus はレジスタファイル312、データメモリ316および特殊レジスタブロック315の入力に接続される。

0076

レジスタファイル312、データメモリ316および特殊レジスタ315は追補6に記載される。そこに記載されるように、レジスタおよびデータメモリはタスク間で分けられているため、タスクが再スケジュールされる際にセーブ/リストア動作は必要ではない。特に、特殊レジスタ315は各タスクにつき1つずつの16個のPC(プログラムカウンタ)レジスタを含む。

0077

ロード/ストアユニット(LSU)330は実行ユニット310、サーチマシン190および内部メモリ170の間でインターフェイスをもたらす。LSU330は、メモリからレジスタをロードするか、またはレジスタ内容をメモリにストアするためのロードおよびストアリクエスト待ち行列を維持する。LSU330の入力はres _bus に接続され、またLSU330の64ビットの出力rfiはレジスタファイル312の入力に接続される。

0078

DMAブロック340の入力はバスres _bus に接続され、実行ユニット310がDMA340をプログラムできるようにする。DMA340はアプレットをプログラムメモリにロードすることができる。

0079

図7には命令実行パイプラインが示される。パイプラインには7つのステージがある。

0080

(1)タスクセレクト(TS)ステージt0。このステージでは、アクティブタスクがタスク制御320によってそれぞれ対応のチャネル150.xに対して選択される。いくつかの実施例では、タスク制御ブロック固定優先順位機構を実現しており、タスクIGx.0が最高優先順位を有し、次にIGx.1、その次にEGx.0、そしてその次にEGx.1となる。

0081

いくつかの実施例では、タスクは一度アクティブにされると、より高い優先順位のタスクがランする用意ができたというだけではサスペンドされない。その優先順位のより低いタスクは利用可能でないリソースにアクセスを試みるまでアクティブのままである。

0082

(2)フェッチ(F)ステージt1において、タスク制御ブロック320は実行ユニット310に対してアクティブタスク番号信号task# _t1(追補1の表A1−1におけるtsk _taskNumt1 と同じ)を駆動する。信号task# _t1は特殊レジスタ315内の16個のPC値のうちの1つを選択する。

0083

どのタスクもアクティブではない場合、タスク制御ブロック320は実行ユニット310に「アイドル」信号をアサートする。この信号は表A1−1において「tsk _idle」と表わされている。「アイドル」がアサートされると、task# _t1は「ドントケア」であり、命令実行ユニット310は残りのパイプラインステージにおいてNOP(ノーオペレーション)命令を実行する。

0084

「アイドル」がデアサートされると、特殊レジスタブロック315においてtask# _t1により選択されたPCレジスタ値はプログラムメモリ314に与えられる。選択されたPCにより示される命令がメモリから実行ユニット310へ読出される。

0085

(3)デコード(D)ステージt2において、命令は実行ユニットによりデコードされる。

0086

(4)読出(R)ステージt3において、レジスタファイル312および/または特殊レジスタ315および/またはデータメモリ316から命令オペランドが読まれ、ALU318に提示される。

0087

また、このステージにおいて、以下に図8から図15に関連してより詳しく説明するように、タスク制御320は配線410(図6)上にサスペンド信号(表A1−1におけるtsk _susp)を発生する。サスペンド信号がアサートされると、タスクはサスペンドされ、命令実行はアボートされ、タスクのPCレジスタは凍結される。後にタスクがアクティブにされると、同じ命令が再実行されることになる。

0088

また、このステージにおいて、実行ユニット310はウェイト信号を発生する。ウェイト信号がアサートされると、命令実行は完了させられずPCレジスタは凍結するが、タスクはアクティブのままであり、次のクロックサイクルから命令は再び実行される。たとえば、図7の命令1が、サイクル3においてアサートされるウェイト信号によって遅延された場合、同じ命令はサイクル4において開始される命令番号5として再実行されることになる。

0089

ウェイト信号は、命令を妨害している条件が、同じハードウェアタスクが再スケジュールされるころまでにはなくなりそうである場合にアサートされる。ウェイト条件は追補3に記載される。

0090

サスペンド信号およびウェイト信号がデアサートされると、PCレジスタは次の命令を指すように変えられる。

0091

(5) 実行(E)ステージt4において、命令は実行される。
(6)ライトバック(WB)ステージt5において、実行ステージの結果は行先がレジスタファイル312内にある場合を除いて、その行先に書かれる。

0092

(7)レジスタ書込(WR)ステージにおいて、実行ステージの結果は必要であればレジスタファイル312に書込まれる。

0093

注目すべきなのは、各命令のWRステージ(たとえばサイクル6の命令1)が同じハードウェアタスクの次の命令のRステージの前に起こることである(サイクル7の命令5を参照のこと)。そのため、たとえば命令5が命令1の結果を用いるとすると、その結果は命令5がそれをサイクル7において読む前にレジスタファイルまたは特殊レジスタに書かれることになる。

0094

図7に示したように、(Rステージにおいて)命令がアボートされると、パイプラインはすでに開始された他の命令から除去されなくてもよい。なぜなら、これらの命令は他のタスク(さらには他のハードウェアタスク)に属するからである。たとえば、命令1をアボートしなければならない場合、命令1のRステージにおいて、またはその前に開始された他の命令とは命令2、3および4だけである。これらの命令は他のタスクによって実行されるため、除去されなくてもよい。

0095

所与のハードウェアタスクに関して、対応する4つのソフトウェアタスクの間で切替えをするのに、タスク切替えがオペレーティングシステムソフトウェアにより行なわれる場合とは異なり、別個の命令を実行することは必要ではない。このため、高いスループットが達成される。

0096

図8には、1つのリクエストFIFO230またはステータスFIFO240に関するタスク同期化バブル図が示される。下方のダイアグラム704では、「タスク0」および「タスク1」は図5と同じ意味を有する。より特定的には、これらはリクエストまたはステータスFIFOを共用する2つのソフトウェアタスクである。いくつかの実施例では、タスク0はイングレスサブチャネルに対するIGi.0またはイーグレスサブチャネルに対するEGi.0である。

0097

ダイアグラム704はFIFOの所有権を示す状態機械である。RESETにおいて、FIFOは状態710RS.0によって示されるようにタスク0により所有される。

0098

タスク0がFIFOを読むのに成功すると、FIFOは状態710RS.1により示されるように、タスク1により所有されることになる。FIFOを読むことは図5の「a」または「c」スイッチを切替えることに等しい。タスク1がFIFOを読むのに成功すると、状態機械は状態710RS.0に戻る。

0099

FIFO読出動作は条件mfsel[x] & ffrd により示される。信号mfsel は追補4に記載される。信号ffrdは、マイクロコントローラによりいずれかのリクエストまたはステータスFIFOが読まれると、ステージt3において実行ユニットによりアサートされる。別個のffrdバージョンが各リクエストおよびステータスFIFOに対して生成される(FIFO読出が成功すると、追補4の信号mfrdがステージt5においてアサートされる)。

0100

リクエストおよびステータスFIFOは16個ある。これらFIFOの各々は0から15までの一意の数「x」により識別される。FIFO「x」が読まれている際、図8のmfsel[x]により示されるように、その数「x」はラインmfsel 上に駆動される。

0101

ダイアグラム720および740はタスク0およびタスク1がFIFOに関連してどのように状態を変化させるかを示している。上に示したように、各タスクには3つの状態、すなわちレディ(「RDY」)、アクティブおよびサスペンドがある。RESETにおいて、すべてのタスクはレディとなる。タスクはパイプラインステージt0において選択されるとアクティブとなる。

0102

ここで説明する実施例では、タスクは直接アクティブ状態からレディ状態へ移行することができないが、これは他の実施例では可能である。

0103

ここで説明する実施例では、各タスクは「サスペンド」条件730が生ずるとアクティブ状態からサスペンド状態へ移行する。サスペンドされたタスクはリリース条件734が生ずるとレディとなる。可能なサスペンド条件を追補1の表A1−2に列挙する。リリース条件は表A1−3に列挙する。

0104

ダイアグラム720では、サスペンド条件730は、タスク0がFIFOが利用可能でないときにFIFOにアクセスを試みる際に生じる。より特定的には、条件730とは以下のとおりである。

0105

(1)タスクがパイプラインステージt3にあること(実行ユニット310により生成される信号「T3」により示される)。

0106

(2) ffrdがアサートされ、FIFO読出動作を示していること。
(3) mfsel がFIFO「x」を識別していること。また、
(4) FIFOがタスク1により所有されている(状態機械704が状態710RS.1にある)か、または信号cfifordy[x] がローであり、FIFO「x」が空であることを示していること。(信号cfifordyは追補4に記載される。この信号は4つ目のサイクルごとにサンプリングされ、サンプリングされる際には有効である。)
FIFOがタスク0によって読まれておりそれ以外のどのタスクによっても読まれているのではないことは、タスク0がパイプラインステージt3にあることにより確証される。

0107

タスク1に対する条件730(ダイアグラム740)も同様である。ダイアグラム720、740における条件730は表A1−2(追補1)において、各種類のタスク(イングレスタスク0、イングレスタスク1、イーグレスタスク0、イーグレスタスク1)および各種類のFIFO(リクエストおよびステータス)について別々に示される。リクエストFIFO条件は4つのセクション「イングレスタスク0」、「イングレスタスク1」、「イーグレスタスク0」、「イーグレスタスク1」の各々において条件番号1として列挙されている。すなわち、イングレスタスク0についての条件は、exe _RfifoRd & mfsel[x] &(Ireqf |〜cfifordy[x] )である。

0108

信号exe _RfifoRd はffrdと同じである。Ireqf はFIFOがイングレスタスク1により所有されていることを示す。表A1−2のすべての信号はステージt3においてサンプリングされるため、「t3」は表中の条件のいくつかでは省いてある。イーグレスタスク0に関して、信号Ereqf はそれぞれ対応のリクエストFIFOがイーグレスタスク1により所有されていることを示す。すなわち、Ereqf がIreqf と入れ代わっている。タスク制御320は各リクエストFIFOに対して別個の信号Ireqf またはEreqf を発生する。

0109

追補1において、信号の否定は(〜cfifordyのように)信号名称の前の「〜」により示されるか、または(イーグレスタスク1に対する条件1のEreqf _のように)信号名称の後に続く下線によって示される。

0110

ステータスFIFOに関して、サスペンド条件730は表A1−2において2と番号のつけられた条件である。信号exe _SfifoRd はステータスFIFOに対するffrdバージョンである。ステータスFIFOを識別する番号は「x」ではなく「y」で示される。

0111

ダイアグラム720におけるリリース条件734は、タスク0がFIFOを所有している(状態機械704が状態710RS.0にある)ことと、cfifordy[x] がハイでありFIFOが空ではないことを示していることである。タスク1に対するリリース条件734(ダイアグラム740)は同様である。

0112

リリース条件は追補1の表A1−3に示されている。各リリース条件は表A1−2の同じスロット内のサスペンド条件に対応する。たとえば、表A1−3における「イングレスタスク0」セクションのリリース条件1は、タスクが表A1−2における「イングレスタスク0」セクションのサスペンド条件1によりサスペンドされた場合にそのタスクをレディ状態にリリースする。このように、表A1−3におけるリリース条件1および2は、リクエストおよびステータスFIFOに対するダイアグラム720および740でのリリース条件734に対応する。

0113

図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」に対してアサートされる。

0114

ロックされていないことは「アンロック」信号により示され、「アンロック」信号は、コマンドFIFOを書くのに用いられるマイクロコントローラ命令「CMD」(追補7)のLフラグから実行ユニット310によって生成される。

0115

イングレスタスク1が、コマンドFIFOをロックすることなく(「x」がイングレスタスク1を示しているIcmdFifoWr[x] により示されるように)そのコマンドFIFOに書くと、状態機械は状態S0に戻る。

0116

イングレスタスク0が状態S0にあるFIFOに書き、「ロック」信号がアサートされてそのFIFOをロックすべきであることを示すと、状態機械は状態S2に移行する。この状態においては、FIFOは依然としてイングレスタスク0により所有されている。ロック信号は、マイクロコントローラ命令CMD(追補7)におけるLフラグから実行ユニット310により生成される。FIFOは、イングレスタスク0が「アンロック」信号がアサートされている状態でFIFOに書くまで状態S2に留まる。書かれた時点でFIFOは状態S1に移行する。

0117

同様に、イングレスタスク1が「ロック」がアサートされている状態で状態S1にあるFIFOに書くと、FIFOは状態S3に移行する。この状態においてFIFOは依然としてイングレスタスク1により所有されている。FIFOは、イングレスタスク1が「アンロック」がアサートされた状態でFIFOに書くまで状態S3に留まる。書かれた時点でFIFOは状態S0に移行する。

0118

状態機械が状態S0またはS1にあり、イーグレスタスクがコマンドFIFOをロックすることなくそのコマンドFIFOに書く場合、状態遷移は起こらない。イーグレスタスク0が状態S0にあるFIFOをロックしてFIFOに書くと、FIFOは状態S4に移行する。この状態において、コマンドFIFOはイーグレスタスク0により所有される。状態機械は、イーグレスタスク0が「アンロック」がアサートされている状態でコマンドFIFOに書くまで状態S4に留まる。書いた時点で、状態機械は状態S0に戻る。

0119

状態S5はS4に類似しているが、イーグレスタスク1がコマンドFIFOに書込をしこれを所有することを表わす。

0120

状態S6およびS7はそれぞれ対応の状態S4およびS5に類似しているが、状態S6およびS7には状態S0ではなくS1から入る。

0121

ダイアグラム820および840には、コマンドFIFOに関するそれぞれ対応のイングレスタスク0および1の状態遷移が示される。サスペンド条件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)。

0122

イーグレスタスクに関して、イングレスコマンドFIFOに書込むことにより生じたサスペンド条件は表A1−2の条件8である。信号IcmdfOwnedByE0は、コマンドFIFOがイーグレスタスク0により所有されていることを示す(ダイアグラム804における状態S4、S6)。信号IcmdfOwnedByE1は、コマンドFIFOがイーグレスタスク1により所有されていることを示す(ダイアグラム804における状態S5、S3)。

0123

リリース条件734(図9)は表A1−3におけるイングレスタスクに対する条件3である。

0124

イーグレスコマンドFIFOに関するイーグレスタスク同期化も同様である。イーグレスFIFOについては、状態S4、S5、S6、S7は存在しない。表A1−2およびA1−3において、関係のある条件は番号が3である条件である。信号exe _EcmdFifoWrがexe _IcmdFifoWrと置換わり、イーグレスFIFOへの書込動作を示す。信号Ecmdf1は、FIFOがイーグレスタスク1により所有されていることを示す。

0125

図10には、DMAリソースに関するイーグレスタスク同期化が示される。下部のダイアグラム904には、DMA状態機械が示される。RESETにおいて、DMAはIDLEである。図10において「dmaa_wr」により示されるように、イーグレスタスクがDMAアドレス(プログラムメモリ314におけるDMA転送先アドレス)をDMA340(図6)のDMAアドレスレジスタDMAA(追補6)へ書くと、そのタスクはDMA所有者となり、DMA340がアクティブとなり内部メモリ170からDMA転送を開始する。図10の例において、DMA所有者はイーグレスタスク0である。

0126

図10の「last_word」により示されるように、転送が完了すると、DMAはレディ(「RDY」)となる。

0127

DMAがレディ状態にあり、DMA所有者タスクがDMAアドレスレジスタを読むと(図10において「dmaa_rd」として示される)、DMAは実行状態に移行する。DMA所有者はDMAレディ状態においてしかアドレスレジスタを読むことが許されない。非所有者タスクはどのDMA状態においてもDMAアドレスレジスタを読むことが許される。

0128

DMAが実行状態にあると、DMA所有者タスクはDMAによりロードされるアプレットを実行する。新たなDMAアクセスは許されない。

0129

DMA所有者タスクがリリースコード111をDMAAレジスタ(追補1)のOPフィールドに書込むと、DMAはアイドル状態に戻る。

0130

ダイアグラム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により生成される。

0131

このように、DMA所有者タスクは、このDMA所有者タスクが、DMAがアクティブである間にステージt3においてDMAアドレスレジスタを読もうと試みるか、またはDMAアドレスレジスタに書こうと試みる際にサスペンドされる。所有者タスクはDMAがレディとなるとリリースされる。非所有者タスクはDMAがレディである間にステージt3においてDMAレジスタに書こうと試みる際にサスペンドされる。非所有者タスクはDMAがアイドルとなるとリリースされる。

0132

リリース条件734は表A1−2においてイーグレスタスク0および1に対する条件7において「clast _word」として示される。

0133

図11には、セマフォレジスタsemr(追補2、6)に関するタスク同期化が示される。サスペンド条件730は表A1−2において条件5として示される。各サスペンド条件は以下のとおりである。すなわち、(1)タスクがパイプラインステージt3にあることと、(2)BITCまたはBITCI命令がタスクにより実行され、そのターゲットオペランドがセマフォレジスタであり、その命令が、その命令の以前からセマフォレジスタビットが有していた値と同じ値をセマフォレジスタビットに書こうとしているためアボートされなければならないこと(これは表A1−2の信号exe _bitcSemRegにより示されており、「exe _」で始まる信号名称はすべて実行ユニット310により生成される信号を表わしている)とである。サスペンドが生じると、タスク制御ブロック320はフラグSPxを1に設定し、ここで「x」はタスク番号(0−15)である。

0134

リリース条件730はフラグSPxがクリアされる(すなわち0に設定される)ことである。タスク制御ブロック320は以下の2つの条件のうちのいずれか1つでも生じるとすべてのフラグSPxをクリアする。すなわち、
(1)パイプラインステージt3において、命令BITCまたはBITCIの実行がどれか他のタスクYによって成功したこと。この条件は表A1−3におけるリリース条件5の信号exe _bitcSemAccにより示される。

0135

(2)チャネル150がセマフォレジスタに書くこと。これはcstrobe がアサートされており(追補4における表A4−1)、csem[5]が1にあることによって示される。チャネルは、チャネルコマンドによりコマンドされると、セマフォレジスタにアクセスしてマイクロコントローラ160に表示を送る。ここに引用により援用される、上記の米国特許出願代理人事件番号M−4855US「ネットワークでデータを転送するためのネットワークプロセッサシステムおよび方法」を参照されたい。

0136

図12には、サーチマシン190に関するタスク状態遷移が示される。サスペンド条件730(表A1−2における条件4)は以下の条件(1)および(2)の両方が真であることである。すなわち、
(1)タスクがパイプラインステージT3にあり、そのタスクがサーチマシンにコマンドを書くという命令を実行する(表A1−2においてexe _scmdWrとして示される、信号scmd_wr)か、またはサーチマシンから結果を読むという命令を実行すること(表A1−2においてexe _scmdRdとして示される、信号sres_rd)。追補7のマイクロコントローラ命令SMWR(サーチマシンコマンド書込)および追補6のレジスタscmd、scmde の記載を参照されたい。

0137

(2) 信号task_ownbit[x] が0であること(「x」はタスク番号)により示されるように、サーチマシンリソースがタスクによって利用可能でないこと。この信号は追補1の表A1−1およびA1−2ではsm_task_ownbitとして示される。名称が「sm_」で始まる信号はサーチマシン190により生成される。サーチマシンリソースおよびサスペンド条件は追補2に記載される。

0138

リリース条件734とはそれぞれ対応のtask_ownbit[x] が1であることである。

0139

図13には、メモリ170におけるフリーリストスクラッチバッファ1610(図18および追補5)に関するタスク同期化が示される。サスペンド条件730(表A1−2での条件6)は、以下のすべてが真であることである。すなわち、
(1)タスクがパイプラインステージt3にあること。

0140

(2)実行ユニットにより生成される信号ifreel_rdにより示されるように、タスクが内部フリーリストレジスタIFREEL(追補6)を読んでいること。この信号は表A1−2においてはexu _ifreelRdと表わされる。IFREELレジスタが読まれてフリーバッファ番号が得られる。

0141

(3) 「no_free_buffers 」(「no_free_buf 」)信号が特殊レジスタブロック315によりアサートされ、フリーバッファがないことを示していること。

0142

リリース条件734は、以下の3つの条件のうちのいずれかが真となることである。すなわち、
(1) cstrobe (追補4における表A4−1)がチャネル150によりアサートされ、csem[5]が0であり、チャネル150が、信号csem[4:0]により特定されるスクラッチバッファ1610を内部フリーリストに戻そうとしていることを示していること。

0143

(2) 信号IfreelWr(表A1−3におけるexu _ifreelWr)は実行ユニットによりアサートされ、マイクロコントローラがIFREELレジスタ(追補6)へ書いていることを示していること。このレジスタには、フリーとなったスクラッチバッファの番号が書込まれる。

0144

(3) 信号IfreerWr(exu _ifreerWr)が実行ユニットによりアサートされ、マイクロコントローラがIFREERレジスタへ書いていることを示していること。

0145

図14はタスク制御ブロック320のブロック図である。タスク制御320は、4つの同じラッチのブロック1304.0、1304.1、1304.2、1304.3を含む。ラッチ1304.0はパイプラインステージt0(TS)におけるハードウェアタスクに関する情報をストアする。その情報はラッチ1304.1の入力に与えられる。ラッチ1304.1はパイプラインステージt1におけるハードウェアタスクに関する情報をストアする。同様にラッチ1304.2、1304.3はそれぞれ対応のステージt2、t3におけるハードウェアタスクに関する情報をストアする。ラッチ1304.1の出力はラッチ1304.2のそれぞれ対応の入力に接続される。ラッチ1304.2の出力はラッチ1304.3のそれぞれ対応の入力に接続される。ラッチ1304.3の出力は、パイプラインステージt3におけるソフトウェアタスクがサスペンドされるべきであるかどうかを判定するのに用いられ、また、以下に説明するようにそれぞれ対応のハードウェアタスクに対するソフトウェアタスクの状態を判定するのに用いられる。

0146

すべてのラッチは同じクロック(図示せず)によりクロックされる。各ブロック1304において、ラッチ1320はそれぞれ対応のハードウェアタスク番号HT#(上のCHIDと同じ)をストアする。ラッチ1322はハードウェアタスクに対するアクティブなソフトウェアタスク番号ST#=<SN,I/E>をストアする。そのハードウェアタスクに対していずれのタスクもアクティブではない場合、ラッチ1322の出力は「ドントケア」である。

0147

このように、ブロック1304.1のラッチ1320、1322の出力は信号task# _t1を形成し(図6)、ブロック1304.2のラッチ1320、1322の出力は信号task# _t2を形成する。ブロック1304.3のラッチ1320、1322の出力はラッチ回路1360の入力に接続され、ラッチ回路1360の出力はラッチ回路1362の入力に接続される。回路1362の出力は信号task# _t5をもたらす(図6)。

0148

ブロック1304.3のラッチ1320の出力はブロック1304.0のラッチ1320の入力に接続される。

0149

各ブロック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の左の欄に示される。

0150

ラッチ1330Cにある情報は、それぞれ対応のラッチ1330Sにストアされる状態が「サスペンド」である場合にしか意味をもたない。レディおよびアクティブ状態に対しては、ラッチ1330Cにある情報は「ドントケア」である。

0151

各ブロック1304は6つのラッチ1350を含み、6つのラッチ1350は対応するハードウェアタスクに対する6つのそれぞれ対応のリクエスト、ステータスおよびコマンドFIFOの状態をストアする。可能な状態はダイヤグラム704(図8)および804(図9)に示され、上に説明したとおりである。

0152

ブロック1304.3のラッチ回路1330、1350の出力は次の状態および条件発生器1354に接続される。回路1354はタスクとリクエスト、ステータスおよびコマンドFIFOとの次の状態を生成し、また次のリリース条件値を生成する。これらの状態および条件信号はバス1358を介してブロック1304.0の回路1330、1350の入力へ与えられる。

0153

図15には回路1354がより詳しく示される。回路1354において、リソース次ステージ発生器1380はブロック1304.3のラッチ回路1350からリクエスト、ステータスおよびコマンドFIFOの状態を受取る。発生器1380はまた、いずれかのリソース、ステータスおよびコマンドFIFOの状態遷移を引き起こし得る、ダイヤグラム704および804に関連して上に説明した信号のすべてを受取る。発生器1380はダイヤグラム704および804に従ってFIFOの次の状態を計算し、次の状態を同じクロックサイクルt3においてラッチブロック1304.0のラッチ回路1350へ与える。

0154

各ラッチ回路1330の出力はそれぞれ対応の回路1390の入力に接続される。簡単にするため、タスクE1のための回路1390のみが詳しく示される。タスクE1に関して、ラッチ1330Cのリリース条件出力はマルチプレクサ1394のセレクト入力に接続される。マルチプレクサ1394のデータ入力はタスクE1に対する7つの可能なリリース条件734を受取る(表A1−3「イーグレスタスク1」のセクション)。マルチプレクサ1394に入力される各データは、対応するリリース条件が真である場合にはアサートされ条件がである場合にはデアサートされる1ビット信号である。

0155

マルチプレクサ1394により選択されるリリース条件信号(すなわち、ブロック1304.3のラッチ1330Cにストアされるリリース条件に対応する信号)はタスク次状態発生器1398に与えられる。発生器1398はまた、タスクの現在の状態をラッチ1330Sから受取り、配線410上のサスペンド信号を以下に説明するサスペンド論理およびリリース条件発生器1401から受取る。タスク次状態発生器1398は、タスクがサスペンドされたままであるかどうか、または代わりにタスクが同じクロックサイクル内にアクティブになれるかどうかを示す信号Aを発生する。信号Aは以下の表2に従って生成される。

0156

0157

アービタ1403は4つの回路1390からA出力を受取り、これらからバス1358上に以下の信号を発生する。すなわち、(1)ブロック1304.0のそれぞれ対応のラッチ1330Sに対する各タスクの次のステージと、(2)配線1404上のアクティブソフトウェアタスク番号ST#とである。ソフトウェアタスク番号はブロック1304.0のラッチ1322へ送られる。

0158

アービタ1403はまた、信号「アイドル」を発生し、これはアサートされるとどのタスクもアクティブではないことを示す(図6も参照のこと)。

0159

タスクI0、I1、E0に対する各回路1390は、マルチプレクサへのリリース条件入力を、それぞれ対応のタスク(イングレスタスク0、イングレスタスク1またはイーグレスタスク0)に対応する表A1−3のセクションから取っていることを除いて、タスクE1のためのタスク次状態発生器1398およびマルチプレクサ1394と同じである信号A発生論理を含む。

0160

サスペンド論理およびリリース条件発生器1401はブロック1304.3のラッチ回路1350の出力を受取り、また、サスペンド条件730(図8から図13および追補1の表A1−2)を計算するのに必要である信号のすべて(たとえばcfifordy、mfsel など)を受取る。ブロック1401は、ブロック1304.3のラッチ1322の出力により識別されるアクティブタスクに対するサスペンド条件を計算する。サスペンド論理1401は配線410上に、タスク次状態発生器1398と他の3つの回路1390内の同様の発生器とへサスペンド信号をもたらす。

0161

さらに、サスペンド論理1401は各マルチプレクサ1394と他の3つのブロック1390内の同様のマルチプレクサ(図示せず)とに対するリリース条件データ入力734を生成する。リリース条件は表A1−3の式に従って生成される。

0162

さらに、サスペンド論理1401はブロック1304.3におけるすべての状態ラッチ1330Sの状態出力を受取る。各タスクについて、(1)状態出力がアクティブ状態を示し、かつ(2)タスクに対するサスペンド条件のうちの1つが真である場合、サスペンド論理1401は、そのタスクをレディにするのに必要なリリース条件のインデックス734_inを発生する。別個のインデックス734_inが表A1−3のそれぞれ対応のセクションに従って各タスクに対して生成される。図15にはタスクE1のためだけのインデックス734_inが示される。

0163

これ以外のすべての場合において(すなわち、タスクに対する状態出力が「アクティブ」ではないか、または状態出力はアクティブであるがタスクに対するサスペンド条件のいずれも真ではない場合)、タスクに対するリリースインデックス734_inは「ドントケア」である。

0164

タスクE1に対するリリースインデックス734_inはマルチプレクサ1406の1つのデータ入力に与えられる。マルチプレクサの他方のデータ入力はタスクE1のためのブロック1304.3のラッチ1330Cからの条件出力を受取る。セレクト入力はタスクE1に対するブロック1304.3のラッチ1330Sの状態出力から「act」ビットを受取る。状態出力は2ビットを有する。ビット「act」は2ビットのうちの1ビットである。ビット「act」は状態が「アクティブ」であるかどうかを示す。「act」がアクティブ状態を示す場合、マルチプレクサ1406はリリースインデックス734_inを選択する。「act」が非アクティブ状態を示す場合、マルチプレクサ1406は条件ラッチ1330Cの出力を選択する。選択された信号はバス1358に与えられ、バス1358はその信号をブロック1304.0におけるタスクE1に対するラッチ1330Cへ供給する。

0165

同様に、各タスクのための各回路1390は以下のものを選択する同様なマルチプレクサ1406(図示せず)を含む。すなわち、同様なマルチプレクサ1406は(1)それぞれ対応のタスクに対するブロック1304.3のラッチ回路1330からの出力「act」がアクティブ状態を示す場合には、サスペンド論理1401からのそれぞれ対応のタスクに対するリリース条件インデックス734_inを選択し、また、(2)「act」が非アクティブ状態を示す場合には、それぞれ対応のタスクに対するブロック1304.3のラッチ1330の条件出力を選択する。選択された条件インデックスはブロック1304.0におけるそれぞれ対応のラッチ1330の入力に与えられる。

0166

いくつかの実施例では、1つのタスクがサスペンドされると、タスク特有の値を有するレジスタはセーブされない。特に、各タスクは、タスクPCおよびフラグを有するそれ自体のPCレジスタを有する(追補6を参照のこと)。さらに、レジスタファイル312は8つのバンクに分割される。各バンクは、同じチャネルからのイングレスタスクおよびイーグレスタスクの対の専用のものである。タスク対により実行されるソフトウェアは、その対の間に共通のレジスタがないような態様で書かれる。このため、レジスタファイルレジスタはタスク特有の値をストアするのだが、これらのレジスタをセーブしたりリストアしたりする必要はない。

0167

ここで説明する実施例はこの発明を限定するものではない。特に、この発明はポートの数によっても、ポートが全二重または半二重であるということによっても、いかなるタイミング、信号、コマンドまたは命令によっても限定されない。いくつかの実施例では、マイクロコントローラは、図7のパイプラインまたは何らかの別のパイプラインを有する複数の実行ユニットを含む。いくつかの実施例では、1つ以上のマイクロコントローラが、スーパースカラまたはVLIW(very large instruction word )プロセッサに存在するような複数の実行ユニットを含む。いくつかの実施例では、マイクロコントローラは複数の集積回路で実現されるプロセッサにより置換えられる。ここで用いた術語「タスク」にはプロセスおよびスレッドも含まれる。他の実施例および変更例も、添付の特許請求の範囲に記載されるこの発明の範囲内に含まれる。

0168

追補1
タスク制御ブロック

0169

0170

0171

0172

追補2
リソース
全リソースは特殊レジスタまたは専用マイクロコントローラコマンドによってアクセスされる。

0173

サーチマシン
サーチマシンは、マイクロコントローラによって書込まれるコマンドと結果との2個のリソースを有する。

0174

書込専用のコマンドリソースは16個ある(タスクごとに1個)。このリソースが利用可でない唯一の場合は、同じタスクからの先のコマンドが完了されていないときである。

0175

読出専用の結果リソースは16個ある(タスクごとに1個)。あるコマンドがサーチマシンに通知されると、そのコマンドが実行されるまで結果が利用不可となる。いくつかのコマンド(たとえば、インサートまたはデリート)は結果を持たない。

0176

チャネル制御
チャネル制御はコマンドFIFO260、リクエストFIFO230およびステータスFIFO240との3種のリソースを有する。

0177

コマンドリソースは以下の2つの場合利用不可である。
a.リソースが別のタスクに属する。この場合、他のタスクがそのリソースをリリースすると、それはこのタスクに対して利用可となる。

0178

b.コマンドFIFOがフルである。この場合、コマンドFIFOがフルでなくなると、タスクはこのリソースを使用し続けることができる。

0179

コマンドリソースはセッション保護を有する(すなわち、いくつかのコマンドがあるタスクによって書込まれ得るのはリソースが別のタスクに渡される前である)。これは、最初のアクセスの間にリソースをロックし、最後のアクセスの際にそれをアンロックすることによって達成される。コマンドリソースがロックされると、他のどのタスクもこのリソースにアクセスできない。

0180

チャネル150.xのイーグレスタスクEGxは、メッセージをスイッチ120に送るために同じチャネル150.xのイングレスコマンドFIFO260Iにコマンドを書込むことができる。イングレスコマンドFIFOがアンロックされるたびにイーグレスタスクがイングレスコマンドFIFOに書込まれ得る。イーグレスタスクがその最初のコマンドをイングレスコマンドFIFO260Iに書込むと、イーグレスタスクからの最後のコマンドが書込まれるまでコマンドFIFOがロックされた状態となる。

0181

リクエストまたはステータスFIFOリソースは以下の2つの場合利用可でない。

0182

a.リソースが別のタスクに属する。この場合、他のタスクがFIFOを読出すと、リソースはこのタスクに対して利用可となる。

0183

b.FIFOが空である。この場合、FIFOがレディになると、タスクはこのリソースを使用し続けることができる。

0184

DMA
データFIFOからのアプレットをプログラムメモリ314にダウンロードするのはDMAブロックである。このリソースは、転送前にDMAアドレスをセットし、転送完了時に最後のワードアドレスを読出すイーグレスタスクによって用いられる。転送の間に最後のワードアドレスが読出されると、最後のワードが転送されるまでタスクがサスペンドされる。また、最初の転送が完了していないときに別のイーグレスタスクによって新しいDMAアドレスを書込む試みもタスクサスペンドを引き起こす。

0185

内部メモリ170管理
内部メモリにおけるスクラッチパッドエリア内のフリーバッファ1610(図17)を管理するのは内部メモリ管理である。メモリには32個のフリーバッファがある。タスクは、次の利用可能なフリーバッファを得ることを望むとき、フリーリスト(FreeL)リソース(追補6のレジスタIFREEL)にアクセスする。バッファが残されていなければ、このタスクはサスペンドされる。このバッファを用いたチャネルコマンドによってバッファがリリースされるべきだと示されると、バッファはリリースされてフリーリストに戻る。

0186

セマフォ
セマフォレジスタsemrは32ビットを有する。その各々がマイクロコントローラの即値ビット変更(BITCI)およびBITCコマンドを用いて直接的にアクセス可能である。セマフォは保護とタスク間の通信とのために用いられる。

0187

BITCIまたはBITCコマンドが同じ値を現在のビット値としてこのビットに書込もうと試みる場合、それはアボートされ、そのタスクがサスペンドされる。その後、セマフォレジスタが変更される(レジスタにおける何らかのビットが変更される)と、セマフォを待っている全タスクがレディとなり、Bit_change_Immediate(即値ビット変更)コマンドを再び実行しようとする。

0188

セマフォレジスタのビット31−24はPIF110のそれぞれの予め定められた外部ピン(図示せず)を0から1に変更することによってセットされ得る。

0189

追補3
タスクウェイト条件
ウエイト信号をアサートできる条件は2つある。
(1)レジスタスコアボード
マイクロコントローラにおけるレジスタごとに、そのステータスを表示する1スコアボードビットがある。このビットがセットされていれば、レジスタはダーティであり、すなわち、データがLSU330によってロードされるのを待っている。起こり得るシナリオは以下のとおりである。

0190

(a)タスクがLSUによるレジスタのロードをリクエストする。
(b) タスクがソースとしてのこのレジスタの使用をリクエストする。しかしながら、スコアボードはダーティである。したがって、ウエイト信号がアサートされる。

0191

(c) 次に、LSUがレジスタをロードする。
(d)タスクがソースとしてのこのレジスタの使用を再びリクエストする。今回は使用が許可される。
(2) LSU FIFOフル
これはウエイト信号を発生するための別の条件である。ロード・ストアリクエストを待ち行列に格納しているLSU FIFOが一旦レディとなると、この条件はクリアされる。

0192

追補4
以下の表はチャネル/マイクロコントローラインターフェイスにおいて用いられるいくつかの信号をリストにして挙げる。「I」は信号がチャネルのための入力であることを意味する。「O」は信号がチャネル出力であることを意味する。

0193

0194

追補5
メモリ
内部メモリ170のマップ
内部メモリマップを図16に示す。

0195

データエリア1510(アドレス0000−1FF16進法
このエリアスクラッチパッド1610、データFIFOおよびコマンドFIFOのために用いられる。このエリアは相対アドレスを用いてアクセスされる。データエリアメモリマップ図17に示す。

0196

図17において、「DBASE_I」はイングレス側のための(後述する)CFGRレジスタの「DBASE」フィールドである。同様に、DLEN、CBASE、CLENは対応のCFGRレジスタのフィールドである。サフィックス「_I」はイングレスを表わし、「_E」はイーグレスを表わす。

0197

各チャネルのための制御エリア1520
このエリアにおけるレジスタタイプの1つは以下のとおりである。

0198

CFGR−チャネルコンフィギュレーションレジスタ(イングレスおよびイーグレス)
各チャネルの方向ごとに1個、8個のCFGRレジスタがある。それらのフィールドは以下のとおりである。

0199

DBASE(9ビット)データバッファベースポインタ(64バイト整列
DLEN (7ビット) データバッファ長(64バイト粒度)
CBASE (9ビット)コマンドバッファベースポインタ(64バイト整列)
CLEN (3ビット) コマンドバッファ長(64バイト粒度)
AP(4ビット)フレーム制御ワードが無効であるときのデータ読出ポインタデータ書込ポインタとの間の最小ギャップ(8バイト粒度)。

0200

データエリア1530(アドレス4000−5FFF16進法)
このエリアは上述の米国特許出願出願人書類番号M−4855 USに説明される。

0201

追補6
マイクロコントローラレジスタ
レジスタファイルマップ
レジスタファイル312は8個のバンクへと分割される(図18)。各バンクは同じチャネル150.xからの1対のイングレスタスクとイーグレスタスクとの専用のものである。いくつかの実施例では、イングレス処理の方がより複雑なのでイングレスタスクがイーグレスタスクよりも多くのレジスタを用いる。また、いくつかの実施例では、タスクソフトウェアは、2つのタスク間に共通のレジスタがないようなものである。

0202

各レジスタr0.0−r7.7は1バイトの幅である。連続する8バイトがレジスタファイルから並列に読出され得る。7ビットレジスタアドレスを形成するために、レジスタ番号(0から63)が、それ自体チャネルID「CHID」とタスク対番号(0または1)とを連結したものであるバンクIDと連結され、アドレスMSBが(特殊レジスタ314に対して)レジスタファイル312を表示するために0となる。

0203

マイクロコントローラレジスタマップ
マイクロコントローラにおける全レジスタがマイクロコントローラコマンドによって直接的にアクセス可能である。レジスタマップはレジスタファイル312および特殊レジスタ315という2領域に分割される。レジスタアドレスは7ビットからなる。特殊レジスタ315ではアドレスMSBが1であり、レジスタファイル312ではMSBが0である。

0204

データメモリ316
データメモリ316(図19)は変数一時記憶と後述するいくつかのパラメータとのために用いられる。

0205

したがって、データメモリ316は以下の3領域に分割される。
a.タスクごとのタスクレジスタtr0−tr5(タスクごとに6個)。これらのレジスタはそれぞれのタスク専用である。

0206

b.チャネルレジスタcr0−cr3(チャネル150.xごとに4個)。これらのレジスタはハードウェアタスク専用である。同じチャネルの全タスク(2個のイングレスタスクおよび2個のイーグレスタスク)がこれらのレジスタにアクセスする。

0207

c.グローバルレジスタgr(16個のレジスタ)。これらのレジスタは全タスクに対してグローバルである。

0208

データメモリ316は32ビットの128ワードである。データメモリ316のための7ビットアドレス発生方式を図20に示す。

0209

trはタスクレジスタ番号(0−5)である。tnはタスク番号(0−15)である(trおよびtnがタスクレジスタアドレスを形成する)。

0210

crはチャネルレジスタ番号である(0−3;「110」、crおよびcnがチャネルレジスタアドレスを形成する)。

0211

cnはチャネル番号(0−3)である。grはグローバルレジスタ番号(0−15)である。

0212

特殊レジスタ(SR)315(以下の表A6−1参照)は(レジスタファイルと同様に)マイクロコントローラコマンドによって直接的にアクセス可能である。特殊レジスタ315は以下の3タイプに分割できる。

0213

a.タスクに属するレジスタ、たとえば、プログラムカウンタ(PC)、タスク番号(TIN)等。

0214

b.リソースレジスタ、たとえば、リクエストFIFO(reqf)、ステータスFIFO(sttf)、サーチマシンコマンド(scmd)等(追補2参照)。

0215

c.データメモリ316レジスタ、たとえば、タスクレジスタ(tr)、チャネルレジスタ(cr)およびグローバルレジスタ(gr)。

0216

リソースおよびデータメモリ316(タイプ(b)および(c))はそのアクセスを簡単にするために特殊レジスタにマッピングされる。

0217

適切な特殊レジスタを以下の表に手短に述べる。

0218

0219

いくつかの特殊レジスタのレジスタフィールは以下のとおりである。
PC−プログラムカウンタおよびフラグ
PC (10ビット) プログラムカウンタ
G (1ビット) フラグ−より大きい
L (1ビット) フラグ−より小さい
E (1ビット) フラグ−等しい
C (1ビット) フラグ−桁上げ
G、L、EおよびCは読出専用である。

0220

TN−タスク番号
CHID (2ビット)チャネルId
SN (1ビット)シーケンス番号
I/E (1ビット)イングレス(0)/イーグレス(1)。

0221

SCMD、SCMDE−コマンドおよびコマンド拡張
書込動作の間、これらの32ビットレジスタはサーチマシンのためのコマンドを形成する。読出動作の間、これらのレジスタは結果を与える。SCMDEはSCMDの前に書込まれるべきである。

0222

XFREEL−外部フリーリスト
このレジスタへの書込によって、1ブロックが外部メモリ200におけるフリーリストスタックに付加される。このレジスタからの読出によって、1ブロックがスタックから取除かれ得る。

0223

1チャネルごとに1個のフリーリストスタックがある。各レジスタはスタックの先頭を指す16ビットポインタを含む。

0224

TIMER−汎用タイマ
Timer (32ビット)タイマ値タイマシステムクロックが8計時するごとに進む自走カウンタである。

0225

NXTE (16ビット)エイジングがあるか調べるための次エントリを指すポインタ。このフィールドは書込専用である。リセット後に初期化されるべきである。

0226

ET (1ビット)タイマ更新イネーブル。このフィールドは書込動作の間に用いられる。ET=1であれば、タイマは書込まれた値をとる。ET=0であれば、タイマカウンタは書込によって影響を与えられない。

0227

EN (1ビット) 次エントリ更新イネーブル。このフィールドは書込動作の間に用いられる。EN=1であれば、次ポインタが新しい値を得る。EN=0であれば、NXTEフィールドが無効である。

0228

SMCNTL−サーチマシン制御レジスタ
Pointer (16ビット)ノードエリア開始ポインタ。このポインタはサーチノードエリアを定義する(このエリアの後部が0xFFFFである)。自動エイジング機構はこのエリア内でのみ実行される。

0229

AGE (1ビット)エイジングイネーブル(0−ディセーブル;1−イネーブル)。

0230

FLCNT−フリーリストカウンタ
この読出専用レジスタはメモリ170のスクラッチパッドエリアにおけるフリーリスト内のエントリ数を含む。

0231

Count (17ビット)カウンタ(最大値は0x10000である)。
AGEL0、AGEL1−エイジリスト0、1の先頭
これらは読出専用レジスタである(チャネルごとに2個)。各々がエイジリストの先頭を含む(チャネルごとに2個のエイジリストがある)。これらのレジスタのどの1つからの読出もレジスタをクリアさせる。ここで、ノード(追補8)におけるTSTMP(タイムスタンプ)がこのリストにおけるノードを互いにリンクするために用いられる。レジスタが0なら、リストは空である。

0232

Pointer (16ビット)リストポインタの先頭。
しきい値0、しきい値1−しきい値レジスタ
これらのレジスタの各々は対応のエイジリストと関連したしきい値を含む。

0233

|current _time-timestamp|>しきい値であり、かつエントリがLRND(学習されたエントリ)のタイプであると、エントリはエイジリストに付加される。

0234

threshold (16ビット)しきい値。
MSGR−メッセージレジスタはマイクロコントローラとスイッチ120CPU(図示せず)との間でメッセージを転送するために用いられる。メッセージはヘッダラインによって転送される。

0235

MSGA (16ビット) MSGRに書込むときはCPUへの、レジスタを読出すときはCPUからのメッセージ。このフィールドは読出の後にクリアされる。

0236

MSGB (16ビット)レジスタを(テストのために)読出すときのCPUへのメッセージ。

0237

DMAA−DMAアドレス
OP (3ビット) 動作
000−nop
001−EPROM204からのロード
010−スイッチ120からのロード
111−リリース
EPA (13ビット) EPROM開始アドレス
LER (1ビット)ロードエラー
PMA (10ビット)プログラムメモリアドレス

0238

EMR−セマフォレジスタ
S[i] (1ビット)セマフォビット「i」。

0239

IFREER−内部フリーレジスタ(16ビット)
F[i] (1ビット)メモリ170のスクラッチパッドエリアにおけるブロック「i」がフリーであるかどうかを示す。

0240

IFREEL−内部フリーリスト
BLKN (5ビット)フリーブロック番号(すなわち、スクラッチバッファ番号:図17参照)。このレジスタの読出によってスクラッチバッファBLKNがフリーリストから取除かれる。このレジスタへの書込によって、書込まれるBLKN値によって特定されるバッファがフリーリストに戻される。

0241

MIR−MII制御レジスタ
このレジスタはMII制御インターフェイスによってイーサネットPHY装置と通信するために用いられる。

0242

BSY (1ビット)ビジー。新しいコマンドでセットされ、コマンド完了時にリセットされる。

0243

ID=000019HE=025 WI=055 LX=0325 LY=0300
NV (1ビット) 有効でない。PHYからのデータが有効でないときにセットされる。

0244

FIAD (5ビット) PHYアドレス
RGAD (5ビット)レジスタアドレス
Data (16ビット) データ。

0245

追補7
マイクロコントローラ命令
3オペランド命令
これらの命令はオペランド_A とオペランド_B との間で算術論理演算を行なう。結果はオペランド_C に書込まれる。命令は以下のとおりである。

0246

DD加算
SUB−減算
OR−論理OR
AND−論理AND
XOR−論理XOR
SHL左シフト
SHR−右シフト
BITC−ビット変更
命令サイズフィールドがオペランドサイズを特定する。

0247

命令における2ビット「dt」フィールド(行先タイプ)が以下のようにオペランド_C のタイプを特定する。

0248

dt=00−オペランド_C はレジスタファイル312または特殊レジスタ315におけるレジスタである。

0249

dt=10−オペランド_C はメモリ170内にある。オペランド_Cフィールドはアドレス発生のためにロード/ストアユニットにおいて7ビット即値として用いられる。

0250

dt=x1−オペランド_C は外部メモリ200内にある。オペランド_Cフィールドはdt[1]ビットとともにアドレス発生のためにロード/ストアユニットにおいて8ビット即値として用いられる。

0251

ここで、非ゼロdtを有する命令はそのオペランドとしてリソースを用いることができない。

0252

即値バイトでの2オペランド命令これらの命令はオペランド_A と即値バイトとの間で算術論理演算を行なう。結果はオペランド_C に書込まれる。命令は以下のとおりである。

0253

ADI−即値加算
SBI−即値減算
RI−即値論理OR
ANDI−即値論理AND
XORI−即値論理XOR
SHLI−即値左シフト
SHRI−即値右シフト
BITCI−即値ビット変更
サイズフィールドがオペランドのサイズを特定する。

0254

命令の2ビット「dt」フィールド(行先タイプ)が3オペランド命令におけるようにオペランド_C フィールドのタイプを特定する。

0255

2オペランド命令
これらの命令は2つのオペランドの間で移動演算および比較演算を行なう。命令は以下のとおりである。

0256

MOVE−オペランドAをオペランドCに移動させる
CMP−オペランドCとオペランドAとを比較する
命令のサイズフィールドがオペランドのサイズを特定する。

0257

即値での1オペランド命令
これらの命令はオペランドと即値フィールドとの間で移動演算および比較演算を行なう。命令は以下のとおりである。

0258

MVIW−即値ワードを移動させる
MVIB−即値バイトを移動させる
CPIB−即値バイトを比較する
CPIW−即値ワードを比較する
命令のサイズフィールドがオペランド_C のサイズを特定する。

0259

即値フィールドでの特殊1オペランド命令
これらの命令は以下のようにオペランドCに対して演算を行なう。

0260

SMWR−サーチマシン書込
CMD−チャネルコマンド書込
CASE−ケースステートメント
BTJ−ビットテストおよびジャンプ

0261

ロードおよびストア命令
これらの命令はオペランドAとメモリ170または200との間でロードおよびストア演算を行なう。命令は以下のとおりである。

0262

OA
STORE
「dt」フィールド(行先タイプ)が以下のように行先のタイプを特定する。

0263

dt=10−行先がメモリ170である。即値フィールドはアドレス発生のためのロード/ストアユニットにおいて7ビット即値として用いられる。

0264

dt=x1−行先がメモリ200である。即値フィールドはdt「1」ビットとともにアドレス発生のためのロード/ストアユニットにおいて8ビット即値として用いられる。

0265

特殊即値命令
この命令はCMDI(即値コマンド)である。これはコマンドFIFOに書込むために用いられる。

0266

選択された命令
ADD、SUB、ADI、SBI
フラグ:Eは結果が0に等しいときにセットされる
Cは(ADD、ADIのための)キャリーまたは(SUB、SBIのための)ボローが(オペランドopCのサイズに基づいて)発生されたときにセットされる。

0267

OR、AND、XOR、SHL、SHR、ORI、ANDI、XORI、SHLI、SHRI
フラグ:Eは結果が0に等しいときにセットされる。

0268

BITC−ビット変更
オペランド:ビット[31:25]=opC、[24:18]=opA、[17:16]=dt、[14:8]=opB、[7]=v
演算:opC<-opA[opB]<-v(すなわち、opCにおけるビット番号opBがvにセットされること以外では、opCがopAの値を受取る)
フラグ:Eは(opA[opB]==v)であるときにセットされる。

0269

BITCI−即値ビット変更
オペランド:ビット[31:25]=opC、[24:18]=opA、[17:16]=dt、[12:8]=imm、[7]=v
演算:opC<-opA[imm]<-v
フラグ:Eは(opA[imm]==v)であるときにセットされる。

0270

CMP−比較
オペランド;ビット[31:25]=opC、[24:18]=opA、[7:5]=オペランドサイズ
演算:opC?opA
フラグ:Eは(opC==opA)であるときにセットされる
Gは(opC>opA)であるときにセットされる
Lは(opC<opA)であるときにセットされる。

0271

CPIW−即値ワード比較
オペランド:ビット[31:25]=opC、[23:8]=imm
演算:opC?imm
フラグ:Eは(opC==imm)であるときにセットされる
Gは(opC>imm)であるときにセットされる
Lは(opC<imm)であるときにセットされる。

0272

CPIB−即値バイト比較
オペランド:バイト[31:25]=opC、[23:16]=bit _mask、[15:8]=imm
演算:(bit _mask & opC)?imm
フラグ:Eは((bit _mask & opC)==imm)であるときにセットされる
Gは((bit _mask & opC)>imm)であるときにセットされる
Lは((bit _mask & opC)<imm)であるときにセットされる。

0273

LOAD−内部メモリまたは外部メモリからのロード
オペランド:ビット[31:25]=aop、[24:18]=opA、[17:16]=dt、[7]=i、[6]=f
演算:
if [dt==10] opA<-IM[{aop,imp }] ; imp=imp+i ;
if [dt==x1] opA<-XM[{aop,xmp }] ; xmp=xmp+i ;
IMは内部メモリ170であり、impは内部メモリポインタレジスタ(表A6−1)であり、XMは外部メモリ200であり、xpmは外部メモリポインタレジスタ(表A6−1)である。

0274

fビットがセットされると、ロード命令の実行は同じチャネルからの先のストア演算が完了していなければ遅延される。

0275

aopはimpまたはxmpと連結されるアドレスビットである(「{}」は連結を示す)。

0276

STORE−内部メモリまたは外部メモリへのストア
オペランド:ビット[31:25] = aop, [24:18] = opA, [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命令と同じ意味を有する。

0277

SMWR−サーチマシンコマンド書込
オペランド:ビット[31:25] = opC, [23:8] = imm
演算:scmd<-{opC[63:16], imm }。

0278

CMDI−チャネルへの即値コマンド
オペランド:ビット[31:8] = imm, [7] = L, [6] = P
演算:
Command _port <- {40'b0, imm}
ここで40′b0は40個の2進を示す。

0279

ifP=0, Command _port = cmd_i ; (イングレスコマンド)
ifP=1, Command _port = cmd_e ; (イーグレスコマンド)
命令Lフラグ(1ビット)はロック/アンロック制御である(セットされると、命令のロック状態が変更される)。

0280

CMD−チャネルへのコマンド
オペランド:ビット[31:25] = opC, [23:8] = imm, [7] = L, [6] = P
演算:
Command _port <- {opC[63:16],imm}
ifP=0, Command _port = cmd_i ; (イングレスコマンド)
ifP=1, Command _port = cmd_e ; (イーグレスコマンド)
命令における1ビットLフラグがロック/アンロック制御である(セットされると、ロック状態が変更される)。

0281

CASE
オペランド:ビット[31:25] = opC, [23:16] = bit_mask, [12:8] =シフト
演算:PC<-PC+ ((opC&bit _mask)>>シフト)+1。

0282

BTJ−ビットテストおよびジャンプ
オペランド:ビット[31:25] = opC, [24:13] = addr, [12:8] = ビット, [7]= v
演算:if(opC[bit]==v )then PC<-addr 。

0283

追補8
サーチマシン
サーチマシンは周知のパトリシアツリー構造を用いる(1996年8月13日にG. C. Stone に発行され、引用によりここに援用される米国特許第5,546,390号「基数判定パケット処理のための方法および装置」(“Method and Apparatus for Radix Decision Packet Processing ”)を参照されたい。

0284

図21ツリーノード2400を示す。各ノードは64ビットの4ワードの長さである。ノードフォーマットは以下のとおりである。

0285

0286

0287

0288

0289

0290

0291

0292

0293

図面の簡単な説明

0294

図1この発明によるプロセッサを含むシステムのブロック図である。
図2図1のシステムにおけるリソースを示すブロック図である。
図3図1のシステムにおけるデータフレーム処理を示すタイミング図である。
図4図1のシステムにおけるデータフレーム処理を示すタイミング図である。
図5図1のシステムにおいて異なるタスクがどのように共用されるリソースにアクセスするのかを示す論理図である。
図6図1のシステムにおいて用いられるプロセッサのブロック図である。
図7図6のプロセッサの命令実行パイプラインを示す図である。
図8図1のシステムにおけるタスクおよびリソース状態遷移を示す図である。
図9図1のシステムにおけるタスクおよびリソース状態遷移を示す図である。
図10図1のシステムにおけるタスクおよびリソース状態遷移を示す図である。
図11図1のシステムにおけるタスクおよびリソース状態遷移を示す図である。
図12図1のシステムにおけるタスクおよびリソース状態遷移を示す図である。
図13図1のシステムにおけるタスクおよびリソース状態遷移を示す図である。
図14図6のプロセッサのタスク制御ブロック回路のブロック図である。
図15図6のプロセッサのタスク制御ブロック回路のブロック図である。
図16図1のシステムのためのメモリマップの図である。
図17図1のシステムのためのデータエリアメモリマップの図である。
図18図1のプロセッサのためのレジスタファイルマップの図である。
図19図1のプロセッサのためのデータメモリマップの図である。
図20図19のデータメモリのためのアドレス発生を示す図である。
図21図1のシステムにより用いられるアドレス導出データベースにおけるツリーノードを示す図である。

--

0295

110ポートインターフェイス(PIF)回路、120ATMスイッチ、130 MAC、140スライサ、150チャネル、160マイクロコントローラ、170内部メモリ、190サーチマシン(SM)、200外部メモリ、210入力制御ブロック、220 データFIFO、230リクエストFIFO、240ステータスFIFO、250出力制御、260コマンドFIFO、310 マイクロコントローラ命令実行ユニット、312レジスタファイル、314マイクロコントローラプログラムメモリ、315特殊レジスタブロック、316データメモリ、318ALU、320タスク制御ブロック、330 ロード/ストアユニット(LSU)、340DMAブロック、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スクラッチバッファ。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ