Patent US5740419A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5740419A Expired / Lapsed US ⏱️ 0.0 years remaining

Processor and method for speculatively executing an instruction loop

Assignee: International Business Machines Corp
•
Filing: 1996-07-22
•
Granted: 1998-04-14
•
Expires: 2016-07-22
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A processor and method for speculatively executing an instruction loop are disclosed. In accordance with the method, the processor initiates execution of an instruction loop and counts each executed iteration of the instruction loop. Thereafter, an actual number of iterations that the instruction loop should be executed is determined. In response to the determination, a difference between the actual number of iterations that the instruction loop should be executed and the number of executed iterations is determined. In response to a determination that the difference is greater than zero, the instruction loop is executed an additional number of iterations equal to the difference. According to one embodiment, unexecuted fetched instructions within mispredicted iterations of the instruction loop are cancelled in response to a determination that the difference is less than zero. In addition, data results of mispredicted iterations of the instruction loop that have been executed are discarded. In accordance with another embodiment, the executed iterations of the instruction loop are counted by setting a count register to zero and decrementing the count register once for each iteration of the instruction loop executed. The difference between the actual number of iterations that should be executed and the number of executed iterations is determined by adding the actual number of iterations and the value of the count register.

Inventors

  • 👤 Terence Matthew Potter

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-07 13:53
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/38; G06F9/3861; G06F9/3863; G06F12/00; G06F12/02; G06F12/08; G06F15/00; G06F15/76; G06F15/82; G06F9/32; G06F9/322; G06F9/325; G06F9/3836; G06F9/3842

Claims Analysis

Total Claims: 28
Claim 1
Independent Claim 91 words
A method within a processor of speculatively executing an instruction loop, comprising: initiating execution of said instruction loop and counting each executed iteration of said instruction loop; thereafter, determining an actual number of iterations that said instruction loop should be executed; in response to said determination, determining a difference between said actual number of iterations and a number of executed iterations of said instruction loop; and in response to a determination that said difference is greater than zero, executing said instruction loop an additional number of iterations equal to said difference.
Claim 2
Independent Claim 91 words
A method within a processor of speculatively executing an instruction loop, comprising: initiating execution of said instruction loop and counting each executed iteration of said instruction loop; thereafter, determining an actual number of iterations that said instruction loop should be executed; in response to said determination, determining a difference between said actual number of iterations and a number of executed iterations of said instruction loop; and in response to a determination that said difference is greater than zero, executing said instruction loop an additional number of iterations equal to said difference.
Claim 3
Dependent Claim 31 words
The method of claim 1, said instruction loop including a conditional branch instruction, wherein said conditional branch instruction is resolved in response to said determination of said actual number of iterations.
Claim 4
Dependent Claim 39 words
The method of claim 1, wherein said processor includes a count register, said method further comprising the step of predicting a number of iterations that said instruction loop will be executed and storing said prediction within said count register.
Claim 5
Dependent Claim 34 words
The method of claim 1, said processor including a count register, wherein said step of counting each executed iteration of said instruction loop comprises maintaining said number of executed iterations within said count register.
Claim 6
Dependent Claim 40 words
The method of claim 4, wherein said step of maintaining said number of executed iterations within said count register comprises setting said count register to zero and decrementing said count register once for each iteration of said instruction loop executed.
Claim 7
Dependent Claim 25 words
The method of claim 5, wherein said step of determining a difference comprises adding said actual iteration value to a value within said count register.
Claim 8
Dependent Claim 33 words
The method of claim 1, wherein said step of determining an actual number of iterations that said instruction loop should be executed comprises executing an instruction that supplies said actual number of iterations.
Claim 9
Dependent Claim 31 words
The method of claim 1, said method further comprising: in response to a determination that said difference is less than zero, cancelling unexecuted instructions within mispredicted iterations of said instruction loop.
Claim 10
Dependent Claim 18 words
The method of claim 8, and further comprising: discarding data results of mispredicted iterations of said instruction loop.
Claim 11
Dependent Claim 108 words
A processor, comprising: one or more execution units for executing instructions, wherein said one or more execution units initiate execution of an instruction loop while an actual number of iterations of said instruction loop to be executed is unknown; means for counting a number of executed iterations of said instruction loop; and means, responsive to a determination of said actual number of iterations, for determining a difference between said actual number of iterations and said number of executed iterations; wherein said execution units execute said instruction loop an additional number of iterations equal to said difference in response to a determination that said difference is zero or greater.
Claim 12
Dependent Claim 108 words
A processor, comprising: one or more execution units for executing instructions, wherein said one or more execution units initiate execution of an instruction loop while an actual number of iterations of said instruction loop to be executed is unknown; means for counting a number of executed iterations of said instruction loop; and means, responsive to a determination of said actual number of iterations, for determining a difference between said actual number of iterations and said number of executed iterations; wherein said execution units execute said instruction loop an additional number of iterations equal to said difference in response to a determination that said difference is zero or greater.
Claim 13
Dependent Claim 19 words
The processor of claim 8, wherein said means for counting a number of executed iterations comprises a count register.
Claim 14
Dependent Claim 35 words
The processor of claim 11, said processor further comprising means for predicting a number of iterations that said instruction loop will be executed, wherein said means for predicting stores said prediction within said count register.
Claim 15
Dependent Claim 23 words
The processor of claim 11, and further comprising means for decrementing said count register once for each iteration of said instruction loop executed.
Claim 16
Dependent Claim 28 words
The processor of claim 13, wherein said means for determining a difference comprises means for adding said actual number of iterations to a value within said count register.
Claim 17
Dependent Claim 30 words
The processor of claim 10, wherein said determination of said actual number of iterations is made in response to execution of an instruction by said one or more execution units.
Claim 18
Dependent Claim 54 words
The processor of claim 10, wherein said processor further comprises: a fetcher for fetching instructions for execution; a queue for temporarily storing fetched instructions prior to execution, wherein instructions within mispredicted iterations of said instruction loop are cancelled out of said queue in response to a determination that said difference is less than zero.
Claim 19
Dependent Claim 39 words
The processor of claim 16, and further comprising: one or more registers for temporarily storing data results of instructions, wherein data results of instructions within mispredicted iterations of said instruction loop are discarded from said one or more registers.
Claim 20
Dependent Claim 129 words
A data processing system, comprising: a memory for storing instructions; a fetcher for fetching instructions within an instruction loop from said memory for execution; one or more execution units for executing instructions, wherein said one or more execution units begin execution of an instruction loop while an actual number of iterations of said instruction loop to be executed is unknown; means for counting a number of executed iterations of said instruction loop; and means, responsive to a determination of said actual number of iterations, for determining a difference between said actual number of iterations and said number of executed iterations; wherein said execution units execute said instruction loop an additional number of iterations equal to said difference in response to a determination that said difference is zero or greater.
Claim 21
Dependent Claim 129 words
A data processing system, comprising: a memory for storing instructions; a fetcher for fetching instructions within an instruction loop from said memory for execution; one or more execution units for executing instructions, wherein said one or more execution units begin execution of an instruction loop while an actual number of iterations of said instruction loop to be executed is unknown; means for counting a number of executed iterations of said instruction loop; and means, responsive to a determination of said actual number of iterations, for determining a difference between said actual number of iterations and said number of executed iterations; wherein said execution units execute said instruction loop an additional number of iterations equal to said difference in response to a determination that said difference is zero or greater.
Claim 22
Dependent Claim 21 words
The data processing system of claim 18, wherein said means for counting a number of executed iterations comprises a count register.
Claim 23
Dependent Claim 39 words
The data processing system of claim 19, said data processing system further comprising means for predicting a number of iterations that said instruction loop will be executed, wherein said means for predicting stores said prediction within said count register.
Claim 24
Dependent Claim 25 words
The data processing system of claim 19, and further comprising means for decrementing said count register once for each iteration of said instruction loop executed.
Claim 25
Dependent Claim 30 words
The data processing system of claim 21, wherein said means for determining a difference comprises means for adding said actual number of iterations to a value within said count register.
Claim 26
Dependent Claim 32 words
The data processing system of claim 18, wherein said determination of said actual number of iterations is made in response to execution of an instruction by said one or more execution units.
Claim 27
Dependent Claim 39 words
The data processing system of claim 18, wherein said data processing system further comprises: a queue for temporarily storing fetched instructions prior to execution, wherein instructions within mispredicted iterations of said instruction loop are cancelled out of said queue.
Claim 28
Dependent Claim 41 words
The data processing system of claim 24, and further comprising: one or more registers for temporarily storing data results of instructions, wherein data results of instructions within mispredicted iterations of said instruction loop are discarded from said one or more registers.

References Cited (Backward Citations)

US4825360A Cited
US5101484A Cited
US5056604A Cited
US5265253A Cited
US5303355A Cited
US5454117A Cited
US5404473A Cited
US5608886A Cited
US5664135A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-04-13 2001-10-13 2002-04-14 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-04-13 2005-10-13 2006-04-14 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-04-13 2009-10-13 2010-04-14 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag