WO2017116652A1 - Replay of partially executed instruction blocks in a processor-based system employing a block-atomic execution model - Google Patents
Replay of partially executed instruction blocks in a processor-based system employing a block-atomic execution model Download PDFInfo
- Publication number
- WO2017116652A1 WO2017116652A1 PCT/US2016/065740 US2016065740W WO2017116652A1 WO 2017116652 A1 WO2017116652 A1 WO 2017116652A1 US 2016065740 W US2016065740 W US 2016065740W WO 2017116652 A1 WO2017116652 A1 WO 2017116652A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- instruction
- replay
- record
- block
- state
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3648—Debugging of software using additional hardware
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
Definitions
- the technology of the disclosure relates generally to execution of instructions in a processor-based system, and more particularly to processor-based systems employing a block-atomic execution model in which instructions are grouped into instruction blocks in which either all instructions in the instruction block are committed or none of the instructions are committed.
- a conventional microprocessor application includes a central processing unit (CPU) that includes or more processors, also known as "processor cores," that execute software instructions.
- the software instructions instruct a CPU to perform operations based on data. Examples of such data include immediate values encoded in instruction fetch data, data stored in a register, data from a location in memory, and data from external devices, such as input/output (I/O) devices.
- the CPU performs an operation according to the instructions to generate a result. The result may then be stored in a register or memory, or provided as output to an I O device.
- FIG. 1 illustrates an exemplary instruction block 100 comprised of a plurality of instructions 102(1)-102(N) to be executed by a processor employing a block-atomic execution model.
- a processor operating according to a block-atomic execution model logically fetches, executes, and commits the instruction block 100 as a single entity.
- a block-atomic execution model has an advantage of reducing the complexity of an out-of-order processor (OoP).
- OoP out-of-order processor
- an OoP that employs a block-atomic execution model does not have to report back the precise state of the processor after execution of each instruction.
- intermediate produced results 104(1), 104(2), 104(4), 104( -2)-104(N) from execution of the instructions 102(1), 102(2), 102(4), 102(N-2)- 102(N) that would otherwise be stored in global registers do not need to be saved to registers.
- instruction 102(1) as an example, its intermediate produced result 104(1) can be provided to a consumer instruction 102(2) in the instruction block 100 in a peer-to-peer manner without having to save the intermediate produced result 104(1). This enables fewer register read and write operations.
- a processor employing a block-atomic execution model has the advantage of reduced complexity
- a processor employing a block-atomic execution model has a disadvantage of having to execute all instructions in an instruction block before external results are committed. As an example, this can make debugging more difficult in the presence of a multi-threaded CPU, because it is generally not possible to reproduce whatever behavior led to an exception or breakpoint that occurred during execution of an instruction block.
- the intermediate produced results of the instruction block which may have been read from a previous write operation in another thread, are not stored.
- This also presents difficulties with side-effect operations, such as I/O device side-effects, where an I/O operation has already been executed prior to an exception occurring.
- the intermediate data read from the I/O operation in instruction 102(4) may no longer be available during re-execution of the instruction block 100.
- the intermediate data read during the first execution of instruction 102(4) may not be reproducibly stored in a register r2.
- a partial replay controller is provided in a processor(s) of a central processing unit (CPU) that employs a block-atomic execution model.
- a block-atomic execution model instructions are grouped in instruction blocks that are fully executed in a processor (e.g., an out-of-order processor (OoP)) before external produced results are committed.
- OoP out-of-order processor
- the partial replay controller is configured to record/replay results of load/store instructions during re-execution of the instruction block.
- the instruction block is re-executed.
- the partial replay controller is configured to record the produced results from the load/store instructions.
- a partial replay controller for controlling execution replay of an instruction block executed in a processor.
- the partial replay controller comprises a detection circuit configured to set a record/replay state to an active state for an instruction block, in response to detection of an instruction associated with a potential architectural state modification, or an occurrence of an exception in the processor.
- the partial replay controller also comprises a record/replay circuit.
- the record/replay circuit is configured to inspect an entry state in a record/replay log file corresponding to a next load/store instruction to be executed in the instruction block to determine if previously produced data is recorded for the next load/store instruction.
- the partial replay controller comprises a means for setting a means for storing a record/replay state to an active state for an instruction block, in response to detection of an instruction associated with a potential architectural state modification, or an occurrence of an exception in the processor.
- the partial replay controller also comprises a means for inspecting an entry state in a means for storing a record/replay log file corresponding to a next load/store instruction to be executed in the instruction block to determine if previously produced data is recorded for the next load/store instruction, in response to the means for storing the record/replay state to an active state for the instruction block.
- FIG. 2 is a block diagram of an exemplary multiple processor (“multiprocessor") CPU, wherein each processor is configured to execute software instructions to perform functions, including accesses to external memory and I/O devices;
- Figure 3 is a block diagram illustrating exemplary detail of a processor that can be included in the multi-processor CPU in Figure 2, wherein the processor includes a partial replay controller configured to record and/or replay results of load/store instructions during re-execution of an instruction block, in response to detecting an instruction in the instruction block associated with a potential architectural state modification, and/or in response to an occurrence of an exception, during execution of instructions in the instruction block;
- a partial replay controller configured to record and/or replay results of load/store instructions during re-execution of an instruction block, in response to detecting an instruction in the instruction block associated with a potential architectural state modification, and/or in response to an occurrence of an exception, during execution of instructions in the instruction block;
- the partial replay controller 206 may also be configured to record and/or replay results of the load/store instructions 302L during re-execution of the instruction block 308, in response to the occurrence of an actual exception in the processor 204.
- exceptions may include a static block exception, such as an instruction page fault, an invalid block header, and an invalid instruction encoding.
- the partial replay controller 206 may be configured to record and/or replay results of the load/store instructions 302L during re-execution of the instruction block 308.
- the record/replay state 330 remains in the active state ("ACTIVE") until all the instructions 302 in the instruction block 308 have been executed. Thereafter, the external produced results from the executed instructions 302 in the instruction block 308 are committed (or in the case of a partial commit functionality, produced results from instructions 302 that were not previously committed are committed) (712 in Figure 7).
- ACTIVE active state
- the external produced results from the executed instructions 302 in the instruction block 308 are committed (or in the case of a partial commit functionality, produced results from instructions 302 that were not previously committed are committed) (712 in Figure 7).
- ACTIVE active state
- the partial replay controller 206 sets the record/replay state 330 back to the idle state ("IDLE") to execute a next instruction block 308. If an exception occurs when the record/replay state 330 is in the idle state (“IDLE”), the operating system in the CPU 202 saves the current architectural state and switches the locked state "LOCKED” to resolve the exception such that no further instructions 302 are executed in the instruction block 308 (714 in Figure 7). Once the exception is resolved in the locked state "LOCKED", the operating system restores the architectural state that existed before the exception occurred and switches the record/replay state 330 back to the idle state (“IDLE”) (716 in Figure 7).
- a summary of exemplary exception categories wherein an architectural state of an instruction block 308 can be preserved by employing the partial replay controller 206 is shown below. However, if the current instruction block 308 is executing with the PBR model enabled by the partial replay controller 206, an interrupt may be taken with a precise partial block state as well. As discussed previously and as shown in the table below, if an instruction block encounters side-effects or has stored produced data before an exception occurs, a partial replay controller could be configured to discard produced results from instructions that were executed in the instruction block before the exception occurred. After the processor recovers from the exception, the partial replay controller would then be configured to start execution back from the beginning instruction of the instruction block to record and/or replay results of the load/store instructions.
- the partial replay controller for controlling execution replay of an instruction block executed in a processor could be provided that includes a means for setting a means for storing a record/replay state to an active state for an instruction block, in response to detection of an instruction associated with a potential architectural state modification, or an occurrence of an exception in the processor.
- the partial replay controller 206, the detection circuit 332 or the record/replay circuit 334 in Figure 3 are examples of such a means for setting, where the partial replay controller 206 is configured to set the record/replay state 330 to the active state in response to detection of an instruction associated with a potential architectural state modification, or an occurrence of an exception in the processor 204.
- the partial replay controller 206 could also include a means for inspecting an entry state in a means for storing a record/replay log file corresponding to a next load/store instruction to be executed in the instruction block to determine if previously produced data is recorded for the next load/store instruction, in response to the means for storing the record/replay state to an active state for the instruction block.
- this means for inspecting an entry state could be provided by the partial replay controller 206 or the record/replay circuit 334 in Figure 3, by accessing the record/replay log file 338.
- the partial replay controller 206 could also include a means for recording produced data of the executed next load/store instruction in the means for storing the record/replay log file, in response to the previously produced data not being recorded in the means for storing the record/replay log file for the next load/store instruction.
- the means for storing the record/replay log file could be provided by the partial replay controller 206 or the record/replay circuit 334 in Figure 3 to store previously produced data not being recorded in the record/replay log file 338 for the next load/store instruction.
- a processor that includes a partial replay controller configured to record and/or replay results of load/store instructions during re-execution of an instruction block, in response to detecting an instruction in the instruction block associated with a potential architectural state modification, and/or in response to an occurrence of an exception, during execution of instructions in the instruction block, such as the partial replay controller 206 in the processor 204 in Figure 3 for example, and according to any of the examples disclosed herein, may be provided in or integrated into any processor- based device.
- PDA personal digital assistant
- Figure 8 illustrates an example of a processor-based system 800 that includes a CPU 802 that includes one or more processors 804.
- the processor(s) 804 can each include a partial replay controller 806 that is configured to record and/or replay results of load/store instructions during re-execution of an instruction block, in response to detecting a potential side-effect during execution of instructions in the instruction block.
- the partial replay controller 806 can be the partial replay controller 206 in Figure 3 as an example.
- the CPU 802 may have a cache memory 808 coupled to the processor(s) 804 for rapid access to temporarily stored data.
- the CPU 802 is coupled to a system bus 810 and can intercouple peripheral devices included in the processor-based system 800.
- the processor(s) 804 in the CPU 802 can communicate with these other devices by exchanging address, control, and data information over the system bus 810.
- multiple system buses 810 could be provided, wherein each system bus 810 constitutes a different fabric.
- the CPU 802 can communicate bus transaction requests to a memory controller 812 in a memory system 814 as an example of a slave device.
- the memory controller 812 is configured to provide memory access operations to a memory array 816 in the memory system 814.
- Other devices can be connected to the system bus 810.
- these devices can include the memory system 814, one or more input devices 818, one or more output devices 820, one or more network interface devices 822, and one or more display controllers 824, as examples.
- the input device(s) 818 can include any type of input device, including but not limited to input keys, switches, voice processors, etc.
- the output device(s) 820 can include any type of output device, including but not limited to audio, video, other visual indicators, etc.
- the network interface device(s) 822 can be any devices configured to allow exchange of data to and from a network 826.
- a partial replay controller configured to record and/or replay results of load/store instructions during re-execution of an instruction block, in response to detecting a potential side-effect during execution of instructions in the instruction block, can also be provided in a software-based system.
- the partial replay controller does not have to be implemented in a hardware-only circuit that provides the functions of the partial replay controller without software instructions.
- the partial replay controller such as the partial replay controller 206 in Figure 3, could be provided in a non- transitory computer-readable medium having stored thereon computer executable instructions which, when executed by a processor, such a processor 204(1)-204(P) like in Figure 2, cause the processor to set a record/replay state to an active state for an instruction block, in response to detection of an instruction associated with a potential architectural state modification, or an occurrence of an exception in the processor.
- the computer executable instructions which, when executed by a processor, cuase the processor to inspect an entry state in a record/replay log file corresponding to a next load/store instruction to be executed in the instruction block to determine if previously produced data is recorded for the next load/store instruction, record produced data of the executed next load/store instruction in the record/replay log file, in response to the previously produced data not being recorded in the record/replay log file for the next load/store instruction, and execute the next load/store instruction using the previously produced data recorded for the next load/store instruction in the record/replay log file, in response to the previously produced data being recorded in the record/replay log file for the next load/store instruction.
- the "computer-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions.
- the term "computer- readable medium” shall also be taken to include any medium that is capable of storing, encoding, or carrying a set of instructions for execution by a processor and that cause the processor to perform any one or more of the methodologies of the aspects disclosed herein.
- the term “computer-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical medium, and magnetic medium.
- DSP Digital Signal Processor
- ASIC Application Specific Integrated Circuit
- FPGA Field Programmable Gate Array
- a processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine.
- a processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
- RAM Random Access Memory
- ROM Read Only Memory
- EPROM Electrically Programmable ROM
- EEPROM Electrically Erasable Programmable ROM
- registers a hard disk, a removable disk, a CD-ROM, or any other form of computer readable medium known in the art.
- An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium.
- the storage medium may be integral to the processor.
- the processor and the storage medium may reside in an ASIC.
- the ASIC may reside in a remote station.
- the processor and the storage medium may reside as discrete components in a remote station, base station, or server.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Retry When Errors Occur (AREA)
Priority Applications (7)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2018531614A JP6963552B2 (ja) | 2015-12-28 | 2016-12-09 | ブロックアトミック実行モデルを利用するプロセッサベースシステムにおける部分的に実行された命令ブロックのリプレイ |
| KR1020187017864A KR102706938B1 (ko) | 2015-12-28 | 2016-12-09 | 블록―원자 실행 모델을 사용하는 프로세서-기반 시스템에서 부분적으로 실행된 명령 블록들의 재생 |
| CN201680072709.XA CN108369519B (zh) | 2015-12-28 | 2016-12-09 | 在使用块-原子执行模型的基于处理器的系统中重放部分执行的指令块 |
| BR112018012686-1A BR112018012686B1 (pt) | 2015-12-28 | 2016-12-09 | Repetição dos blocos de instrução executados parcialmente em um sistema baseado em processador que emprega um modelo de execução de bloco atômico |
| EP16820447.7A EP3398060B1 (en) | 2015-12-28 | 2016-12-09 | Replay of partially executed instruction blocks in a processor-based system employing a block-atomic execution model |
| ES16820447T ES2824474T3 (es) | 2015-12-28 | 2016-12-09 | Reproducción de bloques de instrucciones parcialmente ejecutados en un sistema basado en procesador que emplea un modelo de ejecución atómico de bloques |
| AU2016380796A AU2016380796B2 (en) | 2015-12-28 | 2016-12-09 | Replay of partially executed instruction blocks in a processor-based system employing a block-atomic execution model |
Applications Claiming Priority (4)
| 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 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2017116652A1 true WO2017116652A1 (en) | 2017-07-06 |
Family
ID=59086553
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2016/065740 Ceased 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 |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US11188336B2 (enExample) |
| EP (1) | EP3398060B1 (enExample) |
| JP (1) | JP6963552B2 (enExample) |
| KR (1) | KR102706938B1 (enExample) |
| CN (1) | CN108369519B (enExample) |
| AU (1) | AU2016380796B2 (enExample) |
| ES (1) | ES2824474T3 (enExample) |
| WO (1) | WO2017116652A1 (enExample) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2020060639A1 (en) * | 2018-09-19 | 2020-03-26 | Microsoft Technology Licensing, Llc | Commit logic and precise exceptions in explicit dataflow graph execution architectures |
Families Citing this family (3)
| 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 |
| 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 |
Citations (1)
| 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 |
Family Cites Families (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| 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 |
| US8079019B2 (en) | 2007-11-21 | 2011-12-13 | Replay Solutions, Inc. | Advancing and rewinding a replayed program execution |
| US7958497B1 (en) | 2006-06-07 | 2011-06-07 | Replay Solutions, Inc. | State synchronization in recording and replaying computer programs |
| 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 |
| EP2996035A1 (en) | 2008-10-15 | 2016-03-16 | Hyperion Core, Inc. | 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 |
| US8826273B1 (en) * | 2010-12-22 | 2014-09-02 | Vmware, Inc. | Synchronously logging to disk for main-memory database systems through record and replay |
| 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 JP JP2018531614A patent/JP6963552B2/ja active Active
- 2016-12-09 WO PCT/US2016/065740 patent/WO2017116652A1/en not_active Ceased
- 2016-12-09 AU AU2016380796A patent/AU2016380796B2/en active Active
- 2016-12-09 KR KR1020187017864A patent/KR102706938B1/ko active Active
- 2016-12-09 ES ES16820447T patent/ES2824474T3/es active Active
- 2016-12-09 EP EP16820447.7A patent/EP3398060B1/en active Active
- 2016-12-09 CN CN201680072709.XA patent/CN108369519B/zh active Active
Patent Citations (1)
| 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 |
Non-Patent Citations (4)
| Title |
|---|
| AARON SMITH ET AL: "Compiling for EDGE Architectures", FOURTH INTERNATIONAL SYMPOSIUM ON CODE GENERATION AND OPTIMIZATION (CGO '06). MARCH 26-29, 2006, IEEE, US, 26 March 2006 (2006-03-26), pages 185 - 195, XP058144521, ISBN: 978-0-7695-2499-3, DOI: 10.1109/CGO.2006.10 * |
| MENGJIE MAO ET AL: "Distributed Control Independence for Composable Multi-processors", COMPUTER AND INFORMATION SCIENCE (ICIS), 2012 IEEE/ACIS 11TH INTERNATIONAL CONFERENCE ON, IEEE, 30 May 2012 (2012-05-30), pages 124 - 129, XP032450032, ISBN: 978-1-4673-1536-4, DOI: 10.1109/ICIS.2012.45 * |
| RAJAGOPALAN DESIKAN ET AL: "Scalable selective re-execution for EDGE architectures", ARCHITECTURAL SUPPORT FOR PROGRAMMING LANGUAGES AND OPERATING SYSTEMS, ACM, 2 PENN PLAZA, SUITE 701 NEW YORK NY 10121-0701 USA, 7 October 2004 (2004-10-07), pages 120 - 132, XP058264612, ISBN: 978-1-58113-804-7, DOI: 10.1145/1024393.1024408 * |
| SANKARALINGAM K ET AL: "TRIPS: A polymorphous architecture for exploiting ILP, TLP, and DLP", ACM TRANSACTIONS ON ARCHITECTURE AND CODE OPTIMIZATION, ASSOCIATION FOR COMPUTING MACHINERY, vol. 1, no. 1, 1 March 2004 (2004-03-01), 2 PENN PLAZA, SUITE 701 NEW YORK NY 10121-0701 USA, pages 62 - 93, XP002563402, ISSN: 1544-3566 * |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2020060639A1 (en) * | 2018-09-19 | 2020-03-26 | Microsoft Technology Licensing, Llc | Commit logic and precise exceptions in explicit dataflow graph execution architectures |
| US10824429B2 (en) | 2018-09-19 | 2020-11-03 | Microsoft Technology Licensing, Llc | Commit logic and precise exceptions in explicit dataflow graph execution architectures |
Also Published As
| Publication number | Publication date |
|---|---|
| US11188336B2 (en) | 2021-11-30 |
| AU2016380796A1 (en) | 2018-06-07 |
| CN108369519A (zh) | 2018-08-03 |
| CN108369519B (zh) | 2022-03-01 |
| BR112018012686A2 (pt) | 2018-12-04 |
| AU2016380796B2 (en) | 2021-12-16 |
| KR20180099680A (ko) | 2018-09-05 |
| ES2824474T3 (es) | 2021-05-12 |
| JP6963552B2 (ja) | 2021-11-10 |
| JP2018538628A (ja) | 2018-12-27 |
| US20170185408A1 (en) | 2017-06-29 |
| EP3398060A1 (en) | 2018-11-07 |
| KR102706938B1 (ko) | 2024-09-12 |
| EP3398060B1 (en) | 2020-07-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10489158B2 (en) | Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores | |
| US9690640B2 (en) | Recovery from multiple data errors | |
| EP1966697B1 (en) | Software assisted nested hardware transactions | |
| US9448933B2 (en) | Using redundant transactions to verify the correctness of program code execution | |
| US8495344B2 (en) | Simultaneous execution resumption of multiple processor cores after core state information dump to facilitate debugging via multi-core processor simulator using the state information | |
| US20110153960A1 (en) | Transactional memory in out-of-order processors with xabort having immediate argument | |
| TW201140435A (en) | Synchronizing SIMD vectors | |
| US10304556B2 (en) | Read and write memory scrubber | |
| CN101901177B (zh) | 多核微处理器及其除错方法 | |
| AU2016380796B2 (en) | Replay of partially executed instruction blocks in a processor-based system employing a block-atomic execution model | |
| US20140156975A1 (en) | Redundant Threading for Improved Reliability | |
| US12367044B2 (en) | Tracking instruction handling using opcode matching in processor-based devices | |
| US20160179632A1 (en) | Memory fault suppression via re-execution and hardware fsm | |
| WO2021113005A1 (en) | Providing express memory obsolescence in processor-based devices | |
| US11175926B2 (en) | Providing exception stack management using stack panic fault exceptions in processor-based devices | |
| EP4193262B1 (en) | Method, apparatus, and system for run-time checking of memory tags in a processor-based system | |
| BR112018012686B1 (pt) | Repetição dos blocos de instrução executados parcialmente em um sistema baseado em processador que emprega um modelo de execução de bloco atômico | |
| US9361103B2 (en) | Store replay policy | |
| US11188334B2 (en) | Obsoleting values stored in registers in a processor based on processing obsolescent register-encoded instructions |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 16820447 Country of ref document: EP Kind code of ref document: A1 |
|
| DPE1 | Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101) | ||
| ENP | Entry into the national phase |
Ref document number: 2016380796 Country of ref document: AU Date of ref document: 20161209 Kind code of ref document: A |
|
| ENP | Entry into the national phase |
Ref document number: 2018531614 Country of ref document: JP Kind code of ref document: A |
|
| ENP | Entry into the national phase |
Ref document number: 20187017864 Country of ref document: KR Kind code of ref document: A |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| REG | Reference to national code |
Ref country code: BR Ref legal event code: B01A Ref document number: 112018012686 Country of ref document: BR |
|
| ENP | Entry into the national phase |
Ref document number: 112018012686 Country of ref document: BR Kind code of ref document: A2 Effective date: 20180620 |