Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
First Claim
1. A method for performing preemptive scheduling of a plurality of processes managed by a symmetric multiprocessor operating system on a multithreading microprocessor, the method comprising:
- receiving, by an exception domain, a periodic interrupt request from a timer, the exception domain comprising a plurality of thread contexts of the microprocessor;
determining a subset of eligible threads from the plurality of thread contexts of the microprocessor;
selecting one of the plurality of thread contexts from the subset of eligible threads;
executing a first interrupt handler on the one of the plurality of thread contexts to service the interrupt request, said executing comprising;
scheduling a new process to execute on the one thread context;
writing an address of a second interrupt handler to a restart address register of each thread context other than the one of the plurality of thread contexts; and
scheduling, by the second interrupt handler, a respective new process to execute on each thread context other than the one of the plurality of thread contexts.
13 Assignments
0 Petitions
Accused Products
Abstract
A multiprocessor computer system includes an exception domain having multiple thread contexts (TCs) each having a restart address register, and a timer that generates a periodic interrupt request to the exception domain. The exception domain selects an eligible TC to service the interrupt request, which is non-specific regarding which TC to select. A first interrupt handler executes on the selected TC to service the interrupt request to schedule a set of processes assigned by the SMP OS for execution on the selected TC, and write an address of a second interrupt handler to the restart address register of each TC other than the selected TC. The second interrupt handler schedules a plurality of sets of processes assigned by the SMP OS for execution on respective ones of the TCs other than the selected TC.
169 Citations
40 Claims
-
1. A method for performing preemptive scheduling of a plurality of processes managed by a symmetric multiprocessor operating system on a multithreading microprocessor, the method comprising:
-
receiving, by an exception domain, a periodic interrupt request from a timer, the exception domain comprising a plurality of thread contexts of the microprocessor; determining a subset of eligible threads from the plurality of thread contexts of the microprocessor; selecting one of the plurality of thread contexts from the subset of eligible threads; executing a first interrupt handler on the one of the plurality of thread contexts to service the interrupt request, said executing comprising; scheduling a new process to execute on the one thread context; writing an address of a second interrupt handler to a restart address register of each thread context other than the one of the plurality of thread contexts; and scheduling, by the second interrupt handler, a respective new process to execute on each thread context other than the one of the plurality of thread contexts. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A multiprocessor computer system for performing preemptive scheduling of a plurality of processes managed by a symmetric multiprocessor operating system (SMP OS) running on the system, the system comprising:
a multithreading microprocessor, comprising; an exception domain, comprising a plurality of thread contexts each comprising a restart address register; and a timer, configured to generate a periodic interrupt request to said exception domain, wherein said exception domain is configured to; determine a subset of eligible threads from the plurality of thread contexts, and select one of the plurality of thread contexts from the subset of eligible threads to service said interrupt request, wherein said timer interrupt request is nonspecific regarding which of said plurality of thread contexts to select to service said request; and a memory, coupled to said microprocessor, for storing a first interrupt handler of the SMP OS for execution on said selected thread context to service said interrupt request, wherein said first interrupt handler is configured to; schedule a set of processes assigned by the SMP OS for execution on said selected thread context; and write an address of a second interrupt handler to said restart address register of each of said plurality of thread contexts other than said selected thread context, wherein said second interrupt handler is configured to schedule a plurality of sets of processes assigned by the SMP OS for execution on respective ones of said plurality of thread contexts other than said selected thread context. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37)
-
38. A computer program product for use with a computing device, the computer program product comprising:
-
a non-transitory computer readable storage medium, having computer readable program code embodied in said medium, wherein the computer readable program code is configured to cause a computer executing the computer readable program code to perform a method of preemptive scheduling of a plurality of processes managed by a symmetric multiprocessor operating system on a multithreading microprocessor, wherein the method comprises; receiving, by an exception domain, a periodic interrupt request from a timer, the exception domain comprising a plurality of thread contexts of the microprocessor; determining a subset of eligible threads from the plurality of thread contexts of the microprocessor; selecting one of the plurality of thread contexts from the subset of eligible threads; executing a first interrupt handler on the one of the plurality of thread contexts to service the interrupt request, said executing comprising; scheduling a new process to execute on the one thread context; and writing an address of a second interrupt handler to a restart address register of each thread context other than the one of the plurality of thread contexts; and scheduling, by the second interrupt handler, a respective new process to execute on each thread context other than the one of the plurality of thread contexts. - View Dependent Claims (39, 40)
-
Specification