JP3877529B2 - マルチストリーミングデジタルプロセッサ用のストリーム間制御および通信 - Google Patents
マルチストリーミングデジタルプロセッサ用のストリーム間制御および通信 Download PDFInfo
- Publication number
- JP3877529B2 JP3877529B2 JP2000607105A JP2000607105A JP3877529B2 JP 3877529 B2 JP3877529 B2 JP 3877529B2 JP 2000607105 A JP2000607105 A JP 2000607105A JP 2000607105 A JP2000607105 A JP 2000607105A JP 3877529 B2 JP3877529 B2 JP 3877529B2
- Authority
- JP
- Japan
- Prior art keywords
- stream
- streams
- control
- master
- resources
- 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
Links
- 238000004891 communication Methods 0.000 title description 7
- 238000000034 method Methods 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 28
- 230000007246 mechanism Effects 0.000 claims description 14
- 238000012544 monitoring process Methods 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 10
- 230000000903 blocking effect Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 description 21
- 230000008569 process Effects 0.000 description 17
- 238000007667 floating Methods 0.000 description 11
- 238000013468 resource allocation Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 235000019580 granularity Nutrition 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 239000000203 mixture Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
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)
- Multi Processors (AREA)
- Advance Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
(技術分野)
本発明はデジタルプロセッサに関し、より詳細には当業者間でマルチストリーミングプロセッサと呼ばれる、複数のプロセスストリームを同時に実行できる装置に関する。
【0002】
(背景技術)
複数のスレッドを処理することができるマルチストリーミングプロセッサは、当業者の間で既知であり、かなりの研究開発の主題であった。本発明は、この分野での過去の研究に注意し、その研究に基づき、装置および方法における新規のかつ非自明の改善を技術にもたらす。発明者は、本特許出願に、ここに開示されている本発明のいくつかの態様の追加の背景および文脈をともに提供する、マルチストリーミングプロセッサの技術分野で公開されている多くの論文を一覧表示する情報開示ステートメントを提供した。
【0003】
定義の目的のため、本明細書は、処理システムに関するストリームを、命令スレッドをサポートし、処理するためのプロセッサのハードウェア機能として見なす。スレッドは、ストリーム内で実行する実際のソフトウェアである。例えば、デスクトップコンピュータを操作するためのCPUとして実現されるマルチストリーミングプロセッサは、同時に、ワープロプログラムおよびオブジェクト指向描画プログラムなどの2つまたは3つ以上のアプリケーションからのスレッドを同時に処理してよい。別の例として、マルチストリーム機能のあるプロセッサは、パケット交換網のルータなど、通例の人間の命令なしに機械を動作してよい。例えば、ルータ内では、ネットワーク上でデータパケットを処理し、転送するための1つまたは複数のスレッド、ネットワークに接続しているその他のルータおよびサーバとのサービスの質(QoS)取り決めのための別のスレッド、およびルーティングテーブル等を維持するための別のスレッドがあってよい。任意のマルチストリーミングプロセッサの複数の並行スレッドを処理する最大能力は、プロセッサがサポートするハードウェアストリームの数で固定されたままである。単一スレッドを動作するマルチストリーミングプロセッサは、未使用ストリームがアイドル状態にある単一ストリームプロセッサとして実行する。本発明の目的のため、ストリームは、ストリームがスレッドをサポートしているときはつねにアクティブストリームと見なされ、それ以外の場合は非アクティブと見なされる。
【0004】
前述されたように、および本ケースでIDSによって提供される論文中では、スーパースケーラプロセッサも技術分野で既知である。この用語は、1つまたは複数の型の機能ユニットの集まりを有し、複数の機能ユニットに並行命令を発行する能力を有するプロセッサを指す。今日構築されている大部分の中央処理装置(CPU)は、各型の複数の機能ユニットを有し、この定義によりスーパースケーラプロセッサである。例えば、複数の浮動小数点ユニット、整数ユニット、論理装置、ロード/記憶装置等を含む多くのこのような装置を有するものもある。マルチストリーミングスーパースケーラも、当業者間で既知である。
【0005】
発明者は、前述された型を含むが、それらに制限されないすべての型のマルチストリーミングプロセッサのアーキテクチャに無視されていた分野があることを突き止めた。無視されていた分野とは、並行ストリーム間の通信と、アクティブであるかどうかに関係なく、複数の並行スレッドの活動が調整されるように、また機能ユニットへのアクセスなどの活動が処理での多様なニーズを満たすために動的に共用されてよいように、あるアクティブストリームが別のストリームでアサートしてよい制御タイプの分野である。
【0006】
したがって、当業者に明確に必要とされているのは、スーパースケーラプロセッサおよび命令をインタリーブするプロセッサを含むが、それらに制限されないマルチストリーミングまたはマルチスレッディングをサポートする、すべてのプロセッサアーキテクチャにおけるさらに精密なストリーム間制御および通信のための装置および方法である。本発明は、詳細を実行可能化する上で下記に開示されるこのような装置および方法を教示する。マルチストリームプロセッサアーキテクチャには重要な柔軟性、効率および堅牢さがさらに提供され、時間が肝要なスレッドを処理する能力は、かなりの追加の利点だけではなく、実現のための追加ゲートの数での相対的に低い費用で機能拡張される。
【0007】
(発明の開示)
本発明の好ましい実施形態においては、1つまたは複数の命令スレッドをストリーミングするための複数のストリームと、ストリームからの命令を処理するための機能リソースのセットと、任意のストリームが他のストリームの動作に影響を与えるストリーム間制御機構とを備える、マルチストリーミングプロセッサが提供される。変形実施形態においては、ストリーム間制御機構は、別のストリームを実行可能化する、あるいは実行不能化すること、別のストリームをスリープモードにする、または別のストリームをスリープモードから呼び覚ますこと、機能リソースへのアクセスに関して別のストリームの優先順位を設定すること、および別のストリームによる機能リソースへのアクセスの阻止を許可することの1つまたは複数を達成するための機構を含む。
【0008】
いくつかの実施形態においては、ストリーム間制御機構は、あるストリームにマスタステータスが付与され、任意のストリームによる干渉も受けずに他のストリームに関してあらゆるすべての使用可能な制御機構を実行してよいマスタモードを含む。また、いくつかの実施形態においては、ストリーム間制御機構は、制御特権を改変または取消してよい、制御されるストリームの準拠をもって、制御が最小制御から完全制御まで付与されうる監視モードを含む。
【0009】
ストリーム間制御階層のために、マスタステータスおよびストリーム間制御階層が少なくとも1つのオンチップビットマップによって記録され、修正される機構などの色々な機構が実現されてよい。この機構においては、それぞれのストリームが、それぞれ他のストリームに関する制御特権を付与する、または取消すビットマップを維持、編集し、設定値は、設定値を無視するマスタストリーム以外の任意のストリームに有効である。
【0010】
本発明の別の態様においては、(a)任意のストリームがそれ以外のストリームで制御機能を実行してよい、ストリーム間制御機構をプロセッサ内で実現するステップと、(b)自分以外のすべてのストリームの制御の範囲が記録される、各ストリームと関連付けられた制御アクセス特権を確立するステップと、(c)ストリームごとに記録される適用範囲内で制御機構を使用して動作ストリーム間でストリーム間制御を行使するステップとを備える、マルチストリーミングプロセッサの別個のストリームで並行して実行しているソフトウェアスレッドの間で協力を提供するための方法が提供される。
【0011】
この方法においては、制御の適用範囲は、別のストリームを実行可能化する、または実行不能化すること、別のストリームをスリープモードにするまたは別のストリームをスリープモードから呼び覚ますこと、機能リソースへのアクセスに関して別のストリームの優先順位を設定することと、別のストリームによる機能リソースへのアクセスの阻止を許可するステップの内の1つまたは複数を含んでよい。さらに、あるストリームがマスタステータスを付与され、それによって任意のストリームによる干渉を受けずにその他のストリームに関してあらゆるすべての使用可能な制御を実行してよい、マスタモードを設定するためのステップがあってよい。まださらに、制御特権を改変または取消してよい、制御されているストリームに準拠して、制御が最小制御から最大制御まで付与される可能性がある監視モードもあってよい。この方法では、マスタステータスおよびストリーム間制御階層は、少なくとも1つのオンチップビットマップによって記録され、修正されてよく、そこではそれぞれのストリームが、それぞれのその他のストリームに対する制御特権を付与または取消すビットマップを維持し、編集し、設定値は、設定値を無視するマスタストリーム以外の任意のストリームに有効である。
【0012】
本発明のその他の態様においては、計算機システムは、本発明の実施形態に従ったプロセッサを使用して教示される。変形実施形態、および本発明の応用においては、マルチストリーミングプロセッサにおいて制御のための新しい能力が提供され、当業者に新しくかつ強力な概念、プロセッサおよびシステムをもたらす。
【0013】
(発明を実施するための最良の形態)
同じプロセッサ内で動作する複数のアクティブストリームは、多くの場合、サポートされているスレッドの性質によって結び付けられる。したがって、あるストリーム(アクティブストリーム)で実行しているスレッドが1つまたは複数のその他のアクティブストリームの機能を開始および制御することが許可される場合には、優位性が得られうる。アクティブストリームは、同じタスクでの作業を共用し、したがってデータを渡す効率的な方法を必要としうる。あるアクティブストリームは、一時的に、一定の処理リソースの、あるいは総スループットの独占的な使用を必要とすることがある。このようなアクティブストリームは、他のアクティブストリームがさらに少ないリソースで可能な限り効率的に動作し続けることができるようにする一方で、その特定の要求を表明する方法を必要とする。こういったことはすべてのマルチストリーミングプロセッサで問題となる。以下に続くこの概念および説明においては、特定のスレッドを実行しているストリームがアクティブストリームであること、およびまたスレッドコンテキストがレジスタファイルによってアクティブストリームに関連付けられていることを想起するとよい。
【0014】
優先権書類09/216017号に記述されているように、マルチストリーミングプロセッサは、2つまたは3つ以上の命令スレッドを並行して実行するための物理的なストリームリソース、および複数のレジスタファイルも有する。本発明はこのようなすべてのプロセッサに、および他の方法でマルチストリーミングを達成してよいプロセッサにも適用する。本発明の変形実施形態においては、編集可能特性のセットがアクティブストリームのために保たれ、これらの特性が、その特定のストリームに優先して他のアクティブストリームによって行使されてよい制御の形式を統制する。これらの編集可能な特性は、便宜的に、あるいは特別な理由のために変形実施形態において複数の形式のどれか1つを取ってよい。好ましい実施形態においては、編集可能な特性は、この装置により動作中非常に迅速なアクセスが可能となるため、プロセッサチップ上のシリコンで実現される。しかしながら、本発明は、このようには制限されず、このような特性は他の方法で記憶され、編集可能であってよい。編集可能な特性は、さまざまな状況および異なった実施形態においてストリームに特殊またはコンテキストに特殊のものとしてマッピングされてもよい。
【0015】
ある例示的な実施形態においては、個々のビットまたはビット組み合わせのバイナリ値が個々のストリームと関連付けられ、ストリーム間の通信および制御に関する特定の意味を割り当てられるビットマップが維持され、以下にさらに詳しく説明される、特定のときのストリーム間の監視階層、各ストリームのプロセッサリソースへのアクセス、およびマスタストリームモード、実行可能化モード、および実行不能化モードの状態制御などの事柄を示す。
【0016】
前述されたビットマップにおいては、いくつかの監視制御ビットが、他のアクティブストリームがそれぞれの個々のアクティブストリームに関して行使してよい制御の形式を統制する。アクティブストリームは、注意深く定められた範囲内で、それ自体の制御ビットを設定し、リセットしてよく、適切な許可を得たその他のアクティブストリームもこのようにしてよい。時間の任意の時点でマスタスレッドは、マスタスレッドを実行している間にマスタストリームと指定されるストリームで実行してよく、マスタストリームはスレーブストリームに関して完全な制御を有し、任意の時点でスレーブストリームの制御ビットを無視(override)してよい。実行中である複数のマスタストリームがある場合には、それぞれ異なる指定されるスレーブストリームを有してよい。適切な制御設定値を使用して、アクティブストリームはその他のアクティブストリームのスーパバイザとしての役割を果たし、一時的に(典型的には)その実行を制御し、それらと通信してよい。さらに、マスタストリームは、アクティブなスレーブストリームが使用してよい処理リソースに関する制御を有し、スーパバイザストリームは、直接的に、あるいはストリームの優先順位を修正することによってのどちらかにより、アクティブなスレーブストリームが使用してよい処理リソースに関する制御を有してよい。
【0017】
図1Aは、命令スケジューラがアクティブストリームからの命令を機能リソース107にディスパッチする複数のスレッドから0から3と名前が付けられた4つのストリーム103に命令を提供する命令キャッシュ103を示す、本発明の実施形態に従ったマルチストリーミングプロセッサの一般化された図である。このケースでは4であるがさらに多くてもよい複数のレジスタファイル109のセットが、処理中にアクティブストリームと関連付けられるスレッドコンテキストを記憶するためなど、処理で使用するために示される。データがレジスタファイルおよびキャッシュ111に、およびレジスタファイルおよびキャッシュ111から流れ、機能リソースは、参照によって本明細書に組み込まれている優先権書類09/240012号で教示されるようにレジスタ転送装置(RTU)を含んでよい。
【0018】
本実施形態においては、唯一のストリーム間制御ビットマップ115が、個々のビットおよび、いくつかのケースでは、前記に紹介されたように、個々のストリームと関連付けられ、ストリーム間通信および制御に関して特定の意味を割当てられているビット組み合わせのバイナリ値を記憶する。共用されるシステムバス113は、命令およびデータキャッシュを接続する。示されている図面は例示的で、一般的であり、当業者は、なされてよい多くの変形があることを認識するだろう。この目的の重要さは、非常に多数のスレッドを同時にサポートするように適応される非常に多数のストリームにある。
【0019】
ストリーム間制御ビットマップ115は、ストリーム間制御を定義し、構成する制御設定値の基準レポジトリである。この基準では、いくつかのインスタンスでは単一ビット、および他のインスタンスでは2個または3個以上のビットによって表されるバイナリ値が、共用されているシステムリソースのアクティブストリームの優先順位、特定のストリームに対する固定されたリソース割当て、およびアクティブストリーム間の制御階層などの事柄を定義する。ある例示的な実施形態での特定の制御特性を以下に示す。
【0020】
本発明のこの実施形態における制御のある態様においては、アクティブストリームは、そのストリームに一意の制御基準データを設定し、編集することを可能にされる。別の態様においては、あるストリームは他のストリームの制御基準データを改変してよい。後者の態様においては、それぞれの特定のストリームが、どの他のストリームが特定のストリームのどの制御データを編集してよいのかを制御してよい。
【0021】
図1Bは、図1Aのビットマップ115の一部であり、あるストリーム、このケースではストリーム0によって付与される、他のストリームがストリーム0と一意に関連付けられている制御ビットを改変したり、ストリーム0に関して特定の制御機能を実行するための許可の状態を示すために設定されるビットを示す。この実施形態での類似するビットマップが、ストリーム1、2および3のそれぞれについて存在するが、一つの例でこの説明は十分である。このマトリックスでは、ストリーム1、2および3ごとの行、および制御定義のための列がある。やはり、これらのビットはアクティブストリーム0によって設定されてよく、ビットマップを編集するための動機は、ストリーム0の中で実行しているスレッドの性質によって定義されるだろうストリーム0の機能に関係付けられるだろう。しかしながら、ビットマップは、マルチストリーミングプロセッサ内のストリームと関連付けられる物理リソースであり、ストリーム間制御および協力の複数の形式および程度を実行可能化するために存在する。
【0022】
図1Bの左から第1の列は監視と名前が付けられ、監視許可を示す。ストリーム1と2の行の論理(Logical)1は、ストリーム0がストリーム1と2に監視アクセスを付与するが、ストリーム3には付与しないことを示す。監視アクセスとは、これらの他のストリームが本ストリームの制御データを編集してよいことを意味する。図示されている設定値では、ストリーム0のストリーム間制御データは、ストリーム0(それ自体)およびストリーム1と2によっても編集されてよいが、ストリーム3によって編集されてはならない。それぞれのアクティブストリームは自分の制御データを編集してよいため、ストリーム1と2に対する許可は、アクティブストリーム0により任意の時点で無効にされてよく、任意の時点で再許可されてよい。
【0023】
ストリーム0が自分の制御データ構成を編集するために1つまたは複数のストリームにアクセスを付与する可能性のある状況の例としては、ストリーム0が非常に低い優先順位スレッドを実行しているか、あるいはスレッドをまったく実行しておらず、単に新規スレッドに使用可能であるケースがあるだろう。
【0024】
図1Bの第2列は実行可能化と名前が付けられている。ストリーム0はこの列のビットを使用し、ストリーム0が実行不能化されている場合にストリーム0を実行可能化するために別のストリームに対する許可を付与する。本ケースでは、この列には論理1はないため、ストリーム1、2または3のどれもストリーム0を実行可能化してはならない。図1Bの第1列に関して前述された監視編集アクセスに対する許可と、実行可能化または実行不能化などの許可の間には明確な違いがある。第1のケースでは、許可は、別のストリームが本ストリームの制御データを設定するために付与され、広い態様ではストリーム間の制御階層を構成し直す。第2のインスタンスでは、制御データに対するアクセスは別のストリームに付与されないが、別のストリームは本ストリームに対する実行可能化または実行不能化などの特殊な形式の制御を行使する許可を付与されている。実行可能化の右側の次のビット列は実行不能化であり、例示的な設定値は、ストリーム1と3はこの瞬間ストリーム0を実行不能化する許可を付与されていることを示す。
【0025】
次のビット列は優先順位と名前が付けられ、ストリームのこの列の論理1は、ストリーム0が、ストリーム0の優先順位を設定する許可を別のストリームに付与することを示す。本ケースでは、ストリーム0は他のストリームがその優先順位を設定することを可能としない。優先順位は、典型的には、プロセッサリソースへのアクセスを示すために、本発明の実施形態で設定される。次のビット列は割込みと名前が付けられ、別のストリームがストリーム0に割り込んでよいことを意味する。本ケースでは、ストリーム2には割込み特権が付与される。
【0026】
本明細書の教示を考慮すると、当業者には、図示されている行列に加えられる可能性のある色々な改訂、および特定の列の意味があることが明らかでなければならない。また、行列の図が例示的であり、記述されているビットは、どのビットがどのストリームに、およびどの制御機能およびリソースに関係するのかに関して規約が守られる限り、2バイトレジスタでの個別ビットでもあるだろうことも当業者に明らかである。
【0027】
本発明の好ましい実施形態においては、ストリーム間制御は、複数のストリーム、および複数の機能リソースも有するプロセッサを意味するマルチストリーミングスーパースケーラプロセッサに関して説明される。このようなプロセッサは、例えば、複数の整数処理装置、複数の浮動点処理装置、複数の分岐ユニット等を有してよい。ビットマップ115(図1)に示されているストリーム間制御構成は、一定のリソースを一定のストリームに確保し、それらの同じリソースが他のストリームによって使用されるのを制限するために、本発明の実施形態で設定されてよい。
【0028】
図1Cは、ストリーム0の瞬間的なリソース割当てを示すビット行である。やはり、類似したリソース割当て構成はすべての他のストリームに関して存在してよいが、説明には1つで十分なはずである。このケースでは、4つの整数ユニット、4つの浮動小数点ユニット、および4つの分岐ユニットがある。本設定は、ストリーム0が整数ユニット1、2および3へ、および分岐ユニット1へのアクセスを確保していることを示す。逆に、この設定は、ストリーム0が整数4、あらゆる浮動小数点ユニット、または分岐ユニット1、2または3にアクセスしてはならないことを意味する。アクティブストリームとしてのストリーム0は、他のストリームへ制御ビット設定を許可すること、および否定することを含む、自分の構成を設定してよいため、ストリーム0(または任意のアクティブストリーム)は、特定のインスタンスでは特定のリソースを確保してよい。やはり、示されている構造が例示的であり、多くの方法で変えることができることが、当業者に明らかとなる。
【0029】
いくつかのケースでは、スーパースケーラプロセッサ内でのリソースの固定割当ておよび分割に依存するよりむしろ、ストリームに対する優先順位によって、あるいはいくつかのリソースの場合には割当ての混合、他のリソースの場合には優先順位の管理によってリソースを割り当てることで得られる。固定割当ては、単に、図1Cに図示されるように、ある時間期間の間、リソースが独占的に供給されるが、供給は、言うまでもなく、それぞれのアクティブストリームによって、あるいは許可が付与されているケースでは別のアクティブストリームによって、独自の割当てのために任意の時点で編集(改変)されてよいことを意味する。
【0030】
図1Dは、ストリーム0の優先順位設定値専用の図1のビットマップ115の一部を示す。このケースでは、優先順位は0から7まで変化してよいため、優先順位レベル設定値ごとに3個のビットが必要とされ、ビットのバイナリ値が優先順位レベルを示す。ある実施形態においては、実行優先順位、割込み優先順位およびリソース優先順位と名付けられている3つの異なる種類の優先順位がある。3つすべての種類の優先順位が、粒度は示されているより多いまたは少ないこともあるが図1Dになんらかの形で示される。
【0031】
図1Dでは、一番上の行は実行優先順位を示す。この設定値は、あるストリームに関して、スレッドがそのストリーム内で何を実行してよいのかを決定する。すなわち、スレッドは、固有の一定の優先順位を有するか、任意の優先順位を割り当てられてもよく、図1Dに図示されるような実行優先順位は、任意のストリームによって、あるいは任意のストリームのためにスーパバイザアクティブストリームによって編集されてよい。ストリームの実行優先順位より高い優先順位の付いたスレッドだけが、そのストリームで実行してよい。優先順位を有するスレッドという概念は、さまざまな方法で実現されてよい。いくつかの好ましい実施形態では、スレッドは、割り当てられかつ改変可能な優先順位を有するスレッドコンテキストによる優先順位を有する。すなわち、コンテキストがレジスタファイルにロードされると、そのコンテキストには事前に設計されたまたは決定された粒度の優先順位が割り当てられ、コンテキストがアクティブにされ、ストリームに関連付けられるとストリームに呼び出される(あるいは呼び出されるだろう)スレッドは、レジスタファイルに記憶されているコンテキストの優先順位を有するとされてよい。以下の説明でさらに明らかにされるように、いくつかのケースでは、コンテキストはレジスタファイル内以外にメモリに記憶され、初期のまたは追加の処理のために後にレジスタファイルにリトリーブされてよい。記憶されているコンテキストは、コンテキストの優先順位レベルも伝えることができる。
【0032】
図1Dの上部から2行目は、ストリーム0の割込み優先順位を示す。示されている割込み優先順位は3であり、3以上の優先順位レベルの設定された割込みだけがストリーム0に割り込んでよいことを意味する。やはり、スレッドでアクティブなときのストリーム自体、あるいはアクティブスーパバイザストリームは、割込み優先順位レベルを編集してよい。
【0033】
整数、浮動点、および分岐と名前が付けられている図1Dのストリーム0の優先順位レベル設定値の下部の3行は、プロセッサリソースの種類へのアクセスのためのストリーム0の優先順位レベルを示す。これら3つがすべての種類のプロセッサリソースを構成するものではなく、したがっていくつかの実施形態においてはリソース優先順位にさらに多くの行がある可能性があることが、当業者に明らかである。
【0034】
示されている時点で、ストリーム0は、整数ユニットの7(最高)優先順位、浮動小数点ユニットの4という優先順位、分岐ユニットの3という優先順位を有する。これらの設定値は例示的であり、代替実施形態においては、その他のプロセッサリソースのために維持されている優先順位もある。本発明の変形実施形態においては、一時的に設定されたリソース割当てが排他的に使用されてよく、その他では優先順位は排他的に使用されてよく、まだその他では2つの混合であってよい。リソース優先順位は、リソースの競合の場合に、最高の優先順位が設定されたアクティブストリームがリソースを獲得することを意味する。
【0035】
本発明のこの実施形態においては、その他の制御ビットは、制御階層および状態を示すために使用される。図1Eは、ストリーム0のこのような制御ビットを示す。この例では、図1Eのストリーム0の制御ビットは、ストリーム0が、その瞬間に、マスタスレッドを実行しており、実行可能化されているが、スリープモードにはないことを示す。これらのビットは表示するものであり、おもに動作中の他のアクティブストリームの基準用である。例えば、あるアクティブストリームが別のアクティブストリームを実行不能化すると、プロセスで、代理(acting)ストリームが補助的なストリームの実行可能化/実行不能化ビットを設定する。アクティブストリームがそれ自体をスリープモードにすると、それはスリープモードに入る前にそのスリープビットを設定するので、他のアクティブストリームは、制御ビットをチェックすることによって、そのストリームがスリープモードにあることを理解できる。あるアクティブストリームが別のアクティブストリームに対して行使してよい制御は、いくつかの例では、リソース割付けおよび/または優先順位を設定することによってなど、別のストリームの優先順位制御構成にビットを設定することによって、およびその他のインスタンスでは、ソフトウェア割込みを発行する、非アクティブストリームで新規スレッドを開始する等の他の方法によって達成される。
【0036】
マスタストリームとは、マスタスレッドを実行することによってマスタストリームなのであり、アクティブなマスタストリームは、マスタにとってスレーブストリームである他のストリームに関して完全なアクセスおよび制御を有する。ストリームが制御構成を編集する許可をマスタストリームに必ずしも付与することはない。マスタストリームは、その内の1つが、好ましい実施形態においては、マルチストリーミングプロセッサの初期セットアップである色々な機能(duties)を有してよい。本発明の実施形態に従ったプロセッサを活用するシステムでの起動時およびリセット時に、マスタストリームは典型的にはブートプロセスの何らかの時点で呼び出され、例えば、ストリームの初期優先順位を設定するため、監視ビットを設定するため、および特定のストリームで特定のスレッドを開始するためなどのために動作するだろう。これらの機能は、いくつかのデフォルト設定値が、特殊化したBIOSコードを実行することによって作成されてよい、いくつかのケースでのように、システムごとに変わることができ、および変わり、マスタスレッドは追加のセットアップ機能等のために呼び出されてよい。
【0037】
セットアップ後、マスタスレッドは、典型的にはプロセッサのストリームで実行中のままとなる必要はない。その目的を達成したマスタストリームは、それが占有するストリームで他のスレッドを開始してから退く、あるいは単に退き、非アクティブなストリームを割込みサービスルーチン、別の種類のユーティリティ機能等を実行するために、別のアクティブストリームが使用可能とするために別のスレッドを設定してよい。マスタスレッドは、多くの理由から退いた後に再び呼び出されてよい。例えば、リソースの競合がマスタに解決を要求したり、あるいは割込みまたは例外がマスタストリームに解決を要求することがある。また、いくつかのシステムにおけるマスタストリームがオペレーティングシステムまたはその一部、あるいはロードされ、システムBIOSでアクティブであるルーチン等を実行していることがあることが当業者に明らかである。本発明の実施形態に従ったいくつかのシステムにおいては、すべてのストリーム間制御機能は実行不能化され、プロセッサが、ここに教示されている制御機能のないプロセッサとしてだけ実行できるようにする。
【0038】
いくつかの実施形態においては、一定の固定された機能性があってよい。例えば、本発明に従ったプロセッサは、あるストリームを常にマスタストリームにし、他はしないために配線されてよい。「配線」は、シリコン素子に実現されているハードウェアリソースおよびその接続によって一定の機能性が事前に設定されることを意味する。その他のスレッドの特定のストリームへの特定の割当ても設定されてよい。このようなケースでは、特定のリソース優先順位および/または割当ても設定されてよいし、あるいはストリーム間機能性のそれ以外がここに教示されてもよい。このような事前設定は、例えばネットワークルータ等などのきわめて専用のシステムアプリケーションにとってきわめて望ましいだろう。
【0039】
ここの教示に従って、制御データが表され、記憶され、アクセスされてよい多くの方法があることが当業者に明らかとなるだろう。ここに示されている図は例示的である。好ましい実施形態では、制御データマップは、プロセッサチップの上に直接的にシリコン素子で実現される。この装置は、とりわけ、制御データへのアクセスが高速であるために好ましい。しかしながら、いくつかの実施形態においては、制御ビットマップは、RAMのそれ以外に使用されていない部分に、あるいはフラッシュカードメモリ上などのシステム内での任意のアクセス可能なメモリデバイス内にあってよい。
【0040】
本発明のある態様に従ったシステム内でのマスタスレッドの概念および存在が前述されてきた。その他のすべてのスレッドはマスタスレッドに対するスレーブであるため、1つのマスタストリーム以外のすべてのアクティブストリームはマスタにとってスレーブストリームである。しかしながら、マスタとスレーブ以外の他のレベルの制御がある。特定のストリームは監視制御を付与されてよく、前記教示から推測されてよいように、他のストリームに関する監視責任を行使することを期待されてよい。前述された本発明の実施形態の監視ビットの状態は、監視制御の粒度を反映する。
【0041】
マスタスレッドは、初期セットアップおよびスレッドのストリームへのロードなどの目的を追求してよく、矛盾および例外を解決するために戻ってよい。しかしながら、ちょうど他のプロセッサシステムにおいてのように、総合的なシステム機能とは、1つまたは複数のアプリケーションを実行することである。汎用コンピュータにおいては、多くのアプリケーションがあってよく、コンピュータの使用も同様に多い。人はインターネットをブラウズし、e−メールを送受し、図面を作成し、写真を処理し、ワード文書を作文する、およびはるかに多くのことをしてよい。典型的には、各アプリケーションは特定の機能専用であり、アプリケーションスレッドは、アプリケーションが呼び出されると、プロセッサのストリームの1つまたは複数を占有する。
【0042】
例えば、パケットデータ網のデータルータなどのさらに専用システムにおいては、相対的に少ないアプリケーションがあり、機械の機能は典型的にはユーザによって起動される以外のなんらかの様式で命令される。例えば、データルータにおいては、機能は、処理され、送信されるために受信されるデータの特徴に従って呼び出されてよい。
【0043】
本発明のある実施形態において、これはすべての実施形態で必要とされているわけではないが、ソフトウェアは、本発明の実施形態に従ってマルチストリーミングプロセッサの新規のかつ独特の制御機能を最大限に利用するために特に機能強化される。また、プロセッサで実行中のソフトウェアは、本発明の実施形態に従って機能拡張されてよいが、他のソフトウェアは機能拡張されてはならない。典型的には、少なくともオペレーティングシステムまたはマスタスレッド、あるいは両方があり、特定のコードは、本発明の実施形態に従ってマルチストリーミングプロセッサの中に組み込まれる新しい制御およびステータス機能と協調するだろう。
【0044】
図1Aから図1Eに関して前述された制御データリソースおよび機能を考慮すると、すべてのストリーミングが等しい完全に公平から、多くの機能が事前設定され可変ではないきわめて専用のものまでずっと、実現される可能性のある幅広い多岐の構成がある。例えば、本発明に従ったいくつかのプロセッサでは、例えばストリーム0などのあるストリームは、設計によりつねにマスタストリームであってよい。他のストリームはマスタストリームの制御機能を変更することはできないが、マスタストリームはすべてのプロセッサリソースに完全なアクセスを有し、すべての他のストリームの制御データを操作してよいため、図1Bから図1Eのストリームに関して図示され、前述されたデータビットおよび値は、専用のマスタストリームのためには実現される必要はないだろう。
【0045】
前述された説明および例示的なアーキテクチャを考慮すると、本発明の前には使用できなかった、現在は実行可能な幅広い多岐のストリーム間通信および制御機能がある。例えば、任意の1つのアクティブストリームは、独自のニーズに応じて独自のリソース割付けおよび優先順位を操作してよく、それは、ストリームの中で実行中のスレッドの性質、およびその他のストリームの中で実行するために使用可能な、あるいは実際に実行しているその他のスレッドの性質に密接に関係するだろう。また、アクティブストリームは、各アクティブストリームが他のストリームの制御データ設定値をチェックしてよいため、考えられる影響に関して事前に理解して、その他のストリームを開始、実行可能化、実行不能化、割り込む、分岐するおよび結合してよい。提供されている桁外れな優位点とは、プロセッサリソースの単なる使用よりむしろ、リアルタイムの効率を最大限にする能力である。すなわち、いまはシステムの目標に取り組むことができる。プロセッサは、それを行うことが必ずシステム目標にも対処するという、多くの場合誤った仮定で、歴史的に見てプロセッサリソースを最大限にするために設計されてきた。しかしながら、マルチストリーミングプロセッサが、完全に活動中で、低優先順位タスクを効率的に達成してよいが、高い優先順位のタスクが受ける注意は不十分であるため、システム目標に適切に取り組んでいることにはならないことは容易に理解できる。
【0046】
本発明の実施形態においては、並行に実行中の別のスレッドを必要とする可能性があるか、あるいは並行に実行中の別のスレッドによって機能拡張されてよいスレッド(アプリケーション)を実行しているあるアクティブストリームは、その補助的なスレッドを呼び出し、それを使用可能なストリームとして開始してよい。例は、MPEGビデオクリップを有するウェブページにアクセスするウェブブラウザである。本発明の実施形態に従ってプロセッサの1つのストリームで実行中のブラウザは、使用可能なストリームで実行するためにMPEGプレーヤーを呼び出してよい。データ制御ビットおよび値の状態は、MPEGプレーヤー用のストリームを選択する上でブラウザストリームを誘導するだろう。ブラウザは、例えば、さらに高い優先順位を有するスレッドを実行するアクティブストリームを組み入れてはならない。しかしながら、それは、任意の時点で割り込まれてよい制御データビットを設定したストリームを組み入れてよい。
【0047】
本実施形態での動作は、新規スレッドを分岐(fork)するなどの典型的なタスクを達成するための動作のシーケンスに従うことによって示すことができる。スレッドは、異なるストリームで実行するために他のスレッドを分岐することができる。例えば、オペレーティングシステムがアプリケーションプログラムを分岐することを希望することがあったり、アプリケーションがサブタスクすなわちスレッドを分岐する必要がある場合がある。例外に遭遇するスレッドが、それを処理するためにプロセスを分岐してよい。
【0048】
分岐動作および結合動作に関して本発明の実施形態で好ましい方法は、図2Aに図示されている。図1のストリーム1のスレッドが新規スレッドを分岐していると仮定する。これを行うために、スーパバイザスレッドとしてのストリーム1は、ステップ201で使用するためにアイドルストリームを要求し、このようなストリームがステップ202で使用できるようになるまで待機する。大部分のケースでは、待機はないだろう。ストリーム1は、例えば、ステップ203のストリーム2などの使用可能なストリームの数を受信する。いくつかの状況では、その後には、使用可能になるストリームがなく代替処置が講じられる、待機制限がある必要があるだろう。例えば、この例の場合、ストリームがただちに使用可能である、あるいは妥当な間隔で使用可能となると仮定される。
【0049】
ストリーム2を初期化し、新規スレッドを実行するために、アクティブストリーム1は、新規スレッドの第1命令のアドレスを割り当てられたストリームのプログラムカウンタにロードし、新規スレッドのコンテキストのその他の構成要素を、ステップ204でプロセッサリソースの適切な要素にロードし、ステップ205でストリーム2の優先順位マップを設定する。ストリーム1は、ステップ206でストリーム2に監視制御ビット107も設定してよい(代わりに、ストリーム2で実行中の新規スレッドが、ステップ208の後にビットを設定してよい)。ストリーム2は、そのスーパバイザ制御ビットを、スーパバイザスレッドがそのスーパバイザの役割を果たすことができるようにするために設定させなければならず、スーパバイザの監視制御ビットは、制御されているスレッドがそれに割り込むことができるようにするために設定されなければならない。これらの初期化ステップが実行されると、監視スレッドはステップ17でストリーム2の新規スレッドを開始する。代わりに、ストリーム2はスリープモードに入れられてよく、内部イベントまたは外部イベントを待機する。新規スレッドはステップ208のストリーム2で実行を開始する。ステップ209および210では、両方のストリームが、結合が必要とされるまで、独立して、並行して実行する。この例では、ストリーム1で実行しているスレッドが最初に終了すると仮定される。
【0050】
スーパバイザスレッドが分岐したスレッドを結合する必要があるとき、それは分岐したスレッドが依然として実行中であるかを確かめるためにまずチェックする。実行中である場合には、それはステップ211で、それ自体をスリープさせ、スリープビットをストリーム制御ビット118の中で設定するという命令を実行してから、分岐したスレッドからの結合ソフトウェア割込みを待機する。分岐したスレッドはステップ212で結合割込みを送信し、スーパバイザスレッドは割込みを受信し、ステップ213で目を覚ます。スーパバイザはステップ214で結合動作を完了する。最後に、分岐したスレッドはステップ215で終了し、別のスレッドが使用するために、そのストリームを解放する。
【0051】
図2Bは、分岐したストリームがスーパバイザストリームの前に終了するコンパニオンケースを説明する。このケースでは、分岐したストリームは終了すると、即座に結合割込みを送信する(ステップ216)。割込みは、スーパバイザストリームが終了するまで待機したままとなり、それから割込みはステップ217でサービスを受け、結合が完了する。「電子プロセッサ用のレジスタ転送装置(Register Transfer Unit for Electronic Processor)」と題する1999年1月27日に提出された同時係続中の優先権出願に説明されるように、レジスタを背景でロードし、記憶することができる場合、コンテキストがまだロードされていない新規スレッドを分岐するプロセスは、図3に図示されるように、図2に図示されるステップから修正される。
【0052】
図3に図示されるように、ステップは、プログラムカウンタおよびコンテキストを設定するためのステップ204が排除されている点を除き、図2Aと図2Bのステップと同一である。ステップ206の後、新しいステップ301で、スーパバイザはレジスタ転送装置(RTU)に、新規ストリーム用のコンテキストをロードするように信号で知らせる。これらの動作が完了すると、スーパバイザはステップ209でそれ以外の動作を続行することができる。
【0053】
RTUはステップ302でコンテキスト切替えを行う。RTUが行われ、新規ストリームのコンテキストをロードすると、それは新たにロードされたレジスタファイルをアクティブにし、ステップ208で、やはりスーパバイザストリームとは関係なく新規ストリームを開始することができる。残りのステップは、スーパバイザが先に終了すると仮定して、図2Aに同一である。それ以外の場合、図2Bと同じである。同時係続出願の図2でのように、過去にストリーム2によって使用されたレジスタファイルが保存されるだろう。
【0054】
前述された実施形態は、本発明の範囲内で実現されてよい多くの実施形態を例示している。当業者は、ここに初めて教示される強力なアーキテクチャ概念が、単一チップシステム、マイクロプロセッサ、制御装置、ルータ、デジタル信号プロセッサ(DSP)、ルーティングスイッチとその他のネットワークデバイス、および他の特殊な使用のために設計されたプロセッサを含むが、それらに制限されない多くの型のプロセッサに適用されてよいことを認識するだろう。本発明の教示は、簡略なワンチップ完全システムから複雑なスーパーコンピュータプロセッサまで、任意のサイズのプロセッサといっしょに実践されてよい。本発明は、小型システム用の簡略かつ高度に専用形式で、あるいは大型システム用の複雑で精密な形式で実現されてよい。マスタストリームおよびスーパバイザストリームを定義し、それらがスレーブストリームのリソースの活用を制御できるようにすることによって、プロセッサは、特定のソフトウェアおよびソフトウェア混合物の要件を満たし、例えば厳密なタイミング要件を満たすように動的に構成することができる。例えば、ストリームは、全体的なプロセッサスループットの一定のパーセンテージ、あるいは特定のリソースまたはリソースのクラスのパーセンテージ活用を保証される。このようにして、新しいアーキテクチャは、処理リソースの効率的な使用とともに、特定のスレッドの実行の最適化の平衡を可能にする。
【0055】
優先順位の使用の追加例として、図1に従ったプロセッサを実現するパケットデータ網で使用するためのルータを考える。ルータプロセッサ内の各ストリームは、ストリーム0でのマスタとして実行している制御プログラムを除き、3つの異なる種類のパケットの1つの別個のフローを処理する。3つのスレーブストリームは、パケットのタイムリな転送に関係する異なるサービス保証を有する異なるプロトコルを使用してパケットを処理している。処理されている特定のプロトコルおよびサービスのクラスの場合に、整数ユニットへのアクセスがサービス保証を満たすことに大きな影響を与えるだろうと仮定する。その結果、マスタは、最高のサービス保証を有するストリーム1の優先順位マップを、値6に設定し、それに(マスタ以外の)他のストリームより高い整数ユニットへの優先順位アクセスを与える。次に最も厳しいサービス保証が設定されるストリーム3は、さらに低い優先順位5を有し、ストリーム2はさらに低い優先順位3を有する。初期に優先順位を設定した後、マスタはプロトコルごとのスループットを監視し、サービス保証が満たされていることを保証し、必要に応じてさらに優先順位を修正する。このようにして、スーパバイザは、スレッドの現在のニーズに基づいてストリームにリソースを動的に割り付けることができ、多岐に渡るプロトコルおよびサービスのクラスのサービス保証を満たすために必要に応じて優先順位を修正する。サービス保証は、ハードウェアではなく、監視ソフトウェアを使用して満たされるため、ルータは新しい要件が進化するにつれて容易に更新することができる。
【0056】
優先順位の使用の別の例は、データルータシステムによって示されてもよい。データパケットを処理するためにストリームが1つまたは複数のスレッドを使用できる、4つのストリームを有するこのようなシステムを考慮する。コンテキストがレジスタファイルにロードされており、到着するデータパケットを処理するための4つのストリームのそれぞれでスレッドを開始するためにストリームと関連付けられていると仮定する。
【0057】
データパケットの技術で既知であるように、すべてのデータパケットが等しいわけではない。受信されたように転送すればよいパケットもある。異なるフォーマットに再構成される必要のあるパケットもある。依然として、例えば暗号化/復号される必要のあるパケットもある。パケットを処理するために作業フローを支配するパケットの型は、典型的にはパケット用のヘッダ内に含まれ、処理のための型および範囲が、スレッドコンテキストがレジスタファイルにロードされ、レジスタファイルがストリーム(アクティブストリーム)と関連付けられ、処理がデータパケットで開始した後に初めてプロセッサが知るところとなる。
【0058】
本発明の好ましい実施形態においては、図1Dに示され、前述されたように、それぞれのストリームは、さらに高い優先順位が設定されたプロセスだけがそのストリームで実行してよいことを意味する、実行優先順位を有するとされる。ある態様においては、プロセッサの各ストリームの実行優先順位は、図1のビットマップ115の一部の3個の編集可能ビットとして維持される。例示的なデータルータケースでは、パケットが処理されるために到着すると、パケットのコンテキストがレジスタファイルにロードされる。これは、優先権書類09/240012号の教示に従ったレジスタ転送装置(RTU)によって好ましい実施形態で実行されてよい。
【0059】
すぐ上記に説明されたように、パケットの性質が知られる前にデータパケットの処理を開始することが必要である。したがって、パケットが到着し、レジスタファイルがロードされると、各コンテキストには初期の高い優先順位が与えられる。例えば、7という尺度では、それぞれの初期コンテキストに6という優先順位が指定されるだろう。
【0060】
ここでは、ストリームが使用可能となると、レジスタファイルは、レジスタファイルの優先順位およびストリームの実行優先順位に従って、ストリームと関連付けられる。レジスタファイルをストリームと関連付けると、ストリームでコンテキストスレッドが開始し、アクティブストリームを構成する。ストリームの実行優先順位はここではロードされたコンテキストの高い優先順位(この例では6)に設定されている。新規にロードされるパケットの処理が開始されると、パケットが実際に高速パケットであり、高い優先順位が実際に適切であることが決定されてよく、そのケースでは処理は完了まで続行する。本発明では、パケットの処理の完了時に、ストリーム内で開始される次のコンテキストが最高優先順位レベルの待機コンテキストとなることが所望される。この例では、これは、コンテキストがロードされるまで、あるいは実行優先順位がゼロとなるまで、実行優先中にを選択的に引き下げることによって行われる。ゼロに到達する唯一の方法は、任意の優先順位の待機中のコンテキストがない場合である。この状況では、ストリームは、任意のコンテキストが使用可能となるまでアイドルのままとなるだろう。
【0061】
この例では、実行優先順位がパケット処理の最後で6である場合、実行レベルは5に、それから4に等、設定し直され、ロードされる次のコンテキストが最高優先順位レベルが設定された待機コンテキストとなることを保証する。
【0062】
しかしながら、処理が開始すると、パケットが中間優先順位に値する型であると決定されることがある。その場合、ストリーム内で実行中のスレッドは、実行優先順位をおそらく4に引き下げる。優先順位4より高い待機コンテキストがない場合には、アクティブストリームはデータパケットを完了まで処理し続け、完了時に、新しいコンテキストがロードされるまで、ストリームがその実行優先順位を3、次に2等に設定するだろう前述された例に従う。しかしながら、新規パケットが到着すると、新規コンテキストには6という初期優先順位が与えられているため、新しいパケットの到着が、コンテキスト切替えを強制し、ストリームに遅いパケットに関する動作を停止させ、代わりに新しいさらに高い優先順位のデータパケットの処理を開始させ、ストリームの実行優先順位を6に設定し直すだろう。
【0063】
コンテキスト切替えが後に続く場合、保存されたコンテキストは依然として4という優先順位を有し、典型的には、前述されたようにRTUの制御下で、追加処理のためにストリームに再割当てするための機会を待機するだろう。言うまでもなく、新規に到着したデータパケットがさらに高速なパケットであるという保証はないが、これがそうである一定の確率はある。新規パケットがさらに高速なパケットである場合には、システム目標は高められる。さらに高速なパケットではない場合には、現在はやはり優先順位レベル6であるアクティブストリームが、やはりそれ自体の実行優先順位を、新規にロードされるパケットのおそらく遅延実行のために引き下げ、再び処理するためにさらに高速なパケットを求めてよい。新規パケットは、例えば、復号を必要とする非常に低速なパケットである場合がある。このとき、アクティブストリームは実行優先順位を2に引き下げ、やはり、新規パケットが処理のために到着した場合にコンテキスト切替えを強制してよく、その場合、コンテキストは、優先順位によって処理機会を待機する低速パケットの2という優先順位で保存されるだろう。ストリームが2という実行優先順位で実効している場合、新しいパケット(6)は到着しないが、4という優先順位の待機コンテキストがあり、4というコンテキストは、2という実行優先順位等でストリームを先取するだろう。
【0064】
このようにして、コンテキストがロードされ、処理がそれぞれの新規に到着するデータパケットについて開始するまで型はわからないが、プロセッサ効率も保証しつつ、データルーティング用途でシステム目標を満たす、パケットが型に従った優先順位で処理されてよい新しい方法を提供する。
【0065】
多くのその他の機能は、ストリーム間制御および通信に関して本発明の教示と一貫している。例えば、固定マスタ/スーパバイザ、および固定スレーブストリームのある専用アプリケーション用の簡略な2つのストリームの制御装置では、スレーブストリーム用の単一の監視制御ビットが、監視制御ビットを使用して重大な期間中スレーブがこのような制御を中断できるようにする一方で、浮動小数点ユニットへのアクセスを可能にするなどの有効な型のリソース制御を、マスタストリームに与えることができるだろう。
【0066】
あるストリームが監視制御ビットおよびストリーム制御ビットの機構を通してその他のストリームに関して有してよい制御の種類は制限されていない。システムの目的に応じて、ただ1つの種類の制御または多数の制御が適切な場合がある。追加制御は、例えば、グローバルレジスタまたはグローバルメモリの共用、メモリ保護、割込み優先順位、割込みマスクへのアクセスまたは割込みすなわち例外とストリームの間のマップへのアクセスを調節できるだろう。1つまたは複数の低電力モードでのプロセッサでは、電力制御へのアクセスも、追加監視制御ビットおよびストリーム制御ビットを通して調節されてよいし、あるいはこのような制御はマスタスレッドを実行しているストリームのために独占的に確保されてもよい。
【0067】
あるストリームが別のストリームのリソースに関して有してよい制御の種類も、多くの形を取ることがある。最も単純な形式の1つ、固定マスタ/スーパバイザおよび固定スレーブストリームをもった、スレーブストリーム用の単一ストリーム制御ビットが、例えば、専用アプリケーションで使用される簡略な2ストリーム制御装置では、マスタがすべてのリソースの完全な使用を必要とするときに、命令シーケンス中にスレーブを実行不能化する能力を、マスタストリームに与えることができるだろう。
【0068】
優先権書類09/216017号に説明されている、優先順位および任意の形式のスケジュール設定は、本発明の新しい教示と組み合わせて実現されてよい。このような優先順位が実現されない場合には、ストリームは、1つまたは複数のリソースへの別のストリームのアクセスを一時的に直接的に阻止することによってさらに簡略な形の制御を行使できるだろう。このケースでは、優先順位を表す監視制御ビットは、リソース制御を表すビットと置換されるだろう。優先順位マップは、1つまたは複数のリソース、あるいはクラスのリソースへのアクセスを一時的に拒否するために使用される1個または複数個の制御ビットと置換されるだろう。例えば、あるストリームが浮動小数点ユニットの独占的な使用を必要とする場合、それをそれ以外のストリームのスーパバイザにし、アクセスを拒否するリソース制御ビットを、それが独占的なアクセスを必要とする間、他のストリームのそれぞれでの浮動点に設定することができる。別の部分的に阻止されたストリームが浮動点命令と遭遇した場合には、命令スケジューラは、そのストリームの浮動点リソース制御ビットがスーパバイザストリームによってリセットされるまで命令の実行を中断するだろう。
【0069】
本発明の精神および範囲内で前述される実施形態でなされてよい多くの改変があることが、当業者に明らかになるだろう。例えば、監視特性およびストリーム間の関係性が、示された例を超えて、記録され、修正されてよい多くの方法がある。同様に、行使されてよい制御の粒度等には幅広い範囲がある。その結果、発明は頭記の請求の範囲によってだけ制限される。
【図面の簡単な説明】
【図1A】 本発明のある実施形態に従ったマルチストリーミングプロセッサの一般化した図である。
【図1B】 本発明のある実施形態に従った制御許可データを示す例示的なビットマップである。
【図1C】 本発明のある実施形態に従ったストリームに対するリソース割当てを示す図である。
【図1D】 本発明のある実施形態に従ったストリームの優先順位を示す図である。
【図1E】 本発明のある実施形態に従ったあるストリームの制御インジケータを示す図である。
【図2A】 あるストリームのスレッドが別のストリームのスレッドを分岐し、後にそれを接合する、ある方法を示すフローチャートである。
【図2B】 あるストリームのスレッドが別のストリームのスレッドを分岐し、後にそれを接合する別の方法を示すフローチャートである。
【図3】 特別レジスタ転送を含むプロセッサ内であるストリームのストリームが別のストリームのスレッドを分岐する方法を示すフローチャートである。
Claims (24)
- 1つまたは複数の命令スレッドをストリーミングするための複数のストリームと、
前記複数のストリームからの前記1つまたは複数の命令スレッドを処理するための機能リソースのセットと、
前記機能リソースのセットに結合し、前記複数のストリームの各々に関連付けられたストリーム間制御ロジックであって、前記機能リソースのセットのうちの一定のリソースを前記複数のストリームのうちの、各ストリームについての優先順位に従って定まる一定のものによる使用のために確保し、且つ、前記機能リソースのセットのうちの前記一定のリソースを前記複数のストリームのうちの、前記一定のものよりも低い優先順位を有する他のものによる使用から制限する、ストリーム間制御ロジックと、
を備え、
前記1つまたは複数の命令スレッドが、前記ストリーム間制御ロジックを修正して、前記機能リソースのセットのうちの前記一定のリソースのどれを、前記複数のストリームのうちの前記一定のもののために確保するかを変更し、
前記ストリーム間制御ロジックが、前記複数のストリームの各々に関連付けられた制御許可ビットマップから構成され、該制御許可ビットマップが、前記複数のストリームの各々が前記複数のストリームのうちの他のもののための前記機能リソースの組の一定のリソースの確保をどのように変更するかを示す、マルチストリーミングプロセッサ。 - ストリーム間制御ロジックが、別のストリームを実行可能化するまたは実行不能化すること、別のストリームをスリープモードにするまたは別のストリームをスリープモードから呼び覚ますこと、機能リソースへのアクセスに関して別のストリームの優先順位を設定すること、および別のストリームによる機能リソースへのアクセスの阻止を許可することの1つまたは複数を達成するための機構を含む、請求項1に記載のプロセッサ。
- ストリーム間制御ロジックが、ストリームがマスタステータスを付与され、マスタストリームを実行し、他のストリームによる干渉を受けずに他のストリームに関してあらゆるすべての使用可能な制御ロジックを行使するマスタモードを含む、請求項2に記載のプロセッサ。
- 複数のストリームにマスタステータスが与えられ、マスタステータスを与えられたストリームがそれぞれ、別のマスタストリームの制御下にない特定の他のストリームに関してマスタ制御を行使するマスタスレッドを実行してよい、請求項3に記載のプロセッサ。
- ストリーム間制御ロジックが監視モードを含み、該モードにより制御特権を改変または取消してよい制御されているストリームに準拠して、制御が、最小制御から最大制御まで付与される可能性がある、請求項2に記載のプロセッサ。
- マスタステータスおよびストリーム間制御階層が少なくとも1つのオンチップビットマップによって記録され、修正される、請求項2に記載のプロセッサ。
- 各ストリームが、それぞれ他のストリームの制御特権を付与または取消すビットマップを維持、編集し、設定値が、設定値を無視するマスタストリーム以外の任意のストリームに有効である、請求項6に記載のプロセッサ。
- (a)機能リソースのうちの一定のリソースを複数のストリームのうちの、各ストリームについての優先順位に従って定まる一定のものによる使用のために確保し、且つ、前記機能リソースのセットのうちの前記一定のリソースを前記複数のストリームのうちの、前記一定のものよりも低い優先順位を有する他のものによる使用から制限する、プロセッサ内ストリーム間制御ロジックを実現するステップと、
(b)他のあらゆるストリームの制御の範囲が記録される、各ストリームと関連付けられた制御アクセス特権を確立するステップと、
(c)ストリームごとに記録された範囲内の制御ロジックを使用してオペレーティングシステム間でストリーム間制御を行使するステップと、
を備え、
前記1つまたは複数の命令ストリームが、前記ストリーム間制御ロジックを修正して、前記機能リソースのセットのうちの一定のリソースのどれを、前記複数のストリームのうちの一定のもののために確保するかを変更し、
前記ストリーム間制御ロジックが、前記複数のストリームの各々に関連付けられた制御許可ビットマップから構成され、該制御許可ビットマップが、前記複数のストリームの各々が前記複数のストリームのうちの他のもののための前記機能リソースの組の一定のリソースの確保をどのように変更するかを示す、
マルチストリーミングプロセッサの別個のストリームで並行して実行する複数のソフトウェアスレッドの間に協調を与えるための方法。 - 制御の範囲が、別のストリームを実行可能化するまたは実行不能化すること、別のストリームをスリープモードにするまたは別のストリームをスリープモードから呼び覚ますこと、機能リソースへのアクセスに関して別のストリームの優先順位を設定すること、および別のストリームによる機能リソースへのアクセスの阻止を許可することの1つまたは複数を含む、請求項8に記載の方法。
- ストリームにマスタステータスが付与され、任意のストリームによる干渉を受けずに、他のストリームに関してあらゆるすべての使用可能な制御ロジックを行使してよい、マスタモードを設定するためのステップをさらに備える、請求項9に記載の方法。
- 複数のストリームにマスタステータスが付与され、マスタステータスを付与されたストリームが、それぞれ、別のマスタストリームの制御下にはない特定の他のストリームに関するマスタ制御を行使するマスタスレッドを実行してよい、請求項10に記載の方法。
- ストリーム間制御ロジックが、制御特権を改変または取消してよい制御されているストリームに準拠して、制御が、最小制御から最大制御まで付与される可能性がある監視モードを含む、請求項9に記載の方法。
- マスタステータスおよびストリーム間制御階層が、少なくとも1つのオンチップビットマップによって記録、修正される、請求項9に記載の方法。
- 各ストリームが、それぞれの他のストリームについて制御特権を付与または取消すビットマップを維持、編集し、設定値が、設定値を無視するマスタストリーム以外の任意のストリームに有効である、請求項13に記載の方法。
- 処理するデータを獲得するための入力装置と、
制御された使用のためにデータおよび実行可能なコードを記憶するためのメモリ要素と、
マルチストリーミングプロセッサと、
を備え、
マルチストリーミングプロセッサが、1つまたは複数の命令スレッドをストリーミングするための複数のストリームと、前記複数のストリームからの前記1つまたは複数の命令スレッドを処理するための機能リソースのセットと、前記機能リソースのセットに結合し、前記複数のストリームの各々に関連付けられたストリーム間制ロジックであって、前記機能リソースのセットのうちの一定のリソースを前記複数のストリームのうちの、各ストリームについての優先順位に従って定まる一定のものによる使用のために確保し、且つ、前記機能リソースのセットのうちの前記一定のリソースを前記複数のストリームのうちの、前記一定のものよりも低い優先順位を有する他のものによる使用から制限する、ストリーム間制御ロジックを有し、
前記1つまたは複数の命令スレッドが、前記ストリーム間制御ロジックを修正して、前記機能リソースのセットのうちの前記一定のリソースのどれを、前記複数のストリームのうちの前記一定のもののために確保するかを変更し、
前記ストリーム間制御ロジックが、前記複数のストリームの各々に関連付けられた制御許可ビットマップから構成され、該制御許可ビットマップが、前記複数のストリームの各 々が前記複数のストリームのうちの他のもののための前記機能リソースの組の一定のリソースの確保をどのように変更するかを示す、計算機システム。 - ストリーム間制御ロジックが、別のストリームを実行可能化するまたは実行不能化すること、別のストリームをスリープモードにすることまたは別のストリームをスリープモードから呼び覚ますこと、機能リソースへのアクセスに関して別のストリームの優先順位を設定すること、および別のストリームによる機能リソースへのアクセスの阻止を許可することの1つまたは複数を達成するための機構を含む、請求項15に記載のシステム。
- ストリーム間制御ロジックが、ストリームにマスタステータスが付与され、任意のストリームによる干渉を受けずに他のストリームに関するあらゆるすべての制御ロジックを行使してよいマスタモードを含む、請求項16に記載のストリーム。
- 複数のストリームがマスタステータスを付与され、マスタステータスを付与されたストリームが、それぞれ、別のマスタストリームの制御下にない特定の他のストリームに関してマスタ制御を行使するマスタスレッドを実行してよい、請求項17に記載のシステム。
- ストリーム間制御ロジックが、制御特権を改変または取消してよい制御されているストリームに準拠して、制御が、最小制御から最大制御まで付与される可能性がある監視モードを含む、請求項16に記載のシステム。
- マスタステータスおよびストリーム間制御階層が、少なくとも1つのオンチップビットマップによって記録、修正される、請求項17に記載のシステム。
- 各ストリームが、それぞれ他のストリームに対する制御特権を付与または取消すビットマップを維持、編集し、設定値が、設定値を無視するだろうマスタストリーム以外の任意のストリームに有効である、請求項20に記載のシステム。
- 1つまたは複数の命令スレッドをストリーミングするための複数のストリームと、前記複数のストリームからの前記1つまたは複数の命令スレッドを処理するための機能リソースのセットと、前記機能リソースのセットに結合し、前記複数のストリームの各々に関連付けられたストリーム間制御ロジックであって、前記機能リソースのセットのうちの一定のリソースを前記複数のストリームのうちの、各ストリームについての優先順位に従って定まる一定のものによる使用のために確保し、且つ、前記機能リソースセットのうちの前記一定のリソースを前記複数のストリームのうちの、前記一定のものよりも低い優先順位を有する他のものによる使用から制限する、ストリーム間制御ロジックとを有し、前記1つまたは複数の命令スレッドが、前記ストリーム間制御ロジックを修正して、前記機能リソースのセットのうちの前記一定のリソースのどれを、前記複数のストリームのうちの前記一定のもののために確保するかを変更し、前記ストリーム間制御ロジックが、前記複数のストリームの各々に関連付けられた制御許可ビットマップから構成され、該制御許可ビットマップが、前記複数のストリームの各々が前記複数のストリームのうちの他のもののための前記機能リソースの組の一定のリソースの確保をどのように変更するかを示す、マルチストリーミングプロセッサを電源投入時に初期化するまたはリセットするための方法であって、
(a)マルチストリーミングプロセッサのあるストリームをマスタストリームとして指定し、マスタストリームが、干渉を受けずに他のすべてのストリームのステータスおよび制御モードを設定することができるステップと、
(b)マスタストリームでマスタスレッドを開始し、マスタスレッドが他のすべてのストリームを初期化するためのコードを備えるステップと、
(c)マスタストリームコードを実行し、他のすべてのストリームの初期ステータスおよび制御モードを設定するステップと、
を備える方法。 - マスタスレッド制御コードを実行するマスタストリームにより、マスタストリームに従属する少なくとも1つのスレーブストリーム内で初期スレッドを開始するためのステップ(d)をさらに備える、請求項22に記載の方法。
- マスタスレッドが、マスタストリームとして指定されるストリームを空にし、該ストリーム内で別のスレッドを開始するためのステップ(e)をさらに備える、請求項23に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/273,810 | 1999-03-22 | ||
US09/273,810 US6389449B1 (en) | 1998-12-16 | 1999-03-22 | Interstream control and communications for multi-streaming digital processors |
PCT/US2000/006615 WO2000057297A1 (en) | 1999-03-22 | 2000-03-14 | Interstream control and communications for multi-streaming digital processors |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002540505A JP2002540505A (ja) | 2002-11-26 |
JP3877529B2 true JP3877529B2 (ja) | 2007-02-07 |
Family
ID=23045503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000607105A Expired - Fee Related JP3877529B2 (ja) | 1999-03-22 | 2000-03-14 | マルチストリーミングデジタルプロセッサ用のストリーム間制御および通信 |
Country Status (6)
Country | Link |
---|---|
US (3) | US6389449B1 (ja) |
EP (1) | EP1290569A4 (ja) |
JP (1) | JP3877529B2 (ja) |
AU (1) | AU3881800A (ja) |
CA (1) | CA2367039A1 (ja) |
WO (1) | WO2000057297A1 (ja) |
Families Citing this family (122)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7237093B1 (en) | 1998-12-16 | 2007-06-26 | Mips Technologies, Inc. | Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams |
US7020879B1 (en) * | 1998-12-16 | 2006-03-28 | Mips Technologies, Inc. | Interrupt and exception handling for multi-streaming digital processors |
US6389449B1 (en) * | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US7257814B1 (en) | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
US6542921B1 (en) * | 1999-07-08 | 2003-04-01 | Intel Corporation | Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor |
US6427196B1 (en) * | 1999-08-31 | 2002-07-30 | Intel Corporation | SRAM controller for parallel processor architecture including address and command queue and arbiter |
US6606704B1 (en) * | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
US6983350B1 (en) | 1999-08-31 | 2006-01-03 | Intel Corporation | SDRAM controller for parallel processor architecture |
US6668317B1 (en) * | 1999-08-31 | 2003-12-23 | Intel Corporation | Microengine for parallel processor architecture |
US7546444B1 (en) | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
US6532509B1 (en) | 1999-12-22 | 2003-03-11 | Intel Corporation | Arbitrating command requests in a parallel multi-threaded processing system |
US6694380B1 (en) | 1999-12-27 | 2004-02-17 | Intel Corporation | Mapping requests from a processing unit that uses memory-mapped input-output space |
US6307789B1 (en) * | 1999-12-28 | 2001-10-23 | Intel Corporation | Scratchpad memory |
US6631430B1 (en) * | 1999-12-28 | 2003-10-07 | Intel Corporation | Optimizations to receive packet status from fifo bus |
US6625654B1 (en) * | 1999-12-28 | 2003-09-23 | Intel Corporation | Thread signaling in multi-threaded network processor |
US6661794B1 (en) | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
US6584522B1 (en) * | 1999-12-30 | 2003-06-24 | Intel Corporation | Communication between processors |
US6631462B1 (en) * | 2000-01-05 | 2003-10-07 | Intel Corporation | Memory shared between processing threads |
US7649901B2 (en) * | 2000-02-08 | 2010-01-19 | Mips Technologies, Inc. | Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing |
US7139901B2 (en) * | 2000-02-08 | 2006-11-21 | Mips Technologies, Inc. | Extended instruction set for packet processing applications |
US7155516B2 (en) * | 2000-02-08 | 2006-12-26 | Mips Technologies, Inc. | Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory |
US7165257B2 (en) * | 2000-02-08 | 2007-01-16 | Mips Technologies, Inc. | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts |
US7058064B2 (en) * | 2000-02-08 | 2006-06-06 | Mips Technologies, Inc. | Queueing system for processors in packet routing operations |
US6658449B1 (en) | 2000-02-17 | 2003-12-02 | International Business Machines Corporation | Apparatus and method for periodic load balancing in a multiple run queue system |
US7856633B1 (en) | 2000-03-24 | 2010-12-21 | Intel Corporation | LRU cache replacement for a partitioned set associative cache |
US6665746B1 (en) * | 2000-03-31 | 2003-12-16 | International Business Machine Corporation | System and method for prioritized context switching for streaming data memory transfers |
US7162615B1 (en) | 2000-06-12 | 2007-01-09 | Mips Technologies, Inc. | Data transfer bus communication using single request to perform command and return data to destination indicated in context to allow thread context switch |
JP2004518183A (ja) * | 2000-07-14 | 2004-06-17 | クリアウオーター・ネツトワークス・インコーポレイテツド | マルチスレッド・システムにおける命令のフェッチとディスパッチ |
US7530070B1 (en) * | 2000-08-10 | 2009-05-05 | Agere Systems Inc. | Dynamically configurable architecture for mixed data processing |
US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US7145913B2 (en) * | 2001-02-15 | 2006-12-05 | The Board Of Trustees Of The University Of Illinois | Thread based scalable routing for an active router |
US6868476B2 (en) * | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
US7126952B2 (en) * | 2001-09-28 | 2006-10-24 | Intel Corporation | Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method |
US7516216B2 (en) * | 2001-10-01 | 2009-04-07 | Ixia | Generating traffic for testing a system under test |
US8914432B2 (en) | 2001-10-01 | 2014-12-16 | Ixia | Real world traffic |
US7194535B2 (en) * | 2001-10-01 | 2007-03-20 | Ixia | Methods and systems for testing stateful network communications devices |
US7895239B2 (en) | 2002-01-04 | 2011-02-22 | Intel Corporation | Queue arrays in network devices |
US6934951B2 (en) * | 2002-01-17 | 2005-08-23 | Intel Corporation | Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section |
US8024735B2 (en) | 2002-06-14 | 2011-09-20 | Intel Corporation | Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution |
US7099438B2 (en) * | 2002-06-14 | 2006-08-29 | Ixia | Multi-protocol, multi-interface communications device testing system |
US7577816B2 (en) * | 2003-08-18 | 2009-08-18 | Cray Inc. | Remote translation mechanism for a multinode system |
US20040177142A1 (en) * | 2003-03-06 | 2004-09-09 | Ixia | Dynamic streams for network analysis |
US7257082B2 (en) * | 2003-03-31 | 2007-08-14 | Ixia | Self-similar traffic generation |
US7496915B2 (en) | 2003-04-24 | 2009-02-24 | International Business Machines Corporation | Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes |
US7620950B2 (en) * | 2003-07-01 | 2009-11-17 | International Business Machines Corporation | System and method to monitor amount of usage of applications in logical partitions |
US8307194B1 (en) | 2003-08-18 | 2012-11-06 | Cray Inc. | Relaxed memory consistency model |
US7421565B1 (en) * | 2003-08-18 | 2008-09-02 | Cray Inc. | Method and apparatus for indirectly addressed vector load-add -store across multi-processors |
US7519771B1 (en) | 2003-08-18 | 2009-04-14 | Cray Inc. | System and method for processing memory instructions using a forced order queue |
US7543133B1 (en) | 2003-08-18 | 2009-06-02 | Cray Inc. | Latency tolerant distributed shared memory multiprocessor computer |
US7743223B2 (en) * | 2003-08-18 | 2010-06-22 | Cray Inc. | Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system |
US7334110B1 (en) | 2003-08-18 | 2008-02-19 | Cray Inc. | Decoupled scalar/vector computer architecture system and method |
US7735088B1 (en) | 2003-08-18 | 2010-06-08 | Cray Inc. | Scheduling synchronization of programs running as streams on multiple processors |
US7503048B1 (en) * | 2003-08-18 | 2009-03-10 | Cray Incorporated | Scheduling synchronization of programs running as streams on multiple processors |
US7627869B2 (en) * | 2003-08-21 | 2009-12-01 | Nxp B.V. | Hardware register access via task tag ID |
US7213099B2 (en) * | 2003-12-30 | 2007-05-01 | Intel Corporation | Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches |
US8984517B2 (en) * | 2004-02-04 | 2015-03-17 | Intel Corporation | Sharing idled processor execution resources |
US8244891B2 (en) * | 2004-03-08 | 2012-08-14 | Ixia | Simulating a large number of users |
JP4168281B2 (ja) * | 2004-09-16 | 2008-10-22 | 日本電気株式会社 | 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム |
US7797728B2 (en) * | 2004-10-27 | 2010-09-14 | Intel Corporation | Mechanism to generate restricted and unrestricted execution environments |
US7562207B2 (en) * | 2005-01-27 | 2009-07-14 | Innovasic, Inc. | Deterministic microcontroller with context manager |
WO2006081092A2 (en) * | 2005-01-27 | 2006-08-03 | Innovasic, Inc. | Deterministic microcontroller with configurable input/output interface |
US7664936B2 (en) * | 2005-02-04 | 2010-02-16 | Mips Technologies, Inc. | Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages |
US7853777B2 (en) * | 2005-02-04 | 2010-12-14 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions |
US7657891B2 (en) | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
US7657883B2 (en) * | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor |
US7752627B2 (en) * | 2005-02-04 | 2010-07-06 | Mips Technologies, Inc. | Leaky-bucket thread scheduler in a multithreading microprocessor |
US7681014B2 (en) | 2005-02-04 | 2010-03-16 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
US7490230B2 (en) * | 2005-02-04 | 2009-02-10 | Mips Technologies, Inc. | Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor |
US7631130B2 (en) * | 2005-02-04 | 2009-12-08 | Mips Technologies, Inc | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US7506140B2 (en) | 2005-02-04 | 2009-03-17 | Mips Technologies, Inc. | Return data selector employing barrel-incrementer-based round-robin apparatus |
US7613904B2 (en) * | 2005-02-04 | 2009-11-03 | Mips Technologies, Inc. | Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler |
US8245230B2 (en) * | 2005-03-14 | 2012-08-14 | Qnx Software Systems Limited | Adaptive partitioning scheduler for multiprocessing system |
US9361156B2 (en) | 2005-03-14 | 2016-06-07 | 2236008 Ontario Inc. | Adaptive partitioning for operating system |
US8387052B2 (en) * | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
CA2538503C (en) * | 2005-03-14 | 2014-05-13 | Attilla Danko | Process scheduler employing adaptive partitioning of process threads |
US8121148B2 (en) * | 2005-03-24 | 2012-02-21 | Ixia | Protocol stack using shared memory |
US7743233B2 (en) * | 2005-04-05 | 2010-06-22 | Intel Corporation | Sequencer address management |
US8332826B2 (en) * | 2005-05-26 | 2012-12-11 | United Parcel Service Of America, Inc. | Software process monitor |
US7823021B2 (en) * | 2005-05-26 | 2010-10-26 | United Parcel Service Of America, Inc. | Software process monitor |
US7558986B2 (en) * | 2005-05-26 | 2009-07-07 | United Parcel Service Of America, Inc. | Software process monitor |
US8726292B2 (en) * | 2005-08-25 | 2014-05-13 | Broadcom Corporation | System and method for communication in a multithread processor |
GB0519597D0 (en) * | 2005-09-26 | 2005-11-02 | Imagination Tech Ltd | Scalable multi-threaded media processing architecture |
US20070101332A1 (en) * | 2005-10-28 | 2007-05-03 | International Business Machines Corporation | Method and apparatus for resource-based thread allocation in a multiprocessor computer system |
US20070115833A1 (en) * | 2005-11-21 | 2007-05-24 | Gerald Pepper | Varying the position of test information in data units |
US7403874B2 (en) * | 2006-01-31 | 2008-07-22 | Verigy (Singapore) Pte. Ltd. | Method and system for prioritizing formatting actions of a number of data formatters |
US8032737B2 (en) * | 2006-08-14 | 2011-10-04 | Marvell World Trade Ltd. | Methods and apparatus for handling switching among threads within a multithread processor |
US8180856B2 (en) * | 2006-09-14 | 2012-05-15 | Ixia | Testing a network |
US7961745B2 (en) * | 2006-09-16 | 2011-06-14 | Mips Technologies, Inc. | Bifurcated transaction selector supporting dynamic priorities in multi-port switch |
US7760748B2 (en) * | 2006-09-16 | 2010-07-20 | Mips Technologies, Inc. | Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch |
US7773621B2 (en) * | 2006-09-16 | 2010-08-10 | Mips Technologies, Inc. | Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch |
US7990989B2 (en) | 2006-09-16 | 2011-08-02 | Mips Technologies, Inc. | Transaction selector employing transaction queue group priorities in multi-port switch |
JP4882671B2 (ja) * | 2006-11-01 | 2012-02-22 | 富士通株式会社 | アクセス制御方法及びアクセス制御システム並びにプログラム |
US7616568B2 (en) * | 2006-11-06 | 2009-11-10 | Ixia | Generic packet generation |
US7643431B2 (en) * | 2006-11-10 | 2010-01-05 | Ixia | Distributed packet group identification for network testing |
US20080147357A1 (en) * | 2006-12-15 | 2008-06-19 | Iintrinisyc Software International | System and method of assessing performance of a processor |
US7665000B2 (en) * | 2007-03-07 | 2010-02-16 | Intel Corporation | Meeting point thread characterization |
JP5173713B2 (ja) | 2008-09-30 | 2013-04-03 | ルネサスエレクトロニクス株式会社 | マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法 |
US7769049B2 (en) * | 2008-10-17 | 2010-08-03 | Ixia | Traffic generator using parallel coherent transmit engines |
US8767565B2 (en) | 2008-10-17 | 2014-07-01 | Ixia | Flexible network test apparatus |
US8243760B2 (en) * | 2009-07-01 | 2012-08-14 | Ixia | Scheduler using a plurality of slow timers |
US8310942B2 (en) | 2010-08-27 | 2012-11-13 | Ixia | Flow statistics aggregation |
US8571032B2 (en) | 2010-11-17 | 2013-10-29 | Ixia | Testing packet fragmentation |
US8730826B2 (en) | 2010-11-17 | 2014-05-20 | Ixia | Testing fragment reassembly |
US8687483B2 (en) | 2011-09-22 | 2014-04-01 | Ixia | Parallel traffic generator with priority flow control |
JP5861354B2 (ja) * | 2011-09-22 | 2016-02-16 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US9178790B2 (en) | 2012-08-06 | 2015-11-03 | Ixia | Methods, systems, and computer readable media for controlling Tx and Rx throughput over TCP |
US9436475B2 (en) * | 2012-11-05 | 2016-09-06 | Nvidia Corporation | System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same |
US9178823B2 (en) | 2012-12-12 | 2015-11-03 | Ixia | Methods, systems, and computer readable media for generating simulated network traffic using different traffic flows and maintaining a configured distribution of traffic between the different traffic flows and a device under test |
US9397901B2 (en) | 2012-12-18 | 2016-07-19 | Ixia | Methods, systems, and computer readable media for classifying application traffic received at a network traffic emulation device that emulates multiple application servers |
US9094336B2 (en) | 2013-03-15 | 2015-07-28 | Ixia | Methods, systems, and computer readable media for assisting with the debugging of conditions associated with the processing of test packets by a device under test |
US9264340B2 (en) | 2013-03-15 | 2016-02-16 | Ixia | Methods, systems, and computer readable media for misdirected packet drill down and negative packet capture at a network test device |
US9116873B2 (en) | 2013-03-21 | 2015-08-25 | Ixia | Methods, systems, and computer readable media for adjusting load at a device under test |
US9575760B2 (en) * | 2013-05-17 | 2017-02-21 | Nvidia Corporation | Techniques for sharing priorities between streams of work and dynamic parallelism |
JP6310260B2 (ja) * | 2014-01-20 | 2018-04-11 | 株式会社荏原製作所 | 基板処理装置内の複数の処理ユニットを調整するための調整装置、および該調整装置を備えた基板処理装置 |
RO132177A2 (ro) | 2016-03-21 | 2017-09-29 | Ixia, A California Corporation | Metode, sistem şi suport informatic pentru testarea dispozitivelor cu echipament de reţea, folosind protocolul fără conexiune |
US10776535B2 (en) | 2016-07-11 | 2020-09-15 | Keysight Technologies Singapore (Sales) Pte. Ltd. | Methods, systems and computer readable media for testing network devices using variable traffic burst profiles |
US10193773B2 (en) | 2016-11-09 | 2019-01-29 | Keysight Technologies Singapore (Holdings) Pte. Ltd. | Methods, systems, and computer readable media for distributed network packet statistics collection in a test environment |
US10764148B2 (en) | 2017-11-29 | 2020-09-01 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for network traffic statistics collection |
US11108675B2 (en) | 2018-10-31 | 2021-08-31 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for testing effects of simulated frame preemption and deterministic fragmentation of preemptable frames in a frame-preemption-capable network |
US11388078B1 (en) | 2019-06-10 | 2022-07-12 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for generating and using statistically varying network traffic mixes to test network devices |
US11381464B2 (en) | 2019-11-28 | 2022-07-05 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for implementing a generalized model for defining application state machines |
CN111443592B (zh) * | 2020-03-24 | 2022-11-29 | 上海卫星工程研究所 | 设备控制权状态的传递方法及传递系统 |
Family Cites Families (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4200927A (en) | 1978-01-03 | 1980-04-29 | International Business Machines Corporation | Multi-instruction stream branch processing mechanism |
US4197579A (en) | 1978-06-06 | 1980-04-08 | Xebec Systems Incorporated | Multi-processor for simultaneously executing a plurality of programs in a time-interlaced manner |
JPS63254530A (ja) | 1987-04-10 | 1988-10-21 | Nec Corp | 情報処理装置 |
US5321823A (en) | 1988-07-20 | 1994-06-14 | Digital Equipment Corporation | Digital processor with bit mask for counting registers for fast register saves |
JPH0748179B2 (ja) | 1988-10-12 | 1995-05-24 | 日本電気株式会社 | データ処理装置 |
US5142676A (en) | 1988-12-28 | 1992-08-25 | Gte Laboratories Incorporated | Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory |
JPH02190930A (ja) | 1988-12-29 | 1990-07-26 | Internatl Business Mach Corp <Ibm> | ソフトウエア命令実行装置 |
US5093777A (en) | 1989-06-12 | 1992-03-03 | Bull Hn Information Systems Inc. | Method and apparatus for predicting address of a subsequent cache request upon analyzing address patterns stored in separate miss stack |
GB2234613B (en) | 1989-08-03 | 1993-07-07 | Sun Microsystems Inc | Method and apparatus for switching context of state elements in a microprocessor |
US6038584A (en) | 1989-11-17 | 2000-03-14 | Texas Instruments Incorporated | Synchronized MIMD multi-processing system and method of operation |
US5487156A (en) | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
JP2616182B2 (ja) | 1990-08-29 | 1997-06-04 | 三菱電機株式会社 | データ処理装置 |
JP2845646B2 (ja) | 1990-09-05 | 1999-01-13 | 株式会社東芝 | 並列演算処理装置 |
JPH04335431A (ja) | 1991-05-13 | 1992-11-24 | Nec Corp | 情報処理装置 |
US5309173A (en) | 1991-06-28 | 1994-05-03 | Texas Instruments Incorporated | Frame buffer, systems and methods |
JP2611065B2 (ja) | 1991-08-19 | 1997-05-21 | 三菱電機株式会社 | データ転送方式 |
US5546593A (en) * | 1992-05-18 | 1996-08-13 | Matsushita Electric Industrial Co., Ltd. | Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream |
JP2665111B2 (ja) | 1992-06-18 | 1997-10-22 | 日本電気株式会社 | ベクトル処理装置 |
WO1994027216A1 (en) | 1993-05-14 | 1994-11-24 | Massachusetts Institute Of Technology | Multiprocessor coupling system with integrated compile and run time scheduling for parallelism |
FR2705804B1 (fr) | 1993-05-27 | 1995-08-11 | Sgs Thomson Microelectronics | Architecture de processeur multi-tâches. |
US5535365A (en) | 1993-10-22 | 1996-07-09 | Cray Research, Inc. | Method and apparatus for locking shared memory locations in multiprocessing systems |
US5572704A (en) | 1993-12-15 | 1996-11-05 | Silicon Graphics, Inc. | System and method for controlling split-level caches in a multi-processor system including data loss and deadlock prevention schemes |
US5604877A (en) | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
US5745778A (en) | 1994-01-26 | 1998-04-28 | Data General Corporation | Apparatus and method for improved CPU affinity in a multiprocessor system |
US5509123A (en) | 1994-03-22 | 1996-04-16 | Cabletron Systems, Inc. | Distributed autonomous object architectures for network layer routing |
US5542088A (en) | 1994-04-29 | 1996-07-30 | Intergraph Corporation | Method and apparatus for enabling control of task execution |
US5758142A (en) | 1994-05-31 | 1998-05-26 | Digital Equipment Corporation | Trainable apparatus for predicting instruction outcomes in pipelined processors |
US5649144A (en) | 1994-06-13 | 1997-07-15 | Hewlett-Packard Co. | Apparatus, systems and methods for improving data cache hit rates |
JP2677202B2 (ja) | 1994-08-12 | 1997-11-17 | 日本電気株式会社 | マイクロプロセッサ |
JPH08129492A (ja) * | 1994-11-01 | 1996-05-21 | Nippon Telegr & Teleph Corp <Ntt> | 資源排他チェックシステム及び資源排他チェック方法 |
US5812811A (en) * | 1995-02-03 | 1998-09-22 | International Business Machines Corporation | Executing speculative parallel instructions threads with forking and inter-thread communication |
JP3494736B2 (ja) | 1995-02-27 | 2004-02-09 | 株式会社ルネサステクノロジ | 分岐先バッファを用いた分岐予測システム |
JPH08293851A (ja) * | 1995-04-21 | 1996-11-05 | Sony Corp | 移動局受信装置 |
US5748468A (en) | 1995-05-04 | 1998-05-05 | Microsoft Corporation | Prioritized co-processor resource manager and method |
US5784613A (en) | 1995-09-12 | 1998-07-21 | International Busines Machines Corporation | Exception support mechanism for a threads-based operating system |
JP2889845B2 (ja) | 1995-09-22 | 1999-05-10 | 松下電器産業株式会社 | 情報処理装置 |
US6115802A (en) | 1995-10-13 | 2000-09-05 | Sun Mircrosystems, Inc. | Efficient hash table for use in multi-threaded environments |
US5701432A (en) | 1995-10-13 | 1997-12-23 | Sun Microsystems, Inc. | Multi-threaded processing system having a cache that is commonly accessible to each thread |
US5852726A (en) | 1995-12-19 | 1998-12-22 | Intel Corporation | Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner |
US5815733A (en) | 1996-02-01 | 1998-09-29 | Apple Computer, Inc. | System for handling interrupts in a computer system using asic reset input line coupled to set of status circuits for presetting values in the status circuits |
US5867725A (en) | 1996-03-21 | 1999-02-02 | International Business Machines Corporation | Concurrent multitasking in a uniprocessor |
US5826081A (en) | 1996-05-06 | 1998-10-20 | Sun Microsystems, Inc. | Real time thread dispatcher for multiprocessor applications |
JPH1011301A (ja) | 1996-06-25 | 1998-01-16 | Masaharu Imai | マルチタスク処理装置及びマルチタスク処理制御方法 |
US5860017A (en) | 1996-06-28 | 1999-01-12 | Intel Corporation | Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction |
US5933627A (en) | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
JP3760035B2 (ja) * | 1996-08-27 | 2006-03-29 | 松下電器産業株式会社 | 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ |
KR100500002B1 (ko) | 1996-08-27 | 2005-09-08 | 마츠시타 덴끼 산교 가부시키가이샤 | 복수의명령흐름을독립적으로처리하고,명령흐름단위로처리성능을유연하게제어하는멀티스레드프로세서 |
US5913054A (en) | 1996-12-16 | 1999-06-15 | International Business Machines Corporation | Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle |
US6029228A (en) | 1996-12-31 | 2000-02-22 | Texas Instruments Incorporated | Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions |
JP3605978B2 (ja) | 1997-01-17 | 2004-12-22 | 松下電器産業株式会社 | マイクロコンピュータ |
US5835705A (en) | 1997-03-11 | 1998-11-10 | International Business Machines Corporation | Method and system for performance per-thread monitoring in a multithreaded processor |
US5946711A (en) | 1997-05-30 | 1999-08-31 | Oracle Corporation | System for locking data in a shared cache |
US5913049A (en) * | 1997-07-31 | 1999-06-15 | Texas Instruments Incorporated | Multi-stream complex instruction set microprocessor |
US6076157A (en) | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
US6212544B1 (en) | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
US6260077B1 (en) * | 1997-10-24 | 2001-07-10 | Sun Microsystems, Inc. | Method, apparatus and program product for interfacing a multi-threaded, client-based API to a single-threaded, server-based API |
US6061710A (en) | 1997-10-29 | 2000-05-09 | International Business Machines Corporation | Multithreaded processor incorporating a thread latch register for interrupt service new pending threads |
US5987492A (en) | 1997-10-31 | 1999-11-16 | Sun Microsystems, Inc. | Method and apparatus for processor sharing |
US6079003A (en) | 1997-11-20 | 2000-06-20 | Advanced Micro Devices, Inc. | Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache |
US6018759A (en) | 1997-12-22 | 2000-01-25 | International Business Machines Corporation | Thread switch tuning tool for optimal performance in a computer processor |
US6016542A (en) | 1997-12-31 | 2000-01-18 | Intel Corporation | Detecting long latency pipeline stalls for thread switching |
US6308261B1 (en) | 1998-01-30 | 2001-10-23 | Hewlett-Packard Company | Computer system having an instruction for probing memory latency |
US6430593B1 (en) * | 1998-03-10 | 2002-08-06 | Motorola Inc. | Method, device and article of manufacture for efficient task scheduling in a multi-tasking preemptive priority-based real-time operating system |
US6356996B1 (en) * | 1998-03-24 | 2002-03-12 | Novell, Inc. | Cache fencing for interpretive environments |
GB9809022D0 (en) | 1998-04-29 | 1998-06-24 | Int Computers Ltd | Semaphore for a computer system |
US6260138B1 (en) | 1998-07-17 | 2001-07-10 | Sun Microsystems, Inc. | Method and apparatus for branch instruction processing in a processor |
US6119203A (en) | 1998-08-03 | 2000-09-12 | Motorola, Inc. | Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system |
US6493749B2 (en) * | 1998-08-17 | 2002-12-10 | International Business Machines Corporation | System and method for an administration server |
US6567849B2 (en) * | 1998-08-17 | 2003-05-20 | International Business Machines Corporation | System and method for configuring and administering multiple instances of web servers |
US6792524B1 (en) | 1998-08-20 | 2004-09-14 | International Business Machines Corporation | System and method cancelling a speculative branch |
US6192384B1 (en) | 1998-09-14 | 2001-02-20 | The Board Of Trustees Of The Leland Stanford Junior University | System and method for performing compound vector operations |
SE9803632D0 (sv) | 1998-10-22 | 1998-10-22 | Ericsson Telefon Ab L M | A processor |
US6477562B2 (en) | 1998-12-16 | 2002-11-05 | Clearwater Networks, Inc. | Prioritized instruction scheduling for multi-streaming processors |
US7529907B2 (en) | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US6292888B1 (en) | 1999-01-27 | 2001-09-18 | Clearwater Networks, Inc. | Register transfer unit for electronic processor |
US6389449B1 (en) | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US7257814B1 (en) | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
US7020879B1 (en) | 1998-12-16 | 2006-03-28 | Mips Technologies, Inc. | Interrupt and exception handling for multi-streaming digital processors |
US6272624B1 (en) | 1999-04-02 | 2001-08-07 | Compaq Computer Corporation | Method and apparatus for predicting multiple conditional branches |
US6535905B1 (en) | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6442675B1 (en) | 1999-07-29 | 2002-08-27 | International Business Machines Corporation | Compressed string and multiple generation engine |
US6487571B1 (en) | 1999-10-07 | 2002-11-26 | International Business Machines Corporation | Method and system for generating actual random numbers within a multiprocessor system |
US6502185B1 (en) | 2000-01-03 | 2002-12-31 | Advanced Micro Devices, Inc. | Pipeline elements which verify predecode information |
JP2004518183A (ja) | 2000-07-14 | 2004-06-17 | クリアウオーター・ネツトワークス・インコーポレイテツド | マルチスレッド・システムにおける命令のフェッチとディスパッチ |
JP4335431B2 (ja) | 2000-12-07 | 2009-09-30 | 株式会社小森コーポレーション | 給紙装置 |
US6976155B2 (en) * | 2001-06-12 | 2005-12-13 | Intel Corporation | Method and apparatus for communicating between processing entities in a multi-processor |
-
1999
- 1999-03-22 US US09/273,810 patent/US6389449B1/en not_active Expired - Lifetime
-
2000
- 2000-03-14 WO PCT/US2000/006615 patent/WO2000057297A1/en not_active Application Discontinuation
- 2000-03-14 CA CA002367039A patent/CA2367039A1/en not_active Abandoned
- 2000-03-14 AU AU38818/00A patent/AU3881800A/en not_active Abandoned
- 2000-03-14 JP JP2000607105A patent/JP3877529B2/ja not_active Expired - Fee Related
- 2000-03-14 EP EP00917917A patent/EP1290569A4/en not_active Withdrawn
-
2002
- 2002-02-08 US US10/071,547 patent/US6789100B2/en not_active Expired - Lifetime
-
2004
- 2004-08-18 US US10/921,077 patent/US7765546B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP1290569A4 (en) | 2005-05-11 |
US20020095565A1 (en) | 2002-07-18 |
EP1290569A1 (en) | 2003-03-12 |
AU3881800A (en) | 2000-10-09 |
WO2000057297A1 (en) | 2000-09-28 |
CA2367039A1 (en) | 2000-09-28 |
US7765546B2 (en) | 2010-07-27 |
US6389449B1 (en) | 2002-05-14 |
JP2002540505A (ja) | 2002-11-26 |
US6789100B2 (en) | 2004-09-07 |
US20050081214A1 (en) | 2005-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3877529B2 (ja) | マルチストリーミングデジタルプロセッサ用のストリーム間制御および通信 | |
US7926062B2 (en) | Interrupt and exception handling for multi-streaming digital processors | |
US7257814B1 (en) | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors | |
KR100628492B1 (ko) | 실시간 동작 수행방법 및 시스템 | |
JP3877527B2 (ja) | マルチストリーミングプロセッサ向けの優先順位付き命令スケジューリング | |
Masrur et al. | VM-based real-time services for automotive control applications | |
WO2012016439A1 (zh) | 业务管理方法和装置、以及设备 | |
KR20050016170A (ko) | 실시간 동작 수행방법 및 시스템 | |
CN107017014B (zh) | 用于低能量mcu的动态集装箱化系统存储器保护 | |
JPH03144847A (ja) | マルチプロセッサ・システムおよびそのプロセス同期方法 | |
JP5891284B2 (ja) | コンピュータシステム、カーネルスケジューリングシステム、リソース割当方法及びプロセス実行共有方法 | |
US7373646B1 (en) | Method and apparatus for sharing stack space between multiple processes in a network device | |
JP5676845B2 (ja) | コンピュータシステム、カーネルスケジューリングシステム、リソース割当方法及びプロセス実行共有方法 | |
JP4926364B2 (ja) | ダイナミックマルチストリーミングプロセッサでメモリ操作の原子性を実現するための方法と装置 | |
US6581089B1 (en) | Parallel processing apparatus and method of the same | |
Li et al. | Rosgm: A real-time gpu management framework with plug-in policies for ros 2 | |
JP2010134698A (ja) | 情報処理システム | |
WO2000070482A1 (en) | Interrupt and exception handling for multi-streaming digital processors | |
Goossens et al. | Run-time middleware to support real-time system scenarios | |
Roussos et al. | Deterministic batch scheduling without static partitioning | |
JPH08171531A (ja) | アクセス競合制御方法 | |
Warren | by Maria Lima |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050222 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050516 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050527 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050819 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060131 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060424 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060501 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060731 |
|
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: 20061010 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061031 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3877529 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091110 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101110 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111110 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121110 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121110 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131110 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |