IP Library Granted Patent US 12,344,269
Granted Patent B2
US 12,344,269 · App. 17/131,461 · Granted Jul 1, 2025

Computing system for mitigating execution drift

Inventors: Ramkumar Jayaraman (Bangalore, IN); Riccardo Mariani (Pisa, IT)
Assignee: Intel Corporation
B60W60/001G06F9/3877G06F9/3885G06F9/5094G07C5/0808
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 12,344,269
App. No.
17/131,461
Granted
Jul 1, 2025
Kind
B2
Abstract

An apparatus comprising a first processor core to execute a first instance of an application; a second processor core to execute a second instance of the application concurrent with the execution of the first instance of the application; and processing circuitry to direct an interrupt to the first processor core based on an indication that an execution state of the first processor core is ahead of an execution state of the second processor core.

Claims (53)

1. An apparatus comprising:

a first processor core configured to execute a first instance of an application;

a second processor core configured to execute a second instance of the application concurrent with the execution of the first instance of the application by the first processor core,

wherein the first processor core and the second processor core are part of the same system on a chip (SoC) and form a workload pair that independently execute the first instance of the application and the second instance of the application, the second instance of the application comprising a duplication of the first instance of the application; and

processing circuitry configured to direct an interrupt to the first processor core based on an indication that an execution state of the first processor core is ahead of an execution state of the second processor core to thereby assign processing of the interrupt to a leading processing core from among the first processor core and the second processor core,

wherein the processing circuitry is configured to store an indication of one or more leading processor cores, and

wherein the processing circuitry is further configured to store respective weights for one or more leading processor cores, the weights defining a relative frequency with which each of the one or more leading processor cores is to receive interrupts redirected from one or more lagging processor cores.

2. The apparatus of claim 1 , wherein the processing circuitry comprises an interrupt controller configured to initially select the second processor core to process the interrupt and to override the selection by directing the interrupt to the first processor core based on the indication that the execution state of the first processor core is ahead of the execution state of the second processor core.

3. The apparatus of claim 1 , wherein the indication that the execution state of the first processor core is ahead of the execution state of the second processor core is based on a determination that an execution state of the first instance of the application is ahead of an execution state of the second instance of the application.

4. The apparatus of claim 3 , wherein the indication that the execution state of the first processor core is ahead of the execution state of the second processor core is further based on a determination that an execution state of a first instance of a second application executed by the first processor core is ahead of an execution state of a second instance of the second application concurrently executed by the second processor core.

5. The apparatus of claim 1 , wherein:

the first processor core is configured to periodically generate snapshots of an execution state of the first instance of the application,

the second core is configured to periodically generate snapshots of an execution state of the second instance of the application,

each snapshot includes a timestamp and a snapshot identifier,

the indication that the execution state of the first processor core is ahead of the execution state of the second processor core is based on a comparison of respective timestamps of the first instance and the second instance of the application for snapshots that include the same snapshot identifier.

6. The apparatus of claim 1 , wherein the processing circuitry is configured to store an indication of one or more leading processor cores, and

wherein the indication that the execution state of the first processor core is ahead of the execution state of the second processor core is based on the second processing core being excluded from the indication of the one or more leading processor cores.

7. The apparatus of claim 1 , wherein the processing circuitry is further configured to store an indication that interrupt redirection to the one or more leading processor cores is enabled.

8. The apparatus of claim 1 , wherein the weights are based on magnitudes of execution drifts of each leading processor core.

9. The apparatus of claim 1 , wherein the weights are specified by an entity to which execution drifts of the one or more leading processor cores are reported.

10. At least one non-transitory machine readable storage medium having instructions stored thereon, the instructions, when executed by a machine, cause the machine to:

execute, by a first processor core, a first instance of an application;

execute, by a second processor core, a second instance of the application concurrently with the execution of the first instance of the application by the first processor core,

wherein the first processor core and the second processor core are part of the same system on a chip (SoC) and form a workload pair that independently execute the first instance of the application and the second instance of the application, the second instance of the application comprising a duplication of the first instance of the application;

direct an interrupt to the first processor core based on an indication that an execution state of the first processor core is ahead of an execution state of the second processor core to thereby assign processing of the interrupt to a leading processing core from among the first processor core and the second processor core;

store an indication of one or more leading processor cores; and

store respective weights for one or more leading processor cores, the weights defining a relative frequency with which each of the one or more leading processor cores is to receive interrupts redirected from one or more lagging processor cores.

11. The medium of claim 10 , wherein the instructions, when executed by the machine, cause the machine to initially select the second processor core to process the interrupt and to override the selection by directing the interrupt to the first processor core based on the indication that the execution state of the first processor core is ahead of the execution state of the second processor core.

12. The medium of claim 10 , wherein the indication that the execution state of the first processor core is ahead of the execution state of the second processor core is based on a determination that an execution state of the first instance of the application is ahead of an execution state of the second instance of the application.

13. The medium of claim 12 , wherein the indication that the execution state of the first processor core is ahead of the execution state of the second processor core is further based on a determination that an execution state of a first instance of a second application executed by the first processor core is ahead of an execution state of a second instance of the second application concurrently executed by the second processor core.

14. The medium of claim 10 , wherein the instructions, when executed by the machine, cause the machine to:

cause the first processor core to periodically generate snapshots of an execution state of the first instance of the application,

cause the second processor core to periodically generate snapshots of an execution state of the second instance of the application,

wherein each snapshot includes a timestamp and a snapshot identifier, and

wherein the indication that the execution state of the first processor core is ahead of the execution state of the second processor core is based on comparison of respective timestamps of the first instance and the second instance of the application for snapshots that include the same snapshot identifier.

15. A method comprising:

executing, by a first processor core, a first instance of an application;

executing, by a second processor core, a second instance of the application concurrently with the execution of the first instance of the application by the first processor core,

wherein the first processor core and the second processor core are part of the same system on a chip (SoC) and form a workload pair that independently execute the first instance of the application and the second instance of the application, the second instance of the application comprising a duplication of the first instance of the application;

directing an interrupt to the first processor core based on an indication that an execution state of the first processor core is ahead of an execution state of the second processor core to thereby assign processing of the interrupt to a leading processing core from among the first processor core and the second processor core;

storing an indication of one or more leading processor cores; and

storing respective weights for one or more leading processor cores, the weights defining a relative frequency with which each of the one or more leading processor cores is to receive interrupts redirected from one or more lagging processor cores.

16. The method of claim 15 , further comprising:

initially selecting the second processor core to process the interrupt and override the selection by directing the interrupt to the first processor core based on the indication that the execution state of the first processor core is ahead of the execution state of the second processor core.

17. The method of claim 15 , wherein the indication that the execution state of the first processor core is ahead of the execution state of the second processor core is based on a determination that an execution state of the first instance of the application is ahead of an execution state of the second instance of the application.

18. The method of claim 17 , wherein the indication that the execution state of the first processor core is ahead of the execution state of the second processor core is further based on a determination that an execution state of a first instance of a second application executed by the first processor core is ahead of an execution state of a second instance of the second application concurrently executed by the second processor core.

19. The method of claim 15 , further comprising:

periodically generating snapshots of an execution state of the first instance of the application; and

periodically generating snapshots of an execution state of the second instance of the application,

wherein each snapshot includes a timestamp and a snapshot identifier, and

wherein the indication that the execution state of the first processor core is ahead of the execution state of the second processor core is based on comparison of respective timestamps of the first instance and the second instance of the application for snapshots that include the same snapshot identifier.

20. The apparatus of claim 1 , wherein the processing circuitry is further configured to store an indication that interrupt redirection to the one or more leading processor cores is enabled.

21. The apparatus of claim 1 , wherein the weights are (i) based on magnitudes of execution drifts of each leading processor core, or (ii) specified by an entity to which execution drifts of the one or more leading processor cores are reported.

Assignments (3)
SECURITY INTEREST Recorded Sep 12, 2025
From: ALTERA CORPORATION
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 073431/0309 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2025
From: INTEL CORPORATION
To: ALTERA CORPORATION
Reel/Frame 072704/0307 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 22, 2020
From: JAYARAMAN, RAMKUMAR; MARIANI, RICCARDO
To: INTEL CORPORATION
Reel/Frame 054733/0837 →
Continuity (2)
Provisional Application 63001134 · Mar 27, 2020
Related Publication 20210107512A1 · Apr 15, 2021
References Cited (23)
US 5295258A · Jewett · 1994 [cited by examiner]
US 5353436A · Horst · 1994 [cited by examiner]
US 5613128A · Nizar · 1997 [cited by examiner]
US 9880953B2 · Shajit · 2018 [cited by examiner]
US 10061722B2 · Hosseinipour · 2018 [cited by examiner]
US 10394728B2 · Chew · 2019 [cited by examiner]
US 10614007B2 · Srinivas · 2020 [cited by examiner]
US 20020116563A1 · Lever · 2002 [cited by examiner]
US 20060259621A1 · Ranganathan · 2006 [cited by examiner]
US 20110099146A1 · McAlister · 2011 [cited by examiner]
US 20110099420A1 · MacDonald McAlister · 2011 [cited by examiner]
US 20120144081A1 · Smith · 2012 [cited by examiner]
US 20120144172A1 · de Cesare · 2012 [cited by examiner]
US 20150143142A1 · Park · 2015 [cited by examiner]
US 20160358300A1 · Taylor · 2016 [cited by examiner]
US 20170177518A1 · Chew · 2017 [cited by examiner]
US 20180046581A1 · Banerjee · 2018 [cited by examiner]
US 20190235448A1 · Banginwar · 2019 [cited by examiner]
US 20200125397A1 · Wu · 2020 [cited by examiner]
US 20200327637A1 · Vembu · 2020 [cited by examiner]
WO 8502698A1 · 1985 [cited by applicant]
WO WO8502698 · 1985 [cited by examiner]
European Search Report dated Aug. 10, 2021 for European Patent Application No. 21159411.4. [cited by applicant]