Race to idle of sleep is allang een mythe. Enkel als het
statisch verbruik van een systeem erg hoog is maakt dit veel uit. Je kan een simpele rekensom doen:
Stel we nemen een "ouderwetse" CPU met:
- Sleep mode: P
CPU=10W
- f = 1GHz hebben we P
CPU=150W
- f = 2GHz hebben we P
CPU=250W
In dit geval is het systeem "sleep" van 10W bedoeld voor zaken als RAM geheugen. Zodra een CPU core actief wordt, wordt deze gepower-gate, en komt er 40W bij het verbruik bij. Het verbruik per GHz is 100W en in dit voorbeeld nog lineair (oudere CPU generatie waarbij het process niet zo ver werd gepushed).
Al moeten we kiezen voor een frequentie die de minste energie verbruikt voor een bepaalde taak, kunnen we dat doen met 1GHz of 2GHz. Op 1GHz duurt de taak twee keer zo lang. We hebben dan bijvoorbeeld:
- E
1G = 10 * (T - 2*d) + 150 * 2*d
- E
2G = 10 * (T - d) + 250 * d
Waarbij T het interval is waarbij de taak wordt afgevuurd, en d is de duty cycle of rekentijd van de taak op 2GHz. Stel we pakken een duty cycle van 10% (6s) over T=60s, waarbij er dus genoeg tijd is om langer over de taak te doen, dan hebben we:
- E
1G = 10 * (60 - 12) + 150 * 12 = 2280J
- E
2G = 10 * (60 - 6) + 250 * 6 = 2040J
Hoera! Race-to-idle werkt
Nu voor een moderne CPU. Op basis van T.net review,
kitguru en
arstechnica kan je rekenen. We hebben dan:
- Sleep mode: P
CPU=9.13W
- f = 5.12GHz hebben we P
CPU=170W
- f = 3.90GHz hebben we P
CPU=88W
Aangenomen dat IPC hetzelfde blijft voor hogere frequenties (wat ongetwijfeld niet zo zal zijn wegens DRAM en cache latency die onafhankelijk kunnen zijn van de core clock), kan je stellen dat de CPU op 3.9GHz ~80% van de prestaties haalt t.o.v. 5.12GHz.
Als we een taak nemen die 6s kost op 5.12GHz, dan kost dat dus 7.5s op 3.9GHz. De verbruikte energie is dan:
- E
3.9G = 9.13 * (60 - 7.5) + 88 * 7.5 = 1139J
- E
5.1G = 9.13 * (60 - 6) + 170 * 6 = 1513J
Voor deze CPU is 5.1GHz een stuk onzuiniger, ondanks dat het idle verbruik bijna 50% van de 1139J bedraagd (het actieve verbruik is 46% zuiniger!). Wil je efficientie prestaties, dan is het totaal onredelijk om de CPU op 5.1GHz te laten turbo'en. Daargegeven.. het is een desktop en voor sommige taken wil je graag wel die 1.5s minder wachten op een taak (omdat dit midden in een storende aandachtsspanne zit).
Maar er zijn ook genoeg situaties te bedenken waar het niet uitmaakt of waarbij het overbodig is, bijvoorbeeld als een taak op de achtergrond door mag lopen. In laptops, waarbij het verbruik van stroom wel een beperkende factor is omtrent koeling, zie je al wel dat er slim wordt geschoven tussen CPU en GPU power. Eigenlijk zou ik op desktops dat ook willen zien; bijvoorbeeld een driver waarbij de applicatie (een spel bijvoorbeeld) kan aangeven hoeveel
slack (om een jargonterm uit digital design te lenen) er in de berekentijd zit, zodat de CPU dynamisch z'n frequentie kan terugschalen.
[Reactie gewijzigd door Hans1990 op 23 juli 2024 00:12]