CN101911021A - 用于存储器设备上数据存储的方法、设备和数据结构 - Google Patents
用于存储器设备上数据存储的方法、设备和数据结构 Download PDFInfo
- Publication number
- CN101911021A CN101911021A CN2007801020782A CN200780102078A CN101911021A CN 101911021 A CN101911021 A CN 101911021A CN 2007801020782 A CN2007801020782 A CN 2007801020782A CN 200780102078 A CN200780102078 A CN 200780102078A CN 101911021 A CN101911021 A CN 101911021A
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- header
- erase
- memory devices
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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/1004—Compatibility, e.g. with legacy hardware
-
- 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/1016—Performance improvement
-
- 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/7202—Allocation control and policies
-
- 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/7206—Reconfiguration of flash memory system
-
- 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/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Electroluminescent Light Sources (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种用于在包括多个可擦除单元的存储器设备上存储数据的方法,其中所述可擦除单元的大小为第一整数值的整数倍,包括:提供数据结构,该数据结构包括多个数据单元,每个数据单元包括数据单元报头,其中所述数据单元的大小等于所述第一整数值,每个数据单元中有多个数据项和对应的数据项报头;将至少一个数据单元关联至每个可擦除单元;将所述数据存储至所述数据项并且将数据项状态信息存储至对应的数据项报头;以及将数据单元状态信息存储至所述数据单元报头。
Description
技术领域
本发明涉及用于在非易失性存储器设备上存储数据的方法和设备。还涉及在包括非易失性存储器设备的电子设备的制造期间,用于改进对这种存储器设备进行初始编程的数据结构。
背景技术
具有某些嵌入式软件的消费品通常还包括某些针对最终用户的内容。此内容可以是音乐、图片、应用、最终用户帮助便笺或者甚至是帮助最终用户使用产品的预装设置。还可以是由产品本身所使用的某些数据。在将产品运送至最终用户之前的制造期间,通常将此内容和嵌入式软件编程到产品的非易失性存储器中。
在许多情况下,将内容存储至单独的存储器或者存储至与产品嵌入式软件相同的非易失性存储器。如果最终用户可以将自己的内容存储至非易失性存储器,那么通常需要快闪文件系统。在只读内容的情况下,还可以使用只读快闪文件系统。因为制造时间影响产品的价格和大规模制造能力,所以无论采用何种特定快闪文件系统解决方案,在制造期间都需要将此内容尽可能快地编程到非易失性存储器中,以便制造时间不会增加太多。
消费品中使用的常用非易失性存储器技术例如包括:NAND、NOR和相位改变存储器。因为仅可以从逻辑1到逻辑0对存储器元件进行编程,所以NAND和NOR存储器技术要求通过快闪文件系统来特殊处理。如果需要将逻辑0改回逻辑1,那么首先要求进行擦除操作。擦除操作在存储器设备中是以以下方式来实现的:即不能单独擦除每字(16比特)或每字节(8比特)。但是可擦除单元包括较大的数据量,通常为8千字节(=1024字节)kB的倍数(例如,8kB、16kB、32kB、64kB、128kB、256kB或512kB)。
也就是说,在最坏的情况下重写单个字或字节(例如,8比特)将要求删除8kB的可擦除单元。自然地,这严重地降低了用户所体验的写入速度。为了允许较小数据项的重写并且仍可以提供可行的写入速度,存在着不同类型的快闪文件系统实现用于支持这些先前提到的存储器类型。在这些文件系统中,数据是经过安排的,以便将擦除操作保持在最小,这样可以提高写入性能。
在非常简单的示例中,文件系统将保持对快闪存储器的未写入部分的跟踪,并且首先对未写入部分执行写入操作。仅当没有剩余未写入部分时,文件系统才执行擦除操作以便提供某些可再次写入的部分。通常来讲,在将可擦除单元被再次擦除之前,文件系统试图首先填充经擦除的/未写入的部分。
然而,由于必须将数据写入快闪存储器的这种方式,使得这种文件系统实现强烈地依赖于存储器硬件的内置组织。这包括在单个操作中可以擦除的最小部分的大小(即,可擦除单元的大小)。只有当预先知道了可擦除单元的大小,先前简单示例中的文件系统才可以适当地管理写入和擦除操作。因此,要求在应用写入数据与实际物理写入操作之间进行转换,从而需要大量的处理。与使用预先建立的数据映象来写入数据进行比较时,由于所要求的转换,因此明显减缓了写入。
因此,在产品(例如,移动电话或其他电子设备)的制造期间,将嵌入式软件和/或预编程的内容编程到快闪存储器会强烈地影响着制造时间。应当保持低的制造时间,以便提高大规模制造所要求的生产量,并且还可以将产品的价格保持在合理的水平。因此,从制造速度的角度来看,使用如之前所述的常规快闪文件系统方法将不再与大规模制造相适应了。
为了加速制造,可以使用预生成的数据映象来将嵌入式软件和/或内容编程到非易失性存储器中。这绕过了使用慢的快闪文件系统。然而,使用这种数据映象适于包括可擦除单元大小的快闪存储器的特定硬件组织。
在某个产品中,可能使用不同类型的非易失性存储器硬件。例如,这可以依赖于存储器供应商的改变、使用不同硬件类型的非易失性存储器或者其他原因。不同类型的存储器,例如Not AND(NAND)存储器、Not OR(NOR)存储器、相位改变存储器或氮化物只读存储器(NROM)存储器,而且还有相同类型(例如,NAND)但来自不同制造商或不同制造批次的存储器可以具有不同大小的可擦除单元。通过常规快闪文件系统,必须预先知道可擦除单元的大小,从而严重地降低了电子设备制造商的灵活性。因此,仅可以使用具有相同可擦除单元大小的存储器类型,或者制造商必须生成新的数据映象以适应具有另外可擦除单元大小的每个存储器。
编程之前,在制造期间已知使用个人计算机(PC)工具来将数据映象转换成所需的格式(特定于快闪存储器设备)。这要求在做转换之前,对快闪设备的类型进行检测。这还将PC转换器软件绑定于所使用的快闪文件系统版本,因此需要PC软件支持所有版本。为了在制造环境中取得所要求的、关于产品中所使用的快闪文件系统和快闪存储器设备的信息,要求启动该产品,而这将消耗额外的时间。
不同存储器类型(多级单元(MLC)和单级单元(SLC))和/或来自不同工艺(110nm对90nm对65nm)的存储器可以具有不同规格(如不同大小的可擦除单元)。因为常规情况下,快闪文件系统基于可擦除单元大小来处理其本身功能,因此不能使用预生成的快闪映象,从而使得大规模制造变得复杂。如果若干可擦除的单元大小需要在相同产品中得到支持,那么必须承担具有针对制造的若干快闪映象(产品内容)的需求或者所有写入必须通过快闪文件系统来完成。在制造中使用快闪文件系统要比使用预先准备的快闪映象更慢。如果针对每个快闪类型产品都创建单独映象,那么软件分发和维护将变得过于复杂。
显然,已知的快闪文件系统对于电子产品制造商是存在缺陷的,因为他们减少了可能选择的产品存储器类型,或者使得制造耗时并且昂贵。
发明内容
根据本发明的第一方面,提供了一种用于在包括多个可擦除单元的存储器设备上存储数据的方法,其中所述可擦除单元的大小是第一整数值的整数倍,该方法包括:
-提供数据结构,包括:
-多个包括数据单元报头的数据单元,其中所述数据单元的大小等于所述第一值;
-每个数据单元中的多个数据项和对应数据项报头;
-将至少一个数据单元关联到每个可擦除单元;
-将所述数据存储至所述数据项并且将数据项状态信息存储至对应的数据项报头;以及
-将数据单元状态信息存储至所述数据单元报头。
根据本发明的实施方式存储数据的方法允许创建单个数据映象,用于对具有不同大小的可擦除单元的存储器设备进行编程。本发明建议的数据结构使一个或多个数据单元能够合并至单个可擦除单元,其中每个数据单元具有其本身的数据单元报头,用于存储数据单元状态信息。此信息对于擦除单元中的所有数据单元是有效的。因此,使用此数据结构的文件系统映象可以用于(无需任何改变或重新生成)具有大小从第一值直到其较高倍数范围的可擦除单元的存储器设备。
在最简单的情况下,可擦除单元大小等于第一整数值。继而每个可擦除单元中只包含一个数据单元。在其他示例中,可擦除单元大小等于第一值的两倍。在这种情况下,将两个数据单元合并至每个可擦除单元。由于这种合并,可以使用与之前相同的文件系统映象。
因为可以使用相同的文件系统映象(例如,包括嵌入式软件、操作系统、预编程内容等),因此本发明允许包括具有不同可擦除单元大小的存储器设备的电子设备的制造商更大的灵活性。如果在相同型号/类型的电子设备(或一般产品)中,那么可以使用另一类型的存储器设备而不是在初始生产批次中使用的存储器设备(例如,由于存储器设备供应商的改变),这在不要求生成新的文件系统映象的情况下是可能的。这样节省了时间(即,提高了生产线的生产量),并且在某个产品中所使用的存储器设备方面向制造商提供了限制少得多的选择。
根据示例性实施方式,所述存储器设备具有最小可写入单元,并且所述数据项报头的大小为所述最小可写入单元的整数倍。
根据示例性实施方式
-所述可擦除单元的大小至少是所述第一值的两倍;
-至少将两个数据单元关联至每个可擦除单元;以及
-每个可擦除单元中的单个数据单元报头都用于存储相同可擦除单元中所有数据单元的状态信息。
此单个数据单元报头可以是第一个或最后一个(就存储器地址而言),或者任何其他指定的数据单元报头(如第二数据单元报头、第三数据单元报头等)。此数据单元报头将在设备的(例如,第一次)启动期间,使用根据本发明实施方式的、用于存储数据和数据结构的方法进行选定。在设备的进一步操作期间,仅使用/更新此选定的数据单元报头。在使用该数据结构创建数据映象期间,所有数据单元报头都具有相应的状态信息,因为在此阶段不知道哪个将会是选定的数据单元报头。
然而,注意在本发明的其他实施方式中,除了选定的单个数据单元报头,还可以使用可擦除单元的所有数据单元报头或所有数据单元报头的子集。
根据示例性实施方式,该方法包括:
-使用所述数据结构对所述存储器设备之一进行初始化编程;
-读取所有数据单元报头的状态信息;以及
-将相同的可擦除单元中的所有数据单元的状态信息存储至所述可擦除单元中的单个数据单元报头。
在此示例性实施方式中,每个可擦除单元中只有一个数据单元报头用于存储状态信息。其他数据单元报头将不使用或不更新。也就是说,在初始文件系统映象中,所有数据单元报头包括有效状态信息。在初始编程之后,即在对存储器设备的第一次“正常”访问时以及稍后,仅对单个数据单元报头(例如,在一个可擦除单元中的“最后一个”或“第一个”数据单元报头)用当前状态信息进行使用/更新。
根据本发明的第二方面提供了计算机程序产品,包括用于指示其上运行有所述计算机程序产品的设备执行上述方法的程序代码。在示例性实施方式中,程序代码存储在计算机可读介质上。
根据本发明的第三方面,提供了一种用于在包括多个可擦除单元的存储器设备上存储数据的数据结构,其中所述可擦除单元的大小为第一整数值的整数倍,其中所述数据结构包括
-多个包括数据单元报头的数据单元,其中所述数据单元大小等于所述第一整数值;
-每个数据单元中的多个数据项和对应的数据项报头;其中针对每个可擦除单元提供至少一个数据单元;所述数据项适于存储有效净荷数据;所述数据项报头适于存储数据项状态信息以及所述数据单元报头适于存储数据单元状态信息。
根据示例性实施方式,所述存储器设备具有最小可能的可写入单元,并且其中所述数据项报头的大小为所述最小可写入单元的整数倍。
根据本发明的第四方面,提供了一种包括上述数据结构的存储器设备。根据本发明的第五方面,提供了一种包括至少一个这种存储器设备的电子设备。
根据本发明的第六方面,使用本发明的数据结构来对至少两个包括可擦除单元的不同存储器设备进行编程,其中每个存储器设备的可擦除单元的大小是第一整数值的整数倍,并且其中所述存储器设备中一个存储器设备的擦除单元的大小有别于所述存储器设备中另一个存储器设备的擦除单元的大小。
附图说明
结合附图通过如下对示例性实施方式的详细描述可以更全面地理解本发明,附图仅以示例性方式提供并且不试图将本发明限制于这里示出的任何特定的实施方式。在附图中:
图1示出了本发明方法的实施方式的流程图;
图2示出了本发明数据结构的实施方式;以及
图3示出了本发明电子设备和存储器设备的实施方式。
具体实施方式
注意,如下描述将主要关注于快闪存储器设备,以作为可以应用本发明的非易失性存储器设备的示例。然而,本发明不限于快闪存储器的使用,包括但不限于:NOR、NAND、氮化物只读存储器(NROM)存储器和相位改变存储器,而且可以用于基于使用硬件或逻辑可擦除单元的任何非易失性存储器技术。
可以将本发明应用于不具有硬件可擦除单元但其利用相似逻辑功能实现的存储器。例如,由于遗留问题(即,向后兼容性),不要求使用可擦除单元的存储器可以在逻辑上来实现,就好像该存储器具有可擦除单元一样。这意味着例如,使用擦除功能和/或擦除命令的方式与在具有硬件可擦除单元的存储器中使用的方式相同。根据本发明实施方式的数据结构也可以应用于此类存储器。也就是说,本发明不要求存在硬件可擦除单元,而是还可以用于利用逻辑可擦除单元进行组织的存储器。
而且,可能实施方式的描述中所使用的特定值仅以示例的方式来实现,但本发明不限于上述任何特定值。
根据本发明的示例性实施方式,在制造期间,对最终产品的存储器设备进行编程过程中将不使用常规快闪文件系统,该常规快闪文件系统会显著地减慢编程操作。相反根据示例性实施方式,在将映象快闪(即,编程)至存储器设备之前,本发明提供了可以利用其来创建可快闪映象的数据结构。使用简单编程命令来优选地将数据编程至快闪设备。
此映象已经包括了要在数据结构顶部使用的文件系统的数据项报头,和数据单元报头,因此该操作不再需要常规快闪文件系统。因为可以使用连续地址来对存储器设备进行编程,因此编程将更快。可以使用快闪设备中的编程缓冲器(如果有的话),即使编程缓冲器与数据单元的大小不相匹配。
在正常操作期间,在初始编程之后(例如,在包括存储器设备的最终产品的第一次启动时),如果要写入数据项,那么首先写入该数据项然后写入对应的数据项报头。数据项报头位于不同位置,因为数据项报头没有包括在数据项中,因此不能利用相同的编程缓冲器。还可以针对速度对此正常操作进行优化;可以在单个操作中写入若干数据项;以及可以在单个编程操作中更新若干数据项报头。这将在快闪存储器设备具有大的编程缓冲器的情况下带来益处。
根据示例性实施方式,本发明以一下方式提供数据结构,即使得非易失性存储器设备的实际物理布局对用于在电子设备的制造中进行编程的文件系统映象没有影响或几乎没有影响。根据本发明的实施方式,可以将针对非易失性存储器设备的数据结构的基本数据单元合并至快闪存储器之类的可擦除单元。文件系统和/或文件系统所使用的软件驱动必须能够识别可擦除单元大小并且对其支持。
每个数据单元包括若干数据项和它们的报头。提供的数据项用于存储实际的数据有效净荷,其中数据有效净荷可以是任何类型的数据,例如,操作系统数据、多媒体内容等。数据项报头包括状态信息,其包含关于数据项有效性信息。
这可以依赖于文件系统的类型,或者可以在软件驱动的顶部使用数据库。在示例性实施方式中,数据项报头将至少包括数据项数量和其所属的数据项的有效性信息。在示例性实施方式中,数据单元报头包含数据单元有效性信息和用于指示在存储器设备的特定数据单元和/或擦除单元上是否出现了错误操作的特殊标记。例如,这种操作可以是中断擦除操作。
在用于提供编程映象以将有效净荷数据存储至电子设备而不使用实际的文件系统的初始数据结构中,每个数据单元包括其本身的报头。每个数据单元报头包括有效状态信息。然而,在示例性实施方式中,在初始编程之后,只有一个数据单元报头(例如,最后一个/第一个数据单元)保留可擦除单元中的有效报头信息。此实施方式使得其他数据单元报头被在本发明数据结构顶部使用的文件系统忽略,尤其是在包括该文件系统的设备第一次启动或第一次启动之后的正常操作时。状态信息只在此单个数据单元报头中进行写入/更新,该单个数据单元可以是所有数据单元报头中的第一个/最后一个或者任何其他特定的一个。
然而,注意在其他实施方式中还可能使用/更新可擦除单元的所有数据单元报头。
本发明数据结构顶部使用的文件系统不限于任何特定类型。然而,其必须能够使用由该数据结构提供的数据项。数据项的大小由该数据结构进行定义。原则上,数据项的大小仅由底层非易失性硬件存储器的最小可写入单元大小来限制。如果物理存储器具有这种最小写入单元,那么数据项可以是该最小写入单元的任何整数倍。
本发明的数据结构不保留实际的文件信息。这意味着数据结构包括数据项报头中的数据项的有效性信息,但文件系统本身保留文件信息。也就是说,文件系统保持跟踪哪些数据项属于相同文件。还可以存储符合一个数据项的小数据记录。
图1示出了本发明方法的实施方式的步骤。在步骤102中,提供了针对包括可擦除单元的存储器设备的数据结构。例如,该存储器设备可以是快闪存储器。可擦除单元具有的大小是第一值的整数倍。在图2示出的示例实施方式中,此第一值为64kB,并且可擦除单元的大小为4×64kB=256kB。然而,这些只是示例性值,其他值和整数倍也是可能的。
在步骤104中,数据结构被提供为具有多个包括对应数据单元报头的数据单元。数据单元的大小同样是第一值的整数倍。然而,数据单元大小可以是不同于数据单元大小的第一值的整数倍,其中数据单元大小的整数倍在从1(即,数据单元大小等于1×第一值)直到可擦除单元大小的整数倍的间隔内。在图2示出的示例中,数据单元大小的整数倍为1×64kB=64kB。如果可擦除单元大小为256kB,那么如2×64kB=128kB和4×64kB=256kB的整数倍也可以是数据单元大小的可能值。
数据单元报头是数据单元的一部分。在图2的示例中,数据单元报头的大小为16字节。然而,这只是示例值。还可能是其他值和/或其整数倍。
在步骤106中,数据结构进一步被提供为具有多个数据项和对应数据项报头。提供数据项以用于存储实际的有效净荷数据,同时其相应的报头指示其状态。在图2的示例中,数据项大小为512字节。然而,还可能是其他值和倍数。在此示例中,每个数据项的数据项报头的大小为8字节。在这种情况下,每个数据单元的数据项数量为126。如果底层快闪存储器具有最小可写入单元,那么数据项报头的大小必须是该最小可写入单元的整数倍。继而,通常本发明数据结构中所使用的所有单元必须都是最小可写入单元的整数倍。
在步骤108中,至少一个数据单元关联至每个可擦除单元。在这种情况下,再次参考图2的示例,四个数据单元(64kB)关联至每个可擦除单元(256kB)。注意,每个数据单元具有其本身的数据单元报头,即在这种情况下每个可擦除单元中总共存在四个数据单元报头。
在步骤110中,将有效净荷数据存储至提供的数据项,而将对应的状态信息存储至相应的数据项报头。也就是说,将有效净荷数据划分为数据项大小的多个部分,继而存储至数据项中。数据结构本身不保留使得访问该数据结构的实体能够合并或恢复已划分的数据的信息。此项任务由叠加的文件系统来完成,该文件系统保持跟踪数据项到文件的关联。
数据结构本身保留关于数据项的有效性信息。在步骤112中,将包括有效性信息的数据单元状态信息存储至数据单元报头。
设可擦除单元大小是第一值的整数倍,那么可以将以这种方式提供的数据结构用作映象来对如今不同类型的存储器设备进行编程。在底层存储器具有最小写入单元的情况下,也必须对此进行考虑。再次参考图2的示例,可以使用提供的数据结构来对具有64kB、128kB、256kB或64kB的任何更高倍数的可擦除单元大小的快闪存储器进行编程。快闪映象必须仅被生成一次,继而可以用于对这种不同存储器进行编程而不需要重新生成。
注意,根据数据单元大小和可擦除单元大小的比例,每个可擦除单元可以有不止一个数据单元报头。在这种情况下,在已经进行了初始编程之后,根据本发明的实施方式,只能使用单个数据单元报头来存储关于整个可擦除单元的状态信息。在包括具有本发明数据结构的存储器设备的设备的第一次启动时,在这些实施方式中将忽略其他数据单元报头。在存储器设备的进一步使用期间,只能使用和/或更新选定的单个数据单元报头。例如,此单个数据单元报头可以是最后一个或第一个(就存储器地址而言)或任何其他指定的数据单元报头(第二个、第三个等)。
注意,其他实施方式包括使用可擦除单元中所有数据单元报头,而不只是单个数据单元报头。本发明包括使用可擦除单元中所有数据单元报头的子集,即,两个或更多,而不是所有数据单元报头。
步骤112完成了数据结构的准备阶段。利用该数据结构可以生成快闪映象,利用该映象产品可以对内容进行预编程。应当注意,此附图中描绘的进一步步骤在本发明的某些实施方式中是可选的。因此,这些步骤可以不在其他示例性实施方式中出现。
在步骤114中,选择数据单元报头用于存储可擦除单元状态信息。例如在配备有具有数据结构的存储器设备的产品的第一次启动时执行该步骤。例如,选择了最后一个(就存储器地址而言)数据单元报头。在产品的进一步操作中,可擦除单元中所有数据单元(即,可擦除单元本身)的状态信息继而存储至选定的数据单元报头(步骤116),而不再使用可擦除单元中的其他数据单元报头。
在本发明的进一步实施方式中,随后可以重复步骤114,即选择数据单元报头用于存储可擦除单元状态信息,并且选择了不同的数据单元报头。其优势在于提供了一种数据单元报头的损耗平衡(wear-levelling)。例如,可以在特定数量的、涉及可擦除单元的擦除操作之后,或者在特定数量的、针对特定数据单元报头的写入操作之后,执行重新选择。以这种方式,可以将硬件快闪存储器的损耗分布在所有数据单元报头之间。
在其他示例性实施方式中,选择不止一个数据单元报头用于存储数据单元状态信息。仍在其他实施方式中,不做出任何选择,这意味着可擦除单元的所有数据单元报头都用于存储可擦除单元/数据单元状态信息。
从图2可以看到由本发明建议的数据结构的示例。注意,为了提高可理解性,附图没有按比例绘制。该附图应当理解为说明性示例。除其他之外,这包括数据项的数量可以与数据项报头的数量不对应,并且数据项和数据项报头的数量可以与数据单元和可擦除单元的示例性大小值不对应。附图中的标号和尺寸不应当解释为限制本发明。
如果假设快闪存储器具有256kB(千字节)可擦除单元,在这里示出的示例性实施方式中,每个可擦除单元中可以包括四个64kB(即,64×1024=65536字节)数据单元#1、数据单元#2、数据单元#3和数据单元#4。每个数据单元具有126个512字节的数据项。每个数据项具有8字节数据项报头,该数据项报头保留相应数据项的状态信息。保留的16字节用于数据单元状态信息,即数据单元报头的大小为16字节。应当理解,在其他实施方式中这些示例性大小可以是此示例的其他倍数。
每个数据单元报头保留关于可擦除单元使用(可擦除单元写入/擦除计数器)、可擦除单元/数据单元有效性(单元是否正确擦除、是否可以将其移除等)的信息。在由产品或电子设备的软件使用时,此有效性指的是擦除单元的有效性。
如果底层硬件快闪存储器具有针对进行小写入操作的限制(即,仅可以在等于最小值的部分中写入数据),那么可以相应地对数据项报头大小进行调整。这种调整或定义必须在生成将要包含在快闪映象中的数据和快闪映象本身之前完成。例如,在数据结构顶部使用的实际文件系统必须被选择/适应于数据项和数据项报头大小。
可以使用允许甚至更小的写入操作的软件或文件系统,其中在将它们实际写入至存储器设备之前,这种软件或文件系统在随机访问存储器(RAM)中对这些较小的写入操作进行预缓冲。
图2中解释的相同结构仍然可以在产品中使用,即使其已经配备了具有128kB可擦除单元的速闪存储器,而无需改变闪速映像。在这种情况下,只有两个数据单元将存储在/关联于每个可擦除单元。例如,在某些提出的快闪存储器设备中,建议可擦除单元大小为128kB或其倍数。可以包括128kB和256kB可擦除单元,但也可能是具有512kB可擦除单元或任何其他倍数的设备。
在示例性实施方式中的这种具有128kB可擦除单元的环境中,可以针对每个128kB可擦除单元提供两个数据单元。数据项(例如,扇区,其可以是512字节或其倍数)位于那些数据单元内部。这些数据项可以位于数据结构内部的任何位置,其中的一部分包括若干可擦除单元。
由于出于写入操作的原因而要求的每个擦除操作将导致闪速存储器中的损耗,所以优选的是执行一种所谓的损耗平衡。这意味着优选将数据写入存储器设备的不同部分,以便均匀地损耗存储器设备。因此,相同数据项还可以存在于若干位置处的相同数据单元中,其中只有最后一个/最新的数据项是有效的。
根据本发明的示例性实施方式,所有数据单元具有他们自己的数据单元报头。然而,在该数据结构的使用期间,访问存储器的系统只使用/更新对于特定快闪存储器是最后一个(或第一个或某些其他指定数据单元)的数据单元。在图2的示例中,可以使用数据单元报头#1或数据单元报头#4。数据单元中可以有针对特定使用的各种区域,即针对有效净荷数据的数据项、针对对应状态信息的数据项报头和针对数据单元/擦除单元状态信息的数据单元报头。
物理块中的数据单元报头包括块状态信息。数据还存在于该物理块中的其他数据单元报头中,但随后(即在初始编程之后)不进行更新,并且在存储器设备的进一步使用期间也不再需要。若干状态存储在每个数据单元报头中,因此需要若干写入操作。从而存储器设备必须支持对数据单元报头区域的写入操作,否则这些若干写入操作必须在某些其他存储器中(如易失性RAM存储器)进行预缓冲并且随后写入该区域。
在示例中,其中存储器具有256kB可擦除单元并且其中数据单元大小为64kB,因此每个可擦除单元总共有四个数据单元报头。其中这些数据单元报头中的三个(例如,关于存储器地址的前三个)在初始编程之后便不再使用,即使数据最初存在于编程映象中的那三个数据单元报头中。
从快闪存储器使用的角度来看,如果数据单元大小与可擦除单元大小相等,那么这对于特定快闪设备是期望的。然而,对于包括快闪存储器的最终产品的大规模制造而言,此项准备要求太多的时间和努力,从而对于每种特定硬件快闪存储器类型而言具有不同的映像。
因此,从最终产品角度来看,本发明的数据结构更具成本效益,即使确实浪费掉了未在可擦除单元中使用的附加数据单元报头的空间。然而,这种浪费关系到以每个可擦除单元(例如,该可擦除单元的大小为128kB)4字节、8字节、16字节或32字节(或倍数,依赖于可擦除单元的大小)的级别的空间。因此,这种空间上的浪费可以被忽略。
通过使用可以用于(重用于)最终产品的单个快闪映象可以获得更多的灵活性,该最终产品基本上类似但配备有不同类型的快闪存储器,(例如,来自不同制造商和/或制造批次)或者甚至利用完全不同的技术(诸如NOR、NAND等)的快闪存储器。
图3示出了本发明的两个其他实施方式。电子设备1(例如,移动电话)包括内置快闪存储器设备2。该快闪存储器2基于可擦除单元并且包括根据本发明实施方式的数据结构,例如,类似于图2中所描绘的数据结构。因此,该移动电话1可以基于该数据结构使用快闪映象初始地进行编程。相同的快闪映象可以在相似的移动电话中使用,即,相同型号/类型,但装配有具有不同大小可擦除单元的快闪存储器的另一类型/产品批次等。
附图还示出了本发明的另一实施方式。作为根据本发明实施方式的存储器设备实例的可移动介质4基于可擦除单元。可移除介质4还包括本发明实施方式的数据结构,例如图2中的数据结构。可以使用该数据结构来生成快闪映象,从而利用预编程内容对这种存储器卡进行编程。这种内容可以是备份软件、多媒体内容、用于保护将存储在可移除介质4上的个人数据的加密软件等。利用相同的快闪映象,即使底层存储器设备具有不同的可擦除单元大小,制造商也能够对不同类型的可移除介质进行编程。
例如,这种可移除介质4可以用于这里描述的移动电话1,该移动电话具有对应的媒体读取器6。可移动介质4还可以在适用于从可移动介质4中读取和/或向该可移动介质4写入的任何其他电子设备中使用。
虽然提供了前述说明来引起对本发明那些认为是特别重要的特征的注意,但是应当理解所要求的保护是关于任何可获得专利的特征或附图中参考和/或示出的特征的组合,而无论是否对其进行了特别关注。本领域技术人员应当理解,根据本公开可以就此对方法和设备做出修改和/或改进,并且还保留在所附权利要求书中所阐述的本发明的范围之中。
Claims (11)
1.一种用于在包括多个可擦除单元的存储器设备上存储数据的方法,其中所述可擦除单元的大小是第一整数值的整数倍,包括:
提供数据结构,该数据结构包括:
多个数据单元,每个数据单元都包括数据单元报头,其中所述数据单元的大小等于所述第一整数值;
每个数据单元中的多个数据项和对应的数据项报头;
将至少一个数据单元关联至每个可擦除单元;
将所述数据存储至所述数据项并且将数据项状态信息存储至所述对应的数据项报头;以及
将数据单元状态信息存储至所述数据单元报头。
2.根据权利要求1所述的方法,其中所述存储器设备具有最小可能的可写入单元;以及其中所述数据项报头的大小是所述最小可写入单元的整数倍。
3.根据权利要求1或2所述的方法,其中
所述可擦除单元的大小至少为所述第一整数值的两倍;
将至少两个数据单元关联至每个可擦除单元;以及
使用每个可擦除单元中的单个数据单元报头来存储所述相同可擦除单元中的所有数据单元的状态信息。
4.根据权利要求3所述的方法,包括
使用所述数据结构对所述存储器设备之一进行初始编程;
读取所有数据单元报头的状态信息;以及
将所述相同可擦除单元中的所有数据单元的状态信息存储至所述可擦除单元中的单个数据单元报头。
5.一种计算机程序产品,包括用于指示其上运行着所述程序产品的设备来执行根据权利要求1至4中任意一项所述的方法的程序代码。
6.根据权利要求5所述的计算机程序产品,其中将所述程序代码存储至计算机可读取介质。
7.一种用于在包括多个可擦除单元的存储器设备上存储数据的数据结构,其中所述可擦除单元的大小是第一整数值的整数倍,其中所述数据结构包括:
多个包括数据单元报头的数据单元,其中所述数据单元的大小等于所述第一整数值;
每个数据单元中的多个数据项和对应的数据项报头;
其中为每个可擦除单元提供至少一个数据单元,所述数据项适于存储有效净荷数据,所述数据项报头适于存储数据项状态信息以及所述数据单元报头适于存储数据单元状态信息。
8.根据权利要求7所述的数据结构,其中所述存储器设备具有最小可能的可写入单元;以及其中所述数据项报头的大小是所述最小可能的可写入单元的整数倍。
9.一种存储器设备,包括根据权利要求7或8所述的数据结构。
10.一种电子设备,包括至少一个根据权利要求9所述的存储器设备。
11.根据权利要求7或8所述的数据结构的用途,用于对至少两个包括可擦除单元的存储器设备进行编程,其中每个存储器设备的可擦除单元的大小是所述第一整数值的整数倍,以及其中所述存储器设备中一个的擦除单元的大小有别于所述存储器设备中另一个的擦除单元的大小。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2007/004083 WO2009081224A1 (en) | 2007-12-24 | 2007-12-24 | Method, device and data structure for data storage on memory devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101911021A true CN101911021A (zh) | 2010-12-08 |
Family
ID=40800757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007801020782A Pending CN101911021A (zh) | 2007-12-24 | 2007-12-24 | 用于存储器设备上数据存储的方法、设备和数据结构 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9043532B2 (zh) |
EP (1) | EP2225644A4 (zh) |
KR (2) | KR20100133359A (zh) |
CN (1) | CN101911021A (zh) |
WO (1) | WO2009081224A1 (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1524227A (zh) * | 2002-04-03 | 2004-08-25 | 索尼株式会社 | 记录装置及方法、记录介质以及程序 |
US20070083697A1 (en) * | 2005-10-07 | 2007-04-12 | Microsoft Corporation | Flash memory management |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1985002563A1 (fr) * | 1983-12-14 | 1985-06-20 | Schotte, Werner | Pompe pulverisatrice avec raccord de recipient |
US6279069B1 (en) | 1996-12-26 | 2001-08-21 | Intel Corporation | Interface for flash EEPROM memory arrays |
US5943692A (en) | 1997-04-30 | 1999-08-24 | International Business Machines Corporation | Mobile client computer system with flash memory management utilizing a virtual address map and variable length data |
JP2001101071A (ja) | 1999-09-29 | 2001-04-13 | Victor Co Of Japan Ltd | フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法 |
US6591330B2 (en) | 2001-06-18 | 2003-07-08 | M-Systems Flash Disk Pioneers Ltd. | System and method for flexible flash file |
JP4667243B2 (ja) | 2003-08-29 | 2011-04-06 | パナソニック株式会社 | 不揮発性記憶装置及びその書込み方法 |
JP5063897B2 (ja) | 2006-01-18 | 2012-10-31 | 三桜工業株式会社 | 組電池の接続板 |
KR100622113B1 (ko) | 2006-03-03 | 2006-09-18 | 주식회사 퓨전소프트 | 데이터베이스 시스템을 위한 플래쉬 메모리 저장 시스템 및그 방법 |
US20070260812A1 (en) * | 2006-05-04 | 2007-11-08 | Westell Technologies, Inc. | Programming method for write buffer and double word flash programming |
-
2007
- 2007-12-21 KR KR1020107016378A patent/KR20100133359A/ko not_active Application Discontinuation
- 2007-12-24 CN CN2007801020782A patent/CN101911021A/zh active Pending
- 2007-12-24 KR KR1020107015328A patent/KR101247574B1/ko not_active IP Right Cessation
- 2007-12-24 WO PCT/IB2007/004083 patent/WO2009081224A1/en active Application Filing
- 2007-12-24 EP EP07859176A patent/EP2225644A4/en not_active Withdrawn
- 2007-12-24 US US12/743,905 patent/US9043532B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1524227A (zh) * | 2002-04-03 | 2004-08-25 | 索尼株式会社 | 记录装置及方法、记录介质以及程序 |
US20070083697A1 (en) * | 2005-10-07 | 2007-04-12 | Microsoft Corporation | Flash memory management |
Also Published As
Publication number | Publication date |
---|---|
US20100312951A1 (en) | 2010-12-09 |
WO2009081224A1 (en) | 2009-07-02 |
EP2225644A1 (en) | 2010-09-08 |
KR20100133359A (ko) | 2010-12-21 |
US9043532B2 (en) | 2015-05-26 |
KR20100090306A (ko) | 2010-08-13 |
EP2225644A4 (en) | 2011-08-10 |
KR101247574B1 (ko) | 2013-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100424655C (zh) | 快闪存储器管理方法 | |
CN101154190B (zh) | 映射信息管理设备和方法 | |
CN101874240B (zh) | 增加存储器的多个块的寿命 | |
JP4155463B2 (ja) | 順次書き込みのみを用いるフラッシュ管理システムを有するシステム、及びその方法 | |
CN101202106B (zh) | 非易失性存储系统及其相应的编程方法 | |
CN100437827C (zh) | 每单元使用多个状态位以处理写操作期间的电源故障 | |
CN100520734C (zh) | 闪存的控制装置与方法 | |
US20080195833A1 (en) | Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit | |
US20080141016A1 (en) | Computer System and Related Method for Preventing Failure of Updating BIOS Programs | |
US20060047888A1 (en) | Semiconductor memory device and access method and memory control system for same | |
CN101535963A (zh) | 具有可编程耐久性的快闪存储器 | |
CN101243414B (zh) | 配置被分为多个存储体的存储空间的方法 | |
CN101408880A (zh) | 使用分割文件元数据的文件管理方法和装置 | |
CN101169760B (zh) | 电子硬盘的存储空间的管理方法 | |
CN101874239A (zh) | 基于写入频率将数据写入不同的存储设备 | |
CN101494086B (zh) | 快闪存储器储存装置、快闪存储器控制器及其切换方法 | |
CN101246738A (zh) | 具有备份电路的存储系统及编程方法 | |
KR20090105143A (ko) | 메모리 시스템 및 그것의 마모도 관리 방법 | |
US20130346674A1 (en) | Data writing method, memory controller and memory storage device | |
US7945723B2 (en) | Apparatus and method of managing mapping table of non-volatile memory | |
CN101625897A (zh) | 用于快闪存储器的数据写入方法、储存系统与控制器 | |
CN101609431A (zh) | 闪存装置的运作方法及闪存装置 | |
CN109273042A (zh) | Nand存储器及其访问方法、访问装置 | |
CN101216806B (zh) | 一种数据更新的方法和装置 | |
US20090287893A1 (en) | Method for managing memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160204 Address after: Espoo, Finland Applicant after: Technology Co., Ltd. of Nokia Address before: Espoo, Finland Applicant before: Nokia Oyj |
|
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20101208 |