IP Library Granted Patent US 12,360,773
Granted Patent B2
US 12,360,773 · App. 18/387,045 · Granted Jul 15, 2025

Thread commencement using a work descriptor packet in a self-scheduling processor

Inventor: Tony M. Brewer (Plano, TX)
Assignee: Micron Technology, Inc.
G06F9/3836G06F9/30101G06F9/3851G06F9/4881G06F9/542G06F9/546G06F12/0875G06F13/4027G06F15/82G06F2212/452
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,360,773
App. No.
18/387,045
Granted
Jul 15, 2025
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 (54)

1. A system, comprising:

an interconnection network;

a first, main memory circuit coupled to the interconnection network, the main memory circuit configured to store operand data; and

a first processor circuit coupled to the interconnection network, the first processor circuit comprising:

a processor core configured to execute a plurality of instructions; and

a core control circuit coupled to the processor core, the core control circuit comprising:

a second, thread control memory circuit comprising a thread identifier pool register configured to store a plurality of thread identifiers, a program count register configured to store a received program count for a corresponding execution thread, and a data cache or a general-purpose register configured to store at least one received argument for the corresponding execution thread;

an execution queue coupled to the thread control memory circuit, the execution queue configured to store one or more thread identifiers, of the plurality of thread identifiers; and

a control logic and thread selection circuit coupled to the execution queue, the control logic and thread selection circuit configured, in response to receiving a work descriptor data packet having the received program count and the at least one received argument for the corresponding execution thread, to automatically schedule execution of the corresponding execution thread by assigning a thread identifier of the plurality of thread identifiers to the corresponding execution thread, placing the thread identifier in the execution queue, and periodically selecting the thread identifier of the one or more thread identifiers in the execution queue for execution by the processor core of an instruction of the corresponding execution thread, of the plurality of instructions, the processor core configured to commence execution of the instruction corresponding to the received program count using the at least one received argument of the corresponding execution thread and without accessing the main memory circuit to obtain operand data.

2. The system of claim 1 , further comprising:

a second, host processor circuit coupleable to the interconnection network, the second, host processor circuit configured to generate and transmit a plurality of work descriptor packets on the interconnection network to the first processor circuit.

3. The system of claim 1 , further comprising:

an interconnection network interface coupled to the interconnection network to receive the work descriptor data packet, the interconnection network interface configured to decode the received work descriptor data packet into the received program count and the at least one received argument for the corresponding execution thread.

4. The system of claim 3 , wherein the interconnection network interface is further configured to generate a return work descriptor packet for a selected execution thread of the plurality of execution threads in response to an execution of a return instruction by the processor core to complete execution of the selected execution thread.

5. The system of claim 4 , wherein the interconnection network interface is further configured to receive an event data packet, and to decode the received event data packet into an event identifier and any received argument; and wherein the control logic and thread selection circuit is further configured to automatically commence execution by the corresponding processor core of a single instruction, of the plurality of instructions, in response to the received event data packet.

6. The system of claim 5 , wherein the thread control memory circuit further comprises an event mask register and wherein the control logic and thread selection circuit is further configured to use an event mask stored in the event mask register to respond to the received event data packet.

7. The system of claim 3 , wherein the interconnection network interface is further configured to store the received program count and the at least one received argument in the thread control memory circuit, for each execution thread of the plurality of an execution threads, using a corresponding thread identifier as an index to the thread control memory circuit.

8. The system of claim 3 , wherein the core control circuit further comprises:

a third, network response memory circuit comprising one or more transaction identifier registers configured to store a plurality of transaction identifiers, each transaction identifier of the plurality of transaction identifiers associated with a selected thread identifier of an execution thread which generated a memory request;

an instruction cache coupled to the processor core and to the control logic and thread selection circuit, the instruction cache configured to receive the initial program count and provide to the processor core a corresponding single instruction for execution, of the plurality of instructions; and

a network command queue configured to store one or more requests or return information for transmission by the interconnection network interface on the interconnection network.

9. The system of claim 1 , wherein the control logic and thread selection circuit is further configured to automatically and repeatedly select each corresponding thread identifier of the one or more thread identifiers in the execution queue for single instruction execution by the processor core of each corresponding execution thread while the corresponding thread identifier is in the execution queue.

10. The system of claim 1 , wherein the processor core is further configured to execute a fiber create instruction and wherein the core control circuit is further configured to generate one or more call work descriptor data packets to another circuit for execution of a corresponding plurality of execution threads, each call work descriptor packet of the one or more call work descriptor data packets having a program count and one or more arguments or memory addresses.

11. The system of claim 10 , wherein the control logic and thread selection circuit is further configured to reserve a predetermined amount of memory space in the thread control memory circuit to store return arguments.

12. The system of claim 1 , wherein the control logic and thread selection circuit is further configured to assign a valid state or a pause state to each thread identifier of the one or more thread identifiers, and for as long as the valid state remains, to return the valid state thread identifier to the execution queue for continued single instruction execution by the processor core, and to pause thread execution by not returning the pause state thread identifier to the execution queue until its state has returned to valid.

13. The system of claim 12 , wherein the control logic and thread selection circuit is further configured to assign the pause state to a thread identifier, of the one or more thread identifiers, when the processor core has executed a memory load instruction or a memory store instruction for the corresponding execution thread.

14. The system of claim 12 , wherein the control logic and thread selection circuit is further configured to change the status of a thread identifier, of the plurality of thread identifiers, from the pause state to the valid state in response to a received event data packet to resume execution of a single instruction of the corresponding execution thread or in response to an event number of the received event data packet to resume execution of the corresponding execution thread.

15. The system of claim 1 , wherein the control logic and thread selection circuit is further configured to end execution of a selected thread and to return a corresponding thread identifier of the selected thread, of the plurality of thread identifiers, to the thread identifier pool register in response to an execution of a return instruction by the processor core.

16. The system of claim 15 , wherein the control logic and thread selection circuit is further configured to clear one or more registers of the thread control memory indexed by the corresponding thread identifier of the selected thread in response to the execution of the return instruction by the processor core.

17. The system of claim 1 , wherein the execution queue further comprises:

a first priority queue configured to store one or more thread identifiers for first priority execution threads; and

a second priority queue configured to store one or more thread identifiers for second priority execution threads.

18. The system of claim 17 , wherein the control logic and thread selection circuit further comprises:

thread selection control circuitry coupled to the execution queue, the thread selection control circuitry configured to select a thread identifier, of the one or more thread identifiers for first priority execution threads, from the first priority queue at a first frequency for execution by the processor core of a next instruction of the corresponding execution thread, and to select a thread identifier, of the one or more thread identifiers for second priority execution threads from the second priority queue at a second frequency for execution by the processor core of the next instruction of the corresponding execution thread, the second frequency lower than the first frequency.

19. A system, comprising:

an interconnection network;

a main memory circuit coupled to the interconnection network, the main memory circuit configured to store operand data; and

a processor circuit coupled to the interconnection network, the processor circuit comprising:

a processor core configured to execute a plurality of instructions;

an interconnection network interface coupled to the interconnection network to receive a work descriptor data packet, the interconnection network interface configured to decode the received work descriptor data packet into an initial program count and at least one initial argument for a corresponding execution thread of a plurality of execution threads;

a thread control memory circuit coupled to the interconnection network interface, the thread control memory circuit comprising a thread identifier pool register configured to store a plurality of thread identifiers, a program count register configured to store the initial program count, and a data cache or a general-purpose register configured to store the at least one initial argument;

an execution queue coupled to the thread control memory circuit, the execution queue configured to store one or more thread identifiers, of the plurality of thread identifiers;

an instruction cache coupled to the processor core, the instruction cache configured to receive the initial program count and provide to the processor core a corresponding single instruction for execution, of the plurality of instructions; and

a control logic and thread selection circuit coupled to the execution queue, to the instruction cache, and to the thread control memory circuit, the control logic and thread selection circuit configured, in response to the received work descriptor data packet, to automatically schedule execution of the corresponding execution thread by assigning a thread identifier of the plurality of thread identifiers to the corresponding execution thread, placing the thread identifier in the execution queue, periodically selecting each thread identifier of the one or more thread identifiers in the execution queue and accessing the thread control memory circuit using the selected thread identifier as an index to select the initial program count for execution by the processor core of the single instruction of the corresponding execution thread, of the plurality of instructions, the processor core configured to automatically commence execution of the single instruction corresponding to the initial program count for the corresponding execution thread using the at least one initial argument and without accessing the main memory circuit to obtain operand data.

20. A system, comprising:

an interconnection network;

a first processor circuit coupled to the interconnection network, the first processor circuit configured to generate and transmit a plurality of work descriptor packets on the interconnection network;

a main memory circuit coupled to the interconnection network, the main memory circuit configured to store operand data; and

a second processor circuit coupled to the interconnection network, the second processor circuit comprising:

a processor core configured to execute a plurality of instructions;

an interconnection network interface coupled to the interconnection network to receive a work descriptor data packet of the plurality of work descriptor packets, the interconnection network interface configured to determine an initial program count and at least one initial argument from the received work descriptor data packet for a corresponding execution thread;

a thread control memory circuit coupled to the interconnection network interface, the thread control memory comprising a thread identifier pool register configured to store a plurality of thread identifiers, a program count register configured to store the initial program count, and a data cache or a general-purpose register configured to store the at least one initial argument;

an execution queue coupled to the thread control memory, the execution queue configured to store one or more thread identifiers, of the plurality of thread identifiers;

a control logic and thread selection circuit coupled to the execution queue and to the thread control memory circuit, the control logic and thread selection circuit configured, in response to the received work descriptor data packet, to automatically schedule execution of the corresponding execution thread by assigning a thread identifier to the corresponding execution thread of a plurality of execution threads, placing each assigned thread identifier in the execution queue, automatically and periodically selecting each thread identifier of the one or more thread identifiers in the execution queue for execution by the processor core of an instruction of the corresponding execution thread, with the processor core configured to automatically commence execution of the instruction corresponding to the initial program count using the at least one initial argument and other data stored in the data cache or general-purpose register and without accessing the main memory circuit to obtain operand data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 11, 2025
From: BREWER, TONY M.
To: MICRON TECHNOLOGY, INC.
Reel/Frame 071386/0598 →