IP Library Granted Patent US 10,430,342
Granted Patent B2
US 10,430,342 · App. 14/945,054 · Granted Oct 1, 2019

Optimizing thread selection at fetch, select, and commit stages of processor core pipeline

Inventors: Yuan Chou (Los Gatos, CA); Gideon Levinsky (Cedar Park, TX); Manish Shah (Austin, TX); Robert Golla (Austin, TX); Matthew Smittle (Allen, TX)
Assignee: Oracle International Corporation
G06F12/0875G06F9/3851G06F2212/452
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,430,342
App. No.
14/945,054
Granted
Oct 1, 2019
Kind
B2
Abstract

An apparatus includes a buffer configured to store a plurality of instructions previously fetched from a memory, wherein each instruction of the plurality of instructions may be included in a respective thread of a plurality of threads. The apparatus also includes control circuitry configured to select a given thread of the plurality of threads dependent upon a number of instructions in the buffer that are included in the given thread. The control circuitry is also configured to fetch a respective instruction corresponding to the given thread from the memory, and to store the respective instruction in the buffer.

Claims (58)

1. An apparatus, comprising:

a buffer configured to store a plurality of instructions, each instruction of the plurality of instructions included in a corresponding thread of a plurality of threads; and

control circuitry configured to:

maintain a table of thread status data for the plurality of threads, wherein the table of thread status data includes at least a respective count value that indicates a number of instructions in the buffer for the corresponding thread, and a respective indicator that is asserted if the corresponding thread is in a particular mode due to a cache miss;

in response to a determination that a respective indicator for a particular thread is asserted, adjust the respective count value to decrease a selection priority for the particular thread;

select a given thread of the plurality of threads based on the respective count values;

fetch one or more associated instructions corresponding to the given thread from a memory; and

store the one or more associated instructions in the buffer.

2. The apparatus of claim 1 , wherein the control circuitry is further configured to select the given thread with a respective count value that is less than the respective count value corresponding to each remaining thread of the plurality of threads.

3. The apparatus of claim 1 , wherein the particular mode corresponds to a miss look ahead mode.

4. The apparatus of claim 1 , wherein to select the given thread of the plurality of threads based on the respective count values, the control circuitry is further configured to:

assign each thread to one of at least two groups based on the respective count value corresponding to each thread of the plurality of threads; and

select from a first group of the at least two groups, the given thread that has the longest time period since a previous selection.

5. The apparatus of claim 4 , wherein the control circuitry is further configured to, in response to a determination that no threads assigned to the first group are eligible for selection, select from a second group of the at least two groups, the given thread that has the longest time period since a previous selection.

6. The apparatus of claim 1 , wherein the control circuitry is further configured to:

assign each thread of the plurality of threads to one of at least two groups based on a determination if a critical instruction in the buffer is included in the corresponding thread;

select from a first group of the at least two groups, a different thread that has the longest time period since a previous selection, wherein the first group includes threads that include a critical instruction in the buffer; and

commit an instruction included in the different thread.

7. The apparatus of claim 1 , wherein the memory corresponds to an instruction cache and the buffer corresponds to a fetch buffer.

8. A method comprising:

storing, in a first buffer, a plurality of instructions each of which is included in a corresponding thread of a plurality of threads;

storing, by a control circuit, a table of thread status data for the plurality of threads, wherein the table of thread status data includes at least a respective count value that indicates a number of instructions in the first buffer for the corresponding thread, and a respective indicator that is asserted if the corresponding thread is in a particular mode due to a cache miss;

in response to a determination that a respective indicator for a particular thread is asserted, adjusting the respective count value to decrease a selection priority for the particular thread;

selecting a given thread of the plurality of threads based on the respective count values;

copying a particular instruction in the given thread from a second buffer; and

storing the particular instruction in the first buffer.

9. The method of claim 8 , wherein the respective count value corresponding to the given thread is less than the respective count value corresponding to each remaining thread of the plurality of threads.

10. The method of claim 8 , wherein the particular mode corresponds to a miss look ahead mode.

11. The method of claim 8 , wherein selecting the given thread of the plurality of threads based on the respective count values further comprises:

assigning each thread to one of at least two groups based on the respective count values corresponding to each thread of the plurality of threads; and

selecting from a first group of the at least two groups, the given thread that has the longest time period since a previous selection.

12. The method of claim 11 , further comprising, in response to determining that no threads assigned to the first group are eligible for selection, selecting from a second group of the at least two groups, the given thread that has the longest time period since a previous selection.

13. The method of claim 8 , wherein selecting the given thread further comprises:

assigning each thread of the plurality of threads to one of at least two groups based on a determination if a critical instruction in the first buffer is included in the corresponding thread;

selecting from a first group of the at least two groups, a different thread that has the longest time period since a previous selection, wherein the first group includes threads that include a critical instruction in the first buffer; and

committing an instruction included in the different thread.

14. The method of claim 8 , wherein the first buffer is a reorder buffer and the second buffer is a fetch buffer.

15. A system, comprising:

a first buffer configured to store a first plurality of instructions, each of which is included in a corresponding thread of a plurality of threads;

a second buffer configured to store a second plurality of instructions each of which is included in a corresponding thread of the plurality of threads; and

a control circuit configured to:

track a table of thread status data for the plurality of threads, wherein the table of thread status data includes at least a respective count value that indicates a number of instructions stored in the second buffer for the corresponding thread, and a respective indicator that is asserted if the corresponding thread is in a particular mode due to a cache miss;

in response to a determination that a respective indicator for a particular thread is asserted, adjust the respective count value to decrease a selection priority for the particular thread;

select a given thread of the plurality of threads based on the respective count values; and

fetch a particular instruction included in the given thread from the first buffer to the second buffer.

16. The system of claim 15 , wherein the control circuit is further configured to:

select a given thread of the plurality of threads based on a number of instructions stored in the first buffer that are included in the given thread;

fetch a particular instruction included in the given thread from a memory; and

store the particular instruction in the first buffer.

17. The system of claim 15 , wherein the particular mode corresponds to a miss look ahead mode.

18. The system of claim 15 , wherein to select the given thread of the plurality of threads, the control circuit is further configured to:

assign each thread to one of at least two groups based on the respective count values corresponding to each thread of the plurality of threads; and

select from a first group of the at least two groups, the given thread that has the longest time period since a previous selection.

19. The system of claim 15 , wherein to select a given thread of the plurality of threads, the control circuit is further configured to:

assign each thread of the plurality of threads to one of at least two groups based on a determination if a critical instruction in the second buffer is included in the corresponding thread;

select from a first group of the at least two groups, a different thread that has the longest time period since a previous selection, wherein the first group includes threads that include a critical instruction in the second buffer; and

commit an instruction included in the different thread.

20. The system of claim 16 , wherein the memory corresponds to an instruction cache the first buffer corresponds to a fetch buffer, and the second buffer corresponds to a pick queue.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2015
From: CHOU, YUAN; LEVINSKY, GIDEON; SHAH, MANISH; GOLLA, ROBERT; SMITTLE, MATTHEW
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 037076/0361 →
Continuity (1)
Related Publication 20170139706A1 · May 18, 2017