很多尝鲜的人已经用上了微软的 Surface Pro 3,然后很快发现一些问题,为什么电源选项中不再可以设置自动关闭显示器的超时时间?为什么没有“休眠”这一电源选项了?这是因为 Surface Pro 3 中新增了一种名为 InstantGo 的节能模式。其实这一模式在第一代 Surface RT 以及后续的 ARM 架构 Surface 等很多设备上早已投入使用,不过 x86/x64 架构设备则是从 Surface Pro 3,以及同时期的其他 x86/x64 设备才开始陆续采用。
InstantGo(原名 Connected Standby)是一种节能模式,可以让电脑设备像智能手机和平板那样在尽量节能的同时保持网络连接,并能瞬时唤醒。该功能最早出现在 Windows 8 中,但由于该功能有着挺严格的前提要求,之前很少有 x86/x64 架构的设备能够支持。
首先可以设想一种很常见的场景:在手机上设置明天早晨六点的闹铃,然后把手机屏幕关闭,手机放在床头。我们可以很确信地知道,第二天早晨六点,手机闹铃肯定会响,而这样放了一夜手机的电量消耗并不会很多(Android 这样有太多后台进程和服务自动运行的手机有些例外)。然而这样一个简单的场景,要想在 Windows 系统,尤其是 x86/x64 架构的 Windows 系统上实现可不是一件容易的事。因为从几十年前设计之初开始,Windows 系统针对的就不是移动属性那么强的设备,更多是运行在台式机、笔记本电脑这样相对来说更为“固定”的设备上。
以前的做法
经过多年的发展,尤其是 ACPI(Advanced Configuration and Power Interface,高级配置和电源接口)技术的进化,在 Windows 8 之前,Windows 主要支持这几种电源状态:
- 工作(S0):计算机处于正常工作状态中。
- 待机(S1,S2,S3):计算机看起来已经关闭,但内存的供电得以维持,因此内存中数据(也就是操作系统环境和工作状态)得以维持,开机后几秒钟就能恢复至可操作状态,并会与进入待机状态前系统正常工作的状态保持一致。一旦待机过程中断电,其效果等同于电脑正常运行过程中拔掉电源。
- 休眠(S4):将内存数据以文件形式保存在硬盘上,随后进入类似关机(S5)的状态。重新开机后需要完成 BIOS 自检操作,并从硬盘上的休眠文件中将电脑的工作环境直接读入内存。由于内存数据保存在硬盘文件上,因此休眠状态下计算机断电不会丢失数据,但是恢复速度略慢,因为需要从硬盘中重新读取内存数据,物理内存的大小和硬盘读写速度快慢会对恢复速度产生较大影响。
- 关机(S5):系统、程序,以及绝大部分硬件处于彻底关闭状态,为了实现键盘/鼠标/网络唤醒功能,少数硬件组件可能依然维持供电。重新开机后需要完成 BIOS 自检、操作系统引导并初始化、用户登录等一系列过程才能恢复运行。
除此之外从 Windows Vista 开始,Windows 中还增加了一种名为“睡眠”的状态,该状态同时结合了待机和休眠的特性,也就是说,在进入睡眠状态时,需要将内存数据以文件形式保存在硬盘上,但继续保持对内存的供电。如果睡眠过程中计算机没有断电,那么重新开机后几秒钟就可以恢复至可操作状态(等同于从待机状态恢复);如果睡眠过程中计算机断电,重新开机后可能需要较长时间才能恢复至可操作状态(等同于从休眠状态恢复)。
上述设计方式在台式机和笔记本电脑的时代很好用,基本可以满足绝大部分使用场景的需求。但在平板电脑等移动设备大行其道的今天,一些场景下显得有些不合时宜了。不合适的主要原因在于,原有的那几种节能状态下,CPU 的供电基本都已停止,没有任何程序可以在这种状态下运行。而单纯关闭显示器,让其他所有硬件组件继续运行这种做法对主要使用电池供电的设备来说无异于灾难,就算技术再先进,现阶段 x86/x64 架构的处理器和其他硬件组件也无法以 ARM 处理器那样低的功耗运行。
例如在一台不支持 InstantGo 的笔记本电脑上,想要设置闹铃的时候,程序会提醒只有电脑处于唤醒状态时才能响铃。如果一个手机要求只有在屏幕处于点亮状态(即设备处于唤醒状态)时才能听到电话振铃,这样的手机肯定不会有人用。对于想要跨界发展的 x86/x64 架构 Windows 系统,原有的 ACPI 电源状态罩不住了。
现在的做法
于是 InstantGo 功能应运而生。相比传统的 S3 和 S4 状态,该功能最大的好处在于瞬时恢复。支持该功能的 x86/x64 设备通常可在 500 毫秒内从节能状态恢复至可操作状态,这一速度几乎等同于 S3 待机。
但 InstantGo 与 S3 待机状态最大的不同在于,可在进入该状态后继续维持 Wi-Fi 网络连接(间歇性连接,并不是持续连接),并以低功耗状态运行。这种状态下,Wi-Fi 网卡可自动搜索周边已知热点,自动建立连接,保持系统可以在需要时随时访问网络。建立网络连接后,处于 InstantGo 状态的设备可以访问互联网,同步信息,接收推送通知(但仅限 Windows Store 应用,不支持传统桌面应用)。这一状态还支持移动运营商的 3G/4G 网络连接,并能自动在数据网络和 Wi-Fi 之间切换。
通过这样的技术,x86/x64 设备真正做到了像 ARM 智能手机和平板那样随用随开,“关闭”状态下不会错过重要通知,并且可以自动同步数据。同时实现这一切并不需要牺牲电池的续航时间作为代价。根据微软的测试结果,传统的 S3 状态下设备功耗不会低于 500 毫瓦,对于装备 45 瓦时电池的移动设备,只能在 S3 状态下坚持 100 小时左右;而 InstantGo 通过使用工作电压更低的内存,以及进一步针对能耗进行优化的嵌入式控制器,大部分情况下可将功耗降至 150 毫瓦以下,相比 S3 状态,可在维持网络连接的前提下将电池持续的时间延长至 300 小时。
也正是因此,对于支持 InstantGo 的 x86/x64 设备,将无法单独设置屏幕自动关闭的时间。因为只要设备的屏幕已经关闭,就会自动处于 InstantGo 状态下。该状态下硬件组件会以低功耗状态运行,所有软件会停止运行,但系统会间歇性开启并收发邮件、发送推送通知,或执行其他后台任务。
对于已经进入 InstantGo 状态的设备,在保持这种状态若干小时后,如果用户依然没有将其唤醒,则会进入传统的休眠模式。
听起来挺美吧,但为什么直到 Surface Pro 3,该技术才出现在 x86/x64 平台上?因为这个功能对系统的软硬件有一系列要求。首先,该功能要求设备使用低功耗硬件组件(处理器、芯片组、内存、网卡),并且要求设备使用闪存形式的存储设备(SSD、eMMC)。要求低功耗硬件设备这一点很好理解,对存储设备的要求,除了这类存储的读写速度更快外,主要是考虑到可能需要在移动过程中(例如设备装在包里走路过程中)开启设备,这种状态下机械硬盘很容易因为震动而受损。
对于可支持的设备,可通过下列方式将设备置于 InstantGo 状态:
- 按下设备的电源按钮
- 关闭(设备自带或扩展坞提供的)盖子
- 从 Windows 软件界面下选择“睡眠”
- 让设备处于闲置状态并维持一段可设置的时间
要将处于 InstantGo 状态的设备唤醒,则有下列几种方式:
- 按下设备的电源按钮
- 打开设备的盖子
- 通过设备的 USB 接口连接键盘、鼠标等外设
- 按下设备上的 Windows 徽标键
我能做些什么
你的设备是否能支持 InstantGo?首先要求设备运行 Windows 8/8.1(RT 版或 x86/x64 版皆可)系统,并且设备是最近一两年内发布的(更早的设备基本可以确定无法支持)。随后请按下 Win-X 组合键,选择“命令提示符(管理员)”,并运行这条命令:
Powercfg /a
该命令可以列出系统支持的所有电源状态,请重点检查设备对“待机(已连接)”这一状态的支持情况,这就是 InstantGo。
对于绝大部分不支持的设备,主要原因都会显示为“系统固件不支持此待机状态”,这又是什么意思?这里有解释。
要求 | 用途 |
系统的 ACPI 固件必须设置 ACPI_S0_LOW_POWER_IDLE FADT 标记 | 代表系统硬件平台可支持 InstantGo 所要求的低功耗空闲状态 |
系统 ACPI 固件不允许在根名称空间提供 S3 对象 | Windows 可分别支持以 S3 状态或 ACPI_S0_LOW_POWER_IDLE FADT 状态运行的平台,但无法让同一个平台同时支持这两种状态 |
核心芯片或 SoC 制造商必须提供电源引擎插件(PEP) | PEP 可对设备状态和处理器的空闲状态依存性进行协调 |
x86/x64 设备必须同时启用休眠功能 | 需要使用休眠功能保存传统桌面/Win32 应用程序的状态 |
设备内建的所有网络设备必须兼容 NDIS 6.3(具体来说,需要支持网络唤醒、协议卸载、D0 数据包聚合) | 可在 SoC 进入低功耗运行状态的同时维持网络连接 |
主要存储卷必须位于寻道延迟 0 毫秒的固态硬盘上 | 确保处于 InstantGo 的状态下时,Windows 可以随时安全地访问存储设备 |
此外设备中必须具备 2.0 或更新版本的 TPM(Trusted Platform Module)芯片,仅这一点就让很多国行版设备无法通过了。以前因为政策原因,中国大陆销售的计算机设备不允许包含 TPM,例如第一代和第二代 Surface Pro,本是包含 TPM 的,但在中国大陆销售的版本中可能通过软件屏蔽(或硬件阉割,这一点我不太确定)方式取消了 TPM(可海外版包含 TPM 也无法支持 InstantGo,因为其他条件无法满足)。到是国行版 Surface RT 一直包含。好在第三代 Surface Pro 终于解决了这一问题,直接提供了 TPM 2.0 芯片。
要查看自己的设备是否具备 TPM 芯片,以及具体版本,可运行 devmgmt.msc 打开设备管理器,查看是否有“安全设备”,以及具体的版本。
如何关闭这个功能
在正常使用的过程中,InstantGo 能为我们带来极大的便利。但有时候可能确实需要关闭这个功能。例如我在刚收到 Surface Pro 3 的时候,需要从 OneDrive 将大量文件(超过 100GB)同步到这个设备。然而在默认设置下,Surface Pro 3 会在一段时间后自动进入 InstantGo 状态,导致文件的同步时断时续。最开始我是想像以前那样设置系统在使用电池供电的时候不要自动睡眠,只是自动关闭屏幕。但打开电源选项界面后才发现那里和以前的设置截然不同了。以此为契机经过研究和搜索才有了本文。
如果你希望让自己的 Surface Pro 3,或任何其他支持 InstantGo 的 x86/x64 设备能够像以前一样禁止自动进入节能状态,并单独设置一个关闭屏幕的时间,就必须禁用 InstantGo。但系统本身并未提供禁用该功能的选项。这一点倒也可以理解,目前支持该功能的设备并不多,并且绝大部分都是平板类设备,这类设备其实很少需要这样做,反而开启 InstantGo 后更为方便。
那么到底该怎样禁用?Hyper-V!没错,Hyper-V 这种技术由于其特殊性,需要给系统中安装 Hypervisor,进而导致 InstantGo 失效。面对各种新出现的节能模式,Hyper-V 真的是当之无愧的大杀器,我还记得在 Windows Server 2008(还是 2008 R2,不太确定了)中,启用 Hyper-V 后的机器将无法使用睡眠和休眠功能。现在新版 Hyper-V 不影响睡眠和休眠,转为影响 InstantGo 了。
那么我们就可以利用这一点,启用 Windows 8.1 的 Hyper-V 功能,InstantGo 自然会失效,此时就可以像以前那样使用休眠、睡眠等节能模式。以后如果需要重新使用 InstantGo,只要将 Hyper-V 卸载就行。
另外还要注意,Hyper-V 只能在 Windows 8/8.1 专业版/企业版中启用。具体到 Surface Pro 3 这个设备,仅“专业版”设备可以支持,“中国版”设备不支持。
电脑越来越像普通家电了,按一下电源按钮,开始使用;用完之后再按一下,该干啥干啥去吧。虽然 InstantGo 对某些情况下的使用造成了一定的不便,不过总的来说,在电池技术有本质飞跃之前,这种“不便”也是移动设备所必须的。
麻烦晖哥看看这个问题 http://answers.microsoft.com/zh-hans/windows/forum/windows8_1-winapps/%e8%87%aa%e5%b8%a6%e7%9a%84%e9%98%85%e8%af%bb/3b57b052-eef9-4a4a-809a-72804b48eda3
另外建议专门设立个留言板?
感谢你分享的文章 ,它解决了我平板电脑的需求。
专门来谢谢的 匿名
好文章,解决了我的 有关 suface pro2 睡眠下 为什么 不能保持蓝牙连接而atom的平板却可以的 疑问~ 谢谢博主!