IP Library Granted Patent US 9,733,909
Granted Patent B2
US 9,733,909 · App. 14/807,308 · Granted Aug 15, 2017

System converter that implements a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address

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,733,909
App. No.
14/807,308
Granted
Aug 15, 2017
Kind
B2
Abstract

A system for an agnostic runtime architecture. The system includes a system emulation/virtualization converter, an application code converter, and a converter wherein a system emulation/virtualization converter and an application code converter implement a system emulation process, and wherein the system converter implements a system and application conversion process for executing code from a guest image, wherein the system converter or the system emulator. The system further includes a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address, wherein a load will check for a same address of subsequent loads from a same thread, and a thread checking process that enable other thread store checks against the entire load queue and a monitor extension.

Claims (48)

1. A system for an agnostic runtime architecture implemented on a processor, the system comprising:

a system emulation/virtualization converter;

an application code converter; and

a system converter wherein the system emulation/virtualization converter and the application code converter implement a system emulation process, and wherein the system converter implements a system and application conversion process for executing code from a guest image, wherein the system emulation process or the system and application conversion process are operable to implement:

a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to a same address and loads to a same address of a store within a same thread are not reordered before the store, wherein a load is checked for a same address in subsequent loads from a same thread, and wherein a reordered load includes an offset that indicates an initial position of the reordered load in machine order in relation to following stores; and

a thread checking process that enables stores from another thread to check against an entire load queue and a monitor extension.

2. The system of claim 1 , wherein the monitor extension is set by an original load and cleared by a subsequent instruction following the original load.

3. The system of claim 1 , wherein the store is a partial store.

4. The system of claim 1 , wherein the store is a total store.

5. The system of claim 1 , further comprising:

a JIT layer, comprising:

a runtime native instruction assembly component for receiving instructions from a guest virtual machine;

a runtime native instruction sequence formation component for receiving instructions from native code; and

a dynamic sequence block-based instruction mapping component for code cache allocation and metadata creation coupled to receive inputs from the runtime native instruction assembly component and the runtime native instruction sequence formation component,

wherein the dynamic sequence block-based instruction mapping component receives resulting processed instructions from the runtime native instruction assembly component and the runtime native instruction sequence formation component and allocates resulting processed instructions to the processor for execution.

6. The system of claim 5 , wherein the processor comprises a sequence cache to store dynamically converted sequences.

7. A computer system comprising a microprocessor, wherein the microprocessor comprises:

a system emulation/virtualization converter operable to execute system code from a guest image;

an application code converter operable to execute application code from the guest image; and

a system converter wherein the system emulation/virtualization converter and the application code converter implement a system emulation process, and wherein the system converter implements a system and application conversion process for executing code from the guest image, wherein the system emulation process or the system and application conversion process are operable to implement:

a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to a same address and loads to a same address of a store within a same thread are not reordered before the store, wherein a load is checked for a same address in subsequent loads from a same thread, and wherein a reordered load includes an offset that indicates an initial position of the reordered load in machine order in relation to following stores; and

a thread checking process that enables stores from another thread to check against an entire load queue and a monitor extension.

8. The computer system of claim 7 , wherein the monitor extension is set by an original load and cleared by a subsequent instruction following the original load.

9. The computer system of claim 7 , wherein the store is a partial store.

10. The computer system of claim 7 , wherein the store is a total store.

11. The computer system of claim 7 , further comprising:

a JIT layer, comprising:

a runtime native instruction assembly component for receiving instructions from a guest virtual machine;

a runtime native instruction sequence formation component for receiving instructions from native code; and

a dynamic sequence block-based instruction mapping component for code cache allocation and metadata creation coupled to receive inputs from the runtime native instruction assembly component and the runtime native instruction sequence formation component,

wherein the dynamic sequence block-based instruction mapping component receives resulting processed instructions from the runtime native instruction assembly component and the runtime native instruction sequence formation component and allocates resulting processed instructions to the microprocessor for execution.

12. The computer system of claim 11 , wherein the microprocessor further comprises a sequence cache to store dynamically converted sequences.

13. A computer system comprising

a microprocessor comprising a core and a plurality of caches, wherein the microprocessor further comprises:

a system emulation/virtualization converter;

an application code converter; and

a system converter wherein the system emulation/virtualization converter and the application code converter implement a system emulation process, and wherein the system converter implements a system and application conversion process for executing code from a guest image, wherein the system emulation process or the system and application conversion process are operable to implement:

a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to a same address and loads to a same address of a store within a same thread are not reordered before the store, wherein a load is checked for a same address in subsequent loads from a same thread, and wherein a reordered load includes an offset that indicates an initial position of the reordered load in machine order in relation to following stores; and

a thread checking process that enables stores from another thread to check against an entire load queue and a monitor extension.

14. The computer system of claim 13 , wherein the monitor extension is set by an original load and cleared by a subsequent instruction following the original load.

15. The computer system of claim 13 , wherein the store is a partial store.

16. The computer system of claim 13 , wherein the store is a total store.

17. The computer system of claim 13 , further comprising:

a close to bare metal JIT conversion layer, comprising:

a runtime native instruction assembly component for receiving instructions from a guest virtual machine;

a runtime native instruction sequence formation component for receiving instructions from native code; and

a dynamic sequence block-based instruction mapping component for code cache allocation and metadata creation coupled to receive inputs from the runtime native instruction assembly component and the runtime native instruction sequence formation component,

wherein the dynamic sequence block-based instruction mapping component receives resulting processed instructions from the runtime native instruction assembly component and the runtime native instruction sequence formation component and allocates resulting processed instructions to the microprocessor for execution.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2016
From: SOFT MACHINES, INC.
To: INTEL CORPORATION
Reel/Frame 040631/0915 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2016
From: ABDALLAH, MOHAMMAD
To: SOFT MACHINES, INC.
Reel/Frame 040049/0419 →