CN108664367A - 一种基于处理器的功耗控制方法及装置 - Google Patents

一种基于处理器的功耗控制方法及装置 Download PDF

Info

Publication number
CN108664367A
CN108664367A CN201710194178.8A CN201710194178A CN108664367A CN 108664367 A CN108664367 A CN 108664367A CN 201710194178 A CN201710194178 A CN 201710194178A CN 108664367 A CN108664367 A CN 108664367A
Authority
CN
China
Prior art keywords
processor
performance event
power consumption
core
performance
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
CN201710194178.8A
Other languages
English (en)
Other versions
CN108664367B (zh
Inventor
王洪光
刘虎
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201710194178.8A priority Critical patent/CN108664367B/zh
Publication of CN108664367A publication Critical patent/CN108664367A/zh
Application granted granted Critical
Publication of CN108664367B publication Critical patent/CN108664367B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Power Sources (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种基于处理器的功耗控制方法:监测第一处理器核上运行的N个性能事件,N个性能事件包括:N1个第一类性能事件、N2个第二类性能事件;计算N1个第一类性能事件中每个第一类性能事件所消耗的能量,并根据N1个第一类性能事件所消耗的能量确定所述第一功能模块的功耗P1;并计算第二功能模块的功耗P2;并根据所述P1和所述P2确定所述第一处理器核的功耗。另外本发明实施例还公开了一种处理器。采用本发明实施例,能够实时获取处理器及处理器内部不同功能模块的功耗,以及其他细粒度的功耗,从而建立功耗、硬件与软件三者之间的相关性,实现对硬件、软件等细粒度的功耗监测、分析与控制。

Description

一种基于处理器的功耗控制方法及装置
技术领域
本发明涉及处理器控制领域,尤其涉及一种基于处理器的功耗控制方法及装置。
背景技术
CPU微架构,又称微处理器体系结构,是在计算机工程中将一种给定的指令集架构在处理器中执行的方法。微架构是根据处理器指令系统的执行过程来设计的,其中处理器指令系统的执行过程一般包括:指令提取、指令编码、指令执行以及结果返回。
CPU功耗是一项重要的CPU性能参数,及时获取并控制CPU功耗是保证CPU正常运行的前提。现有技术中测量CPU功耗的方法,通常是首先通过测量电路测量处理器的(如通过电流传感器)工作电流,然后读取处理器的工作电压,进而通过公式P=I*U计算得到CPU功耗,其中P为功耗,I为电流,U为电压。
但是该种技术方案需要借助额外的器件和硬件电路才能实现,这会增大处理器或硬件电路的面积,提高了操作成本。更重要是,现有技术测量得到的CPU功耗值只能反映CPU消耗的整体功耗,却不能从处理器微架构角度,实时、准确地获取处理器以及处理内部各个功能模块的实时功耗,如:取指单元、指令执行单元、内存子系统等功能模块的实时功耗,以及应用、软件进程等消耗的实时功耗。
因此,基于现有技术测量得到的处理器功耗很难建立功耗、硬件与软件三者之间的相关性,从而无法实现对硬件(如处理器,处理器单个CPU核、CPU流水线相关功能模块等)、软件(如应用、进程等)等细粒度的功耗监测、分析与控制。
发明内容
本发明实施例提供一种基于处理器的功耗控制方法及装置,能够实时获取处理器及处理器内部不同逻辑功能模块的功耗,从而建立功耗、硬件与软件三者之间的相关性,实现对硬件、软件等细粒度的功耗监测、分析与控制。
第一方面,本发明实施例提供了一种基于处理器的功耗控制方法,包括:所述处理器监测第一处理器核上运行的N个性能事件,所述N个性能事件包括在所述第一处理器核的第一功能模块上运行的N1个第一类性能事件,以及在所述第一处理器核的第二功能模块上运行的N2个第二类性能事件,其中N为大于1的正整数,N1和N2是正整数;所述处理器计算所述N1个第一类性能事件中每个第一类性能事件所消耗的能量,并根据所述N1个第一类性能事件所消耗的能量确定所述第一功能模块的功耗P1;所述处理器计算所述N2个第二类性能事件中每个第二类性能事件所消耗的能量,并根据所述N2个第二类性能事件所消耗的能量确定所述第二功能模块的功耗P2;所述处理器根据所述P1和所述P2确定所述第一处理器核的功耗。
在本申请中,处理器的处理器核执行目标对象时会触发产生N个性能事件,处理器核每调一个功能模块则对应产生一类性能事件,该功能模块包括多个逻辑功能单元;本申请的一个实施例以处理核包括两大类的功能模块为示范性应用场景,将N个性能事件划分为:N1个第一类性能事件和N2个第二类性能事件;处理器核能够通过性能事件监测单元监测每个功能模块上运行的每一类性能事件,从而计算每一类性能事件所消耗的能量,并根据每一类性能事件所消耗的能量确定出每个功能模块的功耗,根据每个功能模块的功耗确定单个处理器核的功耗。可以看出,本申请能够获取处理器内部各个功能模块的功耗,以及单核处理器的功耗,从而实现对硬件和软件等细粒度的功耗监测和分析。
综合第一方面,在第一种可能的实现方式中,所述处理器计算所述N1个第一类性能事件中每个第一类性能事件所消耗的能量中,所述方法在计算第i个第一类性能事件所消耗的能量之前,包括;所述处理器读取所述第i个第一类性能事件在预设时间范围内发生的次数;所述处理器获取所述第i个第一类性能事件的单位功耗因子,其中所述单位功耗因子用于表示第i个第一类性能事件单次发生所消耗的能量,i为小于N1的正整数。
在本申请中,处理器计算N1个第一类性能事件中每个第一类性能事件所消耗的能量,其具体计算原理是根据每个第一类性能事件在预设时间范围内发生的次数,以及每个第一类性能事件的单位功耗因子,从而确定每个第一类性能事件所消耗的能量,所以处理器会在计算第i个第一性能事件所消耗的能量之前,读取第i个第一类性能事件在预设时间范围内发生的次数,并获取第i个第一类性能事件的单位功耗因子。
综合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述处理器计算所述N1个第一类性能事件中每个第一类性能事件所消耗的能量中,计算第i个第一类性能事件所消耗的能量包括:所述处理器根据所述第i个第一类性能事件发生的次数和单位功耗因子,计算所述第i个第一类性能事件所消耗的能量,其中i为小于N1的正整数。
在本申请中,处理器根据第i个第一类性能事件发生的次数和单位功耗因子,计算第i个第一类性能事件所消耗的能量,由于处理器执行目标对象时每执行一个逻辑功能单元的操作对应产生一个性能事件,本申请能够通过实现计算第i个第一类性能事件所消耗的能量,从而获取第i个功能逻辑单元的功耗。
综合第一方面,在第三种可能的实现方式中,所述处理器根据所述P1和所述P2确定所述第一处理器核的功耗包括:
所述处理器根据所述P1、所述P2和所述第一处理器核的动态参数,计算所述第一处理器核的动态功耗Pcore_dynamic,其中所述第一处理器核的动态参数包括:第一处理器核的动态工作电压Vcore_dynamic、所述第一处理器核的动态工作频率ffreq_dynamic和所述第一处理器核的动态功耗因子Ceff_dynamic
所述处理器根据所述第一处理器核的静态参数,计算所述第一处理器核的静态功耗Pcore_static,其中所述第一处理器核的静态参数包括:所述第一处理器核的静态电压Vcore_static、所述第一处理器核的静态频率ffreq_static和所述第一处理器核的静态功耗因子;
所述处理器根据所述第一处理器核的Pcore_dynamic和Pcore_static,计算所述第一处理器核的功耗Pcore
在本申请中,处理器核的工作频率和工作电压对动态功耗产生影响,能够根据P1、P2和第一处理器核的动态参数,计算第一处理器核的动态功耗Pcore_dynamic,该动态参数包括:第一处理器核的动态工作电压Vcore_dynamic、第一处理器核的动态工作频率ffreq_dynamic和第一处理器核的动态功耗因子Ceff_dynamic;处理器核的静态电压、静态频率会对处理器核的静态功耗产生影响,可以根据第一处理器核的静态参数,计算第一处理器核的静态功耗Pcore_static,其中第一处理器核的静态参数包括:第一处理器核的静态电压Vcore_static、第一处理器核的静态频率ffreq_static和第一处理器核的静态功耗因子;处理器核的总功耗为动态功耗和静态功耗之和。可以看出,本申请能够计算得到单个处理器核的动态功耗、静态功耗,进而获取得到单个处理器核的功耗。
综合第一方面,在第四种可能的实现方式中,所述方法在所述处理器监测第一处理器核上运行的性能事件之前,还包括:
所述处理器接收目标对象的功耗获取请求;所述处理器根据所述功耗获取请求,确定出与所述目标对象相关的N个性能事件,并将所述N个性能事件存储在性能事件配置表中,其中所述N个性能事件包括:所述N1个第一类性能事件和所述N2个第二类性能事件;所述处理器根据所述性能事件配置表,配置性能事件计数器;其中,所述性能事件计数器用于对所述N个性能事件中的每个性能事件在预设时间范围内发生的次数进行统计。
在本申请中,处理器接收目标对象的功耗获取请求,该目标对象可以是任意一个或者多个软件应用,该功耗获取请求用于请求获取处理器执行目标对象时的各个细粒度功耗,该细粒度功耗包括:单个处理器核内部任意一个或者多个功能模块的功耗、单个处理器核的功耗。处理器根据该功耗获取请求配置与目标对象相关的性能事件,并将性能事件记录在性能事件配置表中,并根据性能事件配置表配置性能事件计数器,该性能计数器用于统计所述性能事件配置表中记录的性能事件在预设时间内发生的次数。本申请能够根据用户需求配置性能事件,获取处理器执行任意目标对象时的各个细粒度功耗。
综合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述处理器读取所述第i个第一类性能事件在预设时间范围内发生的次数,包括:
所述处理器从所述性能事件计数器中,读取所述第i个第一类性能事件在预设时间范围内发生的次数。
在本申请中,性能事件监测单元包括:性能事件计数器,处理器根据性能事件配置表配置性能计数器之后,处理器读取第i个第一类性能事件在预设时间范围内发生的次数,具体实现方式可以是:处理器从性能事件计数器中,读取第i个第一类性能事件在预设时间范围内发生的次数。该性能事件计数器可以根据性能事件配置表进行更新,提高了对软件或者硬件的各个细粒度功耗进行监控的灵活性。
综合第一方面的第二种可能的实现方式或第四种可能的实现方式,在第六种可能的实现方式中,所述处理器获取所述第i个第一类性能事件的单位功耗因子,包括:
所述处理器根据所述性能事件配置表,查找功耗因子参数表,其中所述功耗因子参数表用于处理器存储所述N个性能事件的单位功耗因子;所述处理器从功耗因子参数表中,获取所述第i个第一类性能事件的单位功耗因子。
在本申请中,所述处理器包括:功耗因子参数表,该功耗因子参数表用于存储与目标对象相关的性能事件的单位功耗因子,每个性能事件的单位功耗因子可以为一个常量,具体可能通过线性回归等方法获取。本申请中处理器可以通过根据性能事件配置表,查找功耗因子参数表,获取所述第i个第一类性能事件的单位功耗因子。
综合第一方面的第二种可能的实现方式至第六种可能的实现方式,在第七种可能的实现方式中,所述第一功能模块和所述第二功能模块是所述处理器根据处理器微架构流水线的不同阶段,将多个逻辑功能单元划分为不同功能模块的。
在本申请中,处理器根据处理器微架构流水线的不同阶段,将处理器核内部的多个逻辑功能单元划分为不同功能模块,建立处理器逐级细化从上至下的动态功耗感知模型,在该动态功耗感知模型中,每个功能模块可以按照其功能及相应的逻辑单元进行逐级细分,从而形成一个覆盖整个处理器微架构的逐级细化的分层功耗模型,以精确获取处理器及其内部各个功能模块的动态功耗。
综合第一方面的第七种可能的实现方式,在第八种可能的实现方式中,所述第一功能模块和所述第二功能模块为以下三种功能模块中的任意两种:前端功能模块、执行功能模块和存储功能模块;
其中所述前端功能模块包括以下逻辑功能单元:指令缓存单元、分支预测单元、译码单元和其他前端操作单元;
所述执行功能模块包括以下逻辑功能单元:算术逻辑单元;
所述存储功能模块包括以下逻辑功能单元:各级数据缓存单元。
在本申请中,提供了一种基于处理器微架构划分功能模块的具体实现方式,具体是根据处理器微架构流水线的不同阶段,将处理器核内部的多个逻辑功能单元划分为前端功能模块、执行功能模块和存储功能模块,前端功能模块包括指令缓存单元、分支预测单元、译码单元和其他前端操作单元,执行功能模块主要包括算术逻辑单元,存储功能模块包括各级数据缓存单元,则第一功能模块和第二功能模块为以上三种功能模块中的任意两种。
第二方面,本发明实施例提供了一种基于处理器的功耗控制装置,包括:存储单元和处理单元,所述存储单元用于存储一组程序代码,所述处理单元用于调用所述存储单元中所述程序代码执行如第一方面至第一方面的第八种可能的实现方式中任一项所述的方法。
第三方面,本发明实施例提供了一种处理器的功耗控制方法,包括:所述处理器包括多个处理器核,所述处理器核包括至少一个功能模块,所述处理器核执行目标对象时每调用一个功能模块则对应产生一类性能事件,所述方法包括:
所述处理器接收目标对象的功耗获取请求,并根据所述功耗获取请求确定出与所述目标对象相关的N个性能事件,其中所述N个性能事件包括:所述N1个第一类性能事件和所述N2个第二类性能事件,N为大于1的整数,N1和N2为正整数;
所述处理器监测第一处理器核上运行的N1个第一类性能事件,获取所述N1个第一类性能事件中每个性能事件在预设时间内发生的次数;
所述处理器获取所述N1个第一类性能事件中每个性能事件的功耗因子;
所述处理器根据所述N1个第一类性能事件中每个性能事件在预设时间内发生的次数和功耗因子,计算N1个第一类性能事件中每个第一类性能事件所消耗的能量,并根据所述N1个第一类性能事件所消耗的能量确定所述第一处理器核的第一功能模块的功耗P1。
在本申请中,处理器能够通过接收目标对象的功耗获取请求,并根据功耗获取请求确定出与目标对象相关的N个性能事件,其中所述N个性能事件可以包括:至少两类性能事件,本发明实施例以N1个第一类性能事件和N2个第二类性能事件进行示范性说明。本申请中处理器能够通过获取任意一类性能事件中每个性能事件在预设时间内发生的次数和功耗因子,确定任意一类性能事件所消耗的能量,进而确定任意一类功能模块的功耗。可以看出,本申请能够获取处理器内部任意一个或者多个功能模块的功耗,提高了对处理器上运行的软件或者硬件的功耗监测、分析和控制的便利性。
综合第三方面,在第一种可能的实现方式中,所述方法在监测第一处理器核上运行的N1个第一类性能事件之前,还包括:
所述处理器将所述N个性能事件存储在性能事件配置表中;
所述处理器根据所述性能事件配置表,配置性能事件计数器;
其中,所述性能事件计数器用于对所述N个性能事件中的每个性能事件在预设时间范围内发生的次数进行统计。
在本申请中,处理器在监测性能事件之前,处理器根据目标对象配置性能事件配置表,并根据性能事件配置表配置性能事件计数器,提高了监控性能事件的灵活性和便利性。
综合第三方面或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述处理器获取所述N1个第一类性能事件中每个性能事件的功耗因子具体包括:
所述处理器从所述功耗因子参数表中获取所述N1个第一类性能事件中每个性能事件的功耗因子。
在本申请中,处理器包括:功耗因子参数表,该功耗因子参数表用于存储与目标对象相关的性能事件的单位功耗因子,每个性能事件的单位功耗因子可以为一个常量,具体可能通过线性回归等方法获取。本申请中处理器可以通过根据性能事件配置表,查找功耗因子参数表,获取所述第i个第一类性能事件的单位功耗因子。
综合第三方面或第三方面的第一种可能的实现方式,在第三种可能的实现方式中,所述处理器包括:性能事件监测单元,所述处理器监测第一处理器核上运行的N1个第一类性能事件,获取所述N1个第一类性能事件中每个性能事件在预设时间内发生的次数具体包括:
所述处理器通过性能事件监测单元监测第一处理器核上运行的N1个第一类性能事件,从所述性能计数器中获取所述N1个第一类性能事件中每个性能事件在预设时间内发生的次数。
在本申请中,提供了监控性能事件的具体实现方式,处理器具体可以通过性能事件监测单元监测第一处理器核上运行的N1个第一类性能事件,从性能计数器中获取N1个第一类性能事件中每个性能事件在预设时间内发生的次数。
综合第三方面,在第四种可能的实现方式中,所述第一处理器核还包括:第二功能模块,所述方法包括:
所述处理器监测第一处理器核上N2个第二类性能事件,获取所述N2个第二类性能事件中每个性能事件在预设时间内发生的次数;
所述处理器获取所述N2个第二类性能事件中每个性能事件的功耗因子;
所述处理器根据所述N2个第二类性能事件中每个性能事件在预设时间内发生的次数和功耗因子,计算N2个第二类性能事件中每个第二类性能事件所消耗的能量,并根据所述N2个第二类性能事件所消耗的能量确定所述第一处理器核上所述第二功能模块的功耗P2;
所述处理器根据所述P1和所述P2,计算所述第一处理器核的功耗Pcore
本申请中,处理器可以包括除第一功能模块之外的多个其他功能模块,本发明实施例以处理器包括第一功能模块和第二功能模块为示范性说明。本申请可以实现计算单个处理器核内部除第一功能模块的第二功能模块,并根据第一功能模块的功耗和第二功能模块的功耗,计算单个处理器核的功耗。
综合第三方面的第四种可能的实现方式中,在第五种可能的实现方式中,所述处理器根据所述P1和所述P2,计算所述第一处理器核的功耗Pcore具体包括:
所述处理器根据所述P1、所述P2和所述第一处理器核的动态参数,计算所述第一处理器核的动态功耗Pcore_dynamic,其中所述第一处理器核的动态参数包括:所述第一处理器核的动态工作电压Vcore_dynamic、所述第一处理器核的动态工作频率ffreq_dynamic和所述第一处理器核的动态功耗因子Ceff_dynamic
所述处理器根据所述第一处理器核的静态参数,计算所述第一处理器核的静态功耗Pcore_static,其中所述第一处理器核的静态参数包括:所述第一处理器核的静态电压Vcore_static、所述第一处理器核的静态频率ffreq_static和所述第一处理器核的静态功耗因子;
所述处理器根据所述第一处理器核的Pcore_dynamic和Pcore_static,计算所述第一处理器核的功耗Pcore
在本申请中,处理器核的工作频率和工作电压对动态功耗产生影响,本申请能够根据P1、P2和第一处理器核的动态参数,计算第一处理器核的动态功耗Pcore_dynamic,该动态参数包括:第一处理器核的动态工作电压Vcore_dynamic、第一处理器核的动态工作频率ffreq_dynamic和第一处理器核的动态功耗因子Ceff_dynamic;处理器核的静态电压、静态频率会对处理器核的静态功耗产生影响,本申请可以根据第一处理器核的静态参数,计算第一处理器核的静态功耗Pcore_static,其中第一处理器核的静态参数包括:第一处理器核的静态电压Vcore_static、第一处理器核的静态频率ffreq_static和第一处理器核的静态功耗因子;处理器核的总功耗为动态功耗和静态功耗之和。可以看出,本申请能够计算得到单个处理器核的动态功耗、静态功耗,进而获取得到单个处理器核的功耗。
综合第三方面至第三方面的第五种可能的实现方式,在第六种可能的实现方式中,所述处理器包括:除所述第一处理器核之外的至少一个第二处理器核,所述方法还包括:
所述处理器计算所述至少一个第二处理器核中每一个处理器核的所述第一功能模块的功耗;
所述处理器计算所述至少一个第二处理器核中每一个处理器核的所述第二功能模块的功耗;
所述处理器计算所述至少一个第二处理器核中每一个处理器核的功耗;
所述处理器根据所述P1和所述所述至少一个第二处理器核中每一个处理器核的所述第一功能模块的功耗,计算所有处理器核的第一功能模块的功耗P1_cpu
所述处理器根据所述P2和所述所述至少一个第二处理器核中每一个处理器核的所述第一功能模块的功耗,计算所有处理器核的第一功能模块的功耗P2_cpu
所述处理器根据所述Pcore和所述至少一个第二处理器核中每一个处理器核的功耗,计算所述处理器的总功耗Pcpu
本申请能够获取处理器中除第一处理器核以外的其他处理器核的各个功能模块的功耗,并能够实现获取处理器中所有处理器核的各个功能模块的功耗,也能够实现获取处理器的总功耗。
综合第三方面至第三方面的第六种可能的实现方式,在第七种可能的实现方式中,所述第一功能模块和所述第二功能模块是所述理器根据处理器微架构流水线的不同阶段,将多个逻辑功能单元划分为不同功能模块的。
在本申请中,处理器根据处理器微架构流水线的不同阶段,将处理器核内部的多个逻辑功能单元划分为不同功能模块,建立处理器逐级细化从上至下的动态功耗感知模型,在该动态功耗感知模型中,每个功能模块可以按照其功能及相应的逻辑单元进行逐级细分,从而形成一个覆盖整个处理器微架构的逐级细化的分层功耗模型,以精确获取处理器及其内部各个功能模块的动态功耗。
综合第三方面的第七种可能的实现方式,在第八种可能的实现方式中,所述第一功能模块和所述第二功能模块为以下三种功能模块中的任意两种:前端功能模块、执行功能模块和存储功能模块;
其中所述前端功能模块包括以下逻辑功能单元:指令缓存单元、分支预测单元、译码单元和其他前端操作单元;
所述执行功能模块包括以下逻辑功能单元:算术逻辑单元;
所述存储功能模块包括以下逻辑功能单元:各级数据缓存单元。
在本申请中,提供了一种基于处理器微架构划分功能模块的具体实现方式,具体是根据处理器微架构流水线的不同阶段,将处理器核内部的多个逻辑功能单元划分为前端功能模块、执行功能模块和存储功能模块,前端功能模块包括指令缓存单元、分支预测单元、译码单元和其他前端操作单元,执行功能模块主要包括算术逻辑单元,存储功能模块包括各级数据缓存单元,则第一功能模块和第二功能模块为以上三种功能模块中的任意两种。
综合第三方面的第六种可能的实现方式,在第九种可能的实现方式中,所述方法还包括:
所述处理器判断所述Pcpu是否低于预设的功耗阈值Pd
当所述Pcpu低于所述Pd时,所述处理器从所述P1_cpu和所述P2_cpu中确定出最小的功耗值对应的功能模块,增加所述比较小的功耗值对应功能模块中功耗占比高的业务在处理器上运行;
当所述Pcpu不低于所述Pd时,所述处理器从所述P1_cpu和所述P2_cpu中确定出最大的功耗值对应的功能模块,减少在所述比较大的功耗值对应功能模块中功耗占比高的业务在处理器上运行。
本申请能够根据获取得到的处理器总功耗Pcpu,以及所有处理器核的各个功能模块的功耗,实现对各个功能模块功耗中不同占用比的业务的混合调度,以进行处理器功耗的优化控制,提高了处理器的功耗利用率。
综合第三方面的第六种可能的实现方式,在第十种可能的实现方式中,所述方法还包括:
所述处理器判断所述Pcpu是否低于所述Pd
当所述Pcpu低于所述Pd时,所述处理器判断处理器利用率是否低于处理器利用率阈值,若所述处理器利用率低于处理器利用率阈值,在预设的处理器工作电压和工作频率范围内,降低处理器工作电压和工作频率,若所述处理器利用率超过处理器利用率阈值,在预设的处理器工作电压和工作频率范围内,提高处理器工作电压和工作频率;
当所述Pcpu不低于所述Pd时,在预设的处理器工作电压和工作频率范围内,处理器减少业务在处理器上的运行,或者降低所述处理器工作电压和工作频率。
本申请能够根据处理器执行不同应用或者进程时的处理器总功耗Pcpu,对处理器的电压和频率进行动态调整,从而在保证性能的前提下降低处理器的功耗。
第四方面,本发明实施例提供了一种基于处理器的功耗控制装置,包括:存储单元和处理单元,所述存储单元用于存储一组程序代码,所述处理单元用于调用所述存储单元中所述程序代码执行如第三方面至第三方面的第十种可能的实现方式中任一项所述的方法。
第五方面,本发明实施例提供了一种基于处理器的功耗控制方法,包括:
所述处理器接收目标对象的功耗获取请求,所述功耗获取请求用于请求获得所述处理器中第一处理器核执行目标对象时任意一个或者多个逻辑功能单元的功耗;
所述处理器根据所述功耗获取请求,确定第一处理器核上与所述目标对象相关的N3个性能事件,其中N3为正整数;
所述处理器监测第一处理器核上的所述N3个性能事件,获取所述N3个性能事件中每个性能事件在预设时间内发生的次数;
所述处理器获取所述N3个性能事件中每个性能事件的功耗因子;
所述处理器根据所述N3个性能事件中每个性能事件的功耗因子和在预设时间内发生的次数,计算所述N3个性能事件中每个性能事件所消耗的能量,根据所述N3个性能事件中每个性能事件所消耗的能量,确定所需求的功耗。
本申请能够根据接收到的目标对象的功耗获取请求,确定与目标对象相关的N3个性能事件,并监控N3个性能事件中每个性能事件在预设时间内发生的次数,并获取N3个性能事件中每个性能事件的功耗因子,再根据上述N3个性能事件中每个性能事件在预设时间内发生的次数和功耗因子,计算得到处理器核内部任意一个或者多个逻辑功能单元的功耗。可以看出,本申请能够根据任意用户需求,获取处理器内部的任意一个或者多个逻辑功能单元的功耗,以便于用户对处理器内部各个细粒度功耗进行监控、分析和控制。
综合第五方面,在第一种可能的实现方式中,所述方法在所述处理器根据所述功耗获取请求,确定第一处理器核上与所述目标对象相关的N3个性能事件之后,还包括:
所述处理器将所述N3个性能事件存储在性能事件配置表中;
所述处理器根据所述性能事件配置表,配置性能事件计数器;
其中,所述性能事件计数器用于对所述N3个性能事件中的每个性能事件在预设时间范围内发生的次数进行统计。
在本申请中,处理器通过性能事件配置表存储与目标对象相关的性能事件,并根据不同的性能事件配置表配置性能计数器,该性能事件计数器可以根据性能事件配置表进行更新,提高了对软件或者硬件的各个细粒度功耗进行监控的灵活性。
综合第五方面或者第五方面的第一种可能的实现方式,在第二种可能的实现方式中,所述处理器获取所述N3个性能事件中每个性能事件的功耗因子包括:
所述处理器根据所述性能事件配置表,查找功耗因子参数表,其中所述功耗因子参数表用于处理器存储所述N3个性能事件的单位功耗因子;
所述处理器从功耗因子参数表中,获取所述N3个性能事件中每个性能事件的单位功耗因子。
在本申请中,处理器包括:功耗因子参数表,该功耗因子参数表用于存储与目标对象相关的性能事件的单位功耗因子,每个性能事件的单位功耗因子可以为一个常量,具体可能通过线性回归等方法获取。本申请中处理器可以通过根据性能事件配置表,查找功耗因子参数表,获取所述N3个性能事件中每个性能事件的单位功耗因子。
综合第五方面或者第五方面的第一种可能的实现方式,在第三种可能的实现方式中,所述处理器监测第一处理器核上的所述N3个性能事件,获取所述N3个性能事件中每个性能事件在预设时间内发生的次数,包括:
所述处理器监测第一处理器核上的所述N3个性能事件,从所述性能事件计数器中,读取所述N3个性能事件中每个性能事件在预设时间内发生的次数。
在本申请中,提供了监测性能事件的具体实现方式,处理器具体可以通过性能事件监测单元监测第一处理器核上运行的N3个性能事件,从性能计数器中获取N3个性能事件中每个性能事件在预设时间内发生的次数。
第六方面,本发明实施例提供了一种基于处理器的功耗控制装置,包括:存储单元和处理单元,所述存储单元用于存储一组程序代码,所述处理单元用于调用所述存储单元中所述程序代码执行如第五方面至第五方面的第三种可能的实现方式中任一项所述的方法。
第七方面,本发明实施例提供了一种处理器,所述处理器包括至少一个处理器核、存储器和运算器;
所述处理器核包括至少一个功能模块和性能事件监测单元,所述处理器核执行目标对象时每调用一个功能模块则对应产生一类性能事件;
所述存储器,用于存储所述性能事件配置表和功耗因子参数表,其中所述性能事件配置表用于记录所述处理器产生的至少一类性能事件,所述功耗因子参数表用于存储所述至少一类性能事件中每个性能事件的功耗因子;
所述性能事件监测单元,用于监测所述性能事件配置表中记录的至少一类性能事件;
所述运算器,用于计算任意一类或者多类性能事件中每个性能事件所消耗的能量,并根据任意一类或者多类性能事件所消耗的能量,计算任意一个或者多个功能模块的功耗。
综合第七方面,在第一种可能的实现方式中,还包括:
所述处理器核,还用于接收目标对象的功耗获取请求,并根据所述功耗获取请求确定出与所述目标对象对应的至少一类性能事件,并将所述至少一类性能事件存储在所述配置性能事件配置表中。
综合第七方面,在第二种可能的实现方式中,还包括:
所述处理器核,还用于根据处理器微架构流水线的不同阶段,将所述处理器的多个逻辑功能单元划分为多个功能模块;
所述多个功能模块包括:前端功能模块、执行功能模块和存储功能模块;
所述前端功能模块包括以下逻辑功能单元:指令缓存单元、分支预测单元、译码单元和其他前端操作单元;
所述执行功能模块包括以下逻辑功能单元:算术逻辑单元;
所述存储功能模块包括以下逻辑功能单元:各级数据缓存单元。
综合第七方面,在第三种可能的实现方式中,还包括:
所述处理器核执行目标对象时每调用一个功能模块则对应产生一类性能事件具体包括:
所述处理器核执行所述目标对象时调用所述前端功能模块则对应产生前端性能事件;
所述处理器核执行所述目标对象时调用所述执行功能模块则对应产生执行性能事件;
所述处理器核执行所述目标对象时存储所述前端功能模块则对应产生存储性能事件。
综合第七方面或者第七方面的第三种可能的实现方式中,在第四种可能的实现方式中,所述运算器具体用于:
根据所述前端性能事件中每个性能事件在预设时间内发生的次数和单位功耗因子,计算所述目标对象的所述前端功耗;或者
根据所述执行性能事件中每个性能事件在预设时间内发生的次数和单位功耗因子,计算所述目标对象的执行功耗;或者
根据所述存储性能事件中每个性能事件在预设时间内发生的次数和功耗因子,计算所述目标对象的存储功耗。
本申请能够根据具体的用户需求,根据任意一类或者多类性能事件中每个性能事件在预设时间内发生的次数和单位功耗因子,计算任意一个或者多个功能模块的功耗。
综合第七方面的第四种可能的实现方式中,在第五种可能的实现方式中,所述运算器还具体用于:根据所述处理器核的所述前端功耗、所述执行功耗和所述存储功耗,计算所述处理器核的功耗。
可以看出,本申请中的运算器能够用于根据单个处理器核中每个功能模块的功耗,计算处理器核的功耗。
第八方面,本发明实施例提供了一种处理器,所述处理器包括处理器核、存储器和运算器;
所述处理器核包括至少一个逻辑功能单元和性能事件监测单元;
所述处理器核,用于接收目标对象的功耗获取需求,并根据所述功耗获取需求确定出处理器核上与所述目标对象对应的至少一个性能事件,并将所述至少一个性能事件存储在性能事件配置表中,所述功耗获取需求用于请求获得所述处理器中处理器核执行目标对象时任意一个或者多个逻辑功能单元的功耗;
所述性能事件监测单元,用于监测所述性能事件配置表中记录的至少一个性能事件中每个性能事件;
所述存储器,用于存储所述性能事件配置表和功耗因子参数表,所述功耗因子参数表用于存储所述至少一个性能事件的功耗因子;
所述运算器,用于根据所述性能事件监测单元监测到的所述至少一个性能事件中每个性能事件在预设时间内发生的次数,以及从所述功耗因子表中获取到所述至少一个性能事件中每个性能事件的功耗因子,计算所述至少任意一个或者多个逻辑单元的所消耗的能量,并根据所述任意一个或者多个逻辑单元所消耗的能量确定所述任意一个或者多个逻辑功能单元的功耗。
可以看出,本申请中处理器能够用于根据用户需求,计算处理器核内部任意一个或者多个逻辑功能单元的功耗,以便于精确实现处理器内部各个逻辑功能单元的细粒度功耗监控、分析和控制。
通过实施本发明实施例,能够通过根据目标对象配置性能事件配置表,确定出处理器中与目标对象相关的性能事件,并计算获得单个处理器核内部各个功能模块的功耗、单个处理器核的功耗,以及所有CPU的功耗,并能够根据需求,实时、准确地获取其他相关的细粒度功耗。可以看出,本申请能够实时获取处理器及处理器内部不同功能模块的功耗,以及其他细粒度的功耗,从而建立功耗、硬件与软件三者之间的相关性,实现对硬件、软件等细粒度的功耗监测、分析与控制。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1是一种CPU内部功能模块的结构示意图;
图2是一种CPU微架构的结构示意图;
图3是一种基于CPU微架构的动态功耗感知模型的示意图;
图4是一种基于处理器的功耗控制装置的结构示意图;
图5是一种基于处理器的功耗控制方法的示意图;
图6是另一种基于处理器的功耗控制方法的示意图;
图7是一种基于处理器的功耗控制装置的结构示意图;
图8是另一种基于处理器的功耗控制装置的结构示意图;
图9是另一种基于处理器的功耗控制装置的结构示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。
请参见图1,图1是本发明实施例提供的一种CPU内部功能模块的结构示意图,该CPU内部功能模块包括:CPU核(CPU Core)101、外部缓存(External Cache)102、内部存储器(Memory)103、通用单元(General Purpose Unit)104、加速器(Accelerator)105和输入/输出控制&接口单元(Input/Output Control&Interface)106。
其中该CPU为多核系统,包括n+1个CPU核,其中n为大于等于0的整数,如:CPU Core0~CPU Core n。在单个CPU核内部存在可根据逻辑功能划分的CPU核微架构,该CPU微架构是根据处理器指令系统的执行过程来设计的。一个软件(应用、进程等)的运行,需要一个或多个CPU核的处理,也需要一个或多个CPU流水线相关功能模块的支持。
但是在现有技术中,只能获取CPU消耗的整体功耗,不能实现对硬件(如处理器,处理器单个CPU核、CPU流水线相关功能模块等)、软件(如应用、进程等)等细粒度的功耗监测、分析与控制,例如:一个微信应用运行在终端上,无法获得10分钟之内,微信应用消耗的总功耗、单个CPU核的功耗、多个CPU核的功耗,以及支持微信运行的CPU内部相关功能模块的功耗,因此无法对微信应用进行细粒度的功耗监测、分析与控制。
在CPU内部架构中,还包括:性能检测单元(Performance Monitor Unit,PMU),PMU是一个CPU模块单元,用于CPU对某些性能指标进行实时监控及数据采集,广泛存在于x86、ARM等处理器内部。对于ARM64处理器,PMU单元主要包括:时钟周期计数器、性能事件计数器、中断及计数溢出寄存器、系统控制寄存器、PMU寄存器接口,以及其他功能模块的PMU事件接口。
性能事件,是与处理器内部功能模块相关的一些电气逻辑,对应处理器执行逻辑操作时产生的事件,可以通过PMU单元对其进行计数和监测。
性能事件计数器,用于统计性能事件在预设时间范围内发生的次数,可选的,在本发明实施例中该计数器为32位寄存器。需要理解的是,在实际应用中,该计数器也可以是其他寄存器,不仅限如此。
请参见图2,图2是本发明实施例提供的一种CPU微架构的结构示意图,该CPU微架构可以具体存在于图1中任意一个CPU Core的内部,该CPU微架构包括以下逻辑功能单元:取指及分支预测单元201、译码单元202、寄存器重命名单元203、微指令分发单元204、微指令执行相关的算术逻辑单元(Arithmetic Logic Unit,ALU)205、执行完毕及结果写回206、指令缓存207、一级数据缓存(Layer 1Data-Cache,L1D-Cache)208、二级缓存(Layer2Data-Cache,L2D-Cache)209至最后一级缓存210。需要理解的是,上述逻辑单元为CPU中功耗占比高的一部分逻辑功能单元,在实际应用中,该CPU微架构还可以包括其他逻辑功能单元,本发明实施例中仅列举上述逻辑单元作为示范性说明,但不仅限如此。
其中ALU 205包括:整型(Integer)、浮点(Floating Point,FP)、单指令多数据(Single Instruction Multiple Data,SIMD)、分支处理(Branch)、下载(LOAD)、存储(STORE)以及其他ALU。
其中二级缓存209包括:指令缓存和数据缓存。
其中其他各级缓存包括:三级缓存至最后一级缓存210(Last level Cache,LLCCache)。
在CPU微架构中,CPU每进行一个逻辑功能单元的操作,都对应一些特定的性能事件。PMU能够实时监控所有的性能事件的状态。
请参见图3,图3是本发明实施例提供的一种基于CPU微架构的动态功耗感知模型的示意图。该动态功耗感知模型是基于图2中的CPU微架构建立的,能够获取CPU核的各功能模块的功耗,具体实现方式包括:根据处理器微架构流水线的不同阶段,将整个流水线划分为不同的功能模块,并根据各功能模块执行的不同指令类型或进行操作时消耗的不同功耗,设定相应模块中功耗占比高的指令或操作对应的性能事件,根据性能事件计数器的计数及性能事件的单次操作消耗的能量(单位功耗因子),计算得出相应模块的功耗。
本申请根据处理器微架构流水线的不同阶段,将CPU微架构中的逻辑功能单元划分为三大类:前端功能模块、执行功能模块和存储功能模块。需要说明的是,在实际应用中,还可以按照其他方式进行划分,不仅限如此。
本申请中,单个CPU核的动态功耗(Pcore_dynamic)包括:前端功能模块的功耗,即前端功耗(Front End Energy,PFE)301;执行功能模块的功耗,即执行功耗(Execution Energy,PEXE)302;以及存储功能模块的功耗,即存储功耗(Memory Energy,PMEM)303。
本申请中,前端功能模块的功耗PFE主要包括图2中取指及分支预测单元和译码单元所消耗的能量,前端功能模块具体包括以下逻辑功能模块:指令缓存单元、分支预测单元、译码单元和其他前端操作单元,CPU核每进行一个逻辑功能单元的操作,对应一个性能事件。
PFE可以根据如下公式计算:
PFE=Pt_ICache+Pt_BR_PRED+Pt_Decode+Pt_Other_FE
=Picache*Counticache+Pbr_pred*Countbr_pred+Pdecode*Countdecode+Pother_fe*Countother_fe (公式3-1)
其中:
Pt_iCache为访问指令缓存消耗的能量,即指令缓存功耗。
Pt_BR_PRED为执行分支预测操作消耗的能量,即分支预测功耗。
Pt_Decode为执行指令译码消耗的能量,即译码单元功耗。
Pt_Other_FE为前端其他逻辑功能操作消耗的能量,即其他前端功耗。
Picache为单次访问指令缓存消耗的能量,即为指令缓存性能事件(Event_ICache_Access)的单位功耗因子。
Counticache为访问指令缓存的总的次数,在CPU核工作过程中,可以通过性能监测单元的性能计数器获取;该性能计数器,能够统计指令缓存性能事件在预设时间范围内发生的次数。
Pbr_pred为单次分支预测消耗的能量,即为分支预测性能事件(Event_Branch_Prediction)的单位功耗因子。
Countbr_pred为分支预测的总的次数,在CPU核工作过程中通过性能监测单元的性能计数器获取;该性能计数器,能够统计分支预测性能事件在预设时间范围内发生的次数。
Pdecode为单次执行译码操作消耗的能量,即为执行译码性能事件(Event_Decode)的单位功耗因子。
Countdecode为指令解码的总的次数,在CPU核工作过程中通过性能监测单元的性能计数器获取;该性能计数器,能够统计指令解码性能事件在预设时间范围内发生的次数。
Pother_fe为前端其他操作单次消耗的能量,即为前端性能事件的单位功耗因子。
Countother_fe为其他前端操作的总次数,在CPU核工作过程中通过PMU的性能计数器获取;对应的性能监测事件可根据CPU核的具体实现来选取。
其中,所有单位功耗因子通常是一个常量,用于表示性能事件单次发生所消耗的能量,具体可以通过线性回归等方法获取,并保存在图4中与CPU核对应的PFP Table功耗因子参数表(Power Factor Parameter Table,PFP Table)中,如:图4中与CPU Core 0对应的功耗因子参数表中。
本申请中,执行功能模块的功耗PEXE包括图2中算术逻辑单元ALU进行各种算术及逻辑运算,以及写回操作单元等消耗的能量,执行功能模块具体包括以下逻辑功能单元:分支处理、整型处理、浮点处理、单指令数据处理、下载LOAD、累乘/除法处理、存储STORE以及其他算术逻辑单元,CPU核每进行一个逻辑功能单元的操作,对应一个性能事件。
PEXE可以根据如下公式计算:
PEXE=Pt_BR+Pt_Int+Pt_FP+Pt_SIMD+Pt_MAC_DIV+Pt_Load+Pt_Store+…+Pt_Other_EXE
=Pbranch*Countbranch+Pinteger*Countinteger+Pfp*Countfp+Psimd*Countsimd+Pt_MAC_DIV*Countmac_div
+Pload*Countload+Pstore*Countstore+…+Pother_EXE*Countother_EXE (公式3-2)
其中:
Pt_BR为分支处理操作消耗的总能量,即分支处理功耗。
Pt_Int为处理整型操作消耗的总能量,即整型处理功耗。
Pt_FP为处理浮点操作消耗的总能量,即浮点处理功耗。
Pt_SIMD为处理SIMD指令消耗的总能量,即单指令数据处理功耗。
Pload为处理LOAD指令消耗的总能量,即下载指令功耗。
Pt_MAC_DIV为处理累乘/除指令消耗的总能量,即累乘/除法处理功耗。
Pt_Store为处理STORE指令消耗的总能量,即存储指令功耗。
Pt_Other_EXE为其他执行单元消耗的总能量,即其他算术逻辑单元功耗。
Pbranch为分支处理操作单次消耗的能量,即为分支处理性能事件的单位功耗因子。
Countbranch为分支处理操作的总的次数。
Pinteger整型操作单次消耗的能量,即为整型操作性能事件的单位功耗因子。
Countinteger为整型操作的总的次数。
Pfp为浮点/NEON操作单次消耗的能量,即为浮点/NEON性能事件的单位功耗因子。
Countfp为浮点操作的总的次数。
Psimd为SIMD指令操作单次消耗的能量,即为SIMD指令性能事件的单位功耗因子。
Countsimd为浮点操作的总的次数。
Pt_MAC_DIV为单次累乘/除指令操作消耗的能力,即为累乘/除指令性能事件的单位功耗因子。
Countmac_div为执行累乘/除指令指令的总的次数。
Pload为LOAD操作单次消耗的能量,即为LOAD性能事件的单位功耗因子。
Countload为LOAD操作的总的次数。
Pstore为STORE操作单次消耗的能量,即为STORE性能事件的单位功耗因子。
Countstore为STORE操作的总的次数。
Pother_EXE为执行其他ALU操作单次消耗的能量,即为其他ALU性能事件的单位功耗因子。
Countother_EXE为其他操作的总的次数。
作为一种可选的实施方式,上述各单位功耗因子的获取与保存方式,和前端功能模块中所描述的一致;上述各个性能事件计数的方式,和前端功能模块中所描述的一致。
本申请中,存储功能模块的功耗PMEM主要包括图2中CPU核对各级数据缓存访问所消耗的能量,存储功能模块具体包括以下逻辑功能单元:一级数据缓存、二级缓存和其他各级缓存,CPU核每进行一个逻辑功能单元的操作,对应一个性能事件。
PMEM可以根据如下公式计算:
PMEM=Pt_L1D+Pt_L2D+…+Pt_LLC
=Pl1d*Countl1d+Pl2d*Countl2d+…+Pllc*Countllc (公式3-3)
其中:
Pt_L1D为访问L1D-Cache消耗的总能量,即一级数据缓存功耗。
Pt_L2D为访问L2Cache消耗的总能量,即二级缓存功耗。
Pt_LLC为访问LLC Cache消耗的总能量,即最后一级缓存功耗。。
Pl1d为单次访问L1D-cache消耗的能量,即L1D-cache性能事件的单位功耗因子。
Countl1d为访问L1D-cache的总的次数。
Pl2d为单次访问L2D-cache消耗的能量,即L2Cache性能事件的单位功耗因子。
Countl2d为访问L2cache的总的次数。
Pllc为单次访问LLC cache消耗的能量,若该CPU微架构中共有m级cache,则为m级cache消耗的能量,即为执行访问LLC cache操作的单位功耗因子。
Countllc为访问最后一级cache的总的次数。
作为一种可选的实施方式,上述各个单位功耗因子的获取与保存方式,与前端功耗中所描述的一致,上述计数的计算方式与前端功耗中所描述的一致。
本申请中,处理器核的不同工作电压及工作频率会导致不同的动态功耗,故需要考虑工作电压与动态功耗的对应关系。
在处理器的电路中,CMOS电路的动态功耗为:
其中:
Vdd为CPU核的动态工作电压。
fclock为CPU核的动态工作频率。
Ceff为CPU核在对应的工作电压及工作频率时对功耗的影响因子,也可以称为CPU核的动态功耗因子。
从上述公式可以看出,CMOS电路的动态功耗(Pdyn)可和电压(Vdd)的平方成正比。
作为一种可选的实施方式,结合公式3-4,处理器单核的动态功耗Pcore_dynamic为:
其中:
Vcore_dynamic为CPU核的动态工作电压。
ffreq_dynamic为CPU核的动态工作频率。
Ceff_dynamic为CPU核的静态功耗因子,可选的,在本申请中该值可以是一个常数,为包含电压、频率的线性表达式,该因子保存在图4中与单CPU核对应的PFP Table,如:与CPUCore0对应的功耗因子参数表中。
本申请中,处理器所有核的动态功耗Pcpu_core_dynamic,为该处理器中所有CPU核的动态功耗累积之和。
Pcpu_core_dynamic可以根据如下公式计算:
其中:
n为CPU中CPU Core的个数,n为大于0的正整数。
Pcore_i_dynamic为CPU Core i对应的CPU核的动态功耗,i为大于0的正整数。
作为一种可选的实施方式,本申请还可以进一步获取CPU的总功耗,该CPU的总功耗为所有CPU核的动态功耗与静态功耗的和。该静态功耗是上电后CPU核处于非运行状态的功耗,由于该功耗值相对固定,单个处理器核的静态功耗可根据处理器的实现取一固定常量;或者,在工作电压为Vcore_static时,单个处理器核的静态功耗可以按照如下公式计算:
其中:
Vcore_static为单个CPU核的静态电压。
ffreq_static为单个CPU的静态频率。
Ceff_static为单个CPU核处于静态时电压对功耗的影响因子,也可以称为CPU核的静态功耗因子,该值为一常数,亦可为包含电压、频率的线性表达式,该因子保存图4中与CPU核对应的PFP Table中。
作为一种可选的实施方式,所有处理器核的静态功耗Pcpu_core_static,可根据如下公式计算:
其中:
n为CPU中核的个数,n为大于0的正整数。
Pcore_i_static为CPU Core i对应的CPU核的静态功耗,i为大于0的正整数。
作为一种可选的实施方式,将所有处理器核的实时总功耗Pcpu确定为所有处理器核的动态功耗与静态功耗之和,可根据如下公式计算:
可以看出,本申请可以通过图3中的动态功耗感知模型,根据将单个CPU核的CPU微架构流水线的不同阶段,将整个CPU微架构的划分为不同的功能模块,并根据各功能模块执行的不同指令类型或进行操作时消耗的不同功耗,设定相应模块中功耗占比高的指令或操作对应的性能事件,根据PMU计数器的计数及其对应的单次操作消耗的能量(单位功耗因子),计算得出单个CPU核中相应模块的动态功耗,也能够计算出所有CPU核的动态功耗,并能够计算出单个CPU核的静态功耗、所有CPU核的静态功耗,最终得出CPU所有核的总功耗。需要理解的是,本申请中只是提供了一部分目标对象的功耗的计算方法和结果,当然在实际应用中,也能够根据该动态功耗模型,计算出其他目标对象的功耗,例如:单个CPU核的功耗、CPU中所有核的前端功耗、执行功耗或存储功耗,也能够计算出某个应用或者进程的消耗单个CPU核的功耗,或者某个应用或者进程消耗整体CPU的功耗。
请参见图4,图4是本发明实施例提供的一种基于处理器的功耗控制装置的结构示意图,该装置能够用于实现图3中基于CPU微架构的动态功耗感知模型。该装置包括:n+1个CPU Core、性能事件配置表、功耗因子参数表和运算器,n为大于0的正整数。需要说明的是,本申请中包括n+1个CPU Core,本发明实施例只是列举了CPU Core 0和CPU Core n相关的装置作为示例性说明,实际应用中还包括多个CPU Core相关的装置,此处不做限定。
其中,CPU Core 0~CPU Core n中任意一个CPU单核内部都包括:前端功能模块、执行功能模块和存储功能模块。每个功能模块都有相对应的一类性能事件,该性能事件与图1至图3中的描述相同。可选的,前端功能模块对应i+1个性能事件,具体是前端性能事件0~i,i为正整数;执行功能模块对应j+1个性能事件,具体是执行性能事件0~j,j为正整数;存储功能模块对应k+1个性能事件,具体是存储性能事件0~k,k为正整数。
CPU核中还包括性能事件计数器,用于统计目标性能事件在预设时间内发生的次数,可选的,在本申请中该计数器是32-bit,该事件计数器由CPU中PMU提供的。需要理解的是,在实际应用中,该计数器也可以为其他位寄存器,不仅限如此。
作为一种可选实施方式,本申请中事件配置表用于根据目标对象,确定出对与目标对象相关的性能事件。
配置该事件配置表之后,CPU能够根据该事件配置表,配置性能事件计数器,以确定在预设的时间内对相关的性能事件进行计数,例如:配置性能事件计数器,确定10分钟之内对Event_ICache_Access事件进行计数。
配置该事件配置表之后,CPU还可以根据该事件配置表,查找PFP Table,以获取与性能事件一一对应的单位功耗因子,例如:查找PFP Table,获得Pt_Decode、Picache等。该单位功耗因子具体可以通过测试、线性回归等多种方法进行计算得出。该PFP Table可以存储与性能事件一一对应的单位功耗因子,包括:与前端性能事件0~i对应的前端性能事件的单位功耗因子0~i,与执行性能事件0~j对应的执行事件的单位功耗因子0~j,与存储性能事件0~k对应的存储性能事件的单位功耗因子0~k,以及CPU核的动态功耗因子和静态功耗因子。该PFP table可以存储在CPU的内部存储器、基本输入/输出系统(Basic InputOutput System,BIOS)或者寄存器中。
运算器,用于根据相关性能事件的计数以及该事件对应的功耗因子,计算图3中任意一个或者多个功能模块的功耗,具体包括:根据所述前端性能事件中每个性能事件在预设时间内发生的次数和功耗因子,计算目标对象的所述前端功耗PFE;或者根据所述执行性能事件中每个性能事件在预设时间内发生的次数和功耗因子,计算所述目标对象的执行功耗PEXE;或者根据存储性能事件中每个性能事件在预设时间内发生的次数和功耗因子,计算目标对象的存储功耗PMEM。需要注意的是,该计算器可以根据处理器接收到的具体需求,计算多个或者任意一个功能模块的功耗,或者计算任意一个或者多个逻辑功能单元的功耗,获取其他细粒度的功耗,此处不做具体限定。
运算器,还用于根据单个CPU核的动态参数,以及PFE、PEXE和PMEM,计算单个CPU核的动态功耗Pcore_dynamic或所有CPU核的动态功耗Pcpu_core_dynamic,其中该动态参数包括:CPU核的动态工作电压Vcore_dynamic、CPU核的动态工作频率ffreq_dynamic和CPU核的动态功耗因子
Ceff_dynamic;或者,根据单个CPU核的静态参数,计算单个CPU核的静态功耗Pcore_static或所有CPU核的静态功耗Pcpu_core_static,其中该静态参数包括:所述第一CPU核的静态电压Vcore_static、所述第一CPU核的静态频率ffreq_static和所述第一CPU核的静态功耗因子Ceff_static
运算器,还用于计算处理器的实时总功耗Pcpu
请参见图5,图5是本发明实施例提供的一种基于处理器的功耗控制方法的示意图,该方法包括:
步骤S501、根据目标对象的功耗获取请求,确定出CPU上的第一CPU核上与目标对象相关的N个性能事件,N为大于1的正整数。
可选的,上述步骤S501中功耗获取请求是根据用户的具体需求而确定的,可以用于请求获取该处理器执行目标对象时处理器内部的任意一个或者多个功耗模块的功耗,例如:图3中的所有处理器核的前端功耗、执行功耗和存储功耗中的任意一个或者多个;也可以用于请求获取任意处理器内部一个或者多个逻辑功能单元的功耗;也可以用于请求获取该处理器执行目标对象时单个处理器核的功耗,或者所有处理器核的功耗。当然在实际应用中,该功耗获取需求还可以用于请求获取处理器内部的其他细粒度功耗,,此处不做具体限定。
需要说明的是,为了完整介绍本申请中基于处理器的功耗控制方法,本发明实施例以首先获取单个处理器核内部各个功能模块的功耗,进而计算单个处理器核的功耗,然后计算所有处理器核的各个功能模块功耗和所有处理器核的总功耗为例进行示范性说明。当然,在实际应用中,可以按照具体的功耗获取需求,只获取其中的任意一个或者多个部分的功耗,此处不做具体限定。
作为一种可选的实施方式,该方法在根据关于目标对象的功耗获取请求,确定出CPU上的第一CPU核上与目标对象相关的N个性能事件之前,还包括:该处理器接收关于目标对象的功耗获取请求,该功耗获取请求可以来自于处理器应用系统的应用层或者其他外部模块,该功耗获取请求能够触发该处理器执行相关的功耗计算。
作为一种可选的实施方式,本申请中处理器可以是周期性自主执行目标对象的功耗计算的,具体实现方式可以是:该处理器根据功耗获取需求配置定时器,该处理器监测定时器的运行状态,当该定时器达到预设的时间值时,该处理器执行关于目标对象的功耗计算。
上述步骤S501中的第一CPU核可以是多个CPU核中的任意一个,具体可以是图1中的CPU Core 0至CPU Core n中的任意一个。虽然在本发明实施例中,可能使用了术语“第一”、“第二”和“第三”等等来描述各个CPU核,但是这些CPU核不应当受这些术语限制,使用这些术语仅仅是为了只是为了将一个CPU核与另一个CPU核进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一CPU核可以是第二CPU核,同时第二CPU核也可以是第一CPU核。
上述步骤S501中目标对象可以是硬件,具体可以是处理器、单个CPU核或者CPU流水线相关功能模块等;也可以是软件,具体可以是应用、进程等,如微信、QQ或淘宝等应用。需要理解的是,在实际应用中,该目标对象还可以是其他运行于处理器上的硬件或软件对象,此处不做具体限定。该目标对象可以包括单个或者多个对象。目标对象在CPU上运行的过程中,会触发第一CPU核上与目标对象相关的N个性能事件的产生。
上述步骤S501中N个性能事件包括:在第一CPU核的第一功能模块上运行的N1个第一类性能事件,以及在第一CPU核的第二功能模块上运行的N2个第二类性能事件,其中N1和N2是正整数。该性能事件的具体定义和解释与图1和图3中的描述相一致。作为一种可选的实施方式,性能事件的分类具体根据图3中的动态功耗感知模型的设计过程中,CPU微架构中的逻辑功能单元划分方法来确定,在本发明实施例中,其中该第一类性能事件具体可以是前端性能事件、执行性能事件和存储性能事件中的任意一类,第二类性能事件具体可以上述各个事件中不同于第一类性能事件的任意一类。虽然在本发明实施例中,可能使用了术语“第一”、“第二”和“第三”等等来描述各类性能事件,但是这些性能事件不应当受这些术语限制,使用这些术语仅仅是为了只是为了将一类性能事件与另一类性能事件进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一类性能事件可以是第二类性能事件,同时第二性能事件也可以是第一类性能事件。举例来说:当目标对象是微信时,则配置CPU在微信运行过程中相关的10000个性能事件,该10000个性能事件可以根据本发明实施例中图3所描述的方法进行分类,包括:3000个前端性能事件、4000个执行性能事件和3000个存储性能事件。
作为一种可选的实施方式,在图5描述的方法中,该方法在根据目标对象确定出与所述目标对象相关的N个性能事件之后,还包括:将所述N个性能事件存储在性能事件配置表中,以便于根据该性能事件配置表,配置性能事件计数器,并从功耗因子参数表中获取N个性能事件的功耗因子,该功耗因子参数用于CPU存储所述N个性能事件的单位功耗因子。
步骤S502、根据性能事件配置表,配置性能事件计数器。
上述步骤S502中该性能事件计数器用于统计N个性能事件中的每一个性能事件在预设时间范围内发生的次数,可选的,该计数器具体可以是32位寄存器。
作为一种可选的实施方式,本发明实施例根据性能事件配置表,配置性能事件计数器,以确定该性能事件计数器具体对哪些性能事件进行计数,例如:当确定10分钟之内对微信的前端功耗进行采集时,则通知事件计数器,统计微信的前端性能事件0~i在10分钟之内发生的次数。
S503、监测处理器CPU上的第一CPU核上运行的N个性能事件。
作为一种可选的实施方式,监测处理器CPU上的第一CPU核上运行的N个性能事件,具体包括:通过PMU监测CPU上的第一CPU核上运行的N个性能事件。
步骤S504、计算N1个第一类性能事件中每个第一类性能事件所消耗的能量,并根据该N1个第一类性能事件所消耗的能量确定所述第一功能模块的功耗P1。
作为一种可选的实施方式,计算所N1个第一类性能事件中每个第一类性能事件所消耗的能量中,计算第i个第一类性能事件所消耗的能量,具体实现方式可以包括:
从性能计数器中,读取第i个第一类性能事件在预设时间范围内发生的次数;从功耗因子参数中,获取第i个第一类性能事件的单位功耗因子,其中单位功耗因子,用于表示第i个第一类性能事件单次发生所消耗的能量;根据第i个第一性能事件发生的次数和单位功耗因子,计算所述第i个第一性能事件所消耗的能量,具体计算方式可以根据公式3-1至公式3-3中的对应一个公式计算,例如:当第一类性能事件为前端性能事件,则可以根据公式3-1计算。
步骤S505、计算N2个第二类性能事件中每个第二类性能事件所消耗的能量,并根据所述N2个第二类性能事件所消耗的能量确定所述第二功能模块的功耗P2。
作为一种可选的实施方式,上述计算P2的具体实现方式与计算P1的方式相同,只是将第一类性能事件改为第二类性能事件。
步骤S506、根据P1和P2确定第一CPU核的功耗。
作为一种可选的实施方式,根据P1和P2确定第一CPU核的功耗,具体实现方式可以包括:
根据P1、P2和第一CPU核的动态参数,计算第一CPU核的动态功耗Pcore_dynamic,其中该第一CPU核的动态参数包括:第一CPU核的动态工作电压Vcore_dynamic、所述第一CPU核的动态工作频率ffreq_dynamic和所述第一CPU核的动态功耗因子Ceff_dynamic,具体可以参考参考公式3-5和图3中的文字描述。
根据第一CPU核的静态参数,计算第一CPU核的静态功耗Pcore_static,其中该第一CPU核的静态参数包括:第一CPU核的静态电压Vcore_static、第一CPU核的静态频率ffreq_static和所述第一CPU核的静态功耗因子Ceff_static,具体可以参考公式3-7和图3中的文字描述。
将第一CPU核的Pcore_dynamic和Pcore_static进行相加,将相加之和确定为第一CPU核的功耗Pcore
可以看出,本申请不仅能够获得单核CPU的各个功能模块的功耗,也能够获得单核CPU的动态功耗、静态功耗和总功耗。
S507、计算CPU中除第一CPU核之外的其他CPU核的功耗。
可选的,上述还包括:至少一个第二CPU核,第二CPU核是CPU的多个CPU核中不同于第一CPU核的任意一个,例如:当第一CPU核为图1中的CPU Core 0,则第二CPU核可以是CPUCore 1~CPU Core n中的任意一个。
作为一种可选的实施方式,计算CPU中的至少一个第二CPU核中每个第二CPU核的功耗,具体实现方式可以参考步骤S501至S506中所描述的计算第一CPU核的功耗的方法。
S507、根据第一CPU核的功耗和其他CPU核的功耗,计算CPU的总功耗Pcpu
作为一种可选的实施方式,计算CPU的总功耗Pcpu,具体实现方式可以包括:
将第一CPU核的功耗和其他CPU核的功耗进行累加,将累加之和确定为CPU的总功耗Pcpu
作为一种可选的实施方式,在计算CPU的总功耗Pcpu之和,该方法还包括:
计算至少一个第二CPU核中的每个第二CPU核的第一功能模块的功耗;
根据所述P1和所述至少一个第二CPU核中的每个第二CPU核的第一功能模块的功耗,计算CPU的所有所述第一功能模块的功耗P1_cpu
根据P1和至少一个第二CPU核中的每个第二CPU核的第二功能模块的功耗,计算CPU的所有所述第二功能模块的功耗P2_cpu
在图5描述的方法中,在获取上述各项功耗之后,还可以包括:
判断Pcpu是否低于预设的功耗阈值Pd;当Pcpu低于所述Pd时,从P1_cpu和P2_cpu中确定出最小的功耗值对应的功能模块,增加最小的功耗值对应功能模块中功耗占比高的业务在CPU上运行;当Pcpu不低于Pd时,从P1_cpu和P2_cpu中确定出比较大的功耗值对应的功能模块,减少在比较大的功耗值对应功能模块中功耗占比高的业务在CPU上运行。
其中,该预设的功耗阈值Pd可以根据TDP(Thermal Design Power,即热设计功耗)和阈值因子计算得出,TDP功耗是CPU达到最大工作负荷时释放出的热量,其单位为瓦(W),是反应CPU热量释放的指标;TDP功耗通常用作CPU冷却系统散热能力的技术指标。本申请能够对占用各个功能模块的功耗的比例不同的业务进行混合调度,以提高处理器的利用率。
举例来说:设定P1_cpu为CPU中执行所有功能模块的功耗PEXE-CPU,P2_cpu为CPU中所有存储功能的功耗PMEM-CPU;当Pcpu低于Pd时,说明CPU的功耗还有上升空间能够增加运行更多的业务,则需要判断增加哪一种业务的运行,可以通过判断PEXE-CPU是否超过PMEM-CPU,若PEXE-CPU超过PMEM-CPU,则说明存储功能模块消耗的功耗较小,增加存储功能模块中功耗占比高的业务在CPU上运行,否则,增加执行功能模块中功耗占比高的业务在CPU上运行。
再举例来说:设定P1_cpu为CPU中执行所有功能模块的功耗PEXE-CPU,P2_cpu为CPU中所有存储功能的功耗PMEM-CPU;当Pcpu不低于Pd时,说明CPU已经超负荷了需要减少CPU上的业务运行,则需要确定减少哪一类型的业务运行,可以通过判断PMEM-CPU是否超过PMEM-CPU,若PEXE-CPU超过PMEM-CPU,则说明执行功能模块消耗的功耗较大,减少执行功能模块中功耗占比高的业务在CPU上运行,否则,减少存储功能模块中功耗占比高的业务在CPU上运行。
在图5描述的方法中,在获取上述各项功耗之后,还可以包括:
判断所述Pcpu是否低于所述Pd;当Pcpu低于所述Pd时,判断CPU利用率是否低于CPU利用率阈值,若CPU利用率低于CPU利用率阈值,在预设的CPU工作电压和工作频率范围内,降低CPU工作电压和工作频率,若CPU利用率超过CPU利用率阈值,在预设的CPU工作电压和工作频率范围内,提高CPU工作电压和工作频率;当Pcpu不低于所述Pd时,在预设的CPU工作电压和工作频率范围内,减少一部分业务在CPU上的运行,或者降低CPU工作电压和工作频率。本申请能够根据不同应用、进程消耗的功耗,对处理器的电压和频率进行动态调整,从而在保证性能的前提下降低处理器的功耗。
需要说明的是,本申请还可以根据需求获取其他相关的功耗,并能够根据获取得到的CPU内部的细粒度功耗,对CPU、应用、进程等实时功耗信息进行监测,从而实现对处理器功耗的优化控制,提高处理器的利用率。
本发明实施例,在图5描述的方法中,能够通过根据目标对象配置性能事件配置表,确定出CPU中与目标对象相关的性能事件,并计算获得单个CPU核内部各个功能模块的功耗,单个CPU核的功耗,以及所有CPU的功耗,并能够根据需求,实时、准确地获取其他相关的细粒度功耗。可以看出,本申请能够实时获取处理器及处理器内部不同逻辑功能模块的功耗,以及其他细粒度的功耗,从而建立功耗、硬件与软件三者之间的相关性,实现对硬件、软件等细粒度的功耗监测、分析与控制。
请参阅图6,图6是本发明实施例提供的另一种基于处理器的功耗控制方法,该方法包括但不仅限于以下步骤:
S601、处理器接收目标对象的功耗获取请求。
可选的,上述步骤S601中功耗获取请求用于请求获得处理器中第一处理器核执行目标对象时任意一个或者多个逻辑功能单元的功耗。其中该逻辑功能单元具体所包括的内容可以参考图2中的描述。例如:处理器接收获取运行微信运行时,第一处理器核中取指及分支预测单元和译码单元的功耗获取请求。其中第一处理器核是多个CPU核中的任意一个,具体可以是图1中的CPU Core 0至CPU Core n中的任意一个。
可选的,上述步骤S601中目标对象的解释和定义与图5中步骤S501的文字描述相一致。
S602、处理器根据功耗获取请求,确定第一处理器核上与目标对象相关的N3个性能事件,其中N3为正整数。
作为一种可选的实施方式,图6所描述的方法在处理器根据所述功耗获取请求,确定第一处理器核上与目标对象相关的N3个性能事件之后,还包括:处理器将N3个性能事件存储在性能事件配置表中;处理器根据性能事件配置表,配置性能事件计数器;其中,该性能事件计数器用于对N3个性能事件中的每个性能事件在预设时间范围内发生的次数进行统计。其中相关名词的定义和解释可以参考图5中的文字描述。
S603、处理器监测第一处理器核上的N3个性能事件,获取N3个性能事件中每个性能事件在预设时间内发生的次数。
作为一种可选的实施方式,处理器监测第一处理器核上的所述N3个性能事件,获取N3个性能事件中每个性能事件在预设时间内发生的次数,包括:处理器通过PMU监测第一处理器核上的N3个性能事件,从性能事件计数器中,读取N3个性能事件中每个性能事件在预设时间内发生的次数。
S604、处理器获取N3个性能事件中每个性能事件的功耗因子。
作为一种可选的实施方式,处理器获取N3个性能事件中每个性能事件的功耗因子包括:处理器根据性能事件配置表,查找功耗因子参数表,其中功耗因子参数表用于处理器存储N3个性能事件的单位功耗因子;处理器从功耗因子参数表中,获取N3个性能事件中每个性能事件的单位功耗因子。
需要的说明的是,上述步骤S603和步骤S604没有固定的先后顺序,可以S603在前,也可以是S604在前,也可以是两个步骤同时进行的。
S605、处理器计算N3个性能事件中每个性能事件所消耗的能量,根据N3个性能事件中每个性能事件所消耗的能量,确定所需求的功耗。
作为一种可选的实施方式,上述处理器计算N3个性能事件中每个性能事件所消耗的能量,根据N3个性能事件中每个性能事件所消耗的能量,确定所需求的功耗,具体包括:处理器根据N3个性能事件中每个性能事件的功耗因子和在预设时间内发生的次数,计算每个性能事件的功耗因子和在预设时间内发生次数之积,计算N3个性能事件中每个性能事件所消耗的能量,根据N3个性能事件中每个性能事件所消耗的能量,即将N3个性能事件所消耗能量累加之和,将累加之和确定为所需求的功耗。
在图6所描述的方法中,当功耗获取需求用于获取处理器中多个处理器核或者所有处理器核执行目标对象时任意一个或者多个逻辑功能单元的功耗时,所述方法还可以根据功耗获取请求获取,通过步骤S601至S605中所描述的方法计算每个处理器核中目标逻辑单元的功耗,在获取得到每个处理器核中目标逻辑功能单元的功耗之后,根据每个处理器核的目标逻辑功能单元的功耗,计算所需求的功耗。
在图6所描述的方法中,处理器通过接收目标对象的功耗获取请求,该功耗获取请求用于请求获取第一处理器核执行目标对象时任意一个或者多个逻辑功能单元的功耗,然后处理器根据功耗获取请求确定第一处理器核上与目标对象相关的N3性能事件,然后监测第一处理器核上的N3个性能事件,获取N3个性能事件中每个性能事件的功耗因子和在预设时间内发生的次数,计算N3个性能事件中每个性能事件所消耗的能量,并根据N3个性能事件中每个性能事件所消耗的能量,确定所需求的功耗。可以看出,本发明实施例能够实现处理器根据用户需求获取处理器内部的任意一个或者多个逻辑功能单元的功耗,实现处理器内部的细粒度功耗的监测,进而便于对硬件、软件等进行细粒度的功耗分析与控制。
上述详细阐述了本发明实施例的方法,下面提供了本发明实施例的装置。
本发明实施例提供了一种基于处理器的功耗控制装置,上述基于处理器的功耗控制装置包括:存储单元和处理单元,上述存储单元用于存储一组程序代码,上述处理单元具体可为图7中监测单元701、计算单元702、读取单元703、获取单元704、接收单元705、性能事件配置单元706、计数器配置单元707中的任意一个或者多个。
请参见图7,图7是本发明实施例提供的一种基于处理器的功耗控制装置的示意图,该装置包括:
监测单元701,监测处理器上的第一处理器核上运行的N个性能事件,该N个性能事件包括在第一处理器核的第一功能模块上运行的N1个第一类性能事件,以及在第一处理器核的第二功能模块上运行的N2个第二类性能事件,其中N为大于1的正整数,N1和N2是正整数。
计算单元702,计算N1个第一类性能事件中每个第一类性能事件所消耗的能量,并根据所述N1个第一类性能事件所消耗的能量确定所述第一功能模块的功耗P1。
所述计算单元702,还用于计算N2个第二类性能事件中每个第二类性能事件所消耗的能量,并根据所述N2个第二类性能事件所消耗的能量确定所述第二功能模块的功耗P2。
所述计算单元702,还用于根据P1和P2确定所述第一处理器核的功耗。
可选的,上述装置中计算单元602具体用于计算所述N1个第一类性能事件中第i个第一类性能事件所消耗的能量,其中i为小于N1的正整数,可选的,该装置还包括:
读取单元703,用于为计算单元读取N1个第一类性能事件中第i个第一类性能事件在预设时间范围内发生的次数。
获取单元704,用于为计算单元获取第i个第一类性能事件的单位功耗因子,其中单位功耗因子,用于表示第i个第一类性能事件单次发生所消耗的能量。
可选的,上述装置中所述计算单元702具体用于:
根据第i个第一性能事件发生的次数和单位功耗因子,计算该第i个第一性能事件所消耗的能量。
可选的,上述装置中计算单元702具体用于:
根据P1、P2和第一CPU核的动态参数,计算第一CPU核的动态功耗Pcore_dynamic,其中该第一CPU核的动态参数包括:第一CPU核的动态工作电压Vcore_dynamic、第一CPU核的动态工作频率ffreq_dynamic和所述第一CPU核的动态功耗因子Ceff_dynamic
根据第一CPU核的静态参数,计算第一CPU核的静态功耗Pcore_static,其中第一CPU核的静态参数包括:第一CPU核的静态电压Vcore_static、第一CPU核的静态频率ffreq_static和第一CPU核的静态功耗因子。
根据第一CPU核的Pcore_dynamic和Pcore_static,计算第一CPU核的功耗Pcore
可选的,上述装置还包括:
接收单元705,用于接收目标对象的功耗获取请求;
性能事件配置单元706,用于根据目标对象,确定出与该目标对象相关的N个性能事件,并将该N个性能事件存储在图4中的性能事件配置表中,其中该N个性能事件包括:N1个第一类性能事件和N2个第二类性能事件。
计数器配置单元707,用于根据性能事件配置表,配置图4中的性能事件计数器。
其中,性能事件计数器用于对该N个性能事件中的每个性能事件在预设时间范围内发生的次数进行统计。
可选的,上述装置中读取单元703具体用于:在计数器配置单元之后,从性能事件计数器中,读取第i个第一类性能事件在预设时间范围内发生的次数。
可选的,上述装置中获取单元704具体用于:
在性能事件配置单元706之后,根据该性能事件配置表,查找功耗因子参数表,其中该功耗因子参数表用于CPU存储N个性能事件的单位功耗因子;从功耗因子参数表中,获取第i个第一类性能事件的单位功耗因子。
可选的,上述装置中第一功能模块和第二功能模块是处理器根据处理器微架构流水线的不同阶段,将多个逻辑功能单元划分为不同功能模块的。
可选的,上述装置中第一功能模块和第二功能模块为以下三种功能模块中的任意两种:前端功能模块、执行功能模块和存储功能模块;其中前端功能模块包括以下逻辑功能单元:指令缓存单元、分支预测单元、译码单元和其他前端操作单元;执行功能模块包括以下逻辑功能单元:算术逻辑单元;存储功能模块包括以下逻辑功能单元:各级数据缓存单元。
需要说明的是,各个单元的实现还可以对应参照图5所示的方法实施例的相应描述。
本发明实施例提供了另一种基于处理器的功耗控制装置,上述基于处理器的功耗控制装置包括:存储单元和处理单元,上述存储单元用于存储一组程序代码,上述处理单元具体可为图8中接收单元801、性能事件配置单元802、监测单元803、获取单元804、计算单元805、计数器配置单元806、判断单元807和控制单元808中的任意一个或者多个。请参见图8,图8是本发明实施例提供的一种基于处理器的功耗控制装置的示意图,该装置包括:
接收单元801,用于接收目标对象的功耗获取请求。
性能事件配置单元802,用于根据所述功耗获取请求,确定出所述第一处理器核上与所述目标对象相关的N个性能事件,并将所述N个性能事件存储在性能事件配置表中,其中所述N个性能事件包括:所述N1个第一类性能事件和所述N2个第二类性能事件,N为大于1的整数,N1和N2为正整数。
监测单元803,用于监测第一处理器核上运行的N1个第一类性能事件,获取所述N1个第一类性能事件中每个性能事件在预设时间内发生的次数,其中N1为正整数。
获取单元804,用于获取所述N1个第一类性能事件中每个性能事件的功耗因子。
计算单元805,用于根据所述N1个第一类性能事件中每个性能事件在预设时间内发生的次数和功耗因子,计算N1个第一类性能事件中每个第一类性能事件所消耗的能量,并根据所述N1个第一类性能事件所消耗的能量确定所述第一处理器核的第一功能模块的功耗P1。
可选的,上述装置还包括:
计数器配置单元806,用于根据上述性能事件配置单元804中性能事件配置表,配置性能事件计数器,其中,该性能事件计数器用于对N个性能事件中的每个性能事件在预设时间范围内发生的次数进行统计。
可选的,上述装置中获取单元804具体用于:从所述功耗因子参数表中获取N1个第一类性能事件中每个性能事件的功耗因子。
可选的,上述装置中监测单元803具体用于:通过性能事件监测单元监测第一处理器核上运行的N1个第一类性能事件,从性能计数器中获取N1个第一类性能事件中每个性能事件在预设时间内发生的次数。
可选的,上述第一处理器核还包括:第二功能模块,上述装置还包括:
所述监测单元803,还用于监测第一处理器核上N2个第二类性能事件,获取N2个第二类性能事件中每个性能事件在预设时间内发生的次数,其中N2是正整数。
所述获取单元804,还用于获取N2个第二类性能事件中每个性能事件的功耗因子。
所述计算单元805,还用于根据N2个第二类性能事件中每个性能事件在预设时间内发生的次数和功耗因子,计算N2个第二类性能事件中每个第二类性能事件所消耗的能量,并根据N2个第二类性能事件所消耗的能量确定第一处理器核上第二功能模块的功耗P2。
所述计算单元805,还用于根据P1和P2,计算第一处理器核的功耗Pcore
可选的,上述装置中所述计算单元803具体用于:根据P1、P2和第一处理器核的动态参数,计算第一处理器核的动态功耗Pcore_dynamic,其中第一处理器核的动态参数包括:第一处理器核的动态工作电压Vcore_dynamic、第一处理器核的动态工作频率ffreq_dynamic和第一处理器核的动态功耗因子Ceff_dynamic;根据第一处理器核的静态参数,计算第一处理器核的静态功耗Pcore_static,其中第一处理器核的静态参数包括:第一处理器核的静态电压Vcore_static、第一处理器核的静态频率ffreq_static和第一处理器核的静态功耗因子;根据第一处理器核的Pcore_dynamic和Pcore_static,计算第一处理器核的功耗Pcore
可选的,上述处理器还包括:除第一处理器核之外的至少一个第二处理器核,上述装置还包括:
所述计算单元805,还用于计算至少一个第二处理器核中每一个处理器核的第一功能模块的功耗;计算至少一个第二处理器核中每一个处理器核的第二功能模块的功耗。
所述计算单元805,还用于计算至少一个第二处理器核中每一个处理器核的功耗。
所述计算单元805,还用于根据P1和至少一个第二处理器核中每一个处理器核的第一功能模块的功耗,计算所有处理器核的第一功能模块的功耗P1_cpu;根据P2和至少一个第二处理器核中每一个处理器核的第一功能模块的功耗,计算所有处理器核的第一功能模块的功耗P2_cpu;根据Pcore和至少一个第二处理器核中每一个处理器核的功耗,计算处理器的总功耗Pcpu
可选的,上述第一功能模块和第二功能模块是处理器根据处理器微架构流水线的不同阶段,将多个逻辑功能单元划分为不同功能模块的。
可选的,上述装置还包括:
判断单元807,用于判断Pcpu是否低于预设的功耗阈值Pd
控制单元808,用于当Pcpu低于Pd时,从P1_cpu和P2_cpu中确定出比较小的功耗值对应的功能模块,增加最小的功耗值对应功能模块中功耗占比高的业务在CPU上运行;或者,当Pcpu不低于Pd时,从P1_cpu和P2_cpu中确定出比较大的功耗值对应的功能模块,减少在比较大的功耗值对应功能模块中功耗占比高的业务在CPU上运行。
可选的,上述装置还包括:
所述控制单元807,还用于当Pcpu低于Pd时,触发判断单元判断CPU利用率是否低于CPU利用率阈值,若CPU利用率低于CPU利用率阈值,在预设的CPU工作电压和工作频率范围内,降低CPU工作电压和工作频率,若CPU利用率超过CPU利用率阈值,在预设的CPU工作电压和工作频率范围内,提高CPU工作电压和工作频率。
所述控制单元807,还用于当Pcpu不低于Pd时,在预设的CPU工作电压和工作频率范围内,减少一部分业务在CPU上的运行,或者降低CPU工作电压和工作频率。
需要说明的是,各个单元的实现还可以对应参照图5所示的方法实施例的相应描述。
本发明实施例提供了另一种基于处理器的功耗控制装置,上述基于处理器的功耗控制装置包括:存储单元和处理单元,上述存储单元用于存储一组程序代码,上述处理单元具体可为图9中接收单元901、性能事件配置单元902、监测单元903、获取单元904、计算单元905、计数器配置单元906的任意一个或者多个。
请参见图9,图9是本发明实施例提供的又一种基于处理器的功耗控制装置的示意图,该装置包括:
接收单元901,用于接收目标对象的功耗获取请求,该功耗获取请求用于请求获得处理器中第一处理器核执行目标对象时任意一个或者多个逻辑功能单元的功耗。
性能事件配置单元902,根据功耗获取请求,确定第一处理器核上与目标对象相关的N3个性能事件,其中N3为正整数。
监测单元903,用于监测第一处理器核上的所述N3个性能事件,获取N3个性能事件中每个性能事件在预设时间内发生的次数。
获取单元904,用于获取N3个性能事件中每个性能事件的功耗因子。
计算单元905,用于根据N3个性能事件中每个性能事件的功耗因子和在预设时间内发生的次数,计算N3个性能事件中每个性能事件所消耗的能量,根据N3个性能事件中每个性能事件所消耗的能量,确定所需求的功耗。
可选的,上述装置还包括:
上述性能事件配置单元902,还用于将N3个性能事件存储在性能事件配置表中。
计数器配置单元906,还用于根据上述性能事件配置单元902中性能事件配置表,配置性能事件计数器。其中,上述性能事件计数器用于对N3个性能事件中的每个性能事件在预设时间范围内发生的次数进行统计。
可选的,上述装置中获取单元904具体用于:
根据性能事件配置表,查找功耗因子参数表,其中功耗因子参数表用于处理器存储N3个性能事件的单位功耗因子;从功耗因子参数表中,获取N3个性能事件中每个性能事件的单位功耗因子。
可选的,上述装置中监测单元903具体用于:
监测第一处理器核上的N3个性能事件,从性能事件计数器中,读取N3个性能事件中每个性能事件在预设时间内发生的次数。
需要说明的是,各个单元的实现还可以对应参照图6所示的方法实施例的相应描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。

Claims (34)

1.一种基于处理器的功耗控制方法,其特征在于,包括:
处理器监测第一处理器核上运行的N个性能事件,所述N个性能事件包括在所述第一处理器核的第一功能模块上运行的N1个第一类性能事件,以及在所述第一处理器核的第二功能模块上运行的N2个第二类性能事件,其中N为大于1的正整数,N1和N2是正整数;
所述处理器计算所述N1个第一类性能事件中每个第一类性能事件所消耗的能量,并根据所述N1个第一类性能事件所消耗的能量确定所述第一功能模块的功耗P1;
所述处理器计算所述N2个第二类性能事件中每个第二类性能事件所消耗的能量,并根据所述N2个第二类性能事件所消耗的能量确定所述第二功能模块的功耗P2;
所述处理器根据所述P1和所述P2确定所述第一处理器核的功耗。
2.根据权利要求1所述的方法,其特征在于,所述处理器计算所述N1个第一类性能事件中每个第一类性能事件所消耗的能量中,所述方法在计算第i个第一类性能事件所消耗的能量之前,包括;
所述处理器读取所述第i个第一类性能事件在预设时间范围内发生的次数;
所述处理器获取所述第i个第一类性能事件的单位功耗因子,其中所述单位功耗因子用于表示第i个第一类性能事件单次发生所消耗的能量,i为小于N1的正整数。
3.根据权利要求1或2所述的方法,其特征在于,所述处理器计算所述N1个第一类性能事件中每个第一类性能事件所消耗的能量中,计算第i个第一类性能事件所消耗的能量包括:
所述处理器根据所述第i个第一类性能事件单位功耗因子和在预设时间发生的次数和,计算所述第i个第一类性能事件所消耗的能量,其中i为小于N1的正整数。
4.根据权利要求1所述的方法,其特征在于,所述处理器根据所述P1和所述P2确定所述第一处理器核的功耗包括:
所述处理器根据所述P1、所述P2和所述第一处理器核的动态参数,计算所述第一处理器核的动态功耗Pcore_dynamic,其中所述第一处理器核的动态参数包括:第一处理器核的动态工作电压Vcore_dynamic、所述第一处理器核的动态工作频率ffreq_dynamic和所述第一处理器核的动态功耗因子Ceff_dynamic
所述处理器根据所述第一处理器核的静态参数,计算所述第一处理器核的静态功耗Pcore_static,其中所述第一处理器核的静态参数包括:所述第一处理器核的静态电压Vcore_static、所述第一处理器核的静态频率ffreq_static和所述第一处理器核的静态功耗因子;
所述处理器根据所述第一处理器核的Pcore_dynamic和Pcore_static,计算所述第一处理器核的功耗Pcore
5.根据权利要求1所述的方法,其特征在于,所述方法在所述处理器监测第一处理器核上运行的性能事件之前,还包括:
所述处理器接收目标对象的功耗获取请求;
所述处理器根据所述功耗获取请求,确定出与所述目标对象相关的N个性能事件,并将所述N个性能事件存储在性能事件配置表中,其中所述N个性能事件包括:所述N1个第一类性能事件和所述N2个第二类性能事件;
所述处理器根据所述性能事件配置表,配置性能事件计数器;
其中,所述性能事件计数器用于对所述N个性能事件中的每个性能事件在预设时间范围内发生的次数进行统计。
6.根据权利要求3或5所述的方法,其特征在于,所述处理器读取所述第i个第一类性能事件在预设时间范围内发生的次数,包括:
所述处理器从所述性能事件计数器中,读取所述第i个第一类性能事件在预设时间范围内发生的次数。
7.根据权利要求3或5所述的方法,其特征在于,所述处理器获取所述第i个第一类性能事件的单位功耗因子,包括:
所述处理器根据所述性能事件配置表,查找功耗因子参数表,其中所述功耗因子参数表用于处理器存储所述N个性能事件的单位功耗因子;
所述处理器从功耗因子参数表中,获取所述第i个第一类性能事件的单位功耗因子。
8.根据权利要求1-7任意一项所述的方法,其特征在于,所述第一功能模块和所述第二功能模块是所述处理器根据处理器微架构流水线的不同阶段,将多个逻辑功能单元划分为不同功能模块的。
9.根据权利要求8所述的方法,其特征在于,所述第一功能模块和所述第二功能模块为以下三种功能模块中的任意两种:前端功能模块、执行功能模块和存储功能模块;
其中所述前端功能模块包括以下逻辑功能单元:指令缓存单元、分支预测单元、译码单元和其他前端操作单元;
所述执行功能模块包括以下逻辑功能单元:算术逻辑单元;
所述存储功能模块包括以下逻辑功能单元:各级数据缓存单元。
10.一种基于处理器的功耗控制装置,其特征在于,包括:存储单元和处理单元,所述存储单元用于存储一组程序代码,所述处理单元用于调用所述存储单元中所述程序代码执行如权利要求1-9任一项所述的方法。
11.一种基于处理器的功耗控制方法,其特征在于,所述处理器包括多个处理器核,所述处理器核包括至少一个功能模块,所述处理器核执行目标对象时每调用一个功能模块则对应产生一类性能事件,所述方法包括:
所述处理器接收目标对象的功耗获取请求,并根据所述功耗获取请求确定出与所述目标对象相关的N个性能事件,其中所述N个性能事件包括:N1个第一类性能事件和N2个第二类性能事件,N为大于1的整数,N1和N2为正整数;
所述处理器监测第一处理器核上运行的N1个第一类性能事件,获取所述N1个第一类性能事件中每个性能事件在预设时间内发生的次数;
所述处理器获取所述N1个第一类性能事件中每个性能事件的功耗因子;
所述处理器根据所述N1个第一类性能事件中每个性能事件在预设时间内发生的次数和功耗因子,计算N1个第一类性能事件中每个第一类性能事件所消耗的能量,并根据所述N1个第一类性能事件所消耗的能量确定所述第一处理器核的第一功能模块的功耗P1。
12.根据权利要求11所述的方法,其特征在于,所述方法在监测第一处理器核上运行的N1个第一类性能事件之前,还包括:
所述处理器将所述N个性能事件存储在性能事件配置表中;
所述处理器根据所述性能事件配置表,配置性能事件计数器;
其中,所述性能事件计数器用于对所述N个性能事件中的每个性能事件在预设时间范围内发生的次数进行统计。
13.根据权利要求11或12所述的方法,其特征在于,所述处理器获取所述N1个第一类性能事件中每个性能事件的功耗因子具体包括:
所述处理器从所述功耗因子参数表中获取所述N1个第一类性能事件中每个性能事件的功耗因子。
14.根据权利要求11或12所述的方法,其特征在于,所述处理器包括:性能事件监测单元,所述处理器监测第一处理器核上运行的N1个第一类性能事件,获取所述N1个第一类性能事件中每个性能事件在预设时间内发生的次数具体包括:
所述处理器通过性能事件监测单元监测第一处理器核上运行的N1个第一类性能事件,从所述性能计数器中获取所述N1个第一类性能事件中每个性能事件在预设时间内发生的次数。
15.根据权利要求11所述的方法,其特征在于,所述第一处理器核还包括:第二功能模块,所述方法包括:
所述处理器监测第一处理器核上N2个第二类性能事件,获取所述N2个第二类性能事件中每个性能事件在预设时间内发生的次数;
所述处理器获取所述N2个第二类性能事件中每个性能事件的功耗因子;
所述处理器根据所述N2个第二类性能事件中每个性能事件在预设时间内发生的次数和功耗因子,计算N2个第二类性能事件中每个第二类性能事件所消耗的能量,并根据所述N2个第二类性能事件所消耗的能量确定所述第一处理器核上所述第二功能模块的功耗P2;
所述处理器根据所述P1和所述P2,计算所述第一处理器核的功耗Pcore
16.根据权利要求15所述的方法,其特征在于,所述处理器根据所述P1和所述P2,计算所述第一处理器核的功耗Pcore具体包括:
所述处理器根据所述P1、所述P2和所述第一处理器核的动态参数,计算所述第一处理器核的动态功耗Pcore_dynamic,其中所述第一处理器核的动态参数包括:所述第一处理器核的动态工作电压Vcore_dynamic、所述第一处理器核的动态工作频率ffreq_dynamic和所述第一处理器核的动态功耗因子Ceff_dynamic
所述处理器根据所述第一处理器核的静态参数,计算所述第一处理器核的静态功耗Pcore_static,其中所述第一处理器核的静态参数包括:所述第一处理器核的静态电压Vcore_static、所述第一处理器核的静态频率ffreq_static和所述第一处理器核的静态功耗因子;
所述处理器根据所述第一处理器核的Pcore_dynamic和Pcore_static,计算所述第一处理器核的功耗Pcore
17.根据权利要求11-16任一项所述的方法,其特征在于,所述处理器包括:除所述第一处理器核之外的至少一个第二处理器核,所述方法还包括:
所述处理器计算所述至少一个第二处理器核中每一个处理器核的所述第一功能模块的功耗;
所述处理器计算所述至少一个第二处理器核中每一个处理器核的所述第二功能模块的功耗;
所述处理器计算所述至少一个第二处理器核中每一个处理器核的功耗;
所述处理器根据所述P1和所述所述至少一个第二处理器核中每一个处理器核的所述第一功能模块的功耗,计算所有处理器核的第一功能模块的功耗P1_cpu
所述处理器根据所述P2和所述所述至少一个第二处理器核中每一个处理器核的所述第一功能模块的功耗,计算所有处理器核的第一功能模块的功耗P2_cpu
所述处理器根据所述Pcore和所述至少一个第二处理器核中每一个处理器核的功耗,计算所述处理器的总功耗Pcpu
18.根据权利要求11-17任一项所述的方法,其特征在于,所述第一功能模块和所述第二功能模块是所述理器根据处理器微架构流水线的不同阶段,将多个逻辑功能单元划分为不同功能模块的。
19.根据权利要求18所述的方法,其特征在于,所述第一功能模块和所述第二功能模块为以下三种功能模块中的任意两种:前端功能模块、执行功能模块和存储功能模块;
其中所述前端功能模块包括以下逻辑功能单元:指令缓存单元、分支预测单元、译码单元和其他前端操作单元;
所述执行功能模块包括以下逻辑功能单元:算术逻辑单元;
所述存储功能模块包括以下逻辑功能单元:各级数据缓存单元。
20.根据权利要求17所述的方法,其特征在于,还包括:
所述处理器判断所述Pcpu是否低于预设的功耗阈值Pd
当所述Pcpu低于所述Pd时,所述处理器从所述P1_cpu和所述P2_cpu中确定出最小的功耗值对应的功能模块,增加所述比较小的功耗值对应功能模块中功耗占比高的业务在处理器上运行;
当所述Pcpu不低于所述Pd时,所述处理器从所述P1_cpu和所述P2_cpu中确定出最大的功耗值对应的功能模块,减少在所述比较大的功耗值对应功能模块中功耗占比高的业务在处理器上运行。
21.根据权利要求17所述的方法,其特征在于,还包括:
所述处理器判断所述Pcpu是否低于所述Pd
当所述Pcpu低于所述Pd时,所述处理器判断处理器利用率是否低于处理器利用率阈值,若所述处理器利用率低于处理器利用率阈值,在预设的处理器工作电压和工作频率范围内,降低处理器工作电压和工作频率,若所述处理器利用率超过处理器利用率阈值,在预设的处理器工作电压和工作频率范围内,提高处理器工作电压和工作频率;
当所述Pcpu不低于所述Pd时,在预设的处理器工作电压和工作频率范围内,处理器减少业务在处理器上的运行,或者降低所述处理器工作电压和工作频率。
22.一种基于处理器的功耗控制装置,其特征在于,包括:存储单元和处理单元,所述存储单元用于存储一组程序代码,所述处理单元用于调用所述存储单元中所述程序代码执行如权利要求11-21任一项所述的方法。
23.一种基于处理器的功耗控制方法,其特征在于,包括:
所述处理器接收目标对象的功耗获取请求,所述功耗获取请求用于请求获得所述处理器中第一处理器核执行目标对象时任意一个或者多个逻辑功能单元的功耗;
所述处理器根据所述功耗获取请求,确定第一处理器核上与所述目标对象相关的N3个性能事件,其中N3为正整数;
所述处理器监测第一处理器核上的所述N3个性能事件,获取所述N3个性能事件中每个性能事件在预设时间内发生的次数;
所述处理器获取所述N3个性能事件中每个性能事件的功耗因子;
所述处理器根据所述N3个性能事件中每个性能事件的功耗因子和在预设时间内发生的次数,计算所述N3个性能事件中每个性能事件所消耗的能量,根据所述N3个性能事件中每个性能事件所消耗的能量,确定所需求的功耗。
24.根据权利要求23所述的方法,其特征在于,所述方法在所述处理器根据所述功耗获取请求,确定第一处理器核上与所述目标对象相关的N3个性能事件之后,还包括:
所述处理器将所述N3个性能事件存储在性能事件配置表中;
所述处理器根据所述性能事件配置表,配置性能事件计数器;
其中,所述性能事件计数器用于对所述N3个性能事件中的每个性能事件在预设时间范围内发生的次数进行统计。
25.根据权利要求23或24所述的方法,其特征在于,所述处理器获取所述N3个性能事件中每个性能事件的功耗因子包括:
所述处理器根据所述性能事件配置表,查找功耗因子参数表,其中所述功耗因子参数表用于处理器存储所述N3个性能事件的单位功耗因子;
所述处理器从功耗因子参数表中,获取所述N3个性能事件中每个性能事件的单位功耗因子。
26.根据权利要求23或24所述的方法,其特征在于,所述处理器监测第一处理器核上的所述N3个性能事件,获取所述N3个性能事件中每个性能事件在预设时间内发生的次数,包括:
所述处理器监测第一处理器核上的所述N3个性能事件,从所述性能事件计数器中,读取所述N3个性能事件中每个性能事件在预设时间内发生的次数。
27.一种基于处理器的功耗控制装置,其特征在于,包括:存储单元和处理单元,所述存储单元用于存储一组程序代码,所述处理单元用于调用所述存储单元中所述程序代码执行如权利要求23-26任一项所述的方法。
28.一种处理器,其特征在于,包括至少一个处理器核、存储器和运算器;
所述处理器核包括至少一个功能模块和性能事件监测单元,所述处理器核执行目标对象时每调用一个功能模块则对应产生一类性能事件;
所述存储器,用于存储所述性能事件配置表和功耗因子参数表,其中所述性能事件配置表用于记录所述处理器产生的至少一类性能事件,所述功耗因子参数表用于存储所述至少一类性能事件中每个性能事件的功耗因子;
所述性能事件监测单元,用于监测所述性能事件配置表中记录的至少一类性能事件;
所述运算器,用于计算任意一类或者多类性能事件中每个性能事件所消耗的能量,并根据任意一类或者多类性能事件所消耗的能量,计算任意一个或者多个功能模块的功耗。
29.根据权利要求28所述的处理器,其特征在于,还包括:
所述处理器核,还用于接收目标对象的功耗获取请求,并根据所述功耗获取请求确定出与所述目标对象对应的至少一类性能事件,并将所述至少一类性能事件存储在所述配置性能事件配置表中。
30.根据权利要求28所述的处理器,其特征在于,所述处理器核,还用于根据处理器微架构流水线的不同阶段,将所述处理器的多个逻辑功能单元划分为多个功能模块;
所述多个功能模块包括:前端功能模块、执行功能模块和存储功能模块;
所述前端功能模块包括以下逻辑功能单元:指令缓存单元、分支预测单元、译码单元和其他前端操作单元;
所述执行功能模块包括以下逻辑功能单元:算术逻辑单元;
所述存储功能模块包括以下逻辑功能单元:各级数据缓存单元。
31.根据权利要求28所述的处理器,其特征在于,所述处理器核执行目标对象时每调用一个功能模块则对应产生一类性能事件具体包括:
所述处理器核执行所述目标对象时调用所述前端功能模块则对应产生前端性能事件;
所述处理器核执行所述目标对象时调用所述执行功能模块则对应产生执行性能事件;
所述处理器核执行所述目标对象时存储所述前端功能模块则对应产生存储性能事件。
32.根据权利要求28或31所述的处理器,其特征在于,所述运算器具体用于:
根据所述前端性能事件中每个性能事件在预设时间内发生的次数和功耗因子,计算所述目标对象的所述前端功耗;或者
根据所述执行性能事件中每个性能事件在预设时间内发生的次数和功耗因子,计算所述目标对象的执行功耗;或者
根据所述存储性能事件中每个性能事件在预设时间内发生的次数和功耗因子,计算所述目标对象的存储功耗。
33.根据权利要求32所述的处理器,其特征在于,所述运算器还具体用于:
根据所述处理器核的所述前端功耗、所述执行功耗和所述存储功耗,计算所述处理器核的功耗。
34.一种处理器,其特征在于,包括处理器核、存储器和运算器;
所述处理器核包括至少一个逻辑功能单元和性能事件监测单元;
所述处理器核,用于接收目标对象的功耗获取需求,并根据所述功耗获取需求确定出处理器核上与所述目标对象对应的至少一个性能事件,并将所述至少一个性能事件存储在性能事件配置表中,所述功耗获取需求用于请求获得所述处理器中处理器核执行目标对象时任意一个或者多个逻辑功能单元的功耗;
所述性能事件监测单元,用于监测所述性能事件配置表中记录的至少一个性能事件中每个性能事件;
所述存储器,用于存储所述性能事件配置表和功耗因子参数表,所述功耗因子参数表用于存储所述至少一个性能事件的功耗因子;
所述运算器,用于根据所述性能事件监测单元监测到的所述至少一个性能事件中每个性能事件在预设时间内发生的次数,以及从所述功耗因子表中获取到所述至少一个性能事件中每个性能事件的功耗因子,计算所述至少任意一个或者多个逻辑单元的所消耗的能量,并根据所述任意一个或者多个逻辑单元所消耗的能量确定所述任意一个或者多个逻辑功能单元的功耗。
CN201710194178.8A 2017-03-28 2017-03-28 一种基于处理器的功耗控制方法及装置 Active CN108664367B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710194178.8A CN108664367B (zh) 2017-03-28 2017-03-28 一种基于处理器的功耗控制方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710194178.8A CN108664367B (zh) 2017-03-28 2017-03-28 一种基于处理器的功耗控制方法及装置

Publications (2)

Publication Number Publication Date
CN108664367A true CN108664367A (zh) 2018-10-16
CN108664367B CN108664367B (zh) 2022-05-10

Family

ID=63785866

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710194178.8A Active CN108664367B (zh) 2017-03-28 2017-03-28 一种基于处理器的功耗控制方法及装置

Country Status (1)

Country Link
CN (1) CN108664367B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109739335A (zh) * 2018-12-21 2019-05-10 重庆汇锋金鸿科技有限公司 一种基于拟态计算的微处理器及数据处理方法
CN110245061A (zh) * 2019-04-30 2019-09-17 上海兆芯集成电路有限公司 计算装置、其功耗预测方法及计算机可读存储介质
WO2022052626A1 (zh) * 2020-09-11 2022-03-17 华为技术有限公司 功耗管理的方法和相关设备
CN116502596A (zh) * 2023-06-28 2023-07-28 杭州行芯科技有限公司 芯片功耗评估方法、功耗模型的生成方法和计算机设备
CN117093065A (zh) * 2023-08-15 2023-11-21 上海合芯数字科技有限公司 多核处理器的功率调控方法、装置、计算机设备及介质
WO2024113784A1 (zh) * 2022-11-30 2024-06-06 华为技术有限公司 功耗估算方法和处理器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103415824A (zh) * 2012-08-30 2013-11-27 华为终端有限公司 一种控制中央处理器的方法和装置
CN103455132A (zh) * 2013-08-20 2013-12-18 西安电子科技大学 基于硬件性能计数器的嵌入式系统功耗估算方法
CN103838539A (zh) * 2012-11-23 2014-06-04 三星电子株式会社 性能测量单元、包括该单元的处理器核心和处理剖析方法
CN106126384A (zh) * 2016-06-12 2016-11-16 华为技术有限公司 一种采集性能监视单元pmu事件的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103415824A (zh) * 2012-08-30 2013-11-27 华为终端有限公司 一种控制中央处理器的方法和装置
CN103838539A (zh) * 2012-11-23 2014-06-04 三星电子株式会社 性能测量单元、包括该单元的处理器核心和处理剖析方法
CN103455132A (zh) * 2013-08-20 2013-12-18 西安电子科技大学 基于硬件性能计数器的嵌入式系统功耗估算方法
CN106126384A (zh) * 2016-06-12 2016-11-16 华为技术有限公司 一种采集性能监视单元pmu事件的方法及装置
WO2017215557A1 (zh) * 2016-06-12 2017-12-21 华为技术有限公司 一种采集性能监视单元pmu事件的方法及装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109739335A (zh) * 2018-12-21 2019-05-10 重庆汇锋金鸿科技有限公司 一种基于拟态计算的微处理器及数据处理方法
CN110245061A (zh) * 2019-04-30 2019-09-17 上海兆芯集成电路有限公司 计算装置、其功耗预测方法及计算机可读存储介质
CN110245061B (zh) * 2019-04-30 2023-05-26 上海兆芯集成电路有限公司 计算装置、其功耗预测方法及计算机可读存储介质
WO2022052626A1 (zh) * 2020-09-11 2022-03-17 华为技术有限公司 功耗管理的方法和相关设备
WO2024113784A1 (zh) * 2022-11-30 2024-06-06 华为技术有限公司 功耗估算方法和处理器
CN116502596A (zh) * 2023-06-28 2023-07-28 杭州行芯科技有限公司 芯片功耗评估方法、功耗模型的生成方法和计算机设备
CN116502596B (zh) * 2023-06-28 2023-10-31 杭州行芯科技有限公司 芯片功耗评估方法、功耗模型的生成方法和计算机设备
CN117093065A (zh) * 2023-08-15 2023-11-21 上海合芯数字科技有限公司 多核处理器的功率调控方法、装置、计算机设备及介质

Also Published As

Publication number Publication date
CN108664367B (zh) 2022-05-10

Similar Documents

Publication Publication Date Title
CN108664367A (zh) 一种基于处理器的功耗控制方法及装置
Möbius et al. Power consumption estimation models for processors, virtual machines, and servers
US20230251702A1 (en) Optimizing power usage by factoring processor architectural events to pmu
US10713043B2 (en) Opcode counting for performance measurement
US8214663B2 (en) Using power proxies combined with on-chip actuators to meet a defined power target
US8788855B2 (en) Cluster computational capacity level switching based on demand prediction and stability constraint and power consumption management
Wu et al. PACMan: prefetch-aware cache management for high performance caching
US8635483B2 (en) Dynamically tune power proxy architectures
CN107209548A (zh) 在多核处理器中执行功率管理
US9304886B2 (en) Associating energy consumption with a virtual machine
US9032375B2 (en) Performance bottleneck identification tool
CN107209545A (zh) 在多核处理器中执行功率管理
US8650413B2 (en) On-chip power proxy based architecture
US20090007108A1 (en) Arrangements for hardware and software resource monitoring
US20080168445A1 (en) Measuring processor use in a hardware multithreading processor environment
CN104106053A (zh) 使用功率的动态cpu gpu 负载平衡
US20100268975A1 (en) On-Chip Power Proxy Based Architecture
CN104169832A (zh) 提供处理器的能源高效的超频操作
Dietrich et al. Lightweight graphics instrumentation for game state-specific power management in Android
Zhu et al. Kelp: Qos for accelerated machine learning systems
CN116501505B (zh) 负载任务的数据流生成方法、装置、设备及介质
US11442491B2 (en) Dynamic power monitor monitoring power basted on clock cycle, processor, and system on chip
Blume et al. Hybrid functional-and instruction-level power modeling for embedded and heterogeneous processor architectures
Inam et al. Bandwidth measurement using performance counters for predictable multicore software
Alsop et al. Optimizing GPU cache policies for MI workloads

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant