CN104303159B - 基于页面来源的休眠 - Google Patents

基于页面来源的休眠 Download PDF

Info

Publication number
CN104303159B
CN104303159B CN201280072887.4A CN201280072887A CN104303159B CN 104303159 B CN104303159 B CN 104303159B CN 201280072887 A CN201280072887 A CN 201280072887A CN 104303159 B CN104303159 B CN 104303159B
Authority
CN
China
Prior art keywords
page
solid
memory
computing device
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.)
Active
Application number
CN201280072887.4A
Other languages
English (en)
Other versions
CN104303159A (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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN104303159A publication Critical patent/CN104303159A/zh
Application granted granted Critical
Publication of CN104303159B publication Critical patent/CN104303159B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Abstract

本文公开的示例实施例涉及休眠。设备包括非易失性存储器和易失性存储器,该非易失性存储器包括固态存储器。该易失性存储器包括多个页面。基于相应页面是否源自于固态存储器将一个或多个页面存储在非易失性存储器中。

Description

基于页面来源的休眠
背景技术
例如,通过提供响应式计算设备,计算设备制造商面临向消费者提供质量和价值的挑战。许多计算设备具有休眠模式,该休眠模式允许计算设备在维持其状态的情况下关机。在休眠期间,计算机将其易失性存储器中的内容保存到硬盘。一旦恢复,计算机还保持其进入休眠时的状态。
附图说明
下面的具体实施方式参考附图,其中,
图1A和图1B为根据各示例的计算设备的框图,该计算设备能够基于多个页面中的相应页面的来源是否为固态存储器将易失性存储器的一个或者多个页面存储在休眠文件中而执行休眠;
图2为根据一个示例的用于生成休眠文件的方法的流程图,该休眠文件包括并非源自于固态存储器的易失性存储器的一组页面;
图3为根据一个示例的用于从休眠中恢复计算设备的方法的流程图。
图4为根据一个示例的能够生成休眠文件的设备的框图,该休眠文件包括并非源自于固态存储器的一组页面。
具体实施方式
如今,许多计算设备都具有休眠模式。休眠是在维持计算设备状态的情况下关闭计算设备的方法。休眠状态的一示例为高级配置与电源接口(ACPI)S4状态。在典型的休眠期间,计算设备将易失性存储器,例如随机存取存储器(RAM)的内容保存到非易失性存储器,例如硬盘驱动器。当再次对计算设备供电时,保存在非易失性存储器上的易失性存储器的内容被恢复。
然而,计算设备的用户希望在保存和恢复过程期间的更快的响应。根据所保存的内容量,休眠保存和/或休眠恢复所需的时间可能会增加或者减少。因此,保存较少信息能够减少用于保存和/或恢复的时间。在休眠中,休眠文件(例如,保存到非易失性存储器的信息)的值用于创建计算设备的状态的书签,并且通过使用旋转式硬盘驱动器的碎片整理的部分来创建该计算设备的状态的书签。然而,利用固态存储器,例如NAND存储器、NOR存储器等,导致旋转介质的寻道时间损失的存储残片减少,因此当数据已被放置在固态存储器上时,将RAM内容放置到连续的块并不能加速恢复过程。
因此,本文公开的各实施例涉及基于易失性存储器中的关联页面是否源自于特定类型的存储设备而选择性地生成休眠文件。在一些实施例中,考虑了存储设备的速度。保存映射图以识别存储在易失性存储器中的每个页面的非易失性来源。如果数据来自固态存储器或者缓存在固态存储器中,则操作系统可以识别数据的来源为例如比硬盘驱动器快的特定类别。如果源自于固态存储器的页面没有被修改,例如通过标为只读,当休眠事件开始时,操作系统可以以特定的方式处理该页面。
在一个示例中,可以通过从页表删除页面使该页面无效,并且不将该页面存储在休眠文件中。对该页面的后续访问可能引起全局页面错误并且操作系统可以从非易失性存储器中重新加载该页面。操作系统可以利用虚拟存储器管理系统确定所请求的页面在非易失性存储器上的位置。
在另一个示例中,休眠文件中不包括该页面,但没有从页表中删除该页面。操作系统可以对标记为存储在固态存储器中的数据的恢复去除优先级(de-prioritize)。这样,休眠文件将会首先被加载到易失性存储器,而被存储在固态存储器中的页表中的其余页面在后台被恢复。利用这些方法,改善往返磁盘的休眠的持续期间。
本文中使用的页表是用于存储虚拟地址和物理地址之间映射的数据结构。如上所述,页表可以包括附加信息,例如来源信息、有效性信息等。页表也可以是系统页表的一部分。在一个实施例中,系统页表是具有计算设备所使用的有效内容的页面的完整列表。页表的数据结构的示例包括反置页表和散列页表。
图1A和图1B为根据各示例的计算设备的框图,该计算设备能够基于多个页面中的相应页面的来源是否为固态存储器将易失性存储器的一个或者多个页面存储在休眠文件中而执行休眠。计算设备100a、100b可以是笔记本电脑、台式电脑、平板计算设备、无线设备、服务器、工作站或能够基于易失性存储器所源自的存储器的类型执行休眠的任何其他计算设备。在一个示例中,计算设备100a包括:非易失性存储器110、易失性存储器112和休眠模块114。在本示例中,非易失性存储器可以包括:固态存储器116、旋转式硬盘驱动器118和/或驱动控制器120。在另一个示例中,计算设备100b可以进一步包括:页表122、恢复模块124、处理器130、芯片集132和输入/输出接口134。
计算设备100包括:易失性存储器112。在一些示例中,易失性存储器112是需要电力来保持所存储的信息的计算机存储器。易失性存储器112的示例包括RAM,例如动态RAM(DRAM)、同步DRAM(SDRAM)和双倍数据数率(DDR)SDRAM、读/写存储器等。易失性存储器112可比非易失性存储器110快。
在一些实施例中,非易失性存储器110是不供电时能够保持所存储的信息的计算机存储器。非易失性存储器110的示例包括:闪存、铁电RAM(F-RAM)、硬盘驱动器、固态存储器等。因此,非易失性存储器110可以包括旋转式硬盘驱动器118、固态存储器116或其组合。在一个示例中,非易失性存储器110可以是包括具有旋转盘的旋转式硬盘驱动器118以及固态存储器116的混合硬盘驱动器。在一些示例中,在混合硬盘驱动器的实现方式中,固态存储器116可以用作缓存。驱动控制器120或处理器130(例如,通过串行高级技术附件(SATA)帧信息结构(FIS))可以用于实现该缓存,利用一个或多个算法,例如利用智能响应技术(SRT)实现方式来实现该缓存。固态存储器116和旋转式硬盘驱动器118和/或驱动控制器120可以位于相同的物理封装上或位于单独的封装上。
旋转式硬盘驱动器118可以包括存储器,该存储器基于采用涂有磁性材料的快速旋转光盘(盘)存储信息的技术。磁头可以用于将数据读和/或写到表面。从旋转式硬盘驱动器118读取数据或将数据写入旋转式硬盘驱动器118的访问时间可以包括:测量磁头到达包括数据的磁盘上的磁道所用的寻道时间和旋转延迟,该旋转延迟是由于请求数据传输时磁头可能不在期望的磁盘扇区而产生的。
固态存储器116不使用旋转式盘存储信息。因此,固态存储器116具有较少的访问时间和/或延迟。可以使用各种存储器技术,例如闪存,例如NAND闪存和NOR闪存、忆阻器技术、相变存储器等来实现固态存储器116。
易失性存储器112可以存储处理器130所使用的数字信息。易失性存储器112可以包括存储器的多个页面。在一些示例中,“页面”是虚拟存储器的定长连续块,该定长连续块是在易失性存储器112和任何其他存储器,例如非易失性存储器110之间传输数据的最小单元。
可以由页表122跟踪页面。在一些示例中,页表122是由计算设备100的虚拟存储器使用来存储虚拟地址和物理地址(例如,易失性存储器112或非易失性存储器110的物理位置)之间映射的数据结构。在程序的执行期间,可以将非易失性存储器110放置到易失性存储器112中。例如,可以将来自非易失性存储器110上文件的程序的指令或信息放置到易失性存储器112中。页表122可以包括关于存储在非易失性存储器110上的交换文件的信息。页表122也可以包括关于当前在易失性存储器112中的特定页面是否源自于固态存储器116的信息。在一些示例中,源自于固态存储器116表示易失性存储器112中的页面是从存储在固态存储器116上的页面的副本读取的。在一些示例中,可以认为源自于固态存储器116的页面在易失性存储器112中是只读的和/或未修改的。此外,页表122跟踪页面。在一个示例中,页表122包括针对多个页面中的每个页面的源寄存器。源寄存器可以指示相应页面是否源自于第一存储器类型(例如源自于固态存储器116)或源自于其他存储器类型(例如旋转式硬盘驱动器118)。页表122也可以包括针对多个页面中的每个页面的有效性寄存器。有效性寄存器可以指示相应页面在易失性存储器112中是否有效。
休眠模块114可以用于使计算设备110进入休眠状态。在一些实施例中,休眠状态是计算设备100按照一定方式将其易失性存储器112的内容保存到非易失性存储器110使得一旦计算设备100恢复就能恢复功能的状态。在休眠过程期间,可以从易失性存储器112移除电源,导致易失性存储器112丢失所存储的信息。使用恢复模块124,稍后可以恢复计算设备100的使用。
在休眠之前,当计算设备100的处理器130试图访问存储器中的逻辑或虚拟地址并且该存储器数据还没有从非易失性存储器110,例如固态存储器116或旋转式硬盘驱动器118复制出时,产生调用存储器的页面来从非易失性存储器110读取并且存储到易失性存储器112的错误。可以验证存储器分段的页表122以指示该页面被存储在易失性存储器112中。非易失性存储器110的来源可以被识别为来自旋转式介质或来自非易失性固态存储器。如上所述,来源的记录可以被放置在页表122的源寄存器中。在一个示例中,“0”可以表明该页面源自于旋转式介质,而“1”可以指示该页面源自于固态存储器。例如,如果使用多个非易失性存储器类型或设备,也可以表明其他状态,例如,“01”、“11”、“001”等用于表明其他来源信息。此外,在一些场景中,当易失性存储器112中的内容被改变时,可以复位源寄存器,例如设置为空等。
当使计算设备100为休眠模式时,休眠模块114可以基于多个页面中的相应页面的副本是否源自于固态存储器116而将一个或多个页面存储在易失性存储器112中。如上所述,如果易失性存储器112中的页面是固态存储器116上的对应页面的副本,则该页面源自于固态存储器116。可以将不是源自于固态存储器116的页面存储在休眠文件中。例如,可以将源自于旋转式硬盘驱动器118或其他低速存储器的页面存储在休眠文件中。不需要将源自于固态存储器116的页面存储在休眠文件中。这是因为,为了从固态存储器116提取内容,不需要额外开销从旋转式硬盘驱动器118提取内容。由于休眠文件中存储了较少的页面,因此与将每个页面保存到休眠文件相比,文件大小更小,并且计算设备100的休眠/恢复速度更快。
此外,在一个场景中,页表122中引用的页面可以基于易失性存储器112中的相应页面是否有效而被存储。在一些场景中,在易失性存储器112中存储页面时,该页面是有效的。在休眠过程期间,源自于固态存储器116的页面在页表122中可以被设置为无效,使得信息不被保存在休眠文件中。在其他场景中,源自于固态存储器116的页面没有被无效,但相应页面的存储可以基于源寄存器。易失性存储器112的无效或未使用部分不需要被保存到休眠文件,因此进一步加快休眠/恢复过程。在一个示例中,来自易失性存储器112的页面基于相应页面有效且其相应的源寄存器指示相应页面并不是源自于固态存储器116的确定被存储在休眠文件中。这可以意味着相应页面源自于旋转式硬盘驱动器118,相应页面以一种方式被修改使得等效副本没有被存储在固态存储器116上,或相应页面来自于另一个位置(例如,输入/输出设备)。此外,休眠模块114可以用休眠文件存储页表。此外,在休眠过程期间,例如当从易失性存储器112移除电源时,可以清除易失性存储器112。
接下来,计算设备100可以从休眠状态恢复。例如,可以利用计算设备100上的按钮来启动恢复过程。恢复模块124可以从休眠文件读取页表。接下来,恢复模块124可以将每个有效页面从休眠文件放置到易失性存储器112中。在一个示例中,有效页面不包括源自于固态存储器116的页面。当处理器130试图读取这些源自于固态存储器116但没有复制到易失性存储器112、操作系统虚拟存储器管理系统、页面向导等的页面中的一个页面时,页表项可以辨认出存储器页面在易失性存储器112中是无效的并且引起从固态存储器116提取数据。
在另一个示例中,将存储在休眠文件中的页面恢复到易失性存储器112中,接下来可以将源自于固态存储器116的页面复制到易失性存储器112。当计算设备100的执行由恢复模块124移交至操作系统时,固态存储器116的复制可以为后台进程和/或去除优先级进程。在本示例中,休眠文件可以包括没有被存储在固态存储器116上的易失性存储器112的页面,例如存储在旋转式硬盘驱动器118或没有被存储在非易失性存储器110上的页面。这可以基于休眠文件中存储了什么页面以及基于与相应页面相关联的源寄存器来实现。在该场景中,页表122包括存储在固态存储器116上的页面。在恢复期间,将保存在休眠文件中的页面放置到/复制到易失性存储器112中。接下来,可以在后台复制保存在固态存储器116上的页面。恢复模块124可以读取页表122并区分源自于固态存储器116的文件以确定通过去优先级化进程复制哪些页面。
可以配置处理器130,例如适于提取和执行指令的中央处理单元(CPU)或微处理器、和/或电子电路,以执行本文描述的模块114、124中任一模块的功能。在一些场景中,易失性存储器112或其他存储器中可以包括指令和/或其他信息,例如内容。计算设备100b还可以提供输入/输出接口134。例如,可以利用输入设备140,例如键盘、传感器、触摸界面、鼠标、麦克风等从计算设备100b周围的环境接收输入。此外,可以利用输出设备142,例如显示器将信息呈现给用户。例如,输出设备包括:扬声器、显示设备和放大器等。此外,在一些实施例中,可以利用一些部件来执行此处描述的其他部件的功能。
模块114和124中的每个模块包括,例如包括用于实现此处描述的功能的电子电路的硬件设备。此外或作为替代方案,每个模块114、124可以实现为编码在计算设备100的机器可读存储介质上并且可由处理器130执行的一系列指令。需要注意的是,在一些实施例中,一些模块实现为硬件设备,而其他模块实现为可执行指令。
如上所述,在一些实施例中,非易失性存储器110可以为混合硬件驱动器。混合硬件驱动器可以包括旋转式介质,例如旋转式硬盘驱动器118的至少一个盘以及固态存储器116,例如NAND存储器和存储器控制器(例如驱动控制器120)。处理器130可以与芯片集132相连。芯片集132可以为处理器130和易失性存储器112与驱动控制器120之间的桥。SATA总线或另一个类型的总线可以将存储控制器连接到混合硬盘驱动器。
固态存储器116可以用作旋转式硬盘驱动器118的缓存。可以使用常规缓存方法。此外,缓存的物理尺寸可以比旋转式介质的尺寸小。驱动控制器120可以执行指令来识别存储在旋转式硬盘驱动器118上的数据的优先级。可以将来自旋转式硬盘驱动器118的数据的子集存储在固态存储器116中。当处理器130确定从混合硬盘驱动器访问数据时,在访问旋转式硬盘驱动器之前,驱动控制器120确定数据是否在固态缓存上。当数据位于固态缓存上时,访问时间将减少。如上所述,可以使用SRT方法来实现缓存。
在一些实施例中,驱动控制器120可以通过总线报告区分信息来源为固态存储器116的信息或来自旋转式介质的信息。处理器130可以试图读取在易失性存储器112中无效的存储器位置。页表项可以辨认存储器页面在易失性存储器112中是无效的,引起混合驱动器的访问以提取数据。驱动控制器120可以利用请求的数据和关于来源的信息对处理器130访问做出响应。可以通过帧信息结构(FIS)或其他通信机制报告关于来源的信息。处理器130可以接收数据并且用页面填充易失性存储器112。处理器130还可以在页表项中设置当前或有效比特。此外,处理器130可以读取嵌入在FIS中的来源信息并且可以利用来源信息设置页表项,该页表项对应与数据关联的页框地址。
在一个示例中,非易失性存储器110是包括固态存储器116的固态驱动器。在该场景中,源寄存器可以将页面标记为源自于固态存储器116或者并非源自于固态存储器。非源自于固态存储器116的页面可以包括,例如根据在易失性存储器112中执行的进程创建的页面。因为这些页面并不是源自于固态存储器116,当休眠发生时,非源自于固态存储器116的页面被存储在休眠文件中。在恢复期间,可以将来自休眠文件的信息复制到易失性存储器112并且如上所讨论的,可以使用其他方法恢复源自于固态存储器116的信息。
图2为根据一个示例的用于生成休眠文件的方法的流程图,该休眠文件包括并非源自于固态存储器的易失性存储器的一组页面。虽然下面参考计算设备100对方法200的执行进行描述,但是可以利用用于执行方法200的其他合适的部件(例如,计算设备400)。此外,可以将执行方法200的部件扩展到多个设备或附件。可以以存储在机器可读存储介质上的可执行指令的形式和/或电子电路的形式实现方法200。
方法200可以在202处开始,在202处计算设备100可以处于开机状态并且维护包括与易失性存储器中的页面关联的来源类型的页表。在一个示例中,来源类型可以是存储器的第一类型,例如固态存储器或不是存储器的第一类型,例如存储器的第二类型,如旋转式硬盘驱动器。因此,页表可以针对多个页面中的每个页面指示相应页面是否源自于固态存储器和/或相应页面是否是有效的。页表也可以执行常规页表职责,例如提供从虚拟地址空间到物理地址空间的映射。
在使用计算设备100的过程期间,计算设备100可以利用休眠过程进入低功率休眠状态。在204处,休眠模块生成包括易失性存储器中有效的并且并非源自于固态存储器的一组页面的休眠文件。一组页面可以包括源自于硬盘驱动器的页面,在非易失性存储器中修改和/或创建的页面等。休眠文件也可以包括启用从休眠状态的恢复的页表。休眠文件可以被存储在非易失性存储器上,例如旋转式硬盘驱动器或固态驱动器。接下来,在206处,计算设备100可以进入休眠模式。通过从易失性存储器移除电源,进入休眠模式的过程可以清除易失性存储器。
图3为根据一个示例的用于从休眠中恢复计算设备的方法的流程图。尽管下面参考计算设备100对方法300的执行进行描述,但是可以利用用于执行方法300的其他合适的部件(例如,计算设备400)。此外,可以将执行方法300的部件扩展到多个设备或机箱。可以以存储在机器可读存储介质上的可执行指令的形式和/或电子电路的形式实现方法300。
可以在计算设备100运行的状态下开始方法300。可以触发计算设备100使其进入休眠状态。为了进入休眠状态,休眠过程可以控制计算设备的页表。在302处,休眠过程可以使页表中存储器中的多个页面中源自于固态存储器的每个页面的有效性被设置为无效。在304处,用休眠文件存储页表。在一些示例中,可以将页表存储为单独的文件。在其他示例中,页表可以作为休眠文件的一部分被包括。在306处,计算设备100进入休眠模式或状态。因此,易失性存储器被清除。
接下来,可以激活计算设备100。计算设备100一旦被激活可以实行恢复过程。因此,计算设备100可以确定从休眠模式恢复设备。这可以是由于计算设备100启动以从休眠状态恢复的过程中的触发而引起。这样的触发的示例是在休眠期间设置的标志。在308处,在从休眠恢复的过程中,从休眠文件和/或另一个文件读取页表。页表可以用于将设备恢复到与休眠前计算设备100所处的状态等同的状态。在一些示例中,等同状态是可以以与休眠前的状态相同的方式运行的状态。此外,在310处,计算设备可以将来自休眠文件的每个有效页面放置到易失性存储器中。在一些示例中,如果页面被存储在休眠文件中,则该页面是有效的。
在一些示例中,易失性存储器会有存储在固态存储器并且没有使用休眠文件恢复的存储器分段的页面错误。在一个示例中,等同状态可以包括使用页面错误来触发将存储在固态存储器上的信息读取到易失性存储器。在另一个示例中,可以使用页表来读取没有被存储在休眠文件中的信息的存储器位置。作为后台进程,计算设备100可以通过将有效并且源自于固态存储器的页面从固态存储器读取到易失性存储器来恢复计算设备的状态。
图4为根据一个示例的能够生成休眠文件的设备的框图,该休眠文件包括并非源自于固态存储器的一组页面。计算设备400包括,例如处理器410和包括用于改进的休眠/恢复过程的指令422、424和426的机器可读存储介质420。计算设备400可以是,例如笔记本电脑、薄板计算设备、便携式阅读设备、无线电子邮件设备、手机、工作站或任何其他计算设备。
处理器410可以为至少一个中央处理单元(CPU)、至少一个基于半导体的微处理器、至少一个图形处理单元(GPU)、适于提取和执行存储在机器可读存储介质420中的指令的其他硬件设备、或其组合。例如,处理器410可以包括芯片上多个核,包括多个芯片上的多个核、多个设备上的多个核(例如,如果计算设备400包括多个节点设备)、或其组合。处理器410可以提取、解码和执行指令422、424、426来控制计算设备400以及控制计算设备400的休眠。作为替代方案或者除了提取和执行指令之外,计算设备410可以包括至少一个集成电路(IC)、其他控制逻辑、其他电子电路或其组合,其组合包括用于执行指令422、424、426的功能的多个电子部件。
机器可读存储介质420可以是任何包含或存储可执行指令的电子存储设备、磁存储设备、光存储设备或其他物理存储设备。因此,机器可读存储介质可以是,例如随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、存储设备、光盘只读存储器(CD-ROM)等。因此,机器可读存储介质可以是非易失性存储介质。如本文详细描述的,机器可读存储介质420可以编码有一系列用于使计算设备400休眠和/或从休眠状态恢复的可执行指令。
页表指令422可以用于维护存储在计算设备400的易失性存储器中的多个页面的页表。页表可以执行常规页表功能,例如存储从虚拟地址到物理地址的映射。此外,页表可以针对多个页面中的每个页面指示相应页面是否源自于固态存储器和/或相应页面是否有效。在一些示例中,当页面源自于非易失性存储器和/或页面用于存储信息时,将该页面设置为有效。在随后的时间点可以将该页面标记为无效,例如如果信息不再有效、不再有用,访问信息的程序停止使用信息或关闭程序本身等。
休眠指令424可以用于确定使设备进入休眠模式。在一些示例中,这可以由在计算设备400上运行的操作系统控制或发起。可以在处理器410上执行休眠指令424以生成包含易失性存储器中的一组页面的休眠文件,该一组页面是有效的并且不是源自于固态存储器。该休眠文件可以被存储在非易失性存储器上,例如旋转式硬盘驱动器或固态存储器。
在一个示例中,在休眠过程期间,休眠指令424可以引起对页表的改变。源自于固态存储器的页面可以在页表中被设置为无效。这可以基于与每个页面关联的源寄存器。也可以用休眠文件存储页表,例如将页表作为休眠文件的一部分或者作为在恢复到休眠状态的期间可由处理器410访问的另一个文件。
计算设备400可以确定从休眠状态恢复设备,例如启动。在恢复期间,可以在处理器410上执行恢复指令426。处理器410可以读取与休眠文件关联的页表。可以将休眠文件中的每个有效页面复制或放置到易失性存储器中。
如上所述,在一个示例中,源自于固态存储器的页面可以在页表中被设置为无效。因此,在恢复期间,不将源自于固态存储器的页面复制到易失性存储器。相反,在计算设备400上执行的过程可以一直等到该页面被使用时,引起将该页面从固态存储器读取到易失性存储器的错误。
在另一个示例中,并不放弃来自固态存储器的页面。相反,该页面在固态存储器中的位置可以被指向页表或使用操作系统的虚拟存储器管理系统。在休眠文件恢复后可以恢复这些页面。此外,可以在后台恢复这些页面。
此外,尽管本文公开的各实施例涉及固态存储器和旋转式硬盘驱动器,但可在第一非易失性存储设备之间考虑相似方法,第一非易失性存储设备比当前使用的第二非易失性存储设备快一个数量级。

Claims (9)

1.一种计算设备,包括:
非易失性存储器,包括固态存储器;
易失性存储器,包括多个页面,其中所述页面中的一组页面也被存储在所述固态存储器上;
用于跟踪所述页面的页表,其中所述页表包括用于针对所述页面中的每个页面指示相应页面是否源自于所述固态存储器的源寄存器,其中所述页表进一步包括:针对所述页面中的每个页面指示相应页面是否有效的有效性寄存器,并且其中在休眠过程期间,如果所述页表指示相应页面被存储在所述固态存储器上,则相应页面的相应的有效性寄存器被设置为无效;以及
休眠模块,用于在相应页面并非源自于所述固态存储器的情况下,将所述页面中的一个或多个页面存储到所述非易失性存储器,其中所述一个或多个页面被存储在休眠文件中,并且其中所述一个或多个页面基于所述一个或多个页面中的相应页面有效并且相应的源寄存器指示所述一个或多个页面中的相应页面并非源自于所述固态存储器的确定而被存储。
2.根据权利要求1所述的计算设备,其中所述页表用所述休眠文件存储,并且其中所述易失性存储器被清除。
3.根据权利要求2所述的计算设备,进一步包括:
恢复模块,用于从所述休眠文件读取所述页表,并且其中所述恢复模块将来自所述休眠文件的每个有效页面放置到所述易失性存储器中。
4.根据权利要求1所述的计算设备,其中所述一个或多个页面被存储在休眠文件中,所述计算设备进一步包括:
恢复模块,用于读取所述页表,其中所述恢复模块将来自所述休眠文件的每个页面放置到所述易失性存储器中,并且其中所述恢复模块基于与相应页面关联的相应的源寄存器以去除优先级为基础将存储在所述固态存储器上的每个页面放置到所述易失性存储器中。
5.根据权利要求4所述的计算设备,其中所述固态存储器包括NAND闪存、NOR闪存、忆阻器和相变存储器中的至少一个,并且其中所述非易失性存储器是包括具有至少一个盘的旋转式硬盘驱动器和所述固态存储器的混合硬盘驱动器。
6.一种用于在计算设备中执行休眠的装置,包括:
用于维护存储在易失性存储器中的多个页面的页表的模块,其中所述页表针对所述页面中的每个页面指示相应页面是否源自于固态存储器以及相应页面是否有效;
用于针对所述页面中源自于固态存储器的每个页面,将所述页表中的相应页面的有效性设置为无效的模块;
用于生成包括所述页面中有效的并且非源自于固态存储器的一组页面的休眠文件的模块;
用于用所述休眠文件存储所述页表的模块;以及
用于进入清除所述易失性存储器的休眠模式的模块。
7.根据权利要求6所述的装置,进一步包括:
用于确定使所述设备从所述休眠模式恢复的模块;
用于从所述休眠文件中读取所述页表的模块;以及
用于将来自所述休眠文件的每个有效的页面放置到所述易失性存储器中的模块。
8.一种用于在计算设备中执行休眠的方法,包括:
维护存储在易失性存储器中的多个页面的页表,其中所述页表针对所述页面中的每个页面指示相应页面是否源自于固态存储器以及相应页面是否有效;
针对所述页面中源自于固态存储器的每个页面,将所述页表中的相应页面的有效性设置为无效;
生成包括所述页面中有效的并且非源自于固态存储器的一组页面的休眠文件;
用所述休眠文件存储所述页表;以及
进入清除所述易失性存储器的休眠模式。
9.根据权利要求8所述的方法,进一步包括:
确定使所述计算设备从所述休眠模式恢复;
从所述休眠文件中读取所述页表;并且
将来自所述休眠文件的每个有效的页面放置到所述易失性存储器中。
CN201280072887.4A 2012-05-29 2012-05-29 基于页面来源的休眠 Active CN104303159B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/039806 WO2013180688A1 (en) 2012-05-29 2012-05-29 Hibernation based on page source

Publications (2)

Publication Number Publication Date
CN104303159A CN104303159A (zh) 2015-01-21
CN104303159B true CN104303159B (zh) 2017-03-29

Family

ID=49673738

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280072887.4A Active CN104303159B (zh) 2012-05-29 2012-05-29 基于页面来源的休眠

Country Status (5)

Country Link
US (2) US9507709B2 (zh)
CN (1) CN104303159B (zh)
DE (1) DE112012006454T5 (zh)
GB (1) GB2517101B (zh)
WO (1) WO2013180688A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017048283A1 (en) * 2015-09-18 2017-03-23 Hewlett-Packard Development Company, L.P. System memory migration
US20170322740A1 (en) * 2016-05-09 2017-11-09 Microsoft Technology Licensing, Llc Selective data persistence in computing systems
US10394304B2 (en) * 2016-12-07 2019-08-27 Microsoft Technology Licensing, Llc Optimized power transitions based on user or platform conditions
US10817423B2 (en) 2018-10-10 2020-10-27 Micron Technology, Inc. Memory mapping for hibernation
CN110989820A (zh) * 2019-11-29 2020-04-10 上海庆科信息技术有限公司 处理器功耗的控制方法、装置、处理器及电子装置
US20210232504A1 (en) * 2021-04-09 2021-07-29 Intel Corporation Avoiding processor stall when accessing coherent memory device in low power

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6609182B1 (en) * 2000-01-20 2003-08-19 Microsoft Corporation Smart hibernation on an operating system with page translation
CN1662869A (zh) * 2002-06-26 2005-08-31 英特尔公司 休眠保护
CN102163151A (zh) * 2009-10-14 2011-08-24 中正大学 快速开关机的方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694451B2 (en) 2000-12-07 2004-02-17 Hewlett-Packard Development Company, L.P. Method for redundant suspend to RAM
US6546472B2 (en) * 2000-12-29 2003-04-08 Hewlett-Packard Development Company, L.P. Fast suspend to disk
US7305492B2 (en) 2001-07-06 2007-12-04 Juniper Networks, Inc. Content service aggregation system
US7519808B2 (en) * 2006-04-25 2009-04-14 Apple Inc. Method and apparatus for quickly reanimating devices from hibernation
JP4595937B2 (ja) 2006-12-28 2010-12-08 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム
ITMI20071012A1 (it) 2007-05-18 2008-11-19 St Microelectronics Srl Dispositivo di memoria migliorato a veloce programmazione
US20090313416A1 (en) 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
US8621144B2 (en) 2008-06-26 2013-12-31 Intel Corporation Accelerated resume from hibernation in a cached disk system
JP4498456B1 (ja) * 2009-02-19 2010-07-07 株式会社東芝 データ記憶制御装置及びデータ記憶制御方法
US9495173B2 (en) * 2011-12-19 2016-11-15 Sandisk Technologies Llc Systems and methods for managing data in a device for hibernation states
TW201327160A (zh) * 2011-12-21 2013-07-01 Ind Tech Res Inst 於休眠機制之方法及其電腦系統
US20130212317A1 (en) * 2012-02-13 2013-08-15 Shai Traister Storage and Host Devices for Overlapping Storage Areas for a Hibernation File and Cached Data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6609182B1 (en) * 2000-01-20 2003-08-19 Microsoft Corporation Smart hibernation on an operating system with page translation
CN1662869A (zh) * 2002-06-26 2005-08-31 英特尔公司 休眠保护
CN102163151A (zh) * 2009-10-14 2011-08-24 中正大学 快速开关机的方法

Also Published As

Publication number Publication date
GB201419259D0 (en) 2014-12-10
GB2517101B (en) 2020-04-29
GB2517101A (en) 2015-02-11
DE112012006454T5 (de) 2015-02-26
CN104303159A (zh) 2015-01-21
US9507709B2 (en) 2016-11-29
US20150067241A1 (en) 2015-03-05
US10162760B2 (en) 2018-12-25
WO2013180688A1 (en) 2013-12-05
US20170031833A1 (en) 2017-02-02

Similar Documents

Publication Publication Date Title
CN104303159B (zh) 基于页面来源的休眠
US9720616B2 (en) Data-retention controller/driver for stand-alone or hosted card reader, solid-state-drive (SSD), or super-enhanced-endurance SSD (SEED)
CN104572478B (zh) 数据存取方法和数据存取装置
CN103988183B (zh) 2级存储器分级结构中的存储器侧高速缓存的动态部分断电
US10127166B2 (en) Data storage controller with multiple pipelines
US8880775B2 (en) System and method of garbage collection in a memory device
EP2549385B1 (en) Non-volatile temporary data handling
KR20170118594A (ko) 가비지 컬렉션에 대한 유효성 추적
CN104423888B (zh) 数据写入方法、存储器控制电路单元与存储器存储装置
CN101981551B (zh) 用于高速缓存利用的设备和方法
JP2014160450A (ja) データストレージデバイスおよび書き込み方法
CN103049224B (zh) 将数据导入物理磁带的方法、装置和系统
CN101782875A (zh) 存储设备和数据存储方法
CN107066068A (zh) 存储装置及存储装置内低功耗存储器存取方法
CN108694101B (zh) 存储器侧高速缓存内容的持久性高速缓存
TWI692688B (zh) 快閃記憶體控制器及相關電子裝置
CN102012874B (zh) 带有资源管理器的usb存储设备
CN105138294B (zh) 一种硬盘设备及信息处理方法
CN105653468B (zh) 一种使用mram的存储设备
CN104268005B (zh) 虚拟机唤醒方法和装置
CN108089820A (zh) 一种混合使用mram和dram的存储装置
JPS60179857A (ja) キヤツシユ装置の制御方式
CN111324549A (zh) 一种存储器及其控制方法和装置
US11816349B2 (en) Reduce command latency using block pre-erase
CN201886784U (zh) 带有资源管理器的usb存储设备

Legal Events

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