IP Library Granted Patent US 10,908,935
Granted Patent B1
US 10,908,935 · App. 16/053,468 · Granted Feb 2, 2021

Estimation of guest clock value based on branch instruction count and average time between branch instructions for use in deterministic replay of execution

Inventors: Matthew A. Taylor (San Antonio, TX); John R. Wagner (Melbourne, FL); Chad D. McConnell (Indialantic, FL)
Assignee: Raytheon Company
G06F9/455G06F9/3005
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 10,908,935
App. No.
16/053,468
Granted
Feb 2, 2021
Kind
B1
Abstract

A method for deterministic clock replay can include in response to executing a guest clock access instruction, estimating, using a virtual processor of a guest virtual machine, a value of a guest clock of the guest virtual machine based on (a) a current branch counter value that indicates a number of branch instructions executed since a first time and (b) an average time between execution of branch instructions, comparing the estimated value to an actual guest clock value of a guest clock of the guest virtual machine, and in response to determining the estimated value is less than the actual guest clock value by a threshold value, recording the number of branch instructions, the first time, and the average time between execution of branch instructions in a memory.

Claims (40)

1. A system comprising:

a memory;

a guest virtual machine including a guest clock and a virtual processor, the virtual processor operable to perform operations comprising:

executing a plurality of instructions in sequence;

determining whether each instruction being executed in sequence by the virtual processor of the guest virtual machine accesses the guest clock;

only in response to determining the instruction accesses the guest clock, estimating a value of the guest clock based on a calculated current branch counter value that indicates a number of branch in executed since a calculated first time and a calculated average time between execution of branch instructions;

comparing the estimated value to an actual guest clock value of the guest clock determined by the access of the guest clock;

re-calculating the number of branch instructions, the first time, and the average time between execution of branch instructions in response to the estimated value being less than the actual guest clock value by a threshold value or the estimated value is greater than the actual guest clock value;

recording the recalculated number of number of branch instructions, the first time, and the average time between execution of branch instruct in the memory; and

providing an estimate of the value of the quest clock based on the recorded re-calculated number of branch instructions, the first time, and the average time between execution of branch instructions for replay of the execution of the plurality of instructions.

2. The system of claim 1 , wherein the operations further comprise, in response to determining the estimated value is greater than the actual guest clock value, re-calculating the average time between execution of branch instructions so that the estimated value is less than, or equal to, the actual guest clock value.

3. The system of claim 2 , wherein re-calculating the average time between execution of branch instructions includes determining a difference between (i) a current time and the first time, and (ii) an initial branch counter and the branch counter value.

4. The system of claim 2 , wherein the operations further comprise, in response to determining the estimated value is less than the actual guest clock value by a threshold value, updating the average time between execution of branch instructions so that the estimated value is in a range of values defined by an upper limit of the actual guest clock value and a lower limit of the actual guest clock value minus the threshold value.

5. The system of claim 4 , wherein re-calculating the average time between execution of branch instructions includes determining a difference between (i) a current time and the first time, and (ii) an initial branch counter value and the branch counter value.

6. The system of claim 5 , wherein the operations further comprising, in response to determining the estimated value is less than the actual guest clock value by a threshold value, setting the estimated value to the actual guest clock value.

7. The system of claim 1 , further comprising another clock, and wherein the estimated value is used as a basis for a value of the another clock.

8. A method comprising:

executing, by a virtual processor of a guest virtual machne, a plurality of instructions in sequence;

only in response to executing a guest clock access instruction by the virtual processor, estimating, using the virtual processor, a value of a guest clock based on (a) a calculated current branch counter value that indicates a number of branch instructions executed since a calculated first time and (b) a calculated average time between execution of branch instructions;

comparing, using the virtual processor, the estimated value to an actual guest clock value of the guest clock of the guest virtual machine determined by the guest clock access instruction;

in response to determining, using the virtual processor, that the estimated value is less than the actual guest clock value by a threshold value, or that the estimated value is greater than the actual guest clock value, re-calculating and recording the re-calculated number of branch instructions, the re-calculated first time, and the re-calculated average time between execution of branch instructions in a memory; and

providing, using the virtual processor, an estimate of the value of the guest clock based on the recorded re-calculated number of branch instructions, the first time, and the average time between execution of branch instructions for replay of the execution of the plurality of instructions.

9. The method of claim 8 further comprising, in response to determining the estimated value is greater than the actual guest clock value, re-calculating the average time between execution of branch instructions so that the estimated value is less than, or equal to, the actual guest clock value.

10. The method of claim 9 , wherein re-calculating the average time between execution of branch instructions includes determining a difference between (i) a current time and the first time, and (ii) an initial branch counter and the branch counter value.

11. The method of claim 9 , further comprising, in response to determining the estimated value is less than the actual guest clock value by a threshold value, re-calculating the average time between execution of branch instructions so that the estimated value is in a range of values defined by an upper limit of the actual guest clock value and a lower limit of the actual guest clock value minus the threshold value.

12. The method of claim 11 , wherein re-calculating the average time between execution of branch instructions includes determining a difference between (i) a current time and the first time, and (ii) an initial branch counter value and the branch counter value.

13. The method of claim 12 , further comprising, in response to determining the estimated value is less than the actual guest clock value by a threshold value, setting the estimated value to the actual guest clock value.

14. The method of claim 8 , further comprising using the estimated value as a basis for a value of another clock.

15. A non-transitory machine-readable medium including instructions that, when executed by a virtual processor of a guest virtual machine, cause the guest virtual machine to perform operations comprising:

executing, by the guest virtual machine, a plurality of instructions in sequence;

determining whether each instruction being executed in sequence by the guest virtual machine accesses a guest clock;

only in response to determining the instruction accesses the guest clock, estimating a value of the guest clock based on (a) a calculated current branch counter value that indicates a number of branch instructions executed since a calculated first time and (b) a calculated average time between execution of branch instructions;

comparing the estimated value to an actual guest clock value of the guest clock of the guest virtual machine determined by the access of the guest clock;

in response to the estimated value being less than the actual guest clock value by a threshold value, or the estimated value being greater than the actual guest clock value, re-calculating and recording the re-calculated number of branch instructions, the re-calculated first time, and the re-calculated average time between execution of branch instructions in a memory; and

providing an estimate of the value of the guest clock based on the recorded re-calculated number of branch instructions, the first time, and the average time between execution of branch instructions for replay of the execution of the plurality of instructions.

16. The non-transitory machine-readable medium of claim 15 , wherein the operations further comprise, in response to determining the estimated value is greater than the actual guest clock value, re-calculating the average time between execution of branch instructions so that the estimated value is less than, or equal to, the actual guest clock value.

17. The non-transitory machine-readable medium of claim 16 , wherein re-calculating the average time between execution of branch instructions includes determining a difference between (i) a current time and the first time, and (ii) an initial branch counter and the branch counter value.

18. The non-transitory machine-readable medium of claim 16 , wherein the operations further comprise, in response to determining the estimated value is less than the actual guest clock value by a threshold value, re-calculating the average time between execution of branch instructions so that the estimated value is in a range of values defined by an upper limit of the actual guest clock value and a lower limit of the actual guest clock value minus the threshold value.

19. The non-transitory machine-readable medium of claim 18 , wherein re-calculating the average time between execution of branch instructions includes determining a difference between (i) a current time and the first time, and (ii) an initial branch counter value and the branch counter value.

20. The non-transitory machine-readable medium of claim 19 , wherein the operations further comprise, in response to determining the estimated value is less than the actual guest clock value by a threshold value, setting the estimated value to the actual guest clock value.

Assignments (6)
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 →
EMPLOYMENT AGREEMENT Recorded Nov 29, 2023
From: WAGNER, JOHN R.
To: SI GOVERNMENT SOLUTIONS, INC.
Reel/Frame 065711/0428 →
ASSET PURCHASE AGREEMENT Recorded Nov 29, 2023
From: SI GOVERNMENT SOLUTIONS, INC.
To: RAYTHEON COMPANY
Reel/Frame 065711/0448 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2020
From: TAYLOR, MATTHEW A.; MCCONNELL, CHAD D.
To: RAYTHEON COMPANY
Reel/Frame 054775/0928 →