IP Library Granted Patent US 9,910,672
Granted Patent B2
US 9,910,672 · App. 15/183,365 · Granted Mar 6, 2018

Speculative load issue

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,910,672
App. No.
15/183,365
Granted
Mar 6, 2018
Kind
B2
Abstract

A method and load and store buffer for issuing a load instruction to a data cache. The method includes determining whether there are any unresolved store instructions in the store buffer that are older than the load instruction. If there is at least one unresolved store instruction in the store buffer older than the load instruction, it is determined whether the oldest unresolved store instruction in the store buffer is within a speculation window for the load instruction. If the oldest unresolved store instruction is within the speculation window for the load instruction, the load instruction is speculatively issued to the data cache. Otherwise, the load instruction is stalled until any unresolved store instructions outside the speculation window are resolved. The speculation window is a short window that defines a number of instructions or store instructions that immediately precede the load instruction.

Claims (26)

1. A method of issuing a load instruction in a program to a data cache, the method comprising:

determining whether the program comprises a function return instruction within a function window of the load instruction;

if the program comprises a function return instruction within the function window of the load instruction, stalling the load instruction; and

if the program does not comprise a function return instruction within the function window of the load instruction, determining if the load instruction is to be speculatively issued.

2. The method of claim 1 , wherein determining whether the program comprises a function return instruction within the function window of the load instruction comprises:

storing, in a function return table, an ID for each function return instruction identified in the program; and

using the stored IDs and an ID associated with the load instruction to determine whether the program comprises a function return instruction within the function window of the load instruction.

3. The method of claim 2 , wherein the IDs are re-order buffer IDs.

4. The method of claim 1 , wherein the function window comprises a number of instructions preceding the load instruction, the number of instructions defining a size of the function window.

5. The method of claim 4 , wherein the size of the function window is fixed.

6. The method of claim 4 , further comprising dynamically adjusting the size of the function window.

7. The method of claim 4 , wherein the size of the function window is based on a size of a speculation window, the speculation window comprising a number of instructions preceding the load instruction wherein the load instruction is only speculatively issued if any older unresolved store instructions are within the speculation window.

8. A load and store buffer to issue a load instruction in a program to a data cache, the load and store buffer comprising:

a load and store logic unit configured to:

determine whether the program comprises a function return instruction within a function window of the load instruction;

if the program comprises a function return instruction within the function window of the load instruction, stall the load instruction; and

if the program does not comprise a function return instruction within the function window of the load instruction, determine if the load instruction is to be speculatively issued.

9. The load and store buffer of claim 8 , further comprising:

a function return table configured to store an ID for each function return instruction identified in the program;

wherein the load and store logic unit is configured to determine whether the program comprises a function return instruction within the function window of the load instruction based on the stored IDs and an ID associated with the load instruction.

10. The load and store buffer of claim 9 , wherein the IDs are re-order buffer IDs.

11. The load and store buffer of claim 8 , wherein the function window comprises a number of instructions preceding the load instruction, the number of instructions defining a size of the function window.

12. The load and store buffer of claim 11 , wherein the size of the function window is fixed.

13. The load and store buffer of claim 11 , wherein the load and store logic unit is further configured to dynamically adjust the size of the function window.

14. The load and store buffer of claim 11 , wherein the size of the function window is based on a size of a speculation window, the speculation window comprising a number of instructions preceding the load instruction wherein the load instruction is only speculatively issued if any older unresolved store instructions are within the speculation window.

15. A processor comprising the load and store buffer as set forth in claim 8 .

Assignments (7)
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/0166 →
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 →