IP Library Granted Patent US 8,145,884
Granted Patent B2
US 8,145,884 · App. 12/605,201 · Granted Mar 27, 2012

Apparatus, method and instruction for initiation of concurrent instruction streams in a multithreading microprocessor

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,145,884
App. No.
12/605,201
Granted
Mar 27, 2012
Kind
B2
Abstract

A fork instruction for execution on a multithreaded microprocessor and occupying a single instruction issue slot is disclosed. The fork instruction, executing in a parent thread, includes a first operand specifying the initial instruction address of a new thread and a second operand. The microprocessor executes the fork instruction by allocating context for the new thread, copying the first operand to a program counter of the new thread context, copying the second operand to a register of the new thread context, and scheduling the new thread for execution. If no new thread context is free for allocation, the microprocessor raises an exception to the fork instruction. The fork instruction is efficient because it does not copy the parent thread general purpose registers to the new thread. The second operand is typically used as a pointer to a data structure in memory containing initial general purpose register set values for the new thread.

Claims (19)

1. A multiprocessing system comprising:

a multithreaded microprocessor having a plurality of logical processor contexts each of which appears to an N-way symmetric multiprocessor (SMP) operating system executing on the multithreaded microprocessor as a multithreaded virtual processing element (VPE),

wherein the SMP operating system manages a simultaneously executing plurality of threads that can be created and destroyed without operating system intervention,

wherein threads can be scheduled in response to external conditions with no interrupt latency, and

wherein each thread context comprises a result register having two read ports and one write port for supporting execution of an instruction that performs exactly two reads, one from a first operand register containing a first operand and one from a second operand register containing a second operand and a single write of the second operand to one destination register in a register set during a single clock cycle.

2. The multiprocessing system of claim 1 , wherein threads scheduled in response to external conditions are system service threads.

3. The multiprocessing system of claim 1 , wherein each thread context comprises a collection of bits in registers that describe the execution state of a thread, ,a program counter (PC) and a per-thread control register.

4. The multiprocessing system of claim 1 , further comprising a processor context, stored in per-processor control registers, associated with each VPE.

5. The multiprocessing system of claim 1 , wherein each VPE comprises a set of per-processor control registers and a status register with a field for specifying a most recently dispatched thread exception raised by an exception signal, and wherein if a VPE issues an instruction to allocate resources for a new thread when free allocatable thread contexts are not available, a value in the exception field indicates a thread overflow condition.

6. A multiprocessing system comprising:

a multithreaded microprocessor having a plurality of logical processor contexts each of which appears to an N-way symmetric multiprocessor (SMP) operating system executing on the multithreaded microprocessor as a multithreaded virtual processing element (VPE),

wherein the SMP operating system manages a simultaneously executing plurality of threads that can be created and destroyed without operating system intervention,

wherein the execution of a single RISC-like instruction in a parent thread allocates resources for a new thread and schedules execution of the new thread, and

wherein each thread context comprises a result register having two read ports and one write port for supporting execution of an instruction that performs exactly two reads, one from a first operand register containing a first operand and one from a second operand register containing a second operand and a single write of the second operand to one destination register in a register set during a single clock cycle.

7. The multiprocessing system of claim 6 , wherein the single RISC-like instruction is issued by the SMP operating system.

8. The multiprocessing system of claim 6 , wherein the single RISC-like instruction is issued by a user level thread.

9. The multiprocessing system of claim 8 , wherein very short code regions of user code are parallelized into multiple threads.

10. The multiprocessing system of claim 6 , wherein the single RISC-like instruction transfers a value to a program counter associated with the new thread and transfers a value from a register in to define a location of a data structure for populating registers of the new thread.

11. The multiprocessing system of claim 6 , wherein the single RISC-like instruction includes an opcode field that indicates the instruction is a SPECIAL3 type instruction within the MIPS ISA and a function field that indicates that the function is a FORK instruction.

Assignments (10)
RELEASE OF SECURITY INTEREST Recorded Dec 29, 2022
From: CAPITAL FINANCE ADMINISTRATION, LLC, AS ADMINISTRATIVE AGENT
To: MIPS TECH, LLC; WAVE COMPUTING INC.
Reel/Frame 062251/0251 →
RELEASE OF SECURITY INTEREST Recorded Jun 14, 2021
From: WAVE COMPUTING LIQUIDATING TRUST
To: MIPS TECH, INC.; HELLOSOFT, INC.; WAVE COMPUTING (UK) LIMITED; IMAGINATION TECHNOLOGIES, INC.; CAUSTIC GRAPHICS, INC.; MIPS TECH, LLC; WAVE COMPUTING, INC.
Reel/Frame 056589/0606 →
SECURITY INTEREST Recorded Jun 14, 2021
From: MIPS TECH, LLC; WAVE COMPUTING, INC.
To: CAPITAL FINANCE ADMINISTRATION, LLC
Reel/Frame 056558/0903 →
SECURITY INTEREST Recorded Feb 26, 2021
From: WAVE COMPUTING, INC.; MIPS TECH, LLC; MIPS TECH, INC.; HELLOSOFT, INC.; WAVE COMPUTING (UK) LIMITED; IMAGINATION TECHNOLOGIES, INC.; CAUSTIC GRAPHICS, INC.
To: WAVE COMPUTING LIQUIDATING TRUST
Reel/Frame 055429/0532 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2018
From: MIPS TECH LIMITED
To: MIPS TECH, LLC
Reel/Frame 046857/0640 →
CHANGE OF NAME Recorded Aug 8, 2018
From: MIPS TECH LIMITED
To: MIPS TECH, LLC
Reel/Frame 046749/0515 →
CHANGE OF NAME Recorded Mar 8, 2018
From: IMAGINATION TECHNOLOGIES, LLC
To: MIPS TECH LIMITED
Reel/Frame 045536/0408 →
CHANGE OF NAME Recorded Mar 8, 2018
From: HELLOSOFT LIMITED
To: MIPS TECH LIMITED
Reel/Frame 045146/0514 →
CHANGE OF NAME Recorded May 1, 2017
From: MIPS TECHNOLOGIES, INC.
To: IMAGINATION TECHNOLOGIES, LLC
Reel/Frame 042375/0221 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2010
From: KISSELL, KEVIN D.
To: MIPS TECHNOLOGIES, INC.,
Reel/Frame 023798/0914 →