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

  • formulav8 - Monday, February 13, 2006 - link

    Performance Monitor is built into windows. Goto Start/Settings and then Admin Tools and load the Performance application. That is what Anand is using.


    Jason

Log in

Don't have an account? Sign up now