The difference is in who controls it. S3 is external control. With only a very coarse interface for the software to manage states. So its either on or off.
Modern Sleep centralizes this management inside the CPU. Rails no longer will be powered off as part of sleeping, but the CPU may power down almost/basically as much, depending on which peripherals and parts are still kept active by software and needed.
This allows the OS to save slightly less power then S3, while still keeping peripherals and network active depending on the situation. If no peripheral is kept awake for additional functionality, the system can power down basically as much.
And because its integrated into the processor, you do not have cumbersome interfaces with BIOS/firmware during wakeup and putting to sleep that vastly increase the latency and limit the sources you can use for wakeup. In S3, BIOS/Board design controls if USB ports are powered or not. In Modern Standby, the OS does.
There were additional power modes modes defined, Intel calls them S0ix where the CPU powers down similarly to S3, if its not needed.
The ACPI bit that Windows uses to decide between S3 or Modern Standby, if the system reports both (11th gen and 12th gen do) is literally defined as
Column 1 |
Column 2 |
Column 3 |
Column 4 |
FACP - Flag |
Bit Length |
Bit Offset |
Description |
LOW_POWER_S0_IDLE_CAPABLE |
1 |
21 |
A one informs OSPM that the platform is able to achieve power savings in S0 similar to or better than those typically achieved in S3. In effect, when this bit is set it indicates that the system will achieve no power benefit by making a sleep transition to S3. |
What frequency? You realize that 99% of the CPU will be powered down and have its clock disabled during sleep either way?
There are just more intermediate states with Modern Standby, that are processor-managed to ensure entering sleep states quickly without large exit penalties.
The whole point was to give the OS granular control. So yes, it depends a lot on software. If linux consumes more, that is because Linux and its drivers are not powering down peripherals as much as they should. Like modern desktop distros still hard-disabling any USB sleep etc.
But we already had examples where FW13 AMD users saw less power consumption under Linux than under Windows.
Because current Linux desktop distros are not designed for Modern Standby with granular control. If the system receives a wake signal, the entire system will wake up, just like from S3, including powering on the screen. That is why for Linux most wake events are currently disabled.
This makes Linux miss the battery discharging or running empty.
Because the design intends for such small events, such as plugging devices, changing power state or whatever the OS wants to wake the OS, which can then decide if this was sth. the user needs to see and wants to interact with the device or just some background work.
Linux can do this perfectly fine on Android and other power saving mobile devices. Its just the current desktop architecture that is not smart enough for that decoupling of the processor and OS waking up and the user interface waking up. But on the other hand, its a deeper sleep in the meantime.
Windows seems to do that part pretty well unless some driver is unstable. But when it wakes up for such management reasons, it will also do some high level background work that takes it multiple seconds, that worsens the power consumption compared to current Linux systems, if the drivers can power manage on par with Windows.
Edit: to be clear, on a processor level, you cannot do more than just cutting power to everything unused. Power efficiency is about the whole platform. Where Modern Standby is what is being developed for (at least on mobile systems). It may be necessary or part of the design of the system for what can wake the system etc.
For example, I can force my 12th gen into S3. Keyboard, Touchpad and Fingerprint Sensor stop working as wake events, because the design expects the OS drivers to manage this. And the power consumption does not actually go down. Because for example the WiFi card is still powered, because with modern standby, it will not have its power cut, but turned off by the OS. If the OS does not know it needs to manage this, it may not turn it off during sleep, expecting S3 to cut power or BIOS to do something about it. But stuff like this is allows the OS to do stuff that it could not do with S3. Like keeping the network connection alive and waking when needed, per situation, while still sleeping in the meantime.
So it can absolutely make sense that the platform is better off with Modern Standby than S3. Especially because neither Intel nor Framework tests for S3, even if somebody was lazy and left the systems still reporting S3 support (which seems no longer to be the case with current AMD systems).