IP Library › Granted Patent US 10,353,817
Granted Patent B2
US 10,353,817 · App. 15/451,858 · Granted Jul 16, 2019

Cache miss thread balancing

Inventors: Gregory W. Alexander (Pflugerville, TX); Brian D. Barrick (Pflugerville, TX); Thomas W. Fox (Hopewell Junction, NY); Christian Jacobi (West Park, NY); Anthony Saporito (Highland, NY); Somin Song (Austin, TX); Aaron Tsai (Poughkeepsie, NY)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F12/0811G06F12/0804G06F12/0813G06F12/0875G06F2212/452G06F2212/60G06F2212/62
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,353,817
App. No.
15/451,858
Granted
Jul 16, 2019
Kind
B2
Abstract

A simultaneous multithread (SMT) processor having a shared dispatch pipeline includes a first circuit that detects a cache miss thread. A second circuit determines a first cache hierarchy level at which the detected cache miss occurred. A third circuit determines a Next To Complete (NTC) group in the thread and a plurality of additional groups (X) in the thread. The additional groups (X) are dynamically configured based on the detected cache miss. A fourth circuit determines whether any groups in the thread are younger than the determined NTC group and the plurality of additional groups (X), and flushes all the determined younger groups from the cache miss thread.

Claims (53)

1. A method of balancing a cache miss thread, the method comprising:

detecting a cache miss of the cache miss thread;

determining a first cache hierarchy level at which the detected cache miss occurred;

determining a Next To Complete (NTC) group in the cache miss thread and a plurality of additional groups (X) in the cache miss thread, the plurality of additional groups (X) being dynamically configured based on the detected cache miss; and

determining whether any groups in the cache miss thread are younger than the determined NTC group and the plurality of additional groups (X), and flushing all the determined younger groups from the cache miss thread.

2. The method of claim 1 , wherein the plurality of additional groups (X) is based on data latency.

3. The method of claim 2 , wherein the data latency is based on the first cache hierarchy level at which the detected cache miss occurred.

4. The method of claim 1 , further comprising:

identifying a second cache hierarchy level that is higher than the first cache hierarchy level;

determining that the detected cache miss is from the second cache hierarchy level;

determining the NTC group and a subset of the plurality of additional groups based on the second cache hierarchy level; and

flushing at least one additional flushed group in the cache miss thread that is younger than a NTC group and the subset of the plurality of additional groups.

5. The method of claim 1 , wherein the flush occurs after detecting a valid flush point.

6. The method of claim 5 , wherein prior to determining the younger groups, detecting the valid flush point comprises:

determining whether the NTC group and the plurality of additional groups (X) constitute a valid flush point; and

searching for larger values that define the plurality of additional groups (X) in response to determining the NTC group and the plurality of additional groups (X) define an invalid flush point.

7. A computer program product to perform cache miss thread balancing, the computer program product comprising a non-transitory computer readable storage medium having program instructions embodied therewith, the program instructions executable by an electronic computer processor to control a database processing system to perform: detecting a cache miss in the cache miss thread; determining a cache hierarchy level at which the detected cache miss occurred; determining a Next To Complete (NTC) group in the cache miss thread and a plurality additional groups (X) in the cache miss thread, the plurality of additional groups (X) being dynamically configured based on the detected cache miss; and determining whether any groups in the thread are younger than the determined NTC group and the plurality of additional groups (X), and flushing all the determined younger groups from the cache miss thread.

8. The computer program product of claim 7 , wherein the plurality of additional groups (X) is based on data latency.

9. The computer program product of claim 8 , wherein the data latency is based on the cache hierarchy level at which the detected cache miss occurred.

10. The computer program product of claim 7 , further comprising:

identifying a second cache hierarchy level that is higher than the first cache hierarchy level;

determining that the detected cache miss is from the second cache hierarchy level;

determining the NTC group and a subset of the plurality of additional groups based on the second cache hierarchy level; and

flushing at least one additional flushed group in the cache miss thread that is younger than a NTC group and the subset of the plurality of additional groups.

11. The computer program product of claim 10 , wherein prior to determining the younger groups, detecting the valid flush point comprises:

determining whether the NTC group and the plurality of additional groups (X) constitute a valid flush point; and

searching for larger values that define the plurality of additional groups (X) in response to determining the NTC group and the plurality of additional groups (X) define an invalid flush point.

12. The computer program product of claim 11 , further comprising:

incrementing the NTC group and the plurality of additional groups (X) in response to determining the invalid flush point, until a valid flush point is found; and

flushing all the determined younger groups from the cache miss thread included in the cache miss based on the incremented NTC group and plurality of additional groups (X) in response to detecting that the incremented NTC group and plurality of additional groups (X) is a valid flush point.

13. A simultaneous multithread (SMT) processor having a shared dispatch pipeline comprising:

a first circuit that detects a cache miss thread;

a second circuit that determines a first cache hierarchy level at which the detected cache miss occurred;

a third circuit that determines a Next To Complete (NTC) group in the thread and a plurality of additional groups (X) in the thread, the plurality of additional groups (X) being dynamically configured based on the detected cache miss; and

a fourth circuit that determines whether any groups in the thread are younger than the determined NTC group and the plurality of additional groups (X), and flushes all the determined younger groups from the cache miss thread.

14. The SMT processor of claim 13 , where a size of the plurality of additional groups (X) is based on data latency.

15. The SMT processor of claim 14 , wherein the data latency is based on the first cache hierarchy level at which the detected cache miss occurred.

16. The SMT processor of claim 15 , wherein the second circuit identifies a second cache hierarchy level that is higher than the first cache hierarchy level, and wherein the SMT processor further comprises:

a fifth circuit that determines that the detected cache miss is from the second cache hierarchy level;

a sixth circuit that identifies the NTC group and a subset of the plurality of additional groups based on the second cache hierarchy level,

wherein the fourth circuit flushes at least one additional flushed group in the cache miss thread that is younger than the NTC group and the subset of the plurality of additional groups, and

wherein the second cache hierarchy level is based on a determination that the NTC group has been waiting for a longer time indicating that the data will be returned from the second cache hierarchy level.

17. The SMT processor of claim 13 wherein the fourth circuit determines whether the NTC group and the plurality of additional groups (X) constitute a valid flush point.

18. The SMT processor of claim 17 , wherein based on a validity of the NTC group and the at least one additional group (X), the fourth circuit either flushes the stalled and/or resource-consuming target thread included in the cache miss based on the NTC group and the plurality of additional groups (X) in response to detecting the valid flush point, or blocks the flushing when the NTC group and the plurality of additional groups (X) is an invalid flush point.

19. A method of performing a cache miss thread balance on a global completion table, the method comprising:

detecting a first group of a first thread experiencing a pending cache miss;

determining a Next To Complete (NTC) group in the first thread and plurality of additional groups (X) in the first thread;

flushing, from the global completion table, at least one group of the first thread that is dispatched after the NTC group in the first thread and plurality of additional groups (X) in the first thread so as to provide at least one empty global completion table entry field; and

storing, in the at least one empty global completion table entry field, a new group of a second thread different from the first thread.

20. The method of claim 19 , wherein the new group of the second thread is dispatched while the first group of the first thread experiences the pending cache miss.

21. The method of claim 20 , wherein the new group listed in the global completion table completes execution while the first group of the first thread experiences the pending cache miss.

22. The method of claim 21 , wherein a new group of the first group is blocked from dispatching while the first group of the first thread experiences the pending cache miss.

23. The method of claim 22 , wherein the plurality of additional groups (X) associated with the NTC group is based on data latency that varies according to a cache hierarchy level at which the pending cache miss exists, the data latency defined as an amount of time it takes data to return from the cache hierarchy level.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 19, 2026
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: KIDON IP CORPORATION
Reel/Frame 074125/0530 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2026
From: KIDON IP CORPORATION
To: CAPROCK INTEGRATED TECHNOLOGIES LLC
Reel/Frame 073866/0504 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2026
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: KIDON IP CORPORATION
Reel/Frame 074975/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2017
From: ALEXANDER, GREGORY W.; BARRICK, BRIAN D.; FOX, THOMAS W.; JACOBI, CHRISTIAN; SAPORITO, ANTHONY; SONG, SOMIN; TSAI, AARON
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 041485/0208 →
Continuity (1)
Related Publication 20180260326A1 · Sep 13, 2018