JP2005514698A - マルチスレッドプロセッサのスレッドの実行のサスペンド処理 - Google Patents

マルチスレッドプロセッサのスレッドの実行のサスペンド処理 Download PDF

Info

Publication number
JP2005514698A
JP2005514698A JP2003558678A JP2003558678A JP2005514698A JP 2005514698 A JP2005514698 A JP 2005514698A JP 2003558678 A JP2003558678 A JP 2003558678A JP 2003558678 A JP2003558678 A JP 2003558678A JP 2005514698 A JP2005514698 A JP 2005514698A
Authority
JP
Japan
Prior art keywords
thread
processor
instruction
resources
selected time
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
JP2003558678A
Other languages
English (en)
Other versions
JP2005514698A5 (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 JP2005514698A publication Critical patent/JP2005514698A/ja
Publication of JP2005514698A5 publication Critical patent/JP2005514698A5/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/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/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/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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
    • 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/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating

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)
  • Executing Machine-Instructions (AREA)

Abstract

マルチスレッドプロセッサのスレッドの実行をサスペンドする技術。一実施例では、プロセッサは複数のスレッド間で分割可能なリソースを有する。プロセッサ論理は、実行の第1スレッドにおいて命令を受信し、当該命令に応答して他のスレッドによる利用のため分割されたリソースの一部を放棄する。

Description

発明の詳細な説明
[関連出願]
本出願は、以下すべてが本出願と同日に出願された出願整理番号第10/039,777号「マルチスレッドプロセッサのスレッドの実行のサスペンド処理(Suspending Execution of a Thread in a Multi−threaded Processor)」、出願整理番号第10/039,656号「特定のメモリアクセスの発生までスレッドの実行をサスペンドするコヒーレンシーテクニック(Coherency Techniques for Suspending Execution of a Thread Until a Specified Memory Access Occurs)」、及び出願整理番号第10/039,650号「特定のメモリアクセスの発生までスレッドの実行をサスペンドする命令シーケンス(Instruction Sequences for Suspending Execution of a Thread Until a Specified Memory Access Occurs)」に関連する。
[背景]
1.技術分野
本開示は、プロセッサの技術分野に関する。より詳細には、本開示は、マルチスレッドプロセッサ及びマルチスレッドプロセッサの1つのスレッドの処理を一時的にサスペンドする技術に関する。
2.関連分野の説明
マルチスレッドプロセッサは、複数の異なる命令シーケンスを同時処理することができる。1つのプロセッサにおいて複数の命令ストリームを実行する主要な動機的要因は、それによるプロセッサの利用効率の向上である。何年もの間、高度なパラレルアーキテクチャが開発されてきたが、複数の実行ユニットを利用する1つの命令ストリームから十分な並列性を抽出することはしばしば困難である。同時マルチスレッドプロセッサにより、複数の命令ストリームが異なる実行リソースにおいてこれらリソースのさらなる利用のため同時に実行されるとことを可能にする。マルチスレッド処理は、長い待ち時間による遅延が発生したり、あるいはイベントの発生を頻繁に待つプログラムに対して特に効果的である。あるスレッドが長い待ち時間を要するタスクが終了するのを待機したり、あるいは特定のイベントのため待機しているとき、他のスレッドが処理される。
プロセッサによるスレッド間のスイッチ時における制御のための様々な技術が提案されてきた。例えば、プロセッサの中には、L2キャッシュミスのような長い待ち時間のイベントを検出し、この検出された長い待ち時間のイベントに応答してスレッドをスイッチするというものがある。このような長い待ち時間のイベントの検出はある状況では効果的かもしれないが、このようなイベントの検出により、スレッドをスイッチすることが効果的なすべてのポイントが検出されるわけではない。特に、イベントベースのスレッドスイッチ処理では、遅延がプログラマーにより意図されているようなプログラムにおいてポイントを検出することは不可能であろう。
実際、プログラマーは、無駄なスピンウェイトループまたは他のリソース消費遅延技術を回避するため、どの時点でスレッドのスイッチングを行うことが効率的かを判断するのにベストなポジションにいる。従って、プログラムによりスレッドのスイッチ処理の制御を可能にすることは、プログラムがより効率的に動作することを可能にするかもしれない。スレッドの選択に影響を与える明示的なプログラム命令はこの目的に関して効果的であるかもしれない。例えば、2000年1月21日に出願された米国特許出願09/489,130号では、「ポーズ(Pause)」命令が説明されている。ポーズ命令は、あるカウントに達するまで、あるいはある命令がプロセッサパイプラインを通過するまで、スレッドの実行を一時的にサスペンドすることを可能にする。しかしながら、上記参照された出願で説明されているポーズ命令はスレッド分割可能リソースが放棄されるべきであるということを特定するものではない。プログラマーによるマルチスレッドプロセッサのリソースのより効率的な利用を可能にする様々なテクニックが有益かもしれない。
本発明は、例を用いて示されるが、添付された図面に制限されるものではない。
[詳細な説明]
以下の説明では、マルチスレッドプロセッサのスレッドの実行をサスペンドする技術が示される。以下の説明では、本発明のより完全な理解を提供するため、論理実施形態、オペコード、オペランド指定手段、リソース分割/共有/重複実施形態、システム構成要素のタイプ及び相互関係、及び論理分割/統合選択などの様々な具体的詳細が与えられる。しかしながら、本発明はそのような具体的詳細なしに実践されうるということを当業者は認識するであろう。他の例では、本発明を不明瞭にしないように、制御構造、ゲートレベル回路及び完全なスフとウェア命令シーケンスは詳細には示されていない。当業者は与えられた説明により、過度の実験を行うことなく適切に機能の実現が可能であろう。
開示されるテクニックは、プログラマーが他のスレッドに処理リソースを利用させながら、あるスレッドにおいてサスペンド機構を実現することを可能にするかもしれない。このため、サスペンドされたスレッドに以前に提供された区画が、当該スレッドのサスペンド中放棄されるかもしれない。上記及び/または他の開示されたテクニックは効果的にプロセッサのトータルのスループットを向上させるかもしれない。
図1は、命令に応答してスレッドをサスペンドすることが可能なサスペンド論理110を有するマルチスレッドプロセッサ100の一実施例を示す。いくつかの実施例では、「プロセッサ」は単一の集積回路として形成されていてもよい。他の実施例では、複数の集積回路から1つのプロセッサが形成されてもよく、さらに他の実施例では、ハードウェア及びソフトウェアルーチン(例えば、バイナリ変換ルーチン)によりプロセッサが形成されてもよい。サスペンド論理は、マイクロコード、様々な形式の制御論理、あるいはおそらく変換、ソフトウェアなどを含む上記機能の他の実施形態であってもよい。
プロセッサ100はメモリ195に接続され、プロセッサによりメモリ195からの命令の抽出及びこれら命令の実行が可能である。メモリとプロセッサは、バスブリッジ、メモリコントローラあるいは他の既知または利用可能な技術を介して、ポイント・ツー・ポイント形式に接続されてもよい。メモリ195は、第1スレッド196と第2スレッド198を含む様々なプログラムスレッドを格納する。第1スレッド196は、SUSPEND命令を含む。
図1の実施例では、バス/メモリコントローラ120は実効命令をフロントエンド130に提供する。フロントエンド130は命令ポインタ170に従って様々なスレッドからの命令の抽出を導く。命令ポインタ論理は複数のスレッドをサポートするのに複製される。更なる処理のため、フロントエンド130は命令をスレッド分割可能リソース140に提供する。スレッド分割可能リソース140は、複数のスレッドがプロセッサ100内でアクティブ状態のとき、特定のスレッドに専用の論理的に分離された区画を有する。一実施例では、分離された各区画は、当該部分が供するスレッドからの命令を含んでいる。スレッド分割可能リソース140は、例えば、命令キューを有するものであってもよい。1つのスレッドモードにおいて、スレッド分割可能リソース140の複数の区画が、当該スレッドに専用の1つの大きな区画を形成するよう合成されてもよい。
プロセッサ100はまた複製状態180を含んでいる。複製状態180は、論理プロセッサのコンテクストを維持するのに十分な状態変数を含んでいる。複製状態180により、複数のスレッドが状態変数格納のため競合することなく実行することができる。さらに、各スレッドに対して、レジスタ割り当て論理が複製されてもよい。複製された状態関連の論理は、入力される実行命令の準備のため適切なリソース区画により動作する。
スレッド分割可能リソース140は、共有リソース150に命令をわたす。共有リソース150は、それら命令のソースに関係なく命令により動作する。例えば、スケジューラと実行ユニットは、スレッドを関知しない共有リソースであってもよい。分割可能リソース140は、各アクティブスレッドに継続的な進行を提供する方法によりスレッド間で交代することにより、複数のスレッドから共有リソース150への命令を提供するかもしれない。このため、共有リソースはスレッドの混合を気にすることなく適当な状態で与えられた命令を実行するかもしれない。
共有リソース150は、他のスレッド分割可能リソース160に続いてもよい。スレッド分割可能リソース160は、リオーダーバッファ(re−order buffer)などのリタイアメントリソース(retirement resources)を含んでいてもよい。これにより、スレッド分割可能リソース160は、各スレッドからの命令の実行が適切に完了し、当該スレッドの適切な状態が適切に更新されることを保証するかもしれない。
上述のように、プログラマーにメモリ配置の定期的なポーリング(polling)や命令のループの実行さえも求めることなく、遅延を実現するテクニックを提供することが望ましいかもしれない。従って、図1のプロセッサ100はサスペンド論理110を有する。サスペンド論理110は、スレッドがサスペンドする期間を提供したり、あるいは一定の遅延を提供するようプログラム可能であるかもしれない。サスペンド論理110は、パイプラインフラッシュ論理112とパーティション/アニール論理(partition/anneal logic)114を有する。
図1の実施例の動作が、図2のフロー図を参照してさらに説明される。一実施例では、プロセッサ100の命令セットには、スレッドサスペンド処理を引き起こすSUSPENDオペコード(命令)が含まれる。ブロック200において、第1スレッド(T1)の命令シーケンスの一部としてSUSPENDオペコードが受信される。ブロック210に示されるように、スレッドT1の実行がサスペンドされる。スレッドサスペンド論理110は、ブロック220に示されるようにすべての命令をクリアするために、プロセッサのパイプラインを排出するパイプラインフラッシュ論理112を含む。一実施例では、パイプラインが排出されると、ブロック230に示されるように、パーティション/アニール論理114は、スレッドT1と排他的に関連付けされている分割されたリソースを他のリソースによる利用のため放棄させる。これらの放棄されたリソースは、残りのアクティブなスレッドが利用するより大きなリソースを形成するようアニールされる。
ブロック235に示されるように、スレッドT1がサスペンドされている期間、他のスレッドが実行されてもよい(命令が実行のため利用可能であると仮定すると)。従って、実質的にスレッドT1からの干渉なく、プロセッサリソースの利用が継続されるかもしれない。他のスレッドへのより十分なプロセッサリソースの提供は、スレッド1が行うべき有益な作業がほとんど、あるいは全くないとき、またはスレッドT1のタスクの完了が優先的なものでないとプログラムが判断したとき、他の有益な実行ストリームの処理を効果的に促進する。
一般的には、スレッドT1がサスペンドすることにより、他のスレッドがより十分にプロセッサのリソースを利用できる実施形態に依存した状態に入る。いくつかの実施例では、プロセッサはT1用の分割可能なリソース140と160の一部または全てを放棄するかもしれない。他の実施例では、関連付けされたSUSPENDオペコードまたは設定の異なる入れ替えは、もしあるとしたら、どのリソースが放棄されるかを示すかもしれない。例えば、プログラマーがより短い待機を期待するとき、スレッドはサスペンドされるが、大部分のリソース区画は維持されるかもしれない。共有リソースはスレッドサスペンド中他のスレッドにより排他的に利用されるかもしれないので、スループットは依然として向上する。より長い待機が期待されるとき、サスペンドされたスレッドに関する全ての区画が放棄されることにより、他のスレッドが追加的なリソースを有することが可能となり、潜在的に他のスレッドのスループットを向上させることができる。しかしながら、スレッドがそれぞれサスペンド及び回復されるとき、区画の削除及び追加によるオーバヘッドを犠牲にして追加的なスループットが得られる。
ブロック240において、サスペンド状態から抜け出すべきか判断される。特定の遅延が発生すると(すなわち、十分な時間が経過すると)、スレッドは回復される。スレッドがサスペンドされている時間は、図3aに示されるように、多くの方法により指定することができる。例えば、プロセッサ300は、マイクロコード310のルーチンにより指定される遅延時間を含むかもしれない。指定された時間が経過したとき、タイマーまたはカウンター312が遅延を実現し、マイクロコードを合図する。あるいは、1以上のヒューズ(fuse)が遅延(D2)の特定に利用されてもよいし、あるいはレジスタ340が遅延(D3)を格納してもよい。遅延(D4)は、プロセッサに接続されるブリッジまたはメモリコントローラ302のコンフィギュレーションレジスタのようなレジスタまたは格納場所により特定されてもよい。遅延(D5)は、BIOS(Basic Input/Output System)により特定されてもよい。あるいは、遅延(D6)はメモリコントローラ302に接続されたメモリ304に格納されてもよい。プロセッサ300は、実行ユニット320により実行されるように、SUSPENDオペコードへの暗示的または明示的オペランドとして遅延値を抽出するようにしてもよい。値を指定する他の既知、あるいは利用可能な、あるいは便利なテクニックが遅延の特定に利用されてもよい。
図2を参照するに、遅延時間が経過しなければ、使用されているタイマー、カウンターあるいは他の測定機構が遅延を追跡し続け、ブロック240へのリターンにより示されるように、スレッドはサスペンドのままとされる。遅延時間が経過すると、ブロック250においてスレッドT1の回復が開始される。ブロック250に示されるように、パイプラインがフラッシュされ、スレッドT1のためのリソースが解放される。ブロック260において、スレッドT1が処理の実行に利用されるスレッド分割可能リソースの一部を有するように、リソースは再分割される。最後に、ブロック270に示されるように、スレッドT1は実行を再開する。
従って、図1及び2の実施例は、スレッドが特定の時間プログラムによりサスペンドされるのを可能にするテクニックを提供する。一実施例では、他のイベントがまたT1を回復させる。例えば、割込みによりT1を回復させるかもしれない。図3bは、他のイベントがサスペンド状態から抜け出させるのを可能にする一実施例によるフロー図を示す。ブロック360において、スレッドは以前の処理によりすでにサスペンドされている。ブロック370において、十分な時間が経過したかどうかチェックされる(図2に関して上述したように)。十分な時間が経過した場合には、ブロック380に示されるように、スレッドT1は回復される。
他方、ブロック365において十分な時間が経過していない場合、ブロック370と375においてサスペンド状態をブレークするイベントが検出される。いくつかの実施例では、もしあるとしたら、どのイベントがサスペンド状態を抜け出させるかを特定するオペランド、コンフィギュレーション設定、SUSPEND命令の入れ替えなどがあるかもしれない。これにより、ブロック370はサスペンド状態をブレークすることが可能なイベントがあるか(及びいくつかの実施例では、どのイベントが可能かを)チェックする。サスペンド状態をブレークすることができるイベントが存在しない場合、プロセスはブロック365に戻る。ブロック375に示されるように可能となるイベントの何れかが発生する場合、スレッドT1はブロック380に示されるように回復される。そうでない場合、プロセッサはスレッドT1をサスペンド状態のままとし、プロセスはブロック365に戻る。
図4は、一実施例によるリソースの分割、複製及び共有を示す。分割されたリソースは、マシーンのアクティブなスレッドの消長に従って、分割及びアニールされる(他のスレッドによる再利用のためヒューズされる)。図4の実施例では、複製されたリソースには、パイプラインの命令フェッチ部分の命令ポインタ論理、パイプラインのリネーム部分のレジスタリネーム論理、状態変数(図示されていないが、パイプラインの様々な段階で参照される)、及び割込みコントローラ(図示されず、一般にパイプラインに非同期な)が含まれる。図4の実施例の共有リソースには、パイプラインのスケジュール段階のスケジューラ、パイプラインのレジスタリード及びライト部分のレジスタプール、及びパイプラインの実行部分の実行リソースが含まれる。さらに、トレースキャッシュとL1データキャッシュは、スレッドのコンテクストとは無関係にメモリアクセスに従って備えられた共有リソースであるかもしれない。他の実施例では、キャッシュ処理における判断にスレッドのコンテクストが利用されてもよい。図4の実施例の分割されたリソースは、パイプラインのキュー処理段階において、パイプラインのリタイアメント段階のリオーダーバッファとストアバッファの2つのキューを有する。スレッド選択多重化論理は、両方のスレッドへの適切なアクセスを提供するため、様々な複製及び分割されたリソース間で切り替えられる。
図4の実施例において、1つのスレッドがサスペンドすると、スレッド1に関するすべての命令が両方のキューから排出される。その後キューの各ペアはより大きなキューを第2のスレッドに提供するため合成される。同様に、レジスタプールからのより多くのレジスタが第2スレッドに利用可能となり、ストアバッファからのより多くのエントリが第2スレッドに解放され、リオーダーバッファのより多くのエントリが第2スレッドに利用可能になる。本質的に、これらの構成は2倍のサイズの1つの専用的な構成に戻される。もちろん、異なるスレッド数を用いた実施形態から異なる比率が生じるかもしれない。
いくつかの実施例では、スレッド分割可能リソース、複製されたリソース及び共有リソースが異なって配備されてもよい。いくつかの実施例では、共有リソースの両端に分割可能なリソースがなくてもよい。いくつかの実施例では、分割可能なリソースは厳密には分割されず、いくつかの命令は複数の区画にわたるか、あるいは当該区画で実行されているスレッドや実行中のトータルのスレッド数に依存して可変サイズとすることが可能となるかもしれない。さらに、リソースの異なる組み合わせが共有、複製及び分割リソースとして指定されるかもしれない。
図5は、開示された技術を利用した設計のシミュレーション、エミュレーション及び製造のための様々な設計表現または形式を示す。設計を表すデータは多数の方法でその設計を表すかもしれない。まず、シミュレーションで有益なように、ハードウェアはハードウェア記述言語または設計されたハードウェアがどのような実行が期待されるかについてのコンピュータ化モデルを本質的に提供する他の機能記述言語を利用して表現されるかもしれない。ハードウェアモデル1110は、それが意図通りに機能するか決定するため、特定のテストパッケージ1130をハードウェアモデル1110に適用するシミュレーションソフトウェア1120を利用してシミュレートできるように、コンピュータメモリのような記憶媒体1100に格納されてもよい。いくつかの実施例では、シミュレーションソフトウェアは、媒体に記録、キャプチャあるいは含まれない。
さらに、論理及び/またはトランジスタゲートを有する回路レベルモデルは、設計プロセスのいくつかの段階で生産されてもよい。このモデルは、ときにはプログラム可能な論理を使うモデル形成する専用ハードウェアシミュレータにより、同様にシミュレートされるかもしれない。このタイプのシミュレーションは、さらに、エミュレーションテクニックであるかもしれない。どの場合でも、再構成可能なハードウェアは、開示された技術を利用したモデルを格納するマシーン読み出し可能な媒体に関する他の実施例である。
さらに、いくつかの段階では、大部分の設計はハードウェアモデルにおける様々なデバイスの物理的配置を表すデータレベルに達する。従来の半導体製造技術が利用されるケースでは、ハードウェアモデルを表すデータは集積回路の生産に利用されるマスクに対する異なるマスクレイヤに関する様々な特徴の有無を特定するデータであるかもしれない。再び、集積回路を表すこのデータは、データにおける回路あるいは論理が開示された技術を実行するためシミュレートまたは製造ことができるという点で、開示された技術を具現化する。
設計のどの表現形態においても、データは任意の形式のコンピュータと乱し可能な媒体に格納されてもよい。そのような情報を送信するために変調あるいは生成される光または電子波1160、メモリ1150、ディスクのような磁気または光学記憶装置1140が媒体であるかもしれない。設計やそれの一部を記述するビット群は、それ自体販売されているから、あるいはさらなる設計あるいは生産のため他のものにより利用される物品である。
従って、マルチスレッドプロセッサにおけるスレッドの実行をサスペンドする技術が開示される。いくつかの実施例が説明され、添付された図面で示されたが、そのような実施例は単なる例示のためのものであり、広範な本発明を限定するものではなく、本開示を研究することにより他の様々な変更が当業者に思い付くかもしれないため、本発明は図示及び説明された特定の構成及び配置に限定されるものではないということは理解されるであろう。
図1は、命令に応答してスレッドをサスペンドし、当該スレッドに関するリソースを放棄する論理を有するマルチスレッドプロセッサの一実施例を示す。 図2は、一実施例による図1のマルチスレッドプロセッサの動作を示すフロー図である。 図3aは、マルチスレッドプロセッサがサスペンドされる時間を指定する様々なオプションを示す。 図3bは、選択された時間の経過あるいはイベントの発生によりサスペンド状態から脱するフロー図を示す。 図4は、一実施例によるリソース分割、共有及び複製を示す。 図5は、開示された技術を利用した設計のシミュレーション、エミュレーション及び製造のための様々な設計表現あるいはフォーマットを示す。

Claims (26)

  1. 各自が複数のスレッド間で分割可能な複数のスレッド分割可能リソースと、
    前記複数のスレッドの第1スレッドからプログラム命令を受信し、前記プログラム命令に応答して、前記第1スレッドの実行をサスペンドさせ、前記複数のスレッドの他のスレッドによる利用のため、前記第1スレッドに関する前記複数のスレッド分割可能リソースの一部を放棄させる論理とを有することを特徴とするプロセッサ。
  2. 請求項1記載のプロセッサであって、前記プログラム命令はサスペンド命令であることを特徴とするプロセッサ。
  3. 請求項1記載のプロセッサであって、前記論理は該プロセッサに選択した時間前記第1スレッドをサスペンドさせることを特徴とするプロセッサ。
  4. 請求項3記載のプロセッサであって、前記選択した時間は固定された時間であることを特徴とするプロセッサ。
  5. 請求項3記載のプロセッサであって、該プロセッサは前記第1スレッドのサスペンド中第2スレッドからの命令を実行することを特徴とするプロセッサ。
  6. 請求項3記載のプロセッサであって、前記選択された時間は、
    前記プログラム命令に関するオペランドの提供処理と、
    前記選択された時間を設定するためのヒューズのブロー処理と、
    前記プログラム命令の復号前に前記選択された時間の格納領域でのプログラム処理と、
    前記選択された時間のマイクロコードでの設定処理とから構成されるセットから選ばれる少なくとも1つの技術によりプログラム可能であることを特徴とするプロセッサ。
  7. 請求項1記載のプロセッサであって、前記複数のスレッド分割可能リソースは命令キューとレジスタプールとを有することを特徴とするプロセッサ。
  8. 請求項7記載のプロセッサであって、さらに、
    複数の実行ユニット、キャッシュ及びスケジューラを有する複数の共有リソースと、
    複数のプロセッサ状態変数、命令ポインタ及びレジスタリネーム論理を有する複数の複製リソースとを有することを特徴とするプロセッサ。
  9. 請求項8記載のプロセッサであって、前記複数のスレッド分割可能リソースは、さらに、複数のリオーダーバッファと複数のストアバッファエントリとを有することを特徴とするプロセッサ。
  10. 請求項1記載のプロセッサであって、前記論理は、さらに、該プロセッサにイベントに応答して前記第1スレッドの実行を再開させることを特徴とするプロセッサ。
  11. 請求項3記載のプロセッサであって、前記論理は、さらに、該プロセッサに前記選択された時間が経過するまでイベントを無視させることを特徴とするプロセッサ。
  12. 請求項1記載のプロセッサであって、該プロセッサはコンピュータ読み出し可能媒体上でデジタルフォーマットにより実現されることを特徴とするプロセッサ。
  13. 実行の第1スレッドで第1オペコードを受け取るステップと、
    前記第1オペコードに応答して選択された時間前記第1スレッドをサスペンドするステップと、
    前記第1オペコードに応答して複数のスレッド分割可能リソースを放棄するステップとを有することを特徴とする方法。
  14. 請求項13記載の方法であって、前記放棄するステップは、より少ないスレッドによって利用可能なより大きな構成となるよう前記複数のスレッド分割可能リソースをアニールすることからなることを特徴とする方法。
  15. 請求項14記載の方法であって、前記放棄するステップは、命令キューの区画を放棄し、レジスタプールから複数のレジスタを放棄することからなることを特徴とする方法。
  16. 請求項15記載の方法であって、前記放棄するステップは、さらに、複数のストアバッファエントリを放棄し、複数のリオーダーバッファエントリを放棄することをからなることを特徴とする方法。
  17. 請求項13記載の方法であって、前記選択された時間は、
    前記第1オペコードに関するオペランドの提供処理と、
    前記選択された時間を設定するためのヒューズのブロー処理と、
    前記プログラム命令の復号前に前記選択された時間の格納領域でのプログラム処理と、
    前記選択された時間のマイクロコードでの設定処理とから構成されるセットから選ばれる少なくとも1つの技術によりプログラム可能であることを特徴とする方法。
  18. 第1命令を有する第1スレッドと第2スレッドとを有する複数のプログラムスレッドを格納するメモリと、
    前記メモリに接続され、複数のスレッド分割可能リソースと複数の共有リソースとを備え、前記メモリからの命令を実行するプロセッサとを有するシステムであって、
    前記プロセッサは前記第1命令の実行に応答して、前記第1スレッドをサスペンドし、前記複数のスレッド分割可能リソースの一部を放棄することを特徴とするシステム。
  19. 請求項18記載のシステムであって、前記プロセッサは、前記第1スレッドのサスペンド中、前記メモリからの前記第2スレッドを実行することを特徴とするシステム。
  20. 請求項19記載のシステムであって、前記プロセッサは前記第1命令に応答して選択された時間前記第1スレッドの実行をサスペンドし、前記選択された時間は、
    前記プログラム命令に関するオペランドの提供処理と、
    前記選択された時間を設定するためのヒューズのブロー処理と、
    前記プログラム命令の復号前に前記選択された時間の格納領域でのプログラム処理と、
    前記選択された時間のマイクロコードでの設定処理とから構成されるセットから選ばれる少なくとも1つの技術により選ばれることを特徴とするシステム。
  21. 請求項18記載のシステムであって、前記複数のスレッド分割可能リソースは、命令キューとレジスタプールとを有することを特徴とするシステム。
  22. 請求項21記載のシステムであって、さらに、
    複数の実行ユニット、キャッシュ及びスケジューラを有する複数の共有リソースと、
    複数のプロセッサ状態変数、命令ポインタ及びレジスタリネーム論理を有する複数の複製リソースとを有することを特徴とするシステム。
  23. 請求項22記載のシステムであって、前記複数のスレッド分割可能リソースは、さらに、複数のリオーダーバッファと複数のストアバッファエントリとを有することを特徴とするシステム。
  24. 第1スレッドから第1命令を受け取る手段と、
    前記第1命令に応答して前記第1スレッドをサスペンドする手段と、
    複数のリソースの複数の区画を放棄する手段と、
    選択された時間後前記複数のリソースを再分割する手段とを有することを特徴とする装置。
  25. 請求項24記載の装置であって、前記第1命令はユーザ実行可能プログラムからのマクロ命令であることを特徴とする装置。
  26. 請求項25記載の装置であって、前記複数のリソースはレジスタプールと命令キューとを有することを特徴とする装置。
JP2003558678A 2001-12-31 2002-12-11 マルチスレッドプロセッサのスレッドの実行のサスペンド処理 Pending JP2005514698A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/039,777 US20030126416A1 (en) 2001-12-31 2001-12-31 Suspending execution of a thread in a multi-threaded processor
PCT/US2002/039790 WO2003058434A1 (en) 2001-12-31 2002-12-11 Suspending execution of a thread in a multi-threaded

Publications (2)

Publication Number Publication Date
JP2005514698A true JP2005514698A (ja) 2005-05-19
JP2005514698A5 JP2005514698A5 (ja) 2005-12-22

Family

ID=21907295

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003558678A Pending JP2005514698A (ja) 2001-12-31 2002-12-11 マルチスレッドプロセッサのスレッドの実行のサスペンド処理

Country Status (9)

Country Link
US (1) US20030126416A1 (ja)
JP (1) JP2005514698A (ja)
KR (1) KR100617417B1 (ja)
CN (1) CN1287272C (ja)
AU (1) AU2002364559A1 (ja)
DE (1) DE10297597T5 (ja)
HK (1) HK1075109A1 (ja)
TW (1) TW200403588A (ja)
WO (1) WO2003058434A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007520825A (ja) * 2004-02-04 2007-07-26 インテル・コーポレーション 待機状態にあるプロセッサ実行リソースの共有
WO2008155797A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 演算装置
WO2008155794A1 (ja) 2007-06-19 2008-12-24 Fujitsu Limited 情報処理装置

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7363474B2 (en) * 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7216346B2 (en) * 2002-12-31 2007-05-08 International Business Machines Corporation Method and apparatus for managing thread execution in a multithread application
US7496915B2 (en) 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
US9032404B2 (en) 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7594089B2 (en) 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7321965B2 (en) 2003-08-28 2008-01-22 Mips Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7836450B2 (en) * 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7376954B2 (en) 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US8533716B2 (en) 2004-03-31 2013-09-10 Synopsys, Inc. Resource management in a multicore architecture
US9189230B2 (en) 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
GB0407384D0 (en) * 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
WO2006120367A1 (en) * 2005-05-11 2006-11-16 Arm Limited A data processing apparatus and method employing multiple register sets
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US8032737B2 (en) * 2006-08-14 2011-10-04 Marvell World Trade Ltd. Methods and apparatus for handling switching among threads within a multithread processor
CN101595456A (zh) 2006-12-27 2009-12-02 莫尔It资源有限公司 用于事务资源控制的方法和系统
US7975272B2 (en) * 2006-12-30 2011-07-05 Intel Corporation Thread queuing method and apparatus
US20080162858A1 (en) * 2007-01-03 2008-07-03 Freescale Semiconductor, Inc. Hardware-based memory initialization with software support
US8725975B2 (en) * 2007-01-03 2014-05-13 Freescale Semiconductor, Inc. Progressive memory initialization with waitpoints
US20080244242A1 (en) * 2007-04-02 2008-10-02 Abernathy Christopher M Using a Register File as Either a Rename Buffer or an Architected Register File
US7707390B2 (en) * 2007-04-25 2010-04-27 Arm Limited Instruction issue control within a multi-threaded in-order superscalar processor
US20090100249A1 (en) * 2007-10-10 2009-04-16 Eichenberger Alexandre E Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core
US8131983B2 (en) * 2008-04-28 2012-03-06 International Business Machines Corporation Method, apparatus and article of manufacture for timeout waits on locks
US20120166777A1 (en) * 2010-12-22 2012-06-28 Advanced Micro Devices, Inc. Method and apparatus for switching threads
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US8578394B2 (en) * 2011-09-09 2013-11-05 Microsoft Corporation Exempting applications from suspension
CN103389911B (zh) * 2012-05-07 2016-08-03 启碁科技股份有限公司 节省系统资源的方法及运用其方法的操作系统
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10346195B2 (en) * 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
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
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
CN103345422B (zh) * 2013-07-02 2019-01-29 厦门雅迅网络股份有限公司 一种基于Linux的多线程硬实时控制方法
US10223026B2 (en) * 2013-09-30 2019-03-05 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored
US10140212B2 (en) 2013-09-30 2018-11-27 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed
US9515901B2 (en) 2013-10-18 2016-12-06 AppDynamics, Inc. Automatic asynchronous handoff identification
US20160170767A1 (en) * 2014-12-12 2016-06-16 Intel Corporation Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor
CN105843592A (zh) * 2015-01-12 2016-08-10 芋头科技(杭州)有限公司 一种在预设嵌入式系统中实现脚本操作的系统
WO2016181554A1 (ja) * 2015-05-14 2016-11-17 株式会社日立製作所 サーバストレージシステムを含んだ計算機システム
US11023233B2 (en) * 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension
US10353817B2 (en) * 2017-03-07 2019-07-16 International Business Machines Corporation Cache miss thread balancing
WO2018165952A1 (zh) * 2017-03-16 2018-09-20 深圳大趋智能科技有限公司 iOS线程恢复的方法及装置
TWI647619B (zh) * 2017-08-29 2019-01-11 智微科技股份有限公司 用來於一電子裝置中進行硬體資源管理之方法以及對應的電子裝置
CN109471673B (zh) * 2017-09-07 2022-02-01 智微科技股份有限公司 用来于电子装置中进行硬件资源管理的方法及电子装置
US10481915B2 (en) * 2017-09-20 2019-11-19 International Business Machines Corporation Split store data queue design for an out-of-order processor
GB201717303D0 (en) 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor
GB2569098B (en) * 2017-10-20 2020-01-08 Graphcore Ltd Combining states of multiple threads in a multi-threaded processor

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5357617A (en) * 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
JP3678759B2 (ja) * 1992-07-21 2005-08-03 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 割込を発生するための装置および割込を発生するための方法
US5584031A (en) * 1993-11-09 1996-12-10 Motorola Inc. System and method for executing a low power delay instruction
JPH08320797A (ja) * 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
KR100500002B1 (ko) * 1996-08-27 2005-09-08 마츠시타 덴끼 산교 가부시키가이샤 복수의명령흐름을독립적으로처리하고,명령흐름단위로처리성능을유연하게제어하는멀티스레드프로세서
US5961639A (en) * 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
WO1998043193A2 (en) * 1997-03-21 1998-10-01 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
US6401155B1 (en) * 1998-12-22 2002-06-04 Philips Electronics North America Corporation Interrupt/software-controlled thread processing
SG65097A1 (en) * 1998-12-28 2001-08-21 Compaq Computer Corp Break event generation during transitions between modes of operation in a computer system
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6931639B1 (en) * 2000-08-24 2005-08-16 International Business Machines Corporation Method for implementing a variable-partitioned queue for simultaneous multithreaded processors
AU2002326378A1 (en) * 2001-07-13 2003-01-29 Sun Microsystems, Inc. Facilitating efficient join operations between a head thread and a speculative thread

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007520825A (ja) * 2004-02-04 2007-07-26 インテル・コーポレーション 待機状態にあるプロセッサ実行リソースの共有
JP2012104140A (ja) * 2004-02-04 2012-05-31 Intel Corp 待機状態にあるプロセッサ実行リソースの共有
WO2008155794A1 (ja) 2007-06-19 2008-12-24 Fujitsu Limited 情報処理装置
KR101100144B1 (ko) 2007-06-19 2011-12-29 후지쯔 가부시끼가이샤 정보처리장치
US8151097B2 (en) 2007-06-19 2012-04-03 Fujitsu Limited Multi-threaded system with branch
JP5104861B2 (ja) * 2007-06-19 2012-12-19 富士通株式会社 演算処理装置
WO2008155797A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 演算装置
EP2423808A1 (en) 2007-06-20 2012-02-29 Fujitsu Limited Arithmetic device
JP5099131B2 (ja) * 2007-06-20 2012-12-12 富士通株式会社 演算装置
US8407714B2 (en) 2007-06-20 2013-03-26 Fujitsu Limited Arithmetic device for processing one or more threads

Also Published As

Publication number Publication date
KR20040069352A (ko) 2004-08-05
AU2002364559A1 (en) 2003-07-24
US20030126416A1 (en) 2003-07-03
KR100617417B1 (ko) 2006-08-30
CN1287272C (zh) 2006-11-29
HK1075109A1 (en) 2005-12-02
CN1608246A (zh) 2005-04-20
WO2003058434A1 (en) 2003-07-17
DE10297597T5 (de) 2005-01-05
TW200403588A (en) 2004-03-01

Similar Documents

Publication Publication Date Title
JP2005514698A (ja) マルチスレッドプロセッサのスレッドの実行のサスペンド処理
TWI590153B (zh) 用於多線串處理之方法
US7127561B2 (en) Coherency techniques for suspending execution of a thread until a specified memory access occurs
US6256775B1 (en) Facilities for detailed software performance analysis in a multithreaded processor
US8205204B2 (en) Apparatus and method for scheduling threads in multi-threading processors
TWI266987B (en) Method for monitoring locks, processor, system for monitoring locks, and machine-readable medium
JP5415069B2 (ja) スレッドレベルの投機実行を拡張するためのプリミティブ
US7254697B2 (en) Method and apparatus for dynamic modification of microprocessor instruction group at dispatch
US6334182B2 (en) Scheduling operations using a dependency matrix
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
EP0962856A2 (en) A dual-mode VLIW architecture with software-controlled parallelism
US20050120194A1 (en) Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
KR100940956B1 (ko) 다중 스레드 초장 명령어 프로세서 및 명령 처리 방법
US20030126379A1 (en) Instruction sequences for suspending execution of a thread until a specified memory access occurs
US6032244A (en) Multiple issue static speculative instruction scheduling with path tag and precise interrupt handling
JP4956891B2 (ja) 演算処理装置,情報処理装置および演算処理装置の制御方法
JP3816844B2 (ja) プロセッサ及び命令制御方法
JP5104862B2 (ja) 命令実行制御装置及び命令実行制御方法
JPH09274567A (ja) プログラムの実行制御方法及びそのためのプロセッサ
Lankamp Developing a reference implementation for a microgrid of microthreaded microprocessors
JPH07244588A (ja) データ処理装置
JP2000020310A (ja) プロセッサ
JPH02138625A (ja) データ処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060404

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060703

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061004

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20061205