IP Library Granted Patent US 11,281,481
Granted Patent B2
US 11,281,481 · App. 14/806,169 · Granted Mar 22, 2022

Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture

Inventor: Mohammad Abdallah (El Dorado Hills, CA)
Assignee: INTEL CORPORATION
G06F9/45516G06F8/44G06F8/447G06F9/4552G06F9/45533G06F9/45554
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 11,281,481
App. No.
14/806,169
Granted
Mar 22, 2022
Kind
B2
Abstract

A system for an agnostic runtime architecture is disclosed. The system includes 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 conversion process for executing code from a guest image. The system converter further comprises a guest fetch logic component for accessing a plurality of guest instructions, a guest fetch buffer coupled to the guest fetch logic component and a branch prediction component for assembling the plurality of guest instructions into a guest instruction block, and a plurality of conversion tables including a first level conversion table and a second level conversion table coupled to the guest fetch buffer for translating the guest instruction block into a corresponding native conversion block. The system further includes a native cache coupled to the conversion tables for storing the corresponding native conversion block, a conversion look aside buffer coupled to the native cache for storing a mapping of the guest instruction block to corresponding native conversion block. Upon a subsequent request for a guest instruction, the conversion look aside buffer is indexed to determine whether a hit occurred, wherein the mapping indicates the guest instruction has a corresponding converted native instruction in the native cache, and in response to the hit the conversion look aside buffer forwards the translated native instruction for execution.

Claims (51)

1. A system for an agnostic runtime architecture, comprising:

a system emulation/virtualization converter to handle system code that requires a guest system architecture for execution;

an application code converter to handle application code that requires the guest system architecture for execution; 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 conversion process for executing code from a guest image that requires architectural components that are common to both the guest system architecture and a host system architecture where the guest system architecture and host system architecture are different, wherein the system converter further comprises:

a guest fetch logic component for accessing a plurality of guest instructions;

a guest fetch buffer coupled to the guest fetch logic component and a branch prediction component for assembling the plurality of guest instructions into a guest instruction block;

a plurality of conversion tables including a first level conversion table and a second level conversion table coupled to the guest fetch buffer for translating the guest instruction block into a corresponding native conversion block;

a native cache coupled to the conversion tables for storing the corresponding native conversion block;

a conversion look aside buffer coupled to the native cache for storing a mapping of the guest instruction block to corresponding native conversion block;

wherein upon a subsequent request for a guest instruction, the conversion look aside buffer is indexed to determine whether a hit occurred, wherein the mapping indicates the guest instruction has a corresponding converted native instruction in the native cache; and

in response to the hit the conversion look aside buffer forwards the translated native instruction for execution.

2. The system of claim 1 , wherein the first level conversion table and the second level conversion table are implemented as a cache that is maintained coherently with a conversion table buffer stored in system memory.

3. The system of claim 1 , wherein the first level conversion table and the second level conversion table include substitute fields for substituting native instructions for guest instructions and control fields for controlling the first level conversion table and a 15 second level conversion table.

4. The system of claim 1 , wherein the first level conversion table is used to perform first level translation on the guest instruction.

5. The system of claim 4 , wherein the first level conversion table comprises a hash used to recognize a plurality of guest instructions.

6. The system of claim 5 , wherein the plurality of guest instructions comprises at least one prefix guest instruction and a plurality of opcodes associated with the prefix guest instruction.

7. A system for translating instructions for a processor, comprising:

a system emulation/virtualization converter to handle system code that requires a guest system architecture for execution;

an application code converter to handle application code that requires the guest system architecture for execution; 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 conversion process for executing code from a guest image that requires architectural components that are common to both the guest system architecture and a host system architecture where the guest system architecture and host system architecture are different, wherein the system converter further comprises:

a guest fetch logic component for accessing a plurality of guest instructions;

a guest fetch buffer coupled to the guest fetch logic component and a branch prediction component for assembling the plurality of guest instructions into a guest instruction block;

a plurality of conversion tables including a first level conversion table and a second level conversion table coupled to the guest fetch buffer for translating the guest instruction block into a corresponding native conversion block;

a native cache coupled to the conversion tables for storing the corresponding native conversion block;

a conversion look aside buffer coupled to the native cache for storing a mapping of the guest instruction block to corresponding native conversion block;

wherein upon a subsequent request for a guest instruction, the conversion look aside buffer is indexed to determine whether a hit occurred, wherein the mapping indicates the guest instruction has a corresponding converted native instruction in the native cache; and

in response to the hit the conversion look aside buffer forwards the translated native instruction for execution.

8. The system of claim 7 , wherein the first level conversion table and the second level conversion table are implemented as a cache that is maintained coherently with a conversion table buffer stored in system memory.

9. The system of claim 7 , wherein the first level conversion table and the second level conversion table include substitute fields for substituting native instructions for guest instructions and control fields for controlling the first level conversion table and a second level conversion table.

10. The system of claim 7 , wherein the first level conversion table is used to perform first level translation on the guest instruction.

11. The system of claim 10 , wherein the first level conversion table comprises a hash used to recognize a plurality of guest instructions.

12. The system of claim 11 , wherein the plurality of guest instructions comprises at least one prefix guest instruction and a plurality of opcodes associated with the prefix guest instruction.

13. A microprocessor that implements a method of translating instructions, said microprocessor comprises:

a microprocessor pipeline;

a system emulation/virtualization converter to handle system code that requires a guest system architecture for execution;

an application code converter to handle application code that requires the guest system architecture for execution; 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 conversion process for executing code from a guest image that requires architectural components that are common to both the guest system architecture and a host system architecture where the guest system architecture and host system architecture are different, wherein the system converter further comprises:

a guest fetch logic component for accessing a plurality of guest instructions;

a guest fetch buffer coupled to the guest fetch logic component and a branch prediction component for assembling the plurality of guest instructions into a guest instruction block;

a plurality of conversion tables including a first level conversion table and a second level conversion table coupled to the guest fetch buffer for translating the guest instruction block into a corresponding native conversion block;

a native cache coupled to the conversion tables for storing the corresponding native conversion block;

a conversion look aside buffer coupled to the native cache for storing a mapping of the guest instruction block to corresponding native conversion block;

wherein upon a subsequent request for a guest instruction, the conversion look aside buffer is indexed to determine whether a hit occurred, wherein the mapping indicates the guest instruction has a corresponding converted native instruction in the native cache; and

in response to the hit the conversion look aside buffer forwards the translated native instruction for execution.

14. The microprocessor of claim 13 , wherein the first level conversion table and the second level conversion table are implemented as a cache that is maintained coherently with a conversion table buffer stored in system memory.

15. The microprocessor of claim 13 , wherein the first level conversion table and the second level conversion table include substitute fields for substituting native instructions for guest instructions and control fields for controlling the first level conversion table and a second level conversion table.

16. The microprocessor of claim 13 , wherein the first level conversion table is used to perform first level translation on the guest instruction.

17. The microprocessor of claim 16 , wherein the first level conversion table comprises a hash used to recognize a plurality of guest instructions.

18. The microprocessor of claim 17 , wherein the plurality of guest instructions comprises at least one prefix guest instruction and a plurality of opcodes associated with the prefix guest instruction.

19. The microprocessor of claim 13 wherein the first level conversion table and the second level conversion table comprise a plurality of masks and a plurality of tags, wherein the tags determine pattern matches and the masks hid non-relevant bits of patterns.

20. The microprocessor of claim 19 , wherein the plurality of masks and the plurality of tags are software loadable to enable configurable decoding.

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 040048/0537 →
Continuity (2)
Provisional Application 62029383 · Jul 25, 2014
Related Publication 20160026482A1 · Jan 28, 2016