IP Library Granted Patent US 12,657,056
Granted Patent B2
US 12,657,056 · App. 18/406,807 · Granted Jun 16, 2026

Scheduling tasks using work fullness counter

Inventors: Simon Nield (Kings Langley, GB); Yoong-Chert Foo (London, GB); Adam de Grasse (Kings Langley, GB); Luca Iuliano (Kings Langley, GB)
Assignee: Imagination Technologies Limited
G06F9/4881G06F7/575G06F9/3001G06F9/3016G06F9/3836G06F9/3851
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,657,056
App. No.
18/406,807
Granted
Jun 16, 2026
Kind
B2
Abstract

A method of activating scheduling instructions within a parallel processing unit includes checking if an ALU targeted by a decoded instruction is full by checking a value of an ALU work fullness counter stored in the instruction controller and associated with the targeted ALU. If the targeted ALU is not full, the decoded instruction is sent to the targeted ALU for execution and the ALU work fullness counter associated with the targeted ALU is updated. If, however, the targeted ALU is full, a scheduler is triggered to de-activate the scheduled task by changing the scheduled task from the active state to a non-active state. When an ALU changes from being full to not being full, the scheduler is triggered to re-activate an oldest scheduled task waiting for the ALU by removing the oldest scheduled task from the non-active state.

Claims (41)

1 . A method of scheduling instructions within a parallel processing unit comprising:

checking if a flag in a decoded instruction in a scheduled task in an active state is set;

in response to determining that the flag in the decoded instruction is not set, checking if an Arithmetic Logic Unit (ALU) pipeline targeted by the decoded instruction is full, and in response to determining that the targeted ALU pipeline is full, triggering a scheduler to de-activate the scheduled task; and

in response to determining that the flag in the decoded instruction is set, omitting the checking if the ALU pipeline targeted by the decoded instruction is full and sending the decoded instruction to the targeted ALU pipeline for execution.

2 . The method according to claim 1 , wherein in response to detecting that an ALU pipeline has changed from being full to not being full, triggering the scheduler to re-activate an oldest scheduled task, and further wherein the task that is re-activated is the oldest scheduled task waiting for the ALU pipeline.

3 . The method according to claim 1 , further comprising:

detecting that an ALU pipeline has changed from being full to not being full; and

in response to said determination, sending the decoded instruction to the targeted ALU pipeline for execution and updating an ALU work fullness counter associated with the targeted ALU pipeline.

4 . The method according to claim 1 ,

wherein the sending the decoded instruction to the targeted ALU pipeline for execution is without updating an ALU work fullness counter associated with the targeted ALU pipeline.

5 . The method according to claim 1 , wherein checking if an ALU pipeline targeted by a decoded instruction from a scheduled task in an active state is full is by checking a value of an ALU work fullness counter associated with the targeted ALU pipeline, and comprises:

checking if an ALU pipeline targeted by a decoded instruction from a scheduled task in an active state is full by checking a value of both an ALU work fullness counter and a de-activated scheduled tasks counter associated with the targeted ALU pipeline;

and wherein the method further comprises:

in response to determining that the targeted ALU pipeline is full, updating the de-activated scheduled tasks counter associated with the targeted ALU pipeline; and

after triggering the scheduler to re-activate an oldest scheduled task waiting for the ALU pipeline by removing the oldest scheduled task from the waiting state, updating the de-activated scheduled tasks counter associated with the ALU pipeline.

6 . The method according to claim 1 , further comprising:

in response to detecting that an instruction has been removed from a queue in a particular ALU pipeline, updating the value of an ALU work fullness counter associated with the particular ALU pipeline.

7 . An apparatus comprising:

hardware logic arranged to check if an Arithmetic Logic Unit (ALU) pipeline targeted by a decoded instruction in a scheduled task in an active state is full;

hardware logic arranged, in response to determining that the targeted ALU pipeline is full, to trigger a scheduler to de-activate a scheduled task; and

hardware logic arranged to check if a flag in the decoded instruction is set prior to checking if the ALU pipeline targeted by the decoded instruction is full; and in response to determining that the flag in the decoded instruction is set, to omit the checking if the ALU pipeline targeted by the decoded instruction is full and to send the decoded instruction to the targeted ALU pipeline for execution.

8 . The apparatus according to claim 7 , wherein in response to detecting that an ALU pipeline has changed from being full to not being full, triggering the scheduler to re-activate an oldest scheduled task, and further wherein the task that is re-activated is the oldest scheduled task waiting for the ALU pipeline.

9 . The apparatus according to claim 7 , further comprising:

hardware logic arranged to detect that an ALU pipeline has changed from being full to not being full; and

hardware logic arranged, in response to said determination, to send the decoded instruction to the targeted ALU pipeline for execution and update the ALU work fullness counter associated with the targeted ALU pipeline.

10 . The apparatus according to claim 7 ,

wherein the sending the decoded instruction to the targeted ALU pipeline for execution is without updating an ALU work fullness counter associated with the targeted ALU pipeline.

11 . The apparatus according to claim 7 , further comprising:

one or more de-activated scheduled tasks counters; and

hardware logic arranged to check if an ALU pipeline targeted by a decoded instruction from a scheduled task in an active state is full by checking if an ALU pipeline targeted by a decoded instruction from a scheduled task in an active state is full by checking a value of both an ALU work fullness counter and a de-activated scheduled tasks counter associated with the targeted ALU pipeline; and

hardware logic arranged in response to determining that the targeted ALU pipeline is full, to update the de-activated scheduled tasks counter associated with the targeted ALU pipeline; and after triggering the scheduler to re-activate an oldest scheduled task waiting for the ALU pipeline by removing the oldest scheduled task from the waiting state, to update the de-activated scheduled tasks counter associated with the ALU pipeline.

12 . The apparatus according to claim 7 , further comprising:

hardware logic arranged, in response to detecting that an instruction has been removed from a queue in a particular ALU pipeline, to update the value of an ALU work fullness counter associated with the particular ALU pipeline.

13 . 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 an apparatus comprising:

hardware logic arranged to check if an Arithmetic Logic Unit (ALU) pipeline targeted by a decoded instruction in a scheduled task in an active state is full;

hardware logic arranged, in response to determining that the targeted ALU pipeline is full, to trigger a scheduler to de-activate a scheduled task; and

hardware logic arranged to check if a flag in the decoded instruction is set prior to checking if the ALU pipeline targeted by the decoded instruction is full; and in response to determining that the flag in the decoded instruction is set, to omit the checking if the ALU pipeline targeted by the decoded instruction is full and to send the decoded instruction to the targeted ALU pipeline for execution.

14 . The non-transitory computer readable storage medium according to claim 13 , wherein in response to detecting that an ALU pipeline has changed from being full to not being full, triggering the scheduler to re-activate an oldest scheduled task, and further wherein the task that is re-activated is the oldest scheduled task waiting for the ALU pipeline.

15 . The non-transitory computer readable storage medium according to claim 13 , further comprising:

hardware logic arranged to detect that an ALU pipeline has changed from being full to not being full; and

hardware logic arranged, in response to said determination, to send the decoded instruction to the targeted ALU pipeline for execution and update the ALU work fullness counter associated with the targeted ALU pipeline.

Assignments (1)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
Priority Claims (1)
GB 1709650 · Jun 16, 2017 · national
Continuity (4)
Continuation 17529004 · Nov 17, 2021
Continuation 16909434 · Jun 23, 2020
Continuation 16011241 · Jun 18, 2018
Related Publication 20240160472A1 · May 16, 2024
References Cited (69)
US 4041461A · Kratz et al. · 1977 [cited by applicant]
US 5630128A · Farrell et al. · 1997 [cited by applicant]
US 5630130A · Perotto et al. · 1997 [cited by applicant]
US 5822779A · Intrater et al. · 1998 [cited by applicant]
US 5958047A · Panwar et al. · 1999 [cited by applicant]
US 6205520B1 · Palanca et al. · 2001 [cited by applicant]
US 6223258B1 · Palanca et al. · 2001 [cited by applicant]
US 6643745B1 · Palanca et al. · 2003 [cited by applicant]
US 6671795B1 · Marr et al. · 2003 [cited by applicant]
US 6687838B2 · Orenstien et al. · 2004 [cited by applicant]
US 6694425B1 · Eickemeyer · 2004 [cited by applicant]
US 6880067B2 · Burch · 2005 [cited by applicant]
US 6944752B2 · Burch · 2005 [cited by applicant]
US 6990568B2 · Burch · 2006 [cited by applicant]
US 7430652B2 · Hundley · 2008 [cited by applicant]
US 7613904B2 · Jones et al. · 2009 [cited by applicant]
US 7636837B2 · Sunayama et al. · 2009 [cited by applicant]
US 8555290B2 · Uruma et al. · 2013 [cited by applicant]
US 9104470B2 · Maruyama · 2015 [cited by applicant]
US 9104500B1 · Krikellas et al. · 2015 [cited by applicant]
US 9274845B2 · Seo et al. · 2016 [cited by applicant]
US 9336003B2 · Mylius et al. · 2016 [cited by applicant]
US 9417920B2 · Tran · 2016 [cited by examiner]
US 9442755B2 · Lindholm et al. · 2016 [cited by applicant]
US 9575807B2 · Murphy · 2017 [cited by examiner]
US 9606800B1 · Hameenanttila et al. · 2017 [cited by applicant]
US 10437599B2 · Di · 2019 [cited by applicant]
US 10585709B2 · Seo et al. · 2020 [cited by applicant]
US 10672175B2 · Burke et al. · 2020 [cited by applicant]
US 10860370B2 · Mower et al. · 2020 [cited by applicant]
US 10884797B2 · Nield et al. · 2021 [cited by applicant]
US 20020144094A1 · Burch · 2002 [cited by applicant]
US 20020144095A1 · Burch · 2002 [cited by applicant]
US 20020144096A1 · Burch · 2002 [cited by applicant]
US 20030237084A1 · Neiman et al. · 2003 [cited by applicant]
US 20040015968A1 · Neiman et al. · 2004 [cited by applicant]
US 20060101238A1 · Bose et al. · 2006 [cited by applicant]
US 20060179279A1 · Jones et al. · 2006 [cited by applicant]
US 20070118726A1 · Abernathy et al. · 2007 [cited by applicant]
US 20090006672A1 · Blumrich et al. · 2009 [cited by applicant]
US 20100262976A1 · Maruyama · 2010 [cited by applicant]
US 20120110586A1 · Coon · 2012 [cited by examiner]
US 20120110588A1 · Coon et al. · 2012 [cited by applicant]
US 20120324458A1 · Peterson et al. · 2012 [cited by applicant]
US 20130111186A1 · Hickey et al. · 2013 [cited by applicant]
US 20130166882A1 · Choquette et al. · 2013 [cited by applicant]
US 20130262834A1 · Lefebvre et al. · 2013 [cited by applicant]
US 20140215188A1 · Mylius et al. · 2014 [cited by applicant]
US 20140215488A1 · Maruyama · 2014 [cited by applicant]
US 20140282564A1 · Almog · 2014 [cited by examiner]
US 20150074682A1 · Naruse · 2015 [cited by examiner]
US 20150100965A1 · Tran · 2015 [cited by applicant]
US 20150143383A1 · Seo et al. · 2015 [cited by applicant]
US 20150178132A1 · Cho et al. · 2015 [cited by applicant]
US 20150293785A1 · Murphy · 2015 [cited by applicant]
US 20150331719A1 · Seo et al. · 2015 [cited by applicant]
US 20180365009A1 · Nield et al. · 2018 [cited by applicant]
US 20180365056A1 · Mower et al. · 2018 [cited by applicant]
US 20180365057A1 · Nield et al. · 2018 [cited by applicant]
CN 102844744A · 2012 [cited by applicant]
CN 103140828A · 2013 [cited by applicant]
EP 2887209A2 · 2015 [cited by applicant]
GB 2416230A · 2006 [cited by applicant]
WO 03067426A1 · 2003 [cited by applicant]
WO 2006083541A2 · 2006 [cited by applicant]
‘Structured Computer Organization—Second Edition’ by Andrew S. Tanenbaum, copyright 1984, pp. 10-11. (Year: 1984). [cited by examiner]
Karkanis et al., “Saving Energy with Just in Time Instruction Delivery,” ACM 2002. [cited by applicant]
Chang et al., “The Effects of Explicitly Parallel Mechansisms on the Multi-ALU Processor Cluster Pipeline,” IEEE 1998. [cited by applicant]
NVIDIA: “NVIDIA's Next Generation CUDA Compute Architecture”, Fermi, Nvidia, 2009, pp. 1-21 (Year: 2009). [cited by applicant]