IP Library Granted Patent US 7,730,350
Granted Patent B2
US 7,730,350 · App. 11/346,737 · Granted Jun 1, 2010

Method and system of determining the execution point of programs executed in lock step

Assignee: Hewlett-Packard Development Company, L.P.
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 7,730,350
App. No.
11/346,737
Granted
Jun 1, 2010
Kind
B2
Abstract

A method and system of determining the execution point of programs executed in lock step. At least some of the illustrative embodiments are computer systems comprising a first processor that executes a program, and a second processor that executes a duplicate copy of the program in lock step with the first processor. After receipt of a duplicate copy of an interrupt request by each processor, the first processor determines the execution point in its program relative to the execution point of the duplicate copy of the program executed by the second processor.

Claims (73)

1. A computer system comprising:

a first processor that executes a program, wherein the program of the first processor has a program counter and a graduated instruction counter;

a second processor that executes a duplicate copy of the program in lock-step with the first processor, wherein the program of the second processor has a program counter and a graduated instruction counter;

wherein after receipt of a duplicate copy of an interrupt request by each processor, the first processor determines the execution point in its program relative to the execution point of the duplicate copy of the program by comparing the program counter and graduated instruction counter of the first processor with the program counter and graduated instruction counter of the second processor.

2. The computer system as defined in claim 1 further comprising:

a logic device coupled between each of the processors and the shared main memory, the logic device having a first and second registers;

wherein the first processor, after receiving the interrupt request, writes its program counter and graduated instruction counter to the first register;

wherein the second processor, after receiving the interrupt request, writes its program counter and graduated instruction counter to the second register;

wherein the logic device is configured to compare the contents of the first and second registers, and to provide an indication to at least one of the processors of whether the registers contents match;

wherein the first processor determines if the execution points of the two programs are the same based on the indication provided by the logic device.

3. The computer system as defined in claim 1 further comprising:

wherein the first processor, to determine the execution point in its program relative to the execution point of the duplicate copy of the program, obtains values of the program counter and graduated instruction counter from the second processor; and

wherein the first processor attributes the programs to be at the same execution point if the program counters are equal and the graduated instruction counters are equal, or if the program counters are equal and the graduated instruction counters are off by one.

4. The computer system as defined in claim 1 further comprising:

wherein the first processor, to determine the execution point in its program relative to the execution point of the duplicate copy, obtains values of the program counter and graduated instruction counter from the second processor; and

wherein if the program counters are equal, and the graduated instruction counters are different by approximately five or less, the first processor compares the register state of its user program to the register state of the program in the second processor, and if the registers states match the first processor attributes the programs to be at the same execution point.

5. The computer system as defined in claim 1 further comprising:

wherein the first processor, to determine the execution point in its program relative to the execution point of the duplicate copy, obtains values of the program counter and graduated instruction counter from the second processor; and

wherein if the program counters are equal, and the graduated instruction counters are different by approximately five or greater, the first processor attributes its program to be ahead of the program in the second processor if the graduated instruction counter of the first processor leads the graduated instruction counter of the second processor, and the first processor attributes its program to be behind of the program in the second processor if the graduated instruction counter of the first processor lags the graduated instruction counter of the second processor.

6. The computer system as defined in claim 1 further comprising:

wherein the first processor, to determine the execution point in its program relative to the execution point of the duplicate copy, obtains values of the program counter and graduated instruction counter from the second processor; and

wherein if the program counters are not equal, and if the graduated instruction counters are not equal, the first processor attributes its program to be ahead of the program in the second processor if the graduated instruction counter of the first processor leads the graduated instruction counter of the second processor, and the first processor attributes its program to be behind of the program in the second processor if the graduated instruction counter of the first processor lags the graduated instruction counter of the second processor.

7. A method comprising:

executing a program on a first processor;

executing a duplicate copy of the program in lock step on a second processor;

receiving duplicate copies of an interrupt request by each of the first and second processors; and then

determining, by the first processor, the computational point of the program in the first processor relative to the program in the second processor by:

writing, by the first processor, a program counter and graduated instruction counter for its program to a first register set;

writing, by the second processor, a program counter and graduated instruction counter for its program to a second register set; and

receiving, by the first processor from a source other than the first processor, an indication of whether the program counters and graduated instruction counters are equal.

8. A method comprising:

executing a program on a first processor;

executing a duplicate copy of the program in lock step on a second processor;

receiving duplicate copies of an interrupt request by each of the first and second processors; and then determining, by the first processor, the computational point of the program in the first processor relative to the program in the second processor by:

obtaining, by the first processor, a program counter and graduated instruction counter of the program in the second processor; and

analyzing the relationships of the program counter and graduated instruction counter of the program in the second processor to the program counter and graduated instruction counter of the program in the first processor.

9. The method as defined in claim 8 further comprising attributing the programs to be at the same computational point if the program counters are equal, and if the graduated instruction counters are equal or different by no more than a predetermined value.

10. The method as defined in claim 9 further comprising attributing the programs to be at the same computational point if the graduated instruction counters are different by no more than one.

11. The method as defined in claim 8 further comprising:

determining, by the first processor, that the program counters are equal and that the graduated instruction counters are different by a predetermined number or less; and then

analyzing a register state of the program in the first processor against a register state of the program in the second processor; and

attributing the programs to be at the same computational point if the register states match.

12. The method as defined in claim 11 wherein determining that the graduated instruction counters are different by a predetermined number or less further comprises determining that the graduated instruction counters are different by five or less.

13. The method as defined in claim 8 further comprising:

determining, by the first processor, that the program counters are equal and that the graduated instruction counters are different by a greater than a predetermined number; and then

attributing, by the first processor, its program to be ahead in computational point of the program in the second processor if the graduated instruction counter of the first processor leads the graduated instruction counter of the second processor; and

attributing, by the first processor, its program to be behind in computational point of the program in the second processor if the graduated instruction counter of the first processor lags the graduated instruction counter of the second processor.

14. The method as defined in claim 8 further comprising:

determining, by the first processor, that the program counters are not equal and that the graduated instruction counters not equal; and then

attributing, by the first processor, its program to be ahead in computational point of the program in the second processor if the graduated instruction counter of the first processor leads the graduated instruction counter of the second processor; and

attributing, by the first processor, its program to be behind in computational point of the program in the second processor if the graduated instruction counter of the first processor lags the graduated instruction counter of the second processor.

15. A computer-readable medium storing a set of executable instructions that, when executed by a first processor, cause the first processor to:

determine the computational point of a program in the first processor relative to a duplicate copy of the program executing in lock step in a second processor;

write a program counter and graduated instruction counter for the program to a first register set;

receive an indication over a communication network of whether the program counter and graduated instruction counter written are equal to a program counter and graduated instruction counter of the program in the second processor; and

determine if the computational point as between the programs in the first and second processors are the same based on the indication.

16. A computer-readable medium storing a set of executable instructions that, when executed by a first processor, cause the first processor to:

determine the computational point of a program in the first processor relative to a duplicate copy of the program executing in lock step in a second processor by causing the first processor to:

obtain a program counter and graduated instruction counter of the program in the second processor; and

analyze the relationships of the program counter and graduated instruction counter of the program in the second processor to a program counter and graduated instruction counter of the program in the first processor.

17. The computer-readable medium as defined in claim 16 wherein the executable instructions further cause the first processor to attribute the programs to be at the same computational point if the program counters are equal, and if the graduated instruction counters are equal or different by no more than one.

18. The computer-readable medium as defined in claim 16 wherein the executable instructions further cause the first processor to:

determine that the program counters are equal and that the graduated instruction counters are different by five or less; and then

analyze a register state of the program in the first processor against a register state of the program in the second processor; and

attribute the programs to be at the same computational point if the register states match.

19. The computer-readable medium as defined in claim 16 wherein the executable instructions further cause the first processor to:

determine that the program counters are equal and that the graduated instruction counters are different by a greater than five; and then

attribute the program of the first processor to be ahead in computational point of the program in the second processor if the graduated instruction counter of the first processor leads the graduated instruction counter of the second processor; and

attribute the program of the first processor to be behind in computational point of the program in the second processor if the graduated instruction counter of the first processor lags the graduated instruction counter of the second processor.

20. The computer-readable medium as defined in claim 16 wherein the executable instructions further cause the first processor to:

determine that the program counters are not equal and that the graduated instruction counters not equal; and then

attribute the program of the first processor to be ahead in computational point of the program in the second processor if the graduated instruction counter of the first processor leads the graduated instruction counter of the second processor; and

attribute the program of the first processor to be behind in computational point of the program in the second processor if the graduated instruction counter of the first processor lags the graduated instruction counter of the second processor.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 26, 2021
From: OT PATENT ESCROW, LLC
To: VALTRUS INNOVATIONS LIMITED
Reel/Frame 057650/0537 →
PATENT ASSIGNMENT, SECURITY INTEREST, AND LIEN AGREEMENT Recorded Jan 26, 2021
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP; HEWLETT PACKARD ENTERPRISE COMPANY
To: OT PATENT ESCROW, LLC
Reel/Frame 055269/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2015
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 037079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 3, 2006
From: SOUTHGATE, DALE E.; DAMIAN, MIHAI; REYNOLDS, PETER A.; BRUCKERT, WILLIAM F.; KLECKA, JAMES S.
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 017544/0337 →
Continuity (2)
Provisional Application 6067581000 · Apr 28, 2005
Related Publication 20060248322A1 · Nov 2, 2006