s3睡眠模式代表着什么?( 三 )


确实 , 传统的S4休眠会保存系统的全部状态 , 包括登录的用户、开启的应用 , 重启后 , 引导程序会直接将磁盘中的状态加载到内存中 , 这样就省去了重新加载内核、初始化硬件的功夫 。Windows10开始菜单中 , 休眠选项默认是隐藏的 , 可以通过电源选项>更改电源按钮的功能>关机设置重新打开 。
s3睡眠模式代表着什么?
文章图片

文章图片

但微软的考量是 , S4休眠生成的文件比较大 , Windows上为可以使用总内存的40% , 我们能用PowerShell在C盘根目录看到这个休眠文件:
s3睡眠模式代表着什么?
文章图片

文章图片

如图所示 , 这个休眠文件大约有10GB , 这对一些磁盘容量较小的设备是一个不小的负担 。另外如果设备使用的不是固态硬盘 , 如此大的文件加载时间可想而知也很慢 。因此 , 开启「快速启动」以后 , Windows的关机功能确实是休眠 , 但在休眠之前 , Windows会退出所有应用并注销用户会话 , 再生成休眠文件;这时休眠文件就只占内存大小的20%了 , 「快速启动」体验自然也会变得更好 。
以上两个例子说明 , 厂商并非一定要拘泥于ACPI的规范 , 如果有了新的需求 , 解决需求才是第一位的 。那么 , 传统S3睡眠遇到了什么无法解决的需求呢?微软在其硬件开发文档中如此回答:
电源管理架构的目的是满足不断增长的用户需求 , 包括:
客户要求他们的计算机随时可用 , 即使在关闭时也是如此……
在插电或者使用电池时 , 客户都希望减少PC使用的电量
S3睡眠也许能做到节能 , 但离随时可用差了不少 。比如 , 我们希望电脑上的IM软件也和手机一样 , 可以及时接收消息 , 但S3状态处理器无法工作 , 就更不用提接收消息了;再比如 , 我们也希望电脑可以像手机一样按下指纹就能解锁 , 系统需要先花上大概5秒从S3切换到S0 , 才能识别指纹进行解锁;又比如我们想使用Windows下的语音助手 , 如果系统处于S3睡眠状态 , 那么收音、网络设备都处于D3关闭状态 , 这时语音助手就没有办法响应 , 而让系统整个保持在S0 , 这样整机功耗就无法控制了 。
看到这里 , 读者可能会想:这不就是智能手机上的即开即用的使用体验吗?确实如此 , 新型待机正是期望将智能手机的即开即用体验带到Windows上 。
▍新型待机
早在Windows8时代 , 微软就认识到了S3睡眠模式的不足 , 那时 , 微软期望PC能够在睡眠模式下也能正常连接网络 , 所以微软推出了一个新式的睡眠模式并命名为连接待机(ConnectedStandby) , 即在保证系统和设备处于S0响应速度的基础上 , 又能有S3的功耗控制 。而在Windows10中重新更名为新型待机 。
s3睡眠模式代表着什么?
文章图片

文章图片

图注:图片修改自WinHECFall2017
传统S3待机控制CPU功耗的方法很简单 , 断开CPU/SoC部分的供电即可 , 这时芯片里的寄存器全部清空变成了0;但在唤醒时 , 需要重新初始化寄存器 , 这就是从S3恢复成S0时需要一点时间的原因 , 当然这个时间远比从S4恢复所需要的短得多 。
但现在连这一点初始化的时间都不能要了 , 也就意味着需要CPU/SoC「记住」之前寄存器的状态 。因此 , CPU/SoC内部就需要有一枚专门的芯片按照下图的步骤 , 一步步把对应寄存器区域的状态保存在CPU/SoC内部的nvram中 , 再切断电源 。这样就让设备实现了在S0响应速度的基础上 , 又能有S3的功耗控制 。