JP5451579B2 - 適応的最適化された比較/交換オペレーション - Google Patents
適応的最適化された比較/交換オペレーション Download PDFInfo
- Publication number
- JP5451579B2 JP5451579B2 JP2010249856A JP2010249856A JP5451579B2 JP 5451579 B2 JP5451579 B2 JP 5451579B2 JP 2010249856 A JP2010249856 A JP 2010249856A JP 2010249856 A JP2010249856 A JP 2010249856A JP 5451579 B2 JP5451579 B2 JP 5451579B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- cache line
- compare
- exchange
- bit
- 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.)
- Expired - Fee Related
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)
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 (22)
- コンピュータに、
キャッシュラインにヒントビットをタグ付けするキャッシュラインマーク命令を実行する段階と、
前記ヒントビットを確認した結果に基づいて、コンペア‐エクスチェンジ・オペレーション、または、ファスト・コンペア‐エクスチェンジ・オペレーションとして結果を格納するストア・オペレーションを実行するファスト・コンペア‐エクスチェンジ命令を実行する段階と、
を備える方法を実行させるためのプログラム。 - 前記ファスト・コンペア‐エクスチェンジ命令を実行する段階は、
前記ヒントビットを確認した結果、ファスト・コンペア‐エクスチェンジ・オペレーションが実行可能と判断した場合に、前記ファスト・コンペア‐エクスチェンジ命令の第1マイクロオペレーションで、前記結果の前記格納を実行する請求項1に記載のプログラム。 - 前記ファスト・コンペア‐エクスチェンジ命令を実行する段階は、
前記ヒントビットを確認した結果、ファスト・コンペア‐エクスチェンジ・オペレーションが実行可能でないと判断した場合に、コンペア‐エクスチェンジ・オペレーションを実行する請求項1または2に記載のプログラム。 - 前記キャッシュラインマーク命令は、メモリアドレス位置パラメータを含む請求項1から3のいずれか一項に記載のプログラム。
- 前記キャッシュラインマーク命令を実行する段階は、
前記メモリアドレス位置のメモリから読み出したキャッシュライン格納データのタグID構造に、前記ヒントビットおよび有効ビットを設定する請求項4に記載のプログラム。 - 前記キャッシュラインマーク命令を実行する段階は、
前記タグID構造にビットマスクを更に設定し、
前記ビットマスクは、前記キャッシュラインのいずれのビットが、前記キャッシュラインマーク命令と関連しているかを示す請求項5に記載のプログラム。 - 前記キャッシュラインマーク命令を実行する段階は、
前記タグID構造にハードウェアコンテキストID値を前記ヒントビットとして設定し、
前記ハードウェアコンテキストID値は、前記キャッシュラインマーク命令を実行した特定のハードウェアコンテキストを示す請求項6に記載のプログラム。 - 前記ファスト・コンペア‐エクスチェンジ命令を実行する段階は、
前記有効ビットが設定されたことが確認され、前記キャッシュラインマーク命令のビットマスクと前記ファスト・コンペア‐エクスチェンジ命令のビットマスクとの間に前記ビットマスクが正しく設定されたことが確認され、且つ前記キャッシュラインマーク命令のハードウェアIDコンテキストが、前記ファスト・コンペア‐エクスチェンジ命令のハードウェアIDコンテキストと合致することが確認された場合に、
ファスト・コンペア‐エクスチェンジ・オペレーションを実行する請求項7に記載のプログラム。 - 前記実行される方法は、
前記コンピュータが前記キャッシュラインマーク命令をサポートしていないと確認された場合には、前記キャッシュラインマーク命令をノー・オペレーション命令で置き換える段階をさらに備える請求項1から8のいずれか一項に記載のプログラム。 - 前記実行される方法は、
ファスト・コンペア‐エクスチェンジ命令の実行が成功したとき、前記キャッシュラインが追い出しされたとき、他のハードウェアコンテキストからのキャッシュラインマーク命令が前記キャッシュラインについて行われたとき、ハードウェアコンテキストによって前記キャッシュラインに書き込みが行われたとき、割り込みが発生したとき、および、前記キャッシュラインマーク命令のシーケンスの間にハードウェア障害が発生したときの少なくとも1つにおいて、前記有効ビットを消去する段階をさらに含む請求項5から8のいずれか一項に記載のプログラム。 - キャッシュラインにヒントビットをタグ付けするキャッシュラインマーク命令、および、前記ヒントビットを確認した結果に基づいて、コンペア‐エクスチェンジ・オペレーション、または、ファスト・コンペア‐エクスチェンジ・オペレーションとして結果を格納するストア・オペレーションを実行するファスト・コンペア‐エクスチェンジ命令をデコードするデコード論理と、
前記キャッシュラインマーク命令および前記ファスト・コンペア‐エクスチェンジ命令を実行する実行論理と
を備えるプロセッサ。 - 前記実行論理は、前記ヒントビットを確認した結果、ファスト・コンペア‐エクスチェンジ・オペレーションが実行可能と判断した場合に、前記ファスト・コンペア‐エクスチェンジ命令の第1のマイクロオペレーションとしてストア・マイクロオペレーションを使用して、前記結果を格納する請求項11に記載のプロセッサ。
- 前記実行論理は、前記ヒントビットを確認した結果、ファスト・コンペア‐エクスチェンジ・オペレーションが実行可能でないと判断した場合に、前記ファスト・コンペア‐エクスチェンジ命令をコンペア‐エクスチェンジ命令として実行する請求項11または12に記載のプロセッサ。
- 前記プロセッサは、メモリアドレス位置を格納するレジスタを備える請求項11から13のいずれか一項に記載のプロセッサ。
- 前記実行論理は、前記キャッシュラインマーク命令の実行において、前記メモリアドレス位置のメモリから読み出されたキャッシュライン格納データのタグID構造に、前記ヒントビットおよび有効ビットを設定する請求項14に記載のプロセッサ。
- 前記実行論理は、前記キャッシュラインマーク命令の実行において、
前記タグID構造にビットマスクを更に設定し、
前記ビットマスクは、前記キャッシュラインのいずれのビットが、前記キャッシュラインマーク命令と関連しているかを示す請求項15に記載のプロセッサ。 - 前記実行論理は、前記キャッシュラインマーク命令の実行において、
前記タグID構造にハードウェアコンテキストID値を前記ヒントビットとして設定し、
前記ハードウェアコンテキストID値は、前記キャッシュラインマーク命令を実行した特定のハードウェアコンテキストを示す請求項16に記載のプロセッサ。 - 前記実行論理は、前記ファスト・コンペア‐エクスチェンジ命令の実行において、
前記有効ビットが設定されたかを判断し、
前記キャッシュラインマーク命令のビットマスクと前記ファスト・コンペア‐エクスチェンジ命令のビットマスクとの間に前記ビットマスクが正しく設定されたかを判断し、
前記キャッシュラインマーク命令のハードウェアIDコンテキストが、前記ファスト・コンペア‐エクスチェンジ命令のハードウェアIDコンテキストと合致するかを判断し、
全ての前記判断の結果が肯定的であった場合に、ファスト・コンペア‐エクスチェンジ・オペレーションを実行する請求項17に記載のプロセッサ。 - 前記実行論理は、前記キャッシュラインマーク命令の実行において、
前記プロセッサが、前記キャッシュラインマーク命令をサポートしていないと確認された場合には、前記キャッシュラインマーク命令をノー・オペレーション命令で置き換える請求項11から18のいずれか一項に記載のプロセッサ。 - キャッシュラインにヒントビットをタグ付けするキャッシュラインマーク命令、および、前記ヒントビットを確認した結果に基づいて、コンペア‐エクスチェンジ・オペレーション、または、ファスト・コンペア‐エクスチェンジ・オペレーションとして結果を格納するストア・オペレーションを実行するファスト・コンペア‐エクスチェンジ命令を格納するメモリと、
前記キャッシュラインマーク命令、及び、前記ファスト・コンペア‐エクスチェンジ命令を実行するプロセッサと、
を備え、
前記ヒントビットを確認した結果、ファスト・コンペア‐エクスチェンジ・オペレーションが実行可能と判断した場合に、前記ファスト・コンペア‐エクスチェンジ・オペレーションの実行により、結果が生成されるシステム。 - 前記ヒントビットを確認した結果、ファスト・コンペア‐エクスチェンジ・オペレーションが実行可能と判断した場合に、前記ファスト・コンペア‐エクスチェンジ命令の第1のマイクロオペレーションとしてストア・マイクロオペレーションを使用して、前記結果を格納する請求項20に記載のシステム。
- 前記ヒントビットを確認した結果、ファスト・コンペア‐エクスチェンジ・オペレーションが実行可能でないと判断した場合に、前記ファスト・コンペア‐エクスチェンジ命令をコンペア‐エクスチェンジ命令として実行する請求項20または21に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/653,800 | 2009-12-18 | ||
US12/653,800 US8601242B2 (en) | 2009-12-18 | 2009-12-18 | Adaptive optimized compare-exchange operation |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011129104A JP2011129104A (ja) | 2011-06-30 |
JP5451579B2 true 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) | CN102103482B (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指令的执行方法、微处理器及计算机设备 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2500101B2 (ja) | 1992-12-18 | 1996-05-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 共用変数の値を更新する方法 |
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 |
US7596738B2 (en) * | 2004-11-17 | 2009-09-29 | Sun Microsystems, Inc. | Method and apparatus for classifying memory errors |
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 CN201010599713.6A patent/CN102103482B/zh active Active
- 2010-12-17 CN CN201410815077.4A patent/CN104657109B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
JP2011129104A (ja) | 2011-06-30 |
DE102010053095A1 (de) | 2011-06-30 |
CN102103482B (zh) | 2015-01-28 |
US8601242B2 (en) | 2013-12-03 |
TWI608412B (zh) | 2017-12-11 |
CN102103482A (zh) | 2011-06-22 |
US20110154000A1 (en) | 2011-06-23 |
CN104657109B (zh) | 2017-09-15 |
CN104657109A (zh) | 2015-05-27 |
TW201131472A (en) | 2011-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5451579B2 (ja) | 適応的最適化された比較/交換オペレーション | |
JP6507435B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
US7552290B2 (en) | Method for maintaining atomicity of instruction sequence to access a number of cache lines during proactive synchronization within a computer system | |
US20180011748A1 (en) | Post-retire scheme for tracking tentative accesses during transactional execution | |
JP5118652B2 (ja) | アウトオブオーダープロセッサにおけるトランザクショナルメモリ | |
JP4388916B2 (ja) | 複数の順序ベクトルで複数のメモリ順序モデルを実施する方法及び装置 | |
KR101025354B1 (ko) | 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법 | |
US8190859B2 (en) | Critical section detection and prediction mechanism for hardware lock elision | |
TWI483180B (zh) | 重疊原子區域執行的方法 | |
BRPI1005259A2 (pt) | vetores simd sincronizadores | |
US9280349B2 (en) | Decode time instruction optimization for load reserve and store conditional sequences | |
US11119925B2 (en) | Apparatus and method for managing capability metadata | |
JP2015158936A (ja) | データ処理装置 |
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 |