IP Library Granted Patent US 11,526,358
Granted Patent B2
US 11,526,358 · App. 17/021,206 · Granted Dec 13, 2022

Deterministic execution replay for multicore systems

Inventors: Gregory Price (Silver Spring, MD); William Wysocki (Ellicott City, MD); Matthew A. Taylor (San Antonio, TX)
Assignee: Raytheon Company
G06F9/3838G06F9/45558G06F9/522
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,526,358
App. No.
17/021,206
Granted
Dec 13, 2022
Kind
B2
Abstract

Techniques are disclosed for interposing on nondeterministic events during multicore virtual machine (VM) execution to capture information that allows for deterministically recreating the nondeterministic events during execution replay of the VM. A method may include reading, by a virtual processor running within a multicore VM instance, an instruction to execute, and, responsive to a determination that the instruction is a nondeterministic instruction, interposing on the nondeterministic instruction execution so as to allow deterministic execution of the nondeterministic instruction during replay execution of the multicore VM instance. Interposing on the nondeterministic instruction execution may include recording a partial barrier event and/or a full barrier event. The nondeterministic instruction may be a read memory access instruction or a write memory access instruction.

Claims (42)

1. A computer-implemented method comprising:

starting an execution replay of a multicore virtual machine (VM) instance that was previously executed, the multicore VM instance including a plurality of virtual processors, at least one virtual processor of the virtual processors configured to execute instructions in an instruction stream;

initializing states of the plurality of virtual processors; and

by the at least one virtual processor

reading a barrier event generated by the at least one virtual processor during a previous execution of the multicore VM instance, wherein the barrier event specifies at least one constraint and a block instruction counter value; and

executing one or more instructions in the instruction stream based on at least one of:

the at least one constraint or the block instruction counter value.

2. The computer-implemented method of claim 1 , wherein executing the one or more instructions in the instruction stream based on at least one of the at least one constraint or the block instruction counter value comprises:

executing one or more instructions in the instruction stream until the block instruction counter value is reached;

ceasing execution of instructions in the instruction stream until the at least one constraint is satisfied; and

responsive to the at least one constraint being satisfied, executing a next instruction in the instruction stream.

3. The computer-implemented method of claim 2 , further comprising, upon executing the next instruction, reading, by the at least one virtual processor, a next barrier event generated by the at least one virtual processor during the previous execution of the multicore VM instance.

4. The computer-implemented method of claim 2 , wherein the next instruction is a nondeterministic instruction.

5. The computer-implemented method of claim 1 , wherein the barrier event was recorded during execution of a nondeterministic instruction during the previous execution of the multicore VM instance.

6. The computer-implemented method of claim 5 , wherein the nondeterministic instruction comprises a read memory access instruction.

7. The computer-implemented method of claim 5 , wherein the nondeterministic instruction comprises a write memory access instruction.

8. The computer-implemented method of claim 1 , wherein the execution replay of the VM instance is in an emulation execution environment.

9. The computer-implemented method of claim 1 , wherein the barrier event comprises a partial barrier event.

10. The computer-implemented method of claim 1 , wherein the barrier event comprises a full barrier event.

11. A computer program product including one or more non-transitory machine readable mediums encoded with instructions that when executed by one or more processors cause a process to be carried out to interpose on nondeterministic events during multicore virtual machine (VM) execution, the process comprising:

starting an execution of a multicore virtual machine (VM) instance, the multicore VM instance including a plurality of virtual processors, at least one virtual processor of the virtual processors configured to execute instructions in an instruction stream;

reading, by the at least one virtual processor, an instruction to execute; and

responsive to a determination that the instruction is a nondeterministic instruction, interposing, by the at least one virtual processor, on the nondeterministic instruction execution so as to allow deterministic execution of the nondeterministic instruction during replay execution of the multicore VM instance, wherein the nondeterministic instruction comprises an access of a virtual memory block.

12. The computer program product of claim 11 , wherein the execution of the VM instance is in an emulation execution environment.

13. The computer program product of claim 11 , wherein the nondeterministic instruction comprises a read memory access instruction on the virtual memory block, and wherein interposing on the nondeterministic instruction execution further comprises acquiring shared access rights to the virtual memory block.

14. The computer program product of claim 13 , wherein acquiring shared access rights to the virtual memory block comprises recording a partial barrier event, wherein the partial barrier event includes an indication of a time at which the virtual processor is to be blocked during execution replay of the multicore VM instance.

15. The computer program product of claim 11 , wherein the nondeterministic instruction comprises a write memory access instruction on the virtual memory block, and wherein interposing on the nondeterministic instruction execution further comprises acquiring exclusive access rights to the virtual memory block.

16. The computer program product of claim 15 , wherein acquiring exclusive access rights to the virtual memory block comprises recording a partial barrier event, wherein the partial barrier event includes an indication of a time at which the virtual processor is to be blocked during execution replay of the multicore VM instance.

17. The computer program product of claim 15 , wherein acquiring exclusive access rights to the virtual memory block comprises recording a full barrier event, wherein the full barrier event includes an indication of a time at which the virtual processor is to be blocked during execution replay of the multicore VM instance.

18. A system comprising:

one or more non-transitory machine-readable mediums configured to store instructions; and

one or more processors configured to execute the instructions stored on the one or more non-transitory machine-readable mediums, wherein execution of the instructions causes the one or more processors to

start an execution replay of a multicore virtual machine (VM) instance that was previously executed, the multicore VM instance including a plurality of virtual processors, at least one virtual processor of the virtual processors configured to execute instructions in an instruction stream;

initialize states of the plurality of virtual processors; and

cause the at least one virtual processor to

read a barrier event generated by the at least one virtual processor during a previous execution of the multicore VM instance, wherein the barrier event specifies at least one constraint and a block instruction counter value; and

execute one or more instructions in the instruction stream based on at least one of: the at least one constraint or the block instruction counter value.

19. The system of claim 18 , wherein to execute the one or more instructions in the instruction stream based on at least one of the at least one constraint or the block instruction counter value comprises:

execute one or more instructions in the instruction stream until the block instruction counter value is reached;

cease execution of instructions in the instruction stream until the at least one constraint is satisfied; and

responsive to the at least one constraint being satisfied, execute a next instruction in the instruction stream.

20. The system of claim 18 , wherein the barrier event is a partial barrier event or a full barrier event.

Assignments (4)
CHANGE OF NAME Recorded Jul 3, 2024
From: COLUMBUS BUYER LLC
To: NIGHTWING GROUP, LLC
Reel/Frame 068106/0251 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 2, 2024
From: RAYTHEON COMPANY
To: COLUMBUS BUYER LLC
Reel/Frame 068233/0420 →
SECURITY INTEREST Recorded Apr 1, 2024
From: COLUMBUS BUYER LLC; RAYTHEON BLACKBIRD TECHNOLOGIES, INC.; RAYTHEON FOREGROUND SECURITY, INC.
To: WELLS FARGO BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 066960/0411 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 16, 2020
From: PRICE, GREGORY; WYSOCKI, WILLIAM; TAYLOR, MATTHEW A.
To: RAYTHEON COMPANY
Reel/Frame 053788/0830 →