[go: up one dir, main page]

JP2007520769A - モニタメモリ待機を用いたキューされたロック - Google Patents

モニタメモリ待機を用いたキューされたロック Download PDF

Info

Publication number
JP2007520769A
JP2007520769A JP2006515366A JP2006515366A JP2007520769A JP 2007520769 A JP2007520769 A JP 2007520769A JP 2006515366 A JP2006515366 A JP 2006515366A JP 2006515366 A JP2006515366 A JP 2006515366A JP 2007520769 A JP2007520769 A JP 2007520769A
Authority
JP
Japan
Prior art keywords
processor
monitor
lock
instruction
monitoring
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006515366A
Other languages
English (en)
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 JP2007520769A publication Critical patent/JP2007520769A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

モニタ−メモリ待機を用いてロックを監視する方法、装置及びシステムが提供される。一実施例によると、競合するロックに係るノードが監視され、競合するロックを求めるプロセッサは、モニタイベントが発生するまでスリープ状態にされる。

Description

発明の詳細な説明
[発明の技術分野]
本発明は、プロセッサに関し、より詳細には、1以上のプロセッサが利用可能となるまでロックを待機するため、ロックを監視するためのモニタメモリ待機を利用することに関する。
[関連技術の説明]
典型的には、ハイパースレッドまたはマルチスレッドプロセッサは、複数の命令シーケンスを同時処理することが可能である。1つのプロセッサ内での複数の命令シーケンスの実行を促進する主要な動機要因は、結果としてのプロセッサ利用性の向上である。ハイパースレッドプロセッサは、複数の命令ストリームが各実行リソースにおいて当該リソースをより良好に利用するため同時に実行することを可能にする。さらに、ハイパースレッドプロセッサは、大きな遅延に直面するか、あるいはしばしばイベントの発生を待機するプログラムに利用可能である。
典型的には、ハイパースレッドプロセッサは、すべてのスレッドまたは論理プロセッサ(プロセッサ)により共有される1つのリソース設定を有する。特に1以上のプロセッサがロックが利用可能になるのを待機しているとき、適切なリソースを有しないことは、プロセッサ間の重大なコンテンションを引き起こすかもしれない。プログラム処理効率及び複数のプロセッサ間のロックコンテンションを処理する他のリソースを消費する遅延を改善するいくつかの技術が提案されてきている。例えば、従来のSpin−Waitingロックシステムでは、待機リストのロックが利用可能となるまで待機するため、ロック待機するプロセッサを待機リストに置くための待機キューが用いられる。しかしながら、当該待機中、プロセッサはロックのメモリ位置に連続的にアクセスし、当該メモリ位置でのメモリコンテンション、リソースのボトルネック、及びメモリ帯域幅、計算帯域幅、マイクロアーキテクチャリソース及び電力の浪費を引き起こす。このような「ビジー待機」プロセッサは、他のプロセッサのパフォーマンスに対して悪影響を及ぼし得る。
[詳細な説明]
ロックを待機する1以上のプロセッサのためロックを監視する方法及び装置が、説明される。概略的には、本発明の実施例は、ロックが利用可能となるまでロックを待機する1以上のプロセッサのため、ロックを監視するモニタメモリ待機を使用する。
ロックがプロセッサに利用可能になるなど、モニタイベントが発生するまで他のプロセッサと競合するロックを取得するため、プロセッサをスリープ状態にするシステム、装置及び方法が提供される。すなわち、プロセッサはロックが利用可能となるのを待機しているが、キューへの待機中にはスリープ状態となるようにしてもよい。一実施例によると、プロセッサをスリープ状態にする選択肢は、プロセッサがそれのリソースを解放し、他のプロセッサによる使用のため解放されたリソースを提供することを含む。一実施例によると、ロックを求めるプロセッサは、ハイパースレッドプロセッサの論理プロセッサであってもよい。典型的なハイパースレッドプロセッサは、同一のリソースを共有する論理プロセッサまたは複数のスレッドを含むものであってもよい。
一実施例によると、競合するロックを監視し、例えばロックが利用可能となるまでプロセッサをスリープ状態にするため、モニタメモリ待機(monitor−mwait)機構が利用されてもよい。競合するロックは、1以上のプロセッサが取得要求または待機するロックを参照するものであってもよい。一実施例によると、プロセッサに対応して、ノードまたはキュー要素(ノード)が生成されてもよい。一実施例によると、monitor−mwaitを用いて、ノードは初期化、競合するロックとの関連付け、及び監視されるようにしてもよい。ノードの監視は、例えば、モニタアドレスと呼ばれるロックのロックアドレスを監視することによって、ロックを監視することを含む。
一実施例によると、1以上のイベント、または設定時間はモニタイベントと呼ばれ、モニタイベントの発生により、ノードの監視が終了し、プロセッサはアウェイクしてもよい。例えば、ロック及びロックの利用性を要求するため、キューの次にプロセッサを有することは、モニタイベントと呼ばれてもよい。言い換えると、プロセッサが競合するロックを受付けるため列の次(または最初)にあって、ロックが利用可能になると、プロセッサはロックを要求し、以前に解放したリソースの一部またはすべてを再要求するかもしれない。一実施例によると、競合するロックは、当該ロックを所持する他のプロセッサにより解放されると利用可能になるかもしれない。
一実施例によると、monitor−mwaitは、他のプロセッサに処理リソースを使用させながら、1つのスレッドまたはプロセッサにおいて実現されてもよい。例えば一実施例によると、プロセッサが、指定されたメモリ位置への書き込みなど特定のメモリアクセスが発生するまでスリープ状態とされるように、モニタは設定されてもよい。プロセッサは、指定されたイベントに応答して、プロセッサリソースを浪費するルーチンを実行することなくアウェイクされてもよい。一実施例によると、現在スリープ状態のプロセッサに以前は専用されていたパーティションは、プロセッサがまだスリープ状態にありながら解放されてもよい。本発明の上記及び/または他の実施例は、マシーンの全体的スループットをやや向上させるかもしれない。
以下の説明では、論理実現形態、オペコード、リソースパーティション、リソース共有、リソース重複実現形態、システムコンポーネントのタイプ及び相互関係、及び論理パーティション/統合選択などの多数の具体的詳細は、本発明の各種実施例のより完全なる理解を提供するため与えられる。しかしながら、本発明の実施例が与えられた開示に基づきそのような具体的詳細なく実現可能であるということは、当業者には理解されるであろう。他の例では、制御構成、ゲートレベル回路及びフルソフトウェア命令シーケンスは、本発明を不明りょうにしないように示されていない。含まれている説明により、当業者は、過度の実験なく適切な機能を実現することができるであろう。
本発明の実施例の各ステップが、以下において説明される。これら実施例の各ステップは、ハードウェアにより実行されてもよいし、あるいは、プログラムされた汎用または特定用途プロセッサまたはマシーンや論理回路に各ステップを実行させるのに用いられるマシーン実行可能命令により実現されてもよい。あるいは、実施例の各ステップは、ハードウェアとソフトウェアの組み合わせにより実行されてもよい。
本発明の各種実施例が、コンピュータ(または他の電子装置)に本発明の各種実施例によるプロセスを実行するようプログラムするのに用いられる命令を格納した機械可読媒体を有するコンピュータプログラムプロダクツとして提供されてもよい。機械可読媒体は、以下に限定するものではないが、フロッピー(登録商標)ディスケット、光ディスク、CD−ROM、光磁気ディスク、ROM、RAM、EPROM、EEPROM、磁気または光カード、フラッシュメモリ、あるいは電子命令を格納するのに適した他のタイプの媒体/機械可読媒体を含むものであってもよい。さらに、本発明の各種実施例はまた、搬送波に実現されるデータ信号、または通信リンク(モデムまたはネットワーク接続など)を解した他の伝搬媒体により、リモートコンピュータから要求元コンピュータに伝送可能なプログラムを有するコンピュータプログラムプロダクツとしてダウンロードされてもよい。
図1は、メモリアクセスモニタ110を有するハイパースレッドプロセッサ100の実施例を示すブロック図である。一実施例によると、プロセッサ100は、単一の集積回路として形成されてもよい。他の実施例によると、複数の集積回路からプロセッサ100が形成されてもよく、またさらなる他の実施例では、ハードウェア及びソフトウェアルーチン(バイナリ変換ルーチン)からプロセッサ100が形成されてもよい。図示されるように、バス/メモリコントローラ120が、フロントエンド130に実行命令を与えるようにしてもよい。フロントエンド130は、命令ポインタ170により各種スレッドからの命令の抽出を指示するかもしれない。命令ポインタ論理が、複数のスレッドをサポートするよう複製されてもよい。
一実施例によると、フロントエンド130は、さらなる処理のため、命令をスレッド/プロセッサパーティション可能リソース140に供給するかもしれない。スレッド/プロセッサパーティション可能リソース140は、複数のスレッドがプロセッサ100内でアクティブ状態であるとき、特定スレッドに専用とされる論理分離されたパーティションを有するようにしてもよい。一実施例によると、独立した各パーティションは、当該パーティションが専用とされるスレッドからの命令のみを有するようにしてもよい。スレッド/プロセッサパーティション可能リソース140は、例えば、命令キューを備えるようにしてもよい。シングルスレッドモードにおいて、スレッド/プロセッサパーティション可能リソース140のパーティションは、当該1つのスレッドに専用とされる単一の大きなパーティションを形成するよう合成されてもよい。
一実施例によると、プロセッサ100はまた、複製された状態180を有するようにしてもよい。複製状態180は、論理プロセッサに対してコンテクストを維持するのに十分な状態変数を有するものとされてもよい。複製状態180により、複数のスレッドが状態変数ストレージの競合なく実行されるかもしれない。さらに、レジスタ割当論理が、各スレッドに対して複製されてもよい。複製状態に関する論理は、実行用に入力された命令を準備するため、適切なリソースパーティションにより動作可能である。
一実施例によると、スレッド/プロセッサパーティション可能リソース140は、共有リソース150に命令をわたす。共有リソース150は、各自のソースに関係なく命令に対して動作する。例えば、スケジューラ及び実行ユニットは、スレッドに認識されていない共有リソースであってもよい。パーティション可能リソース140は、アクティブ状態の各スレッドに対する継続された進捗を提供する公平な方法によりスレッド間を交代することによって、複数のスレッドから共有リソース150に命令を供給する。従って、共有リソース150は、スレッドの混合を気にすることなく、適切な状態において与えられた命令を実行する。
一実施例によると、他のスレッド/プロセッサパーティション可能リソース群160が共有リソース150に続くかもしれない。スレッド/プロセッサパーティション可能リソース160は、リオーダバッファなどのリタイアメントリソースを有するようにしてもよい。従って、スレッド/プロセッサパーティション可能リソース160は、各スレッドからの命令の実行が適切に終了し、当該スレッドの適切な状態が適切に更新されることを保証する。
一実施例によると、プログラマーには、メモリ位置の定期的ポーリングまたは命令の実行さえ必要とすることなく、モニタメモリ待機の機能を実現する機構が設けられてもよい。例えば、プロセッサ100は、メモリアクセスモニタ110を有するようにしてもよい。メモリアクセスモニタ110は、メモリアクセスモニタ110が観察可能なメモリアクセスサイクルに関する情報によりプログラム可能であってもよい。従って、メモリアクセスモニタ110は、比較論理114によりバス/メモリコントローラ120から受信するバスサイクル情報と比較されるモニタサイクル情報レジスタ112を有するようにしてもよい。一致が発生すると、回復スレッド信号が、停止されているスレッドを再開するのに生成される。メモリアクセス情報が、プロセッサの内部及び/または外部バスから取得されてもよい。
モニタサイクル情報レジスタ112は、スレッドの再開をトリガーするアドレス及び/またはサイクルタイプを指定する詳細を有するようにしてもよい。一実施例によると、モニタサイクル情報レジスタ112は物理的アドレスを格納し、メモリアクセスモニタ110は、当該物理的アドレスへの実際または潜在的書き込みを示す任意のバスサイクルを待機する。このようなサイクルは、明示的な書き込みサイクルの形態をとるものであってもよいし、及び/または、外部バストランザクションなしにキャッシュ可能ラインに書き込みされるように、当該ラインの排他的所有を他のエージェントが試みることにより無効なサイクルまたは所有に対する読み込みであってもよい。メモリアクセスモニタ110は、各実施例の各種トランザクションに対してトリガーするようプログラムされてもよい。
図2は、ハイパースレッドプロセッサの動作の実施例を示すフロー図である。図1の各種実施例の動作が、図2のフロー図を参照してさらに説明される。一実施例によると、プロセッサ100の命令セットは、モニタトランザクション情報を設定するためのMONITORオペコード(命令)を有するようにしてもよい。処理ブロック200において、MONITORオペコードは、第1スレッド(T1)の命令シーケンスの一部として受信される。処理ブロック210において、MONITORオペコードに応答して、プロセッサ100は、メモリアクセスモニタ110が指定されたメモリアクセスに対するメモリアクセスを監視することを可能にする。トリガーされたメモリアクセスは、明示的または非明示的オペランドとして予めレジスタまたは他の位置に格納されてもよい。従って、MONITORオペコードの実行は、モニタアドレスが非明示的オペランドとしてレジスタまたは他の位置に予め格納されるとき、モニタアドレスを指定する。メモリアクセスモニタ110は、指定されたサイクルが判定ブロック215において検出されるかテストする。指定されたサイクルが検出されない場合、メモリアクセスモニタ110は、メモリアクセスの監視を継続する。トリガーされたサイクルが検出されると、モニタイベント保留標識が、処理ブロック220において設定される。
一実施例によると、MONITORオペコードの実行が、メモリアクセスモニタ110の起動をトリガーするかもしれない。メモリアクセスモニタ110は、プロセッサ100の他の動作とパラレルに実行開始する。一実施例によると、MONITOR命令自体のみが、適切なメモリサイクル情報によりメモリアクセスモニタ110を設定し、非マスク状態のモニタイベントなしにメモリアクセスモニタ110を起動する。言い換えると、MONITORオペコードの実行後、モニタイベントが発生するが、それらが明示的に非マスク状態とされていない場合には、認識されることはない。
処理ブロック225において、メモリ待機(mwait)のトリガー処理は、独立したイベントとして示されている。一実施例によると、MWAITオペコードは、モニタイベントの認識及びT1の一時停止をトリガーするのに利用可能である。独立した2つの命令を用いてスレッドの一時停止を設定及びトリガーすることは、プログラマーに付加的なフレキシビリティを提供し、より効率的なプログラミングを可能にするかもしれない。他の実施例によると、mwaitは、メモリアクセスモニタ110を設定する第1オペコードからトリガーされてもよい。何れのケースでも、1以上の命令がメモリアクセスモニタ110を準備し、モニタイベントの認識を可能にする。
一実施例によると、独立したオペコードがメモリアクセスモニタ110を準備し、モニタイベントの認識をトリガーするのに利用される場合、判定ブロック230において、メモリアクセスモニタ110がスレッドの一時停止前に起動されたことを確認するためテストが行われてもよい。さらに、モニタイベントがすでに保留されているかテストすることにより(図示せず)、T1の一時停止は回避され、処理は処理ブロック250に続く。モニタ110がイネーブルとされ、モニタイベントがすでに保留されていない場合、T1が処理ブロック235において一時停止される。
T1が一時停止されるとことにより、一実施例によると、プロセッサ100は、T1に専用とされるパーティション可能リソース140及び160のパーティションの一部またはすべてを解放するようにしてもよい。他の実施例によると、MONITORオペコードの各組み合わせ、またはそれに関する設定が、あるとすれば解放するリソースを示すようにしてもよい。例えば、プログラマーがより短時間の待機を予想するとき、スレッドは一時停止されるが、それのリソースパーティションを維持するようにしてもよい。共有リソースはスレッド停止期間中に他のスレッドにより排他的に利用可能であるため、スループットは依然として向上される。長時間の待機が予想されるとき、停止されているスレッドに関するすべてのパーティションを解放することは、他のスレッドが追加的リソースを有することを可能にし、これにより、その他のスレッドのスループットが潜在的に増大することとなる。この追加的スループットは、スレッドがそれぞれ一時停止及び再開されるとき、消去及び追加されたパーティションに関するオーバヘッドのコストを犠牲にして行われるかもしれない。
一実施例によると、T1は、モニタイベントが保留されている間、一時停止状態に留まるかもしれない。前述のように、メモリアクセスモニタ110は、モニタイベントを検出及び通知するため、独立に動作するようにしてもよい(ブロック215−220)。プロセッサ100によりモニタイベントが判定ブロック240において保留されていることが検出されると、処理ブロック250においてT1が再開される。モニタイベントがT1をウェークアップするのに、T1においてアクティブ状態の命令処理が行われる必要はない。むしろ、T1は一時停止されたままとされ、イネーブルにされたメモリアクセスモニタ110がプロセッサ110にイベントを通知するようにしてもよい。プロセッサ100は、当該イベントを処理し、T1を示すイベントが再開されるべきであることを認識し、T1を再開するため適切なアクションを実行する。
図1及び2の実施例は、プログラムにより一時停止されたスレッドが指定されたメモリアクセスの発生により再開されるのを可能にする技術を提供する。一実施例によると、他のイベントがT1を再開させてもよい。例えば、割り込みがT1を再開させるようにしてもよい。このような実現形態は、メモリアクセスモニタ110が特定のメモリアクセスまたはスレッドを再開させるべき他の状態を見落とす(検出しない)可能性があるため、メモリアクセスモニタ110が完全未満であることを許容する。この結果、T1はときどき不必要にアウェイクされるかもしれない。しかしながら、このような実現形態は、T1が見逃したイベントにより永久的にフリーズする確率を低下させ、ハードウェア構成及び有効性が簡単化される。T1の不必要なアウェイク動作は、利便性に関しては些細なものであるかもしれない。なぜならば、アウェイクした条件が真に発生したか、そしてもう一度一時停止していないかT1にダブルチェックさせるため、ループが構成されているためである。
一実施例によると、スレッド/プロセッサパーティション可能リソース、複製リソース、及び共有リソースは、異なって構成されてもよい。一部の実施例では、共有ソースの両端にはパーティション可能リソースがなくてもよい。一実施例によると、スレッド/プロセッサパーティション可能リソースは、厳密にはパーティションされず、一部の命令は複数のパーティションにわたるようにすることも可能であり、あるいは当該パーティションで実行されているスレッドまたは実行されているスレッドの合計に依存してサイズを可変とすることも可能である。さらに、異なるリソースの組み合わせが、共有、重複及びスレッドパーティションリソースとして指定されてもよい。
図3は、ハイパースレッドプロセッサの実施例を示すブロック図である。図示されるように一実施例によると、図3は、特にコヒーレンシー関連論理350、一実現形態によるモニタ310、及び一実現形態によるスレッド一時停止/再開及びプロセッサスリープ/アウェイク論理377を有する。一実施例によると、バスインタフェース300は、バスコントローラ340、イベント検出論理345、モニタ310及びコヒーレンシー関連論理350を有する。
一実施例によると、バスインタフェース300は、マイクロ命令からuOP(マイクロオペランド)を生成するuOP生成を実行するフロントエンド365に命令を与える。実行リソース370は、フロントエンド365からuOPを受け取り、実行後バックエンド論理380が各種uOPをリタイアする。一実施例によると、アウト・オブ・オーダ実行が、フロントエンド、バックエンド及び実行リソースによりサポートされる。
一実施例によると、MONITORオペコードがバスインタフェース300を介しプロセッサに入力され、フロントエンド365による実行のため用意されてもよい。一実施例によると、実行リソース370による実行のため、特殊なMONITOR uOPが生成されてもよい。MONITOR uOPは、アドレス変換論理375によりモニタ310に提供される物理的アドレスに変換されるモニタアドレスにより、実行ユニットによるストア動作と同様に処理されてもよい。モニタ310は、スレッドを再開させるため、スレッド一時停止/再開及びプロセッサスリープ/アウェイク論理377と通信する。スレッドは、アクティブなスレッド数が変化すると、パーティションを実行し、リソースをアニールするため、論理を一時停止及び再開する。
例えば、図4は、リソースのパーティション、共有及び複製のための処理の実施例を示すブロック図である。一実施例によると、パーティションされたリソースは、マシーンのアクティブなスレッドのフローに従ってパーティション及びアニール(他のスレッドに拠る再利用のため合成される)されてもよい。一実施例によると、複製リソースは、パイプラインの命令フェッチ部分405に命令ポインタ論理、パイプラインのリネーム部分415にレジスタリネーミング論理、状態変数(図示せず)及び割込みコントローラ(図示せず)を有するようにしてもよい。一実施例によると、共有リソースは、パイプラインのスケジュール段階425にスケジューラ、パイプラインのレジスタリード部分430とレジスタライト部分445にレジスタ群、及びパイプラインの実行部分435に実行リソースを有するようにしてもよい。さらに、トレーズキャッス(I−フェッチ405に)とL1データキャッシュ(L1キャッシュ440に)は、スレッドコンテクストに関係なくメモリアクセスにより集められた共有リソースであってもよい。他の実施例によると、スレッドコンテクストの考慮が、キャッシュ処理判断に利用されてもよい。一実施例によると、パーティションリソースは、パイプラインのキュー処理段階410に2つのキュー、パイプラインのリタイアメント段階450にリオーダバッファ、及びストアバッファを有するようにしてもよい。スレッド選択多重化論理が、適切なアクセスを両方のスレッドに提供するため、各種重複リソースとパーティションリソースの間で交代される。
例示のため、図4に示されるように、パーティション、共有及び重複処理は、図3のプロセッサの実施例の動作のさらなる説明において、図3の実施例に関して利用されてもよい。特に、図3の実施例の動作のさらなる詳細が、図5のフロー図に関して説明される。プロセッサは、少なくとも2つのアクティブ状態のスレッドによるマルチスレッドモードにより実行されると仮定する。
図5は、スレッドの一時停止及び再開を行うためのプロセスの実施例を示すフロー図である。処理ブロック500において、フロントエンド365は、第1スレッド(T1)の実行中にMONITORオペコードを受け取る。一実施例によると、フロントエンド365は、特殊なモニタuOPを生成する。MONITOR uOPは、実行リソース370にわたされる。MONITOR uOPは、監視対象となるアドレスを示す関連するアドレス(モニタアドレス)を有するようにしてもよい。この関連するアドレスは、明示的亜オペランドまたは非明示的オペランドの形態をとるものであってもよい。(すなわち、関連するアドレスは、所定のレジスタまたは他の格納位置から取得される。)関連するアドレスは、それがモニタアドレスを決定するのに十分な情報を伝達するという点で、モニタアドレスを「示す」かもしれない(おそらく他のレジスタおよび情報と共に)。例えば、関連するアドレスは、適切なモニタアドレスである対応する物理的アドレスを有するリニアアドレスであってもよい。あるいは、モニタアドレスは仮想的アドレスフォーマットにより与えられてもよく、または、相対アドレスとして示されてもよく、または、他の既知または便利なアドレス指定方法により指定されてもよい。仮想アドレスオペランドが使用される場合、一般的な保護エラーがブレークイベントとして認識されるのを可能にすることが望ましい。
モニタアドレスは、モニタリング用のメモリの任意の有用なユニットを示すものであってもよい。例えば一実施例によると、モニタアドレスはキャッシュラインを示すものであってもよい。しかしながら、他の実施例によると、モニタアドレスはキャッシュラインの一部、各プロセッサのキャッシュラインサイズに対する書く関係を保持するメモリのユニットまたは指定/選択されたサイズ部分、あるいは1つのアドレスを示すものであってもよい。モニタアドレスは、オペランドにより指定されたデータ(及びさらなるデータ)を含むユニットを示し、あるいは、所望のデータユニットに対するアドレスを具体的に示すものであってもよい。
一実施例によると、図3の図を用いて、モニタアドレスがアドレス変換論理375に提供され、モニタアドレスレジスタ335に格納される場合には、モニタ310にわたされる。MONITORオペコードに応答して、実行リソース370は、処理ブロック510に示されるように、モニタ310をイネーブル及び起動するようにしてもよく、図6においてさらに説明される。一実施例によると、MONITORオペコード後に発生する任意のストア動作は、ストアが処理され、スレッド一時停止の発生前に検出されることを保証するため制限されるようにしてもよい。一実施例によると、一部の動作は以降の命令が実行可能となる前にモニタ310を起動した結果として行われる必要がある。しかしながら、処理ブロック510は処理ブロック505とパラレルに実行されるよう図示されている。なぜなら、一実施例によるMONITORオペコードにより起動されると、ブレークイベントが発生するまで他の動作とパラレルにモニタ310が動作を継続するためである。
処理ブロック505において、MEMORY WAIT(MWAIT)オペコードが、スレッド1で受信される。一実施例によると、MWAITオペコードは、モニタイベントをマスク解除するため実行されてもよい。MWAITオペコードに応答して、モニタイベントが保留中であるか判断するため、処理ブロック515においてテストが実行される。モニタイベントが保留中でない場合、モニタがアクティブ状態であるか判断するため、処理ブロック520においてテストが実行される。例えば、MWAITがMONITORを以前に実行することなく実行される場合、モニタ310はアクティブ状態でないかもしれない。モニタがアクティブ状態でないか、あるいはモニタイベントが保留中である場合、スレッド1の実行は処理ブロック565において継続される。
一実施例によると、モニタ310がアクティブ状態であり、保留中のモニタイベントがない場合、スレッド1の実行は処理ブロック525において一時停止される。スレッド一時停止/再開論理377は、処理ブロック530において、すべての命令をクリアするため、プロセッサパイプラインを排出するためのパイプラインフレッシュ論理382を有するようにしてもよい。パイプラインが排出されると、パーティション/アニール論理385は、処理ブロック535において、スレッド1に排他的に関連付けされた任意のパーティションリソースを他のスレッドによる利用のため解放させるようにしてもよい。これら解放されたリソースは、残りのアクティブ状態のスレッドが利用するより大きなリソースを構成するためアニール処理されてもよい。例えば、図4の2スレッドの例を参照するに、スレッド1に関するすべての命令は、両方のキューから排出される。キューの各ペアは、より大きなキューを第2スレッドに与えるため合成されてもよい。同様に、レジスタプールからのさらなるレジスタが、第2スレッドに利用可能とされ、ストアバッファからのさらなるエントリが、第2スレッドに対し供給され、リオーダバッファのさらなるエントリが、第2スレッドに利用可能とされてもよい。基本的に、これらの構成は2倍のサイズの単一の専用の構成に戻される。異なる個数のスレッドを用いた実現形態から生じる異なる比率が考慮される。
一実施例によると、処理ブロック540、545及び550において、各種イベントは、スレッド1が再開されてもよいか判断するためテストされる。特に、これらのテストは、スレッド1の一部として命令が実行されることにより実行されなくてもよい。むしろ、これらの処理は、他のスレッドのそれの処理とパラレルに、プロセッサにより実行されてもよい。図6に関して詳細に説明されるように、モニタ自体が、モニタライトイベントが発生したかチェックし、イベント保留標識を設定することによりこれを示す。イベント保留標識は、EVENT信号を介し一時停止/再開論理377(マイクロコードなど)に提供されてもよい。マイクロコードは、処理ブロック505において、モニタイベントがMWAITオペコードによりマスク解除されたため、一実施例において適切な命令境界でモニタイベントを認識するかもしれない(ブロック540)。イベント検出論理345は、処理ブロック545において、ブレークイベントとして指定される割込みなどの他のイベントを検出する。さらに一実施例によると、処理ブロック550において、プロセッサがあるイベントシーケンスによりフリーズしないことを保証するため、メモリ待機状態から抜け出すため任意的なタイマーを定期的に利用するようにしてもよい。これらのイベントの何れもがmwait状態への脱出を通知しない場合、スレッド1は一時停止されたままである。
一実施例によると、スレッド1が再開される場合、スレッド/一時停止再開論理377は、適切なイベントを検出することにより再び起動されてもよい。再び、パイプラインが処理ブロック555においてフラッシュされ、リソースがまもなくアウェイクされるスレッド1を収容するよう再びパーティション可能となるように、パイプラインから命令を排出する。処理ブロック560において、適切なリソースが再パーティションされ、スレッド1が処理ブロック565において再開されてもよい。
図6は、論理のモニタリングの起動及び動作のためのプロセスの実施例を示すフロー図である。処理ブロック600において、スレッド1のフロントエンドフェッチ処理は、さらなるスレッド1の処理がマシーンに入力されるのを防ぐため停止される。処理ブロック605において、関連するアドレスオペランドが、リニアアドレスから物理的アドレスにアドレス変換論理375により変換される。処理ブロック610において、監視されているブロックへの書き込みの観察可能性は増大し、おそらく、モニタ310自体が見ることが可能なモニタアドレスに格納されている情報に影響を与えるライト動作をキャッシュ処理エージェントに実行させる。処理ブロック615において、モニタリングのための物理的アドレスが、当該シーケンスの以前または以降において格納される。
次に一実施例によると、処理ブロック620において、モニタがイネーブルとされる。モニタは、バスがモニタアドレスレジスタ335に格納されているモニタアドレスである物理的アドレスへの書き込みのためサイクルしていることを監視する。モニタリング動作のさらなる詳細は、図7に関して後述される。モニタがイネーブルとされた後、一実施例によると、ストアフェンス(store fence)動作が処理ブロック625において実行されてもよい。ストアフェンスは、MONITORオペコードが実行完了する時点で、マシーンのすべてのストアが処理されることを保証するのに利用される。モニタがマシーンから排出される前にすべてのストアにより、メモリ待機(mwait)状態が誤って入力される可能性を低下させることができる。ストアフェンス処理は、予防として機能し、時間のかかる処理であるかもしれない。
ストアフェンスは、一実施例によるmonitor−mwait機構が、複数退出機構として構成されているため任意的なものであるかもしれない。言い換えると、割込み、認識、ボードタイマー上のシステムなどの各種イベントはまた、mwait状態からの退出を引き起こすかもしれない。一実施例によると、監視されているデータ値は変動するため、スレッドはアウェイクされるかもしれない。従って一実施例によると、ソフトウェアは、メモリに格納されている特定の値が変動したか否かダブルチェックするようにしてもよい。一実施例によると、アサーションNonMaskable Interrupt(NMI)及びSystem Management Interrupt(SMI)を含む特定イベント、マシーンチェック割込み及び不具合はブレークイベントとみなされ、パワーダウンイベントなどの他のイベントはブレークイベントはみなされない。一実施例によると、例えば、A20Mピンのアサーションは、ブレークイベントとしてみなされるかもしれない。
処理ブロック630において、一実施例によると、モニタは実行されているバスサイクルがモニタアドレスへの書き込みを示しているか、あるいは示しているようであるかテストし続ける。このようなバスサイクルが検出されると、モニタイベント保留標識が、処理ブロック635において設定される。MWAITオペコードの実行後(図5のブロック505)、当該イベント保留標識は、イベントとして機能し、図5のブロック555〜565においてスレッドを再開させる。さらに、アドレス変換を発生させるイベントは、スレッド1を再開させる。例えば、変換ルックアサイドバッファ(look−aside buffer)をフラッシュさせるイベントは、リニアから物理的アドレスへのモニタアドレスを生成するのに行われる変換がもはや有効でないため、スレッド1の再開をトリガーする。例えば、x86インテルアーキテクチャ互換的プロセッサでは、制御レジスタCR0、CR3及びCR4への書き込みと共に、特定のマシーン固有レジスタへの書き込みが、mwait状態の退出を発生させる。
図7は、モニタ動作を処理するためのプロセスの実施例を示すフロー図である。特に、図7は、図3のモニタ310の動作と図6の処理ブロック620のさらなる詳細を示す。一実施例によると、処理ブロック700において、モニタ310は、バストランザクションのためのバスコントローラ340からリクエスト及びアドレス情報を受け取る。処理ブロック710において、モニタ310は、影響を受けるアドレスとバスサイクルタイプを検討する。特に、サイクル比較論理320は、バスサイクルが指定されたサイクルであるか判断する。一実施例によると、アドレス比較回路330は、バストランザクションアドレスとモニタアドレスレジスタ335に格納されているモニタアドレスとを比較し、ライト検出論理325は、書き込みが行われたか検出するため、バスコントローラ340からサイクルタイプ情報を復号する。モニタアドレスへの書き込みが行われると、モニタイベント保留標識が処理ブロック720において設定される。信号(WRITE DETECTED)が、イベントを通知するためスレッド一時停止/再開論理377に与えられる(また、MEMORY WAIT(MWAIT)を実行することによりイネーブルとされると仮定すると機能する)。最後に、モニタ310は、処理ブロック730において停止される。モニタの停止は電力を節約するが、誤ったモニタイベントがマスクされる限り、あるいは生成されない場合には重要ではないかもしれない。モニタイベント標識はまた、この時点でリセットされる。典型的には、モニタイベントの提供は、MWAITが再び実行されるまで、さらなるモニタイベントの認識をマスクする。
モニタアドレスへの読み出しの場合、一実施例によると、コヒーレンシー関連論理350が起動されてもよい。処理ブロック740において、信号(HIT#など)がコヒーレンシー配信なしのさらなる書き込みを可能にする権限を他のエージェントが取得するのを回避するためアサートされる。一実施例によると、モニタ310は、アクティブ状態を維持し、処理ブロック700に戻り、モニタアドレスのリードにより影響を受けないままとなる。さらに、トランザクションがモニタアドレスへのリードまたはライトの何れでもない場合、モニタはアクティブ状態を維持し、処理ブロック700に戻る。
一実施例によると、MONITOR命令はあるタイプのアクセスを監視するためのものである。これらのアクセスは、効率的なプログラミング技術を示すものとして選ばれたものであってもよいし、あるいは、他の理由により選ばれたものであってもよい。例えば、一実施例によると、メモリアクセスは当然に揃えられたライトバックメモリへのキャッシュ可能ストアでなければならない。当然に揃えられた要素は、Nにより割り切れるアドレスにおいてスタートするNビット要素を参照するものであってもよい。当然に揃えられた要素を利用した結果として、1つのキャッシュラインが、監視されているアドレスへの書き込みを行うため、アクセスされる必要がある(データが2つのキャッシュラインに分割される場合には、2以外のキャッシュラインが必要となるかもしれない)。従って、当然に揃えられたメモリアドレスを利用することは、バス監視を簡素化する。
図8は、モニタメモリ待機を用いたロックの取得及び監視のためのプロセスの実施例を示すフロー図である。典型的なハイパースレッドまたはマルチスレッドプロセッサは、複数のスレッドまたは複数の論理プロセッサ(プロセッサ)を備える。典型的には、複数のプロセッサは、個別の物理的プロセッサの要素を与え、同一のリソースを共有する。処理ブロック802において、プロセッサは他のプロセッサにより競合されるロックを取得しようとする。判定ブロック804において、プロセッサが取得しようとするロックが他のプロセッサと競合しているか判断される。競合するロックは、1以上のプロセッサが取得のため待機するロックを意味する。ロックが競合していない場合、処理ブロック806において、プロセッサは利用可能なロックの権限を主張することにより、ロックを取得する従来方法を用いてロックを取得する。
典型的には、ロックが1以上のプロセッサと競合しない場合、待機キューは、競合するロックが待機するのを求めるプロセッサを有するよう構成される。しかしながら、このようなプロセッサの待機は、典型的には待機プロセッサが利用可能なリソースを用いて、例えば、競合するロックのメモリ位置にアクセスするとき、「ビジー待機中」である。処理ブロック808において、一実施例によると、ロックが競合する場合、キュー要素やノードNなどのノード(ノード)がプロセッサに対し生成される。一実施例によると、当該ノードは、処理ブロック810において初期化される。他の実施例によると、ノードの初期化は、ノードがすでに初期化されているときには必要ではないかもしれない。処理ブロック812において、初期化されたノードは、競合するロックとリンクまたは関連付けされる。一実施例によると、関連付けされると、当該ノードは競合するロックに対するテールポインタとして機能する。
一実施例によると、処理ブロック814において、モニタは競合するロックを監視するため、競合するロックに関連付けされたノードを監視するようノード上で設定される。競合するロックの監視は、ロックが第1プロセッサ{Monitor(N.lock)}に対し利用可能となったか判断するため、ロックのロックアドレスを監視することを含む。一実施例によると、モニタの設定は、フロントエンド365がMONITORオペコードを受信し、特別なMONITOR uOPを生成することに応答して、モニタを起動することを含む。MONITOR uOPは、実行リソース370にわたされる。MONITOR uOPは、監視対象となるアドレス(モニタアドレス)を示す関連付けされたアドレスを有する。一実施例によると、モニタアドレスは、ノードがリンクされるロックのロックアドレスを有するようにしてもよい。関連付けされたアドレスは、それがモニタアドレスを決定するのに十分な情報を伝達するという点で、モニタアドレスを「示す」ものであるかもしれない(おそらく、他のレジスタまたは情報と共に)。
図3に示されるように、一実施例によると、モニタアドレスはアドレス変換論理375に与えられ、それがモニタアドレスレジスタ335に格納される場合にはモニタにわたされる。MONITORオペコードに応答して、実行リソース370は、処理ブロック510に示され、図6においてさらに説明されるように、モニタをイネーブル及び起動する。一実施例によると、モニタは、一実施例によるMONITORオペコードにより起動されると、モニタイベントが発生するまで他の処理とパラレルに動作し続ける。
処理ブロック816において、一実施例によると、メモリ待機(mwait)命令が、競合するロックが利用可能になるのを待機しながら、プロセッサをスリープ状態にするよう実行される。一実施例によると、MWAITオペコードは、受信され、実行にわたされる。一実施例によると、MWAITオペコードの実行は、各種モニタイベントをマスク解除する。MWAITオペコードに応答して、モニタイベントが保留中であるか判断するため、テストが実行される。保留中のモニタイベントが存在しない場合、モニタがアクティブ状態であるか判断するため、テストが実行される。例えば、MWAITがMONITORを以前に実行することなく実行される場合、モニタはアクティブ状態でないかもしれない。一実施例によると、モニタがアクティブ状態でないか、あるいはモニタイベントが保留中である場合、プロセッサはスリープ状態にされなくてもよい。一実施例によると、モニタイベントは、モニタがノードの監視を終了する非アクティブ状態に移行し、プロセッサがアウェイク状態となることに応答したイベントを表す。例えば、モニタイベントは、それがロックの権限を主張する順番に到達すること、及び/またはロックを現在所有する他のプロセッサにより解放されるとき、ロックがプロセッサに利用可能となることを含む。
一実施例によると、プロセッサは、処理ブロック818において、ノード上のモニタmwait機構を用いてスリープ状態にされる。一実施例によると、モニタがアクティブ状態であり、保留中のモニタイベントが存在しない場合、プロセッサはモニタイベントが発生するまでスリープ状態にされる。言い換えると、例えば、第1プロセッサは、それが競合するロックの権限を主張する1番目のプロセッサになるまでスリープ状態とされる。このような認識は、モニタイベントの発生がモニタを非アクティブ状態にし、処理ブロック820においてプロセッサをウェイクアップすることを表す。
一実施例によると、モニタイベントは1つのイベントに限定されず、モニタリングが終了し、プロセッサがアウェイクされてもよいか判断するため、各種イベントがテストされてもよい。図6に関して説明されるように、モニタ自体は、モニタイベントが発生し、イベント保留標識を設定することによりそれを表示しているかチェックする。イベント保留標識は、EVENT信号を介しプロセッサスリープ/アウェイク論理377(マイクロコードなど)に提供される。マイクロコードは、一実施例によると、モニタイベントがMWAITオペコードによりマスク解除されているかもしれないため、適切な命令境界においてモニタイベントを認識する。さらに、イベント検出論理345は、モニタイベントとして指定される各種イベントを検出するのに利用される。さらに一実施例によると、任意的なタイマーが、ハイパースレッドプロセッサの適切な動作を保証し、ハイパースレッドプロセッサをフリーズさせる特定のイベントシーケンスに対しチェックを行うため、mwait状態から退出するため定期的に利用されてもよい。これらのイベントの何れもmwait状態への退出を通知するものではない場合、第1プロセッサはスリープ状態を維持する。
処理ブロック822において、アウェイク状態の第1プロセッサは、ロックの所有権を主張すると共に、以前に解放されたリソースを再主張する。以前に解放されたリソースとは、スリープ状態及びロックの待機中に、第1プロセッサにより解放されたリソースを表す。一実施例によると、プロセッサのスリープ状態中、プロセッサスリープ/アウェイク論理377は、処理ブロック530においてすべての命令をクリアするため、プロセッサパイプラインを排出するパイプラインフラッシュ論理382を備える。パイプラインが排出されると、パーティション/アニール論理385は、第1プロセッサに排他的に関連付けされた任意のパーティションリソースを他のプロセッサによる利用のため解放させる。これら解放されたリソースは、他のプロセッサが利用するより大きなリソース群を形成するためアニールされてもよい。例えば、図4の2スレッドの例を参照するに、スレッド1に関連するすべての命令は、双方のキューから排出される。各キューペアは、より大きなキューを第2スレッドに与えるため合成されてもよい。同様に、レジスタプールからのさらなるレジスタが、第2スレッドに利用可能とされ、ストアバッファからのさらなるエントリが第2スレッドに開放され、リオーダバッファのさらなるエントリが第2スレッドに利用可能とされてもよい。基本的には、これらの構成は2倍のサイズの単一の専用構成に戻される。各個数のプロセッサを用いた実現形態から得られる各比率が考えられる。
一実施例によると、第1プロセッサがウェイクアップまたは再開すると、プロセッサスリープ/アウェイク論理377は、モニタイベントの検出により再び起動されるかもしれない。再び、パイプラインがそこから命令を排出するためフラッシュされ、これにより、以前に解放されたリソースがまもなくアウェイクされるか、あるいは最近アウェイクされた第1プロセッサに適応するよう再びパーティション可能となる。
図9は、モニタメモリ待機を用いてロックをリリース及び監視するためのプロセスの実施例を示すフロー図である。図8を参照して説明されるように、一実施例によると、モニタメモリ待機(monitor−mwait)が、ノードNなどのノード(ノード)または対応するキュー要素を監視することにより競合するロックを監視し、例えば、競合するロックが利用可能となるまで競合するロックを求めるプロセッサをスリープ状態にするのに利用される。ロックのリリースに関してmonitor−mwaitを利用することにより、判定ブロック902において、ロックが競合しているか判断される。ロックが競合しない場合、ロックは処理ブロック904においてリリースされる。しかしながら、ロックが競合する場合、ロックのリリースは、例えば、ロックを所有するプロセッサ(リリースプロセッサ)が1以上のモニタイベントを含む1以上のイベントに応答してリリースするまで、ロックのリリースは発生しないかもしれない。
一実施例によると、モニタイベントは、競合するロックを主張するため、ラインの次(または最初)にあるロックを求めるプロセッサ(スリーププロセッサ)を表す。例えば、リリースプロセッサは、図8に関して取得された段階に説明されるように、スリープ/mwaitから競合するロックを求めるスリーププロセッサをウェイクアップするため、ストア「N.next>Lock」を発行する(N.next!=0である場合、N.next−>lockへのストア//スリーププロセッサのウェイクアップ)。言い換えると、判定ブロック906において、ノードがゼロ(0)に達したか(または戻ったか)否か判定される。ノードがゼロに達すると、すなわち、N.next!=0である場合、リリースプロセッサはスリーププロセッサがロックを所有するためラインの次となるストアN.next−>Lockを発行し、スリーププロセッサが処理ブロック910においてスリープからアウェイクされる。ノードがゼロに到達しない場合には、処理ブロック908においてロックはリリースされない。処理ブロック912において、ロックはリリースプロセッサによりリリースされる。一実施例によると、MONITORオペコード後に行われる任意のストア処理は、ストアが処理及び検出されることを保証するため制限されてもよい。一実施例によると、以降の何れかの命令が開始可能となる前に、一部の処理はモニタを起動した結果として実行される必要があるか、あるいは、MONITORオペコードにより起動されると、モニタイベントが行われるまで他の処理とパラレルに行われるようにしてもよい。
図10は、システムの実施例を示すブロック図である。一実施例によると、図示されるように、システムは、N個のハイパースレッドプロセッサであるプロセッサ1005−1〜1005−Nを有する。ハイパースレッドプロセッサ1005−1〜1005−Nは、バス1050と接続される。他の実施例によると、1つのプロセッサまたはハイパースレッドプロセッサとシングルスレッドプロセッサの組み合わせが利用されてもよい。さらに、他の既知のまたは利用可能なシステム構成が利用されてもよい。例えば、プロセッサ1005−1〜1005−Nが、ポイント・ツー・ポイント(point−to−point)形式に接続され、メモリインタフェースなどのパーツが各プロセッサ1005−1〜1005−Nに一体化されてもよい。
一実施例によると、バス1050に接続されているメモリインタフェース1015が、メモリ1030及びメディアインタフェース1020に接続される。メモリ1030は、マルチプロセッシングレディーオペレーティングシステム1035と、第1スレッド1040及び第2スレッド1045のための命令を有する。命令1030は、一実施例によるアイドルループを有する。
一実施例によると、各種機能または実施例を実行するための適切なソフトウェアが、各種機械可読媒体の何れかにより提供されてもよい。一実施例によると、メディアインタフェース1020が、そのようなソフトウェアとのインタフェースを提供する。
一実施例によると、メディアインタフェース1020は、記憶媒体(ディスクドライブ、光ドライブ、テープドライブ、揮発性メモリ、不揮発性メモリなど)や、送信媒体(ネットワークインタフェースや他のデジタルまたはアナログ通信インタフェースなど)とのインタフェースである。メディアインタフェース1020は、媒体(記憶媒体1092や送信媒体1095など)からソフトウェアルーチンを読み出す。機械可読媒体は、マシーンインタフェースによる読み出しのため、少なくとも一時的に情報を格納する任意の媒体である。これは、信号送信(媒体として有線、光または無線を介し)、及び/または各種タイプのディスク及びメモリ記憶装置などの物理的記憶媒体1092を有する。
図11は、設計のシミュレーション、エミュレーション及び製造のための各種構成表現または形式の実施例を示すブロック図である。構成を表すデータは、多数の手法により構成を表現する。まずシミュレーションで有用なように、ハードウェアは、設計されたハードウェアがどのように実行すると予想されるかのコンピュータモデルを実質的に提供するハードウェア記述言語または他の機能記述言語を用いて表現される。ハードウェアモデル1110は、意図された機能を実行しているか判断するため、ハードウェアモデル1110に適したテスト1130を適用するシミュレーションソフトウェア1120を用いてシミュレート可能となるように、コンピュータメモリなどの記憶媒体1100に格納されてもよい。一実施例によると、シミュレーションソフトウェア1120は、媒体に記録、キャプチャまたは有されていなくてもよい。
一実施例によると、論理及び/またはトランジスタゲートを有する回路レベルモデルは、設計処理の一部の段階において生成される。このようなモデルは、プログラマブル論理を用いてモデルを構成する専用のハードウェアシミュレーションにより場合によっては同様にシミュレートされる。このタイプのシミュレーションは、エミュレーション技術であってもよい。一実施例によると、再構成可能なハードウェアは、開示された技術を用いたモデルを格納する機械可読媒体に関する。
さらに一実施例によると、一部の段階では、ほとんどの構成はハードウェアモデルの各種装置の物理的置換を表すデータレベルに達している。従来の半導体製造技術が利用される場合、ハードウェアモデルを表すデータは、集積回路を生成するのに用いられるマスクの異なるマスクレイヤに関する様々な特徴の有無を指定するデータであってもよい。集積回路を表すこのデータは、データの論理または回路が上記技術を実行するためシミュレートまたは製造可能であるという点で、開示された技術を有するものであってもよい。
一実施例によると、データは任意の形態のコンピュータ可読媒体に格納されてもよい。このような情報を変調または送信するため生成される光または電気波1160、メモリ1150、あるいはディスクなどの磁気または光ストレージ1140が、上記媒体を表す。構成を記述するビット群または構成の特定部分は、さらなる設計または製造のため他者により利用または販売される物品を表すものであってもよい。
特定の実施例が添付された図面において図示及び説明されたが、このような実施例は単なる例示であり、限定的なものではなく、本発明の実施例は図示及び説明された特定の構成に限定されるものではないということが理解されるべきである。なぜなら、他の各種変更は本開示を研究することにより当業者に想到されるかもしれないからである。
図1は、メモリアクセスモニタを有するハイパースレッドプロセッサの実施例を示すブロック図である。 図2は、ハイパースレッドプロセッサの動作の実施例を示すフロー図である。 図3は、ハイパースレッドプロセッサの実施例を示すブロック図である。 図4は、リソースのパーティション、共有及び複製のためのプロセスの実施例を示すブロック図である。 図5は、スレッドの実行を一時停止及び再開するためのプロセスの実施例を示すフロー図である。 図6は、モニタリング論理の起動及び動作のためのプロセスの実施例を示すフロー図である。 図7は、モニタ処理のためのプロセスの実施例を示すフロー図である。 図8は、モニタメモリ待機を用いたロックの取得及び監視を行うためのプロセスの実施例を示すフロー図である。 図9は、モニタメモリ待機を用いたロックのリリース及び監視のためのプロセスの実施例を示すフロー図である。 図10は、システムの実施例を示すブロック図である。 図11は、設計のシミュレーション、エミュレーション及び製造のための各種構成表現または形式の実施例を示すブロック図である。

Claims (30)

  1. 競合するロックに係るノードを監視するステップと、
    イベントが発生するまで、前記競合するロックを取得するプロセッサをスリープ状態にするステップと、
    から構成されることを特徴とする方法。
  2. 請求項1記載の方法であって、
    前記ノードを監視するステップは、前記ノードの監視を起動するモニタ命令を実行することによって、前記競合するロックに対応するロックアドレスを監視することを特徴とする方法。
  3. 請求項1記載の方法であって、さらに、
    前記イベントが発生するまで前記プロセッサをスリープ状態にするメモリ待機(mwait)命令を実行するステップを有することを特徴とする方法。
  4. 請求項1記載の方法であって、さらに、
    前記競合するロックが利用可能となるイベントが発生すると、前記プロセッサをウェイクアップするステップと、
    前記プロセッサに前記利用可能なロックを取得させるステップと、
    を有することを特徴とする方法。
  5. 請求項1記載の方法であって、
    前記競合するロックが利用可能となることは、前記プロセッサが前記競合するロックを取得するためのキューの次にあり、前記競合するロックがリリースされることからなることを特徴とする方法。
  6. 請求項1記載の方法であって、
    前記プロセッサをスリープ状態にするステップは、前記プロセッサにより他のプロセッサが利用するリソースを解放することを特徴とする方法。
  7. 請求項4記載の方法であって、
    前記ウェイクアップは、前記ノードの監視を非アクティブ状態とし、前記プロセッサに前記解放されたリソースを利用させることを特徴とする方法。
  8. 請求項7記載の方法であって、
    前記解放は、
    レジスタプールの複数のレジスタを解放するステップと、
    命令キューの複数の命令キューエントリを解放するステップと、
    ストアバッファの複数のストアバッファエントリを解放するステップと、
    リオーダバッファの複数のリオーダバッファエントリを解放するステップと、
    から構成されることを特徴とする方法。
  9. キュー要素を監視するため、前記キュー要素に係るモニタアドレスを指定するステップから構成される方法であって、
    前記指定するステップは、モニタ命令及びメモリ待機(mwait)命令とを実行することからなることを特徴とする方法。
  10. 請求項9記載の方法であって、
    前記キュー要素は、競合するロックを取得するプロセッサに対応することを特徴とする方法。
  11. 請求項10記載の方法であって、
    前記プロセッサは、監視とmwaitの組み合わせを用いて、前記競合するロックを待機中、スリープ状態にされることを特徴とする方法。
  12. 請求項11記載の方法であって、
    前記プロセッサは、前記プロセッサが前記競合するロックを取得するためのキューの次にあって、前記競合するロックがリリースされるイベントが発生すると、アウェイクされることを特徴とする方法。
  13. 競合するロックに係るノードを監視するため、監視命令及びメモリ待機(mwait)命令を実行する命令ユニットと、
    イベントが発生するまで、前記競合するロックを取得する論理プロセッサをスリープ状態にする論理と、
    から構成されることを特徴とするプロセッサ。
  14. 請求項13記載のプロセッサであって、さらに、
    前記競合するロックが利用可能になることを含む指定されたイベントを有するイベントの発生を検出する検出回路を有することを特徴とするプロセッサ。
  15. 請求項13記載のプロセッサであって、
    前記論理プロセッサをスリープ状態にすることは、前記論理プロセッサによって他のプロセッサが利用するリソースを解放するからなることを特徴とするプロセッサ。
  16. 請求項13記載のプロセッサであって、
    前記論理はさらに、前記イベントが発生すると、前記論理プロセッサをウェイクアップするためものであり、
    前記ウェイクアップは、前記モードの監視を非アクティブ状態にし、前記論理プロセッサによる前記解放されたリソースの使用からなることを特徴とするプロセッサ。
  17. 請求項16記載のプロセッサであって、
    前記解放は、
    レジスタプールの複数のレジスタを解放し、
    命令キューの複数の命令キューエントリを解放し、
    ストアバッファの複数のストアバッファエントリを解放し、
    リオーダバッファの複数のリオーダバッファエントリを解放すること、
    から構成されることを特徴とするプロセッサ。
  18. 記憶媒体と、
    前記記憶媒体に接続され、競合するロックに係るノードを監視するため、モニタ命令及びメモリ待機(mwait)命令を実行する実行ユニットと、イベントが発生するまで、前記競合するロックを取得する論理プロセッサをスリープ状態にする論理とを有するプロセッサと、
    から構成されることを特徴とするシステム。
  19. 請求項18記載のシステムであって、さらに、
    前記競合するロックが利用可能になることを含む指定されたイベントを有するイベントの発生を検出する検出回路を有することを特徴とするシステム。
  20. 請求項18記載のシステムであって、
    前記論理プロセッサをスリープ状態にすることは、前記論理プロセッサによって他のプロセッサが利用するリソースを解放するからなることを特徴とするシステム。
  21. 請求項18記載のシステムであって、
    前記論理はさらに、前記イベントが発生すると、前記論理プロセッサをウェイクアップするためものであり、
    前記ウェイクアップは、前記モードの監視を非アクティブ状態にし、前記論理プロセッサによる前記解放されたリソースの使用からなることを特徴とするシステム。
  22. マシーンによる実行時、前記マシーンに、
    競合するロックに係るノードを監視するステップと、
    イベントが発生するまで、前記競合するロックを取得するプロセッサをスリープ状態にするステップと、
    を実行させる命令シーケンスを表すデータを格納することを特徴とする機械可読媒体。
  23. 請求項22記載の機械可読媒体であって、
    前記ノードを監視するステップは、前記ノードの監視を起動するモニタ命令を実行することによって、前記競合するロックに対応するロックアドレスを監視することを特徴とする媒体。
  24. 請求項22記載の機械可読媒体であって、
    前記命令シーケンスはさらに、前記マシーンによる実行時、前記イベントが発生するまで前記プロセッサをスリープ状態にするため、メモリ待機(mwait)命令を前記マシーンに実行させることを特徴とする媒体。
  25. 請求項22記載の機械可読媒体であって、
    前記命令シーケンスはさらに、前記マシーンによる実行時、前記マシーンに、前記競合するロックが利用可能になるイベントが発生すると、前記プロセッサをウェイクアップさせ、前記プロセッサが前記利用可能なロックを取得することを可能にさせることを特徴とする媒体。
  26. 請求項22記載の方法であって、
    前記プロセッサをスリープ状態にするステップは、前記プロセッサによって他のプロセッサが利用するリソースを放棄させることからなることを特徴とする方法。
  27. マシーンによる実行時、キュー要素を監視するため、前記キュー要素に係るモニタアドレスを前記マシーンに指定させる命令シーケンスを表すデータを格納する機械可読媒体であって、
    前記指定は、モニタ命令及びメモリ待機(mwait)命令を実行することからなることを特徴とする媒体。
  28. 請求項27記載の機械可読媒体であって、
    前記キュー要素は、競合するロックを取得するプロセッサに対応することを特徴とする媒体。
  29. 請求項28記載の機械可読媒体であって、
    前記命令シーケンスはさらに、前記マシーンによる実行時、前記マシーンによって、監視とmwaitの組み合わせを用いて前記競合するロックの待機中、前記プロセッサをスリープ状態にすることを特徴とする媒体。
  30. 請求項29記載の機械可読媒体であって、
    前記命令シーケンスはさらに、前記マシーンによる実行時、前記マシーンによって、前記競合するロックが利用可能となるイベントが発生すると、前記プロセッサをアウェイク状態にすることを特徴とする媒体。
JP2006515366A 2003-06-27 2004-06-16 モニタメモリ待機を用いたキューされたロック Pending JP2007520769A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/608,708 US7213093B2 (en) 2003-06-27 2003-06-27 Queued locks using monitor-memory wait
PCT/US2004/019373 WO2005003971A2 (en) 2003-06-27 2004-06-16 Queued locks using monitor-memory wait

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009211907A Division JP2010044770A (ja) 2003-06-27 2009-09-14 モニタメモリ待機を用いたキューされたロック

Publications (1)

Publication Number Publication Date
JP2007520769A true JP2007520769A (ja) 2007-07-26

Family

ID=33540657

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006515366A Pending JP2007520769A (ja) 2003-06-27 2004-06-16 モニタメモリ待機を用いたキューされたロック
JP2009211907A Pending JP2010044770A (ja) 2003-06-27 2009-09-14 モニタメモリ待機を用いたキューされたロック

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2009211907A Pending JP2010044770A (ja) 2003-06-27 2009-09-14 モニタメモリ待機を用いたキューされたロック

Country Status (8)

Country Link
US (3) US7213093B2 (ja)
JP (2) JP2007520769A (ja)
KR (1) KR100864747B1 (ja)
CN (1) CN100337206C (ja)
DE (1) DE112004001133T5 (ja)
GB (1) GB2417805B (ja)
TW (1) TWI266987B (ja)
WO (1) WO2005003971A2 (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010044770A (ja) * 2003-06-27 2010-02-25 Intel Corp モニタメモリ待機を用いたキューされたロック
JP2010524054A (ja) * 2007-03-30 2010-07-15 インターナショナル・ビジネス・マシーンズ・コーポレーション エミュレートされた処理環境でメモリ・アクセスを管理する方法、システム、およびそのためのコンピュータ・プログラム
WO2012004990A1 (ja) * 2010-07-07 2012-01-12 パナソニック株式会社 プロセッサ
JP2012531681A (ja) * 2009-12-18 2012-12-10 インテル・コーポレーション プロセッサの待機状態をイネーブルする命令
JP2014501982A (ja) * 2010-12-21 2014-01-23 インテル・コーポレーション 電力管理のためのシステム及び方法
JP2014197408A (ja) * 2007-12-03 2014-10-16 クゥアルコム・インコーポレイテッドQualcomm Incorporated ロックインジケータを有するマルチスレッドプロセッサ
JP2016532233A (ja) * 2014-10-03 2016-10-13 インテル・コーポレーション アドレスへの書き込みに対する監視命令を実行するスケーラブル機構
JP2017538212A (ja) * 2014-12-18 2017-12-21 インテル コーポレイション 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構
US10705961B2 (en) 2013-09-27 2020-07-07 Intel Corporation Scalably mechanism to implement an instruction that monitors for writes to an address
JP2024505635A (ja) * 2021-01-29 2024-02-07 アーム・リミテッド 監視排他命令
JP7781164B2 (ja) 2021-01-29 2025-12-05 アーム・リミテッド 監視排他命令

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7236918B2 (en) * 2003-12-31 2007-06-26 International Business Machines Corporation Method and system for selective compilation of instrumentation entities into a simulation model of a digital design
US8607241B2 (en) 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US20060031201A1 (en) * 2004-08-06 2006-02-09 Microsoft Corporation Life moment tagging and storage
US7590738B2 (en) * 2004-10-27 2009-09-15 Hewlett-Packard Development Company, L.P. Method and system for processing concurrent events in a provisional network
US20070004501A1 (en) * 2005-06-29 2007-01-04 Christopher Brewer Multi-core processing in a wagering game machine
US20070067502A1 (en) * 2005-09-22 2007-03-22 Silicon Integrated Systems Corp. Method for preventing long latency event
US7958510B2 (en) * 2005-12-30 2011-06-07 Intel Corporation Device, system and method of managing a resource request
US8094158B1 (en) * 2006-01-31 2012-01-10 Nvidia Corporation Using programmable constant buffers for multi-threaded processing
US7802073B1 (en) * 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US7882381B2 (en) 2006-06-29 2011-02-01 Intel Corporation Managing wasted active power in processors based on loop iterations and number of instructions executed since last loop
US8276151B2 (en) * 2006-09-06 2012-09-25 International Business Machines Corporation Determination of running status of logical processor
US8015379B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Wake-and-go mechanism with exclusive system bus response
US8145849B2 (en) * 2008-02-01 2012-03-27 International Business Machines Corporation Wake-and-go mechanism with system bus response
US8316218B2 (en) * 2008-02-01 2012-11-20 International Business Machines Corporation Look-ahead wake-and-go engine with speculative execution
US8788795B2 (en) 2008-02-01 2014-07-22 International Business Machines Corporation Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors
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
US8171476B2 (en) 2008-02-01 2012-05-01 International Business Machines Corporation Wake-and-go mechanism with prioritization of threads
US8127080B2 (en) 2008-02-01 2012-02-28 International Business Machines Corporation Wake-and-go mechanism with system address bus transaction master
US8725992B2 (en) 2008-02-01 2014-05-13 International Business Machines Corporation Programming language exposing idiom calls to a programming idiom accelerator
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
US8386822B2 (en) * 2008-02-01 2013-02-26 International Business Machines Corporation Wake-and-go mechanism with data monitoring
US8516484B2 (en) 2008-02-01 2013-08-20 International Business Machines Corporation Wake-and-go mechanism for a data processing system
US8250396B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Hardware wake-and-go mechanism for a data processing system
US8225120B2 (en) 2008-02-01 2012-07-17 International Business Machines Corporation Wake-and-go mechanism with data exclusivity
US8612977B2 (en) 2008-02-01 2013-12-17 International Business Machines Corporation Wake-and-go mechanism with software save of thread state
US8341635B2 (en) 2008-02-01 2012-12-25 International Business Machines Corporation Hardware wake-and-go mechanism with look-ahead polling
US8732683B2 (en) 2008-02-01 2014-05-20 International Business Machines Corporation Compiler providing idiom to idiom accelerator
US8640141B2 (en) * 2008-02-01 2014-01-28 International Business Machines Corporation Wake-and-go mechanism with hardware private array
US8312458B2 (en) 2008-02-01 2012-11-13 International Business Machines Corporation Central repository for wake-and-go mechanism
US8086437B2 (en) * 2008-04-02 2011-12-27 Microsoft Corporation Modeling and simulating software contention
US20100262966A1 (en) * 2009-04-14 2010-10-14 International Business Machines Corporation Multiprocessor computing device
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
US8145723B2 (en) * 2009-04-16 2012-03-27 International Business Machines Corporation Complex remote update programming idiom accelerator
CN101876942A (zh) * 2009-04-30 2010-11-03 卓望数码技术(深圳)有限公司 一种终端软件的测试方法及装置
US8156275B2 (en) * 2009-05-13 2012-04-10 Apple Inc. Power managed lock optimization
US8364862B2 (en) * 2009-06-11 2013-01-29 Intel Corporation Delegating a poll operation to another device
US8516577B2 (en) * 2010-09-22 2013-08-20 Intel Corporation Regulating atomic memory operations to prevent denial of service attack
US20120144218A1 (en) * 2010-12-03 2012-06-07 International Business Machines Corporation Transferring Power and Speed from a Lock Requester to a Lock Holder on a System with Multiple Processors
US8713262B2 (en) * 2011-09-02 2014-04-29 Nvidia Corporation Managing a spinlock indicative of exclusive access to a system resource
CN103136099B (zh) * 2011-12-02 2017-08-25 腾讯科技(深圳)有限公司 测试软件的方法、模拟终端、后台服务器和系统
WO2013101188A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Memory event notification
US8966494B2 (en) * 2012-03-16 2015-02-24 Arm Limited Apparatus and method for processing threads requiring resources
US8943505B2 (en) 2012-08-24 2015-01-27 National Instruments Corporation Hardware assisted real-time scheduler using memory monitoring
US20140075163A1 (en) 2012-09-07 2014-03-13 Paul N. Loewenstein Load-monitor mwait
US9141454B2 (en) * 2012-12-27 2015-09-22 Intel Corporation Signaling software recoverable errors
US9558132B2 (en) * 2013-08-14 2017-01-31 Intel Corporation Socket management with reduced latency packet processing
US9760511B2 (en) * 2014-10-08 2017-09-12 International Business Machines Corporation Efficient interruption routing for a multithreaded processor
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
US11061730B2 (en) * 2016-11-18 2021-07-13 Red Hat Israel, Ltd. Efficient scheduling for hyper-threaded CPUs using memory monitoring
US10481936B2 (en) 2017-02-22 2019-11-19 Red Hat Israel, Ltd. Efficient virtual machine memory monitoring with hyper-threading
WO2020018454A1 (en) 2018-07-16 2020-01-23 Islamov Rustam Cryptography operations for secure post-quantum communications
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
US12335399B2 (en) 2019-12-10 2025-06-17 Winkk, Inc. User as a password
US12153678B2 (en) 2019-12-10 2024-11-26 Winkk, Inc. Analytics with shared traits
US12073378B2 (en) 2019-12-10 2024-08-27 Winkk, Inc. Method and apparatus for electronic transactions using personal computing devices and proxy services
US12132763B2 (en) 2019-12-10 2024-10-29 Winkk, Inc. Bus for aggregated trust framework
US11574045B2 (en) 2019-12-10 2023-02-07 Winkk, Inc. Automated ID proofing using a random multitude of real-time behavioral biometric samplings
US11657140B2 (en) 2019-12-10 2023-05-23 Winkk, Inc. Device handoff identification proofing using behavioral analytics
US11652815B2 (en) 2019-12-10 2023-05-16 Winkk, Inc. Security platform architecture
US12341790B2 (en) 2019-12-10 2025-06-24 Winkk, Inc. Device behavior analytics
US11588794B2 (en) 2019-12-10 2023-02-21 Winkk, Inc. Method and apparatus for secure application framework and platform
US12143419B2 (en) 2019-12-10 2024-11-12 Winkk, Inc. Aggregated trust framework
US11553337B2 (en) 2019-12-10 2023-01-10 Winkk, Inc. Method and apparatus for encryption key exchange with enhanced security through opti-encryption channel
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
US12095751B2 (en) * 2021-06-04 2024-09-17 Winkk, Inc. Encryption for one-way data stream
US11843943B2 (en) 2021-06-04 2023-12-12 Winkk, Inc. Dynamic key exchange for moving target
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
US12445305B2 (en) 2022-09-21 2025-10-14 Winkk, Inc. Authentication process
KR102848186B1 (ko) * 2022-11-14 2025-08-20 주식회사 이지서티 집합 값을 갖는 트랜잭션 데이터의 익명처리 시스템 및 그 방법

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5274809A (en) * 1988-05-26 1993-12-28 Hitachi, Ltd. Task execution control method for a multiprocessor system with enhanced post/wait procedure
JPH01300365A (ja) * 1988-05-30 1989-12-04 Nippon Telegr & Teleph Corp <Ntt> マルチプロセッサシステムの排他制御方式
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
JPH05225149A (ja) * 1992-02-13 1993-09-03 Toshiba Corp ロック方式
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
CN1280714C (zh) 1996-08-27 2006-10-18 松下电器产业株式会社 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器
JPH10149285A (ja) * 1996-11-18 1998-06-02 Hitachi Ltd 命令実行制御方法および情報処理装置
US6512591B1 (en) * 1997-02-19 2003-01-28 Hewlett-Packard Company Multiple peripheral support for a single physical port in a host-based printing system
AU6586898A (en) 1997-03-21 1998-10-20 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
US5790851A (en) * 1997-04-15 1998-08-04 Oracle Corporation Method of sequencing lock call requests to an O/S to avoid spinlock contention within a multi-processor environment
US6035374A (en) * 1997-06-25 2000-03-07 Sun Microsystems, Inc. Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency
GB2345555A (en) * 1999-01-05 2000-07-12 Ibm Controlling device access in a network
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
US6522649B1 (en) * 2000-04-07 2003-02-18 Omneon Video Networks Method of distributing video reference signals as isochronous network packets
WO2003040948A1 (en) * 2001-11-08 2003-05-15 Fujitsu Limited Computer and control method
US7363474B2 (en) 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
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
US20030126379A1 (en) * 2001-12-31 2003-07-03 Shiv Kaushik Instruction sequences for suspending execution of a thread until a specified memory access occurs
US6839816B2 (en) * 2002-02-26 2005-01-04 International Business Machines Corporation Shared cache line update mechanism
US7234143B2 (en) * 2002-06-20 2007-06-19 Hewlett-Packard Development Company, L.P. Spin-yielding in multi-threaded systems
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
JP4376692B2 (ja) * 2004-04-30 2009-12-02 富士通株式会社 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
US7257679B2 (en) * 2004-10-01 2007-08-14 Advanced Micro Devices, Inc. Sharing monitored cache lines across multiple cores

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010044770A (ja) * 2003-06-27 2010-02-25 Intel Corp モニタメモリ待機を用いたキューされたロック
JP2010524054A (ja) * 2007-03-30 2010-07-15 インターナショナル・ビジネス・マシーンズ・コーポレーション エミュレートされた処理環境でメモリ・アクセスを管理する方法、システム、およびそのためのコンピュータ・プログラム
JP2014197408A (ja) * 2007-12-03 2014-10-16 クゥアルコム・インコーポレイテッドQualcomm Incorporated ロックインジケータを有するマルチスレッドプロセッサ
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 インテル・コーポレーション プロセッサの待機状態をイネーブルする命令
US8990597B2 (en) 2009-12-18 2015-03-24 Intel Corporation Instruction for enabling a processor wait state
JP2014222520A (ja) * 2009-12-18 2014-11-27 インテル・コーポレーション プロセッサ、方法、システム、及び、プログラム
KR101410634B1 (ko) 2009-12-18 2014-06-20 인텔 코오퍼레이션 프로세서 대기 상태를 인에이블하기 위한 명령
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
JPWO2012004990A1 (ja) * 2010-07-07 2013-09-02 パナソニック株式会社 プロセッサ
WO2012004990A1 (ja) * 2010-07-07 2012-01-12 パナソニック株式会社 プロセッサ
JP2014501982A (ja) * 2010-12-21 2014-01-23 インテル・コーポレーション 電力管理のためのシステム及び方法
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 インテル・コーポレーション アドレスへの書き込みに対する監視命令を実行するスケーラブル機構
JP2017538212A (ja) * 2014-12-18 2017-12-21 インテル コーポレイション 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構
US10706496B2 (en) 2014-12-18 2020-07-07 Intel Corporation Function callback mechanism between a Central Processing Unit (CPU) and an auxiliary processor
JP2024505635A (ja) * 2021-01-29 2024-02-07 アーム・リミテッド 監視排他命令
JP7781164B2 (ja) 2021-01-29 2025-12-05 アーム・リミテッド 監視排他命令

Also Published As

Publication number Publication date
HK1081301A1 (en) 2006-05-12
CN1577282A (zh) 2005-02-09
GB0519863D0 (en) 2005-11-09
US7213093B2 (en) 2007-05-01
WO2005003971A2 (en) 2005-01-13
TW200525348A (en) 2005-08-01
GB2417805B (en) 2007-11-21
US20080022141A1 (en) 2008-01-24
DE112004001133T5 (de) 2006-05-11
US20040267996A1 (en) 2004-12-30
WO2005003971A3 (en) 2005-07-14
KR20060029151A (ko) 2006-04-04
KR100864747B1 (ko) 2008-10-22
US7640384B2 (en) 2009-12-29
US20070162774A1 (en) 2007-07-12
GB2417805A (en) 2006-03-08
CN100337206C (zh) 2007-09-12
JP2010044770A (ja) 2010-02-25
TWI266987B (en) 2006-11-21
US7328293B2 (en) 2008-02-05

Similar Documents

Publication Publication Date Title
JP2007520769A (ja) モニタメモリ待機を用いたキューされたロック
JP4601958B2 (ja) 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置
US7127561B2 (en) Coherency techniques for suspending execution of a thread until a specified memory access occurs
US8607241B2 (en) Compare and exchange operation using sleep-wakeup mechanism
TWI613588B (zh) 在核心間同步運作的方法、微處理器及電腦程式產品
US8539485B2 (en) Polling using reservation mechanism
TWI613593B (zh) 在微處理器中至多核心的微碼傳播
US8694976B2 (en) Sleep state mechanism for virtual multithreading
US20030126379A1 (en) Instruction sequences for suspending execution of a thread until a specified memory access occurs
TW201508635A (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: 20080715

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080805

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081105

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090512

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090914

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090924

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

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20091016

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110406

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110411