Patent US5742822A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5742822A Expired / Lapsed US ⏱️ 0.0 years remaining

Multithreaded processor which dynamically discriminates a parallel execution and a sequential execution of threads

Assignee: NEC Corp
•
Filing: 1995-12-19
•
Granted: 1998-04-21
•
Expires: 2015-12-19
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A multithreaded processor includes an instruction pipelined unit 140 and a register file 120 composed of a plurality of register banks 130. The register file 120 is coupled to an external memory 190 through register frame load/store lines 121, so that a register frame, which is defined as a content stored in one register bank 130, can be loaded and stored in bundle. When a thread parallel start instruction and a thread sequential start instruction are executed, the register frames are saved through the load/store lines 121. When a thread end instruction and a thread return instruction are executed, the register frames are restored through the load/store lines 121.

Inventors

  • 👤 Masato Motomura

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-01 10:34
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/30098; G06F9/3012; G06F9/30123; G06F9/30003; G06F9/30076; G06F9/3009; G06F9/30101; G06F9/38; G06F9/3836; G06F9/3851; G06F9/46; G06F9/461; G06F9/462

Claims Analysis

Total Claims: 12
Claim 1
Independent Claim 284 words
A multithreaded processor including an instruction pipelined unit and a register file having of a plurality of register banks, a content stored in each of said register banks corresponding to a register frame, the multithreaded processor being configured to process a plurality of instructions including a thread parallel start instruction, a thread end instruction, a thread sequential start instruction and a thread return instruction, the multithreaded processor being capable of sequentially executing a plurality of threads generated from one program, the multithreaded processor further comprising: means for saving a register frame from said register file to a memory, the memory being coupled to the multithreaded processor, in accordance with and at a time of executing one of a thread parallel start instruction and a thread sequential start instruction corresponding to one of said plurality of threads; and means for restoring the register frame from said memory to said register file in accordance with and at a time of executing one of a thread end instruction and a thread return instruction corresponding to said one of said plurality of threads, wherein said plurality of register banks includes a link register bank, and a link pointer is defined as a pointer indicating a memory location where a corresponding register frame stored in said link register bank is to be stored into said memory, and further including means for writing, when the multithreaded processor outputs a thread descriptor to another multithreaded processor in order to execute said thread parallel start instruction, said link pointer in said thread descriptor, and wherein said means for saving saves the corresponding register frame stored in said link register bank to the memory location of said memory designated by said link pointer.
Claim 2
Dependent Claim 284 words
A multithreaded processor including an instruction pipelined unit and a register file having of a plurality of register banks, a content stored in each of said register banks corresponding to a register frame, the multithreaded processor being configured to process a plurality of instructions including a thread parallel start instruction, a thread end instruction, a thread sequential start instruction and a thread return instruction, the multithreaded processor being capable of sequentially executing a plurality of threads generated from one program, the multithreaded processor further comprising: means for saving a register frame from said register file to a memory, the memory being coupled to the multithreaded processor, in accordance with and at a time of executing one of a thread parallel start instruction and a thread sequential start instruction corresponding to one of said plurality of threads; and means for restoring the register frame from said memory to said register file in accordance with and at a time of executing one of a thread end instruction and a thread return instruction corresponding to said one of said plurality of threads, wherein said plurality of register banks includes a link register bank, and a link pointer is defined as a pointer indicating a memory location where a corresponding register frame stored in said link register bank is to be stored into said memory, and further including means for writing, when the multithreaded processor outputs a thread descriptor to another multithreaded processor in order to execute said thread parallel start instruction, said link pointer in said thread descriptor, and wherein said means for saving saves the corresponding register frame stored in said link register bank to the memory location of said memory designated by said link pointer.
Claim 3
Dependent Claim 63 words
A multithreaded processor as claimed in claim 1, wherein said means for restoring, when said thread end instruction is executed and the multithreaded processor receives a new thread descriptor to start a new thread in parallel, restores said corresponding register frame from the memory location of said memory designated by the link pointer included in said thread descriptor, to said link register bank.
Claim 4
Dependent Claim 36 words
A multithreaded processor as claimed in claim 1, further including register frame load/store means for performing, in a bundle, the saving, the restoring, and the reading of register frames between said register banks and said memory.
Claim 5
Dependent Claim 273 words
A multithreaded processor including an instruction pipelined unit and a register file having a plurality of register banks, a content stored in each of said register banks corresponding to a register frame, the multithreaded processor being configured to process a plurality of instructions including a thread parallel start instruction, a thread end instruction, a thread sequential start instruction and a thread return instruction, the multithreaded processor being capable of sequentially executing a plurality of threads generated from one program, the multithreaded processor further comprising: means for saving a register frame from said register file to a memory, the memory being coupled to the multithreaded processor, in accordance with and at a time of executing one of a thread parallel start instruction and a thread sequential start instruction corresponding to one of said plurality of threads; and means for restoring the register frame from said memory to said register file in accordance with and at a time of executing one of a thread end instruction and a thread return instruction corresponding to said one of said plurality of threads, wherein said plurality of register banks includes a context register bank, and a context pointer is defined as a pointer indicating a memory location where a corresponding register frame stored in said context register bank is to be stored into said memory, and wherein said means for saving, when the processing of a thread being executed is interrupted and a new thread is sequentially started in response to said thread sequential start instruction, saves the corresponding register frame stored said context register bank, to the memory location of said memory designated by said context pointer.
Claim 6
Dependent Claim 273 words
A multithreaded processor including an instruction pipelined unit and a register file having a plurality of register banks, a content stored in each of said register banks corresponding to a register frame, the multithreaded processor being configured to process a plurality of instructions including a thread parallel start instruction, a thread end instruction, a thread sequential start instruction and a thread return instruction, the multithreaded processor being capable of sequentially executing a plurality of threads generated from one program, the multithreaded processor further comprising: means for saving a register frame from said register file to a memory, the memory being coupled to the multithreaded processor, in accordance with and at a time of executing one of a thread parallel start instruction and a thread sequential start instruction corresponding to one of said plurality of threads; and means for restoring the register frame from said memory to said register file in accordance with and at a time of executing one of a thread end instruction and a thread return instruction corresponding to said one of said plurality of threads, wherein said plurality of register banks includes a context register bank, and a context pointer is defined as a pointer indicating a memory location where a corresponding register frame stored in said context register bank is to be stored into said memory, and wherein said means for saving, when the processing of a thread being executed is interrupted and a new thread is sequentially started in response to said thread sequential start instruction, saves the corresponding register frame stored said context register bank, to the memory location of said memory designated by said context pointer.
Claim 7
Dependent Claim 59 words
A multithreaded processor as claimed in claim 4, wherein said means for restoring, when said thread return instruction is executed and execution of the thread which was executed before the thread was sequentially started, is restarted, restores the corresponding register frame stored in the memory location of said memory designated by said context pointer, to said context register bank.
Claim 8
Dependent Claim 36 words
A multithreaded processor as claimed in claim 4, further including register frame load/store means for performing, in a bundle, the saving, the restoring, and the reading of register frames between said register banks and said memory.
Claim 9
Dependent Claim 461 words
A multithreaded processor including an instruction pipelined unit and a register file having a plurality of register banks, a content stored in each of said register banks corresponding to a register frame, the multithreaded processor being configured to process a plurality of instructions including a thread parallel start instruction, a thread end instruction, a thread sequential start instruction and a thread return instruction, the multithreaded processor being capable of sequentially executing a plurality of threads generated from one program, the multithreaded processor further comprising: means for saving a register frame from said register file to a memory, the memory being coupled to the multithreaded processor, in accordance with and at a time of executing one of a thread parallel start instruction and a thread sequential start instruction corresponding to one of said plurality of threads; and means for restoring the register frame from said memory to said register file in accordance with and at a time of executing one of a thread end instruction and a thread return instruction corresponding to said one of said plurality of threads, wherein said plurality of register banks includes a link register bank, and a link pointer is defined as a pointer indicating a memory location where a corresponding register frame stored in said link register bank is to be stored into said memory, and further including means for writing, when the multithreaded processor outputs a thread descriptor to another multithreaded processor in order to execute said thread parallel start instruction, said link pointer in said thread descriptor, and wherein said means for saving saves the corresponding register frame stored in said link register bank to the memory location of said memory designated by said link pointer, said multithreaded processor further including: means for discriminating, when said thread parallel start instruction is executed and before the multithreaded processor outputs said thread descriptor to said another multithreaded processor, whether or not it is possible to output said thread descriptor; means for outputting, when said outputting of said thread descriptor is possible, said thread descriptor having the link pointer written therein, said means for saving also saving the corresponding register frame stored in said link register bank to the memory location of said memory designated by said link pointer, by action of a register frame load/store function; and wherein said plurality of register banks includes a context register bank, and a context pointer is defined as a pointer indicating a memory location where a corresponding register frame stored in said context register bank is to be stored into said memory, said means for saving, when said outputting of said thread descriptor is not possible, saving the corresponding register frame stored in said context register bank, to the memory location of said memory designated by said context pointer.
Claim 10
Dependent Claim 461 words
A multithreaded processor including an instruction pipelined unit and a register file having a plurality of register banks, a content stored in each of said register banks corresponding to a register frame, the multithreaded processor being configured to process a plurality of instructions including a thread parallel start instruction, a thread end instruction, a thread sequential start instruction and a thread return instruction, the multithreaded processor being capable of sequentially executing a plurality of threads generated from one program, the multithreaded processor further comprising: means for saving a register frame from said register file to a memory, the memory being coupled to the multithreaded processor, in accordance with and at a time of executing one of a thread parallel start instruction and a thread sequential start instruction corresponding to one of said plurality of threads; and means for restoring the register frame from said memory to said register file in accordance with and at a time of executing one of a thread end instruction and a thread return instruction corresponding to said one of said plurality of threads, wherein said plurality of register banks includes a link register bank, and a link pointer is defined as a pointer indicating a memory location where a corresponding register frame stored in said link register bank is to be stored into said memory, and further including means for writing, when the multithreaded processor outputs a thread descriptor to another multithreaded processor in order to execute said thread parallel start instruction, said link pointer in said thread descriptor, and wherein said means for saving saves the corresponding register frame stored in said link register bank to the memory location of said memory designated by said link pointer, said multithreaded processor further including: means for discriminating, when said thread parallel start instruction is executed and before the multithreaded processor outputs said thread descriptor to said another multithreaded processor, whether or not it is possible to output said thread descriptor; means for outputting, when said outputting of said thread descriptor is possible, said thread descriptor having the link pointer written therein, said means for saving also saving the corresponding register frame stored in said link register bank to the memory location of said memory designated by said link pointer, by action of a register frame load/store function; and wherein said plurality of register banks includes a context register bank, and a context pointer is defined as a pointer indicating a memory location where a corresponding register frame stored in said context register bank is to be stored into said memory, said means for saving, when said outputting of said thread descriptor is not possible, saving the corresponding register frame stored in said context register bank, to the memory location of said memory designated by said context pointer.
Claim 11
Dependent Claim 193 words
A multithreaded processor as claimed in claim 7, further including: a sequential start flag, wherein when said thread end instruction is executed, at the time of terminating the processing of the thread being executed, said sequential start flag is referred to in order to discriminate whether a new thread is started in parallel or sequentially; first means for terminating, when the new thread is started in parallel, the processing of said thread being executed, said first means for terminating also receiving a new thread descriptor, corresponding to said new thread, from said another multithreaded processor or from the multithreaded processor, wherein said means for restoring reads out a link register frame from a memory location of said memory designated by a link pointer written in said new thread descriptor, and writing said link register frame in said link register bank; and second means for terminating, when the new thread is started sequentially, the processing of said thread being executed, wherein said means for restoring reads out a context register frame from a memory location of said memory designated by a context pointer, and writing said context register frame in said context register bank.
Claim 12
Dependent Claim 36 words
A multithreaded processor as claimed in claim 7, further including register frame load/store means for performing, in a bundle, the saving, the restoring, and the reading of register frames between said register banks and said memory.

References Cited (Backward Citations)

US5050067A Cited
US5353418A Cited
US5165038A Cited
US5339415A Cited
US5404469A Cited
EP0697653A1 Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-04-20 2001-10-20 2002-04-21 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-04-20 2005-10-20 2006-04-21 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-04-20 2009-10-20 2010-04-21 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag