JP2018538628A5 - - Google Patents
Download PDFInfo
- Publication number
- JP2018538628A5 JP2018538628A5 JP2018531614A JP2018531614A JP2018538628A5 JP 2018538628 A5 JP2018538628 A5 JP 2018538628A5 JP 2018531614 A JP2018531614 A JP 2018531614A JP 2018531614 A JP2018531614 A JP 2018531614A JP 2018538628 A5 JP2018538628 A5 JP 2018538628A5
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- replay
- state
- block
- recording
- 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
- 238000001514 detection method Methods 0.000 claims 9
- 230000004048 modification Effects 0.000 claims 7
- 238000006011 modification reaction Methods 0.000 claims 7
- 231100000486 side effect Toxicity 0.000 claims 6
- 230000000875 corresponding Effects 0.000 claims 3
- 230000003993 interaction Effects 0.000 claims 3
- 238000000034 method Methods 0.000 claims 3
- 230000003068 static Effects 0.000 claims 3
- 230000001276 controlling effect Effects 0.000 claims 1
Claims (15)
- 命令ブロック中のすべての命令がコミットされるか、または命令のどれもコミットされない命令ブロックに命令がグループ化されるブロックアトミック実行モデルを利用するプロセッサにおいて実行された命令ブロックの実行リプレイを制御するための部分的リプレイコントローラであって、
前記プロセッサによる前記命令ブロックの実行中に、起こり得るアーキテクチャ状態修正に関連付けられた命令の検出または前記プロセッサにおける例外の発生に応答して、命令ブロックに関して記録/リプレイ状態をアクティブ状態に設定するように構成された検出回路であって、命令は、前記プロセッサにおいてアーキテクチャ状態を修正する場合、起こり得るアーキテクチャ状態修正に関連付けられ、前記命令ブロックの外の機能またはプロセスとの観察可能な対話をもつ、検出回路と、
前記命令ブロックに関する前記記録/リプレイ状態がアクティブ状態であることに応答して、前記プロセッサによる前記命令ブロックの再実行中に、
以前生成されたデータが次のロード/記憶命令に関して記録されているかどうかを判断するために、前記命令ブロック中で実行されるべき前記次のロード/記憶命令に対応する記録/リプレイログファイル中のエントリ状態を検査し、
前記以前生成されたデータが、前記次のロード/記憶命令に関して前記記録/リプレイログファイルに記録されていないことに応答して、前記実行された次のロード/記憶命令の生成データを前記記録/リプレイログファイルに記録し、
前記以前生成されたデータが、前記次のロード/記憶命令に関して前記記録/リプレイログファイルに記録されていることに応答して、前記次のロード/記憶命令に関して前記記録/リプレイログファイルに記録されている、前記以前生成されたデータを使って、前記次のロード/記憶命令を実行する
ように構成された記録/リプレイ回路と
を備える部分的リプレイコントローラ。 - 前記検出回路は、
前記プロセッサによる前記命令ブロックの前記実行中に、起こり得る副作用を有するロード/記憶命令を含む、前記命令ブロック中の前記命令を検出し、
前記起こり得る副作用を有する前記ロード/記憶命令を含む前記命令の検出に応答して、前記命令ブロックに関して前記記録/リプレイ状態を前記アクティブ状態に設定するように構成された副作用検出回路を備える、請求項1に記載の部分的リプレイコントローラ。 - 前記検出回路は、
前記プロセッサによる前記命令ブロックの前記実行中に、書込みシステム構成レジスタ命令を含む、前記命令ブロック中の前記命令を検出し、
前記書込みシステム構成レジスタ命令を含む前記命令の検出に応答して、前記命令ブロックに関して、前記記録/リプレイ状態を前記アクティブ状態に設定するように構成された副作用検出回路を備える、請求項1に記載の部分的リプレイコントローラ。 - 前記検出回路は、
前記プロセッサによる前記命令ブロックの前記実行中に、予想される例外を有する命令を含む、前記命令ブロック中の前記命令を検出し、
前記予想される例外を有する前記命令を含む前記命令の検出に応答して、前記命令ブロックに関して前記記録/リプレイ状態を前記アクティブ状態に設定するように構成された副作用検出回路を備え、
前記予想される例外を有する前記命令は、ウォッチポイント、ブレイクポイント、デバッグステップポイント、または静的ブロック例外を引き起こす動作に関連付けられた命令を含む、請求項1に記載の部分的リプレイコントローラ。 - 前記予想される例外を有する前記命令は、静的ブロック例外を引き起こす動作に関連付けられた命令を含み、前記静的ブロック例外は、命令ページ障害、無効ブロックヘッダ、および無効命令符号化からなるグループから構成される、請求項4に記載の部分的リプレイコントローラ。
- 前記命令ブロック中のすべての命令が実行されたかどうかを判断し、
前記命令ブロック中の前記命令すべてが実行されたと判断したことに応答して、前記命令ブロック中の前記実行された命令による外部生成値をコミットするようにさらに構成された、請求項1に記載の部分的リプレイコントローラ。 - 前記記録/リプレイ回路は、前記実行された次のロード/記憶命令の前記生成データについての前記記録/リプレイ状態を前記記録/リプレイログファイルに記録するようにさらに構成される、請求項1に記載の部分的リプレイコントローラ。
- 前記記録/リプレイ回路は、前記実行された次のロード/記憶命令によってアドレス指定された仮想アドレスを、前記実行された次のロード/記憶命令の前記生成データと関連付けて、前記記録/リプレイログファイルに記録するようにさらに構成される、請求項1に記載の部分的リプレイコントローラ。
- 前記命令ブロックに関する前記記録/リプレイ状態がアイドル実行状態であることに応答して、前記検出回路は、前記プロセッサによる前記命令ブロックの実行中に、前記起こり得るアーキテクチャ状態修正に関連付けられた前記命令ブロック中の前記命令を検出するように構成される、請求項1に記載の部分的リプレイコントローラ。
- 前記記録/リプレイ状態が前記アイドル実行状態であるときに前記命令ブロックの前記実行中に例外が発生したことに応答して、前記命令ブロックを再実行させるように構成された、請求項9に記載の部分的リプレイコントローラ。
- 前記記録/リプレイ状態が前記アクティブ状態であるときに前記命令ブロックの実行中に例外が発生したことに応答して、前記記録/リプレイ回路は、
前記命令ブロックに関する前記記録/リプレイ状態をロック状態に設定し、
前記記録/リプレイログファイルへの前記実行された次のロード/記憶命令の前記生成データの記録を中断し、前記次のロード/記憶命令について記録されている前記以前生成されたデータを使って前記次のロード/記憶命令を実行するのを中断するようにさらに構成される、請求項1に記載の部分的リプレイコントローラ。 - 前記命令ブロックについての前記記録/リプレイ状態が以前のロック状態からアクティブ状態に戻ったことに応答して、前記記録/リプレイ回路は、前記実行された次のロード/記憶命令の前記生成データを前記記録/リプレイログファイルに記録し、前記次のロード/記憶命令に関して記録されている、前記以前生成されたデータを使って前記次のロード/記憶命令を実行するのを再開するようにさらに構成される、請求項11に記載の部分的リプレイコントローラ。
- 前記記録/リプレイ状態が前記アクティブ状態にあるときの前記命令ブロックの前記実行中の前記例外の前記発生に応答して、前記記録/リプレイ回路は、前記例外の前記発生に先立って、前記命令ブロック中の実行された命令による外部生成値をコミットするようにさらに構成される、請求項12に記載の部分的リプレイコントローラ。
- 命令ブロック中のすべての命令がコミットされるか、または命令のどれもコミットされない命令ブロックに命令がグループ化されるブロックアトミック実行モデルを利用するプロセッサにおいて命令ブロックをリプレイする方法であって、
前記プロセッサによる前記命令ブロックの実行中に、起こり得るアーキテクチャ状態修正に関連付けられた命令の検出または前記プロセッサにおける例外の発生に応答して、命令ブロックに関して記録/リプレイ状態をアクティブ状態に設定するステップであって、命令は、前記プロセッサにおいてアーキテクチャ状態を修正する場合、起こり得るアーキテクチャ状態修正に関連付けられ、前記命令ブロックの外の機能またはプロセスとの観察可能な対話をもつ、ステップと、
前記命令ブロックに関する前記記録/リプレイ状態がアクティブ状態であることに応答して、前記プロセッサによる前記命令ブロックの再実行中に、
以前生成されたデータが次のロード/記憶命令に関して記録されているかどうかを判断するために、前記命令ブロック中で実行されるべき前記次のロード/記憶命令に対応する記録/リプレイログファイル中のエントリ状態を検査するステップと、
前記以前生成されたデータが、前記次のロード/記憶命令に関して前記記録/リプレイログファイルに記録されていないことに応答して、前記実行された次のロード/記憶命令の生成データを前記記録/リプレイログファイルに記録するステップと、
前記以前生成されたデータが、前記次のロード/記憶命令に関して前記記録/リプレイログファイルに記録されていることに応答して、前記次のロード/記憶命令に関して前記記録/リプレイログファイルに記録されている、前記以前生成されたデータを使って、前記次のロード/記憶命令を実行するステップと
を含む方法。 - コンピュータ実行可能命令を記憶したコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、命令ブロック中のすべての命令がコミットされるか、または命令のどれもコミットされない命令ブロックに命令がグループ化されるブロックアトミック実行モデルを利用するプロセッサによって実行されると、前記プロセッサに、
前記プロセッサによる前記命令ブロックの実行中に、起こり得るアーキテクチャ状態修正に関連付けられた命令の検出または前記プロセッサにおける例外の発生に応答して、命令ブロックに関して記録/リプレイ状態をアクティブ状態に設定することであって、命令は、前記プロセッサにおいてアーキテクチャ状態を修正する場合、起こり得るアーキテクチャ状態修正に関連付けられ、前記命令ブロックの外の機能またはプロセスとの観察可能な対話をもつ、ことと、
前記命令ブロックに関する前記記録/リプレイ状態がアクティブ状態であることに応答して、前記プロセッサによる前記命令ブロックの再実行中に、
以前生成されたデータが次のロード/記憶命令に関して記録されているかどうかを判断するために、前記命令ブロック中で実行されるべき前記次のロード/記憶命令に対応する記録/リプレイログファイル中のエントリ状態を検査することと、
前記以前生成されたデータが、前記次のロード/記憶命令に関して前記記録/リプレイログファイルに記録されていないことに応答して、前記実行された次のロード/記憶命令の生成データを前記記録/リプレイログファイルに記録することと、
前記以前生成されたデータが、前記次のロード/記憶命令に関して前記記録/リプレイログファイルに記録されていることに応答して、前記次のロード/記憶命令に関して前記記録/リプレイログファイルに記録されている、前記以前生成されたデータを使って、前記次のロード/記憶命令を実行することと
を行わせる、コンピュータ可読記憶媒体。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562271475P | 2015-12-28 | 2015-12-28 | |
US62/271,475 | 2015-12-28 | ||
US15/252,323 | 2016-08-31 | ||
US15/252,323 US11188336B2 (en) | 2015-12-28 | 2016-08-31 | Replay of partially executed instruction blocks in a processor-based system employing a block-atomic execution model |
PCT/US2016/065740 WO2017116652A1 (en) | 2015-12-28 | 2016-12-09 | Replay of partially executed instruction blocks in a processor-based system employing a block-atomic execution model |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2018538628A JP2018538628A (ja) | 2018-12-27 |
JP2018538628A5 true JP2018538628A5 (ja) | 2020-01-09 |
JP6963552B2 JP6963552B2 (ja) | 2021-11-10 |
Family
ID=59086553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018531614A Active JP6963552B2 (ja) | 2015-12-28 | 2016-12-09 | ブロックアトミック実行モデルを利用するプロセッサベースシステムにおける部分的に実行された命令ブロックのリプレイ |
Country Status (9)
Country | Link |
---|---|
US (1) | US11188336B2 (ja) |
EP (1) | EP3398060B1 (ja) |
JP (1) | JP6963552B2 (ja) |
KR (1) | KR20180099680A (ja) |
CN (1) | CN108369519B (ja) |
AU (1) | AU2016380796B2 (ja) |
BR (1) | BR112018012686A2 (ja) |
ES (1) | ES2824474T3 (ja) |
WO (1) | WO2017116652A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452516B2 (en) * | 2017-07-10 | 2019-10-22 | Microsoft Technology Licensing, Llc | Replaying time-travel traces relying on processor undefined behavior |
US10824429B2 (en) * | 2018-09-19 | 2020-11-03 | Microsoft Technology Licensing, Llc | Commit logic and precise exceptions in explicit dataflow graph execution architectures |
US10983801B2 (en) * | 2019-09-06 | 2021-04-20 | Apple Inc. | Load/store ordering violation management |
US11360773B2 (en) * | 2020-06-22 | 2022-06-14 | Microsoft Technology Licensing, Llc | Reusing fetched, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-fetching |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5832202A (en) | 1988-12-28 | 1998-11-03 | U.S. Philips Corporation | Exception recovery in a data processing system |
WO1996025705A1 (en) | 1995-02-14 | 1996-08-22 | Fujitsu Limited | Structure and method for high-performance speculative execution processor providing special features |
US6832367B1 (en) | 2000-03-06 | 2004-12-14 | International Business Machines Corporation | Method and system for recording and replaying the execution of distributed java programs |
FR2882449A1 (fr) * | 2005-01-21 | 2006-08-25 | Meiosys Soc Par Actions Simpli | Procede non intrusif de rejeu d'evenements internes au sein d'un processus applicatif, et systeme mettant en oeuvre ce procede |
US7882339B2 (en) | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
US7506318B1 (en) | 2005-06-28 | 2009-03-17 | Replay Solutions, Inc. | Recording and replaying computer programs |
US7958497B1 (en) | 2006-06-07 | 2011-06-07 | Replay Solutions, Inc. | State synchronization in recording and replaying computer programs |
US8079019B2 (en) | 2007-11-21 | 2011-12-13 | Replay Solutions, Inc. | Advancing and rewinding a replayed program execution |
US8316352B2 (en) | 2006-06-09 | 2012-11-20 | Oracle America, Inc. | Watchpoints on transactional variables |
US8190859B2 (en) * | 2006-11-13 | 2012-05-29 | Intel Corporation | Critical section detection and prediction mechanism for hardware lock elision |
US8473919B2 (en) | 2008-01-31 | 2013-06-25 | Ca, Inc. | System and method for repeating program flow for debugging and testing |
JP5385545B2 (ja) * | 2008-04-17 | 2014-01-08 | インターナショナル・ビジネス・マシーンズ・コーポレーション | トランザクションの実行を制御する装置及び方法 |
US8291202B2 (en) * | 2008-08-08 | 2012-10-16 | Qualcomm Incorporated | Apparatus and methods for speculative interrupt vector prefetching |
WO2010043401A2 (en) | 2008-10-15 | 2010-04-22 | Martin Vorbach | Data processing device |
US8402318B2 (en) | 2009-03-24 | 2013-03-19 | The Trustees Of Columbia University In The City Of New York | Systems and methods for recording and replaying application execution |
US8549504B2 (en) | 2010-09-25 | 2013-10-01 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
US20130080738A1 (en) | 2011-09-23 | 2013-03-28 | Qualcomm Incorporated | Processor configured to perform transactional memory operations |
US9170915B1 (en) | 2011-12-06 | 2015-10-27 | Amazon Technologies, Inc. | Replay to reconstruct program state |
US9697040B2 (en) | 2014-03-26 | 2017-07-04 | Intel Corporation | Software replayer for transactional memory programs |
-
2016
- 2016-08-31 US US15/252,323 patent/US11188336B2/en active Active
- 2016-12-09 AU AU2016380796A patent/AU2016380796B2/en active Active
- 2016-12-09 JP JP2018531614A patent/JP6963552B2/ja active Active
- 2016-12-09 CN CN201680072709.XA patent/CN108369519B/zh active Active
- 2016-12-09 EP EP16820447.7A patent/EP3398060B1/en active Active
- 2016-12-09 KR KR1020187017864A patent/KR20180099680A/ko not_active Application Discontinuation
- 2016-12-09 WO PCT/US2016/065740 patent/WO2017116652A1/en active Search and Examination
- 2016-12-09 BR BR112018012686-1A patent/BR112018012686A2/pt unknown
- 2016-12-09 ES ES16820447T patent/ES2824474T3/es active Active
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2018538628A5 (ja) | ||
US20100031084A1 (en) | Checkpointing in a processor that supports simultaneous speculative threading | |
KR102025078B1 (ko) | 단일 스텝 실행을 이용한 코드 진단 | |
US9183093B2 (en) | Virtual machine crash management | |
US8321842B2 (en) | Replay time only functionalities in a virtual machine | |
US10089126B2 (en) | Function exit instrumentation for tail-call optimized code | |
RU2012144563A (ru) | Контрольно-вычислительная система, способ управления контрольно-вычислительной системой, а также применение контрольно-вычислительной системы | |
US9086969B2 (en) | Establishing a useful debugging state for multithreaded computer program | |
US7765526B2 (en) | Management of watchpoints in debuggers | |
JP2005339561A5 (ja) | ||
JP2014528127A5 (ja) | ||
US8732418B1 (en) | Shadow registry | |
Dovgalyuk | Deterministic Replay of System's Execution with Multi-target QEMU Simulator for Dynamic Analysis and Reverse Debugging. | |
CN106030532B (zh) | 用于事务存储器程序的软件回放器 | |
US10817369B2 (en) | Apparatus and method for increasing resilience to faults | |
JP6963552B2 (ja) | ブロックアトミック実行モデルを利用するプロセッサベースシステムにおける部分的に実行された命令ブロックのリプレイ | |
TW201915761A (zh) | 在例外遮罩更新指令之後允許未中止的交易處理 | |
CN107111488B (zh) | 调试数据处理事务 | |
GB2576288A (en) | Generating and verifying hardware instruction traces including memory data contents | |
Wang et al. | VM-μcheckpoint: Design, modeling, and assessment of lightweight in-memory VM checkpointing | |
JP6920286B2 (ja) | 例外処理 | |
US11030075B2 (en) | Efficient register breakpoints | |
JPH02294739A (ja) | 障害検出方式 | |
US20210089429A1 (en) | Reducing trace recording overheads with targeted recording via partial snapshots | |
CN106095631B (zh) | 一种基于有限状态机实现的多周期非流水线cpu动态调试方法 |