Instruction block allocation

US11755484B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-11755484-B2
Application numberUS-201514752418-A
CountryUS
Kind codeB2
Filing dateJun 26, 2015
Priority dateJun 26, 2015
Publication dateSep 12, 2023
Grant dateSep 12, 2023

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.

Apparatus and methods are disclosed for throttling processor operation in block-based processor architectures. In one example of the disclosed technology, a block-based instruction set architecture processor includes a plurality of processing cores configured to fetch and execute a sequence of instruction blocks. Each of the processing cores includes function resources for performing operations specified by the instruction blocks. The processor further includes a core scheduler configured to allocate functional resources for performing the operations. The functional resources are allocated for executing the instruction blocks based, at least in part, on a performance metric. The performance metric can be generated dynamically or statically based on branch prediction accuracy, energy usage tolerance, and other suitable metrics.

First claim

Opening claim text (preview).

We claim: 1. An apparatus comprising a processor, the processor comprising: one or more processing cores configured to fetch and execute a sequence of instruction groups, each of the one or more processing cores comprising functional resources performing operations specified by the sequence of instruction groups; and one or more core schedulers: allocating processing cores performing at least a portion of operations specified by child instruction groups of the sequence by a respective aggregated confidence rating, for two or more parent instruction groups, of a child instruction group of the child instruction groups, each of the two or more parent instruction groups being on a respective separate instruction path converging on the child instruction group, and determining the respective aggregated confidence rating by combining confidence ratings for the converging instruction paths of the two or more parent instruction groups of the child instruction group, and consequently according to the respective aggregated confidence rating, initiating execution of the child instruction group prior to initiating execution of at least one of the child instruction group's two or more parent instruction groups. 2. The apparatus of claim 1 , wherein the respective aggregated confidence rating is based at least in part on branch prediction accuracy for one or more branch instructions of the two or more parent instruction groups. 3. The apparatus of claim 1 , wherein the processor further comprises one or more performance counters configured to monitor performance of the processor, and wherein the respective aggregated confidence rating is determined based at least in part on data received from the performance counters. 4. The apparatus of claim 1 , wherein: the one or more core schedulers are configured to speculatively initiate instruction fetch, instruction decode, or instruction fetch and instruction decode operations for the child instruction group prior to dependencies for the child instruction group being available; and the one or more core schedulers are configured to inhibit execution of the child instruction group until dependencies for the child instruction group are available. 5. The apparatus of claim 1 , wherein the one or more core schedulers are configured to speculatively initiate fetch, decode, and execute instruction operations for child instruction groups of one or more branches of an instruction group concurrently being fetched, decoded, or executed, based at least in part on the aggregated confidence rating. 6. The apparatus of claim 1 , wherein the one or more core schedulers are configured to, based at least in part on confidence rating increasing, branch to and execute instructions on a processor core that includes previously-fetched, or previously-fetched and previously-decoded, instruction groups. 7. The apparatus of claim 1 , wherein the one or more core schedulers are configured to adjust a number of processor cores, a number of functional resources of processor cores, or a number of processor cores and functional resources of processor cores allocated to executing the sequence of instruction groups based on comparing the aggregated confidence rating to one or more predetermined values. 8. The apparatus of claim 7 , wherein at least one of the processor cores comprises two or more instruction windows, and wherein the one or more core schedulers are configured to allocate more functional resources of the at least one processor core to one of the two or more instruction windows having a higher confidence level. 9. The apparatus of claim 1 , wherein the one or more core schedulers are configured to adjust the number of instruction groups that are prefetched, decoded, or executed based on comparing a confidence rating to one or more predetermined values. 10. The apparatus of claim 1 , wherein at least one of the one or more processing cores is configured to prefetch, decode, or prefetch and decode one or more instruction headers for one or more target instruction groups of a currently executing instruction group. 11. A method performed by a core scheduler for at least two processor cores configured to fetch and execute a sequence of instruction groups, each of the at least two processor cores comprising functional resources for performing operations specified by the sequence of instruction groups, the method comprising: aggregating confidence ratings of two or more parent instruction groups of a child instruction group to determine an aggregated confidence rating of the child instruction group; determining that the aggregated confidence rating of the child instruction group is higher than a confidence rating of at least one of the parent instruction groups of the child instruction group, each of the parent instruction groups being on a respective separate instruction path to the child instruction group; based on the determining, allocating one of the at least two processor cores to perform at least a portion of operations specified by the child instruction group of the sequence according to the aggregated confidence rating; and responsive to the allocating, initiating execution of the child instruction group prior to initiating execution of the at least one of the parent instruction groups. 12. The method of claim 11 , wherein the aggregated confidence rating is based at least in part on branch prediction accuracy for one or more branch instructions of the two or more parent instruction groups. 13. The method of claim 11 , further comprising using one or more performance counters to monitor performance of the one or more processor cores, and wherein the aggregated confidence rating is determined based at least in part on data received from the one or more performance counters. 14. The method of claim 11 , wherein the core scheduler is configured to, based at least in part on the aggregated confidence rating increasing, branch to and execute instructions on a processor core that includes previously-fetched, or previously-fetched and previously-decoded, instruction groups. 15. The method of claim 11 , wherein core scheduler is configured to adjust a number of processor cores, a number of functional resources of processor cores, or a number of processor cores and functional resources of processor cores allocated to executing the sequence of instruction groups based on comparing the aggregated confidence rating to one or more predetermined values. 16. The method of claim 11 , wherein the core scheduler is configured to adjust a number of instruction groups that are prefetched, decoded, or executed based on comparing a confidence rating to one or more predetermined values. 17. The method of claim 11 , wherein at least one of the one or more processor cores is configured to prefetch, decode, or prefetch and decode one or more instruction headers for one or more target instruction groups of a currently executing instruction group. 18. One or more computer-readable storage media storing instructions for causing one or more core schedulers to perform a method, the one or more core schedulers controlling one or more processor cores that are configured to fetch and execute a sequence of instruction groups, each of the one or more processor cores comprising functional resources performing operations specified by the sequence of instruction groups, the method comprising: allocating processor cores performing at least a portion of operations specified by child instruction groups of the sequence by aggregating confidence ratings for two or more parent instruction group

Assignees

Inventors

Classifications

  • Result writeback, i.e. updating the architectural state or memory · CPC title

  • Instruction completion, e.g. retiring, committing or graduating · CPC title

  • controlled by a single instruction for multiple threads [SIMT] in parallel · CPC title

  • from multiple instruction streams, e.g. multistreaming · CPC title

  • G06F9/3804Primary

    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 US11755484B2 cover?
Apparatus and methods are disclosed for throttling processor operation in block-based processor architectures. In one example of the disclosed technology, a block-based instruction set architecture processor includes a plurality of processing cores configured to fetch and execute a sequence of instruction blocks. Each of the processing cores includes function resources for performing operations…
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
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 Sep 12 2023 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 12 related publications on this page (citations in our corpus or others sharing the same primary CPC).