IP Library Granted Patent US 8,600,727
Granted Patent B2
US 8,600,727 · App. 13/270,256 · Granted Dec 3, 2013

Streamlined execution of emulated code using block-based translation mode

Inventors: David Strong (Irvine, CA); Andrew Ward Beale (Viejo, CA)
Assignee: Unisys Corporation
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,600,727
App. No.
13/270,256
Granted
Dec 3, 2013
Kind
B2
Abstract

Methods and systems are disclosed, including a method for executing a non-native code stream on a computing system. The method includes forming one or more blocks of emulated mode code for execution on a computing system. Each of the one or more blocks includes a preamble and a plurality of operators ordered for execution in a predetermined sequence, wherein for a specified block the preamble defines one or more conditions required for uninterrupted execution of the operators included in the specified block. The method also includes assessing the one or more conditions associated with the specified block, and, after assessing the one or more conditions, executing each of the operators included in the specified block without assessing any of the one or more conditions between execution of the operators within the specified block.

Claims (38)

1. A method for executing a non-native code stream on a computing system, the method comprising:

forming one or more blocks of emulated mode code for execution on a computing system, each of the one or more blocks including a preamble and a plurality of operators ordered for execution in a predetermined sequence, wherein for a specified block the preamble defines one or more conditions required for uninterrupted execution of the operators included in the specified block;

assessing the one or more conditions associated with the specified block; and

after assessing the one or more conditions, executing each of the operators included in the specified block without assessing any of the one or more conditions between execution of the operators within the specified block.

2. The method of claim 1 , wherein a first operator within the specified block is located at a branch target address.

3. The method of claim 1 , wherein a first operator within the specified block is a target of a flow control operator.

4. The method of claim 1 , further comprising, upon occurrence of an interrupt while executing the operators included in the specified block:

handling the interrupt; and

returning execution to the specified block.

5. The method of claim 1 , further comprising, prior to executing each of the operators included in the specified block, translating each of the operators into native instructions executable on the computing system.

6. The method of claim 5 , wherein translating each of the operators into native instructions executable on the computing system includes parsing the operators included in the specified block to locate one or more sequences of two or more non-native operators that correspond to one or more native instructions executable by the computing system.

7. The method of claim 6 , wherein parsing the operators included in the specified block to locate one or more sequences of two or more non-native operators includes executing a pattern-matching algorithm on the non-native operator.

8. The method of claim 1 , wherein each of the one or more blocks includes a postamble.

9. The method of claim 1 , wherein executing each of the operators included in the specified block includes executing an intra-block branch operation.

10. The method of claim 1 , further comprising, after assessing the one or more conditions associated with the specified block, adjusting a stack associated with the emulated mode code prior to executing each of the operators included in the specified block.

11. The method of claim 1 , further comprising, after assessing the one or more conditions associated with the specified block, precomputing one or more data locations in memory associated with the emulated mode code.

12. The method of claim 1 , wherein the emulated mode code comprises a translated version of the non-native code stream configured for execution on a native instruction set architecture associated with the computing system.

13. The method of claim 1 , further comprising:

assessing one or more conditions associated with a second block of the one or more blocks; and

after assessing the one or more conditions, upon determining that one or more conditions cannot be met prior to execution of the second block, returning execution to emulated mode code outside the second block.

14. A system comprising:

an emulator configured to manage execution of a non-native code stream on a computing system, the emulator including a translation component configured to generate emulated mode code based on the non-native code stream; and

a plurality of blocks of emulated mode code, each of the one or more blocks including a preamble and a plurality of operators ordered for execution in a predetermined sequence, wherein for a specified block the preamble defines one or more conditions required for uninterrupted execution of the operators included in the specified block;

wherein the emulator is configured to assess the one or more conditions associated with the specified block, and, after assessing the one or more conditions, execute each of the operators included in the specified block without assessing any of the one or more conditions between execution of the operators within the specified block.

15. The system of claim 14 , wherein each of the one or more blocks includes a postamble.

16. The system of claim 14 , wherein a first operator within the specified block is located at a branch target address.

17. The system of claim 14 , wherein the translation component includes a pattern matching component configured to locate sequences of two or more non-native operators that correspond to one or more native instructions executable by the computing system.

18. The system of claim 14 , further comprising a native operating system configured to generate a plurality of interrupts.

19. The system of claim 18 , wherein the emulator is configured to delay execution of one or more interrupts from among the plurality of interrupts during execution of the specified block.

20. The system of claim 14 , wherein the specified block is passed to a worker thread for execution on the computing system.

21. The system of claim 14 , wherein the emulator is configured to assess whether to execute each of the operators included in the specified block, and, if contiguous execution of the operators included within the specified block is unlikely, the emulator is configured to execute operators outside of the specified block associated with the operators included in the specified block.

22. A computing system comprising:

a programmable circuit capable of executing operators according to a native instruction set architecture;

a memory operatively connected to the programmable circuit, the memory containing program instructions executable on the programmable circuit and which, when executed, cause the computing system to:

form a plurality of blocks of emulated mode code for execution on the programmable circuit from a non-native code stream, each of the plurality of blocks including a preamble, a postamble, and a plurality of operators ordered for execution in a predetermined sequence, wherein for a specified block the preamble defines one or more conditions required for uninterrupted execution of the operators included in the specified block;

assess the one or more conditions associated with the specified block;

after assessing the one or more conditions, execute each of the operators included in the specified block without assessing any of the one or more conditions between execution of the operators within the specified block; and

upon completion of execution of the specified block, perform one or more operations defined in the postamble.

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 Feb 29, 2012
From: UNISYS CORPORATION
To: DEUTSCHE BANK NATIONAL TRUST
Reel/Frame 027784/0046 →
Continuity (1)
Related Publication 20130090913A1 · Apr 11, 2013