Processing instruction control transfer instructions

US10198260B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10198260-B2
Application numberUS-201614994796-A
CountryUS
Kind codeB2
Filing dateJan 13, 2016
Priority dateJan 13, 2016
Publication dateFeb 5, 2019
Grant dateFeb 5, 2019

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 system that for storing program counter values is disclosed. The system may include a program counter, a first memory including a plurality of sectors, a first circuit configured to retrieve a program instruction from a location in memory dependent upon a value of the program counter, send the value of the program counter to an array for storage and determination a predicted outcome of the program instruction in response to a determination that execution of the program instruction changes a program flow. The second circuit may be configured to retrieve the value of the program counter from a given entry in a particular sector of the array, and determine an actual outcome of the program instruction dependent upon the retrieved value of the program counter.

First claim

Opening claim text (preview).

What is claimed is: 1. An apparatus, comprising: a program counter circuit; a first memory including a plurality of sectors, wherein each sector includes a plurality of entries; a fetch circuit configured to: retrieve a plurality of program instructions from respective locations in a second memory, wherein each of the respective locations is referenced using a corresponding value of the program counter circuit; in response to a determination that each of two sequential program instructions of the plurality of program instructions affect a program flow: store a value of the program counter circuit corresponding to an initial program instruction of the two sequential program instructions and an offset to a subsequent program instruction of the two sequential program instructions, in a first entry of a first sector of the first memory; and determine a predicted outcome of the program instruction; and an execution circuit configured to: retrieve the value of the program counter circuit from the first entry of the first sector of the first memory using a tag associated with the value; and determine an actual outcome of the initial program instruction using the value of the program counter circuit. 2. The apparatus of claim 1 , wherein the value of the program counter circuit corresponds to a logical address of the initial program instruction in the first memory. 3. The apparatus of claim 1 , wherein to determine the actual outcome of the initial program instruction, the execution circuit is further configured to execute the initial program instruction. 4. The apparatus of claim 1 , wherein to determine the actual outcome of the initial program instruction, the execution circuit is further configured to determine an actual direction and an actual target of the initial program instruction. 5. The apparatus of claim 1 , wherein to store the value of the program counter circuit, the first memory is further configured to allocate the first entry of the plurality of entries of the first sector based on a level of activity of each sector of the plurality of sectors. 6. The apparatus of claim 5 , wherein the first memory is further configured to allocate, in parallel with allocating the first entry, a second entry of the plurality of entries of a second sector for another value of the program counter circuit corresponding to another program instruction. 7. A method, comprising: retrieving, by a fetch circuit of a processor, a plurality of program instruction from respective locations in system memory, wherein each of the respective locations is referenced using a corresponding value of a program counter circuit; in response to determining that each of two sequential program instructions of the plurality of program instructions affect a program flow: storing a value of the program counter circuit corresponding to an initial program instruction of the two sequential program instructions and an offset to a subsequent program instruction of the two sequential program instructions, in an array; and determining, by the fetch circuit, a predicted outcome of the program instruction; and retrieving, by an execution circuit of a processor, the value of the program counter circuit from the array using a tag value associated with the value; and determining, by the execution circuit, an actual outcome of the of the initial program instruction using the value of the program counter circuit. 8. The method of claim 7 , wherein the value of the program counter circuit corresponds to a logical address of the program instruction in the system memory. 9. The method of claim 7 , wherein determining, by the execution circuit, the actual outcome of the program instruction includes executing, by the execution circuit, the program instruction. 10. The method of claim 7 , wherein the array includes a plurality of sectors, and wherein storing the value of the program counter circuit by an array includes selecting a particular sector of the plurality of sectors, based on a level of activity of each sector of the plurality of sectors. 11. The method of claim 10 , wherein storing the value of the program counter circuit includes generating a tag corresponding to a location in the system memory, in which the value of the program counter circuit is stored. 12. The method of claim 10 , wherein each sector of the plurality of sectors includes a plurality of entries, and wherein storing the value of the program counter circuit includes allocating a given entry of the plurality of entries of the particular sector of the plurality of sectors. 13. The method of claim 10 , further comprising stalling a retrieval of additional program instructions from the system memory, in response to determining that no entries are available in a plurality of entries of each sector of the plurality of sectors to store the value of the program counter circuit. 14. A system, comprising: a memory; and a processor including a storage array and a program counter circuit, wherein the processor is configured to: retrieve a plurality of program instructions from respective locations in the memory, wherein each of the respective locations is referenced using a corresponding value of the program counter circuit; in response to a determination that each of two sequential program instructions of the plurality of program instructions affect a program flow: store a value of the program counter circuit corresponding to an initial program instruction of the two sequential program instructions and an offset to a subsequent program instruction of the two sequential program instructions, to the storage array; and determine a predicted outcome of the program instruction; and retrieve the value of the program counter circuit from the storage array using a tag associated with the value; and determine an actual outcome of the initial program instruction using the value of the program counter circuit. 15. The system of claim 14 , wherein the value of the program counter circuit corresponds to a logical address of the initial program instruction in the memory. 16. The system of claim 14 , wherein to determine the actual outcome of the initial program instruction, the processor is further configured to execute the initial program instruction. 17. The system of claim 14 , wherein to determine the actual outcome of the initial program instruction, the processor is further configured to determine an actual direction and an actual target of the initial program instruction. 18. The system of claim 14 , wherein the storage array includes a plurality of sectors, wherein each sector includes a plurality of entries, and wherein to store the value of the program counter circuit, the processor is further configured to allocate, in parallel, a first entry in a first sector of the plurality of sectors and a second entry in a second sector of the plurality of sectors based on a level of activity of each sector of the plurality of sectors. 19. The system of claim 18 , wherein the first entry is shared by a different program instruction, wherein execution of the different program instruction changes the program flow, and wherein the processor is further configured to de-allocate the first entry in response to a determination that both of the initial program instruction and the different program instruction have been executed. 20. The system of claim 18 , wherein the processor is further configured to stall retrieval of additional program instructions from the memory in response to a determination

Assignees

Inventors

Classifications

  • Conditional branch instructions · CPC title

  • Program or instruction counter, e.g. incrementing · CPC title

  • for branches, e.g. hedging, branch folding · 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 US10198260B2 cover?
A system that for storing program counter values is disclosed. The system may include a program counter, a first memory including a plurality of sectors, a first circuit configured to retrieve a program instruction from a location in memory dependent upon a value of the program counter, send the value of the program counter to an array for storage and determination a predicted outcome of the pr…
Who is the assignee on this patent?
Oracle Int Corp
What technology area does this patent fall under?
Primary CPC classification G06F9/30058. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Feb 05 2019 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 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).