JP2010527071A - マルチスレッド型プロセッサのためのスレッドデエンファシス命令 - Google Patents

マルチスレッド型プロセッサのためのスレッドデエンファシス命令 Download PDF

Info

Publication number
JP2010527071A
JP2010527071A JP2010507523A JP2010507523A JP2010527071A JP 2010527071 A JP2010527071 A JP 2010527071A JP 2010507523 A JP2010507523 A JP 2010507523A JP 2010507523 A JP2010507523 A JP 2010507523A JP 2010527071 A JP2010527071 A JP 2010527071A
Authority
JP
Japan
Prior art keywords
thread
instruction
priority
emphasis
processor
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.)
Granted
Application number
JP2010507523A
Other languages
English (en)
Other versions
JP5413853B2 (ja
Inventor
エム. ブルース、クラス
シュラー、セルヒオ
ビー. スミットル、マット
ディー. スナイダー、マイケル
エル. ワイゼンハント、ゲイリー
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.)
NXP USA Inc
Original Assignee
NXP USA Inc
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 NXP USA Inc filed Critical NXP USA Inc
Publication of JP2010527071A publication Critical patent/JP2010527071A/ja
Application granted granted Critical
Publication of JP5413853B2 publication Critical patent/JP5413853B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/3824Operand accessing
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

プロセッサ[102]でスレッド[221、222]の実行をスケジューリングするための技術が開示される。本技術は、スレッドに関連するキャッシュミスなどの待ち状態のメモリトランザクション[330]の数が閾値以下[320]になるまで、スレッド[221]のスレッドデエンファシス命令[220]を実行することを含む。スレッドがデエンファシスされる間、プロセッサのより高い優先順位を有する他のスレッドは、実行されるか、またはシステムリソースを指定されることができる。したがって、プロセッサにおける機能停止の確率が減少する。

Description

本開示は、マルチスレッド型プロセッサに関し、より詳細には、マルチスレッド型プロセッサ用のスレッド管理に関する。
キャッシュミスまたは他のメモリトランザクションによる命令パイプラインにおける機能停止は、プロセッサの効率を低下させる可能性がある。1つのスレッドによる命令パイプラインにおける機能停止が他のスレッドの実行を遅延させる可能性があるため、この問題は、マルチスレッド型プロセッサにおいて悪化する。複数のプロセッサが、プログラムフローとは無関係に、機能停止に関して命令パイプラインを監視し、機能停止に応答して、機能停止の原因となったスレッド以外のスレッドに優先順位を付与する。しかし、命令パイプラインにおける機能停止に関する監視は通常困難であり、プロセッサにおいてさらなるオーバヘッドが必要とされる。したがって、マルチスレッド型プロセッサにおいてプロセッサリソースをスレッドに割り当てるための改良した技術に対する需要がある。
プロセッサにおけるスレッドの実行のスケジューリングのための技術が開示される。この技術は、スレッドに関連するキャッシュミスなどの待ち状態のメモリトランザクションの数が閾値以下となるまで、スレッドをデエンファシスするスレッドのスレッドデエンファシス命令を実行することを含む。スレッドがデエンファシスされる間、プロセッサにおけるより高い優先順位を有する他のスレッドが実行されたり、システムリソースを指定されたりする。したがって、プロセッサにおける機能停止の確率が減少する。
一実施形態において、スレッドデエンファシス命令は、第1のスレッドに関連する待ち状態のメモリトランザクションの数が閾値を超える場合には、第1のスレッドの優先順位ステータスを変更することによって、第1のスレッドをデエンファシスするプログラムフローにおける命令である。一旦、待ち状態のメモリトランザクションの数が閾値以下になると、第1のスレッドの優先順位ステータスは、復元される。閾値は、スレッドデエンファシス命令のオペランドに基づいてもよく、または所定の値であってもよい。特定の実施形態において、閾値は、ゼロであり、したがって、スレッドデエンファシス命令は、スレッドに関連するすべての待ち状態のメモリトランザクションが決定されるまで、スレッドをデエンファシスする。
たとえば、スレッドは、特定のメモリ・トランザクション・タイプに関してデエンファシスされる。スレッドデエンファシス命令は、スレッドに関連するキャッシュミスの数に基づき、スレッドをデエンファシスすることができる。別のスレッドデエンファシス命令は、スレッドに関連するノンキャッシャブル・メモリ・アクセスの数(すなわち、ノンキャッシャブルとして識別されるアドレスへのメモリアクセスの数)に基づいて、スレッドをデエンファシスすることができる。別の実施形態は、メモリトランザクションの数以外の特性に基づいて、スレッドをデエンファシスしてもよい。さらに、別の実施形態は、スレッドに関連する「実行準備」ビットの変更などのその優先順位ステータス以外のスレッドの特性を変更することによって、スレッドをデエンファシスしてもよい。
デエンファシスされたスレッドには、プロセッサリソースに関して、他のスレッドより低い優先順位が与えられる。たとえば、一度に1つのみのスレッドが命令パイプラインに指定されるように、プロセッサが粗粒度マルチスレッディングを採用する場合には、他のスレッドに対してもはやデエンファシスされなくなるまで、デエンファシスされたスレッドは、命令パイプラインにおいて実行されない。異なるスレッドに関連する命令が命令パイプラインの異なるステージで一度に実行可能なように、プロセッサが細粒度マルチスレッディングを採用する場合には、そのステージで待ち状態にあるより高い優先順位スレッドに関連する命令が実行されるまで、命令パイプラインの特定のステージでデエンファシスされたプログラムに関連する命令は、実行されない。さらに、デエンファシスされたスレッドは、命令パイプラインの複数のステージに関する他のスレッドより低い優先順位を有してもよいし、他のステージに関してその優先順位を維持してもよい。
デエンファシスされたスレッドはまた、他のプロッセッサリソースの割り当てに関して、より低い優先順位を与えられる。たとえば、デエンファシスされたスレッドは、キャッシュアクセス、格納待ち行列アクセス、終了バッファエントリ、命令フェッチなどに関してより低い優先順位を与えられる。さらに、スレッドは、複数のスレッドに対してデエンファシスされてもよいし、他のスレッドに対して優先順位を維持してもよい。
データ処理デバイスの特定の実施形態のブロック図である。 図1のプロセッサの特定の実施形態のブロック図である。 図2のスレッド優先順位モジュールの特定の実施形態のブロック図である。 スレッドのスケジューリングの方法の特定の実施形態を表す図である。 スレッドのスケジューリングの方法の別の特定の実施形態を表す図である。 スレッドのスケジューリングの実施例の方法の特定の実施形態を表す図である。
図1を参照すると、データ処理デバイス100の特定の実施形態のブロック図が示されている。データ処理デバイス100は、プロセッサ102と、メモリコントローラ104と、メモリ106とを含む。プロセッサ102およびメモリコントローラはそれぞれ、バス105に接続される。メモリ106は、メモリコントローラ104への双方向の接続を含む。
メモリコントローラ104は、バス105を介してメモリアクセス情報を受信し、その情報に基づいて、メモリ106にアクセスする。メモリ106は、プロセッサ102で実行するための命令をはじめとするソフトウェアプログラムおよびルーチンを格納することができる。メモリ106は、RAMメモリなどの揮発性メモリであってもよく、またはフラッシュメモリまたはハードウェアドライブなどの不揮発性メモリであってもよい。特定の実施形態において、メモリ106およびメモリコントローラ104は、プロセッサ102と同一の半導体基板上に集積される。別の特定の実施形態において、メモリ106は、プロセッサ102およびメモリコントローラ104とは別の半導体基板上に集積される。
プロセッサ102は、マイクロプロセッサ、マイクロコントローラ、ASICなどであってもよい。プロセッサ102は、複数のスレッドを実行するように構成されるマルチスレッド型プロセッサである。スレッドは、異なるソフトウェアプログラムまたはルーチンに関連してもよく、または1つのソフトウェアプログラムまたはルーチンの異なるタスクに関連してもよく、またはその組み合わせに関連してもよい。
図1に示された実施形態において、プロセッサ102は、命令キャッシュ110と、スレッド制御モジュール112と、命令パイプライン114と、データキャッシュ116とを含む。命令キャッシュ110は、命令パイプライン114およびスレッド制御モジュール112にアクセス可能である。命令パイプライン114は、スレッド制御モジュール112にアクセス可能である。さらに、データキャッシュ116は、命令パイプライン114にアクセス可能である。
命令キャッシュ110は、プロセッサ102で実行するための命令を示す命令データを格納する。キャッシュされた命令データは、メモリ106に格納されたソフトウェアプログラムデータの複製であってもよい。
命令パイプライン114は、メモリアクセス、算術演算などのタスクを行うための命令を実行する。たとえば、特定の命令に応答して、命令パイプライン114は、データを検索するためにデータキャッシュ116にアクセスすることができる。別の命令に応答して、命令パイプライン114は、メモリコントローラ104を介してメモリ106からデータを要求し、データキャッシュ116に要求されたデータを格納することができる。
スレッド制御モジュール112は、各スレッドに関する優先順位ステータスをはじめとする各スレッドに関するステータスを示すための状態情報を格納する。各スレッドに関する優先順位ステータスおよび他の属性に基づき、スレッド制御モジュール112は、たとえば命令パイプライン114におけるスレッドの実行の順序をスケジューリングすることによりプロセッサ102のリソースを割り当てる。スレッド制御モジュール112はまた、各スレッドに関連する待ち状態のメモリトランザクションの数を追跡する。
命令キャッシュ110は、明示スレッドデエンファシス命令120を含む。スレッドデエンファシス命令120の実行中に、命令パイプライン114は、第1のスレッドに関連する待ち状態のメモリトランザクションの数が閾値以下となるまで、第1のスレッドの優先順位がデエンファシスされたことをスレッド制御モジュール112に通知する。特定の実施形態において、スレッドデエンファシス命令120は、無演算命令の特殊な形態であり、スレッドに関連するメモリトランザクションが待ち状態でなくなるまで、スレッドがデエンファシスされる必要があることを示す。
命令パイプライン114におけるスレッドデエンファシス命令120の実行に応答して、スレッド制御モジュール112は、他のスレッドに対してスレッドをデエンファシスするために、第1のスレッドの優先順位ステータスを調整する。特定の実施形態において、これは、スレッドに関連する「実行準備」ビットを消去することによって行われる。このビットが消去される限り、スレッドは、実行のための低い優先順位が与えられる。ビットが消去される場合であっても、スレッド制御モジュールは、スレッドに関する他の優先順位情報を追跡することができ、その結果、実行準備ビットが設定されるとき、スレッドには適切な優先順位が与えられる。さらに、スレッド制御モジュール112は、命令パイプライン114を監視し、第1のスレッドに関連する待ち状態のメモリトランザクションの数を追跡する。一旦、スレッドデエンファシス命令120によって示される待ち状態のメモリトランザクションの数が決定されると、スレッド制御モジュール112は、第1のスレッドがもはやデエンファシスされないように、優先順位ステータスを設定する。
したがって、スレッドデエンファシス命令120は、そのスレッドに関連するメモリトランザクションの数が閾値以下になるまで特定のスレッドをデエンファシスするために用いられる。これは、プログラマまたはコンパイラが命令パイプライン114のリソースを効率的に割り当てることを可能にする。たとえば、スレッドデエンファシス命令120は、多数のキャッシュミスにおいて、生じる可能性がある一連の読み込み命令の後などのユーザが信じる命令が命令パイプライン114における機能停止を生じる後または前のスレッドのプログラムフローにおいて実装される。読み込み命令に関連するメモリトランザクションが判断されるまで、スレッドがデエンファシスされ、メモリトランザクションが判断される間、命令パイプライン114が他のスレッドに関連する命令を実行することを可能にする。
図2を参照すると、図1のプロセッサ102などのプロセッサに対応するプロセッサ202のブロック図が示されている。プロセッサ202は、命令キャッシュ210と、スレッド制御モジュール212と、命令パイプライン214と、データキャッシュ216とを含む。命令キャッシュ210は、バス296を介したスレッド制御モジュール212によって、および命令パイプライン214によってアクセス可能である。データキャッシュ216は、命令パイプライン214によってアクセス可能である。
命令キャッシュ210は、スレッドA命令221およびスレッドB命令222をはじめとするスレッドに関連する命令の集合を含む。スレッドA命令221は、スレッドAに関連する待ち状態のメモリトランザクションが判断されるまで、スレッドBに対してスレッドAをデエンファシスするためのスレッドデエンファシス命令220を含む。
スレッド制御モジュール212は、スレッド優先順位モジュール235に接続されるスレッド・スケジューラ・モジュール230を含む。スレッド優先順位モジュール235は、スレッドに関するメモリトランザクションが完了した表示を受信するために、バス290に接続される入力を含む。スレッド・スケジューラ・モジュール230は、バス291、バス292、バス293、バス294、バス295およびバス296に接続される出力を含む。スレッド・スケジューラ・モジュール230は、命令パイプライン214のステージにおける命令の実行をスケジューリングするためのバス291〜296のそれぞれに制御情報を提供する。
スレッド優先順位モジュール235は、スレッドAおよびスレッドBをはじめとするプロセッサ202における各スレッドに関する優先順位状態情報を格納し、優先順位ステータス情報に基づくスレッド・スケジューラ・モジュール230に優先順位ステータス情報を提供する。優先順位ステータス情報に基づき、スレッド・スケジューラ・モジュール230は、命令パイプライン214のステージにおける命令の実行をスケジューリングするためのバス291〜296に制御情報を提供する。
命令パイプライン214は、命令フェッチステージ240と、復号化ステージ242と、ディスパッチステージ244と、読み込み/格納ユニット246と、実行ユニット248と、実行ユニット249とを含む。実行ユニット248および249は、読み込み/格納ユニット、浮動小数点演算ユニット、整数演算ユニットなどであってもよい。命令パイプライン214はまた、バッファ250〜254を含む。
命令フェッチステージ240は、命令キャッシュ210に接続される入力と出力とを含む。バッファ250は、命令フェッチステージ240の出力に接続される入力と、バス295に接続される入力と、出力とを含む。復号化ステージ242は、バッファ250の出力に接続される入力と、出力とを含む。バッファ251は、復号化ステージ240の出力に接続される入力と、バス294に接続される入力と、出力とを含む。ディスパッチステージ244は、バッファ251の出力に接続される入力と、3つの出力とを含む。
バッファ252は、ディスパッチステージ244の第1の出力に接続される入力と、バス292に接続される入力と、出力とを含む。読み込み/格納ユニット246は、バッファ251の出力に接続される入力と、バス290への接続と、データキャッシュ216への接続とを含む。
バッファ253は、ディスパッチステージ244の第2の出力に接続される入力と、バス293に接続される入力と、出力とを含む。実行ユニット248は、バッファ253の出力に接続される入力を含む。バッファ254は、ディスパッチステージ244の第3の出力に接続される入力と、バス291に接続される入力と、出力とを含む。実行ユニット249は、バッファ254の出力に接続される入力を含む。
命令フェッチステージ240は、命令キャッシュ210から命令データを取り出し、取り出された命令データをバッファ250に提供する。バス293を介して受信された制御情報に基づき、復号化部分242は、バッファ250から命令にアクセスする。
復号化ステージ242は、バッファ250でアクセスされた命令を復号化し、復号化された命令をバッファ251に提供する。バス292を介して受信された制御情報に基づき、ディスパッチステージは、バッファ251で復号化された命令にアクセスする。ディスパッチステージ244は、読み込み/格納ユニット246の実行ユニット、実行ユニット248および実行ユニット249のいずれかを決定し、決定に基づき復号化された命令をバッファ252〜254の1つに送信する。
バッファ252は、ディスパッチステージ244によって提供された復号化された命令を格納する。バス292を介して提供された制御情報に基づき、読み込み/格納ユニット246は、復号化された命令にアクセスする。バッファ252から受信された命令に基づき、読み込み/格納ユニット246は、読み込みを実行して、データキャッシュ216に演算を格納する。さらに、読み込み/格納ユニットは、読み込みを実行し、プロセッサ202の外部のメモリ上に演算を格納することができる。たとえば、データキャッシュ216におけるキャッシュミスの場合には、読み込み/格納ユニットは、外部メモリからデータキャッシュ216にキャッシュミスに関連するデータを読み込むことによって、キャッシュミスを判断する。さらに、読み込み/格納は、バス290を介して各スレッドに関する待ち状態のメモリトランザクションについての情報を提供する。たとえば、スレッドに関連するキャッシュミスが判断された後、読み込み/格納ユニット246は、スレッドに関連する待ち状態のキャッシュミスの数を1つだけ減少したことを示す情報をバス290を介して提供する。
バッファ253は、ディスパッチステージ244によって提供された復号化された命令を格納する。バス293を介して提供された制御情報に基づき、実行ユニット248は、復号化された命令にアクセスする。実行ユニット248は、バッファ253によって提供された命令を実行する。バッファ254は、ディスパッチステージ244によって提供された復号化された命令を格納する。バス291を介して提供された制御情報に基づき、実行ユニット249は、復号化された命令にアクセスする。実行ユニット249は、バッファ254でアクセスされた命令を実行する。
演算中、スレッド・スケジューラ・モジュール230は、スレッド優先順位モジュール235から優先順位情報を受信する。優先順位情報に基づき、スレッド・スケジューラ・モジュール230は、制御情報をバッファ250〜254のほか、命令キャッシュ210に提供し、命令パイプライン214の各ステージにおけるスレッド命令に関する実行の順序をはじめとするプロセッサリソースの割り当てを制御する。たとえば、受信された優先順位情報に基づき、スレッド・スケジューラ・モジュール230は、スレッドA命令221が復号化ステージ242でスレッドB命令222より優先順位を与えられるべきであることを決定してもよい。したがって、スレッド・スケジューラ・モジュール230は、バス295を介してバッファ250に制御情報を提供し、その結果、バッファ250に格納されたスレッドB命令が提供される前に、バッファ250に格納されたスレッドA命令が復号化ステージ242に提供される。したがって、命令キャッシュ210およびバッファ250〜254に適切な制御情報を提供することによって、スレッド・スケジューラ・モジュール230は、命令パイプライン214の各ステージにおけるスレッド命令の実行の順序を制御する。
スレッド・スケジューラ・モジュール230は、スレッド優先順位モジュール235に格納された優先順位情報に基づき、スレッド命令の実行の順序を決定する。スレッド優先順位情報は、読み込み/格納ユニット246におけるスレッドデエンファシス命令220の実行によって変更される。スレッドデエンファシス命令220の実行に応答して、読み込み/格納ユニット246は、スレッドに関連する待ち状態のメモリトランザクションの数が閾値未満となるまでスレッドAがデエンファシスされる必要があることを示す情報をスレッド優先順位モジュール235に提供する。読み込み/格納ユニット246はまた、スレッドデエンファシス命令220のオペランドに基づき、閾値を設定するために情報を提供することができる。
それに応答して、スレッド優先順位モジュール235は、スレッドAに関連する待ち状態のメモリトランザクションの数を決定し、その数が閾値を上回る場合には、スレッドBに対してデエンファシスされるように、スレッドAに関連する優先順位状態を変更する。
読み込み/格納ユニット246がスレッドAに関連する待ち状態のメモリトランザクションを判断すると、バス290を介してスレッド優先順位モジュール235に通知する。それに応答して、スレッド優先順位モジュール235は、スレッドAに関連する待ち状態のメモリトランザクションの数を調整し、メモリトランザクションの数が閾値未満であるときには、スレッドAに関する優先順位状態を調整し、その結果、スレッドBに対してもはやデエンファシスされないようにする。したがって、待ち状態のメモリトランザクションの数が閾値未満に動く場合には、スレッドAの優先順位ステータスは、その前のステータスに自動的に復元される。
図3を参照すると、図2のスレッド優先順位モジュール235に対応するスレッド優先順位モジュール335の特定の実施形態のブロック図が示されている。スレッド優先順位モジュール335は、メモリトランザクション制御モジュール302と、メモリ・トランザクション・レジスタの集合304と、メモリ・トランザクション・カウンタの集合306と、優先順位ステータスレジスタの集合308と、優先順位決定モジュール310とを含む。メモリトランザクション制御モジュール302は、メモリ・トランザクション・レジスタの集合304およびメモリ・トランザクション・カウンタの集合306への双方向の接続を含む。メモリトランザクション制御モジュールはまた、読み込み/格納ユニット246(図2)からの入力と、出力とを含む。優先順位ステータスレジスタの集合308は、メモリトランザクション制御モジュール302の出力に接続される入力と、出力とを含む。優先順位決定モジュール310は、優先順位ステータスレジスタの集合308の出力に接続される入力と、スレッド・スケジューラ・モジュール230(図2)に接続される出力とを含む。
メモリトランザクション制御モジュール302は、読み込み/格納ユニット246から制御情報を受信し、その情報に基づき、メモリ・トランザクション・レジスタ304の集合304、メモリ・トランザクション・カウンタの集合306および優先順位ステータスレジスタの集合308に格納された値を適宜調整するように構成される。
メモリ・トランザクション・レジスタの集合304は、スレッドAに関連するメモリトランザクション閾値を格納するためのレジスタ320と、スレッドBに関連するメモリトランザクション閾値を格納するためのレジスタ321とを含む。レジスタ320および321に格納されるメモリトランザクション閾値は、スレッドデエンファシス命令のオペランドに基づく情報などの読み込み/格納ユニット246によって提供される情報に基づき、メモリトランザクション制御モジュール302によって設定されることができる。別の実施形態において、メモリトランザクション閾値は、ROMメモリ、オペレーティングシステムなどによって固定される値である。
メモリ・トランザクション・カウンタ306の集合は、スレッドAに関連する待ち状態のメモリトランザクションの数を格納するカウンタ330と、スレッドBに関連する待ち状態のメモリトランザクションの数を格納するカウンタ331とを含む。メモリトランザクション制御モジュール302は、カウンタ330および331に格納される値を個別に調整することができる。
優先順位ステータスレジスタ308の集合は、スレッドAに関連する優先順位ステータスの状態情報を格納するレジスタ340と、スレッドBに関連する優先順位ステータスの状態情報を格納するレジスタ341とを含む。メモリトランザクション制御モジュール302は、レジスタ340および341に格納される状態情報を個別に調整することができる。
優先順位決定モジュールは、レジスタ340および341に格納される優先順位ステータスの状態情報に基づき、スレッドAおよびスレッドBに関する優先順位ステータスを決定する。各スレッドに関する優先順位ステータスに基づき、優先順位決定モジュールは、制御情報をスレッド・スケジューラ・モジュール230に提供し、各スレッドに関連する命令が命令パイプライン214(図2)のステージのそれぞれで適切な順序で実行されるようにする。
演算中、メモリトランザクション制御モジュール302は、スレッドに関連するメモリトランザクションが待ち状態であるか、またはスレッドに関連するメモリトランザクションが判断されたかを示す読み込み/格納ユニット246からの情報を受信する。それに応答して、メモリトランザクション制御モジュール302は、メモリ・トランザクション・カウンタ306の集合に格納された値を調整する。
たとえば、読み込み/格納ユニット246は、スレッドAに関連する命令に起因して、キャッシュミスが生じたことをメモリトランザクション制御モジュール302に示すことができる。それに応答して、メモリトランザクション制御モジュール302は、キャッシュミスが待ち状態であることを反映するように、カウンタ330に格納される値を調整する。(すなわち、外部メモリからデータを検索して、データキャッシュ216(図2)にそれを読み込むことによって)キャッシュミスが判断された後、読み込み/格納ユニット246は、キャッシュミスの判断をメモリトランザクション制御モジュール302に示す。それに応答して、メモリトランザクション制御モジュール302は、メモリトランザクションが判断されたことを反映するように、カウンタ330に格納される値を調整する。したがって、カウンタ330および331に格納される値は、スレッドAおよびスレッドBにそれぞれ関連する待ち状態のメモリトランザクションの数を反映する。
さらに、読み込み/格納ユニット246は、スレッドに関連するスレッドデエンファシス命令が受信されたことを示す情報をメモリトランザクション制御モジュール302に提供することができる。それに応答して、メモリトランザクション制御モジュール302は、メモリ・トランザクション・カウンタ306の集合に反映されるようなスレッドに関連する待ち状態のメモリトランザクションの数をメモリ・トランザクション・レジスタ304の集合に反映されるようなスレッドに関連する待ち状態のメモリトランザクションの数と比較する。比較に基づき、メモリトランザクション制御モジュール302は、優先順位ステータスレジスタ308の集合でスレッドに関するステータス状態を調整することによって、スレッドに関する優先順位ステータスを調整する。
たとえば、スレッドデエンファシス命令がスレッドBに関連する場合には、メモリトランザクション制御モジュール302は、カウンタ331に格納される値をレジスタ321に格納される閾値と比較する。比較がスレッドBに関連する待ち状態のメモリトランザクションの数が閾値を上回ることを示す場合には、メモリトランザクション制御モジュール302は、スレッドBがデエンファシスされるように、レジスタ321によって格納された値を調整する。
図4を参照すると、スレッドのスケジューリング実行の方法の特定の実施形態の図が示されている。ブロック402で、スレッドは、時間t0で各スレッドに関する優先順位ステータスに基づいて実行される。示された実施例において、スレッドAは、スレッドBより高い優先順位を有し、その結果、スレッドA命令がスレッドB命令の前に実行される。
ブロック404で、スレッドAにおけるスレッドデエンファシス命令が時間t1で処理される。スレッドデエンファシス命令の実行は、スレッドAのデエンファシスを生じ、それにより、スレッドBに最も高い優先順位が与えられる。したがって、ブロック406で、スレッドAに関連する待ち状態のメモリトランザクションが判断されるまで、スレッドAの実行が一時停止される。したがって、示された実施形態において、スレッドAに関する待ち状態のメモリトランザクションが判断されるまで、スレッドB命令のみが実行される。
ブロック408に進むと、スレッドAに関する待ち状態のメモリトランザクションが判断された後、スレッドAに関する優先順位ステータスが時間t3で復元される。したがって、図示されているように、スレッドAは、スレッドBより高い実行の優先順位を取り戻す。
図5を参照すると、スレッドのスケジューリング実行の方法の別の特定の実施形態の図が示されている。ブロック502で、スレッドは、時間t0で各スレッドに関する優先順位ステータスに基づいて実行される。示された実施例において、スレッドAは、スレッドBおよびスレッドCより高い優先順位を有し、スレッドBはまた、スレッドCより高い優先順位を有する。
ブロック504で、スレッドAに関するスレッドデエンファシス命令が時間t1で受信され、スレッドAのデエンファシスが結果として生じる。したがって、ブロック506で、スレッドAに関連する待ち状態のメモリトランザクションが判断されるまで、スレッドAがデエンファシスされる。したがって、示された実施形態において、ブロック506で、スレッドBが時間t2でスレッドAより高い実行の優先順位を有する。しかし、スレッドAは、スレッドCより高い優先順位を維持する。したがって、示された実施例において、スレッドは、他のスレッドに対して個別にデエンファシスされることができる。
ブロック508に進むと、スレッドAに関する待ち状態のメモリトランザクションが決定された後、スレッドAに関する優先順位ステータスが時間t3で復元される。したがって、図示されているように、スレッドAは、一方、スレッドBより高い実行の優先順位を取り戻す。
図6を参照すると、命令パイプラインにおけるスレッドのスケジューリング実行の例示の方法602および604を示すブロック図が示されている。方法602は、スレッドデエンファシス命令がない命令パイプラインにおけるスレッドのスケジューリングを示す。対照的に、方法604は、スレッドデエンファシス命令がスレッドAから実行される場合の命令パイプラインにおけるスレッドのスケジューリングを示す。図示されているように、方法602および604の両方に関して、存在しない明示デエンファシスはなく、スレッドAは通常、スレッドBより高い実行の優先順位を有する。
方法602を参照すると、ブロック610で、2つの命令が命令キャッシュに格納され、第1の命令は、スレッドAに関連し、第2の命令は、スレッドBに関連する。ブロック612で、命令パイプラインのフェッチステージは、各命令に関する現在の優先順位ステータスに基づき、命令を検索し、その結果、スレッドA命令がスレッドB命令より前に検索される。
ブロック614で、2つの命令が命令パイプラインの復号化ステージ用のバッファに格納される。ブロック616で、命令は、各命令に関する現在の優先順位ステータスに基づいて復号化され、その結果、スレッドA命令がスレッドB命令より前に復号化される。したがって、スレッドA命令が機能停止という結果として生じる場合には、スレッドB命令は、機能停止が判断されるまで、復号化されない。
方法604を参照すると、ブロック620で、2つの命令が命令キャッシュに格納され、第1の命令は、スレッドAに関連し、第2の命令は、スレッドBに関連する。ブロック622で、命令パイプラインのフェッチステージは、各命令に関する現在の優先順位ステータスに基づき、命令を検索し、その結果、スレッドA命令がスレッドB命令より前に検索される。
ブロック624で、2つの命令が命令パイプラインの復号化ステージ用のバッファに格納される。図示されているように、ブロック624で、バッファは、スレッドAに関連するスレッドデエンファシス命令が命令パイプラインの別のステージで実行されたことを示す制御情報を受信する。スレッドデエンファシス命令に応答して、スレッドAに関する優先順位ステータスがスレッドBに対してデエンファシスされる。したがって、ブロック626で、命令は、各命令に関する現在の優先順位ステータスに基づいて復号化され、その結果、スレッドB命令がスレッドA命令より前に復号化される。したがって、スレッドA命令が機能停止という結果として生じる場合には、スレッドB命令は、機能停止が判断される間に復号化され、方法602に対して命令パイプラインのより効率的な演算を結果として生じる。
本文書において、「第1」および「第2」などの関係語は、別の実在物または行為から1つの実在物または行為を区別するためだけに、そのような実在物または行為の間の実際のそのような関係または順序を必ずしも必要としたり示唆したりすることなく、用いられてもよい。「備える」、「備えている」という用語またはその任意の他の変形は、要素の列挙を含む工程、方法、物品または装置が、それらの要素のみを含むのではなく、明確に列挙されていないか、またはそのような工程、方法、物品または装置に固有である他の要素を含んでもよいような非独占的な含有を網羅することを意図している。「備える」の前に来る要素は、さらに制限することなく、要素を備える工程、方法、物品または装置におけるさらなる同一の要素の存在を排除している訳ではない。「または」という用語は、「または」の条件節の両方の状態が満たされる場合には、条件節が満たされるような包括的な「または」を網羅することを意図している。「範囲」という用語は、単一の値のみを含む範囲を含んでもよい。
「別の」という用語は、本願明細書で用いられるとき、少なくとも2つ目またはそれ以上であると定義される。「含んでいる」、「有している」またはその任意の変形は、本願明細書で用いられるとき、含むものと定義される。「結合される」という用語は、電気光学技術に関して本願明細書で用いられるとき、接続されるものと定義されるが、必ずしも直接的である必要はなく、また、必ずしも機械的である必要はない。
本願明細書で用いられるとき、「バス」は、データ、アドレス、制御またはステータスなどの情報の1つまたは複数の種々のタイプの情報を伝送するために用いられてもよい複数の信号または導体を指すために用いられる。本願明細書において説明されたような導体は、単一の導体、複数の導体、単一方向の導体または双方向の導体であることに関して図示または記載されてもよい。しかし、異なる実施形態は、導体の実装を変化させてもよい。たとえば、双方向の導体ではなく、別個の単一方向の導体を用いてもよく、また、その逆であってもよい。また、複数の導体は、複数の信号を連続的にまたは時分割形式で複数の信号を伝送する1つの導体に置き換えられてもよい。同様に、複数の信号を搬送する単一の導体は、これらの信号の部分集合を搬送する種々の異なる導体に分離されてもよい。したがって、信号を伝送するための多くのオプションが存在する。
本開示の他の実施形態、用途および利点は、本願明細書および本願明細書に開示された開示内容の実施を考慮すると、当業者には明白であろう。たとえば、本願明細書に開示されるパフォーマンス事象監視技術は、1つのプロセッサに関して記載されているが、類似の技術が複数のプロセッサコアを有するデバイスに関して採用されることが可能である。各プロセッサコアは、異なるパフォーマンス事象モニタに関連することが可能であり、またはデバイスの各パフォーマンス事象モニタが複数のプロセッサコアに関連することが可能である。明細書および図面は、例示に過ぎないことを考慮すべきであり、したがって、本開示の範囲は、以下の請求項およびその等価物によってのみ制限されることを意図している。

Claims (20)

  1. プロセッサで第1のスレッドの第1のスレッドデエンファシス命令を実行する工程と、
    前記第1のスレッドデエンファシス命令の実行に応答して、前記第1のスレッドに関連する待ち状態のメモリトランザクションの数と第1の閾値との間の第1の関係に基づき、前記第1のスレッドの優先順位ステータスをデエンファシスする工程と、
    を備える方法。
  2. 前記第1の状態に設定されている前記第1のスレッドの前記優先順位ステータスのデエンファシスに応答して、前記第1のスレッドの実行を一時停止する工程をさらに備える、請求項1に記載の方法。
  3. 前記第1のスレッドの前記優先順位ステータスがデエンファシスされる間、前記プロセッサで第2のスレッドを実行する工程をさらに備える、請求項1に記載の方法。
  4. 前記第1のスレッドの前記優先順位ステータスに基づいて、前記プロセッサでプロセッサリソースを指定する工程をさらに備える、請求項1に記載の方法。
  5. 前記第1のスレッドの前記優先順位ステータスがデエンファシスされる間、前記第1のスレッドに関連する待ち状態のメモリトランザクションの数における変化の表示を受信する工程と、
    前記表示に応答して、前記第1のスレッドの前記優先順位ステータスを第2の状態に復元する工程と、
    をさらに備える、請求項1に記載の方法。
  6. 前記第1のスレッドの前記優先順位ステータスのデエンファシスに応答して、前記第1のスレッドの実行を一時停止する工程と、
    前記第1のスレッドの前記優先順位ステータスの復元に応答して、前記第1のスレッドの実行を再開する工程と、
    を備える、請求項5に記載の方法。
  7. 前記第1のスレッドに関連する待ち状態のメモリトランザクションの数は、前記第1のスレッドに関連するキャッシュミスの数に基づく、請求項1に記載の方法。
  8. 前記第1のスレッドに関連する待ち状態のメモリトランザクションの数は、前記第1のスレッドに関連するノンキャッシャブル・メモリ・トランザクションの数に基づく、請求項1に記載の方法。
  9. 前記第1のスレッドに関連する待ち状態のメモリトランザクションの数は、第1のメモリ・トランザクション・タイプに関連し、前記第1のメモリ・トランザクション・タイプは、前記第1のスレッドデエンファシス命令に基づく、請求項1に記載の方法。
  10. 前記第1の閾値は、前記第1のスレッドデエンファシス命令のオペランドに基づく、請求項1に記載の方法。
  11. 前記第1のスレッドデエンファシス命令は、無演算命令である、請求項1に記載の方法。
  12. 前記プロセッサで第2のスレッドの第2のスレッドデエンファシス命令を受信する工程と、
    前記第2のスレッドデエンファシス命令の受信に応答して、前記第2のスレッドに関連する待ち状態のメモリトランザクションの数と第2の閾値との間の第1の関係に基づき、前記第2のスレッドの優先順位ステータスをデエンファシスする工程と、
    をさらに備える、請求項1に記載の方法。
  13. 複数のスレッドの命令を実行するように構成された命令パイプラインと、
    前記複数のスレッドのそれぞれの優先順位レベルに基づいて、前記命令パイプラインで前記複数のスレッドの命令の実行をスケジューリングするように構成されたスレッド・スケジューラ・モジュールと、前記第1のスレッドに関連する待ち状態のメモリトランザクションの数と第1の閾値との間の第1の関係に基づき、前記命令パイプラインにおける第1のスレッドデエンファシス命令の実行に応答して、前記複数のスレッドの第1のスレッドの前記優先順位ステータスをデエンファシスするように構成された優先順位制御モジュールと、を含むスレッド制御モジュールと、
    を備えるデバイス。
  14. 前記スレッド・スケジューラ・モジュールは、前記第1のスレッドの前記優先順位ステータスのデエンファシスに応答して、前記第1のスレッドの実行を一時停止するように構成される、請求項13に記載のデバイス。
  15. 前記スレッド・スケジューラ・モジュールは、前記複数のスレッドのそれぞれの優先順位ステータスに基づいて、前記命令パイプラインのリソースを割り当てるように構成される、請求項13に記載のデバイス。
  16. 前記命令パイプラインにおける第2の命令の実行に応答して、前記複数のスレッドの第2のスレッドの前記優先順位レベルを前記第1の状態に設定するように構成される優先順位制御モジュールであって、前記第2のスレッドの前記優先順位レベルは、前記第2のスレッドに関連する待ち状態のメモリトランザクションの数と第2の閾値との間の第1の関係に基づき、前記第1の状態に設定される優先順位制御モジュールを備える、請求項13に記載のデバイス。
  17. 前記第1の閾値は、前記第1のスレッドデエンファシス命令のオペランドに基づく、請求項13に記載のデバイス。
  18. 前記第1のスレッドに関連する待ち状態のメモリトランザクションの数は、前記第1のスレッドに関連するキャッシュミスの数に基づく、請求項13に記載のデバイス。
  19. 前記第1のスレッドに関連する待ち状態のメモリトランザクションの数は、前記第1のスレッドに関連するノンキャッシャブル・メモリ・トランザクションの数に基づく、請求項13に記載のデバイス。
  20. プロセッサを操作するための複数の命令を含むコンピュータ読み出し可能媒体であって、前記複数の命令は、
    プロセッサで複数のスレッドの第1のスレッドの第1のスレッドデエンファシス命令を実行するための命令と、
    前記第1のスレッドに関連する待ち状態のメモリトランザクションの数と第1の閾値との間の第1の関係に基づき、前記第1のスレッドの優先順位ステータスをデエンファシスするための命令と、
    を備える、コンピュータ読み出し可能媒体。
JP2010507523A 2007-05-10 2008-04-28 マルチスレッド型プロセッサのためのスレッドデエンファシス方法及びデバイス Active JP5413853B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/746,998 2007-05-10
US11/746,998 US8832702B2 (en) 2007-05-10 2007-05-10 Thread de-emphasis instruction for multithreaded processor
PCT/US2008/061713 WO2008140921A1 (en) 2007-05-10 2008-04-28 Thread de-emphasis instruction for multithreaded processor

Publications (2)

Publication Number Publication Date
JP2010527071A true JP2010527071A (ja) 2010-08-05
JP5413853B2 JP5413853B2 (ja) 2014-02-12

Family

ID=39970715

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010507523A Active JP5413853B2 (ja) 2007-05-10 2008-04-28 マルチスレッド型プロセッサのためのスレッドデエンファシス方法及びデバイス

Country Status (6)

Country Link
US (1) US8832702B2 (ja)
EP (1) EP2147373B1 (ja)
JP (1) JP5413853B2 (ja)
KR (1) KR101519891B1 (ja)
CN (1) CN101689124A (ja)
WO (1) WO2008140921A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090138683A1 (en) * 2007-11-28 2009-05-28 Capps Jr Louis B Dynamic instruction execution using distributed transaction priority registers
US8886918B2 (en) * 2007-11-28 2014-11-11 International Business Machines Corporation Dynamic instruction execution based on transaction priority tagging
US8453146B2 (en) * 2009-12-23 2013-05-28 Intel Corporation Apportioning a counted value to a task executed on a multi-core processor
US8589934B2 (en) * 2011-04-01 2013-11-19 Arm Limited Controlling priority levels of pending threads awaiting processing
US9310875B2 (en) * 2011-12-22 2016-04-12 Intel Corporation Instruction that specifies an application thread performance state
KR101420592B1 (ko) * 2012-12-21 2014-07-17 전남대학교산학협력단 컴퓨터 시스템
KR101553649B1 (ko) 2013-05-13 2015-09-16 삼성전자 주식회사 멀티 코어 장치 및 멀티 코어 장치의 작업 스케줄링 방법
JP6183049B2 (ja) * 2013-08-15 2017-08-23 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9928068B2 (en) * 2015-12-07 2018-03-27 International Business Machines Corporation Hardware managed dynamic thread fetch rate control
US10572307B2 (en) * 2017-07-26 2020-02-25 Bank Of America Corportion System and method of training machine learning algorithm to satisfactorily allocate resources for task execution
KR102639415B1 (ko) * 2023-07-18 2024-02-23 메티스엑스 주식회사 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07110773A (ja) * 1993-10-12 1995-04-25 Canon Inc タスクの切替え装置
US20010056456A1 (en) * 1997-07-08 2001-12-27 Erik Cota-Robles Priority based simultaneous multi-threading
JP2002532801A (ja) * 1998-12-16 2002-10-02 クリアウオーター・ネツトワークス・インコーポレイテツド マルチストリーミングプロセッサ向けの優先順位付き命令スケジューリング
JP2006099569A (ja) * 2004-09-30 2006-04-13 Kyocera Mita Corp メモリインタフェース回路及びクロック制御方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724565A (en) 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
US5887166A (en) 1996-12-16 1999-03-23 International Business Machines Corporation Method and system for constructing a program including a navigation instruction
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6105051A (en) 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
GB2372847B (en) 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US6918116B2 (en) 2001-05-15 2005-07-12 Hewlett-Packard Development Company, L.P. Method and apparatus for reconfiguring thread scheduling using a thread scheduler function unit
NZ534314A (en) * 2002-01-30 2005-04-29 Real Entpr Solutions Dev B Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor
JP2004234123A (ja) 2003-01-28 2004-08-19 Fujitsu Ltd マルチスレッドコンピュータ
US7469407B2 (en) 2003-04-24 2008-12-23 International Business Machines Corporation Method for resource balancing using dispatch flush in a simultaneous multithread processor
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
US7380247B2 (en) 2003-07-24 2008-05-27 International Business Machines Corporation System for delaying priority boost in a priority offset amount only after detecting of preemption event during access to critical section
US7584344B2 (en) 2006-05-02 2009-09-01 Freescale Semiconductor, Inc. Instruction for conditionally yielding to a ready thread based on priority criteria

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07110773A (ja) * 1993-10-12 1995-04-25 Canon Inc タスクの切替え装置
US20010056456A1 (en) * 1997-07-08 2001-12-27 Erik Cota-Robles Priority based simultaneous multi-threading
JP2002532801A (ja) * 1998-12-16 2002-10-02 クリアウオーター・ネツトワークス・インコーポレイテツド マルチストリーミングプロセッサ向けの優先順位付き命令スケジューリング
JP2006099569A (ja) * 2004-09-30 2006-04-13 Kyocera Mita Corp メモリインタフェース回路及びクロック制御方法

Also Published As

Publication number Publication date
US8832702B2 (en) 2014-09-09
KR20100016347A (ko) 2010-02-12
EP2147373A4 (en) 2011-11-23
CN101689124A (zh) 2010-03-31
WO2008140921A1 (en) 2008-11-20
US20080282251A1 (en) 2008-11-13
EP2147373B1 (en) 2018-11-21
EP2147373A1 (en) 2010-01-27
KR101519891B1 (ko) 2015-05-13
JP5413853B2 (ja) 2014-02-12

Similar Documents

Publication Publication Date Title
JP5413853B2 (ja) マルチスレッド型プロセッサのためのスレッドデエンファシス方法及びデバイス
US8539485B2 (en) Polling using reservation mechanism
JP4610593B2 (ja) デュアルスレッドプロセッサ
JP5894120B2 (ja) ゼロサイクルロード
US9037837B2 (en) Hardware assist thread for increasing code parallelism
JP4642305B2 (ja) マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置
US10761846B2 (en) Method for managing software threads dependent on condition variables
US10078518B2 (en) Intelligent context management
JP5548037B2 (ja) 命令発行制御装置及び方法
US8386753B2 (en) Completion arbitration for more than two threads based on resource limitations
US11275614B2 (en) Dynamic update of the number of architected registers assigned to software threads using spill counts
WO2009006607A1 (en) Dynamically composing processor cores to form logical processors
US8612730B2 (en) Hardware assist thread for dynamic performance profiling
US20130007423A1 (en) Predicting out-of-order instruction level parallelism of threads in a multi-threaded processor
US20120284720A1 (en) Hardware assisted scheduling in computer system
US10102003B2 (en) Intelligent context management
US20110055831A1 (en) Program execution with improved power efficiency
JP2020091751A (ja) 演算処理装置および演算処理装置の制御方法
WO2017199106A1 (en) Single-thread speculative multi-threading
JP2006195705A (ja) プロセッサ
CN116324719A (zh) 具有多个op高速缓存管线的处理器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110427

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20120227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121030

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130508

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130618

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130918

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: 20131015

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131105

R150 Certificate of patent or registration of utility model

Ref document number: 5413853

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250