An embodiment of the invention is directed to collecting thermal, acoustic or power data about a computing platform in a traffic controlled runtime environment, and using the collected data for managing thermal effects, acoustic effects, or power consumption. Other embodiments are also described.
A computing platform (or simply, platform) is the underlying hardware and/or software for a system. For example, the platform may be a Pentium® processor by Intel Corp., Santa Clara, Calif., and its related integrated circuit I/O components and I/O interconnect running a compatible operating system. The platform may define a popular specification around which a system can be developed and manufactured, by an original equipment manufacturer (OEM) such as Dell, Inc. Round Rock, Tex. Once a platform has been defined, software developers can produce appropriate application programs that can run on different systems which are based on the same platform.
There are several different types of platforms. For example, there are platforms for desktop computers, such as those that feature a Pentium® processor and a compatible operating system. Another is a notebook/laptop computer platform (e.g., one that has a Centrino™ processor also by Intel Corp.) Yet another may be a handheld computer platform such as one that has an XScale or StrongARM processor and an embedded operating system.
Since there is continued demand for small form factor platforms, such as ultra-sleek laptops, handhelds, and mobile assistants, there is a desire in the industry to include more functionality in the individual systems that are based on such platforms. Allowing more functionality and components within the platform, however, raises the issue of how to manage, from an overall, system point of view, power consumption and thermal effects in the system. These issues include, for example, how to make a rechargeable battery that powers the system last longer, or how to operate the system so as to avoid hot spots that may degrade the hardware components of the system or reduce overall performance and the desirability of the product. Indeed, many modern, high performance, portable computing systems become quite hot during operation, and uncomfortable for a person to hold for a long period of time. These issues are exacerbated in situations where the platform provides insufficient space for a fan or active cooling system, such that all cooling may need to be performed using passive techniques (e.g., strategically placed heat sinks, or emergency shutdowns of an overheating component in the system).
The embodiments of the invention are illustrated by way of example and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. It should be noted that references to “an” embodiment of the invention in this disclosure are not necessarily to the same embodiment, and they mean at least one.
The method calls for collecting TAP data about the computing platform, in its traffic controlled runtime environment (operation 116). This data may be raw measurements of temperature, acoustic level, and/or power consumption. The thermal data may include a temperature reading made by a temperature sensor that is strategically located within the system. The temperature sensor may be integrated with a component of the platform, such as an integrated circuit (IC) device or functional block, a packaged IC device, or a heat sink. The sensor may alternatively be designed and located so as to obtain an ambient temperature inside the housing of the system. Power consumption may also be measured, for example, on a per component basis by strategically placed resistors between a DC power source and a voltage rail of the component, or for the overall system as a whole (e.g., detecting the voltage and current of a rechargeable power source). The acoustic data may be measurements of audible sound levels, such as the audible fan noise or rotating disk drive noise, made, for instance, by sampling the audio data captured by microphones integrated within the system and using an integrated, high definition audio (HDA) controller for sampling sound waves at a predetermined frequency.
While the TAP data is being collected, a component of the system may be selected and predetermined data traffic is then forced through it (operation 120). This component may be an integrated circuit device or a functional unit thereof, a packaged IC device, or an entire subsystem. Examples include a graphics processing component (e.g., a display controller), a mass storage component, a peripheral I/O controller component (e.g., a universal serial bus, USB, host controller), a network interface component (e.g., a wireless network interface controller, WNIC), and a main memory component (e.g., dynamic random access memory, DRAM, subsystem).
The predetermined data traffic that is forced through a component may be designed to stress the component, such that the component will consume more power and dissipate more heat as a result. For example, if the component relates to main memory, a relatively complex data pattern or file may be written to main memory, changed, and then read back, with this process repeated multiple times over a short period of time. To stress a graphics processing component, certain specialized, graphics application programming interface (API) calls may be made (e.g., DirectX, DX8 and DX9 calls). For a peripheral I/O component, the stresser may be in the form of generating a relatively high rate of data traffic on one or more of its I/O ports. For a storage controller, a stream of numerous small transactions, or a few large ones, with predetermined content, may be requested to write or read the mass storage in rapid sequence. Note that this capability for injecting controlled traffic into the platform should be available at varying levels, so as to provide a wide range of stresses.
Based on the collected data and in view of the injected, controlled traffic environment, characterization data for the platform is derived using algorithmic calculations, and stored for access by a driver 128 for the platform (operation 124). The driver 128 is a program that, in a layer sense, fits between the operating system and system firmware 136. The driver may access the operating system, firmware, and the hardware registers 140 of the system hardware. The driver 128 is to access the stored characterization data, for managing thermal effects, acoustic effects, and/or power consumption in a system that is based on the platform.
The characterization data describes data traffic-related, thermal and/or power changes in the platform. The data may specify how the temperature of a particular component changes, in response to inducing certain data traffic into that component or into a neighboring component. The characterization data may also provide an action list for a certain thermal reading, where the action list makes several suggestions for how to deal with, for example, an elevated temperature in a particular component (e.g., reduce a clock rate on a particular port, throttle the component, reduce the clock rate in a neighboring component, or other mechanism, in an attempt to avoid a catastrophic shutdown of the overheating component). Such characterization data may be derived by the OEM, at a manufacturer stage, by evaluating several instances of a system that is based on a platform. The same methodology may be applied to several different platforms used by the OEM, if the design parameters of their respective systems are essentially the same. The data may then be saved in a database to be later accessed by a driver for the platform, to manage thermal, acoustic, and/or power issues in a runtime environment of a system that is based on one of the platforms.
Advantageously, the driver may access the database and manage the system in which it is running, at an end user stage, and transparently to an end user and without notifying an application. The driver may access the data to keep temperature and/or power consumption in its system under control. For example, certain operating parameters of the system, such as an I/O port clock rate, may be reduced by command of the driver, in the runtime environment, and without requiring input from a user of the system.
According to another embodiment of the invention, referring now to
In a further embodiment of the invention, each driver may be able to obtain thermal readings, access the stored characterization data for the platform, and make adjustments to the operating parameters of its associated component, independently of the other drivers' actions. In other words, the drivers need not communicate with each other, or necessarily be aware of each other's thermal management actions.
In yet another embodiment of the invention, each driver 228 may automatically access the stored, thermal characterization data, and make adjustments to the operating parameters of its associated component, transparently to a user, at the end user stage. In other words, the driver need not be commanded by the user or by higher layer software, to make the adjustments. In the runtime environment, the driver may, for example, obtain some thermal reading from a component, and may then look up the thermal reading in the characterization database, and will be presented with the action list which includes one or more suggestions for managing the thermal situation. These may include, for example, increasing a clock rate if the thermal reading suggests that sufficient heat has been dissipated, or reducing a clock rate on a particular port if the reading indicates that the component is cooling down.
Turning now to
Turning now to
The components of the system shown in
The user interface framework 408 may communicate with a stress application assisting dynamic link library (DLL) 410 that provides programming for the functions that display the collected data or control which components of the system are to be stressed. One or more platform stress generation binary images 408 are also provided, in this example at Ring 3, to generate the needed data patterns for stressing the various components of the system. The stress application may apply the binary image to generate stress traffic in any one of a number of hardware components of the system, including, for example, the ICH 420, GMCH 418, or DRAM 416. The stress traffic may be applied to the components, one component at a time. That is because thermal effects likely exhibit linear behavior, so that stressing components one at a time and using a linear combination of the collected data provides more flexibility in determining characterization data.
The stress application communicates with policy managers 424 that are in the operating system, where the policy managers 424 report to the application the occurrence of thermal events such as overheating, or power consumption events such as a voltage of a rechargeable battery of the system being too low. The policy managers 424 may themselves respond to such events by, for example, shutting down certain components of the system to avoid overheating or to avoid catastrophic failure (e.g., shutdown a display screen, write the contents of memory to non-volatile mass storage, prior to shutting down the entire system, etc.)
In this embodiment, the application collects the TAP data through the use of the driver, and in particular by invoking the functions of a participant driver interface 412. The participant driver interface 412 in turn may invoke an interface of an operating system kernel 422, to achieve its data collection mission. The participant driver interface 412 may also be assisted by conventional, operating system policy manager monitor 414, for purposes of monitoring certain hardware events. The participant driver interface may become part of, for example, the API of an operating system such as Mircosoft™ Windows.
Once the raw data has been collected in this manner, the application may apply certain algorithms or other techniques for analyzing the data to derive the characterization data, including, for example, thermal relationships between components and relationships between the temperature of a component and the rate of data traffic through that component. In one instance, the derived characterization data is stored as part of the ACPI name space which is accessible by all drivers.
An embodiment of the invention is a machine readable medium having stored thereon instructions which program one or more processors to perform some of the operations described above, e.g. dynamic, thermal management by a driver. In other embodiments, some of these operations might be performed by specific hardware components that contain hardwired logic. Those operations might alternatively be performed by any combination of programmed computer components and custom hardware components.
A machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer), not limited to Compact Disc Read-Only Memory (CD-ROMs), Read-Only Memory (ROMs), Random Access Memory (RAM), Erasable Programmable Read-Only Memory (EPROM), magnetic rotating disks, and a transmission over the Internet.
The invention is not limited to the specific embodiments described above. For example, the techniques described in