IP Library Granted Patent US 7,747,989
Granted Patent B1
US 7,747,989 · App. 10/637,006 · Granted Jun 29, 2010

Virtual machine coprocessor facilitating dynamic compilation

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 7,747,989
App. No.
10/637,006
Granted
Jun 29, 2010
Kind
B1
Abstract

A system includes an abstract machine instruction stream, an execution trace buffer storing information to facilitate dynamic compilation, a virtual machine coprocessor configured to receive an instruction from the abstract machine instruction stream and to generate one or more native machine instructions in response to the received instruction, and a processor coupled to the virtual machine coprocessor and operable to execute the native machine instructions generated by the virtual machine coprocessor. The virtual machine coprocessor updates the execution trace buffer as instructions from the abstract machine instruction stream are processed. In addition, a method for facilitating dynamic compilation includes receiving an instruction to be processed, determining that the instruction marks entry into a basic block, and updating an execution trace buffer.

Claims (34)

1. A system, comprising:

an execution trace buffer configured to store information to facilitate dynamic compilation; wherein the information to facilitate dynamic compilation includes data records corresponding to basic blocks of the abstract machine instruction stream, the data records including an identifier field indicating a basic block, a counter field indicating the number of times the basic block has been executed, and a successor field indicating one or more successive basic blocks;

a virtual machine coprocessor configured to receive an instruction from an abstract machine instruction stream where it is determined that the instruction marks entry into the basic blocks when a new program counter has been activated or when a conditional branch condition has been cleared and to generate one or more native machine instructions using the information stored in the execution trace buffer in response to the received instruction, wherein the information is based on one or more previously executed native machine instructions; and

a processor coupled to the virtual machine coprocessor, the processor operable to execute the one or more native machine instructions generated by the virtual machine coprocessor, wherein the virtual machine coprocessor updates the information stored in the execution trace buffer as instructions from the abstract machine instruction stream are processed.

2. The system of claim 1 , wherein the abstract machine instruction stream includes JAVA instructions.

3. The system of claim 1 , wherein the abstract machine instruction stream includes Common Language Runtime instructions.

4. The system of claim 1 , wherein the information to facilitate dynamic compilation includes a data record corresponding to each executed basic block of the abstract machine instruction stream.

5. The system of claim 1 , wherein the successor field includes:

a branch taken field indicating a successive basic block if a branch is taken;

a branch not taken field indicating a successive basic block if a branch is not taken; and

a branch counter field indicating either the number of times a branch is taken or the number of times a branch is not taken.

6. A method for facilitating dynamic compilation, comprising:

receiving an instruction to be processed;

determining that the instruction marks entry into a basic block when a new program counter has been activated or when a conditional branch condition has been cleared; and updating an execution trace buffer configured to store information to facilitate dynamic compilation of the instruction, wherein updating the execution trace buffer includes:

when a data record corresponding to the basic block exists in the execution trace buffer, updating the data record;

when the data record corresponding to the basic block does not exist in the execution trace buffer and the execution trace buffer can accommodate more data records, adding the data record corresponding to the basic block to the execution trace buffer; and

when the data record corresponding to the basic block does not exist in the execution trace buffer and the execution trace buffer cannot accommodate more data records, replacing an existing data record corresponding to a basic block having a low number of entries with the data record corresponding to the basic block;

generating one or more native machine instructions using the data record stored in the execution trace buffer.

7. The method of claim 6 , wherein receiving the instruction to be processed includes receiving an abstract machine instruction.

8. The method of claim 7 , wherein receiving the abstract machine instruction includes receiving a JAVA virtual machine instruction.

9. The method of claim 7 , wherein receiving the abstract machine instruction includes receiving a Common Language Runtime instruction.

10. A virtual machine, implemented in hardware, comprising:

an execution trace buffer configured to store information to facilitate dynamic compilation wherein the information to facilitate dynamic compilation includes data records corresponding to basic blocks of the abstract machine instruction stream, the data records including an identifier field indicating a basic block, a counter field indicating the number of times the basic block has been executed, and a successor field indicating one or more successive basic blocks;

virtual machine coprocessor core logic operable to receive an abstract machine instruction from an abstract machine instruction stream where it is determined that the instruction marks entry into the basic blocks when a new program counter has been activated or when a conditional branch condition has been cleared and to generate one or more native machine instructions using the information stored in the execution trace buffer in response to the received instruction, wherein the information is based on one or more previously executed native machine instructions, and wherein the information stored in the execution trace buffer is updated as instructions from the abstract machine instruction stream are processed; and a processor communicating with the virtual machine coprocessor core logic, the processor operable to execute the one or more native machine instructions generated by the virtual machine coprocessor core logic.

11. The virtual machine of claim 10 , wherein the abstract machine instruction stream includes JAVA virtual machine instructions.

12. The virtual machine of claim 10 , wherein the abstract machine instruction stream includes Common Language Runtime instructions.

13. The virtual machine of claim 10 , wherein the information to facilitate dynamic compilation includes a data record corresponding to each executed basic block of the abstract machine instruction stream.

14. The virtual machine of claim 10 , wherein the successor field includes:

a branch taken field indicating a successive basic block if a branch is taken;

a branch not taken field indicating a successive basic block if a branch is not taken; and

a branch counter field indicating either the number of times a branch is taken or the number of times a branch is not taken.

15. A tangible computer-readable storage medium comprising a virtual machine embodied in software, the virtual machine including:

an execution trace buffer configured to store information to facilitate dynamic compilation wherein the information to facilitate dynamic compilation includes data records corresponding to basic blocks of the abstract machine instruction stream, the data records including an identifier field indicating a basic block, a counter field indicating the number of times the basic block has been executed, and a successor field indicating one or more successive basic blocks;

virtual machine coprocessor core logic to receive an abstract machine instruction from an abstract machine instruction stream where it is determined that the instruction marks entry into the basic blocks when a new program counter has been activated or when a conditional branch condition has been cleared and to generate one or more native machine instructions using the information stored in the execution trace buffer, wherein the information is based on one or more previously executed native machine instructions, and wherein the information stored in the execution trace buffer is updated as instructions from the abstract machine instruction stream are processed; and a processor communicating with the virtual machine coprocessor core logic, the processor operable to execute the one or more native machine instructions generated by the virtual machine coprocessor core logic.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2014
From: BRIDGE CROSSING, LLC
To: ARM FINANCE OVERSEAS LIMITED
Reel/Frame 033074/0058 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2013
From: MIPS TECHNOLOGIES, INC.
To: BRIDGE CROSSING, LLC
Reel/Frame 030202/0440 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2008
From: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
To: MIPS TECHNOLOGIES, INC.
Reel/Frame 021985/0015 →
SECURITY AGREEMENT Recorded Aug 24, 2007
From: MIPS TECHNOLOGIES, INC.
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 019744/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2004
From: KISSELL, KEVIN D.; PARALOGOS S.A.R.L.
To: MIPS TECHNOLOGIES, INC.
Reel/Frame 015152/0662 →