(57)【特許請求の範囲】
【請求項１】
１つまたは複数の命令スレッドをストリーミングするための複数のストリームと、
前記複数のストリームからの前記１つまたは複数の命令スレッドを処理するための機能リソースのセットと、
前記機能リソースのセットに結合し、前記複数のストリームの各々に関連付けられたストリーム間制御ロジックであって、前記機能リソースのセットのうちの一定のリソースを前記複数のストリームのうちの、各ストリームについての優先順位に従って定まる一定のものによる使用のために確保し、且つ、前記機能リソースのセットのうちの前記一定のリソースを前記複数のストリームのうちの、前記一定のものよりも低い優先順位を有する他のものによる使用から制限する、ストリーム間制御ロジックと、
を備え、
前記１つまたは複数の命令スレッドが、前記ストリーム間制御ロジックを修正して、前記機能リソースのセットのうちの前記一定のリソースのどれを、前記複数のストリームのうちの前記一定のもののために確保するかを変更し、
前記ストリーム間制御ロジックが、前記複数のストリームの各々に関連付けられた制御許可ビットマップから構成され、該制御許可ビットマップが、前記複数のストリームの各々が前記複数のストリームのうちの他のもののための前記機能リソースの組の一定のリソースの確保をどのように変更するかを示す、マルチストリーミングプロセッサ。
【請求項２】
ストリーム間制御ロジックが、別のストリームを実行可能化するまたは実行不能化すること、別のストリームをスリープモードにするまたは別のストリームをスリープモードから呼び覚ますこと、機能リソースへのアクセスに関して別のストリームの優先順位を設定すること、および別のストリームによる機能リソースへのアクセスの阻止を許可することの１つまたは複数を達成するための機構を含む、請求項１に記載のプロセッサ。
【請求項３】
ストリーム間制御ロジックが、ストリームがマスタステータスを付与され、マスタストリームを実行し、他のストリームによる干渉を受けずに他のストリームに関してあらゆるすべての使用可能な制御ロジックを行使するマスタモードを含む、請求項２に記載のプロセッサ。
【請求項４】
複数のストリームにマスタステータスが与えられ、マスタステータスを与えられたストリームがそれぞれ、別のマスタストリームの制御下にない特定の他のストリームに関してマスタ制御を行使するマスタスレッドを実行してよい、請求項３に記載のプロセッサ。
【請求項５】
ストリーム間制御ロジックが監視モードを含み、該モードにより制御特権を改変または取消してよい制御されているストリームに準拠して、制御が、最小制御から最大制御まで付与される可能性がある、請求項２に記載のプロセッサ。
【請求項６】
マスタステータスおよびストリーム間制御階層が少なくとも１つのオンチップビットマップによって記録され、修正される、請求項２に記載のプロセッサ。
【請求項７】
各ストリームが、それぞれ他のストリームの制御特権を付与または取消すビットマップを維持、編集し、設定値が、設定値を無視するマスタストリーム以外の任意のストリームに有効である、請求項６に記載のプロセッサ。
【請求項８】
（ａ）機能リソースのうちの一定のリソースを複数のストリームのうちの、各ストリームについての優先順位に従って定まる一定のものによる使用のために確保し、且つ、前記機能リソースのセットのうちの前記一定のリソースを前記複数のストリームのうちの、前記一定のものよりも低い優先順位を有する他のものによる使用から制限する、プロセッサ内ストリーム間制御ロジックを実現するステップと、
（ｂ）他のあらゆるストリームの制御の範囲が記録される、各ストリームと関連付けられた制御アクセス特権を確立するステップと、
（ｃ）ストリームごとに記録された範囲内の制御ロジックを使用してオペレーティングシステム間でストリーム間制御を行使するステップと、
を備え、
前記１つまたは複数の命令ストリームが、前記ストリーム間制御ロジックを修正して、前記機能リソースのセットのうちの一定のリソースのどれを、前記複数のストリームのうちの一定のもののために確保するかを変更し、
前記ストリーム間制御ロジックが、前記複数のストリームの各々に関連付けられた制御許可ビットマップから構成され、該制御許可ビットマップが、前記複数のストリームの各々が前記複数のストリームのうちの他のもののための前記機能リソースの組の一定のリソースの確保をどのように変更するかを示す、
マルチストリーミングプロセッサの別個のストリームで並行して実行する複数のソフトウェアスレッドの間に協調を与えるための方法。
【請求項９】
制御の範囲が、別のストリームを実行可能化するまたは実行不能化すること、別のストリームをスリープモードにするまたは別のストリームをスリープモードから呼び覚ますこと、機能リソースへのアクセスに関して別のストリームの優先順位を設定すること、および別のストリームによる機能リソースへのアクセスの阻止を許可することの１つまたは複数を含む、請求項８に記載の方法。
【請求項１０】
ストリームにマスタステータスが付与され、任意のストリームによる干渉を受けずに、他のストリームに関してあらゆるすべての使用可能な制御ロジックを行使してよい、マスタモードを設定するためのステップをさらに備える、請求項９に記載の方法。
【請求項１１】
複数のストリームにマスタステータスが付与され、マスタステータスを付与されたストリームが、それぞれ、別のマスタストリームの制御下にはない特定の他のストリームに関するマスタ制御を行使するマスタスレッドを実行してよい、請求項１０に記載の方法。
【請求項１２】
ストリーム間制御ロジックが、制御特権を改変または取消してよい制御されているストリームに準拠して、制御が、最小制御から最大制御まで付与される可能性がある監視モードを含む、請求項９に記載の方法。
【請求項１３】
マスタステータスおよびストリーム間制御階層が、少なくとも１つのオンチップビットマップによって記録、修正される、請求項９に記載の方法。
【請求項１４】
各ストリームが、それぞれの他のストリームについて制御特権を付与または取消すビットマップを維持、編集し、設定値が、設定値を無視するマスタストリーム以外の任意のストリームに有効である、請求項１３に記載の方法。
【請求項１５】
処理するデータを獲得するための入力装置と、
制御された使用のためにデータおよび実行可能なコードを記憶するためのメモリ要素と、
マルチストリーミングプロセッサと、
を備え、
マルチストリーミングプロセッサが、１つまたは複数の命令スレッドをストリーミングするための複数のストリームと、前記複数のストリームからの前記１つまたは複数の命令スレッドを処理するための機能リソースのセットと、前記機能リソースのセットに結合し、前記複数のストリームの各々に関連付けられたストリーム間制ロジックであって、前記機能リソースのセットのうちの一定のリソースを前記複数のストリームのうちの、各ストリームについての優先順位に従って定まる一定のものによる使用のために確保し、且つ、前記機能リソースのセットのうちの前記一定のリソースを前記複数のストリームのうちの、前記一定のものよりも低い優先順位を有する他のものによる使用から制限する、ストリーム間制御ロジックを有し、
前記１つまたは複数の命令スレッドが、前記ストリーム間制御ロジックを修正して、前記機能リソースのセットのうちの前記一定のリソースのどれを、前記複数のストリームのうちの前記一定のもののために確保するかを変更し、
前記ストリーム間制御ロジックが、前記複数のストリームの各々に関連付けられた制御許可ビットマップから構成され、該制御許可ビットマップが、前記複数のストリームの各々が前記複数のストリームのうちの他のもののための前記機能リソースの組の一定のリソースの確保をどのように変更するかを示す、計算機システム。
【請求項１６】
ストリーム間制御ロジックが、別のストリームを実行可能化するまたは実行不能化すること、別のストリームをスリープモードにすることまたは別のストリームをスリープモードから呼び覚ますこと、機能リソースへのアクセスに関して別のストリームの優先順位を設定すること、および別のストリームによる機能リソースへのアクセスの阻止を許可することの１つまたは複数を達成するための機構を含む、請求項１５に記載のシステム。
【請求項１７】
ストリーム間制御ロジックが、ストリームにマスタステータスが付与され、任意のストリームによる干渉を受けずに他のストリームに関するあらゆるすべての制御ロジックを行使してよいマスタモードを含む、請求項１６に記載のストリーム。
【請求項１８】
複数のストリームがマスタステータスを付与され、マスタステータスを付与されたストリームが、それぞれ、別のマスタストリームの制御下にない特定の他のストリームに関してマスタ制御を行使するマスタスレッドを実行してよい、請求項１７に記載のシステム。
【請求項１９】
ストリーム間制御ロジックが、制御特権を改変または取消してよい制御されているストリームに準拠して、制御が、最小制御から最大制御まで付与される可能性がある監視モードを含む、請求項１６に記載のシステム。
【請求項２０】
マスタステータスおよびストリーム間制御階層が、少なくとも１つのオンチップビットマップによって記録、修正される、請求項１７に記載のシステム。
【請求項２１】
各ストリームが、それぞれ他のストリームに対する制御特権を付与または取消すビットマップを維持、編集し、設定値が、設定値を無視するだろうマスタストリーム以外の任意のストリームに有効である、請求項２０に記載のシステム。
【請求項２２】
１つまたは複数の命令スレッドをストリーミングするための複数のストリームと、前記複数のストリームからの前記１つまたは複数の命令スレッドを処理するための機能リソースのセットと、前記機能リソースのセットに結合し、前記複数のストリームの各々に関連付けられたストリーム間制御ロジックであって、前記機能リソースのセットのうちの一定のリソースを前記複数のストリームのうちの、各ストリームについての優先順位に従って定まる一定のものによる使用のために確保し、且つ、前記機能リソースセットのうちの前記一定のリソースを前記複数のストリームのうちの、前記一定のものよりも低い優先順位を有する他のものによる使用から制限する、ストリーム間制御ロジックとを有し、前記１つまたは複数の命令スレッドが、前記ストリーム間制御ロジックを修正して、前記機能リソースのセットのうちの前記一定のリソースのどれを、前記複数のストリームのうちの前記一定のもののために確保するかを変更し、前記ストリーム間制御ロジックが、前記複数のストリームの各々に関連付けられた制御許可ビットマップから構成され、該制御許可ビットマップが、前記複数のストリームの各々が前記複数のストリームのうちの他のもののための前記機能リソースの組の一定のリソースの確保をどのように変更するかを示す、マルチストリーミングプロセッサを電源投入時に初期化するまたはリセットするための方法であって、
（ａ）マルチストリーミングプロセッサのあるストリームをマスタストリームとして指定し、マスタストリームが、干渉を受けずに他のすべてのストリームのステータスおよび制御モードを設定することができるステップと、
（ｂ）マスタストリームでマスタスレッドを開始し、マスタスレッドが他のすべてのストリームを初期化するためのコードを備えるステップと、
（ｃ）マスタストリームコードを実行し、他のすべてのストリームの初期ステータスおよび制御モードを設定するステップと、
を備える方法。
【請求項２３】
マスタスレッド制御コードを実行するマスタストリームにより、マスタストリームに従属する少なくとも１つのスレーブストリーム内で初期スレッドを開始するためのステップ（ｄ）をさらに備える、請求項２２に記載の方法。
【請求項２４】
マスタスレッドが、マスタストリームとして指定されるストリームを空にし、該ストリーム内で別のスレッドを開始するためのステップ（ｅ）をさらに備える、請求項２３に記載の方法。
【発明の詳細な説明】
【０００１】
（技術分野）
本発明はデジタルプロセッサに関し、より詳細には当業者間でマルチストリーミングプロセッサと呼ばれる、複数のプロセスストリームを同時に実行できる装置に関する。
【０００２】
（背景技術）
複数のスレッドを処理することができるマルチストリーミングプロセッサは、当業者の間で既知であり、かなりの研究開発の主題であった。本発明は、この分野での過去の研究に注意し、その研究に基づき、装置および方法における新規のかつ非自明の改善を技術にもたらす。発明者は、本特許出願に、ここに開示されている本発明のいくつかの態様の追加の背景および文脈をともに提供する、マルチストリーミングプロセッサの技術分野で公開されている多くの論文を一覧表示する情報開示ステートメントを提供した。
【０００３】
定義の目的のため、本明細書は、処理システムに関するストリームを、命令スレッドをサポートし、処理するためのプロセッサのハードウェア機能として見なす。スレッドは、ストリーム内で実行する実際のソフトウェアである。例えば、デスクトップコンピュータを操作するためのＣＰＵとして実現されるマルチストリーミングプロセッサは、同時に、ワープロプログラムおよびオブジェクト指向描画プログラムなどの２つまたは３つ以上のアプリケーションからのスレッドを同時に処理してよい。別の例として、マルチストリーム機能のあるプロセッサは、パケット交換網のルータなど、通例の人間の命令なしに機械を動作してよい。例えば、ルータ内では、ネットワーク上でデータパケットを処理し、転送するための１つまたは複数のスレッド、ネットワークに接続しているその他のルータおよびサーバとのサービスの質（ＱｏＳ）取り決めのための別のスレッド、およびルーティングテーブル等を維持するための別のスレッドがあってよい。任意のマルチストリーミングプロセッサの複数の並行スレッドを処理する最大能力は、プロセッサがサポートするハードウェアストリームの数で固定されたままである。単一スレッドを動作するマルチストリーミングプロセッサは、未使用ストリームがアイドル状態にある単一ストリームプロセッサとして実行する。本発明の目的のため、ストリームは、ストリームがスレッドをサポートしているときはつねにアクティブストリームと見なされ、それ以外の場合は非アクティブと見なされる。
【０００４】
前述されたように、および本ケースでＩＤＳによって提供される論文中では、スーパースケーラプロセッサも技術分野で既知である。この用語は、１つまたは複数の型の機能ユニットの集まりを有し、複数の機能ユニットに並行命令を発行する能力を有するプロセッサを指す。今日構築されている大部分の中央処理装置（ＣＰＵ）は、各型の複数の機能ユニットを有し、この定義によりスーパースケーラプロセッサである。例えば、複数の浮動小数点ユニット、整数ユニット、論理装置、ロード／記憶装置等を含む多くのこのような装置を有するものもある。マルチストリーミングスーパースケーラも、当業者間で既知である。
【０００５】
発明者は、前述された型を含むが、それらに制限されないすべての型のマルチストリーミングプロセッサのアーキテクチャに無視されていた分野があることを突き止めた。無視されていた分野とは、並行ストリーム間の通信と、アクティブであるかどうかに関係なく、複数の並行スレッドの活動が調整されるように、また機能ユニットへのアクセスなどの活動が処理での多様なニーズを満たすために動的に共用されてよいように、あるアクティブストリームが別のストリームでアサートしてよい制御タイプの分野である。
【０００６】
したがって、当業者に明確に必要とされているのは、スーパースケーラプロセッサおよび命令をインタリーブするプロセッサを含むが、それらに制限されないマルチストリーミングまたはマルチスレッディングをサポートする、すべてのプロセッサアーキテクチャにおけるさらに精密なストリーム間制御および通信のための装置および方法である。本発明は、詳細を実行可能化する上で下記に開示されるこのような装置および方法を教示する。マルチストリームプロセッサアーキテクチャには重要な柔軟性、効率および堅牢さがさらに提供され、時間が肝要なスレッドを処理する能力は、かなりの追加の利点だけではなく、実現のための追加ゲートの数での相対的に低い費用で機能拡張される。
【０００７】
（発明の開示）
本発明の好ましい実施形態においては、１つまたは複数の命令スレッドをストリーミングするための複数のストリームと、ストリームからの命令を処理するための機能リソースのセットと、任意のストリームが他のストリームの動作に影響を与えるストリーム間制御機構とを備える、マルチストリーミングプロセッサが提供される。変形実施形態においては、ストリーム間制御機構は、別のストリームを実行可能化する、あるいは実行不能化すること、別のストリームをスリープモードにする、または別のストリームをスリープモードから呼び覚ますこと、機能リソースへのアクセスに関して別のストリームの優先順位を設定すること、および別のストリームによる機能リソースへのアクセスの阻止を許可することの１つまたは複数を達成するための機構を含む。
【０００８】
いくつかの実施形態においては、ストリーム間制御機構は、あるストリームにマスタステータスが付与され、任意のストリームによる干渉も受けずに他のストリームに関してあらゆるすべての使用可能な制御機構を実行してよいマスタモードを含む。また、いくつかの実施形態においては、ストリーム間制御機構は、制御特権を改変または取消してよい、制御されるストリームの準拠をもって、制御が最小制御から完全制御まで付与されうる監視モードを含む。
【０００９】
ストリーム間制御階層のために、マスタステータスおよびストリーム間制御階層が少なくとも１つのオンチップビットマップによって記録され、修正される機構などの色々な機構が実現されてよい。この機構においては、それぞれのストリームが、それぞれ他のストリームに関する制御特権を付与する、または取消すビットマップを維持、編集し、設定値は、設定値を無視するマスタストリーム以外の任意のストリームに有効である。
【００１０】
本発明の別の態様においては、（ａ）任意のストリームがそれ以外のストリームで制御機能を実行してよい、ストリーム間制御機構をプロセッサ内で実現するステップと、（ｂ）自分以外のすべてのストリームの制御の範囲が記録される、各ストリームと関連付けられた制御アクセス特権を確立するステップと、（ｃ）ストリームごとに記録される適用範囲内で制御機構を使用して動作ストリーム間でストリーム間制御を行使するステップとを備える、マルチストリーミングプロセッサの別個のストリームで並行して実行しているソフトウェアスレッドの間で協力を提供するための方法が提供される。
【００１１】
この方法においては、制御の適用範囲は、別のストリームを実行可能化する、または実行不能化すること、別のストリームをスリープモードにするまたは別のストリームをスリープモードから呼び覚ますこと、機能リソースへのアクセスに関して別のストリームの優先順位を設定することと、別のストリームによる機能リソースへのアクセスの阻止を許可するステップの内の１つまたは複数を含んでよい。さらに、あるストリームがマスタステータスを付与され、それによって任意のストリームによる干渉を受けずにその他のストリームに関してあらゆるすべての使用可能な制御を実行してよい、マスタモードを設定するためのステップがあってよい。まださらに、制御特権を改変または取消してよい、制御されているストリームに準拠して、制御が最小制御から最大制御まで付与される可能性がある監視モードもあってよい。この方法では、マスタステータスおよびストリーム間制御階層は、少なくとも１つのオンチップビットマップによって記録され、修正されてよく、そこではそれぞれのストリームが、それぞれのその他のストリームに対する制御特権を付与または取消すビットマップを維持し、編集し、設定値は、設定値を無視するマスタストリーム以外の任意のストリームに有効である。
【００１２】
本発明のその他の態様においては、計算機システムは、本発明の実施形態に従ったプロセッサを使用して教示される。変形実施形態、および本発明の応用においては、マルチストリーミングプロセッサにおいて制御のための新しい能力が提供され、当業者に新しくかつ強力な概念、プロセッサおよびシステムをもたらす。
【００１３】
（発明を実施するための最良の形態）
同じプロセッサ内で動作する複数のアクティブストリームは、多くの場合、サポートされているスレッドの性質によって結び付けられる。したがって、あるストリーム（アクティブストリーム）で実行しているスレッドが１つまたは複数のその他のアクティブストリームの機能を開始および制御することが許可される場合には、優位性が得られうる。アクティブストリームは、同じタスクでの作業を共用し、したがってデータを渡す効率的な方法を必要としうる。あるアクティブストリームは、一時的に、一定の処理リソースの、あるいは総スループットの独占的な使用を必要とすることがある。このようなアクティブストリームは、他のアクティブストリームがさらに少ないリソースで可能な限り効率的に動作し続けることができるようにする一方で、その特定の要求を表明する方法を必要とする。こういったことはすべてのマルチストリーミングプロセッサで問題となる。以下に続くこの概念および説明においては、特定のスレッドを実行しているストリームがアクティブストリームであること、およびまたスレッドコンテキストがレジスタファイルによってアクティブストリームに関連付けられていることを想起するとよい。
【００１４】
優先権書類０９／２１６０１７号に記述されているように、マルチストリーミングプロセッサは、２つまたは３つ以上の命令スレッドを並行して実行するための物理的なストリームリソース、および複数のレジスタファイルも有する。本発明はこのようなすべてのプロセッサに、および他の方法でマルチストリーミングを達成してよいプロセッサにも適用する。本発明の変形実施形態においては、編集可能特性のセットがアクティブストリームのために保たれ、これらの特性が、その特定のストリームに優先して他のアクティブストリームによって行使されてよい制御の形式を統制する。これらの編集可能な特性は、便宜的に、あるいは特別な理由のために変形実施形態において複数の形式のどれか１つを取ってよい。好ましい実施形態においては、編集可能な特性は、この装置により動作中非常に迅速なアクセスが可能となるため、プロセッサチップ上のシリコンで実現される。しかしながら、本発明は、このようには制限されず、このような特性は他の方法で記憶され、編集可能であってよい。編集可能な特性は、さまざまな状況および異なった実施形態においてストリームに特殊またはコンテキストに特殊のものとしてマッピングされてもよい。
【００１５】
ある例示的な実施形態においては、個々のビットまたはビット組み合わせのバイナリ値が個々のストリームと関連付けられ、ストリーム間の通信および制御に関する特定の意味を割り当てられるビットマップが維持され、以下にさらに詳しく説明される、特定のときのストリーム間の監視階層、各ストリームのプロセッサリソースへのアクセス、およびマスタストリームモード、実行可能化モード、および実行不能化モードの状態制御などの事柄を示す。
【００１６】
前述されたビットマップにおいては、いくつかの監視制御ビットが、他のアクティブストリームがそれぞれの個々のアクティブストリームに関して行使してよい制御の形式を統制する。アクティブストリームは、注意深く定められた範囲内で、それ自体の制御ビットを設定し、リセットしてよく、適切な許可を得たその他のアクティブストリームもこのようにしてよい。時間の任意の時点でマスタスレッドは、マスタスレッドを実行している間にマスタストリームと指定されるストリームで実行してよく、マスタストリームはスレーブストリームに関して完全な制御を有し、任意の時点でスレーブストリームの制御ビットを無視（ｏｖｅｒｒｉｄｅ）してよい。実行中である複数のマスタストリームがある場合には、それぞれ異なる指定されるスレーブストリームを有してよい。適切な制御設定値を使用して、アクティブストリームはその他のアクティブストリームのスーパバイザとしての役割を果たし、一時的に（典型的には）その実行を制御し、それらと通信してよい。さらに、マスタストリームは、アクティブなスレーブストリームが使用してよい処理リソースに関する制御を有し、スーパバイザストリームは、直接的に、あるいはストリームの優先順位を修正することによってのどちらかにより、アクティブなスレーブストリームが使用してよい処理リソースに関する制御を有してよい。
【００１７】
図１Ａは、命令スケジューラがアクティブストリームからの命令を機能リソース１０７にディスパッチする複数のスレッドから０から３と名前が付けられた４つのストリーム１０３に命令を提供する命令キャッシュ１０３を示す、本発明の実施形態に従ったマルチストリーミングプロセッサの一般化された図である。このケースでは４であるがさらに多くてもよい複数のレジスタファイル１０９のセットが、処理中にアクティブストリームと関連付けられるスレッドコンテキストを記憶するためなど、処理で使用するために示される。データがレジスタファイルおよびキャッシュ１１１に、およびレジスタファイルおよびキャッシュ１１１から流れ、機能リソースは、参照によって本明細書に組み込まれている優先権書類０９／２４００１２号で教示されるようにレジスタ転送装置（ＲＴＵ）を含んでよい。
【００１８】
本実施形態においては、唯一のストリーム間制御ビットマップ１１５が、個々のビットおよび、いくつかのケースでは、前記に紹介されたように、個々のストリームと関連付けられ、ストリーム間通信および制御に関して特定の意味を割当てられているビット組み合わせのバイナリ値を記憶する。共用されるシステムバス１１３は、命令およびデータキャッシュを接続する。示されている図面は例示的で、一般的であり、当業者は、なされてよい多くの変形があることを認識するだろう。この目的の重要さは、非常に多数のスレッドを同時にサポートするように適応される非常に多数のストリームにある。
【００１９】
ストリーム間制御ビットマップ１１５は、ストリーム間制御を定義し、構成する制御設定値の基準レポジトリである。この基準では、いくつかのインスタンスでは単一ビット、および他のインスタンスでは２個または３個以上のビットによって表されるバイナリ値が、共用されているシステムリソースのアクティブストリームの優先順位、特定のストリームに対する固定されたリソース割当て、およびアクティブストリーム間の制御階層などの事柄を定義する。ある例示的な実施形態での特定の制御特性を以下に示す。
【００２０】
本発明のこの実施形態における制御のある態様においては、アクティブストリームは、そのストリームに一意の制御基準データを設定し、編集することを可能にされる。別の態様においては、あるストリームは他のストリームの制御基準データを改変してよい。後者の態様においては、それぞれの特定のストリームが、どの他のストリームが特定のストリームのどの制御データを編集してよいのかを制御してよい。
【００２１】
図１Ｂは、図１Ａのビットマップ１１５の一部であり、あるストリーム、このケースではストリーム０によって付与される、他のストリームがストリーム０と一意に関連付けられている制御ビットを改変したり、ストリーム０に関して特定の制御機能を実行するための許可の状態を示すために設定されるビットを示す。この実施形態での類似するビットマップが、ストリーム１、２および３のそれぞれについて存在するが、一つの例でこの説明は十分である。このマトリックスでは、ストリーム１、２および３ごとの行、および制御定義のための列がある。やはり、これらのビットはアクティブストリーム０によって設定されてよく、ビットマップを編集するための動機は、ストリーム０の中で実行しているスレッドの性質によって定義されるだろうストリーム０の機能に関係付けられるだろう。しかしながら、ビットマップは、マルチストリーミングプロセッサ内のストリームと関連付けられる物理リソースであり、ストリーム間制御および協力の複数の形式および程度を実行可能化するために存在する。
【００２２】
図１Ｂの左から第１の列は監視と名前が付けられ、監視許可を示す。ストリーム１と２の行の論理（Ｌｏｇｉｃａｌ）１は、ストリーム０がストリーム１と２に監視アクセスを付与するが、ストリーム３には付与しないことを示す。監視アクセスとは、これらの他のストリームが本ストリームの制御データを編集してよいことを意味する。図示されている設定値では、ストリーム０のストリーム間制御データは、ストリーム０（それ自体）およびストリーム１と２によっても編集されてよいが、ストリーム３によって編集されてはならない。それぞれのアクティブストリームは自分の制御データを編集してよいため、ストリーム１と２に対する許可は、アクティブストリーム０により任意の時点で無効にされてよく、任意の時点で再許可されてよい。
【００２３】
ストリーム０が自分の制御データ構成を編集するために１つまたは複数のストリームにアクセスを付与する可能性のある状況の例としては、ストリーム０が非常に低い優先順位スレッドを実行しているか、あるいはスレッドをまったく実行しておらず、単に新規スレッドに使用可能であるケースがあるだろう。
【００２４】
図１Ｂの第２列は実行可能化と名前が付けられている。ストリーム０はこの列のビットを使用し、ストリーム０が実行不能化されている場合にストリーム０を実行可能化するために別のストリームに対する許可を付与する。本ケースでは、この列には論理１はないため、ストリーム１、２または３のどれもストリーム０を実行可能化してはならない。図１Ｂの第１列に関して前述された監視編集アクセスに対する許可と、実行可能化または実行不能化などの許可の間には明確な違いがある。第１のケースでは、許可は、別のストリームが本ストリームの制御データを設定するために付与され、広い態様ではストリーム間の制御階層を構成し直す。第２のインスタンスでは、制御データに対するアクセスは別のストリームに付与されないが、別のストリームは本ストリームに対する実行可能化または実行不能化などの特殊な形式の制御を行使する許可を付与されている。実行可能化の右側の次のビット列は実行不能化であり、例示的な設定値は、ストリーム１と３はこの瞬間ストリーム０を実行不能化する許可を付与されていることを示す。
【００２５】
次のビット列は優先順位と名前が付けられ、ストリームのこの列の論理１は、ストリーム０が、ストリーム０の優先順位を設定する許可を別のストリームに付与することを示す。本ケースでは、ストリーム０は他のストリームがその優先順位を設定することを可能としない。優先順位は、典型的には、プロセッサリソースへのアクセスを示すために、本発明の実施形態で設定される。次のビット列は割込みと名前が付けられ、別のストリームがストリーム０に割り込んでよいことを意味する。本ケースでは、ストリーム２には割込み特権が付与される。
【００２６】
本明細書の教示を考慮すると、当業者には、図示されている行列に加えられる可能性のある色々な改訂、および特定の列の意味があることが明らかでなければならない。また、行列の図が例示的であり、記述されているビットは、どのビットがどのストリームに、およびどの制御機能およびリソースに関係するのかに関して規約が守られる限り、２バイトレジスタでの個別ビットでもあるだろうことも当業者に明らかである。
【００２７】
本発明の好ましい実施形態においては、ストリーム間制御は、複数のストリーム、および複数の機能リソースも有するプロセッサを意味するマルチストリーミングスーパースケーラプロセッサに関して説明される。このようなプロセッサは、例えば、複数の整数処理装置、複数の浮動点処理装置、複数の分岐ユニット等を有してよい。ビットマップ１１５（図１）に示されているストリーム間制御構成は、一定のリソースを一定のストリームに確保し、それらの同じリソースが他のストリームによって使用されるのを制限するために、本発明の実施形態で設定されてよい。
【００２８】
図１Ｃは、ストリーム０の瞬間的なリソース割当てを示すビット行である。やはり、類似したリソース割当て構成はすべての他のストリームに関して存在してよいが、説明には１つで十分なはずである。このケースでは、４つの整数ユニット、４つの浮動小数点ユニット、および４つの分岐ユニットがある。本設定は、ストリーム０が整数ユニット１、２および３へ、および分岐ユニット１へのアクセスを確保していることを示す。逆に、この設定は、ストリーム０が整数４、あらゆる浮動小数点ユニット、または分岐ユニット１、２または３にアクセスしてはならないことを意味する。アクティブストリームとしてのストリーム０は、他のストリームへ制御ビット設定を許可すること、および否定することを含む、自分の構成を設定してよいため、ストリーム０（または任意のアクティブストリーム）は、特定のインスタンスでは特定のリソースを確保してよい。やはり、示されている構造が例示的であり、多くの方法で変えることができることが、当業者に明らかとなる。
【００２９】
いくつかのケースでは、スーパースケーラプロセッサ内でのリソースの固定割当ておよび分割に依存するよりむしろ、ストリームに対する優先順位によって、あるいはいくつかのリソースの場合には割当ての混合、他のリソースの場合には優先順位の管理によってリソースを割り当てることで得られる。固定割当ては、単に、図１Ｃに図示されるように、ある時間期間の間、リソースが独占的に供給されるが、供給は、言うまでもなく、それぞれのアクティブストリームによって、あるいは許可が付与されているケースでは別のアクティブストリームによって、独自の割当てのために任意の時点で編集（改変）されてよいことを意味する。
【００３０】
図１Ｄは、ストリーム０の優先順位設定値専用の図１のビットマップ１１５の一部を示す。このケースでは、優先順位は０から７まで変化してよいため、優先順位レベル設定値ごとに３個のビットが必要とされ、ビットのバイナリ値が優先順位レベルを示す。ある実施形態においては、実行優先順位、割込み優先順位およびリソース優先順位と名付けられている３つの異なる種類の優先順位がある。３つすべての種類の優先順位が、粒度は示されているより多いまたは少ないこともあるが図１Ｄになんらかの形で示される。
【００３１】
図１Ｄでは、一番上の行は実行優先順位を示す。この設定値は、あるストリームに関して、スレッドがそのストリーム内で何を実行してよいのかを決定する。すなわち、スレッドは、固有の一定の優先順位を有するか、任意の優先順位を割り当てられてもよく、図１Ｄに図示されるような実行優先順位は、任意のストリームによって、あるいは任意のストリームのためにスーパバイザアクティブストリームによって編集されてよい。ストリームの実行優先順位より高い優先順位の付いたスレッドだけが、そのストリームで実行してよい。優先順位を有するスレッドという概念は、さまざまな方法で実現されてよい。いくつかの好ましい実施形態では、スレッドは、割り当てられかつ改変可能な優先順位を有するスレッドコンテキストによる優先順位を有する。すなわち、コンテキストがレジスタファイルにロードされると、そのコンテキストには事前に設計されたまたは決定された粒度の優先順位が割り当てられ、コンテキストがアクティブにされ、ストリームに関連付けられるとストリームに呼び出される（あるいは呼び出されるだろう）スレッドは、レジスタファイルに記憶されているコンテキストの優先順位を有するとされてよい。以下の説明でさらに明らかにされるように、いくつかのケースでは、コンテキストはレジスタファイル内以外にメモリに記憶され、初期のまたは追加の処理のために後にレジスタファイルにリトリーブされてよい。記憶されているコンテキストは、コンテキストの優先順位レベルも伝えることができる。
【００３２】
図１Ｄの上部から２行目は、ストリーム０の割込み優先順位を示す。示されている割込み優先順位は３であり、３以上の優先順位レベルの設定された割込みだけがストリーム０に割り込んでよいことを意味する。やはり、スレッドでアクティブなときのストリーム自体、あるいはアクティブスーパバイザストリームは、割込み優先順位レベルを編集してよい。
【００３３】
整数、浮動点、および分岐と名前が付けられている図１Ｄのストリーム０の優先順位レベル設定値の下部の３行は、プロセッサリソースの種類へのアクセスのためのストリーム０の優先順位レベルを示す。これら３つがすべての種類のプロセッサリソースを構成するものではなく、したがっていくつかの実施形態においてはリソース優先順位にさらに多くの行がある可能性があることが、当業者に明らかである。
【００３４】
示されている時点で、ストリーム０は、整数ユニットの７（最高）優先順位、浮動小数点ユニットの４という優先順位、分岐ユニットの３という優先順位を有する。これらの設定値は例示的であり、代替実施形態においては、その他のプロセッサリソースのために維持されている優先順位もある。本発明の変形実施形態においては、一時的に設定されたリソース割当てが排他的に使用されてよく、その他では優先順位は排他的に使用されてよく、まだその他では２つの混合であってよい。リソース優先順位は、リソースの競合の場合に、最高の優先順位が設定されたアクティブストリームがリソースを獲得することを意味する。
【００３５】
本発明のこの実施形態においては、その他の制御ビットは、制御階層および状態を示すために使用される。図１Ｅは、ストリーム０のこのような制御ビットを示す。この例では、図１Ｅのストリーム０の制御ビットは、ストリーム０が、その瞬間に、マスタスレッドを実行しており、実行可能化されているが、スリープモードにはないことを示す。これらのビットは表示するものであり、おもに動作中の他のアクティブストリームの基準用である。例えば、あるアクティブストリームが別のアクティブストリームを実行不能化すると、プロセスで、代理（ａｃｔｉｎｇ）ストリームが補助的なストリームの実行可能化／実行不能化ビットを設定する。アクティブストリームがそれ自体をスリープモードにすると、それはスリープモードに入る前にそのスリープビットを設定するので、他のアクティブストリームは、制御ビットをチェックすることによって、そのストリームがスリープモードにあることを理解できる。あるアクティブストリームが別のアクティブストリームに対して行使してよい制御は、いくつかの例では、リソース割付けおよび／または優先順位を設定することによってなど、別のストリームの優先順位制御構成にビットを設定することによって、およびその他のインスタンスでは、ソフトウェア割込みを発行する、非アクティブストリームで新規スレッドを開始する等の他の方法によって達成される。
【００３６】
マスタストリームとは、マスタスレッドを実行することによってマスタストリームなのであり、アクティブなマスタストリームは、マスタにとってスレーブストリームである他のストリームに関して完全なアクセスおよび制御を有する。ストリームが制御構成を編集する許可をマスタストリームに必ずしも付与することはない。マスタストリームは、その内の１つが、好ましい実施形態においては、マルチストリーミングプロセッサの初期セットアップである色々な機能（ｄｕｔｉｅｓ）を有してよい。本発明の実施形態に従ったプロセッサを活用するシステムでの起動時およびリセット時に、マスタストリームは典型的にはブートプロセスの何らかの時点で呼び出され、例えば、ストリームの初期優先順位を設定するため、監視ビットを設定するため、および特定のストリームで特定のスレッドを開始するためなどのために動作するだろう。これらの機能は、いくつかのデフォルト設定値が、特殊化したＢＩＯＳコードを実行することによって作成されてよい、いくつかのケースでのように、システムごとに変わることができ、および変わり、マスタスレッドは追加のセットアップ機能等のために呼び出されてよい。
【００３７】
セットアップ後、マスタスレッドは、典型的にはプロセッサのストリームで実行中のままとなる必要はない。その目的を達成したマスタストリームは、それが占有するストリームで他のスレッドを開始してから退く、あるいは単に退き、非アクティブなストリームを割込みサービスルーチン、別の種類のユーティリティ機能等を実行するために、別のアクティブストリームが使用可能とするために別のスレッドを設定してよい。マスタスレッドは、多くの理由から退いた後に再び呼び出されてよい。例えば、リソースの競合がマスタに解決を要求したり、あるいは割込みまたは例外がマスタストリームに解決を要求することがある。また、いくつかのシステムにおけるマスタストリームがオペレーティングシステムまたはその一部、あるいはロードされ、システムＢＩＯＳでアクティブであるルーチン等を実行していることがあることが当業者に明らかである。本発明の実施形態に従ったいくつかのシステムにおいては、すべてのストリーム間制御機能は実行不能化され、プロセッサが、ここに教示されている制御機能のないプロセッサとしてだけ実行できるようにする。
【００３８】
いくつかの実施形態においては、一定の固定された機能性があってよい。例えば、本発明に従ったプロセッサは、あるストリームを常にマスタストリームにし、他はしないために配線されてよい。「配線」は、シリコン素子に実現されているハードウェアリソースおよびその接続によって一定の機能性が事前に設定されることを意味する。その他のスレッドの特定のストリームへの特定の割当ても設定されてよい。このようなケースでは、特定のリソース優先順位および／または割当ても設定されてよいし、あるいはストリーム間機能性のそれ以外がここに教示されてもよい。このような事前設定は、例えばネットワークルータ等などのきわめて専用のシステムアプリケーションにとってきわめて望ましいだろう。
【００３９】
ここの教示に従って、制御データが表され、記憶され、アクセスされてよい多くの方法があることが当業者に明らかとなるだろう。ここに示されている図は例示的である。好ましい実施形態では、制御データマップは、プロセッサチップの上に直接的にシリコン素子で実現される。この装置は、とりわけ、制御データへのアクセスが高速であるために好ましい。しかしながら、いくつかの実施形態においては、制御ビットマップは、ＲＡＭのそれ以外に使用されていない部分に、あるいはフラッシュカードメモリ上などのシステム内での任意のアクセス可能なメモリデバイス内にあってよい。
【００４０】
本発明のある態様に従ったシステム内でのマスタスレッドの概念および存在が前述されてきた。その他のすべてのスレッドはマスタスレッドに対するスレーブであるため、１つのマスタストリーム以外のすべてのアクティブストリームはマスタにとってスレーブストリームである。しかしながら、マスタとスレーブ以外の他のレベルの制御がある。特定のストリームは監視制御を付与されてよく、前記教示から推測されてよいように、他のストリームに関する監視責任を行使することを期待されてよい。前述された本発明の実施形態の監視ビットの状態は、監視制御の粒度を反映する。
【００４１】
マスタスレッドは、初期セットアップおよびスレッドのストリームへのロードなどの目的を追求してよく、矛盾および例外を解決するために戻ってよい。しかしながら、ちょうど他のプロセッサシステムにおいてのように、総合的なシステム機能とは、１つまたは複数のアプリケーションを実行することである。汎用コンピュータにおいては、多くのアプリケーションがあってよく、コンピュータの使用も同様に多い。人はインターネットをブラウズし、ｅ−メールを送受し、図面を作成し、写真を処理し、ワード文書を作文する、およびはるかに多くのことをしてよい。典型的には、各アプリケーションは特定の機能専用であり、アプリケーションスレッドは、アプリケーションが呼び出されると、プロセッサのストリームの１つまたは複数を占有する。
【００４２】
例えば、パケットデータ網のデータルータなどのさらに専用システムにおいては、相対的に少ないアプリケーションがあり、機械の機能は典型的にはユーザによって起動される以外のなんらかの様式で命令される。例えば、データルータにおいては、機能は、処理され、送信されるために受信されるデータの特徴に従って呼び出されてよい。
【００４３】
本発明のある実施形態において、これはすべての実施形態で必要とされているわけではないが、ソフトウェアは、本発明の実施形態に従ってマルチストリーミングプロセッサの新規のかつ独特の制御機能を最大限に利用するために特に機能強化される。また、プロセッサで実行中のソフトウェアは、本発明の実施形態に従って機能拡張されてよいが、他のソフトウェアは機能拡張されてはならない。典型的には、少なくともオペレーティングシステムまたはマスタスレッド、あるいは両方があり、特定のコードは、本発明の実施形態に従ってマルチストリーミングプロセッサの中に組み込まれる新しい制御およびステータス機能と協調するだろう。
【００４４】
図１Ａから図１Ｅに関して前述された制御データリソースおよび機能を考慮すると、すべてのストリーミングが等しい完全に公平から、多くの機能が事前設定され可変ではないきわめて専用のものまでずっと、実現される可能性のある幅広い多岐の構成がある。例えば、本発明に従ったいくつかのプロセッサでは、例えばストリーム０などのあるストリームは、設計によりつねにマスタストリームであってよい。他のストリームはマスタストリームの制御機能を変更することはできないが、マスタストリームはすべてのプロセッサリソースに完全なアクセスを有し、すべての他のストリームの制御データを操作してよいため、図１Ｂから図１Ｅのストリームに関して図示され、前述されたデータビットおよび値は、専用のマスタストリームのためには実現される必要はないだろう。
【００４５】
前述された説明および例示的なアーキテクチャを考慮すると、本発明の前には使用できなかった、現在は実行可能な幅広い多岐のストリーム間通信および制御機能がある。例えば、任意の１つのアクティブストリームは、独自のニーズに応じて独自のリソース割付けおよび優先順位を操作してよく、それは、ストリームの中で実行中のスレッドの性質、およびその他のストリームの中で実行するために使用可能な、あるいは実際に実行しているその他のスレッドの性質に密接に関係するだろう。また、アクティブストリームは、各アクティブストリームが他のストリームの制御データ設定値をチェックしてよいため、考えられる影響に関して事前に理解して、その他のストリームを開始、実行可能化、実行不能化、割り込む、分岐するおよび結合してよい。提供されている桁外れな優位点とは、プロセッサリソースの単なる使用よりむしろ、リアルタイムの効率を最大限にする能力である。すなわち、いまはシステムの目標に取り組むことができる。プロセッサは、それを行うことが必ずシステム目標にも対処するという、多くの場合誤った仮定で、歴史的に見てプロセッサリソースを最大限にするために設計されてきた。しかしながら、マルチストリーミングプロセッサが、完全に活動中で、低優先順位タスクを効率的に達成してよいが、高い優先順位のタスクが受ける注意は不十分であるため、システム目標に適切に取り組んでいることにはならないことは容易に理解できる。
【００４６】
本発明の実施形態においては、並行に実行中の別のスレッドを必要とする可能性があるか、あるいは並行に実行中の別のスレッドによって機能拡張されてよいスレッド（アプリケーション）を実行しているあるアクティブストリームは、その補助的なスレッドを呼び出し、それを使用可能なストリームとして開始してよい。例は、ＭＰＥＧビデオクリップを有するウェブページにアクセスするウェブブラウザである。本発明の実施形態に従ってプロセッサの１つのストリームで実行中のブラウザは、使用可能なストリームで実行するためにＭＰＥＧプレーヤーを呼び出してよい。データ制御ビットおよび値の状態は、ＭＰＥＧプレーヤー用のストリームを選択する上でブラウザストリームを誘導するだろう。ブラウザは、例えば、さらに高い優先順位を有するスレッドを実行するアクティブストリームを組み入れてはならない。しかしながら、それは、任意の時点で割り込まれてよい制御データビットを設定したストリームを組み入れてよい。
【００４７】
本実施形態での動作は、新規スレッドを分岐（ｆｏｒｋ）するなどの典型的なタスクを達成するための動作のシーケンスに従うことによって示すことができる。スレッドは、異なるストリームで実行するために他のスレッドを分岐することができる。例えば、オペレーティングシステムがアプリケーションプログラムを分岐することを希望することがあったり、アプリケーションがサブタスクすなわちスレッドを分岐する必要がある場合がある。例外に遭遇するスレッドが、それを処理するためにプロセスを分岐してよい。
【００４８】
分岐動作および結合動作に関して本発明の実施形態で好ましい方法は、図２Ａに図示されている。図１のストリーム１のスレッドが新規スレッドを分岐していると仮定する。これを行うために、スーパバイザスレッドとしてのストリーム１は、ステップ２０１で使用するためにアイドルストリームを要求し、このようなストリームがステップ２０２で使用できるようになるまで待機する。大部分のケースでは、待機はないだろう。ストリーム１は、例えば、ステップ２０３のストリーム２などの使用可能なストリームの数を受信する。いくつかの状況では、その後には、使用可能になるストリームがなく代替処置が講じられる、待機制限がある必要があるだろう。例えば、この例の場合、ストリームがただちに使用可能である、あるいは妥当な間隔で使用可能となると仮定される。
【００４９】
ストリーム２を初期化し、新規スレッドを実行するために、アクティブストリーム１は、新規スレッドの第１命令のアドレスを割り当てられたストリームのプログラムカウンタにロードし、新規スレッドのコンテキストのその他の構成要素を、ステップ２０４でプロセッサリソースの適切な要素にロードし、ステップ２０５でストリーム２の優先順位マップを設定する。ストリーム１は、ステップ２０６でストリーム２に監視制御ビット１０７も設定してよい（代わりに、ストリーム２で実行中の新規スレッドが、ステップ２０８の後にビットを設定してよい）。ストリーム２は、そのスーパバイザ制御ビットを、スーパバイザスレッドがそのスーパバイザの役割を果たすことができるようにするために設定させなければならず、スーパバイザの監視制御ビットは、制御されているスレッドがそれに割り込むことができるようにするために設定されなければならない。これらの初期化ステップが実行されると、監視スレッドはステップ１７でストリーム２の新規スレッドを開始する。代わりに、ストリーム２はスリープモードに入れられてよく、内部イベントまたは外部イベントを待機する。新規スレッドはステップ２０８のストリーム２で実行を開始する。ステップ２０９および２１０では、両方のストリームが、結合が必要とされるまで、独立して、並行して実行する。この例では、ストリーム１で実行しているスレッドが最初に終了すると仮定される。
【００５０】
スーパバイザスレッドが分岐したスレッドを結合する必要があるとき、それは分岐したスレッドが依然として実行中であるかを確かめるためにまずチェックする。実行中である場合には、それはステップ２１１で、それ自体をスリープさせ、スリープビットをストリーム制御ビット１１８の中で設定するという命令を実行してから、分岐したスレッドからの結合ソフトウェア割込みを待機する。分岐したスレッドはステップ２１２で結合割込みを送信し、スーパバイザスレッドは割込みを受信し、ステップ２１３で目を覚ます。スーパバイザはステップ２１４で結合動作を完了する。最後に、分岐したスレッドはステップ２１５で終了し、別のスレッドが使用するために、そのストリームを解放する。
【００５１】
図２Ｂは、分岐したストリームがスーパバイザストリームの前に終了するコンパニオンケースを説明する。このケースでは、分岐したストリームは終了すると、即座に結合割込みを送信する（ステップ２１６）。割込みは、スーパバイザストリームが終了するまで待機したままとなり、それから割込みはステップ２１７でサービスを受け、結合が完了する。「電子プロセッサ用のレジスタ転送装置（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｕｎｉｔ  ｆｏｒ  Ｅｌｅｃｔｒｏｎｉｃ  Ｐｒｏｃｅｓｓｏｒ）」と題する１９９９年１月２７日に提出された同時係続中の優先権出願に説明されるように、レジスタを背景でロードし、記憶することができる場合、コンテキストがまだロードされていない新規スレッドを分岐するプロセスは、図３に図示されるように、図２に図示されるステップから修正される。
【００５２】
図３に図示されるように、ステップは、プログラムカウンタおよびコンテキストを設定するためのステップ２０４が排除されている点を除き、図２Ａと図２Ｂのステップと同一である。ステップ２０６の後、新しいステップ３０１で、スーパバイザはレジスタ転送装置（ＲＴＵ）に、新規ストリーム用のコンテキストをロードするように信号で知らせる。これらの動作が完了すると、スーパバイザはステップ２０９でそれ以外の動作を続行することができる。
【００５３】
ＲＴＵはステップ３０２でコンテキスト切替えを行う。ＲＴＵが行われ、新規ストリームのコンテキストをロードすると、それは新たにロードされたレジスタファイルをアクティブにし、ステップ２０８で、やはりスーパバイザストリームとは関係なく新規ストリームを開始することができる。残りのステップは、スーパバイザが先に終了すると仮定して、図２Ａに同一である。それ以外の場合、図２Ｂと同じである。同時係続出願の図２でのように、過去にストリーム２によって使用されたレジスタファイルが保存されるだろう。
【００５４】
前述された実施形態は、本発明の範囲内で実現されてよい多くの実施形態を例示している。当業者は、ここに初めて教示される強力なアーキテクチャ概念が、単一チップシステム、マイクロプロセッサ、制御装置、ルータ、デジタル信号プロセッサ（ＤＳＰ）、ルーティングスイッチとその他のネットワークデバイス、および他の特殊な使用のために設計されたプロセッサを含むが、それらに制限されない多くの型のプロセッサに適用されてよいことを認識するだろう。本発明の教示は、簡略なワンチップ完全システムから複雑なスーパーコンピュータプロセッサまで、任意のサイズのプロセッサといっしょに実践されてよい。本発明は、小型システム用の簡略かつ高度に専用形式で、あるいは大型システム用の複雑で精密な形式で実現されてよい。マスタストリームおよびスーパバイザストリームを定義し、それらがスレーブストリームのリソースの活用を制御できるようにすることによって、プロセッサは、特定のソフトウェアおよびソフトウェア混合物の要件を満たし、例えば厳密なタイミング要件を満たすように動的に構成することができる。例えば、ストリームは、全体的なプロセッサスループットの一定のパーセンテージ、あるいは特定のリソースまたはリソースのクラスのパーセンテージ活用を保証される。このようにして、新しいアーキテクチャは、処理リソースの効率的な使用とともに、特定のスレッドの実行の最適化の平衡を可能にする。
【００５５】
優先順位の使用の追加例として、図１に従ったプロセッサを実現するパケットデータ網で使用するためのルータを考える。ルータプロセッサ内の各ストリームは、ストリーム０でのマスタとして実行している制御プログラムを除き、３つの異なる種類のパケットの１つの別個のフローを処理する。３つのスレーブストリームは、パケットのタイムリな転送に関係する異なるサービス保証を有する異なるプロトコルを使用してパケットを処理している。処理されている特定のプロトコルおよびサービスのクラスの場合に、整数ユニットへのアクセスがサービス保証を満たすことに大きな影響を与えるだろうと仮定する。その結果、マスタは、最高のサービス保証を有するストリーム１の優先順位マップを、値６に設定し、それに（マスタ以外の）他のストリームより高い整数ユニットへの優先順位アクセスを与える。次に最も厳しいサービス保証が設定されるストリーム３は、さらに低い優先順位５を有し、ストリーム２はさらに低い優先順位３を有する。初期に優先順位を設定した後、マスタはプロトコルごとのスループットを監視し、サービス保証が満たされていることを保証し、必要に応じてさらに優先順位を修正する。このようにして、スーパバイザは、スレッドの現在のニーズに基づいてストリームにリソースを動的に割り付けることができ、多岐に渡るプロトコルおよびサービスのクラスのサービス保証を満たすために必要に応じて優先順位を修正する。サービス保証は、ハードウェアではなく、監視ソフトウェアを使用して満たされるため、ルータは新しい要件が進化するにつれて容易に更新することができる。
【００５６】
優先順位の使用の別の例は、データルータシステムによって示されてもよい。データパケットを処理するためにストリームが１つまたは複数のスレッドを使用できる、４つのストリームを有するこのようなシステムを考慮する。コンテキストがレジスタファイルにロードされており、到着するデータパケットを処理するための４つのストリームのそれぞれでスレッドを開始するためにストリームと関連付けられていると仮定する。
【００５７】
データパケットの技術で既知であるように、すべてのデータパケットが等しいわけではない。受信されたように転送すればよいパケットもある。異なるフォーマットに再構成される必要のあるパケットもある。依然として、例えば暗号化／復号される必要のあるパケットもある。パケットを処理するために作業フローを支配するパケットの型は、典型的にはパケット用のヘッダ内に含まれ、処理のための型および範囲が、スレッドコンテキストがレジスタファイルにロードされ、レジスタファイルがストリーム（アクティブストリーム）と関連付けられ、処理がデータパケットで開始した後に初めてプロセッサが知るところとなる。
【００５８】
本発明の好ましい実施形態においては、図１Ｄに示され、前述されたように、それぞれのストリームは、さらに高い優先順位が設定されたプロセスだけがそのストリームで実行してよいことを意味する、実行優先順位を有するとされる。ある態様においては、プロセッサの各ストリームの実行優先順位は、図１のビットマップ１１５の一部の３個の編集可能ビットとして維持される。例示的なデータルータケースでは、パケットが処理されるために到着すると、パケットのコンテキストがレジスタファイルにロードされる。これは、優先権書類０９／２４００１２号の教示に従ったレジスタ転送装置（ＲＴＵ）によって好ましい実施形態で実行されてよい。
【００５９】
すぐ上記に説明されたように、パケットの性質が知られる前にデータパケットの処理を開始することが必要である。したがって、パケットが到着し、レジスタファイルがロードされると、各コンテキストには初期の高い優先順位が与えられる。例えば、７という尺度では、それぞれの初期コンテキストに６という優先順位が指定されるだろう。
【００６０】
ここでは、ストリームが使用可能となると、レジスタファイルは、レジスタファイルの優先順位およびストリームの実行優先順位に従って、ストリームと関連付けられる。レジスタファイルをストリームと関連付けると、ストリームでコンテキストスレッドが開始し、アクティブストリームを構成する。ストリームの実行優先順位はここではロードされたコンテキストの高い優先順位（この例では６）に設定されている。新規にロードされるパケットの処理が開始されると、パケットが実際に高速パケットであり、高い優先順位が実際に適切であることが決定されてよく、そのケースでは処理は完了まで続行する。本発明では、パケットの処理の完了時に、ストリーム内で開始される次のコンテキストが最高優先順位レベルの待機コンテキストとなることが所望される。この例では、これは、コンテキストがロードされるまで、あるいは実行優先順位がゼロとなるまで、実行優先中にを選択的に引き下げることによって行われる。ゼロに到達する唯一の方法は、任意の優先順位の待機中のコンテキストがない場合である。この状況では、ストリームは、任意のコンテキストが使用可能となるまでアイドルのままとなるだろう。
【００６１】
この例では、実行優先順位がパケット処理の最後で６である場合、実行レベルは５に、それから４に等、設定し直され、ロードされる次のコンテキストが最高優先順位レベルが設定された待機コンテキストとなることを保証する。
【００６２】
しかしながら、処理が開始すると、パケットが中間優先順位に値する型であると決定されることがある。その場合、ストリーム内で実行中のスレッドは、実行優先順位をおそらく４に引き下げる。優先順位４より高い待機コンテキストがない場合には、アクティブストリームはデータパケットを完了まで処理し続け、完了時に、新しいコンテキストがロードされるまで、ストリームがその実行優先順位を３、次に２等に設定するだろう前述された例に従う。しかしながら、新規パケットが到着すると、新規コンテキストには６という初期優先順位が与えられているため、新しいパケットの到着が、コンテキスト切替えを強制し、ストリームに遅いパケットに関する動作を停止させ、代わりに新しいさらに高い優先順位のデータパケットの処理を開始させ、ストリームの実行優先順位を６に設定し直すだろう。
【００６３】
コンテキスト切替えが後に続く場合、保存されたコンテキストは依然として４という優先順位を有し、典型的には、前述されたようにＲＴＵの制御下で、追加処理のためにストリームに再割当てするための機会を待機するだろう。言うまでもなく、新規に到着したデータパケットがさらに高速なパケットであるという保証はないが、これがそうである一定の確率はある。新規パケットがさらに高速なパケットである場合には、システム目標は高められる。さらに高速なパケットではない場合には、現在はやはり優先順位レベル６であるアクティブストリームが、やはりそれ自体の実行優先順位を、新規にロードされるパケットのおそらく遅延実行のために引き下げ、再び処理するためにさらに高速なパケットを求めてよい。新規パケットは、例えば、復号を必要とする非常に低速なパケットである場合がある。このとき、アクティブストリームは実行優先順位を２に引き下げ、やはり、新規パケットが処理のために到着した場合にコンテキスト切替えを強制してよく、その場合、コンテキストは、優先順位によって処理機会を待機する低速パケットの２という優先順位で保存されるだろう。ストリームが２という実行優先順位で実効している場合、新しいパケット（６）は到着しないが、４という優先順位の待機コンテキストがあり、４というコンテキストは、２という実行優先順位等でストリームを先取するだろう。
【００６４】
このようにして、コンテキストがロードされ、処理がそれぞれの新規に到着するデータパケットについて開始するまで型はわからないが、プロセッサ効率も保証しつつ、データルーティング用途でシステム目標を満たす、パケットが型に従った優先順位で処理されてよい新しい方法を提供する。
【００６５】
多くのその他の機能は、ストリーム間制御および通信に関して本発明の教示と一貫している。例えば、固定マスタ／スーパバイザ、および固定スレーブストリームのある専用アプリケーション用の簡略な２つのストリームの制御装置では、スレーブストリーム用の単一の監視制御ビットが、監視制御ビットを使用して重大な期間中スレーブがこのような制御を中断できるようにする一方で、浮動小数点ユニットへのアクセスを可能にするなどの有効な型のリソース制御を、マスタストリームに与えることができるだろう。
【００６６】
あるストリームが監視制御ビットおよびストリーム制御ビットの機構を通してその他のストリームに関して有してよい制御の種類は制限されていない。システムの目的に応じて、ただ１つの種類の制御または多数の制御が適切な場合がある。追加制御は、例えば、グローバルレジスタまたはグローバルメモリの共用、メモリ保護、割込み優先順位、割込みマスクへのアクセスまたは割込みすなわち例外とストリームの間のマップへのアクセスを調節できるだろう。１つまたは複数の低電力モードでのプロセッサでは、電力制御へのアクセスも、追加監視制御ビットおよびストリーム制御ビットを通して調節されてよいし、あるいはこのような制御はマスタスレッドを実行しているストリームのために独占的に確保されてもよい。
【００６７】
あるストリームが別のストリームのリソースに関して有してよい制御の種類も、多くの形を取ることがある。最も単純な形式の１つ、固定マスタ／スーパバイザおよび固定スレーブストリームをもった、スレーブストリーム用の単一ストリーム制御ビットが、例えば、専用アプリケーションで使用される簡略な２ストリーム制御装置では、マスタがすべてのリソースの完全な使用を必要とするときに、命令シーケンス中にスレーブを実行不能化する能力を、マスタストリームに与えることができるだろう。
【００６８】
優先権書類０９／２１６０１７号に説明されている、優先順位および任意の形式のスケジュール設定は、本発明の新しい教示と組み合わせて実現されてよい。このような優先順位が実現されない場合には、ストリームは、１つまたは複数のリソースへの別のストリームのアクセスを一時的に直接的に阻止することによってさらに簡略な形の制御を行使できるだろう。このケースでは、優先順位を表す監視制御ビットは、リソース制御を表すビットと置換されるだろう。優先順位マップは、１つまたは複数のリソース、あるいはクラスのリソースへのアクセスを一時的に拒否するために使用される１個または複数個の制御ビットと置換されるだろう。例えば、あるストリームが浮動小数点ユニットの独占的な使用を必要とする場合、それをそれ以外のストリームのスーパバイザにし、アクセスを拒否するリソース制御ビットを、それが独占的なアクセスを必要とする間、他のストリームのそれぞれでの浮動点に設定することができる。別の部分的に阻止されたストリームが浮動点命令と遭遇した場合には、命令スケジューラは、そのストリームの浮動点リソース制御ビットがスーパバイザストリームによってリセットされるまで命令の実行を中断するだろう。
【００６９】
本発明の精神および範囲内で前述される実施形態でなされてよい多くの改変があることが、当業者に明らかになるだろう。例えば、監視特性およびストリーム間の関係性が、示された例を超えて、記録され、修正されてよい多くの方法がある。同様に、行使されてよい制御の粒度等には幅広い範囲がある。その結果、発明は頭記の請求の範囲によってだけ制限される。
【図面の簡単な説明】
【図１Ａ】  本発明のある実施形態に従ったマルチストリーミングプロセッサの一般化した図である。
【図１Ｂ】  本発明のある実施形態に従った制御許可データを示す例示的なビットマップである。
【図１Ｃ】  本発明のある実施形態に従ったストリームに対するリソース割当てを示す図である。
【図１Ｄ】  本発明のある実施形態に従ったストリームの優先順位を示す図である。
【図１Ｅ】  本発明のある実施形態に従ったあるストリームの制御インジケータを示す図である。
【図２Ａ】  あるストリームのスレッドが別のストリームのスレッドを分岐し、後にそれを接合する、ある方法を示すフローチャートである。
【図２Ｂ】  あるストリームのスレッドが別のストリームのスレッドを分岐し、後にそれを接合する別の方法を示すフローチャートである。
【図３】  特別レジスタ転送を含むプロセッサ内であるストリームのストリームが別のストリームのスレッドを分岐する方法を示すフローチャートである。
【図１Ａ】
0003877529.tif 000002
【図１Ｂ】
0003877529.tif 000003
【図１Ｃ】
0003877529.tif 000004
【図１Ｄ】
0003877529.tif 000005
【図１Ｅ】
0003877529.tif 000006
【図２Ａ】
0003877529.tif 000007
【図２Ｂ】
0003877529.tif 000008
【図３】
0003877529.tif 000009