用于节能的基于软件的线程重映射的制作方法
【专利说明】用于节能的基于软件的线程重映射
[0001] 本申请是申请人于2009年12月8日提交的,申请号为200910258390. 1,发明名称 为"用于节能的基于软件的线程重映射"的发明专利申请的分案申请。
[0002] 背景
[0003] 在所有细分种类的基于计算机的系统中,功率和热管理要比以前更具有挑战性。 而在服务器领域,电的成本驱使人们需要低功率系统,在移动系统中电池寿命和热限使这 些问题相关。可以在不活动或另外不需要的时候,通过减少提供给全部或部分计算系统的 电力来实现最高性能和最小功耗的基于计算机的系统的管理。
[0004] 计算机的一种功率管理标准是2006年10月10日出版的"高级配置和功率接口 (ACPI)标准",例如,Rev. 3.0b,该标准定义了一种接口,该接口允许操作系统(OS)控制硬 件元件。许多现代操作系统使用ACPI标准来执行计算系统的功率和热管理。ACPI实施使 得核心(core)可处于不同的节能状态(也称为低功率或空闲状态),一般称之为所谓的Cl 到Cn状态。
[0005] 当核心处于活动时,它以所谓的CO状态运行,但是当核心处于空闲时,操作系统 试图使它能节约的功率量与进入和退出给定状态的额外开销之间保持平衡。因此,Cl表示 具有最少节能但是几乎可以立即开机和关机的低功率状态(因此,称之为"浅低功率"或 "浅空闲"状态),而深低功率状态(例如,C3、C6或C7)表示根据硅实施静功耗可忽略不计 的功率状态,但是进入这个状态和响应于活动性(即,回到活动CO)的时间是相当长的。注 意,不同的处理器可以包括不同数量的核心C 一状态,每个C 一状态映射到一个ACPI C - 状态。即,多个核心C 一状态可以映射到相同的ACPI C -状态。
[0006] 当前操作系统C 一状态策略可能不会提供最有效的性能结果,因为当前操作系统 C 一状态策略可能没有考虑同一封装中其它核心的活动。尤其,当前操作系统C 一状态策略 不能得到效率方面的优点,这个效率方面的优点是通过更紧密地跟踪和管理运行在同一封 装的不同核心上的各种线程的功率状态可以获得的。即,核心的一个硬件线程可以处于深 低功率状态,而核心的另一个硬件线程可以是活动的。根据当前操作系统C 一状态策略,核 心不能进入深低功率状态,除非核心上的所有线程都处于深低功率状态。如果多个核心都 经历这个情况,则没有核心可以进入深低功率状态(即使多个硬件线程是不活动的)。
【附图说明】
[0007] 图1是框图,示出执行所揭示技术的至少一个实施例。
[0008] 图2是根据至少一个实施例的、表示重映射例子视图之前和之后的数据流框图。 [0009] 图3是数据流和控制流图,示出执行基于软件的线程一跳跃的、供在包括两个双 线程核心的采样系统上节能的方法的至少一个实施例。
[0010] 图4是流程图,示出执行基于软件的线程一跳跃的、供节能的方法的至少一个实 施例。
[0011] 图5是根据本发明至少一个实施例的系统的框图。
[0012] 图6是根据本发明至少另一个实施例的系统的框图。
[0013] 图7是根据本发明至少另一个实施例的系统的框图。
【具体实施方式】
[0014] 各个实施例正确地和实时地对核心执行线程的基于软件的逻辑重映射,有效地对 同一核心"交换"空闲线程以使核心可以进入低功率状态。更具体地,操作系统可以执行逻 辑重映射和任务牵引(task pulling),把任务从一个核心上的一个硬件线程上下文拉到不 同核心上的另一个硬件线程上下文。如果硬件线程上下文已准备好转换到低功率状态,则 操作系统就可以确定封装中的任何其它线程上下文是否也处于低功率状态。然后操作系统 就可以执行基于软件的逻辑重映射,以对同一核心交换一个或多个低功率线程上下文作为 第一低功率线程,并且如果合适的话,使活动线程从该核心交换到另一个核心。当已经完 成了交换以致映射到特定核心的所有线程上下文都处于低功率状态时,核心本身也可以处 于低功率状态。如这里所使用的,术语"线程"是指软件线程。在这里可以互换地使用术语 "逻辑CPU"、"逻辑处理器"、"硬件线程上下文"和"线程单元"来指可在其上执行软件线程的 硬件线程上下文。下面结合图2更详细地描述硬件线程上下文的至少一个实施例(见Lh 和LP1的讨论)。对于该实施例,线程单元可以包括核心的一部分,例如,多线程SMT核心的 SMT (同步多线程)逻辑处理器。然而,对于其它实施例,线程单元可以包括,例如,整个单线 程核心。
[0015] 对于至少一个实施例,可以结合现有的操作系统机制使用这里所讨论的交换方案 的实施例,以便以最少成本(根据功率和/或时间)得到这些核心上的任务的调度。各个 实施例连同操作系统C 一状态和调度策略可用于操作系统内核(kernel)代码。另一方面, 一个或多个实施例可以用于具有对操作系统C一状态和调度机构的接口的平台固件。
[0016] 注意,这里描述的处理器核心C 一状态是,例如,可从美国加州圣克拉拉市Intel 公司得到的、诸如那些基于IA - 32架构和IA - 64架构的处理器,虽然各个实施例可以同 样地使用其它处理器。下面表1中所示出的是一个实施例中可用的核心C一状态的示例指 定,而表2把这些核心C 一状态映射到相应的ACPI状态。然而,可以理解,本发明的范围并 不局限于这个方面。
[0017] 现在参考图1,所示出的是根据至少一个实施例的系统10的框图,系统10采用交 换机制基于功率状态信息使线程从一个核心上的一个逻辑处理器迀移到不同核心上的不 同逻辑处理器。如图1所示,系统10包括具有多个处理器核心25。一 25 n_i (通常为核心25) 的处理器封装20。在从双核封装到可能包括大量核心的多核封装的不同实施方式中,核心 的数量会变化。图1中通过虚线表示附加核心的任选性质。每个核心25可以包括各种逻 辑和控制结构,以响应于指令而执行对数据的操作。虽然只示出了一个封装20,但是包括多 个封装的计算系统也可以采用所描述的方法和机制。
[0018] 对于至少一个实施例,一个或多个核心25可以支持每个核心多个硬件线程上下 文。(例如,参见图2的系统250,其中每个核心252支持每个核心两个硬件线程上下文)。 不应该把这个实施例作为限制,因为熟悉本领域的技术人员可以理解每个核心可以支持两 个以上的硬件线程上下文。
[0019] 图1示出了计算系统10可以包括附加的元件。例如,除了封装硬件20之外,系统 10还可以包括固件层30,固件层30可以包括BIOS (基本输入一输出系统)。计算系统10还 可以包括热和功率接口 40。对于至少一个实施例,热和功率接口 40是硬件/软件接口,诸 如由上述2006年10月10日出版的、"高级配置和功率接口(ACPI)标准",例如,Rev. 3.0b, 定义的接口。ACPI规范描述平台寄存器、ACPI表(例如,42)以及ACPI BIOS的操作。图I 示出这些ACPI组件的集合,一方面,在逻辑上作为封装硬件结构20和固件30之间