JP3877527B2 - マルチストリーミングプロセッサ向けの優先順位付き命令スケジューリング - Google Patents

マルチストリーミングプロセッサ向けの優先順位付き命令スケジューリング Download PDF

Info

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
Application number
JP2000588668A
Other languages
English (en)
Other versions
JP2002532801A (ja
Inventor
ネミロフスキイ,マリオ・デイ
ネミロフスキイ,アドルフオ・エム
サンカー,ナレンドラ
Original Assignee
ミップス テクノロジーズ インコーポレイテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ミップス テクノロジーズ インコーポレイテッド filed Critical ミップス テクノロジーズ インコーポレイテッド
Publication of JP2002532801A publication Critical patent/JP2002532801A/ja
Application granted granted Critical
Publication of JP3877527B2 publication Critical patent/JP3877527B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction 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

【0001】
(発明の分野)
本発明は、デジタルマイクロプロセッサの分野に関わるものであり、特に当分野ではマルチストリーミングプロセッサと呼ばれている、複数のプロセッシングストリームで動作可能な装置に関わるものである。
【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】
Figure 0003877527
【0043】
表1に示されている静的プライオリティスキームの場合、ストリームAは常に最高位のプライオリティを持ち、ストリームAに待機命令が存在しなくなるまで、待機命令はストリームAから機能ユニットに発行される、その時点で、ストリームAよりも1つ低いプライオリティを持つストリームBに機能ユニットへのアクセス権が保証され、ストリームBを待っている命令が存在しなくなるまで、命令がストリームBから発行される。当然、アクセス権がストリームBにシフトしたときにストリームBに命令が存在しないということもありうる。その場合、アクセス権はストリームCに移る(以下同様)。しかし、これには各ストリームのプライオリティが一定、すなわち静的であるという制約がある。
【0044】
多くの場合、特にストリームの数が増えると、静的スキームでは低いプライオリティを持つストリームに割り当てるスレッドの不足という問題が発生することが分かっている。これに対し、機能リソースへのアクセスの公平性を促進するために、現在プライオリティが定期的にストリームの間でシフトするラウンドロビン方式が提案され、実装されている。このラウンドロビン方式を以下の表2に示した。
【表2】
Figure 0003877527
【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つまたは複数の命令スレッドをストリーミングするための複数のストリームと、
    ストリームからの命令を処理する機能リソースセットと、
    機能リソースへのストリームのアクセスを管理する命令スケジューラと、
    ストリームと結び付けられているプライオリティコードのプライオリティレコードと、
    前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラとから構成され、
    いかなる時点でも命令スケジューラは、プライオリティレコードに従って機能リソースへのストリームのアクセスを管理する、マルチストリーミングプロセッサ。
  2. プライオリティレコードが1つまたは複数のストリームと結び付けられている1つまたは複数のプライオリティコードから構成され、さらにプライオリティコントローラが処理中に1つまたは複数のプライオリティコードを動的に変更する、請求項1に記載のマルチストリーミングプロセッサ。
  3. プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項2に記載のマルチストリーミングプロセッサ。
  4. 特定のプライオリティコードがストリームを効果的に無効化し、ストリームの機能リソースへのアクセスを阻止する、請求項2に記載のマルチストリーミングプロセッサ。
  5. プライオリティコントローラがプライオリティレコードを変更してオンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化/無効化する、請求項に記載のマルチストリーミングプロセッサ。
  6. プライオリティコントローラがプライオリティレコードを変更してプロセッサ割り込みに対する応答でストリームを有効化/無効化する、請求項に記載のマルチストリーミングプロセッサ。
  7. プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項3に記載のマルチストリーミングプロセッサ。
  8. 同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項2に記載のマルチストリーミングプロセッサ。
  9. 複数の命令スレッドをストリーミングする複数のストリームと、
    ストリームリソースからの命令を処理する機能リソースセットと、
    機能リソースへのストリームのアクセスを管理する命令スケジューラと、
    ストリームと結び付けられているプライオリティコードのプライオリティレコードと、
    前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラとから構成される、マルチストリーミングプロセッサ。
  10. プライオリティコントローラが、動的にプライオリティを決定し、処理中にプライオリティレコードを変更する、請求項に記載のマルチストリーミングプロセッサ。
  11. プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項に記載のマルチストリーミングプロセッサ。
  12. 特定のプライオリティコードが効果的にストリームを無効化し、そのストリームの機能リソースへのアクセスを阻止する、請求項に記載のマルチストリーミングプロセッサ。
  13. プライオリティコントローラがプライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化/無効化する、請求項1に記載のマルチストリーミングプロセッサ。
  14. プライオリティコントローラがプライオリティレコードを変更し、プロセッサ割り込みに従ってストリームを有効化/無効化する、請求項1に記載のマルチストリーミングプロセッサ。
  15. プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項1に記載のマルチストリーミングプロセッサ。
  16. 同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持っている複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から構成される、請求項に記載のマルチストリーミングプロセッサ。
  17. (a)プライオリティコードを1つまたは複数のストリームに結び付け、コードをプライオリティレコードに保存するステップと、
    (b)処理中に命令スケジューラによってプライオリティレコードのプライオリティコードをチェックするステップと、
    (c)主にプライオリティコードを基にしてストリームの機能リソースへのアクセスを管理するステップと
    (d) 前記命令スケジューラに結合されたプライオリティコントローラによって、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うステップとから構成される、マルチストリーミングプロセッサでのプライオリティによってストリームからの命令を処理する方法。
  18. プライオリティコントローラにより、処理中のプライオリティレコードのプライオリティコードを動的に変更する、請求項1に記載の方法。
  19. プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項1に記載の方法。
  20. 特定のプライオリティコードが効果的にストリームを無効化し、そのストリームが機能リソースにアクセスするのを阻止する、請求項1に記載の方法。
  21. プライオリティコントローラがプライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化/無効化する、請求項2に記載の方法。
  22. プライオリティコントローラがプライオリティレコードを変更し、プロセッサ割り込みに対する応答でストリームを有効化/無効化する、請求項2に記載の方法。
  23. プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項18に記載の方法。
  24. 同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項1に記載の方法。
  25. (a)プライオリティコードを1つまたは複数のストリームに結び付け、コードをプライオリティコードに保存するステップと、
    (b)処理中に命令スケジューラによってプライオリティレコードのプライオリティコードをチェックするステップと、
    (c)主にプライオリティコードを基にしてストリームの機能リソースへのアクセスを管理するステップと、
    (d)前記命令スケジューラに結合されたプライオリティコントローラによって、前記結び付けられたストリームの各々の、前記プライオリティコードの前記利用可能な基準に従った動的な構成を行うステップとから構成される、マルチストリーミングプロセッサでのプライオリティによってストリームからの命令を処理する方法。
  26. 処理中にプライオリティコントローラによってプライオリティレコードのプライオリティコードを動的に変更する、請求項2に記載の方法。
  27. ステップ(d)において、プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項2に記載の方法。
  28. 特定のプライオリティコードが効果的にストリームを無効化し、そのストリームの機能リソースへのアクセスを阻止する、請求項2に記載の方法。
  29. プライオリティコントローラがプライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化/無効化する、請求項28に記載の方法。
  30. プライオリティコントローラがプライオリティレコードを変更してプロセッサ割り込みに対する応答でストリームを有効化/無効化する、請求項28に記載の方法。
  31. プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項2に記載の方法。
  32. 同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持つ複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項2に記載の方法。
  33. アプリケーションプログラムとデータを保存するためのメモリと、
    メモリと結合され、複数の命令スレッドを処理する複数のストリーム、ストリームからの命令を処理する機能リソースセット、ストリームの機能リソースへのアクセスを管理する命令スケジューラ、ストリームと結び付けられているプライオリティコードのプライオリティレコード、および前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラを持つマルチストリーミングプロセッサとから構成され、
    いずれの時点でも、命令スケジューラはプライオリティレコードに従ってストリームの機能リソースに対するアクセスを管理する、コンピュータ。
  34. プライオリティレコードが1つまたは複数のストリームと結び付けられている1つまたは複数のプライオリティコードから構成され、さらにプライオリティレコードに結合されているプライオリティコントローラからなり、プライオリティコントローラが処理中に1つまたは複数のプライオリティコードを動的に変更するような、プライオリティレコードと結合されたプライオリティコントローラから構成される、請求項3に記載のコンピュータ。
  35. プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項3に記載のコンピュータ。
  36. 特定のプライオリティコードがストリームを効果的に無効化し、ストリームの機能リソースへのアクセスを阻止する、請求項3に記載のコンピュータ。
  37. プライオリティコントローラがプライオリティレコードを変更してオンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化/無効化する、請求項36に記載のコンピュータ。
  38. プライオリティコントローラがプライオリティレコードを変更し、プロセッサ割り込みに対する応答でストリームを有効化/無効化する、請求項36に記載のコンピュータ。
  39. プライオリティコントローラが前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項3に記載のコンピュータ。
  40. 同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持っている複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項3に記載のコンピュータ。
  41. アプリケーションプログラムとデータを保存するためのメモリと、
    メモリと結合され、複数の命令スレッドをストリーミングする複数のストリーム、ストリームリソースからの命令を処理する機能リソースセット、ストリームの機能リソースへのアクセスを管理する命令スケジューラ、ストリームと結び付けられているプライオリティコードのプライオリティレコード、および前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った構成を行うプライオリティコントローラを持つマルチストリーミングプロセッサとから構成されるコンピュータ。
    、コンピュータ。
  42. プライオリティコントローラは処理中に動的にプライオリティコードを決定し、それに従いプライオリティレコードを変更する、請求項4に記載されているコンピュータ。
  43. プライオリティコードの変更が、キャッシュ及びメモリ要求の履歴と、リソースの利用率とを含む、前記利用可能な基準に従って、実施される、請求項4に記載のコンピュータ。
  44. 特定のプライオリティコードがストリームを効果的に無効化し、ストリームの機能リソースへのアクセスを阻止する、請求項4に記載のコンピュータ。
  45. プライオリティコントローラがプライオリティレコードを変更し、オンチップイベント、処理統計情報、または外部入力に対する応答でストリームを有効化/無効化する、請求項44に記載のコンピュータ。
  46. プライオリティコントローラがプライオリティレコードを変更してプロセッサ割り込みに対する応答でストリームを有効化/無効化する、請求項44に記載のコンピュータ。
  47. 前記命令スケジューラによってセットされたアクティブストリームの現在のプライオリティに従ってプライオリティコードを変更する、請求項4に記載のコンピュータ。
  48. 同点決着機能、すなわちプライオリティレコードで同一のプライオリティを持っている複数のストリームに対して機能リソースへのアクセスを解決する同点決着機能から更に構成される、請求項4に記載のコンピュータ。
  49. パケットデータネットワークに接続するための少なくとも1つのポートと、
    アプリケーションコードを保存するためのメモリと、
    メモリと結合され、複数の命令スレッドをストリーミングするための複数のストリーム、ストリームリソースからの命令を処理する機能リソースセット、
    ストリームの機能リソースへのアクセスを管理する命令スケジューラ、ストリームと結び付けられているプライオリティコードのプライオリティレコード、および前記命令スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラを持つマルチストリーミングプロセッサ、とから構成される、パケットデータネットワーク用のパケットデータルータ。
  50. プライオリティコントローラは、処理中に動的にプライオリティコードを決定し、それに従いプライオリティレコードを変更する、請求項49に記載のパケットデータルータ。
  51. 複数のシグナルを別個のスレッドとしてストリーミングする複数のストリームと、
    シグナルを処理する機能リソースセットと、
    シグナルの機能リソースへのアクセスを管理するスケジューラと、
    ストリームと結び付けられているプライオリティコードのプライオリティレコードと、
    前記スケジューラに結合されており、前記結び付けられたストリームの各々の、前記プライオリティコードの利用可能な基準に従った動的な構成を行うプライオリティコントローラとから構成されるデジタルシグナルプロセッサ。
  52. プライオリティコントローラは処理中に動的にプライオリティコードを決定し、それに従いプライオリティコードを変更する、請求項5に記載のデジタルシグナルプロセッサ。
JP2000588668A 1998-12-16 1999-12-13 マルチストリーミングプロセッサ向けの優先順位付き命令スケジューリング Expired - Fee Related JP3877527B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (2)

* Cited by examiner, † Cited by third party
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