IP Library Granted Patent US 8,028,295
Granted Patent B2
US 8,028,295 · App. 11/239,475 · Granted Sep 27, 2011

Apparatus, system, and method for persistent user-level thread

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 8,028,295
App. No.
11/239,475
Granted
Sep 27, 2011
Kind
B2
Abstract

Embodiments of the invention provide a method of creating, based on an operating-system-scheduled thread running on an operating-system-visible sequencer and using an instruction set extension, a persistent user-level thread to run on an operating-system-sequestered sequencer independently of context switch activities on the operating-system-scheduled thread. The operating-system-scheduled thread and the persistent user-level thread may share a common virtual address space. Embodiments of the invention may also provide a method of causing a service thread running on an additional operating-system-visible sequencer to provide operating system services to the persistent user-level thread. Embodiments of the invention may further provide apparatus, system, and machine-readable medium thereof.

Claims (36)

1. A method comprising:

based on an operating-system-scheduled thread running on an operating-system-visible sequencer and using an instruction set extension, creating a persistent user-level thread to run on an operating-system-sequestered sequencer, for which an operating system does not schedule instructions, independently of context switch activities on the operating-system-scheduled thread such that the persistent user-level thread continues execution when the operating-system-scheduled thread is context switched and contexts of the operating-system-scheduled thread and other operating-system-scheduled threads running on other operating-system-visible sequencers are saved and the operating-system-scheduled thread and the other operating-system-scheduled threads are suspended;

suspending running of the persistent user-level thread when the persistent user-level thread encounters an event that requires handling by the operating system; and

communicating to one of the other operating-system-visible sequencers a control-transfer instruction, and executing the control-transfer instruction at a privileged level.

2. The method of claim 1 , wherein the operating-system-scheduled thread and the persistent user-level thread share a common virtual address space.

3. The method of claim 1 , comprising causing a service thread running on the one of the other operating-system-visible sequencers to imitate the suspended persistent user-level thread to provide operating system services to the suspended persistent user-level thread, the imitating enabling the service thread to access an execution state of the suspended persistent user-level thread.

4. The method of claim 3 , wherein the service thread and the persistent user-level thread run in the context of a same application.

5. The method of claim 1 , wherein the privileged level includes a ring-0 level.

6. The method of claim 3 , comprising:

causing the service thread to pick up the execution state of the persistent user-level thread through a common shared virtual address space;

providing a proxy execution to the persistent user-level thread; and

returning a post execution state to the persistent user-level thread.

7. The method of claim 6 , further comprising resuming running of the persistent user-level thread from the post execution state.

8. An apparatus, having a compute, comprising:

a sequencer manager to create, via an operating-system-scheduled thread running on an operating-system-visible sequencer, a persistent user-level thread to run on an operating-system-sequestered sequencer, for which an operating system does not schedule instructions, independent of and asynchronous with the operating-system-scheduled thread such that the persistent user-level thread continues execution when the operating-system-scheduled thread is context switched and contexts of the operating-system-scheduled thread and other operating-system-scheduled threads running on other operating-system-visible sequencers are saved and the operating-system-scheduled thread and the other operating-system-scheduled threads are suspended, wherein the sequencer manager is to suspend running of the persistent user-level thread when the persistent user-level thread encounters an event that requires handling by the operating system and cause a service thread running on one of the other operating-system-visible sequencers to imitate the suspended persistent user-level thread to provide operating system services to the suspended persistent user-level thread.

9. The apparatus of claim 8 , wherein the operating-system-scheduled thread and the persistent user-level threads share a common virtual address space.

10. The apparatus of claim 8 , wherein the service thread and the persistent user-level thread run in a context of a same application.

11. The apparatus of claim 8 , wherein the sequencer manager is to communicate to the other operating-system-visible sequencer a control-transfer instruction, and to cause the control-transfer instruction to be executed at a privileged level.

12. The apparatus of claim 11 , wherein the sequencer manager is to cause the service thread to pick up a state of the persistent user-level thread via the imitation; to provide a proxy execution to the persistent user-level thread; and to return a post execution state to the persistent user-level thread.

13. The apparatus of claim 12 , wherein the persistent user-level thread is to resume running from the post execution state.

14. A system comprising:

A non-transitory memory having stored thereon an operating system, at least one user-level program, an application program interface to interface the program;

a scheduler to schedule the execution of the program;

a multi-sequencer having at least one operating-system-visible sequencer for which the operating system schedules instructions and at least one operating-system-sequestered sequencer for which the operating system does not schedule instructions; and

a sequencer manager to create, via an operating-system-scheduled thread running on the operating-system-visible sequencer, a persistent user-level thread to run on the operating-system-sequestered sequencer independent of and asynchronous with the operating-system-scheduled thread such that the persistent user-level thread continues execution when the operating-system-scheduled thread is context switched and contexts of the operating-system-scheduled thread and other operating-system-scheduled threads running on other operating-system-visible sequencers are saved and the operating-system-scheduled thread and the other operating-system-scheduled threads are suspended, wherein the sequencer manager is to suspend running of the persistent user-level thread when the persistent user-level thread encounters an event that requires handling by the operating system, communicate to the operating-system-visible sequencer a control-transfer instruction, and cause the operating-system-visible sequencer to execute the control-transfer instruction at a privileged level.

15. The system of claim 14 , wherein the operating-system-scheduled thread and the persistent user-level threads share a common virtual address space.

16. The system of claim 14 , wherein the sequencer manager is to cause a service thread running on the operating-system-visible sequencer to imitate the suspended persistent user-level thread to provide operating system services to the suspended persistent user-level thread.

17. The system of claim 16 , wherein the sequencer manager is to cause the service thread to pick up a state of the persistent user-level thread via the imitation; to provide a proxy execution to the persistent user-level thread; and to return a post execution state to the persistent user-level thread.

18. The system of claim 17 , wherein the persistent user-level thread is to resume running from the post execution state.

19. A non-transitory machine-readable medium having stored thereon a set of instructions that, when executed by a machine, result in:

creating, based on an operating-system-scheduled thread running on an operating-system-visible sequencer and using an instruction set extension, a persistent user-level thread to run on an operating-system-sequestered sequencer, for which an operating system does not schedule instructions, independently of context switch activities on the operating-system-scheduled thread such that the persistent user-level thread continues execution when the operating-system-scheduled thread is context switched and contexts of the operating-system-scheduled thread and other operating-system-scheduled threads running on other operating-system-visible sequencers are saved and the operating-system-scheduled thread and the other operating-system-scheduled threads are suspended;

suspending running of the persistent user-level thread when the persistent user-level thread encounters an event that requires handling by the operating system;

communicating to one of the other operating-system-visible sequencers a control-transfer instruction; and

executing the control-transfer instruction at a privileged level.

20. The non-transitory machine-readable medium of claim 19 , wherein the instructions result in the operating-system-scheduled thread and the persistent user-level thread to share a common virtual address space.

21. The non-transitory machine-readable medium of claim 19 , wherein the instructions result in a service thread running on the one of the other operating-system-visible sequencers to imitate the suspended persistent user-level thread to provide operating system services to the suspended persistent user-level thread, the imitating enabling the service thread to access an execution state of the suspended persistent user-level thread.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2022
From: INTEL CORPORATION
To: TAHOE RESEARCH, LTD.
Reel/Frame 061175/0176 →