CN107430424B - 针对改进的混合睡眠功率管理的技术 - Google Patents
针对改进的混合睡眠功率管理的技术 Download PDFInfo
- Publication number
- CN107430424B CN107430424B CN201680012418.1A CN201680012418A CN107430424B CN 107430424 B CN107430424 B CN 107430424B CN 201680012418 A CN201680012418 A CN 201680012418A CN 107430424 B CN107430424 B CN 107430424B
- Authority
- CN
- China
- Prior art keywords
- computing device
- processor
- wake
- response
- mode
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 50
- 230000015654 memory Effects 0.000 claims abstract description 167
- 230000004044 response Effects 0.000 claims abstract description 86
- 230000004048 modification Effects 0.000 claims description 10
- 238000012986 modification Methods 0.000 claims description 10
- 230000009191 jumping Effects 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000007726 management method Methods 0.000 description 105
- 230000002093 peripheral effect Effects 0.000 description 12
- 238000013500 data storage Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Images
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/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- 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/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Power Sources (AREA)
- Stored Programmes (AREA)
Abstract
针对混合睡眠功率管理的技术包括具有支持低功率空闲状态的处理器的计算设备。在预启动固件环境中,计算设备预留存储器块以供固件使用并且将平台唤醒代码复制到诸如系统管理RAM(SMRAM)之类的安全存储器单元。在运行时,操作系统可以利用在受保护模式中的处理器执行。响应于请求进入睡眠或休眠状态,计算设备生成系统管理中断(SMI)。在SMI处理程序中,计算设备将唤醒代码从SMRAM复制到预留存储器单元。计算设备从SMI处理程序恢复至唤醒代码,其中处理器在实模式中。唤醒代码进入低功率空闲状态,并且在接收到唤醒事件之后接着跳转至操作系统的唤醒向量。描述并要求保护了其他实施例。
Description
与相关专利申请的交叉引用
本申请要求于2015年3月27日提交的、标题为“TECHNOLOGIES FOR IMPROVEDHYBRID SLEEP POWER MANAGEMENT”的序列号为14/670,939的美国实用新型专利申请的优先权。
背景技术
能效对于当前的计算设备而言是越来越重要的考虑。针对诸如膝上型计算机、平板计算机、和智能电话之类的便携式设备而言,能效直接地影响作为用户体验的重要部分的电池寿命。针对服务器设备,能效直接地影响成本、计算密度、以及热管理。许多计算设备和处理器支持由高级配置和电源接口(ACPI)规范所定义的功率降低的睡眠状态,其被称为“S3”状态。在ACPI S3睡眠状态中,易失性存储器可以保持通电以在计算设备的其他组件(例如,处理器)断电时保存内容。
当前的处理器还可以支持不同的性能与功耗水平的平衡。例如,处理器可以按比例调节性能和功耗以改进负载下的性能并且降低当空闲或轻负载时的功耗。当前的处理器和设备还可以支持低功率使用模型,其允许设备针对某些使用模型而获得极低的功耗。例如,当前的计算设备和/或处理器可以支持S0ix低功率空闲状态、低功率音频回放、或者其他低功率状态。使用S0ix和其他现代低功率使用状态可能需要操作系统或其他软件支持。额外地,许多当前的处理器不再支持ACPI S3睡眠状态。
计算设备通常包括负责硬件初始化、底层硬件管理、以及管理启动过程的固件。负责启动计算设备的主平台固件可以根据统一可扩展固件接口(“UEFI”)规范来实现,该规范具有由统一EFI论坛所发布的几个版本。UEFI规范指定计算设备的固件与计算设备的操作系统之间的接口。
附图说明
在附图中作为示例而非限制示出了在本文中所描述的概念。为了说明的简单和清楚,在图中所示出的元件不一定是按比例绘制的。在适当地考虑的情况下,可以在附图间重复附图标记以指示对应的或类似的元素。
图1是针对混合睡眠功率管理的计算设备的至少一个实施例的简化框图;
图2是图1的计算设备的环境的至少一个实施例的简化框图;
图3是针对可以由图1和图2的计算设备执行的平台启动的方法的至少一个实施例的简化框图;
图4是针对可以由图1和图2的计算设备执行的功率管理睡眠调用的方法的至少一个实施例的简化框图;
图5是针对可以由图1和图2的计算设备执行的系统管理中断处理的方法的至少一个实施例的简化框图;并且
图6是针对可以由图1和图2的计算设备执行的低功率空闲和唤醒的方法的至少一个实施例的简化框图。
具体实施方式
尽管本公开的概念容易受到各种修改和可替代的形式的影响,但其具体的实施例已经作为示例在附图中被示出并且将在本文中详细地描述。然而,应当理解的是,没有打算将本公开的概念限制至所公开的特定的形式,而相反,目的是覆盖与本公开和所附权利要求相一致的所有修改、等同物、和替代物。
在说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用指示所描述的实施例可以包括特定的特征、结构、或特性,但每个实施例可以或可以不一定包括该特定的特征、结构、或特性。此外,这样的短语不一定指的是同一实施例。此外,当结合实施例来描述特定的特征、结构、或特性时,所主张的是结合其他实施例(无论其是否进行了明确地描述)实现这样的特征、结构、或特性也在本领域技术人员的知识范围内。额外地,应当理解的是,以“至少一个A、B和C”的形式包括在列表中的项目可以意味着(A);(B);(C);(A和B);(A和C);(B和C);或者(A、B和C)。类似地,以“A、B或C中的至少一个”的形式列出的项目可以意味着(A);(B);(C);(A和B);(A和C);(B和C);或者(A、B和C)。
在一些情况下,可以以硬件、固件、软件或其任何组合来实现所公开的实施例。还可以将所公开的实施例实现为由一个或多个瞬时性或者非瞬时性机器可读(例如,计算机可读)存储介质所实行或存储在其上的指令,所述指令可以由一个或多个处理器来读取或执行。机器可读存储介质可以被实施为用于以能够由机器读取的形式存储或发送信息的任何存储设备、机制、或其他物理结构(例如,易失性或非易失性存储器、媒体盘、或其他介质设备)。
在附图中,可以以具体的布置和/或顺序来示出一些结构或方法特征。然而,应当理解的是,这样的具体的布置和/或顺序不是必需的。相反,在一些实施例中,可以以与在说明性附图中所示出的不同的方式和/或顺序来布置这样的特征。额外地,将结构或方法特征包含在特定的附图中不意味着暗示在所有实施例中都需要这样的特征,而在一些实施例中,这样的特征可以不被包括,或者可以与其他特征进行组合。
现在参考图1,针对混合睡眠功率管理的说明性计算设备100包括处理器120、I/O子系统122、存储器124、数据存储设备128、以及通信电路130。如在下文中所描述的,在使用中,计算设备100执行预启动固件环境,在该环境中,存储器块被预留并且平台唤醒代码被复制到系统管理RAM(SMRAM)中。预留存储器块和SMRAM不能够由计算设备100的操作系统或运行时应用访问。在运行时,计算设备100生成进入诸如ACPI S3睡眠状态之类的功率管理睡眠状态的请求。计算设备100捕获进入睡眠状态的请求并且生成系统管理中断(SMI)。响应于所述SMI,处理器120保存当前的处理器状态的副本并且接着调用SMI处理程序。SMI处理程序将唤醒代码从SMRAM复制到固件预留的存储器块中。SMI处理程序修改经保存的处理器状态以恢复在实模式中执行,从存储在预留存储器块中的唤醒代码开始。所述唤醒代码使得计算设备100进入诸如S0ix之类的低功率空闲状态。在退出低功率空闲状态之后,唤醒代码跳转至操作系统的唤醒向量。因此,计算设备100可以允许被设计为使用ACPI S3的操作系统使用低功率空闲状态并且获得相关联的效率改进。额外地,计算设备100可以通过避免对响应于每个睡眠请求而从非易失性存储重载和重新认证启动固件的需求来在保持安全性的同时改进睡眠性能。此外,计算设备100可以通过保持处理器120上下文完整来避免对重置处理器120的需求并且降低恢复所需要的存储器的量。
计算设备100可以被实施为能够进行混合睡眠功率管理以及以其他方式执行在本文中所描述的功能的任何类型的设备。计算设备100可以被实施为例如但不限于:膝上型计算机、笔记本计算机、平板计算机、智能电话、可穿戴计算设备、计算机、工作站、服务器、多处理器系统、消费性电子设备、智能家电、和/或能够进行混合睡眠功率管理的任何其他计算设备。如在图1中所示,说明性计算设备100包括处理器120、I/O子系统122、存储器124、以及数据存储器设备128。当然,在其他实施例中,计算设备100可以包括其他或额外的组件,例如通常在一般计算设备中发现的那些组件(例如,各种输入/输出设备)。额外地,在一些实施例中,可以将说明性组件中的一个或多个组件并入另一个组件或者以其他方式形成另一个组件的一部分。例如在一些实施例中,可以将存储器124或其部分并入处理器120中。
处理器120可以被实施为能够执行在本文中所描述的功能的任何类型的处理器。例如,所述处理器可以被实施为单核或多核处理器、数字信号处理器、微控制器、或者其他处理器或处理/控制电路。类似地,存储器124可以被实施为能够执行在本文中所描述的功能的任何类型的易失性或非易失性存储器或数据存储。在操作中,存储器124可以存储在移动计算设备100的操作期间所使用的各种数据和软件,例如,操作系统、应用、程序、库、和驱动程序。存储器124包括系统管理随机存取存储器(SMRAM)126,其可以被实施为仅仅能够由处理器120在系统管理模式(SMM)中访问的存储器124的区域,其中,处理器120响应于系统管理中断(SMI)而进入SMM。SMRAM 126可以包括用于SMI处理的可执行代码和数据。I/O子系统可以规定对SMRAM 126的访问,以当没有在SMM中执行时阻止代码访问或修改SMRAM 126。因此,SMRAM 126的内容可以对由计算设备100执行的操作系统、应用、和其他运行时代码是不可访问的。
存储器124经由I/O子系统122通信地耦合至处理器120,其中I/O子系统122可以被实施为促进与处理器120、存储器124、以及移动计算设备100的其他组件的输入/输出操作的电路和/或组件。例如,I/O子系统122可以被实施为或者以其他方式包括:存储器控制器集线器、输入/输出控制集线器、固件设备、通信链路(即,点对点链路、总线链路、导线、电缆、光导、印刷电路板迹线等)、和/或促进输入/输出操作的其他组件和子系统。在一些实施例中,I/O子系统122可以形成片上系统(SoC)的一部分,并且连同处理器120、存储器124、以及移动计算设备100的其他组件一起被包含在单个集成电路芯片上。
数据存储设备128可被实施为针对数据的短期或长期存储而配置的任何类型的设备或多个设备,例如,存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器、或其他数据存储设备。数据存储设备128可以存储由计算设备100执行的一个或多个操作系统和/或固件环境。例如,数据存储设备128可以存储由UEFI规范所定义的固件卷。
计算设备100还可以包括通信电路130,其可以被实施为能够使能计算设备100与其他远程设备通过计算机网络(未示出)进行通信的任何通信电路、设备、或其集合。通信电路130可以被配置为使用任何一个或多个通信技术(例如,有线或无线通信)和相关联的协议(例如,以太网、 WiMAX、3G、4G LTE等)来实现这样的通信。
计算设备100还可以包括一个或多个外围设备132。外围设备132可以包括任何数量的额外的输入/输出设备、接口设备、和/或其他外围设备。例如,在一些实施例中,外围设备132可以包括触摸屏、图形电路、音频设备、麦克风、相机、环境传感器、键盘、鼠标、和/或其他输入/输出设备、接口设备、和/或外围设备。
现在参考图2,在说明性实施例中,计算设备100建立了操作期间的环境200。说明性实施例200包括操作系统202、固件环境208、系统管理模块214、以及唤醒代码模块218。操作系统202还包括睡眠模块204,而固件环境208还包括安全模块210。环境200的各种模块可以被实施为硬件、固件、软件、或其组合。例如,环境200的各种模块、逻辑、和其他组件可以形成计算设备100的处理器或其他硬件组件的一部分或者以其他方式由它们建立。由此,在一些实施例中,环境200的模块中的任何一个或多个模块可以被实施为电路或者电力设备的集合(例如,睡眠电路、安全电路、系统管理电路等)。
操作系统202可以被实施为任何操作系统、客户操作系统、管理程序、虚拟机监视器、或者计算设备100的其他控制结构。如在下文中进一步描述的,计算系统202在固件环境208终止启动服务之后对计算设备100进行控制。操作系统202执行功率管理功能,包括如由ACPI规范所描述的那样管理系统状态。由操作系统202所建立的睡眠模块204被配置为例如通过将预先确定的值写至功率管理控制寄存器(register)来生成进入诸如ACPI S3睡眠模式之类的睡眠功率管理模式的请求。睡眠模块204被配置为生成进入处理器120在受保护的模式中的ACPI S3睡眠状态的请求。操作系统202还包括唤醒向量206。唤醒向量206可以被实施为存储器地址、函数、子例程、或者当计算设备100退出ACPI S3睡眠状态时可以被执行的其他进入点。唤醒向量206可以在处理器120在实模式中的情况下被执行。
固件环境208可以被实施为在将对计算设备100的控制传递给操作系统202之前初始化和配置计算设备100的组件的任何预启动固件环境。例如,固件环境208可以被实施为UEFI兼容的固件环境。如在上文中所描述的,固件环境208建立安全模块210。
安全模块210被配置为预留出预留存储器块212以供固件环境208使用。在被预留之后,操作系统202不允许驱动程序和/或应用访问预留存储器块212。预留存储器块212可以由操作系统202的底层组件(例如,硬件抽象层)访问;然而,操作系统202不在预留存储器块212中存储任何信息,其中,预留存储器块212在睡眠状态转换期间不能够被覆写。安全模块210还被配置为将预留存储器块212的存储器地址存储在诸如SMRAM126之类的安全存储器单元中。安全模块210还被配置为将在下文中进一步描述的平台唤醒代码220复制到安全存储器单元中。在一些实施例中,安全模块210被配置为认证固件环境208或其他启动代码,并且在将唤醒代码220存储在安全存储器单元中之后启动操作系统202。
系统管理模块214被配置为响应于由操作系统202所生成的进入睡眠功率管理模式的请求而触发系统管理中断(SMI)。计算设备100可以响应于触发了SMI而执行SMI处理程序216。SMI处理程序216可以被实施为任何函数、子例程、中断服务例程、或者可以由处理器120执行以处理SMI的其他代码。SMI处理程序216可以被存储在不能够由操作系统202访问的SMRAM 126或者其他安全存储器单元中。系统管理模块214还被配置为响应于触发了SMI而将唤醒代码220从安全存储器单元(例如,SMRAM126)复制到预留存储器块212。系统管理模块214被配置为在完成了SMI处理程序216之后,利用在实模式中的处理器120从存储在预留存储器块212中的唤醒代码220开始恢复计算设备100的执行。系统管理模块214可以将存储器120的处理器状态保存至安全存储器单元(例如,SMRAM 126),并且可以修改经保存的处理器状态以在实模式中执行,并且可以修改经保存的指令指针寄存器值和/或经保存的分段寄存器值以使得执行在预留存储器块212中的唤醒代码220恢复。
唤醒代码模块218被配置为进入诸如S0ix之类的低功率空闲状态,并且接着当计算设备100响应于唤醒事件而离开低功率空闲状态时跳转至操作系统202的唤醒向量206。唤醒代码模块218还可以被配置为执行在进入或离开功率管理睡眠状态时通常被执行的其他操作,例如存储一个或多个外围设备132的设备状态信息和/或基于唤醒事件来更新一个或多个功率管理状态寄存器。唤醒代码模块218的功能可以由平台唤醒代码220来执行,其可以被实施为能够由处理器120在实模式中执行的任何函数、子例程、或其他可执行代码。唤醒代码220可以被存储在对固件环境208可访问的非易失性存储中,固件环境208例如是数据存储设备128的固件卷或者平台闪存。如在上文中所描述的,唤醒代码220通过固件环境208而被复制到安全存储器单元(例如,SMRAM 126),并且接着响应于SMI而通过SMI处理程序被复制到预留存储器块212。因此,唤醒代码220在从非易失性存储中加载后不能被操作系统202修改,并且因此可以不需要响应于进入功率管理睡眠状态的请求而被认证。
现在参考图3,在使用中,计算设备100可以执行针对平台启动的方法300。方法300在框302中开始,其中计算设备通电。计算设备100可以例如响应于诸如按下按钮之类的用户命令、响应于被连接至外部电源、或者响应于任何其他合适的事件而通电。计算设备100还可以响应于软重置或硬重置或者其他重启事件而通电。方法300的随后的过程可以在执行操作系统202之前由固件环境208来执行。因此,固件环境208可以在方法300的执行期间对计算设备100实行完全控制。
在框304中,计算设备认证启动固件。计算设备100可以认证例如针对存储在非易失性存储器(例如,平台闪速存储器芯片、数据存储设备128的固件卷、或其他存储)中的启动固件的一个或多个固件映像。计算设备100可以例如通过针对一组受信任的证书来验证与每个特定的固件映像相关联的数字签名来认证固件映像。计算设备100可以例如执行在UEFI规范中所描述的安全启动过程。对启动固件进行认证可以在加载或者执行计算设备的其他组件(例如,固件环境208的组件、操作系统202、SMI处理程序216、和/或唤醒代码220)之前提供信任根。
在框306中,计算设备100预留出预留存储器块212以供固件环境208使用。在被预留之后,预留存储器块212的内容不能被在操作系统202的控制下的驱动程序和/或应用、或者计算设备100的其他未经认证的过程修改或以其他方式访问。计算设备100可以使用任何合适的技术来预留出预留存储器块212。例如,固件环境208可以将存储器图或者其他数据表格暴露给除了预留存储器块212之外的操作系统202。
在框308中,计算设备100将预留存储器块212的存储器地址存储到安全存储器单元(例如,SMRAM 126内的单元)中。安全存储器单元不能被操作系统202或者计算设备100的其他未经认证的过程修改或以其他方式访问。然而,安全存储器单元可以在处理进入睡眠模式的请求时由计算设备100访问,如在下文中结合图5进一步描述的。例如,SMRAM 126仅仅当处理器120在系统管理模式(SMM)中同时处理系统管理中断(SMI)时对计算设备100可访问。因此,操作系统202以及由操作系统202所执行的任何应用和/或驱动程序不能访问SMRAM 126。
在框310中,计算设备100将唤醒代码220的副本存储到安全存储器单元(例如,SMRAM 126内的单元)中。如在上文中所描述的,存储在安全存储器单元中的唤醒代码220的副本不能被操作系统202或计算设备100的其他未经认证的过程修改或以其他方式访问。存储在安全存储器单元中的唤醒代码220的副本可以在处理进入睡眠模式的请求时(例如,在处理器120在SMM中同时处理SMI时)由计算设备100访问。
在框312中,计算设备100启动操作系统202。计算设备100还可以执行启动操作系统202所需的任何额外的预启动操作。例如,计算设备100可以执行由UEFI标准所描述的启动过程,包括例如建立驱动程序执行环境、加载固件驱动程序和应用、执行启动设备选择、执行操作系统加载器、和/或终止启动服务。在加载了操作系统202之后,方法300完成,并且固件环境208不再完全控制计算设备100。某些运行时服务或者固件环境208的其他组件可以在操作系统202控制计算设备100时保持活动。
现在参考图4,在使用中,计算设备100可以执行针对功率管理睡眠调用的方法400。方法400可以由计算设备100的硬件、固件、和/或软件在运行时(即在操作系统202完全控制计算设备100时)执行。方法400在框402中开始,其中,计算设备100针对进入功率管理睡眠状态的请求进行监视。在一些实施例中,在框404中,计算设备100针对写至功率管理控制寄存器的ACPI S3睡眠请求进行监视。例如,操作系统202可以写至功率管理控制寄存器以请求计算设备100进入ACPI S3睡眠状态。操作系统202可以在由固件环境208所建立的一个或多个系统描述表格或其他数据结构中查找合适的功率管理控制寄存器。计算设备100可以使用任何技术来针对S3睡眠请求进行监视。例如,计算设备100可以捕获对功率管理控制寄存器的写。在框406中,计算设备100确定是否检测到S3睡眠请求。如果没有,则方法400循环回框402以继续针对睡眠请求进行监视。如果已经检测到睡眠请求,则方法400前进至框408。
在框408中,计算设备100触发系统管理中断(SMI)并且调用SMI处理程序216。计算设备100的固件和/或软件可以生成SMI,并且处理器120可以自动地切换至系统管理模式(SMM)并且调用SMI处理程序216。如在下文中结合图5和图6进一步描述的,在调用了SMI处理程序216之后,计算设备100可以进入低功率空闲状态。在退出低功率空闲状态并且恢复满功率执行之后,方法400循环回框402以继续针对睡眠请求的监视。
现在参考图5,在使用中,计算设备100可以执行针对系统管理中断处理的方法500。方法500在框502中开始,其中计算设备100调用SMI处理程序216。如在上文中结合图4的框408所描述的,SMI处理程序216可以响应于当计算设备100已经请求了进入功率管理睡眠状态时所生成的系统管理中断(SMI)而被处理器120调用。在执行SMI处理程序216之前,处理器120进入系统管理模式(SMM),该模式是允许处理器访问SMRAM 126的处理器专用模式。额外地,在执行SMI处理程序216之前,处理器120将其当前的处理器状态保存至SMRAM126。经保存的处理器状态可以包括例如在进入SMM紧接着之前的处理器120的寄存器值的副本。经保存的处理器状态可以用于允许处理器120在SMI处理程序216完成之后恢复执行。
在框504中,计算设备100将平台唤醒代码220从安全存储器单元(例如,SMRAM126)复制到固件预留的存储器块212。如在上文中结合图3的框310所描述的,平台唤醒代码220是先前由预启动固件环境208中的启动固件存储在SMRAM 126中的。计算设备100可以使用如在上文中结合图3的框308所描述的那样由启动固件存储在安全存储器单元中的存储器地址来定位预留存储器块212。因为SMRAM 126对操作系统202或其他未经认证的代码是不可访问的,所以基于对启动固件的先前的认证,存储在SMRAM 126中的平台唤醒代码220的副本可以在没有进一步认证的情况下受到SMI处理程序216的信任。额外地,平台唤醒代码220可以被复制到诸存储器124中,而不访问有可能缓慢的固件存储设备(例如,数据存储设备128或者平台非易失性闪速存储器)。在一些实施例中,从SMRAM126中而不是从非易失性存储中复制平台唤醒代码220可以针对每个睡眠请求而节约大约100毫秒。
在框506中,计算设备100对系统硬件进行准备以进入低功率空闲状态。计算设备100可以例如对平台片上系统进行初始化以用于进入诸如C10和/或SLP_S0之类的低功率状态。额外地,计算设备100可以跨子系统而初始化延迟公差报告(LTR)值、将显示器断电、或者以其他方式执行特定于SoC的准备。
在框508中,计算设备100修改经保存的处理器状态以使得处理器120在从SMI处理程序216恢复时从受保护模式改变至实模式。当执行操作系统202时,处理器120在受保护模式中执行,其提供虚拟存储器寻址、存储器分页、以及其他特征。在使用中受保护模式的特定的类型可以取决于使用的处理器120和/或操作系统202。例如,处理器120可以在架构的处理器上的x86受保护模式中或者IA-32e模式中执行操作系统202。因此,存储在SMRAM 126中的经保存的处理器状态可以包括指示处理器120是在SMI处理程序216的调用的紧接着之前在受保护模式中执行的一个或多个寄存器值。计算设备100可以将一个或多个新的寄存器值写至与实模式相对应的经保存的处理器状态。因此,当经保存的处理器状态被恢复至处理器120时,处理器120可以恢复在实模式中执行。实模式可以被实施为例如没有虚拟存储器寻址、存储器分页、或其他受保护模式特征的分段寻址模式。特别地,实模式可以是当一开始启动时和/或从ACPI S3睡眠状态退出时由处理器120所使用的相同的模式。
在框510中,计算设备100修改经保存的处理器状态以在存储在固件预留的存储器块212中的唤醒代码220恢复执行。特别地,计算设备100可以将与唤醒代码220的开始相对应的值写至经保存的处理器状态中的经保存的指令指针寄存器。因此,经保存的指令指针寄存器的新的值指向固件预留的存储器块212唤醒代码220的开始。计算设备100还可以将对应的值写至经保存的处理器状态中的经保存的分段寄存器。因此,当经保存的处理器状态被恢复至处理器120时,处理器120将把具有唤醒代码220的地址的指令指针值加载在固件预留的存储器块212中,并且接着立即开始从固件预留的存储器块212执行唤醒代码220。
在框512中,计算设备100从系统管理模式(SMM)中恢复。计算设备100例如可以执行诸如RSM之类的处理器指令以从SMM中恢复。在执行了RSM指令之后,SMI处理程序216被完成。响应于RSM指令,处理器120从SMRAM 126中重新加载经保存的处理器状态,并且基于经保存的处理器状态的内容来继续执行。因此,处理器120停止在SMM中执行,并且开始在实模式中执行,如在上文中结合框508所描述的。处理器120从位于固件预留的存储器块212中的唤醒代码220开始执行指令,如在上文中结合框510所描述的。
现在参考图6,在使用中,计算设备100可以执行针对低功率空闲和唤醒的方法600。方法600可以例如在位于固件预留的存储器块212中的唤醒代码220的执行期间被执行。方法600在框602中开始,其中计算设备100从SMI处理程序216中恢复。如在上文中结合图5的框512所描述的,在调用了SMI处理程序216之后,计算设备100以实模式从位于固件预留的存储器块212中的唤醒代码220开始恢复处理器120的执行。
在框604中,计算设备100存储外围设备132状态信息。计算设备100可以存储与外围设备132或者计算设备100的其他组件相关联的任何状态信息或其他数据,其通常需要在进入ACPI S3睡眠状态之前由操作系统202保存。
在框606中,计算设备100进入低功率空闲状态。计算设备100可以进入保存易失性存储器124、处理器120寄存器、以及计算设备100的其他易失性状态的内容并且允许快速唤醒的任何低功率状态。然而,计算设备100不进入诸如S3之类的ACPI睡眠状态。例如,计算设备100可以进入S0ix状态,并且处理器120可以进入诸如C10状态之类的低功率状态。在框608中,计算设备100针对唤醒事件进行监视。计算设备100可以使用任何技术来针对唤醒事件进行监视。例如,计算设备可以执行MWAIT处理器指令,并且接着在低功率空闲状态中等待直到发生唤醒事件(例如,存储器或I/O写事件)为止。在一些实施例中,从低功率状态退出(即,返回至满功率状态)可以需要大约60到100毫秒。在框610中,计算设备100确定是否发生了唤醒事件。如果没有,则方法600循环回框608以继续针对唤醒事件进行监视。如果发生了唤醒事件,则方法600前进至框612。
在框612中,计算设备100利用合适的唤醒源来更新一个或多个功率管理状态寄存器。计算设备100可以基于ACPI规范的要求来更新功率管理状态寄存器。在框614中,计算设备100跳转至唤醒向量206。唤醒向量206可以被实施为与操作系统函数或者用于将计算设备100从ACPI S3睡眠状态中唤醒的其他例程相关联的存储器地址。处理器120在实模式中继续从唤醒向量206的执行。
在框616中,计算设备100执行操作系统202。操作系统202将计算设备100返回至诸如S0活动模式之类的满功率操作模式。操作系统202还可以执行通常在从ACPI S3睡眠状态中返回时所执行的操作,例如,重载一个或多个外围设备132的经保存的状态和/或将处理器120转换至受保护模式。在将执行从唤醒代码220切换至操作系统202之后,方法600被完成。计算设备100可以继续以满功率模式执行,并且如在上文中结合图4所描述的那样针对进入ACPI S3睡眠状态的请求进行监视。
示例
以下提供了在本文中所公开的技术的说明性示例。技术的实施例可以包括在下文中所描述的任何一个或多个示例以及在下文中所描述的示例的任何组合。
示例1包括一种针对混合睡眠功率管理的计算设备,所述计算设备包括:安全模块,其用于:(i)在所述计算设备的预启动固件环境期间预留出预留存储器块,并且(ii)在所述预启动固件环境期间将唤醒例程存储在不能够由所述计算设备的操作系统访问的安全存储器单元中;系统管理模块,其用于:(i)响应于在第一处理器模式中由所述操作系统所生成的进入睡眠功率管理模式的请求,由所述计算设备的系统管理中断处理程序将所述唤醒例程从所述安全存储器单元复制到所述预留存储器块;并且(ii)以第二处理器模式由所述系统管理中断处理程序从存储在所述预留存储器块中的所述唤醒例程开始恢复所述计算设备的执行;唤醒代码模块,其用于响应于以所述第二处理器模式恢复执行而通过所述计算设备的所述唤醒例程进入低功率空闲状态。
示例2包括示例1的主题,并且其中:所述系统管理模块还用于响应于进入所述睡眠功率管理模式的所述请求而触发系统管理中断;并且复制所述唤醒例程包括响应于触发所述系统管理中断而复制所述唤醒例程。
示例3包括示例1和2的主题,并且其中,所述第一处理器模式包括受保护的模式,而所述第二处理器模式包括实模式。
示例4包括示例1-3中的任何一个的主题,并且其中:所述安全模块还用于在所述预启动固件环境期间将所述预留存储器块的地址存储在所述安全存储器单元中;其中,将所述唤醒例程从所述安全存储器单元复制到所述预留存储器块包括使用存储在所述安全存储器单元中的所述预留存储器块的所述地址来复制所述唤醒例程。
示例5包括示例1-4中的任何一个的主题,并且其中:所述安全模块还用于认证所述预启动固件环境;预留出所述预留存储器块包括响应于对所述预启动固件环境的认证而预留出所述预留存储器块;并且将所述唤醒例程存储在所述安全存储器单元中包括响应于对所述预启动固件环境的认证而将所述唤醒例程存储在所述安全存储器单元中。
示例6包括示例1-5中的任何一个的主题,并且其中,所述安全存储器单元包括所述计算设备的系统管理模式存储器区域。
示例7包括示例1-6中的任何一个的主题,并且其中,所述安全模块还用于响应于所述唤醒例程存储在所述安全存储器单元中而启动所述操作系统。
示例8包括示例1-7中的任何一个的主题,并且还包括睡眠模块,所述睡眠模块用于由所述操作系统生成进入所述睡眠功率管理模式的所述请求。
示例9包括示例1-8中的任何一个的主题,并且其中,生成进入所述睡眠功率管理模式的所述请求包括生成进入ACPI S3状态的请求。
示例10包括示例1-9中的任何一个的主题,并且其中,生成进入所述睡眠功率管理模式的所述请求包括将预先确定的值写至功率管理控制寄存器。
示例11包括示例1-10中的任何一个的主题,并且其中,所述系统管理模块还用于由所述系统管理中断处理程序针对所述低功率空闲状态来初始化所述计算设备的硬件组件。
示例12包括示例1-11中的任何一个的主题,并且其中,所述系统管理模块还用于:响应于触发所述系统管理中断而将所述计算设备的处理器的处理器状态保存至所述安全存储器单元以生成经保存的处理器状态;并且由所述系统管理中断处理程序将所述经保存的处理器状态修改成在所述第二处理器模式中执行;其中,恢复所述计算设备的执行包括响应于对所述经保存的处理器状态的修改而恢复对所述计算设备的执行。
示例13包括示例1-12中的任何一个的主题,并且其中,所述系统管理包括还用于:由所述系统管理中断处理程序将所述经保存的处理器状态的经保存的指令指针寄存器值修改为指向存储在所述预留存储器块中的所述唤醒例程;其中,恢复对所述计算设备的执行还包括响应于对所述经保存的指令指针寄存器值的修改而恢复所述计算设备的执行。
示例14包括示例1-13中的任何一个的主题,并且其中,所述低功率空闲状态包括S0ix处理状态。
示例15包括示例1-14中的任何一个的主题,并且其中,所述唤醒代码模块还用于响应于恢复所述计算设备的执行而通过所述唤醒例程存储所述计算设备的外围设备的设备状态;其中,进入所述低功率空闲状态包括响应于所述设备状态的存储而进入所述低功率空闲状态。
示例16包括示例1-15中的任何一个的主题,并且其中,所述唤醒代码模块还用于响应于进入所述低功率空闲状态而通过所述唤醒例程跳转至所述操作系统的唤醒向量。
示例17包括示例1-16中的任何一个的主题,并且其中,所述唤醒代码模块还用于:响应于进入所述低功率空闲状态而确定是否发生了唤醒事件;响应于确定发生了所述唤醒事件而由所述唤醒例程基于所述唤醒事件来更新功率管理状态寄存器;其中,跳转至所述唤醒向量包括响应于对所述功率管理状态寄存器的更新而跳转至所述唤醒向量。
示例18包括一种针对混合系统睡眠的方法,所述方法包括:在所述计算设备的预启动固件环境期间预留出预留存储器块;在所述预启动固件环境期间将唤醒例程存储在不能够由所述计算设备的操作系统访问的安全存储器单元中;响应于在第一处理器模式中由所述操作系统所生成的进入睡眠功率管理模式的请求,由所述计算设备的系统管理中断处理程序将所述唤醒例程从所述安全存储器单元复制到所述预留存储器块;以第二处理器模式由所述系统管理中断处理程序从存储在所述预留存储器块中的所述唤醒例程开始恢复所述计算设备的执行;以及响应于以所述第二处理器模式恢复执行而通过所述计算设备的唤醒例程进入低功率空闲状态。
示例19包括示例18的主题,并且还包括:响应于进入所述睡眠功率管理模式的所述请求而由所述计算设备触发系统管理中断;其中,复制所述唤醒例程包括响应于触发了所述系统管理中断而复制所述唤醒例程。
示例20包括示例18和19中的任何一个的主题,并且其中,所述第一处理器模式包括受保护模式,而所述第二处理器模式包括实模式。
示例21包括示例18-20中的任何一个的主题,并且还包括在所述预启动固件环境期间将所述预留存储器块的地址存储在所述安全存储器单元中;其中,将所述唤醒例程从所述安全存储器单元复制到所述预留存储器块包括使用存储在所述安全存储器单元中的所述预留存储器块的所述地址来复制所述唤醒例程。
示例22包括示例18-21中的任何一个的主题,并且还包括由所述计算设备认证所述预启动固件环境;其中,预留出所述预留存储器块包括响应于认证了所述预启动固件环境而预留出所述预留存储器块;并且其中,将所述唤醒例程存储在所述安全存储器单元中包括响应于认证了所述预启动固件环境而将所述唤醒例程存储在所述安全存储器单元中。
示例23包括示例18-22中的任何一个的主题,并且其中,所述安全存储器单元包括所述计算设备的系统管理模式存储器区域。
示例24包括示例18-23中的任何一个的主题,并且还包括响应于将所述唤醒例程存储在所述安全存储器单元中而由所述计算设备启动所述操作系统。
示例25包括示例18-24中的任何一个的主题,并且还包括由所述操作系统生成进入所述睡眠功率管理模式的所述请求。
示例26包括示例18-25中的任何一个的主题,并且其中,生成进入所述睡眠功率管理模式的所述请求包括生成进入ACPI S3状态的请求。
示例27包括示例18-26中的任何一个的主题,并且其中,生成进入所述睡眠功率管理模式的所述请求包括将预先确定的值写至功率管理控制寄存器。
示例28包括示例18-27中的任何一个的主题,并且还包括由所述系统管理中断处理程序针对所述低功率空闲状态来初始化所述计算设备的硬件组件。
示例29包括示例18-28中的任何一个的主题,并且还包括:响应于触发了所述系统管理中断而由所述计算设备将所述计算设备的处理器的处理器状态保存至所述安全存储器单元以生成经保存的处理器状态;并且由所述系统管理中断处理程序将所述经保存的处理器状态修改成在所述第二处理器模式中执行;其中,恢复所述计算设备的执行包括响应于修改所述经保存的处理器状态而恢复对所述计算设备的执行。
示例30包括示例18-29中的任何一个的主题,并且还包括:由所述系统管理中断处理程序将所述经保存的处理器状态的经保存的指令指针寄存器值修改为指向存储在所述预留存储器块中的所述唤醒例程;其中,恢复对所述计算设备的执行还包括响应于对所述经保存的指令指针寄存器值的修改而恢复所述计算设备的执行。
示例31包括示例18-30中的任何一个的主题,并且其中,进入所述低功率空闲状态包括进入S0ix处理器状态。
示例32包括示例18-31中的任何一个的主题,并且还包括响应于恢复所述计算设备的执行而通过所述唤醒例程存储所述计算设备的外围设备的设备状态;其中,进入所述低功率空闲状态包括响应于所述设备状态的存储而进入所述低功率空闲状态。
示例33包括示例18-32中的任何一个的主题,并且还包括响应于进入所述低功率空闲状态而通过所述唤醒例程跳转至所述操作系统的唤醒向量。
示例34包括示例18-33中的任何一个的主题,并且还包括响应于进入所述低功率空闲状态而确定是否发生了唤醒事件;响应于确定发生了所述唤醒事件而由所述唤醒例程基于所述唤醒事件来更新功率管理状态寄存器;其中,跳转至所述唤醒向量包括响应于对所述功率管理状态寄存器的更新而跳转至所述唤醒向量。
示例35包括计算设备,其包括:处理器;以及具有存储在其上的多个指令的存储器,其中当所述多个指令由所述处理器执行时,使得所述计算设备执行根据示例18-34中的任何一个的方法。
示例36包括包括存储在其上的多个指令的一个或多个机器可读存储介质,其中,所述多个指令响应于被执行而使得所述计算设备执行根据示例18-34中的任何一个的方法。
示例37包括一种计算设备,其包括用于执行根据示例18-34中的任何一个的方法的模块。
示例38包括针对混合睡眠功率管理的计算设备,所述计算设备包括:用于在计算设备的预启动固件环境期间预留出预留存储器块的模块;用于在所述预启动固件环境期间将唤醒例程存储在不能够由所述计算设备的操作系统访问的安全存储器单元中的模块;用于响应于在第一处理器模式中由所述操作系统所生成的进入睡眠功率管理模式的请求,由所述计算设备的系统管理中断处理程序将所述唤醒例程从所述安全存储器单元复制到所述预留存储器块的模块;用于以第二处理器模式由所述系统管理中断处理程序从存储在所述预留存储器块中的所述唤醒例程开始恢复所述计算设备的执行的模块;以及用于响应于以所述第二处理器模式恢复执行而通过所述计算设备的唤醒例程进入低功率空闲状态的模块。
示例39包括示例38的主题,并且还包括:用于响应于进入所述睡眠功率管理模式的所述请求而由所述计算设备触发系统管理中断的模块;其中,用于复制所述唤醒例程的模块包括用于响应于触发了所述系统管理中断而复制所述唤醒例程的模块。
示例40包括示例38和39中的任何一个的主题,并且其中,所述第一处理器模式包括受保护模式,而所述第二处理器模式包括实模式。
示例41包括示例38-40中的任何一个的主题,并且还包括用于在所述预启动固件环境期间将所述预留存储器块的地址存储在所述安全存储器单元中的模块;其中,用于将所述唤醒例程从所述安全存储器单元复制到所述预留存储器块的模块包括用于使用存储在所述安全存储器单元中的所述预留存储器块的所述地址来复制所述唤醒例程的模块。
示例42包括示例38-41中的任何一个的主题,并且还包括用于认证所述预启动固件环境;其中,用于预留出所述预留存储器块的模块包括用于响应于认证了所述预启动固件环境而预留出所述预留存储器块的模块;并且其中,用于将所述唤醒例程存储在所述安全存储器单元中的模块包括用于响应于认证了所述预启动固件环境而将所述唤醒例程存储在所述安全存储器单元中的模块。
示例43包括示例38-42中的任何一个的主题,并且其中,所述安全存储器单元包括所述计算设备的系统管理模式存储器区域。
示例44包括示例38-43中的任何一个的主题,并且还包括用于响应于将所述唤醒例程存储在所述安全存储器单元中而由所述计算设备启动所述操作系统的模块。
示例45包括示例38-44中的任何一个的主题,并且还包括用于生成进入所述睡眠功率管理模式的所述请求的模块。
示例46包括示例38-45中的任何一个的主题,并且其中,用于生成进入所述睡眠功率管理模式的所述请求的模块包括用于生成进入ACPI S3状态的请求的模块。
示例47包括示例38-46中的任何一个的主题,并且其中,用于生成进入所述睡眠功率管理模式的所述请求的模块包括用于将预先确定的值写至功率管理控制寄存器的模块。
示例48包括示例38-47中的任何一个的主题,并且还包括用于由所述系统管理中断处理程序针对所述低功率空闲状态来初始化所述计算设备的硬件组件的模块。
示例49包括示例38-48中的任何一个的主题,并且还包括:用于响应于触发了所述系统管理中断而由所述计算设备将所述计算设备的处理器的处理器状态保存至所述安全存储器单元以生成经保存的处理器状态的模块;以及用于由所述系统管理中断处理程序将所述经保存的处理器状态修改成在所述第二处理器模式中执行的模块;其中,用于恢复所述计算设备的执行的模块包括用于响应于修改所述经保存的处理器状态而恢复对所述计算设备的执行的模块。
示例50包括示例38-49中的任何一个的主题,并且还包括:用于由所述系统管理中断处理程序将所述经保存的处理器状态的经保存的指令指针寄存器值修改为指向存储在所述预留存储器块中的所述唤醒例程的模块;其中,用于恢复对所述计算设备的执行的模块还包括用于响应于对所述经保存的指令指针寄存器值的修改而恢复所述计算设备的执行的模块。
示例51包括示例38-50中的任何一个的主题,并且其中,用于进入所述低功率空闲状态的模块包括用于进入S0ix处理器状态的模块。
示例52包括示例38-51中的任何一个的主题,并且还包括用于响应于恢复所述计算设备的执行而通过所述唤醒例程存储所述计算设备的外围设备的设备状态的模块;其中,用于进入所述低功率空闲状态的模块包括用于响应于所述设备状态的存储而进入所述低功率空闲状态的模块。
示例53包括示例38-52中的任何一个的主题,并且还包括用于响应于进入所述低功率空闲状态而通过所述唤醒例程跳转至所述操作系统的唤醒向量的模块。
示例54包括示例38-53中的任何一个的主题,并且还包括用于响应于进入所述低功率空闲状态而确定是否发生了唤醒事件的模块;用于响应于确定发生了所述唤醒事件而由所述唤醒例程基于所述唤醒事件来更新功率管理状态寄存器的模块;其中,用于跳转至所述唤醒向量的模块包括用于响应于对所述功率管理状态寄存器的更新而跳转至所述唤醒向量的模块。
Claims (21)
1.一种针对混合睡眠功率管理的计算设备,所述计算设备包括:
安全模块,其用于:(i)在所述计算设备的预启动固件环境期间预留出预留存储器块,并且(ii)在所述预启动固件环境期间将唤醒例程存储在不能够由所述计算设备的操作系统访问的安全存储器单元中;
系统管理模块,其用于:(i)响应于在第一处理器模式中由所述操作系统所生成的进入睡眠功率管理模式的请求而触发系统管理中断;(ii)响应于触发所述系统管理中断而由所述计算设备的系统管理中断处理程序将所述唤醒例程从所述安全存储器单元复制到所述预留存储器块;(iii)响应于触发所述系统管理中断而将所述计算设备的处理器的处理器状态保存至所述安全存储器单元以生成经保存的处理器状态;(iv)由所述系统管理中断处理程序将所述经保存的处理器状态修改成在第二处理器模式中执行;并且(v)响应于对所述经保存的处理器状态的修改而由所述系统管理中断处理程序从存储在所述预留存储器块中的所述唤醒例程开始恢复所述计算设备在所述第二处理器模式中的执行;以及
唤醒代码模块,其用于响应于恢复在所述第二处理器模式中的执行而通过所述计算设备的所述唤醒例程进入低功率空闲状态。
2.根据权利要求1所述的计算设备,其中,所述安全存储器单元包括所述计算设备的系统管理模式存储器区域。
3.根据权利要求1所述的计算设备,还包括睡眠模块,所述睡眠模块用于:
由所述操作系统生成进入所述睡眠功率管理模式的所述请求。
4.根据权利要求3所述的计算设备,其中,生成进入所述睡眠功率管理模式的所述请求包括生成进入高级配置和电源接口(ACPI)S3状态的请求。
5.根据权利要求3所述的计算设备,其中,生成进入所述睡眠功率管理模式的所述请求包括将预先确定的值写至功率管理控制寄存器。
6.根据权利要求1所述的计算设备,其中,所述系统管理模块还用于:
由所述系统管理中断处理程序将所述经保存的处理器状态的经保存的指令指针寄存器值修改为指向存储在所述预留存储器块中的所述唤醒例程;
其中,恢复所述计算设备的执行还包括响应于对所述经保存的指令指针寄存器值的修改而恢复所述计算设备的执行。
7.根据权利要求1所述的计算设备,其中,所述低功率空闲状态包括S0ix处理器状态。
8.根据权利要求1所述的计算设备,其中:
所述唤醒代码模块还用于响应于进入所述低功率空闲状态而通过所述唤醒例程跳转至所述操作系统的唤醒向量。
9.一种针对混合系统睡眠的方法,所述方法包括:
在计算设备的预启动固件环境期间预留出预留存储器块;
在所述计算设备的预启动固件环境期间将唤醒例程存储在不能够由所述计算设备的操作系统访问的安全存储器单元中;
响应于在第一处理器模式中由所述操作系统所生成的进入睡眠功率管理模式的请求而由所述计算设备触发系统管理中断;
响应于触发所述系统管理中断而由所述计算设备的系统管理中断处理程序将所述唤醒例程从所述安全存储器单元复制到所述预留存储器块;
响应于触发所述系统管理中断而由所述计算设备将所述计算设备的处理器的处理器状态保存至所述安全存储器单元以生成经保存的处理器状态;
由所述系统管理中断处理程序将所述经保存的处理器状态修改成在第二处理器模式中执行;
响应于修改所述经保存的处理器状态而由所述系统管理中断处理程序从存储在所述预留存储器块中的所述唤醒例程开始恢复所述计算设备在所述第二处理器模式中的执行;以及
响应于恢复在所述第二处理器模式中的执行而通过所述计算设备的所述唤醒例程进入低功率空闲状态。
10.根据权利要求9所述的方法,其中,所述安全存储器单元包括所述计算设备的系统管理模式存储器区域。
11.根据权利要求9所述的方法,还包括:
由所述操作系统生成进入所述睡眠功率管理模式的所述请求。
12.根据权利要求11所述的方法,其中,生成进入所述睡眠功率管理模式的所述请求包括生成进入高级配置和电源接口(ACPI)S3状态的请求。
13.根据权利要求9所述的方法,还包括:
由所述系统管理中断处理程序将所述经保存的处理器状态的经保存的指令指针寄存器值修改为指向存储在所述预留存储器块中的所述唤醒例程;
其中,恢复所述计算设备的执行还包括响应于对所述经保存的指令指针寄存器值的修改而恢复所述计算设备的执行。
14.一种用于混合睡眠功率管理的计算设备,所述计算设备包括:
用于在预启动固件环境期间预留出预留存储器块的模块;
用于在所述预启动固件环境期间将唤醒例程存储在不能够由所述计算设备的操作系统访问的安全存储器单元中的模块;
用于响应于在第一处理器模式中由所述操作系统所生成的进入睡眠功率管理模式的请求而触发系统管理中断的模块;
用于响应于触发所述系统管理中断而由系统管理中断处理程序将所述唤醒例程从所述安全存储器单元复制到所述预留存储器块的模块;
用于响应于触发所述系统管理中断而将所述计算设备的处理器的处理器状态保存至所述安全存储器单元以生成经保存的处理器状态的模块;
用于由所述系统管理中断处理程序将所述经保存的处理器状态修改成在第二处理器模式中执行的模块;
用于响应于修改所述经保存的处理器状态而由所述系统管理中断处理程序从存储在所述预留存储器块中的所述唤醒例程开始恢复所述计算设备在所述第二处理器模式中的执行的模块;以及
用于响应于恢复在所述第二处理器模式中的执行而通过所述唤醒例程进入低功率空闲状态的模块。
15.根据权利要求14所述的计算设备,其中,所述安全存储器单元包括所述计算设备的系统管理模式存储器区域。
16.根据权利要求14所述的计算设备,还包括:
用于由所述操作系统生成进入所述睡眠功率管理模式的所述请求的模块。
17.根据权利要求16所述的计算设备,其中,用于生成进入所述睡眠功率管理模式的所述请求的所述模块包括用于生成进入高级配置和电源接口(ACPI)S3状态的请求的模块。
18.根据权利要求14所述的计算设备,还包括:
用于由所述系统管理中断处理程序将所述经保存的处理器状态的经保存的指令指针寄存器值修改为指向存储在所述预留存储器块中的所述唤醒例程的模块;
其中,用于恢复所述计算设备的执行的所述模块还包括用于响应于对所述经保存的指令指针寄存器值的修改而恢复所述计算设备的执行的模块。
19.根据权利要求14所述的计算设备,还包括:
用于响应于进入所述低功率空闲状态而通过所述唤醒例程跳转至所述操作系统的唤醒向量的模块。
20.一种用于混合睡眠功率管理的计算设备,包括:
处理器;以及
其上存储有多个指令的存储器,所述多个指令当由所述处理器执行时,使得所述计算设备执行根据权利要求9-13中的任何一项所述的方法。
21.一种或多种机器可读存储介质,包括存储在其上的多个指令,所述多个指令响应于被执行而使得计算设备执行根据权利要求9-13中的任何一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/670,939 | 2015-03-27 | ||
US14/670,939 US10198274B2 (en) | 2015-03-27 | 2015-03-27 | Technologies for improved hybrid sleep power management |
PCT/US2016/019588 WO2016160194A1 (en) | 2015-03-27 | 2016-02-25 | Technologies for improved hybrid sleep power management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107430424A CN107430424A (zh) | 2017-12-01 |
CN107430424B true CN107430424B (zh) | 2021-04-06 |
Family
ID=56975364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680012418.1A Expired - Fee Related CN107430424B (zh) | 2015-03-27 | 2016-02-25 | 针对改进的混合睡眠功率管理的技术 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10198274B2 (zh) |
EP (1) | EP3274788B1 (zh) |
JP (1) | JP6627180B2 (zh) |
CN (1) | CN107430424B (zh) |
WO (1) | WO2016160194A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6096301B2 (ja) * | 2012-10-25 | 2017-03-15 | インテル コーポレイション | ファームウェアにおける盗難防止 |
DE102014213922B4 (de) * | 2014-07-17 | 2020-02-20 | Continental Automotive Gmbh | Fahrzeug-Infotainmentsystem |
JP6130612B1 (ja) * | 2015-08-25 | 2017-05-17 | 株式会社Seltech | ハイパーバイザーを有するシステム |
US10372184B2 (en) | 2016-06-28 | 2019-08-06 | Renesas Electronics America Inc. | Method and apparatus for implementing power modes in microcontrollers using power profiles |
WO2018112738A1 (en) * | 2016-12-20 | 2018-06-28 | Intel Corporation | Power state management |
US10437310B2 (en) * | 2016-12-21 | 2019-10-08 | Intel Corporation | Technologies for secure hybrid standby power management |
US10678909B2 (en) * | 2017-04-21 | 2020-06-09 | Vmware, Inc. | Securely supporting a global view of system memory in a multi-processor system |
US10831897B2 (en) * | 2017-07-14 | 2020-11-10 | Dell Products, L.P. | Selective enforcement of secure boot database entries in an information handling system |
US20210374228A1 (en) * | 2018-01-05 | 2021-12-02 | Hewlett-Packard Development Company, L.P. | Sleep states detections |
US11023379B2 (en) * | 2019-02-13 | 2021-06-01 | Google Llc | Low-power cached ambient computing |
EP3999938A4 (en) * | 2019-07-15 | 2023-08-02 | INTEL Corporation | DYNAMIC ENERGY PERFORMANCE PREFERENCE BASED ON WORKLOADS USING AN ADAPTIVE ALGORITHM |
US11256811B2 (en) | 2020-06-10 | 2022-02-22 | Harman International Industries, Incorporated | Secure boot at shutdown |
US11436334B2 (en) * | 2020-09-30 | 2022-09-06 | Dell Products L.P. | Systems and methods for securing operating system applications with hardware root of trust |
TWI783410B (zh) * | 2021-03-16 | 2022-11-11 | 瑞昱半導體股份有限公司 | 電子裝置以及其休眠恢復方法 |
CN115061561A (zh) * | 2022-07-01 | 2022-09-16 | 深圳市创智成科技股份有限公司 | 一种设备的节电方法、装置、系统及存储介质 |
CN117331676B (zh) * | 2023-11-30 | 2024-03-19 | 上海兆芯集成电路股份有限公司 | 系统管理模式进入方法、处理器和计算机系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20000065894A (ko) * | 1999-04-10 | 2000-11-15 | 윤종용 | 에이.씨.피.아이 스펙에서 지원하는 슬리핑 모드 선택 기능을 갖는 컴퓨터 시스템 및 그 방법 |
CN1415085A (zh) * | 1999-11-05 | 2003-04-30 | 英特尔公司 | 睡眠状态转换 |
CN1716186A (zh) * | 2004-06-30 | 2006-01-04 | 英特尔公司 | 使用睡眠-唤醒机制的比较和交换操作 |
US7117334B2 (en) * | 2004-05-14 | 2006-10-03 | International Business Machines Corporation | Dynamic node partitioning utilizing sleep state |
US7392415B2 (en) * | 2002-06-26 | 2008-06-24 | Intel Corporation | Sleep protection |
CN101772141A (zh) * | 2008-12-30 | 2010-07-07 | 英特尔公司 | 降功率状态网络处理 |
CN201867678U (zh) * | 2010-08-30 | 2011-06-15 | 微星科技股份有限公司 | 在休眠下可降低耗电量的计算机主机板 |
CN103560998A (zh) * | 2013-10-09 | 2014-02-05 | 中国科学院信息工程研究所 | 一种无线传感器网络抵抗DoS攻击的方法及系统 |
CN103975287A (zh) * | 2011-12-13 | 2014-08-06 | 英特尔公司 | 使用非易失性随机存取存储器的服务器中的增强系统睡眠状态支持 |
CN104115153A (zh) * | 2012-02-20 | 2014-10-22 | 英特尔公司 | 进入安全系统环境的定向唤醒 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3943665B2 (ja) | 1997-09-01 | 2007-07-11 | 株式会社東芝 | スリープ制御方法、およびイベント通知方法 |
US6691234B1 (en) * | 2000-06-16 | 2004-02-10 | Intel Corporation | Method and apparatus for executing instructions loaded into a reserved portion of system memory for transitioning a computer system from a first power state to a second power state |
US20060053325A1 (en) | 2004-09-03 | 2006-03-09 | Chary Ram V | Storing system information in a low-latency persistent memory device upon transition to a lower-power state |
US7383450B2 (en) * | 2004-12-22 | 2008-06-03 | Intel Corporation | Low power firmware |
KR20090044872A (ko) * | 2007-11-01 | 2009-05-07 | 엘지전자 주식회사 | 휴대용 컴퓨터 및 휴대용 컴퓨터의 절전모드 제어방법 |
US8230237B2 (en) | 2007-12-06 | 2012-07-24 | Intel Corporation | Pre-boot environment power management |
US8499174B2 (en) * | 2008-09-08 | 2013-07-30 | Via Technologies, Inc. | Method and controller for power management |
US7996694B2 (en) * | 2009-06-05 | 2011-08-09 | Apple Inc. | Dark wake |
TWI454905B (zh) | 2011-09-30 | 2014-10-01 | Intel Corp | 在多核心平台中之受限制的啓動技術 |
US9811475B2 (en) | 2012-06-29 | 2017-11-07 | Intel Corporation | Methods and apparatus for a secure sleep state |
US9075751B2 (en) | 2012-08-09 | 2015-07-07 | Intel Corporation | Secure data protection with improved read-only memory locking during system pre-boot |
US9189248B2 (en) | 2013-04-25 | 2015-11-17 | Insyde Software Corp. | Specialized boot path for speeding up resume from sleep state |
TW201535145A (zh) * | 2013-12-04 | 2015-09-16 | Insyde Software Corp | 使用保護讀取儲存器安全地儲存韌體數據之系統及方法 |
-
2015
- 2015-03-27 US US14/670,939 patent/US10198274B2/en active Active
-
2016
- 2016-02-25 WO PCT/US2016/019588 patent/WO2016160194A1/en active Application Filing
- 2016-02-25 EP EP16773664.4A patent/EP3274788B1/en active Active
- 2016-02-25 JP JP2017540881A patent/JP6627180B2/ja active Active
- 2016-02-25 CN CN201680012418.1A patent/CN107430424B/zh not_active Expired - Fee Related
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20000065894A (ko) * | 1999-04-10 | 2000-11-15 | 윤종용 | 에이.씨.피.아이 스펙에서 지원하는 슬리핑 모드 선택 기능을 갖는 컴퓨터 시스템 및 그 방법 |
CN1415085A (zh) * | 1999-11-05 | 2003-04-30 | 英特尔公司 | 睡眠状态转换 |
US7392415B2 (en) * | 2002-06-26 | 2008-06-24 | Intel Corporation | Sleep protection |
US7117334B2 (en) * | 2004-05-14 | 2006-10-03 | International Business Machines Corporation | Dynamic node partitioning utilizing sleep state |
CN1716186A (zh) * | 2004-06-30 | 2006-01-04 | 英特尔公司 | 使用睡眠-唤醒机制的比较和交换操作 |
CN101772141A (zh) * | 2008-12-30 | 2010-07-07 | 英特尔公司 | 降功率状态网络处理 |
CN201867678U (zh) * | 2010-08-30 | 2011-06-15 | 微星科技股份有限公司 | 在休眠下可降低耗电量的计算机主机板 |
CN103975287A (zh) * | 2011-12-13 | 2014-08-06 | 英特尔公司 | 使用非易失性随机存取存储器的服务器中的增强系统睡眠状态支持 |
CN104115153A (zh) * | 2012-02-20 | 2014-10-22 | 英特尔公司 | 进入安全系统环境的定向唤醒 |
CN103560998A (zh) * | 2013-10-09 | 2014-02-05 | 中国科学院信息工程研究所 | 一种无线传感器网络抵抗DoS攻击的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2016160194A1 (en) | 2016-10-06 |
CN107430424A (zh) | 2017-12-01 |
US10198274B2 (en) | 2019-02-05 |
JP6627180B2 (ja) | 2020-01-08 |
EP3274788A4 (en) | 2018-09-12 |
JP2018511104A (ja) | 2018-04-19 |
EP3274788B1 (en) | 2020-08-26 |
EP3274788A1 (en) | 2018-01-31 |
US20160282927A1 (en) | 2016-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107430424B (zh) | 针对改进的混合睡眠功率管理的技术 | |
US10684865B2 (en) | Access isolation for multi-operating system devices | |
EP2189901B1 (en) | Method and system to enable fast platform restart | |
US9152205B2 (en) | Mechanism for facilitating faster suspend/resume operations in computing systems | |
KR20150018041A (ko) | 웨이크-업 시간을 줄일 수 있는 시스템 온 칩, 이의 동작 방법, 및 상기 시스템 온 칩을 포함하는 컴퓨터 시스템 | |
JP2008287505A (ja) | 情報処理装置およびレガシーエミュレーション処理停止制御方法 | |
US20070214349A1 (en) | Driver/variable cache and batch reading system and method for fast resume | |
JP5756144B2 (ja) | オペレーティング・システムの管理方法、コンピュータ・プログラムおよびコンピュータ | |
US11768691B2 (en) | Boot process for early display initialization and visualization | |
CN113703799B (zh) | 计算设备及其bios更新方法和介质 | |
US20130086372A1 (en) | Information processing apparatus and boot control method | |
JP2023020861A (ja) | ファームウェアの更新 | |
EP3633507B1 (en) | Technologies for secure and efficient native code invocation for firmware services | |
CN105339898A (zh) | 操作系统切换方法及装置 | |
US9910677B2 (en) | Operating environment switching between a primary and a secondary operating system | |
US20140095859A1 (en) | Apparatus and method for managing register information in a processing system | |
US20130166852A1 (en) | Method for hibernation mechanism and computer system therefor | |
US10437310B2 (en) | Technologies for secure hybrid standby power management | |
US11340835B2 (en) | Virtual non-volatile memory system | |
US9354942B2 (en) | Coordinating power states in a hybrid information handling device | |
CN116594698A (zh) | 一种系统控制方法、装置和可读存储介质 | |
JP2014531099A (ja) | 動作コンテキストの切り替え |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210406 |
|
CF01 | Termination of patent right due to non-payment of annual fee |