JP5103396B2 - コンピュータシステムにおいて能動的に同期をとる方法 - Google Patents
コンピュータシステムにおいて能動的に同期をとる方法 Download PDFInfo
- Publication number
- JP5103396B2 JP5103396B2 JP2008528175A JP2008528175A JP5103396B2 JP 5103396 B2 JP5103396 B2 JP 5103396B2 JP 2008528175 A JP2008528175 A JP 2008528175A JP 2008528175 A JP2008528175 A JP 2008528175A JP 5103396 B2 JP5103396 B2 JP 5103396B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- instruction
- count value
- processor
- matching
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 claims description 87
- 230000004044 response Effects 0.000 claims description 35
- 238000000034 method Methods 0.000 claims description 27
- 239000000872 buffer Substances 0.000 claims description 9
- 238000012545 processing Methods 0.000 description 48
- 230000007246 mechanism Effects 0.000 description 29
- 239000000523 sample Substances 0.000 description 22
- 230000001360 synchronised effect Effects 0.000 description 20
- 230000001427 coherent effect Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 12
- 239000003550 marker Substances 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000001965 increasing effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002699 waste material Substances 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/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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache 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/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/30087—Synchronisation or serialisation 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- 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/3842—Speculative instruction execution
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Description
例えば、高速動作においては、クロックスキューおよび電力消費は著しい。このため、システムレベルの熱収支ポイントに課せられる物理的制約ならびにクロックスクリューを維持することが一層困難となり、このような技術の実用限界が真近に迫っていることが示されている。したがって、業界では、他の技術を用いて性能向上に努めている。性能を向上させる技術の1つのタイプに、マルチコアプロセッサ、より一般的には、マルチプロセッシングの使用が挙げられる。
複数のアドレスセット中の各アドレスは、リクエスタが排他アクセスを行うそれぞれのメモリリソースに対応する。同期アービターユニットは、1以上のアドレスのうちのいずれかのアドレスが、複数のアドレスセットのいずれかのアドレスとマッチングすることに応答して、このマッチングアドレスを含むセットと関連づけられるカウント値を返す。このカウント値は、マッチングアドレスに対して競合しているリクエスタの数を示す。
処理ノード312Dは、インターフェースロジック318Lを介して複数の入力/出力デバイス(例えば、デバイス320A〜320Bをデイジーチェーン構造で)との通信のために結合されている。他の処理ノードは、他のI/Oデバイスと同様の形式で通信することができる。各プロセッサは、システムの他のプロセッサと関連付けられるメモリとアクセスするためにこのインターフェースを使用してもよい。参照符号の後に文字が付いたコンポーネントは、概して、必要に応じて符号のみで参照される点に留意されたい。例えば、一般的に処理ノードを指す場合には、処理ノード312が用いられる。
このリンクは、処理ノード間の通信にキャッシュコヒーレントな方式で、あるいは、処理ノードとI/Oデバイス間(あるいは、PCIバスやISAバスなどの従来構造のI/Oバスへのバスブリッジ)の通信に、非コヒーレントな方式で動作することができる。さらに、このリンクは、図示しているような(例えば、320Aおよび320B)I/Oデバイス間にデイジーチェーン構造を用いて、非コヒーレントな方式で動作してもよい。例示の実施形態では、このリンクは、コヒーレントなハイパートランスポートTMリンクあるいは非コヒーレントなハイパートランスポートTMリンク、として実装してもよい点に留意されたい。ただしこれに限らず、他の実施形態では他のリンクが可能である。
図2に示しているように、同期アービター230は、任意の処理ノード312のノースブリッジユニット290に結合される。これにより、同期アービターは各ノードの高度同期機構のトランザクションに関連づけられる明示的アドレスの検出が可能となる。この同期アービターは、相互接続ネットワークのコヒーレントドメイン内であればどこにでも配置することができる。図面では1つの同期アービターが示されているが、システムが複数のバーチャルマシンを支援するように構成され、さらに、これらのバーチャルマシンがいずれの現実の物理メモリとも共有しない場合、複数の同期アービターは、いくつかのアービターにわたって同期ロードを分散するように構成することができる。
さらに、プロセッサコア18Aは、L1データキャッシュ207を含む。さらに、プロセッサコア18Aは、命令デコーダ255を含み、命令ディスパッチおよび制御ユニット257は、命令デコーダから命令を受信し、スケジューラ259にオペレーションをディスパッチするように結合されてもよい。さらに、命令ディスパッチおよび制御ユニット257は、マイクロコードリード読出し専用メモリ(MROM)(図示せず)に結合できる。スケジューラ259は、命令ディスパッチおよび制御ユニット257からディスパッチしたオペレーションを受信し、実行ユニット260にオペレーションを発行するように結合されてもよい。様々な実装品では、実行ユニット260は、任意の数の整数実行ユニットと浮動小数点演算ユニットとを含んでもよい。さらに、プロセッサコア18AはTLB206とロード/ストアユニット270を含む。他の実施形態では、(図示していないが)オンチップL2キャッシュがあってもよい。
同期アービター230内の比較ユニット231は、同期アービター230がアドレスセットを受信すると、このセット中の各アドレスとストレージ232中の全アドレスとの間でマッチングがあるかをチェックする。マッチングがなければ、同期アービター230は、パスカウント値(a passing count value)を返すことでパスレスポンスを発行し、これらのアドレスをストレージ232に記憶するように構成される。一実施形態では、このパスカウント値は0であるが、これに限らず適切なカウント値を用いることができる。しかし、マッチングアドレスがあれば、同期アービタ230は、このマッチングアドレスを含むアドレスセットに関連するカウント値233を増加し、次にこのカウント値をエラーレスポンスの一部として返す。
比較ユニット231は、所望に応じて、様々な方法で実装される構造だけを比較することができる。加えて、別の実施形態では、ストレージ232に記憶される各アドレスは、それぞれのカウントと関連づけられる。そのため、このカウント値は、クリティカルセクションのそれぞれのアドレスの1つに対して競合しているリクエスタ(つまり、干渉)の数を示す。
LOCK MOVx reg,[B+I*s+DISP]
より詳細には、通常のメモリ読出し命令は、LOCKプレフィックスを添付することで特別にされる。これにより、アドレスがL1キャッシュ(および、TLB206)を通過する際に、BIU220をして、関連のマーキングされた物理アドレスをLLB222に集めさせる。さらに、書込み許可なく(ReadS, :not ReadM or Read)ラインにアクセス(キャッシュミスの場合に)するように、メモリアクセスストレングス(strength)が低下する。Load命令は、ACQUIRE命令が同期アービター230から戻るまでLS2からリタイアできない。
LOCK PREFETCHW [B+I*s+DISP]
従って、通常のメモリPREFETCHW命令は、LOCKプレフィックスを添付することて特別にされる。これにより、アドレスがL1キャッシュ(および、TLB206)を通過する際に、BIU220に、関連のマーキングされた物理アドレスをLLB222に集めさせるようにする。さらに、メモリアクセスストレングスを低下させて、現実のDRAMがラインにアクセスするのを回避するようにさせる。PREFETCHW命令は、ACQUIRE命令が同期アービター230から戻るまで、LS2からリタイアできない。これらの命令は、クリティカルセクションに入っている(パーティシパントとなっている)キャッシュラインに接触するように用いられ、従って、このクリティカルセクションで必要な他のデータに接触するために、データ(例えば、ポインタ)を必要とする。
スペシフィケーション段階の終わりでは、ACQUIRE命令は、BIU220に、クリティカルセクションに対する全てのメモリリファレンスアドレスがLLB222に記録されることを通知するように用いられる。
ACQUIRE reg, imm8
このACQUIRE命令は、LOCKされたメモリリファレンス命令の数がACQUIRE命令の即値(immediate value)に等しいかどうかチェックする。このチェックがエラーであれば、ACQUIRE命令はエラーコードとともに命令を終了する。そうでなければ、ACQUIRE命令は、BIU220をして、LLB222に記憶された全アドレスを同期アービター230に送信させる。
この命令は、データパス上ではメモリリファレンス命令のように”見える”。そのため、同期アービター230から返されるカウント値は、全てのラインが干渉なしでアクセスできることを確認(あるいは、否定)するように用いることができる。1つの仮想マシンに対して、あるいは1つのシステムに対しては1つの同期アービタ−230しかないので、この“ロード”命令にはアドレスは必要でない。ACQUIRE命令で特定されるレジスタは、プロセッサコア18の宛先レジスタである。
// Concurrency Queue Version
// p is in RAX
LOCK MOVD A,[RAX+next] // a = p->next
LOCK MOVD B,[RAX+prev] // b = p->prev
LOCK MOVD C,[A+next] // c = a->prev
LOCK MOVD D,[B+next] // d = b->next
ACQUIRE reg
JNZ fails
MOVD [A+next],D // a->prev= d
MOVD [B+prev],C // b->prev = c
MOVD [RAX+next],0 // p->next = NULL
MOVD [RAX+prev],0 // p->prev = NULL
RELEASE
// Concurrency Queue Version
// q is in RAX
// p is in RSI
LOCK MOVD S,[RAX+next] // s = q->next
LOCK PREFETCHW [RSI+prev] // touch p->prev
LOCK PREFETCHW [RSI+next] // touch p->next
LOCK PREFETCHW [S+next] // touch s->next
ACQUIRE reg
JNZ fails
MOVD [RAX+next],RSI // q->next = p
MOVD [S+prev],RSI // s->prev = p
MOVD [RSI+next],S // p->next = s
MOVD [RSI+prev],RAX // p->prev = q
RELEASE
Claims (10)
- プロセッサ(18A、18B)が実行する方法であって、前記プロセッサが、
所与のメモリリソースへの排他アクセスをリクエストし、前記リクエストは、前記所与のメモリリソースに関連づけられたアドレスを特定する1つ以上のmov命令を含むものであり、各mov命令がLOCK命令プレフィックスを含み、
前記1つ以上のmov命令において特定されたアドレスの各々を、複数のアドレスセットの各アドレスと比較し、前記複数のアドレスセットの各アドレスは、リクエスタが排他アクセスを許可しているそれぞれのメモリリソースに対応しており、かつ、
前記1つ以上のmov命令において特定されたアドレスのいずれかのアドレスが前記複数のアドレスセットのいずれかのアドレスとマッチングしていることに応答して、前記マッチングアドレスに関連付けられるカウント値を返し、前記カウント値は前記マッチングアドレスに対して競合しているリクエスタの数を示すものであり、
前記プロセッサは、1つ以上のリクエスタが前記マッチングアドレスに対して競合していることを示すエラーカウント値の受信に応答して、次に同期をとるときに干渉を能動的に回避するようにカウント値を使用して次のリクエストで別のメモリリソースを選択する、方法。 - 前記1つ以上のmov命令において特定されたアドレスのいずれも前記複数のアドレスセットのいずれにもマッチングしないことに応答して、パスカウント値ゼロを返すステップをさらに含む、請求項1記載の方法。
- 別のプロセッサが別のメモリリソースへの排他アクセスを有しているかどうかを判断するように、前記カウント値を用いるステップをさらに含む、請求項1記載の方法。
- 排他アクセスのリクエストでは、前記LOCK命令プレフィックスを有する1つ以上のロックされたメモリリファレンス命令を実行し、前記LOCK命令プレフィックスにより、前記ロックされたメモリリファレンス命令に関連づけられるアドレスが、命令のデコードにおいて1つ以上のインジケーションビットでマーキングされる、請求項1記載の方法。
- 排他アクセスのリクエストでは、さらに、前記1つ以上のmov命令において特定されたアドレスの各々を、前記複数のアドレスセットの各々と比較させるACQUIRE命令を実行する、請求項4記載の方法。
- 前記1つ以上のmov命令において特定されたアドレスをプロセッサバッファに記憶し、前記ACQUIRE命令の実行に応答して、前記プロセッサバッファの前記全てのアドレスを比較のために送信する、請求項4記載の方法。
- 1つ以上のメモリ(314A〜314D)に結合された、互いに連結された1つ以上のプロセッサ(18A、18B)を含み、前記プロセッサの各々は所与のメモリリソースへの排他アクセスをリクエストするために、命令を実行するように構成されており、前記リクエストは、前記所与のメモリリソースに関連づけられたアドレスを特定する1つ以上のmov命令を含むものであって、各mov命令がLOCK命令プレフィックスを含み、
前記1つ以上のmov命令において特定されたアドレスの各々を複数のアドレスセットの各アドレスと比較するように結合されたアービトレーションユニット(230)を含み、前記複数のアドレスセットの各アドレスは、リクエスタが排他アクセスを許可されたそれぞれのメモリリソースに対応しており、
前記アービトレーションユニットは、前記複数のアドレスセットのうちのいずれかのアドレスが前記1つ以上のmov命令において特定されたアドレスのいずれかのアドレスとマッチングすることに応答して、前記マッチングアドレスを含む前記セットに関連するカウント値(233)を返すように構成されており、前記カウント値は前記マッチングアドレスに対して競合しているリクエスタの数を示すものであり、
前記プロセッサは、1つ以上のリクエスタが前記マッチングアドレスに対して競合していることを示すエラーカウント値の受信に応答して、次に同期をとるときに干渉を能動的に回避するようにカウント値を使用して次のリクエストで別のメモリリソースを選択するように構成される、コンピュータシステム。 - 前記アービトレーションユニットはさらに、前記複数のアドレスセットのうちのいずれのアドレスも前記1つ以上のmov命令において特定されたアドレスとマッチングしないことに応答して、パスカウント値ゼロを返すように構成されている、請求項7記載のコンピュータシステム。
- 前記1つ以上のプロセッサの各々はさらに、別のプロセッサが別のメモリリソースへの排他アクセスを有しているかを判断するために、前記カウント値を使用するように構成されている、請求項7記載のコンピュータシステム。
- 前記1つ以上のプロセッサの各々はさらに、
前記LOCK命令プレフィックスを有する1つ以上のメモリリファレンス命令を実行するように構成されており、前記LOCK命令プレフィックスは、前記ロックされたメモリリファレンス命令に関連づけられるアドレスを、命令のデコードにおいて1つ以上のインジケーションビットでマーキングされるようにし、
前記所与のメモリリソースの1つ以上のアドレスの各々を、前記複数のアドレスセットの各々と比較させるACQUIRE命令を実行する用に構成される、請求項7記載のコンピュータシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US71054805P | 2005-08-23 | 2005-08-23 | |
US60/710,548 | 2005-08-23 | ||
PCT/US2006/033192 WO2007025112A1 (en) | 2005-08-23 | 2006-08-23 | Method for proactive synchronization within a computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009506436A JP2009506436A (ja) | 2009-02-12 |
JP5103396B2 true JP5103396B2 (ja) | 2012-12-19 |
Family
ID=37607137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008528175A Active JP5103396B2 (ja) | 2005-08-23 | 2006-08-23 | コンピュータシステムにおいて能動的に同期をとる方法 |
Country Status (7)
Country | Link |
---|---|
US (6) | US20070050561A1 (ja) |
JP (1) | JP5103396B2 (ja) |
KR (1) | KR101369441B1 (ja) |
CN (1) | CN101297270A (ja) |
DE (1) | DE112006002237B4 (ja) |
GB (1) | GB2445294B (ja) |
WO (1) | WO2007025112A1 (ja) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070050561A1 (en) * | 2005-08-23 | 2007-03-01 | Advanced Micro Devices, Inc. | Method for creating critical section code using a software wrapper for proactive synchronization within a computer system |
US7681020B2 (en) * | 2007-04-18 | 2010-03-16 | International Business Machines Corporation | Context switching and synchronization |
US20090125519A1 (en) * | 2007-11-13 | 2009-05-14 | Intel Corporation | Device, system, and method for regulating software lock elision mechanisms |
US8135926B1 (en) * | 2008-10-21 | 2012-03-13 | Nvidia Corporation | Cache-based control of atomic operations in conjunction with an external ALU block |
US8108610B1 (en) * | 2008-10-21 | 2012-01-31 | Nvidia Corporation | Cache-based control of atomic operations in conjunction with an external ALU block |
US8108557B2 (en) * | 2009-01-22 | 2012-01-31 | Hewlett-Packard Development Company, L.P. | System and method for measuring clock skew on a network |
US8316368B2 (en) * | 2009-02-05 | 2012-11-20 | Honeywell International Inc. | Safe partition scheduling on multi-core processors |
US9727508B2 (en) * | 2009-04-27 | 2017-08-08 | Intel Corporation | Address learning and aging for network bridging in a network processor |
US9384063B2 (en) * | 2009-06-18 | 2016-07-05 | Microsoft Technology Licensing, Llc | Eliding synchronization in a concurrent data structure |
JP5752686B2 (ja) | 2009-08-20 | 2015-07-22 | ラムバス・インコーポレーテッド | 原子メモリ装置 |
US8307198B2 (en) * | 2009-11-24 | 2012-11-06 | Advanced Micro Devices, Inc. | Distributed multi-core memory initialization |
US20110208921A1 (en) * | 2010-02-19 | 2011-08-25 | Pohlack Martin T | Inverted default semantics for in-speculative-region memory accesses |
US8793471B2 (en) | 2010-12-07 | 2014-07-29 | Advanced Micro Devices, Inc. | Atomic program verification |
US8788794B2 (en) | 2010-12-07 | 2014-07-22 | Advanced Micro Devices, Inc. | Programmable atomic memory using stored atomic procedures |
US9122476B2 (en) | 2010-12-07 | 2015-09-01 | Advanced Micro Devices, Inc. | Programmable atomic memory using hardware validation agent |
KR20120101761A (ko) * | 2011-03-07 | 2012-09-17 | 삼성전자주식회사 | 캐시 페이즈 검출기 및 프로세서 코어 |
US10061618B2 (en) | 2011-06-16 | 2018-08-28 | Imagination Technologies Limited | Scheduling heterogenous computation on multithreaded processors |
US9037838B1 (en) * | 2011-09-30 | 2015-05-19 | Emc Corporation | Multiprocessor messaging system |
TWI454922B (zh) * | 2011-12-19 | 2014-10-01 | Phison Electronics Corp | 記憶體儲存裝置及其記憶體控制器與資料寫入方法 |
EP2798471A4 (en) * | 2011-12-30 | 2016-12-21 | Intel Corp | PROCESSORS, METHODS, SYSTEMS AND INSTRUCTIONS FOR ACCESSING A STRUCTURE |
US9430391B2 (en) | 2012-03-29 | 2016-08-30 | Advanced Micro Devices, Inc. | Managing coherent memory between an accelerated processing device and a central processing unit |
US9086957B2 (en) | 2012-08-02 | 2015-07-21 | International Business Machines Corporation | Requesting a memory space by a memory controller |
CN103020003A (zh) * | 2012-12-31 | 2013-04-03 | 哈尔滨工业大学 | 面向多核程序确定性重演的内存竞争记录装置及其控制方法 |
KR102020358B1 (ko) * | 2013-03-14 | 2019-11-05 | 삼성전자 주식회사 | 단말 및 그 단말에서 애플리케이션 동기화 방법 |
US9146885B2 (en) * | 2013-05-17 | 2015-09-29 | Analog Devices, Inc. | Parallel atomic increment |
US10229043B2 (en) | 2013-07-23 | 2019-03-12 | Intel Business Machines Corporation | Requesting memory spaces and resources using a memory controller |
US9262343B2 (en) * | 2014-03-26 | 2016-02-16 | International Business Machines Corporation | Transactional processing based upon run-time conditions |
US9256553B2 (en) * | 2014-03-26 | 2016-02-09 | International Business Machines Corporation | Transactional processing based upon run-time storage values |
CN104035888B (zh) * | 2014-06-11 | 2017-08-04 | 华为技术有限公司 | 一种缓存数据的方法及存储设备 |
US9710381B2 (en) | 2014-06-18 | 2017-07-18 | International Business Machines Corporation | Method and apparatus for cache memory data processing |
US9740614B2 (en) * | 2014-06-27 | 2017-08-22 | International Business Machines Corporation | Processor directly storing address range of co-processor memory accesses in a transactional memory where co-processor supplements functions of the processor |
US9619386B2 (en) | 2015-01-29 | 2017-04-11 | Kabushiki Kaisha Toshiba | Synchronization variable monitoring device, processor, and semiconductor apparatus |
US9513960B1 (en) | 2015-09-22 | 2016-12-06 | International Business Machines Corporation | Inducing transactional aborts in other processing threads |
US10261827B2 (en) | 2015-10-29 | 2019-04-16 | International Business Machines Corporation | Interprocessor memory status communication |
US9916179B2 (en) | 2015-10-29 | 2018-03-13 | International Business Machines Corporation | Interprocessor memory status communication |
US9563467B1 (en) | 2015-10-29 | 2017-02-07 | International Business Machines Corporation | Interprocessor memory status communication |
US9760397B2 (en) | 2015-10-29 | 2017-09-12 | International Business Machines Corporation | Interprocessor memory status communication |
US9772874B2 (en) * | 2016-01-29 | 2017-09-26 | International Business Machines Corporation | Prioritization of transactions based on execution by transactional core with super core indicator |
US20170300427A1 (en) * | 2016-04-18 | 2017-10-19 | Mediatek Inc. | Multi-processor system with cache sharing and associated cache sharing method |
RU2623806C1 (ru) | 2016-06-07 | 2017-06-29 | Акционерное общество Научно-производственный центр "Электронные вычислительно-информационные системы" (АО НПЦ "ЭЛВИС") | Способ и устройство обработки стереоизображений |
US10944694B2 (en) * | 2016-12-06 | 2021-03-09 | Hewlett Packard Enterprise Development Lp | Predictive arbitration circuit |
US10237198B2 (en) | 2016-12-06 | 2019-03-19 | Hewlett Packard Enterprise Development Lp | Shared-credit arbitration circuit |
US10721185B2 (en) | 2016-12-06 | 2020-07-21 | Hewlett Packard Enterprise Development Lp | Age-based arbitration circuit |
US10452573B2 (en) | 2016-12-06 | 2019-10-22 | Hewlett Packard Enterprise Development Lp | Scripted arbitration circuit |
US11157407B2 (en) | 2016-12-15 | 2021-10-26 | Optimum Semiconductor Technologies Inc. | Implementing atomic primitives using cache line locking |
US10223186B2 (en) * | 2017-02-01 | 2019-03-05 | International Business Machines Corporation | Coherency error detection and reporting in a processor |
US10776282B2 (en) | 2017-12-15 | 2020-09-15 | Advanced Micro Devices, Inc. | Home agent based cache transfer acceleration scheme |
US10693811B2 (en) | 2018-09-28 | 2020-06-23 | Hewlett Packard Enterprise Development Lp | Age class based arbitration |
US10796399B2 (en) | 2018-12-03 | 2020-10-06 | Advanced Micro Devices, Inc. | Pixel wait synchronization |
CN109933543B (zh) * | 2019-03-11 | 2022-03-18 | 珠海市杰理科技股份有限公司 | Cache的数据锁定方法、装置和计算机设备 |
CN110490581B (zh) * | 2019-07-18 | 2022-09-30 | 拉货宝网络科技有限责任公司 | 一种分布式系统临界数据资源更新方法及系统 |
US12093689B2 (en) * | 2020-09-25 | 2024-09-17 | Advanced Micro Devices, Inc. | Shared data fabric processing client reset system and method |
US11740973B2 (en) * | 2020-11-23 | 2023-08-29 | Cadence Design Systems, Inc. | Instruction error handling |
US11972117B2 (en) * | 2021-07-19 | 2024-04-30 | EMC IP Holding Company LLC | Selecting surviving storage node based on environmental conditions |
US11892972B2 (en) * | 2021-09-08 | 2024-02-06 | Arm Limited | Synchronization mechanisms for a multi-core processor using wait commands having either a blocking or a non-blocking state |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4574350A (en) | 1982-05-19 | 1986-03-04 | At&T Bell Laboratories | Shared resource locking apparatus |
US4725946A (en) | 1985-06-27 | 1988-02-16 | Honeywell Information Systems Inc. | P and V instructions for semaphore architecture in a multiprogramming/multiprocessing environment |
US5142676A (en) * | 1988-12-28 | 1992-08-25 | Gte Laboratories Incorporated | Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory |
CA2045791A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | Branch performance in high speed processor |
US5285528A (en) * | 1991-02-22 | 1994-02-08 | International Business Machines Corporation | Data structures and algorithms for managing lock states of addressable element ranges |
US5613139A (en) * | 1994-05-11 | 1997-03-18 | International Business Machines Corporation | Hardware implemented locking mechanism for handling both single and plural lock requests in a lock message |
JP4086259B2 (ja) * | 1995-08-04 | 2008-05-14 | 株式会社東芝 | 通信システム |
US5968157A (en) * | 1997-01-23 | 1999-10-19 | Sun Microsystems, Inc. | Locking of computer resources |
US6343338B1 (en) * | 1997-04-01 | 2002-01-29 | Microsoft Corporation | System and method for synchronizing disparate processing modes and for controlling access to shared resources |
US6219751B1 (en) * | 1998-04-28 | 2001-04-17 | International Business Machines Corporation | Device level coordination of access operations among multiple raid control units |
US6182186B1 (en) * | 1998-06-30 | 2001-01-30 | Sun Microsystems, Inc. | Method and apparatus that utilizes lock states to lock resources |
US6389519B1 (en) * | 1999-07-19 | 2002-05-14 | Ati International Srl | Method and apparatus for providing probe based bus locking and address locking |
US6651088B1 (en) * | 1999-07-20 | 2003-11-18 | Hewlett-Packard Development Company, L.P. | Method for reducing coherent misses in shared-memory multiprocessors utilizing lock-binding prefetchs |
KR100331565B1 (ko) * | 1999-12-17 | 2002-04-06 | 윤종용 | 매트릭스 연산 장치 및 매트릭스 연산기능을 갖는 디지털신호처리 장치 |
US6668308B2 (en) * | 2000-06-10 | 2003-12-23 | Hewlett-Packard Development Company, L.P. | Scalable architecture based on single-chip multiprocessing |
US6604162B1 (en) * | 2000-06-28 | 2003-08-05 | Intel Corporation | Snoop stall reduction on a microprocessor external bus |
US6678772B2 (en) * | 2000-12-19 | 2004-01-13 | International Businesss Machines Corporation | Adaptive reader-writer lock |
US6976158B2 (en) * | 2001-06-01 | 2005-12-13 | Microchip Technology Incorporated | Repeat instruction with interrupt |
US7325064B2 (en) * | 2001-07-17 | 2008-01-29 | International Business Machines Corporation | Distributed locking protocol with asynchronous token prefetch and relinquish |
US6868476B2 (en) * | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
US20060218556A1 (en) * | 2001-09-28 | 2006-09-28 | Nemirovsky Mario D | Mechanism for managing resource locking in a multi-threaded environment |
US7120762B2 (en) * | 2001-10-19 | 2006-10-10 | Wisconsin Alumni Research Foundation | Concurrent execution of critical sections by eliding ownership of locks |
US6986005B2 (en) * | 2001-12-31 | 2006-01-10 | Hewlett-Packard Development Company, L.P. | Low latency lock for multiprocessor computer system |
US7089371B2 (en) * | 2002-02-12 | 2006-08-08 | Ip-First, Llc | Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory |
US6721816B1 (en) * | 2002-02-27 | 2004-04-13 | Advanced Micro Devices, Inc. | Selecting independently of tag values a given command belonging to a second virtual channel and having a flag set among commands belonging to a posted virtual and the second virtual channels |
US7328316B2 (en) * | 2002-07-16 | 2008-02-05 | Sun Microsystems, Inc. | Software transactional memory for dynamically sizable shared data structures |
US7814488B1 (en) * | 2002-09-24 | 2010-10-12 | Oracle America, Inc. | Quickly reacquirable locks |
US20040068607A1 (en) * | 2002-10-07 | 2004-04-08 | Narad Charles E. | Locking memory locations |
US7117481B1 (en) * | 2002-11-06 | 2006-10-03 | Vmware, Inc. | Composite lock for computer systems with multiple domains |
US7162589B2 (en) * | 2002-12-16 | 2007-01-09 | Newisys, Inc. | Methods and apparatus for canceling a memory data fetch |
US7290105B1 (en) * | 2002-12-16 | 2007-10-30 | Cisco Technology, Inc. | Zero overhead resource locks with attributes |
US7080209B2 (en) * | 2002-12-24 | 2006-07-18 | Intel Corporation | Method and apparatus for processing a load-lock instruction using a relaxed lock protocol |
US7269717B2 (en) * | 2003-02-13 | 2007-09-11 | Sun Microsystems, Inc. | Method for reducing lock manipulation overhead during access to critical code sections |
US20040268046A1 (en) * | 2003-06-27 | 2004-12-30 | Spencer Andrew M | Nonvolatile buffered memory interface |
US20050120185A1 (en) * | 2003-12-01 | 2005-06-02 | Sony Computer Entertainment Inc. | Methods and apparatus for efficient multi-tasking |
US8332483B2 (en) * | 2003-12-15 | 2012-12-11 | International Business Machines Corporation | Apparatus, system, and method for autonomic control of grid system resources |
US7210019B2 (en) * | 2004-03-05 | 2007-04-24 | Intel Corporation | Exclusive access for logical blocks |
US20050283783A1 (en) * | 2004-06-22 | 2005-12-22 | Desota Donald R | Method for optimizing pipeline use in a multiprocessing system |
JP4287799B2 (ja) * | 2004-07-29 | 2009-07-01 | 富士通株式会社 | プロセッサシステムおよびスレッド切り替え制御方法 |
US7406625B2 (en) * | 2004-08-17 | 2008-07-29 | International Business Machines Corporation | Protecting a code range in a program from breakpoints |
US20060095685A1 (en) * | 2004-11-03 | 2006-05-04 | Bonola Thomas J | System and method to coordinate access to a sharable data structure using deferred cycles |
US7454570B2 (en) * | 2004-12-07 | 2008-11-18 | International Business Machines Corporation | Efficient memory update process for on-the-fly instruction translation for well behaved applications executing on a weakly-ordered processor |
US7797704B2 (en) * | 2005-03-30 | 2010-09-14 | Hewlett-Packard Development Company, L.P. | System and method for performing work by one of plural threads using a lockable resource |
US20070050561A1 (en) * | 2005-08-23 | 2007-03-01 | Advanced Micro Devices, Inc. | Method for creating critical section code using a software wrapper for proactive synchronization within a computer system |
-
2006
- 2006-08-23 US US11/508,494 patent/US20070050561A1/en not_active Abandoned
- 2006-08-23 US US11/508,491 patent/US7552290B2/en active Active
- 2006-08-23 DE DE112006002237.7T patent/DE112006002237B4/de active Active
- 2006-08-23 US US11/508,647 patent/US20070050563A1/en not_active Abandoned
- 2006-08-23 US US11/508,493 patent/US7627722B2/en active Active
- 2006-08-23 US US11/508,646 patent/US7636819B2/en active Active
- 2006-08-23 KR KR1020087007115A patent/KR101369441B1/ko active IP Right Grant
- 2006-08-23 US US11/508,492 patent/US7606985B2/en active Active
- 2006-08-23 CN CNA2006800395372A patent/CN101297270A/zh active Pending
- 2006-08-23 GB GB0802809A patent/GB2445294B/en active Active
- 2006-08-23 JP JP2008528175A patent/JP5103396B2/ja active Active
- 2006-08-23 WO PCT/US2006/033192 patent/WO2007025112A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
KR20080038435A (ko) | 2008-05-06 |
US7606985B2 (en) | 2009-10-20 |
US20070050561A1 (en) | 2007-03-01 |
KR101369441B1 (ko) | 2014-03-04 |
US20070050563A1 (en) | 2007-03-01 |
DE112006002237T5 (de) | 2008-06-19 |
US20070050562A1 (en) | 2007-03-01 |
JP2009506436A (ja) | 2009-02-12 |
US20070067529A1 (en) | 2007-03-22 |
WO2007025112A1 (en) | 2007-03-01 |
DE112006002237B4 (de) | 2023-04-06 |
GB2445294A (en) | 2008-07-02 |
US7627722B2 (en) | 2009-12-01 |
US20070050559A1 (en) | 2007-03-01 |
GB2445294B (en) | 2009-01-21 |
US7636819B2 (en) | 2009-12-22 |
US20070050560A1 (en) | 2007-03-01 |
US7552290B2 (en) | 2009-06-23 |
CN101297270A (zh) | 2008-10-29 |
GB0802809D0 (en) | 2008-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5103396B2 (ja) | コンピュータシステムにおいて能動的に同期をとる方法 | |
US10228943B2 (en) | Prefetching of discontiguous storage locations in anticipation of transactional execution | |
JP6490092B2 (ja) | トランザクション・ステータスを示すためのコヒーレンス・プロトコルの強化 | |
TWI476595B (zh) | 用於交易式記憶體事件處置之硬體中使用者處置器的登錄 | |
US20110208921A1 (en) | Inverted default semantics for in-speculative-region memory accesses | |
US20120124563A1 (en) | Compiler support technique for hardware transactional memory systems | |
US20150355907A1 (en) | Reliable transactional execution using digests | |
US9323568B2 (en) | Indicating a low priority transaction | |
US9720725B2 (en) | Prefetching of discontiguous storage locations as part of transactional execution | |
CN105683906B (zh) | 用于利用锁省略和锁定的选择进行数据共享的自适应处理 | |
US9280349B2 (en) | Decode time instruction optimization for load reserve and store conditional sequences | |
US10152418B2 (en) | Speculation control for improving transaction success rate, and instruction therefor | |
US11768771B2 (en) | Techniques for handling cache coherency traffic for contended semaphores | |
Hong et al. | Fence-Free Synchronization with Dynamically Serialized Synchronization Variables |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090813 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20100421 |
|
RD05 | Notification of revocation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7425 Effective date: 20100902 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120118 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20120417 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20120424 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20120518 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20120525 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120618 |
|
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: 20120905 |
|
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: 20121001 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151005 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5103396 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |