CN104081315A - 包括线程合并的用于能效和节能的方法、装置和系统 - Google Patents

包括线程合并的用于能效和节能的方法、装置和系统 Download PDF

Info

Publication number
CN104081315A
CN104081315A CN201280068733.8A CN201280068733A CN104081315A CN 104081315 A CN104081315 A CN 104081315A CN 201280068733 A CN201280068733 A CN 201280068733A CN 104081315 A CN104081315 A CN 104081315A
Authority
CN
China
Prior art keywords
subset
thread
incorporated
frequency
tolerance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201280068733.8A
Other languages
English (en)
Other versions
CN104081315B (zh
Inventor
E·威斯曼
E·罗特姆
A·N·阿纳塔克瑞什南
A·纳韦
H·阿布萨拉
N·舒尔曼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN104081315A publication Critical patent/CN104081315A/zh
Application granted granted Critical
Publication of CN104081315B publication Critical patent/CN104081315B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Abstract

本申请中描述了用于线程合并的装置、方法和系统。确定当前处理器利用率。并且,根据处理器利用率和其它提取参数来标识合并机会,诸如估计合并之后的新利用率,基于新的利用率来确定是否将出现功率节省,并执行线程到活动处理元件的子集的迁移/合并。一旦执行合并,则将现在空闲的非子集处理元件断电以节能,并提供能源高效的执行环境。

Description

包括线程合并的用于能效和节能的方法、装置和系统
技术领域
本公开涉及集成电路中的能效和节能以及在集成电路上执行的代码,更具体地但不排他地涉及线程合并。
背景技术
半导体处理和逻辑设计的进步已允许在集成电路器件上可能存在的逻辑量的增加。因此,计算机系统配置已经从系统中的单个或多个集成电路进化至各个集成电路上的多个硬件线程、多个核、多个设备和/或完整的系统。此外,随着集成电路密度增长,计算系统(从嵌入式系统到服务器)的功率需求也逐步提高。此外,软件低效率及其对硬件的要求也已造成了计算设备能耗的提高。实际上,一些研究表明计算机消耗了美国全部电力供应的大部分。
因此,存在对与集成电路相关联的能效和节能的关键需求。而且,随着服务器、桌面计算机、笔记本、超极本、平板、移动电话、处理器、嵌入式系统等等变得更加流行(从包括在典型的计算机、汽车和电视中到生物技术),计算设备销售的影响已然超出能耗的范围而延伸至对经济系统存在显著、直接的影响。当功耗变得更加重要时,总是趋向于提高性能的趋势将要与功耗考虑相互平衡。
一些时候,在处理器操作期间,并非所有处理器都被使用(例如,并非所有可用硬件线程都同时操作)。实际上,当前操作系统(OS)调度器典型地将工作分散在可用的处理元件之间(例如核之间),以确保最高性能(即每个核专用于在多线程化的工作负荷的较小部分上工作)。此外,仅当所有核都活动并且在工作时,OS调度器才开始将更多工作调度至核。因此,即使数量更少的处理元件(诸如核)可能能够适合一工作负荷,但所有的核都保持活动以确保性能。因此,可以看出,当前的物理处理器不包括用于在线程调度方面支持功率与性能的权衡的特定机制。
附图说明
本发明通过示例进行说明,而且不旨在受限于附图的各图。
图1示出包括具有多个处理元件(2个核和4个线程槽)的处理器的系统的逻辑表示的实施例。
图2示出计算机系统配置的逻辑表示的实施例。
图3示出计算机系统配置的逻辑表示的另一实施例。
图4示出计算机系统配置的逻辑表示的另一实施例。
图5示出适于将软件线程合并成处理元件的子集以实现能源高效节能的设备的逻辑表示的实施例。
图6示出用于高效地执行线程合并的流程图的实施例。
具体实施方式
在以下描述中,陈述了多个特定细节,诸如特定类型的处理器和系统配置的示例、特定硬件结构、特定架构和微架构细节、特定寄存器配置、测量和估计处理元件活动的特定方法、特定的、特定核和线程配置、特定模块、特定活动度量、特定活动阈值和范围、特定数量的核和硬件线程等等,以提供对本发明的透彻理解。然而对本领域普通技术人员显而易见的是,不一定要采用这些特定细节来实施本发明。在其它实例中,未详细描述公知的组件或方法,诸如特定和替代的处理器架构、用于所描述算法的特定逻辑电路/代码、特定固件代码、特定互连操作、用于活动测量的特定逻辑、特定迁移和上下文切换技术、特定功率状态和门控技术/逻辑、特定功耗测量和估计、特定操作系统(OS)调度器技术和频率要求、以及处理器的其它特定操作细节,以避免不必要地模糊本发明。
虽然参考特定集成电路中(诸如计算平台或微处理器中)的节能和能效描述了以下实施例,但其它实施例可适用于其它类型的集成电路和逻辑器件。在此描述的实施例的相似的技术和教导可适用于也可受益于更好能效和节能的其它类型的电路或半导体器件。例如,所公开的实施例不限于桌面计算机系统。也可用于其它设备,诸如手持式设备、芯片上系统(SOC)以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、因特网协议设备、数码相机、个人数字助理(PDA)、手持式PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可执行以下教导的功能和操作的任何其他系统。此外,本申请中描述的装置、方法和系统不限于物理计算设备,而是也涉及用于节能和能效的软件优化。如将在以下描述中容易变得明显地,本申请中描述的方法、装置和系统的实施例(不论是参考硬件、固件、软件还是其组合)对于与性能考虑相平衡的“绿色技术”未来是关键的。
本申请中描述的方法和装置用于线程合并以提供能源高效节能。具体地,在下文中主要参考多核微处理器以及在其中的节能来讨论线程合并。不过,本申请中描述的装置和方法不限于此,因为它们可结合任何集成电路器件来实现。例如,下文中描述的线程合并技术可用于执行多个线程的多核图形处理器。换言之,本申请通篇中讨论的方法、装置和技术可用于包括用于处理多个软件线程的多个处理元件的任何设备。例如,它可用于小形状因数设备、手持式设备、SOC或嵌入式应用,如上所讨论的。此外,线程合并技术可用于多处理器系统(例如,从计算平台中的多个物理处理器合并软件线程或在计算平台中的多个物理处理器内积聚软件线程,而并非在单个设备的多个处理元件之间合并软件线程)。
参考图1,示出了包括多个核的处理器的实施例。处理器100包括任何处理器或处理设备,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、芯片上系统(SOC)或用于执行代码的其它器件。在一个实施例中,处理器100包括至少两个核——核101和102,这两个核可包括不对称核或对称核(所示实施例)。然而,处理器100可包括任何数量的处理元件,这些处理元件可以是对称的或不对称的。
在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核、和/或能保持处理器的诸如执行状态或架构状态之类的状态的任何其它元件。换言之,在一个实施例中,处理元件指的是能够与诸如软件线程、操作系统、应用、或其它代码之类的代码独立地相关联的任何硬件。物理处理器通常指的是集成电路,其可能包括任意数量的诸如核或硬件线程之类的其它处理元件。
核通常指的是位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少某些专用执行资源相关联。与核相反,硬件线程通常指的是位于集成电路上的能维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。可以看出,当某些资源是共享的而其它资源是架构状态专用时,硬件线程与核的术语之间的界线交叠。不过通常,核和作为核的线程集合的部分的硬件线程被操作系统视为各个逻辑处理器,其中操作系统能够分别在每个逻辑处理器上调度操作。
如图1中所示的物理处理器100包括两个核,即核101和102。在此,核101和102被视为对称核,即具有相同配置、功能单元和/或逻辑的核。在另一实施例中,核101包括无序处理器核,而核102包括有序处理器核。然而,可从任何类型的核中分别选择核101和102,诸如原生核、软件管理的核、适于执行原生指令集架构(ISA)的核、适于执行经转换指令集架构(ISA)的核、共同设计的核或其它已知核。不过为了进一步讨论,在下文中更详细描述了核101中示出的功能单元,因为核102中的单元以相似的方式操作。
如所描绘,核101包括两个硬件线程101a和101b,它们可被称为硬件线程槽101a和101b。因此,在一个实施例中,诸如操作系统之类的软件实体可能将处理器100视为四个单独的处理器,即能够同时执行四个软件线程的四个逻辑处理器或处理元件。此外,第一线程与架构状态寄存器101a相关联,第二线程与架构状态寄存器101b相关联,第三线程可与架构状态寄存器102a相关联,以及第四线程可与架构状态寄存器102b相关联。在此,架构状态寄存器(101a、101b、102a和102b)中的每一个可被称为处理元件、线程槽或线程单元,如上所述。如上所述,架构状态寄存器101a被复制在架构状态寄存器101b中,因此能够为逻辑处理器101a和逻辑处理器101b存储各个架构状态/上下文。在核101中,也为线程101a和101b复制其它较小的资源,诸如重命名分配器逻辑130中的指令指针和重命名逻辑。诸如重排序器/引退单元135中的重排序缓冲器、ILTB 120、加载/存储缓冲器、以及队列之类的一些资源可通过分区来共享。诸如通用内部寄存器、页表基本寄存器、低级数据高速缓存和数据TLB 115、执行单元140、以及无序单元135的多个部分之类的其它资源可能被完全共享。
处理器100通常包括其它资源,这些其它资源可被完全共享、通过分区共享、或由处理元件专用/专用于处理元件。在图1中,示出了具有处理器的说明性的逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任一个,并包括未描绘出的任何其它已知的功能单元、逻辑或固件。如所示,核101包括简化的表示性的无序(OOO)处理器核。但是,在不同实施例中可利用有序处理器。OOO核包括用于预测要执行/采用的分支的分支目标缓冲器120和用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)120。
核101进一步包括耦合至取出单元120的解码模块125,用于解码取出的元素。在一个实施例中,取出逻辑包括分别与线程槽101a、101b相关联的各个序列发生器。通常,核101与第一指令集架构(ISA)相关联,第一指令集架构(ISA)定义/指定能在处理器100上执行的指令。通常,作为第一ISA的部分的机器代码指令包括该指令的部分(称为操作码),该部分引用/指定要执行的指令或操作。解码逻辑125包括电路,所述电路根据这些指令的操作码来识别这些指令并在流水线中传递经解码的指令,以供按照第一ISA定义地那样来处理。例如,如下文更详细讨论地,在一个实施例中,解码器125包括设计成或适合于识别诸如事务性指令之类的特定指令的逻辑。作为解码器125识别的结果,架构或核101采取特定、预定义的动作以执行与适当指令相关联的任务。重要的是应注意,本申请中描述的任务、块、操作和方法中的任一个可响应于单个或多个指令来执行;它们中的一些可以是新的或旧的指令。
在一个示例中,分配器和重命名器块130包括用于预留资源的分配器,诸如用于存储指令处理结果的寄存器组。然而,线程101a和101b可能能够无序地执行,在此情况下,分配器和重命名器块130也预留其它资源,诸如用于跟踪指令结果的重排序缓冲器。单元130也可包括寄存器重命名器,用于将程序/指令引用寄存器重命名为处理器100内部的其它寄存器。重排序器/引退单元135包括诸如上述的重排序缓冲器、加载缓冲器以及存储缓冲器之类的组件,以支持无序执行和无序执行的指令的稍后有序引退。
在一个实施例中,调度器和执行单元块140包括调度器单元,用于在执行单元上调度指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器组,用于存储信息指令处理结果。示例性的执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元以及其它已知的执行单元。
较低级数据高速缓存和数据转换缓冲器(D-TLB)150耦合至执行单元140。数据高速缓存用于存储诸如数据操作数之类的最近使用/操作的元素,这些元素可能以存储器一致性状态被保持。D-TLB用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分解成多个虚拟页。
在此,核101和102共享对较高级或进一步远离的高速缓存110的访问,较高级或进一步远离的高速缓存用于高速缓存最近取出的元素。注意,较高级或进一步远离的高速缓存指的是从执行单元提高或进一步远离执行单元的高速缓存级。在一个实施例中,较高级的高速缓存110是末级数据高速缓存——处理器100上的存储器层次中的最后一级高速缓存,诸如二级或三级数据高速缓存。然而,较高级高速缓存110不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,跟踪高速缓存——一种类型的指令高速缓存——可耦合在解码器125之后以存储最近解码的踪迹。
在所描绘的配置中,处理器100还包括总线接口模块105。在过去,下文更详细描述的控制器170已被包含在处理器100外部的计算系统中。在该情形下,总线接口105用于与处理器100外部的设备通信,这些设备诸如系统存储器175、芯片组(通常包括用于连接至存储器175的存储器控制器中枢和用于连接外围设备的I/O控制器中枢)、存储器控制器中枢、北桥或其它集成电路。并且,在此情形下,总线105可包括任何已知的互连,诸如多分支总线、点对点互连、串行互连、并行总线、一致(例如高速缓存一致)总线、分层协议架构、差分总线以及GTL总线。
存储器175可专用于处理器100,或与系统中的其它设备共享。存储器175的类型的常见示例包括动态随机存取存储器(DRAM)、静态RAM(SRAM)、非易失性存储器(NV存储器)以及其它已知的存储设备。注意,设备180可包括耦合至存储器控制器中枢的图形加速器、处理器或卡、耦合至I/O控制器中枢的数据储存器、无线收发机、闪存设备、音频控制器、网络控制器或其它已知设备。
然而应注意,在所描绘的实施例中,控制器170被示为处理器100的部分。最近,随着更多的逻辑和器件被集成在诸如芯片上系统(SOC)之类的单个管芯上,这些器件中的每一个器件可被包含在处理器100上。例如,在一个实施例中,存储器控制器中枢170在与处理器100相同的封装和/或管芯上。在此,核的部分(核上部分)包括一个或多个控制器170,用于与诸如存储器175或图形器件180之类的其它器件相连接。包括互连和用于与此类器件相连接的控制器的该配置通常被称为核上(或非核配置)。作为示例,总线接口105包括环形互连,该环形互连具有用于与存储器175相连接的存储器控制器,以及用于与图形处理器180相连接的图形控制器。不过,在SOC环境下,可在单个管芯或集成电路上集成甚至更多的器件,诸如网络接口、协处理器、存储器175、图形处理器180以及任何其它已知的计算机器件/接口,以提供具有高功能性和低功耗的小形状因数。
在一个实施例中,处理器100能够执行编译器、优化和/或转换器代码177以编译、转换和/或优化应用代码176,以支持本申请中描述的装置和方法或与本申请中描述的装置和方法相连接。编译器通常包括用于将源文本/代码转换成目标文本/代码的程序或程序集合。通常,利用编译器对程序/应用代码的编译是在多个阶段和多次运行中完成的,以将高级编程语言代码转换成低级机器或汇编语言代码。不过,对于简单编译,仍可利用单次运行编译器。编译器可利用任何已知的编译技术,并执行任何已知的编译器操作,诸如词法分析、预处理、解析、语义分析、代码生成、代码转换以及代码优化。
更大的编译器通常包括多个阶段,但多数时候这些阶段被包括在两个一般阶段中:(1)前端,一般而言,即在其中可进行语法处理、语义处理以及一些转换/优化,(2)后端,一般而言,即在其中可进行分析、转换、优化以及代码生成。一些编译器指的是中端,其示出了编译器的前端与后端之间的界定的模糊。因此,对插入、关联、生成或编译器的其它操作的引用可在编译器的上述阶段或运行中的任一个以及任何其它已知的阶段或运行中进行。作为说明性示例,编译器可能在编译的一个或多个阶段中插入操作、调用、函数等等,诸如在编译的前端阶段插入调用/操作,然后在转换阶段期间将这些调用/操作转换成较低级代码。注意,在动态编译期间,编译器代码或动态优化代码可插入这样的操作/调用,并优化代码以供在运行时间期间执行。作为特定的说明性示例,可在运行时间期间动态地优化二进制代码(已经是经编译的代码)。在此,程序代码可包括动态优化代码、二进制代码或其组合。
与编译器类似,诸如二进制转换器之类的转换器将代码静态地或动态地转换以优化和/或转换代码。因此,对代码、应用代码、程序代码或其它软件环境的执行的引用可表示:(1)执行编译器程序、优化代码优化器或转换器,以动态地或静态地编译程序代码、维护软件结构、执行其它操作、优化代码或转换代码;(2)执行包括操作/调用的主程序代码,诸如已经被优化/编译的应用代码;(3)执行与主程序代码相关联的其它程序代码(诸如库),以维护软件结构、执行其它软件相关操作、或用于优化代码;或(4)上述的组合。
在一个实施例中,处理器100能够在处理元件之间合并线程。或者,在其它实施例中,处理器100能够支持软件(例如操作系统)在处理元件之间迁移/合并线程。例如,当处理器100轻载时,它能够将线程迁移至更少数量的核,使得其它核能够断电以实现能源高效节能。在该情形下,处理器100首先标识线程合并机会。在此,这样的机会可能仅仅在硬件线程槽可用时存在(例如硬件线程槽101a和102a被占据,而线程槽101b和102b可用)。因此,在简单情况下,线程合并机会存在,其中可将所有当前有效线程迁移至核101或和102。余下核(并未执行任何有效线程)可断电。
然而,在一个实施例中,对用于迁移线程的机会的标识和确定更深入。例如,标识可考虑单个因素或多个因素的组合,诸如处理元件可用性、处理元件行为、合并的热衍生项、来自合并的功耗提高/降低、来自线程合并的核/线程行为、来自合并的频率提高/降低、等等。作为特定的说明性示例,假定硬件线程101a和101b被软件线程占据。在此,确定线程101a和101b的当前线程利用率(例如一段时间上活动的循环数量)。并根据当前线程利用率,估计/预测在将线程合并至一个核(诸如核101)之后新的线程利用率(和/或功耗)将会如何。根据该新的线程利用率和/或功耗(例如在合并之后功耗将会更低),确定有机会将线程101b迁移至核101以节能,同时仍能够在处理器100上容纳当前工作负荷。
根据该说明性示例,可以看出迁移和合并机会的标识如何可以是简单的或复杂的。在上述情形下,基于对核101上的线程积聚的功率效果的估计来作出合并决策,对线程积聚的功率效果的估计是根据将核102断电相较于将核101的频率提高以处理积聚工作负荷的功率影响来确定的;工作负荷中的一些是在断电前从核102迁移而来的。然而,结合纯能效,可将热考虑(例如热密度功率TDP限制)、性能效果(迁移线程的等待时间)或任何其它已知的因素考虑在内以用于合并决策。
此外,在该决策中利用的信息可来自许多不同的源。潜在的多种源的说明性示例包括:硬件/固件/软件,用于测量当前线程利用率;微代码或其它软件,用于基于来自操作系统的频率策略和来自经验测量和/或软件线程通信的当前工作负荷的频率改变的可扩展性来确定当前线程初始化是否包括合并的机会;以及固件功率控制单元160(微控制器和相关联的功率代码),用于提供核102的断电和功耗特征以及实际的断电等等。虽然本示例仅是说明性的,但它的确阐明了本申请中描述的技术可如何在硬件、固件、软件或其组合中实现。
此外,用于作出合并决策的算法不限于本申请中描述的那些算法,因为他们可能从以上描述的简单化可用性示例变成以下给出的用于估计线程活动/利用率的具体数学方程。例如,除了测量/确定当前线程利用率之外(或代替测量/确定当前线程利用率),软件线程自身可提供利用率指示器(例如来自软件线程的提示,该提示指示了在下一时间份额中预期关于测量的活动需要更多还是更少工作,线程合并策略可将该提示考虑在内)。作为另一示例,用于作出合并决策的算法的输出可被作出合并决策的软件(例如OS调度器)视为提示。
参考图2-4,示出了适于包括能够线程合并的处理器的计算机系统配置的实施例。参考图2,示出双处理器系统200的说明性示例,该系统的每个处理器205、210中具有集成的存储器控制器和输入/输出(I/O)控制器。尽管为了避免模糊本讨论而未进行详细讨论,但平台200示出用于在组件之间传输信息的多个互连。例如,在一个实施例中,点对点(P2P)互连215包括串行P2P、双向的、高速缓存一致性的总线,该总线具有能够实现高速数据传输的分层协议架构。此外,众所周知的接口(外围组件互连高速,PCIE)或其变型被用于I/O设备245、250之间的接口240。但是,任何已知的互连或接口可被用于与计算系统的域通信或在计算系统的域内通信。
转到图3,示出四处理器平台300。像图2一样,处理器301-304通过高速P2P互连305彼此耦合。并且处理器301-304包括集成控制器301c-304c。图4描绘具有不同配置的另一四核处理器平台400。在此,代替使用处理器上I/O控制器通过I/O接口(诸如PCI-E接口)与I/O器件通信,P2P互连被用于耦合处理器和I/O控制器中枢420。然后中枢420又通过类似PCIE的接口与I/O器件通信。
接下来参考图5,示出了能够线程合并的处理元件的实施例。如所描绘,存在四个核(即核501-504)。对于总共八个硬件线程,每个核具有两个硬件线程槽(例如核501具有硬件线程501T0和501T1)。当提及处理元件时,在本申请中描述的实施例的一些实施例中的该提及是关于处理器、处理器件、核、线程或其组合的。作为第一说明性示例,合并至一个或多个处理元件指的是合并至诸个核。相反,处理元件可表示硬件线程的单独、组合(例如逐个核)或共同的活动/利用。因此,即使图5的讨论是参考在核的子集上关于硬件线程利用率的工作负荷的合并,但合并和利用率可参考任何已知的处理元件。如所描绘,核501-504能够执行八个软件线程;在硬件线程501T0,T1–504T0,T1上每个核两个。换言之,硬件线程501T0,T1–504T0,T1能够同时保持八个软件线程的上下文。
在一个实施例中,合并模块510适合于或被配置成确定/检测软件线程合并机会。如上所述,在一个实施例中,使用了简单化的确定算法。在此,线程合并模块510查找开放的硬件线程槽。例如,基于小的或特定的时间采样,假定软件线程550、551、552和553分别在硬件线程501T0,502T0,503T0,和504T0上执行(或与之相关联)。作为结果,线程槽501T1、502T1、503T1和504T1可用(不论是通过硬件、固件、软件还是其组合)。并且,由于每个核能够处理两个软件线程,因此当前工作负荷能够被合并在两个核上(例如迁移至核501和502)。一旦从核503和504卸载工作负荷,就可将核503和504断电以节能。
然而,在另一实施例中,线程合并模块510基于诸如处理元件可用性、处理元件活动、合并的热衍生项、来自合并的功耗提高/降低、来自线程合并的核/线程活动、来自合并的频率提高/降低等等之类的因素中的任何数量的因素来作出更有深度的确定。线程合并模块510可采取任何已知的形式(例如硬件、固件、软件或其组合)。作为以上指出的示例,合并模块可接受来自各种源的输入,这些源诸如硬件、有特权的管理程序调度器515(例如OS或虚拟机监视器)、软件线程自身、功率模块530等等。并且,由于源不同,所以线程合并模块的组成覆盖硬件、固件以及软件的边界。作为说明性示例,硬件收集利用率和活动信息,固件将该信息呈递给OS调度器,OS调度器基于上述的因素作出迁移/合并决策,OS将该决策传递回迁移硬件(例如正在将其工作负荷迁移至另一核的物理核)和功率控制固件,该功率控制固件与软件决策一致地利用硬件来执行迁移/合并和断电。
在一种情形下,合并模块510(不论是在硬件、固件、软件还是其组合中实现)用于确定将线程550-553合并到活动核的子集(诸如核570的子集)中至少是能源高效的。从图5可以看出,合并模块510不限于作出单个子集合并确定;不过在一些情况下,它可能作出单个子集合并确定。换言之,只要线程槽501T0,T1-502T0,T1能够容许额外的工作并且结果将与更好的功耗以及可能更好的性能相关联(即相关线程和共享数据更接近),则可将线程550-553合并至两个核,其中所有线程槽501T0,T1-502T0,T1都被占据。在此,由迁移模块520作出这样的确定。或者,可将它们从四个核合并至具有一些可用线程槽的三个核(例如501-503)。因此,即使以下讨论主要是参考单个合并确定,也可在处理元件的不同子集上重复或并行地执行相同的方法。并且,其结果(例如能效和性能影响,诸如实际迁移线程而引入的等待时间)可用于决定是否不应当执行合并或者应当执行哪种合并(例如哪个子集是最能源高效的)。
关于能效,可利用确定或估计能效的任何已知的方法。在最基本的情形下,假定频率是恒定的,则能够利用工作负荷的量或程度来确定功耗。在此,可以看出通过将活动核575的非子集断电来合并线程550-553而节省的功率,同时整个处理器100的相同工作负荷是恒定的。不过,在多数处理器(或OS环境)中,当将更多工作积聚到诸如核501之类的核上时,其频率(或电流)被提高以容许更大的工作负荷。并且,随着核501的电流/频率提高,其功耗也提高。因此,在该情况下,能效的问题变成了:与来自线程552和553的积聚工作负荷的核501和502的功耗提高相比,将核503和504(例如活动核575的非子集)断电是否节省更多功率。
顺便提及,在一些实施例中,重要的是应注意,能效可能不是确定合并是否适当的唯一因素。实际上,如上述示例(当线程槽可用时的合并)指示,能效甚至可能不是决策时的因素。因此继续上述情形(其中在合并与不合并之间比较功耗),可将其它因素考虑在内,诸如热约束(例如核501或502过热,导致即使能源高效也不执行合并)。
在一个实施例中,线程合并模块510包括活动(或利用率)模块,用于确定当前的活动度量(例如处理元件活动,诸如核或线程活动)。在一种情况下,在一时间段期间(或多个循环期间),确定处理元件活动了多少循环。例如,在1000个循环期间,确定硬件线程501T0活动了多少个循环(发出指令、处于活动状态或测量线程或核活动的其它形式)。注意,可按照绝对值(例如活动的循环数量)或相对值(例如在该时间段中,活动循环在总循环数上的百分比)来表示活动(或处理元件利用率)。在一个实施例中,硬件计数器和/或储存设施跟踪这样的活动。然而,也可使用固件或软件。
根据当前活动度量(例如线程利用率),确定合并的估计利用率。换言之,可外推当前工作负荷(执行线程550-553和它们正在产生的利用率/活动)积聚在活动核570的子集上将会如何。注意,根据以上所述,可在活动核的集合内的任何范围的子集或任何数量的子集上执行该估计(例如积聚至两个核501、502或积聚至三个核501-503)。基于该估计的利用率,确定合并至活动核570的子集是否将提高或降低功耗(即合并是否将是能源高效的)。无频率或电流提高,然后无工作负荷提高,就可认为核的功耗将保持相对相同。因此,将线程552、553移交给核501、502并将核503、504断电可被认为是能源高效的。
然而,在一些实施例中,线程合并模块510在设置核的频率上没有控制权。替代地,诸如有特权的管理程序515之类的其它硬件或软件设置这样的操作点。作为示例,管理程序515具有与活动阈值相关联的频率步进(stepping),因此更高的活动利用更高的频率。为了说明,假定核501能够在3GHz下操作。管理程序515将3个阈值(例如25%、50%、75%)与频率步进(例如高于25%为1GHz,高于50%为2GHz,以及高于75%为3GHz)相关联。因此,考虑正在硬件线程501T0上执行软件线程550的核501在40%线程利用率下操作的情形(例如501T0在一时间段上的40%循环中是活动的)。如果线程552被合并至核501并且在该附加工作负荷下的核501的线程利用率的估计提高至超过50%阈值,则管理程序515将核501频率从1GHz提高至2GHz,这会显著提高功耗。因此,问题变成:由于合并的功耗增加是否小于由于在迁移之后将核502、503断电的功率节省。
因此,在一些实施例中,首先确定合并至活动核570的子集是否将导致频率提高。如果不是,则如上所述,可认为功耗将不会在活动核570的子集上显著提高。或者,至少认为将活动核575的非子集断电的潜力比功率的任何提高有价值。替代地,如果线程利用率的提高(估计地)将导致核570的子集的频率提高(即估计的利用率超过来自OS或其它管理程序的活动阈值),则维持相对于当前功耗来估计核570的子集的功耗的过程。换言之,创建用于合并的快速路径。如果与活动阈值相比,活动核570的子集的所估计的线程利用率指示频率没有提高,则标识合并机会并且不需要面对慢路径(即相对于合并之后的估计功耗的当前功耗的更深度估计,可能将每个活动工作负荷的频率的扩展因数考虑在内)。
不过,即使在慢路径中,功耗也可能不是唯一关心的问题,如上文所提到的。例如,假定确定将工作负荷550-553合并至核570的子集将从当前状态降低功耗。但与在迁移期间在线程552-553中引入的等待时间量相比,功耗的降低小。因此,线程合并模块510和/或管理程序515放弃合并机会以确保软件线程552-553的最小性能保证,即使该合并可能节省少量功率。换言之,在一些实施例中,对合并机会的标识被视为合并提示,基于设计者实现的算法/策略来采取或不采取该合并,该算法/策略将任何数量的因素考虑在内。
作为特定说明性示例,以下的等式1提供用于根据当前线程利用率来确定估计的线程利用率的算法的实施例。
等式1:估计的线程平均利用率
在此,R表示原始活动物理线程的数量,M是核的数量(例如工作负荷将被合并至的活动核570的子集,诸如在本示例中为2),N是每个核的线程的数量(例如2,从而导致在子集570中的线程总数的分母为4),并且当前线程利用率的总和包括所有活动处理元件的当前线程利用率(例如,如果线程550-553中的每一个利用核501-504的30%,则总和线程利用率等于120%)。假定上述示例并且暂时忽略参数S和频率比率,新的/估计的线程利用率将等于30%。因为相同的估计线程利用率将存在(频率未提高,因为工作负荷未改变),则可进行合并。然而,在另一实施例中,代码的类型在估计线程利用率时有影响。例如,代码可扩展性影响利用率。假定扩展因数由等式2定义。
等式2:扩展因数
因此,该情形下的线性假定在以下的等式3中表示。
新性能(新频率)≈
原始性能+S(频率)*
原始性能/原始频率*
(新频率-原始频率)
等式3:新性能估计
因此,在一种情形中,引入参数Sn以补偿这样的可扩展性。为了说明,低可扩展性代码将接近0,而高可扩展性将接近1,其它的可扩展性水平在0至1的范围中。注意,可扩展性因数的预测将通过硬件来完成。
继续上述示例,在高可扩展性因数1的情况下,则在将物理线程的数量减少50%而不改变工作频率的情况下,30%的平均线程利用率将提高至60%的利用率。在此,线程合并模块510单独地或与其它模块(诸如管理程序515)组合地将60%的利用率阈值与频率的活动阈值作比较。而且,如果估计的利用率超过阈值,则确定频率将提高。根据该确定,可进一步确定频率的提高是否将导致功耗提高超过当前功耗。换言之,确定合并至活动核570的子集是否是能源低效的。如果将不会获得节能,则不执行该合并。
否则,执行该合并,排除不妨碍该合并的任何其它因素(例如热或性能)。此外应注意,使用操作系统的频率改变的比例将等式1标准化至起点频率水平。在该情形下,按照所利用的频率的百分比来表示平均或估计的线程利用率。例如,假定该估计包括在接近1的可扩展性因数下的2Ghz的新频率并且具有60%平均利用率的处理器处于1.5Ghz水平,则新的可能目标频率表示为48%的平均值。进一步假定从4线程减少至2线程将会使利用率提高至84%的水平。因此,阈值比较也可采用频率比较而不是百分比活动比较的形式,如上所述。
一旦确定如果执行线程550-553至核501、502(子集570)的合并则将出现频率提高,则确定/估计功耗提高或降低。可利用任何已知的能源/功率估计技术。例如,当估计出频率将要提高时,将提高的频率估计外推到核501、502的功耗中。并且将外推的功耗与当前功耗作比较,以在大范围角度上(例如从整个处理器、集成电路、封装和/或平台的角度)确定合并是否将节省功率。
一旦标识合并机会并且确定合并将继续,迁移模块520就将线程550-553迁移至核570的子集。虽然分开描绘,但在一个实施例中,迁移模块520重叠和/或被包括在OS调度器515中。在任一情况下,迁移包括将软件线程552、553的上下文信息复制和/或移出硬件线程503T0、504T0至可用的硬件线程501T1、502T2。注意,根据以上所述,可在确定是否应当进行合并的策略和/或算法中将该迁移成本(即迁移上下文引入的等待时间)考虑在内。
不过,一旦进行了迁移,则核503、504是自由的(空闲的)。因此,可通过功率模块530将它们断电(例如时钟门控、功率门控、降低时钟、降低功率及其组合等等),以实现能效和节能。作为示例,功率模块530包括功率控制单元(PCU)。在一个实施例中,PCU包括微控制器和共存的功率代码。在此,一旦核503、504空闲,则将空闲状态报告给PCU530,诸如通过来自管理程序515的将它们断电的请求或硬件/固件/软件响应于合并而指示断电。并且,作为结果,PCU将核503、504置于低功率状态,可包括对核的时钟、频率、电压等等进行降低或门控的任何范围。因此,之前在该处理器上执行的相同工作负荷仍在相同的效率下被执行。然而,通过不活动核的投机性断电,节省了功率。并且,线程合并模块510在运行时间期间继续寻找进一步的合并机会以创建甚至更多的功率节省。
转至图6,示出了用于合并线程的方法的模块和/或流程图的表示的实施例。注意,以基本上串行的方式示出了流程(或模块)。然而,这些流程的串行性质以及所描绘的顺序不是必须的。例如,参考图6,在一些实现中,在流程620中的对频率是否将提高的确定可能不被特定执行。作为替代,可在每次重复时在流程630中通过估计经合并的功耗来确定待测试的合并机会是否将导致提高的功耗。此外,以基本线性或串行的方式示出了这些流程。然而,可并行或以不同的顺序来执行这些流程。此外,所示出的流程或逻辑块中的任一个可在硬件、软件、固件或其组合中执行。如上和如下所述,在一个实施例中,每个流程表示模块、模块的部分或多个模块的重叠。此外,以一个或多个指令或操作形式的任何程序代码在被执行时可。
在流程605,确定多个活动处理元件(例如处理器、核、线程等等)的活动度量。例如,硬件确定多个处理元件的每个处理元件活动的循环数量。并且,对循环数量或测得循环的总数上的循环的百分比(百分比利用率)求和,以确定当前的总处理元件利用率。
接收多个活动处理元件的活动度量的表示(以循环、百分比或其它形式)。例如,使用硬件计数器、寄存器或累加器来记录活动循环。并且,在周期的结尾,软件轮询硬件以取回并接收循环计数。然后,该软件执行计算以确定活动的实际表示。然而,这仅仅是说明性示例,因为本申请中的任一流程可在硬件、固件、软件或其组合中执行。
在流程615-625中,基于所接收和/或计算出的多个活动处理元件的当前活动度量,确定将工作负荷从多个活动处理元件合并至更少数量的活动处理元件(例如子集)是否包括频率的提高。在一个实施例中,在流程615,根据当前活动度量来确定更少数量(子集)的活动处理元件的估计(新)的活动度量。例如,来自以上描述的等式1(或其变型)来计算/估计在合并之后新的平均活动度量将会如何。注意,新的平均利用率可按照任何方式来表示(例如循环数量、百分比、频率量、或处理活动的其它已知表示)。
在流程620,如果新的平均利用率高于100%,则中止合并尝试并返回至流程605以寻求更多的合并机会。换言之,如果利用率将会大于核的子集能够处理的利用率(高于100%的利用率),则中止尝试,因为这样会显著提高功耗和/或显著不利地影响性能。
不过,如果估计的线程活动/利用率低于100%,则在流程625确定新的估计的活动度量是否高于请求频率提高的特权级软件活动阈值。例如,操作系统(OS)策略可包括某些利用率阈值以用于请求更高的频率(或更高性能)。为了说明,假定OS代码包括90%利用率的阈值以用于请求超频频率(或最大电流)。如果合并将导致超过90%的估计利用率,则确定用于积聚工作负荷的核的子集上的频率将会提高。然而,如果新的估计的利用率低于超频模式阈值,使得它将维持当前利用率或从当前利用率降低频率,随后在流程625执行合并。换言之,如果新的估计的平均利用率不会越过导致当前频率提高的任何阈值利用率,则认为合并将节省功率,并且不需要实际估计合并之后的功耗。
不过,如果在流程625中确定频率将要在合并之后提高,则在流程630确定频率的提高是否将导致功耗的提高。即,确定将工作负荷从多个活动处理元件合并到处理元件的子集是否将实际导致功耗的提高。如果功耗将会提高(即合并将不是功率高效或能源高效的),则中止该合并机会并且流程如上所述返回至640。然而,如果功耗将在合并之后降低(即合并将是功率高效或能源高效的),则在流程640中执行该合并。作为示例,将来自活动核的非子集(即将被断电的核)的软件线程迁移至活动核的子集。作为说明性示例,迁移逻辑可包括按照纵横配置耦合至处理器的处理元件的储存器,使得可将任何硬件线程上下文迅速和高效地迁移/切换至另一硬件线程;甚至在核之间。
在本文中使用的模块指的是硬件、软件、和/或固件的任意组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非瞬态介质上的代码。另外,在另一实施例中,模块的使用是指包括代码的非瞬态介质,该代码专门适于由微处理器执行以进行预定操作。并且可推断,在又一实施例中,术语模块(在该示例中)可以指微控制器和非瞬态介质的组合。通常,被示为分开的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。
如在本文中所使用的值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机系统中的值的其它表示。例如,十进制数字10也可被表示为二进制值1010和十六进制字母A。因此,值包括能保持在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值可能包括高逻辑值,即重置,而已更新的值可能包括低逻辑值,即置位。注意,值的任何组合可用来表示任意数量的状态。
上述方法、硬件、软件、固件或代码的实施例可通过存储在机器可存取、机器可读、计算机可存取、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可存取/可读介质包括提供(即存储和/或发送)诸如计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可存取介质包括:诸如静态RAM(SRAM)或动态RAM(DRAM)之类的随机存取存储器(RAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;其它形式的用于保持从瞬态(传播)信号(例如载波、红外信号、数字信号)接收的信息的存储设备等等,这些信号与可从其接收信息的非瞬态介质相区别。
贯穿本说明书,对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一定指的是同一实施例。此外,在一个或多个实施例中,特定特征、结构或特性可以以任何合适的方式组合起来。
在上述说明书中,已经参考特定示例性实施例给出了详细描述。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。相应地,说明书和附图应被视为说明性的,而不是限制性的。而且,实施例和其它示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。

Claims (34)

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所述的设备,其特征在于,还包括功率装置,所述功率装置用于在所述复制和移动之后将所述第一数量的处理元件中不在所述硬件处理元件的所述子集之内的硬件处理元件置于低功率状态。
CN201280068733.8A 2011-12-15 2012-12-12 包括线程合并的用于能效和节能的方法、装置和系统 Expired - Fee Related CN104081315B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/327,692 2011-12-15
US13/327,692 US9075610B2 (en) 2011-12-15 2011-12-15 Method, apparatus, and system for energy efficiency and energy conservation including thread consolidation
PCT/US2012/069284 WO2013090449A1 (en) 2011-12-15 2012-12-12 A method, apparatus, and system for energy efficiency and energy conservation including thread consolidation

Publications (2)

Publication Number Publication Date
CN104081315A true CN104081315A (zh) 2014-10-01
CN104081315B CN104081315B (zh) 2017-06-09

Family

ID=46491664

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280068733.8A Expired - Fee Related CN104081315B (zh) 2011-12-15 2012-12-12 包括线程合并的用于能效和节能的方法、装置和系统

Country Status (4)

Country Link
US (1) US9075610B2 (zh)
CN (1) CN104081315B (zh)
TW (1) TWI550518B (zh)
WO (1) WO2013090449A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018018372A1 (zh) * 2016-07-25 2018-02-01 张升泽 电子芯片内的电流计算方法及系统
WO2018018450A1 (zh) * 2016-07-27 2018-02-01 李媛媛 电流限制在多核芯片中的应用方法及系统
CN108959020A (zh) * 2018-05-08 2018-12-07 华为技术有限公司 一种计算机cpu利用率的计算方法和装置
CN113806025A (zh) * 2020-06-12 2021-12-17 富泰华工业(深圳)有限公司 数据处理方法、系统、电子装置及存储介质

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9348656B2 (en) * 2011-12-19 2016-05-24 Advanced Micro Devices, Inc. Apparatus and method for managing power among a plurality of processors sharing a thermal platform
US9396020B2 (en) 2012-03-30 2016-07-19 Intel Corporation Context switching mechanism for a processing core having a general purpose CPU core and a tightly coupled accelerator
US9569279B2 (en) * 2012-07-31 2017-02-14 Nvidia Corporation Heterogeneous multiprocessor design for power-efficient and area-efficient computing
CN103823716A (zh) * 2012-09-21 2014-05-28 宏达国际电子股份有限公司 具多重中央处理单元的电子装置及其效能管理方法
CN104781803B (zh) * 2012-12-26 2018-06-15 英特尔公司 用于架构不同核的线程迁移支持
US9304573B2 (en) * 2013-06-21 2016-04-05 Apple Inc. Dynamic voltage and frequency management based on active processors
US20150324234A1 (en) * 2013-11-14 2015-11-12 Mediatek Inc. Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address(es)
KR101842016B1 (ko) * 2013-12-10 2018-03-28 한국전자통신연구원 멀티 코어 환경에서의 동적 전력 제어방법
US9389675B2 (en) * 2013-12-19 2016-07-12 International Business Machines Corporation Power management for in-memory computer systems
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
WO2016044980A1 (zh) * 2014-09-22 2016-03-31 华为技术有限公司 线程迁移方法、装置和系统
AU2014268246A1 (en) 2014-11-28 2016-06-16 Canon Kabushiki Kaisha Reverting tightly coupled threads in an over-scheduled system
CN104503832B (zh) * 2014-12-22 2017-07-28 西安电子科技大学 一种公平和效率均衡的虚拟机调度系统及方法
US9417928B2 (en) * 2014-12-24 2016-08-16 International Business Machines Corporation Energy efficient supercomputer job allocation
US9760160B2 (en) * 2015-05-27 2017-09-12 Intel Corporation Controlling performance states of processing engines of a processor
US9733684B2 (en) * 2015-09-14 2017-08-15 Samsung Electronics Co., Ltd. System and method for controlling power consumption
US10073718B2 (en) 2016-01-15 2018-09-11 Intel Corporation Systems, methods and devices for determining work placement on processor cores
US10296067B2 (en) * 2016-04-08 2019-05-21 Qualcomm Incorporated Enhanced dynamic clock and voltage scaling (DCVS) scheme
CN106444436A (zh) * 2016-07-19 2017-02-22 柳州龙辉科技有限公司 一种能耗信息处理装置
CN106292995A (zh) * 2016-07-27 2017-01-04 李媛媛 电流限制在多核芯片中的应用方法及系统
WO2018129708A1 (en) * 2017-01-13 2018-07-19 Alibaba Group Holding Limited Determining processor utilization of multiprocessing system
US10664299B2 (en) * 2017-05-24 2020-05-26 Amzetta Technologies, Llc Power optimizer for VDI system
US10282208B2 (en) 2017-07-14 2019-05-07 International Business Machines Corporation Cognitive thread management in a multi-threading application server environment
CN111164538A (zh) * 2017-12-15 2020-05-15 英特尔公司 处理单元的功率管理
US10955899B2 (en) 2018-06-20 2021-03-23 Intel Corporation System, apparatus and method for responsive autonomous hardware performance state control of a processor
JP2022531353A (ja) * 2019-04-30 2022-07-06 フローヴィッター ベルンハルト 並列計算をダイナミックに最適化するための装置および方法
US11934249B2 (en) * 2022-03-31 2024-03-19 Intel Corporation Methods and apparatus to manage energy usage and compute performance
US20240330048A1 (en) * 2023-03-30 2024-10-03 Intel Corporation Apparatus and method for dynamic core management

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095807A1 (en) * 2004-09-28 2006-05-04 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US20100037038A1 (en) * 2008-08-06 2010-02-11 International Business Machines Corporation Dynamic Core Pool Management
CN102163072A (zh) * 2008-12-09 2011-08-24 英特尔公司 用于节能的基于软件的线程重映射

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7174469B2 (en) * 2003-09-30 2007-02-06 International Business Machines Corporation Processor power and energy management
US8156496B2 (en) * 2007-01-31 2012-04-10 Hewlett-Packard Development Company, L.P. Data processing system and method
US8381215B2 (en) * 2007-09-27 2013-02-19 Oracle America, Inc. Method and system for power-management aware dispatcher
US7930574B2 (en) * 2007-12-31 2011-04-19 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
KR101400286B1 (ko) * 2008-01-22 2014-05-26 삼성전자주식회사 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치
US9189282B2 (en) * 2009-04-21 2015-11-17 Empire Technology Development Llc Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter
US20110055838A1 (en) * 2009-08-28 2011-03-03 Moyes William A Optimized thread scheduling via hardware performance monitoring
JP5531679B2 (ja) * 2010-03-04 2014-06-25 日本電気株式会社 Smt対応cpuを有する情報処理装置の消費電力低減方法、消費電力低減装置及び消費電力低減プログラム
US8533719B2 (en) * 2010-04-05 2013-09-10 Oracle International Corporation Cache-aware thread scheduling in multi-threaded systems
US20120137289A1 (en) * 2010-11-30 2012-05-31 International Business Machines Corporation Protecting high priority workloads in a virtualized datacenter
US8819691B2 (en) * 2011-05-04 2014-08-26 International Business Machines Corporation Logical partition defragmentation within a data processing system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095807A1 (en) * 2004-09-28 2006-05-04 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US20100037038A1 (en) * 2008-08-06 2010-02-11 International Business Machines Corporation Dynamic Core Pool Management
CN102163072A (zh) * 2008-12-09 2011-08-24 英特尔公司 用于节能的基于软件的线程重映射

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018018372A1 (zh) * 2016-07-25 2018-02-01 张升泽 电子芯片内的电流计算方法及系统
WO2018018450A1 (zh) * 2016-07-27 2018-02-01 李媛媛 电流限制在多核芯片中的应用方法及系统
CN108959020A (zh) * 2018-05-08 2018-12-07 华为技术有限公司 一种计算机cpu利用率的计算方法和装置
CN113806025A (zh) * 2020-06-12 2021-12-17 富泰华工业(深圳)有限公司 数据处理方法、系统、电子装置及存储介质
CN113806025B (zh) * 2020-06-12 2023-08-18 富泰华工业(深圳)有限公司 数据处理方法、系统、电子装置及存储介质

Also Published As

Publication number Publication date
WO2013090449A1 (en) 2013-06-20
CN104081315B (zh) 2017-06-09
TWI550518B (zh) 2016-09-21
TW201337771A (zh) 2013-09-16
US9075610B2 (en) 2015-07-07
US20120185709A1 (en) 2012-07-19

Similar Documents

Publication Publication Date Title
CN104081315A (zh) 包括线程合并的用于能效和节能的方法、装置和系统
US10775873B2 (en) Performing power management in a multicore processor
CN107209545B (zh) 在多核处理器中执行功率管理
CN104115093A (zh) 包括多个处理元件之间的功率和性能平衡的用于能效和节能的方法、装置和系统
US10146286B2 (en) Dynamically updating a power management policy of a processor
Attia et al. Dynamic power management techniques in multi-core architectures: A survey study
Själander et al. Power-efficient computer architectures: Recent advances
CN102934084A (zh) 用于通过将第一核类型与第二核类型耦合来提高功率性能的装置、方法和系统
CN104115094A (zh) 包括代码再循环技术的用于能效和节能的方法、装置和系统
KR20130061747A (ko) 코어 마다의 전압 및 주파수 제어 제공
CN105492989A (zh) 用于时钟门控控制的早唤醒-警告
CN113448373A (zh) 用于处理器的电压调节器的功率状态缩放的装置和方法
CN104205077B (zh) 包括可配置最大处理器电流的针对能效和节能的方法、装置和系统
Adegbija et al. Right-provisioned IoT edge computing: An overview
Boyer Improving Resource Utilization in Heterogeneous CPU-GPU Systems
Cohen et al. Intel embedded hardware platform
CN117597665A (zh) 应用程序可协商平台热感知调度器
Francisco Lorenzon et al. Fundamental Concepts
Bandri Anand Design and implementation of a sensor hub interface using an ARM cortex m0 processor
Anand Design and implementation of a sensor hub interface using an ARM cortex m0 processor
Bai Energy efficient microarchitectures for on-chip voltage regulation and low noise computing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170609

Termination date: 20181212

CF01 Termination of patent right due to non-payment of annual fee