专利名称:功率知晓线程调度和处理器的动态使用的制作方法
功率知晓线程调度和处理器的动态使用背景计算机系统功耗管理对于延长电池的操作能力并降低总体功耗而言是重要的,这 在财务和环境上都是有益的。甚至对于非移动计算机,降低功率要求对于节省重要的全球 资源并在依赖电池备份系统时,如在公共事业电源中断期间延长操作是有益的。虽然计算系统的大多数组件在系统操作期间使用电源,但处理器使用不成比例的 系统电源份额。许多计算机系统,包括基于消费者的系统,都包括多个处理器和/或具有多 个核的处理器。多个处理器允许计算机并行地执行增大的工作量,然而额外的处理器也会 增大功耗。大多数现代处理器具有非常低功率的空闲功率状态,这可以对多核系统上每一 个核应用,并可以由操作系统进行控制。另外,处理器频率可以在每一个核或每一个核组的 基础上伸缩,以降低系统电源使用。概述提供本概述是为了介绍以下在详细描述中进一步描述的提供功率知晓线程调度 和处理器的动态使用的简化概念。本概述并不旨在标识所要求保护的主题的必要特征,也 不旨在用于帮助确定所要求保护的主题的范围。公开了用于提供功率知晓线程调度和处理器的动态使用的示例性技术和装置。根 据一个或多个实施例,监视多核系统以确定核活动。检索电源策略以便为核启动性能和功 率节省计划。多核系统的一个或多个核基于电源策略和核活动来停止(park)(置于系统指 定的低功率状态)。当停止一个或多个核时,留下已启动(impark)的核来处理所有剩余系 统活动。在某些实施例中,可以修改电源策略以包括影响功率节省或系统性能的其他因素。 在至少一个其他实施例中,除停止一个或多个核之外,多核系统还可以动态地调整一个或 多个已启动的核的功率状态。附图简述参考附图来描述详细描述。在附图中,附图标记中最左边的数字标识该附图标记 首次出现的附图。不同附图中的相同附图标号指示相似或相同的项目。
图1是可以用来实现功率知晓线程调度和处理器的动态使用的至少一个实施例 的说明性系统。图2示出了创建核停止掩码并利用线程调度器来实现掩码以允许将工作分配到 处理器的过程的至少一个实施例的流程图。图3A和3B示出了根据本发明的至少一个实施例的说明性核利用。更具体而言, 图3B示出了响应于如图3A所示的说明性系统核利用的对核利用的说明性修订。图4示出了评估线程调度和处理器的动态使用并确定处理器的修订配置的说明 性过程的至少一个实施例的流程图。图5示出了提供功率知晓线程调度和处理器的动态使用的说明性过程的至少一 个实施例的流程图。图6示出了提供功率知晓线程调度和处理器的动态使用的说明性过程的至少一 个实施例的另一流程图,还包括域空闲考虑。
图7示出了为功率知晓线程调度和处理器的动态使用提供附加设置的至少一个 实施例的说明性流程图。详细描述处理器可以允许低功率空闲功率状态,包括不消耗功率(零瓦特)的空闲状态。当 没有有用的工作要执行时,操作系统可以指示一个或多个处理器(或简称为“核”)进入空 闲功率状态(即,处理器休眠状态)。最大化花费在这些低功率状态的时间可以提高系统能 量效率和/或延长电池寿命。除这些处理器空闲功率状态之外,处理器还可以提供单独或 结合处理器核电压的同时降低的对伸缩处理器频率的控制。这些控制可被统称为处理器功 率管理(PPM)特征。处理器可以便于每秒数十亿次的执行。尽管具有这一大容量来执行计算机指令, 但处理器可以在短时间内具有相当大的工作负载变化。例如,短如打字员的键击之间的延 迟的时间段可以允许PPM短暂地降低处理器功率或者甚至进入简短的休眠状态。虽然几分 之一秒的功率看起来是微不足道的,但是比较长的时间内累积的功率节省会是显著的。因此,当处理器没有足够的工作负载来证明较高的功率状态是恰当的时候,PPM可 以通过指示未使用的处理器进入低功率状态或休眠状态(“停止”状态)来降低功率需求。 停止的核可以被置于使用最少电量或根本不使用电量的处理器空闲功率状态(ACPI C状 态)。要在系统上执行的活动工作将在启动的处理器上进行时间多路复用。因此,此处在随后的各个章节中公开了方便提供功率知晓线程调度和处理器的动 态使用的技术和装置。说明性环境图1是可以用来实现功率知晓线程调度和处理器的动态使用的至少一个实施例 的说明性系统100。系统100包括计算设备102。例如,计算设备可以是移动计算机102(1)、 台式计算机102(2),和/或服务器102 (N),以及其他可能的计算设备。在非常基本的配置 中,计算设备102通常包括一个或多个处理器(“处理器”)104。例如,处理器104可以是并 行或串行配置的多个独立处理器和多核处理单元中的至少一个,或者单独地或者是不同的 组合。多核处理器可以具有包括在同一个芯片或集成电路上的两个或更多处理器(“核”)。 术语“处理器”、“核”和“逻辑处理器”在全文中可互换地使用,除非参考特定元素特别另外 指明。另外,计算设备102还包括系统存储器106。取决于计算设备的确切配置和类型, 系统存储器可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等等)或两种类型的 某种组合。系统存储器106通常包括操作系统108、一个或多个程序模块110,且可以包括 程序数据112。操作系统108可以包括负责指示处理器功率管理(PPM)特征的使用的内核功率管 理器114。内核功率管理器114可以使用性能状态(ρ状态)或线性扼流状态(t状态)来 调整处理器104的性能(例如,速度)。例如,内核功率管理器114可以在可能时平衡处理 器104的功耗与当前工作负载以节省能量。另选地或另外地,内核功率管理器114可以允 许处理器104响应于工作负载需求来提供最大处理能力。此外,当没有诸如程序模块110 的线程等活动线程准备运行时,内核功率管理器114可以指示处理器104中的一个或多个 进入低功率休眠状态。
操作系统108可以提供用于跨系统100中的所有可用的处理器104来对工作单元 (线程)进行排队、调度、确定优先顺序和分派的模块,这些模块可以被表示为统称为内核 线程调度器116的模块集合。当活动线程准备运行时,内核调度器116经由一个或多个模 块将线程都分派到任何可用核以便进行处理。一般而言,内核功率管理器114和内核调度器116在对处理器104的控制和操作 方面具有竞争利益。内核功率管理器被配置成最小化处理器104的功耗,并且因此试图降 低处理器104中的一个或多个的频率和/或功率状态。相反,内核调度器116被配置成最 大化处理吞吐量,并由此偏爱将工作分发到所有处理器104。计算设备102可具有附加特征或功能。例如,计算设备102还可包括附加数据存 储设备(可移动和/或不可移动),诸如例如磁盘、光盘或磁带。这些附加存储在图1中由 可移动存储118和不可移动存储120示出。计算机存储介质可包括以用于存储诸如计算机 可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易 失性、可移动和不可移动介质。系统存储器106、可移动存储118和不可移动存储120都是 计算机存储介质的示例。因此,计算机存储介质包括但不限于,RAM、R0M、EEPR0M、闪存或其 它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它 磁性存储设备、或能用于存储所需信息且可以由计算设备102访问的任何其它介质。任何 这样的计算机存储介质都可以是计算机设备102的一部分。计算设备102还可具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等输入 设备122。还可直接或经由到计算设备102的连接来包括诸如显示器、扬声器、打印机等一 个或多个输出设备124。计算设备100还可包括允许该设备诸如通过网络来与其他计算设备进行通信的 通信连接126。通信连接126是通信介质的一个示例。通信介质通常可以具体化为计算机 可读指令、数据结构或程序模块。术语“已调制数据信号”指的是其一个或多个特征以在信 号中编码信息的方式被设定或更改的信号。作为示例而非限制,通信介质包括有线介质,如 有线网络或直接线连接,以及诸如声学、RF、红外线及其他无线介质之类的无线介质。计算 机可读介质可以是可由计算设备102访问的任何可用介质。作为示例而非限制,计算机可 读介质可包括“计算机存储介质”和“通信介质”。各种模块和技术在此处可在诸如程序模块等由一个或多个计算机或其他设备执 行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括用于执行特定任务 或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。这些程序模块等可以作为 本机代码执行或诸如在虚拟机或其它即时(just-in-time)编译执行环境中下载和执行。 通常,程序模块的功能可以在各个实施例中按需进行组合或分布。这些模块和技术的实现 可以存储在某种形式的计算机可读介质上或通过某种形式的计算机可读介质传输。说明性处理器配置图2示出了创建核停止掩码并利用线程调度器来实现掩码以允许将工作分配到 处理器的过程200的至少一个实施例的流程图。过程200被示为逻辑流程图中一组框的集 合,这表示可用硬件、软件或其组合实现的一系列操作。在软件的上下文中,各个框表示当 由一个或多个处理器执行时完成所述操作的计算机可执行指令。一般而言,计算机可执行 指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。描
6述操作的次序并不旨在被解释为限制,并且任何数量的所述框可以按任何次序和/或并行 地组合以实现该过程。除了过程200之外,本发明通篇所描述的其他过程也应如此解释。出 于讨论的目的,过程200参考图1所示的系统100来描述。如图2所示,在202,在系统存储器中创建核停止掩码。例如,在202,内核功率管 理器114可以创建驻留在操作系统108中的核停止掩码。说明性核停止掩码(“位掩码” 或简称为“掩码”)204可以提供表示对应的核的单元格。如图2所示,说明性系统包括八个 核,然而,也可以使用更多或更少的核。位掩码204在每一单元格中包括位值,其中“1”表 示已停止的核,而“0”表示已启动的核。已停止的核是被置于低功率休眠状态的核。在某 些实施例中,已停止的核没有功耗,由此使用零瓦特。在某些实施例中,核具有诸如共享硬 件电路之类的依赖性。如果两个核都可以被置于低功率状态,则依赖性也可以被隐式地置 于低功率状态。由此,可以选择与另一个掩码相比将最大化功率节省的核停止掩码。例如, 关闭单个处理器插槽中的所有核可能比关闭两个处理器插槽中的一半的核节省更多功率。 位掩码204包括四个已停止的核,编号(从右到左,零到七)为3、5、6、和7。由此,核0、1、 2和4是已启动的核。根据一个或多个实施例,在206位掩码204可以倒排以创建倒排位掩码208。例 如,内核功率管理器114可以创建倒排位掩码208。倒排位掩码包括对应于每一个单元格 (即,核)的倒排位值。因此,可以优选用“1”指定的核来处理数据,而可以不优选用“0”指 定的核来处理应用程序线程。在210,诸如通过内核调度器116来确定应用程序调度。例如,计算设备102可以 运行程序模块110中的一个或多个。一些程序模块110可以包括单线程程序,而其他程序 模块可以包括多线程模块。通常,内核调度器116基于诸如优先级、核可用性、亲和性(调 度限制)以及其他因素等多个因素来将每一线程调度到可用核。当线程在数量上超过可用 核时,则内核调度器116交替线程或以其他方式调度线程以确保线程最终取得进展(即,由 处理器执行)。处理器104可以在单个核上每秒交替线程许多次,由此为内核调度器116提 供将线程有效地调度到可用核的机会。虽然许多程序模块不会将线程分配到特定处理器,但某些复杂程序模块可能需要 由特定处理器执行线程,这被称为设置线程的处理器亲和性。程序模块线程亲和性掩码212 表示如由程序模块110确定的被请求处理线程的核。例如,第一程序模块可以具有第一亲 和性掩码212(1),其表示线程必须由内核调度器116调度到核0和1。与第二程序模块相 关联的第二亲和性掩码212(2)可以指示线程可以被调度到核2和3,而另一个程序模块可 以包括亲和性掩码212 (P),其表示线程可以被调度到任一个可用核(所有核都被示为被选 中)。应该注意,亲和性掩码212 (P)是特殊情况,因为它有效地不包括对将线程分配到核的 约束。在某些实施例中,在214,使用“AND (与)”操作符来一次一个地将程序模块亲和性 掩码212与倒排位掩码208组合以确定对于可用的处理器集218的适合的处理器集合。在 220,使用第一亲和性掩码212(1)来创建第一可用处理器集218(1)。过程200可以包括对 于每一个程序模块的操作210、214和220 (即,对于倒排位掩码208和亲和性掩码212的每 一次组合)的迭代过程。由此,在操作210、214和220的第二次迭代期间,使用第二亲和性 掩码212 (2)来创建第二可用处理器集218 (2),以此类推。
7
如上文所讨论的,使用每一个核(例如,核0……核7)的位值来确定用于调度线程 的可用处理器集218。在两个操作数(即,核的组合位值)都包括表示线程亲和于特定核的 “1”的情况下,“AND”操作符216返回核位值“1”。例如,当第一亲和性掩码212(1)与倒排 位掩码208组合时,核0和1两者都是活动核并且将返回核位值“1”,而其余核2-7包括核 位值“0”,如在第一可用处理器集218(1)中说明性地示出的。第二亲和性掩码212 (2)在核3处包括核值“ 1 ”,而倒排位掩码208指示核3已被 停止。内核调度器116可以选择覆盖倒排位掩码,以适应在第二可用处理器集218 (2)中表 示的第二亲和性掩码212(2),其中核3包括核值“1”,因此将工作转移到在倒排位掩码208 中被指定为已停止的核(随后可以被启动)。在某些实施例中,可以使用任意数量的试探来 调度线程。可以使用线程的亲和性方面的最优核,同时忽略倒排位掩码208。如果最优核 已停止,则退回可以包括将同一个NUMA(非均勻存储器存取)节点中的处理器选为优选核。 调度器将核停止倒排掩码视作运行线程的优选位置的提示,但它将在相信什么是性能最佳 选项的硬限制(硬亲和性)之间进行选择。在所有核都被指定为可用的情况下,如在亲和性掩码212(P)中,可以忽略位值, 因为程序模块指示它允许任何核执行线程。亲和性掩码212 (P)可以包括由倒排位掩码208 指示的任一个核处的调度的核,诸如核0、1、2和4,如由可用处理器集218(P)通过核值示出 “1/0” ( “1”或者“0”,同时至少一个核必须具有核值“1”,以允许调度亲和性掩码212 (P) 的工作)来表示的。在某些实施例中,当确定将工作分配到可用核时,可用处理器集218(P) 可以选择已启动并且空闲的核。在理想情况下,工作轮换可以将工作分配到核0、1、2和3, 由此留下核4未使用,并可能在后续动作中停止。如下面所讨论的其他考虑事项可以确定 响应于亲和性掩码212 (P)给哪些核分配工作以创建优选位置。例如,优选位置可以基于诸 如可任选存储器存取性能之类的因素。如上文参考图2所描述的,可以使用操作210、214和220来调度线程。另外,可以 通过诸如延迟过程调用(DPC),计时器,处理中断,或其他处理器工作等操作210、214和220 来在过程200中执行其他工作。根据一个或多个实施例,图2示出了一时间片内的示例核使用222。例如,来自可 用处理器集218的活动核的组合可能导致给定时间检查间隔(诸如,但不限于100毫秒) 期间的核使用222。核使用222中的核4可以或可以不被表示为取决于工作是否被调度到 可用处理器集218(P)中的核4,如上文所讨论的。从内核功率管理器114的观点来看,在理 想情况下,核使用222将包括核4的核值“0”,由此最小化已启动的核的数量,并导致功耗 降低。不管核使用222如何,可以为下一时间片创建新的核停止掩码,可以使用来自核使用 222的信息来确定新的核停止掩码。在某些情况下,可能不需要核3,因为核2可以具有足 够的处理利用以满足第二亲和性掩码212(2)并且仍是已启动的核。图3A和3B示出了根据本发明的至少一个实施例的说明性核利用。更具体而言, 图3B示出了响应于如图3A所示的说明性系统核利用的对核利用的说明性修订。根据一个或多个实施例,图3A示出了包括多个核302、304、306和308的系统300, 但在系统300的替换实施例中可以包括更多或更少的核。内核功率管理器114可以使用电 源策略来控制核。电源策略可以确定活动核的数量,并影响内核功率管理器114如何计算 可用核的集合。可以使用电源策略来限制可用核的数量,或允许内核功率管理器114伸缩可用核的数量。平台支持的核数量可以随不同的系统而变化,由此需要灵活的方案以允许 由内核功率管理器在未提前知道有多少核可用的情况下指定核的数量。因此,在某些实施 例中,要使用的核数量可被表达为最大核利用的百分比。因此,核的实现可能需要将百分数 舍入到表示核数量的下一可用数字。例如,核使用百分比可以计算为60%。如果系统包括 四个核,则该百分数可以被舍入为75%,并且三个核将启动,而一个核停止。每一核都包括表示该核的工作负载的核利用(“核效用”)310,其被表达为独立于 核的性能状态的总时间中的核运行时间的百分比。例如,核0 302可以具有80%的核效用, 指示该核正在执行比核“0”的最大工作负载容量少20%的工作。因此,100%的核效用表示 核正在执行最大容量工作,而具有0%核效用的核表示未使用的核。在某些实施例中,内核 功率管理器114可以监视核效用310。另外,每一核都可以包括性能状态(高级配置和电源接口(ACPI)p状态)312。ρ 状态312是核频率和电压设置,并由内核功率管理器114进行控制。ρ状态312类似于电动 机的扼流控制。100%的ρ状态312表示核的最大性能状态,而50%的ρ状态表示核处于最 大频率的一半,且核电压电平相应地降低。应该注意,核的实际功耗可能不与P状态312 — 致或成比例。例如,由于诸如核功率泄漏、核基本功耗和/或其他因素等因素,使核的P状 态312翻倍可能不会使核的功耗翻倍。在某些实施例中,内核功率管理器114可以诸如通 过参考电源策略来确定和/或控制P状态312。每一核都包括表示核相对于总工作负载容量的工作负载的输出利用值(“输出效 用” )314。例如,输出效用314可以具有标度0-10000,其中0表示无利用,10000表示最大 利用。输出效用314可以通过将核效用310和ρ状态312相乘来计算。例如,核0 302包 括80 %的核效用和80 %的ρ状态,因此输出效用是6400。在某些实施例中,输出效用314 被内核功率管理器114用来确定核停止决定和/或确定ρ状态312设置,如参考电源策略。在某些实施例中,系统300可以包括核块316,如第一核块316(1)和第二核块 316(2),然而,可以在系统300中实现更多或更少的核块。核块316可以表示具有单个电路 且具有多个核的平台,如双核或多核处理器。每一核块316都可以包括独特的功耗特性。例 如,核可以包括当块中的任一个核被启动时出现的活动水平功耗、核泄漏,或其他功耗。例 如,如果第一核块316(1)中的两个核被启动并具有输出效用10000,则组合功耗可以是2χ 瓦特。如果第一核块316(1)中的核0 302随后被停止(例如,输出利用是0),而核1 304保 持不变,则由于诸如功率泄漏、活动功耗和/或其他因素之类的与核块316相关联的因素, 组合功耗可以大于χ瓦特。当核1随后被停止时,所产生的功耗可以是0瓦特。因此,停止 核以使得整个核块在其他核被随后停止之前变为停止是有利的,由此最大化功率节省。如图3Α所示,系统300的说明性实现包括核3 308停止,而其他核启动(即,活 动)。虽然核3包括100%的ρ状态,但这可能不表示电能被供给到核3。换言之,内核功率 管理器114可以停止一个核,同时使ρ状态处于大于0%的水平。在示例利用情形下,内核功率管理器114可以计算系统300的输出,以确定最 大总系统效用30000(即,3个已启动的核X 10000 = 30000)的总系统效用12600(艮口, 6400+3200+3000 = 12600)。上面所引用的利用数旨在解释可以使用总系统效用来执行的 计算的性质,由此不限于本发明。图3Β在经修订的系统318中示出了响应于如图3Α所示的总系统利用的对核利用的说明性修订。经修订的系统318包括对核302、304、306和308的停止/启动状态的修订。 如上文所指出的,参考系统300,在一示例中,计算出总系统效用为12600。因此,内核功率 管理器114可以在不降低该系统满足当前工作负载需求的能力的情况下停止其他核,因为 总系统效用小于两个核的最大利用容量(即,12600 < 20000)。根据某些实施例,内核功率 管理器114可以或许基于电源策略或其他因素来选择要停止的核,这对系统用户是完全透 明的。用户透明性包括没有用户可感知到的系统或应用程序性能影响,除其更佳的能源效 率的主要目标外。实现核停止所需的任何变化可被限于非常低级别的操作系统内部组件, 并因此对于与核停止相关联的最终用户而言没有行为或体验变化。当停止第二核时,经修订的系统的最大总系统效用将下降到20000(2个 核X 10000)。内核功率管理器114可以停止在先前状态(如图3A所示)中是活动的任一 个核。如上文所讨论的,停止核2 306以完全停止第二核块316 (2)可能是有利的,从而导致 核块320停止。因此,与停止核0 302或核1 304而不是核2 306相比,已停止的核块320 可以增加功率节省。为了适应对系统318的任何用户的透明变化,必须吸收已停止的核(核2)的输 出效用或将其重新分配到其余已启动的核(即,核O和核1)。从图3A中,核2的输出效 用是3000。因此,在一种情况下,已启动的核可通过使每一个核都具有经修改的输出效用 322 (假设对于每一个核的额外输出效用1500)来同等地共享负担。在某些情况下,当将效 用分配到已启动的核时,可以使用已停止的核的总效用的其他部分。例如,已启动的核可以 接近容量运行(总效用接近作为最大效用的10000)。在这样的情况下,具有较大的带宽的 核可以吸收更多的已停止的核的总效用。在一个或多个实施例中,内核功率管理器114可以分别将核0 302和核1304的核 效用310调整到79%和47%。另外,内核功率管理器114可以将两个已启动的核的ρ状态 312增大到100%。因此,经修订的系统318的总系统效用仍旧等于系统300的总系统效用 12600。经修订的系统318示出了对已停止/启动的状态、核效用310和/或ρ状态312的 一种可能的修订,以适应对用户透明同时导致经修订的系统318的功耗降低的核修订。然 而,可以在系统318中作出导致功耗降低并且对用户透明的许多其他修订。例如,核1 304 的核效用310可以增大到94%,而ρ状态降低到50%,从而导致总效用4700。修订策略可 由考虑内核功率管理器114和内核调度器116的竞争利益的电源策略来确定。可以在电源策略中实现可能影响经修订的系统318的其他考虑事项。例如,非时 间敏感线程(例如,后台线程)可能对核停止决定造成较少的影响,同时使变化对用户保持 透明。更具体而言,通过包括跨在给定核上执行的线程优先级的平均运行时的分布,内核功 率管理器114可以伸缩核的计算出的利用,以使得不会像高优先级线程和工作负载那样考 虑低优先级线程和工作负载。图4示出了评估线程调度和处理器的动态使用并确定处理器的修订配置的说明 性过程400的至少一个实施例的流程图。除操作系统108中和/或驻留在系统存储器106 上的其他模块之外,过程400可以由内核功率管理器114实现。根据一个或多个实施例,内核功率管理器114评估用于监视输出效用314(以及包 括核效用310、ρ状态312等其他因素)的时间段。可以选择等于、或长于可用于处理每一线程的时间片的时间段。内核功率管理器114可以按给定频率启动对核的监视。在404,内核功率管理器114可以计算总系统利用和最大总系统利用。内核功率管 理器114可以在406查阅电源策略以确定如何调整核使用,以平衡内核功率管理器114的 功率节省需求和内核调度器116和核可用性(处理性能)需求。在408,可以使用其他因素 来确定是否要调整核使用,如果是,则确定如何调整使用以实现系统目标,诸如对用户的透 明变化,适应热要求,和/或适应其他约束。在410,内核功率管理器114可以为核计算新配置。例如,内核功率管理器可以计 算新位掩码202,如2所示。在一个或多个实施例中,在410,可以调整位掩码以创建可用处 理器集218。在412,内核功率管理器114可以实现来自410的配置。在某些实施例中,过 程400可以重复以创建动态核分配,如通过以预定频率进行重复。或者,过程400可以在给 定时间段内创建静态核分配。说明性操作图5示出了提供功率知晓线程调度和处理器的动态使用的说明性过程500的至少 一个实施例的流程图。关于过程的排序和实现,过程500应该与图2的过程200类似地解 释。例如,过程500中描述操作的次序并不旨在解释为限制,并且任何数量的所描述的框可 以按任何次序和/或并行组合以实现该过程。出于讨论的目的,过程500参考图1所示的 系统100来描述。根据一个或多个实施例,“时间校验(TimeCheck),,周期性的评估例程可以从502 开始。例如,延迟过程调用(DPC)可以从502开始。在某些实施例中,经由以固定周期性速 率(通过时间值的电源策略参数“时间校验”配置的,如100毫秒、50毫秒或另一个时间值) 运行的DPC,在每一核上输入状态机。在504,内核功率管理器114可以收集核的度量。例 如,DPC被排到每一当前活动核以抓取活动核的度量。度量可以包括核利用、线程优先级分 布、每一个核的就绪线程的平均等待时间,和/或空闲状态驻留的成功和失败度量,还有其 他可能的度量。在506,内核功率管理器114可以计算诸如核停止掩码204之类的位掩码。例如, 可以基于利用阈值、电源策略,和/或任何依赖关系来为目标数量的活动核计算新的值。在 508,可以更新活动集,如通过实现由内核功率管理器114管控的过程200以创建可用处理 器集218。在510,可以由操作系统108实现活动集。在512,内核功率管理器114可以确定 是否已经添加了(已启动的)核。如果启动了核,则可以在514通知内核调度器116,并可 以开始使用已启动的核来调度线程。这些已启动的核可以是远程线程调度(即,从不同的 处理器)的目标,或者可以主动地选择从其他处理器选择线程。在某些实施例中,可以重新 分配线程以便在已启动的核上运行,由此减少来自其他已启动的核的工作负载。在516,可以由内核功率管理器114计算预期核输出利用,并且该核输出利用可以 包括来自506的已启动的核。由此,使用对应于在506确定的活动核的数量的新的值来计 算预期处理器利用。在518,内核功率管理器114可以计算ρ状态的新的值。在某些实施例 中,在每一个核上调度DPC以更新其目标ρ状态。在一示例中,如果预期利用提高,则在没 有核启动的情况下(在512)p状态值还可以增大。然而,如果在512启动核,则ρ状态可以 增大或缩小,以平衡内核调度器116的处理需求和内核功率管理器114的功率节省需求。
11
在520,内核功率管理器114基于518处的结果来确定是否应该修订ρ状态和/或 t状态(线性扼流状态)当前值。如果在520修改ρ状态和/或t状态,则在522,内核功 率管理器114可以将过渡DPC排到受影响的核。由此,由内核调度器116调度的线程可以 被调度到以如在520实现的新ρ状态和/或t状态运行的核。在524,内核功率管理器114确定在506是否停止了核。例如,来自516的预期核 输出利用可能小于当前利用。如果在524已经停止核,则内核功率管理器114可以在526 通知内核调度器116终止将线程调度到新停止的核。对于添加或移动到活动核掩码的任何 核,为该核调度DPC。如参考图3A和3B所描述的,可以将来自已停止的核的工作重新分配 到一个或多个已启动的核。在某些实施例中,可以将新已停止的核置于可用的最深c状态。 最后,在528,可以重复过程500。图6示出了提供功率知晓线程调度和处理器的动态使用的说明性过程600的至少 一个实施例的另一个流程图,还包括域空闲考虑。过程600包括如图5所描述的许多子过 程,因此,将不描述图5中的那些子过程。在602,内核功率管理器114可以确定是否启用域空闲考虑。如果启用域空闲考 虑,则在604,域主抓取域(例如,核块316或所有核)的度量。在某些实施例中,在606,域空闲考虑可以发起另一个决定。如果启用域空闲考虑, 则在608,内核功率管理器114可以计算域目标ρ状态。最后,在610,可以重复过程600。图7示出了提供用于功率知晓线程调度和处理器的动态使用的附加电源策略设 置及其他输入的过程700的至少一个实施例的流程图。在某些实施例中,核停止可被实现 为对计算用于处理器性能状态的目标状态的现有状态机的增强。将基于多个因素来确定要 在任何给定时刻使用的核的正确数量,如下面参考过程700所描述的。根据一个或多个实施例,在702,可以使用当前电源策略来设置要利用的核数量。 在704,可以设置核的最小或最大数量。内核功率管理器114可以计算以能量高效的方式完 成给定工作负载所需的活动核的数量。在某些情况下,运行最小数量的核可以有益于功率 节省,并有益于内核功率管理器114。相反,运行最大数量的核可以提供最高性能水平,由此 有益于内核调度器116。在706,可以由内核功率管理器114使用子过程706(1)……706(4)中的一个或多 个来实现用于核停止的附加电源策略参数。在706(1),可以调整用于停止和/或启动核的 必需时间间隔。例如,可以通过改变间隔来操纵停止和/或启动核的频率。在某些实施例 中,可以在第一间隔停止核,而在第二间隔启动核。例如,偏爱功率节省的策略可以频繁地 如每隔100毫秒停止核,可以只可每隔500毫秒启动核。在706 (2),内核功率管理器114可以实现增大和/或减小策略。例如,第一策略选 项可以一次只停止设定数量的核,如一次一个核。第二策略选项可以停止或启动核以实现 理想的核利用,由此一次停止和/或启动多个核。第三策略可以转到一个极端或另一个极 端(或者尽可能多地停止,或者尽可能多地启动)。在706 (3),可以基于处理器的忙碌度来增大或减小所需利用阈值。例如,处理器可 以直到该处理器(或其他处理器)在给定时间段内包括忙碌状态才经历停止或启动状态变 化。这可以使处理器减少在停止和启动状态之间快速连续翻转。最后,在706(4),可以实现用于伸缩已启动的核的策略。例如,内核功率管理器114可以基于当前活动集中的处理器核的数量来计算理想的目标处理器性能状态。为在 功率节省、性能,以及对特定工作负载的响应性之间提供最佳折衷,内核功率管理器114可 以有利地以较高性能状态运行较小数量的处理器,或相反以较低性能状态运行较大数量的 核。在708,可以由内核功率管理器114使用子过程708(1)和708 (2)中的一个或多 个来实现核和/或系统试探。在708(1),内核功率管理器114可以基于深处理器空闲功率 状态(休眠状态)的成功使用来计算所需活动核的数量以及活动使用中的核的最佳性能状 态。这可以使内核功率管理器能够检测何时没有跨活动(已启动的)核集合高效地使用较 深的空闲状态。为节能而仍提供性能,将更多核置于停止状态,并且提高其余活动核的性能 状态以确保工作被高效地执行是有益的。在708(2),可以使用平均等待时间以使得准备好将线程分配(分派)给核。例 如,内核功率管理器114可以通过使用处于就绪状态的线程的平均等待时间的分布来计算 所需处理器核的数量,这允许内核功率管理器伸缩使用中的核的数量以减少处于就绪状态 的线程能够运行之前的等待时间,由此提高性能和响应性。在一示例中,当大量线程需要运 行时,在降低核的P状态的同时启动核是有利的,因为每一个核一次只能处理一个线程。由 此,在某些情况下,更多核可用性将使得能够处理大量线程。在710,内核功率管理器114可以使用空闲状态依赖性来调整核停止实现。当内核 功率管理器114选择应该停止或启动哪些特定核时,它将首先检查核的空闲状态依赖关系 以确定哪些核可以共享电源或时钟资源,并基于共享控制来以最高能效方式选择停止或启 动核。在712,在确定是否要停止或启动一个或多个核时,可以考虑性能和扼流状态关 系。共享性能状态或节流控制的核可以一起停止或启动,以实现更大的能效。在714,可以考虑核封装(块)关系,如图3A和3B中所描述的关于核块的效率的 依赖性,且更具体而言,在停止一新核块中的另一个核之前停止一核块。最后,在716,在实 现核停止考虑事项时,内核功率管理器114可以使用存储器位置。例如,两个或更多核可以 具有封装关系,诸如这些核共享具有共享存储体(例如,NUMA(非均勻存储器存取)节点) 的物理处理器封装。与不共享共享的存储体的核相比,共享的存储体可以允许核具有减少 的存储器存取时间。结论上文所描述的技术、系统和装置涉及提供功率知晓线程调度和处理器的动态使 用。虽然已经用对结构特征和/或方法动作专用的语言描述了这些技术、系统和装置,但是 应该理解,所附权利要求不必限于所述的具体特征或动作。相反,这些具体特征和动作是作 为实现这些技术和装置的示例性形式而公开的。
权利要求
一种用于平衡具有多个核的计算设备的性能和功率节省的方法,包括定义使用哪些核(202、204)来处理工作;确定电源策略(210、214、406)以便对已定义的和未定义的核启动性能和功率节省计划;以及基于所述电源策略来停止所述未定义的核(222)中的至少一个。
2.如权利要求1所述的方法,其特征在于,所述确定电源策略还包括 创建核停止掩码(202);确定线程处理器亲和性(210);通过组合所述核停止掩码和所述线程处理器亲和性掩码(214)以创建可用处理器集 (220),来为所述核提供所述性能和功率节省计划的至少一部分;以及 基于所述可用处理器集和活动地处理工作的核(222)来计算停止或启动哪些核。
3.如权利要求2所述的方法,其特征在于,所述确定电源策略作为迭代过程(210、214、 220)动态地进行。
4.如权利要求1所述的方法,其特征在于,还包括基于所述电源策略(512)来伸缩所述 已定义的核中的至少一个。
5.如权利要求4所述的方法,其特征在于,所述伸缩所述已定义的核中的至少一个包 括调整核的核效用或功率状态(P状态)中的至少一个以增加功率节省(512)。
6.如权利要求1所述的方法,其特征在于,所述停止所述未定义的核中的至少一个包括确定已启动的核块是否包括已停止的核(316(2));以及如果确定所述已启动的核块具有所述已停止的核,则停止所述已启动的核块中的至少 一个已启动的核(320)。
7.如权利要求1所述的方法,其特征在于,还包括使用下列各项中的至少一个来修改 所述电源策略核和系统试探(708); 处理器依赖关系(710、714、718);以及 用于核停止的核策略参数(706)。
8.一种方法,包括监视多核系统中的核活动(402);检索用于所述多核系统的电源策略(406),所述电源策略平衡所述多核系统中的每一 个核的功率节省和处理性能;以及基于所述电源策略(412),响应于所述核活动来停止至少一个核。
9.如权利要求8所述的方法,其特征在于,所述停止核包括将核功率状态降低到最小 功率处理器空闲功率状态(C状态)(524)。
10.如权利要求8所述的方法,其特征在于,还包括调整所述多核系统中的至少一个已 启动的核的功率状态(520)。
11.如权利要求8所述的方法,其特征在于,所述响应于所述核活动来停止至少一个核 是以预定频率动态发起的(502、524)。
12.如权利要求8所述的方法,其特征在于,所述监视多核系统中的核活动是在预定时间段内进行的(402),并且其中所述响应于所述核活动来停止至少一个核是响应于所监视 的核活动检测到的功率节省机会动态地进行的(210、214、220)。
13.如权利要求8所述的方法,其特征在于,所述响应于所述核活动来停止至少一个核 包括将工作转移到已启动的核,如与程序调度相关联的亲和性掩码所允许的(712、714)。
14.如权利要求8所述的方法,其特征在于,还包括修订所监视的核活动以创建经修订的核活动(508);基于所述电源策略(512),响应于所述经修订的核活动来启动至少一个核;以及将至少一个线程重新分配到所述至少一个已启动的核(514)。
15.一种多逻辑处理器系统,包括多个处理器(104);以及耦合到所述多个处理器的控制器(106),所述控制器实现性能调度;实现功率节省策略;以及通过停止所述多个处理器中的一个或多个来平衡所述性能调度和功率节省策略。
16.如权利要求15所述的系统,其特征在于,所述控制器从驻留在系统存储器中的内 核功率管理器(114)接收实现所述功率节省策略的指令。
17.如权利要求15所述的系统,其特征在于,所述功率节省策略(702)包括核停止掩码 (202),所述核停止掩码与程序模块调度组合以确定其上调度工作的所得处理器集(116、 220)。
18.如权利要求15所述的系统,其特征在于,所述多个处理器包括具有多个核的至少 一个核块(300)。
19.如权利要求18所述的系统,其特征在于,平衡所述性能调度和功率节省策略包括 为具有至少一个已停止的核的核块中的已启动的核创建核停止优先化(318、714)。
20.如权利要求15所述的系统,其特征在于,还包括调整至少一个已启动的核的功率 状态(520)。
全文摘要
公开了用于提供功率知晓线程调度和处理器的动态使用的技术和装置。在某些方面,监视多核系统以确定核活动。可以将核活动与平衡功率节省计划与性能计划的电源策略进行比较。一个或多个核可响应于该比较而停止以降低多核系统的功耗。在其他方面,可以在预定间隔执行功率知晓调度以动态停止或启动核。其他方面包括响应于核活动与电源策略的比较来调整已启动的核的功率状态。
文档编号G06F12/00GK101981529SQ200980112179
公开日2011年2月23日 申请日期2009年2月16日 优先权日2008年3月28日
发明者A·J·瑞茨, A·U·基什安, A·马歇尔, N·S·贾齐, Y·邓 申请人:微软公司