JP2012234561A - スレッド間同期通信のための装置、システム、および、その方法 - Google Patents

スレッド間同期通信のための装置、システム、および、その方法 Download PDF

Info

Publication number
JP2012234561A
JP2012234561A JP2012164674A JP2012164674A JP2012234561A JP 2012234561 A JP2012234561 A JP 2012234561A JP 2012164674 A JP2012164674 A JP 2012164674A JP 2012164674 A JP2012164674 A JP 2012164674A JP 2012234561 A JP2012234561 A JP 2012234561A
Authority
JP
Japan
Prior art keywords
cache line
instruction
thread
state
data
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
JP2012164674A
Other languages
English (en)
Other versions
JP5449472B2 (ja
Inventor
Jacobson Quinn
ジェーコブソン、クイン
Hong Wang
ワン、ホン
John Shen
シェン、ジョン
Per Hammarlund
ハマーランド、パー
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 JP2012234561A publication Critical patent/JP2012234561A/ja
Application granted granted Critical
Publication of JP5449472B2 publication Critical patent/JP5449472B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Time-Division Multiplex Systems (AREA)

Abstract

【課題】1つ以上のマルチプロセッサまたはマルチプロセッサコアにより実行されている2つ以上の命令スレッド間の同期通信を管理する。
【解決手段】他のスレッドがそれらのメモリ位置に格納している値を修正した場合に通知されるべき一組のメモリ位置を識別するための機構をスレッドに提供する。通知は、マイクロプロセッサ101内のユーザレベル割込み/例外機構によりなされるか、または、コンピュータシステム内のいくらかの他のロジックまたはソフトウェアによりなされてよい。スレッド間同期通信は、1つ以上の他のスレッドによりアクセスされるキャッシュラインに関連する特定のキャッシュコヒーレンシーイベントをスレッドが通知されるようにすることにより実現する。
【選択図】図1

Description

本発明の実施形態は、マイクロプロセッサアーキテクチャに関する。より詳しくは、本発明の実施形態は、1つ以上のマイクロプロセッサまたはマイクロプロセッサコア内で実行される2つ以上のスレッド間の同期通信を管理することに関する。
最新のコンピュータプログラムにおける命令は、様々な命令列あるいは"スレッド"に従う実行に対し体系化されている。一般的には、処理リソース内で実行している命令のスレッドは、特定のスレッドに固有のあるいは特定のスレッドに関連した一組の状態情報を用い、かつ/または、生成する。しかしながら、スレッドは、状態情報、あるいは、ケース情報が1つのスレッドから他のスレッドへと伝達される必要がある、1つ以上のスレッドごとに対し実行されるべきデータのような、他の情報を共有する場合もある。
典型的な共有メモリマイクロプロセッサまたは処理システムでは、スレッドは、他のスレッド(情報スレッド)により読み取られることができる、1つのメモリ位置に情報を格納するスレッド(送信スレッド)ごとに情報を交換する。一般的に、受信スレッドは、送信スレッドがデータをアップデートしたときを検出すべく、様々な時間にメモリ位置をポーリングしてよい。いくつかの従来技術の実施態様において、検出機構は、共有情報が書き込まれたときを検出でき、それに応じて受信スレッドを変更できる。
後者のケースにおいて、検出機構は、メモリ位置に共有情報が書き込まれたときを検出して受信スレッドを変更するが、ここで、いくつかの従来技術は、マイクロプロセッサ間、または、マイクロプロセッサとDRAMなどのメモリとの間の相互接続をモニタまたは「スヌープ」する特別なハードウェア検出ロジックを用いている。検出ロジックは、モニタされるべき各メモリ位置に対する検出ロジックを要求し得る、相互接続を通じて伝送される特別なアドレスに対するコマンドをモニタするよう設定され得る。
上記のような従来技術は、ダイ面積および電力などの面から高価になってしまう。さらに、これらの従来技術は、複数のメモリ位置へのアップデートをモニタリングする場合に容易に基準化できず、結果としてソフトウェア開発の課題を招く。
割込みあるいは例外ケースを通知すべく、従来のようにオペレーティングシステムを介在させずに、マイクロプロセッサ上で動作するユーザレベルのスレッドにイベントを直接知らせる機構を含む従来技術がある。このようなユーザレベルの割込みまたはユーザレベルの例外は、スレッドの現在の状態についての十分な情報をセーブし、イベントに応じる"ハンドラ"コードの予め決められたブロックを実行するようスレッドを切り替える機構を有することに基づいている。ハンドラコードの一環として、スレッドは、所望のいかなるタスクも実行し、イベントの前にそれがあった実行経路へと戻すことができる。また、実行経路へは戻さず、代わりに、完全に異なるタスクのセットを継続することを選ぶこともできる。
添付の図面における例を用いて本発明の実施形態を示すが、これらに限定されない。同様の参照符号は、同様の構成要素を示す。
本発明の少なくとも1つの実施形態と関連して用いられることができる処理システムの一部を示す。
本発明の一実施形態に従い用いられることができるキャッシュエントリと対応するコヒーレンシー、および、モニタリングエントリを示す。
一実施形態に従うキャッシュラインへのスレッドにより生じた書き込みを示し得るコヒーレンシー状態遷移の検出に関わる動作を示すフローチャートである。
本発明の一実施形態が用いられ得るフロントサイドバス(FSB)コンピュータシステムを示す。
ポイントツーポイント(PtP)構成で配置されたコンピュータシステムを示す。
本発明の実施形態は、マイクロプロセッサアーキテクチャに関する。より詳しくは、本発明の実施形態は、1つ以上のマイクロプロセッサまたはマイクロプロセッサコアにより実行される命令の2つ以上のスレッド間の同期通信を管理することに関する。本発明の少なくとも1つの実施形態は、他のスレッドがそれらのメモリ位置に格納している値を修正した場合に通知されるべき一組のメモリ位置を識別するための機構をスレッドに提供する。一実施形態では、通知は、マイクロプロセッサ内のユーザレベル割込み/例外機構によりなされるか、または、コンピュータシステム内のいくらかの他のロジックまたはソフトウェアによりなされてよい。一実施形態では、スレッド間同期通信は、1つ以上の他のスレッドによりアクセスされるキャッシュラインに関連する特定のキャッシュコヒーレンシーイベントをスレッドが通知されるようにすることにより実現する。
いくつかの従来技術のスレッド間通信技術とは異なり、本発明の実施形態は、送信スレッドごとに書き込まれる特定のメモリ位置をモニタする特別な検出ハードウェアを用いる代わりに、プロセッサまたはコンピュータシステム内の多くの既存のリソースを用いることができる。特に、少なくとも1つの実施形態は、DRAMなどのメモリ内の位置に対応するキャッシュラインに情報が書き込まれたときを検出すべく、1つのキャッシュライン内にすでに存在し得るコヒーレンシー情報を用いる。特に、ラインに対応するデータ値のローカル読み取りを許容する状態("共有"状態など)に現在あるキャッシュラインは、ラインに対応するあらゆるデータ値を修正する他のスレッドより前に、それに対してコヒーレント動作が実行されていなければならない。
いくつかの従来技術のスレッド間通信技術とは異なり、本発明の実施形態は、他のスレッドによりモニタされるべきメモリ位置への多くの固有のアップデートを可能にする。特に、少なくとも1つの実施形態は、モニタされている1つ以上の位置が他のスレッドによりすでにアップデートされているかどうかを示す共通のレポート機構を用いる。
本発明の一実施形態は、キャッシュライン状態遷移を検出するだけの最小限の検出ロジックを用いてキャッシュライン状態遷移を検出し、受信スレッドがキャッシュラインに書き込まれた情報を検索できるよう、ユーザレベル割込み機構を用いる受信スレッドに通知することができる。他の実施形態では、キャッシュライン状態遷移の検出は、モニタリングイベント、または、"シナリオ"としてプロセッサの状態チャネルにプログラムされることができる。さらに、他の実施形態では、キャッシュライン状態遷移の検出は、割込み、例外、トラップ、フォルトなどのハードウェア機構に応じて生じ得る。
一実施形態では、1つのキャッシュラインまたは複数のキャッシュラインは、キャッシュライン内またはキャッシュラインに関連する1つ以上のモニタリングビットを含むことによりモニタされるキャッシュとしてイネーブルに、または、"マーク"される。モニタリングビットを設定すべく、少なくとも1つの実施形態では、コマンド、命令、または、いくつかの他の手段を用いることもある。さらに、ユーザコードの特定の部分がそのコードの他の部分とは無関係にモニタされるキャッシュラインを構成するよう、多数のモニタリングビットが用いられてよい。モニタリングビットは、キャッシュライン状態がコマンド、命令、または、いくつかの他の手段をクリアにすることにより検出された後にクリアされてよい。
図1は、本発明の少なくとも1つの実施形態と関連して用いられることができる処理システムの一部を示す。特に、図1は、プロセッサ/コア101またはいくつかの他の処理リソース(図示せず)内で実行する命令の1つ以上のスレッドで共有され得るキャッシュメモリ105と関連付けられたプロセッサまたは処理コア101を示す。本発明の一実施形態では、キャッシュメモリ105は、一のスレッドが、キャッシュラインを用いている可能性のある他のスレッドを見ずに一のキャッシュライン内の情報を格納できるよう、当該スレッドだけに用いられるものとして当該スレッドの前に現れる。
同じく図1にはメモリ110が示されている。メモリ110は、DRAM、あるいは、SRAM、磁気またはコンパクトディスクなどのいくつかの他のメモリ技術からなる。一実施形態においては、キャッシュメモリ105は、メモリ110のエントリのサブセットを反映しているエントリを含む。したがって、キャッシュメモリは、特定のキャッシュライン(例えば図1のキャッシュライン"A")が無効データ("I"状態)を含む場合、あるいは、対応するメモリエントリ(例えば図1のメモリエントリ"A")と同じデータを含まないよう、キャッシュラインが修正されている場合("M"状態)、キャッシュラインが様々なエージェント、スレッド、または、プログラム間で共有できる場合("S"状態)、および、キャッシュラインが特定のスレッド、エージェント、または、プログラムだけに用いられる場合("E"状態)に、キャッシュメモリからのデータにアクセスするエージェントに知らせるコヒーレンシー情報を含み得る。
図2は、本発明の一実施形態に従い用いられることができるキャッシュエントリおよび対応するコヒーレンシーと、モニタリングエントリとを示す。特に、キャッシュ200のキャッシュライン201は、フィールド203におけるキャッシュライン203、フィールド205におけるアドレスタグおよびコヒーレンシー情報、および、フィールド207におけるモニタ情報に対応するデータを格納してよい。キャッシュラインへの状態変化をモニタできるようにすべく、モニタ情報フィールド内に1つ以上のビットが設定される。さらに、1つのキャッシュが多数のハードウェアスレッド(例えばそれぞれ個別に動作するソフトウェアスレッド)により共有されるのであれば、各スレッドは、1つのスレッド内の多数のインスタンスがキャッシュラインをどのようにモニタしているかに基づき、モニタ情報フィールド内の複数のビットに対応し得る。
例えば、図2では、"a"と表示されたモニタビットは、対応するキャッシュラインがモニタされるスレッド内に3つだけのインスタンス(繰り返されてもよい)を有する第1のスレッドに対応する。"b"と表示されたモニタビットは、対応するキャッシュラインがモニタされる2つのインスタンス(繰り返されてもよい)を有する第2のスレッドに対応する。"d"と表示されたモニタビットは、対応するキャッシュラインがモニタされるスレッド内に1つだけのインスタンス(繰り返されてもよい)を有する第3のスレッドに対応する。したがって、対応するキャッシュラインがモニタされる各スレッド内の各インスタンスに対応する各ビットは、別々に設定またはクリアされ得る。
キャッシュラインに存在するモニタビットフィールドの数が多くなるほど、キャッシュラインを同時にモニタできるスレッドおよびスレッド内のインスタンスの数も当然多くなる。一実施形態では、キャッシュラインは6つのモニタビットフィールドを含むことにより、2つのスレッドが各スレッド内の3つの異なるインスタンスで1つのキャッシュラインをモニタすることができるようになる。他の実施形態では、より多いまたは少ないスレッドまたはスレッド内のインスタンスでキャッシュラインをモニタできるよう、より多いまたは少ないビットフィールドが用いられ得る。
一実施形態では、キャッシュを共有する1つのスレッドにより実行されるメモリのアップデートは、キャッシュを共有しない他のスレッドからのコヒーレンシーイベントと同じ扱いを受ける、同じキャッシュを共有する他のスレッドに関連して処理される。例えば、スレッドがキャッシュライン内に格納された値をアップデートすると、設定されたモニタビットを有する他のスレッドは、このアップデートと、ユーザレベル割込み機構などの割込み機構により通知される対応するスレッドとを検出し得る。他の実施形態では、割込み機構は、ユーザに見えない割込み機構であってよい。
一実施形態では、2つの別々のコマンドまたは命令がキャッシュメモリ内のプロセッサまたはロジック内で実行されることにより、モニタビットの設定およびクリアがそれぞれ行われる。例えば、一実施形態では、キャッシュラインに対応するアドレスと、モニタビットに属性として書き込まれる対応データとを有する"ロードモニタ"命令が実行され得る。同様に、一実施形態では、キャッシュラインに対応するアドレスと、モニタビットをクリアすべく属性として書き込まれる対応データとを有する「クリアモニタ」命令が実行され得る。一実施形態では、命令のモニタビット属性の値に基づき、モニタビットを設定しかつクリアすべく1つの命令が用いられる。さらに他の実施形態では、それぞれのキャッシュラインにおける特定の属性すべてをクリアすべく1つの命令が用いられる。
(例えば一実施形態では、対応するモニタリングビットを設定することにより)モニタされるようフラグが立てられているキャッシュラインの状態遷移を検出する方法は多くの方法を実現する。例えば、一実施形態では、キャッシュラインがその対応する設定されたモニタビットのいずれかを有するかどうかを検出するためにブールの"OR"関数(例えば"OR"ゲート)を実行するなどのロジックが用いられてよく、もしその場合は、他のスレッドによる書き込みがそのキャッシュラインに対しすでになされていることを示すべく、キャッシュラインのコヒーレンシービット(図1で"C"と表示されている)内に状態遷移があるかどうかが検出される。一実施形態では、I状態への対応データのローカル読み取りを許容する任意の状態からの状態遷移は、スレッドが対応するキャッシュラインに情報をすでに書き込んでいること、あるいは、書き込もうとしていることを示してよい。さらに、キャッシュを共有する他のスレッドによるキャッシュラインへの書き込みは、アップデートとして検出されることもできる。
他の実施形態では、キャッシュラインのコヒーレンシー状態遷移が、割込み、例外、フォルト、トラップ、あるいは、処理ハードウェア内の他のシグナリング機構を誘発することにより、スレッドがキャッシュラインにすでに情報を書き込んでいることが示される。他の実施形態では、他の機構が用いられることにより、スレッドが特定のキャッシュラインにすでにデータを書き込んでいることが示すコヒーレンシー状態遷移が示される。
スレッド単位でイベントがモニタされる一実施形態では、そこにすでに書き込まれているデータを示し得るキャッシュラインのコヒーレンシー状態情報の遷移を検出すべく、"シナリオ"として知られるイベントの論理結合が定義され得る。この場合、"チャネル"として知られるプロセッサ状態記憶領域は、キャッシュラインにおけるコヒーレンシー状態遷移を検出すべく、上述のハードウェアおよび/またはソフトウェアと実質的に同じ論理関数を実行するようプログラムされ得る。このようなシナリオの発生は、シナリオを処理する歩留まりイベントハンドラを起動し得る、フォルト、あるいは、トラップのような歩留まりなどの弱い歩留まりイベントを誘発することもある。
一実施形態では、モニタされたラインがすでに修正されている、あるいは、すぐに修正され得ることを示すイベントをスレッドに通知する機構は、任意のモニタビットセットにプログラムされ得るマスクを有することができる。例えば、一実施形態では、チャネルは、チャネルマスクとチャネルに書き込まれるべきプログラミングビットとの間で論理積演算などのブール演算を実行することによりプログラムされる。一実施形態では、この機構は、ユーザレベル割込み機構であり、一方、他の実施形態では、ユーザには見えない割込み機構である。一実施形態では、モニタされたラインがすでに修正されているか、または、すぐに修正される可能性があることを示すイベントをスレッドに通知する機構もハードウェアに切り替えられるコンテキストであるソフトウェアスレッドのような他のイベントに応じてソフトウェアスレッドに通知することができる。
モニタされたラインのアップデートの見込みをどのように検出するかに関わらず、スレッドが特定のキャッシュラインにすでに書き込まれているか、または、書き込まれる予定があることを示す場合、このような状態遷移の検出により、検出を処理すべくハンドラが起動される。ハンドラにより実行できる可能性のある1つのタスクは、他のスレッドが関心の値を有するメモリ位置をアップデートしているかどうか、また、特定のソフトウェア関数を起動するなど、適切な動作を実行できる関心の値にメモリ位置がアップデートされているかどうかを確かめるべく、モニタされる1つのアドレスまたは一組のアドレスを読み取ることである。
図3は、本発明に従う、スレッドによるキャッシュラインへの書き込みが生じていることを示し得るコヒーレンシー状態遷移の検出中に起動される動作を示すフローチャートである。動作301において、キャッシュラインは、キャッシュラインがモニタされる各スレッド内のインスタンス数と等しいモニタリングビット数を設定することにより、1つ以上のスレッドによってモニタされることができるようになる。一実施形態では、キャッシュラインは、設定されるモニタビットに対応する属性を有する命令(例えば"ロードモニタ"命令)を実行することによりイネーブルにされる。動作305では、スレッドがモニタされるキャッシュラインに情報を書き込むことにより、コヒーレンシー状態遷移を生じ、その後動作310において、キャッシュラインに書き込まれた情報を検索するようハンドラが起動されることにより、情報は、モニタリング(レシーバ)スレッドへと供給される。
一実施形態では、コヒーレンシー状態遷移は、モニタビットが設定されているかどうかを検出し、もし設定されていれば、コヒーレンシー状態遷移が起きていることを検出するロジックを用いて検出される。他の実施形態では、コヒーレンシー状態遷移は、ソフトウェア、ハードウェア、あるいは、それらのいくつかの組み合わせにより検出され得る。さらに、少なくとも1つの実施形態では、コヒーレンシー状態遷移は、シナリオをプロセッサ状態チャネルにプログラミングすることにより検出され、ユーザレベル割込み機構により受信スレッドに報告される。
動作315において、検出されたコヒーレンシー状態遷移に対応するモニタビットは、クリアされ、他のスレッド、または、同じスレッド内のモニタリングインスタンスにより選択的にリセットされる。一実施形態では、モニタビットは、クリアされたモニタビットに対応する属性を有するモニタビットを設定する命令とは異なる命令(例えば"クリアモニタ"命令)を実行することによりクリアされてよい。他の実施形態では、クリアされたモニタビットに対応する属性を用いることにより、モニタビットを設定する目的で使用されたモニタビットをクリアするために同じ命令(例えば"ロードモニタ"命令)が用いられてよい。
一実施形態では、ソフトウェアがモニタ変数およびそれに応じて起きる動作を特定することができるユーザのソフトウェアプログラムにインターフェースが提供される。一実施形態では、ユーザのソフトウェアプログラムは、特定のメモリ変数、特定のメモリ変数の値を評価するために特定の比較法則、および、メモリ変数の値が評価基準を満たす条件を誘発する任意の引数を有する関数ポインタを提供し得る。このような実施形態では、ソフトウェアは、1つの命令などの1つの手段を通じて、あるいは、複数の命令セットを通じて当該情報を特定できる。
また、ユーザソフトウェアは、それぞれが固有のあるいは共通の応答動作に対応する複数のモニタ変数を特定することができる。1つおよび/または複数の変数がモニタされる間に、スレッドは他の関数を引き続き実行できる。モニタされた変数の発生に応じて起動された関数は、スレッドが実行し続けるよう、スレッドに制御を戻すことができ、その結果、スケーラブルでフレキシブルなインターフェースが提供される。
一実施形態では、上記のようなインターフェースは、各変数、変数の比較法則、および、起動されるべき動作または関数とその引数を記述する情報を含む。一実施形態では、この情報は、メインコンピュータシステムのメモリ(例えばDRAM)などの記憶領域内のテーブルに格納される。ソフトウェア、ファームウェア、または、ハードウェアは、適当な時間にこのテーブルを読み取り、各エントリに対する特定の変数を読み取り、動作を起動すべきかどうかを決定すべく比較法則を実行してよい。
さらに、モニタされるべきキャッシュラインにおけるマークラインより前に記述されている機構は、モニタされるべき変数に対応する各ラインをマークするために用いられることができる。ラインが他のスレッドによって今修正されてよいことを示すイベントがモニタされたラインで検出される場合、適切なソフトウェア、ファームウェア、または、ハードウェアは、テーブルにおけるすべてのモニタされた変数を評価すべく上記のように起動さることができる。それらの基準を満たす変数がない場合、ソフトウェア、ファームウェア、または、ハードウェアは、すべての適切なラインはまだモニタされている最中であることを確認し、その起動の前に実行される作業へと戻す。
変数のテーブルを評価し、適切な関数を起動するソフトウェア、ファームウェア、または、ハードウェアは、スレッドメモリスタックを操作することができるので、その基準を満たす変数に応じて関数が実行される場合、その関数は、前の実行タスクに直接戻ることが出来る。あるいは、ソフトウェア、ファームウェア、または、ハードウェアは、スタックを処理することが出来るので、前の実行タスクに最終的に戻る前に、変数に対応するすべてのキャッシュラインが適切にモニタされていることを確認すべく、ある特別なコードに戻ることになる。さらなる他の変形例は、その基準を満たす変数に応じて起動される関数が用いられる特別なリターン命令を有することである。この特別なリターン命令は、前の実行タスクに最終的に戻る前に、変数に対応するすべてのキャッシュが適切にモニタされていることを確認する。
図4は、本発明の一実施形態が用いられ得るフロントサイドバス(FSB)コンピュータシステムを示す。プロセッサ505は、レベルワン(L1)キャッシュメモリ510およびメインメモリ515からデータにアクセスする。本発明の他の実施形態では、キャッシュメモリは、レベルツー(L2)キャッシュであるか、または、コンピュータシステムメモリ階層内の他のメモリであってよい。さらにいくつかの実施形態では、図4のコンピュータシステムは、L1キャッシュおよびL2キャッシュのどちらも含み得る。
図4のプロセッサ内には、マシンステートの記憶領域506が示されている。一実施形態では、記憶領域は、一組のレジスタであってよく、一方、他の実施形態では、他のメモリ構造であってよい。図4には、一実施形態に従う保存領域セグメントの記憶領域507も示されている。他の実施形態では、保存領域セグメントは、他のデバイスまたはメモリ構造内にあってもよい。プロセッサは、任意の数の処理コアを有し得る。しかしながら、本発明の他の実施形態は、独立したバスエージェントなどのシステム内の他のデバイス内で実現されるか、あるいは、ハードウェア、ソフトウェア、または、それらのいくつかの組み合わせの状態でシステム全体に分散されてもよい。
メインメモリは、ダイナミックランダムアクセスメモリ(DRAM)、ハードディスクドライブ(HDD)520、または、様々な記憶デバイスおよび技術を含むネットワークインターフェース530を介しコンピュータシステムから離れて配置されたメモリソースなどの様々なメモリソース内で実現されてよい。キャッシュメモリは、プロセッサ内、または、プロセッサのローカルバス507の上など、プロセッサに近接して配置されてよい。
さらに、キャッシュメモリは、6トランジスタ(6T)型セルなど比較的速いメモリセル、または、ほぼ同じかより早いアクセス速度を有する他のメモリセルを含んでよい。図4のコンピュータシステムは、ポイントツーポイント(PtP)ネットワークにおける各エージェント専用のバス信号を介し通信するマイクロプロセッサのようなバスエージェントのPtPネットワークであってよい。図5は、ポイントツーポイント(PtP)構成で配置されるコンピュータシステムを示す。特に、図5は、プロセッサ、メモリ、および、入出力デバイスが多数のポイントツーポイントインターフェースにより相互接続されているシステムを示す。
図5のシステムは、いくつかのプロセッサを含み、説明を明確にすべく、その中の2つであるプロセッサ670、680のみが示されている。プロセッサ670、680は、メモリ22、24と接続されるローカルメモリコントローラハブ(MCH)672、682をそれぞれ含む。プロセッサ670、680は、PtPインターフェース回路678および688を用い、ポイントツーポイント(PtP)インターフェース650を介しデータを交換する。プロセッサ670、680は、ポイントインターフェース回路676、694、686、698を用い、個別のPtPインターフェース652、654を介しチップセット690とデータをそれぞれ交換してよい。同じくチップセット690は、高性能グラフィックインターフェース639を介し高性能グラフィック回路638とデータを交換してよい。本発明の実施形態は、任意の数のプロセッサコアを有するいかなるプロセッサ内、あるいは、図5のPtPバスエージェントのそれぞれの中に配置されてよい。
しかしながら、図5のシステム内の他の回路、論理演算装置、または、デバイス内に本発明の他の実施形態が存在してよい。さらに、図5に示されるいくつかの回路、論理演算装置、または、デバイス全体に本発明の他の実施形態が分散されてよい。
本発明の実施形態の様々な側面は、相補型MOS回路および論理演算装置(ハードウェア)を用いて実現することができ、一方、本発明の他の側面は、プロセッサにより実行されると、プロセッサに本発明の複数の実施形態を実行させる方法を実施させる、機械可読媒体に格納される命令を用いて実現することができる。さらに、本発明のいくつかの実施形態は、ハードウェアでのみ実行されてよく、一方、他の実施形態は、ソフトウェアでのみ実行されてよい。
これまで例示の実施形態を参照して本発明を説明してきたが、説明は、限定的な意味合いで解釈されることを意図しない。例示的な実施形態はもとより、他の実施形態の様々な変更が本発明の趣旨および範囲内に存在するであろうことは当業者にとり明らかである。

Claims (30)

  1. 一の対応するキャッシュラインが、一のスレッドにより前記キャッシュラインに対応するデータを修正させ得る一のイベントに関してモニタされるべきかどうかを示す1つ以上のモニタビットフィールドを含む一のキャッシュメモリと、
    前記1つ以上のビットフィールド内に一のモニタビットが設定されている場合、前記キャッシュラインにデータが書き込まれているかどうかを検出する検出ロジックと、
    を含む装置。
  2. 前記モニタビットを設定する一の第1の命令と、前記モニタビットをクリアする一の第2の命令と、前記検出ロジックをイネーブルにする一の第3の命令とを含む複数の命令を格納する一のメモリをさらに含む、請求項1に記載の装置。
  3. 前記第1の命令および前記第2の命令は同じ命令である、請求項2に記載の装置。
  4. 前記イベントは、一の割込み機構、または、一のユーザレベル割込み機構により一の通知を生じる、請求項1に記載の装置。
  5. 前記ユーザレベル割込み機構は、前記スレッドにより示される、実行されるべき一の命令を生じる、請求項4に記載の装置。
  6. 前記キャッシュメモリは、前記キャッシュラインに関連するコヒーレンシー情報を格納する一のコヒーレンシー状態フィールドを含む、請求項1に記載の装置。
  7. 前記検出ロジックは、前記データが前記キャッシュラインに書き込まれるべきことを示す前記コヒーレンシー状態フィールドにおける一の遷移を検出する、請求項6に記載の装置。
  8. 前記コヒーレンシー状態フィールドにおける前記遷移は、一の共有状態から一の無効状態への一の遷移を含む、請求項7に記載の装置。
  9. 一の対応するキャッシュラインが、一のスレッドにより前記キャッシュラインに対応するデータを一の送信スレッドごとに修正させ得るイベントに関してモニタされるべきかどうかを示す複数のモニタビットフィールドを含む一のキャッシュメモリと、
    前記複数のモニタビットフィールド内に複数のビットを設定する一の第1の命令と、前記データが前記送信スレッドごとに前記キャッシュラインに書き込まれているかどうかを前記検出ロジックに検出させる一の第3の命令とを格納する一の第1のメモリと、
    を含むシステム。
  10. 一のレシーバスレッドを実行する一のプロセッサをさらに含み、前記レシーバスレッドは、前記検出ロジックが、前記キャッシュラインにデータが書き込まれており、前記レシーバスレッドに対応する一のモニタビットが前記複数のモニタビットフィールド内に設定されていることを検出する場合、前記キャッシュラインから前記データを読み出す、請求項9に記載のシステム。
  11. 前記第1のメモリは、前記複数のモニタビットフィールドの少なくともいくつかをクリアする一の第2の命令を含む、請求項10に記載のシステム。
  12. 前記第1のメモリは、前記データが前記送信スレッドごとに前記キャッシュラインに書き込まれているかどうかを検出ロジックに検出させる複数の命令を格納し、該複数の命令、および、前記第3の命令のそれぞれは、一の関連する優先レベルを有する、請求項10に記載のシステム。
  13. 前記検出ロジックは、一のシナリオを検出する情報によりプログラムされる一の状態チャネルを含む、請求項12に記載のシステム。
  14. 前記キャッシュメモリは、前記キャッシュラインに関連するコヒーレンシー情報を格納する一のコヒーレンシー状態フィールドを含む、請求項9に記載のシステム。
  15. 前記検出ロジックは、前記データが前記キャッシュラインに書き込まれていることを示す前記コヒーレンシー状態フィールド内の一の遷移を検出する、請求項14に記載のシステム。
  16. 前記検出ロジックは、前記キャッシュラインに書き込まれたデータに応じ、一の例外、一のフォルト、一のトラップ、一の割込みからなる一のグループのうちの1つを検出する一のロジックを含む、請求項9に記載の装置。
  17. 一の送信スレッド内の一の命令ごとに一のキャッシュラインに書き込まれるデータに関して前記キャッシュラインがモニタされるようにすることと、
    前記キャッシュラインに書き込まれた前記データの検出を可能にすることと、
    前記キャッシュラインに対応するデータの修正を他のスレッドにさせ得る一のイベントを検出することと、
    前記キャッシュラインに書き込まれた前記データを検出することに応じて一のハンドラを起動させることと、
    前記データを一の受信スレッドに送ることと、
    を含む方法。
  18. 前記キャッシュラインがモニタされるようにすることは、前記キャッシュラインに対応する一のモニタリングビットフィールド内の少なくとも1つのモニタリングビットを設定する一の命令を実行することを含む、請求項17に記載の方法。
  19. 前記キャッシュラインに書き込まれたデータの検出を可能にすることは、前記モニタされるべき前記キャッシュラインに対応する一のシナリオを検出する状態チャネルロジックをプログラムする一の命令を実行することを含む、請求項18に記載の方法。
  20. 前記キャッシュラインに書き込まれたデータの検出を可能にすることは、一の例外、一のフォルト、一のトラップ、一の割込みからなる一のグループから選ばれる、前記キャッシュラインに書き込まれる前記データに応じてアサートされる一の信号を検出ロジックに検出させることを含む、請求項19に記載の方法。
  21. 検出することは、前記キャッシュラインの一の第1の状態から一の第2の状態への一のコヒーレンシー状態遷移を検出することを含む、請求項19に記載の方法。
  22. 前記第1の状態は、共有状態であり、前記第2の状態は、一の無効状態である、請求項21に記載の方法。
  23. 前記シナリオは、前記キャッシュラインがモニタされるべきかどうかを検出することを含み、もしモニタされるべきであれば、前記キャッシュラインに関して一の第1の状態から一の無効状態への一のコヒーレンシー状態遷移が生じているかどうかを検出することを含む、請求項19に記載の方法。
  24. 状態チャネルロジックをプログラムする前記命令は、状態チャネルロジックをプログラムする複数の命令の1つであり、前記複数の命令のそれぞれは、前記キャッシュラインがモニタされる1つ以上のスレッド内の一の異なるインスタンスに対応する、請求項23に記載の方法。
  25. 前記複数の命令のそれぞれは、該複数の命令が実行されるべき順序を制御する一の固有の優先順位を有する、請求項24に記載の方法。
  26. 一組の命令を格納する機械可読媒体であって、一の機械により実行されると、該機械に一の方法を実行させ、該方法は、
    モニタされるべき一のキャッシュラインに対応する一の変数を記述する情報を格納することと、
    一の比較法則を用いて前記変数が一の第1の値に設定されているかどうかを決定することと、
    前記比較法則が満たされる場合、前記比較法則が満たされたことに応じて、2つ以上のスレッド間で情報が共有されることを可能にする、実行されるべき少なくとも1つの命令に対し一のポインタを特定することと、を含む、機械可読媒体。
  27. 前記比較法則が満たされたことに応じて、前記少なくとも1つの命令に対し、少なくとも1つの引数が選択的に渡される、請求項26に記載の機械可読媒体。
  28. 前記比較法則が満たされた後に前記変数をクリアすることをさらに含む、請求項27に記載の機械可読媒体。
  29. 前記比較法則が満たされているかどうかに関わらず、前記2つ以上のスレッドは実行し続けることになっている、請求項28に記載の機械可読媒体。
  30. 前記比較法則は、前記変数が前記第1の値に設定されているかどうかを決定するプロセッサロジックを用いる、請求項29に記載の機械可読媒体。
JP2012164674A 2005-10-19 2012-07-25 スレッド間同期通信のための装置、システム、および、その方法 Expired - Fee Related JP5449472B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/254,286 2005-10-19
US11/254,286 US8019947B2 (en) 2005-10-19 2005-10-19 Technique for thread communication and synchronization

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008535803A Division JP5204656B2 (ja) 2005-10-19 2006-10-19 スレッド間同期通信のための装置、システム、および、その方法

Publications (2)

Publication Number Publication Date
JP2012234561A true JP2012234561A (ja) 2012-11-29
JP5449472B2 JP5449472B2 (ja) 2014-03-19

Family

ID=37757207

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2008535803A Expired - Fee Related JP5204656B2 (ja) 2005-10-19 2006-10-19 スレッド間同期通信のための装置、システム、および、その方法
JP2012164674A Expired - Fee Related JP5449472B2 (ja) 2005-10-19 2012-07-25 スレッド間同期通信のための装置、システム、および、その方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2008535803A Expired - Fee Related JP5204656B2 (ja) 2005-10-19 2006-10-19 スレッド間同期通信のための装置、システム、および、その方法

Country Status (7)

Country Link
US (1) US8019947B2 (ja)
JP (2) JP5204656B2 (ja)
KR (1) KR101126820B1 (ja)
CN (2) CN102736956B (ja)
DE (1) DE112006002908T5 (ja)
GB (1) GB2446089B (ja)
WO (1) WO2007047959A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019947B2 (en) 2005-10-19 2011-09-13 Intel Corporation Technique for thread communication and synchronization
US7610448B2 (en) 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns
US9081687B2 (en) 2007-12-28 2015-07-14 Intel Corporation Method and apparatus for MONITOR and MWAIT in a distributed cache architecture
JP5663941B2 (ja) * 2010-04-30 2015-02-04 富士ゼロックス株式会社 印刷文書変換装置およびプログラム
US8468531B2 (en) 2010-05-26 2013-06-18 International Business Machines Corporation Method and apparatus for efficient inter-thread synchronization for helper threads
CN103109279B (zh) 2010-06-22 2016-08-31 富士通株式会社 多核处理器系统,控制程序以及控制方法
GB2524085B (en) * 2014-03-14 2021-01-20 Advanced Risc Mach Ltd Exception handling in microprocessor systems
JP5776810B2 (ja) * 2014-03-20 2015-09-09 富士通株式会社 マルチプロセッサシステム、制御プログラム、および制御方法
US9898351B2 (en) * 2015-12-24 2018-02-20 Intel Corporation Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture
US10346306B2 (en) * 2016-04-02 2019-07-09 Intel Corporation Processor and method for memory performance monitoring utilizing a monitor flag and first and second allocators for allocating virtual memory regions
US10394678B2 (en) 2016-12-29 2019-08-27 Intel Corporation Wait and poll instructions for monitoring a plurality of addresses
US10649684B2 (en) 2017-03-16 2020-05-12 Arm Limited Memory access monitoring
CN109408248B (zh) * 2018-09-19 2021-12-24 福建星网智慧科技有限公司 一种Linux下线程间通信系统
US11080122B2 (en) * 2019-09-19 2021-08-03 International Business Machines Corporation Software-invisible interrupt for a microprocessor

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0573505A (ja) * 1990-08-31 1993-03-26 Internatl Business Mach Corp <Ibm> マルチプロセツサ通信インタフエースとその方法
US5555398A (en) * 1994-04-15 1996-09-10 Intel Corporation Write back cache coherency module for systems with a write through cache supporting bus
JPH10116192A (ja) * 1996-10-11 1998-05-06 Nec Corp キャッシュメモリシステム
JP2902976B2 (ja) * 1995-06-19 1999-06-07 株式会社東芝 キャッシュフラッシュ装置
JP2001051742A (ja) * 1999-07-13 2001-02-23 Internatl Business Mach Corp <Ibm> 実行可能モジュールおよび関連する保護サービス・プロバイダ・モジュールの完全性検査方法および装置
JP2002342163A (ja) * 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式
JP2003030049A (ja) * 2001-07-12 2003-01-31 Nec Corp キャッシュメモリ制御方法及びマルチプロセッサシステム
US20030097529A1 (en) * 2001-10-16 2003-05-22 International Business Machines Corp. High performance symmetric multiprocessing systems via super-coherent data mechanisms
US20030126379A1 (en) * 2001-12-31 2003-07-03 Shiv Kaushik Instruction sequences for suspending execution of a thread until a specified memory access occurs
WO2004046924A1 (en) * 2002-11-18 2004-06-03 Arm Limited Processor switching between secure and non-secure modes
JP2004171565A (ja) * 2002-11-18 2004-06-17 Arm Ltd マルチドメインプロセッサのための診断データ捕捉制御
US20040162967A1 (en) * 2003-02-13 2004-08-19 Marc Tremblay Start transactional execution (STE) instruction to support transactional program execution
US20050027945A1 (en) * 2003-07-30 2005-02-03 Desai Kiran R. Methods and apparatus for maintaining cache coherency
US20050154838A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681318B2 (en) * 2000-09-08 2004-01-20 Sun Microsystems, Inc. Method and apparatus for using an assist processor to prefetch instructions for a primary processor
US7624236B2 (en) * 2004-12-27 2009-11-24 Intel Corporation Predictive early write-back of owned cache blocks in a shared memory computer system
US8019947B2 (en) 2005-10-19 2011-09-13 Intel Corporation Technique for thread communication and synchronization

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0573505A (ja) * 1990-08-31 1993-03-26 Internatl Business Mach Corp <Ibm> マルチプロセツサ通信インタフエースとその方法
US5202998A (en) * 1990-08-31 1993-04-13 International Business Machines Corporation Fast, simultaneous multi-processor system status communication interface
US5555398A (en) * 1994-04-15 1996-09-10 Intel Corporation Write back cache coherency module for systems with a write through cache supporting bus
JP2902976B2 (ja) * 1995-06-19 1999-06-07 株式会社東芝 キャッシュフラッシュ装置
JPH10116192A (ja) * 1996-10-11 1998-05-06 Nec Corp キャッシュメモリシステム
JP2001051742A (ja) * 1999-07-13 2001-02-23 Internatl Business Mach Corp <Ibm> 実行可能モジュールおよび関連する保護サービス・プロバイダ・モジュールの完全性検査方法および装置
JP2002342163A (ja) * 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式
JP2003030049A (ja) * 2001-07-12 2003-01-31 Nec Corp キャッシュメモリ制御方法及びマルチプロセッサシステム
US20030097529A1 (en) * 2001-10-16 2003-05-22 International Business Machines Corp. High performance symmetric multiprocessing systems via super-coherent data mechanisms
US20030126379A1 (en) * 2001-12-31 2003-07-03 Shiv Kaushik Instruction sequences for suspending execution of a thread until a specified memory access occurs
WO2004046924A1 (en) * 2002-11-18 2004-06-03 Arm Limited Processor switching between secure and non-secure modes
JP2004171565A (ja) * 2002-11-18 2004-06-17 Arm Ltd マルチドメインプロセッサのための診断データ捕捉制御
US20040162967A1 (en) * 2003-02-13 2004-08-19 Marc Tremblay Start transactional execution (STE) instruction to support transactional program execution
US20050027945A1 (en) * 2003-07-30 2005-02-03 Desai Kiran R. Methods and apparatus for maintaining cache coherency
US20050154838A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected

Also Published As

Publication number Publication date
KR20080048543A (ko) 2008-06-02
CN101292226A (zh) 2008-10-22
GB2446089B (en) 2010-12-01
CN101292226B (zh) 2012-05-30
DE112006002908T5 (de) 2008-09-18
JP5204656B2 (ja) 2013-06-05
JP2009512078A (ja) 2009-03-19
GB2446089A (en) 2008-07-30
GB0808945D0 (en) 2008-06-25
KR101126820B1 (ko) 2012-03-23
JP5449472B2 (ja) 2014-03-19
WO2007047959A1 (en) 2007-04-26
CN102736956B (zh) 2015-09-30
US8019947B2 (en) 2011-09-13
CN102736956A (zh) 2012-10-17
US20070088916A1 (en) 2007-04-19

Similar Documents

Publication Publication Date Title
JP5449472B2 (ja) スレッド間同期通信のための装置、システム、および、その方法
US9767027B2 (en) Private memory regions and coherency optimization by controlling snoop traffic volume in multi-level cache hierarchy
JP4764360B2 (ja) メモリ属性を用いるための技術
US8539485B2 (en) Polling using reservation mechanism
US7827391B2 (en) Method and apparatus for single-stepping coherence events in a multiprocessor system under software control
JP4925973B2 (ja) 装置、システム、方法およびプログラム
US9575816B2 (en) Deadlock/livelock resolution using service processor
KR20100112137A (ko) 프로세서 상에서 실행되는 프로그램 소프트웨어를 프로파일링하는 매커니즘
US8181185B2 (en) Filtering of performance monitoring information
US8171268B2 (en) Technique for context state management to reduce save and restore operations between a memory and a processor using in-use vectors
JP2014075147A (ja) システム管理モードのためのプロセッサにおける状態記憶の提供
US10318340B2 (en) NVRAM-aware data processing system
JP2012168930A (ja) 並列コンピュータ・システムの性能を改良するための装置、方法及びコンピュータ・プログラム
CN107025130B (zh) 处理节点、计算机系统及事务冲突检测方法
KR20230098610A (ko) 시스템 온 칩(soc들)을 위한 향상된 내구성
US20060143333A1 (en) I/O hub resident cache line monitor and device register update
CN111078620A (zh) 具有软件-硬件共同管理的高速缓存系统的多核处理器
US20210173004A1 (en) Debug state machine triggered extended performance monitor counter
WO2006090328A2 (en) Multiprocessor system, testing device and method for generating cache coherence testing traffic
JP2023538241A (ja) メモリロケーションに記憶されたデータが修正されたかどうかを識別するためのメモリロケーションの監視

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130806

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131106

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131224

R150 Certificate of patent or registration of utility model

Ref document number: 5449472

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees