JP2011129104A - 適応的最適化された比較/交換オペレーション - Google Patents
適応的最適化された比較/交換オペレーション Download PDFInfo
- Publication number
- JP2011129104A JP2011129104A JP2010249856A JP2010249856A JP2011129104A JP 2011129104 A JP2011129104 A JP 2011129104A JP 2010249856 A JP2010249856 A JP 2010249856A JP 2010249856 A JP2010249856 A JP 2010249856A JP 2011129104 A JP2011129104 A JP 2011129104A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- cache line
- exchange
- compare
- line mark
- 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
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/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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【解決手段】処理論理は、実行パイプラインにおいてFASTCMPXCHGオペレーションを受信する(200)。次いで、FASTCMPXCHG命令に関連付けられたマイクロアーキテクチャヒントビットを含むキャッシュラインタグを探す(202)。ハードウェアがFASTCMPXCHGを処理する能力を有する場合には、先行するCLMARKが利用可能なタグが、各キャッシュラインについて提示される。ハードウェアがタグを持っていない場合は、CLMARK及びFASTCMPXCHGは、サポートされない。その場合には、コードのリストに載っているFASTCMPXCHG命令の代わりに、[mem]、testval、及びnewvalパラメータを使用して標準的なCMPXCHG命令を実行する(212)。
【選択図】図2
Description
1)[mem](memアドレスによって指定されたメモリ位置)に格納された値が、第1レジスタに読み込まれる(LOAD命令)(第1レジスタは、CMPXCHG内に組み込まれたLOADマイクロオペレーションのための実行論理によって利用される特定のレジスタを含む)。
2)第1レジスタ内の値が、eax/raxレジスタ(eaxかraxかは、オペランドのサイズによる)と比較される(COMPAREマイクロオペレーション)。
3)比較の結果、2つの値が等しい場合(すなわち、メモリ内の値が変わっていなかった場合)は、rdxレジスタ内の値が書き込まれる([mem]へのSTOREマイクロオペレーション)。
4)比較の結果、2つの値が異なる場合(すなわち、メモリ内の値が変わっていた場合)は、[mem]に格納されている現在の値が、eax/raxに読み込まれる。
mov rax, [mem] ;メモリのロケーション[mem]の値をraxに読み込む。
mov rdx, rax ;raxにおける値をrdxに読み込む。
**rdxを新たな値にする(可能性のある)操作を行うコードを挿入する**
lock cmpxchg [mem], rdx ;raxにおける値が依然としてメモリの[mem]ロケーションの値と等しい場合、rdxをメモリのロケーション[mem]に読み込む。
jnz try_again ;cmpxchgが成功した場合は、ZF = 1とし、失敗した場合はZF = 0として、ゼロ命令がもう一度トライを引き起こさない場合には、ジャンプする。
1)そのキャッシュラインにおいてFASTCMPXCHG命令の実行が成功した。
2)ヒントビットを持つキャッシュラインが、キャッシュから追い出しされた。
3)他のハードウェアコンテキストによって実行されたCLMARKが、そのキャッシュラインを対象としていた。
4)他のハードウェアコンテキストによってそのキャッシュラインが書き込まれた。
5)割り込みが起きた。
6)CLMARK発生から、FASTCMPXCHG命令の完了までの間に、ハードウェア故障が発生した。
clmark [mem] ;[mem]のキャッシュラインについてヒントビットを設定する。
mov rax, [mem] ;[mem]位置のメモリにおける値をraxに読み込む。
mov rdx, rax ;raxの値をrdxに読み込む。
inc rdx ;rdxを変更する
lock fastcmpxchg [mem], rdx ;[mem]のキャッシュラインのヒントビットについて、図2における処理ブロック202、204、206及び208が全て真である場合は、rdxが[mem]のメモリに格納される、真でない場合は、標準的cmpxchgが実行される。
jnz try_again ;fastcmpxchgが成功すれば、ZF = 1とする、成功しなかった場合にはZF = 0とし、ゼロでない命令がもう一度トライを引き起こさなければジャンプする。
Claims (25)
- 第1の命令を記憶する機械可読媒体であって、
前記第1の命令は、機械によって実行されると前記機械に、
ファスト・コンペア‐エクスチェンジのオペレーションを実行する段階と
前記ファスト・コンペア‐エクスチェンジのオペレーションの結果を格納する段階と
を備える方法を実行させる機械可読媒体。 - 前記実行される方法は、
前記ファスト・コンペア‐エクスチェンジのオペレーションを実行する段階の前に、キャッシュラインマークのオペレーションを実行する段階をさらに備える請求項1に記載の機械可読媒体。 - 前記実行される方法は、
前記ファスト・コンペア‐エクスチェンジのオペレーションが成功した場合に、前記ファスト・コンペア‐エクスチェンジのオペレーションの第1マイクロオペレーションで、前記結果の前記格納を実行する段階をさらに備える請求項2に記載の機械可読媒体。 - 前記実行される方法は、
前記ファスト・コンペア‐エクスチェンジのオペレーションが失敗した場合に、コンペア‐エクスチェンジオペレーションを実行する段階をさらに備える請求項2に記載の機械可読媒体。 - 前記キャッシュラインマークのオペレーションは、メモリアドレス位置パラメータを含む請求項2に記載の機械可読媒体。
- 前記キャッシュラインマークのオペレーションは、
前記メモリアドレス位置のメモリから読み出したキャッシュライン格納データのタグID構造に、有効ビットを設定する段階をさらに有する請求項5に記載の機械可読媒体。 - 前記キャッシュラインマークのオペレーションは、
前記タグID構造にビットマスクを設定する段階をさらに有し、
前記ビットマスクは、前記キャッシュラインのいずれのビットが、前記キャッシュラインマークのオペレーションと関連しているかを示す請求項6に記載の機械可読媒体。 - 前記キャッシュラインマークのオペレーションは、
前記タグID構造にハードウェアコンテキストID値を設定する段階をさらに有し、
前記ハードウェアコンテキストID値は、前記キャッシュラインマークのオペレーションを実行した特定のハードウェアコンテキストを示す請求項7に記載の機械可読媒体。 - 前記有効ビットが設定されたことが確認され、前記キャッシュラインマークのビットマスクとファスト・コンペア‐エクスチェンジのビットマスクとの間に前記ビットマスクが正しく設定されたことが確認され、且つ前記キャッシュラインマークのハードウェアIDコンテキストが、ファスト・コンペア‐エクスチェンジのハードウェアIDコンテキストと合致することが確認された場合に、
前記ファスト・コンペア‐エクスチェンジのオペレーションを実行する段階を備える請求項8に記載の機械可読媒体。 - 前記実行される方法は、
前記機械が前記キャッシュラインマークの命令をサポートしていないと確認された場合には、前記キャッシュラインマークの命令をノー・オペレーション命令で置き換える段階をさらに備える請求項2に記載の機械可読媒体。 - 前記実行される方法は、
1つのファスト・コンペア‐エクスチェンジのオペレーションの実行が成功し、前記キャッシュラインが追い出しされ、他のハードウェアコンテキストからのキャッシュラインマークのオペレーションが前記キャッシュラインについて行われ、ハードウェアコンテキストによって前記キャッシュラインに書き込みが行われ、割り込みが発生し、前記キャッシュラインマークのシーケンスの間にハードウェア障害が発生したときに、前記有効ビットを消去する段階をさらに含む請求項6に記載の機械可読媒体。 - ファスト・コンペア‐エクスチェンジの命令をデコードするデコード論理と、
前記ファスト・コンペア‐エクスチェンジの命令をデコードした後に、前記ファスト・コンペア‐エクスチェンジの命令を実行する実行論理と
を備えるプロセッサ。 - キャッシュラインマークの命令をデコードするデコード論理と
前記キャッシュラインマークの命令をデコードした後に前記キャッシュラインマークの命令を実行する実行論理とをさらに備える請求項12に記載のプロセッサ。 - 前記実行論理はさらに、前記ファスト・コンペア‐エクスチェンジのオペレーションの結果を格納する請求項13に記載のプロセッサ。
- 前記ファスト・コンペア‐エクスチェンジのオペレーションが成功した場合に、前記ファスト・コンペア‐エクスチェンジのオペレーションの一部として実行される第1のマイクロオペレーションとしてストア・マイクロオペレーションを使用して、前記結果が格納される請求項14に記載のプロセッサ。
- 前記実行論理はさらに、前記ファスト・コンペア‐エクスチェンジのオペレーションが失敗した場合に、前記ファスト・コンペア‐エクスチェンジの命令をコンペア‐エクスチェンジ命令として実行する請求項13に記載のプロセッサ。
- 前記プロセッサは、メモリアドレス位置を格納するレジスタを備える請求項13に記載のプロセッサ。
- 前記実行論理はさらに、前記メモリアドレス位置のメモリから読み出されたキャッシュライン格納データのタグID構造に、有効ビットを設定する請求項17に記載のプロセッサ。
- 前記実行論理はさらに、
前記タグID構造にビットマスクを設定し、
前記ビットマスクは、前記キャッシュラインのいずれのビットが、前記キャッシュラインマークのオペレーションと関連しているかを示す請求項18に記載のプロセッサ。 - 前記実行論理はさらに、
前記タグID構造にハードウェアコンテキストID値を設定し、
前記ハードウェアコンテキストID値は、前記キャッシュラインマークのオペレーションを実行した特定のハードウェアコンテキストを示す請求項19に記載のプロセッサ。 - 前記実行論理はさらに、
前記有効ビットが設定されたかを判断し、
前記キャッシュラインマークのビットマスクとファスト・コンペア‐エクスチェンジのビットマスクとの間に前記ビットマスクが正しく設定されたかを判断し、
前記キャッシュラインマークのハードウェアIDコンテキストが、ファスト・コンペア‐エクスチェンジのハードウェアIDコンテキストと合致するかを判断し、
全ての前記判断の結果が肯定的であった場合に、ファスト・コンペア‐エクスチェンジのオペレーションを実行する請求項20に記載のプロセッサ。 - 前記実行論理はさらに、
前記プロセッサが、前記キャッシュラインマークの命令をサポートしていないと確認された場合には、前記キャッシュラインマークの命令をノー・オペレーション命令で置き換える請求項13に記載のプロセッサ。 - キャッシュラインマークの命令を格納するメモリと、
前記キャッシュラインマークの命令及びファスト・コンペア‐エクスチェンジの命令を実行するプロセッサと、
前記ファスト・コンペア‐エクスチェンジの命令を実行するメモリと
を備え、
前記ファスト・コンペア‐エクスチェンジの命令が成功した場合に、前記ファスト・コンペア‐エクスチェンジの命令の実行により、結果が生成されるシステム。 - 前記ファスト・コンペア‐エクスチェンジのオペレーションが成功した場合に、前記ファスト・コンペア‐エクスチェンジのオペレーションの一部として実行される第1のマイクロオペレーションとしてストア・マイクロオペレーションを使用して、前記結果を格納する請求項23に記載のシステム。
- 前記ファスト・コンペア‐エクスチェンジの命令が失敗した場合に、前記ファスト・コンペア‐エクスチェンジの命令をコンペア‐エクスチェンジ命令として実行する請求項23に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/653,800 US8601242B2 (en) | 2009-12-18 | 2009-12-18 | Adaptive optimized compare-exchange operation |
US12/653,800 | 2009-12-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011129104A true JP2011129104A (ja) | 2011-06-30 |
JP5451579B2 JP5451579B2 (ja) | 2014-03-26 |
Family
ID=44152793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010249856A Expired - Fee Related JP5451579B2 (ja) | 2009-12-18 | 2010-11-08 | 適応的最適化された比較/交換オペレーション |
Country Status (5)
Country | Link |
---|---|
US (1) | US8601242B2 (ja) |
JP (1) | JP5451579B2 (ja) |
CN (2) | CN104657109B (ja) |
DE (1) | DE102010053095A1 (ja) |
TW (1) | TWI608412B (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8447934B2 (en) * | 2010-06-30 | 2013-05-21 | Advanced Micro Devices, Inc. | Reducing cache probe traffic resulting from false data sharing |
US8832505B2 (en) | 2012-06-29 | 2014-09-09 | Intel Corporation | Methods and apparatus to provide failure detection |
US9256466B2 (en) | 2013-06-07 | 2016-02-09 | Arm Limited | Data processing systems |
US9092345B2 (en) * | 2013-08-08 | 2015-07-28 | Arm Limited | Data processing systems |
US10380593B2 (en) | 2014-11-10 | 2019-08-13 | Mastercard International Incorporated | Systems and methods for detecting compromised automated teller machines |
CN105988774A (zh) * | 2015-02-20 | 2016-10-05 | 上海芯豪微电子有限公司 | 一种多发射处理器系统和方法 |
US10223002B2 (en) * | 2017-02-08 | 2019-03-05 | Arm Limited | Compare-and-swap transaction |
CN110515656B (zh) * | 2019-08-28 | 2021-07-16 | 中国人民解放军国防科技大学 | 一种casp指令的执行方法、微处理器及计算机设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06222936A (ja) * | 1992-12-18 | 1994-08-12 | Internatl Business Mach Corp <Ibm> | 共用変数の値を更新する方法 |
JP2006146920A (ja) * | 2004-11-17 | 2006-06-08 | Sun Microsyst Inc | メモリエラーを分類するための方法および装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5889983A (en) * | 1997-01-21 | 1999-03-30 | Intel Corporation | Compare and exchange operation in a processing system |
US6128706A (en) * | 1998-02-03 | 2000-10-03 | Institute For The Development Of Emerging Architectures, L.L.C. | Apparatus and method for a load bias--load with intent to semaphore |
US6671792B1 (en) * | 2000-04-28 | 2003-12-30 | Hewlett-Packard Development Company, L.P. | Share masks and alias for directory coherency |
DE60315918T2 (de) * | 2002-05-15 | 2008-04-24 | Broadcom Corp., Irvine | Load-linked/store conditional Mechanismus in einem cc-numa (cache-coherent nonuniform memory access) System |
US7266587B2 (en) * | 2002-05-15 | 2007-09-04 | Broadcom Corporation | System having interfaces, switch, and memory bridge for CC-NUMA operation |
US8607241B2 (en) * | 2004-06-30 | 2013-12-10 | Intel Corporation | Compare and exchange operation using sleep-wakeup mechanism |
US7917698B2 (en) * | 2007-10-26 | 2011-03-29 | Oracle America, Inc. | Method and apparatus for tracking load-marks and store-marks on cache lines |
-
2009
- 2009-12-18 US US12/653,800 patent/US8601242B2/en active Active
-
2010
- 2010-11-08 JP JP2010249856A patent/JP5451579B2/ja not_active Expired - Fee Related
- 2010-11-09 TW TW099138480A patent/TWI608412B/zh not_active IP Right Cessation
- 2010-12-01 DE DE102010053095A patent/DE102010053095A1/de not_active Ceased
- 2010-12-17 CN CN201410815077.4A patent/CN104657109B/zh active Active
- 2010-12-17 CN CN201010599713.6A patent/CN102103482B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06222936A (ja) * | 1992-12-18 | 1994-08-12 | Internatl Business Mach Corp <Ibm> | 共用変数の値を更新する方法 |
JP2006146920A (ja) * | 2004-11-17 | 2006-06-08 | Sun Microsyst Inc | メモリエラーを分類するための方法および装置 |
Also Published As
Publication number | Publication date |
---|---|
DE102010053095A1 (de) | 2011-06-30 |
TWI608412B (zh) | 2017-12-11 |
US20110154000A1 (en) | 2011-06-23 |
CN102103482B (zh) | 2015-01-28 |
TW201131472A (en) | 2011-09-16 |
CN102103482A (zh) | 2011-06-22 |
US8601242B2 (en) | 2013-12-03 |
JP5451579B2 (ja) | 2014-03-26 |
CN104657109A (zh) | 2015-05-27 |
CN104657109B (zh) | 2017-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5451579B2 (ja) | 適応的最適化された比較/交換オペレーション | |
JP6507435B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
KR101025354B1 (ko) | 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법 | |
US7552290B2 (en) | Method for maintaining atomicity of instruction sequence to access a number of cache lines during proactive synchronization within a computer system | |
JP5118652B2 (ja) | アウトオブオーダープロセッサにおけるトランザクショナルメモリ | |
KR101461378B1 (ko) | 동기화 simd 벡터 | |
JP5984865B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
TWI483180B (zh) | 重疊原子區域執行的方法 | |
US9280349B2 (en) | Decode time instruction optimization for load reserve and store conditional sequences | |
WO2014105030A1 (en) | Handling of binary translated self modifying code and cross modifying code | |
TW201741867A (zh) | 記憶體複製指令、處理器、方法及系統 | |
JP7096840B2 (ja) | 能力メタデータを管理するための装置及び方法 | |
TW201732566A (zh) | 從亂序處理器中的不良儲存-至-負載轉發復原的方法與設備 | |
JP2006221606A (ja) | データプロセッサ | |
CN115934433A (zh) | 用于处理器的自主功能测试的系统、装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120912 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120925 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20121225 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20121228 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130124 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130129 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130222 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130227 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130325 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130604 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130903 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130906 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131004 |
|
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: 20131105 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20131204 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20131210 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131226 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5451579 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 |
|
LAPS | Cancellation because of no payment of annual fees |