IP Library Granted Patent US 9,274,799
Granted Patent B1
US 9,274,799 · App. 14/494,829 · Granted Mar 1, 2016

Instruction and logic for scheduling instructions

Inventors: Sebastian Winkel (Los Altos, CA); Ethan Schuchman (Santa Clara, CA); Tyler Sondag (Santa Clara, CA); Girish Venkatasubramanian (Santa Clara, CA)
Assignee: Intel Corporation
G06F9/3836
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,274,799
App. No.
14/494,829
Granted
Mar 1, 2016
Kind
B1
Abstract

A processor includes a front end and a scheduler. The front end includes logic to determine whether to apply an acyclical or cyclical thread assignment scheme to code received at the processor, and to, based upon a determined thread assignment scheme, assign code to a static logical thread and to a rotating logical thread. The scheduler includes logic to assign the static logical thread to the same physical thread upon a subsequent control flow execution of the static logical thread, and to assign the rotating logical thread to different physical threads upon different executions of instructions in the rotating logical thread.

Claims (94)

1. A processor, comprising:

a front end, including:

a first logic to determine whether to apply an acyclical thread assignment scheme to code received at the processor;

a second logic to determine whether to apply a cyclical thread assignment scheme to code received at the processor;

a third logic to, based upon a determined thread assignment scheme, assign first code to a static logical thread; and

a fourth logic to, based upon the determined thread assignment scheme, assign second code to a rotating logical thread; and

a scheduler, including:

a fifth logic to assign the static logical thread to a first physical thread;

a sixth logic to assign the static logical thread to the first physical thread upon each subsequent control flow instruction of the static logical thread;

a seventh logic to assign the rotating logical thread to a second physical thread; and

an eighth logic to assign the rotating logical thread to a third physical thread upon a subsequent execution of the rotating logical thread.

2. The processor of claim 1 , wherein the front end further includes, as part of the acyclical thread assignment scheme:

a ninth logic to move atoms from within a second block of code to an earlier, first block of code; and

a tenth logic to assign atoms remaining in the second block of code to the rotating logical thread.

3. The processor of claim 1 , wherein the front end further includes, as part of the acyclical thread assignment scheme:

a ninth logic to move atoms from within a second block of code to an earlier, first block of code;

a tenth logic to prioritize the moved atoms by assigning the moved atoms to the rotating logical thread; and

an eleventh logic to assign branch instructions to the static logical thread.

4. The processor of claim 3 , wherein the front end further includes, as part of the acyclical thread assignment scheme, a twelfth logic to assign remaining instructions to another static logical thread.

5. The processor of claim 1 , wherein the front end further includes, as part of the cyclical thread assignment scheme:

a ninth logic to determine any recurrence chains and loop carried dependence (LCD) chains in a loop;

a tenth logic to, for each recurrence chain and LCD chain, schedule atoms in the chain to execute closer to other atoms of the chain in a first iteration of the loop; and

an eleventh logic to schedule other atoms of the loop to overlap with a beginning of a second iteration of the loop.

6. The processor of claim 1 , wherein the front end further includes, as part of the cyclical thread assignment scheme:

a ninth logic to determine a recurrence chain in a loop;

a tenth logic to schedule all atoms of the recurrence chain in the fixed logical thread; and

an eleventh logic to schedule remaining atoms in the rotating logical thread.

7. The processor of claim 1 , wherein the front end further includes, as part of the cyclical thread assignment scheme:

a ninth logic to determine a recurrence chain and a plurality of loop carried dependence (LCD) chains in a loop;

a tenth logic to schedule all atoms of the recurrence chain in the fixed logical thread; and

an eleventh logic to schedule each LCD chain in a respective LCD rotating logical thread; and

a twelfth logic to schedule remaining atoms in the rotating logical thread.

8. A method comprising, within a processor:

determining whether to apply an acyclical thread assignment scheme to code received at the processor;

determining whether to apply a cyclical thread assignment scheme to code received at the processor;

based upon a determined thread assignment scheme, assigning first code to a static logical thread; and

based upon the determined thread assignment scheme, assigning second code to a rotating logical thread;

assigning the static logical thread to a first physical thread;

assigning the static logical thread to the first physical thread upon each subsequent control flow execution of the static logical thread;

assigning the rotating logical thread to a second physical thread; and

assigning the rotating logical thread to a third physical thread upon a subsequent execution of the rotating logical thread.

9. The method of claim 8 , further comprising applying the acyclical thread assignment scheme by:

moving atoms within a second block of code to an earlier, first block of code as part of the acyclical thread assignment scheme; and

assigning atoms remaining in the second block of code to the rotating logical thread as part of the acyclical thread assignment scheme.

10. The method of claim 8 , further comprising applying the acyclical thread assignment scheme by:

moving atoms within a second block of code to an earlier, first block of code;

prioritizing the moved atoms by assigning the moved atoms to the rotating logical thread; and

assigning branch instructions to the static logical thread.

11. The method of claim 8 , further comprising applying the cyclical thread assignment scheme by:

determining any recurrence chains and loop carried dependence (LCD) chains in a loop;

for each recurrence chain and LCD chain, scheduling atoms in the chain to execute closer to other atoms of the chain in a first iteration of the loop; and

scheduling other atoms of the loop to overlap with a beginning of a second iteration of the loop.

12. The method of claim 8 , further comprising applying the cyclical thread assignment scheme by:

determining a recurrence chain in a loop;

scheduling all atoms of the recurrence chain in the fixed logical thread; and

scheduling remaining atoms in the rotating logical thread.

13. The method of claim 8 , further comprising applying the cyclical thread assignment scheme by:

determining a recurrence chain and a plurality of loop carried dependence (LCD) chains in a loop;

scheduling all atoms of the recurrence chain in the fixed logical thread; and

scheduling each LCD chain in a respective LCD rotating logical thread; and

scheduling remaining atoms in the rotating logical thread.

14. A system for executing instructions, including:

a processor;

a front end, including:

a first logic to determine whether to apply an acyclical thread assignment scheme to code received at the processor;

a second logic to determine whether to apply a cyclical thread assignment scheme to code received at the processor;

a third logic to, based upon a determined thread assignment scheme, assign first code to a static logical thread; and

a fourth logic to, based upon the determined thread assignment scheme, assign second code to a rotating logical thread; and

a scheduler, including:

a fifth logic to assign the static logical thread to a first physical thread;

a sixth logic to assign the static logical thread to the first physical thread upon each subsequent control flow execution of the static logical thread;

a seventh logic to assign the rotating logical thread to a second physical thread; and

an eighth logic to assign the rotating logical thread to a third physical thread upon a subsequent execution of the rotating logical thread.

15. The system of claim 14 , wherein the front end further includes, as part of the acyclical thread assignment scheme:

a ninth logic to move atoms from within a second block of code to an earlier, first block of code; and

a tenth logic to assign atoms remaining in the second block of code to the rotating logical thread.

16. The system of claim 14 , wherein the front end further includes, as part of the acyclical thread assignment scheme:

a ninth logic to move atoms from within a second block of code to an earlier, first block of code;

a tenth logic to prioritize the moved atoms by assigning the moved atoms to the rotating logical thread; and

an eleventh logic to assign branch instructions to the static logical thread.

17. The system of claim 16 , wherein the front end further includes, as part of the acyclical thread assignment scheme, a twelfth logic to assign remaining instructions to another static logical thread.

18. The system of claim 14 , wherein the front end further includes, as part of the cyclical thread assignment scheme:

a ninth logic to determine any recurrence chains and loop carried dependence (LCD) chains in a loop;

a tenth logic to, for each recurrence chain and LCD chain, schedule atoms in the chain to execute closer to other atoms of the chain in a first iteration of the loop; and

an eleventh logic to schedule other atoms of the loop to overlap with a beginning of a second iteration of the loop.

19. The system of claim 14 , wherein the front end further includes, as part of the cyclical thread assignment scheme:

a ninth logic to determine a recurrence chain in a loop;

a tenth logic to schedule all atoms of the recurrence chain in the fixed logical thread; and

an eleventh logic to schedule remaining atoms in the rotating logical thread.

20. The system of claim 14 , wherein the front end further includes, as part of the cyclical thread assignment scheme:

a ninth logic to determine a recurrence chain and a plurality of loop carried dependence (LCD) chains in a loop;

a tenth logic to schedule all atoms of the recurrence chain in the fixed logical thread; and

an eleventh logic to schedule each LCD chain in a respective LCD rotating logical thread; and

a twelfth logic to schedule remaining atoms in the rotating logical thread.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2014
From: WINKEL, SEBASTIAN; SCHUCHMAN, ETHAN; SONDAG, TYLER; VENKATASUBRAMANIAN, GIRISH
To: INTEL CORPORATION
Reel/Frame 034005/0146 →