Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
First Claim
1. A multiprocessing system, comprising:
- a multithreading microprocessor, comprising;
a first plurality of thread contexts;
a translation lookaside buffer (TLB), shared by said first plurality of TCs; and
an instruction scheduler, coupled to said first plurality of TCs, configured to dispatch to execution units, in a multithreaded fashion, instructions of threads executing on said first plurality of TCs;
a multiprocessor operating system (OS), configured to schedule execution of said threads on said first plurality of TCs, wherein a thread of said threads executing on one of said first plurality of TCs is configured to update said shared TLB, and prior to updating said TLB to;
disable interrupts, to prevent said OS from unscheduling said TLB-updating thread from executing on said first plurality of TCs; and
disable said instruction scheduler from dispatching instructions from any of said first plurality of TCs except from said one of said first plurality of TCs on which said TLB-updating thread is executing;
wherein said multithreading microprocessor further comprises;
a virtual processing element (VPE), bound to said first plurality of TCs, wherein said VPE is an exception domain for said first plurality of TCs;
wherein said TLB-disabling thread disabling interrupts comprises disabling interrupts on said VPE;
wherein said multithreading microprocessor further comprises;
a second plurality of TCs; and
a second VPE, bound to said second plurality of TCs, wherein said second VPE is an exception domain for said second plurality of TCs;
wherein said TLB-disabling thread is further configured, prior to updating said shared TLB, to disable said instruction scheduler from dispatching instructions from any of said first and second plurality of TCs except from said one of said plurality of TCs on which said TLB-updating thread is executing; and
wherein said TLB-disabling thread is further configured, after updating said shared TLB, to restore said instruction scheduler to an instruction-dispatching state said instruction scheduler was in prior to disabling said instruction scheduler from dispatching instructions from any of said first and second plurality of TCs except from said one of said plurality of TCs on which said TLB-updating thread is executing.
13 Assignments
0 Petitions
Accused Products
Abstract
A multiprocessing system is disclosed. The system includes a multithreading microprocessor having a plurality of thread contexts (TCs), a translation lookaside buffer (TLB) shared by the plurality of TCs, and an instruction scheduler, coupled to the plurality of TCs, configured to dispatch to execution units, in a multithreaded fashion, instructions of threads executing on the plurality of TCs. The system also includes a multiprocessor operating system (OS), configured to schedule execution of the threads on the plurality of TCs, wherein a thread of the threads executing on one of the plurality of TCs is configured to update the shared TLB, and prior to updating the TLB to disable interrupts, to prevent the OS from unscheduling the TLB-updating thread from executing on the plurality of TCs, and disable the instruction scheduler from dispatching instructions from any of the plurality of TCs except from the one of the plurality of TCs on which the TLB-updating thread is executing.
-
Citations
33 Claims
-
1. A multiprocessing system, comprising:
-
a multithreading microprocessor, comprising; a first plurality of thread contexts; a translation lookaside buffer (TLB), shared by said first plurality of TCs; and an instruction scheduler, coupled to said first plurality of TCs, configured to dispatch to execution units, in a multithreaded fashion, instructions of threads executing on said first plurality of TCs; a multiprocessor operating system (OS), configured to schedule execution of said threads on said first plurality of TCs, wherein a thread of said threads executing on one of said first plurality of TCs is configured to update said shared TLB, and prior to updating said TLB to; disable interrupts, to prevent said OS from unscheduling said TLB-updating thread from executing on said first plurality of TCs; and disable said instruction scheduler from dispatching instructions from any of said first plurality of TCs except from said one of said first plurality of TCs on which said TLB-updating thread is executing; wherein said multithreading microprocessor further comprises; a virtual processing element (VPE), bound to said first plurality of TCs, wherein said VPE is an exception domain for said first plurality of TCs; wherein said TLB-disabling thread disabling interrupts comprises disabling interrupts on said VPE; wherein said multithreading microprocessor further comprises; a second plurality of TCs; and a second VPE, bound to said second plurality of TCs, wherein said second VPE is an exception domain for said second plurality of TCs; wherein said TLB-disabling thread is further configured, prior to updating said shared TLB, to disable said instruction scheduler from dispatching instructions from any of said first and second plurality of TCs except from said one of said plurality of TCs on which said TLB-updating thread is executing; and wherein said TLB-disabling thread is further configured, after updating said shared TLB, to restore said instruction scheduler to an instruction-dispatching state said instruction scheduler was in prior to disabling said instruction scheduler from dispatching instructions from any of said first and second plurality of TCs except from said one of said plurality of TCs on which said TLB-updating thread is executing. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A method for a multiprocessor operating system (OS) to run on a multiprocessing system including a multithreading microprocessor having a first plurality of thread contexts (TCs), a translation lookaside buffer (TLB) shared by the first plurality of TCs, and an instruction scheduler configured to dispatch to execution units instructions of threads executing on the first plurality of TCs in a multithreaded fashion, the method comprising:
-
scheduling execution of the threads on the first plurality of TCs, wherein a thread of the threads executing on one of the first plurality of TCs is configured for updating the shared TLB; disabling interrupts, prior to said updating the TLB, to prevent the OS from unscheduling the TLB-updating thread from executing on the first plurality of TCs; disabling the instruction scheduler, prior to said updating the TLB, from dispatching instructions from any of the first plurality of TCs except from the one of the first plurality of TCs on which the TLB-updating thread is executing; wherein the multithreading microprocessor further comprises a virtual processing element (VPE), bound to the first plurality of TCs, wherein the VPE is an exception domain for the first plurality of TCs, wherein said disabling interrupts further comprising disabling interrupts on the VPE; wherein the multithreading microprocessor further comprises a second plurality of TCs and a second VPE, bound to the second plurality of TCs, wherein the second VPE is an exception domain for the second plurality of TCs, the method further comprising; prior to updating the shared TLB, disabling the instruction scheduler from dispatching instructions from any of the first and second plurality of TCs except from the one of the plurality of TCs on which the TLB-updating thread is executing; after updating the shared TLB, restoring the instruction scheduler to an instruction-dispatching state the instruction scheduler was in prior to disabling the instruction scheduler from dispatching instructions from any of the first and second plurality of TCs except from the one of the plurality of TCs on which the TLB-updating thread is executing. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
-
-
33. A computer program product for use with a computing device, the computer program product comprising:
a computer readable storage medium, having computer readable program code embodied in said computer readable storage medium, for causing a method for method for a multiprocessor operating system (OS) to run on a multiprocessing system including a multithreading microprocessor having a first plurality of thread contexts (TCs), a translation lookaside buffer (TLB) shared by the first plurality of TCs, and an instruction scheduler configured to dispatch to execution units instructions of threads executing on the first plurality of TCs in a multithreaded fashion, said computer readable program code comprising; first program code for providing a step of scheduling execution of the threads on the first plurality of TCs, wherein a thread of the threads executing on one of the first plurality of TCs is configured for updating the shared TLB; second program code for providing a step of disabling interrupts, prior to said updating the TLB, to prevent the OS from unscheduling the TLB-updating thread from executing on the first plurality of TCs; and third program code for providing a step of disabling the instruction scheduler, prior to said updating the TLB, from dispatching instructions from any of the first plurality of TCs except from the one of the first plurality of TCs on which the TLB-updating thread is executing; wherein the multithreading microprocessor further comprises a virtual processing element (VPE), bound to the first plurality of TCs, wherein the VPE is an exception domain for the first plurality of TCs, wherein said second program code for providing a step of disabling interrupts comprises disabling interrupts on the VPE; wherein the multithreading microprocessor further comprises a second plurality of TCs and a second VPE, bound to the second plurality of TCs, wherein the second VPE is an exception domain for the second plurality of TCs, the third program code for providing a step of disabling the instruction scheduler further comprises; prior to updating the shared TLB disabling the instruction scheduler from dispatching instructions from any of the first and second plurality of TCs except from the one of the plurality of TCs on which the TLB-updating thread is executing; fourth program code for providing a step of, after updating the shared TLB, restoring the instruction scheduler to an instruction-dispatching state the instruction scheduler was in prior to disabling the instruction scheduler from dispatching instructions from any of the first and second plurality of TCs except from the one of the plurality of TCs on which the TLB-updating thread is executing.
Specification