CN117492848A - 一种处理器状态的切换方法、装置、设备及介质 - Google Patents
一种处理器状态的切换方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117492848A CN117492848A CN202311459836.3A CN202311459836A CN117492848A CN 117492848 A CN117492848 A CN 117492848A CN 202311459836 A CN202311459836 A CN 202311459836A CN 117492848 A CN117492848 A CN 117492848A
- Authority
- CN
- China
- Prior art keywords
- wake
- sleep state
- sleep
- time
- state
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 230000007958 sleep Effects 0.000 claims abstract description 398
- 230000007246 mechanism Effects 0.000 claims abstract description 77
- 238000012545 processing Methods 0.000 claims abstract description 26
- 230000008569 process Effects 0.000 claims abstract description 24
- 230000004622 sleep time Effects 0.000 claims description 178
- 230000005059 dormancy Effects 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 11
- 230000002618 waking effect Effects 0.000 claims description 11
- 230000007704 transition Effects 0.000 claims description 6
- 230000009286 beneficial effect Effects 0.000 abstract description 4
- 230000002452 interceptive effect Effects 0.000 abstract description 3
- 238000007726 management method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 241000282472 Canis lupus familiaris Species 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000007372 rollout process Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3293—Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
Abstract
本发明公开了一种处理器状态的切换方法、装置、设备及介质,适用于计算机技术领域。针对处于空闲状态下的目标处理器的休眠状态和/或唤醒时延进行干预调整功耗管理状态确定的处理器唤醒策略,根据处理器唤醒策略对目标处理器的休眠状态和/或唤醒时延进行处理以确定不同策略下的唤醒机制,以此唤醒目标处理器。本发明的有益效果在于通过处理器唤醒策略干预调整原功耗管理状态,以减少交互性系统中对于目标处理器的唤醒时延,干预后避免进入较深的休眠状态,降低唤醒过程中上下文状态信息与缓存信息不一致的风险,达到降低整个计算机蓝屏宕机的风险,提升整机系统的稳定性。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种处理器状态的切换方法、装置、设备及介质。
背景技术
随着整机架构产品的深入发展,为保证中央处理器(Central Processing Unit,CPU)空闲时降低功耗,会使得CPU进入低功耗或者睡眠状态,即引入了处理器状态(Processor State,C-State)机制,旨在降低整机的功耗以提升CPU的有效利用率。
当前C-State是ACPI spec定义的CPU工作在G0的power states,这些状态包括C0,C1,C2,C3……Cn,C0表示CPU在执行指令的状态,除了C0之外的其他State都是低功耗的状态,CPU不会执行指令,也因而会节省更多的功耗。在C1至Cn状态下,处理器会处于不同程度的睡眠状态,Cn状态越大,则唤醒时延越多,在睡眠状态下带来处理器功耗的减少。但是,在不同程度的睡眠状态下,不同的C-State需要耗费不同的唤醒时间,因此处理器会有针对不同的睡眠状态恢复到C0的唤醒时间。在C-State状态过深时,一旦处于深度睡眠下的CPU需要转换到运行状态时,其对应的唤醒延时增加,对于响应实时性要求较高的应用风险较大,致使操作系统出现频繁的死机问题。
因此,如何减少CPU在C-State状态下的唤醒时延以降低应用风险是本领域技术人员亟需要解决的问题。
发明内容
本发明的目的是提供一种处理器状态的切换方法、装置、设备及介质,以解决当前C-State状态过深时唤醒延时增加,导致实时性较高的应用风险大进而操作系统出现频繁死机问题。
为解决上述技术问题,本发明提供一种处理器状态的切换方法,包括:
获取空闲状态下的目标处理器;
确定所述目标处理器对应的处理器状态下的休眠状态以及所述休眠状态下的唤醒时延;
根据处理器唤醒策略对所述休眠状态和/或所述唤醒时延进行处理确定对应的唤醒机制,其中,所述处理器唤醒策略基于所述目标处理器的所述休眠状态和/或所述唤醒时延对所述处理器状态调整确定;
根据所述唤醒机制唤醒所述目标处理器。
一方面,所述处理器唤醒策略至少包括唤醒时延期限策略、定时唤醒策略和休眠时间唤醒策略的一种或者多种策略。
另一方面,所述休眠状态至少包括目标休眠状态、所述目标休眠状态的下一个休眠状态和终极休眠状态,根据所述唤醒时延期限策略对所述休眠状态和所述唤醒时延进行处理确定对应的唤醒机制,包括:
根据调节算法确定所述目标处理器的预估休眠时间;
获取所述目标处理器进入所述休眠状态之前的实际休眠时间;
根据所述预估休眠时间与所述实际休眠时间的关系确定所述目标处理器的所述目标休眠状态;
在所述预估休眠时间大于所述实际休眠时间的预设倍数时,获取所述目标休眠状态的唤醒时延和所述下一个休眠状态对应的唤醒时延,其中,所述下一个休眠状态对应的转入预设条件为超过所述下一个休眠状态的唤醒时延;
获取所述终极休眠状态的唤醒时延,其中,所述终极休眠状态的转入预设条件为超过所述终极休眠状态的唤醒时延,所述终极休眠状态的唤醒时延远大于其他休眠状态对应的唤醒时延;
判断所述目标休眠状态的唤醒时延是否小于所述下一个休眠状态对应的唤醒时延;
若小于所述下一个休眠状态对应的唤醒时延,则停留在所述目标休眠状态以建立所述唤醒机制;
若不小于所述下一个休眠状态对应的唤醒时延,则判断所述目标休眠状态的唤醒时延是否小于所述终极休眠状态的唤醒时延;
若小于所述终极休眠状态的唤醒时延,则停留在所述目标休眠状态以建立唤醒机制。
另一方面,根据所述定时唤醒策略对所述休眠状态进行处理确定对应的唤醒机制,包括:
获取定时器的定时时间、所述目标处理器在当前休眠状态下的临界休眠时间;
获取所述目标处理器在所述当前休眠状态下的当前休眠时间;
在当前次的定时时间内判断所述当前休眠时间是否达到所述临界休眠时间;
若未达到,则在所述当前次的定时时间结束后重置所述定时时间以开启下一次的定时时间,并返回至所述获取所述目标处理器在所述当前休眠状态下的当前休眠时间的步骤;
在所述定时时间的重置次数达到预设次数时,将所述目标处理器转出所述当前休眠状态进行唤醒;
若达到,则在达到所述临界休眠时间时转出所述当前休眠状态进行唤醒以确定所述唤醒机制。
另一方面,根据所述休眠时间唤醒策略对所述休眠状态进行处理确定对应的唤醒机制,包括:
获取所述目标处理器在当前休眠状态下的临界休眠时间和额定休眠时间,其中,所述临界休眠时间大于所述额定休眠时间;
获取所述目标处理器在所述当前休眠状态下的当前休眠时间;
判断所述当前休眠时间是否超出所述额定休眠时间;
若未超出所述额定休眠时间,则返回至所述获取所述目标处理器在所述当前休眠状态下的当前休眠时间的步骤;
若超出所述额定休眠时间,则获取所述当前休眠状态的前一个休眠状态,并将所述目标处理器转出至所述前一个休眠状态;
若所述目标处理器未转出至所述前一个休眠状态的情况下,判断所述当前休眠时间是否超出所述临界休眠时间;
若未超出所述临界休眠时间,则重新将所述目标处理器转出至所述前一个休眠状态;
若超出所述临界休眠时间,则强制所述目标处理器转出至所述前一个休眠状态;
在所述目标处理器未转出至所述前一个休眠状态的情况下,预先获取所述当前休眠状态的下一个休眠状态;
判断所述下一个休眠状态是否为终极休眠状态;
若是,则在达到所述临界休眠时间时转出所述当前休眠状态且未唤醒所述目标处理器的情况下,强制唤醒所述目标处理器以确定所述唤醒机制;
若否,则在达到所述临界休眠时间时转出所述当前休眠状态且未唤醒所述目标处理器的情况下,转出至所述下一个休眠状态并尝试唤醒以确定所述唤醒机制。
另一方面,所述根据所述预估休眠时间与所述实际休眠时间的关系确定所述目标处理器的目标休眠状态,包括:
获取各休眠状态下对应的实际休眠时间的预设倍数;
根据所述预估休眠时间与所述实际休眠时间确定当前倍数;
判断所述当前倍数是否存在满足各所述休眠状态下对应的实际休眠时间的预设倍数;
若存在满足的各预设倍数的任意一个倍数,则将满足的预设倍数所属的休眠状态确定为所述目标休眠状态。
另一方面,所述唤醒时延的获取过程,包括:
获取所述目标处理器所属的操作系统下的固定高级配置与电源接口描述表,其中,所述固定高级配置与电源接口描述表预先存储休眠状态下的退出延迟时间;
根据所述固定高级配置与电源接口描述表确定所述目标处理器内的对应的休眠状态下的退出延迟时间;
将所述退出延迟时间作为所述唤醒时延。
另一方面,所述目标处理器进入所述休眠状态的过程,包括:
接收进入休眠状态指令,其中,所述休眠状态指令为主动进入休眠状态指令或被动进入休眠指令;
根据所述进入休眠状态指令执行所述目标处理器进入所述休眠状态。
为解决上述技术问题,本发明还提供一种处理器状态的切换装置,包括:
获取模块,用于获取空闲状态下的目标处理器;
第一确定模块,用于确定所述目标处理器对应的处理器状态下的休眠状态以及所述休眠状态下的唤醒时延;
第二确定模块,用于根据处理器唤醒策略对所述休眠状态和/或所述唤醒时延进行处理确定对应的唤醒机制,其中,所述处理器唤醒策略基于所述目标处理器的所述休眠状态和/或所述唤醒时延所述处理器状态调整确定;
唤醒模块,用于根据所述唤醒机制唤醒所述目标处理器。
为解决上述技术问题,本发明还提供一种处理器状态的切换设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述所述的处理器状态的切换方法的步骤。
为解决上述技术问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的处理器状态的切换方法的步骤。
本发明提供了一种处理器状态的切换方法,针对处于空闲状态下的目标处理器的休眠状态和/或唤醒时延进行干预调整功耗管理状态确定的处理器唤醒策略,根据处理器唤醒策略对目标处理器的休眠状态和/或唤醒时延进行处理以确定不同策略下的唤醒机制,以此唤醒目标处理器。本发明的有益效果在于通过处理器唤醒策略干预调整原功耗管理状态,以减少交互性系统中对于目标处理器的唤醒时延,干预后避免进入较深的休眠状态,降低唤醒过程中上下文状态信息与缓存信息不一致的风险,达到降低整个计算机蓝屏宕机的风险,提升整机系统的稳定性。
本发明提供的通过休眠状态下的休眠时间以及唤醒时延两种参数确定的唤醒机制,在满足一种参数的预设条件后,再加入另一种参数的预设条件的约束,强制目标处理器不满足较深休眠状态的条件以阻止进入较深休眠状态;提供的仅是针对休眠状态下的休眠时间进行调整,同时加入定时机制,无论是定时时间结束还是达到临界休眠时间,均强制在当前休眠状态进行转出唤醒,避免进入下一个休眠状态导致的唤醒时延加长;基于休眠状态下的临界休眠时间和额定休眠时间确定唤醒机制,另外,在达到临界休眠时间的情况下还未唤醒目标处理器,考虑下一个休眠状态是否是终极休眠状态的情况进行转出唤醒。考虑到多方面情况下,提高确定唤醒机制的灵活性和多样性,避免进入终极休眠状态防止唤醒时延加长。通过不同的硬件指令进入C-state状态的确定过程,增加进入休眠状态的灵活性。
另外,本发明还提供了一种处理器状态的切换装置、设备及介质,具有如上述处理器状态的切换方法相同的有益效果。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种服务器下的操作系统示意图;
图2为本发明实施例提供的一种处理器状态的切换方法的流程图;
图3为本发明实施例提供的一种处理器状态的切换装置的结构图;
图4为本发明实施例提供的一种处理器状态的切换设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的核心是提供一种处理器状态的切换方法、装置、设备及介质,以解决当前C-State状态过深时唤醒延时增加,导致实时性较高的应用风险大进而操作系统出现频繁死机问题。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
需要说明的是,处理器电源状态被设计为C0,C1,C2,C3……Cn。C0电源状态是活跃状态,即CPU执行指令。C1到Cn都是处理器睡眠状态,即和C0状态相比,处理器消耗更少的能源并且释放更少的热量。当进入睡眠状态,处理器不执行任何指令。每个睡眠状态都有一个和省电多少对应的延迟。
图1为本发明实施例提供的一种服务器下的操作系统示意图,如图1所示,处理器状态的切换主要通过服务器1下的操作系统进行切换处理,操作系统(Operating System,OS)中的内核(kernel)下的高级配置和电源管理接口(Advanced Configuration andPower Management Interface,ACPI)模块,提供操作系统与应用程序管理所有电源管理接口,包括各种软件和硬件方面的规范。通过ACPI的规范协议,操作系统能够依据外设和主板详细需求为其分配资源,计算机从而可以满足如下场景的操作需求:用户能够使电脑在指定时间开、关;即插即用设备在插入时可以由ACPI来控制,并为其供电;在无人使用电脑时能够使电脑进入休眠状态,但保证一些通信设备打开;操作系统能够在应用程序对时间要求不高的情况下减少时钟频率;使用笔记本电脑的用户能够指定电脑在低电压情况下进入低功耗状态。以保证重要应用程序执行。对于ACPI的规范协议是通过固定ACPI(高级配置与电源接口)描述表(Fixed ACPIDescription table,FADT)定义配置。
在处理器进行状态切换时,会对硬件方面也有要求,即要求北桥芯片和内存进行电压与频率的调整,进入省电模式,故处理器状态的切换过程对整个平台的硬件要求比较高。如果主板的质量不过关或者内存的品质不够好,开启Intel C-State Tech后,会致使操作系统出现频繁的死机等问题。也就是说,虽然CPU状态进行切换,但是背靠的硬件没有跟上,在唤醒过程中,内存会从硬盘中获取对应的信息,在硬盘等硬件没有跟上CPU状态切换等软件方面,其体现在电压与频率调整上导致操作系统宕机。在较深的C-state状态下,如C6状态往后的Cn状态,其内部设备的上下文状态信息也被封存和冻结,在唤醒过程需要恢复现场变得越来越耗时,同时Cache一致性也被破坏,时间和资源分配的矛盾愈加明显,其宕机风险也愈加提高。一旦这些深度睡眠的CPU需要进行任务运行状态,其唤醒的延时会增加,对负载不高但是对响应实时性要求较高的应用封校较大,尤其是个人计算机应用场景,出现蓝屏宕机的概率大大增加。本发明提供的处理器状态的切换方法,可以解决上述技术问题。
图2为本发明实施例提供的一种处理器状态的切换方法的流程图,如图2所示,该方法包括:
S11:获取空闲状态下的目标处理器;
S12:确定目标处理器对应的处理器状态下的休眠状态以及休眠状态下的唤醒时延;
S13:根据处理器唤醒策略对休眠状态和/或唤醒时延进行处理确定对应的唤醒机制;
其中,处理器唤醒策略基于目标处理器的休眠状态和/或唤醒时延对处理器状态调整确定;
S14:根据唤醒机制唤醒目标处理器。
可以理解的是,空闲状态下的目标处理器,是通过轮询方式处理,通过预设的时间循环轮询处理器的任务状态,查看是否有任务需要处理,如果有任务处理,则目标处理器进行任务处理,如果没有任务处理,则确定该目标处理器为空闲状态,需要进入处理器状态,即C-state状态。值得注意的是,对于C-state状态下的C0状态,表示CPU在执行指令的状态,为激活状态。C1-Cn为不同程度的休眠状态,从左到右,各休眠状态对应的唤醒时延越大。ACPI规定C0、C1、C2需要保持cache的一致性(要保证CPU cache中的数据一定要是最新的数据),C3以及后续的休眠状态就没有这个要求了,也就是说如果系统还要内存请求,OS就不会进入C3以及之后的状态。
确定目标处理器对应的处理器状态下的休眠状态以及休眠状态下的唤醒时延,需要说明的是,休眠状态是可以针对于目标处理器所属的当前C-state状态,也可以是在当前C-state状态的前几个状态或者下一个休眠状态等,在此不一定是指目标处理器所在的C-state状态,还可以是相邻的几个休眠状态。对应地,唤醒延时也是如此,若前面的休眠状态的数量为多个,则一一对应各休眠状态下的唤醒延时,本实施例中的各个休眠状态对应的唤醒延时预先设置。
步骤S13中的处理器唤醒策略是基于目标处理器的休眠状态和/或唤醒时延对C-state状态干预调整的策略,也就是通过三种技术方案确定,一种是基于休眠状态进行干预调整,一种是基于唤醒时延对C-state状态干预调整,还有一种是前面两种技术方案结合进行干预调整。另外,值得注意的是,根据处理器唤醒策略对休眠状态和/或唤醒时延进行处理确定对应的唤醒机制,这里是利用上述的何种技术方案就要针对性对休眠状态还是唤醒时延是分别确定唤醒机制还是结合确定唤醒机制相对应。处理器唤醒策略是重新对处理器状态进行调整,以及对应的唤醒时延和休眠状态下的休眠时间的重新调整确定。
例如,采用上述实施例的第一种技术方案(基于休眠状态进行干预调整)确定的处理器唤醒策略,则后续的唤醒机制由休眠状态确定;采用上述实施例的第二种技术方案(基于唤醒时延对C-state状态干预调整)确定的处理器唤醒策略,则后续的唤醒机制由唤醒时延确定;采用上述实施例的第三种技术方案(基于休眠状态和唤醒时延对C-state状态干预调整)确定的处理器唤醒策略,则后续的唤醒机制由休眠状态和唤醒时延确定。
可以理解的是,本发明中的处理器唤醒策略可以有一个,也可以有多个,在一些实施例中,处理器唤醒策略至少包括唤醒时延期限策略、定时唤醒策略和休眠时间唤醒策略的一种或者多种策略。
在本实施例中处理器唤醒策略还可以包括其他策略,在此不做详细展开,对于上段提到的三种策略,可以是单独进行,也可以是两种或者三种策略的结合确定其唤醒机制。若是两种策略结合,唤醒机制可以是简单结合该两种策略单独确定的唤醒机制进行结合确定,也可以是重新确定唤醒机制,在此不做限定,可以根据实际情况设定即可。
根据确定的唤醒机制对目标处理器进行唤醒。唤醒过程是基于目标处理器的当前休眠状态直接退出转换至上一个休眠状态或者指定的休眠状态(C0状态)等,在此不做限定,根据实际情况设定即可。
本发明实施例提供的一种处理器状态的切换方法,针对处于空闲状态下的目标处理器的休眠状态和/或唤醒时延进行干预调整功耗管理状态确定的处理器唤醒策略,根据处理器唤醒策略对目标处理器的休眠状态和/或唤醒时延进行处理以确定不同策略下的唤醒机制,以此唤醒目标处理器。本发明的有益效果在于通过处理器唤醒策略干预调整原功耗管理状态,以减少交互性系统中对于目标处理器的唤醒时延,干预后避免进入较深的休眠状态,降低唤醒过程中上下文状态信息与缓存信息不一致的风险,达到降低整个计算机蓝屏宕机的风险,提升整机系统的稳定性。
在上述实施例的基础上,在一些实施例中,休眠状态至少包括目标休眠状态、目标休眠状态的下一个休眠状态和终极休眠状态,根据唤醒时延期限策略对休眠状态和唤醒时延进行处理确定对应的唤醒机制,包括:
根据调节算法确定目标处理器的预估休眠时间;
获取目标处理器进入休眠状态之前的实际休眠时间;
根据预估休眠时间与实际休眠时间的关系确定目标处理器的目标休眠状态;
在预估休眠时间大于实际休眠时间的预设倍数时,获取目标休眠状态的唤醒时延和下一个休眠状态对应的唤醒时延,其中,下一个休眠状态对应的转入预设条件为超过下一个休眠状态的唤醒时延;
获取终极休眠状态的唤醒时延,其中,终极休眠状态的转入预设条件为超过终极休眠状态的唤醒时延,终极休眠状态的唤醒时延远大于其他休眠状态对应的唤醒时延;
判断目标休眠状态的唤醒时延是否小于下一个休眠状态对应的唤醒时延;
若小于下一个休眠状态对应的唤醒时延,则停留在目标休眠状态以建立唤醒机制;
若不小于下一个休眠状态对应的唤醒时延,则判断目标休眠状态的唤醒时延是否小于终极休眠状态的唤醒时延;
若小于终极休眠状态的唤醒时延,则停留在目标休眠状态以建立唤醒机制。
具体地,在确定本实施例的唤醒机制,需要用到休眠状态下的多个状态,至少包括目标休眠状态、目标休眠状态的下一个休眠状态和终极休眠状态。目标休眠状态是目标处理器的当前休眠状态,终极休眠状态是考虑处理器唤醒时延,最大极限的唤醒时延对应的休眠状态。本实施例中的最大极限的唤醒时延是在极少数情况下处理器可以到达的较深休眠状态,使得休眠状态达到有限度。例如,处理器大多数情况下到达C1-C3状态,极少到达C6状态,则会将C6状态设置为终极休眠状态,在此限定在C6状态之前转出。
唤醒时延期限策略是基于休眠状态下的预估休眠时间和实际休眠时间以及唤醒时延两种参数确定。先根据预估休眠时间和实际休眠时间确定目标处理器的目标休眠状态。对于预估休眠时间是基于调节算法(Governor)确定,在实际CPU运行环境中,不同的CPU对idle状态的需求和进入/退出方法会存在差别,而这其中功耗和退出延迟成为了在idle调度过程一组不可调和的矛盾,如何保证在满足性能需求的前提下尽可能的节省功耗成CPU idle子系统的一个重要组成部分。CPU idle governor在整个CPU idle子系统中负责提供如何使用CPU idle的策略。
内核中提供两种策略:Menu和Ladder。选择哪种调度器,取决于内核的配置,其中关键点是系统调度的时间点(tick)是否可以被空闲循环停止。在系统初始化过程中,menu和ladder分别通过cpuidle_register_governor()注册到系统中。
ladder governor会首先进入最浅的idle state,然后如果待的时间足够长,则会进入到更深一级的idle state,以此类推,直到到达最深的idle state。当被唤醒时,会尽可能快地重新启动CPU;等到下次空闲,则又会从idle state1开始进入。
实际休眠时间为目标处理器进入休眠状态之前的时间,例如,目标处理器处于空闲状态,并不是立马会进入C-state状态,中间存在一定的时间,该时间为实际休眠时间。通过预估休眠时间和实际休眠时间的关系可以知道目标处理器的目标休眠状态,也就是会进入哪个C-state状态。
在一些实施例中,根据预估休眠时间与实际休眠时间的关系确定目标处理器的目标休眠状态,包括:
获取各休眠状态下对应的实际休眠时间的预设倍数;
根据预估休眠时间与实际休眠时间确定当前倍数;
判断当前倍数是否存在满足各休眠状态下对应的实际休眠时间的预设倍数;
若存在满足的各预设倍数的任意一个倍数,则将满足的预设倍数所属的休眠状态确定为目标休眠状态。
具体地,获取各休眠状态下对应的实际休眠时间的预设倍数,根据当前的预估休眠时间与实际休眠时间确定当前倍数,看当前倍数与各预设倍数哪个符合,则将该当前倍数对应的预设倍数所属的休眠状态作为目标休眠状态,也就是目标处理器应该进入的休眠状态。
若预估休眠时间大于实际休眠时间的预设倍数时,则说明满足进入下一个C-state状态的准入条件,原有的技术方案是只要满足准入条件,则会切换至下一个C-state状态。在本实施例中,需要获取目标休眠状态的下一个休眠状态对应的唤醒时延。若想进入某一个休眠状态,则需要满足对应的转入预设条件,就是当前的唤醒时延超过想进入的休眠状态下的唤醒时延。
先判断目标休眠状态的唤醒时延是否小于下一个休眠状态对应的唤醒时延,若小于,基于下一个休眠状态对应的唤醒时延,则无法进入下一个休眠状态,若不小于,则满足进入下一个休眠状态的转入预设条件,继续判断是否小于终极休眠状态的唤醒时延,需要说明的是,本实施例中对于终极休眠状态的唤醒时延进行了干预,其唤醒时延远远大于其他休眠状态的唤醒时延,也就是实际的唤醒时延远远小于终极休眠状态的唤醒时延,这里设置了禁止条件,均无法进入到终极休眠状态。同时,在一定程度上,调整了休眠状态,原有的C-state状态是只要满足一定条件,则会无限制地进入下一个休眠状态,即便进入深程度的休眠状态,而本实施例中在极少情况下达到的休眠状态设置为终极休眠状态,使得目标处理器在空闲状态下不会进入。因此,在小于终极休眠状态的唤醒时延时,也会停留在目标休眠状态。
本实施例提供的通过休眠状态下的休眠时间以及唤醒时延两种参数确定的唤醒机制,在满足一种参数的预设条件后,再加入另一种参数的预设条件的约束,强制目标处理器不满足较深休眠状态的条件以阻止进入较深休眠状态。
在一些实施例中,根据定时唤醒策略对休眠状态进行处理确定对应的唤醒机制,包括:
获取定时器的定时时间、目标处理器在当前休眠状态下的临界休眠时间;
获取目标处理器在当前休眠状态下的当前休眠时间;
在当前次的定时时间内判断当前休眠时间是否达到临界休眠时间;
若未达到,则在当前次的定时时间结束后重置定时时间以开启下一次的定时时间,并返回至获取目标处理器在当前休眠状态下的当前休眠时间的步骤;
在定时时间的重置次数达到预设次数时,将目标处理器转出当前休眠状态进行唤醒;
若达到,则在达到临界休眠时间时转出当前休眠状态进行唤醒以确定唤醒机制。
具体地,本实施例中的定时唤醒策略是采用定时机制,该定时机制在目标处理器的当前休眠时间未达到临界休眠时间的情况下,不断的喂狗,只要满足定时机制的喂狗次数达到预设次数或者在定时时间内达到临界休眠时间的任意一种条件时,均会进行干预休眠状态。
当前在CPU时间调度层面上有一个tick定时器的概念,是周期性的时钟中断机制,作为操作系统的心跳,可以驱动CPU调度器运转,并且统计相关的运行信息,主要是确定在某一个休眠状态下待的时间够长的具体时间(休眠时间),与本实施例中的定时机制不同,属于衡量不同的参数,本实施例中的定时机制是作为一种预设条件使用,CPU调度器上的定时器是衡量计算休眠时间。
临界休眠时间是目标处理器在当前休眠状态的最大休眠时间,在当前次的定时时间内当前休眠时间达到临界休眠时间的情况下,则及时转出,本实施例中的转出唤醒,是基于当前休眠状态转出至上一个休眠状态或者指定休眠状态,排除转出至当前休眠状态的下一个休眠状态或者更深的休眠状态。
在当前次的定时时间内当前休眠时间未达到临界休眠时间的情况下,在当前次的定时时间结束时重置定时时间开启下一次的定时时间,即喂狗一次,并返回至获取当前休眠时间的步骤,在定时时间的重置次数达到预设次数时,说明定时结束,在此时还未达到临界休眠时间,也会将目标处理器转出当前休眠状态进行唤醒,提前进行干预调整。
本实施例中仅是针对休眠状态下的休眠时间进行调整,同时加入定时机制,无论是定时时间结束还是达到临界休眠时间,均强制在当前休眠状态进行转出唤醒,避免进入下一个休眠状态导致的唤醒时延加长。
在一些实施例中,根据休眠时间唤醒策略对休眠状态进行处理确定对应的唤醒机制,包括:
获取目标处理器在当前休眠状态下的临界休眠时间和额定休眠时间,其中,临界休眠时间大于额定休眠时间;
获取目标处理器在当前休眠状态下的当前休眠时间;
判断当前休眠时间是否超出额定休眠时间;
若未超出额定休眠时间,则返回至获取目标处理器在当前休眠状态下的当前休眠时间的步骤;
若超出额定休眠时间,则获取当前休眠状态的前一个休眠状态,并将目标处理器转出至前一个休眠状态;
若目标处理器未转出至前一个休眠状态的情况下,判断当前休眠时间是否超出临界休眠时间;
若未超出临界休眠时间,则重新将目标处理器转出至前一个休眠状态;
若超出临界休眠时间,则强制目标处理器转出至前一个休眠状态;
在目标处理器未转出至前一个休眠状态的情况下,预先获取当前休眠状态的下一个休眠状态;
判断下一个休眠状态是否为终极休眠状态;
若是,则在达到临界休眠时间时转出当前休眠状态且未唤醒目标处理器的情况下,强制唤醒目标处理器以确定唤醒机制;
若否,则在达到临界休眠时间时转出当前休眠状态且未唤醒目标处理器的情况下,转出至下一个休眠状态并尝试唤醒以确定唤醒机制。
具体地,获取目标处理器在当前休眠状态下的临界休眠时间和额定休眠时间,在上述实施例中提到,临界休眠时间是目标处理器在当前休眠状态的最大休眠时间,对于额定休眠时间是目标处理器在当前休眠时间下的额定休眠时间,小于临界休眠时间。
先判断当前休眠时间是否超出额定休眠时间,若未超出,则返回至获取当前休眠时间的步骤继续监测,若超出额定休眠时间,则需要将目标处理器由当前休眠状态转出至指定休眠状态(前一个休眠状态)。这里需要说明的是,转出存在转出成功(正常情况)和转出失败(非正常情况)的情况,若转出失败,则目标处理器还是处于当前休眠状态,此时判断当前休眠时间是否超出临界休眠时间,若未超出,则继续尝试转出,若超出,则强制转出。本实施例中的转出过程,一个是目标处理器主动转出,一个是目标处理器被动转出,这里的强制转出是基于目标处理器被动转出的情况。
另外,在目标处理器未转出至前一个休眠状态的情况下,预先获取下一个休眠状态,判断是否为终极休眠状态,关于终极休眠状态在上述实施例中提到是考虑处理器唤醒时延,最大极限的唤醒时延对应的休眠状态。
如果是终极休眠状态,则在未唤醒目标处理器时,再次强制唤醒目标处理器。如果不是终极休眠状态,则在未唤醒目标处理器时,转出至下一个休眠状态并在下一个休眠状态下继续尝试唤醒目标处理器。
本实施例中提供的基于休眠状态下的临界休眠时间和额定休眠时间确定唤醒机制,另外,在达到临界休眠时间的情况下还未唤醒目标处理器,考虑下一个休眠状态是否是终极休眠状态的情况进行转出唤醒。考虑到多方面情况下,提高确定唤醒机制的灵活性和多样性,避免进入终极休眠状态防止唤醒时延加长。
在一些实施例中,唤醒时延的获取过程,包括:
获取目标处理器所属的操作系统下的固定高级配置与电源接口描述表,其中,固定高级配置与电源接口描述表预先存储休眠状态下的退出延迟时间;
根据固定高级配置与电源接口描述表确定目标处理器内的对应的休眠状态下的退出延迟时间;
将退出延迟时间作为唤醒时延。
具体地,在操作系统中,通过CPU idle子系统具体完成C-state状态的进入和退出,选择进入哪个休眠状态,是CPU idle子系统的重点。同时,FADT中定义ACPI的硬件寄存器组应用和配置,硬件寄存器基址CST_CNT、P_LVL2、P_LVL3,CST_CNT如果非零,则该字段包含操作系统直接能源管理(Operation System directed configuration and PowerManagement,OSPM)写入系统管理中断寄存器的值,以指示操作系统对C-state状态改变通知。P_LVL2_LAT,表示在最坏情况下进入和退出C2状态的硬件延迟(以微秒为单位),大于100表示系统不支持C2状态。P_LVL3_LAT表示在最坏情况下进入和退出C3状态的硬件延迟(以微秒为单位),大于1000表示系统不支持C3状态。
如图1所示,获取目标处理器所属的FADT,这里预先存储各休眠状态下的退出延迟时间,基于FADT可以确定目标处理器对应的休眠状态下的退出延迟时间作为唤醒时延。
本实施例提供的针对于FADT,重新定义系统内核的idle状态,忽略硬件对C-state限制约束,使系统在正常工作中避免进入较深的C-state状态导致唤醒时延的增加。
在一些实施例中,目标处理器进入休眠状态的过程,包括:
接收进入休眠状态指令,其中,休眠状态指令为主动进入休眠状态指令或被动进入休眠指令;
根据进入休眠状态指令执行目标处理器进入休眠状态。
具体地,接收进入休眠状态指令,对于休眠状态指令包括主动进入和被动进入的休眠指令,对于主动进入休眠状态指令,如IO指令。对于被动进入休眠指令,如MWAIT指令,主要是通过CPU调度机制进行的自动进入指令。根据对应的进入休眠状态指令执行目标处理器进入休眠状态。
本实施例提供的通过不同的硬件指令进入C-state状态的确定过程,增加进入休眠状态的灵活性。
上述详细描述了处理器状态的切换方法对应的各个实施例,在此基础上,本发明还公开与上述方法对应的处理器状态的切换装置,图3为本发明实施例提供的一种处理器状态的切换装置的结构图。如图3所示,处理器状态的切换装置包括:
获取模块11,用于获取空闲状态下的目标处理器;
第一确定模块12,用于确定目标处理器对应的处理器状态下的休眠状态以及休眠状态下的唤醒时延;
第二确定模块13,用于根据处理器唤醒策略对休眠状态和/或唤醒时延进行处理确定对应的唤醒机制,其中,处理器唤醒策略基于目标处理器的休眠状态和/或唤醒时延处理器状态调整确定;
唤醒模块14,用于根据唤醒机制唤醒目标处理器。
另一方面,休眠状态至少包括目标休眠状态、目标休眠状态的下一个休眠状态和终极休眠状态,第二确定模块13内的根据唤醒时延期限策略对休眠状态和唤醒时延进行处理确定对应的唤醒机制,包括:
第一确定子模块,用于根据调节算法确定目标处理器的预估休眠时间;
第一获取子模块,用于获取目标处理器进入休眠状态之前的实际休眠时间;
第二确定子模块,用于根据预估休眠时间与实际休眠时间的关系确定目标处理器的目标休眠状态;
第二获取子模块,用于在预估休眠时间大于实际休眠时间的预设倍数时,获取目标休眠状态的唤醒时延和下一个休眠状态对应的唤醒时延,其中,下一个休眠状态对应的转入预设条件为超过下一个休眠状态的唤醒时延;
第三获取子模块,用于获取终极休眠状态的唤醒时延,其中,终极休眠状态的转入预设条件为超过终极休眠状态的唤醒时延,终极休眠状态的唤醒时延远大于其他休眠状态对应的唤醒时延;
第一判断子模块,用于判断目标休眠状态的唤醒时延是否小于下一个休眠状态对应的唤醒时延,若小于,则触发第一建立子模块,若不小于,则触发第二判断子模块;
第一建立子模块,用于停留在目标休眠状态以建立唤醒机制;
第二判断子模块,用于判断目标休眠状态的唤醒时延是否小于终极休眠状态的唤醒时延,若小于,则触发第二建立子模块;
第二建立子模块,用于停留在目标休眠状态以建立唤醒机制。
另一方面,第二确定模块13内的根据定时唤醒策略对休眠状态进行处理确定对应的唤醒机制,包括:
第四获取子模块,用于获取定时器的定时时间、目标处理器在当前休眠状态下的临界休眠时间;
第五获取子模块,用于获取目标处理器在当前休眠状态下的当前休眠时间;
第三判断子模块,用于在当前次的定时时间内判断当前休眠时间是否达到临界休眠时间,若未达到,则触发重置子模块,若达到,则触发第三建立子模块;
重置子模块,用于在当前次的定时时间结束后重置定时时间以开启下一次的定时时间,并返回至获取目标处理器在当前休眠状态下的当前休眠时间的步骤;
第一转出子模块,用于在定时时间的重置次数达到预设次数时,将目标处理器转出当前休眠状态进行唤醒;
第三建立子模块,用于在达到临界休眠时间时转出当前休眠状态进行唤醒以确定唤醒机制。
另一方面,第二确定模块13内的根据休眠时间唤醒策略对休眠状态进行处理确定对应的唤醒机制,包括:
第六获取子模块,用于获取目标处理器在当前休眠状态下的临界休眠时间和额定休眠时间,其中,临界休眠时间大于额定休眠时间;
第七获取子模块,用于获取目标处理器在当前休眠状态下的当前休眠时间;
第四判断子模块,用于判断当前休眠时间是否超出额定休眠时间,若未超出,则触发返回子模块,若超出,则触发第八获取子模块;
返回子模块,用于返回至获取目标处理器在当前休眠状态下的当前休眠时间的步骤;
第八获取子模块,用于获取当前休眠状态的前一个休眠状态,并将目标处理器转出至前一个休眠状态;
第五判断子模块,用于若目标处理器未转出至前一个休眠状态的情况下,判断当前休眠时间是否超出临界休眠时间,若未超出,则触发第二转出子模块,若超出,则触发第三转出子模块;
第二转出子模块,用于重新将目标处理器转出至前一个休眠状态;
第三转出子模块,用于强制目标处理器转出至前一个休眠状态;
第九获取子模块,用于在目标处理器未转出至前一个休眠状态的情况下,预先获取当前休眠状态的下一个休眠状态;
第六判断子模块,用于判断下一个休眠状态是否为终极休眠状态,若是,则触发第四建立子模块,若否,则触发第五建立子模块;
第四建立子模块,用于在达到临界休眠时间时转出当前休眠状态且未唤醒目标处理器的情况下,强制唤醒目标处理器以确定唤醒机制;
第五建立子模块,用于在达到临界休眠时间时转出当前休眠状态且未唤醒目标处理器的情况下,转出至下一个休眠状态并尝试唤醒以确定唤醒机制。
另一方面,第二确定子模块包括:
第十获取子模块,用于获取各休眠状态下对应的实际休眠时间的预设倍数;
第三确定子模块,用于根据预估休眠时间与实际休眠时间确定当前倍数;
第七判断子模块,用于判断当前倍数是否存在满足各休眠状态下对应的实际休眠时间的预设倍数,若存在满足的各预设倍数的任意一个倍数,则触发第四确定子模块;
第四确定子模块,用于将满足的预设倍数所属的休眠状态确定为目标休眠状态。
另一方面,第一确定模块12的唤醒时延的获取过程,包括:
第十一获取子模块,用于获取目标处理器所属的操作系统下的固定高级配置与电源接口描述表,其中,固定高级配置与电源接口描述表预先存储休眠状态下的退出延迟时间;
第五确定子模块,用于根据固定高级配置与电源接口描述表确定目标处理器内的对应的休眠状态下的退出延迟时间;
第一作为子模块,用于将退出延迟时间作为唤醒时延。
另一方面,第一确定模块12的目标处理器进入休眠状态的过程,包括:
第一接收子模块,用于接收进入休眠状态指令,其中,休眠状态指令为主动进入休眠状态指令或被动进入休眠指令;
第一执行子模块,用于根据进入休眠状态指令执行目标处理器进入休眠状态。
由于装置部分的实施例与上述的实施例相互对应,因此装置部分的实施例请参照上述方法部分的实施例描述,在此不再赘述。
对于本发明提供的一种处理器状态的切换装置的介绍请参照上述方法实施例,本发明在此不再赘述,其具有上述处理器状态的切换方法相同的有益效果。
图4为本发明实施例提供的一种处理器状态的切换设备的结构图,如图4所示,该设备包括:
存储器21,用于存储计算机程序;
处理器22,用于执行计算机程序时实现处理器状态的切换方法的步骤。
其中,处理器22可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器22可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器22也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器22可以集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器22还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器21可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器21还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器21至少用于存储以下计算机程序211,其中,该计算机程序被处理器22加载并执行之后,能够实现前述任一实施例公开的处理器状态的切换方法的相关步骤。另外,存储器21所存储的资源还可以包括操作系统212和数据213等,存储方式可以是短暂存储或者永久存储。其中,操作系统212可以包括Windows、Unix、Linux等。数据213可以包括但不限于处理器状态的切换方法所涉及到的数据等等。
在一些实施例中,处理器状态的切换设备还可包括有显示屏23、输入输出接口24、通信接口25、电源26以及通信总线27。
领域技术人员可以理解,图4中示出的结构并不构成对处理器状态的切换设备的限定,可以包括比图示更多或更少的组件。
处理器22通过调用存储于存储器21中的指令以实现上述任一实施例所提供的处理器状态的切换方法。
对于本发明提供的一种处理器状态的切换设备的介绍请参照上述方法实施例,本发明在此不再赘述,其具有上述处理器状态的切换方法相同的有益效果。
进一步的,本发明还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器22执行时实现如上述处理器状态的切换方法的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本发明提供的一种计算机可读存储介质的介绍请参照上述方法实施例,本发明在此不再赘述,其具有上述处理器状态的切换方法相同的有益效果。
以上对本发明所提供的一种处理器状态的切换方法、处理器状态的切换装置、设备及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (11)
1.一种处理器状态的切换方法,其特征在于,包括:
获取空闲状态下的目标处理器;
确定所述目标处理器对应的处理器状态下的休眠状态以及所述休眠状态下的唤醒时延;
根据处理器唤醒策略对所述休眠状态和/或所述唤醒时延进行处理确定对应的唤醒机制,其中,所述处理器唤醒策略基于所述目标处理器的所述休眠状态和/或所述唤醒时延对所述处理器状态调整确定;
根据所述唤醒机制唤醒所述目标处理器。
2.根据权利要求1所述的处理器状态的切换方法,其特征在于,所述处理器唤醒策略至少包括唤醒时延期限策略、定时唤醒策略和休眠时间唤醒策略的一种或者多种策略。
3.根据权利要求2所述的处理器状态的切换方法,其特征在于,所述休眠状态至少包括目标休眠状态、所述目标休眠状态的下一个休眠状态和终极休眠状态,根据所述唤醒时延期限策略对所述休眠状态和所述唤醒时延进行处理确定对应的唤醒机制,包括:
根据调节算法确定所述目标处理器的预估休眠时间;
获取所述目标处理器进入所述休眠状态之前的实际休眠时间;
根据所述预估休眠时间与所述实际休眠时间的关系确定所述目标处理器的所述目标休眠状态;
在所述预估休眠时间大于所述实际休眠时间的预设倍数时,获取所述目标休眠状态的唤醒时延和所述下一个休眠状态对应的唤醒时延,其中,所述下一个休眠状态对应的转入预设条件为超过所述下一个休眠状态的唤醒时延;
获取所述终极休眠状态的唤醒时延,其中,所述终极休眠状态的转入预设条件为超过所述终极休眠状态的唤醒时延,所述终极休眠状态的唤醒时延远大于其他休眠状态对应的唤醒时延;
判断所述目标休眠状态的唤醒时延是否小于所述下一个休眠状态对应的唤醒时延;
若小于所述下一个休眠状态对应的唤醒时延,则停留在所述目标休眠状态以建立所述唤醒机制;
若不小于所述下一个休眠状态对应的唤醒时延,则判断所述目标休眠状态的唤醒时延是否小于所述终极休眠状态的唤醒时延;
若小于所述终极休眠状态的唤醒时延,则停留在所述目标休眠状态以建立所述唤醒机制。
4.根据权利要求2所述的处理器状态的切换方法,其特征在于,根据所述定时唤醒策略对所述休眠状态进行处理确定对应的唤醒机制,包括:
获取定时器的定时时间、所述目标处理器在当前休眠状态下的临界休眠时间;
获取所述目标处理器在所述当前休眠状态下的当前休眠时间;
在当前次的定时时间内判断所述当前休眠时间是否达到所述临界休眠时间;
若未达到,则在所述当前次的定时时间结束后重置所述定时时间以开启下一次的定时时间,并返回至所述获取所述目标处理器在所述当前休眠状态下的当前休眠时间的步骤;
在所述定时时间的重置次数达到预设次数时,将所述目标处理器转出所述当前休眠状态进行唤醒;
若达到,则在达到所述临界休眠时间时转出所述当前休眠状态进行唤醒以确定所述唤醒机制。
5.根据权利要求2所述的处理器状态的切换方法,其特征在于,根据所述休眠时间唤醒策略对所述休眠状态进行处理确定对应的唤醒机制,包括:
获取所述目标处理器在当前休眠状态下的临界休眠时间和额定休眠时间,其中,所述临界休眠时间大于所述额定休眠时间;
获取所述目标处理器在所述当前休眠状态下的当前休眠时间;
判断所述当前休眠时间是否超出所述额定休眠时间;
若未超出所述额定休眠时间,则返回至所述获取所述目标处理器在所述当前休眠状态下的当前休眠时间的步骤;
若超出所述额定休眠时间,则获取所述当前休眠状态的前一个休眠状态,并将所述目标处理器转出至所述前一个休眠状态;
若所述目标处理器未转出至所述前一个休眠状态的情况下,判断所述当前休眠时间是否超出所述临界休眠时间;
若未超出所述临界休眠时间,则重新将所述目标处理器转出至所述前一个休眠状态;
若超出所述临界休眠时间,则强制所述目标处理器转出至所述前一个休眠状态;
在所述目标处理器未转出至所述前一个休眠状态的情况下,预先获取所述当前休眠状态的下一个休眠状态;
判断所述下一个休眠状态是否为终极休眠状态;
若是,则在达到所述临界休眠时间时转出所述当前休眠状态且未唤醒所述目标处理器的情况下,强制唤醒所述目标处理器以确定所述唤醒机制;
若否,则在达到所述临界休眠时间时转出所述当前休眠状态且未唤醒所述目标处理器的情况下,转出至所述下一个休眠状态并尝试唤醒以确定所述唤醒机制。
6.根据权利要求3所述的处理器状态的切换方法,其特征在于,所述根据所述预估休眠时间与所述实际休眠时间的关系确定所述目标处理器的所述目标休眠状态,包括:
获取各休眠状态下对应的实际休眠时间的预设倍数;
根据所述预估休眠时间与所述实际休眠时间确定当前倍数;
判断所述当前倍数是否存在满足各休眠状态下对应的实际休眠时间的预设倍数;
若存在满足的各预设倍数的任意一个倍数,则将满足的预设倍数所属的休眠状态确定为所述目标休眠状态。
7.根据权利要求1至6任意一项所述的处理器状态的切换方法,其特征在于,所述唤醒时延的获取过程,包括:
获取所述目标处理器所属的操作系统下的固定高级配置与电源接口描述表,其中,所述固定高级配置与电源接口描述表预先存储休眠状态下的退出延迟时间;
根据所述固定高级配置与电源接口描述表确定所述目标处理器内的对应的休眠状态下的退出延迟时间;
将所述退出延迟时间作为所述唤醒时延。
8.根据权利要求1至6任意一项所述的处理器状态的切换方法,其特征在于,所述目标处理器进入所述休眠状态的过程,包括:
接收进入休眠状态指令,其中,所述休眠状态指令为主动进入休眠状态指令或被动进入休眠指令;
根据所述进入休眠状态指令执行所述目标处理器进入所述休眠状态。
9.一种处理器状态的切换装置,其特征在于,包括:
获取模块,用于获取空闲状态下的目标处理器;
第一确定模块,用于确定所述目标处理器对应的处理器状态下的休眠状态以及所述休眠状态下的唤醒时延;
第二确定模块,用于根据处理器唤醒策略对所述休眠状态和/或所述唤醒时延进行处理确定对应的唤醒机制,其中,所述处理器唤醒策略基于所述目标处理器的所述休眠状态和/或所述唤醒时延所述处理器状态调整确定;
唤醒模块,用于根据所述唤醒机制唤醒所述目标处理器。
10.一种处理器状态的切换设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至8任一项所述的处理器状态的切换方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的处理器状态的切换方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311459836.3A CN117492848A (zh) | 2023-11-03 | 2023-11-03 | 一种处理器状态的切换方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311459836.3A CN117492848A (zh) | 2023-11-03 | 2023-11-03 | 一种处理器状态的切换方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117492848A true CN117492848A (zh) | 2024-02-02 |
Family
ID=89680930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311459836.3A Pending CN117492848A (zh) | 2023-11-03 | 2023-11-03 | 一种处理器状态的切换方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117492848A (zh) |
-
2023
- 2023-11-03 CN CN202311459836.3A patent/CN117492848A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7430673B2 (en) | Power management system for computing platform | |
US8775838B2 (en) | Limiting the number of unexpected wakeups in a computer system implementing a power-saving preemptive wakeup method from historical data | |
KR101529018B1 (ko) | 멀티코어 컴퓨팅 디바이스들에 대한 다이나믹 슬립 | |
US6711691B1 (en) | Power management for computer systems | |
US8510580B2 (en) | Power management for a system on a chip (SoC) | |
JP6060445B2 (ja) | レイテンシガイダンスに基づくプラットフォームのパワーマネジメント | |
US7577856B2 (en) | Unified device power management engine | |
US20130311808A1 (en) | Platform and processor power management | |
US9760150B2 (en) | Low-power states for a computer system with integrated baseband | |
US20100058078A1 (en) | Protocol for Power State Determination and Demotion | |
US8402291B2 (en) | Method, device, and system for guaranteed minimum processor power state dwell time | |
US9128703B1 (en) | Processor that transitions to an idle mode when no task is scheduled to execute and further enters a quiescent doze mode or a wait mode depending on the value of a reference counter | |
WO2009151588A1 (en) | Sleep processor | |
US9329658B2 (en) | Block-level sleep logic | |
WO2013003255A2 (en) | Processor core with higher performance burst operation with lower power dissipation sustained workload mode | |
JP6382353B2 (ja) | メモリへの常時オン経路をサポートするための超低電力アーキテクチャ | |
US9292072B2 (en) | Power management method for an electronic system | |
US9612652B2 (en) | Controlling power consumption by power management link | |
US9075609B2 (en) | Power controller, processor and method of power management | |
US7308586B2 (en) | Interlocked plug and play with power management for operating systems | |
US9448617B2 (en) | Systems and methods for messaging-based fine granularity system-on-a-chip power gating | |
CN117492848A (zh) | 一种处理器状态的切换方法、装置、设备及介质 | |
WO2022062646A1 (zh) | 处理器簇的节电方法及装置、芯片、设备、存储介质 | |
CN115599447A (zh) | 节能方法、节能设备、电子设备及计算机存储介质 | |
US20060080561A1 (en) | Information handling system having reduced power consumption |
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 |