CN102890620B - 非易失性临时数据处理 - Google Patents
非易失性临时数据处理 Download PDFInfo
- Publication number
- CN102890620B CN102890620B CN201210248924.4A CN201210248924A CN102890620B CN 102890620 B CN102890620 B CN 102890620B CN 201210248924 A CN201210248924 A CN 201210248924A CN 102890620 B CN102890620 B CN 102890620B
- Authority
- CN
- China
- Prior art keywords
- data
- page
- electronic equipment
- ephemeral data
- ephemeral
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及非易失性临时数据处理。提供了处理存储在诸如NAND闪存的非易失性存储器中的临时数据的***和方法。临时数据可以包括休眠数据或电子设备的仅一个启动周期所需的任何其它数据。当在非易失性存储器的一个或多个页面中存储临时数据时,电子设备可以将临时标记存储为至少一个页面中的元数据的一部分。以该方式,在下一次启动电子设备时,电子设备可以使用该临时标记来确定相关联的页面包含不需要的数据。电子设备因此可以使该页面无效并从其元数据表中忽略该页面。
Description
技术领域
本公开涉及非易失性临时数据处理。
背景技术
NAND闪存以及其它类型的非易失性存储器(NVM)通常被应用在电子设备中用作大容量存储。例如,诸如便携式媒体播放器的消费电子设备往往包括NAND闪存来存储音乐、视频以及其它媒体程序。这样的数据通常打算要长期存储,例如,以天、月或甚至年的量级。
NVM还可被用在电子设备中用于不同于长期存储的其它目的。例如,电子设备可能临时将来自易失性存储器的数据存储在NVM中以使得易失性存储器能够在降低功率的休眠状态中断电而不丢失数据。又例如,NVM可以用在虚拟存储器方案中,来增加电子设备的易失性存储器所表现出的容量。
发明内容
提供了用于处理打算短期存储在非易失性存储器(诸如闪存)中的数据的***和方法。通过允许与长期数据不同地处理短期存储,存储器管理效率和NVM的有效性都能够被增加。
短期存储可以包括在NVM中存储仅在操作***的当前实例期间被需要的数据,而一旦电子设备关机或重新启动(或甚至更早)就不再有用。该数据可以被称作“非易失性临时数据”或“NV临时数据”,因为,该数据是被临时需要的,但是被存储在持久的非易失性介质中。NV临时数据可以包括例如基于硬件的休眠数据、应用产生的数据、基于应用的休眠数据、交换文件和其它临时文件。
在一些实施例中,当存储NV临时数据时,电子设备可以使用临时标记来修饰NV临时数据。例如,对于电子设备在其中存储NV临时数据的NVM的每个页面,电子设备可以在页面的元数据中包括临时标记。可替换地,电子设备可以在存储NV临时数据的块的至少一个页面中提供临时标记。这使得电子设备能够将NV临时数据与在多次设备启动(bootup)中都需要的信息进行区分。
在电子设备的启动期间,电子设备可以被配置为执行各种启动步骤,例如构建元数据表。元数据表可以包括例如表示文件***发布的哪些逻辑地址(例如逻辑块地址(LBA))当前被分配的表,和/或逻辑至物理地址映射。电子设备可以通过扫描NVM的页面并确定每个页面是否包括临时标记(或每个页面是否位于被标记用于存储NV临时数据的块中)来创建元数据表。如果页面包括临时标记,则包括在该页面中的数据仅在上次启动电子设备时有用,并且在当前启动中不需要。因此,电子设备可以将该页面标记为具有无效数据并从元数据表中忽略该页面(及其存储的元数据)。通过在启动时执行这样的清理操作,电子设备可以保证从一开始就高效使用NVM存储位置。即,在当前启动周期中的任何时刻,电子设备都不在垃圾收集或磨损均衡的过程中执行不必要的操作来维护废弃的NV临时数据。
在一些实施例中,电子设备可以基于数据是否为NV临时数据来选择存储位置和/或用于存储数据的编程技术。例如,电子设备可以选择较低性能的存储位置,诸如较小可靠性的页面或块(例如,高度循环的块),来存储NV临时数据。在一些实施例中,电子设备可以选择较高速度的存储位置或用于存储NV临时数据的编程技术,诸如单层单元(SLC)块。
附图说明
本发明的上述和其它方面和优点将在考虑了下面结合附图的具体描述之后变得清楚,附图中相同标号表示相同部件,其中:
图1是具有根据本发明的各种实施例配置的非易失性存储器的示例性电子设备的框图;
图2和图3是根据本发明的各种实施例的存储非易失性临时数据的示例性非易失性存储位置的图形示意;
图4是根据本发明的各种实施例的使用临时标记修饰非易失性存储器中的非易失性临时数据的示例性过程的流程图;以及
图5是根据本发明的各种实施例的用于在电子设备启动时处理非易失性临时数据的示例性过程的流程图。
具体实施方式
图1是示例性电子设备100的框图。在一些实施例中,电子设备100可以是或可以包括便携式媒体播放器(例如由加州库比蒂诺的苹果公司出品的iPodTM)、蜂窝电话(例如由苹果公司出品的iPhoneTM)、口袋大小的个人计算机、个人数字助理(PDA)、桌上型计算机、膝上型计算机、以及任何其它适当类型的电子设备或***。
电子设备100可以包括片上***(SoC)110和非易失性存储器(NVM)120。NVM120可以包括基于浮栅或电荷捕获技术的NAND闪存、NOR闪存、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、铁电RAM(FRAM)、磁阻RAM(MRAM)或其任意组合。
NVM120可以被组织成“块”,其是最小的可擦除单元,并且可以进一步被组织成“页面”,其可以是可被编程或读取的最小的单元。在一些实施例中,NVM120可以包括多个集成电路,每个集成电路可以具有多个块。来自相应集成电路的块(例如具有相同位置或块编号的块)可以形成被称作“超级块”的逻辑单元。NVM120的每个存储位置(例如,页面或块)可以使用物理地址(例如物理页面地址或物理块地址)来寻址。尽管在图1中仅示出了一个NVM,但是可替换地,电子设备100可以包括多个NVM封装。
片上***110可以包括控制电路112、存储器114以及NVM接口116。控制电路112通常可以控制SoC110以及电子设备100的一般操作和功能。控制电路112可以包括任何适当的部件、电路或逻辑,例如一个或多个处理器。控制电路112可以在程序的控制下操作,所述程序诸如应用、操作***或加载在存储器114中的NVM驱动器(例如NVM驱动器117)。
存储器114可以包括任何适当类型的易失性存储器,例如随机存取存储器(RAM)(例如,静态RAM(SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、双倍速率(DDR)RAM)、高速缓存存储器、或其任意组合。在一些实施例中,存储器114可以作为实现为控制电路112的一部分的任何处理器的主存储器。在这些和其它实施例中,存储器114可以存储有时(即同时或不同时间)也可以作为NV临时数据被存储在NVM120中的数据。如上所述,NV临时数据包括存储在NVM中的仅在操作***的当前实例期间被需要的数据,而一旦电子设备100被关闭或重新启动(或更早)就不再有用。
例如,存储器114和/或NVM120可以以基于硬件的休眠数据的形式存储NV临时数据。基于硬件的休眠数据可以包括响应于进入基于硬件的休眠状态(例如,存储器114被断电的降低功率状态),从存储器114转移至NVM120的数据。因此,基于硬件的休眠数据可以包括使得电子设备100在其从休眠状态醒来时能够返回至其休眠之前的操作状态(例如在进入降低功率状态之前所处的状态)的数据。基于硬件的休眠数据可以表示设备的硬件和软件的当前操作状态。例如,设备状态数据可以指出哪些程序正活跃地运行,或更特别地,哪个媒体资产(例如歌曲)正在被播放,或用户当前访问的图形用户界面中的位置。因为如果用户在硬件休眠期间关闭电子设备100,用户不会期望电子设备100返回到其休眠之前的操作状态,所以这样的基于硬件的休眠数据是NV临时数据的一个示例。
在一些实施例中,存储器114和/或NVM120可以将应用产生的数据存储为NV临时数据。应用产生的数据可以包括与应用相关联或由其产生的任何临时有用的数据,诸如关于游戏应用中当前游戏的数据。在一些实施例中,应用可以向操作***和文件***提供关于应用产生的数据的临时性质的指示,所以该数据可以被最终作为NV临时数据存储在NVM120中。
在一些情形中,存储器114和/或NVM120可以用于以基于应用的休眠数据的形式存储NV临时数据。基于应用的休眠数据可以包括响应于特定应用或程序进入休眠状态而从存储器114转移至NVM120的数据,诸如应用产生的数据。当空间不足并且该应用不是正在活跃使用时,电子设备100可以选择使该应用休眠来释放存储器114中的空间。因此,基于应用的休眠数据可以包括使得电子设备100能够使休眠的应用返回至其休眠之前的操作状态的数据。因为如果电子设备100被重新启动,用户不会期望休眠应用返回至其完全前一状态,所以基于应用的休眠数据是NV临时数据的另一示例。
在这些和其它情形中,存储器114和/或NVM120可以用于结合虚拟存储器方案来存储NV临时数据。例如,应用产生的数据、基于应用的休眠数据或由一个或多个应用使用的任何其它数据可以从存储器114转移至NVM120中的“交换文件”或“页面文件”。在此,数据可以从存储器114被页面调出(pageout)到存储在NVM120中的文件中,从而在需要空间时释放存储器114中的空间。用在虚拟存储器方案中的将NV临时数据在存储器114和NVM120之间传递的其它文件类型也可以被想到。因为一旦电子设备100被关闭,通常就不再需要在虚拟存储器方案中使用的数据,所以交换文件是NV临时数据的另一示例。
存储器114和/或NVM120可以存储任何适当类型的NV临时数据,例如通常存储在基于UNIX***上的“临时文件(tempfile)”中的任何数据。例如,NV临时数据可以包括存储在NVM120上的临时文件中的数据,该临时文件由一个程序或应用创建以将该数据传递至另一程序或应用。又例如,NV临时数据可以包括存储在NVM120上的临时文件中的短期数据,其太大以至于不适合存储器114或是会占用存储器114中多于预定空间量的空间。
为了使SoC110的部件(例如存储器114)从/往NVM120传递信息,SoC110可以包括NVM接口116。NVM接口116可以包括被配置作为NVM120与SoC110的非特定于NVM的部件之间的接口或驱动器的硬件、软件和固件的任何适当组合。例如,NVM接口116可以包括NVM驱动器117来提供软件/固件接口,其使得操作***和文件***间接存取NVM120,从而使得操作***和文件***发布读或写请求以在NVM120中存储临时数据或从其检索NV临时数据。NVM接口116还可以包括总线控制器118,其可以包括使NVM驱动器117能够使用NVM120的总线规范(例如数据率)访问NVM120的任何适当硬件部件。
NVM接口116可以执行各种任务来管理NVM120的存储位置,例如,垃圾收集、磨损均衡以及坏块管理。NVM驱动器117可以被配置为维护或产生“元数据”,其可以是被NVM驱动器117用来管理NVM120和其中的存储位置的任何存储器管理数据。NVM驱动器117可被配置为维护元数据表或映射,例如表示由文件***发布的哪些逻辑地址(例如,逻辑块地址(LBA))当前被分配以供使用的表和/或NVM120的逻辑地址和物理地址之间的映射。逻辑地址由文件***基于读或写请求而发布,NVM驱动器170可以将逻辑地址映射到实际对应于NVM120的物理存储位置的不同物理地址。NVM驱动器117因此可以维护元数据表,从而正确处理来自文件***的读和写请求。
NVM接口116在图1中描述为完全在SoC110上实现。在一些实施例中,NVM接口116的一些部件以及NVM驱动器117的一些功能可以由包括在例如NVM120中的单独的存储器控制器(例如闪存控制器)实现和执行。因此,应该理解对NVM接口116或NVM相关功能的任何描述不限于在SoC110上实现的部件或动作。
NVM接口116可以接收来自文件***的写请求以存储多种数据类型的任一种。例如,文件***可以指示NVM接口116无限期地存储媒体资产,例如歌曲和视频。在其它情形中,文件***可以指示NVM接口116在NVM120中存储NV临时数据,例如基于硬件的休眠数据、应用产生的数据、基于应用的休眠数据、交换文件或其它临时数据。因为NV临时数据具有不同于其它数据形式的预期寿命(即,长于电子设备100的一个启动周期)的预期寿命(即,电子设备100的一个启动周期),所以NVM接口116可以被配置为以能够增加NVM120中存储器使用的有效性和效率的不同方式处理NV临时数据。
在一些实施例中,NVM接口116可以基于数据是否为临时数据来存储数据来选择要在其中存储数据的存储位置(即,页面、块、或超级块)。例如,NVM接口116可以选择较低性能的存储位置来存储NV临时数据。较低性能的存储位置可以是较不可靠的页面或块,例如高度循环的块(即,已经经历较多擦除周期并且可能因此已经经历较多退化的块)。NVM接口116可以选择较高性能的存储位置来存储非临时数据,因为预期非临时数据将在NVM120中保持更长的时间。
在一些实施例中,NVM接口116可以选择较高速度的存储位置或编程技术来存储NV临时数据。以该方式,在进入降低功率的休眠模式时或在其它多种情形中,在存储器114和NVM120之间转移数据之间的延迟被减少,其可能对虚拟存储器方案有利。为了提高速度,NVM接口116可以选择单层单元(SLC)块或可以在使用NV临时数据对块编程时减少调谐分辨率。NVM接口116可以选择SLC块来增加编程速度,同时还改进可靠性。
在一些实施例中,NVM接口116可以通过在将NV临时数据存储在NVM120中时使用“临时标记”修饰NV临时数据来以不同于其它数据的方式处理NV临时数据。以该方式,当数据从NVM120被读回时,NVM接口116可以快速并高效地将NV临时数据与打算存储更长时间的其它信息区别开。
图2示出了NVM接口116可以使用临时标记修饰NV临时数据的一种方式。图2是非易失性存储器(例如图1中的NVM120)的块中的多个页面的图形示意。如图所示,块的每个页面可以用于存储数据字段和相关联的元数据字段。每个数据字段可以存储任何适当类型的数据,例如NV临时数据或文件***请求存储的任何数据(例如媒体资产)。相同页面的元数据字段可以存储与数据字段中的数据相关联的元数据,例如由NVM驱动器117接收或产生的任何存储器管理数据,包括纠错码(ECC)数据、用于管理逻辑和物理地址(例如LBA)之间的映射的任何信息等等。
元数据字段可以包括用于存储指示数据字段中的数据是否为NV临时数据的标记的空间。例如,图2中的页面1和2的元数据字段中的“T”(或“临时”)标记表示相关联的数据字段包括NV临时数据,而该块的页面0和最后一个页面的元数据字段中的“P”(或“持久”)标记表示在相关联的数据字段中的数据包括打算持久且更长期存储的数据。“T”临时标记和“P”持久标记可以使用任何适当方式被实现。即,这些标记可以包括任何适当数量的位(即,一个或多个位),并且“T”和“P”标记的实际位或字值可以分别采用任何适当的预定的位模式。
在一些实施例中,NVM接口116可以不使用特定“P”标记,而可以仅使用“T”临时标记来表示NV临时数据存储在NVM120中的什么地方。在这些实施例中,在读回页面时,NVM接口116可以基于元数据字段中没有临时标记来确定页面的数据字段不包含NV临时数据。
图2提供了相同块可以既包括NV临时数据也包括持久数据的示例。在其它实施例中,诸如图3中示出的实施例,整个块或超级块可以被用于存储NV临时数据或持久数据。
图3是跨非易失性存储器(例如图1的NVM120)的多个集成电路的多个块的图形示意。每列表示一个不同的集成电路,每行表示一个不同的超级块。因此,如第一集成电路(IC0)中所示,整个块(即块2)可以被用于存储NV临时数据。在一些实施例中,NVM接口116可以在块的每个被使用的页面中设置临时标记,这可以为NVM接口116可以正确地将该块解释为存储NV临时数据提供额外的保险。在其它实施例中,NVM接口116可以在块中的页面子集中存储临时标记。例如,NVM接口116可以仅在块的第一个页面中存储临时标记,从而NVM接口116稍后在从第一个页面至最后一个页面读取块时确定该块是否包含NV临时数据。可替换地,NVM接口116可以仅在最后一个页面中存储临时标记(从而NVM接口116可以稍后从最后一个页面向第一个页面读取该块),或NVM接口116可以在块的第一个页面和最后一个页面中都存储临时标记。
在一些实施例中,NVM接口116可以选择整个超级块供存储NV临时数据使用。这在图3的第五个超级块(超级块4)中示出,其中该超级块中的所有块可以用于存储NV临时数据。对于单个块的情况,NVM接口116可以或可以不在超级块的所有被使用页面中存储临时标记。相反,NVM接口116可以仅在超级块的每个块的第一个页面中、仅在超级块的每个块的最后一个页面中、在每个块的第一个和最后一个页面中、或在超级块的块子集的一个或多个页面中存储临时标记。
尽管为了清楚没有在图中示出,但是不包括“T”临时标记的块可以(或可以不)在一些或所有页面中包括“P”持久标记。此外,尽管示出了5个集成电路和6个超级块(总计30个块),但是应该理解NVM120可以包括任何其它适当数量的集成电路和超级块。
NVM接口116可以使用修饰NV临时数据的临时标记,以便以不同于其它类型的数据的方式来处理NV临时数据。例如,临时标记可以影响电子设备100的启动过程。一旦启动电子设备100,NVM驱动器117可以执行一系列初始化步骤,从而NVM驱动器117可以正确地确定NVM120的当前状态。包括在初始化步骤中的可以是重新构建一个或多个元数据表或映射,例如表示哪些逻辑地址正被使用的表以及逻辑至物理地址映射。
为了重新构建表,NVM驱动器117可以读取NVM120的每个页面,并且对于每个页面,可以确定是否要将该页面包括在表中。如果NVM驱动器117确定该页面被指定有临时标记(或该页面位于当前被指定有临时标记的块或超级块中),NVM驱动器117可以将该页面从表中略去。这是因为,该页面已经被用于存储NV临时数据,而该NV临时数据仅在电子设备100的前一启动过程中有效。因此,NVM驱动器117可以将该页面标记为无效,从而,在一些适当时刻,该页面可以被释放(例如,在垃圾收集或磨损均衡过程中),并且可以用于存储其它信息。因为NVM驱动器117正是在启动时使该页面无效并将其从表中忽略,所以NVM120的存储器使用可以立即变得高效。即,在当前启动周期中的任何时刻,NVM驱动器117都不在垃圾收集或磨损均衡的过程中执行不必要的操作来维护现在废弃的NV临时数据。
现在参考图4和图5,示出了根据本发明的各种实施例的示例性过程的流程图。这些示例性过程的步骤可以由电子设备中的任何适当部件或部件组合执行,例如,由在NVM驱动器117的控制下操作的控制电路112(图1)来执行。
首先看图4,示出了在诸如NVM120(图1)的NVM中存储NV临时数据时使用临时标记来修饰NV临时数据的过程400。过程400可以开始于步骤402,在此文件***可以决定在NVM中存储数据。对于NV临时数据,这可以例如在易失性存储器空间不足时或在易失性存储器需要在降低功率状态(即,休眠状态)下被断电时发生。
在步骤404,数据可以从文件***提供至NVM接口(例如NVM驱动器)以用于在NVM中存储。然后,在步骤406,NVM接口可以确定该数据是否为应被存储为NV临时数据的临时数据。在一些实施例中,NVM接口可以基于从文件***接收的写请求来解释该数据是否为临时数据。文件***可能已经响应于来自应用的指示而发布了该数据是临时数据的写请求信令。
如果在步骤406,NVM接口确定该数据是NV临时数据,则NVM接口可以在步骤408为该数据准备元数据,其中元数据包括临时标记。在步骤408(或步骤412,下面讨论)准备元数据可以包括确定和维护从逻辑地址(随着写请求接收的)至与NVM相关联的物理地址的映射。在步骤410,NVM接口还可以选择较低性能和/或较高速度的存储位置(即,页面、块、或超级块)或编程技术来存储该数据,这是因为该数据预期在非易失性存储器中具有短寿命。例如,NVM接口可以选择较不可靠的块(例如,高度循环的块)或SLC块来存储该数据。
否则,如果在步骤406,NVM接口确定数据不是NV临时数据,则在步骤412,NVM接口可以准备不包括临时标记的元数据(以及可以相反地包括持久标记)。在该种情况下,因为该数据可能在非易失性存储器中长期存储,所以在步骤414,NVM接口可以选择较高性能和/或较低速度的存储位置或编程技术来存储该数据。例如,NVM接口可以选择更可靠的块或MLC块来存储该数据。
从步骤410或步骤414,过程400可以继续至步骤416,其中NVM接口可以在NVM中所选择的一个或多个页面中存储该数据(无论其是NV临时数据还是其它数据)和至少一些其相关联的元数据。过程400然后可以在步骤418结束。
现在转向图5,示出了用于在电子设备启动时处理NV临时数据的过程500。在电子设备启动时,过程500可以开始于步骤502。在步骤504,NVM接口可以执行各种启动步骤,从而NVM接口可以确定NVM的初始状态及其存储位置。初始启动步骤因此可以包括构建元数据表,例如表示哪些逻辑地址被分配使用的表和/或包含有效数据的NVM的每个页面的逻辑至物理地址映射。
从步骤504,NVM接口可以通过扫描和处理NVM的每个页面来准备表。特别地,在步骤506,NVM接口可以从NVM读取第一页面,并且在步骤508,NVM接口可以确定该第一页面在该页面的元数据字段中是否包括临时标记。如果不包括,则第一页面不包括NV临时数据,从而在步骤510,NVM接口可以将该页面加至表中。例如,NVM接口可以确定(例如从元数据字段)与该页面相关联的逻辑地址并且可以将该页面的逻辑至物理地址映射添加至适当的表,或者NVM接口可以在表中指出当前被文件***分配的逻辑地址。
相反,如果在步骤508,NVM接口确定该页面在该页面的元数据字段中包括临时标记,则过程500可以继续到步骤512。因为临时标记表示该页面存储NV临时数据,该NV临时数据因为电子设备已经重新启动而不再有效,所以过程500可以分支到步骤512。在步骤512,NVM接口可以出于重新构建元数据表的目的而忽略该页面中的该元数据。例如,尽管存储在该页面中的逻辑地址本来已经表示该逻辑地址在被文件***使用,但是NVM接口可以忽略该页面中该逻辑地址的存在。然后,在步骤514,NVM接口可以将该页面标记为包含无效数据。这可以使得NVM接口在适当时刻对该页面执行垃圾收集以释放空间来存储其它信息。
从步骤510或步骤514,过程500可以继续至步骤516,在此NVM接口可以确定元数据表的构建是否完成。该确定可以涉及确定是否存在其它页面还没有被读取和处理。如果存在其它页面需要被考虑以包括在元数据表中,则过程500可以返回至步骤506,从而NVM接口可以读取NVM的另一个页面。否则,如果不存在其它页面,则过程500可以在步骤518结束。
应该理解分别在图4和图5中的过程400和500的步骤仅是示例性的。在不背离本发明的范围的情况下,任何步骤可以被修改、删除或组合,并且另外的步骤可以被包括。
所描述的本发明的实施例是出于说明而非限制的目的而呈现的。
Claims (16)
1.一种电子设备,包括:
易失性存储器,用于存储与在休眠之前状态中操作的至少一个应用相关联的应用产生的数据;
非易失性存储器(NVM),包括多个页面;以及
控制电路,操作用于:
接收关于在所述休眠之前状态中操作的应用正进入休眠状态的指示;以及
将与进入所述休眠状态的所述应用相关联的应用产生的数据存储在所述非易失性存储器中作为临时数据,其中所述控制电路在存储有所述临时数据的页面中的至少一个页面中存储临时标记,并且其中,所述临时数据包括所述电子设备的仅一个启动周期所需的数据,使得在所述设备重新启动时,包含所述临时标记的任何页面被忽略并且不被包含在逻辑到物理映射表中,并且其中,所述应用产生的数据包括使得在所述休眠状态的应用能够返回到休眠之前操作状态的数据。
2.根据权利要求1所述的电子设备,其中所述电子设备还操作用于:
为所述临时数据准备元数据;以及
将所述元数据和所述临时标记存储在存储有所述临时数据的页面中的所述至少一个页面的元数据字段中。
3.根据权利要求1所述的电子设备,其中所述临时标记包括预定的位模式。
4.根据权利要求1所述的电子设备,其中所述多个页面被组织为块,并且所述控制电路还操作用于:
选择所述块之一来存储所述临时数据;以及
在所选择的块的至少一个页面中存储临时标记。
5.根据权利要求4所述的电子设备,其中所述控制电路还操作用于在所选择的块的所有页面中存储临时标记。
6.根据权利要求1所述的电子设备,其中所述控制电路还操作用于:
识别所述易失性存储器处于低内存状态;以及
响应于识别出所述低内存状态,将所述临时数据存储在所述非易失性存储器中。
7.根据权利要求1所述的电子设备,其中所述控制电路还操作用于选择较低性能的页面来存储所述临时数据。
8.根据权利要求1所述的电子设备,其中所述控制电路还操作用于选择较高速度的编程技术来存储所述临时数据。
9.一种在电子设备的非易失性存储器中存储数据的方法,其中所述非易失性存储器包括多个页面,所述方法包括:
在易失性存储器存储与在休眠之前状态中操作的至少一个应用相关联的应用产生的数据;
接收关于在所述休眠之前状态中操作的应用正进入休眠状态的指示;
在非易失性存储器中,将与进入所述休眠状态的所述应用相关联的应用产生的数据存储在所述非易失性存储器中作为临时数据;以及
在存储有所述临时数据的页面中的至少一个页面中存储临时标记,其中,所述临时数据包括所述电子设备的仅一个启动周期所需的数据,使得在所述设备重新启动时,包含所述临时标记的任何页面被忽略并且不被包含在逻辑到物理映射表中,并且其中,所述应用产生的数据包括使得在所述休眠状态的应用能够返回到休眠之前操作状态的数据。
10.根据权利要求9所述的方法,还包括:
为所述临时数据准备元数据;以及
将所述元数据和所述临时标记存储在存储有所述临时数据的页面中的所述至少一个页面的元数据字段中。
11.根据权利要求9所述的方法,其中所述临时标记包括预定的位模式。
12.根据权利要求9所述的方法,其中所述多个页面被组织为块,并且所述方法还包括选择所述块之一来存储所述临时数据;以及在所选择的块的至少一个页面中存储临时标记。
13.根据权利要求12所述的方法,还包括在所选择的块的所有页面中存储临时标记。
14.根据权利要求9所述的方法,还包括:
识别所述易失性存储器处于低内存状态;以及
响应于识别出所述低内存状态,将所述临时数据存储在所述非易失性存储器中。
15.根据权利要求9所述的方法,还包括选择较低性能的页面来存储所述临时数据。
16.根据权利要求9所述的方法,还包括选择较高速度的编程技术来存储所述临时数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/184,647 | 2011-07-18 | ||
US13/184,647 US8949508B2 (en) | 2011-07-18 | 2011-07-18 | Non-volatile temporary data handling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102890620A CN102890620A (zh) | 2013-01-23 |
CN102890620B true CN102890620B (zh) | 2016-05-18 |
Family
ID=46548260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210248924.4A Expired - Fee Related CN102890620B (zh) | 2011-07-18 | 2012-07-18 | 非易失性临时数据处理 |
Country Status (9)
Country | Link |
---|---|
US (1) | US8949508B2 (zh) |
EP (1) | EP2549385B1 (zh) |
JP (1) | JP5683023B2 (zh) |
KR (2) | KR101385789B1 (zh) |
CN (1) | CN102890620B (zh) |
AU (1) | AU2012205187B2 (zh) |
BR (1) | BR102012017717B1 (zh) |
TW (2) | TWI573019B (zh) |
WO (1) | WO2013012632A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8949508B2 (en) | 2011-07-18 | 2015-02-03 | Apple Inc. | Non-volatile temporary data handling |
WO2013027642A1 (en) * | 2011-08-19 | 2013-02-28 | Kabushiki Kaisha Toshiba | Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device |
US20130124778A1 (en) * | 2011-11-10 | 2013-05-16 | Greenliant Llc | Method of storing host data and meta data in a nand memory, a memory controller and a memory system |
EP2960360B1 (en) | 2013-02-22 | 2020-01-15 | Kuraray Co., Ltd. | Fiber, fabric, and nonwoven fabric |
US10528116B2 (en) | 2013-03-14 | 2020-01-07 | Seagate Technology Llc | Fast resume from hibernate |
CN107391389B (zh) | 2013-08-05 | 2020-11-24 | 慧荣科技股份有限公司 | 用来管理一记忆装置的方法以及记忆装置与控制器 |
CN107741913B (zh) | 2013-08-05 | 2021-09-07 | 慧荣科技股份有限公司 | 用来管理一记忆装置的方法、记忆装置与控制器 |
US10140477B2 (en) * | 2013-12-09 | 2018-11-27 | Thales E-Security, Inc. | Obfuscating in memory encryption keys |
FR3046266A1 (fr) * | 2015-12-28 | 2017-06-30 | Proton World Int Nv | Stockage dans une memoire flash |
US9990023B2 (en) * | 2016-03-28 | 2018-06-05 | Apple Inc. | Systems and methods for handling sudden power failures in solid state drives |
CN106569744B (zh) * | 2016-10-31 | 2020-07-14 | 华为数字技术(成都)有限公司 | 一种存储临时数据的方法及存储设备 |
CN108536611B (zh) * | 2017-03-03 | 2022-05-13 | 西部数据技术公司 | 用于损耗均衡的***和方法 |
US10956052B1 (en) * | 2017-07-21 | 2021-03-23 | EMC IP Holding Company LLC | Online address to hash (A2H) metadata scanner |
US10705918B1 (en) | 2017-07-21 | 2020-07-07 | EMC IP Holding Company LLC | Online metadata backup consistency check |
US10515701B1 (en) * | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
CN108304280A (zh) * | 2018-01-30 | 2018-07-20 | 郑州云海信息技术有限公司 | 控制异构混合内存***异常恢复的方法、bmc及装置 |
US10446254B1 (en) * | 2018-05-03 | 2019-10-15 | Western Digital Technologies, Inc. | Method for maximizing power efficiency in memory interface block |
US10936456B1 (en) | 2019-02-20 | 2021-03-02 | Apple Inc. | Handling malfunction in a memory system comprising a nonvolatile memory by monitoring bad-block patterns |
US11216388B2 (en) | 2019-04-30 | 2022-01-04 | EMC IP Holding Company LLC | Tiering between storage media in a content aware storage system |
JP6874814B2 (ja) * | 2019-10-30 | 2021-05-19 | 株式会社安川電機 | 産業機器の制御装置、産業機器の制御装置の設定システム、産業機器の制御装置の設定方法、及びプログラム |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8010A (en) * | 1851-04-01 | Peter mckinlay | ||
US9024A (en) * | 1852-06-15 | Motion of the lay in looms | ||
JP3106401B2 (ja) * | 1993-07-26 | 2000-11-06 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 情報処理システム |
JPH11242631A (ja) | 1998-02-26 | 1999-09-07 | Toshiba Corp | コンピュータシステムおよび同システムにおけるデータ保存/復元方法 |
US6209088B1 (en) | 1998-09-21 | 2001-03-27 | Microsoft Corporation | Computer hibernation implemented by a computer operating system |
US6574717B1 (en) * | 2001-05-31 | 2003-06-03 | Oracle Corporation | Techniques for time-based retention of a reusable resource |
US7467274B2 (en) * | 2001-12-31 | 2008-12-16 | Hewlett-Packard Development Company, L.P. | Method to increase the life span of limited cycle read/write media |
US7082495B2 (en) * | 2002-06-27 | 2006-07-25 | Microsoft Corporation | Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory |
JP3994071B2 (ja) | 2003-06-12 | 2007-10-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ装置、システムの稼働状態の切り換え制御方法、およびプログラム |
US7093089B2 (en) | 2003-08-18 | 2006-08-15 | Hewlett-Packard Development Company, Lp. | Systems and methods for storing data on computer systems |
GB0320142D0 (en) | 2003-08-28 | 2003-10-01 | Ibm | Data storage systems |
JP4688584B2 (ja) * | 2005-06-21 | 2011-05-25 | 株式会社日立製作所 | ストレージ装置 |
US20070234028A1 (en) | 2005-09-15 | 2007-10-04 | Rothman Michael A | Method and apparatus for quickly changing the power state of a data processing system |
KR100843543B1 (ko) | 2006-10-25 | 2008-07-04 | 삼성전자주식회사 | 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법 |
US20100049775A1 (en) * | 2007-04-26 | 2010-02-25 | Hewlett-Packard Development Company, L.P. | Method and System for Allocating Memory in a Computing Environment |
US8239639B2 (en) * | 2007-06-08 | 2012-08-07 | Sandisk Technologies Inc. | Method and apparatus for providing data type and host file information to a mass storage system |
US8214343B2 (en) * | 2008-03-19 | 2012-07-03 | Microsoft Corporation | Purposing persistent data through hardware metadata tagging |
DE102008062934A1 (de) | 2008-12-23 | 2010-06-24 | Kuka Roboter Gmbh | Vernetzte Industriesteuerung und Verfahren zum Wechsel des Betriebsmodus einer solchen Industriesteuerung |
US20100169540A1 (en) * | 2008-12-30 | 2010-07-01 | Sinclair Alan W | Method and apparatus for relocating selected data between flash partitions in a memory device |
US9098396B2 (en) * | 2009-02-13 | 2015-08-04 | Sandisk Il Ltd. | Enhancement of efficiency in power failure handling in flash memory |
US8380676B1 (en) * | 2009-05-27 | 2013-02-19 | Google Inc. | Automatic deletion of temporary files |
EP2441004B8 (en) | 2009-06-12 | 2020-02-19 | Violin Systems LLC | Memory system having persistent garbage collection |
US8688894B2 (en) * | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
WO2011031796A2 (en) | 2009-09-08 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for caching data on a solid-state storage device |
US9063886B2 (en) | 2009-09-18 | 2015-06-23 | Apple Inc. | Metadata redundancy schemes for non-volatile memories |
US8296506B2 (en) | 2009-11-09 | 2012-10-23 | Lite-On It Corporation | Method for managing a non-violate memory and computer readable medium thereof |
US8694814B1 (en) * | 2010-01-10 | 2014-04-08 | Apple Inc. | Reuse of host hibernation storage space by memory controller |
KR101678911B1 (ko) * | 2010-03-12 | 2016-11-23 | 삼성전자주식회사 | 데이터 저장 장치 및 그것을 포함하는 컴퓨팅 시스템 |
US8949508B2 (en) | 2011-07-18 | 2015-02-03 | Apple Inc. | Non-volatile temporary data handling |
-
2011
- 2011-07-18 US US13/184,647 patent/US8949508B2/en not_active Expired - Fee Related
-
2012
- 2012-07-11 WO PCT/US2012/046236 patent/WO2013012632A1/en active Application Filing
- 2012-07-17 EP EP12176705.7A patent/EP2549385B1/en not_active Not-in-force
- 2012-07-17 AU AU2012205187A patent/AU2012205187B2/en not_active Ceased
- 2012-07-18 BR BR102012017717-0A patent/BR102012017717B1/pt not_active IP Right Cessation
- 2012-07-18 JP JP2012173367A patent/JP5683023B2/ja not_active Expired - Fee Related
- 2012-07-18 CN CN201210248924.4A patent/CN102890620B/zh not_active Expired - Fee Related
- 2012-07-18 KR KR1020120078463A patent/KR101385789B1/ko active IP Right Grant
- 2012-07-18 TW TW102107952A patent/TWI573019B/zh not_active IP Right Cessation
- 2012-07-18 TW TW101125916A patent/TWI519952B/zh not_active IP Right Cessation
- 2012-08-30 KR KR1020120095776A patent/KR101818599B1/ko active IP Right Grant
Non-Patent Citations (1)
Title |
---|
"FAB:Flash-Aware Buffer Management Policy for Portable Media Players";Heeseung Jo;《IEEE》;20060531;第52卷(第2期);第487页第1列第10行-第2列第27行 * |
Also Published As
Publication number | Publication date |
---|---|
AU2012205187A1 (en) | 2013-01-31 |
US20130024600A1 (en) | 2013-01-24 |
JP5683023B2 (ja) | 2015-03-11 |
JP2013033482A (ja) | 2013-02-14 |
KR20130010449A (ko) | 2013-01-28 |
TW201324146A (zh) | 2013-06-16 |
US8949508B2 (en) | 2015-02-03 |
TW201329713A (zh) | 2013-07-16 |
TWI519952B (zh) | 2016-02-01 |
BR102012017717A2 (pt) | 2013-07-30 |
KR101818599B1 (ko) | 2018-01-15 |
BR102012017717B1 (pt) | 2020-09-15 |
WO2013012632A1 (en) | 2013-01-24 |
EP2549385B1 (en) | 2015-06-10 |
EP2549385A1 (en) | 2013-01-23 |
AU2012205187B2 (en) | 2014-10-16 |
CN102890620A (zh) | 2013-01-23 |
KR20130010447A (ko) | 2013-01-28 |
TWI573019B (zh) | 2017-03-01 |
KR101385789B1 (ko) | 2014-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102890620B (zh) | 非易失性临时数据处理 | |
US9063728B2 (en) | Systems and methods for handling hibernation data | |
US8463826B2 (en) | Incremental garbage collection for non-volatile memories | |
US9342449B2 (en) | Metadata redundancy schemes for non-volatile memories | |
KR101311116B1 (ko) | 비-휘발성 메모리를 구비한 시스템에 대한 전력 예산의 동적 할당 | |
US8307163B2 (en) | Hybrid density memory storage device | |
US9367451B2 (en) | Storage device management device and method for managing storage device | |
US8949506B2 (en) | Initiating wear leveling for a non-volatile memory | |
US20130219106A1 (en) | Trim token journaling | |
KR20080007470A (ko) | Mram을 이용하는 비휘발성 메모리 시스템 | |
US20090132757A1 (en) | Storage system for improving efficiency in accessing flash memory and method for the same | |
US11249849B2 (en) | Memory controller and method of operating the same | |
CN111897743B (zh) | 数据储存装置及逻辑至物理地址映射表的载入方法 | |
TWI715116B (zh) | 資料儲存裝置及其刪除命名空間之方法 | |
JP4801111B2 (ja) | フラッシュメモリのデータ即時リフレッシュ方法 | |
KR20090046568A (ko) | 플래시 메모리 시스템 및 그것의 쓰기 방법 | |
KR20230094565A (ko) | 복수의 서브 회로들의 상태를 기초로 활성화 모드 또는 저전력 모드로 동작하는 컨트롤러 및 그 방법 | |
CN115114191A (zh) | 存储器控制器及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160518 Termination date: 20210718 |