IP Library Granted Patent US 7,185,215
Granted Patent B2
US 7,185,215 · App. 10/248,838 · Granted Feb 27, 2007

Machine code builder derived power consumption reduction

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,185,215
App. No.
10/248,838
Granted
Feb 27, 2007
Kind
B2
Abstract

A machine code builder providing improved software controlled power management is described. A machine code builder reads pre-executable code and builds machine code from the pre-executable code to maximize a duration that a resource is not required. The resource(s) not required may be user defined or the builder can analyze the pre-executable code to determine which resource(s) are not required. The builder re-organizes machine code to maximize the time a particular resource is not used. Mechanisms are also provided to have resource emulation code execute during re-energizing of a resource to prevent loss of performance.

Claims (42)

1. A method for reducing power consumption of a microprocessor having a plurality of resources, the method comprising:

reading pre-executable code into a machine code builder;

building machine code from the pre-executable code to identify blocks of machine code with a common resource; and

reorganizing the blocks of machine code with the common resource sequentially to maximize a duration that the common resource is not required.

2. The method of claim 1 , wherein the building is directed by a user-defined directive that identifies the common resource.

3. The method of claim 1 , wherein the building includes analyzing the pre-executable code to determine resource requirements.

4. The method of claim 1 , wherein the building includes profiling the pre-executable code to determine resource requirements, wherein the profiling determines all available resources that can execute a specified function that is in accordance with the resource requirements and selects a resource from all of the available resources to execute the specified function, wherein the selected resource has a better power efficiency as compared to the other available resources.

5. The method of claim 4 , wherein the profiling includes executing the machine code, and again re-organizing the machine code to maximize a duration that the common resource is not required.

6. The method of claim 1 , further comprising executing a resource emulation program code during re-energizing of a resource.

7. The method of claim 6 , further comprising inserting an instruction into the machine code during building to carry out the executing in the case that the pre-executable code includes branch code having resource-specific code.

8. The method of claim 7 , wherein the instruction determines whether the common resource is energized and available, and executes the resource emulation code in the case that the common resource is de-energized.

9. The method of claim 1 , further comprising saving resource power consumption data for a function.

10. The method of claim 9 , further comprising recalling resource power consumption data for a function in the case that the function is called.

11. The method of claim 1 , further comprising identifying an execution requirement for a block of machine code, and adjusting a resource performance to meet the execution requirement.

12. The method of claim 11 , wherein the execution requirement is one of a duration in which a block of machine code must execute and a performance level for a block of machine code.

13. The method of claim 12 , wherein the resource performance is adjusted by changing at least one of a clock frequency, a voltage, a resource allocation and a function schedule.

14. A machine code builder for a microprocessor having a plurality of resources, the machine code builder comprising:

means for reading pre-executable code;

means for building machine code from the pre-executable code to identify blocks of machine code with a common resource; and

means for reorganizing the blocks of machine code with the common resource sequentially to maximize a duration that the common resource is not required.

15. The machine code builder of claim 14 , wherein the means for building is responsive to a user-inserted directive in the pre-executable code.

16. The machine code builder of claim 14 , wherein the means for building analyzes the pre-executable code to determine the common resource.

17. The machine code builder of claim 14 , further comprising means for profiling the machine code to determine the common resource, and wherein the means for building is responsive to the profiling means, wherein the profiling means determines all available resources that can execute a specified function that is in accordance with the resource requirements and selects a resource from all of the available resources to execute the specified function, wherein the selected resource has a better power efficiency as compared to the other available resources.

18. The machine code builder of claim 14 , further comprising means for inserting an instruction into the machine code during building to direct execution of a resource emulation code during re-energizing of the common resource.

19. The machine code builder of claim 18 , wherein the instruction determines whether the common resource is energized and available, and executes the resource emulation code in the case that the common resource is de-energized.

20. The machine code builder of claim 14 , further comprising means for inserting an instruction into the machine code during building to direct saving of resource power consumption data for a first function, and an instruction to direct recalling of resource power consumption data for a second function in the case that the second function is called.

21. The machine code builder of claim 14 , further comprising means for inserting an instruction in the machine code to adjust a resource performance to meet an execution requirement.

22. The machine code builder of claim 21 , wherein the execution requirement is one of a duration in which a block of machine code must execute and a performance level for a block of machine code.

23. The machine code builder of claim 21 , wherein the resource performance is adjusted by changing at least one of a clock frequency, a voltage, a resource allocation and a function schedule.

24. A machine code building tool comprising:

means for reading pre-executable code;

means for reorganizing blocks of machine code with a common resource sequentially; and

means for directing the common resource of a processor to be de-energized during execution of the blocks of machine code in the case that the blocks do not use the common resource.

25. The machine code builder of claim 24 , further comprising means for directing execution of a resource emulation code that emulates instructions performed by the common resource during re-energizing of the common resource.

26. A computer program product comprising a computer useable medium having computer readable program code embodied therein for reducing power consumption of a microprocessor, the program product comprising:

program code configured to read pre-executable code;

program code configured to build machine code from the pre-executable code to identify blocks of machine code with a common resource; and

program code configured to organize the blocks of machine code with the common resource sequentially to maximize a duration that the common resource is not required.

27. The program product of claim 26 , further comprising:

program code configured to determine whether a resource of the microprocessor is de-energized; and

program code configured to emulate resource functioning during re- energizing of the resource.

28. The program product of claim 27 , further comprising program code for inserting an instruction into machine code during building to conduct the determining step and the executing step in the case that the pre-executable code includes branch code having resource-specific code.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded May 12, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 056987/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 20, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES INC.
Reel/Frame 054636/0001 →
SECURITY AGREEMENT Recorded Nov 29, 2018
From: GLOBALFOUNDRIES INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 049490/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2015
From: GLOBALFOUNDRIES U.S. 2 LLC; GLOBALFOUNDRIES U.S. INC.
To: GLOBALFOUNDRIES INC.
Reel/Frame 036779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 3, 2015
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: GLOBALFOUNDRIES U.S. 2 LLC
Reel/Frame 036550/0001 →