Method and system to provide user-level multithreading

US9952859B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9952859-B2
Application numberUS-201615088043-A
CountryUS
Kind codeB2
Filing dateMar 31, 2016
Priority dateMar 31, 2004
Publication dateApr 24, 2018
Grant dateApr 24, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A method and system to provide user-level multithreading are disclosed. The method according to the present techniques comprises receiving programming instructions to execute one or more shared resource threads (shreds) via an instruction set architecture (ISA). One or more instruction pointers are configured via the ISA; and the one or more shreds are executed simultaneously with a microprocessor, wherein the microprocessor includes multiple instruction sequencers.

First claim

Opening claim text (preview).

What is claimed is: 1. A processor for executing multiple user-level threads comprising: a shared application state storage pool including one or more control registers allocated to be shared by a first user-level thread and a second user-level thread, and one or more shared architectural registers allocated to be visible to the first user-level thread and to the second user-level thread through one or more user-level instructions, wherein the one or more shared architectural registers are allocated to provide communication between the first user-level thread and the second user-level thread; a private application state storage pool including: a first instruction pointer for the first user-level thread, a first one or more private architectural registers allocated to be visible to only the first user-level thread, a second instruction pointer for the second user-level thread and a second one or more private architectural registers allocated to be visible to only the second user-level thread; and thread logic to create the second user-level thread in response to a fork instruction encountered during execution of the first user-level thread, wherein the fork instruction is part of an Instruction Set Architecture available to the first user-level thread at a user privilege level. 2. The processor of claim 1 wherein the one or more shared architectural registers are configurably allocated using a programmable bit-vector to be selected as said one or more shared architectural registers. 3. The processor of claim 2 wherein the one or more shared architectural registers are configured to be atomically updated to synchronize data between the first user-level thread and the second user-level thread. 4. The processor of claim 3 further comprising a hardware re-namer to allocate registers from either the shared application state storage pool or from the private application state storage pool as specified by said programmable bit-vector. 5. The processor of claim 1 wherein said one or more control registers includes a field, when set, to enable multithreading architecture extensions for user-level multithreading. 6. A processor for executing multiple user-level threads comprising: a shared application state storage pool including one or more control registers allocated to be shared by a first user-level thread and a second user-level thread, and one or more shared architectural registers allocated to be visible to the first user-level thread and to the second user-level thread through one or more a user-level instructions, wherein the one or more architectural registers are configurably allocated using a programmable bit-vector to be selected as said one or more shared architectural registers to provide communication between the first user-level thread and the second user-level thread; a private application state storage pool including: a first instruction pointer for the first user-level thread, a first one or more private architectural registers allocated to be visible to only the first user-level thread, a second instruction pointer for the second user-level thread and a second one or more private architectural registers allocated to be visible to only the second user-level thread; and a hardware re-namer to allocate registers from either the shared application state storage pool or from the private application state storage pool as specified by said programmable bit-vector. 7. The processor of claim 6 wherein said one or more shared architectural registers are configured to be atomically updated to synchronize data between the first user-level thread and the second user-level thread. 8. The processor of claim 6 further comprising thread logic to create the second user-level thread in response to a fork instruction encountered during execution of the first user-level thread, wherein the fork instruction is part of an Instruction Set Architecture available to the first user-level thread at a user privilege level. 9. The processor of claim 6 wherein said one or more control registers includes a field, when set, to enable multithreading architecture extensions for user-level multithreading. 10. The processor of claim 9 wherein one of said one or more control registers that includes the field to enable multithreading architecture extensions for user-level multithreading is a model specific register. 11. The processor of claim 6 wherein one of said one or more control registers allocated to be shared by the first user-level thread and the second user-level thread contains one or more empty/full bit, corresponding to the one or more shared architectural registers, to be atomically updated to synchronize data between the first user-level thread and the second user-level thread. 12. A processor system for executing multiple user-level threads comprising: a processing unit including, a shared application state storage pool including one or more control registers allocated to be shared by a first user-level thread and a second user-level thread, and one or more shared architectural registers allocated to be visible to the first user-level thread and to the second user-level thread through one or more user-level instructions, wherein the one or more shared architectural registers are allocated to provide communication between the first user-level thread and the second user-level thread; a private application state storage pool including: a first instruction pointer for the first user-level thread, a first one or more private architectural registers allocated to be visible to only the first user-level thread, a second instruction pointer for the second user-level thread and a second one or more private architectural registers allocated to be visible to only the second user-level thread; and a hardware re-namer to allocate registers from either the shared application state storage pool or from the private application state storage pool; and a dynamic random access memory coupled to the processor to hold operating system code. 13. The processor system of claim 12 wherein the one or more shared architectural registers are configurably allocated by said hardware re-namer using a programmable bit-vector from either the shared application state storage pool or from the private application state storage pool as specified by said programmable bit-vector. 14. The processor system of claim 13 wherein one of said one or more control registers allocated to be shared by the first user-level thread and the second user-level thread contains one or more empty/full bit, corresponding to the one or more shared architectural registers, to be atomically updated to synchronize data between the first user-level thread and the second user-level thread. 15. The processor system of claim 13 , said processing unit further comprising thread logic to create the second user-level thread in response to a fork instruction encountered during execution of the first user-level thread, wherein the fork instruction is part of an Instruction Set Architecture available to the first user-level thread at a user privilege level.

Assignees

Inventors

Classifications

  • according to data content, e.g. floating-point registers, address registers · CPC title

  • Thread control instructions · CPC title

  • Arrangements for executing specific machine instructions · CPC title

  • Synchronisation or serialisation instructions · CPC title

  • Special purpose registers · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9952859B2 cover?
A method and system to provide user-level multithreading are disclosed. The method according to the present techniques comprises receiving programming instructions to execute one or more shared resource threads (shreds) via an instruction set architecture (ISA). One or more instruction pointers are configured via the ISA; and the one or more shreds are executed simultaneously with a microproces…
Who is the assignee on this patent?
Intel Corp
What technology area does this patent fall under?
Primary CPC classification G06F9/30003. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Apr 24 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).