IP Library Granted Patent US 9,513,884
Granted Patent B2
US 9,513,884 · App. 13/210,539 · Granted Dec 6, 2016

Thermal-aware source code compilation

Inventors: Cary L. Bates (Rochester, MN); Nicholas P. Johnson (Rochester, MN); Justin K. King (Rochester, MN)
Assignee: International Business Machines Corporation
G06F8/41G06F8/443G06F9/44G06F9/5016G06F11/002G06F11/3037G06F11/3058
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,513,884
App. No.
13/210,539
Granted
Dec 6, 2016
Kind
B2
Abstract

Thermal-aware source code compilation including: receiving, by a compiler, an identification of a target computing system, the identification of the target computing system specifying temperature sensors that measure temperature of a memory module; compiling the source code into an executable application including inserting in the executable application computer program instructions for thermal-aware execution, the computer program instructions, when executed on the target computing system, carry out the steps of: retrieving temperature measurements of one or more of the target computing system's temperature sensors; determining, in real-time in dependence upon the temperature measurements, whether a memory module is overheated; if a memory module is overheated, entering a thermal-aware execution state including, for each memory allocation in the executable application, allocating memory on a different memory module than the overheated memory module; and upon the temperature sensors indicating the memory module is no longer overheated, exiting the thermal-aware execution state.

Claims (34)

1. An apparatus for thermal-aware source code compilation, the apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:

receiving, by a compiler during compilation of source code, an identification of a target computing system for which the source code is to be compiled, the identification of the target computing system specifying a plurality of temperature sensors, each temperature sensor configured to measure temperature of a memory module of the target computing system;

compiling the source code into an executable application including inserting in the executable application computer program instructions for thermal-aware execution, the computer program instructions for thermal-aware execution, when executed on the target computing system, carry out the steps of:

retrieving temperature measurements of one or more of the target computing system's temperature sensors, wherein retrieving temperature measurements of one or more of the target computing system's temperature sensors further comprises retrieving, periodically at an interval of a specified number of function calls, temperature measurements of one or more of the target computing system's temperature sensors; wherein the specified number of function calls is more than one; determining, in real-time in dependence upon the temperature measurements, whether a memory module is overheated;

if a memory module is overheated, entering a thermal-aware execution state including, for each memory allocation in the executable application, allocating memory on a different memory module than the overheated memory module; and

upon the temperature sensors indicating the memory module is no longer overheated, exiting the thermal-aware execution state.

2. The apparatus of claim 1 wherein allocating memory on a different memory module other than the overheated memory module further comprises

requesting from an operating system of target computing system, a virtual address that maps to a physical memory address on a different memory module other than the overheated memory module; and

utilizing the virtual address to allocate memory on the different memory module.

3. The apparatus of claim 2 further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:

storing in non-volatile memory of each memory module of the target system upon startup of the target system a physical memory address associated with the memory module; and

responsive to the request for the virtual address that maps to a physical memory address on the different memory module, identifying, by the operating system, the physical memory address of the different memory module from the association stored in the different memory module's non-volatile memory.

4. The apparatus of claim 1 wherein allocating memory on a different memory module other than the overheated memory module further comprises allocating memory beginning at a virtual memory address a predefined size away from a previously utilized virtual memory address in the application's address space.

5. The apparatus of claim 1 wherein each memory module comprises one of:

a Dual In-Line Memory Module (‘DIMM’);

a rank of a DIMM; and

a Dynamic Random Access Memory (‘DRAM’) integrated circuit of a DIMM.

6. A computer program product for thermal-aware source code compilation, the computer program product disposed upon a computer readable storage medium, wherein the computer readable storage medium is not a signal, the computer program product comprising computer program instructions that, when executed, cause a computer to carry out the steps of:

receiving, by a compiler during compilation of source code, an identification of a target computing system for which the source code is to be compiled, the identification of the target computing system specifying a plurality of temperature sensors, each temperature sensor configured to measure temperature of a memory module of the target computing system;

compiling the source code into an executable application including inserting in the executable application computer program instructions for thermal-aware execution, the computer program instructions for thermal-aware execution, when executed on the target computing system, carry out the steps of:

retrieving temperature measurements of one or more of the target computing system's temperature sensors, wherein retrieving temperature measurements of one or more of the target computing system's temperature sensors further comprises retrieving, periodically at an interval of a specified number of function calls, temperature measurements of one or more of the target computing system's temperature sensors; wherein the specified number of function calls is more than one determining, in real-time in dependence upon the temperature measurements, whether a memory module is overheated;

if a memory module is overheated, entering a thermal-aware execution state including, for each memory allocation in the executable application, allocating memory on a different memory module than the overheated memory module; and

upon the temperature sensors indicating the memory module is no longer overheated, exiting the thermal-aware execution state.

7. The computer program product of claim 6 wherein allocating memory on a different memory module other than the overheated memory module further comprises

requesting from an operating system of target computing system, a virtual address that maps to a physical memory address on a different memory module other than the overheated memory module; and

utilizing the virtual address to allocate memory on the different memory module.

8. The computer program product of claim 7 further comprising computer program instructions that, when executed, cause the computer to carry out the steps of:

storing in non-volatile memory of each memory module of the target system upon startup of the target system a physical memory address associated with the memory module; and

responsive to the request for the virtual address that maps to a physical memory address on the different memory module, identifying, by the operating system, the physical memory address of the different memory module from the association stored in the different memory module's non-volatile memory.

9. The computer program product of claim 6 wherein allocating memory on a different memory module other than the overheated memory module further comprises allocating memory beginning at a virtual memory address a predefined size away from a previously utilized virtual memory address in the application's address space.

10. The computer program product of claim 6 wherein each memory module comprises one of:

a Dual In-Line Memory Module (‘DIMM’);

a rank of a DIMM; and

a Dynamic Random Access Memory (‘DRAM’) integrated circuit of a DIMM.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2011
From: BATES, CARY L.; JOHNSON, NICHOLAS P.; KING, JUSTIN K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 026757/0236 →
Continuity (1)
Related Publication 20130047142A1 · Feb 21, 2013