JP2006500639A - 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 - Google Patents

指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 Download PDF

Info

Publication number
JP2006500639A
JP2006500639A JP2003558691A JP2003558691A JP2006500639A JP 2006500639 A JP2006500639 A JP 2006500639A JP 2003558691 A JP2003558691 A JP 2003558691A JP 2003558691 A JP2003558691 A JP 2003558691A JP 2006500639 A JP2006500639 A JP 2006500639A
Authority
JP
Japan
Prior art keywords
thread
monitor
processor
address
instruction
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
JP2003558691A
Other languages
English (en)
Other versions
JP2006500639A5 (ja
JP4601958B2 (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 JP2006500639A publication Critical patent/JP2006500639A/ja
Publication of JP2006500639A5 publication Critical patent/JP2006500639A5/ja
Application granted granted Critical
Publication of JP4601958B2 publication Critical patent/JP4601958B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/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
    • 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
    • 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

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする技術。一実施例では、プロセッサは複数のスレッドを実行することができる複数の実行ユニットを有する。第1スレッドはモニタアドレスを指定する命令を有する。サスペンド論理は第1スレッドの実行をサスペンドし、モニタは指定されたモニタアドレスへのアクセスに応答して、第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つのプロセッサを構成するかもしれないし、さらなる他の実施例では、ハードウェア及びソフトウェアルーチン(例えば、バイナリ変換ルーチン)が一緒になってプロセッサを構成するかもしれない。図1の実施例では、バス/メモリコントローラ120が実行命令をフロントエンド130に提供する。フロントエンド130は、命令ポインタ170に従って様々なスレッドからの命令の抽出を指示する。命令ポインタ論理は複数のスレッドをサポートするよう複製される。
フロントエンド130は、さらなる処理のため命令をスレッド分割可能リソース140に供給する。スレッド分割可能リソース140は、複数のスレッドがプロセッサ100内でアクティブであるとき、特定のスレッドに専用の論理的に分離された区画を有する。一実施例では、各分離した区画は、当該区画用のスレッドからの命令のみを有する。スレッド分割可能リソース140は、例えば、命令キューを含んでいてもよい。シングルスレッドモードでは、スレッド分割可能リソース140の複数の区画が、この1つのスレッドに専用のより大きな1つの区画を形成するよう合成される。
プロセッサ100はまた複製状態180を有する。複製状態180は、論理プロセッサのためのコンテクストを維持するのに十分な状態変数を有する。複製状態180では、状態変数の格納の競合なく複数のスレッドを実行することができる。さらに、各スレッドにレジスタ割当て論理が複製されてもよい。複製された状態関連の論理は、入力される実行命令のための適切なリソース区画により動作する。
スレッド分割可能リソース140は、共有リソース150に命令をわたす。共有リソース150は、それらのソースに関係なく命令に応じて動作する。例えば、スケジューラと実行ユニットはスレッドに関しない共有リソースであってもよい。分割可能リソース140は、各アクティブスレッドでの持続的な継続によりスレッド間での切り替えにより複数のスレッドから共有リソース150への命令を供給するかもしれない。これにより、共有リソースは、スレッドの混合を考慮することなく適切な状態で与えられた命令を実行することができる。
共有リソース150は他のスレッド分割可能リソース160に続いてもよい。スレッド分割可能リソース160は、リオーダーバッファ(re−order buffer)などのリタイアメントリソース(retirement resource)を含んでいてもよい。これにより、スレッド分割可能リソース160は、各スレッドからの命令の実行が適切に完了し、当該スレッドの適切な状態が適切に更新されることを保証するかもしれない。
上述のように、プログラマーにメモリ配置の定期的なポーリング(polling)や命令の実行さえも求めることなく、スピンウェイトループ(spin−wait loop)機能を実現するテクニックを与えることが望ましいかもしれない。従って、図1のプロセッサ100はメモリアクセスモニタ110を有する。メモリアクセスモニタ110は、モニタ110による監視が可能なメモリアクセスサイクルについての情報によりプログラム可能である。従って、モニタ110は、比較論理114によりバス/メモリコントローラ120から受信されるバスサイクル情報と比較されるモニタサイクル情報レジスタ112を有する。一致した場合には、再開スレッド信号が生成され、サスペンドしていたスレッドが再開される。プロセッサの内部及び/または外部バスからメモリアクセス情報が取得されてもよい。
モニタサイクル情報レジスタ112は、スレッドの再開をトリガーするサイクルタイプ及び/またはアドレスを指定する詳細を含んでもよい。一実施例では、モニタサイクル情報レジスタ112は物理的アドレスを格納し、モニタは当該物理的アドレスへの実際または潜在的な書き込みを示すバスサイクルを監視する。そのようなサイクルは、明示的なライト(write)サイクルの形式であってもよいし、及び/またはオーナー権限でのリード(read)あるいは、外部バス処理なしの当該ラインへの書き込みが可能となるキャッシュ可能ラインの排他的なオーナー権限を取得しようとする他のエージェントによる無効サイクルであってもよい。何れの場合でも、モニタは異なる実施例での様々な処理に関するトリガーとなるようプログラムされるかもしれない。
図2のフロー図を参照して、図1の実施例の動作がさらに説明される。一実施例では、プロセッサ100の命令セットはモニタ処理情報を設定するMONITORオペコード(命令)を有する。ブロック200において、MONITORオペコードは第1スレッド(T1)の命令シーケンスの一部として受信される。ブロック210に示されるように、MONITORオペコードに応答して、プロセッサ100はモニタ110が指定されたメモリアクセスに対するメモリアクセスを監視することが可能である。メモリアクセスのトリガーは明示的または非明示的オペランドにより指定されてもよい。従って、MONITORオペコードの実行は、モニタアドレスが非明示的オペランドとしてレジスタまたは他の領域に予め格納することが可能であるため、当該モニタアドレスの指定が可能であるかもしれない。ブロック215に示されるように、モニタはこの指定されたサイクルが検出されるかどうかチェックする。もし検出されなければ、モニタはメモリアクセスの監視を継続する。トリガーとなるサイクルが検出されれば、モニタイベント保留指標がブロック220で示されるように設定される。
MONITORオペコードの実行はモニタ110の起動をトリガーする。モニタ110はプロセッサの他の処理とパラレルに動作を開始するかもしれない。一実施例では、MONITOR命令が適切なメモリサイクル情報によりモニタ110を設定し、モニタイベントを表面化することなくも似た110を起動する。言い換えると、本実施例では、MONITORオペコードの実行後、モニタイベントが発生するかもしれないが、それらが明示的に表面化されなければ、認識されることはないであろう。
従って、ブロック225において、メモリ待機のトリガーは別のイベントとして示される。いくつかの実施例では、メモリ待機(MWAIT)オペコードはモニタイベントの認識及びT1のサスペンドをトリガーするのに利用されるかもしれない。異なる2つの命令を利用して、スレッドサスペンドの設定及びトリガーを行うことは、プログラマーに付加的なフレキシビリティを提供し、より効率的なプログラミングを可能にするかもしれない。しかしながら、他の実施例では、モニタ110を設定する第1オペコードからメモリ待機がトリガーされる。何れの場合も、1以上の命令によりモニタは準備され、モニタイベントの認識を可能にする。
異なるオペコードがモニタ110の準備とモニタイベントの認識をトリガーするのに利用される実施例では、ブロック230に示されるようなスレッドのサスペンド前にモニタが起動されるのを保証するためのチェックが行われることが効果的であるかもしれない。さらに、モニタイベントがすでに保留されているかどうかチェックすることにより(図示せず)、T1のサスペンドが回避され、ブロック250において動作が継続される。モニタ110がイネーブル状態にあり、かつモニタイベントの保留がないと仮定すると、T1はブロック235に示されるようにサスペンドされるかもしれない。
T1のサスペンドにより、プロセッサは他のスレッドがプロセッサリソースをより完全に利用することが可能な実施形態に依存した状態に入る。いくつかの実施例では、プロセッサはT1専用の分割可能リソース140及び160の区画の一部またはすべてを放棄するかもしれない。他の実施例では、MONITORオペコードの異なる置換あるいはそれに関する設定により、もしあるとすれば、どのリソースが放棄されるべきか示されるかもしれない。例えば、プログラマーがより短い待機を予想する場合、スレッドはサスペンドされるが、それのリソース区画を維持するかもしれない。共有リソースはスレッドサスペンド期間中の他のスレッドにより排他的に利用されるため、スループットは依然として向上する。より長い待機が予想される場合、サスペンドされているスレッドに関するするすべての区画の放棄は他のスレッドが追加的なリソースを有することを可能とするため、潜在的にその他のスレッドのスループットを増大させる。しかしながら、各スレッドがサスペンド及び再開されるとき、区画の削除及び追加に関するオーバヘッドを犠牲にして追加的なスループットが可能となる。
モニタイベントの保留中、T1はサスペンド状態を維持する。前述のように、モニタ110はモニタイベント(ブロック215−220)の検出及び合図を行うよう独立に動作する。プロセッサによりブロック240において保留中のモニタイベントが検出されると、ブロック250に示されるようにT1が再開される。モニタイベントがT1を覚醒させるT1での命令のアクティブな処理の発生が必要である。むしろT1はサスペンド状態のままであり、イネーブル状態のモニタ110はプロセッサにイベントを合図する。プロセッサは当該イベントを処理し、このイベントがT1の再開を示していると認識し、T1を再開するための適切なアクションを実行する。
従って、図1及び2の実施例では、プログラムによりサスペンドされたスレッドが指定されたメモリアクセスの発生により再開されることを可能にするテクニックが提供される。一実施例では、他のイベントがまたT1を再開させる。例えば、割込みによりT1が再開されるかもしれない。そのような実現形態では、モニタが特定のメモリアクセスや、スレッドの再開を引き起こす他の状態を見逃す(検出しない)という点で完全なものとしないことが効果的である。その結果、T1はときどき不必要に覚醒されるかもしれない。しかしながら、そのような実現形態では、見逃されたイベントによりT1が永遠に凍結される可能性が低減され、ハードウェア設計及び検証を簡素化する。T1が覚醒する状態が真に発生したかT1に二重にチェックさせ、そうでない場合再びT1をサスペンドするようループが構成されるため、T1の不必要な覚醒は軽視できるほどの不便さであるかもしれない。
いくつかの実施例では、スレッド分割可能リソース、複製リソース及び共有リソースが異なって構成されるかもしれない。いくつかの実施例では、共有リソースの両端に分割可能リソースは存在しないかもしれない。いくつかの実施例では、分割可能リソースは厳密には分割されず、むしろある命令により区画の重複が可能となるようにされるか、あるいは当該区画で実行されるスレッドまたは実行される区画の総数に依存して、区画サイズが可変となるようにされるかもしれない。さらに、異なるリソースの組み合わせが共有、複製及び分割リソースとして指定されるかもしれない。
図3は、マルチスレッドプロセッサの一実施例のさらなる詳細を示す。図3の実施例は、コヒーレンシー関連論理350と、モニタ310の一実施形態と、スレッドサスペンド再開論理377の特定の一実施形態とを有する。図3の実施例では、バスインタフェース300は、バスコントローラ340と、イベント検出論理345と、モニタ310と、コヒーレンシー関連論理350とを有する。
バスインタフェース300は、マイクロ命令からマイクロオペランド(uOP)を生成するuOPを生成する命令をフロントエンド365に提供する。実行リソース370はフロントエンド365からuOPを受け取り、バックエンド論理380は実行後様々なuOPをリタイヤする。一実施例では、アウトオブオーダー(out−of−order)実行が、フロントエンド、バックエンド及び実行リソースによりサポートされる。
図5から9に関して様々な動作の詳細がさらに説明される。しかしながら、簡単には、MONITORオペコードがバスインタフェース300を介しプロセッサに入力され、フロントエンド365による実行のため準備されてもよい。一実施例では、実行リソース370による実行のため、特別なMONITOR uOPが生成される。MONITOR uOPは実行ユニットによるストア処理と同様に処理されてもよく、モニタアドレスがアドレス変換論理375により物理的アドレスに変換され、モニタ310に提供される。モニタ310は、スレッドを再開させるため、スレッドサスペンド再開論理377と通信する。スレッドサスペンド再開論理は、アクティブ状態のスレッド数が変化するに従って、分割及びアニール(anneal)リソースを実行してもよい。
例えば、図4は、一実施例によるリソースの分割、複製及び共有を示す。分割リソースは、マシーンのアクティブ状態のスレッドの消長に従って、分割及びアニールされてもよい(他のスレッドによる再利用のためヒューズバックされる)。図4の実施例では、複製リソースは、パイプラインの命令フェッチ部分の命令ポインタ論理、パイプラインのリネーム部分のレジスタリネーム論理、状態変数(図示しないが、パイプラインの様々な段階で参照される)、及び割込みコントローラ(図示しないが、一般にパイプラインに非同期)を有する。図4の実施例における共有リソースは、パイプラインのスケジュール段階のスケジューラ、パイプラインのレジスタリード及びライト部分のレジスタプール、及びパイプラインの実行部分の実行リソースを有する。さらに、トレースキャッシュ及びL1データキャッシュは、スレッドのコンテクストに関係なくメモリアクセスに従い配備された共有リソースであってもよい。他の実施例では、スレッドコンテクストがキャッシュ処理の決定において考慮されてもよい。図4の実施例の分割リソースは、パイプラインのキュー処理段階の2つのキュー、パイプラインのリタイアメント段階でのリオーダーバッファ、及びストアバッファを有する。スレッド選択多重化論理は、両方のスレッドへの適切なアクセスを提供する様々な複製及び分割リソース間で交替にする。
例示のため、図4に示される分割、共有及び複製は、図3のプロセッサの一実施例による動作のさらなる説明において、図3の実施例に関して利用される。特に、図3の実施例による動作のさらなる詳細は、図5のフロー図に関して説明される。プロセッサは、アクティブ状態の少なくとも2つのスレッドを有するマルチスレッドモードで実行すると仮定される。
ブロック500において、第1スレッド(T1)の実行中、フロントエンド365はMONITORオペコードを受信する。一実施例では、特別なモニタuOPがフロントエンド365により生成される。このMONITOR uOPは実行リソース370にわたされる。モニタuOPは監視対象のアドレスを示す関連付けされたアドレス(モニタアドレス)を有する。この関連付けされたアドレスは、明示的オペランドまたは非明示的オペランドの形式であるかもしれない(すなわち、関連付けされたアドレスは所定のレジスタまたは他の格納領域から取得される)。この関連付けされたアドレスは、モニタアドレスの決定に十分な情報を伝達するという点で、モニタアドレスを「示している」(おそらく他のレジスタまたは情報に関連して)。例えば、関連付けされたアドレスは、適切なモニタアドレスである対応する物理的アドレスを有するリニアアドレス(linear address)であるかもしれない。あるいは、モニタアドレスはバーチャルなアドレスフォーマットで与えられるかもしれないし、あるいは相対アドレスとして示されるかもしれないし、あるいは他の既知または便利なアドレス指定方法により指定されるかもしれない。バーチャルなアドレスオペランドが利用される場合、一般的保護エラーがブレークイベントとして認識されることを可能にすることが望ましいかもしれない。
モニタアドレスは、監視のための任意の便利なメモリユニットを示すかもしれない。例えば、一実施例では、モニタアドレスはキャッシュラインを示すかもしれない。しかしながら、他の実施例では、モニタアドレスは、キャッシュラインの一部、異なるプロセッサのキャッシュラインサイズに対して異なる関係を生み出す指定/選択されたサイズのメモリ部分またはユニット、あるいは1つのアドレスを示すかもしれない。従って、モニタアドレスは、オペランドにより指定されるデータ(及び複数のデータ)を有するユニットを示すものであってもよいし、あるいは所望のデータユニットのアドレスを具体的に示すものであってもよい。
図3の実施例では、モニタアドレスは、アドレス変換論理375に与えられ、モニタ310にわたされ、モニタアドレスレジスタ335に格納される。MONITORオペコードに応答して、ブロック510に示され、図6においてさらに詳述されるように、実行リソース370はイネーブル状態とされ、モニタ310を起動する。図6に関してさらに以下で後述されるように、スレッドサスペンド処理の発生前にストアが処理及び検出されることを保証するため、MONITORオペコード後に発生する任意のストア処理を制限することが効果的であるかもしれない。従って、本実施例において以降の任意の命令が開始される前に、モニタ310の起動の結果として、いくつかの処理が発生する必要があるかもしれない。しかしながら、本実施例では、モニタ310がMONITORオペコードにより起動されると、モニタ310はブレークイベントが発生するまで他の処理とパラレルに動作を継続するため、ブロック510はブロック505とパラレルに発生するよう示される。
ブロック505において、メモリ待機(MWAIT)オペコードがスレッド1で受信され、実行にわたされる。図5の実施例では、MWAITオペコードの実行はモニタイベントを表面化する。MWAITオペコードに応答して、ブロック515に示されるように、モニタイベントが保留中であるかチェックされる。モニタイベントが保留中でない場合、ブロック520においてモニタがアクティブ状態であることを保証するため、チェックが行われる。例えば、以前にMONITORを実行することなくMWAITが実行される場合、モニタ310はアクティブ状態ではないであろう。モニタがアクティブ上体でない場合、あるいはモニタイベントが保留中である場合、スレッド1の実行がブロック580において継続される。
モニタ310がアクティブ状態であり、かつモニタイベントが保留中でない場合、ブロック525に示されるように、スレッド1の実行はサスペンドされる。スレッドサスペンド/再開論理377は、ブロック530に示されるように、すべての命令をクリアするため、プロセッサのパイプラインを排出するパイプラインフラッシュ論理382を有する。パイプラインが排出されると、分割/アニール論理385は、ブロック535に示されるように、スレッド1と排他的に関連付けされている任意の分割リソースを他のスレッドによる利用のため放棄させる。これら放棄されたリソースは、残りのアクティブ状態のスレッドが利用するより大きなリソースを形成するようアニールされる。例えば、図4の2つのスレッドの例を参照するに、スレッド1に関するすべての命令は両方のキューから排出される。その後、キューの各ペアがより大きなキューを第2スレッドに提供するため合成される。同様に、レジスタプールからより多くのレジスタが第2スレッドに利用可能となり、ストアバッファからより多くのエントリが第2スレッドに提供され、リオーダーバッファのより多くのエントリが第2スレッドに利用可能となる。本質的に、これらの構成は2倍のサイズの1つの専用構成に返される。もちろん、異なるスレッド数を使った実施形態からは異なる比率のものが生成される。
ブロック540、545及び550において、スレッド1が再開されるべきか決定する様々なイベントがチェックされる。特に、これらのチェックは他のスレッドの処理とパラレルに実行される。図6に関してさらに詳述されるように、モニタはモニタライトイベントが発生したかチェックし、設定によりイベント保留指標を示す。イベント保留指標は、EVENT信号を介してサスペンド/再開論理377(すなわち、マイクロコード)に提供される。モニタイベントはブロック505においてMWAITオペコードにより表面化されていたため、一実施例(ブロック540)では、マイクロコードは適切な命令境界においてモニタイベントを認識するかもしれない。イベント検出論理345は、割込みのようなブレークイベント(ブロック545)として指定される他のイベントを検出するかもしれない。さらに、プロセッサが特定のイベントシーケンスにより凍結されることを保証するため、オプショナルなタイマーがメモリ待機状態から定期的に抜け出すように利用されるかもしれない(ブロック550)。これらイベントのどれもがメモリ待機状態への脱出を合図しなければ、スレッド1はサスペンドのままである。
スレッド1が再開されれば、スレッド/サスペンド再開論理377が適切なイベントの検出に応じて再び起動される。再び、ブロック560に示されるように、間もなく覚醒されるスレッド1を収容するようリソースが再び分割可能となるように、パイプラインから命令を排出するためパイプラインがフラッシュされる。ブロック570において、適切なリソースが再分割され、スレッド1がブロック580において再開される。
図6aは、モニタ310の起動と動作のさらなる詳細を示す。ブロック600において、スレッド1のフロントエンドフェッチ処理が、さらなるスレッド1の処理がマシーンに入るのを回避するよう中断される。ブロック605において、アドレス変換論理375により、関連付けされたアドレスオペランドはリニアアドレスから物理的アドレスに変換される。ブロック610において、監視されているアドレスへの書き込みの観察可能性が向上される。一般に、この処理の目的は、モニタ310が閲覧可能なモニタアドレスに格納されている情報に影響を与えるライト処理をキャッシュエージェントに実行させることである。図6bに関して一実施例のさらなる詳細が説明される。ブロック615において、物理的アドレスがこのシーケンスの前後に格納されてもよいが、監視のため格納される。
次にブロック620に示されるように、モニタがイネーブル状態にされる。モニタは、モニタアドレスレジスタ335に格納されるモニタアドレスである物理的アドレスへの書き込みのためバスサイクルを監視する。図7を参照して、監視処理のさらなる詳細が後述される。モニタがイネーブル状態となった後、ストア制限処理がブロック625に示されるように実行される。このストア制限は、マシーンのすべてのストアがMONITORオペコードの実行完了時に処理されることを保証するのに役立つ。すべてのストアがMONITORの前にマシーンから排出されることにより、メモリ待機状態が誤って入力される可能性が低減される。しかしながら、このストア制限処理は予防的措置であり、時間のかかる処理となりうる。
このストア制限はオプション的なものである。なぜなら、本実施例のMONITOR/MWAIT機構は複数のエグジット機構(exit mechanism)として設計されているためである。言い換えると、割込み、システムまたは搭載タイマーなどの様々なイベントは、メモリ待機状態から抜け出させるかもしれない。従って、本実施例では、スレッドが覚醒される唯一の理由は、監視されるデータ値の変更によるものであるということは保証されない。従って、本実施形態では、メモリに格納されている特定の値が変更されたかソフトウェアにより二重にチェックされる(以下の図9aから9cを参照せよ)。一実施例では、INTR、NMI及びSMI割込み、マシーンチェック割込み及びエラーのアサーションを含むイベントがブレークイベントであり、パワーダウンイベントを含む他のものはブレークイベントではない。一実施例では、A20Mピンのアサーションはまたブレークイベントである。
ブロック630に示されるように、モニタはバスサイクルの発生がモニタアドレスへの書き込みを示すか、あるいは示しているらしいかをチェックし続ける。そのようなバスサイクルが検出されると、ブロック635に示されるように、モニタイベント保留指標が設定される。MWAITオペコードの実行後(図5のブロック505)、このイベント保留指標はイベントとして機能し、図5のブロック560−580においてスレッドを再開させる。さらに、アドレス変換を変更するイベントがスレッド1を再開させるかもしれない。例えば、変換ルックアサイドバッファ(translation look−aside buffer)をフラッシュさせるイベントがスレッド1の再開をトリガーするかもしれない。なぜなら、リニアアドレスから物理的アドレスへのモニタアドレスの生成で行われる変換はもはや有効でないかもしれないためである。例えば、x86インテルアーキテクチャコンパチブルプロセッサにおいて、制御レジスタCR0、CR3及びCR4と特定のマシーンに特有のレジスタへの書き込みは、メモリ待機状態の脱出を引き起こすかもしれない。
上述のように、図6bは、モニタアドレスへの書き込みの観察可能性の拡張のさらなる詳細を示す(図6aのブロック610)。一実施例では、ブロック650に示されるように、プロセッサはモニタアドレスに関連付けされたキャッシュラインをプロセッサのすべての内部キャッシュからフラッシュする。このフラッシュ処理の結果として、モニタアドレスへの以降の任意の書き込みがバスインタフェース300に届き、バスインタフェース300に含まれるモニタ310による検出を可能にする。一実施例では、MONITOR uOPがモデル化され、x86命令セットの既存の命令であるキャッシュラインフラッシュCLFLUSH命令と同じエラーモデルを有する。モニタuOPは、リニアを介してアドレスの物理的変換に進み、CLFLUSHと同様の内部キャッシュのフラッシュ処理が行われる。しかしながら、バスインタフェースはMONITORとCLFLUSHとの差異を認識し、適切にMONITOR uOPを処理する。
次にブロック655に示されるように、バスインタフェース300のコヒーレンシー関連論理350は、プロセッサバス上でリードライン処理を生成するためリードライン生成論理355を起動する。モニタアドレスへのリードライン処理は、バス上のプロセッサの他のキャッシュが、共有状態または排他的状態の何れかでモニタアドレスのデータを格納することを保証する(羞恥のMESIプロトコルに従って)。他のプロトコルでは、他の状態が利用されるかもしれない。しかしながら、この処理はモニタ310による閲覧可能でなくとも他のエージェントがモニタアドレスに書き込みを行うことができる可能性を低減するよう設計されている。言い換えると、ライトまたは書き込みを示す処理がモニタにより検出することができるように、以降において配信される。リードライン処理が実行されると、モニタ310はバス上の処理の監視を開始する。
バス上で追加的な処理が発生すると、コヒーレンシー関連論理は、バスエージェントが監視されているアドレスに関連付けされたキャッシュラインのオーナー権限を取得することを回避しようとすることにより、モニタアドレスの閲覧可能性を保持し続ける。1つのバスプロトコルによると、これは、ブロック660に示されるように、モニタアドレスのリードの探索段階においてHIT#信号をアサートするヒット生成論理360により達成されるかもしれない。HIT#のアサート処理は、他のキャッシュがMESIプロトコルにおける共有状態を越えて、排他的及び潜在的には変更
状態に移行するのを回避する。その結果、ブロック665に示されるように、選ばれたコヒーレンシー領域(コヒーレンシーを維持するメモリ部分)のどのエージェントも変更または排他的状態(またはそれらと等価なもの)でデータを有することが可能である。本実施例では内部キャッシュからフラッシュされたとしても、プロセッサはモニタキャッシュのキャッシュラインを効果的にキャッシュするようである。
図7を参照するに、図6aのブロック620に関する処理のさらなる詳細が説明される。特に図7は、モニタ310の処理のさらなる詳細を示す。ブロック700において、モニタ310はバス処理のためバスコントローラ340からリクエストとアドレス情報を受信する。ブロック710に示されるように、モニタ310はバスサイクルタイプと影響を得けるアドレスを調べる。特に、サイクル比較論理320はバスサイクルが指定されたサイクルであるか判断する。一実施例では、アドレス比較回路330は、バス処理アドレスとモニタアドレスレジスタ335に格納されているモニタアドレスとを比較し、ライト検出論理325は書き込みが発生したか検出するため、バスコントローラ340からサイクルタイプ情報を復号する。モニタアドレスへの書き込みが発生すると、ブロック720に示されるように、モニタイベント保留指標が設定される。イベントを合図するため、信号(WRITE DETECTED)がスレッドサスペンド/再開論理377に提供される(そして、MWAITを実行することによりイネーブル状態になったと仮定して提供される)。最後に、モニタ310がブロック730に示されるように停止される。モニタの停止は電力を節約するが、エラーモニタイベントが隠されている限り、そうでなければ生成されない限り、それは重要ではない。モニタイベント指標はまたこの時点でリセットされてもよい。典型的には、モニタイベントの提供は、MWAITが再び実行されるまで、さらなるモニタイベントの認識を隠す。
モニタアドレスへのリードの場合、コヒーレンシー関連論理350が起動される。ブロック740に示されるように、コヒーレンシー配信を行うことなく以降の書き込みを可能にするオーナー権限を他のエージェントが取得することを防ぐため、信号(HIT#のような)がアサートされる。モニタ310は、アクティブ状態を維持し、ブロック700に戻って、モニタアドレスの読み出しにより影響を受けない。さらに、処理がモニタアドレスに対する読み出し及び書き込みのどちらでもなければ、モニタはアクティブ状態を維持し、ブロック700に戻る。
いくつかの実施例では、あるアクセスタイプのみが監視されるようにMONITOR命令が制限される。これらのアクセスは効率的なプログラミングテクニックを示すものとして選ばれたものであってもよいし、あるいは他の理由により選ばれたものであってもよい。例えば、一実施例では、メモリアクセスは自然と揃えられたライトバックメモリ(write−back memory)のキャッシュ可能なストアでなければならない。自然に揃えられた要素は、Nで割り切れるアドレスから始まるNビットの要素である。自然に揃えられた要素を利用した結果、監視されているアドレスに書き込みため、1つのキャッシュラインがアクセスされる必要がある(データが2つのキャッシュラインに分割される場合に必要とされる2つのキャッシュラインではなく)。その結果、自然に揃えられたメモリアドレスを利用することはバスの観察を簡素化するであろう。
図8は、開示されたマルチスレッドメモリ待機テクニックを利用するシステムの一実施例を示す。図8の実施例では、プロセッサ805−1から805−NまでのN個のマルチスレッドプロセッサ群がバス802に接続される。他の実施例では、シングルプロセッサ、またはマルチスレッドプロセッサとシングルスレッドプロセッサとを組み合わせたものが利用されてもよい。さらに、他の既知のシステム構成または利用可能なシステム構成が利用されてもよい。例えば、これらのプロセッサはポイント・ツー・ポイント形式で接続され、メモリインタフェースのようなパーツが各プロセッサに統合されてもよい。
図8の実施例では、バスに接続されたメモリインタフェース815はメモリ830とメディアインタフェース820に接続される。メモリ830は、マルチプロセッシングレディ(multi−processing ready)オペレーティングシステム835と、第1スレッド840に対する命令と、第2スレッド845に対する命令とを含む。命令830は、開示された技術に従ったアイドルループを有し、その様々な変形が図9aから9cに示される。
これら様々な機能を実行する適切なソフトウェアが、様々なマシーン読み出し可能媒体の何れかにより提供されるかもしれない。メディアインタフェース820は、そのようなソフトウェアへのインタフェースを提供する。メディアインタフェース820は、記憶媒体(例えば、ディスクドライブ、光ドライブ、テープドライブ、揮発性メモリ、不揮発性メモリなど)とのインタフェース、または送信媒体インタフェース(例えば、ネットワークインタフェースまたは他のデジタルあるいはアナログ通信インタフェース)であってもよい。メディアインタフェース820は媒体(例えば、記憶媒体792あるいは送信媒体795)からソフトウェアルーチンを読み出すかもしれない。マシーン読み出し可能媒体は、マシーンインタフェースによる読み出しのため、少なくとも一時的に情報を格納することができる任意の媒体である。これには、信号送信(媒体として有線、光、空気を介し)、及び/または様々なタイプのディスク及びメモリ記憶装置のような物理的記憶媒体792が含まれる。
図9aは、一実施例によるアイドルループを示す。ブロック905において、MONITORコマンドがそれのオペランドであるモニタアドレスとしてアドレス1により実行される。同様のスレッドにおいて、ブロック910でMWAITコマンドが実行される。前述のように、MWAIT命令により、他の状態が適切に満たされると仮定して、スレッドがサスペンドされる。ブロック915においてブレークイベントが発生すると、当該ルーチンはモニタアドレスに格納されている値が変更されたかどうか判断するためブロック920に移行する。モニタアドレスの値が変更している場合、ブロック922に示されるように、スレッドの実行が継続される。値が変更されていない場合、エラー覚醒イベントが発生したことになる。当該覚醒イベントは、MWAITがモニタアドレスへのメモリ書き込みの発生なく終了されたという意味でエラーである。値が変更されていない場合、モニタが再び設定されるブロック905にループは戻る。このループソフトウェアの実施形態では、モニタがエラー覚醒イベントを可能とするよう設計されている。
図9bは、他のアイドルループを示す。図9bの実施例は、MWAIT命令が監視されているメモリアドレスへの書き込みを捉えることができない可能性をさらに低減するため、追加的な1つのチェックを加える。再び、図9bのフローは、ブロック925に示されるように、MONITOR命令がそれのオペランドとしてアドレス1により実行されることから開始される。さらに、ブロック930において、ソフトウェアルーチンは、モニタアドレスにおけるメモリ値を読み出す。ブロック935において、ソフトウェアはメモリ値がスレッドをアイドル状態にすべきであると示す値から変更されていないことを保証するため二重チェックする。値が変更されている場合、ブロック952に示されるように、スレッドの実行が継続される。値が変更されていない場合、ブロック940に示されるように、MWAIT命令が実行される。前述のように、ブロック945でブレークイベントが発生するまで、スレッドはサスペンドされる。しかしながら、再び、エラーブレークイベントが可能であるため、値が変更されたかブロック950でチェックされる。値が変更されていない場合、ブロック925に戻ることにより、モニタによるアドレス1の追跡を可能にするためループが戻る。値が変更されている場合、ブロック952においてスレッドの実行が継続される。いくつかの実施例では、MWAIT命令がスレッドを再びサスペンドするよう実行される前のエラー覚醒イベント後、MONITOR命令が再び実行される必要はないかもしれない。
図9cは、MONITOR命令とMWAIT命令を利用したソフトウェアシーケンスの他の例を示す。図9cの例では、スレッド内の2つの異なるタスクがすべき作業を有する場合、ループはアイドルとはされない。第1ルーチンにより行われるべき作業がある場合には、定数CV1が作業領域WL1に格納される。同様に、第2ルーチンにより行われるべき作業がある場合には、定数CV2が作業領域WL2に格納される。1つのモニタアドレスを利用するため、WL1とWL2が同じキャッシュラインのメモリ領域となるよう選ばれる。あるいは、複数のタスクのための状態指標を格納するのに1つの作業領域が利用されてもよい。例えば、1バイトあるいは他の単位において1以上のビットがそれぞれ異なるタスクを表してもよい。
ブロック955に示されるように、W1を監視するためモニタが設定される。ブロック960において、WL1が実行すべき作業を有する定数を格納しているかどうかチェックされる。格納している場合、ブロック965に示されるように、WL1に関する作業が実行される。格納されていない場合、ブロック970において、WL2に関して実行されるべき作業があることを示すCV2をWL2が格納しているかチェックされる。格納されている場合、ブロック975に示されるように、WL2に関する作業が実行される。格納されていない場合、ブロック980において電力管理ハンドラを呼び出すことが適当であるか決定するためループが進むかもしれない。例えば、決められた時間が経過すると、論理プロセッサが低減された電力消費状態に置かれてもよい(例えば、本出願の出願と同様にwww.acpi.infoで利用可能な1999年2月8日に発行されたACPI(Advanced Configuration and Power Interface)仕様バージョン1.0b(あるいはそれ以降)により定義された「C」状態群の1つ)。時間が経過している場合、ブロック985において電力管理ハンドラが呼び出される。行うべき作業がある965、975及び985の何れの場合においても、スレッドは当該作業を行い、ブロック955においてモニタの設定後再び同一の決定を行うためループバックする。他の実施例では、モニタがアクティブ状態を維持する限り、ブロック965、975及び985からのループバックはブロック960となるかもしれない。
ブロック965、975及び985を通じて行うべき作業がなければ、ブロック990に示されるように、MWAIT命令が実行される。ブロック995に示されるように、ブレークイベントが発生するとき、MWAITにより生じるスレッドサスペンド状態が最終的に終了される。この時点で、モニタの設定のためループはブロック955に戻り、その後WL1またはWL2が行うべき作業が存在することを示している決定する。行うべき作業が存在しない場合(すなわち、エラー覚醒イベントの場合には)、ブロック990においてループはMWAITに戻り、ブレークイベントが発生するまで再びスレッドをサスペンドする。
図10は、モニタ値がL1キャッシュにキャッシュされた状態を維持することを可能にするプロセッサの他の実施例を示す。図10のプロセッサは、実行ユニット1005と、L1キャッシュ1010と、L1キャッシュと包括されたL2キャッシュ1030との間のライト合成バッファとを有する。ライト合成バッファ1020は、バスインタフェース1040によりバス1045から受信された処理を介して他のメモリとの内部キャッシュのコヒーレンシーを保証する探索ポート1044を有する。コヒーレンシーに影響を及ぼす処理がライト合成バッファ1020に探索ポート1044を介し届くため、モニタはL1キャッシュレベルに置かれ、メモリライトイベントがバス1045で発生するときを決定するのに十分な情報を受信する。従って、モニタアドレスに対応するメモリラインがL1キャッシュに保持されてもよい。モニタは、実行ユニットからL1キャッシュへの書き込みと、探索ポート1044を介したバス1045からの書き込みの両方を検出することができる。
他の実施例では、2オペランドモニタ命令がサポートされている。1つのオペランドは前述のようにメモリアドレスを示す。第2オペランドは、メモリ待機状態からブレークしない様々なイベントのどれがこの特定のメモリ待機からブレークさせるかを示すマスクである。例えば、1つのマスクビットは、隠された割込みが当該割込みが隠されているという事実にもかかわらずメモリ待機をブレークすることを可能にすべきということを示すかもしれない(すなわち、EFLAGSビットIFが割込みを隠すよう設定されているときでさえ、覚醒イベントを可能にする)。前提として、メモリ待機状態後に実行される命令の1つが、提供されるように割込むブレークされた表面化処理である。メモリ待機状態をブレークしない他のイベントは、メモリ待機のブレークをイネーブルとすることが可能であり、あるいは逆にメモリ待機状態を通常ブレークするイベントはイネーブル解除されうる。第1オペランドに関して説明したように、第2オペランドは明示的あるいは非明示的であってもよい。
図11は、開示された技術を利用した設計のシミュレーション、エミュレーション及び製造のための様々な設計表現または形式を示す。設計を表すデータは当該設計を様々な方法により表せるかもしれない。まず、シミュレーションに有益なものとして、ハードウェアはハードウェア記述言語または設計されたハードウェアの期待される実行方法のコンピュータ化されたモデルを実質的に提供する他の機能記述言語を利用して表現されるかもしれない。ハードウェアモデル1110は、当該モデルが意図した通りの機能を行うか決定するため、特定のテストスーツ1130をハードウェアモデル1110に適用するシミュレーションソフトウェア1120を利用することによりシミュレートできるように、ハードウェアモデル1110はコンピュータメモリのような記憶媒体に格納されてもよい。いくつかの実施例では、シミュレーションソフトウェアは、記録、キャプチャあるいは媒体に含まれない。
さらに、論理及び/またはトランジスタゲートを有する回路レベルモデルが設計プロセスのいくつかの段階において生成されるかもしれない。このモデルは、ときにはプログラム可能な論理を利用したモデルを構成する専用ハードウェアシミュレータにより同様にシミュレートされるかもしれない。さらに進んだこのタイプのシミュレーションはエミュレーション技術であるかもしれない。どの場合でも、再構成可能なハードウェアは、開示された技術を利用したモデルを格納するマシーン読み出し可能媒体に関する他の実施例である。
さらに、大部分の設計は、ある段階において、ハードウェアモデルでの様々なデバイスの物理的配置を表すデータレベルに達する。従来の半導体製造技術が利用される場合には、ハードウェアモデルを表すデータは集積回路の製造に利用されるマスクの異なるマスクレイヤに関する様々な特徴の有無を特定するデータであるかもしれない。再び、集積回路を表すこのデータは、データにおける回路または論理が開示された技術を実行スrためシミュレートまたは製造されうるという点でこれら技術を実現する。
設計の任意の表現において、データは任意の形式のコンピュータ読み出し可能媒体に格納されるかもしれない。情報を送信するため変調あるいは生成される光あるいは電子波1160、メモリ1150、ディスクのような磁気または光記憶装置1140は媒体であるかもしれない。設計または当該設計の一部を記述するビット群は、それ自体が販売される物品であるかもしれないし、あるいはさらなる設計または製造のため他に利用される物品であるかもしれない。
指定されたメモリアクセスが発生するまで、スレッドの実行をサスペンドする技術が開示された。例示された実施例は添付された図面において説明及び例示されたが、このような実施例は単なる例示であり、広範な本発明を限定するものではなく、本開示を研究することにより当業者には様々な他の変更が想起されるため、本発明は例示及び説明された特定の攻勢及び配置に限定されるものではないということは理解されるであろう。
図1は、メモリアクセスを監視するモニタを有するマルチスレッドプロセッサの一実施例を示す。 図2は、一実施例による図1のマルチスレッドプロセッサの動作を示すフロー図である。 図3は、マルチスレッドプロセッサの一実施例のさらなる詳細を示す。 図4は、一実施例によるリソース分割、共有及び複製を示す。 図5は、一実施例によるスレッドの実行をサスペンド及び再開処理を示すフロー図である。 図6aは、一実施例による論理の起動及び関し処理を示すフロー図である。 図6bは、一実施例による書き込みの観察可能性の拡張を示すフロー図である。 図7は、一実施例による監視処理を示すフロー図である。 図8は、一実施例によるシステムを示す。 図9aは、開示されたプロセッサ命令及び技術を利用したソフトウェアシーケンスの様々な実施例を示す。 図9bは、開示されたプロセッサ命令及び技術を利用したソフトウェアシーケンスの様々な実施例を示す。 図9cは、開示されたプロセッサ命令及び技術を利用したソフトウェアシーケンスの様々な実施例を示す。 図10は、監視されているアドレスがキャッシュに残されることを可能にする他の実施例を示す。 図11は、開示された技術を利用した設計のシミュレーション、エミュレーション及び製造のための様々な設計表現または形式を示す。

Claims (69)

  1. モニタアドレスを示す関連するアドレスオペランドを有する第1命令を有する第1スレッドを含む複数のスレッドの実行を可能にする複数の実行ユニットと、
    前記第1スレッドの実行をサスペンドするサスペンド論理と、
    前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させるモニタとを有することを特徴とするプロセッサ。
  2. 請求項1記載のプロセッサであって、前記メモリアクセスが前記メモリアドレスへの実際的または潜在的書き込みを示す場合にのみ、前記モニタは前記メモリアクセスに応答して再開させることを特徴とするプロセッサ。
  3. 請求項1記載のプロセッサであって、前記第1スレッドがサスペンドされ、かつモニタイベントが表面化されている場合、前記モニタは前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させることを特徴とするプロセッサ。
  4. 請求項3記載のプロセッサであって、さらに、
    前記メモリアクセス以外のイベントに応答して前記第1スレッドを再開させるイベント検出論理を有することを特徴とするプロセッサ。
  5. 請求項4記載のプロセッサであって、前記イベントは割込みであることを特徴とするプロセッサ。
  6. 請求項1記載のプロセッサであって、前記関連するアドレスオペランドは非明示的オペランドであることを特徴とするプロセッサ。
  7. 請求項6記載のプロセッサであって、前記関連するアドレスオペランドは所定のレジスタに格納されることを特徴とするプロセッサ。
  8. 請求項1記載のプロセッサであって、前記サスペンド論理は第2命令に応答して前記第1スレッドの実行をサスペンドし、前記第1命令は前記モニタをイネーブル状態にし、前記第2命令は前記モニタにより合図されるイベントを表面化することを特徴とするプロセッサ。
  9. 請求項8記載のプロセッサであって、前記第1命令が実行された場合、前記第2命令は前記モニタをイネーブル状態にすることを特徴とするプロセッサ。
  10. 請求項1記載のプロセッサであって、前記サスペンド論理は前記第1命令に応答して前記第1スレッドの実行をサスペンドすることを特徴とするプロセッサ。
  11. 請求項8記載のプロセッサであって、さらに、
    前記モニタアドレスへのストアの観察性を向上させるコヒーレンシー論理を有することを特徴とするプロセッサ。
  12. 請求項11記載のプロセッサであって、前記コヒーレンシー論理は、コヒーレンシー領域内のキャッシュが変更または排他的状態において前記監視対象アドレスにおける情報を格納しないことを保証することを特徴とするプロセッサ。
  13. 請求項12記載のプロセッサであって、前記コヒーレンシー論理は、前記監視対象アドレスに関するキャッシュラインを内部キャッシュからフラッシュし、該プロセッサに接続された他のプロセッサに対し前記モニタアドレスに関するキャッシュラインのバスリードライン処理を生成し、前記バスリードライン処理はパイプラインバスプロトコルに従って提供された複数段階処理であることを特徴とするプロセッサ。
  14. 請求項11記載のプロセッサであって、前記コヒーレンシー論理は前記モニタアドレスへの書き込み処理を該書き込み処理の配信なく他のバスエージェントが実行することを防ぐため、該プロセッサにバスサイクルを生成させることを特徴とするプロセッサ。
  15. 請求項14記載のプロセッサであって、さらに、
    他のバスエージェントによる前記モニタアドレスにおける情報の読み出しに応答して、ヒット信号をアサートするバス制御論理を有することを特徴とするプロセッサ。
  16. 請求項1記載のプロセッサであって、前記関連するアドレスオペランドにより示される前記モニタアドレスは、前記関連するアドレスオペランドにより示されるアドレスにおけるデータに対しキャッシュライン、キャッシュラインの一部あるいは他のサイズのユニットを示すことを特徴とするプロセッサ。
  17. 請求項1記載のプロセッサであって、さらに、
    前記関連するアドレスオペランドを物理的アドレスである前記モニタアドレスに変換するアドレス変換論理を有することを特徴とするプロセッサ。
  18. 請求項1記載のプロセッサであって、前記モニタアドレスは、物理的アドレスと、バーチャルアドレスと、相対アドレスと、リニアアドレスとからなる集合から選ばれることを特徴とするプロセッサ。
  19. 請求項1記載のプロセッサであって、さらに、
    複数のスレッドがアクティブ状態であるとき、前記複数のスレッドの各アクティブ状態のスレッドに各分割可能リソースの一部を提供するよう分割される複数の分割可能リソースを有し、
    前記サスペンド論理は前記第1スレッドの実行のサスペンドに応答して、前記第1スレッドに提供された前記複数の区画の何れかを放棄することを特徴とするプロセッサ。
  20. 請求項19記載のプロセッサであって、前記モニタは、前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドの実行を受け入れるため、前記複数の分割可能リソースを再分割させることを特徴とするプロセッサ。
  21. 請求項20記載のプロセッサであって、前記複数の分割可能リソースは、命令キューと、リオーダーバッファと、レジスタプールと、複数のストアバッファとを有することを特徴とするプロセッサ。
  22. 請求項21記載のプロセッサであって、さらに、
    前記複数のスレッドのそれぞれに対して複製された複数の複製リソースを有し、該複数の複製リソースは、複数のプロセッサ状態変数と、命令ポインタと、レジスタリネーム論理とを有することを特徴とするプロセッサ。
  23. 請求項22記載のプロセッサであって、さらに、
    前記複数のスレッドの何れかにより利用可能な複数の共有リソースを有し、該複数の共有リソースは、複数の実行ユニットと、キャッシュと、スケジューラとを有することを特徴とするプロセッサ。
  24. 第1スレッドからモニタアドレスを示す第1命令と第2命令とを受信するフロントエンドと、
    前記第1命令と前記第2命令とを実行し、前記第2命令に応答して前記第1スレッドの実行をサスペンドする実行リソースと、
    前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させるモニタとを有することを特徴とするプロセッサ。
  25. 請求項24記載のプロセッサであって、前記第1命令はリニアアドレスを示すオペランドを有し、該プロセッサはさらに、
    物理的アドレスである前記モニタアドレスを取得するため、前記リニアアドレスを変換するアドレス変換論理を有することを特徴とするプロセッサ。
  26. 請求項25記載のプロセッサであって、さらに、
    該プロセッサに接続された他のプロセッサのどのキャッシュも変更または排他的状態において前記モニタアドレスにおける情報を格納しないことを保証するコヒーレンシー論理を有することを特徴とするプロセッサ。
  27. 請求項26記載のプロセッサであって、前記コヒーレンシー論理は、他のプロセッサによる前記モニタアドレスの探索に応答して、ヒット信号をアサートすることを特徴とするプロセッサ。
  28. 第1スレッドから関連するモニタアドレスを有する第1命令を受信するフロントエンド論理と、
    前記モニタアドレスを受信するよう接続され、前記第1命令に応答して前記モニタアドレスへのメモリアクセスを監視し、前記モニタアドレスへのアクセスが発生するとイベントを合図するモニタとを有することを特徴とするプロセッサ。
  29. 請求項28記載のプロセッサであって、前記モニタは、前記モニタアドレスに書き込むライトメモリアクセスに応答して、前記イベントを合図することを特徴とするプロセッサ。
  30. 請求項28記載のプロセッサであって、前記モニタは、ライン無効処理に応答して、前記イベントを合図することを特徴とするプロセッサ。
  31. 請求項28記載のプロセッサであって、さらに、
    該プロセッサに接続された他のプロセッサのどのキャッシュも変更または排他的状態において前記モニタアドレスにおける情報を格納しないことを保証するコヒーレンシー論理を有することを特徴とするプロセッサ。
  32. 請求項31記載のプロセッサであって、前記コヒーレンシー論理は、内部キャッシュフラッシュサイクルと外部リードライン処理を生成する論理を有することを特徴とするプロセッサ。
  33. 請求項28記載のプロセッサであって、さらに、
    前記モニタからモニタイベントを表面化し、第2命令に応答して前記第1スレッドをサスペンドする論理を有することを特徴とするプロセッサ。
  34. 複数のスレッドを実行する複数の実行ユニットと、
    前記複数のスレッドの第1スレッドから命令を受信するフロントエンド論理と、
    保留中のモニタイベントがない場合、前記命令に応答して前記第1スレッドをサスペンドし、前記複数のスレッドの他のスレッドの実行を可能にするサスペンド論理とを有することを特徴とするプロセッサ。
  35. 請求項34記載のプロセッサであって、前記サスペンド論理は、すでに保留中のモニタイベントを含むモニタイベントの認識を可能にすることを特徴とするプロセッサ。
  36. 請求項35記載のプロセッサであって、さらに、
    複数の分割可能リソースを有し、
    前記サスペンド論理は、前記命令に応答して前記第1スレッドをサスペンドすることに加えて、前記第1スレッドに関する前記複数の分割可能リソースのそれぞれの区画を放棄することを特徴とするプロセッサ。
  37. 命令を受信する複数のスレッド分割可能リソースと、
    前記複数のスレッド分割可能リソースと協調して命令を実行する複数の共有リソースと、
    第1スレッドの命令に応答して前記第1スレッドをサスペンドし、該第1スレッドのサスペンドに加えて、前記第1スレッドに関する前記複数のスレッド分割可能リソースの部分を放棄するスレッドサスペンド論理と、
    前記複数のスレッド分割可能リソースを再分割させ、前記第1スレッドにより示されるメモリアドレスへのアクセスに応答して、前記第1スレッドの実行を再開させるモニタとを有することを特徴とするプロセッサ。
  38. 請求項37記載のプロセッサであって、前記メモリアドレスへのアクセスは前記第1スレッドで実行される第1命令により指定され、前記モニタは前記スレッドサスペンド論理が前記第1スレッドをサスペンドするのに応答して、前記命令によるスレッドの再開させるモニタイベントを合図するよう表面化されることを特徴とするプロセッサ。
  39. 実行の複数のスレッドの第1スレッドをサスペンドする手段と、
    メモリ領域へのアクセスを検出する手段と、
    前記メモリ領域へのアクセスを検出する手段に応答して、前記第1スレッドを再開する手段とを有することを特徴とする装置。
  40. 請求項39記載の装置であって、前記メモリ領域へのアクセスを検出する手段は前記第1スレッドにおいて実行される第1命令に応答してイネーブル状態とされ、前記第1スレッドをサスペンドする手段は前記第1スレッドにおいて実行される第2命令に応答して前記第1スレッドをサスペンドすることを特徴とする装置。
  41. 請求項40記載の装置であって、さらに、
    前記メモリ領域へのアクセスの検出を簡素化するコヒーレンシー手段を有することを特徴とする装置。
  42. 請求項41記載の装置であって、前記メモリ領域へのアクセスはライトまたは無効アクセスであることを特徴とする装置。
  43. 請求項41記載の装置であって、さらに、
    前記第1スレッドの実行をサスペンドする手段に応答してリソースをアニールし、前記複数のスレッドの他のスレッドによる利用のため前記第1スレッドに関する分割リソースを解放する手段と、
    前記第1スレッドの再開を受け入れるため、リソースを再分割するためにリソースを分割する手段とを有することを特徴とする装置。
  44. 実行の第1スレッドにおいてモニタアドレスを示す関連するアドレスオペランドを有する第1オペコードを受信するステップと、
    前記第1スレッドをサスペンドするステップと、
    前記モニタアドレスへのメモリアクセスを検出するステップと、
    前記モニタアドレスへのメモリアクセスの検出に応答して前記第1スレッドを再開するステップとを有することを特徴とする方法。
  45. 請求項44記載の方法であって、前記第1スレッドのサスペンドは、該第1スレッドにおいて第2命令を受信し、該第2命令に応答して前記第1スレッドをサスペンドすることからなることを特徴とする方法。
  46. 請求項45記載の方法であって、前記メモリアクセスはライトアクセスであることを特徴とする方法。
  47. 請求項45記載の方法であって、さらに、
    前記関連するアドレスオペランドを監視対象の物理的アドレスに変換するステップを有し、
    前記モニタアドレスへのメモリアクセスを検出するステップは前記監視対象の物理的アドレスへのライトアクセスを検出することからなることを特徴とする方法。
  48. 請求項44記載の方法であって、さらに、
    他のエージェントが前記モニタアドレスに格納されている情報のオーナー権限を取得することを回避するステップを有することを特徴とする方法。
  49. 請求項44記載の方法であって、前記メモリアクセスを検出するステップは、外部バス処理からサイクル情報を受信し、前記モニタアドレスへの書き込みを検出することからなることを特徴とする方法。
  50. 請求項44記載の方法であって、さらに、
    前記モニタアドレスへのメモリアクセス以外のイベントに応答して前記第1スレッドを再開するステップを有することを特徴とする方法。
  51. 請求項50記載の方法であって、前記イベントは割込みであることを特徴とする方法。
  52. 請求項51記載の方法であって、前記割込みは第2オペランドによりブレークイベントとみなされるように示されるマスクされた割込みであることを特徴とする方法。
  53. 実行の第1スレッドにおいて実行される第1オペコードを受信するステップと、
    前記第1オペコードに関するリニアアドレスを物理的アドレスに変換するステップと、
    監視バスエージェントにより、他のどのバスエージェントも前記監視バスエージェントに通知することなく他のバスエージェントが前記物理的アドレスに関するデータを変更することを可能にするだけの前記データの十分なオーナー権限を所持しないことを保証するため、バス処理を実行するステップと、
    前記物理的アドレスへのライトアクセスを監視するステップと、
    他のバスエージェントが前記物理的アドレスを読み出す場合、ヒットを合図するステップと、
    前記実行の第1スレッドにおいて第2オペコードを受信するステップと、
    前記第2オペコードに応答して、前記実行の第1スレッドをサスペンドし、モニタイベントの認識をイネーブル状態にするステップと、
    前記ライトアクセスが発生する場合、前記第1スレッドを再開するステップと、
    第1イベント群の何れかに応答して前記第1スレッドの実行を再開するステップと、
    第2イベント群を無視するステップとを有することを特徴とする方法。
  54. 請求項53記載の方法であって、前記第2オペコードに応答して前記実行の第1スレッドをサスペンドするステップは、前記モニタイベントが保留中であるかチェックし、モニタがアクティブ状態であるかチェックし、前記モニタがアクティブ状態であり、かつ保留中のモニタイベントが存在しない場合、第1スレッドサスペンド状態に入ることからなることを特徴とする方法。
  55. 請求項54記載の方法であって、前記第1スレッドサスペンド状態に入ることは、レジスタプールの複数のレジスタを放棄し、命令キューの複数の命令キューエントリを放棄し、ストアバッファの複数のストアバッファエントリを放棄し、リオーダーバッファの複数のリオーダーバッファエントリを放棄することからなることを特徴とする方法。
  56. 第1スレッドからモニタアドレスを示す関連するアドレスオペランドを有する第1命令を格納するメモリと、
    前記メモリに接続され、前記第1命令に応答してメモリ処理を監視するモニタによる前記モニタアドレスへのメモリアクセスの検出を可能にし、前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させる第1プロセッサとを有するシステム。
  57. 請求項56記載のシステムであって、前記メモリは前記第1スレッドからの第2命令を格納し、前記第1プロセッサは前記第2命令に応答して前記第1スレッドをサスペンドすることを特徴とするシステム。
  58. 請求項57記載のシステムであって、前記モニタは前記メモリアクセスの発生に応答して、前記第1プロセッサに前記第2命令により表面化されたスレッドを再開させるも似たイベント保留指標を設定することを特徴とするシステム。
  59. 請求項56記載のシステムであって、前記第1プロセッサは第1キャッシュを有し、該システムはさらに、
    第2キャッシュを有する第2プロセッサを有し、
    前記第1プロセッサは前記第2プロセッサに前記第2キャッシュのモニタアドレスに格納されているデータの変更を可能にする処理を前記第1プロセッサに配信させるため、前記第2プロセッサに対するバス処理を駆動することを特徴とするシステム。
  60. 請求項59記載のシステムであって、前記第1プロセッサは、前記第2プロセッサにより変更の発生を配信することなく前記第2キャッシュのモニタアドレスに格納されているデータの変更を可能にする状態において、前記モニタアドレスにおけるデータを前記第2プロセッサがキャッシュすることを回避する信号をアサートすることを特徴とするシステム。
  61. 請求項60記載のシステムであって、前記信号は、キャッシュヒットを示し、前記第2キャッシュが排他的状態で前記モニタアドレスにおけるデータを格納することを回避することを特徴とするシステム。
  62. 請求項58記載のシステムであって、前記第1プロセッサはさらに、代わりのイベントが発生した場合、前記第1スレッドを再開することを特徴とするシステム。
  63. 請求項62記載のシステムであって、前記代わりのイベントは割込みであることを特徴とするシステム。
  64. 請求項62記載のシステムであって、前記メモリに格納されている第1スレッドは、前記第1命令と前記第2命令とを有するループと、前記モニタアドレスにおけるデータが変更されたか決定し、前記モニタアドレスにおけるデータが変更されていなければ前記ループを再開するテストとを有することを特徴とするシステム。
  65. コンピュータ読み出し可能な媒体を有し、プロセッサを表す物品であって、
    モニタアドレスを示す関連するアドレスオペランドを有する第1命令を有する第1スレッドを含む複数のスレッドの実行を可能にする複数の実行ユニットと、
    前記第1スレッドの実行をサスペンドするサスペンド論理と、
    前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させるモニタとを有することを特徴とする物品。
  66. 請求項65記載の物品であって、前記メモリアクセスが前記メモリアドレスへの実際的または潜在的書き込みを示す場合にのみ、前記モニタは前記メモリアクセスに応答して再開させることを特徴とする物品。
  67. 請求項65記載の物品であって、前記第1スレッドがサスペンドされ、かつモニタイベントが表面化されている場合、前記モニタは前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させることを特徴とする物品。
  68. 請求項65記載の物品であって、さらに、
    前記メモリアクセス以外のイベントに応答して前記第1スレッドを再開させるイベント検出論理を有することを特徴とする物品。
  69. 請求項68記載の物品であって、さらに、
    複数のスレッドがアクティブ状態であるとき、前記複数のスレッドの各アクティブ状態のスレッドに各分割可能リソースの一部を提供するよう分割される複数の分割可能リソースを有し、
    前記サスペンド論理は前記第1スレッドの実行のサスペンドに応答して、前記第1スレッドに提供された前記複数の区画の何れかを放棄することを特徴とする物品。
JP2003558691A 2001-12-31 2002-12-11 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 Expired - Lifetime JP4601958B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/039,579 US7363474B2 (en) 2001-12-31 2001-12-31 Method and apparatus for suspending execution of a thread until a specified memory access occurs
PCT/US2002/039786 WO2003058447A2 (en) 2001-12-31 2002-12-11 A method and apparatus for suspending execution of a thread until a specified memory access occurs

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2008081180A Division JP4990829B2 (ja) 2001-12-31 2008-03-26 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置

Publications (3)

Publication Number Publication Date
JP2006500639A true JP2006500639A (ja) 2006-01-05
JP2006500639A5 JP2006500639A5 (ja) 2006-02-16
JP4601958B2 JP4601958B2 (ja) 2010-12-22

Family

ID=21906217

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2003558691A Expired - Lifetime JP4601958B2 (ja) 2001-12-31 2002-12-11 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置
JP2008081180A Expired - Lifetime JP4990829B2 (ja) 2001-12-31 2008-03-26 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2008081180A Expired - Lifetime JP4990829B2 (ja) 2001-12-31 2008-03-26 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置

Country Status (11)

Country Link
US (2) US7363474B2 (ja)
JP (2) JP4601958B2 (ja)
KR (1) KR100814993B1 (ja)
CN (1) CN100383740C (ja)
AU (1) AU2002364557A1 (ja)
DE (2) DE10297856B4 (ja)
GB (1) GB2400947B (ja)
HK (1) HK1066883A1 (ja)
RU (1) RU2308754C2 (ja)
TW (2) TWI590153B (ja)
WO (1) WO2003058447A2 (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005182825A (ja) * 2003-12-18 2005-07-07 Nvidia Corp マルチスレッド式マイクロプロセッサのスレッドにまたがるアウト・オブ・オーダー命令ディスパッチ
JP2010113734A (ja) * 2003-07-31 2010-05-20 Intel Corp プロセッサ間割り込み
US7853756B2 (en) 2004-04-30 2010-12-14 Fujitsu Limited Information processing device, processor, processor control method, information processing device control method and cache memory
US8117425B2 (en) 2007-04-18 2012-02-14 Nec Corporation Multithread processor and method of synchronization operations among threads to be used in same
JP2012527042A (ja) * 2009-05-13 2012-11-01 アップル インコーポレイテッド 電力管理型ロック最適化
JP2012531681A (ja) * 2009-12-18 2012-12-10 インテル・コーポレーション プロセッサの待機状態をイネーブルする命令
JP5099131B2 (ja) * 2007-06-20 2012-12-12 富士通株式会社 演算装置
EP2610747A2 (en) 2011-12-28 2013-07-03 Fujitsu Limited Information processing apparatus and method of controlling information processing apparatus
US8898671B2 (en) 2010-07-07 2014-11-25 Panasonic Corporation Processor that executes a plurality of threads by promoting efficiency of transfer of data that is shared with the plurality of threads
JP2016532233A (ja) * 2014-10-03 2016-10-13 インテル・コーポレーション アドレスへの書き込みに対する監視命令を実行するスケーラブル機構
US9733937B2 (en) 2004-06-30 2017-08-15 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US10705961B2 (en) 2013-09-27 2020-07-07 Intel Corporation Scalably mechanism to implement an instruction that monitors for writes to an address

Families Citing this family (126)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7653912B2 (en) * 2003-05-30 2010-01-26 Steven Frank Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
US20050108711A1 (en) * 2003-11-13 2005-05-19 Infineon Technologies North America Corporation Machine instruction for enhanced control of multiple virtual processor systems
US7490218B2 (en) * 2004-01-22 2009-02-10 University Of Washington Building a wavecache
WO2005072307A2 (en) 2004-01-22 2005-08-11 University Of Washington Wavescalar architecture having a wave order memory
US7770179B1 (en) * 2004-01-30 2010-08-03 Xilinx, Inc. Method and apparatus for multithreading on a programmable logic device
US7552042B1 (en) 2004-01-30 2009-06-23 Xilinx, Inc. Method for message processing on a programmable logic device
US7823162B1 (en) 2004-01-30 2010-10-26 Xilinx, Inc. Thread circuits and a broadcast channel in programmable logic
US8984517B2 (en) * 2004-02-04 2015-03-17 Intel Corporation Sharing idled processor execution resources
US7581214B2 (en) * 2004-04-15 2009-08-25 Intel Corporation Live set transmission in pipelining applications
US8074030B1 (en) 2004-07-20 2011-12-06 Oracle America, Inc. Using transactional memory with early release to implement non-blocking dynamic-sized data structure
US7703098B1 (en) 2004-07-20 2010-04-20 Sun Microsystems, Inc. Technique to allow a first transaction to wait on condition that affects its working set
US7206903B1 (en) * 2004-07-20 2007-04-17 Sun Microsystems, Inc. Method and apparatus for releasing memory locations during transactional execution
KR101051703B1 (ko) 2004-08-09 2011-07-25 삼성전자주식회사 서스펜드/리쥼 기능을 갖는 집적 회로 카드 및 집적 회로카드 시스템
US7434009B2 (en) * 2004-09-30 2008-10-07 Freescale Semiconductor, Inc. Apparatus and method for providing information to a cache module using fetch bursts
US7257679B2 (en) 2004-10-01 2007-08-14 Advanced Micro Devices, Inc. Sharing monitored cache lines across multiple cores
US7313673B2 (en) * 2005-06-16 2007-12-25 International Business Machines Corporation Fine grained multi-thread dispatch block mechanism
US9003421B2 (en) * 2005-11-28 2015-04-07 Intel Corporation Acceleration threads on idle OS-visible thread execution units
KR100763200B1 (ko) 2006-02-24 2007-10-04 삼성전자주식회사 인터럽트 가능한 스레드 동기화 방법 및 장치
KR100771877B1 (ko) 2006-07-21 2007-11-01 삼성전자주식회사 오동작 방지용 커맨드 세트 프로토콜 처리 방법 및 장치
US20080022079A1 (en) * 2006-07-24 2008-01-24 Archer Charles J Executing an allgather operation with an alltoallv operation in a parallel computer
US8443341B2 (en) * 2006-11-09 2013-05-14 Rogue Wave Software, Inc. System for and method of capturing application characteristics data from a computer system and modeling target system
US8239657B2 (en) 2007-02-07 2012-08-07 Qualcomm Incorporated Address translation method and apparatus
US8898438B2 (en) * 2007-03-14 2014-11-25 XMOS Ltd. Processor architecture for use in scheduling threads in response to communication activity
US7937532B2 (en) * 2007-03-30 2011-05-03 Intel Corporation Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine
US8161480B2 (en) 2007-05-29 2012-04-17 International Business Machines Corporation Performing an allreduce operation using shared memory
US20090006663A1 (en) * 2007-06-27 2009-01-01 Archer Charles J Direct Memory Access ('DMA') Engine Assisted Local Reduction
JP2009110209A (ja) * 2007-10-29 2009-05-21 Panasonic Corp 演算処理装置、プロセッサ、プログラム変換装置およびプログラム
US8127080B2 (en) 2008-02-01 2012-02-28 International Business Machines Corporation Wake-and-go mechanism with system address bus transaction master
US8788795B2 (en) * 2008-02-01 2014-07-22 International Business Machines Corporation Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors
US8312458B2 (en) * 2008-02-01 2012-11-13 International Business Machines Corporation Central repository for wake-and-go mechanism
US8732683B2 (en) * 2008-02-01 2014-05-20 International Business Machines Corporation Compiler providing idiom to idiom accelerator
US8316218B2 (en) 2008-02-01 2012-11-20 International Business Machines Corporation Look-ahead wake-and-go engine with speculative execution
US8225120B2 (en) * 2008-02-01 2012-07-17 International Business Machines Corporation Wake-and-go mechanism with data exclusivity
US8880853B2 (en) * 2008-02-01 2014-11-04 International Business Machines Corporation CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock
US8341635B2 (en) 2008-02-01 2012-12-25 International Business Machines Corporation Hardware wake-and-go mechanism with look-ahead polling
US8612977B2 (en) * 2008-02-01 2013-12-17 International Business Machines Corporation Wake-and-go mechanism with software save of thread state
US8725992B2 (en) 2008-02-01 2014-05-13 International Business Machines Corporation Programming language exposing idiom calls to a programming idiom accelerator
US8640141B2 (en) * 2008-02-01 2014-01-28 International Business Machines Corporation Wake-and-go mechanism with hardware private array
US8250396B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Hardware wake-and-go mechanism for a data processing system
US8452947B2 (en) * 2008-02-01 2013-05-28 International Business Machines Corporation Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms
US8145849B2 (en) 2008-02-01 2012-03-27 International Business Machines Corporation Wake-and-go mechanism with system bus response
US8171476B2 (en) * 2008-02-01 2012-05-01 International Business Machines Corporation Wake-and-go mechanism with prioritization of threads
US8516484B2 (en) * 2008-02-01 2013-08-20 International Business Machines Corporation Wake-and-go mechanism for a data processing system
US8386822B2 (en) * 2008-02-01 2013-02-26 International Business Machines Corporation Wake-and-go mechanism with data monitoring
US8422402B2 (en) 2008-04-01 2013-04-16 International Business Machines Corporation Broadcasting a message in a parallel computer
US8281053B2 (en) 2008-07-21 2012-10-02 International Business Machines Corporation Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations
CN101788922B (zh) * 2009-01-22 2013-12-25 国际商业机器公司 基于辅助线程实现事务存储系统的方法和装置
KR101581311B1 (ko) * 2009-03-11 2015-12-31 삼성전자주식회사 플래시 메모리 장치 및 그 제어 방법
US8145723B2 (en) * 2009-04-16 2012-03-27 International Business Machines Corporation Complex remote update programming idiom accelerator
US8082315B2 (en) * 2009-04-16 2011-12-20 International Business Machines Corporation Programming idiom accelerator for remote update
US8886919B2 (en) 2009-04-16 2014-11-11 International Business Machines Corporation Remote update programming idiom accelerator with allocated processor resources
US8230201B2 (en) * 2009-04-16 2012-07-24 International Business Machines Corporation Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
US8364862B2 (en) * 2009-06-11 2013-01-29 Intel Corporation Delegating a poll operation to another device
DE112009005006T5 (de) * 2009-06-26 2013-01-10 Intel Corporation Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM)
EP2284693A1 (en) * 2009-08-03 2011-02-16 C.R.F. Società Consortile per Azioni Wait instruction
US8695002B2 (en) * 2009-10-20 2014-04-08 Lantiq Deutschland Gmbh Multi-threaded processors and multi-processor systems comprising shared resources
US8447960B2 (en) * 2010-01-08 2013-05-21 International Business Machines Corporation Pausing and activating thread state upon pin assertion by external logic monitoring polling loop exit time condition
US20110173420A1 (en) * 2010-01-08 2011-07-14 International Business Machines Corporation Processor resume unit
US9424087B2 (en) 2010-04-29 2016-08-23 International Business Machines Corporation Optimizing collective operations
US8949577B2 (en) 2010-05-28 2015-02-03 International Business Machines Corporation Performing a deterministic reduction operation in a parallel computer
US8776081B2 (en) 2010-09-14 2014-07-08 International Business Machines Corporation Send-side matching of data communications messages
US8566841B2 (en) 2010-11-10 2013-10-22 International Business Machines Corporation Processing communications events in parallel active messaging interface by awakening thread from wait state
US8713362B2 (en) 2010-12-01 2014-04-29 International Business Machines Corporation Obviation of recovery of data store consistency for application I/O errors
US8694821B2 (en) * 2010-12-03 2014-04-08 International Business Machines Corporation Generation of standby images of applications
CN102736945B (zh) * 2011-03-31 2016-05-18 国际商业机器公司 一种运行应用程序的多个实例的方法和系统
CN102760176B (zh) * 2011-04-29 2015-02-11 无锡江南计算技术研究所 硬件事务级仿真方法、引擎及系统
US8893083B2 (en) 2011-08-09 2014-11-18 International Business Machines Coporation Collective operation protocol selection in a parallel computer
US8667501B2 (en) 2011-08-10 2014-03-04 International Business Machines Corporation Performing a local barrier operation
US8910178B2 (en) 2011-08-10 2014-12-09 International Business Machines Corporation Performing a global barrier operation in a parallel computer
US8868843B2 (en) 2011-11-30 2014-10-21 Advanced Micro Devices, Inc. Hardware filter for tracking block presence in large caches
US9798548B2 (en) 2011-12-21 2017-10-24 Nvidia Corporation Methods and apparatus for scheduling instructions using pre-decode data
CN106909444B (zh) 2011-12-22 2021-01-12 英特尔公司 用于指定应用线程性能状态的指令的指令处理装置及相关方法
WO2013101188A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Memory event notification
US9495135B2 (en) 2012-02-09 2016-11-15 International Business Machines Corporation Developing collective operations for a parallel computer
US8706847B2 (en) 2012-02-09 2014-04-22 International Business Machines Corporation Initiating a collective operation in a parallel computer
WO2013147887A1 (en) 2012-03-30 2013-10-03 Intel Corporation Context switching mechanism for a processing core having a general purpose cpu core and a tightly coupled accelerator
US9218288B2 (en) 2012-06-15 2015-12-22 International Business Machines Corporation Monitoring a value in storage without repeated storage access
US9256455B2 (en) * 2012-11-20 2016-02-09 Red Hat Isreal, Ltd. Delivery of events from a virtual machine to host CPU using memory monitoring instructions
US9563425B2 (en) 2012-11-28 2017-02-07 Intel Corporation Instruction and logic to provide pushing buffer copy and store functionality
US9141454B2 (en) * 2012-12-27 2015-09-22 Intel Corporation Signaling software recoverable errors
CN105765521B (zh) * 2013-11-25 2019-03-19 马维尔国际贸易有限公司 用于Java编程中的循环中止的系统和方法
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9552033B2 (en) 2014-04-22 2017-01-24 Qualcomm Incorporated Latency-based power mode units for controlling power modes of processor cores, and related methods and systems
US9778949B2 (en) * 2014-05-05 2017-10-03 Google Inc. Thread waiting in a multithreaded processor architecture
US9477521B2 (en) 2014-05-29 2016-10-25 Netapp, Inc. Method and system for scheduling repetitive tasks in O(1)
US9304702B2 (en) 2014-05-29 2016-04-05 Netapp, Inc. System and method for parallelized performance data collection in a computing system
US9256477B2 (en) * 2014-05-29 2016-02-09 Netapp, Inc. Lockless waterfall thread communication
GB2529899B (en) * 2014-09-08 2021-06-23 Advanced Risc Mach Ltd Shared Resources in a Data Processing Apparatus for Executing a Plurality of Threads
US9575802B2 (en) 2014-10-28 2017-02-21 International Business Machines Corporation Controlling execution of threads in a multi-threaded processor
US11080064B2 (en) 2014-10-28 2021-08-03 International Business Machines Corporation Instructions controlling access to shared registers of a multi-threaded processor
CN107111523B (zh) * 2014-11-11 2020-10-20 瑞萨电子株式会社 命令执行控制系统和命令执行控制方法
WO2016088220A1 (ja) * 2014-12-03 2016-06-09 株式会社日立製作所 計算機及び論理プロセッサの制御方法
CN105843592A (zh) * 2015-01-12 2016-08-10 芋头科技(杭州)有限公司 一种在预设嵌入式系统中实现脚本操作的系统
GB2537115B (en) * 2015-04-02 2021-08-25 Advanced Risc Mach Ltd Event monitoring in a multi-threaded data processing apparatus
US10908909B2 (en) * 2015-06-09 2021-02-02 Optimum Semiconductor Technologies Inc. Processor with mode support
KR102476357B1 (ko) 2015-08-06 2022-12-09 삼성전자주식회사 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법
US9916178B2 (en) * 2015-09-25 2018-03-13 Intel Corporation Technologies for integrated thread scheduling
GB2544994A (en) * 2015-12-02 2017-06-07 Swarm64 As Data processing
CN105677487B (zh) * 2016-01-12 2019-02-15 浪潮通用软件有限公司 一种控制资源占用的方法及装置
US11023233B2 (en) 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension
US11061730B2 (en) * 2016-11-18 2021-07-13 Red Hat Israel, Ltd. Efficient scheduling for hyper-threaded CPUs using memory monitoring
CN108255587B (zh) * 2016-12-29 2021-08-24 展讯通信(上海)有限公司 一种同步多线程处理器
US10353817B2 (en) * 2017-03-07 2019-07-16 International Business Machines Corporation Cache miss thread balancing
US10275254B2 (en) 2017-03-08 2019-04-30 International Business Machines Corporation Spin loop delay instruction
TWI648620B (zh) * 2017-08-07 2019-01-21 慧榮科技股份有限公司 記憶體裝置以及操作指令錯誤處理方法
KR102043538B1 (ko) * 2018-01-18 2019-11-11 주식회사 알티스트 파티셔닝을 적용하여 프로세스를 모니터링하는 컴퓨팅 시스템
CN109508229A (zh) * 2018-09-19 2019-03-22 安徽慧视金瞳科技有限公司 一种多点同时绘制的匹配方法
US11068407B2 (en) 2018-10-26 2021-07-20 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction
US10884740B2 (en) 2018-11-08 2021-01-05 International Business Machines Corporation Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads
US11119781B2 (en) 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US11086672B2 (en) 2019-05-07 2021-08-10 International Business Machines Corporation Low latency management of processor core wait state
US11231881B2 (en) 2020-04-02 2022-01-25 Dell Products L.P. Raid data storage device multi-step command coordination system
US11106608B1 (en) 2020-06-22 2021-08-31 International Business Machines Corporation Synchronizing access to shared memory by extending protection for a target address of a store-conditional request
CN111857591A (zh) * 2020-07-20 2020-10-30 北京百度网讯科技有限公司 用于执行指令的方法、装置、设备和计算机可读存储介质
CN114489792B (zh) * 2021-03-25 2022-10-11 沐曦集成电路(上海)有限公司 处理器装置及其指令执行方法
US11693776B2 (en) 2021-06-18 2023-07-04 International Business Machines Corporation Variable protection window extension for a target address of a store-conditional request
CN116089116B (zh) * 2022-12-16 2024-05-31 成都海光集成电路设计有限公司 数据处理方法及装置
CN116185891B (zh) * 2023-04-27 2023-07-21 珠海妙存科技有限公司 描述符管理方法

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4491910A (en) * 1982-02-22 1985-01-01 Texas Instruments Incorporated Microcomputer having data shift within memory
JPS59111526A (ja) 1982-12-16 1984-06-27 Fujitsu Ltd 信号処理方式
JPH06105460B2 (ja) 1988-06-07 1994-12-21 富士通株式会社 マルチプロセッサのプロセッサ切換え装置
GB8817911D0 (en) 1988-07-27 1988-09-01 Int Computers Ltd Data processing apparatus
US4965718A (en) 1988-09-29 1990-10-23 International Business Machines Corporation Data processing system incorporating a memory resident directive for synchronizing multiple tasks among plurality of processing elements by monitoring alternation of semaphore data
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
JP2866241B2 (ja) * 1992-01-30 1999-03-08 株式会社東芝 コンピュータシステムおよびスケジューリング方法
US5428757A (en) * 1992-04-29 1995-06-27 International Business Machines Corporation Method for reducing translation look aside buffer purges in a multitasking system
US5546593A (en) * 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
JP3678759B2 (ja) * 1992-07-21 2005-08-03 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 割込を発生するための装置および割込を発生するための方法
US5493660A (en) * 1992-10-06 1996-02-20 Hewlett-Packard Company Software assisted hardware TLB miss handler
US5584031A (en) * 1993-11-09 1996-12-10 Motorola Inc. System and method for executing a low power delay instruction
US5546037A (en) 1993-11-15 1996-08-13 Cirrus Logic, Inc. NAPNOP circuit for conserving power in computer systems
US5584014A (en) * 1994-12-20 1996-12-10 Sun Microsystems, Inc. Apparatus and method to preserve data in a set associative memory device
JPH08212512A (ja) * 1995-02-03 1996-08-20 Hitachi Ltd 磁気記憶装置及びそれに用いる薄膜磁気ヘッドとその製造方法
JPH08320797A (ja) * 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
JPH096633A (ja) 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
CN1147785C (zh) 1996-08-27 2004-04-28 松下电器产业株式会社 执行多个指令流的多程序流程同时处理器
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
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
AU6586898A (en) 1997-03-21 1998-10-20 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
UA55489C2 (uk) * 1997-10-07 2003-04-15 Каналь+ Сосьєте Анонім Пристрій для багатопотокової обробки даних (варіанти)
US6076157A (en) 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6016542A (en) * 1997-12-31 2000-01-18 Intel Corporation Detecting long latency pipeline stalls for thread switching
JP2000010910A (ja) * 1998-06-22 2000-01-14 Nec Corp データ転送制御装置およびデータ転送制御方法ならびに記録媒体
US6920634B1 (en) * 1998-08-03 2005-07-19 International Business Machines Corporation Detecting and causing unsafe latent accesses to a resource in multi-threaded programs
US6505229B1 (en) * 1998-09-25 2003-01-07 Intelect Communications, Inc. Method for allowing multiple processing threads and tasks to execute on one or more processor units for embedded real-time processor systems
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
US6351808B1 (en) * 1999-05-11 2002-02-26 Sun Microsystems, Inc. Vertically and horizontally threaded processor with multidimensional storage for storing thread data
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
US6671795B1 (en) * 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US6931639B1 (en) * 2000-08-24 2005-08-16 International Business Machines Corporation Method for implementing a variable-partitioned queue for simultaneous multithreaded processors
TW461627U (en) * 2000-12-21 2001-10-21 Hon Hai Prec Ind Co Ltd Electrical connector
US6625698B2 (en) * 2000-12-28 2003-09-23 Unisys Corporation Method and apparatus for controlling memory storage locks based on cache line ownership
US6463511B2 (en) * 2000-12-29 2002-10-08 Intel Corporation System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model
US7120762B2 (en) * 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
US20030126379A1 (en) * 2001-12-31 2003-07-03 Shiv Kaushik Instruction sequences for suspending execution of a thread until a specified memory access occurs
US20030126416A1 (en) * 2001-12-31 2003-07-03 Marr Deborah T. Suspending execution of a thread in a multi-threaded processor
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010113734A (ja) * 2003-07-31 2010-05-20 Intel Corp プロセッサ間割り込み
JP2005182825A (ja) * 2003-12-18 2005-07-07 Nvidia Corp マルチスレッド式マイクロプロセッサのスレッドにまたがるアウト・オブ・オーダー命令ディスパッチ
US7853756B2 (en) 2004-04-30 2010-12-14 Fujitsu Limited Information processing device, processor, processor control method, information processing device control method and cache memory
US9733937B2 (en) 2004-06-30 2017-08-15 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US8117425B2 (en) 2007-04-18 2012-02-14 Nec Corporation Multithread processor and method of synchronization operations among threads to be used in same
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
JP2012527042A (ja) * 2009-05-13 2012-11-01 アップル インコーポレイテッド 電力管理型ロック最適化
US8990597B2 (en) 2009-12-18 2015-03-24 Intel Corporation Instruction for enabling a processor wait state
KR101410634B1 (ko) 2009-12-18 2014-06-20 인텔 코오퍼레이션 프로세서 대기 상태를 인에이블하기 위한 명령
JP2014222520A (ja) * 2009-12-18 2014-11-27 インテル・コーポレーション プロセッサ、方法、システム、及び、プログラム
US9032232B2 (en) 2009-12-18 2015-05-12 Intel Corporation Instruction for enabling a processor wait state
JP2012531681A (ja) * 2009-12-18 2012-12-10 インテル・コーポレーション プロセッサの待機状態をイネーブルする命令
US8898671B2 (en) 2010-07-07 2014-11-25 Panasonic Corporation Processor that executes a plurality of threads by promoting efficiency of transfer of data that is shared with the plurality of threads
EP2610747A2 (en) 2011-12-28 2013-07-03 Fujitsu Limited Information processing apparatus and method of controlling information processing apparatus
US10705961B2 (en) 2013-09-27 2020-07-07 Intel Corporation Scalably mechanism to implement an instruction that monitors for writes to an address
JP2016532233A (ja) * 2014-10-03 2016-10-13 インテル・コーポレーション アドレスへの書き込みに対する監視命令を実行するスケーラブル機構

Also Published As

Publication number Publication date
RU2308754C2 (ru) 2007-10-20
KR100814993B1 (ko) 2008-03-18
KR20040068993A (ko) 2004-08-02
WO2003058447A3 (en) 2004-12-16
JP2008165834A (ja) 2008-07-17
TWI590153B (zh) 2017-07-01
US20030126186A1 (en) 2003-07-03
US7363474B2 (en) 2008-04-22
US20080034190A1 (en) 2008-02-07
GB2400947B (en) 2005-08-24
DE10297856B4 (de) 2014-07-17
RU2004123622A (ru) 2005-03-27
WO2003058447A2 (en) 2003-07-17
DE10297596B4 (de) 2017-09-07
CN100383740C (zh) 2008-04-23
AU2002364557A8 (en) 2003-07-24
GB2400947A (en) 2004-10-27
JP4990829B2 (ja) 2012-08-01
GB0412867D0 (en) 2004-07-14
TW200305820A (en) 2003-11-01
TWI322959B (en) 2010-04-01
CN1688974A (zh) 2005-10-26
JP4601958B2 (ja) 2010-12-22
HK1066883A1 (en) 2005-04-01
TW200941340A (en) 2009-10-01
DE10297596T5 (de) 2004-12-02
AU2002364557A1 (en) 2003-07-24

Similar Documents

Publication Publication Date Title
JP4990829B2 (ja) 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置
US7127561B2 (en) Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7328293B2 (en) Queued locks using monitor-memory wait
US8539485B2 (en) Polling using reservation mechanism
US8607241B2 (en) Compare and exchange operation using sleep-wakeup mechanism
US20030126379A1 (en) Instruction sequences for suspending execution of a thread until a specified memory access occurs
JP5795820B2 (ja) プロセッサ、方法、システム、及び、プログラム
US8694976B2 (en) Sleep state mechanism for virtual multithreading
US6484254B1 (en) Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses
GB2457181A (en) Suspending other threads to prevent access conflicts
TW201510860A (zh) 多核心同步機制
GB2441903A (en) Resuming control of resources by a processor on exiting a sleep mode and disabling an associated monitor.

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061024

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070123

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070424

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080225

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080402

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20080801

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100402

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100805

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100929

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131008

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4601958

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

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

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

EXPY Cancellation because of completion of term