C-states: zuinigere CPU idle states uitgelegd

Inhoudsopgave
  1. 1. Inleiding
  2. 2. Core en package
  3. 3. USB 3.1 en storage
  4. 4. Testmethode
  5. 5. Testresultaten: USB 3.0/3.1
  6. 6. Testresultaten: SATA600/M.2
  7. 7. Testresultaten: CPU/GPU
  8. 8. Testresultaten: Geheugen
  9. 9. Testresultaten: Stroomverbruik
  10. 10. Testresultaten
  11. 11. Analyse
  12. 12. Conclusie

Core en package

Hoe werken C-states nu precies? Hoewel er in de oorspronkelijke ACPI-specificatie voor stroombesparing alleen maar C1 tot en met C3 is opgenomen, hebben processorfabrikanten (met name Intel) daar de nodige C-states aan toegevoegd. Tegenwoordig zijn er C-states tot en met C10, hoewel C9 en C10 vooralsnog alleen maar in laptops voorkomen. In deze review beperken we ons tot maximaal C8, omdat dat alles is wat desktops ondersteunen.

Daarnaast bestaat er nog een onderscheid tussen ‘Core’ en ‘Package’ C-states. De Core C-state is de staat van een individuele core (en de L1/L2-cache die hier direct aan verbonden is), terwijl de ‘Package’ C-state geldt voor de processor als geheel en daarom geldt voor de IGP, L3-cache en alle cores. De Core C-state kan dus hoger zijn dan die van de Package, en niet omgekeerd. Het geheel kan nooit een hogere C-state hebben dan een deel hiervan. In de afbeelding verderop in dit artikel kan je zien welke combinaties van C-states er mogelijk zijn.

MSI Z170A Gaming Pro Carbon
In de BIOS kun je de C-states instellen.

Hoe hoger de C-state waarin de processor zich bevindt, des te meer functies van de processor worden teruggeschaald of zelfs volledig uitgeschakeld. Dan hebben we het over de core, de L1/L2-cache en uiteindelijk zelfs de L3-cache. Minder activiteit betekent uiteraard ook dat hij minder stroom verbruikt. Echt simpel wordt het nooit, maar in de onderstaande tabel kan je zien welk effect de verschillende C-states precies hebben.

  Package Core
C0 Een van de cores of IGP voeren instructies uit Core voert instructies uit
C1 n.v.t. Core werkt niet, kloks gestopt
C1E n.v.t. Core werkt niet, kloks gestopt en voltage verlaagd
C3 Alle cores in C3, L3 naar geheugen, geheugen in self-refresh, sommige Uncore kloks gestopt, sommige Uncore voltages verminderd L1 en L2 gekopieerd naar L3, alle core kloks gestopt
C6 Alle cores in C6, alle Uncore kloks gestopt Core staat bewaard en VCore naar 0 V
C7 L3 uitgeschakeld, Uncore voltages verlaagd Idem.
C8 Meeste Uncore voltages naar 0V Idem.

Waarom is er sprake van prestatie-achteruitgang op het moment dat de C-states hoger zijn ingesteld? Deels is dit omdat het tijd kost om de processor uit de C-state te halen. In dat geval is er dus sprake van meer latency. Ook kost het energie om de processor in en uit de C-state te brengen (en hoe hoger de C-state, des te meer hiervan sprake is). Tegelijkertijd zijn C-states actief op een heel ‘diep’ niveau. Het is zeker niet zo dat ze alleen maar geactiveerd worden op het moment dat het systeem idle is. Ze zijn altijd actief, waardoor naast de latency ook de constante prestaties nadeel ondervinden.

Advertentie
0