在本篇博文中,我们将围绕开发可降低功耗的操作系统这一宽泛主题而展开探讨。我们已经认识到从以下两个角度出发,操作系统中电源管理的重要性与日俱增。首先,随着 Windows 8 的上市,我们可以很容易地发现,某些时候甚至大部分时候所有 PC 中有三分之二是以电池模式运行的便携式设备。其次,在工作区中,由于我们希望可随时节约能源,因而降低台式计算机碳排放量的需求正与日俱增。就所有情况而言,这不仅仅与待机/休眠/恢复的性能相关,而且它还关乎本篇博文的核心,即降低操作系统的整体功耗,并为现代化硬件中的节能功能提供操作系统的支持。本篇博文的作者是我们内核团队的项目经理 Pat Stemen。
--Steven

电池的使用时间与功耗仍然是计算机领域中最重要的两大主题。我们希望让您了解我们对 Windows 8 的电源管理的构想,以及我们每天衡量功耗的方式。我们认为电源管理是一项核心的操作系统功能,其对于任何芯片架构和任何 PC 外形都至关重要。

我们的目标

在设计 Windows 8 的电源管理时,我们有三个目标:

  • 让硬件充分发挥性能。无论是基于 SoC 的 Windows 平板电脑,或是配备了 SLI 的游戏 PC,我们为其构建的 Windows 8 硬件平台的节能效率都十分出色。我们在所有平台中以一个一致的、标准化的方式设计了电源管理界面。这可让我们的硬件合作伙伴和应用程序开发人员把精力集中在开发独特的创新和体验,而不是纠结于各平台硬件和电源管理间的差异。
  • 继续提供出色的电池续航。Windows 7 已经显著降低了功耗,并提高了能源使用效率,特别是延长了移动 PC 的电池使用时间。(事实上,您可以阅读本 e7 博文来了解我们当时的想法。)在 Windows 8 中,我们希望在重新打造 Windows 的同时,现有 PC 仍能保持与 Windows 7 相同的效率水平。
  • 启用智能电话的电源模式。您从我们在 CES //BUILD/会议的谈论内容中发现芯片系统 (SoC) 平台最妙的地方之一便在于其能够迅速进入极低功耗的空闲状态。我们希望利用这一超低空闲功耗,将智能电话电源模式的持续连接和即时启动功能引入 Windows 8 PC 的功能中来。

为何重要

我们大多数人可能对良好电源管理的一个正面影响较为熟悉,即我们移动设备电池的较长使用时间。由于在电池供电模式下使用移动计算机设备的情况较以往更为普及,因此我们对移动计算设备进行深入和研究以了解其电池运行时间。提供一致、较长的电池使用时间要求在基础硬件、操作系统和应用程序软件间进行大量良好的协调工作。(电池容量及其随时间推移的剩余电量变化对于运行时间同样具有重要影响。)

除了移动电池使用时间以外,良好的 PC 电源管理的另一个最切实的正面影响是其能降低能源成本和对环境的影响。具备电源管理功能的企业级台式 PC 以及数据中心内的服务器,其优势通常被定位成可节省为系统供电以及冷却系统所需的成本,以及降低因向这些系统提供能源而产生的温室气体排放量。这种影响难以被低估,因为我们的产品普及程度非常之广,即使 Windows 只是朝好的方向有一个很微小的变化,也会对环境产生很大的积极影响。在世界各地的许多市场中,日益增加的电力消耗量对工作场所中的各个方面都提出了越来越多的降低功耗的要求。而 PC 正是一个重要的潜在节能源头。

电源管理同时在系统性能与响应能力间达到了良好的平衡。例如,我们可以轻松降低处理器的性能以节约功耗,但是这样一来,处理给定工作负载所需的时间将增加。在电源与性能间形成良好平衡是整个 Windows 用户体验中的一个关键要求。

我们同时也查阅了大量评论最新处理器和硬件平台的技术博客,其内容不仅仅局限于 GHz 和基准性能,同时还包括执行工作负载所消耗的功率。这些测量将电源与性能合并成能源效率,该指标衡量了执行某些固定工作负载所消耗的功率。“每瓦特的性能”与其有相同的含义。

然而,最让我们兴奋不已的是电源管理对于 PC 平台设计的所有方面都起着举足轻重的作用。电源管理将直接影响众多属性,其中包括电脑的厚度、重量、声音(风扇及其转速)、表面温度、成本、屏幕尺寸、分辨率、RAM 数量等。纤薄、轻巧,始终处于连接状态且全天以电池模式运行而无断电之忧的硬件必将成为用户的宠儿。我们正在努力将这一切实施到 Windows 生态系统服务中去。

作为资源的电源

我们认为电源与 CPU 使用率、硬盘活动或内存消耗类似,是一项关键的系统资源。由于电源是一项核心资源,因此我们将跟踪 Windows 每天在每个 Windows 8 日常版本中的消耗量。这可让我们迅速发现功耗的变化,并与开发团队紧密合作,以探究该问题的根源,开发并测试所需的任何变化。由于降低了功耗,因此我们为评测未来的日常版本而创立了一个新基准。

任何给定 Windows PC 的原始功耗(如多少毫瓦)由多个平台因素决定,其中包括 CPU 和芯片组、RAM 的类型和数量、存储驱动器的速度、类型和容量、屏幕尺寸等。

为了获得一个一致的基准,我们确定了一套参考平台,并在 Windows 8 的整个开发过程中测量了其功率。我们的参考平台是我们客户常用的典型计算机类型。他们包括我们所有主要硅芯片合作伙伴的平台。我们使用了 Windows 7 和 Windows 7 SP1 中的功耗量作为我们的基准,并将其与 Windows 8 版本在整个开发过程中所测量的数值进行比较。

图表显示了 Windows 8 的 9000 至 10,000 mW 间各种版本(从 8074 至 8144)的空闲电源情况,但是在 8114 版本中,其功率已飙升至 10,500 mW 以上。
在我们的实验室中针对某一参考平台而测量的总系统空闲功率。
您可看到一个约 1.25 W 增量的变化,该变化在后续的版本中保持不变。
请注意运行和版本之间将存在一些差异。

我们在每个参考系统上均测量了大量软件工作负载的功耗。我们所测量的工作负载与第三方的电池基准较为类似,因为这些基准是专为代表我们每天处理计算机的核心应用场景而设计。我们的核心工作负载包括空闲、网页浏览、视频播放、音频播放和待机。

您可能会认为在空闲的工作负载上耗费时间毫无意义,毕竟很少有人会只是启动计算机,然后停留在“开始”页这里什么也不做。尽管事实如此,但我们认为空闲工作负载是系统功耗的基础 — 它是系统活动时的最低活动量。降低空闲功耗可降低其他大部分工作负载的基本功耗,其中包括视频和音频播放。此外,许多工作负载包含大量空闲时间 — 从打字时按键间的小量空闲时间,到播放演示文稿时幻灯片切换间数分钟的空闲时间。

测量移动 Windows PC 功耗的常用方法是电池使用时间的耗尽测试,测试中先将电池充电至 100%,然后反复该工作负载将电池电量耗尽至 0%。这种方法很奏效,但却很容易出错,因为电池的容量在多次充电/放电周期中将自然降低。每个电池使用时间的耗尽测试是一项额外的充电/放电周期,我们每天都进行了这项测试。因此,随着电池容量的降低,我们的测量值将逐渐产生偏差。

我们在性能试验室内设有功耗测量设置,这可让我们提供具有直接直流电源的参考平台并测量功耗。我们在有关浏览器功耗的 IE 博客中提到了该实验室和整体功能,但是并未提及我们配备了大量实际参考便携式计算机来测量每天的功耗。电源供应及其计量功能由测试软件自动完成,因此我们可不断安装 Windows,测量不同应用场景中的功耗,并分析每个 Windows 8 新内部版本中的结果。

装满监控直流电源使用的机器设备的机架
内置测量功能的直流电源供应

一台运行 Windows 8 的便携式计算机,其插入了一个用于测量功耗的盒子
用于直流电源供应和测量的参考平台

软件如何影响功耗

软件可通过消耗资源 — CPU、磁盘、内存等 — 来影响功耗,因为这些资源包含相关的电源成本。软件同时可通过操作系统和负责管理硬件电源状态的驱动程序软件来影响功耗。

Windows 8 包含 3 个关键的创新来改善软件对功耗的影响方式,即 Metro 风格应用程序模型、空闲清除,以及一个新的运行时设备电源管理框架。我们将在本博文中向您简要介绍这些创新将如何改善功耗。

Metro 风格应用程序模型

我们大多数人都体验过软件对功耗的直接影响。当您在电话上安装了一个应用程序后,您的电池可能将迅速耗尽,抑或当您在便携式计算机上玩游戏或使用电子表格计算时,您将听到便携式计算机的风扇转动起来。这些都是应用程序直接消耗 CPU、GPU、网络时间、磁盘和/或内存的例子。

Windows 8 电源管理的创新之一并不是电源管理基础架构功能,而是 Metro 风格应用程序模型本身。从一开始,Metro 风格应用程序模型便是一项节能型的设计。该电源管理的优势在于该模式可让开发人员轻松确保其应用程序仅在合适的时间运行 — 后台中的应用程序将暂停,因此它们不会在未使用时消耗资源和电源。

当然,我们意识到后台活动是始终处于连接和响应状态的应用程序中的一个重要组成部分。Metro 风格应用程序模型和基础 WinRT 可通过一套称为“后台任务”的新功能来支持后台活动。(请参见后台任务简介。以了解更多详情。)后台任务可让开发人员以一种节能的方式轻松执行后台活动,也可让开发人员继续在其应用程序中提供高响应度和“新鲜”程度,但是该机制与现有 Win32 模型有所不同,因为其追求快速而流畅的界面,以及 Metro 风格应用程序的其他关键属性(参见卓越 Metro 风格应用程序的 8 个特征)。

我们设计了后台任务和整体 Metro 风格应用程序模型来实现更高级别的应用程序响应,与此同时也考虑了整个系统的属性,其中包括电源和内存消耗。

进程选项卡(更详细的视图)显示了数个处于已暂停模式的 Metro 风格应用程序,其 CPU 消耗量均为 0%,且内存使用量为 17 至 85.1 MB。
任务管理器显示了已暂停的 Metro 风格应用程序

空闲清除

即使未消耗大量资源,软件仍可能通过间歇性活动对功耗产生重大影响。我们把对空闲活动的改进称为空闲清除

大多数 PC 平台都存在处理器和芯片组的空闲状态,空闲状态是指允许硬件平台停止时钟或在未使用硅部分时完全关闭硅部分的电源。这些空闲状态对于延长电池使用时间十分关键,但是他们需要一个最低驻留持续时间 — 也就是说,您必须保持足够长的空闲时间,以根据所使用的功率,完成进入或退出空闲状态的转换。这是因为在进入或退出空闲状态时需要消耗一些功率。当退出空闲状态的“出口”尽可能少,且空闲持续时间尽可能长时,软件将最高效地使用这些空闲状态。

我们通过使用内置的 ETW 跟踪Windows 性能分析器的一些增补功能和一个基本直方图来跟踪 Windows 8 的空闲效率。以下,您将看到 Windows 7 和 Windows 8 在空闲持续时间方面的差异。当屏幕开启时,在 Windows 7 中,绝大部分空闲持续时间为 15.6ms,而在 Windows 8 中有 35% 的空闲持续时间长于 100ms!在屏幕关闭和连接待机期间,我们的空闲持续时间将更长,目前处于几十秒的水平。

Win7 和 Win8 屏幕开启时空闲期持续时间的比较图。在 Win7 中,大约 95% 的空闲持续时间为 10ms - 16ms。而在 Windows 8 中,这一比例接近 35%。

运行时设备电源管理

当包括处理器、存储和外围设备在内的所有设备进入低功耗模式时,PC 的电池使用时间将达到最大值。现代 PC 中几乎所有设备都包含某种电源管理技术,运行时设备电源管理决定了我们将如何在不影响用户体验的前提下无缝使用这些技术。运行时设备电源管理的一个绝佳示例是 Windows 7 超时后的显示自动调暗。

我们看到了很多未启用设备电源管理功能的系统中,其电池使用时间很容易缩短高达 25%!提及这一点只是为了强调设备电源管理的重要性。(这里值得注意的是,在设备管理器中禁用设备同样不好 — 因为大多数设备是由固件在其最高功耗模式下完成初始化的,因此如需让其功耗变得更标称,则需要一个设备驱动程序。)您可通过使用包含 /ENERGY 参数的 Windows 7 中内置的 powercfg.exe 实用工具来诊断某些设备的电源管理问题。/ENERGY 的输出结果是一个 HTML 文件,该文件可让您查看哪些设备和软件正在耗电状态中潜在运行。当然,使用您 PC 的出厂映像(加载了 OEM 或供应商提供的驱动程序)几乎始终是确保您 PC 中设备在电源管理方面运行良好的最佳方式。

设备驱动程序与 Windows 内核电源管理器和平台固件共同执行了设备的高效电源管理。电源管理器可让这些设备的驱动程序轻松实施其电源管理例程,并协调任何电源状态与该平台中其他设备的切换。

对于 Windows 8,我们已经构建了一个全新的设备电源框架,该框架可让所有设备来“宣传”其电源管理功能,并以一个专为 SoC 系统设计的名为电源引擎插件PEP 的特殊驱动程序来整合各个设备。PEP 由硅制造商提供,并了解 SoC 所有特定的电源管理要求。这可让设备驱动程序就像我们的 USB 主机控制器或仅需构建一次的键盘驱动程序一样,继续在从基于 SoC 的 PC 到数据中心服务器的所有平台上提供优化的电源管理。

我们正与我们所有生态系统合作伙伴密切合作,共同致力于提供我们希望在 Windows 8 PC 中所获得的低功耗、较长电池使用时间的技术。

--Pat Stemen