Processor instruction set for controlling an event source to generate events used to schedule threads
First Claim
1. A processor comprising:
- an execution unit;
a thread scheduler configured to schedule a plurality of threads for execution by the execution unit in dependence on a respective runnable status for each respective thread, each thread represented in a respective one of a plurality of sets of thread registers; and
a plurality of event sources being hardware resources comprising one or more ports for transferring data between the processor and a device external to the processor, and/or one or more channels of an interconnect system for communicating between one of said plurality of sets of thread registers representing one of said plurality of threads and another set of thread registers representing another thread;
wherein the execution unit is configured to execute thread scheduling instructions being instructions of an instruction set of the execution unit which manage said runnable statuses;
wherein the thread scheduling instructions of the instruction set include a source event enable instruction, the execution unit being configured to be operated by an opcode of the event enable instruction to send a signal to a specified one of said ports or channels via a direct hardwired connection between the execution unit and the specified port or channel in order to set the specified port or channel to a mode in which it generates a respective event dependent on activity occurring at the specified port or channel, the direct hardwired connection being a connection not via a bus;
wherein each of said ports or channels is operable to be associated with one of the plurality of threads and with a specified one of a plurality of different potential code locations; and
wherein the thread scheduling instructions also include a wait instruction which sets one of said runnable statuses to suspend the respective thread until an associated one of said ports or channels generates its respective event, such that execution of the respective thread continues from the specified one of the plurality of different potential code locations.
1 Assignment
0 Petitions
Accused Products
Abstract
The invention provides a processor comprising: an execution unit, and a thread scheduler configured to schedule a plurality of threads for execution by the execution unit in dependence on a respective runnable status for each thread. The execution unit is configured to execute thread scheduling instructions which manage the runnable statuses. The thread scheduling instructions including at least: one or more source event enable instructions each of which sets an event source to a mode in which it generates an event dependent on activity occurring at that source, and a wait instruction which sets one of said runnable statuses to suspended pending one of the events upon which continued execution of the respective thread depends. The continued execution comprises retrieval of a continuation point vector for the respective thread.
27 Citations
48 Claims
-
1. A processor comprising:
-
an execution unit; a thread scheduler configured to schedule a plurality of threads for execution by the execution unit in dependence on a respective runnable status for each respective thread, each thread represented in a respective one of a plurality of sets of thread registers; and a plurality of event sources being hardware resources comprising one or more ports for transferring data between the processor and a device external to the processor, and/or one or more channels of an interconnect system for communicating between one of said plurality of sets of thread registers representing one of said plurality of threads and another set of thread registers representing another thread; wherein the execution unit is configured to execute thread scheduling instructions being instructions of an instruction set of the execution unit which manage said runnable statuses; wherein the thread scheduling instructions of the instruction set include a source event enable instruction, the execution unit being configured to be operated by an opcode of the event enable instruction to send a signal to a specified one of said ports or channels via a direct hardwired connection between the execution unit and the specified port or channel in order to set the specified port or channel to a mode in which it generates a respective event dependent on activity occurring at the specified port or channel, the direct hardwired connection being a connection not via a bus; wherein each of said ports or channels is operable to be associated with one of the plurality of threads and with a specified one of a plurality of different potential code locations; and wherein the thread scheduling instructions also include a wait instruction which sets one of said runnable statuses to suspend the respective thread until an associated one of said ports or channels generates its respective event, such that execution of the respective thread continues from the specified one of the plurality of different potential code locations. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. A method of controlling a thread scheduler to schedule a plurality of threads for execution by an execution unit within a processor, each thread represented in a respective one of a plurality of sets of thread registers;
- and the processor comprising a plurality of event sources being hardware resources comprising one or more ports for transferring data between the processor and a device external to the processor, and/or one or more channels of an interconnect system for communicating between one of said plurality of sets of thread registers representing one of said plurality of threads and another set of thread registers representing another thread; and
the method comprising;scheduling the plurality of threads in dependence on a respective status for each respective thread; and operating the execution unit to execute thread scheduling instructions being instructions of an instruction set of the execution unit for managing statuses of threads; wherein said thread scheduling instructions include a source event enable instruction having an opcode which operates the execution unit to send a signal to a specified one of said ports or channels via a direct hardwired connection between the execution unit and the specified port or channel in order to set the specified port or channel to a mode in which it generates a respective event dependent on activity occurring at the specified port or channel, the direct hardwired connection being a connection not via a bus; wherein each of said ports or channels is operable to be associated with one of said threads and with a specified one of a plurality of different potential code locations; and wherein the thread scheduling instructions also include a wait instruction which sets one of said runnable statuses to suspend the respective thread until an associated one of said ports or channels generates its respective event, such that execution of the respective thread continues from the specified one of the plurality of different potential code locations. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47)
- and the processor comprising a plurality of event sources being hardware resources comprising one or more ports for transferring data between the processor and a device external to the processor, and/or one or more channels of an interconnect system for communicating between one of said plurality of sets of thread registers representing one of said plurality of threads and another set of thread registers representing another thread; and
-
48. A processor comprising:
-
an execution unit; a thread scheduler configured to schedule a plurality of threads for execution by the execution unit in dependence on a respective runnable status for each thread; and a plurality of event sources for generating events; wherein the execution unit is configured to execute thread scheduling instructions which manage said runnable statuses, the thread scheduling instructions including one or more source event enable instructions each of which sets a specified one of said event sources to a mode in which it generates one of said events dependent on activity occurring at the specified source, and a wait instruction which sets one of said runnable statuses to suspend the respective thread until generation of one of said events upon which continued execution of that thread depends; wherein a continuation point vector for the respective thread is associated with the specified event source, and, if suspended by said wait instruction, said continued execution comprises retrieving the continuation point vector for the respective thread and continuing execution from the continuation point vector; and wherein the thread scheduling instructions further include an input instruction which pauses a thread pending input of data from an event source, and an output instruction which pauses a thread pending the availability of an event source for outputting data, wherein continued execution of a thread does not involve retrieval of a continuation point vector for that thread if paused by said input and output instructions instead of the wait instruction.
-
Specification