IP Library Granted Patent US 9,811,377
Granted Patent B2
US 9,811,377 · App. 14/214,280 · Granted Nov 7, 2017

Method for executing multithreaded instructions grouped into blocks

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,811,377
App. No.
14/214,280
Granted
Nov 7, 2017
Kind
B2
Abstract

A method for executing multithreaded instructions grouped into blocks. The method includes receiving an incoming instruction sequence using a global front end; grouping the instructions to form instruction blocks, wherein the instructions of the instruction blocks are interleaved with multiple threads; scheduling the instructions of the instruction block to execute in accordance with the multiple threads; and tracking execution of the multiple threads to enforce fairness in an execution pipeline.

Claims (26)

1. A method of executing multithreaded instructions grouped into blocks, said method comprising:

receiving an incoming instruction sequence using a global front end;

grouping instructions from the instruction sequence to form instruction blocks, wherein the instructions of the instruction blocks are interleaved with multiple threads, wherein instruction blocks belonging to different threads can be interleaved within a scheduler array, and further wherein a thread pointer map is operable to map instruction blocks belonging to different threads to physical storage locations in order to manage the multiple threads, where each thread has a separate thread pointer map:

scheduling the instructions of the instruction blocks to execute in accordance with the multiple threads; and

tracking execution of the multiple threads to enforce a fairness policy using allocation counters of an execution pipeline, where each allocation counter tracks a number of entries in a correlated thread pointer map, further comprising using the allocation counters to allocate instruction blocks belonging to different threads within a scheduler array to implement the fairness policy.

2. The method of claim 1 , wherein dynamic counter-based allocation is used to allocate instruction blocks belonging to different threads within a scheduler array to implement the fairness policy.

3. The method of claim 1 , wherein dynamic counter-based allocation is used to allocate blocks of threads within a scheduler array to implement a dynamic ratio of thread allocation.

4. The method of claim 1 , wherein an allocation counter is used to allocate instruction blocks belonging to different threads within a scheduler array to prevent one thread from blocking progress of another thread.

5. The method of claim 1 , wherein the fairness policy is implemented by use of individual thresholds for each allocation counter or a sum of the allocation counters.

6. A non-transitory computer readable media having computer readable code which when executed by a computer system causes the computer system to implement a method of executing multi threaded instructions grouped into blocks, the method comprising:

receiving an incoming instruction sequence using a global front end;

grouping instructions from the instruction sequence to form instruction blocks, wherein the instructions of the instruction blocks are interleaved with multiple threads, wherein instruction blocks belonging to different threads can be interleaved within a scheduler array, and further wherein a thread pointer map is operable to map instruction blocks belonging to different threads to physical storage locations in order to manage the multiple threads, where each thread has a separate thread pointer map:

scheduling the instructions of the instruction blocks to execute in accordance with the multiple threads; and

tracking execution of the multiple threads to enforce a fairness policy using allocation counters in an execution pipeline, where each allocation counter tracks a number of entries in a correlated thread pointer map, further comprising using the allocation counters to allocate instruction blocks belonging to different threads within a scheduler array to implement the fairness policy.

7. The computer readable media of claim 6 , wherein dynamic counter-based allocation is used to allocate instruction blocks belonging to different threads within a scheduler array to implement a fairness policy.

8. The computer readable media of claim 6 , wherein dynamic counter-based allocation is used to allocate instruction blocks belonging to different threads within a scheduler array to implement a dynamic ratio of thread allocation.

9. The computer readable media of claim 6 , wherein an allocation counter is used to allocate instruction blocks belonging to different threads within a scheduler array to prevent one thread from blocking progress of another thread.

10. The non-transitory computer readable media of claim 6 , wherein the fairness policy is implemented by use of individual thresholds for each allocation counter or a sum of the allocation counters.

11. A computer system having a processor coupled to a memory, the memory having computer readable code which when executed by the computer system causes the computer system to implement a method of executing multithreaded instructions grouped into blocks, said method comprising:

receiving an incoming instruction sequence using a global front end;

grouping instructions from the instruction sequence to form instruction blocks, wherein the instructions of the instruction blocks are interleaved with multiple threads, wherein instruction blocks belonging to different threads can be interleaved within a scheduler array, and further wherein a thread pointer map is operable to map instruction blocks belonging to different threads to physical storage locations in order to manage the multiple threads, where each thread has a separate thread pointer map:

scheduling the instructions of the instruction blocks to execute in accordance with the multiple threads; and

tracking execution of the multiple threads to enforce a fairness policy using allocation counters in an execution pipeline, where each allocation counter tracks a number of entries in a correlated thread pointer map, further comprising using the allocation counters to allocate instruction blocks belonging to different threads within a scheduler array to implement the fairness policy.

12. The computer system of claim 11 , wherein dynamic counter-based allocation is used to allocate instruction blocks belonging to different threads within a scheduler array to implement a fairness policy.

13. The computer system of claim 11 , wherein dynamic counter-based allocation is used to allocate instruction blocks belonging to different threads within a scheduler array to implement a dynamic ratio of thread allocation.

14. The computer system of claim 11 , wherein the fairness policy is implemented by use of individual thresholds for each allocation counter or a sum of the allocation counters.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2016
From: SOFT MACHINES, INC.
To: INTEL CORPORATION
Reel/Frame 040631/0915 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2014
From: ABDALLAH, MOHAMMAD
To: SOFT MACHINES, INC.
Reel/Frame 032447/0381 →