IP Library Granted Patent US 8,898,642
Granted Patent B2
US 8,898,642 · App. 13/398,122 · Granted Nov 25, 2014

Profiling and sequencing operators executable in an emulated computing system

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 8,898,642
App. No.
13/398,122
Granted
Nov 25, 2014
Kind
B2
Abstract

Methods and systems are disclosed for analyzing performance of a translated code stream executing within a central processing module. One method includes, during execution of one or more native instructions corresponding to each non-native operator in the code stream by the code execution unit, counting the occurrence of the non-native operator, determining a duration of execution of the one or more native instructions, and adding the non-native operator to a trace sequence. The method also includes, after execution of the code stream within the central processing module, generating a data file of non-native operators executed within the code stream, the data file of operators including a name of each non-native operator, an elapsed amount of time within the code execution unit that the one or more native operators corresponding to the non-native operator are executed, and a number of occurrences of the non-native operator within the code stream.

Claims (42)

1. A method of analyzing performance of a translated code stream executing within a central processing module executing on a computing system, the translated code stream corresponding to a translation of a code stream including a plurality of non-native operators not natively executable in an instruction set architecture of the computing system but natively executable in a computing system implementing a different instruction set architecture, the central processing module, the method comprising:

during execution of one or more native instructions in the translated code stream corresponding to each non-native operator in the code stream by the central processing module:

counting the occurrence of the non-native operator;

determining a duration of execution of the one or more native instructions; and

adding the non-native operator to a trace sequence;

after execution of the translated code stream within the central processing module, generating a data file of the plurality anon-native operators within the code stream, the data file including a name of each non-native operator in the code stream, an elapsed amount of time within the central processing module that the one or more native operators corresponding to each non-native operator are executed, and a number of occurrences of each non-native operator within the code stream;

wherein at least one of the non-native operators comprises a concatenated instruction representing a combination of a plurality of non-native operators that are collectively translated for execution as part of the translated code stream.

2. The method of claim 1 , further comprising generating a table containing counted occurrences of each non-native operator executed within the code stream and the duration of execution of each non-native operator.

3. The method of claim 1 , further comprising, prior to generating the data file of non-native operators, re-invoking the central processing module in a batch mode to build a data file of one or more trees, each tree including one or more sequences of two or more consecutive non-native operators.

4. The method of claim 3 , further comprising generating a second data file including a plurality of sequences of non-native operators based at least in part on the trace sequence, the second data file further including, for each of the plurality of sequences of non-native operators, a number of occurrences of each of the non-native operators in the sequence and an elapsed time of execution of each of the non-native operators in the sequence.

5. The method of claim 4 , wherein each of the plurality of sequences of non-native operators includes between two and five non-native operators.

6. The method of claim 5 , further comprising identifying one or more sequences of non-native operators executed above a predetermined frequency within the code stream, at least in part based on the second data file.

7. The method of claim 6 , further comprising optimizing the identified one or more sequences of non-native operators.

8. The method of claim 7 , wherein optimizing the identified one or more sequences of non-native operators includes identifying a combination of native operators useable to perform equivalent operations, and which results in lower execution time than a corresponding set of translated operators determined on an instruction-by-instruction basis.

9. The method of claim 1 , wherein the plurality of non-native operators comprises E-mode code.

10. The method of claim 1 , wherein the translated code stream comprises instructions in a native instruction set architecture.

11. The method of claim 10 , wherein the native instruction set architecture comprises an x86-based instruction set architecture.

12. The method of claim 11 , wherein the x86-based instruction set architecture comprises an x86-64 instruction set architecture.

13. The method of claim 1 , wherein one or more of the non-native operators comprises a sub-operator.

14. A computing system comprising:

a processor configured to execute a translated code stream using a native instruction set architecture;

a memory communicatively connected to the processor, the memory including a plurality of instructions which, when executed, cause the computing system to:

execute one or more native instructions on the processor, the one or more native instructions forming a portion of a translated code stream corresponding to a translation of a code stream including a plurality of non-native operators, the plurality of non-native operators not natively executable by an instruction set architecture of the processor but natively executable by a processor implementing a different instruction set architecture;

during execution of one or more native instructions corresponding to each non-native operator in the code stream by the central processing module:

count the occurrence of the non-native operator;

determine a duration of execution of the one or more native instructions; and

add the non-native operator to a trace sequence; and

after execution of the translated code stream, generate a data file of non-native operators executed within the code stream, the data file of operators including a name of each non-native operator, an elapsed amount of time within the central processing module that the one or more native operators corresponding to the non-native operator are executed, and a number of occurrences of the non-native operator within the code stream;

wherein at least one of the non-native operators comprises a concatenated instruction representin a combination of a plurality of non-native operators that are collectively translated for execution as part of the translated code stream.

15. The system of claim 14 , wherein the instructions further includes one or more central processor modules configured to execute at least a portion of the code stream, the one or more central processor modules configured to emulate operation of a non-native processor.

16. The system of claim 14 , wherein the instructions further include an interpreter module configured to translate the one or more non-native instructions into the translated code stream.

17. The system of claim 14 , wherein the plurality of non-native operators comprises E-mode code.

18. The system of claim 14 , wherein the translated code stream comprises instructions in a native instruction set architecture.

19. A computer-storage medium comprising computer-executable instructions stored thereon which, when executed on a computing system, cause the computing system to:

analyze performance of a translated code stream executing within a central processing module, the translated code stream corresponding to a translation of a code stream including a plurality of non-native operators not natively executable in an instruction set architecture of the computing system but natively executable in a computing system implementing a different instruction set architecture, the central processing module executing on a computing system, wherein analyzing performance includes:

during execution of one or more native instructions corresponding to each non-native operator in the code stream by the central processing module:

counting the occurrence of the non-native operator;

determining a duration of execution of the one or more native instructions; and

adding the non-native operator to a trace sequence;

after execution of the code stream within the central processing module, generating a data file of non-native operators executed within the code stream, the data file of operators including a name of each non-native operator, an elapsed amount of time within the central processing module that the one or more native operators corresponding to the non-native operator are executed, and a number of occurrences of the non-native operator within the code stream;

wherein at least one of the non-native operators comprises a concatenated instruction representing a combination of a plurality of non-native operators that are collectively translated for execution as part of the translated code stream.

20. The computer storage medium of claim 19 , wherein the plurality of non-native operators comprises E-mode code and the translated code stream comprises instructions in a native instruction set architecture.

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 →
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 →
RELEASE OF SECURITY INTEREST Recorded Mar 26, 2013
From: DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL TRUSTEE
To: UNISYS CORPORATION
Reel/Frame 030082/0545 →
RELEASE OF SECURITY INTEREST Recorded Mar 15, 2013
From: DEUTSCHE BANK TRUST COMPANY
To: UNISYS CORPORATION
Reel/Frame 030004/0619 →
SECURITY AGREEMENT Recorded May 3, 2012
From: UNISYS CORPORATION
To: DEUTSCHE BANK NATIONAL TRUST COMPANY
Reel/Frame 028147/0218 →