JP2012531681A - プロセッサの待機状態をイネーブルする命令 - Google Patents

プロセッサの待機状態をイネーブルする命令 Download PDF

Info

Publication number
JP2012531681A
JP2012531681A JP2012517935A JP2012517935A JP2012531681A JP 2012531681 A JP2012531681 A JP 2012531681A JP 2012517935 A JP2012517935 A JP 2012517935A JP 2012517935 A JP2012517935 A JP 2012517935A JP 2012531681 A JP2012531681 A JP 2012531681A
Authority
JP
Japan
Prior art keywords
processor
core
low power
value
power state
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
JP2012517935A
Other languages
English (en)
Other versions
JP5571784B2 (ja
Inventor
ジー. ディクソン、マーティン
ディー. ロジャース、スコット
エイチ. ガンサー、ステファン
セチ、パラシャント
バーラミ、タラネー
ハマーランド、パー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2012531681A publication Critical patent/JP2012531681A/ja
Application granted granted Critical
Publication of JP5571784B2 publication Critical patent/JP5571784B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • 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/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Power Sources (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一実施形態では、本発明は、監視されるロケーションのID及びタイマ値を規定する命令をデコードするデコードロジックを含むコア、及び、デコードロジックと結合されタイマ値に対してカウントを実行するタイマを有するプロセッサを備える。プロセッサは更に、コアと結合され、タイマ値に少なくとも一部基づいて低電力状態の一種類を決定する電力管理ユニットを有し、電力管理ユニットは、プロセッサを決定に応じた低電力状態にする。その他の実施形態を記載及び特許請求する。
【選択図】図1

Description

プロセッサの技術が発展し、多数のコアを有するプロセッサの利用が可能となってきている。ソフトウェアを効率よく実行するためには、複数のコアは、1つのアプリケーションの異なるスレッドを実行するように命じられてもよい。このような構成は、協調型スレッドソフトウェア(cooperative threaded software)と称される。現在の協調型スレッドソフトウェアでは、1のスレッドは、別のスレッドの完了を待つのが通常である。一般的に、待ちスレッドが実行されているプロセッサは、待機の間に有効電力を消費する。また、待機の時間は予測できない場合があり、したがって、プロセッサは、どの位の時間待てばよいのか知らない場合がある。
コアを待たせることを可能にする別のメカニズムとしては、コアを低電力状態のような待機状態にすることが挙げられる。このタスクを実装するには、オペレーティングシステム(OS)を呼び出す。OSは、MONITOR命令及びMWAIT命令と称される1組の命令を実行してもよい。これらの命令は、アプリケーションレベルのソフトウェアは利用できない。替わりに、これらの命令は、監視するアドレス範囲を設定し、監視されるアドレス範囲が更新されるまでプロセッサを低電力状態にすることを可能とするべく、OS特権レベルにおいてのみ使用される。しかしながら、これらの命令を実行するべくOSに入るには、大きなオーバーヘッドが存在する。このオーバーヘッドは、大きなレイテンシ(遅延)の形態であり、OSのスケジューリングに関して、待ちスレッドが待機状態を脱しても、次にスケジュールされるスレッドにならないという複雑性を増すことにつながる可能性がある。
本発明の一実施形態に係る方法を示したフローチャートである。 本発明の一実施形態に係る、ターゲット値のテストを示したフローチャートである。 本発明の一実施形態に係る、プロセッサコアのブロック図である。 本発明の一実施形態に係る、プロセッサのブロック図である。 本発明の別の実施形態に係る、プロセッサのブロック図である。 本発明の一実施形態に係る、協調型スレッド間のやり取りを示したフローチャートである。 本発明の一実施形態に係る、システムのブロック図である。
様々な実施形態において、ユーザーレベル命令(すなわち、アプリケーションレベル命令)を提供及び使用して、アプリケーションに1以上の条件の発生を待たせることができる。アプリケーションが待機している間、アプリケーションが実行されているプロセッサ(すなわち、マルチコアプロセッサの1コア)は、低電力状態であってもよいし、別のスレッドの実行に切り替えられてもよい。この点に関して本発明の範囲は限定されないが、プロセッサが待機する条件には、値の検出、タイマ(timer)のタイムアウト、又は、例えば、別のプロセッサからの割り込み信号の受信が含まれてもよい。
このように、アプリケーションは、オペレーティングシステム(OS)又はその他のスーパーバイザ・ソフトウェアに制御を渡す必要なく、例えば、別のスレッドにおいて、1以上のオペレーションの発生を待つことができる、また、命令に提供された命令情報に基づいて、待機状態を制限時間を有する態様で発生させてもよく、プロセッサは適切な低電力状態を選択することができる。すなわち、プロセッサ自身の制御ロジックは、提供される命令情報及びプロセッサで実行される様々な計算に基づいて、入るべき適切な低電力状態を決定することができる。その結果、低電力状態に入るのに、OSが関わることによって発生するオーバーヘッドを避けることができる。プロセッサは、別のピアプロセッサを待つ必要はないが、浮動小数点コプロセッサ又はその他の固定機能デバイスのようなコプロセッサを待つ場合がある。
様々な実施形態において、ユーザーレベル命令は、命令に関係する様々な情報を有してもよく、例えば、監視(モニタ)するロケーション、検索する値及びタイムアウト値が含まれる。この点に関して本発明の範囲は限定されないが、説明を簡単にするために、このユーザーレベル命令は、プロセッサ待機命令と称されてもよい。このようなユーザーレベル命令の様々な特色が提供されてもよいが、特色はそれぞれ、例えば、特定の値、特定の値のセット及び特定の範囲を待つこと、又は、例えば、値が真(true)となったことに応じるカウンタのインクリメントのようなオペレーションと待機を組み合わせることを指示してもよい。
一般的に、プロセッサは、プロセッサ待機命令に応答して様々なアクションを発生させることができ、命令は、テストされる値のロケーションを示すソースフィールド、待機状態を終了すべき点を示すタイムアウト値又はデッドラインタイマ値(テストされる値が達成されていない場合)、及び、取得される値を示す結果フィールドのような命令情報と関連付けられていてもよい。その他のアプリケーションでは、これらのフィールドに加えて、ソース値がマスクされて所定の値に対してテストされるような実装形態(例えば、マスクした結果のマスク値が、ゼロでないかゼロであるか)では、宛先フィールド又はマスクフィールドが存在してもよい。
上記したように、プロセッサは、命令に応答して様々なオペレーションを実行してもよい。一般的に、これらのオペレーションは、監視されているロケーションの値が、目的の値であるかテストすること(例えば、"真(true)"条件をテストするブール演算を実行すること)、及び、デッドラインタイマ値に到達したか否かのテストを含んでもよい。これらの条件のどちらかが満たされた場合(例えば、真であった場合)、又は、別のエンティティからの割り込みが受信された場合には、命令が完了とされてもよい。それ以外の場合には、メカニズムは、値が変更されているかを確認するべく、ロケーションの監視を開始してもよい。この時、待機状態に入る。この待機状態では、プロセッサは低電力状態に入る、又は、別のプロセッサハードウェアスレッドの実行を開始させてもよい。低電力状態が望ましい場合には、プロセッサは、デッドラインタイマに到達するまでの残り時間に少なくとも一部基づいて、適切な低電力状態を選択してもよい。そして、低電力状態に入り、プロセッサは、上記のような条件のうちの1つによって起動されるまで、この低電力状態に留まっていてもよい。上記では、一般的なオペレーションを用いて説明を行ったが、様々な異なる実装形態では、様々な特徴及びオペレーションが異なる態様で発生してもよい。
図1には、本発明の一実施形態に係る方法のフローチャートが示されている。図1に示すように、方法100は、プロセッサ待機オペレーションを扱うユーザーレベル命令を実行するプロセッサによって実装される。図に示すように、方法100は、受信された命令をデコードする段階から開始してもよい(ブロック110)。一例として、命令は、協調型スレッドアプリケーションの実行において一定の相互依存性を有してもよい命令をそれぞれ含む複数のスレッドを使用して実装されたアプリケーションによって提供されるユーザーレベル命令であってもよい。このような命令をデコードした後、プロセッサは、メモリの値をキャッシュ及びレジスタにロードしてもよい(ブロック120)。具体的には、命令のソースオペランドは、例えば、値が取得されるメモリ内におけるロケーションを特定してもよい。例えば、プライベートキャッシュのような命令を実行するコアと関連付けられたローレベル(low-level)キャッシュであるキャッシュメモリに、値がロードされてもよい。また、値は、コアのレジスタに格納されてもよい。一例として、このレジスタは、スレッドの論理プロセッサの汎用レジスタであってもよい。次に、制御がブロック130に移る。ブロック130において、命令情報に応じて、デッドライン(期限)が計算されてもよい。具体的には、デッドラインは、条件を満足しない場合(例えば、所望の値が更新されない場合)に、待機状態を発生させる時間の長さである。一実施形態において、命令のフォーマットは、デッドラインタイマ値を提供する情報を含んでもよい。このデッドラインに達するまでの適切な時間を決定するべく、ある実装形態では、受信されたデッドラインタイマ値を、プロセッサに存在する現在のタイムカウンタ値、例えば、タイムスタンプカウンタ(TSC)値と比較してもよい。比較して得られた差分が、ある実施形態ではカウンタ又はレジスタを使用して実装されているデッドラインタイマに読み込まれてもよい。一実施形態では、デッドラインタイマは、カウントダウンを開始するカウントダウンタイマであってもよい。この実装形態の場合、デッドラインは、現在のTSC値から差し引かれて、カウントダウンタイマは、デッドライン向けて複数周期の時を刻む。TSC値が、デッドラインを超えると、プロセッサの再開がトリガされる。すなわち、以下で説明するように、デッドラインタイマが0になるまでデクリメントされると、その時まで待機状態が続いている場合には、待機状態を終了させてもよい。レジスタの実装形態では、比較器によって、TSCカウンタの値と各周期におけるデッドラインとを比較してもよい。
上記のオペレーションにより、待機状態の間に、様々な構造へのアクセス及びテストを適切にセットアップすることができる。そして、待機状態に入ってもよい。待機状態は、一般的に、複数条件のうちの1つが発生するまで繰り返し実行されるループ155の一部であってもよい。図に示すように、命令情報からの目的の値が、レジスタに格納されている値と一致するかの判断が行われてもよい(ひし形140)。命令情報が目的の値を含む実装形態では、メモリから取得されレジスタに格納されたデータは、格納された値が目的の値と一致しているか判断するべくテストされてもよい。一致する場合には、条件が満たされたとして、制御がブロック195に移り、待機命令の実行が完了してもよい。命令の完了によって、待機状態を抜け出す理由のコードに対する指示を可能とするべく、様々なフラグ又はその他の値が設定されるようにしてもよい。命令が完了すると、待機状態を要求したスレッドのオペレーションが継続してもよい。ひし形140において、条件が満たされていないと判断された場合には、制御はひし形150に移り、デッドラインが発生したかの判断がなされる。発生した場合には、上記したように命令は完了となる。発生していない場合には、制御はひし形160に移り、プロセッサのウェイクアップ(wake up)を求めているその他のハードウェア構成要素が存在するかを判断してもよい。存在する場合には、上記のように命令が完了する。存在しない場合には、制御はブロック170に移り、デッドラインタイマの値に少なくとも一部基づいて、低電力状態が決定される。すなわち、OSが介入することなく、プロセッサ自身が、デッドラインが発生するまでの残り時間の長さに基づいて、適切な低電力状態を決定する。この決定を行うのに、ある実施形態では、例えば、プロセッサのアンコア(uncore)のロジックを使用してもよい。このロジックは、様々な低電力状態とデッドラインタイマ値とを関係付けるテーブルを含んでもよい又は関連付けられていてもよく、これについては以下で説明する。ブロック170の決定に基づいて、プロセッサは、低電力状態へと入る(ブロック180)。低電力状態では、プロセッサの様々な構造、命令が実行されるコア及びその他の構成要素の両方が、低電力状態に置かれてもよい。実装形態によって、低電力状態に置かれる具体的な構造及び低電力状態のレベルは、様々に異なる。限られた長さの時間しか残されていない場合には特定の低電力状態(例えば、深いスリープ状態)に入ることは適切でない場合があることから、更新される値が目的の値でないためにループが止まってしまう場合には、新しい低電力状態の決定は、更新されたデッドラインタイマの値に基づいて実行されてもよい。
コアを低電力状態にする様々なイベントが発生してもよい。特に、キャッシュされたデータ(すなわち、監視されるロケーションに対応する)が更新された場合(ひし形190)には、低電力状態が実行されてもよい。この場合には、制御がひし形140に戻される。同様に、デッドラインを過ぎた場合及び/又はウェイク信号が別のハードウェア構成要素から受信された場合には、制御が低電力状態から、ひし形150及び160のうちの一方に渡される。図1の実施形態では、ハイレベル実装形態が示されたが、本発明の範囲はこの点に関して限定されない。
別の実装形態では、目的の値に対してマスクベースのテストが行われてもよい。すなわち、ユーザーレベル命令は、明示的に、取得すべき目的の値を指示してもよい。一例として、この目的の値は、メモリから取得されたソース値と命令のソース/宛先オペランドに存在するマスク値との間のマスク演算の非ゼロ値であってもよい。一実施形態において、ユーザーレベル命令は、プロセッサISAの、ロード、マスク、ゼロウェイト(LDMWZ)命令であってもよい。一実施形態では、命令は、LDMWZ r32/64、M32/64の形式であってもよい。この形式では、第1オペランド(r32/64)はマスクを格納し、第2オペランド(M32/64)は、ソース値(すなわち、監視されるロケーション)を特定してもよい。そして、タイムアウト値が、第3レジスタに格納されてもよい。例えば、デッドラインは、明示的でないレジスタ(implicit register)に存在してもよい。具体的には、EDX:EAXレジスタを使用してもよく、このレジスタは、TSCカウンタが読み出されたときに書き込まれるレジスタと同じセットである。一般的に、命令は、セマフォ(semaphore)値のビジーでないポーリングを実行してもよく、セマフォが利用可能でない場合には、低電力状態に入る。異なる実装形態では、ゼロ(0)が待機状態の構成要素が存在しないことを示す、ビット毎のセマフォ及びカウンティングセマフォの両方を扱ってもよい。タイムアウト値は、無条件でオペレーションを再開する前の、プロセッサが待つべきTSCサイクルにおいて測定される時間の長さを、非ゼロ値結果で示してもよい。一実施形態において、どの物理的プロセッサが低電力状態にあるかの情報を、メモリマップドレジスタ(例えば、設定及びステータスレジスタ(CSR))を介してソフトウェアに提供することができる。
この実施形態では、LDMWZ命令は、ソースメモリロケーションからデータを読み込んで、そのデータをソース/宛先値でマスクし、生成された値がゼロであるかをテストする。マスクされた値がゼロでない場合には、メモリから読み込まれた値は、マスクされていないソース/宛先レジスタに配置される。ゼロである場合には、プロセッサは低電力待機状態に入る。この低電力状態は、Advanced Configuration and Power Interface (ACPI)規格バージョン4(2009年6月16日)に規定されているいわゆるCステートのような現在規定されている低電力状態に対応していてもよいし、対応していなくてもよい。規定の期間が満了した、外部からの例外(例えば、一般的な割り込み(interrupt:INTR)、マスク可能でない割り込み(non-maskable interrupt:NMI)又はシステム管理割り込み(system management interrupt:SMI))が通知された時、又は、マスクがゼロでない場合の値でソースメモリロケーションが書き込まれた時まで、プロセッサは低電力状態にあり続けてもよい。この待機状態に入る一部として、プロセッサは、プロセッサが現在待機状態であることを示すメモリマップドレジスタ(CSR)ビットをクリアしてもよい。
マスクされた場合にゼロでない値が生成されるような値が、監視されているロケーションに書き込まれたことに応答して、待機状態から抜ける際に、フラグレジスタのゼロ値インジケータがクリアされて、マスクされていない値の読み込み値が、宛先レジスタに配置されてもよい。タイマが満了になると、低電力状態から脱し、この状態をソフトウェアが検出可能なようにフラグレジスタのゼロ値インジケータが設定されてもよい。外部例外によって低電力状態からの脱出が行われる場合には、プロセッサ及びメモリのステートは、命令が実行されたとは見なされないようなステートであってもよい。そして、通常の実行フローに戻ると、同じLDMWZ命令が再び実行される。
図2には、本発明の別の実施形態に従って実行されるターゲット値のテストを示したフローチャートである。図2に示すように、方法200は、ソースデータを第1レジスタにロードすることによって開始されてもよい(ブロック210)。このソースデータは、第2レジスタに存在するマスクでマスクされてもよい(ブロック220)。様々な実施形態において、第1及び第2レジスタは、命令によって規定されてもよく、それぞれソースデータ及び宛先データの記憶場所に対応していてもよい。そして、マスクオペレーションの結果がゼロであるかの判断がなされてもよい(ひし形230)。ゼロである場合は、所望の条件が満たされ、プロセッサは低電力状態に入る(ブロック240)。ゼロでない場合は、ソースデータは、第2レジスタに格納されてもよく(ブロック250)、命令実行が完了する(ブロック260)。
待機状態の間に、ひし形265において目的のロケーションが更新されたと判断された場合には、制御はブロック220に戻り、マスクオペレーションが実行される。待機状態の間に、(ひし形270において判断される)別の条件が発生したと判断された場合には、制御はブロック260に移り、命令が完了する。図2の実施形態が、特定の実装例を示して説明されたが、本発明の範囲は、この点に関して限定されない。
図3は、本発明の一実施形態に係るプロセッサコアのブロック図である。図3に示すように、プロセッサコア300は、マルチステージ・パイプライン・アウトオブオーダ・プロセッサであってもよい。図3では、プロセッサコア300は、本発明の一実施形態に係るプロセッサ待機状態に関係して使用される様々な構成を示すべく、相対的に簡略化して図示されている。
図3に示すように、コア300は、実行すべき命令をフェッチし、プロセッサにおける後の使用に備えて命令を準備するのに使用されてもよいフロントエンドユニット310を含む。例えば、フロントエンドユニット310は、フェッチユニット301、命令キャッシュ303及び命令デコーダ305を含んでもよい。ある実装形態では、フロントエンドユニット310は更に、マイクロオペレーション記憶装置及びマイクロコード記憶装置と共に、トレースキャッシュを含んでもよい。フェッチユニット301は、例えば、メモリ又は命令キャッシュ303からマクロ命令をフェッチしてもよく、命令をプリミティブ、すなわち、プロセッサが実行するマイクロオペレーションへとデコードするべく、命令を命令デコーダ305に供給してもよい。フロントエンドユニット310において扱われるこのような命令の1つが、本発明の一実施形態に係るユーザーレベルプロセッサ待機命令であってもよい。この命令は、フロントエンドユニットを、待機命令に関連する上記のようなオペレーションの実行を可能とする様々なマイクロオペレーションにアクセス可能としてもよい。
フロントエンドユニット310と実行ユニット320との間には、マイクロ命令を受信して実行に備えるアウトオブオーダ(OOO)エンジン315が結合されてもよい。具体的には、OOOエンジン315は、マイクロ命令フローを並び替えて、実行に必要な様々なリソースを割り当てると同時に、レジスタファイル330及びベクトルレジスタファイル335のような様々なレジスタファイル内の記憶ロケーションにおける論理的レジスタのリネームを提供する様々なバッファを含んでもよい。レジスタファイル330は、整数及び浮動小数点オペレーションに対して、別のレジスタファイルを含んでもよい。拡張レジスタファイル335は、ベクトルサイズ単位の記憶場所を提供してもよく、例えば、1レジスタにつき256又は512ビットであってもよい。
実行ユニット320内には様々なリソースが存在してもよく、例えば、様々な整数、浮動小数点及び単一命令複数データ(SIMD)ロジックユニット、その他の専用ハードウェアが存在してもよい。例えば、このような実行ユニットは、1以上の算術論理演算ユニット(ALU)322を含んでもよい。また、本発明の一実施形態に係るウェイクアップロジック324が存在してもよい。ウェイクアップロジックは、ユーザーレベル命令に応答してプロセッサ待機モードを実行することに関係する特定のオペレーションを実行するのに使用されてもよい。以下に詳細に説明するように、このような待機状態を扱うための更なるロジックが、アンコアのようなプロセッサの別の部分に存在してもよい。図3には、複数のタイマ326のセットが示されている。分析を行う関係のあるタイマには、TSCタイマと、その他の条件が満たされない場合であってプロセッサが待機状態を離れるまでのデッドラインに対応する値を設定することができるデッドラインタイマが含まれる。ウェイクアップロジック324は、デッドラインタイマが特定のカウント値に達した時に(ある実施形態では、カウントダウンが0に達した時であってもよい)、特定のオペレーションをアクティブにしてもよい。結果が、リタイアメントロジック、すなわちリオーダバッファ(ROB)340に提供されてもよい。具体的には、ROB340は、実行される命令と関連付けられた情報を受信するための様々なアレイ及びロジックを含んでもよい。情報は、ROB340によって調べられて、命令が有効にリタイアされて、得られたデータがプロセッサのアーキテクチャ状態にコミットされるか否か、又は、命令の適切なリタイアメントを阻む1以上の例外が発生したかが判断される。無論、ROB340は、リタイアメントに関するその他のオペレーションを扱ってもよい。本発明の一実施形態に係るプロセッサ待機命令において、リタイアメントにより、ROB340に、プロセッサが待機状態を脱する理由を示すことができるフラグレジスタ又はその他のステータスレジスタの1以上のインジケータのステートを設定させてもよい。
図3に示すように、ROB340は、一実施形態ではローレベルキャッシュ(例えば、L1キャッシュ)であるキャッシュ350と結合されるが、この点に関して、本発明の範囲は限定されない。また、実行ユニット320は、キャッシュ350と直接結合することができる。図に示すように、キャッシュ350は、特定のキャッシュライン、すなわち、監視ロケーションを監視する監視エンジン352を含み、値が更新された時、ラインのコヒーレンシ状態に変化があった時、及び/又はラインが失われた時に、ウェイクアップロジック324(及び/又はアンコア構成要素)にフィードバックを提供する。監視エンジン352は、所定のラインを取得し、取得したラインを共有状態に保持する。共有状態からラインを失った場合には、監視エンジンは、プロセッサのウェイクアップを開始する。キャッシュ350から、ハイレベルキャッシュ、システムメモリ等へのデータ伝送が発生してもよい。図3の実施形態では、このようなハイレベル構成が示されているが、本発明の範囲はこの点に関して限定されない。
図4は、本発明の一実施形態に係るプロセッサのブロック図である。図4に示すように、プロセッサ400は、複数のコア410〜410を含むマルチコアプロセッサであってもよい。一実施形態において、このようなコアはそれぞれ、図3を参照して説明したコア300のように構成されていてもよい。様々なコアは、インターコネクト415を介して、様々な構成要素を含むアンコア(uncore)420と結合されてもよい。図に示すように、アンコア420は、ラストレベルキャッシュであってもよい共有キャッシュ430を含んでもよい。加えて、アンコアは、集積メモリコントローラ440、様々なインターフェース450及び電力管理ユニット455を含んでもよい。様々な実施形態において、プロセッサ待機命令の実行と関連する機能の少なくとも一部は、電力管理ユニット455に実装されてもよい。例えば、命令と共に受信された情報、例えば、デッドラインタイマ値に基づいて、電力管理ユニット455は、待機命令を実行する所定のコアが置かれる適切な低電力状態を決定してもよい。一実施形態において、電力管理ユニット455は、タイマ値を低電力状態と関連付けるテーブルを含んでもよい。ユニット455は、命令と関係付けられており決定されたデッドライン値に基づいてテーブルを参照し、対応する待機状態を選択してもよい。そして、電力管理ユニット455は、複数の制御信号を生成して、様々な構成要素、所定のコア及びその他のプロセッサユニットの両方を、低電力状態に入らせてもよい。図に示すように、プロセッサ400は、例えば、メモリバスを介して、システムメモリ460と通信を行ってもよい。また、インターフェース450により、周辺デバイス、マスストレージ等の様々なオフチップ構成要素との接続を行うことができる。図4の実施形態では特定の実装形態が示されているが、本発明の範囲はこの点に関して限定されない。
別の実施形態では、プロセッサアーキテクチャは、プロセッサが、ソースISAと称される第1のISAの命令を実行することができるエミュレーション機能を含んでもよく、アーキテクチャは、ターゲットISAと称される第2のISAに従う。一般的に、OS及びアプリケーションプログラムの両方を含むソフトウェアは、ソースISAにコンパイルされ、ハードウェアが、特別な性能及び/又はエネルギー効率機能を有する所定のハードウェア実装のために特に設計されたターゲットISAを実装する。
図5には、本発明の別の実施形態に係る、プロセッサのブロック図が示されている。図5に示すように、システム500は、プロセッサ510及びメモリ520を含む。メモリ520は、システム及びアプリケーションソフトウェアの両方を保持するコンベンショナルメモリ522、及び、ターゲットISA用に装備されたソフトウェアを有する隠しメモリ(concealed memory)524を含む。図に示すように、プロセッサ510は、ソースコードをターゲットコードへと変換するエミュレーションエンジン530を含む。エミュレーションは、解釈(Interpretation)又はバイナリ変換を使用して行われてもよい。解釈は、最初に出会うコードに対して多くの場合適用される。そして、ダイナミックプロファイリングにより、頻繁に実行されるコード領域(例えば、ホットスポット)が発見されると、そのコード領域が、ターゲットISAに変換されて、隠しメモリ524におけるコードキャッシュに格納される。変換プロセスの一部として最適化が行われ、非常に高い頻度で使用されるコードについては、後で更に最適化を行ってもよい。コードの変換されたブロックは、コードキャッシュ524に保持されて、繰り返し使用されてもよい。
また、図5に示すように、マルチコアプロセッサの1つのコアであってもよいプロセッサ510は、命令ポインタアドレスを命令キャッシュ(I−キャッシュ)550に提供するプログラムカウンタ540を含む。図に示すように、Iキャッシュ550は更に、所定の命令アドレスのミスが発生した場合に、隠しメモリ部分524から直接ターゲットISA命令を受信してもよい。そして、Iキャッシュ550は、入力される命令を受信するべく、ターゲットISAのデコーダであってもよいデコード560に提供されてもよいターゲットISA命令を格納してもよく、入力される命令は、マクロ命令レベルであってもよく、命令は、プロセッサパイプライン570内で実行するためのマイクロ命令へと変換される。本発明はこの点に関して限定されないが、パイプライン570は、命令を実行及びリタイアする様々なステージを含むアウトオブオーダーパイプラインであってもよい。本発明の一実施形態に係るプロセッサ待機命令を実行するべく、上記したような様々な実行ユニット、タイマ、カウンタ、記憶場所及び監視装置(モニタ)が、パイプライン570に存在してもよい。すなわち、プロセッサ510が、ユーザーレベルプロセッサの待機命令が提供されるマイクロアーキテクチャとは異なるマイクロアーキテクチャである実装形態であっても、下に位置するハードウェアにおいて命令を実行することができる。
図6は、本発明の一実施形態に係る、協調型スレッド間のやり取りを示したフローチャートである。図6に示すように、方法600は、例えば、マルチスレッド型プロセッサにおいて、複数のスレッドを実行するのに使用されてもよい。図6に示すように、2つのスレッド、スレッド1及びスレッド2は、1つのアプリケーションのスレッドであり、第1のスレッドによって使用されるデータが、最初に第2のスレッドによって更新されなければならないような態様で実装されている。したがって、スレッド1は、実行の間に、プロセッサ待機命令を受信してもよい(ブロック610)。この待機命令の実行の間に、テスト条件が満たされたか否かが判断されてもよい(ひし形620)。満たされていない場合には、スレッドが、低電力状態に入ってもよい(ブロック630)。図6には示されていないが、様々な条件のうちの1つが発生した場合には、この状態を脱することができる。テスト条件が満たされていた場合には、制御がブロック640に移り、第1スレッドにおける継続コード実行が発生してもよい。テスト条件が、監視されるロケーションに関するものであり、第2スレッドによっていつ更新が完了したかを示してもよい。スレッド2に示されるコードの実行の前に、テスト条件が満たされておらず、プロセッサが低電力状態に入る。
そして、図6に示すように、スレッド2は、第1スレッドに実装されているコードを実行してもよい(ブロック650)。例えば、第1スレッドの実行の間に使用されてもよい1以上の値を更新するべく、第2スレッドがコードを実行してもよい。第1スレッドが、更新された値を使用して実行を行うことを確かにするべく、第2スレッドによってデータが更新されるまで、第1スレッドが低電力状態に入るように、アプリケーションが書かれていてもよい。第2スレッドの実行の間、相互依存コードの実行が完了したかの判断が行われてもよい(ひし形660)。行われていない場合には、相互依存コードの実行の継続が発生してもよい。相互依存コード部分が完了してる場合には、制御がブロック670に移り、監視されているロケーションに所定の値が書き込まれてもよい(ブロック670)。例えば、この所定の値が、プロセッサ待機命令と関連付けられたテスト値に対応していてもよい。別の実施形態では、所定の値は、マスクされた時、又は、監視ロケーションにおける値のマスクとして使用された時に、結果がゼロとならない、テスト条件が満たされ第1スレッドが実行を継続可能であることを示す値であってもよい。スレッド2に示すように、所定の値を書き込んだ後、第2スレッドの継続コード実行が発生してもよい(ブロック680)。図6の実施形態では、特定の実装形態が示されたが、本発明の範囲はこの点に関して限定されない。
実施形態は、プロセッサが、OSの介入の必要なしに、1以上の所定の条件の発生を待つストールを可能とする軽量ストールメカニズムを実行可能としてもよい。この場合、プロセッサが電力を消費し、ハイパースレッド化されている機械が、テスト、一時停止及びジャンプオペレーションを含むループにおいて、セマフォ/値が真になったかをアプリケーションがポーリングする必要がない。したがって、オーバーヘッド及びスケジューリングの両方における制限をOSが監視する必要がなくなる(待機アプリケーションが、スケジュールされる次のスレッドでなくてもよい)。したがって、協調型スレッド間において軽量通信とすることができ、更に、プロセッサは、ユーザーが示した時間パラメータに基づいて柔軟にスリープ状態を選択することができる。
実施形態は、様々な種類のシステムに実装されてもよい。図7は、本発明の一実施形態に係る、システムのブロック図である。図7に示すように、マルチプロセッサシステム700は、ポイント・ツー・ポイントインターコネクトシステムであり、ポイント・ツー・ポイントインターコネクト750を介して結合される第1プロセッサ770及び第2プロセッサ780を含む。図7に示すように、プロセッサ770及び780のそれぞれは、第1及び第2プロセッサコア(すなわち、プロセッサコア774a及び774b及びプロセッサコア784a及び784b)を含むマルチコアプロセッサであってもよく、プロセッサ内には、更に多くのコアが存在していてもよい。プロセッサコアは、ユーザーレベルプロセッサ待機命令を含む様々な命令を実行してもよい。
また、図7に示すように、第1プロセッサ770は、メモリコントローラハブ(MCH)772及びポイント・ツー・ポイント(P−P)インターフェース776及び778を含む。同様に、第2プロセッサ780は、MCH782及びP−Pインターフェース786及び788を含む。図7に示すように、MCH772及び782は、プロセッサをそれぞれのメモリ、すなわちメモリ732及びメモリ734に結合させ、これらメモリは、メインメモリ(例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM))のプロセッサとローカルに接続されている部分であってもよい。第1プロセッサ770及び第2プロセッサ780は、P−Pインターコネクト752及び754を介して、チップセット790にそれぞれ結合されていてもよい。図7に示すように、チップセット790は、P−Pインターフェース794及び798を含む。
さらに、チップセット790は、P−Pインターコネクト739によって高性能グラフィックスエンジン738にチップセット790を結合させるインターフェース792を含む。そして、チップセット790は、インターフェース796を介して、第1バス716に接続されてもよい。図7に示すように、様々な入出力(I/O)デバイス714が、第1バス716を第2バス720に結合するバスブリッジ718と共に、第1バス716と結合されていてもよい。様々なデバイスを、第2バス720に結合させてもよく、例えば、キーボード/マウス722、通信デバイス726、ディスクドライブ又は一実施形態ではコード730を含んでもよいマスストレージデバイスのようなデータ記憶ユニット728を含むデバイスを結合させてもよい。更に、オーディオI/O724を、第2バス720と結合させてもよい。
実施形態はコードに実装されてもよく、命令を実行するシステムをプログラムするのに使用される命令を格納する記憶媒体に格納されてもよい。これに限定するわけではないが、記憶媒体としては、フロッピー(登録商標)ディスク、光ディスク、ソリッドステートドライブ(SSD)、コンパクトディスクリードオンリーメモリ(CD−ROM)、再書き込み可能コンパクトディスク(CD−RW)及び磁気光学ディスクを含むあらゆるディスク、並びに、リードオンリーメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)及びスタティックランダムアクセスメモリ(SRAM)のようなランダムアクセスメモリ(RAM)、消去可能−プログラム可能リードオンリーメモリ(EPROM)、フラッシュメモリ、電気的消去可能−プログラム可能リードオンリーメモリ(EEPROM)、磁気又は光学カードのような半導体デバイス、又は、電気的命令を格納するのに適したその他の種類の媒体が含まれる。
本発明が、限られた数の実施形態を参照して説明されたが、数多くの改良及び変更が可能であることは、当業者にとって明らかである。添付の特許請求の範囲は、本発明の精神及び範囲におけるこのような改良及び変更も含むことを意図している。

Claims (24)

  1. 監視されるロケーションのID及びタイマ値を規定する命令を第1アプリケーションから受信し、当該命令をデコードするデコードロジック、及び、前記デコードロジックと結合され前記タイマ値に関してカウントを実行するタイマを有するコアと、
    前記コアと結合され、前記タイマ値に少なくとも一部基づいて、プロセッサの低電力状態の一種類を決定し、前記監視されるロケーションの値がターゲット値と等しくなく且つ前記タイマ値が過ぎていない場合には、オペレーティングシステム(OS)の介入なしに、前記プロセッサを前記決定に応答した前記低電力状態にする電力管理ユニットと
    を備えるプロセッサ。
  2. キャッシュメモリと結合され、前記監視されるロケーションのコピーを含む前記キャッシュメモリのラインが更新されたかを判断する監視エンジンを更に備える請求項1に記載のプロセッサ。
  3. 前記監視エンジンは、更新された前記コピー及びウェイクアップ信号を、前記コアに伝達する請求項2に記載のプロセッサ。
  4. 前記コアは、更新された前記コピーが、前記ターゲット値に対応しているかを判断し、
    対応している場合には、前記低電力状態から抜け出し、
    対応していない場合には、新たな低電力状態を決定し、当該低電力状態に入る請求項3に記載のプロセッサ。
  5. 前記命令は、前記プロセッサに、第1の値を読み込ませ、前記第1の値と宛先ロケーションに格納されたデータとの間のマスクオペレーションを実行させるユーザーレベル命令であって、前記マスクオペレーションの結果が第1結果である場合には、前記低電力状態に入り、前記マスクオペレーションの結果が前記第1結果でない場合には、前記プロセッサは、前記第1の値を前記宛先ロケーションに読み込む請求項1に記載のプロセッサ。
  6. 前記マスクオペレーションの結果がゼロに等しい場合には、前記プロセッサは、フラグレジスタのゼロインジケータを設定する請求項5に記載のプロセッサ。
  7. 前記タイマは、タイムスタンプカウンタ値と前記タイマ値との間の差分に対応する値に設定される請求項1に記載のプロセッサ。
  8. 前記プロセッサは、前記コア及び第2コアを含むマルチコアプロセッサを含み、
    前記命令は、前記コアで実行される第1スレッド及び前記監視されるロケーションを更新する第2スレッドの命令である請求項1に記載のプロセッサ。
  9. 前記コアは、前記監視されるロケーションの前記更新に応答して、前記低電力状態を抜ける請求項8に記載のプロセッサ。
  10. 前記コアは、前記低電力状態を抜けた後に、前記第2スレッドが前記監視されるロケーションを更新する前に、前記第2スレッドによって更新されたデータを使用して前記第1スレッドの少なくとも1つのオペレーションを実行する請求項9に記載のプロセッサ。
  11. 監視されるロケーションのID及びタイマ値を規定する命令を、プロセッサ内の第1アプリケーションから受信しデコードする段階と、
    前記命令に応答して、前記プロセッサにおいて、前記プロセッサの低電力状態の一種類を前記タイマ値に少なくとも一部基づいて決定する段階と、
    前記監視する場所の値がターゲット値と等しくなく且つ前記タイマ値を過ぎていない場合に、前記決定に応答した前記プロセッサの前記低電力状態に入る段階と
    を備える方法。
  12. 前記命令は、前記監視されるロケーションに対する前記ターゲット値を更に規定する請求項11に記載の方法。
  13. 前記タイマ値を過ぎたことに応答して、前記低電力状態を抜け出す段階を更に備える請求項11に記載の方法。
  14. 前記プロセッサのキャッシュメモリの監視エンジンからウェイクアップ信号を受信することを含む、前記監視されるロケーションの値が前記ターゲット値に等しい時に、前記低電力状態を抜け出す段階を更に備え、
    前記監視エンジンは、前記監視されるロケーションのコピーを含むキャッシュラインの格納値が変化した時に、前記ウェイクアップ信号を送信する請求項11に記載の方法。
  15. 前記プロセッサの電力管理ユニット(PMU)を使用して、それぞれが一の低電力状態と一のタイマ値とを関連付けている複数のエントリを有するテーブルにおける情報に基づいて、複数の低電力状態から前記低電力状態の前記一種類を選択する段階と、
    前記プロセッサのコアを前記低電力状態にするべく、前記PMUから少なくとも1つの制御信号を前記コアに送信する段階とを更に備える請求項11に記載の方法。
  16. 前記プロセッサに結合された第2プロセッサからウェイクアップ信号を受信する段階と、
    前記ウェイクアップ信号に応答して、前記低電力状態を抜け出す段階とを更に備える請求項11に記載の方法。
  17. マルチコアプロセッサと、
    前記マルチコアプロセッサと結合されたダイナミック・ランダム・アクセス・メモリ(DRAM)とを備え、
    前記マルチコアプロセッサは、
    待機状態を発生させるべく、監視されるロケーション及びタイマ値を規定するユーザーレベル命令をデコードするデコードロジックを含む第1コア、及び、第2コアを含むマルチプロセッサと、
    前記デコードロジックと結合され、前記タイマ値に対してカウントを実行するタイマと、
    前記第1コア及び前記第2コアと結合され、オペレーティングシステム(OS)が介入することなく、前記タイマ値に少なくとも一部基づいて複数の低電力状態のうちの一つを選択し、前記監視されるロケーションの値がターゲット値と等しくない場合に、前記選択に応答して前記第1コアを選択された前記低電力状態にする電力管理ロジックと
    を有するシステム。
  18. 前記第1コアは、前記ユーザーレベル命令に応答して、第1オペランドと第2オペランドとの間のマスクオペレーションを実行し、前記マスクオペレーションの結果が前記ターゲット値でない場合に、前記選択された低電力状態に入る請求項17に記載のシステム。
  19. 前記第1コアに結合される監視ロジックを更に備え、
    前記監視ロジックは、前記監視されるロケーションの更新に応答して、前記第1コアを前記低電力状態から抜け出させる請求項18に記載のシステム。
  20. 前記監視されるロケーションと関連付けられているキャッシュラインが更新された時又は前記キャッシュラインのコヒーレンシ状態が更新された時には、前記監視ロジックは、ウェイクアップ信号を前記第1コアに送信する請求項19に記載のシステム。
  21. 命令を含む機械アクセス可能記憶媒体を備える物品であって、
    前記命令が実行されるとシステムに、
    第1スレッドの実行の間に、マルチコアプロセッサの第1コアにおいて、監視される場所及びタイマ値を規定するユーザーレベルプロセッサ待機命令を受信させ、
    前記第1コアにおいて、前記ユーザーレベルプロセッサ待機命令の条件が満たされたかを判断させ、満たされていない場合には、前記マルチコアプロセッサの電力管理ロジックによって選択される低電力状態に入らせ、
    前記マルチコアプロセッサの第2コアにおける第2スレッドの実行の間に、値を更新させ、
    前記値の更新に応答して、前記第1コアの前記低電力状態を抜け出させ、前記条件が満たされたかを判断させ、
    前記条件が満たされた場合には、前記第1コアにおける前記第1スレッドの実行を継続させる
    物品。
  22. 前記監視されるロケーションの更新に応答して、前記システムが前記第1コアについて前記低電力状態を抜け出させることを可能とし、前記システムが、前記値の更新を利用して前記条件をテストさせることを可能とする命令を更に備える請求項21に記載の物品。
  23. 前記監視されるロケーションと関連付けられるキャッシュラインが更新された時、又は、前記キャッシュラインのコヒーレンシ状態が更新された時に、前記システムが、前記監視されるロケーションに対する前記更新を判断することを可能とし、前記監視されるロケーションへの前記更新に応答して、前記システムが、前記第1コアについて前記低電力状態を抜け出させることを可能とする命令を更に備える請求項22に記載の物品。
  24. 前記電力管理ロジックを使用して、それぞれが一の低電力状態を一のタイマ値と関連付けている複数のエントリを有するテーブルにおける情報に基づいて、前記システムが、複数の低電力状態から前記低電力状態を選択することを可能とし、
    前記システムが、前記第1コアを前記低電力状態にするべく、少なくとも1つの制御信号を送信することを可能とする命令を更に備える請求項21に記載の物品。
JP2012517935A 2009-12-18 2010-11-11 プロセッサ、方法、システム、及び、プログラム Active JP5571784B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/641,534 US8464035B2 (en) 2009-12-18 2009-12-18 Instruction for enabling a processor wait state
US12/641,534 2009-12-18
PCT/US2010/056320 WO2011075246A2 (en) 2009-12-18 2010-11-11 Instruction for enabling a processor wait state

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014131157A Division JP5795820B2 (ja) 2009-12-18 2014-06-26 プロセッサ、方法、システム、及び、プログラム

Publications (2)

Publication Number Publication Date
JP2012531681A true JP2012531681A (ja) 2012-12-10
JP5571784B2 JP5571784B2 (ja) 2014-08-13

Family

ID=44152840

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2012517935A Active JP5571784B2 (ja) 2009-12-18 2010-11-11 プロセッサ、方法、システム、及び、プログラム
JP2014131157A Active JP5795820B2 (ja) 2009-12-18 2014-06-26 プロセッサ、方法、システム、及び、プログラム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2014131157A Active JP5795820B2 (ja) 2009-12-18 2014-06-26 プロセッサ、方法、システム、及び、プログラム

Country Status (8)

Country Link
US (3) US8464035B2 (ja)
JP (2) JP5571784B2 (ja)
KR (1) KR101410634B1 (ja)
CN (1) CN102103484B (ja)
DE (1) DE102010052680A1 (ja)
GB (1) GB2483012B (ja)
TW (1) TWI512448B (ja)
WO (1) WO2011075246A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020505696A (ja) * 2017-01-30 2020-02-20 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 電気デバイスにおける電力消費を最適化する方法、システム、およびコンピュータ・プログラム

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US8464035B2 (en) * 2009-12-18 2013-06-11 Intel Corporation Instruction for enabling a processor wait state
US8775153B2 (en) * 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
US8977878B2 (en) * 2011-05-19 2015-03-10 Texas Instruments Incorporated Reducing current leakage in L1 program memory
US9207730B2 (en) * 2011-06-02 2015-12-08 Apple Inc. Multi-level thermal management in an electronic device
WO2013048468A1 (en) 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
US9063760B2 (en) * 2011-10-13 2015-06-23 International Business Machines Corporation Employing native routines instead of emulated routines in an application being emulated
US9829951B2 (en) 2011-12-13 2017-11-28 Intel Corporation Enhanced system sleep state support in servers using non-volatile random access memory
WO2013095618A1 (en) 2011-12-23 2013-06-27 Intel Corporation Instruction execution that broadcasts and masks data values at different levels of granularity
WO2013101165A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Register error protection through binary translation
JP5900606B2 (ja) * 2012-03-30 2016-04-06 富士通株式会社 データ処理装置
US20140075163A1 (en) * 2012-09-07 2014-03-13 Paul N. Loewenstein Load-monitor mwait
JP5715107B2 (ja) * 2012-10-29 2015-05-07 富士通テン株式会社 制御システム
WO2014098845A1 (en) * 2012-12-19 2014-06-26 Intel Corporation Vector mask driven clock gating for power efficiency of a processor
US9081577B2 (en) 2012-12-28 2015-07-14 Intel Corporation Independent control of processor core retention states
US9164565B2 (en) 2012-12-28 2015-10-20 Intel Corporation Apparatus and method to manage energy usage of a processor
US9405551B2 (en) 2013-03-12 2016-08-02 Intel Corporation Creating an isolated execution environment in a co-designed processor
JP6175980B2 (ja) * 2013-08-23 2017-08-09 富士通株式会社 Cpuの制御方法、制御プログラム、情報処理装置
US9471133B2 (en) * 2013-08-28 2016-10-18 Via Technologies, Inc. Service processor patch mechanism
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9690581B2 (en) 2013-10-15 2017-06-27 Mil Computing, Inc. Computer processor with deferred operations
CN105094747B (zh) * 2014-05-07 2018-12-04 阿里巴巴集团控股有限公司 基于smt的中央处理单元以及用于检测指令的数据相关性的装置
US10467011B2 (en) * 2014-07-21 2019-11-05 Intel Corporation Thread pause processors, methods, systems, and instructions
KR20160054850A (ko) * 2014-11-07 2016-05-17 삼성전자주식회사 다수의 프로세서들을 운용하는 장치 및 방법
US20160306416A1 (en) * 2015-04-16 2016-10-20 Intel Corporation Apparatus and Method for Adjusting Processor Power Usage Based On Network Load
KR102476357B1 (ko) 2015-08-06 2022-12-09 삼성전자주식회사 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법
US20170177336A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Hardware cancellation monitor for floating point operations
US11023233B2 (en) 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension
US10185564B2 (en) 2016-04-28 2019-01-22 Oracle International Corporation Method for managing software threads dependent on condition variables
WO2018059655A1 (en) 2016-09-30 2018-04-05 Intel Corporation Method and apparatus for smart store operations with conditional ownership requests
US11061730B2 (en) * 2016-11-18 2021-07-13 Red Hat Israel, Ltd. Efficient scheduling for hyper-threaded CPUs using memory monitoring
US10289516B2 (en) 2016-12-29 2019-05-14 Intel Corporation NMONITOR instruction for monitoring a plurality of addresses
US11086672B2 (en) * 2019-05-07 2021-08-10 International Business Machines Corporation Low latency management of processor core wait state
CN113867518A (zh) * 2021-09-15 2021-12-31 珠海亿智电子科技有限公司 处理器低功耗阻塞式延时方法、装置及可读介质
CN113986663A (zh) * 2021-10-22 2022-01-28 上海兆芯集成电路有限公司 电子装置及其功耗控制方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001318742A (ja) * 2000-05-08 2001-11-16 Mitsubishi Electric Corp コンピュータシステムおよびコンピュータ読み取り可能な記録媒体
US20030126375A1 (en) * 2001-12-31 2003-07-03 Hill David L. Coherency techniques for suspending execution of a thread until a specified memory access occurs
JP2005316854A (ja) * 2004-04-30 2005-11-10 Fujitsu Ltd 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
JP2006500639A (ja) * 2001-12-31 2006-01-05 インテル コーポレイション 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置
JP2006031691A (ja) * 2004-06-30 2006-02-02 Intel Corp スリープ‐起動機構を用いた比較および交換動作
JP2007520769A (ja) * 2003-06-27 2007-07-26 インテル コーポレイション モニタメモリ待機を用いたキューされたロック
WO2009024459A1 (en) * 2007-08-17 2009-02-26 International Business Machines Corporation Proactive power management in a parallel computer

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2414573B (en) 2004-05-26 2007-08-08 Advanced Risc Mach Ltd Control of access to a shared resource in a data processing apparatus
US8719819B2 (en) * 2005-06-30 2014-05-06 Intel Corporation Mechanism for instruction set based thread execution on a plurality of instruction sequencers
US8607235B2 (en) * 2004-12-30 2013-12-10 Intel Corporation Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US7810083B2 (en) * 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
US8516483B2 (en) * 2005-05-13 2013-08-20 Intel Corporation Transparent support for operating system services for a sequestered sequencer
US8010969B2 (en) * 2005-06-13 2011-08-30 Intel Corporation Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
GB0519981D0 (en) * 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US8028295B2 (en) * 2005-09-30 2011-09-27 Intel Corporation Apparatus, system, and method for persistent user-level thread
US20090150696A1 (en) * 2007-12-10 2009-06-11 Justin Song Transitioning a processor package to a low power state
US9081687B2 (en) * 2007-12-28 2015-07-14 Intel Corporation Method and apparatus for MONITOR and MWAIT in a distributed cache architecture
US8156362B2 (en) * 2008-03-11 2012-04-10 Globalfoundries Inc. Hardware monitoring and decision making for transitioning in and out of low-power state
DE102009001142A1 (de) * 2009-02-25 2010-08-26 Robert Bosch Gmbh Elektromechanischer Bremskraftverstärker
US8156275B2 (en) * 2009-05-13 2012-04-10 Apple Inc. Power managed lock optimization
US8464035B2 (en) * 2009-12-18 2013-06-11 Intel Corporation Instruction for enabling a processor wait state

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001318742A (ja) * 2000-05-08 2001-11-16 Mitsubishi Electric Corp コンピュータシステムおよびコンピュータ読み取り可能な記録媒体
US20030126375A1 (en) * 2001-12-31 2003-07-03 Hill David L. Coherency techniques for suspending execution of a thread until a specified memory access occurs
JP2006500639A (ja) * 2001-12-31 2006-01-05 インテル コーポレイション 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置
JP2007520769A (ja) * 2003-06-27 2007-07-26 インテル コーポレイション モニタメモリ待機を用いたキューされたロック
JP2005316854A (ja) * 2004-04-30 2005-11-10 Fujitsu Ltd 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
JP2006031691A (ja) * 2004-06-30 2006-02-02 Intel Corp スリープ‐起動機構を用いた比較および交換動作
WO2009024459A1 (en) * 2007-08-17 2009-02-26 International Business Machines Corporation Proactive power management in a parallel computer

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020505696A (ja) * 2017-01-30 2020-02-20 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 電気デバイスにおける電力消費を最適化する方法、システム、およびコンピュータ・プログラム
JP6998385B2 (ja) 2017-01-30 2022-01-18 インターナショナル・ビジネス・マシーンズ・コーポレーション 電気デバイスにおける電力消費を最適化する方法、システム、およびコンピュータ・プログラム

Also Published As

Publication number Publication date
US8990597B2 (en) 2015-03-24
US20130246824A1 (en) 2013-09-19
WO2011075246A2 (en) 2011-06-23
GB2483012B (en) 2017-10-18
WO2011075246A3 (en) 2011-08-18
DE102010052680A1 (de) 2011-07-07
US20110154079A1 (en) 2011-06-23
CN102103484B (zh) 2015-08-19
GB201119728D0 (en) 2011-12-28
US20130185580A1 (en) 2013-07-18
JP5571784B2 (ja) 2014-08-13
JP5795820B2 (ja) 2015-10-14
KR20120110120A (ko) 2012-10-09
TW201131349A (en) 2011-09-16
KR101410634B1 (ko) 2014-06-20
US8464035B2 (en) 2013-06-11
GB2483012A (en) 2012-02-22
TWI512448B (zh) 2015-12-11
CN102103484A (zh) 2011-06-22
US9032232B2 (en) 2015-05-12
JP2014222520A (ja) 2014-11-27

Similar Documents

Publication Publication Date Title
JP5795820B2 (ja) プロセッサ、方法、システム、及び、プログラム
TWI742032B (zh) 用於使用者等級執行緒暫止的方法、設備及指令
US8539485B2 (en) Polling using reservation mechanism
TWI590153B (zh) 用於多線串處理之方法
JP4642305B2 (ja) マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置
US10423216B2 (en) Asymmetric multi-core processor with native switching mechanism
US9003421B2 (en) Acceleration threads on idle OS-visible thread execution units
US7127561B2 (en) Coherency techniques for suspending execution of a thread until a specified memory access occurs
JP2010044770A (ja) モニタメモリ待機を用いたキューされたロック
US8271765B2 (en) Managing instructions for more efficient load/store unit usage
US8612730B2 (en) Hardware assist thread for dynamic performance profiling
US20160162293A1 (en) Asymmetric processor with cores that support different isa instruction subsets
US20110173420A1 (en) Processor resume unit
US20240103914A1 (en) Dynamically adjusting thread affinitization using hardware-based core availability notifications
US20240103868A1 (en) Virtual Idle Loops

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130617

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131002

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131022

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140508

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140527

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140626

R150 Certificate of patent or registration of utility model

Ref document number: 5571784

Country of ref document: JP

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