包括线程合并的用于能效和节能的方法、装置和系统的利记博彩app

文档序号:6498106阅读:374来源:国知局
包括线程合并的用于能效和节能的方法、装置和系统的利记博彩app
【专利摘要】本申请中描述了用于线程合并的装置、方法和系统。确定当前处理器利用率。并且,根据处理器利用率和其它提取参数来标识合并机会,诸如估计合并之后的新利用率,基于新的利用率来确定是否将出现功率节省,并执行线程到活动处理元件的子集的迁移/合并。一旦执行合并,则将现在空闲的非子集处理元件断电以节能,并提供能源高效的执行环境。
【专利说明】包括线程合并的用于能效和节能的方法、装置和系统

【技术领域】
[0001]本公开涉及集成电路中的能效和节能以及在集成电路上执行的代码,更具体地但不排他地涉及线程合并。

【背景技术】
[0002]半导体处理和逻辑设计的进步已允许在集成电路器件上可能存在的逻辑量的增力口。因此,计算机系统配置已经从系统中的单个或多个集成电路进化至各个集成电路上的多个硬件线程、多个核、多个设备和/或完整的系统。此外,随着集成电路密度增长,计算系统(从嵌入式系统到服务器)的功率需求也逐步提高。此外,软件低效率及其对硬件的要求也已造成了计算设备能耗的提高。实际上,一些研究表明计算机消耗了美国全部电力供应的大部分。
[0003]因此,存在对与集成电路相关联的能效和节能的关键需求。而且,随着服务器、桌面计算机、笔记本、超极本、平板、移动电话、处理器、嵌入式系统等等变得更加流行(从包括在典型的计算机、汽车和电视中到生物技术),计算设备销售的影响已然超出能耗的范围而延伸至对经济系统存在显著、直接的影响。当功耗变得更加重要时,总是趋向于提高性能的趋势将要与功耗考虑相互平衡。
[0004]一些时候,在处理器操作期间,并非所有处理器都被使用(例如,并非所有可用硬件线程都同时操作)。实际上,当前操作系统(OS)调度器典型地将工作分散在可用的处理元件之间(例如核之间),以确保最高性能(即每个核专用于在多线程化的工作负荷的较小部分上工作)。此外,仅当所有核都活动并且在工作时,OS调度器才开始将更多工作调度至核。因此,即使数量更少的处理元件(诸如核)可能能够适合一工作负荷,但所有的核都保持活动以确保性能。因此,可以看出,当前的物理处理器不包括用于在线程调度方面支持功率与性能的权衡的特定机制。

【专利附图】

【附图说明】
[0005]本发明通过示例进行说明,而且不旨在受限于附图的各图。
[0006]图1示出包括具有多个处理元件(2个核和4个线程槽)的处理器的系统的逻辑表示的实施例。
[0007]图2示出计算机系统配置的逻辑表示的实施例。
[0008]图3示出计算机系统配置的逻辑表示的另一实施例。
[0009]图4示出计算机系统配置的逻辑表示的另一实施例。
[0010]图5示出适于将软件线程合并成处理元件的子集以实现能源高效节能的设备的逻辑表示的实施例。
[0011]图6示出用于高效地执行线程合并的流程图的实施例。

【具体实施方式】
[0012]在以下描述中,陈述了多个特定细节,诸如特定类型的处理器和系统配置的示例、特定硬件结构、特定架构和微架构细节、特定寄存器配置、测量和估计处理元件活动的特定方法、特定的、特定核和线程配置、特定模块、特定活动度量、特定活动阈值和范围、特定数量的核和硬件线程等等,以提供对本发明的透彻理解。然而对本领域普通技术人员显而易见的是,不一定要采用这些特定细节来实施本发明。在其它实例中,未详细描述公知的组件或方法,诸如特定和替代的处理器架构、用于所描述算法的特定逻辑电路/代码、特定固件代码、特定互连操作、用于活动测量的特定逻辑、特定迁移和上下文切换技术、特定功率状态和门控技术/逻辑、特定功耗测量和估计、特定操作系统(OS)调度器技术和频率要求、以及处理器的其它特定操作细节,以避免不必要地模糊本发明。
[0013]虽然参考特定集成电路中(诸如计算平台或微处理器中)的节能和能效描述了以下实施例,但其它实施例可适用于其它类型的集成电路和逻辑器件。在此描述的实施例的相似的技术和教导可适用于也可受益于更好能效和节能的其它类型的电路或半导体器件。例如,所公开的实施例不限于桌面计算机系统。也可用于其它设备,诸如手持式设备、芯片上系统(SOC)以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、因特网协议设备、数码相机、个人数字助理(PDA)、手持式PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可执行以下教导的功能和操作的任何其他系统。此外,本申请中描述的装置、方法和系统不限于物理计算设备,而是也涉及用于节能和能效的软件优化。如将在以下描述中容易变得明显地,本申请中描述的方法、装置和系统的实施例(不论是参考硬件、固件、软件还是其组合)对于与性能考虑相平衡的“绿色技术”未来是关键的。
[0014]本申请中描述的方法和装置用于线程合并以提供能源高效节能。具体地,在下文中主要参考多核微处理器以及在其中的节能来讨论线程合并。不过,本申请中描述的装置和方法不限于此,因为它们可结合任何集成电路器件来实现。例如,下文中描述的线程合并技术可用于执行多个线程的多核图形处理器。换言之,本申请通篇中讨论的方法、装置和技术可用于包括用于处理多个软件线程的多个处理元件的任何设备。例如,它可用于小形状因数设备、手持式设备、SOC或嵌入式应用,如上所讨论的。此外,线程合并技术可用于多处理器系统(例如,从计算平台中的多个物理处理器合并软件线程或在计算平台中的多个物理处理器内积聚软件线程,而并非在单个设备的多个处理元件之间合并软件线程)。
[0015]参考图1,示出了包括多个核的处理器的实施例。处理器100包括任何处理器或处理设备,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、芯片上系统(SOC)或用于执行代码的其它器件。在一个实施例中,处理器100包括至少两个核——核101和102,这两个核可包括不对称核或对称核(所示实施例)。然而,处理器100可包括任何数量的处理元件,这些处理元件可以是对称的或不对称的。
[0016]在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核、和/或能保持处理器的诸如执行状态或架构状态之类的状态的任何其它元件。换言之,在一个实施例中,处理元件指的是能够与诸如软件线程、操作系统、应用、或其它代码之类的代码独立地相关联的任何硬件。物理处理器通常指的是集成电路,其可能包括任意数量的诸如核或硬件线程之类的其它处理元件。
[0017]核通常指的是位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少某些专用执行资源相关联。与核相反,硬件线程通常指的是位于集成电路上的能维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。可以看出,当某些资源是共享的而其它资源是架构状态专用时,硬件线程与核的术语之间的界线交叠。不过通常,核和作为核的线程集合的部分的硬件线程被操作系统视为各个逻辑处理器,其中操作系统能够分别在每个逻辑处理器上调度操作。
[0018]如图1中所示的物理处理器100包括两个核,即核101和102。在此,核101和102被视为对称核,即具有相同配置、功能单元和/或逻辑的核。在另一实施例中,核101包括无序处理器核,而核102包括有序处理器核。然而,可从任何类型的核中分别选择核101和102,诸如原生核、软件管理的核、适于执行原生指令集架构(ISA)的核、适于执行经转换指令集架构(ISA)的核、共同设计的核或其它已知核。不过为了进一步讨论,在下文中更详细描述了核101中示出的功能单元,因为核102中的单元以相似的方式操作。
[0019]如所描绘,核101包括两个硬件线程IOla和101b,它们可被称为硬件线程槽IOla和101b。因此,在一个实施例中,诸如操作系统之类的软件实体可能将处理器100视为四个单独的处理器,即能够同时执行四个软件线程的四个逻辑处理器或处理元件。此外,第一线程与架构状态寄存器IOla相关联,第二线程与架构状态寄存器IOlb相关联,第三线程可与架构状态寄存器102a相关联,以及第四线程可与架构状态寄存器102b相关联。在此,架构状态寄存器(101a、101b、102a和102b)中的每一个可被称为处理元件、线程槽或线程单元,如上所述。如上所述,架构状态寄存器IOla被复制在架构状态寄存器IOlb中,因此能够为逻辑处理器IOla和逻辑处理器IOlb存储各个架构状态/上下文。在核101中,也为线程IOla和IOlb复制其它较小的资源,诸如重命名分配器逻辑130中的指令指针和重命名逻辑。诸如重排序器/引退单元135中的重排序缓冲器、ILTB 120、加载/存储缓冲器、以及队列之类的一些资源可通过分区来共享。诸如通用内部寄存器、页表基本寄存器、低级数据高速缓存和数据TLB 115、执行单元140、以及无序单元135的多个部分之类的其它资源可能被完全共享。
[0020]处理器100通常包括其它资源,这些其它资源可被完全共享、通过分区共享、或由处理元件专用/专用于处理元件。在图1中,示出了具有处理器的说明性的逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任一个,并包括未描绘出的任何其它已知的功能单元、逻辑或固件。如所示,核101包括简化的表示性的无序(000)处理器核。但是,在不同实施例中可利用有序处理器。000核包括用于预测要执行/采用的分支的分支目标缓冲器120和用于存储指令的地址转换条目的指令转换缓冲器(1-TLB)120。
[0021]核101进一步包括耦合至取出单元120的解码模块125,用于解码取出的元素。在一个实施例中,取出逻辑包括分别与线程槽IOlaUOlb相关联的各个序列发生器。通常,核101与第一指令集架构(ISA)相关联,第一指令集架构(ISA)定义/指定能在处理器100上执行的指令。通常,作为第一 ISA的部分的机器代码指令包括该指令的部分(称为操作码),该部分引用/指定要执行的指令或操作。解码逻辑125包括电路,所述电路根据这些指令的操作码来识别这些指令并在流水线中传递经解码的指令,以供按照第一 ISA定义地那样来处理。例如,如下文更详细讨论地,在一个实施例中,解码器125包括设计成或适合于识别诸如事务性指令之类的特定指令的逻辑。作为解码器125识别的结果,架构或核101采取特定、预定义的动作以执行与适当指令相关联的任务。重要的是应注意,本申请中描述的任务、块、操作和方法中的任一个可响应于单个或多个指令来执行;它们中的一些可以是新的或旧的指令。
[0022]在一个示例中,分配器和重命名器块130包括用于预留资源的分配器,诸如用于存储指令处理结果的寄存器组。然而,线程IOla和IOlb可能能够无序地执行,在此情况下,分配器和重命名器块130也预留其它资源,诸如用于跟踪指令结果的重排序缓冲器。单元130也可包括寄存器重命名器,用于将程序/指令引用寄存器重命名为处理器100内部的其它寄存器。重排序器/引退单元135包括诸如上述的重排序缓冲器、加载缓冲器以及存储缓冲器之类的组件,以支持无序执行和无序执行的指令的稍后有序引退。
[0023]在一个实施例中,调度器和执行单元块140包括调度器单元,用于在执行单元上调度指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器组,用于存储信息指令处理结果。示例性的执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元以及其它已知的执行单元。
[0024]较低级数据高速缓存和数据转换缓冲器(D-TLB) 150耦合至执行单元140。数据高速缓存用于存储诸如数据操作数之类的最近使用/操作的元素,这些元素可能以存储器一致性状态被保持。D-TLB用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分解成多个虚拟页。
[0025]在此,核101和102共享对较高级或进一步远离的高速缓存110的访问,较高级或进一步远尚的闻速缓存用于闻速缓存最近取出的兀素。注意,较闻级或进一步远尚的闻速缓存指的是从执行单元提高或进一步远离执行单元的高速缓存级。在一个实施例中,较高级的高速缓存110是末级数据高速缓存——处理器100上的存储器层次中的最后一级高速缓存,诸如二级或三级数据高速缓存。然而,较高级高速缓存110不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,跟踪高速缓存——一种类型的指令高速缓存一可耦合在解码器125之后以存储最近解码的踪迹。
[0026]在所描绘的配置中,处理器100还包括总线接口模块105。在过去,下文更详细描述的控制器170已被包含在处理器100外部的计算系统中。在该情形下,总线接口 105用于与处理器100外部的设备通信,这些设备诸如系统存储器175、芯片组(通常包括用于连接至存储器175的存储器控制器中枢和用于连接外围设备的I/O控制器中枢)、存储器控制器中枢、北桥或其它集成电路。并且,在此情形下,总线105可包括任何已知的互连,诸如多分支总线、点对点互连、串行互连、并行总线、一致(例如高速缓存一致)总线、分层协议架构、差分总线以及GTL总线。
[0027]存储器175可专用于处理器100,或与系统中的其它设备共享。存储器175的类型的常见示例包括动态随机存取存储器(DRAM)、静态RAM (SRAM)、非易失性存储器(NV存储器)以及其它已知的存储设备。注意,设备180可包括耦合至存储器控制器中枢的图形加速器、处理器或卡、耦合至I/O控制器中枢的数据储存器、无线收发机、闪存设备、音频控制器、网络控制器或其它已知设备。
[0028]然而应注意,在所描绘的实施例中,控制器170被示为处理器100的部分。最近,随着更多的逻辑和器件被集成在诸如芯片上系统(SOC)之类的单个管芯上,这些器件中的每一个器件可被包含在处理器100上。例如,在一个实施例中,存储器控制器中枢170在与处理器100相同的封装和/或管芯上。在此,核的部分(核上部分)包括一个或多个控制器170,用于与诸如存储器175或图形器件180之类的其它器件相连接。包括互连和用于与此类器件相连接的控制器的该配置通常被称为核上(或非核配置)。作为示例,总线接口105包括环形互连,该环形互连具有用于与存储器175相连接的存储器控制器,以及用于与图形处理器180相连接的图形控制器。不过,在SOC环境下,可在单个管芯或集成电路上集成甚至更多的器件,诸如网络接口、协处理器、存储器175、图形处理器180以及任何其它已知的计算机器件/接口,以提供具有高功能性和低功耗的小形状因数。
[0029]在一个实施例中,处理器100能够执行编译器、优化和/或转换器代码177以编译、转换和/或优化应用代码176,以支持本申请中描述的装置和方法或与本申请中描述的装置和方法相连接。编译器通常包括用于将源文本/代码转换成目标文本/代码的程序或程序集合。通常,利用编译器对程序/应用代码的编译是在多个阶段和多次运行中完成的,以将高级编程语言代码转换成低级机器或汇编语言代码。不过,对于简单编译,仍可利用单次运行编译器。编译器可利用任何已知的编译技术,并执行任何已知的编译器操作,诸如词法分析、预处理、解析、语义分析、代码生成、代码转换以及代码优化。
[0030]更大的编译器通常包括多个阶段,但多数时候这些阶段被包括在两个一般阶段中:(1)前端,一般而言,即在其中可进行语法处理、语义处理以及一些转换/优化,(2)后端,一般而言,即在其中可进行分析、转换、优化以及代码生成。一些编译器指的是中端,其示出了编译器的前端与后端之间的界定的模糊。因此,对插入、关联、生成或编译器的其它操作的引用可在编译器的上述阶段或运行中的任一个以及任何其它已知的阶段或运行中进行。作为说明性示例,编译器可能在编译的一个或多个阶段中插入操作、调用、函数等等,诸如在编译的前端阶段插入调用/操作,然后在转换阶段期间将这些调用/操作转换成较低级代码。注意,在动态编译期间,编译器代码或动态优化代码可插入这样的操作/调用,并优化代码以供在运行时间期间执行。作为特定的说明性示例,可在运行时间期间动态地优化二进制代码(已经是经编译的代码)。在此,程序代码可包括动态优化代码、二进制代码或其组合。
[0031]与编译器类似,诸如二进制转换器之类的转换器将代码静态地或动态地转换以优化和/或转换代码。因此,对代码、应用代码、程序代码或其它软件环境的执行的引用可表示:(1)执行编译器程序、优化代码优化器或转换器,以动态地或静态地编译程序代码、维护软件结构、执行其它操作、优化代码或转换代码;(2)执行包括操作/调用的主程序代码,诸如已经被优化/编译的应用代码;(3)执行与主程序代码相关联的其它程序代码(诸如库),以维护软件结构、执行其它软件相关操作、或用于优化代码;或(4)上述的组合。
[0032]在一个实施例中,处理器100能够在处理元件之间合并线程。或者,在其它实施例中,处理器100能够支持软件(例如操作系统)在处理元件之间迁移/合并线程。例如,当处理器100轻载时,它能够将线程迁移至更少数量的核,使得其它核能够断电以实现能源高效节能。在该情形下,处理器100首先标识线程合并机会。在此,这样的机会可能仅仅在硬件线程槽可用时存在(例如硬件线程槽IOla和102a被占据,而线程槽IOlb和102b可用)。因此,在简单情况下,线程合并机会存在,其中可将所有当前有效线程迁移至核101或和102。余下核(并未执行任何有效线程)可断电。
[0033]然而,在一个实施例中,对用于迁移线程的机会的标识和确定更深入。例如,标识可考虑单个因素或多个因素的组合,诸如处理元件可用性、处理元件行为、合并的热衍生项、来自合并的功耗提高/降低、来自线程合并的核/线程行为、来自合并的频率提高/降低、等等。作为特定的说明性示例,假定硬件线程IOla和IOlb被软件线程占据。在此,确定线程IOla和IOlb的当前线程利用率(例如一段时间上活动的循环数量)。并根据当前线程利用率,估计/预测在将线程合并至一个核(诸如核101)之后新的线程利用率(和/或功耗)将会如何。根据该新的线程利用率和/或功耗(例如在合并之后功耗将会更低),确定有机会将线程IOlb迁移至核101以节能,同时仍能够在处理器100上容纳当前工作负荷。
[0034]根据该说明性示例,可以看出迁移和合并机会的标识如何可以是简单的或复杂的。在上述情形下,基于对核101上的线程积聚的功率效果的估计来作出合并决策,对线程积聚的功率效果的估计是根据将核102断电相较于将核101的频率提高以处理积聚工作负荷的功率影响来确定的;工作负荷中的一些是在断电前从核102迁移而来的。然而,结合纯能效,可将热考虑(例如热密度功率TDP限制)、性能效果(迁移线程的等待时间)或任何其它已知的因素考虑在内以用于合并决策。
[0035]此外,在该决策中利用的信息可来自许多不同的源。潜在的多种源的说明性示例包括:硬件/固件/软件,用于测量当前线程利用率;微代码或其它软件,用于基于来自操作系统的频率策略和来自经验测量和/或软件线程通信的当前工作负荷的频率改变的可扩展性来确定当前线程初始化是否包括合并的机会;以及固件功率控制单元160 (微控制器和相关联的功率代码),用于提供核102的断电和功耗特征以及实际的断电等等。虽然本示例仅是说明性的,但它的确阐明了本申请中描述的技术可如何在硬件、固件、软件或其组合中实现。
[0036]此外,用于作出合并决策的算法不限于本申请中描述的那些算法,因为他们可能从以上描述的简单化可用性示例变成以下给出的用于估计线程活动/利用率的具体数学方程。例如,除了测量/确定当前线程利用率之外(或代替测量/确定当前线程利用率),软件线程自身可提供利用率指示器(例如来自软件线程的提示,该提示指示了在下一时间份额中预期关于测量的活动需要更多还是更少工作,线程合并策略可将该提示考虑在内)。作为另一示例,用于作出合并决策的算法的输出可被作出合并决策的软件(例如OS调度器)视为提示。
[0037]参考图2-4,示出了适于包括能够线程合并的处理器的计算机系统配置的实施例。参考图2,示出双处理器系统200的说明性示例,该系统的每个处理器205、210中具有集成的存储器控制器和输入/输出(I/O)控制器。尽管为了避免模糊本讨论而未进行详细讨论,但平台200示出用于在组件之间传输信息的多个互连。例如,在一个实施例中,点对点(P2P)互连215包括串行P2P、双向的、高速缓存一致性的总线,该总线具有能够实现高速数据传输的分层协议架构。此外,众所周知的接口(外围组件互连高速,PCIE)或其变型被用于I/O设备245、250之间的接口 240。但是,任何已知的互连或接口可被用于与计算系统的域通信或在计算系统的域内通信。
[0038]转到图3,示出四处理器平台300。像图2—样,处理器301-304通过高速P2P互连305彼此耦合。并且处理器301-304包括集成控制器301c_304c。图4描绘具有不同配置的另一四核处理器平台400。在此,代替使用处理器上I/O控制器通过I/O接口(诸如PC1-E接口)与I/O器件通信,P2P互连被用于耦合处理器和I/O控制器中枢420。然后中枢420又通过类似PCIE的接口与I/O器件通信。
[0039]接下来参考图5,示出了能够线程合并的处理元件的实施例。如所描绘,存在四个核(即核501-504)。对于总共八个硬件线程,每个核具有两个硬件线程槽(例如核501具有硬件线程501T0和501T1)。当提及处理元件时,在本申请中描述的实施例的一些实施例中的该提及是关于处理器、处理器件、核、线程或其组合的。作为第一说明性示例,合并至一个或多个处理元件指的是合并至诸个核。相反,处理元件可表示硬件线程的单独、组合(例如逐个核)或共同的活动/利用。因此,即使图5的讨论是参考在核的子集上关于硬件线程利用率的工作负荷的合并,但合并和利用率可参考任何已知的处理元件。如所描绘,核501-504能够执行八个软件线程;在硬件线程501T0,Tl - 504T0, Tl上每个核两个。换言之,硬件线程501T0,Tl - 504T0, Tl能够同时保持八个软件线程的上下文。
[0040]在一个实施例中,合并模块510适合于或被配置成确定/检测软件线程合并机会。如上所述,在一个实施例中,使用了简单化的确定算法。在此,线程合并模块510查找开放的硬件线程槽。例如,基于小的或特定的时间采样,假定软件线程550、551、552和553分别在硬件线程501T0,502T0, 503T0,和504T0上执行(或与之相关联)。作为结果,线程槽501T1、502T1、503T1和504T1可用(不论是通过硬件、固件、软件还是其组合)。并且,由于每个核能够处理两个软件线程,因此当前工作负荷能够被合并在两个核上(例如迁移至核501和502)。一旦从核503和504卸载工作负荷,就可将核503和504断电以节能。
[0041]然而,在另一实施例中,线程合并模块510基于诸如处理元件可用性、处理元件活动、合并的热衍生项、来自合并的功耗提高/降低、来自线程合并的核/线程活动、来自合并的频率提高/降低等等之类的因素中的任何数量的因素来作出更有深度的确定。线程合并模块510可采取任何已知的形式(例如硬件、固件、软件或其组合)。作为以上指出的示例,合并模块可接受来自各种源的输入,这些源诸如硬件、有特权的管理程序调度器515 (例如OS或虚拟机监视器)、软件线程自身、功率模块530等等。并且,由于源不同,所以线程合并模块的组成覆盖硬件、固件以及软件的边界。作为说明性示例,硬件收集利用率和活动信息,固件将该信息呈递给OS调度器,OS调度器基于上述的因素作出迁移/合并决策,OS将该决策传递回迁移硬件(例如正在将其工作负荷迁移至另一核的物理核)和功率控制固件,该功率控制固件与软件决策一致地利用硬件来执行迁移/合并和断电。
[0042]在一种情形下,合并模块510 (不论是在硬件、固件、软件还是其组合中实现)用于确定将线程550-553合并到活动核的子集(诸如核570的子集)中至少是能源高效的。从图5可以看出,合并模块510不限于作出单个子集合并确定;不过在一些情况下,它可能作出单个子集合并确定。换言之,只要线程槽501Τ0,Τ1-502Τ0,Τ1能够容许额外的工作并且结果将与更好的功耗以及可能更好的性能相关联(即相关线程和共享数据更接近),则可将线程550-553合并至两个核,其中所有线程槽501Τ0,Τ1-502Τ0, Tl都被占据。在此,由迁移模块520作出这样的确定。或者,可将它们从四个核合并至具有一些可用线程槽的三个核(例如501-503)。因此,即使以下讨论主要是参考单个合并确定,也可在处理元件的不同子集上重复或并行地执行相同的方法。并且,其结果(例如能效和性能影响,诸如实际迁移线程而引入的等待时间)可用于决定是否不应当执行合并或者应当执行哪种合并(例如哪个子集是最能源高效的)。
[0043]关于能效,可利用确定或估计能效的任何已知的方法。在最基本的情形下,假定频率是恒定的,则能够利用工作负荷的量或程度来确定功耗。在此,可以看出通过将活动核575的非子集断电来合并线程550-553而节省的功率,同时整个处理器100的相同工作负荷是恒定的。不过,在多数处理器(或OS环境)中,当将更多工作积聚到诸如核501之类的核上时,其频率(或电流)被提高以容许更大的工作负荷。并且,随着核501的电流/频率提高,其功耗也提高。因此,在该情况下,能效的问题变成了:与来自线程552和553的积聚工作负荷的核501和502的功耗提高相比,将核503和504 (例如活动核575的非子集)断电是否节省更多功率。
[0044]顺便提及,在一些实施例中,重要的是应注意,能效可能不是确定合并是否适当的唯一因素。实际上,如上述示例(当线程槽可用时的合并)指示,能效甚至可能不是决策时的因素。因此继续上述情形(其中在合并与不合并之间比较功耗),可将其它因素考虑在内,诸如热约束(例如核501或502过热,导致即使能源高效也不执行合并)。
[0045]在一个实施例中,线程合并模块510包括活动(或利用率)模块,用于确定当前的活动度量(例如处理元件活动,诸如核或线程活动)。在一种情况下,在一时间段期间(或多个循环期间),确定处理元件活动了多少循环。例如,在1000个循环期间,确定硬件线程501T0活动了多少个循环(发出指令、处于活动状态或测量线程或核活动的其它形式)。注意,可按照绝对值(例如活动的循环数量)或相对值(例如在该时间段中,活动循环在总循环数上的百分比)来表示活动(或处理元件利用率)。在一个实施例中,硬件计数器和/或储存设施跟踪这样的活动。然而,也可使用固件或软件。
[0046]根据当前活动度量(例如线程利用率),确定合并的估计利用率。换言之,可外推当前工作负荷(执行线程550-553和它们正在产生的利用率/活动)积聚在活动核570的子集上将会如何。注意,根据以上所述,可在活动核的集合内的任何范围的子集或任何数量的子集上执行该估计(例如积聚至两个核501、502或积聚至三个核501-503)。基于该估计的利用率,确定合并至活动核570的子集是否将提高或降低功耗(即合并是否将是能源高效的)。无频率或电流提高,然后无工作负荷提高,就可认为核的功耗将保持相对相同。因此,将线程552、553移交给核501、502并将核503、504断电可被认为是能源高效的。
[0047]然而,在一些实施例中,线程合并模块510在设置核的频率上没有控制权。替代地,诸如有特权的管理程序515之类的其它硬件或软件设置这样的操作点。作为示例,管理程序515具有与活动阈值相关联的频率步进(st印ping),因此更高的活动利用更高的频率。为了说明,假定核501能够在3GHz下操作。管理程序515将3个阈值(例如25%、50%,75%)与频率步进(例如高于25%为IGHz,高于50%为2GHz,以及高于75%为3GHz)相关联。因此,考虑正在硬件线程501T0上执行软件线程550的核501在40%线程利用率下操作的情形(例如501T0在一时间段上的40%循环中是活动的)。如果线程552被合并至核501并且在该附加工作负荷下的核501的线程利用率的估计提高至超过50%阈值,则管理程序515将核501频率从IGHz提高至2GHz,这会显著提高功耗。因此,问题变成:由于合并的功耗增加是否小于由于在迁移之后将核502、503断电的功率节省。
[0048]因此,在一些实施例中,首先确定合并至活动核570的子集是否将导致频率提高。如果不是,则如上所述,可认为功耗将不会在活动核570的子集上显著提高。或者,至少认为将活动核575的非子集断电的潜力比功率的任何提高有价值。替代地,如果线程利用率的提高(估计地)将导致核570的子集的频率提高(即估计的利用率超过来自OS或其它管理程序的活动阈值),则维持相对于当前功耗来估计核570的子集的功耗的过程。换言之,创建用于合并的快速路径。如果与活动阈值相比,活动核570的子集的所估计的线程利用率指示频率没有提高,则标识合并机会并且不需要面对慢路径(即相对于合并之后的估计功耗的当前功耗的更深度估计,可能将每个活动工作负荷的频率的扩展因数考虑在内)。
[0049]不过,即使在慢路径中,功耗也可能不是唯一关心的问题,如上文所提到的。例如,假定确定将工作负荷550-553合并至核570的子集将从当前状态降低功耗。但与在迁移期间在线程552-553中引入的等待时间量相比,功耗的降低小。因此,线程合并模块510和/或管理程序515放弃合并机会以确保软件线程552-553的最小性能保证,即使该合并可能节省少量功率。换言之,在一些实施例中,对合并机会的标识被视为合并提示,基于设计者实现的算法/策略来采取或不采取该合并,该算法/策略将任何数量的因素考虑在内。
[0050]作为特定说明性示例,以下的等式I提供用于根据当前线程利用率来确定估计的线程利用率的算法的实施例。
[0051]

【权利要求】
1.一种用于高效能耗的装置,包括: 第一数量的硬件处理元件,被配置成执行第二数量的软件线程; 合并模块,适合于:响应于所述第二数量小于所述第一数量,在运行时间期间确定将所述第二数量的软件线程合并至所述第一数量的硬件处理元件的子集是否是能源高效的;以及 迁移模块,适合于:响应于所述合并模块确定将所述第二数量的软件线程合并至所述第一数量的硬件处理元件的所述子集是能源高效的,而将所述第二数量的软件线程迁移至所述第一数量的硬件处理元件的所述子集。
2.如权利要求1所述的装置,其特征在于,所述第一数量的硬件处理元件包括M个核,并且其中所述M个核被配置成包括N个硬件线程,N大于或等于M。
3.如权利要求1所述的装置,其特征在于,适合于在运行时间期间确定将所述第二数量的软件线程合并至所述第一数量的硬件处理元件的子集是否是能源高效的所述合并模块包括包含如下组件的合并模块: 活动模块,适合于确定运行时间期间的所述第一数量的活动处理元件的当前活动度量; 利用率模块,适合于确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量是否将提高功耗;以及 控制模块,适合于:在运行时间期间,响应于所述利用率模块确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量将不会提高功耗,确定将所述第二数量的软件线程合并至所述第一数量的硬件处理元件的所述子集是能源高效的;以及,在运行时间期间,响应于所述利用率模块确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量将会提高功耗,确定将所述第二数量的软件线程合并至所述第一数量的硬件处理元件的所述子集不是能源高效的。
4.如权利要求3所述的装置,其特征在于,适合于确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量是否将提高功耗的所述利用率模块包括适合于以下操作的利用率模块: 确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量是否将导致频率步进的策略提高所述第一数量的硬件处理元件的所述子集的频率; 响应于确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量将会导致频率步进的策略不提高所述第一数量的硬件处理元件的所述子集的频率,确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量将不会提高功耗; 响应于确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量将会导致频率步进的策略提高所述第一数量的硬件处理元件的所述子集的频率,确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量将会导致估计功耗的提高。
5.如权利要求1所述的装置,其特征在于,适合于将所述第二数量的软件线程迁移至所述第一数量的硬件处理元件的所述子集的迁移模块包括:迁移模块,适合于将所述第二数量的软件线程中的来自所述第一数量的处理元件的不在硬件处理元件的所述子集之内的硬件处理元件的软件线程的上下文信息复制并移动至硬件处理元件的所述子集。
6.如权利要求5所述的装置,其特征在于,还包括功率模块,所述功率模块适合于在所述复制和移动之后将所述第一数量的处理元件中不在所述硬件处理元件的所述子集之内的硬件处理元件置于低功率状态。
7.一种用于高效能耗的装置,包括: 多个核,所述多个核中的每一个包括多个硬件线程,所述多个硬件线程中的每一个被配置成与软件线程独立相关联; 合并模块,适合于确定将与来自所述多个核的第一数量的活动核的硬件线程相关联的软件线程合并至所述第一数量的活动核的子集是否将导致功耗提高; 迁移模块,适合于响应于所述合并模块确定将与来自所述多个核的第一数量的活动核的硬件线程相关联的软件线程合并至所述第一数量的活动核的所述子集将不会导致功耗提高,将来自所述多个活动核中不在所述第一数量的活动核的所述子集之内的一个或多个核中包括的硬件线程的软件线程迁移至所述第一数量的活动核的所述子集中包括的硬件线程;以及 功率模块,被配置成响应于所述迁移模块将来自所述一个或多个核中包括的硬件线程的软件线程迁移至所述第一数量的活动核的所述子集中包括的硬件线程,请求所述多个活动核中不在所述第一数量的活动核的所述子集之内的所述一个或多个核进入低功率状态。
8.如权利要求7所述的装置,其特征在于,适合于确定将与来自所述多个核的第一数量的活动核的硬件线程相关联的软件线程合并至所述第一数量的活动核的子集是否将导致功耗提高的合并模块包括:所述合并模块适合于: 确定所述多个核中 包括的全部所述多个线程的当前线程利用率; 确定在将来自所述多个核中的所述第一数量的活动核的软件线程合并至所述第一数量的活动核的所述子集之后所述第一数量的活动核的所述子集的估计线程利用率; 确定所述第一数量的活动核的所述子集的所述估计线程利用率是否将导致所述第一数量的活动核的所述子集的频率提高;以及 响应于确定所述第一数量的活动核的所述子集的所述估计线程利用率将不会导致所述第一数量的活动核的所述子集的频率提高,无需确定在将来自所述多个核中的第一数量的活动核的软件线程合并至所述第一数量的活动核的子集之后所述第一数量的活动核的所述子集的估计功耗,即可确定将与来自所述多个核中的第一数量的活动核的硬件线程相关联的软件线程合并至所述第一数量的活动核的子集将不会导致功耗提高。
9.如权利要求8所述的装置,其特征在于,适合于确定将与来自所述多个核的第一数量的活动核的硬件线程相关联的软件线程合并至所述第一数量的活动核的子集是否将导致功耗提高的合并模块进一步包括:所述合并模块进一步适合于: 响应于确定所述第一数量的活动核的估计线程利用率将导致所述第一数量的活动核的所述子集的频率提高,确定在将来自所述多个核中的所述第一数量的活动核的软件线程合并至所述第一数量的活动核的所述子集之后所述第一数量的活动核的所述子集的估计功耗;以及 响应于所述估计功耗小于所述第一数量的活动核的当前功耗,确定将与来自所述多个核的第一数量的活动核的硬件线程相关联的软件线程合并至所述第一数量的活动核的子集将不会导致功耗提高。
10.如权利要求8所述的装置,其特征在于,所述合并模块适合于基于以下算法来确定所述多个核中包括的全部所述多个线程的当前线程利用率:
其中Sn包括基于当前工作负荷的可扩展性的变量,所述当前线程利用率的总和包括全部所述多个线程的当前线程利用率,M包括所述第一数量的活动核的所述子集的数量,N包括每个核的硬件线程的数量,R包括活动线程的原始数量,原始频率包括在合并之前的原始频率,以及新频率包括基于新线程利用率的新频率的估计。
11.如权利要求8所述的装置,其特征在于,所述当前线程利用率包括在循环周期上的线程活动的循环的数量。
12.一种包含代码的非瞬态介质,所述代码在被执行时导致机器执行以下能效操作: 接收多个活动处理元件的活动度量的表示; 基于所述多个活动处理元件的所述活动度量,确定将工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的处理元件是否包含频率提高; 响应于确定所述合并包含频率提高,基于所述多个活动处理元件的所述活动度量,确定将工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的处理元件是否包含功耗降低;以及 响应于确定所述合并不包含频率提高或所述合并包含功耗降低,执行将所述工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的处理元件。
13.如权利要求12所述的非瞬态介质,其特征在于,所述多个活动处理元件的所述活动度量包括在循环周期期间所述多个处理元件中的每个处理元件是活动的循环的百分比的总和。
14.如权利要求12所述的非瞬态介质,其特征在于,基于所述多个活动处理元件的所述活动度量确定将工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的处理元件是否包含频率提高包括: 根据所述多个活动处理元件的活动度量,确定所述多个活动处理元件中的更小数量的活动处理元件的估计活动度量; 确定所述估计活动度量是否高于用于请求频率提高的特权级软件活动阈值;以及 响应于确定所述估计活动度量高于用于请求频率提高的特权级软件活动阈值,确定将工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的活动处理元件包含频率提高。
15.如权利要求12所述的非瞬态介质,其特征在于,所述多个活动处理元件从由多个硬件线程、多个核以及多个处理器件组成的组中选择。
16.如权利要求12所述的非瞬态介质,其特征在于,响应于确定所述合并不包含频率提高来执行将所述工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的处理元件包括:无需确定将所述工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的处理元件是否包含功耗降低,即可执行将所述工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的处理元件。
17.一种用于高效能耗的方法,包括: 基于所述多个活动处理元件的当前活动度量,确定至多个活动处理元件的子集的线程合并的新活动度量; 确定所述新活动度量是否将导致所述多个活动处理元件的所述子集的频率提高; 响应于确定所述新活动度量将不会导致频率提高,执行至所述多个活动处理元件的所述子集的线程合并; 响应于确定所述新活动度量将导致所述多个活动处理元件的所述子集的频率提高,确定至所述多个活动处理元件的所述子集的线程合并是否将导致功耗提高;以及 响应于确定至所述多个活动处理元件的所述子集的线程合并将不会导致功耗提高,执行至所述多个活动处理元件的所述子集的线程合并。
18.如权利要求17所述的方法,其特征在于,确定所述新活动度量是否将导致所述多个活动处理元件的所述子集的频率提高包括:响应于所述新活动度量超过用于提高频率的操作系统活动阈值,确定所述新活动度量将导致频率提高。
19.如权利要求17所述的方法,其特征在于,响应于确定所述新活动度量将不会导致频率提高来执行至所述多个活动处理元件的所述子集的线程合并包括:响应于确定所述新活动度量将不会导致频率提高,将来自所述活动处理元件的不在所述多个活动处理元件的所述子集之内的非子集处理元件的线程迁移至所述多个活动处理元件的所述子集。
20.如权利要求17 所述的方法,其特征在于,响应于确定所述新活动度量将导致频率提高来确定至所述多个活动处理元件的所述子集的线程合并是否将导致功耗提高包括:确定与所述当前活动度量和所述多个活动处理元件的当前频率的组合相比,所述新活动度量与所述多个活动处理元件的所述子集的提高的频率的组合是否将导致更高的功耗。
21.如权利要求17所述的方法,其特征在于,所述多个活动处理元件从由多个硬件线程、多个核以及多个处理器件组成的组中选择。
22.一种包括代码的非瞬态机器可读介质,所述代码在被执行时致使机器执行如权利要求17 - 21中任一项所述的方法。
23.一种用于高效能耗的方法,包括: 接收多个活动处理元件的活动度量的表示; 基于所述多个活动处理元件的所述活动度量,确定将工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的处理元件是否包含频率的提高; 响应于确定所述合并包含频率提高,基于所述多个活动处理元件的所述活动度量,确定将工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的处理元件是否包含功耗降低;以及 响应于确定所述合并不包含频率提高或所述合并包含功耗降低,执行将所述工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的处理元件。
24.如权利要求23所述的方法,其特征在于,所述多个活动处理元件的所述活动度量包括在循环周期期间所述多个处理元件中的每个处理元件是活动的循环的百分比的总和。
25.如权利要求23所述的方法,其特征在于,基于所述多个活动处理元件的所述活动度量确定将工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的处理元件是否包含频率提高包括:根据所述多个活动处理元件的活动度量,确定所述多个活动处理元件中的更小数量的活动处理元件的估计活动度量; 确定所述估计活动度量是否高于用于请求频率提高的特权级软件活动阈值;以及 响应于确定所述估计活动度量高于用于请求频率提高的特权级软件活动阈值,确定将工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的活动处理元件包含频率提高。
26.如权利要求23所述的方法,其特征在于,所述多个活动处理元件从由多个硬件线程、多个核以及多个处理器件组成的组中选择。
27.如权利要求23所述的方法,其特征在于,响应于确定所述合并不包含频率提高来执行将所述工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的处理元件包括:无需确定将所述工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的处理元件是否包含功耗降低,即可执行将所述工作负荷从所述多个活动处理元件合并至所述多个活动处理元件中的更小数量的处理元件。
28.一种包含代码的非瞬态机器可读介质,所述代码在被执行时致使机器执行如权利要求23 - 27中任一项所述的方法。
29.一种用于高效能耗的设备,包括: 第一数量的硬件处理元件,被配置成执行第二数量的软件线程; 合并装置,用于在运行时间期间确定响应于所述第二数量小于所述第一数量将所述第二数量的软件线程合并至所述第一数量的硬件处理元件的子集是否是能源高效的;以及 迁移装置,用于响应于所述合并模块确定将所述第二数量的软件线程合并至所述第一数量的硬件处理元件的所述子集是能源高效的,将所述第二数量的软件线程迁移至所述第一数量的硬件处理元件的所述子集。
30.如权利要求29所述的设备,其特征在于,所述第一数量的硬件处理元件包括M个核,并且其中所述M个核被配置成包括N个硬件线程,N大于或等于M。
31.如权利要求29所述的设备,其特征在于,用于在运行时间期间确定将所述第二数量的软件线程合并至所述第一数量的硬件处理元件的子集是否是能源高效的所述合并装置包括包含如下组件的合并装置: 活动装置,用于确定运行时间期间的所述第一数量的活动处理元件的当前活动度量; 利用率装置,适合于确定被合并至所述第一数量的硬件处理元件的所述子集的所述当前活动度量是否将提高功耗;以及 控制装置,用于:在运行时间期间,响应于所述利用率模块确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量将不会提高功耗,确定将所述第二数量的软件线程合并至所述第一数量的硬件处理元件的所述子集是能源高效的;以及,在运行时间期间,响应于所述利用率模块确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量将会提高功耗,确定将所述第二数量的软件线程合并至所述第一数量的硬件处理元件的所述子集不是能源高效的。
32.如权利要求31所述的设备,其特征在于,用于确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量是否将提高功耗的所述利用率装置包括用于以下操作的利用率装置:确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量是否将导致频率步进的策略提高所述第一数量的硬件处理元件的所述子集的频率; 响应于确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量将会导致频率步进的策略不提高所述第一数量的硬件处理元件的所述子集的频率,确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量将不会提高功耗; 响应于确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量将会导致频率步进的策略提高所述第一数量的硬件处理元件的所述子集的频率,确定被合并至所述第一数量的硬件处理元件的所述子集的当前活动度量将会导致估计功耗的提高。
33.如权利要求29所述的设备,其特征在于,适合于将所述第二数量的软件线程迁移至所述第一数量的硬件处理元件的所述子集的迁移装置包括:迁移模块,用于将所述第二数量的软件线程中的来自所述第一数量的处理元件的不在硬件处理元件的所述子集之内的硬件处理元件的软件线程的上下文信息复制并移动至硬件处理元件的所述子集。
34.如权利要求33所述的设备,其特征在于,还包括功率装置,所述功率装置用于在所述复制和移动之后将所述第一数量的处理元件中不在所述硬件处理元件的所述子集之内的硬件处理元件置于低功率状态。
【文档编号】G06F1/32GK104081315SQ201280068733
【公开日】2014年10月1日 申请日期:2012年12月12日 优先权日:2011年12月15日
【发明者】E·威斯曼, E·罗特姆, A·N·阿纳塔克瑞什南, A·纳韦, H·阿布萨拉, N·舒尔曼 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1