IP Library Granted Patent US 12,566,612
Granted Patent B2
US 12,566,612 · App. 18/391,470 · Granted Mar 3, 2026

Scheduling of duplicate threads

Inventors: Revanth Kamaraj (Hertfordshire, GB); Vamshi Kadiyala (Hertfordshire, GB); Jack Andrew (Hertfordshire, GB); Ozgur Ozkurt (Hertfordshire, GB)
Assignee: Imagination Technologies Limited
G06F9/3836G06F9/3009G06F9/4812G06F9/4881
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,566,612
App. No.
18/391,470
Granted
Mar 3, 2026
Kind
B2
Abstract

A safety thread scheduler configured to schedule a check thread for a critical thread being run on one of a plurality of execution units, the check thread being a duplicate of the critical thread, wherein the safety thread scheduler is configured to schedule the check thread to begin being run on a second one of the plurality of execution units before the end of a safety time-window for scheduling the check thread. The safety thread scheduler is further configured to allow the check thread, when the check thread is running on the second one of the plurality of execution units, to be interrupted by a further thread and to re-schedule the check thread to be resumed by expiry of a re-scheduling time limit.

Claims (35)

1 . A safety thread scheduling circuit configured to schedule a check thread for a critical thread being run on one of a plurality of execution units, the check thread being a duplicate of the critical thread;

the safety thread scheduling circuit being configured to schedule the check thread to begin being run on a second one of the plurality of execution units before the end of a safety time-window for scheduling the check thread; and

the safety thread scheduling circuit being further configured to allow the check thread, when the check thread is running on the second one of the plurality of execution units, to be interrupted by a further thread and to re-schedule the check thread to be resumed by expiry of a re-scheduling time limit;

wherein the safety thread scheduling circuit is operable to perform the re-scheduling of the check thread by interrupting another thread, other than the critical thread, running on one of the execution units other than the first execution unit, thereby resuming execution of the check thread on the execution unit upon which the other thread was running.

2 . The safety thread scheduling circuit of claim 1 , wherein the safety thread scheduling circuit is operable such that the interrupted other thread is the further thread on the second execution unit, such that the check thread resumes on the second execution unit.

3 . The safety thread scheduling circuit of claim 1 , wherein the safety thread scheduling circuit is operable such that the interrupted other thread is a thread, other than the critical thread and the further thread, running on a third one of the execution units other than the first and second execution units, such that the check thread is migrated to the third execution unit.

4 . The safety thread scheduling circuit of claim 1 , wherein the re-scheduling time limit is either:

a) the expiry of a safety time-window of a predetermined length running from a point at which the execution of the critical thread begins, or

b) the expiry of the safety time-window plus any time already spent executing the check thread, or

c) a time in between a) and b).

5 . The safety thread scheduling circuit of claim 4 , operable to initially schedule the check thread to begin executing, before the interruption by the further thread, any time between the point at which the execution of the critical thread begins and the expiry of the safety time-window.

6 . The safety thread scheduling circuit of claim 5 , configured to perform the initial scheduling of the check thread by:

i) if at least one of the execution units is detected to be idle by the point at which the execution of the critical thread begins, to select an idle one of the execution units as the second execution unit to begin the execution of the check thread; but

ii) if none of the execution units is detected to be idle by the point at which the execution of the critical thread begins, to wait and detect whether one becomes newly idle before the expiry of the safety time-window if so and thereupon select the newly idle execution unit as the second execution unit to begin the execution of the check thread; but

iii) if none of the execution units becomes idle by the expiry of the safety time-window, to interrupt a non-critical thread executing on a non-idle one of the execution units and select the non-idle execution unit as the second execution unit to begin the execution of the check thread.

7 . The safety thread scheduling circuit of claim 6 , configured to raise a panic condition if none of the execution units becomes idle nor is found to be executing a non-critical thread before the expiry of the safety time-window.

8 . The safety thread scheduling circuit of claim 1 , configured to perform the re-scheduling of the check thread by migrating the check thread to a third of said execution units other than the first and second execution units, resuming execution of the check thread on the third execution unit.

9 . The safety thread scheduling circuit of claim 1 , wherein the further thread is a thread other than a check thread.

10 . The safety thread scheduling circuit of claim 1 , wherein the further thread is a critical thread.

11 . The safety thread scheduling circuit of claim 1 , wherein the further thread is a non-critical thread.

12 . A processing system comprising the execution units and the safety thread scheduling circuit as set forth in claim 1 .

13 . The processing system of claim 12 , further comprising comparison circuitry configured to compare a first result with a second result, the first result being a result of the execution of the critical thread on the first execution unit, and the second result being a result of the execution of the check thread on the second execution unit;

wherein the comparison circuitry is configured to raise error signal if the first and second results do not match according to said comparison.

14 . The processing system of claim 13 , wherein the first result comprises an indication of memory accesses performed by the critical thread and the second result comprises an indication of memory accesses performed by the check thread.

15 . The processing system of claim 13 , wherein the first and second results are output and compared in compressed form.

16 . A method of manufacturing, using an integrated circuit manufacturing system, a safety thread scheduling circuit as set forth in claim 1 , comprising inputting an integrated circuit dataset definition of said safety thread scheduler into an integrated circuit manufacturing system, so as to configure said integrated circuit manufacturing system to manufacture said safety thread scheduling circuit.

17 . An integrated circuit manufacturing system configured to manufacture a safety thread scheduling circuit as set forth in claim 1 .

18 . A non-transitory computer readable storage medium having stored thereon a computer readable integrated circuit dataset description that, when processed in an integrated circuit manufacturing system, causes the integrated circuit manufacturing system to manufacture an integrated circuit embodying a processor comprising safety thread scheduling circuitry configured to schedule a check thread for a critical thread being run on one of a plurality of execution units, the check thread being a duplicate of the critical thread;

the safety thread scheduling circuitry being configured to schedule the check thread to begin being run on a second one of the plurality of execution units before the end of a safety time-window for scheduling the check thread; and

the safety thread scheduling circuitry being further configured to allow the check thread, when the check thread is running on the second one of the plurality of execution units, to be interrupted by a further thread and to re-schedule the check thread to be resumed by expiry of a re-scheduling time limit;

wherein the safety thread scheduling circuit is operable to perform the re-scheduling of the check thread by interrupting another thread, other than the critical thread, running on one of the execution units other than the first execution unit, thereby resuming execution of the check thread on the execution unit upon which the other thread was running.

19 . A method comprising:

scheduling a check thread for a critical thread being run on one of a plurality of execution units, the check thread being a duplicate of the critical thread, wherein the scheduling of the check thread comprises scheduling the check thread to begin being run on a second one of the plurality of execution units before the end of a safety time-window for scheduling the check thread; and

when the check thread is running on the second one of the plurality of execution units, interrupting the check thread by a further thread and re-scheduling the check thread to be resumed by expiry of a re-scheduling time limit;

wherein the re-scheduling of the check thread comprises interrupting another thread, other than the critical thread, running on one of the execution units other than the first execution unit, thereby resuming execution of the check thread on the execution unit upon which the other thread was running.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2026
From: KAMARAJ, REVANTH; KADIYALA, VAMSHI; OZKURT, OZGUR
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 073523/0022 →
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
Priority Claims (2)
GB 2219357 · Dec 21, 2022 · national
GB 2219359 · Dec 21, 2022 · national
Continuity (1)
Related Publication 20240231832A1 · Jul 11, 2024
References Cited (18)
US 6205414B1 · Forsman · 2001 [cited by examiner]
US 6615366B1 · Grochowski · 2003 [cited by examiner]
US 7865770B2 · Quach · 2011 [cited by examiner]
US 20050015766A1 · Nash · 2005 [cited by examiner]
US 20050050304A1 · Mukherjee · 2005 [cited by examiner]
US 20050050307A1 · Reinhardt et al. · 2005 [cited by applicant]
US 20130019083A1 · Cain, III · 2013 [cited by examiner]
US 20140007114A1 · Wang · 2014 [cited by examiner]
US 20180293169A1 · Beard · 2018 [cited by examiner]
US 20210004235A1 · Hari et al. · 2021 [cited by applicant]
GB 2555628A · 2018 [cited by applicant]
Hukerikar et al: “An evaluation of lazy fault detection based on Adaptive Redundant Multithreading”, 2014 IEEE High Performance Extreme Computing Conference (HPEC), IEEE, Sep. 9, 2014 (Sep. 9, 2014), pp. 1-6. [cited by applicant]
Oz et al: “A user-assisted thread-level vulnerability assessment tool”, Concurrency and Computation: Practice and Experience, Wiley, London, GB, vol. 31, No. 13, Nov. 20, 2018 (Nov. 20, 2018), page n/a. [cited by applicant]
Prasanth Vet al: “Exploiting Application Tolerance for Functional Safety”, 2021 IEEE International Test Conference (ITC), IEEE, Oct. 10, 2021 (Oct. 10, 2021), pp. 399-408. [cited by applicant]
Doran et al., “Dynamic Lockstep Processors for Applications with Functional Safety Relevance,” 2021 26th IEEE International Conference on Emerging Technologies and Factory Automation (ETFA ), Vasteras, Sweden, 2021, pp.… [cited by applicant]
Meyer et al., “Reducing the Cost of Redundant Execution in Safety-Critical Systems using Relaxed Dedication,” IEEE Xplore Conference: Design, Automation & Test in Europe Conference & Exhibition Apr. 2011, DOI: 10.1109/D… [cited by applicant]
Pena-Fernandez et al., “Dual-Core Lockstep Enhanced with Redundant MultiThread Support and Control-Flow Error Detection,” Microelectronics Reliability, vol. 100-101, 113447, 2019, https://doi.org/10.1016/j.microrel.2019… [cited by applicant]
Subramanyan et al., “Multiplexed Redundant Execution: A Technique for Efficient Fault Tolerance in Chip Multiprocessors,” 2010 Design, Automation & Test in Europe Conference & Exhibition (Date 2010), Dresden, Germany, 2… [cited by applicant]