From WikiChip
Editing acpi/c-states

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

This page supports semantic in-text annotations (e.g. "[[Is specified as::World Heritage Site]]") to build structured and queryable content provided by Semantic MediaWiki. For a comprehensive description on how to use annotations or the #ask parser function, please have a look at the getting started, in-text annotation, or inline queries help pages.

Latest revision Your text
Line 1: Line 1:
{{acpi title|C-states}}
+
{{x86 title|C-states}}
'''C-states''' are the [[idle state]] [[ACPI]] policies that govern a microprocessor - i.e. states that shut down parts of the microprocessor when [[physical core|cores]] are not used. Modern [[microprocessors]] have several C-states representing an increasingly larger part of the processor that's being shut down. Additionally because new MPUs are also [[multi-core]], most recent microarchitectures include two C-states: core-based C-states called '''CC-states''' and a package-based C-states called '''PC-states'''.
+
'''C-states''' are the [[idle state]] policies that govern an [[x86]] system - i.e. states that shut down parts of the microprocessor when [[cores]] are not used. Modern x86 [[microprocessors]] have several C-states representing an increasingly larger part of the processor that's being shut down. Additionally because x86 MPUs are also exclusively [[multi-core]], most recent microarchitectures include two C-states: core-based C-states called '''CC-states''' and a package-based C-states called '''PC-states'''.
 
 
== Overview ==
 
As with everything in life, the microprocessor doesn't experience consistent heavy workload at all times. In fact, more often than not, for the typical user, the microprocessor ends up executing very little if nothing at all. An '''idle CPU''' is a CPU that doesn't do any useful work. Much like when you shut the lights when you leave a room, since the CPU is not doing any useful work it can be momentarily turned off.
 
 
 
Because of the complexity of modern microprocessors - incorporating [[multi-core microprocessor|multiple]] [[physical core|cores]], [[caches]], and other components, there are multiple C-states depending on which part of the system is talked about. In practice there are usually 3 general C-states:
 
 
 
* '''CC-states''' - a set of idle states provided by the hardware controlling the idle states of a physical core.
 
* '''PC-states''' - a set of idle states provided by the hardware controlling the idle states of the entire package. This also covers various shared resources.
 
* '''OS C-state''' - a set of logical idle states provided by the [[operating system]] to the [[application software]]. Those states are logical c-state and may be anything the OS wants them to be.
 
 
 
Modern microprocessors have several C-states representing an increasingly larger part of the processor that's being shut down. More power savings actions are taken for higher C-states. '''CC-states''' are concerned with the idle state of an individual core. For example a CC-state of CC0 is your operational state, under this state the CPU is not idle and is actually busy doing useful work. This first state can be thought of as a idle state off state. A CC-state of CC1 is the first real idle state. Under this state, the core clock is gated, effectively shutting down the core's operation. A higher CC-state such as CC2 shuts down additional components such as the external I/O controller, blocking interrupts. Other higher states exist. Note that some systems such as [[Intel]]'s [[x86]] processors that support {{intel|Hyper-Threading}}, thread-level C-states are also available. However, while individual threads can request higher C-states, any power saving actions are only taken once the core C-state (CC-state) is resolved. Core C-state is determined by the lowest thread state, i.e. <math>\text{CC-state} = \min(T_1, T_2, ..., T_n)</math>.
 
 
 
Because modern processors have multiple cores, it's possible for a [[dual-core]] processor to have one core at CC0 (doing busy work) while a second core is at CC2 doing nothing. '''PC-states''' relate the CC-states of the individual core to the state of the entire processor (i.e. the [[package]]). The processor may only enter a specific PC-state when all the components are ready for it to happen, i.e. <math>\text{PC-state} = \min(CC_1, CC_2, ..., CC_n)</math>. If we take our earlier scenario where a dual-core processor has one core at CC0 and a second core at CC2, because the first core is doing busy work we cannot enter PC2 as we cannot disrupt the operating of the working core.
 
 
 
 
 
[[File:various c-states.svg|450px]]
 
 
 
 
 
The '''OS C-states''' are entirely logical C-state. The OS vendors are free to define what an OS C-state correlates to as they see fit. On some operating systems such as [[Microsoft]] [[Windows]], the logical C-state is fairly  equivalent to the physical core's CC-state. This is usually the case for other [[operating systems]] but it's not a requirement.
 
 
 
== C-states ==
 
{{empty section}}
 
 
 
  
  
 
{{stub}}
 
{{stub}}

Please note that all contributions to WikiChip may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see WikiChip:Copyrights for details). Do not submit copyrighted work without permission!

Cancel | Editing help (opens in new window)

This page is a member of 1 hidden category: