IP Library Granted Patent US 9,612,844
Granted Patent B2
US 9,612,844 · App. 13/138,176 · Granted Apr 4, 2017

Scheduling execution of instructions on a processor having multiple hardware threads with different execution resources

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 9,612,844
App. No.
13/138,176
Granted
Apr 4, 2017
Kind
B2
Abstract

A method and apparatus are provided for executing instructions of a multi-threaded processor having multiple hardware threads ( 32, 34 ) with differing hardware resources comprising the steps of receiving a plurality of streams of instructions ( 38, 44 ) and determining which hardware threads are able to receive instructions for execution ( 40, 46 ), determining whether a thread determined to be available for executing an instructions has the hardware resources available required by that instructions ( 36 ) and executing the instruction in dependence on the result of the determination ( 50 ).

Claims (17)

1. A method for executing instructions on a multi-threaded processor having a plurality of hardware threads that have different hardware execution resources, comprising:

fetching a respective next instruction for each of a plurality of streams of instructions;

pre-decoding each fetched next instruction at a respective one of a plurality of different instruction pre-decoders each associated with a respective hardware thread;

detecting, during the pre-decoding, for each fetched next instruction, whether that fetched next instruction requires a resource for execution that is not available in the associated hardware thread, and responsively generating a flag that such fetched next instruction should not be run on said associated hardware thread that does not have the resource required for execution;

at an instruction scheduler configured for scheduling instructions on the plurality of hardware threads, preventing each fetched next instruction for which a flag was generated from running on its associated hardware thread; and

for each fetched next instruction for which a flag was not generated during pre-decoding, executing that instruction in its associated hardware thread determined to be available to execute that instruction and which has the resource required by that instruction.

2. The method according to claim 1 wherein the detecting comprises comparing a list of resources required by an instruction with resources on each available hardware thread.

3. The method according to claim 1 wherein after the detecting, each pre-decoded fetched next instruction is passed to a respective register stage, before being scheduled by the instruction scheduler.

4. A multi-threaded processor, comprising:

a plurality of hardware threads, each hardware thread comprising a respective set of hardware execution resources, and wherein the respective set of hardware execution resources of a first hardware thread of the plurality of hardware threads includes a specialized hardware execution resource that is not included in a second hardware thread of the plurality of hardware threads;

a plurality of instruction fetch units, each of the instruction fetch units being associated with a respective hardware thread of the plurality of hardware threads, configured to retrieve a separate stream of instructions, and comprising a pre-decode stage,

wherein during the pre-decode stage, each of the instruction fetch units is configured to determine what resources are required for a respective next instruction fetched by that instruction fetch unit, and to determine whether the hardware thread associated with that instruction fetch unit includes hardware execution resources required by that respective next instruction and when the required resources to execute that respective next instruction are not present, then to generate a flag associated with that respective next instruction; and

an instruction scheduler circuit configured to receive instructions from the respective pre-decode stage of each of the plurality of instruction fetch units in parallel, and to use any generated flag to determine whether any of the received instructions is not available for running on that cycle.

5. The multi-threaded processor of claim 4 , wherein the pre-decode stage of each instruction fetch unit comprises a list of hardware execution resources available in each hardware thread of the plurality of hardware threads.

6. The multi-threaded processor of claim 4 , wherein the instruction fetch unit for the second hardware thread comprises circuitry for detecting, on each clock cycle, whether the instruction fetched by that instruction fetch unit requires the specialized hardware execution resource present in the first hardware thread and absent from the second hardware thread.

7. The multi-threaded processor of claim 4 , wherein at least one of the instruction fetch units comprises a hardware loop counter and at least one of the instruction fetch units does not comprise a hardware loop counter.

8. The multi-threaded processor of claim 4 , wherein the respective set of hardware execution resources of the first hardware thread of the plurality of hardware threads comprises an accumulator register that is wider than registers in the second hardware thread.

Assignments (8)
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 →
SECURITY INTEREST Recorded Jun 14, 2021
From: MIPS TECH, LLC; WAVE COMPUTING, INC.
To: CAPITAL FINANCE ADMINISTRATION, LLC
Reel/Frame 056558/0903 →
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 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 Apr 19, 2018
From: MIPS TECH LIMITED
To: MIPS TECH, LLC
Reel/Frame 045593/0662 →
CHANGE OF NAME Recorded Jan 26, 2018
From: HELLOSOFT LIMITED
To: MIPS TECH LIMITED
Reel/Frame 045168/0922 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 24, 2018
From: IMAGINATION TECHNOLOGIES LIMITED
To: HELLOSOFT LIMITED
Reel/Frame 044712/0386 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2011
From: WEBBER, ANDREW
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 026912/0964 →