JP3877527B2 - マルチストリーミングプロセッサ向けの優先順位付き命令スケジューリング - Google Patents
マルチストリーミングプロセッサ向けの優先順位付き命令スケジューリング Download PDFInfo
- Publication number
- JP3877527B2 JP3877527B2 JP2000588668A JP2000588668A JP3877527B2 JP 3877527 B2 JP3877527 B2 JP 3877527B2 JP 2000588668 A JP2000588668 A JP 2000588668A JP 2000588668 A JP2000588668 A JP 2000588668A JP 3877527 B2 JP3877527 B2 JP 3877527B2
- Authority
- JP
- Japan
- Prior art keywords
- priority
- stream
- code
- record
- streams
- 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
- 238000012545 processing Methods 0.000 claims description 68
- 238000000034 method Methods 0.000 claims description 61
- 230000006870 function Effects 0.000 claims description 30
- 230000008859 change Effects 0.000 claims description 28
- 230000004044 response Effects 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 16
- 230000003068 static effect Effects 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 13
- 238000007667 floating Methods 0.000 description 6
- 241001522296 Erithacus rubecula Species 0.000 description 5
- 238000007616 round robin method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012913 prioritisation Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000013468 resource allocation 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
Description
(発明の分野)
本発明は、デジタルマイクロプロセッサの分野に関わるものであり、特に当分野ではマルチストリーミングプロセッサと呼ばれている、複数のプロセッシングストリームで動作可能な装置に関わるものである。
【0002】
(発明の背景)
現在複数のスレッドを処理できるマルチストリーミングプロセッサが当分野では知られており、活発な研究開発の対象になっている。本発明はこの分野での従来の成果に注目し、その上に機構や方法においてさらに新しいまた自明のものではない改善を提供するものである。発明者は、この本願において、本発明のいくつかの面に対し追加の背景とコンテキストを提供する、マルチストリーミングプロセッサの専門分野に属するいくつかの公開論文を一覧にした情報開示説明を提供する。
【0003】
定義のために、本明細書では、ストリームを、主として命令スレッドをサポートし処理できるプロセッサに関するハードウェア構造を指す語として使用する。スレッドは、ソフトウェアまたはアプリケーションコンテキストによって定義される。たとえば、デスクトップコンピュータを動かすCPUとして実装されているマルチストリーミングプロセッサは、同時にワードプロセッサプログラムやオブジェクト指向作図プログラムのような複数のアプリケーションのスレッドを処理することができる。また、マルチストリーム対応プロセッサは、データパケットネットワークのルータのように、定期的に人間が介在しなくてもマシーンを駆動することができる。このコンテキストにおいては、例えば、ネットワークでのデータパケットの処理と転送のために1つまたは複数のアプリケーション(コードセット)が存在し、ネットワークに接続されている他のルータやサーバとのQuality of Service(QoS)ネゴシエーションのために別のアプリケーションが存在していると言うことができる。内部機能のためのプログラム済みスケジューリングと共に、処理のために受け取られるデータの性質が、アプリケーションルーチンの呼び出しとサービス提供を規定する。
【0004】
いずれの場合でも、複数のスレッドを処理するプロセッサの最大能力は、ハードウェアによって決まるストリームの数に固定されている。したがって、シングルスレッドを実行するマルチストリーミングプロセッサは、シングルストリームプロセッサとして動作する。
【0005】
先に説明し、この場合はIDSが提供している論文でも説明されているように、スーパースケーラプロセッサも広く知られている。この用語は、プロセッサチップに実装されている複数の機能ユニットと、利用可能な個別機能ユニットに命令を発行する能力を、持つプロセッサを指している。現在製造されているほとんどのCPUプロセッサは、複数の機能ユニットを持っている。浮動小数点演算ユニット、整数演算ユニット、ロジックユニット、ブランチ予測ユニット、ロード/ストアユニットなど多数のユニットを持っているプロセッサもある。マルチストリーミングスーパースケーラプロセッサも現在知られている。
【0006】
発明者は、機能ユニットの数に拘らず、ストリームから機能リソースへのスケジューリング命令に関して、ほとんど無視されている分野があると考える。すなわち、どのストリームに機能リソースへのプライオリティが与えられるかという、プライオリティの問題である。これは、すべてのマルチストリーミングプロセッサで問題となり、複数の命令スレッドを実行するスーパースケーラプロセッサではより複雑な問題となりうる。現在ほとんどの開発において、スケジューリングはプロセッサ使用効率を最大化するように開発されている。発明者は、急速に成長している技術分野へのデジタル処理の急速な普及によって、スレッド処理やプロセッサリソースへのアクセスの動的優先順位付けが緊急に必要になったことを発見した。
【0007】
多くのアプリケーションの処理において、どちらも重視しなければならないが、プロセッサの可用性よりもアプリケーションをどう処理するかの方が重大な問題であることが発明者に明らかとなった。これまでは、プロセッサの可用性ばかりに注意が向けられていた。たとえば、理論的またはアカデミックな使用は別として、マルチストリーミングプロセッサ向けのほとんどの実際のアプリケーションでは、リアルタイムな要求というものが存在する。さらに、実行数に依存して、実行中に、アプリケーションスレッドの緊急性が、他のスレッドと関連して変わることがある。現在利用されている単純なシェアリングやスケジューリングの手法は、実時間の問題に対応していない。
【0008】
したがって、現在、明らかに求められているのは、スーパースケーラプロセッサを含む、マルチストリーミングプロセッサ向けのタスクやスレッドを高度にまた動的にスケジューリングし優先順位付けするための機構や方法である。本発明は、以下で詳細に説明するように、この機構や方法を明らかにする。
【0009】
(発明の要約)
本発明の好適実施形態において、1つまたは複数の命令スレッドをストリーミングするための複数のストリーム、ストリームからの命令を処理するための機能リソースセット、機能リソースへのストリームのアクセスを管理する命令スケジューラ、ストリームと関連したプライオリティコードのプライオリティレコードから構成されるマルチストリーミングプロセッサが提供される。いかなる時点でも、命令スケジューラは、プライオリティレコードに従って機能リソースへのストリームのアクセスを管理する。
【0010】
ある実施形態では、プライオリティレコードが少なくとも1つのストリームと結び付けられている1つまたは複数のプライオリティコードから構成され、プライオリティレコードは静的であり一定である。また、ある実施形態では、プライオリティレコードが一貫した反復的なやり方で変化する実施形態も考えうる。また、プライオリティコントローラが処理中に1つまたは複数のプライオリティコードを動的に変えるような、プライオリティレコードと結合されているプライオリティコントローラをプロセッサが持つこともある。プライオリティコードの変更は、少なくともその一部がチップ上の処理利統計情報の変更によって決められるやり方で実現されることもある。また、プライオリティコードの決定が、ある実施形態では、少なくともチップ外で決められ、プライオリティコントローラに伝えられることもあるかもしれない。また、更に別の実施形態では、プライオリティコントローラが、ストリーム命令負荷のその時の状態に従ってプライオリティコードを変えることもある。
【0011】
本発明のある実施形態では、特定のプライオリティコードが効果的にストリームを無効化し、機能リソースへのストリームのアクセスを阻止する。また、プライオリティコントローラが、プライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に応答して、またはプロセッサへの割り込みに従って、ストリームを有効化/無効化することもある。
【0012】
本発明の他の実施形態では、プロセッサは、プロセッサレコードで同一のプライオリティを持っている複数のストリームに対して、機能リソースへのアクセスを解決する、同点決着機能を更に持つ。
【0013】
また本発明の別の態様において、複数の命令スレッドをストリーミングするための複数のストリーム、ストリームリソースからの命令を処理するための機能リソースセット、命令をストリームにフェッチするフェッチユニット、機能リソースへのストリームのアクセスを管理する命令スケジューラ、ストリームと結び付けられているプライオリティコードのプライオリティレコード、そしてプライオリティを動的に決め、処理中にプライオリティレコードを動的に変更するプライオリティコントローラから構成されるマルチストリーミングプロセッサが提供される。
【0014】
同態様において、プライオリティレコードの変更は、少なくともその一部はチップ上の処理統計情報によって決められるやり方で実施される。そして、ある実施形態では、少なくともプライオリティレコードの変更の一部がチップ外で実施され、プライオリティコントローラに伝えられることもある。ある実施形態では、特定のプライオリティコードを使って、効果的にストリームを無効化し、そのストリームが機能リソースにアクセスすることを阻止することもできる。有効化/無効化は、オンチップイベント、処理統計情報、または外部入力への応答において、あるいはプロセッサへの割り込みによって実施することもできる。プライオリティがストリーム命令負荷に従って変わることもある。他の場合と同様この場合でも、同点解決機能、すなわちプライオリティレコードに同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する、同点解決機能が提供されることもある。
【0015】
本発明の他の態様に従って、マルチストリーミングプロセッサにおいて、プライオリティによってストリームからの命令を処理する方法が提供され、該方法は以下のステップを含む:(a)プライオリティコードを1つまたは複数のストリームと結び付け、コードをプライオリティレコードに保存するステップ、(b)処理中に命令スケジューラによってプライオリティレコードのプライオリティコードをチェックするステップ、(c)特にプライオリティコードを基にして機能リソースへのストリームのアクセスを管理するステップ。この方法ではプライオリティレコードのプライオリティコードは静的で変わらないことも、また一貫した反復的やり方で変わることもある。
【0016】
この方法の実施形態によっては、プライオリティレコードと結合されたプライオリティコントローラによる処理中にプライオリティレコードのプライオリティコードを動的に変更するステップも更に存在することもある。プライオリティコードの変更は、少なくともその一部はチップ上の処理統計情報の変更によって決まるやり方で実施され、あるいは、少なくともその一部はチップ外で実施され、プライオリティコントローラに伝えられることもある。
【0017】
本発明の実施形態によっては、特定のプライオリティコードが効果的にストリームを無効化し、ストリームが機能リソースにアクセスするのを阻止する。
【0018】
この有効化/無効化は、オンチップイベント、処理統計情報、または外部入力への応答において実施される。あるいは、プロセッサ割り込みに従って行われる。プライオリティコードは、ストリーム命令負荷の現在の状態によって変えられることもある。この方法では、同点決着機能、すなわちプライオリティレコードに同一のプライオリティを持っている複数のストリームに対して機能リソースへのアクセスを解決するためのステップが提供される。
【0019】
また、本発明の別の態様において、マルチストリーミングプロセッサにおいてプライオリティによってストリームからの命令を処理する方法が提供さ、以下のステップから構成される、(a)プライオリティコードを1つまたは複数のストリームと結び付け、プライオリティレコードにコードを保存するステップ、(b)処理中に命令スケジューラによってプライオリティレコードのプライオリティコードをチェックするステップ、(c)特にプライオリティコードを基にしてストリームの機能リソースへのアクセスを管理するステップ、(d)処理中にプライオリティコントローラによってプライオリティレコードのプライオリティコードを動的に変更するステップ。
【0020】
この方法のステップ(d)では、プライオリティコードの変更は、少なくともその一部はチップ上の処理統計情報の変化によって決まるやり方で実施される。あるいは、プライオリティコードの決定の少なくともその一部は、チップ外で実施され、プライオリティコントローラに伝えられる。また、この方法では、特殊なプライオリティコードを使って、効果的にストリームを無効化し、そのストリームが機能リソースにアクセスするのを阻止することができる。この有効化/無効化は、オンチップイベント、処理統計情報、または外部入力への応答において実施される。あるいは、プロセッサ割り込みに従って実施される。
【0021】
さらに、この方法では、プライオリティは、ストリーム命令負荷の現在の状態に従って変更される。また、この方法では、同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する機能が提供できる。
【0022】
さらに、本発明の別の態様では、アプリケーションプログラムやデータを保存するためのメモリ、メモリと結合され、複数の命令スレッドを処理するための複数のストリームを持つマルチストリーミングプロセッサ、ストリームからの命令を処理する機能リソースセット、機能リソースへのストリームのアクセスを管理する命令スケジューラ、そしてストリームと結合されたプライオリティコードのプライオリティレコードから構成されるコンピュータが提供される。いかなる時点でも、命令スケジューラは、プライオリティレコードに従って、ストリームの機能リソースへのアクセスを管理する。
【0023】
このコンピュータの実現においては、プライオリティレコードが少なくとも1つのストリームと結び付けられた1つまたは複数のプライオリティコードから構成され、プライオリティレコードが静的であり変化しない。また、別の実現では、プライオリティレコードは、一貫した反復的やり方で変更される。また、プライオリティレコードが、1つまたは複数のストリームと結び付けられた1つまたは複数のプライオリティコードから構成され、さらにプロセッサはプライオリティレコードと結合されたプライオリティコントローラを持つことがある。この場合、プライオリティコントローラが処理中に1つまたは複数のプライオリティコードを動的に変更する。プライオリティコードの変更は、少なくとも一部はチップ上の処理統計情報の変化によって決まるようなやり方で実施されることもある。この実施形態あるいは他の実施形態では、プライオリティコードの決定は、少なくともその一部はチップ外で実施され、それがプライオリティコントローラに伝えられる。
【0024】
このコンピュータのある実施形態では、特定のプライオリティコードが効果的にストリームを無効化し、そのストリームが機能リソースにアクセスするのを阻止する。あるいは、プライオリティコントローラがプライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化/無効化する。プロセッサ割り込みに従って実行されることもある。
【0025】
また、プライオリティコントローラは、ストリーム命令負荷の現在の状態に従って、プライオリティコードを変更することもできる。同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームの場合に機能リソースへのアクセスを解決する機能が存在することもある。
【0026】
本発明の別の態様では、アプリケーションプログラムやデータを保存するメモリ、メモリと結合され、複数の命令スレッドを処理するための複数のストリームを持つマルチストリーミングプロセッサ、ストリームリソースからの命令を処理する機能リソースセット、機能リソースへのストリームのアクセスを管理する命令スケジューラ、そしてストリームと結合されたプライオリティコードのプライオリティレコードから構成されるコンピュータが提供される。プライオリティコントローラは、処理中にプライオリティコードを動的に決定し、それに従ってプライオリティレコードを変更する。
【0027】
このコンピュータの実現によっては、プライオリティレコードの変更は、少なくともその一部がチップ上の処理統計情報によって決まるやり方で実施される。また、プライオリティレコードの変更が、少なくともその一部はチップ外で実施され、プライオリティコントローラに伝えられることもある。実施形態によっては、特定のプライオリティコードが効果的にストリームを無効化し、そのストリームが機能リソースにアクセスするのを阻止する。プライオリティコントローラは、プライオリティレコードを変更してオンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化/無効化することができる。これは、プロセッサ割り込みに従って実施されることもある。
【0028】
さらに、プライオリティコントローラは、ストリーム命令負荷の現在の状態に従って、プライオリティコードを変更することもある。このコンピュータでは、同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する機能が提供されることもある。
【0029】
本発明の別の態様では、パケットデータネットワークに接続するための少なくとも1つのポート、アプリケーションコードを保存するためのメモリ、メモリと結合され、複数の命令スレッドをストリーミングするための複数のストリームを持つマルチストリーミングプロセッサ、ストリームリソースからの命令を処理する機能リソースセット、ストリームの機能リソースへのアクセスを管理する命令スケジューラ、そしてストリームと結び付けられているプライオリティコードのプライオリティレコードから構成される、パケットデータネットワークのためのパケットデータルータが提供される。プライオリティコントローラは、処理中にプライオリティコードを動的に決定しし、それに従ってプライオリティレコードを変更する。
【0030】
さらにまた、複数のシグナルを個別スレッドとしてストリーミングするための複数のストリーム、シグナル処理のための機能リソース、シグナルの機能リソースへのアクセスを管理するスケジューラ、ストリームと結び付けられているプライオリティコードのプライオリティレコードから構成される、デジタルシグナルプロセッサが提供される。プライオリティコントローラは、処理中にプライオリティコードを動的に決定しし、それに従いプライオリティレコードを変更する。
【0031】
以下で詳細に説明する本発明のいくつかの実施形態では、コンピュータテクノロジにおいて初めて、ストリームのプロセッサ機能リソースへのアクセスが選択的に管理され、機能リソースへのストリームのアクセスプライオリティが動的に管理され、処理パワーが向上し、リソースをより効果的に使用でき、特にリアルタイム処理ニーズに応える、マルチストリーミングプロセッサが提供される。
【0032】
(好適実施形態の説明) マルチストリーミングプロセッサとは、複数の利用可能なプログラムスレッドからの複数の命令ストリームを同時に実行できるリソースを持つプロセッサである。本発明は、ある面から見れば、競合するストリームの、機能ユニットを含む1つまたは複数の処理リソースへの効率的でタイムリーな割当てに優先順位を付け、調整するプライオリティコントローラと結合された命令スケジューラを構成するものである。
【0033】
本発明の好適実施形態では、各ストリームには、競合する命令ストリームに対する関連するストリームの処理リソースへの要求を表している、プライオリティが割り当てられる。プライオリティは、すべてのプロセッサリソースに関する関連するストリームの要求を表す1つの数によって、またはいくつかのリソースの夫々に対するプライオリティを含むリストによって実装される。さらに、プライオリティは、利用可能なリソースへのアクセス等級や利用可能なリソースの間でのアクセス制限を含むことが出来る。本発明の様々な実施形態でプライオリティを決定し発行するロジックは、以下で説明するように様々な方法で実装できる。
【0034】
ある実施形態では、プライオリティはストリームによって固定されているが、プライオリティアクセスの他にリソースへのアクセスが管理されることもある。他の形態ではプライオリティはストリームによって変化し、アクセスを動的に管理することもできる。これらアクセスとプライオリティ決定のための基準は、現在のキャッシュやメモリ要求のようなオンチップ統計情報、中でも、機能ユニット利用率、またはブランチ予測に従って、またはデータの到着と利用可能性、またオフチップからの入力、そしてこれらの基準の組み合わせなどの様々なソースから得られる。好適実施形態では、プライオリティ発行ロジックは、現在のプライオリティに従って、各ストリームのプロセッサ機能リソースへのアクセスを制御し管理する。また、好適実施形態では、プライオリティコントロールと命令発行機能が動的に変わり、各スレッドはタイムリにサービスを受けることができるばかりでなく、実際のプライオリティの制約内でプロセッサリソースの利用状況を効率的に管理することができる。
【0035】
図1は、利用可能なプロセッサ機能リソース10−13にストリームを割り当てる命令スケジューラ5への優先順位付けを含め、本発明の実施形態におけるマルチストリーミングプロセッサ14の命令のフローとオペレーションの例を示している。この例のスレッド1、スレッド2、スレッド3は、競合プロセッサストリームとして実行され、メモリ上に保存されているプログラムを表している。スレッドは、個々のアプリケーションプログラム、単一ののマルチスレッドプログラムの一部、または割り込みサービスルーチンの結果としてフェッチされた命令スレッドのような様々なソースから来るが、ソースはこれらに限られるものではない。この例でのプロセッサは、アクティブスレッド1と2から命令をフェッチしてデコードし、いつでも実行できる命令を含んでいるストリームのプール4を集める。この例のスレッド3は、インアクティブとして扱われる。スケジューラ5は、ストリームをリソース10−13に割り当てる。
【0036】
各アクティブストリームは、関連図けられた現在のプライオリティを持っている、すなわちスレッド1を実行しているストリームと結び付けられているプライオリティ7、そしてスレッド2を実行しているストリームと結び付けられているプライオリティ8として示されているものである。各ストリームのプライオリティがリソース10−13への現在のアクセスを決定し、本発明の追加的特徴では、このプライオリティがリソース10−13に関連する要求を決める。プライオリティ発行ネットワーク6は、プライオリティ7と8を使って、1つまたは複数のメカニズムに従い、各優先順位付けされたストリームからの命令をリソース10−13に割り当てる。
【0037】
プライオリティコントロールユニット9は、ストリームのプライオリティステータスを監視し、たとえばキャッシュやメモリ要求、リソースの利用率などのような処理活動の履歴を含む利用可能な基準に従ってプライオリティを決定または修正し、必要なだけ、ある実施形態では、プロセッササイクルと同じ回数プライオリティを動的に変更して、スレッドのタイミング要求を満たし処理リソースの利用率を最適化する。高度な実施形態では、プライオリティコントロールユニット9のロジックは、スレッド1−3の要求に応じて、動的にスケジューリングメカニズムを切り替える。
【0038】
図2は、図1のマルチストリーミングプロセッサ14の好適実施形態でのアーキテクチャを示すブロック図である。実線は、命令とデータのパスを表しており、鎖線は制御のパスを示している。この例でのメモリ201は、プロセッサにおいて同時に実行されるプログラムまたはプログラムの一部である、1つまたは複数スレッドのための命令を含んでいる。プロセッサは、複数のスレッドからの命令を命令キャッシュ202に読み込み、命令と結び付けられているデータをデータキャッシュ211に読み込む。典型的には、マルチスレッドのフェッチユニット203の制御下では、命令キャッシュ202からの命令は、マルチスレッドのフェッチユニット203に移され、プリフェッチバッファに蓄積され、デコードされ、1つまたは複数のキューに入れられる。様々な実施形態では、単一のキューはストリーム間で共有されるかまたは、各ストリームのためのユニットに分けられることがある。場合によっては、キューは1つまたはリソースセットに、あるいはストリームとリソースの組に専用となることもある。
【0039】
実質的なキューの効果により、命令の競合するストリームの存在が発生し、適格な命令が機能リソースに発行される。実行できるプロセッサを持つ各ストリームは、そのストリームのプログラムカウンタとレジスタファイルを含むコンテキストフレームを持つ。スレッドは、スレッドのプログラムカウンタアドレスとレジスタ値を持つ、利用可能なコンテキストフレームをロードし、それにアクティブプライオリティを割り当てることによってアクティブになる。実行すべきスレッドが1つしかないこともある。その場合、実行すべき命令のストリームは1つである。スレッドを実行するのに利用できるストリームより多くのアクティブスレッドが存在する場合、利用可能なコンテキストフレームの数までのスレッドがアクティブになり、他のスレッドは一時的にインアクティブのままである。典型的には、オペレーティングシステムの機能がスレッドをマルチストリーミングプロセッサのストリームに割り当てる。
【0040】
複数のストリームからの命令は、サイクルベースで実行に組み込まれ、たとえば、遅いメモリでは、それより低い頻度で実行に組み込まれることがある。命令スケジューラ5は、複数のストリームからの命令を実行する順序を決め、選択した命令をプライオリティ発行ネットワーク6に送る。メモリからのロード・ストア命令は命令スケジューラ5によって監視され、メモリ201、データキャッシュ211、命令キャッシュ202、その他のリソースのオペレーションは207−210の機能ユニットと同様に制御される。
【0041】
命令スケジューラ5の内部では、命令は一時的に予約ステーションに蓄積され、依存性が評価され、他の命令の先行実行に依存している命令は適切に遅延される。プライオリティ発行ネットワーク6は、各命令の実行を適切な機能ユニット207−210に割り当てる。機能ユニットは、1つまたは複数の整数演算ユニット208から構成され、ブランチユニット207、浮動小数点演算ユニット209、ロード/ストアユニット210を含む。いずれかの種類の複数の機能ユニットが利用可能である場合、命令スケジューラ204とプライオリティ発行ネットワーク206は、利用可能な機能ユニットへの命令の割り当てを管理する。命令スケジューラ5はプライオリティレコードを持ち、このプライオリティレコードは1つまたは複数のストリーム向けに記録されているプライオリティを持つファイルあるいはレジスタセットである。したがって、ストリームよりも少ない数のプライオリティが存在し、アクティブプライオリティを持っていないストリームはデフォルトレベルで処理されることがある。または、各ストリームが特定のプライオリティを持つこともある。
【0042】
複数のストリームが存在する場合、どのストリームにリソースへのアクセスを許すかを決めるメカニズムが存在しなければならない。ストリームの間でのアクセスを管理する方法はどの方法でも広い意味でプライオリティスキームと見なすことができる。これまでは、降順に静的プライオリティをストリームに割り当てるのが一般的であった。しかし、このスキームでは、1つのストリームは常に一番高いプライオリティを持ち、その他のストリームは降順により低いプライオリティを持つ。以下の表1は、A、B、C、Dという4つのストリームがある静的なケースの場合のプライオリティテーブルである。0は最高位のプライオリティを示し、以下1、2と低くなり、3が最下位のプライオリティを示している。
【表1】
【0043】
表1に示されている静的プライオリティスキームの場合、ストリームAは常に最高位のプライオリティを持ち、ストリームAに待機命令が存在しなくなるまで、待機命令はストリームAから機能ユニットに発行される、その時点で、ストリームAよりも1つ低いプライオリティを持つストリームBに機能ユニットへのアクセス権が保証され、ストリームBを待っている命令が存在しなくなるまで、命令がストリームBから発行される。当然、アクセス権がストリームBにシフトしたときにストリームBに命令が存在しないということもありうる。その場合、アクセス権はストリームCに移る(以下同様)。しかし、これには各ストリームのプライオリティが一定、すなわち静的であるという制約がある。
【0044】
多くの場合、特にストリームの数が増えると、静的スキームでは低いプライオリティを持つストリームに割り当てるスレッドの不足という問題が発生することが分かっている。これに対し、機能リソースへのアクセスの公平性を促進するために、現在プライオリティが定期的にストリームの間でシフトするラウンドロビン方式が提案され、実装されている。このラウンドロビン方式を以下の表2に示した。
【表2】
【0045】
表2の行はタイムスライスを示している。T1タイム時にその行のプライオリティはT2タイムまで適用される。T2タイム時に、その行のプライオリティが適用される(以下同様)。ラウンドロビン方式では、プライオリティは表に示すように一定の間隔で回転し、少なくとも理論的には各ストリームは機能リソースへの同一のアクセス権が与えられる。
【0046】
発明者は、従来技術には、先に説明したような、無限のリソースアクセスを持つ静的スキームやラウンドロビン方式には多くのまた重大な欠陥があることを発見した。これらの技術は、変化する条件、リアルタイム要求、そして一つ、二つの支配的なクラスのリソースに対するニーズを持つ様々なスレッドの構造的性質に対応していない。したがって、発明者はプライオリティスケジューリングと命令の発行を劇的に改善する機構および方法を提供した。
【0047】
広く検討されているプライオリティの問題を詳細に調査して、問題は単なるプライオリティだけの問題ではないことが明らかになった。問題を次のように記述することができる。
1.どのストリームに機能リソースへのアクセス権が与えられるべきか?
2.どれだけのアクセス権が与えられるべきか?
3.次にどのストリームがアクセス権を取得するのか?
4.同点の場合はどうなるのか?
現在の、そして、従来の方式では、これらの問題にはほとんど対応していない。本発明の様々な実施形態では、これらの問題(問題点)のすべてに、様々な方法でまた様々な目的のために対応している。
【0048】
本発明のいくつかの実施形態では、ストリームのプライオリティを示すものとして1つの数が使われ、その数が、機能ユニット、メモリ、キャッシュのようなリソース(しかし、これらに限られるものではない)へのアクセス権を割り当てるためにスケジューラによって使われている。他の形態では、数のリストがストリームへの複数のプライオリティを保存しており、各数が、整数演算ユニット、浮動小数点演算ユニットのセットなどのリソースクラスへの関連ストリームのプライオリティ要求を表している。あるいは、他の形態では、あるストリームには、現在の最高位のプライオリティストリームとしてのアクセス権が与えられるが、そのアクセスは1つの機能ユニットのみに制限されている。
【0049】
別の実施形態では、各ストリームに対する数のリストが個別リソースに対するストリームの要求を保存している。たとえば、複数の整数演算ユニットや浮動小数点演算ユニットを持つプロセッサでは、プライオリティ数は、各整数演算ユニットおよび各浮動小数点演算ユニットとの関連で使われる。より厳しいタイミング要求を満たしたり、より完全なリソース利用を保証するためにリソースに対する精緻なコントロールが必要な場合、より複雑なプライオリティ表現が使われる。
【0050】
特に、本発明の実施形態において、ストリームの間でポインタを移動するために、ラウンドロビン方式と静的スキームがなお交互に使われている。しかし、現在のものよりもより高度なプライオリティメカニズムが実装されている。たとえば、本発明の1実施形態では、静的プライオリティは表1に示すように4つのストリームの間に割り当てられる。しかし、命令を発行するメカニズムが、ストリームからの命令へのアクセスを1つまたは特定の組のリソースクラスに制限することがある。このリソースクラスの選択性は、特定の条件の元で許される制限付きクラス以外のリソースへのアクセス権を伴うただ1つのストリーム、たとえば、複数の、またはすべてのストリームにとっての最高位のプライオリティを持つストリームのプライオリティの特徴である。
【0051】
本発明の他の実施形態では、複数のストリームが同じプライオリティであるが、アクセスにおける排他性やある程度の重なりを含め、機能リソースへの異なるアクセス権を持つことがある。このユニークな方式では、同点決着が必要な衝突が発生するので、チップでの最近の処理履歴(だれが最後にアクセスしたか)や他の基準では、条件の指示に従って、同点の場合のアクセス権を決定するために同点決着ユニットが提供される。たとえば、同点の場合に、同点のストリームの間でアクセス権を平等に分けることも可能である。
【0052】
従来のプロセッサでは、(割り込みが使われるプロセッサやアプリケーションに対して)割り込みが優先される。すなわち、割り込みとは、プロセッサに現在実行していることを止めさせ、そのアクティビティを割り込みサービスルーチンに向けさせることである。本発明の実施形態では、割り込みサービスルーチンが少数のサイクル内にサービスを受けなければならない場合、高いプライオリティが与えられ、すべての必要なリソースが利用できるようになる。しかし、通常のストリームが、ある割り込みよりもより厳しいタイミング要求を持っていることもあり、その場合には、割り込みよりも高いプライオリティが割り当てられる。
【0053】
プライオリティや同点決着ロジックの一部としてのアクセス権の新しい特徴の他に、本発明の特定の実施形態では、マルチストリーミングプロセッサにおけるプライオリティの動的決定と管理という新しい強力なコンセプトが提供される。
【0054】
本発明の実施形態では、命令を割り当てるために命令スケジューラによってプライオリティが解釈されるコンテキストを、プライオリティコントロールユニット9が決める。たとえば、最高位のプライオリティを持っているストリームは、低いプライオリティを持っているストリームよりも優先される。あるいは、スケジューラがすべてのストリームに最低限のアクセス権を保証するが、ストリームのプライオリティに比例してアクセス権を高める。先に説明したように、各ストリームに順に割り当てられるプロセッササイクル数がストリームのプライオリティに従って変動するラウンドロビンやランダムスケジューリングが使われる。すなわち、従来の制限付きラウンドロビン方式では、ストリームが順に選択され、選択された各ストリームには、同じプライオリティをもち、同じ量のリソースが割り当てられる。しかし、本発明の実施形態では、ストリームはラウンドロビン方式でサービスを受けるが、各ストリームには現在のプライオリティに従ってリソースが割り当てられる。
【0055】
先に説明したように、プライオリティ管理の例として、アクセスされる各ストリームには、そのストリームの現在のプライオリティによって決まるサイクル数の間、全てのリソースに対するアクセス権が与えられる。あるいは、アクセスされる各ストリームには、現在のプライオリティに従って機能ユニットへのアクセス権が割り当てられる。たとえば、静的スキームでは、あるストリームはある機能ユニットを使うことが許されるが、そのプライオリティが変わると、より多くのあるいはより少ない機能ユニットへのアクセスが許される。ここで重要なことは、発行の順番とアクセス権がプライオリティコントローラ9によって動的に変わることである。
【0056】
ある実施形態では、プライオリティが、1つまたは複数のリソースに対してストリームが希望する平均利用率を表わす割合として解釈されることもある。特に高度な実施形態では、プロセッサが、先に説明した複数のスケジューリング方法の組を持っていることもあり、その場合、プライオリティコントロールユニット9は動的に複数の方法の中から選択したり、複数の方法を様々な組合わせで使う。他の形態では、スケジューリング方法と個別プライオリティがソフトウェアの制御下で選択されることもある。ソフトウェアが方法を指定しない場合、プライオリティコントロール9はラウンドロビンや静的スケジューリングのような、旧来の方法にデフォルト設定される。
【0057】
各プライオリティに数のリストが使われる場合、プライオリティコントローラ9は各リソースクラスまたは各リソースを個別に管理する。リソースやリソースクラスに対する要求が衝突する場合、各ストリームのプライオリティリストのエントリを比較して、先に説明したスケジューリング方法のいずれか単独、あるいは複数の組合に従って衝突が解決される。
【0058】
複数のストリームのプライオリティが同一であるということもありうる。この場合、命令スケジューラ5は、先に説明した同点決着メカニズムを持つ。同点決着メカニズムは、動的または静的な方法を使って衝突を解決することができる。たとえば、ラウンドロビンスケジューリングが使われている場合、同じプライオリティを持っている各ストリームは、同一の割合のリソース割り当てを受け取る。あるいは、ストリームの現在の命令がどのリソースを要求しているか、あるいは様々なリソースの利用率を基にして、あるいはランダムスケジューリングにより衝突が解決されることもある。
【0059】
プライオリティコントロールユニット9は、どのストリームのプライオリティでも変えることができる。このような変更は、たとえば各メモリサイクルに対してはプロセッササイクルの一部と同じ頻度で、、あるいは長いレイテンシーメモリ命令が発行されたときにはより少ない頻度で、実行される。プライオリティの変更は、ソフトウェアの制御の下で、あるいはプロセッサやその他のシステムコンポーネント内の条件に応じて行われる。ある形態では、プライオリティコントロールユニット9が、機能ユニット、メモリ、キャッシュへのアクセス頻度のような、1つまたは複数の処理リソースの利用率を監視する。その場合、プライオリティは変化し、ストリームのスループットを最適化したり、1つまたは複数のリソースの利用率を最大化するように、あるいはスループットと利用率の間のバランスを取る。メモリが監視されているとき、プライオリティは、アドレスの範囲またはアクセスされるメモリセグメントを基にして変わることもある。メモリ201がセグメント化されている実施形態の場合、メモリサイクルはプロセッササイクルよりも遅いので、複数のセグメントが同時にアクセスされる。その際、命令スケジューラ5は複数のセグメントへのアクセスをインタリーブし、メモリ利用率を最大化する。複数のリソースを監視しているような場合、プライオリティは1つのリソースの利用率を最適化するように、あるいは複数リソースの利用のバランスを取るように設定され、このバランスが動的に変更されることもある。
【0060】
また、整数演算ユニット208または浮動小数点演算ユニット209のようなリソースが動的に再構成され、特定の命令でデータパスがより効率的になるようにデータパスが変更されるという実施形態も考えられる。たとえば、2つの数を掛けるあるいは足すために、整数演算ユニットが命令と命令の間で再構成されることもありうる。そのような実施形態では、命令スケジューラ5は予約ステーション及び/又はマルチスレッドフェッチユニット203の命令キューの命令を調査し、最適機能ユニット構成を決定し、プライオリティ発行ネットワーク206が必要な再構成を実施する。
【0061】
これまで、プロセッサは複数のプログラムスレッドへのリソースの柔軟な割り当てを許さない固定したスケジューリングメカニズムを使ってきた。ストリームの動的優先順位付けにより、処理リソースの動的構成が可能になり、いずれの時点でも競合するストリームの組合わせのニーズに応えられるようになる。たとえば、厳しいタイミング要求を持っているリアルタイムスレッドには高いプライオリティが与えられ、その要求が満たされることが保証される。これに対し、要求のあまり厳しくないストリームにはバックグランドでサービスが提供される。さらに、プライオリティコントロールユニットは命令キャッシュの内容のような、処理の様々な側面を監視することができるので、実行時にプライオリティを変更し、可変速度で到着する入力データストリームへのサービス提供のような処理目標を達成することができる。あるいは、どのスレッドも厳しい要求を持っていない場合、すべての利用可能なリソースがビジーになり、それによってプロセッサスループット全体を最適化するようにスケジューリングが再構成される。リソースのより効率的な利用を可能にすることによって、従来技術ではなく現在の優先順位付きスケジューラを使って、小型で安価なプロセッサを設計できるようになる。
【0062】
本発明のある好適実施形態では、事前定義済みのイベントや条件セットがストリームを再有効化するまで、ユニークなプライオリティ数をストリームに割り当て発行順にそのストリームを無効にする。たとえば、そのような実施形態では、4つのストリームを持っているマルチストリーミングプロセッサは、5つのプライオリティ0−4を持ち、ゼロのプライオリティがあるストリームに設定され、ゼロはシステムによりストリームの無効化と解釈される。その場合、プライオリティ1が一番低いプライオリティであり、次が2であり、4が最も高いプライオリティである。
【0063】
現在いろいろな理由で、ストリームを無効化し、無効プライオリティの割り当てが、データや命令の利用可能性、オフチップからの入力、スレッドの特定の組み合わせ他を含む様々な基準を基にして行えることが望まれている。ある実施形態では、プロセッサ割り込みを使ってストリームの有効化/無効化が行われる。その場合、無効にされたストリームは、割り込みによって目覚めさせられる。この場合プライオリティコントローラは、プライオリティファイルを変更して、無効にされている(眠っている)ストリームにゼロ以外のプライオリティを割り当てる。
【0064】
また他の実施形態では、プライオリティをストリーム負荷に従って管理することができる。この方式では、閾値が設定される。ストリームが発行可能な命令をフェッチする時、プライオリティはその閾値に従って割り当てられる。この方式での粒度を、必要に応じて粗くすることも細かくすることもできる。
【0065】
先に説明した実施形態では、コントローラ9はアクセス権等々を含めプライオリティを管理し、必要な基準を命令スケジューラ5のプライオリティファイルに入れるものとして記述されていた。プライオリティやアクセスのための基準テーブルが他の場所にあり、プライオリティコントロールを、技術的知識を持っている有能なエンジニアのスキルの範囲内で、様々な方法で実装できることは、有能な技術者には明白である。したがって、ここで示された特定のアーキテクチャは、一例にすぎない。
【0066】
さらに、プライオリティやアクセスの動的管理のためのいくつかのメカニズムや基準がプライオリティコントローラ9の機能として開示されている。プライオリティコントローラ9は、様々な方法で実装でき、ハードウェアやソフトウェア技術の併用によってその機能を実行できる。ある実施形態では、たとえば、コントローラ9がカウンタによって指示されるレジスタにアクセスし、整数演算ユニットではなくFPユニットの使用のような最近の処理履歴に関する統計情報を確認し、その結果としてプライオリティ権を管理することも可能である。またある実施形態では、プライオリティコントローラが、プライオリティやアクセス権を決めるのに1つまたは複数のコードルーチン(アルゴリズム)を実行することも可能である。他の実施形態では、プライオリティコントローラがある程度プログラム可能であり、オフチップから入力を受け付け、プライオリティやアクセス権を決定し、設定することもできる。
【0067】
本発明の特徴により、複数のストリームを使う様々なデバイスの改善が可能になる。たとえば、現在のネットワークルータやスイッチは、複数のストリームまたは入ってくるデータのパケットフローを処理し、それをネットワーク上の様々な宛先にディスパッチする必要がある。非同期転送モードのようなある種のネットワークプロトコルはデータフローに対するサービスを保証し、ネットワークデバイスを通したデータのタイムリーな転送を保証する。本発明を使えば、たとえばサービスの品質をネゴシエートしたり、データがデバイスを通るパスを再構成するスレッドではなく、ネットワークデータを扱うスレッドにより高いプライオリティを与えることにより上記デバイスにおける処理を最適化できる。各データフローのサービス品質が異なるとき、異なるプライオリティを持つストリームを使ってサービス保証を満たすことができる。
【0068】
発明の別の側面では、発明の実施形態に従うプロセッサはワークステーションの機能を高度化することができる。通常、ワークステーションは多種多様な競合するプログラムを処理することを求められる汎用コンピュータである。たとえば、ワークステーションは、MPEGビデオの再生、プリンタへのデータの送信、ユーザからのタイピングやその他の入力への応答、Webブラウザやワードプロセッサプログラムのようなアプリケーションプログラムを同時に実行する必要がある。ワークステーション用のプロセッサに本発明を使えば、各ストリームの様々な要求に対する応答を改善することができる。たとえば、MPEGビデオストリームは、フレームをデコードするのに必要なリソースやビデオメモリに対する高いプライオリティアクセスを与え、これに対し、プリンタ向けの割り込みサービスルーチンは、最大印刷速度で現在のプリンタを駆動するのに十分なプライオリティを与えられる。アプリケーションプログラムには、ビデオメモリに次ぐ第2レベルのプライオリティが与えられる。
【0069】
また別の側面では、ロボット装置は、センサ、アクチュエータ、コントロール入力に対してリアルタイムに応答しなければならないことが分かっている。そのような装置用のオペレーティングシステムをスレッドに分け、適切にプライオリティを割り当てることによって、複数のタイミング要求セットを同時に満たすことができ、ロボット装置は現在使われているものほどの能力を必要とせず、従って安価なプロセッサでより効率的に動作するようになる。
【0070】
また、発明の別の実施形態では、本発明の特徴が、デジタルシグナルプロセッサ(DSP)と呼ばれる特殊プロセッサに実装される。このDSPとは、デジタルプロトコルでデータを表し、データを事前に定義されている方法で処理することにより、通常アナログ方式でストリーミングされる、「ナチュラルデータ」と呼ばれているものを処理するための特殊プロセッサである。そのようなプロセッサは電話やその他のオーディオストリームを利用するシステムでのオーディオ処理に利用されている。この技術をビデオの世界にも拡張することが可能になる。マルチスレッド、マルチストリーム、そして本発明に従ったプライオリティコントロール用のシステムに、多くの可能性が存在している。
【0071】
本発明の応用によって、その機能が改善されるプロセッサの種類やサイズにはあったとしても少ししか制限がないことを強調しておく。複数のスレッドが処理できれば、アクセスの難しい装置用の組み込みコントローラのような、単一の機能ユニットを持つ小さなプロセッサの機能を強化することができる。応用は、ASICとして実装されている特殊マイクロプロセッサや、基本的にその他すべてのデジタルプロセッサに広げることができる。ここで述べたのは、多数の例の一部にすぎない。
【0072】
本発明の精神と展望の範囲内で記述されている発明の実施形態に様々な変更を加えることができることは、有能な技術者には明白である。たとえば、ハードウェア機能がプロセッサで提供され、基本的に同じ目的や機能を実施するような方法が多数存在する。同様に、ソフトウェアやファームウェアを異なるプログラマまたは同じプログラマが構造化し、なお同じ目的または機能を実行できるような方法が多数存在する。さらに、本発明の実施形態に従うプロセッサは、ストリームリソースの数、機能ユニットの数などで大きく異なるアーキテクチャを持つこともありうる。そうしたバリエーションは本発明の展望の範囲内に入ると見なされなければならず、発明は上記の請求項によってのみ制限される。
【図面の簡単な説明】
【図1】 図1は、本発明のある実施形態に従って、プロセッサ機能リソースにスレッドを割り当てる優先順位付き命令スケジューラの役割を示す図である。
【図2】 図2は、本発明のある実施形態に従って、優先順位付き命令スケジューラを含むマルチストリーミングプロセッサのシステムアーキテクチャを示しているブロック図である。
Claims (52)
- 1つまたは複数の命令スレッドをストリーミングするための複数のストリームと、
ストリームからの命令を処理する機能リソースセットと、
機能リソースへのストリームのアクセスを管理する命令スケジューラと、
ストリームと結び付けられているプライオリティコードのプライオリティレコードと、
前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラとから構成され、
いかなる時点でも命令スケジューラは、プライオリティレコードに従って機能リソースへのストリームのアクセスを管理する、マルチストリーミングプロセッサ。 - プライオリティレコードが1つまたは複数のストリームと結び付けられている1つまたは複数のプライオリティコードから構成され、さらにプライオリティコントローラが処理中に1つまたは複数のプライオリティコードを動的に変更する、請求項1に記載のマルチストリーミングプロセッサ。
- プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項2に記載のマルチストリーミングプロセッサ。
- 特定のプライオリティコードがストリームを効果的に無効化し、ストリームの機能リソースへのアクセスを阻止する、請求項2に記載のマルチストリーミングプロセッサ。
- プライオリティコントローラがプライオリティレコードを変更してオンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化/無効化する、請求項4に記載のマルチストリーミングプロセッサ。
- プライオリティコントローラがプライオリティレコードを変更してプロセッサ割り込みに対する応答でストリームを有効化/無効化する、請求項4に記載のマルチストリーミングプロセッサ。
- プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項3に記載のマルチストリーミングプロセッサ。
- 同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項2に記載のマルチストリーミングプロセッサ。
- 複数の命令スレッドをストリーミングする複数のストリームと、
ストリームリソースからの命令を処理する機能リソースセットと、
機能リソースへのストリームのアクセスを管理する命令スケジューラと、
ストリームと結び付けられているプライオリティコードのプライオリティレコードと、
前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラとから構成される、マルチストリーミングプロセッサ。 - プライオリティコントローラが、動的にプライオリティを決定し、処理中にプライオリティレコードを変更する、請求項9に記載のマルチストリーミングプロセッサ。
- プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項9に記載のマルチストリーミングプロセッサ。
- 特定のプライオリティコードが効果的にストリームを無効化し、そのストリームの機能リソースへのアクセスを阻止する、請求項9に記載のマルチストリーミングプロセッサ。
- プライオリティコントローラがプライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化/無効化する、請求項12に記載のマルチストリーミングプロセッサ。
- プライオリティコントローラがプライオリティレコードを変更し、プロセッサ割り込みに従ってストリームを有効化/無効化する、請求項12に記載のマルチストリーミングプロセッサ。
- プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項11に記載のマルチストリーミングプロセッサ。
- 同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持っている複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から構成される、請求項9に記載のマルチストリーミングプロセッサ。
- (a)プライオリティコードを1つまたは複数のストリームに結び付け、コードをプライオリティレコードに保存するステップと、
(b)処理中に命令スケジューラによってプライオリティレコードのプライオリティコードをチェックするステップと、
(c)主にプライオリティコードを基にしてストリームの機能リソースへのアクセスを管理するステップと
(d) 前記命令スケジューラに結合されたプライオリティコントローラによって、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うステップとから構成される、マルチストリーミングプロセッサでのプライオリティによってストリームからの命令を処理する方法。 - プライオリティコントローラにより、処理中のプライオリティレコードのプライオリティコードを動的に変更する、請求項17に記載の方法。
- プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項17に記載の方法。
- 特定のプライオリティコードが効果的にストリームを無効化し、そのストリームが機能リソースにアクセスするのを阻止する、請求項17に記載の方法。
- プライオリティコントローラがプライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化/無効化する、請求項20に記載の方法。
- プライオリティコントローラがプライオリティレコードを変更し、プロセッサ割り込みに対する応答でストリームを有効化/無効化する、請求項20に記載の方法。
- プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項18に記載の方法。
- 同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項17に記載の方法。
- (a)プライオリティコードを1つまたは複数のストリームに結び付け、コードをプライオリティコードに保存するステップと、
(b)処理中に命令スケジューラによってプライオリティレコードのプライオリティコードをチェックするステップと、
(c)主にプライオリティコードを基にしてストリームの機能リソースへのアクセスを管理するステップと、
(d)前記命令スケジューラに結合されたプライオリティコントローラによって、前記結び付けられたストリームの各々の、前記プライオリティコードの前記利用可能な基準に従った動的な構成を行うステップとから構成される、マルチストリーミングプロセッサでのプライオリティによってストリームからの命令を処理する方法。 - 処理中にプライオリティコントローラによってプライオリティレコードのプライオリティコードを動的に変更する、請求項25に記載の方法。
- ステップ(d)において、プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項25に記載の方法。
- 特定のプライオリティコードが効果的にストリームを無効化し、そのストリームの機能リソースへのアクセスを阻止する、請求項25に記載の方法。
- プライオリティコントローラがプライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化/無効化する、請求項28に記載の方法。
- プライオリティコントローラがプライオリティレコードを変更してプロセッサ割り込みに対する応答でストリームを有効化/無効化する、請求項28に記載の方法。
- プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項25に記載の方法。
- 同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項25に記載の方法。
- アプリケーションプログラムとデータを保存するためのメモリと、
メモリと結合され、複数の命令スレッドを処理する複数のストリーム、ストリームからの命令を処理する機能リソースセット、ストリームの機能リソースへのアクセスを管理する命令スケジューラ、ストリームと結び付けられているプライオリティコードのプライオリティレコード、および前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラを持つマルチストリーミングプロセッサとから構成され、
いずれの時点でも、命令スケジューラはプライオリティレコードに従ってストリームの機能リソースに対するアクセスを管理する、コンピュータ。 - プライオリティレコードが1つまたは複数のストリームと結び付けられている1つまたは複数のプライオリティコードから構成され、さらにプライオリティレコードに結合されているプライオリティコントローラからなり、プライオリティコントローラが処理中に1つまたは複数のプライオリティコードを動的に変更するような、プライオリティレコードと結合されたプライオリティコントローラから構成される、請求項33に記載のコンピュータ。
- プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項34に記載のコンピュータ。
- 特定のプライオリティコードがストリームを効果的に無効化し、ストリームの機能リソースへのアクセスを阻止する、請求項34に記載のコンピュータ。
- プライオリティコントローラがプライオリティレコードを変更してオンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化/無効化する、請求項36に記載のコンピュータ。
- プライオリティコントローラがプライオリティレコードを変更し、プロセッサ割り込みに対する応答でストリームを有効化/無効化する、請求項36に記載のコンピュータ。
- プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項34に記載のコンピュータ。
- 同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持っている複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項33に記載のコンピュータ。
- アプリケーションプログラムとデータを保存するためのメモリと、
メモリと結合され、複数の命令スレッドをストリーミングする複数のストリーム、ストリームリソースからの命令を処理する機能リソースセット、ストリームの機能リソースへのアクセスを管理する命令スケジューラ、ストリームと結び付けられているプライオリティコードのプライオリティレコード、および前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った構成を行うプライオリティコントローラを持つマルチストリーミングプロセッサとから構成されるコンピュータ。
、コンピュータ。 - プライオリティコントローラは処理中に動的にプライオリティコードを決定し、それに従いプライオリティレコードを変更する、請求項41に記載されているコンピュータ。
- プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項41に記載のコンピュータ。
- 特定のプライオリティコードがストリームを効果的に無効化し、ストリームの機能リソースへのアクセスを阻止する、請求項41に記載のコンピュータ。
- プライオリティコントローラがプライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化/無効化する、請求項44に記載のコンピュータ。
- プライオリティコントローラがプライオリティレコードを変更してプロセッサ割り込みに対する応答でストリームを有効化/無効化する、請求項44に記載のコンピュータ。
- 前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項41に記載のコンピュータ。
- 同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持っている複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項41に記載のコンピュータ。
- パケットデータネットワークに接続するための少なくとも1つのポートと、
アプリケーションコードを保存するためのメモリと、
メモリと結合され、複数の命令スレッドをストリーミングするための複数のストリーム、ストリームリソースからの命令を処理する機能リソースセット、
ストリームの機能リソースへのアクセスを管理する命令スケジューラ、ストリームと結び付けられているプライオリティコードのプライオリティレコード、および前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラを持つマルチストリーミングプロセッサ、とから構成される、パケットデータネットワーク用のパケットデータルータ。 - プライオリティコントローラは、処理中に動的にプライオリティコードを決定し、それに従いプライオリティレコードを変更する、請求項49に記載のパケットデータルータ。
- 複数のシグナルを別個のスレッドとしてストリーミングする複数のストリームと、
シグナルを処理する機能リソースセットと、
シグナルの機能リソースへのアクセスを管理するスケジューラと、
ストリームと結び付けられているプライオリティコードのプライオリティレコードと、
前記スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラとから構成されるデジタルシグナルプロセッサ。 - プライオリティコントローラは処理中に動的にプライオリティコードを決定し、それに従いプライオリティコードを変更する、請求項51に記載のデジタルシグナルプロセッサ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/216,017 | 1998-12-16 | ||
US09/216,017 US6477562B2 (en) | 1998-12-16 | 1998-12-16 | Prioritized instruction scheduling for multi-streaming processors |
PCT/US1999/029645 WO2000036487A2 (en) | 1998-12-16 | 1999-12-13 | Prioritized instruction scheduling for multi-streaming processors |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002532801A JP2002532801A (ja) | 2002-10-02 |
JP3877527B2 true JP3877527B2 (ja) | 2007-02-07 |
Family
ID=22805346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000588668A Expired - Fee Related JP3877527B2 (ja) | 1998-12-16 | 1999-12-13 | マルチストリーミングプロセッサ向けの優先順位付き命令スケジューリング |
Country Status (6)
Country | Link |
---|---|
US (1) | US6477562B2 (ja) |
EP (1) | EP1141821A4 (ja) |
JP (1) | JP3877527B2 (ja) |
AU (1) | AU2181600A (ja) |
CA (1) | CA2355250A1 (ja) |
WO (1) | WO2000036487A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7836289B2 (en) | 2007-08-24 | 2010-11-16 | Panasonic Corporation | Branch predictor for setting predicate flag to skip predicated branch instruction execution in last iteration of loop processing |
US9436464B2 (en) | 2010-06-11 | 2016-09-06 | Socionect Inc. | Instruction-issuance controlling device and instruction-issuance controlling method |
Families Citing this family (162)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6659939B2 (en) | 1998-11-20 | 2003-12-09 | Intuitive Surgical, Inc. | Cooperative minimally invasive telesurgical system |
US6852107B2 (en) * | 2002-01-16 | 2005-02-08 | Computer Motion, Inc. | Minimally invasive surgical training using robotics and tele-collaboration |
US8527094B2 (en) | 1998-11-20 | 2013-09-03 | Intuitive Surgical Operations, Inc. | Multi-user medical robotic system for collaboration or training in minimally invasive surgical procedures |
US6398726B1 (en) | 1998-11-20 | 2002-06-04 | Intuitive Surgical, Inc. | Stabilizer for robotic beating-heart surgery |
US6951535B2 (en) * | 2002-01-16 | 2005-10-04 | Intuitive Surgical, Inc. | Tele-medicine system that transmits an entire state of a subsystem |
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 |
US7529907B2 (en) | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US7035997B1 (en) | 1998-12-16 | 2006-04-25 | Mips Technologies, Inc. | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors |
US7020879B1 (en) * | 1998-12-16 | 2006-03-28 | Mips Technologies, Inc. | Interrupt and exception handling for multi-streaming digital processors |
JP2001022600A (ja) * | 1999-07-06 | 2001-01-26 | Matsushita Electric Ind Co Ltd | ディジタル信号処理装置 |
US7046686B1 (en) * | 1999-08-17 | 2006-05-16 | Mindspeed Technologies, Inc. | Integrated circuit that processes communication packets with a buffer management engine having a pointer cache |
US6983350B1 (en) | 1999-08-31 | 2006-01-03 | Intel Corporation | SDRAM controller for parallel processor architecture |
US6912586B1 (en) * | 1999-11-12 | 2005-06-28 | International Business Machines Corporation | Apparatus for journaling during software deployment and method therefor |
US7518993B1 (en) * | 1999-11-19 | 2009-04-14 | The United States Of America As Represented By The Secretary Of The Navy | Prioritizing resource utilization in multi-thread computing system |
WO2001045425A1 (en) * | 1999-12-14 | 2001-06-21 | Scientific-Atlanta, Inc. | System and method for adaptive decoding of a video signal with coordinated resource allocation |
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 |
US7051329B1 (en) * | 1999-12-28 | 2006-05-23 | Intel Corporation | Method and apparatus for managing resources in a multithreaded processor |
US6661794B1 (en) * | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
US6952824B1 (en) * | 1999-12-30 | 2005-10-04 | Intel Corporation | Multi-threaded sequenced receive for fast network port stream of packets |
US7480706B1 (en) * | 1999-12-30 | 2009-01-20 | Intel Corporation | Multi-threaded round-robin receive for fast network port |
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 |
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 |
US7082552B2 (en) * | 2000-02-08 | 2006-07-25 | Mips Tech Inc | Functional validation of a packet management unit |
US7032226B1 (en) | 2000-06-30 | 2006-04-18 | Mips Technologies, Inc. | Methods and apparatus for managing a buffer of events in the background |
US7856633B1 (en) | 2000-03-24 | 2010-12-21 | Intel Corporation | LRU cache replacement for a partitioned set associative cache |
US7149883B1 (en) * | 2000-03-30 | 2006-12-12 | Intel Corporation | Method and apparatus selectively to advance a write pointer for a queue based on the indicated validity or invalidity of an instruction stored within the queue |
US7162540B2 (en) * | 2000-05-15 | 2007-01-09 | Catchfire Systems, Inc. | Method and system for prioritizing network services |
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 |
US6408277B1 (en) | 2000-06-21 | 2002-06-18 | Banter Limited | System and method for automatic task prioritization |
US9699129B1 (en) | 2000-06-21 | 2017-07-04 | International Business Machines Corporation | System and method for increasing email productivity |
US8290768B1 (en) | 2000-06-21 | 2012-10-16 | International Business Machines Corporation | System and method for determining a set of attributes based on content of communications |
JP2004518183A (ja) * | 2000-07-14 | 2004-06-17 | クリアウオーター・ネツトワークス・インコーポレイテツド | マルチスレッド・システムにおける命令のフェッチとディスパッチ |
ATE495703T1 (de) | 2000-11-28 | 2011-02-15 | Intuitive Surgical Operations | Endoskopischer stabilisator für das schlagende herz und gefässokklusionsverschluss |
JP2002164790A (ja) * | 2000-11-28 | 2002-06-07 | Canon Inc | 圧縮ストリーム復号化装置及び方法並びに記憶媒体 |
US6675261B2 (en) * | 2000-12-22 | 2004-01-06 | Oblix, Inc. | Request based caching of data store data |
US7085834B2 (en) * | 2000-12-22 | 2006-08-01 | Oracle International Corporation | Determining a user's groups |
US7213249B2 (en) * | 2000-12-22 | 2007-05-01 | Oracle International Corporation | Blocking cache flush requests until completing current pending requests in a local server and remote server |
US7475151B2 (en) * | 2000-12-22 | 2009-01-06 | Oracle International Corporation | Policies for modifying group membership |
US7802174B2 (en) * | 2000-12-22 | 2010-09-21 | Oracle International Corporation | Domain based workflows |
US7415607B2 (en) * | 2000-12-22 | 2008-08-19 | Oracle International Corporation | Obtaining and maintaining real time certificate status |
US7937655B2 (en) * | 2000-12-22 | 2011-05-03 | Oracle International Corporation | Workflows with associated processes |
US8015600B2 (en) | 2000-12-22 | 2011-09-06 | Oracle International Corporation | Employing electronic certificate workflows |
US7581011B2 (en) * | 2000-12-22 | 2009-08-25 | Oracle International Corporation | Template based workflow definition |
US7363339B2 (en) * | 2000-12-22 | 2008-04-22 | Oracle International Corporation | Determining group membership |
US7711818B2 (en) * | 2000-12-22 | 2010-05-04 | Oracle International Corporation | Support for multiple data stores |
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 |
US7165094B2 (en) * | 2001-03-09 | 2007-01-16 | Sonics, Inc. | Communications system and method with non-blocking shared interface |
US6996838B2 (en) * | 2001-06-12 | 2006-02-07 | Scientific Atlanta, Inc. | System and method for media processing with adaptive resource access priority assignment |
US7552261B2 (en) * | 2001-10-12 | 2009-06-23 | Mips Technologies, Inc. | Configurable prioritization of core generated interrupts |
US7487339B2 (en) * | 2001-10-12 | 2009-02-03 | Mips Technologies, Inc. | Method and apparatus for binding shadow registers to vectored interrupts |
US7159216B2 (en) * | 2001-11-07 | 2007-01-02 | International Business Machines Corporation | Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system |
US6976154B1 (en) * | 2001-11-07 | 2005-12-13 | Juniper Networks, Inc. | Pipelined processor for examining packet header information |
US7225256B2 (en) | 2001-11-30 | 2007-05-29 | Oracle International Corporation | Impersonation in an access system |
US7274857B2 (en) | 2001-12-31 | 2007-09-25 | Scientific-Atlanta, Inc. | Trick modes for compressed video streams |
US7069424B2 (en) * | 2002-01-02 | 2006-06-27 | Intel Corporation | Placing front instruction in replay loop to front to place side instruction into execution stream upon determination of criticality |
US7032101B2 (en) * | 2002-02-26 | 2006-04-18 | International Business Machines Corporation | Method and apparatus for prioritized instruction issue queue in a processor |
US7216163B2 (en) * | 2002-05-15 | 2007-05-08 | Oracle International Corporation | Method and apparatus for provisioning tasks using a provisioning bridge server |
US7840658B2 (en) * | 2002-05-15 | 2010-11-23 | Oracle International Corporation | Employing job code attributes in provisioning |
US6920632B2 (en) * | 2002-08-23 | 2005-07-19 | Xyron Corporation | Dynamic multilevel task management method and apparatus |
FR2845224B1 (fr) * | 2002-09-26 | 2004-12-17 | Cit Alcatel | Dispositif ordonnanceur pour un systeme a ressources partagees asymetriquement |
US20040073941A1 (en) * | 2002-09-30 | 2004-04-15 | Ludvig Edward A. | Systems and methods for dynamic conversion of web content to an interactive walled garden program |
AU2003282365A1 (en) * | 2002-11-26 | 2004-06-18 | Mplicity Ltd. | A processor capable of multi-threaded execution of a plurality of instruction-sets |
US20040139441A1 (en) * | 2003-01-09 | 2004-07-15 | Kabushiki Kaisha Toshiba | Processor, arithmetic operation processing method, and priority determination method |
US7278141B2 (en) * | 2003-04-23 | 2007-10-02 | International Business Machines Corporation | System and method for adding priority change value corresponding with a lock to a thread during lock processing |
US7401207B2 (en) * | 2003-04-25 | 2008-07-15 | International Business Machines Corporation | Apparatus and method for adjusting instruction thread priority in a multi-thread processor |
US7360062B2 (en) * | 2003-04-25 | 2008-04-15 | International Business Machines Corporation | Method and apparatus for selecting an instruction thread for processing in a multi-thread processor |
US7401208B2 (en) * | 2003-04-25 | 2008-07-15 | International Business Machines Corporation | Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor |
US20050187913A1 (en) | 2003-05-06 | 2005-08-25 | Yoram Nelken | Web-based customer service interface |
US7966642B2 (en) * | 2003-09-15 | 2011-06-21 | Nair Ajith N | Resource-adaptive management of video storage |
FI20031414A (fi) * | 2003-09-30 | 2005-03-31 | Nokia Corp | Datan siirtäminen langattoman pakettivälitteisen datajärjestelmän matkaviestimessä |
US7882132B2 (en) | 2003-10-09 | 2011-02-01 | Oracle International Corporation | Support for RDBMS in LDAP system |
US7904487B2 (en) | 2003-10-09 | 2011-03-08 | Oracle International Corporation | Translating data access requests |
US7441101B1 (en) * | 2003-12-10 | 2008-10-21 | Cisco Technology, Inc. | Thread-aware instruction fetching in a multithreaded embedded processor |
US7360064B1 (en) * | 2003-12-10 | 2008-04-15 | Cisco Technology, Inc. | Thread interleaving in a multithreaded embedded processor |
US7206922B1 (en) | 2003-12-30 | 2007-04-17 | Cisco Systems, Inc. | Instruction memory hierarchy for an embedded processor |
US20050210472A1 (en) * | 2004-03-18 | 2005-09-22 | International Business Machines Corporation | Method and data processing system for per-chip thread queuing in a multi-processor system |
US7877484B2 (en) * | 2004-04-23 | 2011-01-25 | International Business Machines Corporation | System and method for bulk processing of semi-structured result streams from multiple resources |
US8600217B2 (en) * | 2004-07-14 | 2013-12-03 | Arturo A. Rodriguez | System and method for improving quality of displayed picture during trick modes |
CN100468345C (zh) * | 2004-07-28 | 2009-03-11 | 松下电器产业株式会社 | 冲突解决装置 |
US7418576B1 (en) | 2004-11-17 | 2008-08-26 | Nvidia Corporation | Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations |
US7634773B2 (en) * | 2004-11-24 | 2009-12-15 | Hewlett-Packard Development Company, L.P. | Method and apparatus for thread scheduling on multiple processors |
US7657891B2 (en) | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
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 |
US7752627B2 (en) * | 2005-02-04 | 2010-07-06 | Mips Technologies, Inc. | Leaky-bucket thread scheduler in a multithreading microprocessor |
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 |
US7681014B2 (en) | 2005-02-04 | 2010-03-16 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
US7506140B2 (en) | 2005-02-04 | 2009-03-17 | Mips Technologies, Inc. | Return data selector employing barrel-incrementer-based round-robin apparatus |
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 |
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 |
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 |
US8387052B2 (en) * | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
US9361156B2 (en) | 2005-03-14 | 2016-06-07 | 2236008 Ontario Inc. | Adaptive partitioning for operating system |
CA2538503C (en) * | 2005-03-14 | 2014-05-13 | Attilla Danko | Process scheduler employing adaptive partitioning of process threads |
US7627770B2 (en) * | 2005-04-14 | 2009-12-01 | Mips Technologies, Inc. | Apparatus and method for automatic low power mode invocation in a multi-threaded processor |
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 |
US20070150585A1 (en) * | 2005-12-28 | 2007-06-28 | Microsoft Corporation | Multi-dimensional aggregation on event streams |
CN101449256B (zh) | 2006-04-12 | 2013-12-25 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
EP1862898B1 (en) * | 2006-05-29 | 2011-12-14 | Panasonic Corporation | Information processing device, information processing method, and computer-readable information recording medium recorded with information processing program for thread priority control |
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 |
US7961745B2 (en) | 2006-09-16 | 2011-06-14 | Mips Technologies, Inc. | Bifurcated transaction selector 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 |
US7773621B2 (en) | 2006-09-16 | 2010-08-10 | Mips Technologies, Inc. | Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch |
US7859548B1 (en) | 2006-10-19 | 2010-12-28 | Nvidia Corporation | Offloading cube map calculations to a shader |
EP2523101B1 (en) | 2006-11-14 | 2014-06-04 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US8799902B2 (en) * | 2007-04-09 | 2014-08-05 | Intel Corporation | Priority based throttling for power/performance quality of service |
US8832702B2 (en) * | 2007-05-10 | 2014-09-09 | Freescale Semiconductor, Inc. | Thread de-emphasis instruction for multithreaded processor |
GB2449106B (en) * | 2007-05-10 | 2011-07-27 | Advanced Risc Mach Ltd | Issue policy control within a multi-threaded in-order superscalar processor |
US7676461B2 (en) * | 2007-07-18 | 2010-03-09 | Microsoft Corporation | Implementation of stream algebra over class instances |
US20090037918A1 (en) * | 2007-07-31 | 2009-02-05 | Advanced Micro Devices, Inc. | Thread sequencing for multi-threaded processor with instruction cache |
US7877573B1 (en) | 2007-08-08 | 2011-01-25 | Nvidia Corporation | Work-efficient parallel prefix sum algorithm for graphics processing units |
US7725518B1 (en) * | 2007-08-08 | 2010-05-25 | Nvidia Corporation | Work-efficient parallel prefix sum algorithm for graphics processing units |
US20090044159A1 (en) * | 2007-08-08 | 2009-02-12 | Mplicity Ltd. | False path handling |
US8301605B2 (en) * | 2007-12-17 | 2012-10-30 | International Business Machines Corporation | Managing maintenance tasks for computer programs |
US8300696B2 (en) * | 2008-07-25 | 2012-10-30 | Cisco Technology, Inc. | Transcoding for systems operating under plural video coding specifications |
US20100088325A1 (en) | 2008-10-07 | 2010-04-08 | Microsoft Corporation | Streaming Queries |
US8640133B2 (en) | 2008-12-19 | 2014-01-28 | International Business Machines Corporation | Equal duration and equal fetch operations sub-context switch interval based fetch operation scheduling utilizing fetch error rate based logic for switching between plurality of sorting algorithms |
JP5330507B2 (ja) | 2009-05-18 | 2013-10-30 | パナソニック株式会社 | プロセッサ |
JP5463076B2 (ja) * | 2009-05-28 | 2014-04-09 | パナソニック株式会社 | マルチスレッドプロセッサ |
JP5452125B2 (ja) | 2009-08-11 | 2014-03-26 | クラリオン株式会社 | データ処理装置及びデータ処理方法 |
US9158816B2 (en) | 2009-10-21 | 2015-10-13 | Microsoft Technology Licensing, Llc | Event processing with XML query based on reusable XML query template |
US8589936B2 (en) * | 2010-03-16 | 2013-11-19 | Alcatel Lucent | Method and apparatus for managing reallocation of system resources |
US9402207B2 (en) * | 2010-05-07 | 2016-07-26 | Zte Corporation | Priority based service selection methods and apparatus |
US10228949B2 (en) | 2010-09-17 | 2019-03-12 | Intel Corporation | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
US20120137289A1 (en) * | 2010-11-30 | 2012-05-31 | International Business Machines Corporation | Protecting high priority workloads in a virtualized datacenter |
WO2012135041A2 (en) | 2011-03-25 | 2012-10-04 | Soft Machines, Inc. | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
TWI520070B (zh) | 2011-03-25 | 2016-02-01 | 軟體機器公司 | 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的記憶體片段 |
WO2012135031A2 (en) | 2011-03-25 | 2012-10-04 | Soft Machines, Inc. | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
WO2012162188A2 (en) | 2011-05-20 | 2012-11-29 | Soft Machines, Inc. | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
CN103649931B (zh) | 2011-05-20 | 2016-10-12 | 索夫特机械公司 | 用于支持由多个引擎执行指令序列的互连结构 |
WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
KR101703401B1 (ko) | 2011-11-22 | 2017-02-06 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
US20130179371A1 (en) * | 2012-01-05 | 2013-07-11 | Microsoft Corporation | Scheduling computing jobs based on value |
EP2761436A1 (de) * | 2012-01-31 | 2014-08-06 | Siemens Aktiengesellschaft | Verfahren zum betreiben eines prozessors |
US9632977B2 (en) * | 2013-03-13 | 2017-04-25 | Nxp Usa, Inc. | System and method for ordering packet transfers in a data processor |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9632825B2 (en) | 2013-03-15 | 2017-04-25 | Intel Corporation | Method and apparatus for efficient scheduling for asymmetrical execution units |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
EP2972836B1 (en) | 2013-03-15 | 2022-11-09 | Intel Corporation | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
WO2014151018A1 (en) * | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for executing multithreaded instructions grouped onto blocks |
US9998750B2 (en) | 2013-03-15 | 2018-06-12 | Cisco Technology, Inc. | Systems and methods for guided conversion of video from a first to a second compression format |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US10318294B2 (en) | 2016-06-20 | 2019-06-11 | International Business Machines Corporation | Operation of a multi-slice processor implementing dependency accumulation instruction sequencing |
US11068274B2 (en) * | 2017-12-15 | 2021-07-20 | International Business Machines Corporation | Prioritized instructions in an instruction completion table of a simultaneous multithreading processor |
US11367160B2 (en) * | 2018-08-02 | 2022-06-21 | Nvidia Corporation | Simultaneous compute and graphics scheduling |
US11036515B1 (en) | 2019-06-20 | 2021-06-15 | Marvell Asia Pte, Ltd. | System and method for instruction unwinding in an out-of-order processor |
US10996957B1 (en) * | 2019-06-20 | 2021-05-04 | Marvell Asia Pte, Ltd. | System and method for instruction mapping in an out-of-order processor |
EP4198724A1 (en) * | 2021-12-20 | 2023-06-21 | Airbus SAS | Processing device and method for distributing data to a plurality of processing units |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2845646B2 (ja) | 1990-09-05 | 1999-01-13 | 株式会社東芝 | 並列演算処理装置 |
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. |
US5745778A (en) * | 1994-01-26 | 1998-04-28 | Data General Corporation | Apparatus and method for improved CPU affinity in a multiprocessor system |
US5542088A (en) * | 1994-04-29 | 1996-07-30 | Intergraph Corporation | Method and apparatus for enabling control of task execution |
US5748468A (en) * | 1995-05-04 | 1998-05-05 | Microsoft Corporation | Prioritized co-processor resource manager and method |
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 |
EP1291765B1 (en) * | 1996-08-27 | 2009-12-30 | Panasonic Corporation | Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream |
US5835705A (en) * | 1997-03-11 | 1998-11-10 | International Business Machines Corporation | Method and system for performance per-thread monitoring in a multithreaded processor |
US6212544B1 (en) * | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
US5987492A (en) * | 1997-10-31 | 1999-11-16 | Sun Microsystems, Inc. | Method and apparatus for processor sharing |
US6018759A (en) * | 1997-12-22 | 2000-01-25 | International Business Machines Corporation | Thread switch tuning tool for optimal performance in a computer processor |
-
1998
- 1998-12-16 US US09/216,017 patent/US6477562B2/en not_active Expired - Lifetime
-
1999
- 1999-12-13 CA CA002355250A patent/CA2355250A1/en not_active Abandoned
- 1999-12-13 EP EP99966217A patent/EP1141821A4/en not_active Withdrawn
- 1999-12-13 WO PCT/US1999/029645 patent/WO2000036487A2/en not_active Application Discontinuation
- 1999-12-13 AU AU21816/00A patent/AU2181600A/en not_active Abandoned
- 1999-12-13 JP JP2000588668A patent/JP3877527B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7836289B2 (en) | 2007-08-24 | 2010-11-16 | Panasonic Corporation | Branch predictor for setting predicate flag to skip predicated branch instruction execution in last iteration of loop processing |
US9436464B2 (en) | 2010-06-11 | 2016-09-06 | Socionect Inc. | Instruction-issuance controlling device and instruction-issuance controlling method |
Also Published As
Publication number | Publication date |
---|---|
US20020062435A1 (en) | 2002-05-23 |
WO2000036487A2 (en) | 2000-06-22 |
EP1141821A4 (en) | 2005-06-01 |
CA2355250A1 (en) | 2000-06-22 |
EP1141821A2 (en) | 2001-10-10 |
WO2000036487A3 (en) | 2000-11-23 |
US6477562B2 (en) | 2002-11-05 |
AU2181600A (en) | 2000-07-03 |
JP2002532801A (ja) | 2002-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3877527B2 (ja) | マルチストリーミングプロセッサ向けの優先順位付き命令スケジューリング | |
US7467385B2 (en) | Interrupt and exception handling for multi-streaming digital processors | |
US6389449B1 (en) | Interstream control and communications for multi-streaming digital processors | |
CA2704269C (en) | Uniform synchronization between multiple kernels running on single computer systems | |
US7000048B2 (en) | Apparatus and method for parallel processing of network data on a single processing thread | |
JP4693326B2 (ja) | 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法 | |
EP1247168B1 (en) | Memory shared between processing threads | |
US7873964B2 (en) | Kernel functions for inter-processor communications in high performance multi-processor systems | |
US20060168283A1 (en) | Programmable network protocol handler architecture | |
US20020103847A1 (en) | Efficient mechanism for inter-thread communication within a multi-threaded computer system | |
US20030069920A1 (en) | Multi-threaded packet processing engine for stateful packet processing | |
JP5891284B2 (ja) | コンピュータシステム、カーネルスケジューリングシステム、リソース割当方法及びプロセス実行共有方法 | |
US8352950B2 (en) | Algorithm to share physical processors to maximize processor cache usage and topologies | |
US20060037021A1 (en) | System, apparatus and method of adaptively queueing processes for execution scheduling | |
CN103870337A (zh) | 一种基于seda的esb组件实现方法 | |
JP5676845B2 (ja) | コンピュータシステム、カーネルスケジューリングシステム、リソース割当方法及びプロセス実行共有方法 | |
CA2316643C (en) | Fair assignment of processing resources to queued requests | |
US20060048156A1 (en) | Unified control store | |
JP2007528032A (ja) | Osからのリクエストのリアルタイム・ファイルシステム制御キュー |
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: 20050524 |
|
A521 | Request for written amendment filed |
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: 20060110 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060404 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060411 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060710 |
|
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: 3877527 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 |