(57)【特許請求の範囲】
【請求項１】
１つまたは複数の命令スレッドをストリーミングするための複数のストリームと、
ストリームからの命令を処理する機能リソースセットと、
機能リソースへのストリームのアクセスを管理する命令スケジューラと、
ストリームと結び付けられているプライオリティコードのプライオリティレコードと、
前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラとから構成され、
いかなる時点でも命令スケジューラは、プライオリティレコードに従って機能リソースへのストリームのアクセスを管理する、マルチストリーミングプロセッサ。
【請求項２】
プライオリティレコードが１つまたは複数のストリームと結び付けられている１つまたは複数のプライオリティコードから構成され、さらにプライオリティコントローラが処理中に１つまたは複数のプライオリティコードを動的に変更する、請求項１に記載のマルチストリーミングプロセッサ。
【請求項３】
プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項２に記載のマルチストリーミングプロセッサ。
【請求項４】
特定のプライオリティコードがストリームを効果的に無効化し、ストリームの機能リソースへのアクセスを阻止する、請求項２に記載のマルチストリーミングプロセッサ。
【請求項５】
プライオリティコントローラがプライオリティレコードを変更してオンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化／無効化する、請求項４に記載のマルチストリーミングプロセッサ。
【請求項６】
プライオリティコントローラがプライオリティレコードを変更してプロセッサ割り込みに対する応答でストリームを有効化／無効化する、請求項４に記載のマルチストリーミングプロセッサ。
【請求項７】
プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項３に記載のマルチストリーミングプロセッサ。
【請求項８】
同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項２に記載のマルチストリーミングプロセッサ。
【請求項９】
複数の命令スレッドをストリーミングする複数のストリームと、
ストリームリソースからの命令を処理する機能リソースセットと、
機能リソースへのストリームのアクセスを管理する命令スケジューラと、
ストリームと結び付けられているプライオリティコードのプライオリティレコードと、
前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラとから構成される、マルチストリーミングプロセッサ。
【請求項１０】
プライオリティコントローラが、動的にプライオリティを決定し、処理中にプライオリティレコードを変更する、請求項９に記載のマルチストリーミングプロセッサ。
【請求項１１】
プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項９に記載のマルチストリーミングプロセッサ。
【請求項１２】
特定のプライオリティコードが効果的にストリームを無効化し、そのストリームの機能リソースへのアクセスを阻止する、請求項９に記載のマルチストリーミングプロセッサ。
【請求項１３】
プライオリティコントローラがプライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化／無効化する、請求項１２に記載のマルチストリーミングプロセッサ。
【請求項１４】
プライオリティコントローラがプライオリティレコードを変更し、プロセッサ割り込みに従ってストリームを有効化／無効化する、請求項１２に記載のマルチストリーミングプロセッサ。
【請求項１５】
プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項１１に記載のマルチストリーミングプロセッサ。
【請求項１６】
同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持っている複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から構成される、請求項９に記載のマルチストリーミングプロセッサ。
【請求項１７】
（ａ）プライオリティコードを１つまたは複数のストリームに結び付け、コードをプライオリティレコードに保存するステップと、
（ｂ）処理中に命令スケジューラによってプライオリティレコードのプライオリティコードをチェックするステップと、
（ｃ）主にプライオリティコードを基にしてストリームの機能リソースへのアクセスを管理するステップと
（ｄ）  前記命令スケジューラに結合されたプライオリティコントローラによって、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うステップとから構成される、マルチストリーミングプロセッサでのプライオリティによってストリームからの命令を処理する方法。
【請求項１８】
プライオリティコントローラにより、処理中のプライオリティレコードのプライオリティコードを動的に変更する、請求項１７に記載の方法。
【請求項１９】
プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項１７に記載の方法。
【請求項２０】
特定のプライオリティコードが効果的にストリームを無効化し、そのストリームが機能リソースにアクセスするのを阻止する、請求項１７に記載の方法。
【請求項２１】
プライオリティコントローラがプライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化／無効化する、請求項２０に記載の方法。
【請求項２２】
プライオリティコントローラがプライオリティレコードを変更し、プロセッサ割り込みに対する応答でストリームを有効化／無効化する、請求項２０に記載の方法。
【請求項２３】
プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項１８に記載の方法。
【請求項２４】
同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項１７に記載の方法。
【請求項２５】
（ａ）プライオリティコードを１つまたは複数のストリームに結び付け、コードをプライオリティコードに保存するステップと、
（ｂ）処理中に命令スケジューラによってプライオリティレコードのプライオリティコードをチェックするステップと、
（ｃ）主にプライオリティコードを基にしてストリームの機能リソースへのアクセスを管理するステップと、
（ｄ）前記命令スケジューラに結合されたプライオリティコントローラによって、前記結び付けられたストリームの各々の、前記プライオリティコードの前記利用可能な基準に従った動的な構成を行うステップとから構成される、マルチストリーミングプロセッサでのプライオリティによってストリームからの命令を処理する方法。
【請求項２６】
処理中にプライオリティコントローラによってプライオリティレコードのプライオリティコードを動的に変更する、請求項２５に記載の方法。
【請求項２７】
ステップ（ｄ）において、プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項２５に記載の方法。
【請求項２８】
特定のプライオリティコードが効果的にストリームを無効化し、そのストリームの機能リソースへのアクセスを阻止する、請求項２５に記載の方法。
【請求項２９】
プライオリティコントローラがプライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化／無効化する、請求項２８に記載の方法。
【請求項３０】
プライオリティコントローラがプライオリティレコードを変更してプロセッサ割り込みに対する応答でストリームを有効化／無効化する、請求項２８に記載の方法。
【請求項３１】
プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項２５に記載の方法。
【請求項３２】
同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項２５に記載の方法。
【請求項３３】
アプリケーションプログラムとデータを保存するためのメモリと、
メモリと結合され、複数の命令スレッドを処理する複数のストリーム、ストリームからの命令を処理する機能リソースセット、ストリームの機能リソースへのアクセスを管理する命令スケジューラ、ストリームと結び付けられているプライオリティコードのプライオリティレコード、および前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラを持つマルチストリーミングプロセッサとから構成され、
いずれの時点でも、命令スケジューラはプライオリティレコードに従ってストリームの機能リソースに対するアクセスを管理する、コンピュータ。
【請求項３４】
プライオリティレコードが１つまたは複数のストリームと結び付けられている１つまたは複数のプライオリティコードから構成され、さらにプライオリティレコードに結合されているプライオリティコントローラからなり、プライオリティコントローラが処理中に１つまたは複数のプライオリティコードを動的に変更するような、プライオリティレコードと結合されたプライオリティコントローラから構成される、請求項３３に記載のコンピュータ。
【請求項３５】
プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項３４に記載のコンピュータ。
【請求項３６】
特定のプライオリティコードがストリームを効果的に無効化し、ストリームの機能リソースへのアクセスを阻止する、請求項３４に記載のコンピュータ。
【請求項３７】
プライオリティコントローラがプライオリティレコードを変更してオンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化／無効化する、請求項３６に記載のコンピュータ。
【請求項３８】
プライオリティコントローラがプライオリティレコードを変更し、プロセッサ割り込みに対する応答でストリームを有効化／無効化する、請求項３６に記載のコンピュータ。
【請求項３９】
プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項３４に記載のコンピュータ。
【請求項４０】
同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持っている複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項３３に記載のコンピュータ。
【請求項４１】
アプリケーションプログラムとデータを保存するためのメモリと、
メモリと結合され、複数の命令スレッドをストリーミングする複数のストリーム、ストリームリソースからの命令を処理する機能リソースセット、ストリームの機能リソースへのアクセスを管理する命令スケジューラ、ストリームと結び付けられているプライオリティコードのプライオリティレコード、および前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った構成を行うプライオリティコントローラを持つマルチストリーミングプロセッサとから構成されるコンピュータ。
、コンピュータ。
【請求項４２】
プライオリティコントローラは処理中に動的にプライオリティコードを決定し、それに従いプライオリティレコードを変更する、請求項４１に記載されているコンピュータ。
【請求項４３】
プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項４１に記載のコンピュータ。
【請求項４４】
特定のプライオリティコードがストリームを効果的に無効化し、ストリームの機能リソースへのアクセスを阻止する、請求項４１に記載のコンピュータ。
【請求項４５】
プライオリティコントローラがプライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化／無効化する、請求項４４に記載のコンピュータ。
【請求項４６】
プライオリティコントローラがプライオリティレコードを変更してプロセッサ割り込みに対する応答でストリームを有効化／無効化する、請求項４４に記載のコンピュータ。
【請求項４７】
前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項４１に記載のコンピュータ。
【請求項４８】
同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持っている複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項４１に記載のコンピュータ。
【請求項４９】
パケットデータネットワークに接続するための少なくとも１つのポートと、
アプリケーションコードを保存するためのメモリと、
メモリと結合され、複数の命令スレッドをストリーミングするための複数のストリーム、ストリームリソースからの命令を処理する機能リソースセット、
ストリームの機能リソースへのアクセスを管理する命令スケジューラ、ストリームと結び付けられているプライオリティコードのプライオリティレコード、および前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラを持つマルチストリーミングプロセッサ、とから構成される、パケットデータネットワーク用のパケットデータルータ。
【請求項５０】
プライオリティコントローラは、処理中に動的にプライオリティコードを決定し、それに従いプライオリティレコードを変更する、請求項４９に記載のパケットデータルータ。
【請求項５１】
複数のシグナルを別個のスレッドとしてストリーミングする複数のストリームと、
シグナルを処理する機能リソースセットと、
シグナルの機能リソースへのアクセスを管理するスケジューラと、
ストリームと結び付けられているプライオリティコードのプライオリティレコードと、
前記スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラとから構成されるデジタルシグナルプロセッサ。
【請求項５２】
プライオリティコントローラは処理中に動的にプライオリティコードを決定し、それに従いプライオリティコードを変更する、請求項５１に記載のデジタルシグナルプロセッサ。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、デジタルマイクロプロセッサの分野に関わるものであり、特に当分野ではマルチストリーミングプロセッサと呼ばれている、複数のプロセッシングストリームで動作可能な装置に関わるものである。
【０００２】
（発明の背景）
現在複数のスレッドを処理できるマルチストリーミングプロセッサが当分野では知られており、活発な研究開発の対象になっている。本発明はこの分野での従来の成果に注目し、その上に機構や方法においてさらに新しいまた自明のものではない改善を提供するものである。発明者は、この本願において、本発明のいくつかの面に対し追加の背景とコンテキストを提供する、マルチストリーミングプロセッサの専門分野に属するいくつかの公開論文を一覧にした情報開示説明を提供する。
【０００３】
定義のために、本明細書では、ストリームを、主として命令スレッドをサポートし処理できるプロセッサに関するハードウェア構造を指す語として使用する。スレッドは、ソフトウェアまたはアプリケーションコンテキストによって定義される。たとえば、デスクトップコンピュータを動かすＣＰＵとして実装されているマルチストリーミングプロセッサは、同時にワードプロセッサプログラムやオブジェクト指向作図プログラムのような複数のアプリケーションのスレッドを処理することができる。また、マルチストリーム対応プロセッサは、データパケットネットワークのルータのように、定期的に人間が介在しなくてもマシーンを駆動することができる。このコンテキストにおいては、例えば、ネットワークでのデータパケットの処理と転送のために１つまたは複数のアプリケーション（コードセット）が存在し、ネットワークに接続されている他のルータやサーバとのＱｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ（ＱｏＳ）ネゴシエーションのために別のアプリケーションが存在していると言うことができる。内部機能のためのプログラム済みスケジューリングと共に、処理のために受け取られるデータの性質が、アプリケーションルーチンの呼び出しとサービス提供を規定する。
【０００４】
いずれの場合でも、複数のスレッドを処理するプロセッサの最大能力は、ハードウェアによって決まるストリームの数に固定されている。したがって、シングルスレッドを実行するマルチストリーミングプロセッサは、シングルストリームプロセッサとして動作する。
【０００５】
先に説明し、この場合はＩＤＳが提供している論文でも説明されているように、スーパースケーラプロセッサも広く知られている。この用語は、プロセッサチップに実装されている複数の機能ユニットと、利用可能な個別機能ユニットに命令を発行する能力を、持つプロセッサを指している。現在製造されているほとんどのＣＰＵプロセッサは、複数の機能ユニットを持っている。浮動小数点演算ユニット、整数演算ユニット、ロジックユニット、ブランチ予測ユニット、ロード／ストアユニットなど多数のユニットを持っているプロセッサもある。マルチストリーミングスーパースケーラプロセッサも現在知られている。
【０００６】
発明者は、機能ユニットの数に拘らず、ストリームから機能リソースへのスケジューリング命令に関して、ほとんど無視されている分野があると考える。すなわち、どのストリームに機能リソースへのプライオリティが与えられるかという、プライオリティの問題である。これは、すべてのマルチストリーミングプロセッサで問題となり、複数の命令スレッドを実行するスーパースケーラプロセッサではより複雑な問題となりうる。現在ほとんどの開発において、スケジューリングはプロセッサ使用効率を最大化するように開発されている。発明者は、急速に成長している技術分野へのデジタル処理の急速な普及によって、スレッド処理やプロセッサリソースへのアクセスの動的優先順位付けが緊急に必要になったことを発見した。
【０００７】
多くのアプリケーションの処理において、どちらも重視しなければならないが、プロセッサの可用性よりもアプリケーションをどう処理するかの方が重大な問題であることが発明者に明らかとなった。これまでは、プロセッサの可用性ばかりに注意が向けられていた。たとえば、理論的またはアカデミックな使用は別として、マルチストリーミングプロセッサ向けのほとんどの実際のアプリケーションでは、リアルタイムな要求というものが存在する。さらに、実行数に依存して、実行中に、アプリケーションスレッドの緊急性が、他のスレッドと関連して変わることがある。現在利用されている単純なシェアリングやスケジューリングの手法は、実時間の問題に対応していない。
【０００８】
したがって、現在、明らかに求められているのは、スーパースケーラプロセッサを含む、マルチストリーミングプロセッサ向けのタスクやスレッドを高度にまた動的にスケジューリングし優先順位付けするための機構や方法である。本発明は、以下で詳細に説明するように、この機構や方法を明らかにする。
【０００９】
（発明の要約）
本発明の好適実施形態において、１つまたは複数の命令スレッドをストリーミングするための複数のストリーム、ストリームからの命令を処理するための機能リソースセット、機能リソースへのストリームのアクセスを管理する命令スケジューラ、ストリームと関連したプライオリティコードのプライオリティレコードから構成されるマルチストリーミングプロセッサが提供される。いかなる時点でも、命令スケジューラは、プライオリティレコードに従って機能リソースへのストリームのアクセスを管理する。
【００１０】
ある実施形態では、プライオリティレコードが少なくとも１つのストリームと結び付けられている１つまたは複数のプライオリティコードから構成され、プライオリティレコードは静的であり一定である。また、ある実施形態では、プライオリティレコードが一貫した反復的なやり方で変化する実施形態も考えうる。また、プライオリティコントローラが処理中に１つまたは複数のプライオリティコードを動的に変えるような、プライオリティレコードと結合されているプライオリティコントローラをプロセッサが持つこともある。プライオリティコードの変更は、少なくともその一部がチップ上の処理利統計情報の変更によって決められるやり方で実現されることもある。また、プライオリティコードの決定が、ある実施形態では、少なくともチップ外で決められ、プライオリティコントローラに伝えられることもあるかもしれない。また、更に別の実施形態では、プライオリティコントローラが、ストリーム命令負荷のその時の状態に従ってプライオリティコードを変えることもある。
【００１１】
本発明のある実施形態では、特定のプライオリティコードが効果的にストリームを無効化し、機能リソースへのストリームのアクセスを阻止する。また、プライオリティコントローラが、プライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に応答して、またはプロセッサへの割り込みに従って、ストリームを有効化／無効化することもある。
【００１２】
本発明の他の実施形態では、プロセッサは、プロセッサレコードで同一のプライオリティを持っている複数のストリームに対して、機能リソースへのアクセスを解決する、同点決着機能を更に持つ。
【００１３】
また本発明の別の態様において、複数の命令スレッドをストリーミングするための複数のストリーム、ストリームリソースからの命令を処理するための機能リソースセット、命令をストリームにフェッチするフェッチユニット、機能リソースへのストリームのアクセスを管理する命令スケジューラ、ストリームと結び付けられているプライオリティコードのプライオリティレコード、そしてプライオリティを動的に決め、処理中にプライオリティレコードを動的に変更するプライオリティコントローラから構成されるマルチストリーミングプロセッサが提供される。
【００１４】
同態様において、プライオリティレコードの変更は、少なくともその一部はチップ上の処理統計情報によって決められるやり方で実施される。そして、ある実施形態では、少なくともプライオリティレコードの変更の一部がチップ外で実施され、プライオリティコントローラに伝えられることもある。ある実施形態では、特定のプライオリティコードを使って、効果的にストリームを無効化し、そのストリームが機能リソースにアクセスすることを阻止することもできる。有効化／無効化は、オンチップイベント、処理統計情報、または外部入力への応答において、あるいはプロセッサへの割り込みによって実施することもできる。プライオリティがストリーム命令負荷に従って変わることもある。他の場合と同様この場合でも、同点解決機能、すなわちプライオリティレコードに同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する、同点解決機能が提供されることもある。
【００１５】
本発明の他の態様に従って、マルチストリーミングプロセッサにおいて、プライオリティによってストリームからの命令を処理する方法が提供され、該方法は以下のステップを含む：（ａ）プライオリティコードを１つまたは複数のストリームと結び付け、コードをプライオリティレコードに保存するステップ、（ｂ）処理中に命令スケジューラによってプライオリティレコードのプライオリティコードをチェックするステップ、（ｃ）特にプライオリティコードを基にして機能リソースへのストリームのアクセスを管理するステップ。この方法ではプライオリティレコードのプライオリティコードは静的で変わらないことも、また一貫した反復的やり方で変わることもある。
【００１６】
この方法の実施形態によっては、プライオリティレコードと結合されたプライオリティコントローラによる処理中にプライオリティレコードのプライオリティコードを動的に変更するステップも更に存在することもある。プライオリティコードの変更は、少なくともその一部はチップ上の処理統計情報の変更によって決まるやり方で実施され、あるいは、少なくともその一部はチップ外で実施され、プライオリティコントローラに伝えられることもある。
【００１７】
本発明の実施形態によっては、特定のプライオリティコードが効果的にストリームを無効化し、ストリームが機能リソースにアクセスするのを阻止する。
【００１８】
この有効化／無効化は、オンチップイベント、処理統計情報、または外部入力への応答において実施される。あるいは、プロセッサ割り込みに従って行われる。プライオリティコードは、ストリーム命令負荷の現在の状態によって変えられることもある。この方法では、同点決着機能、すなわちプライオリティレコードに同一のプライオリティを持っている複数のストリームに対して機能リソースへのアクセスを解決するためのステップが提供される。
【００１９】
また、本発明の別の態様において、マルチストリーミングプロセッサにおいてプライオリティによってストリームからの命令を処理する方法が提供さ、以下のステップから構成される、（ａ）プライオリティコードを１つまたは複数のストリームと結び付け、プライオリティレコードにコードを保存するステップ、（ｂ）処理中に命令スケジューラによってプライオリティレコードのプライオリティコードをチェックするステップ、（ｃ）特にプライオリティコードを基にしてストリームの機能リソースへのアクセスを管理するステップ、（ｄ）処理中にプライオリティコントローラによってプライオリティレコードのプライオリティコードを動的に変更するステップ。
【００２０】
この方法のステップ（ｄ）では、プライオリティコードの変更は、少なくともその一部はチップ上の処理統計情報の変化によって決まるやり方で実施される。あるいは、プライオリティコードの決定の少なくともその一部は、チップ外で実施され、プライオリティコントローラに伝えられる。また、この方法では、特殊なプライオリティコードを使って、効果的にストリームを無効化し、そのストリームが機能リソースにアクセスするのを阻止することができる。この有効化／無効化は、オンチップイベント、処理統計情報、または外部入力への応答において実施される。あるいは、プロセッサ割り込みに従って実施される。
【００２１】
さらに、この方法では、プライオリティは、ストリーム命令負荷の現在の状態に従って変更される。また、この方法では、同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する機能が提供できる。
【００２２】
さらに、本発明の別の態様では、アプリケーションプログラムやデータを保存するためのメモリ、メモリと結合され、複数の命令スレッドを処理するための複数のストリームを持つマルチストリーミングプロセッサ、ストリームからの命令を処理する機能リソースセット、機能リソースへのストリームのアクセスを管理する命令スケジューラ、そしてストリームと結合されたプライオリティコードのプライオリティレコードから構成されるコンピュータが提供される。いかなる時点でも、命令スケジューラは、プライオリティレコードに従って、ストリームの機能リソースへのアクセスを管理する。
【００２３】
このコンピュータの実現においては、プライオリティレコードが少なくとも１つのストリームと結び付けられた１つまたは複数のプライオリティコードから構成され、プライオリティレコードが静的であり変化しない。また、別の実現では、プライオリティレコードは、一貫した反復的やり方で変更される。また、プライオリティレコードが、１つまたは複数のストリームと結び付けられた１つまたは複数のプライオリティコードから構成され、さらにプロセッサはプライオリティレコードと結合されたプライオリティコントローラを持つことがある。この場合、プライオリティコントローラが処理中に１つまたは複数のプライオリティコードを動的に変更する。プライオリティコードの変更は、少なくとも一部はチップ上の処理統計情報の変化によって決まるようなやり方で実施されることもある。この実施形態あるいは他の実施形態では、プライオリティコードの決定は、少なくともその一部はチップ外で実施され、それがプライオリティコントローラに伝えられる。
【００２４】
このコンピュータのある実施形態では、特定のプライオリティコードが効果的にストリームを無効化し、そのストリームが機能リソースにアクセスするのを阻止する。あるいは、プライオリティコントローラがプライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化／無効化する。プロセッサ割り込みに従って実行されることもある。
【００２５】
また、プライオリティコントローラは、ストリーム命令負荷の現在の状態に従って、プライオリティコードを変更することもできる。同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームの場合に機能リソースへのアクセスを解決する機能が存在することもある。
【００２６】
本発明の別の態様では、アプリケーションプログラムやデータを保存するメモリ、メモリと結合され、複数の命令スレッドを処理するための複数のストリームを持つマルチストリーミングプロセッサ、ストリームリソースからの命令を処理する機能リソースセット、機能リソースへのストリームのアクセスを管理する命令スケジューラ、そしてストリームと結合されたプライオリティコードのプライオリティレコードから構成されるコンピュータが提供される。プライオリティコントローラは、処理中にプライオリティコードを動的に決定し、それに従ってプライオリティレコードを変更する。
【００２７】
このコンピュータの実現によっては、プライオリティレコードの変更は、少なくともその一部がチップ上の処理統計情報によって決まるやり方で実施される。また、プライオリティレコードの変更が、少なくともその一部はチップ外で実施され、プライオリティコントローラに伝えられることもある。実施形態によっては、特定のプライオリティコードが効果的にストリームを無効化し、そのストリームが機能リソースにアクセスするのを阻止する。プライオリティコントローラは、プライオリティレコードを変更してオンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化／無効化することができる。これは、プロセッサ割り込みに従って実施されることもある。
【００２８】
さらに、プライオリティコントローラは、ストリーム命令負荷の現在の状態に従って、プライオリティコードを変更することもある。このコンピュータでは、同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する機能が提供されることもある。
【００２９】
本発明の別の態様では、パケットデータネットワークに接続するための少なくとも１つのポート、アプリケーションコードを保存するためのメモリ、メモリと結合され、複数の命令スレッドをストリーミングするための複数のストリームを持つマルチストリーミングプロセッサ、ストリームリソースからの命令を処理する機能リソースセット、ストリームの機能リソースへのアクセスを管理する命令スケジューラ、そしてストリームと結び付けられているプライオリティコードのプライオリティレコードから構成される、パケットデータネットワークのためのパケットデータルータが提供される。プライオリティコントローラは、処理中にプライオリティコードを動的に決定しし、それに従ってプライオリティレコードを変更する。
【００３０】
さらにまた、複数のシグナルを個別スレッドとしてストリーミングするための複数のストリーム、シグナル処理のための機能リソース、シグナルの機能リソースへのアクセスを管理するスケジューラ、ストリームと結び付けられているプライオリティコードのプライオリティレコードから構成される、デジタルシグナルプロセッサが提供される。プライオリティコントローラは、処理中にプライオリティコードを動的に決定しし、それに従いプライオリティレコードを変更する。
【００３１】
以下で詳細に説明する本発明のいくつかの実施形態では、コンピュータテクノロジにおいて初めて、ストリームのプロセッサ機能リソースへのアクセスが選択的に管理され、機能リソースへのストリームのアクセスプライオリティが動的に管理され、処理パワーが向上し、リソースをより効果的に使用でき、特にリアルタイム処理ニーズに応える、マルチストリーミングプロセッサが提供される。
【００３２】
（好適実施形態の説明）  マルチストリーミングプロセッサとは、複数の利用可能なプログラムスレッドからの複数の命令ストリームを同時に実行できるリソースを持つプロセッサである。本発明は、ある面から見れば、競合するストリームの、機能ユニットを含む１つまたは複数の処理リソースへの効率的でタイムリーな割当てに優先順位を付け、調整するプライオリティコントローラと結合された命令スケジューラを構成するものである。
【００３３】
本発明の好適実施形態では、各ストリームには、競合する命令ストリームに対する関連するストリームの処理リソースへの要求を表している、プライオリティが割り当てられる。プライオリティは、すべてのプロセッサリソースに関する関連するストリームの要求を表す１つの数によって、またはいくつかのリソースの夫々に対するプライオリティを含むリストによって実装される。さらに、プライオリティは、利用可能なリソースへのアクセス等級や利用可能なリソースの間でのアクセス制限を含むことが出来る。本発明の様々な実施形態でプライオリティを決定し発行するロジックは、以下で説明するように様々な方法で実装できる。
【００３４】
ある実施形態では、プライオリティはストリームによって固定されているが、プライオリティアクセスの他にリソースへのアクセスが管理されることもある。他の形態ではプライオリティはストリームによって変化し、アクセスを動的に管理することもできる。これらアクセスとプライオリティ決定のための基準は、現在のキャッシュやメモリ要求のようなオンチップ統計情報、中でも、機能ユニット利用率、またはブランチ予測に従って、またはデータの到着と利用可能性、またオフチップからの入力、そしてこれらの基準の組み合わせなどの様々なソースから得られる。好適実施形態では、プライオリティ発行ロジックは、現在のプライオリティに従って、各ストリームのプロセッサ機能リソースへのアクセスを制御し管理する。また、好適実施形態では、プライオリティコントロールと命令発行機能が動的に変わり、各スレッドはタイムリにサービスを受けることができるばかりでなく、実際のプライオリティの制約内でプロセッサリソースの利用状況を効率的に管理することができる。
【００３５】
図１は、利用可能なプロセッサ機能リソース１０−１３にストリームを割り当てる命令スケジューラ５への優先順位付けを含め、本発明の実施形態におけるマルチストリーミングプロセッサ１４の命令のフローとオペレーションの例を示している。この例のスレッド１、スレッド２、スレッド３は、競合プロセッサストリームとして実行され、メモリ上に保存されているプログラムを表している。スレッドは、個々のアプリケーションプログラム、単一ののマルチスレッドプログラムの一部、または割り込みサービスルーチンの結果としてフェッチされた命令スレッドのような様々なソースから来るが、ソースはこれらに限られるものではない。この例でのプロセッサは、アクティブスレッド１と２から命令をフェッチしてデコードし、いつでも実行できる命令を含んでいるストリームのプール４を集める。この例のスレッド３は、インアクティブとして扱われる。スケジューラ５は、ストリームをリソース１０−１３に割り当てる。
【００３６】
各アクティブストリームは、関連図けられた現在のプライオリティを持っている、すなわちスレッド１を実行しているストリームと結び付けられているプライオリティ７、そしてスレッド２を実行しているストリームと結び付けられているプライオリティ８として示されているものである。各ストリームのプライオリティがリソース１０−１３への現在のアクセスを決定し、本発明の追加的特徴では、このプライオリティがリソース１０−１３に関連する要求を決める。プライオリティ発行ネットワーク６は、プライオリティ７と８を使って、１つまたは複数のメカニズムに従い、各優先順位付けされたストリームからの命令をリソース１０−１３に割り当てる。
【００３７】
プライオリティコントロールユニット９は、ストリームのプライオリティステータスを監視し、たとえばキャッシュやメモリ要求、リソースの利用率などのような処理活動の履歴を含む利用可能な基準に従ってプライオリティを決定または修正し、必要なだけ、ある実施形態では、プロセッササイクルと同じ回数プライオリティを動的に変更して、スレッドのタイミング要求を満たし処理リソースの利用率を最適化する。高度な実施形態では、プライオリティコントロールユニット９のロジックは、スレッド１−３の要求に応じて、動的にスケジューリングメカニズムを切り替える。
【００３８】
図２は、図１のマルチストリーミングプロセッサ１４の好適実施形態でのアーキテクチャを示すブロック図である。実線は、命令とデータのパスを表しており、鎖線は制御のパスを示している。この例でのメモリ２０１は、プロセッサにおいて同時に実行されるプログラムまたはプログラムの一部である、１つまたは複数スレッドのための命令を含んでいる。プロセッサは、複数のスレッドからの命令を命令キャッシュ２０２に読み込み、命令と結び付けられているデータをデータキャッシュ２１１に読み込む。典型的には、マルチスレッドのフェッチユニット２０３の制御下では、命令キャッシュ２０２からの命令は、マルチスレッドのフェッチユニット２０３に移され、プリフェッチバッファに蓄積され、デコードされ、１つまたは複数のキューに入れられる。様々な実施形態では、単一のキューはストリーム間で共有されるかまたは、各ストリームのためのユニットに分けられることがある。場合によっては、キューは１つまたはリソースセットに、あるいはストリームとリソースの組に専用となることもある。
【００３９】
実質的なキューの効果により、命令の競合するストリームの存在が発生し、適格な命令が機能リソースに発行される。実行できるプロセッサを持つ各ストリームは、そのストリームのプログラムカウンタとレジスタファイルを含むコンテキストフレームを持つ。スレッドは、スレッドのプログラムカウンタアドレスとレジスタ値を持つ、利用可能なコンテキストフレームをロードし、それにアクティブプライオリティを割り当てることによってアクティブになる。実行すべきスレッドが１つしかないこともある。その場合、実行すべき命令のストリームは１つである。スレッドを実行するのに利用できるストリームより多くのアクティブスレッドが存在する場合、利用可能なコンテキストフレームの数までのスレッドがアクティブになり、他のスレッドは一時的にインアクティブのままである。典型的には、オペレーティングシステムの機能がスレッドをマルチストリーミングプロセッサのストリームに割り当てる。
【００４０】
複数のストリームからの命令は、サイクルベースで実行に組み込まれ、たとえば、遅いメモリでは、それより低い頻度で実行に組み込まれることがある。命令スケジューラ５は、複数のストリームからの命令を実行する順序を決め、選択した命令をプライオリティ発行ネットワーク６に送る。メモリからのロード・ストア命令は命令スケジューラ５によって監視され、メモリ２０１、データキャッシュ２１１、命令キャッシュ２０２、その他のリソースのオペレーションは２０７−２１０の機能ユニットと同様に制御される。
【００４１】
命令スケジューラ５の内部では、命令は一時的に予約ステーションに蓄積され、依存性が評価され、他の命令の先行実行に依存している命令は適切に遅延される。プライオリティ発行ネットワーク６は、各命令の実行を適切な機能ユニット２０７−２１０に割り当てる。機能ユニットは、１つまたは複数の整数演算ユニット２０８から構成され、ブランチユニット２０７、浮動小数点演算ユニット２０９、ロード／ストアユニット２１０を含む。いずれかの種類の複数の機能ユニットが利用可能である場合、命令スケジューラ２０４とプライオリティ発行ネットワーク２０６は、利用可能な機能ユニットへの命令の割り当てを管理する。命令スケジューラ５はプライオリティレコードを持ち、このプライオリティレコードは１つまたは複数のストリーム向けに記録されているプライオリティを持つファイルあるいはレジスタセットである。したがって、ストリームよりも少ない数のプライオリティが存在し、アクティブプライオリティを持っていないストリームはデフォルトレベルで処理されることがある。または、各ストリームが特定のプライオリティを持つこともある。
【００４２】
複数のストリームが存在する場合、どのストリームにリソースへのアクセスを許すかを決めるメカニズムが存在しなければならない。ストリームの間でのアクセスを管理する方法はどの方法でも広い意味でプライオリティスキームと見なすことができる。これまでは、降順に静的プライオリティをストリームに割り当てるのが一般的であった。しかし、このスキームでは、１つのストリームは常に一番高いプライオリティを持ち、その他のストリームは降順により低いプライオリティを持つ。以下の表１は、Ａ、Ｂ、Ｃ、Ｄという４つのストリームがある静的なケースの場合のプライオリティテーブルである。０は最高位のプライオリティを示し、以下１、２と低くなり、３が最下位のプライオリティを示している。
【表１】
0003877527.tif 000002
【００４３】
表１に示されている静的プライオリティスキームの場合、ストリームＡは常に最高位のプライオリティを持ち、ストリームＡに待機命令が存在しなくなるまで、待機命令はストリームＡから機能ユニットに発行される、その時点で、ストリームＡよりも１つ低いプライオリティを持つストリームＢに機能ユニットへのアクセス権が保証され、ストリームＢを待っている命令が存在しなくなるまで、命令がストリームＢから発行される。当然、アクセス権がストリームＢにシフトしたときにストリームＢに命令が存在しないということもありうる。その場合、アクセス権はストリームＣに移る（以下同様）。しかし、これには各ストリームのプライオリティが一定、すなわち静的であるという制約がある。
【００４４】
多くの場合、特にストリームの数が増えると、静的スキームでは低いプライオリティを持つストリームに割り当てるスレッドの不足という問題が発生することが分かっている。これに対し、機能リソースへのアクセスの公平性を促進するために、現在プライオリティが定期的にストリームの間でシフトするラウンドロビン方式が提案され、実装されている。このラウンドロビン方式を以下の表２に示した。
【表２】
0003877527.tif 000003
【００４５】
表２の行はタイムスライスを示している。Ｔ１タイム時にその行のプライオリティはＴ２タイムまで適用される。Ｔ２タイム時に、その行のプライオリティが適用される（以下同様）。ラウンドロビン方式では、プライオリティは表に示すように一定の間隔で回転し、少なくとも理論的には各ストリームは機能リソースへの同一のアクセス権が与えられる。
【００４６】
発明者は、従来技術には、先に説明したような、無限のリソースアクセスを持つ静的スキームやラウンドロビン方式には多くのまた重大な欠陥があることを発見した。これらの技術は、変化する条件、リアルタイム要求、そして一つ、二つの支配的なクラスのリソースに対するニーズを持つ様々なスレッドの構造的性質に対応していない。したがって、発明者はプライオリティスケジューリングと命令の発行を劇的に改善する機構および方法を提供した。
【００４７】
広く検討されているプライオリティの問題を詳細に調査して、問題は単なるプライオリティだけの問題ではないことが明らかになった。問題を次のように記述することができる。
１．どのストリームに機能リソースへのアクセス権が与えられるべきか？
２．どれだけのアクセス権が与えられるべきか？
３．次にどのストリームがアクセス権を取得するのか？
４．同点の場合はどうなるのか？
現在の、そして、従来の方式では、これらの問題にはほとんど対応していない。本発明の様々な実施形態では、これらの問題（問題点）のすべてに、様々な方法でまた様々な目的のために対応している。
【００４８】
本発明のいくつかの実施形態では、ストリームのプライオリティを示すものとして１つの数が使われ、その数が、機能ユニット、メモリ、キャッシュのようなリソース（しかし、これらに限られるものではない）へのアクセス権を割り当てるためにスケジューラによって使われている。他の形態では、数のリストがストリームへの複数のプライオリティを保存しており、各数が、整数演算ユニット、浮動小数点演算ユニットのセットなどのリソースクラスへの関連ストリームのプライオリティ要求を表している。あるいは、他の形態では、あるストリームには、現在の最高位のプライオリティストリームとしてのアクセス権が与えられるが、そのアクセスは１つの機能ユニットのみに制限されている。
【００４９】
別の実施形態では、各ストリームに対する数のリストが個別リソースに対するストリームの要求を保存している。たとえば、複数の整数演算ユニットや浮動小数点演算ユニットを持つプロセッサでは、プライオリティ数は、各整数演算ユニットおよび各浮動小数点演算ユニットとの関連で使われる。より厳しいタイミング要求を満たしたり、より完全なリソース利用を保証するためにリソースに対する精緻なコントロールが必要な場合、より複雑なプライオリティ表現が使われる。
【００５０】
特に、本発明の実施形態において、ストリームの間でポインタを移動するために、ラウンドロビン方式と静的スキームがなお交互に使われている。しかし、現在のものよりもより高度なプライオリティメカニズムが実装されている。たとえば、本発明の１実施形態では、静的プライオリティは表１に示すように４つのストリームの間に割り当てられる。しかし、命令を発行するメカニズムが、ストリームからの命令へのアクセスを１つまたは特定の組のリソースクラスに制限することがある。このリソースクラスの選択性は、特定の条件の元で許される制限付きクラス以外のリソースへのアクセス権を伴うただ１つのストリーム、たとえば、複数の、またはすべてのストリームにとっての最高位のプライオリティを持つストリームのプライオリティの特徴である。
【００５１】
本発明の他の実施形態では、複数のストリームが同じプライオリティであるが、アクセスにおける排他性やある程度の重なりを含め、機能リソースへの異なるアクセス権を持つことがある。このユニークな方式では、同点決着が必要な衝突が発生するので、チップでの最近の処理履歴（だれが最後にアクセスしたか）や他の基準では、条件の指示に従って、同点の場合のアクセス権を決定するために同点決着ユニットが提供される。たとえば、同点の場合に、同点のストリームの間でアクセス権を平等に分けることも可能である。
【００５２】
従来のプロセッサでは、（割り込みが使われるプロセッサやアプリケーションに対して）割り込みが優先される。すなわち、割り込みとは、プロセッサに現在実行していることを止めさせ、そのアクティビティを割り込みサービスルーチンに向けさせることである。本発明の実施形態では、割り込みサービスルーチンが少数のサイクル内にサービスを受けなければならない場合、高いプライオリティが与えられ、すべての必要なリソースが利用できるようになる。しかし、通常のストリームが、ある割り込みよりもより厳しいタイミング要求を持っていることもあり、その場合には、割り込みよりも高いプライオリティが割り当てられる。
【００５３】
プライオリティや同点決着ロジックの一部としてのアクセス権の新しい特徴の他に、本発明の特定の実施形態では、マルチストリーミングプロセッサにおけるプライオリティの動的決定と管理という新しい強力なコンセプトが提供される。
【００５４】
本発明の実施形態では、命令を割り当てるために命令スケジューラによってプライオリティが解釈されるコンテキストを、プライオリティコントロールユニット９が決める。たとえば、最高位のプライオリティを持っているストリームは、低いプライオリティを持っているストリームよりも優先される。あるいは、スケジューラがすべてのストリームに最低限のアクセス権を保証するが、ストリームのプライオリティに比例してアクセス権を高める。先に説明したように、各ストリームに順に割り当てられるプロセッササイクル数がストリームのプライオリティに従って変動するラウンドロビンやランダムスケジューリングが使われる。すなわち、従来の制限付きラウンドロビン方式では、ストリームが順に選択され、選択された各ストリームには、同じプライオリティをもち、同じ量のリソースが割り当てられる。しかし、本発明の実施形態では、ストリームはラウンドロビン方式でサービスを受けるが、各ストリームには現在のプライオリティに従ってリソースが割り当てられる。
【００５５】
先に説明したように、プライオリティ管理の例として、アクセスされる各ストリームには、そのストリームの現在のプライオリティによって決まるサイクル数の間、全てのリソースに対するアクセス権が与えられる。あるいは、アクセスされる各ストリームには、現在のプライオリティに従って機能ユニットへのアクセス権が割り当てられる。たとえば、静的スキームでは、あるストリームはある機能ユニットを使うことが許されるが、そのプライオリティが変わると、より多くのあるいはより少ない機能ユニットへのアクセスが許される。ここで重要なことは、発行の順番とアクセス権がプライオリティコントローラ９によって動的に変わることである。
【００５６】
ある実施形態では、プライオリティが、１つまたは複数のリソースに対してストリームが希望する平均利用率を表わす割合として解釈されることもある。特に高度な実施形態では、プロセッサが、先に説明した複数のスケジューリング方法の組を持っていることもあり、その場合、プライオリティコントロールユニット９は動的に複数の方法の中から選択したり、複数の方法を様々な組合わせで使う。他の形態では、スケジューリング方法と個別プライオリティがソフトウェアの制御下で選択されることもある。ソフトウェアが方法を指定しない場合、プライオリティコントロール９はラウンドロビンや静的スケジューリングのような、旧来の方法にデフォルト設定される。
【００５７】
各プライオリティに数のリストが使われる場合、プライオリティコントローラ９は各リソースクラスまたは各リソースを個別に管理する。リソースやリソースクラスに対する要求が衝突する場合、各ストリームのプライオリティリストのエントリを比較して、先に説明したスケジューリング方法のいずれか単独、あるいは複数の組合に従って衝突が解決される。
【００５８】
複数のストリームのプライオリティが同一であるということもありうる。この場合、命令スケジューラ５は、先に説明した同点決着メカニズムを持つ。同点決着メカニズムは、動的または静的な方法を使って衝突を解決することができる。たとえば、ラウンドロビンスケジューリングが使われている場合、同じプライオリティを持っている各ストリームは、同一の割合のリソース割り当てを受け取る。あるいは、ストリームの現在の命令がどのリソースを要求しているか、あるいは様々なリソースの利用率を基にして、あるいはランダムスケジューリングにより衝突が解決されることもある。
【００５９】
プライオリティコントロールユニット９は、どのストリームのプライオリティでも変えることができる。このような変更は、たとえば各メモリサイクルに対してはプロセッササイクルの一部と同じ頻度で、、あるいは長いレイテンシーメモリ命令が発行されたときにはより少ない頻度で、実行される。プライオリティの変更は、ソフトウェアの制御の下で、あるいはプロセッサやその他のシステムコンポーネント内の条件に応じて行われる。ある形態では、プライオリティコントロールユニット９が、機能ユニット、メモリ、キャッシュへのアクセス頻度のような、１つまたは複数の処理リソースの利用率を監視する。その場合、プライオリティは変化し、ストリームのスループットを最適化したり、１つまたは複数のリソースの利用率を最大化するように、あるいはスループットと利用率の間のバランスを取る。メモリが監視されているとき、プライオリティは、アドレスの範囲またはアクセスされるメモリセグメントを基にして変わることもある。メモリ２０１がセグメント化されている実施形態の場合、メモリサイクルはプロセッササイクルよりも遅いので、複数のセグメントが同時にアクセスされる。その際、命令スケジューラ５は複数のセグメントへのアクセスをインタリーブし、メモリ利用率を最大化する。複数のリソースを監視しているような場合、プライオリティは１つのリソースの利用率を最適化するように、あるいは複数リソースの利用のバランスを取るように設定され、このバランスが動的に変更されることもある。
【００６０】
また、整数演算ユニット２０８または浮動小数点演算ユニット２０９のようなリソースが動的に再構成され、特定の命令でデータパスがより効率的になるようにデータパスが変更されるという実施形態も考えられる。たとえば、２つの数を掛けるあるいは足すために、整数演算ユニットが命令と命令の間で再構成されることもありうる。そのような実施形態では、命令スケジューラ５は予約ステーション及び／又はマルチスレッドフェッチユニット２０３の命令キューの命令を調査し、最適機能ユニット構成を決定し、プライオリティ発行ネットワーク２０６が必要な再構成を実施する。
【００６１】
これまで、プロセッサは複数のプログラムスレッドへのリソースの柔軟な割り当てを許さない固定したスケジューリングメカニズムを使ってきた。ストリームの動的優先順位付けにより、処理リソースの動的構成が可能になり、いずれの時点でも競合するストリームの組合わせのニーズに応えられるようになる。たとえば、厳しいタイミング要求を持っているリアルタイムスレッドには高いプライオリティが与えられ、その要求が満たされることが保証される。これに対し、要求のあまり厳しくないストリームにはバックグランドでサービスが提供される。さらに、プライオリティコントロールユニットは命令キャッシュの内容のような、処理の様々な側面を監視することができるので、実行時にプライオリティを変更し、可変速度で到着する入力データストリームへのサービス提供のような処理目標を達成することができる。あるいは、どのスレッドも厳しい要求を持っていない場合、すべての利用可能なリソースがビジーになり、それによってプロセッサスループット全体を最適化するようにスケジューリングが再構成される。リソースのより効率的な利用を可能にすることによって、従来技術ではなく現在の優先順位付きスケジューラを使って、小型で安価なプロセッサを設計できるようになる。
【００６２】
本発明のある好適実施形態では、事前定義済みのイベントや条件セットがストリームを再有効化するまで、ユニークなプライオリティ数をストリームに割り当て発行順にそのストリームを無効にする。たとえば、そのような実施形態では、４つのストリームを持っているマルチストリーミングプロセッサは、５つのプライオリティ０−４を持ち、ゼロのプライオリティがあるストリームに設定され、ゼロはシステムによりストリームの無効化と解釈される。その場合、プライオリティ１が一番低いプライオリティであり、次が２であり、４が最も高いプライオリティである。
【００６３】
現在いろいろな理由で、ストリームを無効化し、無効プライオリティの割り当てが、データや命令の利用可能性、オフチップからの入力、スレッドの特定の組み合わせ他を含む様々な基準を基にして行えることが望まれている。ある実施形態では、プロセッサ割り込みを使ってストリームの有効化／無効化が行われる。その場合、無効にされたストリームは、割り込みによって目覚めさせられる。この場合プライオリティコントローラは、プライオリティファイルを変更して、無効にされている（眠っている）ストリームにゼロ以外のプライオリティを割り当てる。
【００６４】
また他の実施形態では、プライオリティをストリーム負荷に従って管理することができる。この方式では、閾値が設定される。ストリームが発行可能な命令をフェッチする時、プライオリティはその閾値に従って割り当てられる。この方式での粒度を、必要に応じて粗くすることも細かくすることもできる。
【００６５】
先に説明した実施形態では、コントローラ９はアクセス権等々を含めプライオリティを管理し、必要な基準を命令スケジューラ５のプライオリティファイルに入れるものとして記述されていた。プライオリティやアクセスのための基準テーブルが他の場所にあり、プライオリティコントロールを、技術的知識を持っている有能なエンジニアのスキルの範囲内で、様々な方法で実装できることは、有能な技術者には明白である。したがって、ここで示された特定のアーキテクチャは、一例にすぎない。
【００６６】
さらに、プライオリティやアクセスの動的管理のためのいくつかのメカニズムや基準がプライオリティコントローラ９の機能として開示されている。プライオリティコントローラ９は、様々な方法で実装でき、ハードウェアやソフトウェア技術の併用によってその機能を実行できる。ある実施形態では、たとえば、コントローラ９がカウンタによって指示されるレジスタにアクセスし、整数演算ユニットではなくＦＰユニットの使用のような最近の処理履歴に関する統計情報を確認し、その結果としてプライオリティ権を管理することも可能である。またある実施形態では、プライオリティコントローラが、プライオリティやアクセス権を決めるのに１つまたは複数のコードルーチン（アルゴリズム）を実行することも可能である。他の実施形態では、プライオリティコントローラがある程度プログラム可能であり、オフチップから入力を受け付け、プライオリティやアクセス権を決定し、設定することもできる。
【００６７】
本発明の特徴により、複数のストリームを使う様々なデバイスの改善が可能になる。たとえば、現在のネットワークルータやスイッチは、複数のストリームまたは入ってくるデータのパケットフローを処理し、それをネットワーク上の様々な宛先にディスパッチする必要がある。非同期転送モードのようなある種のネットワークプロトコルはデータフローに対するサービスを保証し、ネットワークデバイスを通したデータのタイムリーな転送を保証する。本発明を使えば、たとえばサービスの品質をネゴシエートしたり、データがデバイスを通るパスを再構成するスレッドではなく、ネットワークデータを扱うスレッドにより高いプライオリティを与えることにより上記デバイスにおける処理を最適化できる。各データフローのサービス品質が異なるとき、異なるプライオリティを持つストリームを使ってサービス保証を満たすことができる。
【００６８】
発明の別の側面では、発明の実施形態に従うプロセッサはワークステーションの機能を高度化することができる。通常、ワークステーションは多種多様な競合するプログラムを処理することを求められる汎用コンピュータである。たとえば、ワークステーションは、ＭＰＥＧビデオの再生、プリンタへのデータの送信、ユーザからのタイピングやその他の入力への応答、Ｗｅｂブラウザやワードプロセッサプログラムのようなアプリケーションプログラムを同時に実行する必要がある。ワークステーション用のプロセッサに本発明を使えば、各ストリームの様々な要求に対する応答を改善することができる。たとえば、ＭＰＥＧビデオストリームは、フレームをデコードするのに必要なリソースやビデオメモリに対する高いプライオリティアクセスを与え、これに対し、プリンタ向けの割り込みサービスルーチンは、最大印刷速度で現在のプリンタを駆動するのに十分なプライオリティを与えられる。アプリケーションプログラムには、ビデオメモリに次ぐ第２レベルのプライオリティが与えられる。
【００６９】
また別の側面では、ロボット装置は、センサ、アクチュエータ、コントロール入力に対してリアルタイムに応答しなければならないことが分かっている。そのような装置用のオペレーティングシステムをスレッドに分け、適切にプライオリティを割り当てることによって、複数のタイミング要求セットを同時に満たすことができ、ロボット装置は現在使われているものほどの能力を必要とせず、従って安価なプロセッサでより効率的に動作するようになる。
【００７０】
また、発明の別の実施形態では、本発明の特徴が、デジタルシグナルプロセッサ（ＤＳＰ）と呼ばれる特殊プロセッサに実装される。このＤＳＰとは、デジタルプロトコルでデータを表し、データを事前に定義されている方法で処理することにより、通常アナログ方式でストリーミングされる、「ナチュラルデータ」と呼ばれているものを処理するための特殊プロセッサである。そのようなプロセッサは電話やその他のオーディオストリームを利用するシステムでのオーディオ処理に利用されている。この技術をビデオの世界にも拡張することが可能になる。マルチスレッド、マルチストリーム、そして本発明に従ったプライオリティコントロール用のシステムに、多くの可能性が存在している。
【００７１】
本発明の応用によって、その機能が改善されるプロセッサの種類やサイズにはあったとしても少ししか制限がないことを強調しておく。複数のスレッドが処理できれば、アクセスの難しい装置用の組み込みコントローラのような、単一の機能ユニットを持つ小さなプロセッサの機能を強化することができる。応用は、ＡＳＩＣとして実装されている特殊マイクロプロセッサや、基本的にその他すべてのデジタルプロセッサに広げることができる。ここで述べたのは、多数の例の一部にすぎない。
【００７２】
本発明の精神と展望の範囲内で記述されている発明の実施形態に様々な変更を加えることができることは、有能な技術者には明白である。たとえば、ハードウェア機能がプロセッサで提供され、基本的に同じ目的や機能を実施するような方法が多数存在する。同様に、ソフトウェアやファームウェアを異なるプログラマまたは同じプログラマが構造化し、なお同じ目的または機能を実行できるような方法が多数存在する。さらに、本発明の実施形態に従うプロセッサは、ストリームリソースの数、機能ユニットの数などで大きく異なるアーキテクチャを持つこともありうる。そうしたバリエーションは本発明の展望の範囲内に入ると見なされなければならず、発明は上記の請求項によってのみ制限される。
【図面の簡単な説明】
【図１】  図１は、本発明のある実施形態に従って、プロセッサ機能リソースにスレッドを割り当てる優先順位付き命令スケジューラの役割を示す図である。
【図２】  図２は、本発明のある実施形態に従って、優先順位付き命令スケジューラを含むマルチストリーミングプロセッサのシステムアーキテクチャを示しているブロック図である。
【図１】
0003877527.tif 000004
【図２】
0003877527.tif 000005