IP Library Granted Patent US 10,324,727
Granted Patent B2
US 10,324,727 · App. 15/238,778 · Granted Jun 18, 2019

Memory dependence prediction

Inventors: Curtis Glenn Dunham (Austin, TX); Mitchell Bryan Hayenga (Austin, TX)
Assignee: ARM Limited
G06F9/3844G06F9/3004G06F9/30145G06F9/30181G06F9/3836G06F9/3855
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,324,727
App. No.
15/238,778
Granted
Jun 18, 2019
Kind
B2
Abstract

A data processing apparatus executes a stream of instructions. Memory access circuitry accesses a memory in response to control signals associated with a memory access instruction that is executed in the stream of instructions. Branch prediction circuitry predicts the outcome of branch instructions in the stream of instructions based on a branch prediction table. Processing circuitry performs a determination of whether out-of-order execution of memory access instructions is to be performed based on memory prediction data, and selectively enables out-of-order execution of the memory access instructions in dependence on the determination. The memory prediction data is stored in the branch prediction table.

Claims (54)

1. A data processing apparatus to execute a stream of instructions, the data processing apparatus comprising:

memory access circuitry to access a memory in response to control signals associated with a memory access instruction that is executed in said stream of instructions;

branch prediction circuitry to predict the outcome of branch instructions in said stream of instructions based on a branch prediction table; and

processing circuitry to perform a determination of whether out-of-order execution of memory access instructions is to be performed based on memory prediction data, and to selectively enable out-of-order execution of said memory access instructions in dependence on said determination, wherein

said memory prediction data is stored in said branch prediction table;

each entry of said branch prediction table comprises a reference to an instruction in said stream and an indication of whether out-of-order execution of said memory access instructions is to be performed;

said determination is performed in response to execution of said instruction;

each entry of said branch prediction table additionally comprises a condition associated with said instruction;

in response to execution of said instruction, said processing circuitry determines that out-of-order execution of memory access instructions is to be performed if said condition associated with said instruction is met and determines that out-of-order execution of memory access instruction is to be inhibited otherwise; and

said condition compares a number of executed memory access instructions since said instruction was executed to a predetermined value.

2. The data processing apparatus according to claim 1 , wherein

said instruction is of one or more types.

3. The data processing apparatus according to claim 2 , wherein

said one or more types includes a branch instruction.

4. The data processing apparatus according to claim 2 , wherein

said one or more types is a branch instruction.

5. The data processing apparatus according to claim 1 , wherein

said reference to said instruction is based on a hash function; and

said hash function takes at least a part of a program counter value of said instruction as an input.

6. The data processing apparatus according to claim 5 , wherein

said hash function takes at least a part of a value of a history of a state of said data processing apparatus as a further input.

7. The data processing apparatus according to claim 1 , wherein

said indication comprises a bit that represents whether out-of-order execution of memory access instructions is to be performed after execution of said instruction.

8. The data processing apparatus according to claim 1 , wherein

said indication forms part of said reference to said instruction;

said processing circuitry determines whether out-of-order execution of memory access instructions is to be performed based on whether said branch prediction table comprises an entry comprising said reference to said instruction, and whether said branch prediction table comprises an entry comprising said reference to said instruction modified by a modification function.

9. The data processing apparatus according to claim 8 , wherein

said modification function is the logical bit-wise inverse of each bit making up said reference to said instruction.

10. The data processing apparatus according to claim 1 , wherein

said condition is that one or more memory access instructions referenced by said condition have been executed.

11. The data processing apparatus according to claim 1 , further comprising:

storage circuitry to store a reference to a previous instruction, wherein

in response to a memory ordering violation, said processing circuitry causes said branch prediction table to store an entry comprising said reference to said previous instruction and an indication that out-of-order execution of memory access instructions is to be inhibited.

12. The data processing apparatus according to claim 1 , further comprising:

storage circuitry to store a reference to a previous instruction, wherein

in response to an absence of memory ordering violation from execution of memory access instructions between said previous instruction and an instruction following said previous instruction, said processing circuitry causes said branch prediction table to store an entry comprising said reference to said previous instruction and an indication that out-of-order execution of memory access instructions is to be enabled.

13. A data processing method to execute a stream of instructions in a data processing apparatus comprising a branch predictor to predict the outcome of branch instructions in said stream of instructions based on a branch prediction table, the data method comprising:

performing a determination of whether out-of-order execution of memory access instructions is to be performed based on memory prediction data; and

selectively enabling out-of-order execution of memory access instructions in dependence on said determination, wherein

said memory prediction data is stored in said branch prediction table;

each entry of said branch prediction table comprises a reference to an instruction in said stream and an indication of whether out-of-order execution of said memory access instructions is to be performed;

said determination is performed in response to execution of said instruction;

each entry of said branch prediction table additionally comprises a condition associated with said instruction;

in response to execution of said instruction, it is determined that out-of-order execution of memory access instructions is to be performed if said condition associated with said instruction is met and otherwise it is determined that out-of-order execution of memory access instruction is to be inhibited; and

said condition compares a number of executed memory access instructions since said instruction was executed to a predetermined value.

14. A data processing method to execute a stream of instructions in a data processing apparatus comprising a branch predictor to predict the outcome of branch instructions in said stream of instructions based on a branch prediction table, the data method comprising:

means for performing a determination of whether out-of-order execution of memory access instructions is to be performed based on memory prediction data; and

means for selectively enabling out-of-order execution of said memory access instructions in dependence on said determination, wherein

said memory prediction data is stored in said branch prediction table;

each entry of said branch prediction table comprises a reference to an instruction in said stream and an indication of whether out-of-order execution of said memory access instructions is to be performed;

said determination is performed in response to execution of said instruction;

each entry of said branch prediction table additionally comprises a condition associated with said instruction;

in response to execution of said instruction, it is determined that out-of-order execution of memory access instructions is to be performed if said condition associated with said instruction is met and otherwise it is determined that out-of-order execution of memory access instruction is to be inhibited; and

said condition compares a number of executed memory access instructions since said instruction was executed to a predetermined value.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 17, 2016
From: DUNHAM, CURTIS GLENN; HAYENGA, MITCHELL BRYAN
To: ARM LIMITED
Reel/Frame 039707/0735 →
Continuity (1)
Related Publication 20180052691A1 · Feb 22, 2018