IP Library Granted Patent US 7,904,893
Granted Patent B2
US 7,904,893 · App. 10/802,586 · Granted Mar 8, 2011

Power and/or energy optimized compile/execution

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,904,893
App. No.
10/802,586
Granted
Mar 8, 2011
Kind
B2
Abstract

A compiler with power and/or energy optimization, a complementary runtime manager, and system having the compiler and/or the runtime manager are described herein.

Claims (84)

1. A method comprising:

receiving a plurality of non-native instructions in a selected one of a source form and an intermediate form;

determining an initial number of times to interpretively execute the plurality of non-native instructions;

interpretively executing the plurality of non-native instructions the initial number of times;

monitoring execution of the plurality of non-native instructions to determine when the plurality of non-native instructions have been interpretively executed the initial number of times;

compiling the plurality of non-native instructions to generate object code for the non-native instructions only after interpretively executing the plurality of non-native instructions the initial number of times, wherein compiling the plurality of non-native instructions includes replacing an object code segment from the generated object code with an alternative object code segment if the alternative object code segment improves at least a selected one of an execution power level required and an execution energy level required to execute the generated object code in a target execution environment.

2. The method of claim 1 , wherein said receiving comprises receiving the non-native instructions in a byte code form.

3. The method of claim 1 , wherein said compiling comprises analyzing the object code segment for execution power level requirement, and determining whether an alternative object code segment with lower execution power level requirement is available.

4. The method of claim 1 , wherein said compiling comprises analyzing the object code segment for execution energy consumption, and determining whether an alternative object code segment with lower execution energy consumption is available.

5. The method of claim 1 , wherein the method further comprises

monitoring said compiling for power level required to perform compilation;

updating a current understanding of power level required for compilation; and

updating the initial number of times the plurality of non-native instructions are to be interpretively executed before compiling the received non-native instructions, if said monitoring observes a power level required for compilation to be different from the current understanding.

6. The method of claim 1 , wherein the method further comprises

monitoring said compiling for amount of energy required to perform an average compilation;

updating a current understanding of amount of energy required for an average compilation; and

updating the initial number of times the plurality of non-native instructions are to be interpretively executed before compiling the received non-native instructions, if said monitoring observes an amount of energy required for compilation to be different from the current understanding.

7. The method of claim 1 , wherein the generated object code comprises a plurality of native instructions, and the method further comprises

monitoring execution of the generated object code for power level required to execute the native instructions; and

updating power level requirements of selected ones of the native instructions if said monitoring observes power level requirements for the selected ones of the native instructions to be different from current understandings of the power level requirements of the selected ones of the native instructions.

8. The method of claim 1 , wherein the generated object code comprises a plurality of native instructions, and the method further comprises

monitoring execution of the generated object code for amount of energy required to execute the native instructions; and

updating energy requirements of selected ones of the native instructions if said monitoring observes energy requirements for the selected ones of the native instructions to be different from current understandings of the energy requirements of the selected ones of the native instructions.

9. In an electronic device, a method of operation, comprising:

receiving a plurality of non-native instructions;

determining an initial number of times to interpretively execute the non-native instructions based at least in part on one or more of an expected power level required to perform a compile or an expected energy required to perform the compile;

executing the non-native instructions for the initial number of times using an interpreter;

monitoring execution of the non-native instructions to determine when the non-native instructions have been executed the initial number of times using the interpreter; and

compiling the non-native instructions into object code only after executing the received non-native instructions for said initial number of times using the interpreter.

10. The method of claim 9 , wherein the method further comprises monitoring said compiling for a compilation requirement employed in determining the initial number of times the received non-native instructions are to be executed using the interpreter before compiling; and

updating a current understanding of the compilation requirement if said monitoring observes the compilation requirement to be different from the current understanding.

11. The method of claim 9 , wherein the generated object code comprises a plurality of native instructions, and the method further comprises monitoring execution of the generated object code for execution requirements of the native instructions; and

updating execution requirements of selected ones of the native instructions if said monitoring observes execution requirements for the selected ones of the native instructions to be different from current understandings of the execution requirements of the selected ones of the native instructions.

12. The method of claim 9 , wherein determining the initial number of times to interpretively execute the non-native instructions is based at least in part on a size of the non-native instructions.

13. An article of manufacture comprising:

a computer readable medium; and

a plurality of instructions designed to implement a compiler to:

determine an initial number of times to interpretively execute a plurality of non-native instructions;

interpretively execute the plurality of non-native instructions the initial number of times;

monitor execution of the non-native instructions to determine when the non-native instructions have been interpretively executed the initial number of times;

compile the non-native instructions to generate object code for the non-native instructions only after interpretively executing the plurality of non-native instructions the initial number of times, and

replace a segment of the generated object code with an alternative object code segment if the alternative object code segment improves at least a selected one of an execution power level required and an execution energy required to execute the generated object code in a target execution environment.

14. The article of claim 13 , wherein said compiler analyzes the object code segment for execution power level requirement, and determines whether the alternative object code segment with lower execution power level requirement is available.

15. The article of claim 13 , wherein said compiler analyzes the object code segment for execution energy consumption, and determines whether the alternative object code segment with lower execution energy consumption is available.

16. An article of manufacture comprising:

a computer readable medium; and

a plurality of instructions designed to implement a runtime manager equipped to:

receive a plurality of non-native instructions,

determine an initial number of times to interpretively execute the non-native instructions, the initial number of times based at least in pat on one or more of an expected power level required to perform an average compile or an expected energy required to perform the average compile,

execute the non-native instructions for said initial number of times using an interpreter,

monitor execution of the non-native instructions to determine when the non-native instructions have been interpretively executed the initial number of times, and

invoke a compiler to compile the non-native instructions into object code only after executing the received non-native instructions for said initial number of times using the interpreter.

17. The article of claim 16 , wherein the runtime manager is further equipped to monitor said compiling for a compilation requirement employed in determining the initial number of times received non-native instructions are to be executed before compiling; and

update a current understanding of the compilation requirement if said monitoring observes the compilation requirement to be different from the current understanding.

18. The article of claim 16 , wherein the generated object code comprises a plurality of native instructions, and the runtime manager is further equipped to monitor execution of the generated object code for execution requirements of the native instructions; and

update execution requirements of selected ones of the native instructions if said monitoring observes execution requirements for the selected ones of the native instructions to be different from current understandings of the execution requirements of the selected ones of the native instructions.

19. The article of claim 16 , wherein the runtime manager is further equipped to determine the initial number of times to interpretively execute the non-native instructions based at least in part on a size of the non-native instructions.

20. A system, comprising:

a storage medium having stored therein a plurality of instructions implementing a compiler to:

receive a plurality of non-native instructions in a selected one of a source form and an intermediate form,

determine an initial number of times to interpretively execute the plurality of non-native instructions;

interpretively execute the plurality of non-native instructions the initial number of times,

monitor execution of the non-native instructions to determine when the non-native instructions have been interpretively executed the initial number of times,

compile the non-native instructions to generate object code for the non-native instructions only after interpretively executing the plurality of non-native instructions the initial number of times, and

replace a segment of the generated object code with an alternative object code segment if the alternative object code segment improves at least a selected one of an execution power level required and an execution energy required to execute the generated object code in a target execution environment; and

a processor coupled to the storage medium to execute the instructions implementing the compiler.

21. The system of claim 20 , wherein said compiler analyzes the object code segment for execution power level requirement, and determines whether an alternative object code segment with lower execution power level requirement is available.

22. The system of claim 20 , wherein said compiler analyzes the object code segment for execution energy consumption, and determines whether an alternative object code segment with lower execution energy consumption is available.

23. The system of claim 20 , wherein the apparatus further comprises a wireless communication interface to receive the non-native instructions.

24. A system, comprising:

a communication interface to receive a plurality of non-native instructions;

a storage medium coupled to the communication interface, and having stored therein a plurality of instructions designed to implement a runtime manager equipped to:

determine an initial number of times to interpretively execute the non-native instructions, the initial number of times based at least in part on one or more of an expected power level required to perform an average compile or an expected energy required to perform the average compile,

execute the received non-native instructions for the initial number of times using an interpreter,

monitor execution of the non-native instructions to determine when the non-native instructions have been interpretively executed the initial number of times, and

invoke a compiler to compile the non-native instructions into object code only after executing the received non-native instructions for said initial number of times using the interpreter; and

a processor coupled to the storage medium to execute the instructions implementing the runtime manager.

25. The system of claim 24 , wherein the runtime manager is further equipped to monitor said compiling for a compilation requirement employed in determining the initial number of times received non-native instructions are to be executed using the interpreter before compiling; and

update a current understanding of the compilation requirement if said monitoring observes the compilation requirement to be different from the current understanding.

26. The system of claim 24 , wherein the generated object code comprises a plurality of native instructions, and the runtime manager is further equipped to

monitor execution of the generated object code for execution requirements of the native instructions; and

update execution requirements of selected ones of the native instructions if said monitoring observes execution requirements for the selected ones of the native instructions to be different from current understandings of the execution requirements of the selected ones of the native instructions.

27. The system of claim 24 , wherein the communication interface is a wireless communication interface.

28. The system of claim 24 , wherein the runtime manager is further equipped to determine the initial number of times to interpretively execute the non-native instructions based at least in part on a size of the non-native instructions.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053475/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: MARVELL INTERNATIONAL LTD.
To: CAVIUM INTERNATIONAL
Reel/Frame 052918/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2006
From: INTEL CORPORATION
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 018515/0817 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 17, 2004
From: MUNTER, JOEL D.; NANJA, MURTHI; GAO, ZHIGUO; XU, JIN J.
To: INTEL CORPORATION
Reel/Frame 015114/0345 →