一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

CPU功耗管理方法、计算机装置及计算机可读存储介质与流程

2022-02-22 18:55:55 来源:中国专利 TAG:

cpu功耗管理方法、计算机装置及计算机可读存储介质
技术领域
1.本发明涉及电子设备的电源管理的技术领域,具体地,是一种cpu功耗管理方法以及实现这种方法的计算机装置、计算机可读存储介质。


背景技术:

2.智能手机、平板电脑、机顶盒、行车记录仪等电子设备是常见的电子设备。随着电子设备的功能越来越多,电子设备需要设置的功能模块也越来越多,例如设置多核的cpu外,往往还设置图像处理器gpu等,还要设置ddr存储器等模块。由于电子设备需要实现的功能较多,各个模块用电量越来越多,导致电子设备的续航能力受到很大的影响,为此,人们考虑对各个用电模块进行功耗管理来降低电子设备的能耗,延长电子设备的续航能力。
3.通常,集成电路功耗主要由动态功耗和静态功耗组成,其中动态功耗主要由电路中逻辑门翻转过程产生,通常和电路的工作频率成正比,而静态功耗主要由静态漏电产生,通常和电压及温度相关。在linux操作系统领域,一般使用以下两种技术对cpu的功耗进行管理:cpu中断唤醒(cpuidle)技术和cpu开关核唤醒(cpuhotplug)技术。
4.cpu中断唤醒技术是在微观领域进行功耗处理,主要是让cpu在空闲时刻通过关断其时钟和/或电源来控制cpu的动态功耗,例如,当cpu在某个微观时间片处于空闲的状态,即“无事可做”时,操作系统将cpu置为某种低功耗状态以降低cpu的动态功耗和静态功耗。当中断来临时,cpu可以被快速唤醒并重新开始执行任务。从用户态应用程序宏观角度来看,cpu是一直处于运行状态的。
5.cpu开关核唤醒技术着眼于宏观领域的功耗处理,通过对cpu负载的测量来决定当前时刻处于工作状态的cpu核的数量,该技术将不需要工作的cpu直接关掉其时钟和供电,以此控制cpu的动态功耗和静态功耗。具体的,该技术用户态应用程序提供了一种开关cpu的选项,如果当前运行场景下cpu的运算能力需求不高时,用户态应用程序可以选择关闭部分cpu核以降低cpu功耗,包括动态功耗和静态功耗。当操作系统的运算能力需求较高时,用户态应用程序可以重新打开被关闭的cpu核来提升操作系统的性能。
6.然而,这两种技术在现实过程中是相互独立、互不兼容,导致电子设备的cpu功耗处理方案成本较高,响应电子设备的运行速度,兼容性差。


技术实现要素:

7.本发明的第一目的是提供一种能够实现cpu中断唤醒技术与cpu开关核唤醒技术在底层设置统一的cpu功耗管理方法。
8.本发明的第二目的是提供一种实现上述cpu功耗管理方法的计算机装置。
9.本发明的第三目的是提供一种实现上述cpu功耗管理方法的计算机可读存储介质。
10.为实现本发明的第一目的,本发明提供的cpu功耗管理方法包括设置cpu核在开关核唤醒模式下的多个工作状态:工作状态包括上电状态、预掉电状态、核掉电状态以及集群
掉电状态;在开关核唤醒模式下:目标cpu核接收到用户态应用程序发送的关闭指令后,目标cpu核设置预掉电标记,并进入预掉电状态,并在关闭本地中断唤醒源后,目标cpu核进入核掉电状态;在目标cpu核所在的cpu核集群中,所有cpu核均进入核掉电状态后,该集群的所有cpu核均进入集群掉电状态;在目标cpu核所在的cpu核集群任一cpu核接收到用户态应用程序发送的开核指令时,该集群的所有cpu核均从集群掉电状态退出至核掉电状态;如所接收到用户态应用程序发送的开核指令针对于目标cpu核,或者出现新发生的针对于目标cpu核的开核指令,目标cpu核从核掉电状态退出至上电状态。
11.由上述方案可见,cpu开关核唤醒模式下,cpu的多个工作状态与cpu中断唤醒模式下的多个工作状态相同,因此可以通过控制cpu在多个状态之间的转换实现cpu开关核唤醒模式来实现cpu中断唤醒模式与cpu开关核唤醒模式的底层统一,从而降低电子设备的低功耗解决方案的实现成本,并且可以提升电子设备的运行速度。
12.并且,在cpu开关核唤醒模式下,cpu核是根据用户态应用程序发送的开核指令、关核指令来切换工作状态的,从而与传统的cpu开关核唤醒技术兼容。
13.一个优选的方案是,目标cpu核关闭本地中断唤醒源后前,进行上下文保护操作。
14.由此可见,通过对上下文进行保护操作,可以确保cpu核关闭前能够保护工作现场,以便于cpu上电后能够恢复到之前的现场。
15.进一步的方案是,如开核指令不针对于目标cpu核,且未出现新发生的针对于目标cpu核的开核指令,目标cpu核保持在核掉电状态。
16.可见,如果开核指令并不是这对于目标cpu核,则目标cpu核保持在核掉电状态以避免目标cpu核上电,以确保cpu核能够在低功耗的模式下运行。
17.更进一步的方案是,cpu核在开关核唤醒模式下的多个工作状态与cpu核在中断唤醒模式下的多个工作状态相同。
18.一个优选的方案是,在中断唤醒模式下:目标cpu核处于空闲状态的时间超过预设阈值时,设置预掉电标记,并进入预掉电状态,目标cpu核进入核掉电状态;在目标cpu核所在的cpu核集群中,所有cpu核均进入核掉电状态后,该集群的所有cpu核均进入集群掉电状态;在目标cpu核所在的cpu核集群任一cpu核接收到中断请求时,该集群的所有cpu核均从集群掉电状态退出至核掉电状态;如中断请求指令针对于目标cpu核,或者出现新发生的针对于目标cpu核的中断请求指令,目标cpu核从核掉电状态退出至上电状态。
19.更进一步的方案是,在开关核唤醒模式下,如目标cpu核处于集群掉电状态,在接收到中断请求指令时,保持在集群掉电状态。
20.可见,开关核唤醒模式下中断请求指令并不会唤醒cpu核,与传统的开关核唤醒模式的工作要求一致,以确保用户态应用程序正确的控制cpu在开关核唤醒模式下的工作。
21.更进一步的方案是,同一cpu核集群中的每一个cpu核均设置有独立的一级缓存器。进一步的,同一cpu核集群中的多个cpu核使用同一个的二级缓存器。
22.为实现上述的第二目的,本发明提供的计算机装置包括处理器以及存储器,存储器存储有计算机程序,计算机程序被处理器执行时实现上述cpu功耗管理方法的各个步骤。
23.为实现上述的第三目的,本发明提供计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述cpu功耗管理方法的各个步骤。
附图说明
24.图1是应用本发明cpu功耗管理方法实施例的多个cpu的拓扑图。
25.图2是本发明cpu功耗管理方法实施例的cpu核的状态转换图。
26.图3是本发明cpu功耗管理方法实施例中在开机或者唤醒状态时多个cpu核的状态转换图。
27.图4是本发明cpu功耗管理方法实施例中在关机或者休眠状态时多个cpu核的状态转换图。
28.图5是本发明cpu功耗管理方法实施例中对cpu工作模式选择的示意框图。
29.以下结合附图及实施例对本发明作进一步说明。
具体实施方式
30.本发明的cpu功耗管理方法应用在电子设备上,例如应用在行车记录仪、机顶盒等电子设备上,以对cpu的功耗进行管理,并且降低cpu低功耗方案的实现成本。优选的,电子设备设置有处理器以及存储器,存储器上存储有计算机程序,处理器通过执行该计算机程序实现cpu功耗管理方法。
31.cpu功耗管理方法实施例:
32.本实施例应用在电子设备上,电子设备的cpu具有多个cpu核,如图1所示,电子设备设置有的cpu是双核双集群的smp cpu。cpu拓扑结构如图1所示。cpu内部包含两个独立的cpu核集群11、12,每个cpu核集群包含两个cpu核,例如cpu核集群11包括cpu核0和cpu核1,cpu核集群12包括cpu核2和cpu核3。并且,每个cpu核均设置有独立的一级缓存器,即l1 cache,同一个cpu核集群的多个cpu核共用一个二级缓存器,即l2 cache。例如,cpu核集群11的cpu核0和cpu核1共享二级缓存器15,cpu核集群12的cpu核2和cpu核3共享二级缓存器16。并且,每一个cpu核均可以单独控制电源开关,即每一个cpu核的电源可以单独开启或者关闭,当同一个cpu核集群的多个cpu核均掉电时,该cpu核集群也关闭电源。
33.电子设备通过两种模式实现对cpu的功耗管理,一种模式是cpu中断唤醒模式,另一种模式是cpu开关核唤醒模式,本实施例中,将两种模式下cpu核的工作状态进行统一,即不管cpu核是以哪一种模式进行管理,都是相同的工作状态进行切换。
34.下面结合图2介绍本实施例中每一个cpu核的工作状态转换流程。每一个cpu核均具有四种状态,分别是上电(power on)状态c0、预掉电(wait for idle)状态c0’、核掉电(local core power down)状态c1以及集群掉电(cluster power down)状态c2。
35.下面以cpu核0为例进行说明。在初始状态下,cpu核0和cpu核1均处于上电状态c0,当cpu核0满足特定的条件,例如cpu核0处于空闲状态的时间超过预设阈值,或者操作系统向该cpu核0发送关闭的指令时,cpu核0将执行p0过程,从上电状态c0进入预掉电状态c0’。此时,cpu核0设置预掉电标记,即设置idle状态标记,同时执行预掉电指令。然后,cpu核0执行上下文保护操作,如果是在开关核唤醒模式下,还需要关闭本地中断唤醒源,并触发进入核掉电状态c1,从预掉电状态c0’进入核掉电状态c1的过程为p1过程。进入核掉电状态c1后,cpu核0的电源关闭,从而减少cpu核0的功耗。
36.如果此时cpu核1也进入核掉电状态c1,则cpu核0将执行p3过程,从核掉电状态c1进入集群掉电状态c2。当cpu核集群11的两个cpu核均掉电后,cpu核集群11也将关闭电源。
37.当cpu核集群11掉电以后,如果该cpu核集群11满足预设的条件,例如cpu核集群11的任意一个cpu核接收到中断请求指令,或者接收到用户态应用程序发送的开核指令,则cpu核集群11的所有cpu核均从集群掉电状态c2退出至核掉电状态c1状态,即执行过程p3。
38.如果cpu核集群11所接收到的中断请求指令是针对cpu核0,或者接收到新的针对于cpu核0的中断请求指令,又或者cpu核集群11所接收到开核指令是针对cpu核0,或者接收到新的针对于cpu核0的开核指令,则cpu核0从核掉电状态c1退出至上电状态c0。
39.cpu核的多个工作状态以及转换过程如表1所示。
40.表1 cpu核的多个工作状态以及转换过程
[0041][0042]
针对cpu中断唤醒模式,cpu核的工作状态转换过程如下。以cpu核0为例,参见图2,当cpu核0处于上电状态c0时,如果cpu核0处于空闲状态的时间超过预设阈值,例如低于预先设置的阈值,cpu核0将执行p0过程,从上电状态c0进入预掉电状态c0’。此时,cpu核0设置预掉电标记,同时执行预掉电指令。并且,cpu核0执行上下文保护操作,并触发进入核掉电状态c1。
[0043]
如果此时cpu核1也进入核掉电状态c1,则cpu核0从核掉电状态c1进入集群掉电状态c2。并且,当cpu核集群11的两个cpu核均掉电后,cpu核集群11也将关闭电源。
[0044]
当cpu核集群11掉电以后,如果cpu核集群11的任意一个cpu核接收到中断请求指令,则cpu核集群11的所有cpu核均从集群掉电状态c2退出至核掉电状态c1状态。
[0045]
如果cpu核集群11所接收到的中断请求指令是针对cpu核0,或者接收到新的针对于cpu核0的中断请求指令,则cpu核0从核掉电状态c1退出至上电状态c0。
[0046]
在cpu中断唤醒模式下,cpu核0并没有接收到用户态应用程序发送的关闭指令或者开核指令,cpu核0进入预掉电状态的条件是cpu核0处于空闲状态的时间超过预设阈值,可以认为cpu核0在某一个时间段内“无事可做”,因此可以将cpu核0的电源关闭以节省电子设备的功耗。一旦cpu核0接收到中断请求指令后,cpu核0将马上进入上电状态,因此,cpu核0从核掉电状态退出至上电状态的条件是接收到针对于cpu核0的中断请求指令。在cpu中断
唤醒模式下,用户态应用程序始终认为cpu核0处于运行状态,因此,对于用户态应用程序而言,是不会感知cpu核进入或者退出cpu中断唤醒模式。
[0047]
针对cpu开关核唤醒模式,cpu核的工作状态转换过程如下。以cpu核0为例,参见图2,当cpu核0处于上电状态c0时,如果用户需要关闭部分cpu核,可以关闭一部分cpu核以减少功耗,则用户态应用程序向操作系统发送关闭cpu核的指令,操作系统发起关闭cpu核的操作,例如向cpu核0发送关闭指令。当cpu核0接收到关闭指令后,从上电状态c0进入预掉电状态c0’。此时,cpu核0设置预掉电标记,同时执行预掉电指令。并且,cpu核0执行上下文保护操作,同时关闭本地中断唤醒源,并触发进入核掉电状态c1。需要说明的是,一旦cpu核0进入核掉电状态c1,即使接收到针对于cpu核0的中断请求指令,cpu核0也不会退出掉电状态,还是保持在掉电状态。
[0048]
在cpu核0进入核掉电状态c1后,如果此时cpu核1也进入核掉电状态c1,则cpu核0从核掉电状态c1进入集群掉电状态c2。并且,当cpu核集群11的两个cpu核均掉电后,cpu核集群11也将关闭电源。
[0049]
当cpu核集群11掉电以后,如果cpu核集群11的任意一个cpu核接收到开核指令,则cpu核集群11的所有cpu核均从集群掉电状态c2退出至核掉电状态c1状态。并且,如果该开核指令是针对cpu核0,或者接收到新的针对于cpu核0的开核指令,则cpu核0从核掉电状态c1退出至上电状态c0。
[0050]
可见,在cpu开关核唤醒模式下,cpu核0进入预掉电状态c0’的条件是接收到用户态应用程序发送的关闭指令,而cpu核0从掉电状态退出至上电状态的条件是接收到用户态应用程序发送的开核指令。因此,cpu核0是根据用户态应用程序发送的指令掉电或者上电,对于用户态应用程序而言,是可以感知cpu核的上电与掉电的。
[0051]
下面结合图3介绍多个cpu核在开机或者唤醒时的状态转换过程。在初始状态下,cpu核0处于上电状态c0,其他的三个cpu核均处于掉电状态,由于cpu核0处于上电状态c0,因此cpu核1处于核掉电状态c1,而cpu核2、cpu核3处于集群掉电状态c2。当操作系统判断当前运算能力不足时,需要cpu核1开核,则cpu核1从核掉电状态c1退出至上电状态c0,此时,cpu核2、cpu核3仍处于集群掉电状态c2。
[0052]
当用户态应用程序向cpu核2发送开核指令后,cpu核2、cpu核3均退出至核掉电状态c1,cpu核2确认当前的开核指令针对于cpu核2,则退出至上电状态c0,但cpu核3仍保持核掉电状态c1,直到cpu核3也接收到针对于cpu核3的开核指令后,cpu核3将退出至上电状态c0。
[0053]
下面结合图4介绍多个cpu核在关机或者休眠时的状态转换过程。在初始状态下,四个cpu核均处于上电状态c0。当用户态应用程序发出了关闭cpu核3的指令,操作状态执行关闭cpu核3的动作,则cpu核3从上电状态c0进入预掉电状态c0’,并且进行上下文保护等操作,进入核掉电状态c1。此时,cpu核2仍处于上电状态c0。
[0054]
如果用户态应用程序发出了关闭cpu核2的指令,操作状态执行关闭cpu核2的动作,则cpu核2也从上电状态c0进入预掉电状态c0’,并且进行上下文保护等操作,进入核掉电状态c1。此时,由于cpu核3已经处于核掉电状态c1,因此,cpu核2、cpu核3将进入集群掉电状态c2。
[0055]
如果用户态应用程序发出了关闭cpu核1的指令,操作状态执行关闭cpu核1的动
作,则cpu核1从上电状态c0进入预掉电状态c0’,并且进行上下文保护等操作,进入核掉电状态c1。此时,cpu核0仍处于上电状态c0。如果用户态应用程序发出了关闭cpu核0的指令,操作状态执行关闭cpu核0的动作,cpu核0也从上电状态c0进入预掉电状态c0’,并且进行上下文保护等操作,进入核掉电状态c1。此时,由于cpu核1已经处于核掉电状态c1,因此,cpu核0、cpu核1将进入集群掉电状态c2。至此,四个cpu核全部进入集群掉电状态,两个cpu核集群均关闭电源。
[0056]
因此,cpu可以运行在cpu中断唤醒模式或者cpu开关核唤醒模式下,参见图5,cpu电源管理逻辑类似于通过一个选择开关30选择cpu运行的模式,即选择cpu运行在cpu中断唤醒模式或者cpu开关核唤醒模式,并根据相应的模式对cpu核集群11、12的多个cpu核的工作模式进行控制。
[0057]
可见,本实施例将cpu中断唤醒模式以及cpu开关核唤醒模式下cpu的工作状态进行统一,即cpu中断唤醒模式下的多种工作状态也适用于cpu开关核唤醒模式下的工作状态,这样,电子设备只需要设置各个cpu的一种状态机,并且针对两种不同的模式,将各种工作状态的进入条件、退出条件进行统一设置,从而使得cpu中断唤醒模式以及cpu开关核唤醒模式相互兼容,使得电子设备能够低成本的实现两种低功耗模式,并且能够提升电子设备的响应速度,且兼容性好。
[0058]
计算机装置实施例:
[0059]
本实施例的计算机装置可以是行车记录仪或者机顶盒等电子设备,该计算机装置包括有处理器、存储器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述cpu功耗管理方法的各个步骤。
[0060]
例如,计算机程序可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明的各个模块。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在终端设备中的执行过程。
[0061]
本发明所称处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分。
[0062]
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现终端设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0063]
计算机可读存储介质:
[0064]
上述计算机装置所存储的计算机程序如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述cpu功耗管理方法的各个步骤。
[0065]
其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0066]
最后需要强调的是,本发明不限于上述实施方式,例如每一个cpu核集群设置的cpu核数量的变化,或者每一个cpu核设置的缓存器数量的变化等,这些改变也应该包括在本发明权利要求的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献