← Back to Patent Explorer
US6789181B1 Expired / Lapsed US ⏱️ 0.0 years remaining

Safety net paradigm for managing two computer execution modes

Assignee: Advanced Silicon Technologies LLC
•
Filing: 1999-11-03
•
Granted: 2004-09-07
•
Expires: 2019-11-03
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method and computer for executing the method. A source program is translated into an object program, in a manner in which the translated object program has a different execution behavior than the source program. The translated object program is executed under a monitor capable of detecting any deviation from fully-correct interpretation before any side-effect of the different execution behavior is irreversibly committed. When the monitor detects the deviation, or when an interrupt occurs during execution of the object program, a state of the program is established corresponding to a state that would have occurred during an execution of the source program, and from which execution can continue. Execution of the source program continues primarily in a hardware emulator designed to execute instructions of an instruction set non-native to the computer.

Inventors

  • 👤 John S. Yates
  • 👤 David L. Reese
  • 👤 Korbin S. Van Dyke
  • 👤 Paul H. Hohensee

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-01 04:51
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/44; G06F9/455; G06F9/45533; G06F9/45554; G06F9/45558; G06F2009/45579; G06F2009/45583

Claims Analysis

Total Claims: 53
Claim 1
Independent Claim 133 words
A method of executing a program in a computer, comprising the steps of: translating a source program into an object program, the translated object program having a different execution behavior than the source program; executing the translated object program, the execution being under a monitor capable of detecting any deviation from fully-correct interpretation before any side-effect of the different execution behavior is irreversibly committed; and when the monitor detects the deviation, or when an interrupt occurs during execution of the object program, establishing a state of the program corresponding to a state that would have occurred during an execution of the source program, and from which execution can continue, and continuing execution of the source program primarily in a hardware emulator designed to execute instructions of an instruction set non-native to the computer.
Claim 2
Independent Claim 133 words
A method of executing a program in a computer, comprising the steps of: translating a source program into an object program, the translated object program having a different execution behavior than the source program; executing the translated object program, the execution being under a monitor capable of detecting any deviation from fully-correct interpretation before any side-effect of the different execution behavior is irreversibly committed; and when the monitor detects the deviation, or when an interrupt occurs during execution of the object program, establishing a state of the program corresponding to a state that would have occurred during an execution of the source program, and from which execution can continue, and continuing execution of the source program primarily in a hardware emulator designed to execute instructions of an instruction set non-native to the computer.
Claim 3
Independent Claim 82 words
A method of executing a program in a computer, comprising the steps of: executing instructions in a first interpreter for executing instructions of an instruction set, the first interpreter being less than fully correct, the execution being under a monitor capable of detecting any deviation from fully-correct interpretation before any side-effect of the incorrect interpretation is irreversibly committed; and when the monitor detects the deviation, continuing execution in a second, fully-correct interpreter, primarily in hardware, for executing instructions of the instruction set.
Claim 4
Independent Claim 82 words
A method of executing a program in a computer, comprising the steps of: executing instructions in a first interpreter for executing instructions of an instruction set, the first interpreter being less than fully correct, the execution being under a monitor capable of detecting any deviation from fully-correct interpretation before any side-effect of the incorrect interpretation is irreversibly committed; and when the monitor detects the deviation, continuing execution in a second, fully-correct interpreter, primarily in hardware, for executing instructions of the instruction set.
Claim 5
Dependent Claim 42 words
The method of claim 2 , further comprising the step of: the detecting of a deviation includes evaluating whether an individual memory reference of an instruction references a device having a valid memory address but that cannot be guaranteed to be well-behaved.
Claim 6
Dependent Claim 84 words
The method of claim 2 : wherein the first interpreter includes a binary translator from the instruction set to a second instruction set, the translation distinguishing individual memory loads that are believed to be directed to well-behaved memory from memory loads that are believed to be directed to non-well-behaved memory device(s); and wherein detecting the deviation includes identifying a load that was believed at translation time to be directed to well-behaved memory but that at execution is found to be directed to non-well-behaved memory.
Claim 7
Dependent Claim 95 words
The method of claim 2 : wherein the first interpreter includes a binary translator from the instruction set to a second instruction set, the translation altering an ordering of side-effects of the program; further comprising the step of, when an interrupt occurs during execution of the program in the second instruction set, establishing a state of the program corresponding to the earlier point, being a state equivalent to a state that would have occurred during an execution of the program in the first instruction set; reinitiating execution of the program in the first instruction set.
Claim 8
Dependent Claim 110 words
The method of claim 2 , further comprising the steps of: wherein the first interpreter includes a binary translator from the instruction set to a second instruction set, the translated program in the second instruction set having a different execution behavior that the program in the first instruction set; further comprising the step of, when an interrupt occurs during execution of the program in the second instruction set, establishing a state of the program corresponding to a state that would have occurred during an execution of the program in the first instruction set, and from which execution can continue; executing program in the first instruction set from the established state.
Claim 9
Dependent Claim 21 words
The method of claim 2 , wherein the second interpreter interprets instructions in an instruction set not native to the computer.
Claim 10
Dependent Claim 15 words
The method of claim 2 , wherein the first interpreter includes a software binary translator.
Claim 11
Dependent Claim 27 words
The method of claim 8 , wherein the detected deviation from fully-correct interpretation includes detection of the invalidity of a program transformation introduced by the binary translator.
Claim 12
Dependent Claim 15 words
The method of claim 2 , wherein the earlier point corresponds to an instruction boundary.
Claim 13
Dependent Claim 23 words
The method of claim 2 , wherein continuing execution includes rolling back execution of the first interpreter by at least two full instructions.
Claim 14
Dependent Claim 37 words
The method of claim 2 , wherein continuing execution includes rolling back execution of the first interpreter from a state in which a number of distinct suboperations of several instructions have been intermixed by the first interpreter.
Claim 15
Dependent Claim 16 words
The method of claim 2 , wherein continuing execution includes rolling back execution to a checkpoint.
Claim 16
Dependent Claim 22 words
The method of claim 2 , wherein continuing execution includes allowing execution to progress forward to a checkpoint in the first interpreter.
Claim 17
Dependent Claim 20 words
The method of claim 2 , wherein the detected deviation from fully-correct interpretation includes detection of a synchronous execution exception.
Claim 18
Dependent Claim 89 words
A computer, comprising: a first interpreter designed to execute a program coded in an instruction set, the first interpreter being less than fully correct; a second, fully-correct interpreter, primarily in hardware, for executing instructions of the instruction set; a monitor designed to detect any deviation from fully-correct interpretation by the first interpreter, before any side-effect of the incorrect interpretation is irreversibly committed, and when the monitor detects the deviation, to roll back execution to an instruction boundary of the instruction set, and to re-initiate execution in the second interpreter.
Claim 19
Dependent Claim 89 words
A computer, comprising: a first interpreter designed to execute a program coded in an instruction set, the first interpreter being less than fully correct; a second, fully-correct interpreter, primarily in hardware, for executing instructions of the instruction set; a monitor designed to detect any deviation from fully-correct interpretation by the first interpreter, before any side-effect of the incorrect interpretation is irreversibly committed, and when the monitor detects the deviation, to roll back execution to an instruction boundary of the instruction set, and to re-initiate execution in the second interpreter.
Claim 20
Dependent Claim 46 words
The computer of claim 16 , further comprising: instruction execution circuitry of the first interpreter designed to evaluate whether an individual memory-reference instruction, or an individual memory reference of an instruction, references a device with a valid memory address that cannot be guaranteed to be well-behaved.
Claim 21
Dependent Claim 102 words
The computer of claim 16 , wherein the first interpreter further comprises: a binary translator from the instruction set to a second instruction set, the translation distinguishing individual memory loads that are believed to be directed to well-behaved memory from memory loads that are believed to be directed to non-well-behaved memory device(s); and instruction execution circuitry designed to execute the translated program in the second instruction set, and to identify loads that were believed at translation time to be directed to well-behaved memory but that at execution are found to be directed to non-well-behaved memory, and to abort the identified memory load.
Claim 22
Dependent Claim 142 words
The computer of claim 16 , wherein the first interpreter includes: a binary translator programmed to translate at least segment of a program from a first representation in the instruction set to a second representation in a second instruction set architecture, a sequence of side-effects in the second representation differing from a sequence of side-effects in the translated segment of the first representation; and instruction execution circuitry and/or software designed to identify cases during execution of the second representation in which the difference in sequence of side-effects may have a material effect on the execution of the program, to establish a programs state equivalent to a state that would have occurred in the execution of the first representation, and to resume execution of the program from the established state in an execution mode that reflects the side-effect sequence of the first representation.
Claim 23
Dependent Claim 15 words
The computer of claim 16 , wherein the first interpreter includes a software binary translator.
Claim 24
Dependent Claim 14 words
The computer of claim 20 , wherein the first interpreter includes a software emulator.
Claim 25
Dependent Claim 29 words
The computer of claim 20 , wherein the software binary translator operates concurrently with execution of the program to translate a segment less than the whole of the program.
Claim 26
Dependent Claim 14 words
The computer of claim 16 , wherein the first interpreter includes a software emulator.
Claim 27
Dependent Claim 21 words
The computer of claim 16 , wherein the second interpreter interprets instructions of an instruction set not native to the computer.
Claim 28
Dependent Claim 15 words
The computer of claim 16 , wherein the earlier point corresponds to an instruction boundary.
Claim 29
Dependent Claim 16 words
The computer of claim 16 , wherein continuing execution includes rolling back execution to a checkpoint.
Claim 30
Dependent Claim 27 words
The computer of claim 16 , wherein the detected deviation from fully-correct interpretation includes detection of the invalidity of a program transformation introduced by the binary translator.
Claim 31
Dependent Claim 20 words
The computer of claim 16 , wherein the detected deviation from fully-correct interpretation includes detection of a synchronous execution exception.
Claim 32
Independent Claim 91 words
A method, comprising the steps of: translating a source program into an object program, the translated object program having a different execution behavior than the source program; when an interrupt occurs during execution of the object program, establishing a state of the program corresponding to a state that would have occurred during an execution of the source program, and from which execution can continue; executing the source program from the established state in a mode that executes or interprets the source program without re-translation into the language of the object program.
Claim 33
Independent Claim 91 words
A method, comprising the steps of: translating a source program into an object program, the translated object program having a different execution behavior than the source program; when an interrupt occurs during execution of the object program, establishing a state of the program corresponding to a state that would have occurred during an execution of the source program, and from which execution can continue; executing the source program from the established state in a mode that executes or interprets the source program without re-translation into the language of the object program.
Claim 34
Dependent Claim 44 words
The method of claim 29 , further comprising the step of: establishing the state when a memory reference of an instruction executed during execution of the object program references a device having a valid memory address but that cannot be guaranteed to be well-behaved.
Claim 35
Dependent Claim 106 words
The method of claim 29 : while translating the source program from a first instruction set to the object program in a second instruction set, distinguishing individual memory loads that are believed to be directed to well-behaved memory from memory loads that are believed to be directed to non-well-behaved memory device(s); while executing the object program, identifying a load that was believed at translation time to be directed to well-behaved memory but that at execution is found to be directed to non-well-behaved memory, and aborting the identified memory load; based at least in part on the identifying, re-executing at least a portion of the source program.
Claim 36
Dependent Claim 42 words
The method of claim 29 , further comprising the step of: translating the source program from a first instruction set with a reference sequence of side-effects to the object program in a second instruction set with a second sequence of side effects.
Claim 37
Dependent Claim 21 words
The method of claim 29 , wherein the source program is coded in an instruction set not native to the computer.
Claim 38
Dependent Claim 28 words
The method of claim 29 , wherein the translator operates concurrently with execution of the program to translate a segment less than the whole of the source program.
Claim 39
Dependent Claim 24 words
The method of claim 29 , wherein establishing the state includes rolling back execution of the object program by at least two full instructions.
Claim 40
Dependent Claim 38 words
The method of claim 29 , wherein establishing the state includes rolling back execution of the object program from a state in which a number of distinct suboperations of several instructions have been intermixed by the first interpreter.
Claim 41
Dependent Claim 22 words
The method of claim 29 , wherein the interrupt is raised when a deviation from fully-correct translation of the program is detected.
Claim 42
Dependent Claim 14 words
The method of claim 29 , wherein the interrupt is a synchronous execution exception.
Claim 43
Dependent Claim 17 words
The method of claim 29 , wherein establishing the state includes rolling back execution to a checkpoint.
Claim 44
Dependent Claim 104 words
A computer, comprising: a binary translator programmed to translate a source program into an object program, the translated object program having a different execution behavior than the source program; an interrupt handler programmed to respond to an interrupt occurring during execution of the object program by establishing a state of the program corresponding to a state that would have occurred during an execution of the source program, and from which execution can continue, and to initiate execution of the source program from the established state in a mode that executes or interprets the source program without re-translation into the language of the object program.
Claim 45
Dependent Claim 104 words
A computer, comprising: a binary translator programmed to translate a source program into an object program, the translated object program having a different execution behavior than the source program; an interrupt handler programmed to respond to an interrupt occurring during execution of the object program by establishing a state of the program corresponding to a state that would have occurred during an execution of the source program, and from which execution can continue, and to initiate execution of the source program from the established state in a mode that executes or interprets the source program without re-translation into the language of the object program.
Claim 46
Dependent Claim 42 words
The computer of claim 40 , further comprising: instruction execution circuitry designed to evaluate whether an individual memory-reference instruction, or an individual memory reference of an instruction, references a device with a valid memory address that cannot be guaranteed to be well-behaved.
Claim 47
Dependent Claim 117 words
The computer of claim 40 : wherein the binary translator is programmed to generate a sequence of side-effects in the object program differing from a sequence of side-effects in the translated segment of the source program; and further comprising, instruction execution circuitry and/or software designed to identify cases during execution of the object program in which the difference in sequence of side-effects may have a material effect on the execution of the program, to establish a program state equivalent to a state that would have occurred in the execution of the source program, and to resume execution of the program from the established state in an execution mode that reflects the side-effect sequence of the source program.
Claim 48
Dependent Claim 88 words
The computer of claim 40 : and further comprising instruction execution circuitry designed to execute the instruction set of the source program, being an instruction set not native to the computers; a monitor designed to detect a deviation from the behavior of the source program during execution of the object program, before any side-effect of the deviation is irreversibly committed, and when the monitor detects the deviation, to roll back execution by at least a full instruction to a safe point in the program, and re-initiating execution in.
Claim 49
Dependent Claim 21 words
The computer of claim 40 , wherein the source program is coded in an instruction set not native to the computer.
Claim 50
Dependent Claim 15 words
The computer of claim 40 , wherein the established state corresponds to an instruction boundary.
Claim 51
Dependent Claim 29 words
The computer of claim 40 , wherein the translator operates concurrently with execution of the object program to translate a segment less than the whole of the source program.
Claim 52
Dependent Claim 24 words
The computer of claim 40 , wherein the interrupt is raised on detection of the invalidity of a program transformation introduced by the translator.
Claim 53
Dependent Claim 14 words
The computer of claim 40 , wherein the interrupt is a synchronous execution exception.

References Cited (Backward Citations)

US3544969A Cited
US3781823A Cited
US4084235A Cited
US4455602A Cited
US4575797A Cited
US4514803A Cited
US4636940A Cited
US4750112A Cited
US4812975A Cited
US4779187A Cited
US5241638A Cited
USRE36766E Cited
US6006277A Cited
US5822578A Cited
US5115500A Cited
EP0324308B1 Cited
US5168557A Cited
US5404476A Cited
US5487156A Cited
US5361340A Cited
US5241664A Cited
US5515518A Cited
US5301287A Cited
US5335331A Cited
US5155835A Cited
US5636366A Cited
US5432795A Cited
US5307504A Cited
US5652869A Cited
US5812864A Cited
US5619666A Cited
US5715421A Cited
US5483647A Cited
US5574929A Cited
US5454117A Cited
US6006029A Cited
US5884057A Cited
US5481684A Cited
US5781750A Cited
US5542059A Cited
US5664159A Cited
US5673407A Cited
US5574927A Cited
US5590309A Cited
US5568646A Cited
US5847955A Cited
US6021265A Cited
US5628016A Cited
US5768500A Cited
US5481693A Cited
US5685009A Cited
US5598546A Cited
US5542109A Cited
US5608886A Cited
US6496922B1 Cited
US5657474A Cited
US5560013A Cited
US5774287A Cited
US5802272A Cited
US5638525A Cited
US5781758A Cited
US5751982A Cited
US5659679A Cited
US6219774B1 Cited
US5774686A Cited
US5678032A Cited
US6035393A Cited
US5742780A Cited
US5819064A Cited
US5802373A Cited
US6091897A Cited
US6000028A Cited
US5930509A Cited
US6226789B1 Cited
US5842017A Cited
US5815720A Cited
US5901308A Cited
US5784640A Cited
US6032247A Cited
US5794068A Cited
US5790824A Cited
US5781792A Cited
US5754878A Cited
US5968162A Cited
US5941827A Cited
US6240526B1 Cited
US6336135B1 Cited
US5732238A Cited
US5903760A Cited
US6031992A Cited
US5958061A Cited
US5721927A Cited
US5935220A Cited
US5832205A Cited
US5805877A Cited
US5838978A Cited
US6591414B2 Cited
US6011908A Cited
US6044220A Cited
US5905855A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2007-09-07 2008-03-08 2008-09-07 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2011-09-07 2012-03-08 2012-09-07 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2015-09-07 2016-03-08 2016-09-07 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag