IP Library Granted Patent US 6,842,895
Granted Patent B2
US 6,842,895 · App. 09/746,978 · Granted Jan 11, 2005

Single instruction for multiple loops

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 6,842,895
App. No.
09/746,978
Granted
Jan 11, 2005
Kind
B2
Abstract

Embodiments of the present invention relate generally to the manner in which processors execute multiple loop instructions. That is, embodiments of the invention relate to the organization of multiple loop constructs, such as, for example, nested loops, to achieve improved performance during loop execution. One embodiment contemplates a single instruction that provides for execution of other instructions of a set of instructions in accordance with multiple looping constructs. Another embodiment contemplates a single-loop instruction suitable for terminating on multiple termination conditions.

Claims (32)

1. A processor comprising:

an execution unit to execute a set of instructions; and

an instruction fetching mechanism that retrieves the set of instructions to be executed by the execution unit, at least one of the set of instructions comprising a single instruction that provides information corresponding to at least two different loops, wherein the at least two different loops have at least one of the different start addresses or different end addresses.

2. The processor of claim 1 , wherein the single instruction provides the information to initialize the at least two different loops for later execution.

3. The processor of claim 1 , wherein the at least two different loops are implemented in a nested structure.

4. The processor of claim 1 , wherein the single instruction includes at least one loop termination condition corresponding to at least one of the at least two different loops.

5. The processor of claim 1 , wherein the single instruction includes at least one field that identifies a location of a last instruction of at least one of the at least two different loops.

6. The processor of claim 4 , wherein the at least one loop termination condition comprises one of a loop count value or a condition code.

7. The processor of claim 1 , wherein the single instruction includes a loop termination condition corresponding to each of the at learn two different loops.

8. The processor of claim 7 , wherein each loop termination condition comprises one of a loop count value or a condition code.

9. The processor of claim 1 , wherein the single instruction includes fields that identify a location of a last instruction of each of the at least two different loops.

10. A method of performing an instruction for use by a processor, the method comprising:

fetching a single instruction from a memory source, wherein the single instruction corresponds to multiple looping constructs, the multiple looping constructs including a first loop and a second loop to be executed;

decoding the single instruction; and

in response to decoding the single instruction, using information provided by the single instruction to initialize a plurality of loop storage elements corresponding to the first loop and the second loop, wherein the first loop and the second loop have at least one of different start addresses or different end addresses.

11. The method of claim 10 , wherein the multiple looping constructs are nested such that the first loop its nested within the second loop.

12. The method of claim 10 , wherein the information provided by the single instruction to initialize the plurality of loop storage elements includes at least one termination condition for each of the first loop and the second loop.

13. The method of claim 12 , wherein the at least one termination condition for each of the first loop and the second loop comprises at least one of a loop count value and a condition code.

14. The method of claim 12 , further comprising:

performing a first set of logic relating to the at least one termination condition for the first loop; and

performing a second set of logic relating to the at least one termination condition for the second loop.

15. The method of claim 12 further comprising:

determining a loop type for each of the first loop and the second loop, wherein the loop type is selected from one of a conditional and non-conditional type;

if the loop type is conditional, the termination condition comprises a condition code; and

if the loop type is non-conditional, the termination condition comprises a loop count value.

16. The method of claim 13 , wherein the information provided by the single instruction to initialize the plurality of loop storage elements includes an end of loop address for each of the first loop and the second loop.

17. The method of claim 13 , wherein the information provided by the single instruction to initialize the plurality or loop storage elements includes a start of loop address for each of the first loop and the second loop.

18. The method of claim 10 , wherein the information provided by the single instruction to initialize the plurality of loop storage elements includes an end of loop address for each of the first loop and the second loop.

19. The method of claim 10 , wherein the single instruction is a first instruction of the first loop and a first instruction of the second loop, the first instruction of the first loop and the first instruction of the second loop being a same instruction at a same instruction address.

20. The method of claim 19 , wherein the single instruction is one of a beginning instruction of the first and second loops and an ending instruction of the first and second loop.

21. method of claim 10 , further comprising:

determining a loop type corresponding to the single instruction, wherein the loop type is selected from one of a conditional and non-conditional type.

Assignments (13)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0143 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037354/0225 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0553 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 7, 2015
From: ZENITH INVESTMENTS, LLC
To: APPLE INC.
Reel/Frame 034749/0791 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 4, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: ZENITH INVESTMENTS, LLC
Reel/Frame 033687/0336 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SECURITY AGREEMENT Recorded May 13, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 024397/0001 →