IP Library Granted Patent US 11,392,385
Granted Patent B2
US 11,392,385 · App. 17/075,493 · Granted Jul 19, 2022

System and method for auto-recovery in lockstep processors

Inventor: Pierre Selwan (Fremont, CA)
Assignee: Microchip Technology Inc.
G06F9/3836G06F9/52G06F13/20
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,392,385
App. No.
17/075,493
Granted
Jul 19, 2022
Kind
B2
Abstract

A system and method for monitoring processors operating in lockstep to detect mismatches in pending pipelined instructions being executed by the processors. A lockstep monitor implemented in hardware is provided to detect the mismatches in the pending pipelined instructions executing on the lockstep processors and to initiate an auto-recovery operation at the processors if a mismatch is detected.

Claims (83)

1. A method comprising:

receiving, at a lockstep monitor, a first pending instruction generated by a first processor executing pipelined instructions, wherein the first pending instruction is destined for one of a register file of the first processor, a data tightly controlled memory (DTCM) of the first processor, an instruction tightly controlled memory (ITCM) of the first processor or a system bus coupled to the first processor;

receiving, at the lockstep monitor, a second pending instruction generated by a second processor executing the pipelined instructions in lockstep with the first processor;

comparing the first pending instruction and the second pending instruction at the lockstep monitor to detect a mismatch; and

when a mismatch is detected, performing an auto-recovery operation at the first processor and at the second processor to prevent the first processor from executing the first pending instruction and to prevent the second processor from executing the second pending instruction.

2. The method of claim 1 , wherein the first pending instruction comprises one or more of a pending instruction fetch address, a pending write address and pending write data.

3. The method of claim 1 , wherein the second pending instruction comprises one or more of a pending instruction fetch address, a pending write address and pending write data.

4. The method of claim 1 , wherein the second pending instruction is destined for one of, a register file of the second processor, a DTCM of the second processor, an ITCM of the second processor and the system bus.

5. A method comprising:

receiving, at a lockstep monitor, a first pending instruction generated by a first processor executing pipelined instructions, wherein the first pending instruction comprises a first pending instruction fetch address destined for an instruction tightly controlled memory (ITCM) of the first processor;

receiving, at the lockstep monitor, a second pending instruction generated by a second processor executing the pipelined instructions in lockstep with the first processor, wherein the second pending instruction comprises a second pending instruction fetch address destined for an ITCM of the second processor;

comparing the first pending instruction and the second pending instruction at the lockstep monitor to detect a mismatch, wherein the comparing detects a mismatch between the first pending instruction fetch address and the second pending instruction fetch address; and

when a mismatch is detected, performing an auto-recovery operation at the first processor to prevent the first processor from fetching an instruction from the first pending instruction address at the ITCM of the first processor and to prevent the second processor from fetching an instruction from the second pending instruction address of the ITCM of the second processor.

6. A method comprising:

receiving, at a lockstep monitor, a first pending instruction generated by a first processor executing pipelined instructions, wherein the first pending instruction comprises a first pending write address destined for a data tightly controlled memory (DTCM) of the first processor;

receiving, at the lockstep monitor, a second pending instruction generated by a second processor executing the pipelined instructions in lockstep with the first processor, wherein the second pending instruction comprises a second pending write address destined for a DTCM of the second processor;

comparing the first pending instruction and the second pending instruction at the lockstep monitor to detect a mismatch, wherein the comparing detects a mismatch between the first pending write address and the second pending write address; and

when a mismatch is detected, performing an auto-recovery operation at the first processor to prevent the first processor from writing to the first pending write address at the DTCM of the first processor and to prevent, the second processor from writing to the second pending write address of the DTCM of the second processor.

7. A method comprising:

receiving, at a lockstep monitor, a first pending instruction generated by a first processor executing pipelined instructions, wherein the first pending instruction comprises a first pending write data destined for a data tightly controlled memory (DTCM) of the first processor;

receiving, at the lockstep monitor, a second pending instruction generated by a second processor executing the pipelined instructions in lockstep with the first processor, wherein the second pending instruction comprises a second pending write data destined for a DTCM of the second processor;

comparing the first pending instruction and the second pending instruction at the lockstep monitor to detect a mismatch, wherein the comparing detects a mismatch between the first pending write data and the second pending write data; and

when a mismatch is detected, performing an auto-recovery operation at the first processor to prevent the first processor from writing the first pending write data to the DTCM of the first processor and to prevent the second processor from writing the second pending write data to the DTCM of the second processor.

8. A method comprising:

receiving, at a lockstep monitor, a first pending instruction generated by a first processor executing pipelined instructions, wherein the first pending instruction comprises a first pending write address destined for a register file of the first processor;

receiving, at the lockstep monitor, a second pending instruction generated by a second processor executing the pipelined instructions in lockstep with the first processor, wherein the second pending instruction comprises a second pending write address destined for a register file of the second processor;

comparing the first pending instruction and the second pending instruction at the lockstep monitor to detect a mismatch, wherein the comparing detects a mismatch between the first pending write address and the second pending write address; and

when a mismatch is detected, performing an auto-recovery operation at the first processor to prevent the first processor from writing to the first pending write address of the register file of the first processor and to prevent the second processor from writing to the second pending write address of the register file of the second processor.

9. A method comprising:

receiving, at a lockstep monitor, a first pending instruction generated by a first processor executing pipelined instructions, wherein the first pending instruction comprises a first pending write data destined for a register file of the first processor;

receiving, at the lockstep monitor, a second pending instruction generated by a second processor executing the pipelined instructions in lockstep with the first processor, wherein the second pending instruction comprises a second pending write data destined for a register file of the second processor;

comparing the first pending instruction and the second pending instruction at the lockstep monitor to detect a mismatch, wherein the comparing detects a mismatch between the first pending write data and the second pending write data; and

when a mismatch is detected, performing an auto-recovery operation at the first processor to prevent the first processor from writing the first pending write data to the register file of the first processor and to prevent the second processor from writing the second pending write data to the register file of the second processor.

10. A method comprising:

receiving, at a lockstep monitor, a first pending instruction generated by a first processor executing pipelined instruction, wherein the first pending instruction is destined for a system bus coupled to the first processor;

receiving, at the lockstep monitor, a second pending instruction generated by a second processor executing the pipelined instructions in lockstep with the first processor, wherein the second pending instruction is destined for the system bus;

comparing the first pending instruction and the second pending instruction at the lockstep monitor to detect a mismatch, wherein the comparing detects a mismatch between the first pending instruction and the second pending instruction; and

when a mismatch is detected, performing an auto-recovery operation at the first processor and at the second processor to prevent the first processor from executing the first pending instruction and to prevent the second processor from executing the second pending instruction.

11. A method comprising:

receiving, at a lockstep monitor, a first pending instruction generated by a first processor executing pipelined instructions;

receiving, at the lockstep monitor, a second pending instruction generated by a second processor executing the pipelined instructions in lockstep with the first processor;

comparing the first pending instruction and the second pending instruction at the lockstep monitor to detect a mismatch; and

when a mismatch is detected, performing an auto-recovery operation at the first processor and at the second processor to prevent the first processor from executing the first pending instruction and to prevent the second processor from executing the second pending instruction, the performing the auto-recovery operation at the first processor and at the second processor further including:

generating a flush and re-execute interrupt at the lockstep monitor;

transmitting the flush and re-execute interrupt to the first processor and to the second processor;

flushing the pipelined instructions responsive to the transmitted flush and re-execute interrupt; and

re-executing the flushed pipelined instructions responsive to the transmitted flush and re-execute interrupt.

12. A method comprising:

receiving, at a lockstep monitor, a first pending instruction generated by a first processor executing pipelined instructions;

receiving, at the lockstep monitor, a second pending instruction generated by a second processor executing the pipelined instructions in lockstep with the first processor;

comparing the first pending instruction and the second pending instruction at the lockstep monitor to detect a mismatch;

when a mismatch is detected, performing an auto-recovery operation at the first processor and at the second processor to prevent the first processor from executing the first pending instruction and to prevent the second processor from executing the second pending instruction; and

after performing the auto-recovery operation at the first processor and at the second processor, performing a reset of the first processor and the second processor if the mismatch persists.

13. A method comprising:

receiving, at a lockstep monitor, a first pending instruction generated by a first processor executing pipelined instructions;

receiving, at the lockstep monitor, a second pending instruction generated by a second processor executing the pipelined instructions in lockstep with the first processor;

comparing the first pending instruction and the second pending instruction at the lockstep monitor to detect a mismatch;

when a mismatch is detected, storing, at the lockstep monitor, the first pending instruction and the second pending instruction that resulted in the mismatch;

when the mismatch is detected, performing an auto-recovery operation at the first processor and at the second processor to prevent the first processor from executing the first pending instruction and to prevent the second processor from executing the second pending instruction;

after performing the auto-recovery operation at the first processor and at the second processor, comparing the stored first pending instruction that resulted in the mismatch with a current first pending instruction and comparing the stored second pending instruction that resulted in the mismatch with a current second pending instruction; and

performing a reset of the first processor and the second processor if the stored first pending instruction is different than the current first pending instruction and the stored second pending instruction is different than the current second pending instruction.

14. A system comprising:

a first processor executing pipelined instructions, the first processor coupled to a system bus and including a register file, an instruction tightly controlled memory (ITCM) and a data tightly controlled memory (DTCM);

a second processor executing the pipelined instructions in lockstep with the first processor, the second processor coupled to the system bus and including a register file, an ITCM and a DTCM; and

a lockstep monitor coupled to the first processor and to the second processor, the lockstep monitor comprising;

checkpoint circuitry to receive a first pending instruction from the first processor and a second pending instruction from the second processor, the checkpoint circuitry to compare the first pending instruction and the second pending instruction to detect a mismatch; and

auto-recovery circuitry coupled to the checkpoint circuitry, when a mismatch is detected by the checkpoint circuitry, the auto-recovery circuitry to initiate an auto-recovery operation at the first processor and at the second processor to prevent the first processor from executing the first pending instruction and to prevent the second processor from executing the second pending instruction.

15. The system of claim 14 , wherein the first pending instruction comprises one or more of a first pending instruction fetch address, a first pending write address and first pending write data and the second pending instruction comprises one or more of a second pending instruction fetch address, a second pending write address and second pending write data.

16. The system of claim 14 , wherein the checkpoint circuitry further comprises:

pending instruction fetch address checkpoint circuitry to receive a first pending instruction fetch address destined for the ITCM of the first processor, to receive a second pending instruction fetch address destined for the ITCM of the second processor and to compare the first pending instruction fetch address and the second pending instruction fetch address to detect a mismatch;

pending write data and pending write address checkpoint circuitry to receive first pending write data destined for the register or the DTCM of first processor, to receive second pending write data destined for the register or the DTCM of the second processor and to compare the first pending write data and the second pending write data to detect a mismatch;

the pending write data and pending write address checkpoint circuitry further to receive a first pending write address destined for the register or the DTCM of first processor, to receive a second pending write address destined for the register or the DTCM of the second processor and to compare the first pending write address and the second pending write address to detect a mismatch; and

pending system bus check point circuitry to receive a first pending instruction destined for the system bus, to receive a second pending instruction destined for the system bus and to compare the first pending instruction and the second pending instruction to detect a mismatch.

17. A system comprising:

a first processor executing pipelined instructions;

a second processor executing the pipelined instructions in lockstep with the first processor;

a lockstep monitor coupled to the first processor and to the second processor, the lockstep monitor comprising;

checkpoint circuitry to receive a first pending instruction from the first processor and a second pending instruction from the second processor, the checkpoint circuitry to compare the first pending instruction and the second pending instruction to detect a mismatch; and

auto-recovery circuitry coupled to the checkpoint circuitry, the auto-recovery circuitry to, when a mismatch is detected by the checkpoint circuitry, initiate an auto-recovery operation at the first processor and at the second processor to prevent the first processor from executing the first pending instruction and to prevent the second processor from executing the second pending instruction, the auto-recovery circuitry further to generate a flush and re-execute interrupt and transmit the flush and re-execute interrupt to the first processor and to the second processor.

18. The system of claim 17 , the first processor and the second processor to:

receive the flush and re-execute interrupt from the auto-recovery circuitry;

flush the pipelined instructions in response to the interrupt; and

re-execute the pipelined instructions.

Assignments (11)
RELEASE OF SECURITY INTEREST Recorded Mar 11, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059363/0001 →
RELEASE OF SECURITY INTEREST Recorded Mar 10, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059863/0400 →
RELEASE OF SECURITY INTEREST Recorded Mar 9, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059357/0823 →
RELEASE OF SECURITY INTEREST Recorded Mar 9, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059358/0335 →
RELEASE OF SECURITY INTEREST Recorded Feb 28, 2022
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059264/0384 →
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 19, 2021
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 058214/0380 →
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 19, 2021
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 058214/0238 →
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 19, 2021
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 058214/0625 →
SECURITY INTEREST Recorded Jun 4, 2021
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 057935/0474 →
SECURITY INTEREST Recorded Dec 24, 2020
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 055671/0612 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 20, 2020
From: SELWAN, PIERRE
To: MICROCHIP TECHNOLOGY INC.
Reel/Frame 054114/0528 →
Continuity (2)
Provisional Application 63030201 · May 26, 2020
Related Publication 20210373898A1 · Dec 2, 2021
Cited By (1)
US 12,499,008