睡眠状态检测 背景技术 [0001] 计算设备可以支持多个睡眠状态。多个睡眠状态可被计算设备用来管理计算设备的功耗。 附图说明 [0002] 图1示出了与本公开一致的用于睡眠状态检测的设备的示例。 [0003] 图2示出了与本公开一致的睡眠状态检测的流程图的示例。 [0004] 图3示出了与本公开一致的用于睡眠状态检测的非暂时性计算机可读介质和处理资源的示例的图。 [0005] 图4示出了与本公开一致的用于睡眠状态检测的非暂时性计算机可读介质和处理资源的示例的图。 具体实施方式 [0006] 高级配置和功率接口(ACPI)提供了计算设备可以用于执行功率管理的开放标准。 ACPI定义了计算设备可用于管理功耗的多个睡眠状态。 [0007] 在一些示例中,六个不同的睡眠状态(“Sx”)可以由计算设备支持和/或利用。S0睡眠状态可以包括用于计算设备的操作的工作模式和/或现代(非S1-S3)待机模式。例如,S0睡眠状态可以包括如下操作的模式,在该操作的模式中,计算设备是完全可操作的并且正被利用的计算设备的部件可以被供电至全功率阈值。然而,当在S0睡眠状态中操作时未被利用的一些部件可以通过进入较低功耗模式来节省电力。例如,当在S0状态中操作时在某时间段没有发生对设备的输入时,计算设备的显示器可以被断电。然而,后台任务可以继续运行。然而,在S0模式中,计算设备在S0状态中操作时可以是完全可操作的。例如,诸如中央处理单元(CPU)之类的处理资源可以执行指令。 [0008] S1睡眠状态可以包括由此计算设备表现为关闭的操作的模式。当在S1睡眠状态中操作时,CPU可以停止执行指令,可以刷新随机存取存储器(RAM),并且计算设备可以在消耗比在S0状态中少的功率(例如,五到三十瓦特的功耗)的低功率模式中操作。可以维持对CPU以及对RAM的电力供应。CPU时钟可以关闭并且总线时钟可以停止。从S1恢复到S0可能花费少于两秒。当在S1睡眠状态中操作时,计算设备的一些部件,诸如键盘、局域网(LAN)和或USB部件可以保持供电,使得计算设备可以迅速地恢复到S1。另外,对计算设备上的软件应用的控制可以重新启动,其中当从S1睡眠状态恢复到S0睡眠状态时控制停止(left off),并且在S1睡眠状态中的操作期间,所有设备硬件上下文可以由硬件保留和维持。 [0009] S2睡眠状态可以包括由此CPU关闭、RAM被刷新以及计算设备运行在比S1低的功率模式中和比S3高的功率模式中的操作的模式。当在S2睡眠状态中操作时,计算设备的脏高速缓存(dirty cache)可以被冲刷(flush)到RAM,并且当处理器失去电力时,系统高速缓存的内容可能丢失。当在S2睡眠状态中操作时,计算设备的总线时钟可能停止并且一些总线甚至可能失去电力。在从S2恢复之后,软件控制可以从CPU的重置向量(reset vector)开始。从S2恢复到S0花费两秒或更多秒和/或可以大于或等于S1的硬件等待时间。在S2睡眠状态中的操作期间,CPU上下文和系统高速缓存内容可能丢失。 [0010] S3睡眠状态可以包括其中CPU关闭并且RAM处于慢刷新的操作的模式。在S3状态中操作的设备的功耗可以低于其在S2睡眠状态中操作时,但是高于其在S4睡眠状态中操作时。除了CPU关闭之外,计算设备的主板上的微芯片中的一些可能也关闭。从S3恢复可以包括从CPU的重置向量开始的软件控制。设备存储器可以是在S3中时CPU上下文、高速缓存内容和芯片组上下文可能丢失时保留的存储器。 [0011] S4睡眠状态可以包括特征为休眠(hibernation)的操作的模式。当在S4睡眠状态中操作时,计算设备的硬件可以关闭并且在计算设备进入S4操作模式之前,系统上下文可以作为临时休眠文件(例如,设备存储器的映像)被保存在持久性存储器中。在恢复时,加载器(loader)可以读取休眠文件并且跳转到计算设备之前的预休眠上下文。当在睡眠状态S1-S3中操作时,如果计算设备失去所有AC或电池电力,则计算设备的硬件上下文可能丢失并且计算设备可以重新引导以返回到S0睡眠状态。在S4睡眠状态中操作的计算设备甚至在其失去其电池或AC电力之后也可以从其之前的位置重新启动,因为操作系统上下文保留在休眠文件中。计算设备的功耗可以在五瓦特之下,并且在一些示例中,计算设备除了涓流电流(trickle current)之外可以不使用功率。 [0012] S5睡眠状态可以包括特征为关闭的操作的模式。在S5睡眠状态中操作可以包括CPU和硬件部件被断电。在S5睡眠状态中操作可以包括电源单元仍向计算设备的电源按钮供电以允许计算设备在电源按钮被致动时返回到S0睡眠状态。然而,从S5睡眠状态中的操作恢复可以包括完全重新引导并且可以不保留之前的内容。 [0013] 计算设备可以是网络攻击的目标。网络攻击可以包括恶意尝试以通过利用易受影响的计算设备和/或存储在计算设备上的可执行指令的易受影响的部分来偷窃、修改、监视和/或破坏目标计算设备。在一些示例中,网络攻击可以包括可由处理资源执行以实现恶意目标的指令。例如,网络攻击可以包括计算机病毒、蠕虫、特洛伊木马、勒索软件(ransomware)、间谍软件、广告软件、恐吓软件(scareware)和/或其他恶意指令以修改计算设备的操作。 [0014] 计算设备的操作的模式和/或从计算设备的操作的模式的恢复可能干扰运转以禁止和/或阻碍计算设备上的网络攻击的网络安全措施。例如,网络安全措施可以利用认证协议来认证计算设备的部件和/或计算设备的部件之间的通信。然而,认证协议可以依赖于计算设备的操作系统(O/S)和/或计算设备的基本输入输出系统(BIOS)来确定何时应基于O/S来实现这种认证以及BIOS跟踪重新启动。然而,O/S和BIOS由诸如计算设备的处理芯片组(例如,CPU)之类的处理资源来执行,并且因此暴露于诸如网络攻击的恶意可执行指令之类的可执行指令之下。这样,CPU、O/S和BIOS本身易受规避(circumvent)认证协议的方式的操纵的影响。 [0015] 相对地,本公开的示例包括用于睡眠检测的计算设备。计算设备可以包括处理器和控制器。控制器可以包括控制器以检测在控制器处从处理器接收的重置信号的状态的改变,响应于检测到重置信号的状态的改变来确定计算设备的最近睡眠状态,并且基于所确定的最近睡眠状态来确定是否修改计算设备的安全性特征。 [0016] 图1示出了与本公开一致的用于睡眠状态检测的设备100的示例。设备100可以包括计算设备。设备100可以包括移动计算设备,诸如膝上型计算设备、平板计算设备、智能电话、移动智能设备等。设备100可以包括台式计算设备。 [0017] 设备100可以包括处理器102。处理器102可以包括CPU、基于半导体的微处理器和/或适于检索和执行存储在非暂时性计算机可读介质中的指令的其他硬件设备。处理器102可以取、解码和/或执行指令。作为检索和执行指令的替代或除了检索和执行指令之外,处理器102可以包括电子电路,该电子电路包括用于执行指令的功能性的电子部件。处理器 102可以连接到总线。处理器102可以利用总线来取指令和/或可以传输信号。 [0018] 处理器102可以利用信号来跨共享总线传送计算设备100的硬件状态和/或操作模式的改变。处理器可以调整信号的状态,以便传送具体的硬件状态和/或操作模式。例如,处理器102可以将跨总线传送的信号设置为低状态,以传送该信号是活跃的。处理器102可以将相同信号设置为低状态,以传送该信号是不活跃的或未被断言(assert)的。例如,在信号被用于传送计算设备正在具体操作状态中操作或转变到在具体操作状态中操作的情况下,将信号设置为低可以指示计算设备正在该具体操作状态中操作,并且将信号设置为高可以指示设备不在该具体操作状态中操作。 [0019] 处理器102可以基于来自诸如O/S 106、BIOS 108、控制器104、电源按钮等之类的设备100的其他部件的指令将信号设置为高或低。在检测到信号被设置为高或被设置为低或在被设置为高和被设置为低之间改变时,计算设备100的部件可以与通过硬件信号的状态用信号通知的状态改变相符地来执行过程或使得过程被执行。 [0020] 例如,处理器102可以将睡眠信号(SLP_Sx#)设置为高,以便向总线上的其他部件用信号通知计算设备100正进入相应的睡眠状态和/或在相应的睡眠状态中操作。例如,处理器102可以将与S3睡眠状态相关联的信号(例如,SLP_S3信号)从高状态设置为低状态,以向总线上的其他部件用信号通知计算设备100正从S0睡眠状态进入S3睡眠状态和/或在S3睡眠状态中操作。处理器可以将SLP_S3信号设置回高状态,以便向总线上的其他部件用信号通知计算设备100正从S3睡眠状态恢复到S0睡眠状态。 [0021] 处理器102可以将与S4睡眠状态和/或S5睡眠状态相关联的信号(例如,SLP_S4信号)从高状态设置为低状态,以便向总线上的其他部件用信号通知计算设备100正从S0睡眠状态进入S4或S5睡眠状态和/或在S4或S5睡眠状态中操作。处理器102可以将SLP_S4信号从低状态设置回高状态以向总线上的其他部件用信号通知计算设备100正从S4或S5睡眠状态恢复到S0睡眠状态。 [0022] 处理器102可以将与处理器102的重置相关联的信号(例如,低管脚计数重置信号(LPCRT#)、平台重置信号(PLTRST#)等)从高状态设置为低状态,以便向总线上的其他部件用信号通知CPU正在进入重置。处理器102可以将诸如LPCRT#或PLTRST#之类的重置信号从低设置回高,以向总线上的其他部件用信号通知计算设备100正从处理器102重置恢复到S0睡眠状态。然而,将诸如LPCRT#或PLTRST#之类的重置信号从低设置为高或从高设置为低可能不单独(not alone)传送计算设备所处的、在重置信号被断言之前曾处的睡眠状态,和/或重置信号的触发。代之以,重置信号可以是处理器102正在被重置和/或已经被重置的关注的(focused)通信。 [0023] 计算设备100可以包括控制器104。控制器104可以是与处理器102分离的、嵌入在计算设备100的架构中的微控制器。例如,控制器104可以是管理计算设备100的电力定序(sequence)的嵌入式控制器(EC)。替代地,控制器104可以包括管理计算设备100的电力定序的输入/输出控制器集成电路的超级输入/输出(SIO)类。 [0024] 控制器104可以包括可由控制器104的处理资源执行的指令。控制器104可以与处理器102分离地且独立地运行。控制器104可以管理冷却扇速度,可以监视热状况并调节扇速度,可以管理计算设备100的电池的充电,可以控制计算设备100的发光二极管(LED),和/或可以处理在计算设备100的处理器102和主板之间的总线上的其他部件的管理和操作。 [0025] 控制器104可以在与处理器102相同的总线上。控制器104可以接收由处理器102断言的硬件信号。控制器104可能能够检测信号,所述信号诸如是在控制器104处接收的睡眠信号,诸如SLP_S3#和/或SLP_S4#。例如,控制器104可能能够检测睡眠信号的状态或状态改变,诸如睡眠信号被设置为高还是设置为低还是已经从设置为高切换到设置为低还是从设置为低切换到设置为高。控制器104可能还能够检测在控制器104处接收的诸如LPCRT#或PLTRST#之类的重置信号。例如,控制器104可能能够检测重置信号的状态或状态改变,诸如重置信号被设置为高还是设置为低还是已经从设置为高切换到设置为低还是从设置为低切换到设置为高。 [0026] 计算设备100可以包括安全性特征。安全性特征可以包括认证协议。认证协议可以包括在计算设备100的BIOS 108、计算设备100的操作系统106和控制器104之间的共享秘密的使用。例如,认证协议可以包括利用计算设备100的BIOS 108、计算设备100的操作系统 106和控制器104之间共享的密码随机数(nonce),并且该密码随机数被用于核实计算设备 100的BIOS 108、计算设备100的操作系统106和/或计算设备100的控制器104之间的通信。 例如,控制器104可以核实操作系统106和/或BIOS 108尚未被网络攻击修改和/或替换。例如,只要BIOS 108、操作系统106和控制器104共享相同的密码随机数,它们就可以利用公共的加密方案和匹配的加密密钥。在一些示例中,只要在通信中证明了共享秘密的利用,就可以从相应源将计算设备100的BIOS 108、计算设备100的操作系统106和/或控制器104之间的通信核实为真实的。 [0027] 安全性特征可以包括在认证协议中将控制器104用作可信任的锚(anchor)。由于控制器104未暴露于以操作系统106、BIOS 108和/或可由处理器102执行的其他指令为目标的网络攻击,所以控制器104可被用作认证协议的管理器。管理认证协议可以包括分发共享秘密。 [0028] 为了避免网络攻击发现和/或利用BIOS 108、操作系统106和控制器104之间的静态共享秘密,控制器104可以基于触发事件来刷新和/或替换共享秘密。例如,当计算设备 100的处理器102被重置时,然后密码随机数可以由控制器104刷新或替换,并且新的密码随机数可以在从重置出现时从控制器104分发到BIOS 108和/或操作系统106。 [0029] 然而,在计算设备100的处理器102的重置是计算设备100从S3睡眠状态恢复操作的结果的示例中,替换密码随机数可能引起认证协议中的失败。例如,当计算设备100开始从S3睡眠状态恢复到S0睡眠状态时,计算设备100可以开始利用所存储的和/或持久的数据,该数据允许计算设备100从其停止处恢复操作。如果当计算设备100从S3状态恢复时,密码随机数被擦除和/或替换,则计算设备100可能不能够利用这样的数据并且计算设备100可能无法恢复在进入S3睡眠状态操作之前其停止处的操作。控制器104可以利用下面描述的睡眠状态跟踪来避免这样的失败。 [0030] 在其他示例中,安全性特征可以包括计算设备100的心跳或看门狗定时器。例如,控制器104可以利用监视各种基准(benchmark)计算事件(例如,应用启动、应用关闭、指令被执行等)的发生和/或执行的定时器来确定操作系统106和/或BIOS 108的一部分是否已经被攻击和/或修改。例如,如果基准计算事件在具体时间内没有发生,则操作系统106和/或BIOS 108可以被认为已经被修改并且可能导致关机(shutdown)。控制器104可以响应于计算设备100的处理器102的重置而重置定时器。结果,可以预期计算设备100命中(hit)与从S0睡眠状态、S4睡眠状态和/或S5睡眠状态重新启动相关联的基准,尽管这些基准没有存在于从S3睡眠状态的恢复中。 [0031] 因此,如同密码随机数示例一样,在计算设备100的处理器102的重置是计算设备 100从在S3睡眠模式中操作恢复的结果的示例中,重置定时器可能引起认证协议中的失败。 例如,当从S3睡眠状态恢复时,计算设备100可以用其之前的计算事件来恢复,而不遵循诸如在从S0睡眠状态、S4睡眠状态或S5睡眠状态的重新启动中不恢复时发生的预期计算基准的定时序列。控制器104可以利用下面描述的睡眠状态跟踪来避免这样的失败。 [0032] 控制器104可以跟踪计算设备100正在其中操作的睡眠状态。控制器104可以基于在控制器104处接收的睡眠状态信号的检测到的状态来跟踪睡眠状态。在示例中,控制器 104可以包括可执行以作为状态机操作的指令,该状态机记录(log)最近检测到的睡眠状态和/或睡眠状态信号的状态。 [0033] 控制器104可以通过跟踪与具体睡眠状态相关联的特定类型的睡眠信号是否已经被设置为高、设置为低、或者从设置为高切换到设置为低、或者从设置为低切换到设置为高来跟踪计算设备100的最近睡眠状态。例如,控制器104可以检测到SLP_S3#信号曾被设置为高以及SLP_S4#也曾被设置为高。这样,控制器104可以记录那些信号状态和/或计算设备 100的最近睡眠状态曾是S0工作模式睡眠状态。 [0034] 在另一个示例中,控制器104可以检测到SLP_S3#信号被设置为低和/或曾从设置为高切换到设置为低,而SLP_S4#信号保持设置为高。这样,控制器104可以记录那些信号状态和/或计算设备100的最近睡眠状态曾是S3待机睡眠状态。 [0035] 在另一个示例中,控制器104可以检测到SLP_S4#信号被设置为低和/或曾从设置为高切换到设置为低。SLP_S4#信号可以设置为低,而SLP_S3#信号设置为低,但是由于当计算设备100转变到S4睡眠状态时,SLP_S4#信号由处理器102断言,所以控制器104可以记录那些信号状态和/或计算设备100的最近睡眠状态曾是S4或S5休眠睡眠状态。 [0036] 通过跟踪计算设备100的最近睡眠状态,控制器104可以总是意识到和/或具有可访问的计算设备100的最近睡眠状态的记录,而不利用BIOS 108和/或操作系统106的指令,不利用处理器102,和/或不利用易受通过网络攻击的修改的存储器资源中存储的数据。也就是说,计算系统100的最近信号状态和/或最近睡眠状态可以存储在控制器104处。 [0037] 控制器104可以检测在控制器104处从处理器102接收的重置信号的状态的改变。 例如,控制器104可以检测用信号通知处理器102正在被重置的LPCRT#信号和/或PLTRST#信号的状态的改变。控制器104可以检测到重置信号从设置为高被设置为低或者从设置为低被设置为高。检测到重置信号的状态的改变可以向控制器104指示处理器102已经被重置并且安全性特征可以被修改为要与操作系统106和/或BIOS 108共享的更新的安全性特征。 [0038] 控制器104可以响应于检测到重置信号的状态的改变而确定计算设备100的最近睡眠状态。计算设备100的最近睡眠状态可以包括紧接在重置信号曾从设置为高改变到设置为低或从设置为低改变回到设置为高之前计算设备100曾进入和/或在其中操作的睡眠状态。计算设备100的最近睡眠状态可以包括导致处理器102的重置的睡眠状态。计算设备 100的最近睡眠状态可以包括紧接在重置之后计算设备100重新进入S0睡眠状态之前计算设备100曾在其中操作的睡眠状态。可以通过引用(reference)存储在控制器104处的最近睡眠状态和/或存储在控制器104处的睡眠信号的最近状态来确定最近睡眠状态。 [0039] 控制器104可以基于所确定的最近睡眠状态来确定是否修改计算设备100的安全性特征。例如,控制器104可以基于跟踪SLP_S3#睡眠信号从设置为高被设置为低而SLP_S4#信号保持设置为高来确定计算设备100的最近睡眠状态是S3睡眠状态。响应于确定最近睡眠状态是S3睡眠状态,控制器104可以确定安全性特征将不被修改。例如,控制器104可以响应于确定最近睡眠状态是S3睡眠状态来继续利用之前建立的密码随机数而完成BIOS 108、操作系统106和/或控制器104之间的通信的核实。 [0040] 如上所述,删除和/或修改之前建立的密码随机数可能引起认证协议中的失败,因为BIOS 108和/或操作系统106可以在它们从S3睡眠状态它们停止的地方恢复时继续利用未修改的之前建立的密码随机数。这样,标识计算设备100最近曾在S3待机睡眠状态中操作可以通过确保控制器104继续利用未修改的之前建立的密码随机数来防止这样的失败。控制器104可以做出这样的确定并且继续利用未修改的之前建立的密码随机数而不引用操作系统106的一部分、BIOS 108的一部分、处理器102和/或存储在暴露于网络攻击的存储器资源上的数据。代之以,控制器104可以基于存储在控制器104处的数据(例如,诸如状态)来做出这样的确定。 [0041] 在另一示例中,控制器104可以基于跟踪SLP_S4#睡眠信号从设置为高被设置为低来确定最近睡眠状态是S4睡眠状态或S5睡眠状态。响应于确定最近睡眠状态曾是S4睡眠状态或S5睡眠状态,控制器104可以确定安全性特征将被修改。例如,控制器104可以响应于确定最近睡眠状态是S4睡眠状态或S5睡眠状态来修改之前建立的密码随机数,并且将修改的密码随机数分发到计算设备100的BIOS 108和/或操作系统106。控制器104可以利用修改的密码随机数来完成BIOS 108、操作系统106和/或控制器104之间的后续通信的核实。BIOS 108和/或操作系统106可以开始在加密通信中利用修改的密码随机数。 [0042] 控制器104可以做出修改和/或分发修改的密码随机数的确定,而不引用操作系统 106的一部分、BIOS 108的一部分、处理器102和/或存储在暴露于网络攻击的存储器资源上的数据。代之以,控制器104可以基于存储在控制器104处的数据(例如,诸如状态)来做出这样的确定。 [0043] 图2示出了与本公开一致的计算设备中的用于睡眠状态检测的控制器操作的流程图。在220处,控制器可以跟踪计算设备的最近睡眠状态。控制器可以通过每次控制器检测到对应于相应睡眠状态的特定类型的硬件睡眠信号的状态的改变就更新最近睡眠状态来跟踪最近睡眠状态。可以在控制器处存储并从控制器引用最近睡眠状态。 [0044] 在222处,控制器可以检测硬件重置信号的改变。例如,控制器可以检测到处理器已经将硬件重置信号从低状态设置为高状态。 [0045] 在224处,控制器可以检测计算设备的最近睡眠状态是否是S3睡眠状态。如果最近睡眠状态是S3睡眠状态,则控制器可以继续进行到226。 [0046] 在226处,控制器可以确定不修改安全性特征。如果最近睡眠状态不是S3睡眠状态,则控制器可以继续进行到228。 [0047] 在228处,控制器可以检测最近睡眠状态是S4睡眠状态还是S5睡眠状态。如果最近睡眠状态是S4睡眠状态或S5睡眠状态,则控制器可以继续进行到230。 [0048] 在230处,控制器可以确定修改安全性特征。相反,如果最近睡眠状态不是S4睡眠状态或S5睡眠状态,则控制器可以继续进行到232。 [0049] 在232处,控制器可以检测最近睡眠状态是否是S0睡眠状态。如果最近睡眠状态是S0睡眠状态,则控制器可以继续进行到230。 [0050] 在230处,控制器可以确定修改安全性特征。无论安全性特征是被修改(例如,在 230处)还是不被修改(例如,226),控制器都可以继续进行到234。 [0051] 在234处,控制器可以将最近睡眠状态的存储的指示改变到S0睡眠状态的指示作为最近睡眠状态。控制器可以继续回到220以跟踪最近睡眠状态。 [0052] 图3示出了与本公开一致的用于睡眠状态检测的非暂时性计算机可读介质352和处理资源354的示例的图350。在一些示例中,处理资源354可以包括与计算设备的中央处理资源分离的控制器(例如,图1中的控制器104)的处理资源。非暂时性计算机可读介质352可以用于存储由处理资源354执行的指令(例如,356、358、360、362、364等)以执行如本文中描述的操作。处理资源354可以执行存储在非暂时性计算机可读介质352上的指令。非暂时性计算机可读介质352可以是任何类型的易失性或非易失性存储器或存储装置,诸如随机存取存储器(RAM)、闪存、只读存储器(ROM)、存储卷(volume)、硬盘或其组合。在一些示例中,非暂时性计算机可读介质352可以包括控制器(例如,图1中的控制器104)的存储器资源,该存储器资源与计算设备的CPU所利用的计算设备的存储器资源分离。 [0053] 非暂时性计算机可读介质352可以存储指令356,其可由处理资源354执行以存储计算设备的最近睡眠状态的指示。计算设备的最近睡眠状态可以存储在控制器处。例如,最近睡眠可以在控制器处被保存为多个状态之一。 [0054] 可以基于在控制器处从处理器接收的睡眠信号的状态来确定计算设备的最近睡眠状态。例如,控制器可以监视在控制器处检测到的多个睡眠硬件信号中的每一个的状态(例如,设置为高、设置为低等)。控制器可以通过检测在控制器处跨与计算设备的处理器共享的总线接收的多个硬件信号的状态和/或状态的改变来监视多个硬件信号的状态。 [0055] 例如,控制器可以检测并在控制器上存储SLP_S3#信号的状态的改变、SLP_S4#信号的状态的改变和/或SLP_S3#或SLP_S4#信号的信号状态的保持。在示例中,在系统重置硬件信号改变到低状态之后并且在系统重置硬件信号从低状态改变到高状态之前,控制器可以通过检测多个睡眠硬件信号中的每一个的状态从高状态到低状态的改变来监视多个睡眠硬件信号中的每一个的状态。 [0056] 在示例中,控制器可以检测并且存储计算设备最近在系统重置硬件信号改变之前曾在S3睡眠状态中操作或进入S3睡眠状态的指示。控制器可以在其检测到紧接在系统重置硬件信号改变之前SLP_S3#睡眠信号曾被设置为低而SLP_S4#睡眠信号保持设置为高时检测并存储这样的指示。 [0057] 在另一示例中,控制器可以检测并且存储计算设备最近在系统重置硬件信号改变之前曾在S4睡眠状态或S5睡眠状态中操作或进入S4睡眠状态或S5睡眠状态的指示。控制器可以在其检测到紧接在系统重置硬件信号改变之前SLP_S4#睡眠信号曾被设置为低时检测并存储此类指示。 [0058] 在又一示例中,控制器可以检测并存储计算设备最近在系统重置硬件信号改变之前曾在S0睡眠状态中操作或进入S0睡眠状态的指示。控制器可以在其检测到紧接在系统重置硬件信号改变之前SLP_S3#睡眠信号保持设置为高而SLP_S4#睡眠信号也保持设置为高时检测并存储此类指示。 [0059] 非暂时性计算机可读介质352可以存储可由处理资源354执行以在控制器处检测系统重置硬件信号的状态的改变的指令358。控制器可以通过监视在控制器处跨与计算设备的处理器共享的总线接收的系统硬件信号的状态和/或状态的改变来检测系统重置硬件信号的状态的改变。 [0060] 控制器可以检测系统重置硬件信号的状态从低状态到高状态的改变。系统硬件信号的状态从低状态到高状态的改变可以向控制器指示计算设备的处理器已经被重置并且计算设备将进入S0睡眠状态中的操作。 [0061] 检测到系统硬件信号的状态从低状态到高状态的改变可以触发控制器轮询计算设备的最近睡眠状态的指示。基于存储在控制器处的计算设备的最近睡眠状态的所存储的指示,控制器可以确定修改计算设备的现有安全性措施还是继续利用计算设备的现有安全性措施。 [0062] 例如,非暂时性计算机可读介质352可以存储可由处理资源354执行的指令360,以响应于根据最近睡眠状态的指示确定计算设备正在从s3睡眠状态恢复到S0睡眠状态而利用计算设备的现有安全性措施。例如,控制器可以继续利用之前被建立为控制器、BIOS和操作系统之间的共享秘密的密码随机数作为加密和/或验证其间的通信的手段。 [0063] 在BIOS和/或操作系统在重置之后变得完全可操作之前,在之前的重置期间,密码随机数可能之前已经在控制器、BIOS和操作系统之间建立。继续利用之前建立的密码随机数可以是对如下内容的确认:计算设备正在从待机睡眠状态恢复以及作为恢复的结果,BIOS和操作系统可以继续在从它们之前的状态恢复中利用之前建立的密码随机数。 [0064] 在另一示例中,非暂时性计算机可读介质352可以存储可由处理资源354执行的指令360,以响应于根据最近睡眠状态的指示确定计算设备正在从S4/S5睡眠状态恢复到S0睡眠状态而修改计算设备的现有安全性措施。S4/S5睡眠状态可以包括计算设备在S4休眠睡眠状态或S5关机睡眠状态中操作。出于由控制器做出确定的目的,S4睡眠状态和S5睡眠状态两者是相同的,因为它们两者都涉及处理器的完全关机和休眠文件之外的处理器上下文的丢失。这样,控制器可以利用SLP_S4#来确定计算设备是否处于S4/S5睡眠状态中,因为与S4睡眠状态相对的关于计算设备是否曾在S5睡眠状态中操作的更多特殊性(specificity)与从控制器的角度决定是否修改现有安全性措施不相关。 [0065] 修改现有安全性措施可以包括确定新的密码随机数并将其分发到操作系统和BIOS。在从S4睡眠状态或S5睡眠状态恢复的过程期间,新的密码随机数可以由控制器分发到操作系统和BIOS。新的密码随机数可以替换之前建立的密码随机数,并且可以在计算设备完成从S4或者S5睡眠状态到S0睡眠状态的恢复之后用于加密和验证操作系统、BIOS和/或控制器之间的通信。 [0066] 在又一示例中,非暂时性计算机可读介质352可以存储可由处理资源354执行的指令362,以响应于根据最近睡眠状态的指示确定计算设备正在从S0睡眠状态重新启动到S0睡眠状态而修改计算设备的现有安全性措施。如果最近睡眠状态曾是S0睡眠状态,则控制器可以确定计算设备的重新启动已经发生并且计算设备没有恢复到之前的上下文。这样,新的密码随机数可以替换之前建立的密码随机数,并且可以在计算设备在重新启动之后完成到S0状态的恢复之后用于加密和验证操作系统、BIOS和/或控制器之间的通信。 [0067] 图4示出了与本公开一致的用于睡眠状态检测的非暂时性计算机可读介质472和处理资源474的示例的图470。在一些示例中,处理资源474可以包括与计算设备的中央处理资源分离的控制器(例如,图1中的控制器104)的处理资源。非暂时性计算机可读介质472可以用于存储由处理资源474执行以执行如本文中描述的操作的指令(例如476、478、480、482等)。处理资源474可以执行存储在非暂时性计算机可读介质472上的指令。非暂时性计算机可读介质472可以是任何类型的易失性或非易失性存储器或存储装置,诸如随机存取存储器(RAM)、闪存、只读存储器(ROM)、存储卷、硬盘或其组合。在一些示例中,非暂时性计算机可读介质47可以包括与计算设备的CPU所利用的计算设备的存储器资源分离的控制器(例如,图1中的控制器104)的存储器资源。 [0068] 非暂时性计算机可读介质472可以存储可由处理资源474执行的指令476,以响应于检测到计算设备中的控制器处的硬件睡眠信号的状态改变而将控制器的第一状态修改为第二状态,指示特定睡眠状态。例如,控制器可以检测特定睡眠状态的指示并且存储作为存储在控制器处的多个状态中的状态的特定睡眠状态的指示。例如,控制器可以包括状态机,该状态机利用可以在之间交替的状态以指示计算设备的特定睡眠状态。 [0069] 控制器可以监视多个睡眠信号中的每一个被设置为在控制器处接收的哪个状态(例如,高、低等)。当睡眠信号将状态从诸如被设置为高之类的第一状态改变到诸如被设置为低之类的第二状态时,控制器可以标识计算设备在相应的睡眠状态中的操作。 [0070] 控制器可以响应于基于睡眠信号状态改变标识睡眠状态而修改存储在控制器处的状态。控制器的状态可以从标识计算设备在第一睡眠状态中的操作的第一状态被修改为标识计算设备在第二睡眠状态中的操作的第二状态。例如,控制器可以标识计算设备正在S0睡眠状态中操作。控制器可以检测指示计算设备正在S3睡眠状态中操作的与S3睡眠状态相关联的睡眠信号的状态的改变。控制器可以将指示计算设备在S0睡眠状态中操作的存储在控制器处的第一状态修改为指示计算设备正在S3睡眠状态中操作的第二状态。 [0071] 非暂时性计算机可读介质472可以存储可由处理资源474执行的指令478,以在控制器处检测来自计算设备的处理器的硬件重置信号到高状态的改变。控制器可以监视在控制器处跨总线接收的硬件重置信号的状态。控制器可以检测硬件重置信号从指示硬件重置信号正被断言的低状态到指示硬件重置信号不再被断言的高状态的改变。这种改变可以向控制器指示总线上的处理器的重置正在被发起和/或已经被完成。 [0072] 非暂时性计算机可读介质472可以存储可由处理资源474执行的指令480,以响应于检测到硬件重置信号到高状态的改变而引用存储在控制器处的第二状态。存储在控制器处的第二状态可以被引用以确定计算设备曾处于的最近睡眠状态。计算设备曾处于的最近睡眠状态可以包括计算设备紧接在硬件重置信号到高状态的检测到的改变之前曾在其中操作的睡眠状态。最近睡眠状态可以传送计算设备正在恢复和/或从其重新启动的睡眠状态,作为检测到的硬件重置信号的部分。 [0073] 非暂时性计算机可读介质472可以存储可由处理资源474执行的指令482,以在控制器处确定是否修改基于的现有安全性措施。是否修改现有安全性措施的确定可以基于硬件重置信号到高状态的检测到的改变之前计算设备曾处于的最近睡眠状态。 [0074] 确定是否修改现有安全性措施可以包括确定是否修改和/或发布修改后的密码随机数以用于计算设备的部件之间的通信的验证。例如,从最近睡眠状态恢复可以涉及从之前的向量恢复处理器、BIOS和/或操作系统的上下文。在这样的示例中,可以通过在控制器处利用与BIOS和/或操作系统所利用的安全性措施不同的安全性措施来瓦解(disrupt)控制器验证来自BIOS和/或操作系统的通信的能力。这样,可以利用之前建立的安全性措施来防止瓦解控制器验证来自BIOS和/或操作系统的通信的能力。 [0075] 在另一示例中,从最近睡眠状态恢复涉及在没有来自之前的向量的处理器、BIOS和/或操作系统的上下文的情况下重新启动计算设备。在这样的示例中,现有的安全性措施可以被修改并从控制器传送到BIOS和操作系统。 [0076] 响应于到高状态的硬件重置信号的状态的改变的改变,控制器可以再次改变指示最近睡眠状态的控制器的状态。例如,控制器可以将控制器的第二状态修改为第三状态。在示例中,将控制器的第二状态修改为第三状态包括将控制器的第二状态修改为指示计算设备正在S0功率状态中操作的控制器的第三状态。 [0077] 在本公开的前述详细描述中,参考了形成本公开的一部分的附图,并且在附图中通过图示的方式示出了可以如何实践本公开的示例。充分详细地描述了这些示例,以使本领域的技术人员能够实践本公开的示例,并且,应当理解,可以利用其他示例并且可以在不脱离本公开的范围的情况下做出过程、电和/或结构改变。