Starting at the Beginning

It wasn't too long ago that power consumption was hardly discussed, but these days, you can't have a technical discussion about microprocessors without mentioning it as a design consideration.  Mobile CPUs in particular have had to be power-conscious for a pretty long time, thanks to a desire for longer battery life and smaller form factors.  But with power consumption, noise and heat dissipation all becoming major issues on the desktop, we are seeing many mobile technologies make their way into desktop CPUs. 

The primary goal of a mobile CPU is no different than a desktop CPU, and that is to get its work done as quickly as possible.  However, a very important secondary goal of the mobile CPU is to strive to be at the lowest power state possible while getting that work done.  The Dothan core used in the 90nm Pentium M processor had a choice of five operating states:
C0 - full power
C1 - auto halt
C2 - stop clock
C3 - sleep
C4 - deep sleep
As you can guess, the higher the C number, the lower the power consumption.  Switching between these states is completely seamless to the end user because the switching occurs in a number of CPU clocks (nanoseconds).  With each processor generation, the CPU designers attempt, as best as possible, to get the CPU to stay in the lowest C-state more than it could previously.  That means making the processor faster so that it can complete its tasks quicker, and thus get to those lower C states faster than before. 

With Core Duo, Intel introduced a sixth operating state: deep C4, or a deeper sleep state.  Intel made some serious improvements to the core to allow it to not only get to lower C-states more often, but to reduce power even more at these lower C-states.  We talked about this briefly in our series of articles on the Core Duo processor, documenting how Intel not only brought forth a dual core mobile processor, but also optimized the performance and power consumption of each individual core. 

If you ran any mobile CPU in its full power (C0) state constantly, never allowing it to transition to lower states, you would wreak havoc on your notebook's battery life.  While not quite this extreme, the USB 2.0 battery life issue involves a similar concept. 

Microsoft describes the USB 2.0 issue as follows:
"Windows XP SP2 installs a USB 2.0 driver that initializes any connected USB device. However, the USB 2.0 driver leaves the asynchronous scheduler component continuously running. This problem causes continuous instances of memory access that prevent the computer from entering the deeper Advanced Configuration and Power Interface (ACPI) processor idle sleep states. These processor idle sleep states are also known as C states. For example, these include the C3 and C4 states. These sleep states are designed, in part, to save battery power. If an otherwise idle portable computer cannot enter or maintain the processor idle sleep states, the computer uses its battery power more quickly than you expect."
Basically, if you have a USB 2.0 device plugged in to a computer running Windows XP SP2, your processor will not be able to enter lower power states (e.g. C3, C4 or Deep C4 in the case of Core Duo).  The problem is that if a very power-efficient CPU is prevented from going into its C3 or C4 states, then it's consuming a lot more power than it needs to be.  It's particularly bad because the problem could exist just by having any USB 2.0 device plugged in, even if you're not using the device.

Keep in mind that Microsoft's description of the issue does not place the blame on Intel's Core Duo processor, and instead, implies that it would exist on all platforms regardless of CPU.  Later on in this article, we'll attempt to find out whether this is indeed a universal problem or something that only really impacts Core Duo. 

It is also important to note that the problem appears limited to USB 2.0 devices under Windows XP SP2 and not USB 1.x devices or USB 2.0 devices under other operating systems.  There are some USB 2.0 devices that can avoid the problem; in order for a device to be immune to this problem, it must support a power management mode called Selective Suspend, which allows the OS to put the device to sleep until it's needed.  The vast majority of devices don't seem to support Selective Suspend, and although some USB hubs apparently do, we weren't able to get our hands on any in time for this article. 

Index The Fix
Comments Locked

61 Comments

View All Comments

  • krwilsonn - Wednesday, February 15, 2006 - link

    I just read their new article and apparently they were tipped off by some "insider" about the problem and then went ahead and "discovered" and published it. That is what it says at the end of their article, anyway. Their forum thread that is linked has some comments from an editor or someone that are also interesting. I'm sure everyone is checking it out but for those that haven't you should for the sheer humor of it.
  • mino - Tuesday, February 14, 2006 - link

    1.) Installed new hp6220 custom configured an hour ago.
    Platform i915G - Sonoma

    Provided Perfmon detects C3 correctly (showing curve around 98% at idle) this system may not bee affected.

    I've installed HP's "System Enhancements Disk" package, so some workaround by HP may have been included. (the regfix is not present)

    However I have no way to prove Perfmon is correct.

    2.) nx6125 I've upgraded from home to Pro last week so it is HP install just a little sripped one

    the system spend around 96% of its time at idle in C1, seems wierd to me. No time is spent in C3 also. Maybe somne HP stuff keep the CPU busy.

    Both systems are used with Bluetooth mouse via an integrated adapter.
  • mino - Tuesday, February 14, 2006 - link

    Just now I observed on nx6125 that the moment Intellimouse Explorer for Bluetooth goes into power save mode (after ~1 minute of inactivity) Turion goes from 96% in C1 to 96% in C2.
    Strange as it may seem nothing like this happens on Sonoma platform. I sense ATI SB400 does have something say about it.

    Another thing is that the moment CPU starts using C2 intensively, the idle power consumption goes from ~15.6W to 13.2W which is pretty serious amount of power wasted.


    Anand, I suggest you do not waste your time by testing battery life when you revisit this issue, to prove assumptions you may use Perfmon's Battery Drain counter.

    HMM, funny is, the nc6220 does not show the battery counter present in Perfmon.
  • mino - Tuesday, February 14, 2006 - link

    WE MISS EDIT !

    sripped == stripped

    ;D
  • artifex - Tuesday, February 14, 2006 - link

    as soon as you get an MBP in for testing :)
  • zsouthboy - Tuesday, February 14, 2006 - link

    Not that its as big a deal for desktops, but mine seems to be doing the same thing when my USB 2.0 mouse/kb is plugged in...

  • krwilsonn - Tuesday, February 14, 2006 - link

    Are you being serious??
  • kmmatney - Tuesday, February 14, 2006 - link

    Yeah, I've noticed my Prescott's been running a little hot as well. Damn USB 2.0!
  • blwest - Tuesday, February 14, 2006 - link

    Yay, yet another "feature". If you run Microsoft Winders, we gurantee shorter battery life.
  • dualathlon - Tuesday, February 14, 2006 - link

    Hi, i own an dell inspiron 9300, pen M 760, geforce 6800go. When i enable that registry key, i experience heavy pointer delay when playing Counter Strike Source. I tried both logitech mx510 (wired) and logitech mx900 (bluetooth wireless, paired with dell internal BT and logitech hub as well).

    I see no delay in office apps, FYI. I haven't test battery life with that key though.

Log in

Don't have an account? Sign up now