JP2008165834A - 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 - Google Patents
指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 Download PDFInfo
- Publication number
- JP2008165834A JP2008165834A JP2008081180A JP2008081180A JP2008165834A JP 2008165834 A JP2008165834 A JP 2008165834A JP 2008081180 A JP2008081180 A JP 2008081180A JP 2008081180 A JP2008081180 A JP 2008081180A JP 2008165834 A JP2008165834 A JP 2008165834A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- thread
- monitor
- address
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000004044 response Effects 0.000 claims abstract description 55
- 238000012545 processing Methods 0.000 claims abstract description 37
- 230000008569 process Effects 0.000 claims description 26
- 239000003795 chemical substances by application Substances 0.000 claims description 18
- 239000000872 buffer Substances 0.000 claims description 15
- 238000001514 detection method Methods 0.000 claims description 13
- 238000012544 monitoring process Methods 0.000 claims description 11
- 230000010076 replication Effects 0.000 claims description 6
- 238000013519 translation Methods 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 238000012360 testing method Methods 0.000 claims description 2
- 238000000137 annealing Methods 0.000 claims 1
- 238000005192 partition Methods 0.000 description 15
- 238000013461 design Methods 0.000 description 12
- 238000003860 storage Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000000638 solvent extraction Methods 0.000 description 5
- 230000004913 activation Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000003449 preventive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000004381 surface treatment Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
Abstract
【解決手段】 本発明は、モニタアドレスを示す関連するアドレスオペランドを有する第1命令を有する第1スレッドを含む複数のスレッドの実行を可能にする複数の実行ユニットと、前記第1スレッドの実行をサスペンドするサスペンド論理と、前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させるモニタとを有することを特徴とするプロセッサからなる。
【選択図】 図1
Description
状態に移行するのを回避する。その結果、ブロック665に示されるように、選ばれたコヒーレンシー領域(コヒーレンシーを維持するメモリ部分)のどのエージェントも変更または排他的状態(またはそれらと等価なもの)でデータを有することが可能である。本実施例では内部キャッシュからフラッシュされたとしても、プロセッサはモニタキャッシュのキャッシュラインを効果的にキャッシュするようである。
110 メモリアクセスモニタ
120 バス/メモリコントローラ
130 フロントエンド
140、160 スレッド分割可能リソース
150 共有リソース
300 バスインタフェース
310 モニタ
320 サイクル比較論理
325 ライト検出論理
330 アドレス比較回路
335 アドレス
350 コヒーレンシー関連論理
355 リードライン生成論理
360 HIT生成論理
365 フロントエンド/UOP生成論理
370 実行リソース
375 アドレス変換論理
380 バックエンド
377 スレッドサスペンド/再開論理
382 パイプラインフラッシュ論理
385 分割/アニール論理
815 メモリインタフェース
820 メディアインタフェース
830 メモリ
Claims (60)
- モニタアドレスを示す関連するアドレスオペランドを有する第1命令を有する第1スレッドを含む複数のスレッドの実行を可能にする複数の実行ユニットと、
前記第1スレッドの実行をサスペンドするサスペンド論理と、
前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させるモニタとを有することを特徴とするプロセッサ。 - 請求項1記載のプロセッサであって、
前記メモリアクセスが前記モニタアドレスへの実際の書き込みまたは潜在的な書き込みを示す場合にのみ、前記モニタは前記メモリアクセスに応答して再開させることを特徴とするプロセッサ。 - 請求項1記載のプロセッサであって、
前記第1スレッドがサスペンドされ、かつモニタイベントが明示されている場合、前記モニタは前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させることを特徴とするプロセッサ。 - 請求項3記載のプロセッサであって、さらに、
前記メモリアクセス以外の何れかのイベントに応答して前記第1スレッドを再開させるイベント検出論理を有することを特徴とするプロセッサ。 - 請求項4記載のプロセッサであって、
前記イベントは割込みであることを特徴とするプロセッサ。 - 請求項1記載のプロセッサであって、
前記関連するアドレスオペランドは非明示的オペランドであることを特徴とするプロセッサ。 - 請求項6記載のプロセッサであって、
前記関連するアドレスオペランドは所定のレジスタに格納されることを特徴とするプロセッサ。 - 請求項1記載のプロセッサであって、
前記サスペンド論理は第2命令に応答して前記第1スレッドの実行をサスペンドし、
前記第1命令は前記モニタをイネーブル状態にし、前記第2命令は前記モニタにより合図されるイベントを明示することを特徴とするプロセッサ。 - 請求項8記載のプロセッサであって、
前記第1命令の実行が完了した場合に限って、前記第2命令は前記モニタをイネーブル状態にすることを特徴とするプロセッサ。 - 請求項1記載のプロセッサであって、
前記サスペンド論理は前記第1命令に応答して前記第1スレッドの実行をサスペンドすることを特徴とするプロセッサ。 - 請求項8記載のプロセッサであって、さらに、
前記モニタアドレスへのストアの視認性を向上させるコヒーレンシー論理を有することを特徴とするプロセッサ。 - 請求項11記載のプロセッサであって、
前記コヒーレンシー論理は、コヒーレンシー領域内の何れのキャッシュも、変更または排他的状態において前記モニタアドレスに情報を格納しないことを保証することを特徴とするプロセッサ。 - 請求項12記載のプロセッサであって、
前記コヒーレンシー論理は、前記モニタアドレスに係るキャッシュラインを内部キャッシュからフラッシュし、当該プロセッサに接続された他のプロセッサに対し前記モニタアドレスに係るキャッシュラインのバスリードライン処理を生成し、
前記バスリードライン処理はパイプラインバスプロトコルに従って提供された複数段階処理であることを特徴とするプロセッサ。 - 請求項11記載のプロセッサであって、
前記コヒーレンシー論理は、前記モニタアドレスへの書き込み処理を、該書き込み処理の実行を通知することなく他の何れかのバスエージェントが実行することを回避するため、当該プロセッサにバスサイクルを生成させることを特徴とするプロセッサ。 - 請求項14記載のプロセッサであって、さらに、
他のバスエージェントによる前記モニタアドレスの情報の読み出しに応答して、ヒット信号をアサートするバス制御論理を有することを特徴とするプロセッサ。 - 請求項1記載のプロセッサであって、
前記関連するアドレスオペランドにより示される前記モニタアドレスは、前記関連するアドレスオペランドにより示されるアドレスにおけるデータに対するキャッシュライン、キャッシュラインの一部あるいは他のサイズのユニットの1つを示すことを特徴とするプロセッサ。 - 請求項1記載のプロセッサであって、さらに、
前記関連するアドレスオペランドを物理的アドレスである前記モニタアドレスに変換するアドレス変換論理を有することを特徴とするプロセッサ。 - 請求項1記載のプロセッサであって、
前記モニタアドレスは、物理的アドレスと、バーチャルアドレスと、相対アドレスと、リニアアドレスとからなる集合から選ばれることを特徴とするプロセッサ。 - 請求項1記載のプロセッサであって、さらに、
複数のスレッドがアクティブ状態であるとき、前記複数のスレッドの各アクティブ状態のスレッドに各分割可能リソースの一部を割り当てるよう分割される複数の分割可能リソースを有し、
前記サスペンド論理は、前記第1スレッドの実行のサスペンドに応答して、前記第1スレッドに割当てられた前記複数のリソースの何れかを放棄することを特徴とするプロセッサ。 - 請求項19記載のプロセッサであって、
前記モニタは、前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドの実行を受け入れるため、前記複数の分割可能リソースを再分割させることを特徴とするプロセッサ。 - 請求項20記載のプロセッサであって、
前記複数の分割可能リソースは、命令キューと、リオーダーバッファと、レジスタプールと、複数のストアバッファとを有することを特徴とするプロセッサ。 - 請求項21記載のプロセッサであって、さらに、
前記複数のスレッドのそれぞれに対して複製された複数の複製リソースを有し、
該複数の複製リソースは、複数のプロセッサ状態変数と、命令ポインタと、レジスタリネーム論理とを有することを特徴とするプロセッサ。 - 請求項22記載のプロセッサであって、さらに、
前記複数のスレッドの何れかにより利用可能な複数の共有リソースを有し、
該複数の共有リソースは、複数の実行ユニットと、キャッシュと、スケジューラとを有することを特徴とするプロセッサ。 - 第1スレッドからモニタアドレスを示す第1命令と第2命令とを受信するフロントエンドと、
前記第1命令と前記第2命令とを実行し、前記第2命令に応答して前記第1スレッドの実行をサスペンドする実行リソースと、
前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させるモニタとを有することを特徴とするプロセッサ。 - 請求項24記載のプロセッサであって、
前記第1命令はリニアアドレスを示すオペランドを有し、
当該プロセッサはさらに、物理的アドレスである前記モニタアドレスを取得するため、前記リニアアドレスを変換するアドレス変換論理を有することを特徴とするプロセッサ。 - 請求項25記載のプロセッサであって、さらに、
当該プロセッサに接続された他のプロセッサの何れのキャッシュも、変更または排他的状態において前記モニタアドレスに情報を格納しないことを保証するコヒーレンシー論理を有することを特徴とするプロセッサ。 - 請求項26記載のプロセッサであって、
前記コヒーレンシー論理は、他のプロセッサによる前記モニタアドレスの探索に応答して、ヒット信号をアサートすることを特徴とするプロセッサ。 - 第1スレッドから関連するモニタアドレスを有する第1命令を受信するフロントエンド論理と、
前記モニタアドレスを受信するよう接続され、前記第1命令に応答して前記モニタアドレスへのメモリアクセスを監視し、前記モニタアドレスへのアクセスが発生するとイベントを通知するモニタとを有することを特徴とするプロセッサ。 - 請求項28記載のプロセッサであって、
前記モニタは、前記モニタアドレスに書き込むライトメモリアクセスに応答して、前記イベントを通知することを特徴とするプロセッサ。 - 請求項28記載のプロセッサであって、
前記モニタは、ライン無効処理に応答して、前記イベントを通知することを特徴とするプロセッサ。 - 請求項28記載のプロセッサであって、さらに、
当該プロセッサに接続された他のプロセッサの何れのキャッシュも、変更または排他的状態において前記モニタアドレスに情報を格納しないことを保証するコヒーレンシー論理を有することを特徴とするプロセッサ。 - 請求項31記載のプロセッサであって、
前記コヒーレンシー論理は、内部キャッシュフラッシュサイクルと外部リードライン処理を生成する論理を有することを特徴とするプロセッサ。 - 請求項28記載のプロセッサであって、さらに、
前記モニタからモニタイベントを明示し、第2命令に応答して前記第1スレッドをサスペンドする論理を有することを特徴とするプロセッサ。 - 複数のスレッドを実行する複数の実行ユニットと、
前記複数のスレッドの第1スレッドから命令を受信するフロントエンド論理と、
保留中のモニタイベントがない場合、前記命令に応答して前記第1スレッドをサスペンドし、前記複数のスレッドの他のスレッドの実行を可能にするサスペンド論理とを有することを特徴とするプロセッサ。 - 請求項34記載のプロセッサであって、
前記サスペンド論理は、すでに保留中のモニタイベントを含むモニタイベントの認識を可能にすることを特徴とするプロセッサ。 - 請求項35記載のプロセッサであって、さらに、
複数の分割可能リソースを有し、
前記サスペンド論理は、前記命令に応答して前記第1スレッドをサスペンドすることに加えて、前記第1スレッドに係る前記複数の分割可能リソースの各リソースを放棄することを特徴とするプロセッサ。 - 命令を受信する複数のスレッド分割可能リソースと、
前記複数のスレッド分割可能リソースと協調して命令を実行する複数の共有リソースと、
第1スレッドの命令に応答して前記第1スレッドをサスペンドし、該第1スレッドのサスペンドに加えて、前記第1スレッドに係る前記複数のスレッド分割可能リソースのリソースを放棄するスレッドサスペンド論理と、
当該プロセッサに前記複数のスレッド分割可能リソースを再分割させ、前記第1スレッドにより示されるメモリアドレスへのアクセスに応答して、前記第1スレッドの実行を再開させるモニタとを有することを特徴とするプロセッサ。 - 請求項37記載のプロセッサであって、
前記メモリアドレスへのアクセスは、前記第1スレッドで実行される第1命令により指定され、
前記モニタは、前記スレッドサスペンド論理が前記第1スレッドをサスペンドするのに応答して、前記命令によりスレッドを再開させるため、モニタイベントを通知するよう明示されることを特徴とするプロセッサ。 - 実行の複数のスレッドの第1スレッドをサスペンドする手段と、
メモリ領域へのアクセスを検出する手段と、
前記検出する手段が前記メモリ領域へのアクセスを検出することに応答して、前記第1スレッドを再開する手段とを有することを特徴とする装置。 - 請求項39記載の装置であって、
前記メモリ領域へのアクセスを検出する手段は、前記第1スレッドにおいて実行される第1命令に応答してイネーブル状態とされ、
前記第1スレッドをサスペンドする手段は、前記第1スレッドにおいて実行される第2命令に応答して前記第1スレッドをサスペンドすることを特徴とする装置。 - 請求項40記載の装置であって、さらに、
前記メモリ領域へのアクセスの検出を簡素化するコヒーレンシー手段を有することを特徴とする装置。 - 請求項41記載の装置であって、
前記メモリ領域へのアクセスは、ライトまたは無効アクセスであることを特徴とする装置。 - 請求項41記載の装置であって、さらに、
前記サスペンドする手段が前記第1スレッドの実行をサスペンドすることに応答して、リソースをアニールし、前記複数のスレッドの他のスレッドによる利用のため前記第1スレッドに係る分割リソースを解放する手段と、
前記第1スレッドの再開を受け入れるため、リソースを再分割するためにリソースを分割する手段とを有することを特徴とする装置。 - 実行の第1スレッドにおいて実行される第1オペコードを受信するステップと、
前記第1オペコードに係るリニアアドレスを物理的アドレスに変換するステップと、
監視バスエージェントに通知することなく他のバスエージェントが前記物理的アドレスに係るデータを変更することを可能にするのに十分なオーナー権限を他の何れのバスエージェントが有しないことを保証するため、前記関しバスエージェントによってバス処理を実行するステップと、
前記物理的アドレスへのライトアクセスを監視するステップと、
他のバスエージェントが前記物理的アドレスを読み出す場合、ヒットを通知するステップと、
前記実行の第1スレッドにおいて第2オペコードを受信するステップと、
前記第2オペコードに応答して、前記実行の第1スレッドをサスペンドし、モニタイベントの認識をイネーブル状態にするステップと、
前記ライトアクセスが発生する場合、前記第1スレッドを再開するステップと、
第1イベント群の何れかに応答して前記第1スレッドの実行を再開するステップと、
第2イベント群を無視するステップとを有することを特徴とする方法。 - 請求項44記載の方法であって、
前記第2オペコードに応答して前記実行の第1スレッドをサスペンドするステップは、
前記モニタイベントが保留中であるかチェックし、
モニタがアクティブ状態であるかチェックし、
前記モニタがアクティブ状態であり、かつ保留中のモニタイベントが存在しない場合、第1スレッドサをスペンド状態にすることを特徴とする方法。 - 請求項45記載の方法であって、
前記第1スレッドをサスペンド状態にすることは、
レジスタプールの複数のレジスタを放棄し、
命令キューの複数の命令キューエントリを放棄し、
ストアバッファの複数のストアバッファエントリを放棄し、
リオーダーバッファの複数のリオーダーバッファエントリを放棄することからなることを特徴とする方法。 - 第1スレッドからのモニタアドレスを示す関連するアドレスオペランドを有する第1命令を格納するメモリと、
前記メモリに接続され、前記第1命令に応答してメモリ処理を監視するモニタによる前記モニタアドレスへのメモリアクセスの検出をイネーブル状態にし、前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させる第1プロセッサとを有するシステム。 - 請求項47記載のシステムであって、
前記メモリは、前記第1スレッドからの第2命令を格納し、
前記第1プロセッサは、前記第2命令に応答して前記第1スレッドをサスペンドすることを特徴とするシステム。 - 請求項48記載のシステムであって、
前記モニタは、前記メモリアクセスの発生に応答して、前記第2命令により明示されると、前記第1プロセッサにスレッドを再開させるモニタイベント保留指標を設定することを特徴とするシステム。 - 請求項47記載のシステムであって、
前記第1プロセッサは、第1キャッシュを有し、
当該システムはさらに、第2キャッシュを有する第2プロセッサを有し、
前記第1プロセッサは、前記第2プロセッサに前記第2キャッシュのモニタアドレスに格納されているデータの変更を可能にする処理を前記第1プロセッサに通知させるため、前記第2プロセッサに対するバス処理を駆動することを特徴とするシステム。 - 請求項47記載のシステムであって、
前記第1プロセッサは、変更が行われていることを通知することなく前記第2プロセッサが前記第2キャッシュのモニタアドレスに格納されているデータの変更を可能にする状態において、前記モニタアドレスのデータを前記第2プロセッサがキャッシュすることを禁止する信号をアサートすることを特徴とするシステム。 - 請求項51記載のシステムであって、
前記信号は、キャッシュヒットを示し、前記第2キャッシュが排他的状態で前記モニタアドレスにデータを格納することを禁止することを特徴とするシステム。 - 請求項49記載のシステムであって、
前記第1プロセッサはさらに、他のイベントが発生した場合、前記第1スレッドを再開することを特徴とするシステム。 - 請求項53記載のシステムであって、
前記他のイベントは、割込みであることを特徴とするシステム。 - 請求項53記載のシステムであって、
前記メモリに格納されている第1スレッドは、前記第1命令と前記第2命令とを有するループと、前記モニタアドレスにおけるデータが変更されたか決定し、前記モニタアドレスにおけるデータが変更されていなければ前記ループを再開するテストとを有することを特徴とするシステム。 - モニタアドレスを示す関連するアドレスオペランドを有する第1命令を有する第1スレッドを含む複数のスレッドの実行を可能にする複数の実行ユニットと、
前記第1スレッドの実行をサスペンドするサスペンド論理と、
前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させるモニタと、
を有するプロセッサを実現するプログラムを有するコンピュータ可読媒体。 - 請求項56記載のコンピュータ可読媒体であって、
前記メモリアクセスが前記メモリアドレスへの実際の書き込みまたは潜在的書き込みを示す場合に限って、前記モニタは、前記メモリアクセスに応答して再開させることを特徴とするコンピュータ可読媒体。 - 請求項56記載のコンピュータ可読媒体であって、
前記第1スレッドがサスペンドされ、かつモニタイベントが明示される場合、前記モニタは、前記モニタアドレスへのメモリアクセスに応答して前記第1スレッドを再開させることを特徴とするコンピュータ可読媒体。 - 請求項56記載のコンピュータ可読媒体であって、
前記プロセッサはさらに、前記メモリアクセス以外の何れかのイベントに応答して前記第1スレッドを再開させるイベント検出論理を有することを特徴とするコンピュータ可読媒体。 - 請求項59記載のコンピュータ可読媒体であって、
前記プロセッサはさらに、複数のスレッドがアクティブ状態であるとき、前記複数のスレッドの各アクティブ状態のスレッドに各分割可能リソースの一部を割り当てるよう分割される複数の分割可能リソースを有し、
前記サスペンド論理は、前記第1スレッドの実行のサスペンドに応答して、前記第1スレッドに割り当てられた前記複数のリソースの何れかを放棄することを特徴とするコンピュータ可読媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/039,579 US7363474B2 (en) | 2001-12-31 | 2001-12-31 | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
US10/039,579 | 2001-12-31 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003558691A Division JP4601958B2 (ja) | 2001-12-31 | 2002-12-11 | 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008165834A true JP2008165834A (ja) | 2008-07-17 |
JP4990829B2 JP4990829B2 (ja) | 2012-08-01 |
Family
ID=21906217
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003558691A Expired - Lifetime JP4601958B2 (ja) | 2001-12-31 | 2002-12-11 | 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 |
JP2008081180A Expired - Lifetime JP4990829B2 (ja) | 2001-12-31 | 2008-03-26 | 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003558691A Expired - Lifetime JP4601958B2 (ja) | 2001-12-31 | 2002-12-11 | 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 |
Country Status (11)
Country | Link |
---|---|
US (2) | US7363474B2 (ja) |
JP (2) | JP4601958B2 (ja) |
KR (1) | KR100814993B1 (ja) |
CN (1) | CN100383740C (ja) |
AU (1) | AU2002364557A1 (ja) |
DE (2) | DE10297856B4 (ja) |
GB (1) | GB2400947B (ja) |
HK (1) | HK1066883A1 (ja) |
RU (1) | RU2308754C2 (ja) |
TW (2) | TWI322959B (ja) |
WO (1) | WO2003058447A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012004990A1 (ja) * | 2010-07-07 | 2012-01-12 | パナソニック株式会社 | プロセッサ |
WO2016088220A1 (ja) * | 2014-12-03 | 2016-06-09 | 株式会社日立製作所 | 計算機及び論理プロセッサの制御方法 |
Families Citing this family (137)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7127561B2 (en) * | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
US7653912B2 (en) * | 2003-05-30 | 2010-01-26 | Steven Frank | Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations |
US7213093B2 (en) * | 2003-06-27 | 2007-05-01 | Intel Corporation | Queued locks using monitor-memory wait |
US8984199B2 (en) * | 2003-07-31 | 2015-03-17 | Intel Corporation | Inter-processor interrupts |
US20050108711A1 (en) * | 2003-11-13 | 2005-05-19 | Infineon Technologies North America Corporation | Machine instruction for enhanced control of multiple virtual processor systems |
US7310722B2 (en) * | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US7490218B2 (en) * | 2004-01-22 | 2009-02-10 | University Of Washington | Building a wavecache |
WO2005072307A2 (en) | 2004-01-22 | 2005-08-11 | University Of Washington | Wavescalar architecture having a wave order memory |
US7552042B1 (en) | 2004-01-30 | 2009-06-23 | Xilinx, Inc. | Method for message processing on a programmable logic device |
US7823162B1 (en) | 2004-01-30 | 2010-10-26 | Xilinx, Inc. | Thread circuits and a broadcast channel in programmable logic |
US7770179B1 (en) * | 2004-01-30 | 2010-08-03 | Xilinx, Inc. | Method and apparatus for multithreading on a programmable logic device |
US8984517B2 (en) * | 2004-02-04 | 2015-03-17 | Intel Corporation | Sharing idled processor execution resources |
US7581214B2 (en) * | 2004-04-15 | 2009-08-25 | Intel Corporation | Live set transmission in pipelining applications |
JP4376692B2 (ja) * | 2004-04-30 | 2009-12-02 | 富士通株式会社 | 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ |
US8607241B2 (en) | 2004-06-30 | 2013-12-10 | Intel Corporation | Compare and exchange operation using sleep-wakeup mechanism |
US8074030B1 (en) | 2004-07-20 | 2011-12-06 | Oracle America, Inc. | Using transactional memory with early release to implement non-blocking dynamic-sized data structure |
US7703098B1 (en) | 2004-07-20 | 2010-04-20 | Sun Microsystems, Inc. | Technique to allow a first transaction to wait on condition that affects its working set |
US7206903B1 (en) * | 2004-07-20 | 2007-04-17 | Sun Microsystems, Inc. | Method and apparatus for releasing memory locations during transactional execution |
KR101051703B1 (ko) | 2004-08-09 | 2011-07-25 | 삼성전자주식회사 | 서스펜드/리쥼 기능을 갖는 집적 회로 카드 및 집적 회로카드 시스템 |
US7434009B2 (en) * | 2004-09-30 | 2008-10-07 | Freescale Semiconductor, Inc. | Apparatus and method for providing information to a cache module using fetch bursts |
US7257679B2 (en) | 2004-10-01 | 2007-08-14 | Advanced Micro Devices, Inc. | Sharing monitored cache lines across multiple cores |
US7313673B2 (en) * | 2005-06-16 | 2007-12-25 | International Business Machines Corporation | Fine grained multi-thread dispatch block mechanism |
US9003421B2 (en) * | 2005-11-28 | 2015-04-07 | Intel Corporation | Acceleration threads on idle OS-visible thread execution units |
KR100763200B1 (ko) | 2006-02-24 | 2007-10-04 | 삼성전자주식회사 | 인터럽트 가능한 스레드 동기화 방법 및 장치 |
KR100771877B1 (ko) | 2006-07-21 | 2007-11-01 | 삼성전자주식회사 | 오동작 방지용 커맨드 세트 프로토콜 처리 방법 및 장치 |
US20080022079A1 (en) * | 2006-07-24 | 2008-01-24 | Archer Charles J | Executing an allgather operation with an alltoallv operation in a parallel computer |
US8443341B2 (en) * | 2006-11-09 | 2013-05-14 | Rogue Wave Software, Inc. | System for and method of capturing application characteristics data from a computer system and modeling target system |
US8239657B2 (en) * | 2007-02-07 | 2012-08-07 | Qualcomm Incorporated | Address translation method and apparatus |
US8898438B2 (en) * | 2007-03-14 | 2014-11-25 | XMOS Ltd. | Processor architecture for use in scheduling threads in response to communication activity |
US7937532B2 (en) * | 2007-03-30 | 2011-05-03 | Intel Corporation | Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine |
JP4420055B2 (ja) | 2007-04-18 | 2010-02-24 | 日本電気株式会社 | マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法 |
US8161480B2 (en) | 2007-05-29 | 2012-04-17 | International Business Machines Corporation | Performing an allreduce operation using shared memory |
KR101109029B1 (ko) | 2007-06-20 | 2012-01-31 | 후지쯔 가부시끼가이샤 | 연산 장치 |
US20090006663A1 (en) * | 2007-06-27 | 2009-01-01 | Archer Charles J | Direct Memory Access ('DMA') Engine Assisted Local Reduction |
JP2009110209A (ja) * | 2007-10-29 | 2009-05-21 | Panasonic Corp | 演算処理装置、プロセッサ、プログラム変換装置およびプログラム |
US8732683B2 (en) * | 2008-02-01 | 2014-05-20 | International Business Machines Corporation | Compiler providing idiom to idiom accelerator |
US8341635B2 (en) | 2008-02-01 | 2012-12-25 | International Business Machines Corporation | Hardware wake-and-go mechanism with look-ahead polling |
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 |
US8171476B2 (en) * | 2008-02-01 | 2012-05-01 | International Business Machines Corporation | Wake-and-go mechanism with prioritization of threads |
US8516484B2 (en) * | 2008-02-01 | 2013-08-20 | International Business Machines Corporation | Wake-and-go mechanism for a data processing system |
US8640141B2 (en) * | 2008-02-01 | 2014-01-28 | International Business Machines Corporation | Wake-and-go mechanism with hardware private array |
US8250396B2 (en) * | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Hardware wake-and-go mechanism for a data processing system |
US8312458B2 (en) * | 2008-02-01 | 2012-11-13 | International Business Machines Corporation | Central repository for wake-and-go mechanism |
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 |
US8127080B2 (en) | 2008-02-01 | 2012-02-28 | International Business Machines Corporation | Wake-and-go mechanism with system address bus transaction master |
US8788795B2 (en) * | 2008-02-01 | 2014-07-22 | International Business Machines Corporation | Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors |
US8386822B2 (en) * | 2008-02-01 | 2013-02-26 | International Business Machines Corporation | Wake-and-go mechanism with data monitoring |
US8316218B2 (en) | 2008-02-01 | 2012-11-20 | International Business Machines Corporation | Look-ahead wake-and-go engine with speculative execution |
US8145849B2 (en) | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Wake-and-go mechanism with system bus response |
US8725992B2 (en) | 2008-02-01 | 2014-05-13 | International Business Machines Corporation | Programming language exposing idiom calls to a programming idiom accelerator |
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 |
US8422402B2 (en) | 2008-04-01 | 2013-04-16 | International Business Machines Corporation | Broadcasting a message in a parallel computer |
US8281053B2 (en) | 2008-07-21 | 2012-10-02 | International Business Machines Corporation | Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations |
CN101788922B (zh) * | 2009-01-22 | 2013-12-25 | 国际商业机器公司 | 基于辅助线程实现事务存储系统的方法和装置 |
KR101581311B1 (ko) * | 2009-03-11 | 2015-12-31 | 삼성전자주식회사 | 플래시 메모리 장치 및 그 제어 방법 |
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 |
US8886919B2 (en) | 2009-04-16 | 2014-11-11 | International Business Machines Corporation | Remote update programming idiom accelerator with allocated processor resources |
US8082315B2 (en) * | 2009-04-16 | 2011-12-20 | International Business Machines Corporation | Programming idiom accelerator for remote update |
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 |
GB2484416B (en) * | 2009-06-26 | 2015-02-25 | Intel Corp | Optimizations for an unbounded transactional memory (utm) system |
EP2284693A1 (en) | 2009-08-03 | 2011-02-16 | C.R.F. Società Consortile per Azioni | Wait instruction |
US8695002B2 (en) * | 2009-10-20 | 2014-04-08 | Lantiq Deutschland Gmbh | Multi-threaded processors and multi-processor systems comprising shared resources |
US8447960B2 (en) * | 2010-01-08 | 2013-05-21 | International Business Machines Corporation | Pausing and activating thread state upon pin assertion by external logic monitoring polling loop exit time condition |
US20110173420A1 (en) * | 2010-01-08 | 2011-07-14 | International Business Machines Corporation | Processor resume unit |
US8464035B2 (en) | 2009-12-18 | 2013-06-11 | Intel Corporation | Instruction for enabling a processor wait state |
US9424087B2 (en) | 2010-04-29 | 2016-08-23 | International Business Machines Corporation | Optimizing collective operations |
US8949577B2 (en) | 2010-05-28 | 2015-02-03 | International Business Machines Corporation | Performing a deterministic reduction operation in a parallel computer |
US8776081B2 (en) | 2010-09-14 | 2014-07-08 | International Business Machines Corporation | Send-side matching of data communications messages |
US8566841B2 (en) | 2010-11-10 | 2013-10-22 | International Business Machines Corporation | Processing communications events in parallel active messaging interface by awakening thread from wait state |
US8713362B2 (en) | 2010-12-01 | 2014-04-29 | International Business Machines Corporation | Obviation of recovery of data store consistency for application I/O errors |
US8694821B2 (en) * | 2010-12-03 | 2014-04-08 | International Business Machines Corporation | Generation of standby images of applications |
CN102736945B (zh) * | 2011-03-31 | 2016-05-18 | 国际商业机器公司 | 一种运行应用程序的多个实例的方法和系统 |
CN102760176B (zh) * | 2011-04-29 | 2015-02-11 | 无锡江南计算技术研究所 | 硬件事务级仿真方法、引擎及系统 |
US8893083B2 (en) | 2011-08-09 | 2014-11-18 | International Business Machines Coporation | Collective operation protocol selection in a parallel computer |
US8667501B2 (en) | 2011-08-10 | 2014-03-04 | International Business Machines Corporation | Performing a local barrier operation |
US8910178B2 (en) | 2011-08-10 | 2014-12-09 | International Business Machines Corporation | Performing a global barrier operation in a parallel computer |
US8868843B2 (en) | 2011-11-30 | 2014-10-21 | Advanced Micro Devices, Inc. | Hardware filter for tracking block presence in large caches |
US9798548B2 (en) | 2011-12-21 | 2017-10-24 | Nvidia Corporation | Methods and apparatus for scheduling instructions using pre-decode data |
US9310875B2 (en) | 2011-12-22 | 2016-04-12 | Intel Corporation | Instruction that specifies an application thread performance state |
JP5819184B2 (ja) | 2011-12-28 | 2015-11-18 | 富士通株式会社 | 情報処理装置及び情報処理装置の制御方法 |
WO2013101188A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Memory event notification |
US8706847B2 (en) | 2012-02-09 | 2014-04-22 | International Business Machines Corporation | Initiating a collective operation in a parallel computer |
US9495135B2 (en) | 2012-02-09 | 2016-11-15 | International Business Machines Corporation | Developing collective operations for a parallel computer |
CN104205042B (zh) | 2012-03-30 | 2019-01-08 | 英特尔公司 | 用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制 |
US9218288B2 (en) | 2012-06-15 | 2015-12-22 | International Business Machines Corporation | Monitoring a value in storage without repeated storage access |
US9256455B2 (en) * | 2012-11-20 | 2016-02-09 | Red Hat Isreal, Ltd. | Delivery of events from a virtual machine to host CPU using memory monitoring instructions |
US9563425B2 (en) | 2012-11-28 | 2017-02-07 | Intel Corporation | Instruction and logic to provide pushing buffer copy and store functionality |
US9141454B2 (en) * | 2012-12-27 | 2015-09-22 | Intel Corporation | Signaling software recoverable errors |
US10705961B2 (en) | 2013-09-27 | 2020-07-07 | Intel Corporation | Scalably mechanism to implement an instruction that monitors for writes to an address |
WO2015075550A2 (en) * | 2013-11-25 | 2015-05-28 | Marvell World Trade Ltd. | Systems and methods for loop suspension in java programming |
US9594660B2 (en) | 2014-03-27 | 2017-03-14 | International Business Machines Corporation | Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores |
US9354883B2 (en) | 2014-03-27 | 2016-05-31 | International Business Machines Corporation | Dynamic enablement of multithreading |
US9921848B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
US9417876B2 (en) | 2014-03-27 | 2016-08-16 | International Business Machines Corporation | Thread context restoration in a multithreading computer system |
US10102004B2 (en) | 2014-03-27 | 2018-10-16 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
US9804846B2 (en) | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
US9218185B2 (en) | 2014-03-27 | 2015-12-22 | International Business Machines Corporation | Multithreading capability information retrieval |
US9552033B2 (en) * | 2014-04-22 | 2017-01-24 | Qualcomm Incorporated | Latency-based power mode units for controlling power modes of processor cores, and related methods and systems |
US9778949B2 (en) * | 2014-05-05 | 2017-10-03 | Google Inc. | Thread waiting in a multithreaded processor architecture |
US9304702B2 (en) | 2014-05-29 | 2016-04-05 | Netapp, Inc. | System and method for parallelized performance data collection in a computing system |
US9477521B2 (en) | 2014-05-29 | 2016-10-25 | Netapp, Inc. | Method and system for scheduling repetitive tasks in O(1) |
US9256477B2 (en) * | 2014-05-29 | 2016-02-09 | Netapp, Inc. | Lockless waterfall thread communication |
GB2529899B (en) * | 2014-09-08 | 2021-06-23 | Advanced Risc Mach Ltd | Shared Resources in a Data Processing Apparatus for Executing a Plurality of Threads |
CN105683922B (zh) * | 2014-10-03 | 2018-12-11 | 英特尔公司 | 实现监视对地址的写入的指令的可扩展机制 |
US9575802B2 (en) | 2014-10-28 | 2017-02-21 | International Business Machines Corporation | Controlling execution of threads in a multi-threaded processor |
US11080064B2 (en) | 2014-10-28 | 2021-08-03 | International Business Machines Corporation | Instructions controlling access to shared registers of a multi-threaded processor |
US20170300329A1 (en) * | 2014-11-11 | 2017-10-19 | Renesas Electronics Corporation | Instruction execution control system and instruction execution control method |
CN105843592A (zh) * | 2015-01-12 | 2016-08-10 | 芋头科技(杭州)有限公司 | 一种在预设嵌入式系统中实现脚本操作的系统 |
GB2537115B (en) * | 2015-04-02 | 2021-08-25 | Advanced Risc Mach Ltd | Event monitoring in a multi-threaded data processing apparatus |
US10908909B2 (en) * | 2015-06-09 | 2021-02-02 | Optimum Semiconductor Technologies Inc. | Processor with mode support |
KR102476357B1 (ko) | 2015-08-06 | 2022-12-09 | 삼성전자주식회사 | 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법 |
US9916178B2 (en) | 2015-09-25 | 2018-03-13 | Intel Corporation | Technologies for integrated thread scheduling |
GB2544994A (en) * | 2015-12-02 | 2017-06-07 | Swarm64 As | Data processing |
CN105677487B (zh) * | 2016-01-12 | 2019-02-15 | 浪潮通用软件有限公司 | 一种控制资源占用的方法及装置 |
US11023233B2 (en) | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
US11061730B2 (en) * | 2016-11-18 | 2021-07-13 | Red Hat Israel, Ltd. | Efficient scheduling for hyper-threaded CPUs using memory monitoring |
CN108255587B (zh) * | 2016-12-29 | 2021-08-24 | 展讯通信(上海)有限公司 | 一种同步多线程处理器 |
US10353817B2 (en) * | 2017-03-07 | 2019-07-16 | International Business Machines Corporation | Cache miss thread balancing |
US10275254B2 (en) | 2017-03-08 | 2019-04-30 | International Business Machines Corporation | Spin loop delay instruction |
TWI648620B (zh) * | 2017-08-07 | 2019-01-21 | 慧榮科技股份有限公司 | 記憶體裝置以及操作指令錯誤處理方法 |
KR102043538B1 (ko) * | 2018-01-18 | 2019-11-11 | 주식회사 알티스트 | 파티셔닝을 적용하여 프로세스를 모니터링하는 컴퓨팅 시스템 |
CN109508229A (zh) * | 2018-09-19 | 2019-03-22 | 安徽慧视金瞳科技有限公司 | 一种多点同时绘制的匹配方法 |
US11068407B2 (en) | 2018-10-26 | 2021-07-20 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction |
US10884740B2 (en) | 2018-11-08 | 2021-01-05 | International Business Machines Corporation | Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads |
US11119781B2 (en) | 2018-12-11 | 2021-09-14 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a fronting load |
US11086672B2 (en) | 2019-05-07 | 2021-08-10 | International Business Machines Corporation | Low latency management of processor core wait state |
US11231881B2 (en) | 2020-04-02 | 2022-01-25 | Dell Products L.P. | Raid data storage device multi-step command coordination system |
US11106608B1 (en) | 2020-06-22 | 2021-08-31 | International Business Machines Corporation | Synchronizing access to shared memory by extending protection for a target address of a store-conditional request |
CN111857591B (zh) * | 2020-07-20 | 2024-08-09 | 昆仑芯(北京)科技有限公司 | 用于执行指令的方法、装置、设备和计算机可读存储介质 |
US20220197729A1 (en) * | 2020-12-23 | 2022-06-23 | Intel Corporation | Advanced queue monitoring system |
CN114489792B (zh) * | 2021-03-25 | 2022-10-11 | 沐曦集成电路(上海)有限公司 | 处理器装置及其指令执行方法 |
US11693776B2 (en) | 2021-06-18 | 2023-07-04 | International Business Machines Corporation | Variable protection window extension for a target address of a store-conditional request |
CN116089116B (zh) * | 2022-12-16 | 2024-05-31 | 成都海光集成电路设计有限公司 | 数据处理方法及装置 |
CN116185891B (zh) * | 2023-04-27 | 2023-07-21 | 珠海妙存科技有限公司 | 描述符管理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0982658A2 (en) * | 1998-08-03 | 2000-03-01 | Rational Software Corporation | Detecting and causing unsafe latent accesses to a resource in multi-threaded programs |
JP2001519579A (ja) * | 1997-10-07 | 2001-10-23 | カナル プラス ソシエテ アノニム | マルチスレッドデータ処理装置 |
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 |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4491910A (en) * | 1982-02-22 | 1985-01-01 | Texas Instruments Incorporated | Microcomputer having data shift within memory |
JPS59111526A (ja) | 1982-12-16 | 1984-06-27 | Fujitsu Ltd | 信号処理方式 |
JPH06105460B2 (ja) | 1988-06-07 | 1994-12-21 | 富士通株式会社 | マルチプロセッサのプロセッサ切換え装置 |
GB8817911D0 (en) | 1988-07-27 | 1988-09-01 | Int Computers Ltd | Data processing apparatus |
US4965718A (en) | 1988-09-29 | 1990-10-23 | International Business Machines Corporation | Data processing system incorporating a memory resident directive for synchronizing multiple tasks among plurality of processing elements by monitoring alternation of semaphore data |
US5357617A (en) | 1991-11-22 | 1994-10-18 | International Business Machines Corporation | Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor |
JP2866241B2 (ja) | 1992-01-30 | 1999-03-08 | 株式会社東芝 | コンピュータシステムおよびスケジューリング方法 |
US5428757A (en) * | 1992-04-29 | 1995-06-27 | International Business Machines Corporation | Method for reducing translation look aside buffer purges in a multitasking system |
US5546593A (en) | 1992-05-18 | 1996-08-13 | Matsushita Electric Industrial Co., Ltd. | Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream |
JP3678759B2 (ja) | 1992-07-21 | 2005-08-03 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 割込を発生するための装置および割込を発生するための方法 |
US5493660A (en) * | 1992-10-06 | 1996-02-20 | Hewlett-Packard Company | Software assisted hardware TLB miss handler |
US5584031A (en) | 1993-11-09 | 1996-12-10 | Motorola Inc. | System and method for executing a low power delay instruction |
US5546037A (en) | 1993-11-15 | 1996-08-13 | Cirrus Logic, Inc. | NAPNOP circuit for conserving power in computer systems |
US5584014A (en) * | 1994-12-20 | 1996-12-10 | Sun Microsystems, Inc. | Apparatus and method to preserve data in a set associative memory device |
JPH08212512A (ja) * | 1995-02-03 | 1996-08-20 | Hitachi Ltd | 磁気記憶装置及びそれに用いる薄膜磁気ヘッドとその製造方法 |
JPH08320797A (ja) | 1995-05-24 | 1996-12-03 | Fuji Xerox Co Ltd | プログラム制御システム |
JPH096633A (ja) | 1995-06-07 | 1997-01-10 | Internatl Business Mach Corp <Ibm> | データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム |
US5933627A (en) | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
KR100500002B1 (ko) | 1996-08-27 | 2005-09-08 | 마츠시타 덴끼 산교 가부시키가이샤 | 복수의명령흐름을독립적으로처리하고,명령흐름단위로처리성능을유연하게제어하는멀티스레드프로세서 |
US5961639A (en) | 1996-12-16 | 1999-10-05 | International Business Machines Corporation | Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution |
US5835705A (en) * | 1997-03-11 | 1998-11-10 | International Business Machines Corporation | Method and system for performance per-thread monitoring in a multithreaded processor |
AU6586898A (en) | 1997-03-21 | 1998-10-20 | University Of Maryland | Spawn-join instruction set architecture for providing explicit multithreading |
US6076157A (en) | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
US6016542A (en) * | 1997-12-31 | 2000-01-18 | Intel Corporation | Detecting long latency pipeline stalls for thread switching |
JP2000010910A (ja) * | 1998-06-22 | 2000-01-14 | Nec Corp | データ転送制御装置およびデータ転送制御方法ならびに記録媒体 |
US6505229B1 (en) * | 1998-09-25 | 2003-01-07 | Intelect Communications, Inc. | Method for allowing multiple processing threads and tasks to execute on one or more processor units for embedded real-time processor systems |
US6401155B1 (en) * | 1998-12-22 | 2002-06-04 | Philips Electronics North America Corporation | Interrupt/software-controlled thread processing |
SG65097A1 (en) | 1998-12-28 | 2001-08-21 | Compaq Computer Corp | Break event generation during transitions between modes of operation in a computer system |
US6535905B1 (en) | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6351808B1 (en) * | 1999-05-11 | 2002-02-26 | Sun Microsystems, Inc. | Vertically and horizontally threaded processor with multidimensional storage for storing thread data |
US6341347B1 (en) * | 1999-05-11 | 2002-01-22 | Sun Microsystems, Inc. | Thread switch logic in a multiple-thread processor |
US6357016B1 (en) | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal within a multithreaded processor |
US6496925B1 (en) | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
US6671795B1 (en) | 2000-01-21 | 2003-12-30 | Intel Corporation | Method and apparatus for pausing execution in a processor or the like |
US7856633B1 (en) | 2000-03-24 | 2010-12-21 | Intel Corporation | LRU cache replacement for a partitioned set associative cache |
US6931639B1 (en) * | 2000-08-24 | 2005-08-16 | International Business Machines Corporation | Method for implementing a variable-partitioned queue for simultaneous multithreaded processors |
TW461627U (en) * | 2000-12-21 | 2001-10-21 | Hon Hai Prec Ind Co Ltd | Electrical connector |
US6625698B2 (en) * | 2000-12-28 | 2003-09-23 | Unisys Corporation | Method and apparatus for controlling memory storage locks based on cache line ownership |
US6463511B2 (en) * | 2000-12-29 | 2002-10-08 | Intel Corporation | System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model |
US7120762B2 (en) * | 2001-10-19 | 2006-10-10 | Wisconsin Alumni Research Foundation | Concurrent execution of critical sections by eliding ownership of locks |
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 |
-
2001
- 2001-12-31 US US10/039,579 patent/US7363474B2/en active Active
-
2002
- 2002-12-11 CN CNB028265904A patent/CN100383740C/zh not_active Expired - Lifetime
- 2002-12-11 GB GB0412867A patent/GB2400947B/en not_active Expired - Lifetime
- 2002-12-11 WO PCT/US2002/039786 patent/WO2003058447A2/en active Application Filing
- 2002-12-11 AU AU2002364557A patent/AU2002364557A1/en not_active Abandoned
- 2002-12-11 DE DE10297856.5A patent/DE10297856B4/de not_active Expired - Lifetime
- 2002-12-11 JP JP2003558691A patent/JP4601958B2/ja not_active Expired - Lifetime
- 2002-12-11 DE DE10297596.5T patent/DE10297596B4/de not_active Expired - Lifetime
- 2002-12-11 RU RU2004123622/09A patent/RU2308754C2/ru not_active IP Right Cessation
- 2002-12-11 KR KR1020047010389A patent/KR100814993B1/ko active IP Right Grant
- 2002-12-25 TW TW091137282A patent/TWI322959B/zh not_active IP Right Cessation
- 2002-12-25 TW TW097151472A patent/TWI590153B/zh not_active IP Right Cessation
-
2004
- 2004-12-07 HK HK04109671A patent/HK1066883A1/xx not_active IP Right Cessation
-
2007
- 2007-08-08 US US11/891,076 patent/US20080034190A1/en not_active Abandoned
-
2008
- 2008-03-26 JP JP2008081180A patent/JP4990829B2/ja not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001519579A (ja) * | 1997-10-07 | 2001-10-23 | カナル プラス ソシエテ アノニム | マルチスレッドデータ処理装置 |
EP0982658A2 (en) * | 1998-08-03 | 2000-03-01 | Rational Software Corporation | Detecting and causing unsafe latent accesses to a resource in multi-threaded programs |
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 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012004990A1 (ja) * | 2010-07-07 | 2012-01-12 | パナソニック株式会社 | プロセッサ |
JPWO2012004990A1 (ja) * | 2010-07-07 | 2013-09-02 | パナソニック株式会社 | プロセッサ |
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 |
WO2016088220A1 (ja) * | 2014-12-03 | 2016-06-09 | 株式会社日立製作所 | 計算機及び論理プロセッサの制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US20030126186A1 (en) | 2003-07-03 |
JP4990829B2 (ja) | 2012-08-01 |
HK1066883A1 (en) | 2005-04-01 |
TW200305820A (en) | 2003-11-01 |
CN100383740C (zh) | 2008-04-23 |
WO2003058447A2 (en) | 2003-07-17 |
US7363474B2 (en) | 2008-04-22 |
DE10297856B4 (de) | 2014-07-17 |
AU2002364557A8 (en) | 2003-07-24 |
DE10297596T5 (de) | 2004-12-02 |
DE10297596B4 (de) | 2017-09-07 |
KR100814993B1 (ko) | 2008-03-18 |
AU2002364557A1 (en) | 2003-07-24 |
GB2400947A (en) | 2004-10-27 |
GB2400947B (en) | 2005-08-24 |
RU2004123622A (ru) | 2005-03-27 |
US20080034190A1 (en) | 2008-02-07 |
RU2308754C2 (ru) | 2007-10-20 |
TWI322959B (en) | 2010-04-01 |
GB0412867D0 (en) | 2004-07-14 |
WO2003058447A3 (en) | 2004-12-16 |
TWI590153B (zh) | 2017-07-01 |
TW200941340A (en) | 2009-10-01 |
JP2006500639A (ja) | 2006-01-05 |
JP4601958B2 (ja) | 2010-12-22 |
CN1688974A (zh) | 2005-10-26 |
KR20040068993A (ko) | 2004-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4990829B2 (ja) | 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 | |
US7127561B2 (en) | Coherency techniques for suspending execution of a thread until a specified memory access occurs | |
KR100864747B1 (ko) | 모니터-메모리 대기를 사용하여 큐잉된 로크들 | |
US8539485B2 (en) | Polling using reservation mechanism | |
JP5795820B2 (ja) | プロセッサ、方法、システム、及び、プログラム | |
US20030126379A1 (en) | Instruction sequences for suspending execution of a thread until a specified memory access occurs | |
US8607241B2 (en) | Compare and exchange operation using sleep-wakeup mechanism | |
US7404041B2 (en) | Low complexity speculative multithreading system based on unmodified microprocessor core | |
US8694976B2 (en) | Sleep state mechanism for virtual multithreading | |
TW201510860A (zh) | 多核心同步機制 | |
GB2457181A (en) | Suspending other threads to prevent access conflicts | |
KR20040069352A (ko) | 멀티-스레딩 프로세서에서 스레드의 실행을 정지시키기위한 시스템 및 방법 | |
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 |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080425 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080425 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110531 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110831 |
|
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: 20120403 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120502 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4990829 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150511 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D02 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |