Program loop control

US10747536B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10747536-B2
Application numberUS-201716080736-A
CountryUS
Kind codeB2
Filing dateMar 21, 2017
Priority dateMar 23, 2016
Publication dateAug 18, 2020
Grant dateAug 18, 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 system provides a loop-end instruction for use at the end of a program loop body specifying an address of a beginning instruction of said program loop body. Loop control circuitry ( 1000 ) serves to control repeated execution of the program loop body upon second and subsequent passes through the program loop body using loop control data provided by the loop-end instruction without requiring the loop-end instruction to be explicitly executed upon each pass.

First claim

Opening claim text (preview).

The invention claimed is: 1. Apparatus for processing data comprising: processing circuitry to perform processing operations specified by program instructions; an instruction decoder to decode said program instructions to generate control signals to control said processing circuitry to perform said processing operations; wherein said instruction decoder comprises loop-end instruction decoding circuitry to decode a loop-end instruction at a finish of a program loop body to generate control signals to control said processing circuitry to store loop control data, to determine if further loop iterations are required and, if further loop iterations are required to branch to a beginning instruction of said program loop body; and further comprising loop control circuitry to determine, when enabled, if further loop iterations are required, and if further loop iterations are required, to control said processing circuitry to perform processing operations specified by program instructions of said program loop body preceding said loop-end instruction, and excluding said loop-end instruction, under control of said loop control data; wherein a loop count value is updated each time said program loop body is traversed to perform said processing operations specified by said program loop body, said loop counter value being indicative of the number of loop iterations remaining to be performed; wherein said loop counter is updated by a number of vector elements that have been processed by said traverse of said program loop body. 2. Apparatus as claimed in claim 1 , comprising a loop control cache to store said loop control data. 3. Apparatus as claimed in claim 1 , comprising a branch predictor and said loop control data is supplied to said branch predictor and said branch predictor uses said loop control data to direct program flow such that processing circuitry performs said processing operations specified by program instructions of said program loop body preceding said loop-end instruction, and excluding said loop-end instruction. 4. Apparatus as claimed in claim 1 , wherein invalidating of said loop control data disables said loop control circuitry such that upon further execution of said program loop, said loop-end instruction is performed again and said loop control data is stored again to re-enable said loop control circuitry. 5. Apparatus as claimed in claim 4 , wherein said loop control data is invalidated upon occurrence of one or more of: said processing circuitry being reset; said loop control circuitry or said loop-end instruction determining that no further iterations of said program loop body are required; an exception being entered; exception tail-chaining whereby processing proceeds directly from processing a current exception to processing a next exception without restoring state prior to said current exception; execution of a branch instruction with greater than a predetermined immediate target address range; returning from an exception; execution of an instruction that causes an instruction cache of said apparatus to be invalidated; execution of an instruction that disables caching of said loop control data; execution of an instruction that disables branch prediction; execution of a branch-future instruction; said processing circuitry determining that a branch within said program loop body targets an address that is not between said beginning instruction and said loop-end instruction; a switch between a secure mode of operation and a non-secure mode of operation; and one or more implementation defined conditions. 6. Apparatus as claimed in any one of the preceding claim 1 , wherein said loop control data includes one or more of: loop start data indicative of an address of said beginning instruction; loop start address offset data that is indicative of the distance between a last instruction of said program loop body that immediately precedes said loop-end instruction and said beginning instruction of said program loop body; loop end data indicative of an address of a last instruction of said program loop body that immediately precedes said loop-end instruction; loop remaining instruction data indicative of the number of instructions remaining to be processed before a last instruction of said program loop body that immediately precedes said loop-end instruction is reached; loop remaining size data indicative of the number of program storage memory locations remaining to be processed before a last instruction of said program loop body that immediately precedes said loop-end instruction is reached; and loop control valid data. 7. Apparatus as claimed in claim 6 , wherein said loop end data includes a proper subset of bits indicative of a memory storage address of said last instruction starting from a least significance bit end of those bits of said memory storage address that distinguish between starting storage addresses of instructions. 8. Apparatus as claimed in claim 1 , comprising at least one fault syndrome register to store fault syndrome data upon occurrence of faults, wherein said loop control data is stored within said at least one fault syndrome register. 9. Apparatus as claimed in claim 8 , wherein said at least one fault syndrome register has at least one associated valid bit indicating whether any data stored therein is valid fault syndrome data, and said loop control circuitry set said at least one associated valid bit to an invalid state when said at least one fault syndrome register is storing said loop control data. 10. Apparatus as claimed in claim 8 , wherein said at least one fault syndrome register has at least one associated valid bit indicating whether any data stored therein is valid fault syndrome data, wherein if at least one of said at least one associated valid bit is in the valid state said loop-end instruction decoding circuitry does not control said processing circuitry to store said loop control data. 11. Apparatus as claimed in claim 8 , wherein said instruction decoder comprises loop-start instruction decoding circuitry to decode a loop-start instruction preceding said beginning instruction of said program loop body to generate control signals to control said processing circuitry to store a loop count value indicative of a number of times said program loop body is to be executed. 12. Apparatus as claimed in claim 11 , wherein if said loop count value is zero, then performance of processing operations specified by said program loop body is suppressed and processing continues from an instruction following said loop-end instruction. 13. Apparatus as claimed in claim 1 , wherein branching to said beginning instruction control by said loop control circuitry generates trace data corresponding to execution of said loop-end instruction. 14. Apparatus as claimed in claim 1 , wherein the loop control circuitry is configured to control updating of said loop counter in dependence on a control parameter stored in a predetermined state register which is indicative of a number of vector elements to be processed in response to one vector instruction of the program loop body. 15. Apparatus as claimed in claim 1 , wherein said processing circuitry comprises predication loop control circuitry to operate when N ve /N max does not equal a whole number, where N ve is a total number of vector elements to be processed during a number of iterations of the program loop body and N max is a maximum number of vector elements to be processed in response to one vector instruction of the program loop body, to at least partially suppress processing in one or more of said vector processing lan

Assignees

Inventors

Classifications

  • using instruction pipelines · CPC title

  • Recovery, e.g. branch miss-prediction, exception handling (error detection or correction G06F11/00) · CPC title

  • Speculative instruction execution · CPC title

  • Loop buffering · CPC title

  • using program counter relative addressing · 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 US10747536B2 cover?
A data processing system provides a loop-end instruction for use at the end of a program loop body specifying an address of a beginning instruction of said program loop body. Loop control circuitry ( 1000 ) serves to control repeated execution of the program loop body upon second and subsequent passes through the program loop body using loop control data provided by the loop-end instruction wit…
Who is the assignee on this patent?
Advanced Risc Mach Ltd
What technology area does this patent fall under?
Primary CPC classification G06F9/30065. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Aug 18 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 4 related publications on this page (citations in our corpus or others sharing the same primary CPC).