JP2004206692A - マルチスレッド化プロセッサ・システム上での実行のために、スレッドについての優先順位値を決定する方法および装置 - Google Patents

マルチスレッド化プロセッサ・システム上での実行のために、スレッドについての優先順位値を決定する方法および装置 Download PDF

Info

Publication number
JP2004206692A
JP2004206692A JP2003393063A JP2003393063A JP2004206692A JP 2004206692 A JP2004206692 A JP 2004206692A JP 2003393063 A JP2003393063 A JP 2003393063A JP 2003393063 A JP2003393063 A JP 2003393063A JP 2004206692 A JP2004206692 A JP 2004206692A
Authority
JP
Japan
Prior art keywords
priority
value
thread
rating
external
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.)
Pending
Application number
JP2003393063A
Other languages
English (en)
Inventor
Andreas Doering
アンドレアス・デーリング
Maria Gabrani
マリア・ガブラニ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2004206692A publication Critical patent/JP2004206692A/ja
Pending 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】マルチスレッド化プロセッサ・システム上での実行のために、スレッドについての優先順位値を決定する方法および装置を提供すること。
【解決手段】優先順位ベース格付けおよびアプリケーション優先順位格付けに依存する優先順位値が決定される。優先順位ベース格付けは、他のスレッドに対するそのスレッドの優先順位格付けを表す。アプリケーション優先順位格付けは、スレッドのアプリケーションから見たスレッドの優先順位格付けを表す。
【選択図】図2

Description

本発明は、マルチスレッド化プロセッサ・システム上での実行のために、スレッドについての優先順位値を決定する方法および装置に関する。
ハードウェア・マルチスレッド化をサポートするプロセッサまたはプロセッサ・コア(MTP=マルチスレッド化プロセッサ)では、いくつかのスレッドを同時に実行することができる。以下では、スレッドという用語を、技術的な術語によればルーチン、1組の命令、タスク、またはプロセスとも呼ばれるものに対する同義語として用いる。キャッシュ・ミス、コプロセッサの使用、または同期機構のために、スレッドの一部が、限られた時間待機しなければならないことがある。この時間では、こうしたスレッドからの命令は実行することができない。通常、残りのスレッドが、演算論理装置またはメモリ・インターフェースなどの処理資源/実行パイプラインを求めて競合する。スレッドは異なる実行パイプで並列に実行することができ、競合は、これらの実行パイプのうち1つまたは複数に対するものである。この競合は、次に命令を実行する1つまたは複数のスレッドを選択することによって解決しなければならない。
そのようなプロセッサに命令の発行を制御する方式が存在しない場合、実行することができる単一スレッドは、単一スレッド・プロセッサ・システム上で実行するよりも低速となる。最近は、リアル・タイム制約のあるシステム、例えばネットワークやメディア・プロセッサに対してもMTPが使用されている。こうした分野では、スレッドの実行時間要件が、いくつかの問題点に応じて変動する可能性がある。したがって、スレッド実行の差別化を保証することが重要である。その目的に対して、スレッドから命令を発行する方式を制御する機構は高価である。
文献で調査され、議論されている現在の方法は、主にマルチスレッド化プロセッサの全スループットを向上させることに的を絞っている。
米国6105127号は、マルチスレッド化命令ストリームを実行するためのマルチスレッド化プロセッサを開示している。保持ユニットで保持される優先順位レベルに従って、同時に要求を発行する2つ以上の命令によって指定される機能単位にどの命令を発行するかを決定するための制御ユニットが設けられる。
米国6212544B1号は、少なくとも2つのスレッド間の切換えを制御する方法を開示している。優先順位は、低、中、高の3つの優先順位値のうちの1つのためのスレッド優先順位フィールドを有するスレッド状態レジスタによって取り込まれる。
米国6477562B2号は、マルチストリーミング・プロセッサ用の命令スケジューリングを導入している。優先順位コントローラが、命令の選択、およびある資源へのアクセス権についての優先順位を生成する。
多くのシステムでは、様々な重要度のタスクが、プロセッサのスレッドに割り当てられる。そのような状況では、最も重要なタスクが最初に、すなわち高速に実行されることを保証するように命令選択プロセスを制御しなければならない。同時に、命令選択を制御する労力が非常に小さくなるべきである。そのことは、アプリケーションについての処理能力の合計量に影響を及ぼし、具体的には低下させるからである。
米国6105127号 米国6212544B1号 米国6477562B2号
したがって、その時点での実行の真の必要を考慮に入れてスレッドの優先順位値を定義する、マルチスレッド化プロセッサ・システム上での実行のために、スレッドについての優先順位値を決定する方法および装置を提供することが望ましい。本発明の別の目的は、優先順位値の決定を最小のコストかつ高速で実施することである。
本発明の一態様によれば、マルチスレッド化プロセッサ・システム上での実行のために、スレッドについての優先順位値を決定する方法が提供される。この方法は、優先順位ベース格付けを受け取ること、スレッドのアプリケーションからアプリケーション優先順位格付けを受け取ること、およびベース格付けおよびアプリケーション優先順位格付けに依存する優先順位値を決定することを含む。
評価すべきスレッドは、マルチスレッド化プロセッサ・システム上での実行を待機するスレッドのキュー内のスレッドでよく、または既に実行を開始したが再評価することができるスレッドでよく、最終的に、他の待ちスレッド、さらには実行スレッドの優先順位値の変化に従って再ランク付けすることができ、したがってリセットして待ちスレッドのキューに入れることができ、または実行を続行することができる。
スレッドについての正当化される優先順位レベルは、スレッドのアプリケーション自体からのスレッドの優先順位評価に依存する。スレッドのアプリケーションは、単一スレッドの個々の要件についての固有の知識を有する。このようなアプリケーション優先順位格付けは、スレッドの、関連付けられたアプリケーションから送達することができ、またはスレッド自体に添付される種類のものでよい。好ましくは、優先順位格付け情報の追加のソースは、システム中の全スレッドの様々な相対的要件についての固有の知識を有するマルチスレッド化プロセッサ・システムである。マルチスレッド化プロセッサ制御ユニット、例えばそのオペレーティング・システムまたは何らかの他の制御論理が、優先順位ベース値を本発明の装置に送達し、または本発明の方法の入力として送達するためのマルチスレッド化プロセッサ・システムの好ましいソースである。しかし、他のプロセッサ・システムもマルチスレッド化プロセッサ・システムのスレッドを相対的に格付けすることができる。
優先順位値は、最終的には、関連する他の優先順位値を有する他のスレッドとの間でスレッドのランク付けを可能にし、具体的にはスレッドについてのアクセス時間および資源を決定するものであり、優先順位ベース値およびアプリケーション優先順位値に基づく。このことは、少なくともそうした2つの格付けが何らかの形で優先順位値に影響を及ぼすことを意味する。
本発明は多くの利点を提示する。スレッド優先順位付け方法および装置は、明確かつ独自の方式で、スレッドの優先順位に影響を及ぼす様々なソースからの入力格付けを考慮する。こうした格付けは、入力ソースの観点から行われる。ソースは、ソースがアクセスを有する様々な情報に基づいて様々なビューを取るように選択される。
こうしたソースの入力値は、スレッド間の差別化を相対的に得ることができるように構築される。これにより、決定プロセスおよび入力更新プロセスが大いに単純化される。
命令選択のために使用される優先順位は、いくつかのソースから、最小限のソフトウェア/ハードウェア労力で修正することができる。
アプリケーション・コードは、その優先順位全体と、それが実行されるハードウェア状況とは無関係である。これにより、プログラム・コード・サイズおよび命令数が削減される。
提案の発明を、多数のハードウェア・スレッドと、スレッド優先順位への寄与の広範な分解能(resolution)と共に使用することができる。
様々なソースの、各スレッドの優先順位に対する影響は、ソースの寄与の修正ごとに制御プログラムの呼出しを行うことなく、制御ユニット(例えばオペレーティング・システム)で制御することができる。
優先順位ベース格付けは、他のスレッドに対するスレッドの優先順位格付けを表すことが好ましい。他のスレッドのベース優先順位値は通常、あるスレッドのベース優先順位値の決定に影響を及ぼす。マルチスレッド化プロセッサ・システムは、スレッドのベース優先順位値を、他のスレッドのベース優先順位値に対して評価する。アプリケーション優先順位格付けは、スレッドのアプリケーションから見たスレッドの優先順位格付けを表すことが好ましい。アプリケーションは、例えば格付けすべきスレッドが、アプリケーション全体のうちの重要な部分であり、または他のスレッドで表されるアプリケーションの他の部分と比べて非常に迅速に処理しなければならないことを認識することがある。そのような場合、アプリケーションは、このスレッドに高いアプリケーション優先順位レベルを与える。
優先順位ベース格付けは通常、優先順位ベース値によって表され、アプリケーション優先順位格付けは通常、アプリケーション優先順位値によって表される。そのような値は通常、装置が注意を向けたときにそれぞれのレジスタに格納される。
本発明の好ましい実施形態によれば、優先順位ベース値とアプリケーション優先順位値とを加算することによって主値が得られる。一実施形態では、この主値は優先順位値として使用することができる。別の実施形態では、この主値が、優先順位値の基となる暫定値として使用される。主値は、プロセッサおよびアプリケーションの、スレッドの優先順位格付けを反映している。
本発明の別の好ましい実施形態では、優先順位最大値が導入され、優先順位最大値および優先順位ベース値が、優先順位値についての1組の初期境界を定義する。優先順位最大値は、プロセッサ・システムから送達することができ、したがって優先順位ベース値およびアプリケーション優先順位値に基づく優先順位値が通常は超過すべきでない最大値が定義される。優先順位最大値はまた、優先順位ベース値の影響を受ける装置で計算することもできる。次いで、マルチスレッド化プロセッサ・システムから優先順位ベース値を転送するだけでよい。優先順位最大値は、異なるスレッドについて変更することができる。さらに、優先順位最大値および優先順位ベース値によって定義され、優先順位最大値および優先順位ベース値を境界として有する範囲は、スレッドごとに異なる拡張を有することができる。
好ましくは、第1下位値は、主値と最大値のうち小さい方の値として決定される。これは、優先順位ベース値とアプリケーション優先順位値の和が優先順位最大値を超過するときであっても、与えられた優先順位最大値に優先順位値を制限するためである。優先順位最大値の導入は、スレッドが処理能力を完全には限定せず、したがって他の待ちスレッドを窮乏(starve)させないことを保証するのに用いられる。一実施形態では、第1下位値は、考慮するスレッドについての優先順位値としても使用することができる。
本発明の別の好ましい実施形態では、スレッドの外部優先順位格付けが受領され、外部優先順位格付けに依存する優先順位値が決定される。外部入力は、考慮する価値がある。外部寄与は、異なるビューを取り、アプリケーションまたはマルチスレッド化プロセッサ・システムとは異なる考慮に基づくので、優先順位格付けの別の独立なソースを表す。入力は特定の外部要求に限定されないが、いくつかの外部寄与に拡張することができる。
好ましくは、外部優先順位格付けは、外部の必要を考慮するスレッドの優先順位格付けを表し、外部優先順位格付けは外部優先順位値によって表される。
別の好ましい実施形態では、外部制限値が定義され、外部優先順位値と外部制限値のうち小さい方の値である第2下位値が決定される。
この実施形態では、外部制限値は、スレッド、具体的にはその外部優先順位格付けが他のスレッドについての処理能力を完全には限定せず、したがって他の待ちスレッドを窮乏させないことを保証するのに使用される。好ましくは、外部制限値は装置自体で設定され、またはマルチスレッド化プロセッサ・システムによって伝送することができる。
好ましくは、優先順位値は、第1下位値と第2下位値の関数として得られる。例えば、これらの値を加算し、または最大値関数の対象とすることができる。このようにして優先順位値を決定するとき、優先順位値は、優先順位ベース値と、優先順位最大値に外部制限値を加えたものとの間の値の範囲に先験的に限定される。上限は、アプリケーションおよびプロセッサ・システムの格付けだけを考慮した場合の実施形態に対して拡張される。追加の外部格付けは、優先順位値についての範囲の、より大きい上限を可能にするだけの価値がある可能性がある。
本発明の別の好ましい実施形態では、優先順位値の特定の計算に関係する値のうち少なくとも1つが変化したときに優先順位値が新たに求められる。これにより、変更に応答し、それに応じて優先順位レベルを適合させる方法および装置が作成される。
好ましくは、優先順位値がスレッドごとに求められ、スレッドが、それぞれの優先順位値に従ってランク付けされる。異なるスレッドの優先順位値はまだ数値である。こうした値をランク付けに変換するために、ソータを使用することが好ましい。次いで、マルチスレッド化処理システムは、ランク付けに従ってスレッドを処理することができる。
本発明の別の態様によれば、マルチスレッド化システム上での実行のために、各スレッドについての値を決定する装置が提供される。この装置は、プロセッサ・システムから送達された優先順位ベース値を保管するためのベース値レジスタと、スレッドのアプリケーションから送達された優先順位ベース値およびアプリケーション優先順位値に依存する優先順位値を決定するための評価ユニットとを備える。
評価ユニットは、ハードウェアまたはソフトウェア、あるいはそれらの組合せとして実装することができ、または任意のその他の適切な実装として実装することができるが、具体的にはネットワーク処理の分野で使用したときに、コストが限定され、応答および速度が迅速であるため、ハードウェアの形での実装が好ましい。
本発明の装置およびその実施形態の利点は、前述の本発明の方法およびその実施形態の利点に付随する。
本発明の別の態様によれば、装置のプロセッサ・ユニット中にロードされたときに、前述の方法または方法の実施形態のうちのいずれか1つを実行するためのプロセッサ・ユニットを構成するコンピュータ・プログラム・コードを含むコンピュータ・プログラム要素が提供される。
現在のところ好ましいが、それでも本発明による例示的な実施形態である以下の詳細な説明を添付の図面と一緒に参照することにより、本発明およびその実施形態をより完全に理解されよう。
それぞれの図は、類似または同一の内容を有する要素を表す同一の参照番号を含むことがある。
図1に、装置1および関連するマルチスレッド化プロセッサ・システム2のブロック図を示す。
提案の装置1は、スレッド・ランクrをマルチスレッド化プロセッサ・システム2の命令選択要素22に供給し、かつ制御ユニット21、実行パイプライン23、および外部ソース3から値を受け取ることにより、少なくとも制御ユニット21およびソフトウェアを有するマルチスレッド化プロセッサ・システム2と通信する。外部ソース3は、外部優先順位値e_iを装置1に供給し、制御ユニット21は、優先順位ベース値b_iおよび最大優先順位値m_iを装置1に供給する。アプリケーション優先順位格付けs_iが実行パイプライン23によって供給される。実行パイプライン23は、ロード/ストア・コマンドLSによってスレッドのアプリケーションの優先順位格付けs_iを装置1に通信する。制御ユニット21から装置1への値b_iおよびm_iの転送は、装置1内のレジスタを用いて実施することができる。マルチスレッド化プロセッサ・システム2は、「ロード」や「ストア」、または専用レジスタへの「アクセス」のような既存の命令を使用することによって装置1と通信する。例えば、図示するマルチスレッド化プロセッサ・システム2がPowerPCタイプのプロセッサである場合、専用命令を介してアクセスされる特殊機能レジスタまたはデバイス制御レジスタを使用することができる。そうでない場合、制御レジスタをメモリにマッピングすることによって通信を行うことができる。制御ユニットは外部エンティティまたはプロセッサ上のソフトウェア・プロセスでよいことに留意されたい。
装置1は、マルチスレッド化プロセッサ・システム2に組み込むことができ、またはプロセッサ・コアの一体部分を形成し、またはプロセッサ・コアの一部とすることができ、または別々に実装してインターフェース、例えば上記で論じたインターフェースを介して結合することができる。
図1のマルチスレッド化プロセッサ・システム2の右半分は、スレッドの処理を表す。実行のフロント部24で始まり、次いで命令選択ユニット22がそれぞれの情報を供給し、実行パイプライン23が実行を実施する。
この実施形態では、スレッドに対する独立な優先順位格付けを装置に転送する3つの別々のソースが考慮され、この3つの優先順位格付けが、装置によってスレッドに割り振られる優先順位値(物理的優先順位とも呼ばれる)に影響を及ぼす。この3つのソースは以下のものである。
単一スレッドの個々の要件についての固有の知識を有するアプリケーション自体。
システム中のすべてのスレッドの様々な相対的要件についての固有の知識を有する、例えばオペレーティング・システムの一部としてのプロセッサ制御ユニット。
外部要求のステータスについての固有の知識を有する外部入力。この外部入力は、いくつかの外部寄与に対して広げることができる。
スレッドの通常の実行が、スレッドから見て中間のアプリケーション優先順位値s_iを使用すると仮定する。ある状況では、スレッドは後の実行がより小さいアプリケーション優先順位値s_iのものであることを認識することができる。これについての例は、スレッドが、後の時点で必要であり、その時点までに、行われる何らかの作用を有するスレッドが外部資源を要求するときである。この状況では、スレッドを低いアプリケーション優先順位値s_iで実行することが好ましく、したがって通常は、通常のアプリケーション優先順位値iで最初に実行するのではなく、より低い命令速度で実行され、要求した項目を後で待つ。これとは対照的に、スレッドが重要な資源、例えば頻繁に使用されるデータ・オブジェクトのセマフォーを占有したとき、その優先順位をより高いアプリケーション優先順位値a_iに増加させて、この資源に対する圧力を低減することができる。
すべてのスレッドが同じコードを実行し、優先順位修正のオーバヘッドを低減することを可能にするため、スレッドの優先順位寄与にアクセスする共通の方式が望ましい。これは、既存の命令を介してアクセスされる専用レジスタ、例えばPowerPCプロセッサ中の特殊機能レジスタ(SFR)またはデバイス制御レジスタ(DCR)を使用することによって実施される。この考えは、すべてのスレッドが同じレジスタ番号を使用し、ハードウェアが、後で命令を実行したスレッドの識別を組み込むというものである。
しかし、スレッドは通常、同じプロセッサ上で他のどのスレッドが実行されるかを認識しない。したがって、重要度がより高いまたは低いタスクを有するスレッドが存在する可能性がある。これを考慮に入れるため、マルチスレッド化プロセッサ上でスレッドを制御する制御ユニットは、スレッドごとに優先順位ベース値b_iおよび最大優先順位値m_iを設定する。最大優先順位値m_iは、スレッドが他のスレッドを窮乏させないことを保証するのに使用することができる。優先順位ベース値b_iは、マルチスレッド化プロセッサ・システムの制御ユニットで割り当てられる相対的スレッド優先順位の平衡を保つ際の助けとなる。
図2に、そのような優先順位ベース値b_i、そのような最大優先順位値m_i、およびそのようなアプリケーション優先順位値s_iが供給される装置1の略図を示す。優先順位ベース値b_iはベース値レジスタ11内に格納され、最大優先順位値m_iは最大値レジスタ12内に格納される。アプリケーション優先順位値s_iも図2のレジスタ(図示せず)に格納することができる。
装置1は、加算器141および最小値関数142を含む評価ユニット14をさらに備える。優先順位ベース値b_iおよびアプリケーション優先順位値s_iが加算され、主値m_vとなる。ある実施形態では、主値m_vはスレッドについての優先順位値とすることもできる。対照的に、この場合は、主値をさらに処理することが好ましい。最小値関数142の出力は、第1最小値f_vを送達する。第1最小値f_vは、f_v=min(m_i,b_i+s_i)である。
ある実施形態では第1最小値を物理的優先順位とすることができるが、物理的優先順位を決定する前に、第3の寄与が考慮される。この第3の優先順位評価は、外部ソースから来る。外部ソースの一例は同期コプロセッサである。考慮されるスレッドによって占有されるセマフォーを別のスレッドが要求したことを外部ソースが検出したとき、外部ソースは、通常の境界m_iを超えて一時的に優先順位をブーストすることができる。さらに、制限因子を導入することができる。この制限因子は、外部制限値レジスタ13に格納される外部制限値a_iである。
図2には図示していない関連するレジスタにも格納することができる、外部ソースから送達される値がe_iである場合、優先順位値全体への寄与は、第2最小値s_v=min(a_i,e_i)をその出力で供給する最小値関数143によって決定される。次いで第2最小値s_vは、加算器144によって最小値f_vに加えられる。その結果は優先順位値p_oである。このようにしてスレッドが達することができる最大優先順位値p_oはm_i+a_iであることに留意されたい。
いくつかの外部ソースを使用する場合、それらを加算することにより、またはそれらの最大値を使用することにより、それらの値を組み合わせることができる。
図2は、ある単一スレッドについての優先順位値だけを計算するためのレジスタ11から13および評価ユニット14を示すことに留意されたい。評価すべきスレッドがn個の場合、図2の点線で示すように、これらの要素をn倍設けなければならない。
このプロセスでは、ソースからの値の範囲を、物理的優先順位の有する値の範囲よりも広くすることが可能であることが望ましい。したがって、物理的優先順位についての最終的な値を生成するのにソート・ステップが必要となる可能性がある。ソータ15は、優先順位値p_oからランク付けを生成することができる。ソータ出力は、優先順位値のランク付けrである。ソータ15は増分式に動作することができる。すなわち、ソータ15は、入力のうち1つが変化するごとに、ソータ15の出力rを再構成する。このようにして、ソータ15のエリア・コストが削減される。
前述のように、加算器および2つの「最小」回路を含む構造は、プロセッサのハードウェア状況ごとに反復されることが好ましい。加算器、最小値関数、およびレジスタのような、ソータ15の上のすべての構成要素は、精度を決定する共通幅wのビット・ベクトルに対して働くことができる。精度に対する適切な値は、意図するアプリケーションおよびスレッドの数に依存する。8から16の範囲が、処理するスレッドの好ましい数である。ソータ15は、入力の相対的サイズを保持するが、最小のサイズの出力ビット・ベクトルを生成する。例えば、8個のスレッドに対しては、各スレッドの優先順位値を表す3ビット・ベクトルで十分である。
図3に、本発明の実施形態による別の装置の略図を示す。この実施形態は、ベース優先順位値b_iからのオフセットとして最大優先順位値m_iを生成する。これは、ベース値レジスタ11への優先順位ベース値b_iの書込みおよび最大値レジスタ12へのオフセット値v1の書込みの結果、加算器145によって優先順位最大値m_i=b_i+v1が得られることを意味する。同じことがa_iについても当てはまる。別のオフセット値v2が外部制限値レジスタ13に書き込まれ、加算器146によって優先順位ベース値b_iに加えられ、その結果、外部制限値a_iが得られる。
このような挙動は、最小ブロックのそれぞれの前に加算器を挿入することによって得ることができる。
図2および図3では、すべてのレジスタ11、12、13が2回描かれている。これは、非常に高速に切り換えることができるレジスタのいくつかの組を含む装置の提案の機能を示す。このようにして、緊急の状況で非常に迅速に適切な構成を確立することができ、通常のオペレーションに対して使用される以前の構成が保持され、エラー状態が解決された後に再び活動化することができる。エラー処理が改善される。ネットワーク・プロセッサでは、しばしば多数の他のプロセッサを指示する制御点が存在する。例示的なシナリオは、一部またはすべてのプロセッサについての通常オペレーション・レジスタ・セットと例外オペレーション・レジスタ・セットの間の制御点プロセッサ切換えである。
しかし、ある共通条件付き加算器147がレジスタに対する書込み経路および読取り経路で使用される場合、より安価な解決策が予想される。オフセット値vを供給する書込み経路を、続く図4に示す。
まとめとして、本発明の構成に関して以下の事項を開示する。
(1)マルチスレッド化プロセッサ・システム上での実行のために、スレッドについての優先順位値を決定する方法であって、
優先順位ベース格付けを受け取ること、
スレッドのアプリケーションからアプリケーション優先順位格付けを受け取ること、および
前記優先順位ベース格付けおよび前記アプリケーション優先順位格付けに依存する前記優先順位値を決定することを含む方法。
(2)優先順位ベース格付けが、他のスレッドに対する前記スレッドの優先順位格付けを表し、
前記アプリケーション優先順位格付けが、前記スレッドのアプリケーションから見た前記スレッドの優先順位格付けを表す上記(1)に記載の方法。
(3)前記優先順位ベース格付けが優先順位ベース値によって表され、前記アプリケーション優先順位格付けがアプリケーション優先順位値によって表される上記(1)または(2)に記載の方法。
(4)前記優先順位値が、定義された範囲に限定される上記(1)ないし(3)のいずれか一項に記載の方法。
(5)前記優先順位ベース値が、前記範囲の下限を定義する上記(4)に記載の方法。
(6)優先順位最大値が、前記範囲の上限を定義する上記(4)または(5)に記載の方法。
(7)前記優先順位ベース値と前記アプリケーション優先順位値を加算することによって主値を受け取ることを含む上記(3)に記載の方法。
(8)前記主値と前記最大値のうち小さい方の値である第1下位値を決定することを含む上記(7)に記載の方法。
(9)前記スレッドの外部優先順位格付けを受け取ること、および
前記外部優先順位格付けに依存する前記優先順位値を決定することを含む上記(1)ないし(8)のいずれか一項に記載の方法。
(10)前記外部優先順位格付けが、外部の必要を考慮する前記スレッドの優先順位格付けを表し、
前記外部優先順位格付けが外部優先順位値によって表される上記(9)に記載の方法。
(11)外部制限値を定義すること、および
前記外部優先順位値と前記外部制限値のうち小さい方の値である第2下位値を決定することを含む上記(10)に記載の方法。
(12)前記第1下位値および前記第2下位値の関数として前記優先順位値を受け取ることを含む上記(11)に記載の方法。
(13)前記優先順位値の特定の計算に関係する値のうち少なくとも1つが変化したときに、前記優先順位値が新たに決定される上記(1)ないし(12)のいずれか一項に記載の方法。
(14)優先順位値がスレッドごとに決定され、
前記スレッドが、それぞれの優先順位値に従ってランク付けされる上記(1)ないし(13)のいずれか一項に記載の方法。
(15)マルチスレッド化プロセッサ・システム上での実行のために、スレッドについての優先順位値を決定する装置であって、
優先順位ベース値を保管するためのベース値レジスタと、
スレッドのアプリケーションから送達された前記優先順位ベース値およびアプリケーション優先順位値に依存する優先順位値を決定するための評価ユニットとを備える装置。
(16)前記優先順位ベース値が、他のスレッドに対する前記スレッドの優先順位格付けを表し、
前記アプリケーション優先順位格付け値が、前記スレッドのアプリケーションから見た前記スレッドの優先順位格付けを表す上記(15)に記載の装置。
(17)前記優先順位値が、定義された範囲に限定される上記(15)または(16)に記載の装置。
(18)前記優先順位ベース値が、前記範囲の下限を定義する上記(17)に記載の装置。
(19)前記範囲の上限を定義する優先順位最大値を保管するための最大値レジスタを備える上記(18)に記載の装置。
(20)前記評価ユニットが、前記優先順位ベース値と前記アプリケーション優先順位値を加算し、主値を得るための加算器を備える上記(15)ないし(19)のいずれか一項に記載の装置。
(21)前記評価ユニットが、前記主値と前記最大値のうち小さい方の値である第1下位値を決定するための最小値関数を有する上記(20)に記載の装置。
(22)前記評価ユニットが、外部の必要を考慮する前記スレッドの外部優先順位値に依存する前記優先順位値を決定するように設計される上記(15)ないし(20)のいずれか一項に記載の方法。
(23)外部制限値を保管するための外部制限値レジスタを備え、
前記評価ユニットが、前記外部優先順位値と前記外部制限値のうち小さい方の値である第2下位値を決定するための第2最小値関数を有する上記(22)に記載の装置。
(24)前記評価ユニットが、前記第1下位値と前記第2下位値を加算して前記優先順位値を得るための第2加算器を備える上記(23)に記載の装置。
(25)スレッドごとの優先順位値を決定するために、対応するレジスタおよび評価ユニットが設けられ、
それぞれの優先順位値に従って前記スレッドをランク付けするソータが設けられる上記(15)ないし(24)に記載の装置。
(26)装置のプロセッサ・ユニット内にロードされたときに、コンピュータが上記(1)ないし(12)のいずれか一項に記載の方法を実施するように前記プロセッサ・ユニットを構成するコンピュータ・プログラム・コードを含むコンピュータ・プログラム要素。
本発明の一実施形態による装置と、関連するマルチスレッド化プロセッサ・システムのブロック図である。 本発明の一実施形態による装置の略図である。 本発明の一実施形態による別の装置の略図である。 本発明の実施形態による装置で使用される代替レジスタ構造である。
符号の説明
1 装置
2 マルチスレッド化プロセッサ・システム
3 外部ソース
11 ベース値レジスタ
12 最大値レジスタ
13 外部制限値レジスタ
14 評価ユニット
15 ソータ
21 制御ユニット
22 命令選択要素、命令選択ユニット
23 実行パイプライン
24 フロント部
141 加算器
142 最小値関数
143 最小値関数
144 加算器
145 加算器
146 加算器
147 加算器

Claims (26)

  1. マルチスレッド化プロセッサ・システム上での実行のために、スレッドについての優先順位値を決定する方法であって、
    優先順位ベース格付けを受け取ること、
    スレッドのアプリケーションからアプリケーション優先順位格付けを受け取ること、および
    前記優先順位ベース格付けおよび前記アプリケーション優先順位格付けに依存する前記優先順位値を決定することを含む方法。
  2. 優先順位ベース格付けが、他のスレッドに対する前記スレッドの優先順位格付けを表し、
    前記アプリケーション優先順位格付けが、前記スレッドのアプリケーションから見た前記スレッドの優先順位格付けを表す請求項1に記載の方法。
  3. 前記優先順位ベース格付けが優先順位ベース値によって表され、前記アプリケーション優先順位格付けがアプリケーション優先順位値によって表される請求項1または2に記載の方法。
  4. 前記優先順位値が、定義された範囲に限定される請求項1ないし3のいずれか一項に記載の方法。
  5. 前記優先順位ベース値が、前記範囲の下限を定義する請求項4に記載の方法。
  6. 優先順位最大値が、前記範囲の上限を定義する請求項4または5に記載の方法。
  7. 前記優先順位ベース値と前記アプリケーション優先順位値を加算することによって主値を受け取ることを含む請求項3に記載の方法。
  8. 前記主値と前記最大値のうち小さい方の値である第1下位値を決定することを含む請求項7に記載の方法。
  9. 前記スレッドの外部優先順位格付けを受け取ること、および
    前記外部優先順位格付けに依存する前記優先順位値を決定することを含む請求項1ないし8のいずれか一項に記載の方法。
  10. 前記外部優先順位格付けが、外部の必要を考慮する前記スレッドの優先順位格付けを表し、
    前記外部優先順位格付けが外部優先順位値によって表される請求項9に記載の方法。
  11. 外部制限値を定義すること、および
    前記外部優先順位値と前記外部制限値のうち小さい方の値である第2下位値を決定することを含む請求項10に記載の方法。
  12. 前記第1下位値および前記第2下位値の関数として前記優先順位値を受け取ることを含む請求項11に記載の方法。
  13. 前記優先順位値の特定の計算に関係する値のうち少なくとも1つが変化したときに、前記優先順位値が新たに決定される請求項1ないし12のいずれか一項に記載の方法。
  14. 優先順位値がスレッドごとに決定され、
    前記スレッドが、それぞれの優先順位値に従ってランク付けされる請求項1ないし13のいずれか一項に記載の方法。
  15. マルチスレッド化プロセッサ・システム上での実行のために、スレッドについての優先順位値を決定する装置であって、
    優先順位ベース値を保管するためのベース値レジスタと、
    スレッドのアプリケーションから送達された前記優先順位ベース値およびアプリケーション優先順位値に依存する優先順位値を決定するための評価ユニットとを備える装置。
  16. 前記優先順位ベース値が、他のスレッドに対する前記スレッドの優先順位格付けを表し、
    前記アプリケーション優先順位格付け値が、前記スレッドのアプリケーションから見た前記スレッドの優先順位格付けを表す請求項15に記載の装置。
  17. 前記優先順位値が、定義された範囲に限定される請求項15または16に記載の装置。
  18. 前記優先順位ベース値が、前記範囲の下限を定義する請求項17に記載の装置。
  19. 前記範囲の上限を定義する優先順位最大値を保管するための最大値レジスタを備える請求項18に記載の装置。
  20. 前記評価ユニットが、前記優先順位ベース値と前記アプリケーション優先順位値を加算し、主値を得るための加算器を備える請求項15ないし19のいずれか一項に記載の装置。
  21. 前記評価ユニットが、前記主値と前記最大値のうち小さい方の値である第1下位値を決定するための最小値関数を有する請求項20に記載の装置。
  22. 前記評価ユニットが、外部の必要を考慮する前記スレッドの外部優先順位値に依存する前記優先順位値を決定するように設計される請求項15ないし20のいずれか一項に記載の方法。
  23. 外部制限値を保管するための外部制限値レジスタを備え、
    前記評価ユニットが、前記外部優先順位値と前記外部制限値のうち小さい方の値である第2下位値を決定するための第2最小値関数を有する請求項22に記載の装置。
  24. 前記評価ユニットが、前記第1下位値と前記第2下位値を加算して前記優先順位値を得るための第2加算器を備える請求項23に記載の装置。
  25. スレッドごとの優先順位値を決定するために、対応するレジスタおよび評価ユニットが設けられ、
    それぞれの優先順位値に従って前記スレッドをランク付けするソータが設けられる請求項15ないし24に記載の装置。
  26. 装置のプロセッサ・ユニット内にロードされたときに、コンピュータが請求項1ないし12のいずれか一項に記載の方法を実施するように前記プロセッサ・ユニットを構成するコンピュータ・プログラム・コードを含むコンピュータ・プログラム要素。
JP2003393063A 2002-12-20 2003-11-21 マルチスレッド化プロセッサ・システム上での実行のために、スレッドについての優先順位値を決定する方法および装置 Pending JP2004206692A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP02028545 2002-12-20

Publications (1)

Publication Number Publication Date
JP2004206692A true JP2004206692A (ja) 2004-07-22

Family

ID=32748759

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003393063A Pending JP2004206692A (ja) 2002-12-20 2003-11-21 マルチスレッド化プロセッサ・システム上での実行のために、スレッドについての優先順位値を決定する方法および装置

Country Status (2)

Country Link
US (2) US7478391B2 (ja)
JP (1) JP2004206692A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007055055A1 (ja) * 2005-11-08 2007-05-18 Yokogawa Electric Corporation 分散システム
KR20150054858A (ko) * 2012-09-10 2015-05-20 퀄컴 인코포레이티드 멀티-스레딩된 프로세싱 시스템에서의 서브루틴들의 실행

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055594A1 (en) * 2003-09-05 2005-03-10 Doering Andreas C. Method and device for synchronizing a processor and a coprocessor
WO2005116828A2 (en) * 2004-05-21 2005-12-08 Computer Associates Think, Inc. Method and apparatus for dynamic memory resource management
US7979863B2 (en) * 2004-05-21 2011-07-12 Computer Associates Think, Inc. Method and apparatus for dynamic CPU resource management
US7921365B2 (en) 2005-02-15 2011-04-05 Microsoft Corporation System and method for browsing tabbed-heterogeneous windows
US8104033B2 (en) * 2005-09-30 2012-01-24 Computer Associates Think, Inc. Managing virtual machines based on business priorty
US20070088680A1 (en) * 2005-10-14 2007-04-19 Microsoft Corporation Simultaneously spawning multiple searches across multiple providers
US8225313B2 (en) 2005-10-19 2012-07-17 Ca, Inc. Object-based virtual infrastructure management
US20070094664A1 (en) * 2005-10-21 2007-04-26 Kimming So Programmable priority for concurrent multi-threaded processors
US8479201B2 (en) * 2006-09-18 2013-07-02 Innovasic, Inc. Processor with hardware solution for priority inversion
US9772874B2 (en) * 2016-01-29 2017-09-26 International Business Machines Corporation Prioritization of transactions based on execution by transactional core with super core indicator

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752031A (en) * 1995-04-24 1998-05-12 Microsoft Corporation Queue object for controlling concurrency in a computer system
US6651125B2 (en) * 1999-09-28 2003-11-18 International Business Machines Corporation Processing channel subsystem pending I/O work queues based on priorities
US20020087523A1 (en) * 2000-08-14 2002-07-04 Karthikeyan Sivaraman Custom domain generator method and system
US20020087623A1 (en) * 2000-12-30 2002-07-04 Eatough David A. Method and apparatus for determining network topology and/or managing network related tasks

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007055055A1 (ja) * 2005-11-08 2007-05-18 Yokogawa Electric Corporation 分散システム
JP2007133481A (ja) * 2005-11-08 2007-05-31 Yokogawa Electric Corp 分散システム
CN101305348A (zh) * 2005-11-08 2008-11-12 横河电机株式会社 分布式系统
US8296770B2 (en) 2005-11-08 2012-10-23 Yokogawa Electric Corporation Systems and methods for allocation of hardware resource to tasks accordance with the device-based relative value for each of the field devices
KR20150054858A (ko) * 2012-09-10 2015-05-20 퀄컴 인코포레이티드 멀티-스레딩된 프로세싱 시스템에서의 서브루틴들의 실행
KR101660659B1 (ko) 2012-09-10 2016-09-27 퀄컴 인코포레이티드 멀티-스레딩된 프로세싱 시스템에서의 서브루틴들의 실행

Also Published As

Publication number Publication date
US20090183158A1 (en) 2009-07-16
US20040154018A1 (en) 2004-08-05
US8397234B2 (en) 2013-03-12
US7478391B2 (en) 2009-01-13

Similar Documents

Publication Publication Date Title
US8397234B2 (en) Determining a priority value for a thread for execution on a multithreading processor system
KR100403658B1 (ko) 컴퓨터 프로세서 및 컴퓨터 처리 시스템
US8799929B2 (en) Method and apparatus for bandwidth allocation mode switching based on relative priorities of the bandwidth allocation modes
US7020879B1 (en) Interrupt and exception handling for multi-streaming digital processors
TWI537831B (zh) 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法
US7412590B2 (en) Information processing apparatus and context switching method
US7822885B2 (en) Channel-less multithreaded DMA controller
US20050081214A1 (en) Interstream control and communications for multi-streaming digital processors
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
WO1999021088A1 (en) An apparatus and method to guarantee forward progress in a multithreaded processor
EP1027650A1 (en) Method and apparatus for altering thread priorities in a multithreaded processor
US8321874B2 (en) Intelligent context migration for user mode scheduling
US20130205058A1 (en) Multi-thread processor and its interrupt processing method
US7225446B2 (en) Context preservation
KR100834180B1 (ko) 프로그램/명령어의 실행을 구동하는 “l”구동법 및그것의 아키텍처와 프로세서
JP2005092780A (ja) リアルタイムプロセッサシステム及び制御方法
JP2020091751A (ja) 演算処理装置および演算処理装置の制御方法
EP1233340A2 (en) Context preservation
WO2000070482A1 (en) Interrupt and exception handling for multi-streaming digital processors
US8977795B1 (en) Method and apparatus for preventing multiple threads of a processor from accessing, in parallel, predetermined sections of source code
JPH09282188A (ja) 割込処理方法およびこの方法を用いたシステム
JP2011248454A (ja) プロセッサ装置及びプロセッサ装置の制御方法
US6704855B1 (en) Method and apparatus for reducing encoding needs and ports to shared resources in a processor
CN116594765A (zh) 一种指令处理方法、指令处理电路、处理器及电子设备
WO2019188182A1 (ja) プリフェッチコントローラ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051024

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051115

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060131

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060530