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

Translating a dynamic transfer control instruction address in a simulated CPU processor

Assignee: International Business Machines Corp
•
Filing: 1990-12-07
•
Granted: 1992-11-24
•
Expires: 2010-12-07
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The system and method of this invention simulates the flow of control of an application program targeted for a specific instruction set of a specific processor by utilizing a simulator running on a second processing system having a second processor with a different instruction set. The simulator reduces the number of translated instructions needed to simulate the flow of control of the first processor instructions when translating the address of the next executable instruction resulting from a dynamic transfer of control, i.e., resulting from a return instruction. The simulator compares the address that is loaded at run time by the return instruction with the return address previously executed by that instruction. If the last return address matches, the location of the return is the same. If the last return does not match, a translate look-aside buffer is used to determine the address. If the translate look-aside buffer does not find the address, then a binary tree look up mechanism is used to determine the address of the next instruction after a return. The performance of the simulator is enhanced by utilizing the easiest approaches first in the chance that a translated instruction will result most efficiently.

Inventors

  • 👤 Arturo M. de Nicolas
  • 👤 John C. O'Quin, III

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-29 15:48
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/44; G06F9/455; G06F9/45504

Claims Analysis

Total Claims: 14
Claim 1
Independent Claim 135 words
A method for reducing the number of translated instructions required to simulate an instruction flow of control of an application running on a processing system, said method comprising the steps of: converting, at run time, an instruction pointer of a next instruction of a first processor resulting from a dynamic control instruction to an address for a second processor translation of said first processor's next instruction; and utilizing a succession of steps for said converting, said succession of steps using a single second processor instruction in a first successive step, a translate look-aside buffer having a limited number of first processor instruction pointers and corresponding second processor translation address in a second successive step, and a data structure having more of said second processor translation addresses than said look-aside buffer in a third successive step.
Claim 2
Independent Claim 135 words
A method for reducing the number of translated instructions required to simulate an instruction flow of control of an application running on a processing system, said method comprising the steps of: converting, at run time, an instruction pointer of a next instruction of a first processor resulting from a dynamic control instruction to an address for a second processor translation of said first processor's next instruction; and utilizing a succession of steps for said converting, said succession of steps using a single second processor instruction in a first successive step, a translate look-aside buffer having a limited number of first processor instruction pointers and corresponding second processor translation address in a second successive step, and a data structure having more of said second processor translation addresses than said look-aside buffer in a third successive step.
Claim 3
Independent Claim 148 words
A method of simulating a first processor having a first instruction set having a a plurality of first instructions by a second processing system having a second processor having a second instruction set for running an application targeted for said first instruction set, said second processing system method comprising: comparing, using a single second processor instruction, at run time a new instruction pointer of a next instruction of said first processor with a previous instruction pointer of a previous dynamic control instruction translated for said second processor, said previous instruction pointer being produced by a previous executing of said previous dynamic control instruction translation to determine a validity of an address for a second processor translation for said first processor's next instruction; and branching to the address of the second processor translation of the next instruction if said run time new instruction pointer matches said previous instruction pointer.
Claim 4
Independent Claim 148 words
A method of simulating a first processor having a first instruction set having a a plurality of first instructions by a second processing system having a second processor having a second instruction set for running an application targeted for said first instruction set, said second processing system method comprising: comparing, using a single second processor instruction, at run time a new instruction pointer of a next instruction of said first processor with a previous instruction pointer of a previous dynamic control instruction translated for said second processor, said previous instruction pointer being produced by a previous executing of said previous dynamic control instruction translation to determine a validity of an address for a second processor translation for said first processor's next instruction; and branching to the address of the second processor translation of the next instruction if said run time new instruction pointer matches said previous instruction pointer.
Claim 5
Independent Claim 166 words
A method of simulating a first processor having a first instruction set having a plurality of first instructions by a second processing system having a second processor having a second instruction set for running an application targeted for said first instruction set, said second processing system method comprising: comparing, using a single second processor instruction, at run time a new instruction pointer of a next instruction of said first processor with a previous instruction pointer of a previous dynamic control instruction translated for said second processor, said previous instruction pointer being produced by a previous executing of said previous dynamic control instruction translation to determine a validity of an address for a second processor translation for said first processor's next instruction; and utilizing a translate look-aside buffer, having first processor instruction pointers fewer in number than said plurality of first instructions, and corresponding second processor translation addresses, to determine the address for said second processor translation of said first processor's next instruction if said comparison fails.
Claim 6
Independent Claim 166 words
A method of simulating a first processor having a first instruction set having a plurality of first instructions by a second processing system having a second processor having a second instruction set for running an application targeted for said first instruction set, said second processing system method comprising: comparing, using a single second processor instruction, at run time a new instruction pointer of a next instruction of said first processor with a previous instruction pointer of a previous dynamic control instruction translated for said second processor, said previous instruction pointer being produced by a previous executing of said previous dynamic control instruction translation to determine a validity of an address for a second processor translation for said first processor's next instruction; and utilizing a translate look-aside buffer, having first processor instruction pointers fewer in number than said plurality of first instructions, and corresponding second processor translation addresses, to determine the address for said second processor translation of said first processor's next instruction if said comparison fails.
Claim 7
Independent Claim 201 words
A method of simulating a first processor having a first instruction set having a plurality of first instruction by a second processing system having a second processor having a second instruction set for running an application targeted for said first instruction set, said second processing system method comprising: comparing, using a single second processor instruction, at run time a new instruction pointer of a next instruction of said first processor with a previous instruction pointer of a previous dynamic control instruction translated for said second processor, said previous instruction pointer being produced by a previous execution of said previous dynamic control instruction translation to determine a validity of an address for a second processor translation for said first processor's next instruction; utilizing a translate look-aside buffer, having first processor instruction pointers fewer in number than said plurality of first instructions, and corresponding second processor translation addresses, to determine the address for said second processor translation of said first processor's next instruction if said comparison fails, and searching a data structure, having more of said second processor translation addresses than said look-aside buffer, for determining said address of said next instruction if said address is not found with said translate look-aside buffer.
Claim 8
Independent Claim 201 words
A method of simulating a first processor having a first instruction set having a plurality of first instruction by a second processing system having a second processor having a second instruction set for running an application targeted for said first instruction set, said second processing system method comprising: comparing, using a single second processor instruction, at run time a new instruction pointer of a next instruction of said first processor with a previous instruction pointer of a previous dynamic control instruction translated for said second processor, said previous instruction pointer being produced by a previous execution of said previous dynamic control instruction translation to determine a validity of an address for a second processor translation for said first processor's next instruction; utilizing a translate look-aside buffer, having first processor instruction pointers fewer in number than said plurality of first instructions, and corresponding second processor translation addresses, to determine the address for said second processor translation of said first processor's next instruction if said comparison fails, and searching a data structure, having more of said second processor translation addresses than said look-aside buffer, for determining said address of said next instruction if said address is not found with said translate look-aside buffer.
Claim 9
Independent Claim 268 words
A method of simulating a first processor having a first instruction set having a plurality of first instructions by a second processing system having a second processor having a second instruction set for running an application targeted for said first instruction set, said second processing system method comprising: comparing, using a single second processor instruction, at run time, a new instruction pointer of a next instruction of said first processor with a previous instruction pointer of a previous dynamic control instruction translated for said second processor, said previous instruction pointer being produced by a previous executing of said previous dynamic control instruction translation to determine a validity of an address for a second processor translation for said first processor's next instruction when the next dynamic control instruction returns to a same address of a last time the previous dynamic control instruction was executed; using, if said new instruction pointer is not the same as said previous instruction pointer, a translate look-aside buffer, having a limited number of first processor instruction pointers and corresponding second processor translation addresses, to determine the address for said second processor translation of said first processor's next instruction when the dynamic control instruction returns to the same address that was returned to at least once before other then the last time; and using, if said address is not found with said translate look-aside buffer, a data structure, having more of said second processor translation addressed than said look-aside buffer, to determine the address of the next instruction when the dynamic control instruction returns to a new address that has not be previously returned to.
Claim 10
Independent Claim 268 words
A method of simulating a first processor having a first instruction set having a plurality of first instructions by a second processing system having a second processor having a second instruction set for running an application targeted for said first instruction set, said second processing system method comprising: comparing, using a single second processor instruction, at run time, a new instruction pointer of a next instruction of said first processor with a previous instruction pointer of a previous dynamic control instruction translated for said second processor, said previous instruction pointer being produced by a previous executing of said previous dynamic control instruction translation to determine a validity of an address for a second processor translation for said first processor's next instruction when the next dynamic control instruction returns to a same address of a last time the previous dynamic control instruction was executed; using, if said new instruction pointer is not the same as said previous instruction pointer, a translate look-aside buffer, having a limited number of first processor instruction pointers and corresponding second processor translation addresses, to determine the address for said second processor translation of said first processor's next instruction when the dynamic control instruction returns to the same address that was returned to at least once before other then the last time; and using, if said address is not found with said translate look-aside buffer, a data structure, having more of said second processor translation addressed than said look-aside buffer, to determine the address of the next instruction when the dynamic control instruction returns to a new address that has not be previously returned to.
Claim 11
Independent Claim 206 words
A system having means for simulating a first processor having a first instruction set having a plurality of first instructions by a second processing system having a second processor having a second instruction set for running an application targeted for said first instruction set, said system comprising: means for comparing, using a single second processor instruction, at run time a new instruction pointer of a next instruction of said first processor with a previous instruction pointer of a previous dynamic control instruction translated for said second processor, said previous instruction pointer being produced by a previous execution of said previous dynamic control instruction translation to determine a validity of an address for a second processor translation for said first processor's next instruction; means for utilizing a translate look-aside buffer, having first processor instruction pointers fewer in number than said plurality of first instructions, and corresponding second processor translation addresses, to determine the address for said second processor translation of said first processor's next instruction if said comparison fails; and means for searching a data structure, having more of said second processor translation addresses than said look-aside buffer, for determining said address of said next instruction is said address is not found with said translate look-aside buffer.
Claim 12
Independent Claim 206 words
A system having means for simulating a first processor having a first instruction set having a plurality of first instructions by a second processing system having a second processor having a second instruction set for running an application targeted for said first instruction set, said system comprising: means for comparing, using a single second processor instruction, at run time a new instruction pointer of a next instruction of said first processor with a previous instruction pointer of a previous dynamic control instruction translated for said second processor, said previous instruction pointer being produced by a previous execution of said previous dynamic control instruction translation to determine a validity of an address for a second processor translation for said first processor's next instruction; means for utilizing a translate look-aside buffer, having first processor instruction pointers fewer in number than said plurality of first instructions, and corresponding second processor translation addresses, to determine the address for said second processor translation of said first processor's next instruction if said comparison fails; and means for searching a data structure, having more of said second processor translation addresses than said look-aside buffer, for determining said address of said next instruction is said address is not found with said translate look-aside buffer.
Claim 13
Dependent Claim 207 words
A computer program having means for simulating a first processor having a first instruction set having a plurality of first instructions by a second processing system having a second processor having a second instruction set for running an application targeted for said first instruction set, said computer program comprising: means for comparing, using a single second processor instruction, at run time a new instruction pointer of a next instruction said first processor with a previous instruction pointer of a previous dynamic control instruction translated for said second processor, said previous instruction pointer being produced by a previous execution of said previous dynamic control instruction translation to determine a validity of an address for a second processor translation for said first processor's next instruction; means for utilizing a translate look-aside buffer, having first processor instruction pointers fewer in number than said plurality of first instructions, and corresponding second processor translation addresses, to determine the address for said second processor translation of said first processor's next instruction if said comparison fails; and means for searching a data structure, having more of said second processor translation addresses than said look-aside buffer, for determining said address of said next instruction if said address is not found with said translate look-aside buffer.
Claim 14
Dependent Claim 207 words
A computer program having means for simulating a first processor having a first instruction set having a plurality of first instructions by a second processing system having a second processor having a second instruction set for running an application targeted for said first instruction set, said computer program comprising: means for comparing, using a single second processor instruction, at run time a new instruction pointer of a next instruction said first processor with a previous instruction pointer of a previous dynamic control instruction translated for said second processor, said previous instruction pointer being produced by a previous execution of said previous dynamic control instruction translation to determine a validity of an address for a second processor translation for said first processor's next instruction; means for utilizing a translate look-aside buffer, having first processor instruction pointers fewer in number than said plurality of first instructions, and corresponding second processor translation addresses, to determine the address for said second processor translation of said first processor's next instruction if said comparison fails; and means for searching a data structure, having more of said second processor translation addresses than said look-aside buffer, for determining said address of said next instruction if said address is not found with said translate look-aside buffer.

References Cited (Backward Citations)

US4347565A Cited
US4700291A Cited
US4727484A Cited
US4370709A Cited
US4587612A Cited
US4638423A Cited
EP0217068A2 Cited
US4841476A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1995-11-24 1996-05-25 1996-11-24 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 1999-11-24 2000-05-25 2000-11-24 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2003-11-24 2004-05-25 2004-11-24 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag