IP Library Granted Patent US 12,326,778
Granted Patent B2
US 12,326,778 · App. 18/607,880 · Granted Jun 10, 2025

Processing tasks in a processing system

Inventors: Ian King (Hertfordshire, GB); Donald Scorgie (Hertfordshire, GB)
Assignee: Imagination Technologies Limited
G06F11/079G06F9/5038G06F11/073G06F12/023G06F2212/1041
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,326,778
App. No.
18/607,880
Granted
Jun 10, 2025
Kind
B2
Abstract

A method of processing an input task in a processing system involves duplicating the input task so as to form a first task and a second task; allocating memory including a first block of memory configured to store read-write data to be accessed during the processing of the first task; a second block of memory configured to store a copy of the read-write data to be accessed during the processing of the second task; and a third block of memory configured to store read-only data to be accessed during the processing of both the first task and the second task; and processing the first task and the second task at processing logic of the processing system so as to, respectively, generate first and second outputs.

Claims (41)

1. A method of allocating memory to be accessed during processing of a first task and a second task, the first task and the second task being duplicates, the method comprising:

allocating a first block of memory configured to store read-write data to be accessed during the processing of the first task;

allocating a second block of memory configured to store a copy of the read-write data to be accessed during the processing of the second task; and

allocating a third block of memory configured to store read-only data to be accessed during the processing of both the first task and the second task.

2. The method of claim 1 , comprising duplicating an input task so as to form the first task and the second task.

3. The method of claim 2 , wherein duplicating the input task comprises invoking the input task for processing twice without creating a copy of the input task.

4. The method of claim 1 , wherein the second task is defined by a copy of each instruction or line of code defining the first task.

5. The method of claim 1 , the method further comprising, prior to processing the first and second task, storing read-write data at a memory address of the first block of memory and storing a copy of that read-write data at a corresponding memory address of the second block of memory.

6. The method of claim 1 , wherein the first block of memory and the second block of memory are allocated in a heap of memory, each memory address of the second block of memory being offset from a corresponding memory address in the first block of memory by a fixed memory address stride.

7. The method of claim 6 , wherein the first task and second task are duplicates of an input task, and wherein a plurality of input tasks are processed at a processing system and the fixed memory address stride is the same for each pair of first and second tasks that are duplicates of the respective input tasks.

8. The method of claim 6 , wherein the fixed memory address stride is half the size of the heap of memory.

9. The method of claim 1 , the method further comprising processing the first task and the second task at processing logic of a processing system so as to, respectively, generate first and second outputs.

10. The method of claim 9 , wherein the processing logic comprises a first processing element and a second processing element, wherein said processing the first task and the second task at processing logic of the processing system comprises processing the first task at the first processing element and processing the second task at the second processing element.

11. The method of claim 9 , the method further comprising:

receiving the second output;

identifying, in the second output, a reference to a memory address in the first block of memory;

updating that reference; and

accessing, using the updated reference, a corresponding memory address in the second block of memory.

12. The method of claim 11 , wherein the first block of memory and the second block of memory are allocated in a heap of memory, each memory address of the second block of memory being offset from a corresponding memory address in the first block of memory by a fixed memory address stride, the method further comprising using the fixed memory address stride to update the reference, in the second output, to a memory address in the first block of memory.

13. The method of claim 9 , the method further comprising:

submitting, concurrently, the first task and the second task to the processing logic.

14. The method of claim 9 , wherein the first and second outputs comprise intermediate outputs generated during the processing of, respectively, the first and second tasks, and optionally wherein an intermediate output is one or more of a load, store or atomic instruction generated during the processing of a task.

15. The method of claim 9 , the method further comprising:

forming first and second signatures which are characteristic of, respectively, the first and second outputs;

comparing the first and second signatures; and

raising a fault signal if the first and second signatures do not match.

16. The method of claim 15 , the method further comprising forming the first and second signatures prior to the first and second outputs accessing a memory hierarchy of the processing system.

17. The method of claim 1 , the method further comprising:

fetching data from the first, second and third blocks of memory into a cache configured to be accessed by processing logic during the processing of the first task and the second task.

18. A processing system configured to allocate memory to be accessed during processing of a first task and a second task, the first task and the second task being duplicates, the processing system comprising:

a memory;

a memory allocation unit configured to allocate blocks of memory in the memory, including:

a first block of memory in the memory configured to store read-write data to be accessed during the processing of the first task,

a second block of memory in the memory configured to store a copy of the read-write data to be accessed during the processing of the second task, and

a third block of memory in the memory configured to store read-only data to be accessed during the processing of both the first task and the second task.

19. The processing system of claim 18 , wherein the processing system further comprises processing logic configured to process the first task so as to generate a first output, and to process the second task so as to generate a second output.

20. A non-transitory computer readable storage medium having stored thereon a computer readable dataset description of an integrated circuit that, when processed in an integrated circuit manufacturing system, causes the integrated circuit manufacturing system to manufacture a processing system configured to allocate memory to be accessed during processing of a first task and a second task, the first task and the second task being duplicates, the processing system comprising:

a memory allocation unit configured to allocate memory, including:

a first block of memory configured to store read-write data to be accessed during the processing of the first task,

a second block of memory configured to store a copy of the read-write data to be accessed during the processing of the second task, and

a third block of memory configured to store read-only data to be accessed during the processing of both the first task and the second task.

Assignments (1)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
Priority Claims (2)
GB 2019527 · Dec 10, 2020 · national
GB 2109357 · Jun 29, 2021 · national
Continuity (2)
Continuation 17548043 · Dec 10, 2021
Related Publication 20240220353A1 · Jul 4, 2024
References Cited (25)
US 9053107B1 · Le · 2015 [cited by examiner]
US 20050015663A1 · Armangau · 2005 [cited by examiner]
US 20080133975A1 · Pfeiffer et al. · 2008 [cited by applicant]
US 20090031310A1 · Lev · 2009 [cited by examiner]
US 20090094589A1 · Gupta · 2009 [cited by examiner]
US 20110145358A1 · Landau et al. · 2011 [cited by applicant]
US 20130198571A1 · Brewerton · 2013 [cited by examiner]
US 20130268807A1 · Spencer et al. · 2013 [cited by applicant]
US 20140181581A1 · Flautner · 2014 [cited by examiner]
US 20150039934A1 · Resch · 2015 [cited by examiner]
US 20150227414A1 · Varma · 2015 [cited by examiner]
US 20150234719A1 · Coronado · 2015 [cited by examiner]
US 20150269018A1 · Ellis · 2015 [cited by examiner]
US 20160055047A1 · Okamoto · 2016 [cited by applicant]
US 20160092285A1 · Hartono · 2016 [cited by examiner]
US 20160154710A1 · Wade · 2016 [cited by examiner]
US 20160170828A1 · Carlough · 2016 [cited by examiner]
US 20200117509A1 · Wimmer et al. · 2020 [cited by applicant]
US 20200174897A1 · McNamara et al. · 2020 [cited by applicant]
EP 3663921A1 · 2020 [cited by applicant]
JP H07168731A · 1995 [cited by applicant]
JP 20080513899 · 2008 [cited by applicant]
JP 2012168605A · 2012 [cited by applicant]
JP 2020091868A · 2020 [cited by applicant]
WO 2006032585A1 · 2006 [cited by applicant]