IP Library Granted Patent US 9,329,883
Granted Patent B2
US 9,329,883 · App. 14/064,704 · Granted May 3, 2016

Post-execution instruction tracing of virtualized instructions

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 9,329,883
App. No.
14/064,704
Granted
May 3, 2016
Kind
B2
Abstract

Systems and methods for tracing an emulated execution order of non-native instructions based on natively executing code on a computing system having a native instruction set architecture are provided. One method includes, during emulated execution of non-native program code, maintaining a jump history in the computing system, the jump history including a listing of non-native jump instructions for which execution is emulated in the computing system. The method includes, for each of the non-native jump instructions included in the jump history, accessing non-native program code including the non-native instructions to determine one or more non-native instructions executed between the non-native jump instruction and a last-executed non-native jump instruction, and aggregating the non-native jump instruction and the one or more non-native instructions into an instruction trace.

Claims (38)

1. A method of tracing an emulated execution order of non-native instructions based on natively executing code on a computing system having a native instruction set architecture, the method comprising:

during emulated execution of non-native program code, maintaining a jump history in the computing system, the jump history including a listing of non-native jump instructions for which execution is emulated in the computing system, wherein the one or more non-native instructions are included in a virtual instruction block, and wherein the non-native jump instruction is included in the virtual instruction block as a last instruction in the virtual instruction block; and

for each of the non-native jump instructions included in the jump history:

accessing non-native program code including the non-native instructions to determine one or more non-native instructions executed between the non-native jump instruction and a last-executed non-native jump instruction; and

aggregating the non-native jump instruction and the one or more non-native instructions into an instruction trace.

2. The method of claim 1 , wherein the jump history comprises jump instructions captured in an emulated jump table.

3. The method of claim 1 , wherein the instruction trace approximates a sequence of non-native instructions in execution order.

4. The method of claim 1 , wherein the nonnative program code is segmented into a plurality of virtual instruction blocks.

5. The method of claim 4 , wherein each of the plurality of virtual instruction blocks is segmented based at least in part on locations of non-native jump instructions and jump targets included in the non-native program code.

6. The method of claim 4 , wherein the jump history is stored in a jump table managed by virtualization software.

7. The method of claim 1 , wherein the virtualization software comprises a non-native instruction translator.

8. The method of claim 1 , wherein the instruction trace represents an order of intended execution of the non-native program code.

9. The method of claim 1 , wherein the one or more non-native instructions are incapable of native execution on the computing system.

10. The method of claim 1 , further comprising, during emulated execution of the non-native program code, capturing native statistics regarding execution of the native instructions that correspond to the non-native program code.

11. The method of claim 10 , further comprising, after emulated execution of the non-native program code, correlating the native statistics to the instruction trace of the one or more non-native instructions.

12. An apparatus, comprising:

a memory;

a first mass storage device; and

a processor coupled to the memory, and coupled to the mass storage device, in which the processor is configured:

to trace an execution order of non-native instructions based on natively executing code on a computing system having a native instruction set architecture;

to maintain a jump history including a plurality of non-native jump instructions in emulated execution order, wherein the one or more non-native instructions are included in a virtual instruction block, and wherein the non-native jump instruction is included in a virtual instruction block as a last instruction in the virtual instruction block; and

to execute virtualization software, executing natively on the computing system, the virtualization software configured to, for each of the plurality of non-native jump instructions, access non-native program code including the non-native instructions to determine one or more non-native instructions executed between the non-native jump instruction and a last-executed non-native jump instruction, and aggregate the non-native jump instruction and the one or more non-native instructions into an instruction trace.

13. The apparatus of claim 12 , wherein the jump history is stored in a jump table managed by virtualization software.

14. The apparatus of claim 12 , wherein the virtualization software comprises a translation software system.

15. The apparatus of claim 12 , wherein the virtualization software comprises an emulator.

16. The apparatus of claim 12 , wherein the non-native instructions are included in non-native program code, the non-native program code separated into a plurality of non-native instruction blocks.

17. The apparatus of claim 16 , wherein the virtualization software is configured to combine hardware-generated execution statistics with the instruction trace to determine performance in executing each of the one or more non-native instruction blocks.

18. A non-transitory computer-readable medium comprising computer-executable instructions which, when executed on a computing system cause the computing system to perform a method of tracing an emulated execution order of non-native instructions based on natively executing code on a computing system having a native instruction set architecture, the method comprising:

during emulated execution of non-native program code, maintaining a jump history in the computing system, the jump history including a listing of non-native jump instructions for which execution is emulated in the computing system, wherein the non-native program code is segmented into a plurality of virtual instruction blocks, wherein each of the plurality of virtual instruction blocks is segmented based at least in part on locations of non-native jump instructions and jump targets included in the non-native program code; and

for each of the non-native jump instructions included in the jump history:

accessing non-native program code including the non-native instructions to determine one or more non-native instructions executed between the non-native jump instruction and a last-executed non-native jump instruction; and

aggregating the non-native jump instruction and the one or more non-native instructions into an instruction trace.

19. A method of tracing an emulated execution order of non-native instructions based on natively executing code on a computing system having a native instruction set architecture, the method comprising:

during emulated execution of non-native program code, maintaining a jump history in the computing system, the jump history including a listing of non-native jump instructions for which execution is emulated in the computing system, wherein the one or more non-native instructions are included in a virtual instruction block, wherein the non-native program code is segmented into a plurality of virtual instruction blocks, wherein each of the plurality of virtual instruction blocks is segmented based at least in part on locations of non-native jump instructions and jump targets included in the non-native program code; and

for each of the non-native jump instructions included in the jump history:

accessing non-native program code including the non-native instructions to determine one or more non-native instructions executed between the non-native jump instruction and a last-executed non-native jump instruction; and

aggregating the non-native jump instruction and the one or more non-native instructions into an instruction trace.

20. The method of claim 19 , further comprising, during emulated execution of the non-native program code, capturing native statistics regarding execution of the native instructions that correspond to the non-native program code.

Assignments (7)
AMENDED AND RESTATED PATENT SECURITY AGREEMENT Recorded Jun 27, 2025
From: UNISYS CORPORATION; UNISYS HOLDING CORPORATION; UNISYS NPL, INC.; UNISYS AP INVESTMENT COMPANY I
To: COMPUTERSHARE TRUST COMPANY, N.A., AS COLLATERAL TRUSTEE
Reel/Frame 071759/0527 →
RELEASE OF SECURITY INTEREST Recorded Oct 28, 2020
From: WELLS FARGO BANK, NATIONAL ASSOCIATION
To: UNISYS CORPORATION
Reel/Frame 054231/0496 →
RELEASE OF SECURITY INTEREST Recorded Nov 9, 2017
From: WELLS FARGO BANK, NATIONAL ASSOCIATION
To: UNISYS CORPORATION
Reel/Frame 044416/0114 →
SECURITY INTEREST Recorded Oct 6, 2017
From: UNISYS CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 044144/0081 →
PATENT SECURITY AGREEMENT Recorded Apr 27, 2017
From: UNISYS CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL TRUSTEE
Reel/Frame 042354/0001 →
SECURITY INTEREST Recorded Oct 6, 2016
From: UNISYS CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 039960/0057 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2015
From: NOWATZKI, THOMAS; CALDARALE, CHARLES
To: UNISYS CORPORATION
Reel/Frame 034893/0018 →