IP Library Granted Patent US 12,619,463
Granted Patent B2
US 12,619,463 · App. 18/800,423 · Granted May 5, 2026

Thread creation on local or remote compute elements by a multi-threaded, self-scheduling processor

Inventor: Tony M. Brewer (Plano, TX)
Assignee: Micron Technology, Inc.
G06F9/4881G06F9/30043G06F9/30123G06F9/30196G06F9/3836G06F9/3851G06F17/142G06F2209/5011
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,619,463
App. No.
18/800,423
Granted
May 5, 2026
Kind
B2
Abstract

Representative apparatus, method, and system embodiments are disclosed for a self-scheduling processor which also provides additional functionality. Representative embodiments include a self-scheduling processor, comprising: a processor core adapted to execute a received instruction; and a core control circuit adapted to automatically schedule an instruction for execution by the processor core in response to a received work descriptor data packet. In another embodiment, the core control circuit is also adapted to schedule a fiber create instruction for execution by the processor core, to reserve a predetermined amount of memory space in a thread control memory to store return arguments, and to generate one or more work descriptor data packets to another processor or hybrid threading fabric circuit for execution of a corresponding plurality of execution threads. Event processing, data path management, system calls, memory requests, and other new instructions are also disclosed.

Claims (52)

1 . An apparatus comprising:

a memory interface coupled to a memory;

a data cache;

an instruction cache; and

one or more processing elements configured to:

access data from the data cache; and

execute instructions from the instruction cache to perform operations comprising:

receiving a thread create instruction from a parent thread executing on the one or more processing elements, the thread create instruction indicating a number of return parameters to be generated by a child thread created by the thread create instruction;

reserving, via the memory interface and based on the number of return parameters, space in the memory to store the return parameters;

creating the child thread based at least in part on the reserving of the space in the memory; and

providing access to the return parameters from the reserved space to the parent thread based at least in part on a thread return instruction from the child thread.

2 . The apparatus of claim 1 , wherein the operations further comprise:

receiving a join instruction from the parent thread;

wherein the providing of the access to the return parameters from the reserved space to the parent thread is in response to the receipt of the join instruction.

3 . The apparatus of claim 2 , wherein the thread create instruction further indicates a caller identifier; and the caller identifier is provided to the parent thread in response to the receipt of the join instruction.

4 . The apparatus of claim 1 , wherein the thread create instruction from the parent thread uses a plurality of bits to indicate the number of return parameters.

5 . The apparatus of claim 1 , wherein the reserving of the space in the memory comprises reserving a predetermined number of bits for each return parameter.

6 . The apparatus of claim 1 , wherein the providing of the access to the return parameters from the reserved space to the parent thread comprises copying data from the reserved space to a register or register state of the parent thread.

7 . The apparatus of claim 1 , wherein the operations further comprise:

in response to the thread return instruction, checking that all operations initiated by the child thread either have been completed or have been acknowledged.

8 . The apparatus of claim 1 , wherein the operations further comprise:

waiting for all threads created by the child thread to complete before sending the thread return instruction from the child thread.

9 . The apparatus of claim 1 , wherein the thread create instruction further indicates whether to start the child thread on a local node or a remote node.

10 . The apparatus of claim 1 , wherein the creating of the child thread comprises:

beginning execution of the child thread from an address read from a register of the parent thread.

11 . The apparatus of claim 1 , wherein the thread create instruction further indicates a number of call arguments, and the call arguments are accessed from registers of the parent thread.

12 . The apparatus of claim 1 , wherein at least one processing element of the one or more processing elements is a hybrid threading processor.

13 . A non-transitory machine-readable medium that stores a plurality of instructions that, when executed by one or more processing elements, cause the one or more processing elements to perform operations comprising:

receiving a thread create instruction from a parent thread that indicates a number of return parameters to be generated by a child thread created by the thread create instruction;

reserving, based on the number of return parameters, space in a memory to store the return parameters;

creating the child thread based at least in part on the reserving of the space in the memory; and

providing access to the return parameters from the reserved space to the parent thread based at least in part on a thread return instruction from the child thread.

14 . The non-transitory machine-readable medium of claim 13 , wherein the operations further comprise:

receiving a join instruction from the parent thread;

wherein the providing of the access to the return parameters from the reserved space to the parent thread is in response to the receipt of the join instruction.

15 . The non-transitory machine-readable medium of claim 13 , wherein the thread create instruction from the parent thread that indicates the number of return parameters uses a plurality of bits to indicate the number of return parameters and selects one of 0, 1, 2, or 4 parameters.

16 . The non-transitory machine-readable medium of claim 13 , wherein the reserving of the space in the memory comprises reserving a predetermined number of bits for each return parameter.

17 . The non-transitory machine-readable medium of claim 13 , wherein the providing of the return parameters from the reserved space to the parent thread comprises copying data from the reserved space to a register or register state of the parent thread.

18 . The non-transitory machine-readable medium of claim 13 , wherein the operations further comprise:

in response to the thread return instruction, checking that all operations initiated by the child thread have either completed or been acknowledged.

19 . A method comprising:

receiving, by one or more processing elements, a thread create instruction from a parent thread that indicates a number of return parameters to be generated by a child thread created by the thread create instruction;

reserving, by the one or more processing elements, based on the number of return parameters, space in a memory to store the return parameters;

creating the child thread based at least in part on the reserving of the space in the memory; and

providing access to the return parameters from the reserved space to the parent thread based at least in part on a thread return instruction from the child thread.

20 . The method of claim 19 , further comprising:

waiting for all threads created by the child thread to complete before sending the thread return instruction from the child thread.

21 . The method of claim 19 , wherein the thread create instruction further indicates whether to start the child thread on a local node or a remote node.

22 . The method of claim 19 , wherein the creating of the child thread comprises:

beginning execution of the child thread from an address read from a register of the parent thread.

23 . The method of claim 19 , wherein:

the thread create instruction further indicates a number of call arguments; and the call arguments are accessed from registers of the parent thread.

Continuity (4)
Continuation 17994143 · Nov 25, 2022
Continuation 16399817 · Apr 30, 2019
Provisional Application 62667850 · May 7, 2018
Related Publication 20240403115A1 · Dec 5, 2024
References Cited (87)
US 5742822A · Motomura · 1998 [cited by applicant]
US 6131155A · Alexander et al. · 2000 [cited by applicant]
US 6223258B1 · Palanca et al. · 2001 [cited by applicant]
US 6247121B1 · Akkary et al. · 2001 [cited by applicant]
US 6973650B1 · Parkes et al. · 2005 [cited by applicant]
US 8108659B1 · Le Grand · 2012 [cited by applicant]
US 8327187B1 · Metcalf · 2012 [cited by applicant]
US 11513840B2 · Brewer · 2022 [cited by applicant]
US 20010005853A1 · Parkes et al. · 2001 [cited by applicant]
US 20030217189A1 · Kelley et al. · 2003 [cited by applicant]
US 20040034759A1 · Katzman et al. · 2004 [cited by applicant]
US 20040078790A1 · Wu et al. · 2004 [cited by applicant]
US 20040103410A1 · Sakai · 2004 [cited by examiner]
US 20050071438A1 · Liao et al. · 2005 [cited by applicant]
US 20050120194A1 · Kissell · 2005 [cited by examiner]
US 20060056406A1 · Lee et al. · 2006 [cited by applicant]
US 20060179274A1 · Jones et al. · 2006 [cited by applicant]
US 20080109809A1 · Morishita et al. · 2008 [cited by applicant]
US 20080155196A1 · Black et al. · 2008 [cited by applicant]
US 20090049279A1 · Steiss et al. · 2009 [cited by applicant]
US 20090254601A1 · Moeller et al. · 2009 [cited by applicant]
US 20100122067A1 · Lindholm et al. · 2010 [cited by applicant]
US 20100205580A1 · Mcallister et al. · 2010 [cited by applicant]
US 20100223598A1 · Levine et al. · 2010 [cited by applicant]
US 20100274961A1 · Golla et al. · 2010 [cited by applicant]
US 20110179430A1 · Kim et al. · 2011 [cited by applicant]
US 20110222553A1 · Mital et al. · 2011 [cited by applicant]
US 20120079503A1 · Dally et al. · 2012 [cited by applicant]
US 20120089812A1 · Smith · 2012 [cited by applicant]
US 20120144396A1 · Bohrer · 2012 [cited by examiner]
US 20120180072A1 · Sander et al. · 2012 [cited by applicant]
US 20120230341A1 · Mital et al. · 2012 [cited by applicant]
US 20130125133A1 · Schuster · 2013 [cited by applicant]
US 20130339971A1 · Boland et al. · 2013 [cited by applicant]
US 20140153582A1 · Jones · 2014 [cited by applicant]
US 20150379670A1 · Koker et al. · 2015 [cited by applicant]
US 20160139201A1 · Lin et al. · 2016 [cited by applicant]
US 20190340024A1 · Brewer · 2019 [cited by applicant]
US 20230091432A1 · Brewer · 2023 [cited by applicant]
EP 2441013B1 · 2014 [cited by applicant]
EP 2140347B1 · 2017 [cited by applicant]
WO WO1993002414A2 · 1993 [cited by applicant]
WO WO1997024671A1 · 1997 [cited by applicant]
WO WO2003102758A1 · 2003 [cited by applicant]
Notification of Transmittal of the International Preliminary Report on Patentability from the International Preliminary Examining Authority for International Application No. PCT/US2019/030860, dated Aug. 28, 2020, pp. 1… [cited by applicant]
Written Opinion of the International Preliminary Examining Authority, for International Application No. PCT/US2019/030860, dated Apr. 8, 2020, pp. 1-14. [cited by applicant]
Notification of Transmittal of the International Search Report and Written Opinion of the International Searching Authority, or the Declaration for International Application No. PCT/US2019/030860, dated Aug. 21, 2019, p… [cited by applicant]
Notification of Transmittal of the International Preliminary Report on Patentability from the International Preliminary Examining Authority for International Application No. PCT/US2019/030865, dated Aug. 5, 2020, pp. 1-… [cited by applicant]
Written Opinion of the International Preliminary Examining Authority, for International Application No. PCT/US2019/030865, dated Apr. 22, 2020, pp. 1-14. [cited by applicant]
Notification of Transmittal of the International Search Report and Written Opinion of the International Searching Authority, or the Declaration for International Application No. PCT/US2019/030865, dated Aug. 21, 2019, p… [cited by applicant]
Notification of Transmittal of the International Preliminary Report on Patentability from the International Preliminary Examining Authority for International Application No. PCT/US2019/030870, dated Aug. 28, 2020, pp. 1… [cited by applicant]
Written Opinion of the International Preliminary Examining Authority, for International Application No. PCT/US2019/030870, dated Apr. 8, 2020, pp. 1-13. [cited by applicant]
Notification of Transmittal of the International Search Report and Written Opinion of the International Searching Authority, or the Declaration for International Application No. PCT/US2019/030870, dated Aug. 21, 2019, p… [cited by applicant]
Notification of Transmittal of the International Preliminary Report on Patentability from the International Preliminary Examining Authority for International Application No. PCT/US2019/030875, dated Aug. 28, 2020, pp. 1… [cited by applicant]
Written Opinion of the International Preliminary Examining Authority, for International Application No. PCT/US2019/030875, dated Apr. 8, 2020, pp. 1-13. [cited by applicant]
Notification of Transmittal of the International Search Report and Written Opinion of the International Searching Authority, or the Declaration for International Application No. PCT/US2019/030875, dated Aug. 21, 2019, p… [cited by applicant]
Notification of Transmittal of the International Preliminary Report on Patentability from the International Preliminary Examining Authority for International Application No. PCT/US2019/030880, dated Aug. 18, 2020, pp. 1… [cited by applicant]
Written Opinion of the International Preliminary Examining Authority, for International Application No. PCT/US2019/030880, dated Apr. 20, 2020, pp. 1-16. [cited by applicant]
Notification of Transmittal of the International Search Report and Written Opinion of the International Searching Authority, or the Declaration for International Application No. PCT/US2019/030880, dated Aug. 22, 2019, p… [cited by applicant]
Notification of Transmittal of the International Preliminary Report on Patentability from the International Preliminary Examining Authority for International Application No. PCT/US2019/030887, dated Aug. 17, 2020, pp. 1… [cited by applicant]
Written Opinion of the International Preliminary Examining Authority, for International Application No. PCT/US2019/030887, dated Apr. 29, 2020, pp. 1-16. [cited by applicant]
Notification of Transmittal of the International Search Report and Written Opinion of the International Searching Authority, or the Declaration for International Application No. PCT/US2019/030887, dated Aug. 21, 2019, p… [cited by applicant]
Notification of Transmittal of the International Preliminary Report on Patentability from the International Preliminary Examining Authority for International Application No. PCT/US2019/030893, dated Aug. 17, 2020, pp. 1… [cited by applicant]
Written Opinion of the International Preliminary Examining Authority, for International Application No. PCT/US2019/030893, dated Apr. 29, 2020, pp. 1-15. [cited by applicant]
Notification of Transmittal of the International Search Report and Written Opinion of the International Searching Authority, or the Declaration for International Application No. PCT/US2019/030893, dated Aug. 21, 2019, p… [cited by applicant]
Notification of Transmittal of the International Preliminary Report on Patentability from the International Preliminary Examining Authority for International Application No. PCT/US2019/030935, dated Aug. 28, 2020, pp. 1… [cited by applicant]
Written Opinion of the International Preliminary Examining Authority, for International Application No. PCT/US2019/030935, dated Apr. 8, 2020, pp. 1-12. [cited by applicant]
Notification of Transmittal of the International Search Report and Written Opinion of the International Searching Authority, or the Declaration for International Application No. PCT/US2019/030935, dated Aug. 21, 2019, p… [cited by applicant]
Notification of Transmittal of the International Preliminary Report on Patentability from the International Preliminary Examining Authority for International Application No. PCT/US2019/030937, dated Aug. 17, 2020, pp. 1… [cited by applicant]
Written Opinion of the International Preliminary Examining Authority, for International Application No. PCT/US2019/030937, dated Apr. 24, 2020, pp. 1-15. [cited by applicant]
Notification of Transmittal of the International Search Report and Written Opinion of the International Searching Authority, or the Declaration for International Application No. PCT/US2019/030937, dated Aug. 21, 2019, p… [cited by applicant]
Notification of Transmittal of the International Preliminary Report on Patentability from the International Preliminary Examining Authority for International Application No. PCT/US2019/030942, dated Aug. 6, 2020, pp. 1-… [cited by applicant]
Written Opinion of the International Preliminary Examining Authority, for International Application No. PCT/US2019/030942, dated Apr. 22, 2020, pp. 1-14. [cited by applicant]
Notification of Transmittal of the International Search Report and Written Opinion of the International Searching Authority, or the Declaration for International Application No. PCT/US2019/030942, dated Aug. 21, 2019, p… [cited by applicant]
Notification of Transmittal of the International Preliminary Report on Patentability from the International Preliminary Examining Authority for International Application No. PCT/US2019/030944, dated Aug. 28, 2020, pp. 1… [cited by applicant]
Written Opinion of the International Preliminary Examining Authority, for International Application No. PCT/US2019/030944, dated Apr. 8, 2020, pp. 1-17. [cited by applicant]
Notification of Transmittal of the International Search Report and Written Opinion of the International Searching Authority, or the Declaration for International Application No. PCT/US2019/030944, dated Aug. 19, 2019, p… [cited by applicant]
Notification Concerning Informal Communications with the Applicant, from the International Preliminary Examining Authority for International Application No. PCT/US2019/030860, dated Aug. 19, 2020, pp. 1-3. [cited by applicant]
Notification Concerning Informal Communications with the Applicant, from the International Preliminary Examining Authority for International Application No. PCT/US2019/030870, dated Aug. 19, 2020, pp. 1-3. [cited by applicant]
Notification Concerning Informal Communications with the Applicant, from the International Preliminary Examining Authority for International Application No. PCT/US2019/030875, dated Aug. 19, 2020, pp. 1-3. [cited by applicant]
Notification Concerning Informal Communications with the Applicant, from the International Preliminary Examining Authority for International Application No. PCT/US2019/030880, dated Aug. 18, 2020, pp. 1-3. [cited by applicant]
Notification Concerning Informal Communications with the Applicant, from the International Preliminary Examining Authority for International Application No. PCT/US2019/030887, dated Aug. 17, 2020, pp. 1-3. [cited by applicant]
Notification Concerning Informal Communications with the Applicant, from the International Preliminary Examining Authority for International Application No. PCT/US2019/030893, dated Aug. 17, 2020, pp. 1-3. [cited by applicant]
Notification Concerning Informal Communications with the Applicant, from the International Preliminary Examining Authority for International Application No. PCT/US2019/030935, dated Aug. 19, 2020, pp. 1-3. [cited by applicant]
Notification Concerning Informal Communications with the Applicant, from the International Preliminary Examining Authority for International Application No. PCT/US2019/030937, dated Aug. 12, 2020, pp. 1-3. [cited by applicant]
Notification Concerning Informal Communications with the Applicant, from the International Preliminary Examining Authority for International Application No. PCT/US2019/030944, dated Aug. 19, 2020, pp. 1-3. [cited by applicant]
David, Slogsnat, et al., “A Versatile, Low Latency HyperTransport Core”, Section 2.1 The HyperTransport Protocol, ACM, (2007), 8 pgs. [cited by applicant]