IP Library Granted Patent US 10,318,296
Granted Patent B2
US 10,318,296 · App. 15/467,073 · Granted Jun 11, 2019

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

Inventor: Andrew Webber (Hertfordshire, GB)
Assignee: MIPS Tech, LLC
G06F9/3009G06F9/38G06F9/3802G06F9/3822G06F9/3836G06F9/3851G06F9/3885G06F9/5011G06F2209/507
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 10,318,296
App. No.
15/467,073
Granted
Jun 11, 2019
Kind
B2
Abstract

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

Claims (28)

1. A method for executing instructions on a multi-threaded processor having a plurality of hardware threads, the method comprising:

fetching an instruction for execution on the multi-threaded processor from each of a plurality of streams of instructions;

receiving each instruction of the fetched instructions at a pre-decode unit of a respective one of the plurality of hardware threads of the multi-threaded processor;

in parallel at the pre-decode units of the plurality of hardware threads, detecting whether each instruction of the fetched instructions requires a resource that is not available at the respective one of the plurality of hardware threads;

responsive to detecting that an instruction requires a resource that is not available at the respective one of the plurality of hardware threads, the respective pre-decode unit indicating to an instruction scheduler that the instruction requiring the resource is not to be executed at the respective one of the plurality of hardware threads, wherein the multi-threaded processor comprises the instruction scheduler; and

at the instruction scheduler, which is configured to schedule instructions for execution at the plurality of hardware threads, not scheduling the instruction requiring the resource for execution at the respective one of the plurality of hardware threads,

wherein the multi-threaded processor has a register file with a number of registers shared by the plurality of hardware threads and a number of thread-specific registers.

2. The method according to claim 1 in which the detecting whether each instruction of the fetched instructions requires a resource that is not available at the respective one of the plurality of hardware threads is performed in each clock cycle.

3. The method according to claim 1 wherein the indicating to an instruction scheduler that the instruction requiring the resource is not to be executed at the respective one of the plurality of hardware threads comprises generating a flag.

4. The method according to claim 3 wherein the flag is generated by the respective pre-decode unit.

5. The method according to claim 1 wherein the plurality of hardware threads do not provide DSP resources and the multi-threaded processor comprises one or more additional hardware threads each providing DSP resources.

6. The method according to claim 1 wherein the plurality of hardware threads do not provide an extended register set and the multi-threaded processor comprises one or more additional hardware threads each providing an extended register set.

7. The method according to claim 1 wherein the register file is associated with an arithmetic-logic unit (ALU) pipeline.

8. The method according to claim 7 wherein a first thread is associated with a lower number of registers than a second thread.

9. The method according to claim 1 wherein the instruction scheduler is multi-threaded.

10. A multi-threaded processor, comprising:

a plurality of hardware threads each comprising a respective set of resources, the sets of resources of a first set of hardware threads each including a resource that is not included in the sets of resources of a second set of hardware threads; each of the second set of hardware threads comprising:

an instruction fetch unit configured to fetch instructions for execution on the multi-threaded processor from a respective stream of instructions; and

a pre-decode unit configured to, in parallel with pre-decode units of other threads, detect whether each fetched instruction requires a resource that is not available at the respective hardware thread; and

an instruction scheduler circuit configured to, in response to a pre-decode unit detecting that an instruction requires a resource that is not available at the respective hardware thread, not schedule the instruction requiring the resource for execution at the respective hardware thread, wherein the multi-threaded processor comprises the instruction scheduler,

wherein the multi-threaded processor has a register file with a number of registers shared by the plurality of hardware threads and a number of thread-specific registers.

11. The multi-threaded processor according to claim 10 wherein the predecode units of the second set of hardware threads detect whether each fetched instruction requires a resource that is not available at the respective hardware thread on each clock cycle.

12. The multi-threaded processor according to claim 10 wherein the pre-decode units of the second set of hardware threads are configured to indicate to the instruction scheduler circuit when a fetched instruction requires a resource that is not available at the respective hardware thread.

13. The multi-threaded processor according to claim 12 wherein the indication is a flag.

14. The multi-threaded processor according to claim 10 wherein instruction fetch units in the first set of hardware threads comprises a hardware loop counter and the instruction fetch units in the second set of hardware threads do not comprise a hardware loop counter.

15. The multi-threaded processor according to claim 10 wherein the set of resources of at least one of the first set of hardware threads comprises an accumulator register that is wider than registers in the sets of resources of the second set of hardware threads.

16. The multi-threaded processor according to claim 10 wherein the first set of hardware threads provide DSP resources and the second set of hardware threads do not provide DSP resources.

17. The multi-threaded processor according to claim 10 wherein the first set of hardware threads provide an extended register set and the second set of hardware threads do not provide an extended register set.

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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2018
From: MIPS TECH LIMITED
To: MIPS TECH, LLC
Reel/Frame 045555/0691 →
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 045136/0975 →
Priority Claims (1)
GB 0900769.1 · Jan 16, 2009 · national
Continuity (2)
Continuation 13138176
Related Publication 20170192779A1 · Jul 6, 2017