Embodiments of the invention pertain to energy efficiency and energy conservation in integrated circuits, as well as code to execute thereon, and in particular but not exclusively, to run time programmability of various power management parameters.
Advances in semiconductor processing and logic design have permitted an increase in the amount of logic that may be present on integrated circuit devices. As a result, computer system configurations have evolved from a single or multiple integrated circuits in a system to multiple hardware threads, multiple cores, multiple devices, and/or complete systems on individual integrated circuits. Additionally, as the density of integrated circuits has grown, the power requirements for computing systems (from embedded systems to servers) have also escalated. Furthermore, software inefficiencies, and its requirements of hardware, have also caused an increase in computing device energy consumption. In fact, some studies indicate that computing devices consume a sizeable percentage of the entire electricity supply for a country, such as the United States of America. As a result, there is a vital need for energy efficiency and conservation associated with integrated circuits. These needs will increase as servers, desktop computers, notebooks, ultrabooks, tablets, mobile phones, processors, embedded systems, etc. become even more prevalent (from inclusion in the typical computer, automobiles, and televisions to biotechnology).
As general background, controlling power consumption in microprocessors and other integrated circuit devices has increased in importance, especially with the greater use of mobile devices. Some prior art techniques for managing processor power consumption have not adequately provided a dynamic scheme for setting various power management parameters relied upon by an integrated circuit device, such as a processor. The lack of a dynamic setting scheme for various power management parameters, other than the Thermal Design Power (TDP) parameter, not only lessens the actual power savings realized, but also restricts the ability of Original Equipment Manufacturers (OEMs) to design products that can temporarily operate outside specifications established by the processor manufacturer, such as Intel Corporation of Santa Clara, Calif.
The invention may best be understood by referring to the following description and accompanying drawings that are used to illustrate embodiments of the invention.
Herein, certain embodiments of the invention relate to an integrated circuit device adapted to dynamically monitor and adjust parameters relied upon for power management during run time of an electronic device implemented with the integrated circuit, namely after Basic Input Output System (BIOS) has completed and the operating system (OS) is in control of the electronic device. These power management parameters may include, but are not limited or restricted to (1) a parameter (Iccmax) representing a maximum current level that can be used by the integrated circuit device in a certain operating mode, (2) a parameter accounting for dynamic changes in load line impedance (Load_Line) as detected by logic within the electronic device, and (3) a parameter (Max_Ratio) setting an overclocking condition optionally accompanied with an application of additional voltage. Through compliance with these dynamically adjustable power management parameters for a processor, for example, power conservation may be realized.
A corresponding method for dynamically adjusting power management parameters and an electronic device implementing such integrated circuit devices is also described herein.
In the following description, certain terminology is used to describe certain features of the invention. For example, the term “integrated circuit device” generally refers to any integrated circuit or collection of integrated circuits that are adapted to control its performance, and thus its power usage, using one or more power management parameters that are dynamically adjustable during run time. The power management parameters (e.g., maximum current level, maximum ratio for overclocking, etc.) are set through the use of storage elements that are software accessible, such as machine specific registers (MSRs) for example. For instance, the maximum current level may be set through the use of PP0_CURRENT_CONFIG and PP1_CURRENT_CONFIG registers described below. Examples of an integrated circuit device may include, but are not limited or restricted to a processor (e.g. a single or multi-core microprocessor, a digital signal processor “DSP”, or any special-purpose processor such as a network processor, co-processor, graphics processor, embedded processor), a microcontroller, an application specific integrated circuit (ASIC), a memory controller, an input/output (I/O) controller, or the like.
Furthermore, the term “logic” constitutes hardware and/or software. As hardware, logic may include processing circuitry (e.g., a controller, processor, an application specific integrated circuit, etc.), semiconductor memory, combinatorial logic, or the like. As software, the logic may be one or more software modules, such as executable code in the form of an executable application, an application programming interface (API), a subroutine, a function, a procedure, an object method/implementation, an applet, a servlet, a routine, a source code, an object code, firmware, a shared library/dynamic load library, or one or more instructions.
It is contemplated that these software modules may be stored in any type of suitable non-transitory storage medium or transitory computer-readable transmission medium. Examples of non-transitory storage medium may include, but are not limited or restricted to a programmable circuit; a semiconductor memory such as a volatile memory such as random access memory “RAM,” or non-volatile memory such as read-only memory, power-backed RAM, flash memory, phase-change memory or the like; a hard disk drive; an optical disc drive; or any connector for receiving a portable memory device such as a Universal Serial Bus “USB” flash drive. Examples of transitory storage medium may include, but are not limited or restricted to electrical, optical, acoustical or other form of propagated signals such as carrier waves, infrared signals, and digital signals.
The term “interconnect” is broadly defined as a logical or physical communication path for information. This interconnect may be established using any communication medium such as a wired physical medium (e.g., a bus, one or more electrical wires, trace, cable, etc.) or a wireless medium (e.g., air in combination with wireless signaling technology).
Lastly, the terms “or” and “and/or” as used herein are to be interpreted as inclusive or meaning any one or any combination. Therefore, the phrases “A, B or C” and “A, B and/or C” mean any of the following: A; B; C; A and B; A and C; B and C; A, B and C. An exception to this definition will occur only when a combination of elements, functions, steps or acts are in some way inherently mutually exclusive.
I. System Architecture
Referring now to
As will become readily apparent in the description below, the embodiments of methods, electronic devices, and systems described herein (whether in reference to hardware, firmware, software, or a combination thereof) are vital to a ‘green technology’ future, such as for power conservation and energy efficiency in products that encompass a large portion of the US economy.
As shown in
Referring still to
Other features include a power button 150 for powering on/off electronic device and speakers 1601 and 1602 disposed on top surface 112 of housing 110. At a side surface 114 of housing 110 is provided a connector 170 for downloading or uploading information (and/or applying power). According to one embodiment, connector 170 is a Universal Serial Bus (USB) connector although another type of connector may be used.
As an optional feature, another side surface of electronic device 100 may be provided with high-definition multimedia interface (HDMI) terminal which support the HDMI standard, a DVI terminal or an RGB terminal (not shown). The HDMI terminal and DVI terminal are used in order to receive or output digital video signals with an external device.
Referring now to
Herein, processor 200 comprises an integrated memory controller (not shown), and thus, is coupled to memory 220 (e.g., non-volatile or volatile memory such as a random access memory “RAM”). Furthermore, processor 200 is coupled to a chipset 230 (e.g., Platform Control Hub “PCH”) which may be adapted to control interaction between processor(s) 200 and 210 and memory 220 and incorporates functionality for communicating with a display device 240 (e.g., integrated LCD) and peripheral devices 250 (e.g., input device 140 of
Referring now to
First processor 310 may further include an integrated memory controller hub (IMC) 340 and P-P circuits 350 and 352. Similarly, second processor 320 may include an IMC 342 and P-P circuits 354 and 356. Processors 310 and 320 may exchange data via a point-to-point (P-P) interface 360 using P-P circuits 352 and 354. As further shown in
Processors 310 and 320 may each exchange data with a chipset 380 via interfaces 390 and 392 using P-P circuits 350, 382, 356 and 384. Chipset 380 may be coupled to a first bus 395 via an interface 386. In one embodiment, first bus 395 may be a Peripheral Component Interconnect Express (PCI-e) bus or another third generation I/O interconnect bus, although the scope of the present invention is not so limited.
Referring to
Herein, a control unit 430, referred to herein the “system agent” (SA), is implemented on first power plane 420. System agent 430 is responsible for adjusting frequency and voltage applied to power planes 440 and 460. Moreover, system agent 430 is responsible for adjusting the power management parameters as described below.
As further shown in
Herein, MSRs 450 are on-chip storage elements that are programmed to store values that represent limits, impedances, multipliers, or other information that is accessible by SA 430 for power management of integrated circuit device 400. MSRs 450 may be implemented on second power plane 440 as shown. However, it is contemplated that MSRs 450 may be implemented on power planes 420 or 460 such as part of a Power Control Unit (PCU) within SA 430.
As shown, a first MSR 451 may include a value (Iccmax) 480 that provides SA 430 with the maximum amount of instantaneous current for a particular power plane as shown in
As shown in
As shown in
Referring back to
In accordance with one embodiment of the invention, the adjustment of the power management parameters is managed by specific logic within system agent 430, namely a Power Control Unit (PCU) 500. A hybrid of hardware and firmware, PCU 500 is effectively a controller that manages all of the power management associated with integrated circuit device 400. Of course, in lieu of PCU 500, power management may be accomplished through an embedded controller within integrated circuit device 400, an off-die controller (e.g., controller within the same multi-chip package, on the same circuit board, etc.), or other types of logic.
II. Power Management of the Integrated Circuit Device
Referring now to
PCU 500 further includes hardware state machines 530 that control the transitioning in frequency (and voltage) for power planes 440 and 460.
According to one embodiment of the invention, as shown in
Referring now to
More specifically, current estimation unit 600 of PCU 500 actively or passively monitors parameters 610 that are used to estimate an amount of current utilized by the integrated circuit device. For example, according to one embodiment of the invention, values as measured by sensors or contained within MSRs are input into current estimation unit 600.
According to this embodiment of the invention, as illustrated in
Regardless, estimated current (Iest) 620 is input into a current limiting unit 630. Current limiting unit 630 is adapted to compare Iest 620 to a current limit 640, which is accessible by P-code 520 from a MSR. As an illustrative example, a storage element 650 may be adapted to store a value that represents a maximum current. For instance, PP0_CURRENT_CONFIG MSR may be adapted to identify a maximum instantaneous current (Iccmax) for the power rail utilized by processor core(s) 4101, . . . , and/or 410N within power plane 440. Iccmax) is represented by bits [2:0] of PP0_CURRENT_CONFIG MSR as shown in
Thereafter, during run time, Current Limiting unit 630 compares the estimated current to Iccmax in order to determine if the estimated current is equal to or falls below Iccmax. If the estimated current is equal to or falls below Iccmax, then the proposed current usage is sustainable and the operating frequency corresponding to this current usage level is permitted. However, if the estimated current is greater than Iccmax, PCU 500 reduces the current, which reduces the operating frequency and corresponding voltage (P-State) of a particular compute engine, such as one of the processor cores 4101-410N of
Referring now to
Referring now to
Referring to
Referring now to
During run time of the integrated circuit device, perhaps in response to a change in condition of the integrated circuit device 400 of
Thereafter, the estimated current level is compared to Iccmax (block 1020). Where Iccmax is associated with amperage greater than the estimated current level, the current level can be supported by the integrated circuit (blocks 1030 and 1040). Thus, no current adjustment is needed at this time and the integrated circuit device can operate at its existing operating frequency. Otherwise, the current is reduced which effectively reduces the operating frequency of the integrated circuit (blocks 1030 and 1050).
Referring to
First, according to one embodiment of the invention, an impedance of the load line is calculated (block 1100). For instance, as an illustrative embodiment of the invention, this impedance may be computed by circuitry within the electronic device (e.g., applying a constant current and measuring the voltage at each end of the load line). Once this impedance is determined, a value (Load_Line), which represents the estimated load line impedance, is stored in an accessible register (block 1110). For instance, Load_Line for the processor power plane may be stored within a particular storage element (e.g. bits [7:0] of PRIMARY_PLANE_LLR_CONFIG_CONTROL MSR). As an example, Load_Line may represent an impedance ranging anywhere from 0-10 milliohms (mΩ) Likewise, Load_Line for the graphics power plane may be stored in another software-accessible storage element (e.g. bits [7:0] of SECONDARY_PLANE_LLR_CONFIG_CONTROL MSR) which represents an impedance ranging anywhere from 0-10 mΩ.
Next, as shown, in response to an event during run time (e.g., action, received signaling, elapsed time, etc.) which may occur periodically or randomly, firmware accesses Load_Line (blocks 1120 and 1130). Thereafter, as shown in block 1140, Load_Line is used to determine the amount of voltage drop caused by the load line between the integrated circuit device (e.g., processor 400 of
In general terms, the processor reads load line impedance (Load_Line) and using Load_Line to calculate a voltage drop over the load line. Thereafter, the amount of requested voltage compensates for the calculated voltage drop.
As shown in
According to this embodiment of the invention, as illustrated in
Referring now to
In general, for run-time overclocking, the firmware (e.g., P-code) samples overclocking configuration including maximum ratios and extra voltage (block 1200). Thereafter, the firmware adjusts voltage/frequency tables and limits to account for a new overclocking range (block 1210). The firmware then updates the target ratio/voltage to run processor at new overclocking frequencies (block 1220).
More specifically, when permitted, firmware samples the Max_Ratio 490 of
The aforementioned discussion provided various implementation details for a mechanism that permits changes during run-time to various constraints (e.g., current limit, load line and overclocking) that are utilized by a power control unit (PCU) that determines appropriate clock frequency, clock gating and supply voltage values in view of the constraints.
Upon power on/reset the lock bit 1302 is cleared and BIOS firmware subsequently looks to see if the configuration settings for the system permit run time changes to PCU constraints 1303. Here, as the ability to change power management constraint settings during run time may result in settings that exceed a processing core's “guarantees” (that is, the settings cause the processor to behave unreliably), some system designers may wish to disable the ability to change power constraints during run time. Such system designers may therefore, for example, set a field in firmware that indicates that the ability to change constraints during run time is to be disabled.
BIOS firmware looks to this field 1303, and, if the field indicates that run time setting changes are to be disabled 1304, BIOS sets the appropriate lock bit(s) in MSR register space 1305. Once a lock bit is set, changes to the power control unit constraint are not permitted until after another resent event occurs. This prevents software to change a constraint setting during runtime.
As observed with the multiple respective lock bits of
In another embodiment (not shown) a global lock bit is provided in MSR register space that has the same effect as setting a lock bit for each constraint parameter that can be changed (e.g., setting each of the current limit, load line and overclocking lock bits). As such, setting the global lock bit prevents software from changing any PCU constraint during run time. Some implementations may choose to have only a global lock bit without fine grained lock bits for each settable constraint, or, have the global lock bit along with the fine grained lock bits in MSR space.
The device driver 1401 also has an interface 1404 that is made available to application software 1405 that runs on the OS 1403. The interface 1404, in an embodiment, provides functions that the application software 1405 can call on to control the PCU constraints explicitly. For example, in an embodiment where the constraints include current limit, load line, over clocking and over clocking voltage, the interface supports: 1) a read current limit constraint function; 2) a read load line constraint function; 3) a read over clocking constraint function; 4) a read over clocking voltage function; 5) a write current limit constraint function; 6) a write load line constraint function; 7) a write over clocking constraint function; 8) a write over clocking voltage function.
In this example, application software 1405 can call eight different functions through interface 1404 each of which cause, as a direct consequence of the call, the corresponding MSR register space to be accessed. When write functions are called, application software 1405, rather than OS software, controls the run time changes made to the PCU constraints of the system.
According to one approach, application software 1405 include or is associated with a Graphical User Interface (GUI) 1406 that permits a user to explicitly specify a constraint. That is, for example, the user of the system can specify a particular overclocking ratio and/or a particular over clocking supply voltage and have the new settings take effect during runtime without OS shut down, CPU reset, reboot, etc. Moreover, these settings may exceed the underlying processor core's or cores' guaranteed ratings. For certain applications, such as gaming applications, the fall off in processor reliability in exchange for the increase in performance is deemed acceptable to permit operation beyond a processor's guaranteed ratings.
The device also permits other new usage cases, such as, power management control at the application layer. That is, user application software (instead of embedded OS functions) controls system power consumption through interface 1404. Here, application software 1405 may correspond to application software that is designed to provide a GUI 1406 that permits the user to specify specific power consumption targets and/or specific constraint values for the PCU as a function of system usage. For example, the user can specify a first consumption target or set of constraints when the system is running a first combination of applications (or a specific application) and a second set of targets/constraints when the system is running a second combination of applications (or specific application).
In the preceding examples, explicit reference was made to current limit, load line, over clocking and voltage over clocking PCU constraints. It should be understood that other embodiments may also include other kinds of constraints such as any one or more of: maxim turbo ratio per active processing core; graphics core ratio; graphics core voltage, specific power consumption limits, etc.).
While the invention has been described in terms of several embodiments, the invention should not limited to only those embodiments described, but can be practiced with modification and alteration within the spirit and scope of the appended claims. The description is thus to be regarded as illustrative instead of limiting.
The present patent application is a continuation application claiming priority from U.S. patent application Ser. No. 13/843,405, filed Mar. 15, 2013 and titled: “System, Method and Apparatus For Energy Efficiency And Energy Conservation By Configuring Power Management Parameters During Run Time”, which claims the benefit of U.S. Provisional Patent Application No. 61/635,817, filed Apr. 19, 2012 and titled: “System, Method and Apparatus For Energy Efficiency And Energy Conservation By Configuring Power Management Parameters During Run Time”, both of which are incorporated herein by reference in their entirety.
Number | Name | Date | Kind |
---|---|---|---|
5634131 | Matter et al. | May 1997 | A |
7219252 | Li | May 2007 | B1 |
7382366 | Klock | Jun 2008 | B1 |
9360909 | Wells | Jun 2016 | B2 |
20050192788 | Hobson | Sep 2005 | A1 |
20090228222 | Fantoni | Sep 2009 | A1 |
20090235108 | Gold et al. | Sep 2009 | A1 |
20090256546 | Wu et al. | Oct 2009 | A1 |
20100115304 | Finkelstein et al. | May 2010 | A1 |
20100117579 | Culbert et al. | May 2010 | A1 |
20100122008 | Goss et al. | May 2010 | A1 |
20100153761 | Nishioka | Jun 2010 | A1 |
20100223489 | Huang et al. | Sep 2010 | A1 |
20100281284 | Kasprazak et al. | Nov 2010 | A1 |
20110241628 | Chen | Jan 2011 | A1 |
20110047396 | Kawamoto et al. | Feb 2011 | A1 |
20110153924 | Vash et al. | Jun 2011 | A1 |
20110161706 | Huang et al. | Jun 2011 | A1 |
20110258477 | Baker et al. | Oct 2011 | A1 |
20120110352 | Branover et al. | May 2012 | A1 |
20120216058 | Wells et al. | Aug 2012 | A1 |
20130061064 | Ananthakrishnan et al. | Mar 2013 | A1 |
Number | Date | Country |
---|---|---|
1877492 | Dec 2006 | CN |
101923383 | Dec 2010 | CN |
0676686 | Oct 1995 | EP |
10-2009-0084255 | Aug 2009 | KR |
M412423 | Sep 2011 | TW |
201133228 | Oct 2011 | TW |
Entry |
---|
Office action from U.S. Appl. No. 13/335,635, dated Aug. 14, 2015, 18 pages. |
Final Office action from U.S. Appl. No. 13/335,635, dated Jan. 5, 2016, 17 pages. |
Office action with English translation from Chinese Patent Application No. 201280063842.0, dated Nov. 18, 2015, 23 pages. |
Mohr, Neil, “Best Overclocking Software: 15 Top Apps”, www.techradar.com, Oct. 6, 2010 TechRadar, pp. 1-26. |
Office action from U.S. Appl. No. 13/335,635, dated Jun. 17, 2014, 16 pages. |
Final Office action from U.S. Appl. No. 13/335,635, dated Jan. 13, 2015, 18 pages. |
Office action and Search Report with English translation from Taiwan Patent Application No. 101147198, dated Aug. 7, 2014, 16 pages. |
Office action with English translation from Taiwan Patent Application No. 101147198, dated Apr. 22, 2015, 24 pages. |
PCT/US2012/068270 Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, dated Apr. 1, 2013, 10 pages. |
PCT/US2012/068270 Notification Concerning Transmittal of International Preliminary Report on Patentabiliy, dated Jul. 3, 2014, 7 pages. |
Dobrowolski, Daniel, “Intel DX58SO2 LGA 1366 X58 Motherboard Review”, Mar. 28, 2011, HARDOCP, pp. 1-26. |
Number | Date | Country | |
---|---|---|---|
20160282919 A1 | Sep 2016 | US |
Number | Date | Country | |
---|---|---|---|
61635817 | Apr 2012 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13843405 | Mar 2013 | US |
Child | 15174779 | US |