Instruction prefetch halting upon predecoding predetermined instruction types

US10620953B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10620953-B2
Application numberUS-201715432121-A
CountryUS
Kind codeB2
Filing dateFeb 14, 2017
Priority dateMar 31, 2016
Publication dateApr 14, 2020
Grant dateApr 14, 2020

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A data processing apparatus has prefetch circuitry for prefetching instructions from a data store into an instruction queue. Branch prediction circuitry is provided for predicting outcomes of branch instructions and the prefetch circuitry may prefetch instructions subsequent to the branch based on the predicted outcome. Instruction identifying circuitry identifies whether a given instruction prefetched from the data store is a predetermined type of program flow altering instruction and if so then controls the prefetch circuitry to halt prefetching of subsequent instructions into the instruction queue.

First claim

Opening claim text (preview).

We claim: 1. A data processing apparatus comprising: prefetch circuitry to prefetch instructions from a data store into an instruction queue; processing circuitry to perform data processing in response to instructions from the instruction queue; branch prediction circuitry to predict an outcome or target of a branch instruction, wherein the prefetch circuitry is configured to prefetch instructions subsequent to the branch instruction selected in dependence on the predicted outcome or target of the branch instruction; and instruction identifying circuitry to identify whether a given instruction prefetched from the data store is a predetermined type of program flow altering instruction comprising an arithmetic instruction, logical instruction, load instruction or register move instruction specifying a program counter register as a destination register, and in response to identifying that the given instruction is said predetermined type of program flow altering instruction, to control the prefetch circuitry to halt prefetching of instructions subsequent to said predetermined type of program flow altering instruction into the instruction queue; wherein the predetermined type of program flow altering instruction comprises a non-branch instruction for which branch prediction by the branch prediction circuitry is omitted. 2. The data processing apparatus according to claim 1 , wherein the prefetch circuitry is configured to resume prefetching of instructions subsequent to said predetermined type of program flow altering instruction into the instruction queue in response to an indication of a resolved outcome or target of the predetermined type of program flow altering instruction received from the processing circuitry. 3. The data processing apparatus according to claim 1 , wherein the branch instruction comprises an opcode identifying that the instruction is a branch instruction. 4. The data processing apparatus according to claim 1 , wherein the predetermined type of program flow altering instruction comprises at least one type of instruction for which the instruction identifying circuitry is configured to identify whether the instruction is a program flow altering instruction in dependence on at least one parameter of the instruction other than an opcode. 5. The data processing apparatus according to claim 1 , wherein in response to a program-counter-relative load instruction identifying an offset amount, the processing circuitry is configured to load into a destination register a data value having an address offset from an instruction address of the program-counter-relative load instruction by the offset amount. 6. The data processing apparatus according to claim 1 , wherein the instruction identifying circuitry is configured to identify whether the given instruction is a privilege-level changing instruction for redirecting program flow to a process having a different privilege level to a current process, and in response to identifying that the given instruction is said privilege-level changing instruction, to control the prefetch circuitry to halt prefetching of instructions subsequent to said privilege-level changing instruction into the instruction queue. 7. The data processing apparatus according to claim 1 , wherein the instruction identifying circuitry is configured to identify whether the given instruction is a wait-for-exception instruction for triggering the processing circuitry to pause processing until an exception event is detected, and in response to identifying that the given instruction is said wait-for-exception instruction, to control the prefetch circuitry to halt prefetching of instructions subsequent to said wait-for-exception instruction into the instruction queue. 8. The data processing apparatus according to claim 1 , wherein the instruction identifying circuitry is configured to identify whether the given instruction is a context synchronization instruction for triggering a flush of pending instructions subsequent to the context synchronization instruction from the processing circuitry and the prefetch circuitry, and in response to identifying that the given instruction is said context synchronization instruction, to control the prefetch circuitry to halt prefetching of instructions subsequent to said context synchronization instruction into the instruction queue. 9. The data processing apparatus according to claim 8 , wherein in response to a function call branch instruction specifying a target address, the prefetch circuitry is configured to store a return address to a call/return data structure, and the prefetch circuitry is configured to prefetch a subsequent instruction identified by the target address into the instruction queue; and in response to a function return branch instruction, the prefetch circuitry is configured to prefetch into the instruction queue a subsequent instruction identified by the return address read from the call/return data structure. 10. A data processing apparatus comprising: means for prefetching instructions from a data store into an instruction queue; means for performing data processing in response to instructions from the instruction queue; means for predicting an outcome or target of a branch instruction, wherein the means for prefetching is configured to prefetch instructions subsequent to the branch instruction selected in dependence on the predicted outcome of the branch instruction; and means for identifying whether a given instruction prefetched from the data store is a predetermined type of program flow altering instruction comprising an arithmetic instruction, logical instruction, load instruction or register move instruction specifying a program counter register as a destination register, and in response to identifying that the given instruction is said predetermined type of program flow altering instruction, controlling the means for prefetching to halt prefetching of instructions subsequent to said predetermined type of program flow altering instruction into the instruction queue; wherein the predetermined type of program flow altering instruction comprises a non-branch instruction for which branch prediction by the branch prediction circuitry is omitted. 11. A data processing method comprising: prefetching instructions from a data store into an instruction queue; and performing data processing in response to instructions from the instruction queue; wherein the prefetching comprises: prefetching instructions subsequent to a branch instruction selected in dependence on a predicted outcome or target of the branch instruction; and identifying whether a given instruction prefetched from the data store is a predetermined type of program flow altering instruction comprising an arithmetic instruction, logical instruction, load instruction or register move instruction specifying a program counter register as a destination register, and in response to identifying that the given instruction is said predetermined type of program flow altering instruction, halting prefetching of instructions subsequent to said predetermined type of program flow altering instruction into the instruction queue; wherein the predetermined type of program flow altering instruction comprises a non-branch instruction for which branch prediction by the branch prediction circuitry is omitted.

Assignees

Inventors

Classifications

  • using instruction pipelines · CPC title

  • G06F9/3804Primary

    for branches, e.g. hedging, branch folding · CPC title

  • using program counter relative addressing · CPC title

  • using address prediction, e.g. return stack, branch history buffer · CPC title

  • G06F9/3005Primary

    to perform operations for flow control · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10620953B2 cover?
A data processing apparatus has prefetch circuitry for prefetching instructions from a data store into an instruction queue. Branch prediction circuitry is provided for predicting outcomes of branch instructions and the prefetch circuitry may prefetch instructions subsequent to the branch based on the predicted outcome. Instruction identifying circuitry identifies whether a given instruction pr…
Who is the assignee on this patent?
Advanced Risc Mach Ltd
What technology area does this patent fall under?
Primary CPC classification G06F9/3804. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Apr 14 2020 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 2 related publications on this page (citations in our corpus or others sharing the same primary CPC).