IP Library Granted Patent US 9,542,167
Granted Patent B2
US 9,542,167 · App. 14/064,715 · Granted Jan 10, 2017

Performance monitoring of virtualized instructions

Inventors: Thomas Nowatzki (Roseville, MN); Charles Caldarale (Roseville, MN)
Assignee: Unisys Corporation
G06F8/433G06F11/34
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,542,167
App. No.
14/064,715
Granted
Jan 10, 2017
Kind
B2
Abstract

Systems and methods for monitoring performance of virtualized instructions are provided. One method includes, during emulated execution of non-native program code including non-native instructions, maintaining a program flow history in a computing system representing a flow of program execution of the non-native program code. The program flow history includes a listing of non-native jump instructions for which execution is emulated in the computing system. The method also includes capturing one or more statistics regarding performance in native execution of the non-native program code on the computing system. The method further includes correlating the one or more statistics to the program flow history to determine performance of the computing system in executing one or more non-native instructions between each of the non-native jump instructions.

Claims (20)

1. A method of assessing performance of one or more non-native instructions executing on a computing system having a native instruction set architecture, the one or more non-native instructions incapable of native execution on the computing system, wherein emulated execution of the one or more non-native instructions simulates execution of a second computing system having a second native instruction set architecture different from and incompatible with the native instruction set architecture, the method comprising: during emulated execution of non-native program code including non-native instructions: maintaining a program flow history in the computing system representing a flow of program execution of the non-native program code, the program flow history including a jump storage captured from a state of a jump table defined in the non-native instruction set architecture and including a listing of non-native jump instructions for which execution is emulated in the computing system; and capturing one or more statistics regarding performance in native execution of the non-native program code on the computing system; reconstructing an instruction trace based on the program flow history; and correlating the one or more statistics to the program flow history to determine performance of the computing system in executing one or more non-native instructions included in segments of the instruction trace between each of the non-native jump instructions.

2. The method of claim 1 , wherein capturing one or more statistics includes capturing a state of one or more native performance counters at each call to a non-native jump instruction.

3. The method of claim 1 , wherein maintaining the program flow history comprises maintaining a history of non-native jump instructions executed among the one or more non-native instructions.

4. The method of claim 1 , wherein the one or more statistics regarding native execution on the computing system include performance statistics selected from the group consisting of: an elapsed execution time; a number of native instructions retired; a state of an emulator performing emulated execution of the non-native program code; a cache hit percentage; and a time elapsed between virtual jump instructions.

5. The method of claim 1 , wherein the one or more statistics regarding native execution on the computing system include timestamps associated with execution of each of the non-native jump instructions.

6. The method of claim 1 , wherein correlating the one or more statistics to the program flow history comprises determining performance of the computing system in executing native instructions between adjacent non-native jump instructions.

7. The method of claim 6 , whereby performance of a single non-native instruction can be isolated by surrounding the single non-native instruction with jump instructions.

8. The method of claim 1 , wherein capturing one or more statistics occurs within an emulator that provides emulated execution of the non-native program code.

9. A system for performance assessment of execution of one or more non-native instructions, the system comprising: a computing system having a processor and a memory, the processor capable of executing instructions written in a native instruction set architecture, the one or more non-native instructions incapable of native execution on the processor, wherein the computing system is configured to capture one or more statistics regarding native execution on the computing system during virtualized execution of the one or more non-native instructions, wherein emulated execution of the one or more non-native instructions simulates execution of a second computing system having a second native instruction set architecture different from and incompatible with the native instruction set architecture;

during emulated execution of non-native program code including non-native instructions: maintaining a program flow history in the computing system representing a flow of program execution of the non-native program code, the program flow history including a jump storage captured from a state of a jump table defined in the non-native instruction set architecture and including a listing of non-native jump instructions for which execution is emulated in the computing system;

a jump table residing in the memory and configured to store a listing of non-native jump instructions for which execution is emulated in the computing system;

a post-execution component executing on the computing system and configured to reconstruct an instruction trace based on the program flow history and correlate the one or more statistics to a program flow history derived at least in part from the jump table to determine performance of the computing system in executing one or more non-native instructions included in segments of the instruction trace between each of the non-native jump instructions.

10. The system of claim 9 , wherein the one or more non-native instructions comprises one or more emulated software applications.

11. The system of claim 9 , further comprising a virtualization layer executing on tire computing system, tire virtualization providing virtualized execution of the one or more non-native instructions.

12. The system of claim 11 , wherein the post-execution component is at least partially integrated with the virtualization layer.

13. The system of claim 11 , wherein the virtualization layer comprises a hypervisor.

14. The system of claim 9 , wherein the memory stores tile one or more non-native instructions within a non-native partition.

15. The system of claim 9 , wherein virtualized execution of the one or more non-native instructions includes translating one or more blocks of the non-native instructions to a corresponding block of native instructions prior to execution.

16. A computer-readable storage device storing computer-executable instructions thereon, which, when executed, cause a computing system to perform a method of assessing performance of one or more non-native instructions executing on a computing system having a native instruction set architecture, wherein emulated execution of the one or more non-native instructions simulates execution of a second computing system having a second native instruction set architecture different from and incompatible with the native instruction set architecture, the method comprising: during emulated execution of non-native program code including non-native instructions: maintaining a program flow history in the computing system representing a flow of program execution of the non-native program code, the program flow history including a jump storage captured from a state of a jump table defined in the non-native instruction set architecture and including a listing of non-native jump instructions for which execution is emulated in the computing system; and capturing one or more statistics regarding native execution on the computing system during execution of the non-native program code; reconstructing an instruction trace based on the program flow history; and correlating the one or more statistics to the program flow history to determine performance of the computing system in executing one or more non-native instructions included in segments of the instruction trace between each of the non-native jump instructions.

17. The computer-readable storage device of claim 16 , wherein capturing one or more statistics includes capturing a state of one or more native performance counters at each call to a non-native jump instruction.

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 →
SECURITY INTEREST Recorded Aug 3, 2017
From: UNISYS CORPORATION
To: WELLS FARGO BANK, AS AGENT
Reel/Frame 043186/0924 →
PATENT SECURITY AGREEMENT Recorded Apr 27, 2017
From: UNISYS CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL TRUSTEE
Reel/Frame 042354/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2015
From: NOWATZKI, THOMAS
To: UNISYS CORPORATION
Reel/Frame 034902/0446 →
Continuity (1)
Related Publication 20150121353A1 · Apr 30, 2015