CN115035940A - 用于操作非易失性存储器的方法和装置 - Google Patents
用于操作非易失性存储器的方法和装置 Download PDFInfo
- Publication number
- CN115035940A CN115035940A CN202210201505.9A CN202210201505A CN115035940A CN 115035940 A CN115035940 A CN 115035940A CN 202210201505 A CN202210201505 A CN 202210201505A CN 115035940 A CN115035940 A CN 115035940A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- volatile memory
- written
- counter
- 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
- 238000000034 method Methods 0.000 title claims abstract description 103
- 238000004590 computer program Methods 0.000 claims description 22
- 238000010586 diagram Methods 0.000 description 37
- 239000008186 active pharmaceutical agent Substances 0.000 description 29
- 238000013479 data entry Methods 0.000 description 27
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001681 protective effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
Images
Classifications
-
- 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/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供了用于操作非易失性存储器的方法和装置。一种操作非易失性存储器的方法、例如计算机实现的方法,包括:确定非易失性存储器的第一块中是否有足够的空闲空间用于待写入非易失性存储器的数据,并且如果第一块中没有足够的空闲空间用于待写入非易失性存储器的数据,则将待写入的数据写入非易失性存储器的另外的块,例如第二块。
Description
技术领域
本公开涉及一种操作非易失性存储器的方法。
本公开进一步涉及一种操作非易失性存储器的装置。
发明内容
示例性实施例的描述
示例性实施例涉及一种操作非易失性存储器的方法、例如计算机实现的方法,包括:确定非易失性存储器的第一块中是否有足够的空闲空间用于待写入非易失性存储器的数据,并且如果第一块中没有足够的空闲空间用于待写入非易失性存储器的数据,则将待写入的数据写入非易失性存储器的至少一个另外的块,例如第二块。在一些示例性实施例中,这可以有助于对非易失性存储器进行损耗均衡(wear leveling),同时,例如,使得能够支持对非易失性存储器的频繁和/或立即写入和/或恢复写入非易失性存储器的最新有效数据。
在一些示例性实施例中,非易失性存储器可以包括或者可以是例如闪速EEPROM类型的闪速存储器。在一些示例性实施例中,非易失性存储器可以包括两个或更多个块,其中例如两个或更多个块中的每一个可以被单独擦除,即不影响任何其他块。
在一些示例性实施例中,第一块和所述至少一个另外的块例如在非易失性存储器的地址空间中是相邻的。在一些示例性实施例中,第一块和所述至少一个另外的块在非易失性存储器的地址空间中不相邻。
在一些示例性实施例中,非易失性存储器可以包括4096字节的块大小。在其他示例性实施例中,其他块大小也是可能的。
在一些示例性实施例中,非易失性存储器可以包括至少一个数据接口,用于与至少一个另外的设备交换数据,所述另外的设备例如嵌入式系统的组件,例如微控制器或车载计算机。在一些示例性实施例中,所述至少一个数据接口可以是串行接口,例如串行外围接口、SPI和/或QSPI(四通道SPI)等。在一些示例性实施例中,并行接口也是可能的。
在一些示例性实施例中,所述方法包括,如果第一块中有足够的空闲空间用于待写入非易失性存储器的数据,则将待写入的数据写入第一块。
在一些示例性实施例中,所述方法包括:使用包括计数器和例如预定标识符(例如幻数)的数据结构,其中例如待写入非易失性存储器的数据嵌入在数据结构中,例如在计数器和标识符之间,以及可选地,将数据结构写入非易失性存储器。
在一些示例性实施例中,可以使用数据结构来设置要存储到非易失性存储器的数据,其中计数器值例如位于数据结构的开头,并且其中标识符(例如幻数)位于该结构的最后。
在一些示例性实施例中,数据结构可能看起来像:
struct rbdNvMData_st
{
uint16_t Counter;
...
data
...
uint32_t MagicNumber;
}
其中“Counter(计数器)”可以例如包括无符号整数数据类型,例如具有16位,其中“data(数据)”表征待写入非易失性存储器的数据(该数据可以包括动态改变的值和/或长度范围,例如在1字节和非易失性存储器的块大小之间或更多),并且其中“MagicNumber(幻数)”表征标识符(例如但不限于32位无符号整数数据类型)。
在一些示例性实施例中,放置在计数器和标识符/幻数之间的数据是动态的,并且可以根据需要添加到结构中或者从结构中移除。在一些示例性实施例中,计数器和标识符/幻数可以充当保护性边界,“包围”上面解释的数据结构内的数据。
在一些示例性实施例中,数据结构还可以包括另外的元素,这些元素例如可以嵌入在计数器和数据之间和/或数据和标识符之间。
在一些示例性实施例中,所述方法包括:重复使用数据结构和/或将数据结构写入非易失性存储器的步骤,其中优选地,多个数据结构被顺序地写入(例如,每个数据结构包括各自的、例如增加的计数器值和/或单独的数据和标识符)例如第一块和/或所述至少一个另外的块,其中例如后续数据结构的计数器值增加例如一。这样,可以在非易失性存储器的一个或多个块中建立数据结构的有序序列。
在一些示例性实施例中,所述方法包括:以例如预定的序列使用非易失性存储器的预定数量的块,例如第一块和所述至少一个另外的块。换句话说,在一些示例中,首先,第一块例如以上面示例性公开的数据结构的形式被顺序地“填充”有待写入的数据,并且一旦第一块为满的,例如不包括足够的空闲空间来容纳另外的数据结构,则所述至少一个另外的(例如第二)块被顺序地“填充”有待写入非易失性存储器的数据。
在一些示例性实施例中,所述方法包括:例如,如果预定数量的块中的所有块已被填充有例如待写入的数据(例如使用一个或多个数据结构),则至少擦除所述序列的第一块。换句话说,一旦非易失性存储器的预定数量的块中的所有块已经被“填充”有待写入的数据,所述方法可以绕回第一块,例如擦除第一块,并且继续将待写入非易失性存储器的数据再次写入第一块。在一些示例性实施例中,如果第一块被再次填充,则所述方法可以包括擦除第二块,并且继续将待写入非易失性存储器的数据再次写入第二块,以此类推。
在一些示例性实施例中,所述方法包括以下元素中的至少一个:a)定义计数器的有效值的值范围,b)定义计数器的至少一个无效值,其中例如计数器的至少一个无效值对应于用于擦除非易失性存储器的至少一个块的位模式。
在一些示例性实施例中,当例如对计数器使用16位无符号整数数据类型时,计数器值的有效值范围可以例如范围在0x0000和0xFFFE之间,而0xFFFF可以例如被定义为无效计数器值,例如因为在一些示例性实施例中,值0xFFFF可以例如对应于用于擦除非易失性存储器的至少一个块的位模式(因此,如果0xFFFF将被用作有效计数器值,则在非易失性存储器的已擦除存储器部分与计数器值0xFFFF之间可能无法区分)。
在一些示例性实施例中,标识符/幻数的值可以分为三个类别(示例性地假设标识符包括32位无符号整数数据类型):
1. 标识符值等于0xFFFFFFFF,即它还没有被编程(非易失性存储器的擦除模式对应于所有设置为“1”的位),
2. 标识符值等于幻数,幻数可以示例性地选择为0xDEADBEEF,
3. 除上述值(0xFFFFFFFF,0xDEADBEEF)之外的标识符值已在幻数位置处被编程。如果是这种情况,则可以认为幻数被损坏。
在一些示例性实施例中,所述方法包括:读取数据,例如从非易失性存储器的预定数量的块中的至少一个块读取数据,并且可选地,基于数据结构解释所读取数据。在一些示例性实施例中,基于数据结构解释读取数据可以包括将所读取数据的前两个字节解释为计数器值,和/或将所读取数据的后四个字节解释为幻数,和/或将所读取数据在第二个字节和后四个字节之间的信息解释为已经写入非易失性存储器的数据。
在一些示例性实施例中,基于例如所读取数据的计数器值,可以评估所读取数据的“时期(age)”和/或当前性。
在一些示例性实施例中,所述方法包括:从非易失性存储器的预定数量的块中的至少一个块读取第一数据位置,并且可选地,如果a)与第一数据位置相关联的计数器包括无效值(例如,0xFFFF,参见上述示例)和/或如果b)与第一数据位置相关联的标识符包括无效值(例如,不同于0xDEADBEEF,参见上述示例),则推断预定数量的块中的至少一个块为空。
在一些示例性实施例中,所述方法包括:从非易失性存储器的预定数量的块中的至少一个块读取第一数据位置,并且可选地,如果a)与第一数据位置相关联的计数器包括无效值(例如,0xFFFF,参见上述示例),并且如果b)与第一数据位置相关联的标识符包括擦除模式值(例如,0xFFFFFFFF,参见上述示例),则推断预定数量的块中的至少一个块为空。
在一些示例性实施例中,所述方法进一步包括:如果与第一数据位置相关联的计数器包括无效值(例如,在上述示例中为0xFFFF),并且如果与第一数据位置相关联的标识符包括非擦除模式值(例如,在上述示例中不同于0xFFFFFFFF),则认为第一数据位置被损坏。
在一些示例性实施例中,所述方法进一步包括:如果与第一数据位置相关联的计数器包括有效值(例如,在上述示例中不同于0xFFFF),并且如果与第一数据位置相关联的标识符包括无效值(例如,在上述示例中不同于0xDEADBEEF),则认为第一数据位置被损坏。
在一些示例性实施例中,以下示例性表格的至少一些条目可以适用或可以被使用,例如用于表征前述方面中的至少一个方面:
计数器 | 标识符 | 评估结果 |
0xFFFF | 0xFFFFFFFF | 空(匹配擦除模式) |
0xFFFF | !=0xFFFFFFFF | 数据损坏 |
!=0xFFFF | 0xDEADBEEF | 有效数据 |
!=0xFFFF | !=0xDEADBEEF | 数据损坏 |
在一些示例性实施例中,所述方法进一步包括:如果与第一数据位置相关联的计数器包括有效值(例如,在上述示例中不同于0xFFFF),并且如果与第一数据位置相关联的标识符包括有效值(例如,在上述示例中为0xDEADBEEF),则认为第一数据位置包括最新近的数据。
在一些示例性实施例中,所述方法进一步包括:从非易失性存储器的预定数量的块中的至少一个块读取至少一个另外的数据位置,并且如果与所述至少一个另外的数据位置相关联的计数器包括有效值,并且如果与所述至少一个另外的数据位置相关联的标识符包括有效值,则认为所述至少一个另外的数据位置包括最新近的数据。
另外的示例性实施例涉及一种用于执行根据前述权利要求中至少一项的方法的装置。在一些实施例中,所述装置包括至少一个计算单元和与所述至少一个计算单元相关联(即,可由所述至少一个计算单元使用)的至少一个存储器单元,所述至少一个存储器单元用于至少临时存储计算机程序PRG和/或数据DAT,其中计算机程序PRG可以例如被配置为至少临时控制装置200的操作,例如根据实施例的方法的执行。
根据另外的示例性实施例,所述至少一个计算单元包括至少一个核心(未示出),用于执行计算机程序或其至少部分,例如用于执行根据实施例的方法或其至少一个或多个步骤。
根据另外的优选实施例,所述至少一个计算单元可以包括以下元件中的至少一个:微处理器、微控制器、数字信号处理器(DSP)、可编程逻辑元件(例如,FPGA、现场可编程门阵列)、ASIC(专用集成电路)、硬件电路、张量处理器、图形处理单元(GPU)。根据另外的优选实施例,这些元件中的两个或更多个的任何组合也是可能的。
根据另外的优选实施例,存储器单元包括以下元件中的至少一个:易失性存储器、特别是随机存取存储器(RAM);非易失性存储器、特别是闪速EEPROM。优选地,计算机程序至少临时存储在非易失性存储器中。例如可以用于执行根据实施例的方法的数据可以至少临时存储在RAM中。
根据另外的示例性实施例,可以提供包括指令(例如以计算机程序的形式)的可选计算机可读存储介质,其中计算机程序在由计算机(即,由计算单元)执行时,可以使得计算机实行根据实施例的方法。作为示例,存储介质可以包括或表示数字存储介质,诸如半导体存储器设备(例如,固态驱动器,SSD)和/或磁存储介质(诸如磁盘或硬盘驱动器(HDD))和/或光存储介质(诸如致密盘(CD)或DVD(数字通用盘))等。
根据另外的示例性实施例,所述装置可以包括可选的数据接口,优选地用于与外部设备(未示出)的双向数据交换。作为示例,借助于数据接口,可以例如从外部设备接收数据载体信号,其例如经由有线或无线数据传输介质,例如通过(虚拟)专用计算机网络和/或公共计算机网络(诸如例如因特网)。根据另外的优选实施例,数据载体信号可以表示或携带根据实施例的计算机程序,或至少其一部分。
另外的示例性实施例涉及一种包括指令的计算机程序,当所述程序由计算机执行时,所述指令使得计算机实行根据实施例的方法。
另外的示例性实施例涉及一种包括指令的计算机可读存储介质,当由计算机执行时,所述指令使得计算机实行根据实施例的方法。
另外的示例性实施例涉及对根据实施例的方法和/或根据实施例的装置和/或根据实施例的计算机程序和/或计算机可读存储介质和/或包括和/或表征根据实施例的计算机程序的数据载体信号的使用,以用于以下各项中的至少一项:a)将数据写入非易失性存储器,例如重复地将数据写入非易失性存储器,b)频繁地将数据写入非易失性存储器,c)立即将数据写入非易失性存储器,d)从非易失性存储器读取数据,e)从非易失性存储器读取最新近的、例如有效存储的数据,f)相对于非易失性存储器执行损耗均衡。
附图说明
现在将参考附图描述一些示例性实施例,其中:
图1示意性地描绘了根据一些示例性实施例的简化流程图,
图2示意性地描绘了根据一些示例性实施例的简化框图,
图3示意性地描绘了根据一些示例性实施例的简化框图,
图4示意性地描绘了根据一些示例性实施例的简化流程图,
图5示意性地描绘了根据一些示例性实施例的简化流程图,
图6示意性地描绘了根据一些示例性实施例的简化流程图,
图7示意性地描绘了根据一些示例性实施例的简化流程图,
图8示意性地描绘了根据一些示例性实施例的简化流程图,
图9示意性地描绘了根据一些示例性实施例的简化框图,
图10示意性地描绘了根据一些示例性实施例的简化框图,
图11A示意性地描绘了根据一些示例性实施例的简化框图,
图11B示意性地描绘了根据一些示例性实施例的简化框图,
图11C示意性地描绘了根据一些示例性实施例的简化框图,
图11D示意性地描绘了根据一些示例性实施例的简化框图,
图11E示意性地描绘了根据一些示例性实施例的简化框图,
图11F示意性地描绘了根据一些示例性实施例的简化框图,
图11G示意性地描绘了根据一些示例性实施例的简化框图,
图11H示意性地描绘了根据一些示例性实施例的简化框图,
图12示意性地描绘了根据一些示例性实施例的简化框图,
图13示意性地描绘了根据一些示例性实施例的简化框图,
图14示意性地描绘了根据一些示例性实施例的简化框图,
图15示意性地描绘了根据一些示例性实施例的简化框图,
图16示意性地描绘了根据一些示例性实施例的简化流程图,
图17A示意性地描绘了根据一些示例性实施例的简化框图,
图17B示意性地描绘了根据一些示例性实施例的简化框图,
图17C示意性地描绘了根据一些示例性实施例的简化框图,
图17D示意性地描绘了根据一些示例性实施例的简化框图,
图17E示意性地描绘了根据一些示例性实施例的简化框图,
图17F示意性地描绘了根据一些示例性实施例的简化框图,以及
图18示意性地描绘了根据一些示例性实施例的使用方面。
具体实施方式
参见图1和2,示例性实施例涉及一种操作非易失性存储器10(图2)的方法、例如计算机实现的方法,包括:确定100(图1),在非易失性存储器10的第一块bl-1(图2)中是否有足够的空闲空间用于待写入非易失性存储器10的数据,以及,如果在第一块bl-1中没有足够的空闲空间用于待写入非易失性存储器10的数据dtbw,则将待写入的数据dtbw写入102非易失性存储器10的至少一个另外的块bl-2、bl-n,例如第二块bl-2。在一些示例性实施例中,这可以有助于对非易失性存储器10进行损耗均衡,同时例如使得能够支持对非易失性存储器10的频繁和/或立即写入102和/或恢复写入非易失性存储器10的最新有效数据。
在一些示例性实施例中,非易失性存储器10(图2)可以包括或者可以是例如闪速EEPROM类型的闪速存储器。在一些示例性实施例中,非易失性存储器10可以包括两个或更多个块bl-1、bl-2、…、bl-n、…,其中例如两个或更多个块中的每一个可以被单独擦除,即不影响任何其他块。
在一些示例性实施例中,第一块bl-1和至少一个另外的块例如在非易失性存储器的地址空间中是相邻的,参见例如图2的第一块bl-1和第二块bl-2。在一些示例性实施例中,第一块bl-1和至少一个另外的块在非易失性存储器的地址空间中不相邻,例如参见图2的第一块bl-1和第n块bl-n。
在一些示例性实施例中,非易失性存储器10可以包括4096字节的块大小。在其他示例性实施例中,其他块大小也是可能的。
在一些示例性实施例中,非易失性存储器10可以包括至少一个数据接口IF,用于与至少一个另外的设备(未示出)交换数据,例如嵌入式系统的组件,例如微控制器或车载计算机。在一些示例性实施例中,至少一个数据接口可以是串行接口,例如串行外围接口、SPI和/或QSPI(四通道SPI)等。在一些示例性实施例中,并行接口也是可能的。
在一些示例性实施例中,非易失性存储器10可以集成到至少一个另外的设备中。
在一些示例性实施例中(图1),所述方法包括,如果在第一块bl-1(图2)中有足够的空闲空间用于待写入非易失性存储器的数据,则将待写入的数据dtbw写入104第一块bl-1。
在一些示例性实施例中(图3、4),所述方法包括:使用110(图4)包括计数器CNT和例如预定的标识符ID(例如幻数)的数据结构DS,其中例如待写入非易失性存储器10的数据dtbw被嵌入数据结构DS中,例如在计数器CNT和标识符ID之间(参见块110a),并且可选地,将数据结构DS写入112(图4)非易失性存储器10。在一些示例性实施例中,可以重复块110、112中的至少一个(参见箭头113)。
在一些示例性实施例中,要存储到非易失性存储器10的数据可以使用数据结构DS(图3)来设置,其中计数器值例如位于数据结构DS的开头,并且其中标识符ID(例如幻数)位于数据结构DS的最后。
在一些示例性实施例中,数据结构DS可能看起来像:
struct rbdNvMData_st
{
uint16_t Counter;
...
data
...
uint32_t MagicNumber;
}
其中“rbdNvMData_st”标示数据结构类型的名称,其中“Counter”可以例如包括无符号整数数据类型,例如具有16位,其中“data”表征待写入非易失性存储器的数据(该数据可以包括动态改变的值和/或长度范围,例如在1字节和非易失性存储器的块大小之间或更多),并且其中“MagicNumber”表征标识符(例如但不限于32位无符号整数数据类型)。
在一些示例性实施例中,放置在计数器CNT和标识符/幻数ID之间的数据是动态的,并且可以根据需要添加到数据结构DS中或者从数据结构DS中移除。在一些示例性实施例中,计数器CNT和标识符/幻数ID可以充当保护性边界,“包围”上面解释的数据结构DS内的数据。
在一些示例性实施例中,数据结构DS还可以包括另外的元素(未示出),这些元素例如可以嵌入在计数器CNT与数据之间和/或数据与标识符ID之间。
在一些示例性实施例中(图4),所述方法包括:重复113使用110数据结构DS和/或将数据结构DS写入112非易失性存储器10的步骤,其中优选地,多个数据结构DS被顺序地写入(例如,每个数据结构DS包括各自的、例如增加的计数器值(例如0x0000、0x0001、0x0002,..)和/或单独的数据和标识符)例如第一块bl-1和/或至少一个另外的块bl-n,其中例如后续数据结构DS的计数器CNT的值增加例如一。这样,可以在非易失性存储器10的一个或多个块中高效地建立数据结构DS的有序序列。
在一些示例性实施例中(图5),所述方法包括:使用120非易失性存储器10的预定数量pnb的块,例如在例如预定的序列seq中的第一块bl-1和至少一个另外的块bl-2、bl-n。换句话说,在一些示例中,首先,第一块bl-1例如以上面示例性公开的(一个或多个)数据结构DS的形式被顺序地“填充”有待写入的数据dtbw,并且一旦第一块bl-1为满的,例如不包括足够的空闲空间来容纳包括待写入的数据的另外数据结构DS,则至少一个另外的块(例如第二块bl-2)被顺序地“填充”有待写入非易失性存储器10的数据。
注意,为了简单起见,一些示例性实施例涉及预定数量的两个块。然而,在不失一般性的情况下,实施例的原理也可以应用于其他数量的块,例如大于两个。
在一些示例性实施例中,所述方法包括:例如,如果预定数量的块中的所有块已被填充有例如待写入的数据(例如使用一个或多个数据结构),则擦除122序列seq的至少第一块bl-1。换句话说,一旦非易失性存储器10的预定数量pnb的块中的所有块已经被“填充”有待写入的数据,所述方法就可以绕回123第一块bl-1,例如擦除第一块bl-1,并且继续将待写入非易失性存储器10的数据再次写入第一块bl-1。在一些示例性实施例中,如果第一块bl-1被再次填充,则所述方法可以包括擦除第二块bl-2,并且继续将待写入非易失性存储器10的数据再次写入第二块bl-2,以此类推。
在一些示例性实施例中,所述方法包括以下元素中的至少一个:a)定义130计数器CNT的有效值的值范围vr,b)定义132计数器CNT的至少一个无效值val-inv,其中例如计数器CNT的至少一个无效值对应于用于擦除非易失性存储器10的至少一个块的位模式(例如0xFFFF)。
在一些示例性实施例中,当例如对计数器CNT使用16位无符号整数数据类型时,计数器值的有效值范围vr可以例如范围在0x0000和0xFFFE之间,而0xFFFF可以例如被定义为无效计数器值val-inv,例如因为在一些示例性实施例中,值0xFFFF可以例如对应于用于擦除非易失性存储器的至少一个块的位模式(因此,如果0xFFFF将被用作有效计数器值,则在非易失性存储器的已擦除存储器部分与计数器值0xFFFF之间可能无法区分)。
在一些示例性实施例中,标识符/幻数ID的值可以包括例如以下三个类别中的至少一个和/或可以被分成例如三个类别(示例性地假设标识符包括32位无符号整数数据类型):
1. 标识符值等于0xFFFFFFFF,即它还没有被编程(非易失性存储器的擦除模式对应于所有设置为“1”的位),
2. 标识符值等于幻数,该幻数可以示例性地选择为0xDEADBEEF,
3. 在幻数的位置处已经写入/编程除了上述值(0xFFFFFFFF,0xDEADBEEF)之外的标识符值。在一些实施例中,如果是这种情况,则可以认为幻数被损坏。
在一些示例性实施例中(图7),所述方法包括:例如从非易失性存储器10的预定数量的块中的至少一个块读取140数据,并且可选地,基于数据结构DS解释142所读取数据rd。在一些示例性实施例中,基于数据结构DS解释142所读取数据rd可以包括将所读取数据rd的前两个字节解释为计数器值,和/或将所读取数据rd的后四个字节解释为幻数ID,和/或将所读取数据rd在第二个字节和后四个字节之间的信息解释为已经写入非易失性存储器10的数据。
在一些示例性实施例中,基于例如所读取数据的计数器值,可以评估所读取数据rd的“时期”和/或当前性。
在一些示例性实施例中(图8),所述方法包括:从非易失性存储器的预定数量的块中的至少一个块、例如从第一块bl-1(图2)读取150第一数据位置dl-1,并且可选地,如果a)与第一数据位置dl-1相关联的计数器CNT(图3)包括无效值(例如,0xFFFF,参见上述示例)和/或如果b)与第一数据位置dl-1相关联的标识符ID包括无效值(例如,不同于0xDEADBEEF,参见上述示例),则推断152预定数量的块中的至少一个块bl-1为空。
在一些示例性实施例中,所述方法包括:从非易失性存储器的预定数量的块中的至少一个块读取第一数据位置,并且可选地,如果a)与第一数据位置相关联的计数器包括无效值(例如,0xFFFF,参见上述示例),并且如果b)与第一数据位置相关联的标识符包括擦除模式值(例如,0xFFFFFFFF,参见上述示例),则推断预定数量的块中的至少一个块为空。
在一些示例性实施例中,所述方法进一步包括:如果与第一数据位置相关联的计数器包括无效值(例如,在上述示例中为0xFFFF),并且如果与第一数据位置相关联的标识符包括非擦除模式值(例如,在上述示例中不同于0xFFFFFFFF),则认为第一数据位置被损坏。
在一些示例性实施例中,所述方法进一步包括:如果与第一数据位置相关联的计数器包括有效值(例如,在上述示例中不同于0xFFFF),并且如果与第一数据位置相关联的标识符包括无效值(例如,在上述示例中不同于0xDEADBEEF),则认为第一数据位置被损坏。
在一些示例性实施例中,以下示例性表格的至少一些条目可以适用或可以被使用,例如用于表征前述方面中的至少一个方面:
计数器 | 标识符 | 评估结果 |
0xFFFF | 0xFFFFFFFF | 空(匹配擦除模式) |
0xFFFF | !=0xFFFFFFFF | 数据损坏 |
!=0xFFFF | 0xDEADBEEF | 有效数据 |
!=0xFFFF | !=0xDEADBEEF | 数据损坏 |
在一些示例性实施例中,所述方法进一步包括:如果与第一数据位置相关联的计数器CNT包括有效值(例如,在上述示例中不同于0xFFFF),并且如果与第一数据位置相关联的标识符ID包括有效值(例如,在上述示例中为0xDEADBEEF),则认为154第一数据位置dl-1包括最新近的数据。
在一些示例性实施例中,所述方法进一步包括:从非易失性存储器10的预定数量的块中的至少一个块读取156至少一个另外的数据位置dl-f,并且如果与至少一个另外的数据位置dl-f相关联的计数器CNT包括有效值,并且如果与至少一个另外的数据位置dl-f相关联的标识符ID包括有效值,则认为158至少一个另外的数据位置dl-f包括最新近的数据。
另外的示例性实施例(图9)涉及用于执行根据前述权利要求中至少一项的方法的装置200。在一些实施例中,装置200包括至少一个计算单元202和与该至少一个计算单元相关联(即,可由该至少一个计算单元使用)的至少一个存储器单元204,存储器单元204用于至少临时存储计算机程序PRG和/或数据DAT,其中计算机程序PRG可以例如被配置为至少临时控制装置200的操作,例如根据实施例的方法的执行。
根据另外的示例性实施例,至少一个计算单元202包括至少一个核心(未示出),用于执行计算机程序PRG或其至少部分,例如用于执行根据实施例的方法或其至少一个或多个步骤。
根据另外的示例性实施例,至少一个计算单元202可以包括以下元件中的至少一个:微处理器、微控制器、数字信号处理器(DSP)、可编程逻辑元件(例如,FPGA、现场可编程门阵列)、ASIC(专用集成电路)、硬件电路、张量处理器、图形处理单元(GPU)。根据另外的优选实施例,这些元件中的两个或更多个的任何组合也是可能的。
根据另外的示例性实施例,存储器单元204包括以下元件中的至少一个:易失性存储器204a、特别是随机存取存储器(RAM);非易失性存储器204b、特别是闪速EEPROM。优选地,计算机程序至少临时存储在非易失性存储器204b中。可以例如用于执行根据实施例的方法的数据DAT可以至少临时存储在RAM 204a中。
根据另外的示例性实施例,可以提供包括指令(例如以计算机程序PRG的形式)的可选计算机可读存储介质SM,其中计算机程序PRG在由计算机(即,由计算单元202)执行时,可以使得计算机实行根据实施例的方法。作为示例,存储介质SM可以包括或表示数字存储介质,诸如半导体存储器设备(例如,固态驱动器,SSD)和/或磁存储介质(诸如磁盘或硬盘驱动器(HDD))和/或光存储介质(诸如致密盘(CD)或DVD(数字通用盘))等。
根据另外的示例性实施例,装置200可以包括可选的数据接口206,优选地用于与外部设备(未示出)的双向数据交换。作为示例,借助于数据接口206,可以例如从外部设备接收数据载体信号DCS,其例如经由有线或无线数据传输介质,例如通过(虚拟)专用计算机网络和/或公共计算机网络(诸如例如因特网)。根据另外的优选实施例,数据载体信号DCS可以表示或携带根据实施例的计算机程序PRG,或者至少其一部分。
另外的示例性实施例涉及包括指令的计算机程序PRG,当由计算机202执行该程序时,该指令使得计算机202实行根据实施例的方法。
另外的示例性实施例涉及包括指令PRG的计算机可读存储介质SM,当由计算机202执行时,指令PRG使得计算机202实行根据实施例的方法。
在下文中,公开了可以与任何上面解释的示例性实施例相组合的另外的示例性实施例。
图10示意性地描绘了根据一些示例性实施例的简化框图。描绘的是非易失性存储器10(图2)的两个示例性块bl-n、bl-n+1,其中元素e1标志第一读取位置,其中块bl-n的虚线区域e2标志先前写入块bl-n的(数据)条目,其中元素e3标志写入块bl-n的最后有效数据,其中元素e4标志块bl-n的第一空闲位置,例如下一写入位置。可选地,块bl-n、bl-n+1的另外的存储器区域填充有表征擦除状态的位模式(例如,填充有“1”位,在示例性的四位十六进制数的情况下对应于0xFFFF)。
在一些示例性实施例中,可以例如在目标系统启动和/或装置200(图9)启动时执行的方法包括从第一块bl-n的开头e1开始(如图10所描绘)并开始读取计数器值和幻数的闪存位置,直到它认为有效数据的搜索已经完成。
在一些示例性实施例中,一个目标可以是找到以下各项中的至少一项:a)存储在闪存块bl-n、bl-n+1(如果有的话)中的任何一个中的最后有效数据e3,b)块bl-n、bl-n+1中的第一空闲位置e4,其足够大以保存待写入非易失性存储器10的下一数据结构DS。
在一些示例性实施例中,如上面已经提及的,数据结构DS(图3)被顺序地写入非易失性存储器10(的块),这意味着如果找到有效的计数器值和幻数,则整个数据结构DS已经被完整地写入并且被认为是有效的。在一些示例性实施例中,在该上下文中不进行数据的进一步有效性检查,因为在一些示例性实施例中,应用可以被设计为除了计数器值CNT和幻数ID之外不知道其他。
在一些示例性实施例中,用于将数据写入非易失性存储器10的块bl-n、bl-n+1的过程可以包括:从(块的)开始到(块的)末尾用数据填充块bl-n、bl-n+1,从(目前,根据图10的示例)第一块bl-n到最后一块bl-n+1一次一个块地填充。在一些示例性实施例中,一旦所有闪存块bl-n、bl-n+1都已经被写入,该过程就可以再次绕回第一闪存块bl-n,并且例如在再次向其写入之前擦除它。在一些示例性实施例中,该过程然后可以切换到下一个闪存块bl-n+1,并且可以例如在再次向其写入之前擦除它,以此类推。
图11A至11H示意性地描绘了根据一些示例性实施例的简化框图,其标志如上文参考图10所解释的块bl-n、bl-n+1的不同示例性操作状态,其中状态转变由块箭头A1、A2、A3、A4、A5、A6、A7、A8标志。在一些实施例中,可以重复如下面参考图11A至图11H解释的示例性过程,例如参见块箭头A8。
元素e10标志图11A所描绘的“第一”块bl-n的示例性基地址,并且元素e11标志图11A所描绘的“第二”块bl-n+1的示例性基地址。作为示例,如果块bl-n的基地址e10是0x001FE000,则块bl-n+1的基地址e11可以是0x001FF000,假设块大小为4K,例如4096字节。
图11A示例性地描绘了一种状态,其中两个块bl-n、bl-n+1为空的,例如包括由于示例性擦除策略而被设置为“1”的所有位的位模式。
图11B示例性地描绘了一种状态,其中待写入非易失性存储器10的数据dtbw(图1)例如以一个或多个数据结构DS(图3)的形式被写入块bl-n、bl-n+1中的第一个,例如目前写入块bl-n,例如直到块bl-n为满的,而块bl-n+1为空的。
图11C示例性地描绘了一种状态,其中待写入非易失性存储器10的数据dtbw(图1)例如以一个或多个数据结构DS(图3)的形式被写入块bl-n、bl-n+1中的第二个,例如目前写入块bl-n+1,例如直到块bl-n+1也为满的。
图11D示例性地描绘了一种状态,其中它从块bl-n+1绕回块bl-n,例如准备块bl-n用于将来的写入,例如通过擦除块bl-n,而块bl-n+1仍然为满的。
图11E示例性地描绘了一种状态,其中待写入非易失性存储器10的数据dtbw(图1)例如以一个或多个数据结构DS(图3)的形式被再次写入块bl-n、bl-n+1中的第一个,例如目前写入块bl-n,例如直到块bl-n为满的,而块bl-n+1仍然包括先前已经写入的数据,例如参见图11C。
图11F示例性地描绘了一种状态,其中它切换到“第二”块bl-n+1进行写入,例如包括擦除第二块bl-n+1,而第一块bl-n为满的。
图11G示例性地描绘了一种状态,其中待写入非易失性存储器10的数据dtbw(图1)例如以一个或多个数据结构DS(图3)的形式被再次写入块bl-n、bl-n+1中的第二个,例如目前写入块bl-n+1,例如直到块bl-n+1再次为满的。
图11H示例性地描绘了类似于图11D的状态。
图12示意性地描绘了根据一些示例性实施例的简化框图。元素e20标志“第一”块bl-n的最后有效数据,元素e21标志“第二”块bl-n+1的第一有效数据,元素e22标志根据示例性实施例的计数器值CNT(这里示例性地为0x1337、0x1234)的比较,例如以确定最新近的数据,并且元素e23标志块bl-n、bl-n+1中剩余的空闲部分,例如每个都小于数据结构DS的大小(图3)。
在一些示例性实施例中,用于确定先前写入(一个或多个)块bl-n、bl-n+1的数据块、例如用于搜索先前写入的数据块的方法可以包括以下方面中的至少一个方面:
在一些示例性实施例中,可以搜索块bl-n、bl-n+1,如果必要的话,例如从第一闪存块bl-n中的最开始的数据条目(例如参见图10的元素e1)开始继续到最后闪存块中的最最后的数据条目。
在一些示例性实施例中,目标可以是保持搜索时间尽可能短,即保持对非易失性存储器10的读取访问量最小。在一些实施例中,这可以使得使用非易失性存储器10的应用能够高效地和/或迅速地恢复其先前写入非易失性存储器10的数据(以及例如相关联的状态)。
在一些示例性实施例中,由于数据被写入非易失性存储器10的顺序(例如参见上面提到的序列seq(图5)),数据结构DS的计数器值可以在块bl-n、bl-n+1(图12)之内和之间连续增加,例如,除非在一些示例性实施例中计数器绕回。
在一些示例性实施例中,通过比较先前和当前计数器值,例如将计数器绕回考虑在内,可以确定或决定当前所读取数据位置比先前存储的数据位置旧还是新。给定在示例性实施例中块内的计数器值在增加,在一些实施例中寻找较旧的数据项可能意味着可以跳过整个块。在一些示例性实施例中,这可以用于检测两个块bl-n、bl-n+1之间的转变,其中当前块中的第一项可以揭示数据是比先前块旧还是新。
在一些示例性实施例中,可以检查所有块bl-n、bl-n+1的内容,和/或可以例如重复地(例如连续地)检查找到的新数据是否比最后所读取数据更新近。
在一些示例性实施例中,可以支持对损坏的计数器CNT和/或损坏的幻数ID的检测,但是在一些示例性实施例中,即使检测到损坏的数据CNT、ID,该过程也可以简单地继续检查(另外的)数据项,直到不再有数据条目要检查。
在下文中,公开了例如与读取“第一”块相关的示例性实施例。
图13示意性地描绘了根据一些示例性实施例的简化框图,其示出了块bl-n。如果第一块的第一数据位置e30的计数器CNT(图3)和幻数ID为“空”(例如,填充有擦除型位模式),则整个块bl-n被认为为空的。
图14示意性地描绘了根据一些示例性实施例的简化框图,其中元素e40标志有效数据记录,并且其中元素e41标志无效数据,这些无效数据在一些示例性实施例中可以被检测并忽略。
如果第一块bl-n的第一数据位置的计数器CNT和幻数ID有效,则该数据条目可以被存储为最新近的。在一些示例性实施例中,该过程然后可以前进到当前(例如,第一)块bl-n中下一个数据条目的位置,并重复相同的过程。如果数据集e41的计数器CNT和/或幻数ID被损坏并因此无效,则在一些示例性实施例中,可以忽视相应的数据集e41,并且该过程可以继续到(第一)块bl-n中的下一个数据条目的位置,就像之前一样。
图15示意性地描绘了根据一些示例性实施例的简化框图,其中元素e50标志有效数据,元素e51标志无效数据,并且其中元素e50a可以被识别为最新近的数据。
在一些示例性实施例中,所述方法可以包括继续搜索(第一)块bl-n,例如直到找到空条目或者直到到达(第一)块bl-n的末尾。在块bl-n中存在有效数据e50的情况下,即使其后仅跟随有无效数据e51,最新近的有效数据e50a也可以被认为是最新近的数据。
在一些示例性实施例中,当/如果找到空条目,或者当/如果到达(第一)块bl-n的末尾,则所述方法可以包括继续搜索下一个块bl-n+1(图15中未示出)。
在下文中,公开了例如与读取“第二”或另外的(例如接续的)块(例如,相对于序列seq,图5)相关的示例性实施例。
在一些示例性实施例中,当读取第二/接续块的第一数据位置e21时,例如参见图12的块bl-n+1,可能发生以下情形之一:
1. 在第一数据位置e21处可能存在有效数据条目。在一些示例性实施例中,条目e21的计数器值可以与从先前块bl-n读取的最新近的一个相比较。在一些示例性实施例中,如果条目较旧,则可以跳过整个块bl-n+1。在一些示例性实施例中,如果条目较新,则可以检查下一个数据条目,以此类推。
2. 在第一数据位置e21处可能存在空的数据条目。在一些示例性实施例中,这意味着整个块bl-n+1为空的,并且如果不再有例如序列seq的块剩下要搜索,则可以认为搜索完成。
3. 在第一数据位置e21处可能存在损坏的数据条目。在一些示例性实施例中,可以忽视相应的数据,并且例如可以取而代之检查下一个数据条目。
在一些示例性实施例中,例如就像对于第一块bl-n一样,可以继续搜索第二/接续块bl-n+1,例如直到找到空条目或者直到找到块bl-n+1的末尾。此时,在一些示例性实施例中,可以认为搜索完成(例如,在两个块bl-n、bl-n+1的情况下)或者继续到下一个(例如,在多于两个块bl-n、bl-n+1的情况下)。
在一些示例性实施例中,寻找下一个写入位置可以包括以下方面中的一个或多个方面:在一些示例性实施例中,例如在搜索最新近的数据期间,可以监视用于写入的下一个空闲位置。在一些示例性实施例中,可以例如基于最新近的数据所在的块中空闲空间的可用性选择下一个空闲位置,并且其将是:1. 给定剩余足够的空闲空间,与最新近的数据在同一块中的第一空闲位置,2. 接续闪存块的第一数据位置,在一些示例性实施例中,如果必要,则首先擦除该块。
在下文中,解释了根据一些示例性实施例的示例性数据场景。为了下面的解释,并且在不失一般性的情况下,假设所有数据都是有效的,并且使用两个块bl-n、bl-n+1(例如,类似于图12)。
方面A):两个块bl-n、bl-n+1均为空的,例如参见图17A。
如果第一块bl-n的第一数据位置的计数器和幻数为空,则可以指示整个第一块bl-n为空。在一些示例性实施例中,所述方法可以包括跳到第二块bl-n+1的开头,例如为了检查第二块bl-n+1的第一数据位置的计数器和幻数。
在一些示例性实施例中,如果第二块bl-n+1的第一数据位置的计数器和幻数也为空,则这可能意味着两个块均为空。在一些示例性实施例中,不能从两个块bl-n、bl-n+1恢复有效数据,并且可以对第一块bl-n的第一数据位置执行下一次写入。
方面B):第一块bl-n为空,第二块bl-n+1被写入,但未满。
在一些示例性实施例中,第一块bl-n可以为空的,并且第二块bl-n+1可以被部分写入,其中例如在第二块bl-n+1中存在足够的空间来保存至少再多一个数据条目。在一些示例性实施例中,所述方法可以不故意将非易失性存储器10置于这种状态,但是例如如果非易失性存储器10例如由于在写入和/或擦除期间的突然断电而可能结束于这种状态,则可以支持它。在一些示例性实施例中,可以恢复来自第二块bl-n+1的最后有效数据,并且可以对第二块bl-n+1的第一空闲数据位置执行下一次写入。
方面C):第一闪存块bl-n为空,第二闪存块bl-n+2为满,例如参见图17F。
在一些示例性实施例中,第一块bl-n可以为空的,并且第二块bl-n+1可以为满的,或者至少不能保存另一个数据条目。
在一些示例性实施例中,可以恢复来自第二块bl-n+1的最后有效数据,并且可以对第一块bl-n的第一数据位置执行下一次写入。
方面D):第一块bl-n被写入但未满,第二块bl-n+2为空,例如参见图17B。
在一些示例性实施例中,第一块bl-n可以被部分写入,并且第二块bl-n+1可以为空的。在一些示例性实施例中,第一块bl-n中可能存在足够的空间来保存至少再多一个数据条目。在一些示例性实施例中,可以恢复来自第一块bl-n的最后有效数据,并且可以对第一块bl-n的第一空闲数据位置执行下一次写入。
方面E):两个闪存块bl-n、bl-n+1均被部分写入。
在一些示例性实施例中,两个块bl-n、bl-n+1均可以被部分写入,其中例如在两个块中的每一个中存在足够的空间来保存至少再多一个数据条目。在一些示例性实施例中,根据示例性实施例的方法并不故意将非易失性存储器10置于这种状态,但是如果非易失性存储器10例如由于在写入和/或擦除期间的突然断电而倘若结束于这种状态,则可以支持它。在一些示例性实施例中,通过检查计数器值,可以检测最新近块。在一些示例性实施例中,可以恢复来自最新近块的最后有效数据,并且可以对最新近块的第一空闲数据位置执行下一次写入。
方面F):第一块bl-n被部分写入,第二块bl-n+1为满的。
在一些示例性实施例中,第一块bl-n可以被部分写入,并且第二块bl-n+1为满的,或者至少不能保存另一个数据条目。在一些示例性实施例中,第一块bl-n中可能存在足够的空间来保存至少再多一个数据条目。在一些示例性实施例中,在第一块bl-n包含最新近的数据的情况下,可以恢复来自第一块bl-n的最后有效数据,并且在一些示例性实施例中,可以对第一块bl-n的第一空闲数据位置执行下一次写入。
在第二块bl-n+1包含最新近的数据的情况下,在一些示例性实施例中,可以恢复来自第二块的最后有效数据,并且可以对第一块的第一数据位置执行下一次写入(例如,在一些示例性实施例中,在将其擦除之后)。
方面G):第一块bl-n为满,第二块bl-n+1为空,例如参见图17C。
在一些示例性实施例中,第一块bl-n可以为满的,或者至少不能保存另一个数据条目,并且第二块bl-n+1为空的。在一些示例性实施例中,可以恢复来自第一块bl-n的最后有效数据,并且在一些示例性实施例中,可以对第二块的第一数据位置执行下一次写入。
方面H):第一块bl-n为满的,第二块bl-n+1被部分写入,例如参见图17D。
在一些示例性实施例中,第一块bl-n为满的,或者至少不能保存另一个数据条目,并且第二块bl-n+1被部分写入,其中例如在第二块bl-n+1中存在足够的空间来保存至少再多一个数据条目。在一些示例性实施例中,可以恢复来自第二块bl-n+1的最后有效数据,并且在一些示例性实施例中,将对第二块的第一空闲数据位置执行下一次写入。
方面I):两个块bl-n、bl-n+1均为满的,例如参见图17E。
在一些示例性实施例中,两个块bl-n、bl-n+1均为满的,或者至少不能保存另一个数据条目。在一些示例性实施例中,通过检查计数器值,可以检测最新近块。在一些示例性实施例中,可以恢复来自最新近块的最后有效数据,并且在一些示例性实施例中,可以对另一块的第一数据位置执行下一次写入(例如,在一些示例性实施例中,在将其擦除之后)。
图16示意性地描绘了根据一些示例性实施例的简化流程图,其也可以被认为是活动图,该活动图示例性地示出了搜索最新数据的方面,例如在一些示例性实施例中从非易失性存储器10中恢复以及如何在其中分配下一个写入位置。
根据一些示例性实施例,块b1标志变量的初始化。块b2标志设置与非易失性存储器相关联的读取变量(“闪存读取变量”),例如指出第一块bl-n中的第一条目(图10)。块b3标志从当前块确定读取位置,以及例如当前块的地址,例如基地址。块b4标志读取与第一条目相关联的计数器CNT和幻数ID。
块b5标志计数器CNT是否为空(例如,包括擦除型位模式)以及幻数是否为空(例如,也包括擦除型位模式)的确定。如果是,则该过程继续到块b6,其标志可以跳过当前块,例如因为在当前块中没有更多的条目。块b7标志例如在跳过b6第一块bl-n之后已经找到有效数据,并且非易失性存储器10的写入位置被设置为其初始值,并且认为存储的块等于当前块bl-n+1。块b8标志将当前位置存储为写入位置,例如因为在同一块内已经找到了有效数据和空闲空间。
块b9标志已经发布了到下一个数据条目的前进。如果是,则该过程继续到块b10,其标志使块地址前进数据条目大小。块b11标志是否到达当前块的末尾、例如当前块中剩余的空闲空间是否小于一个数据条目的确定。如果是,则该过程继续到块b12,其标志到下一个块的前进的发布。
块b13标志是否已经发布了到下一个块的前进的确定。如果是,则该过程继续到块b14,其标志是否有任何剩余块的确定。如果是,则该过程继续到块b15,其标志使块计数器前进,并且块b16标志将块地址设置到当前块的第一数据条目。如果确定b14得出没有剩余块,则该过程继续到块b17,其标志搜索完成。
块b18标志搜索是否完成的确定,块b19标志是否已经找到有效数据的确定,并且如果是,则该过程继续到块b20,其标志非易失性存储器10的写入位置是否未设置、例如是否等于其初始值的确定。如果是,则该过程继续到块b21,其标志将写入位置设置为存储的块号之后的块的开头。如果块不为空,则块b22标志擦除该块。
如果在块b19中没有找到有效数据,则该过程继续到块b23,如果第一块不为空,则块b23标志擦除第一块。块b24标志将写入位置设置为第一块的开始。
如果块b5的确定得出计数器CNT不为空(例如,不包括擦除型位模式)和/或幻数不为空(例如,不包括擦除型位模式),则该过程继续到块b25,其标志计数器CNT是否有效以及幻数是否有效的确定。如果是,则该过程继续到块b26,其标志计数器CNT是否比存储的计数器新、或者到目前为止是否没有找到有效数据的确定。如果是,则该过程继续到块b27,其标志存储计数器值和块号以及当前读取位置。块b28标志:标记出已经找到有效数据,块b29标志将非易失性存储器10的写入位置重置到其初始值,并且块b30标志发布到下一个数据条目的前进。
如果块b26的确定得出计数器CNT不比存储的计数器新,或者到目前为止没有找到有效数据,则该过程继续到块b31,其标志该块可以被跳过,因为它包含较旧的条目。
如果块b25的确定得出计数器CNT无效或者幻数无效,则该过程继续到块b32,其标志已经检测到数据损坏。块b33标志到下一个数据条目的前进的发布,例如忽略在先前的块b33中检测到的被损坏的数据,并且该过程可以例如继续到块b9。
另外的示例性实施例(图18)涉及对根据实施例的方法和/或根据实施例的装置和/或根据实施例的计算机程序和/或计算机可读存储介质和/或包括和/或表征根据实施例的计算机程序的数据载体信号的使用300,以用于以下各项中的至少一项:a)将数据写入302非易失性存储器10,例如重复地将数据写入非易失性存储器10,b)频繁地将数据写入304非易失性存储器10,c)立即将数据写入306非易失性存储器10,d)从非易失性存储器10读取308数据,e)从非易失性存储器10读取310最新近的(例如有效存储的)数据,f)相对于非易失性存储器执行312损耗均衡。
Claims (15)
1.一种操作非易失性存储器(10)的方法、例如计算机实现的方法,包括:确定(100)非易失性存储器(10)的第一块(bl-1)中是否有足够的空闲空间用于待写入非易失性存储器(10)的数据(dtbw),并且如果第一块(bl-1)中没有足够的空闲空间用于待写入非易失性存储器(10)的数据(dtbw),则将待写入的数据(dtbw)写入(102)非易失性存储器(10)的至少一个另外的块(bl-2,…,bl-n)、例如第二块(bl-2)。
2.根据权利要求1所述的方法,其中,如果第一块中有足够的空闲空间用于待写入非易失性存储器(10)的数据(dtbw),则将待写入的数据(dtbw)写入(104)第一块(bl-1)。
3.根据前述权利要求中至少一项所述的方法,包括:使用(110)包括计数器(CNT)和例如预定标识符(ID)、例如幻数的数据结构(DS),其中例如待写入非易失性存储器(10)的数据(dtbw)被嵌入(110a)在数据结构(DS)中,例如在计数器(CNT)和标识符(ID)之间,以及可选地,将数据结构(DS)写入(112)非易失性存储器(10)。
4.根据权利要求3所述的方法,包括:重复(113)使用(110)和/或写入(112)的步骤,其中优选地,多个数据结构(DS)被顺序地写入例如第一块(bl-1)和/或至少一个另外的块(bl-2,…,bl-n),其中例如后续数据结构(DS)的计数器(CNT)的值增加例如一。
5.根据前述权利要求中至少一项所述的方法,包括:在例如预定的序列(seq)中使用(120)非易失性存储器(10)的预定数量(pnb)的块,例如第一块(bl-1)和所述至少一个另外的块(bl-2,…,bl-n)。
6.根据权利要求5所述的方法,进一步包括,例如,如果预定数量(pnb)的块中的所有块已经例如使用一个或多个数据结构(DS)而被填充有例如待写入的数据(dtbw),则擦除(122)序列(seq)的至少第一块(bl-1)。
7.根据权利要求3至6中至少一项所述的方法,包括以下元素中的至少一个:a)定义(130)计数器(CNT)的有效值的值范围(vr),b)定义(132)计数器(CNT)的至少一个无效值(val-inv),其中例如计数器(CNT)的所述至少一个无效值(val-inv)对应于用于擦除非易失性存储器(10)的至少一个块的位模式。
8.根据权利要求5至7中至少一项所述的方法,至少回过来参考权利要求3,包括:例如从非易失性存储器(10)的预定数量(pnb)的块中的至少一个块读取(140)数据,并且可选地,基于数据结构(DS)解释(142)所读取数据(rd)。
9.根据权利要求3至8中至少一项所述的方法,包括:从非易失性存储器(10)的预定数量(pnb)的块中的至少一个块读取(150)第一数据位置(dl-1),以及,A)可选地,如果a)与第一数据位置(dl-1)相关联的计数器(CNT)包括无效值和/或如果b)与第一数据位置(dl-1)相关联的标识符(ID)包括无效值,则推断(152)预定数量(pnb)的块中的所述至少一个块为空,和/或,B)可选地,如果与第一数据位置(dl-1)相关联的计数器(CNT)包括无效值,并且如果与第一数据位置(dl-1)相关联的标识符(ID)包括非擦除模式值,则认为(154)第一数据位置(dl-1)被损坏,和/或,C)可选地,如果与第一数据位置(dl-1)相关联的计数器(CNT)包括有效值,并且如果与第一数据位置(dl-1)相关联的标识符(ID)包括无效值,则认为(154)第一数据位置(dl-1)被损坏。
10.根据权利要求9所述的方法,进一步包括:如果与第一数据位置(dl-1)相关联的计数器(CNT)包括有效值,并且如果与第一数据位置(dl-1)相关联的标识符(ID)包括有效值,则认为(154)第一数据位置(dl-1)包括最新近的数据。
11.根据权利要求10所述的方法,进一步包括:从非易失性存储器(10)的预定数量(pnb)的块中的所述至少一个块读取(156)至少一个另外的数据位置(dl-f),并且如果与所述至少一个另外的数据位置(dl-f)相关联的计数器(CNT)包括有效值,并且如果与所述至少一个另外的数据位置(dl-f)相关联的标识符(ID)包括有效值,则认为(158)所述至少一个另外的数据位置(dl-f)包括最新近的数据。
12.一种用于执行根据前述权利要求中至少一项的方法的装置(200)。
13.一种包括指令的计算机程序(PRG),当所述程序(PRG)由计算机(302)执行时,所述指令使得计算机(302)实行根据权利要求1至11中至少一项的方法。
14.一种包括指令(PRG’)的计算机可读存储介质(SM),当由计算机(302)执行时,所述指令(PRG’)使得计算机(302)实行根据权利要求1至11中至少一项的方法。
15.对根据权利要求1至11中至少一项的方法和/或根据权利要求12的装置(200)和/或根据权利要求13的计算机程序(PRG)和/或计算机可读存储介质(SM)和/或包括和/或表征根据权利要求13的计算机程序(PRG)的数据载体信号(DCS)的使用(300),以用于以下各项中的至少一项:a)将数据写入(302)非易失性存储器(10),例如重复地将数据写入非易失性存储器(10),b)频繁地将数据写入(304)非易失性存储器(10),c)立即将数据写入(306)非易失性存储器(10),d)从非易失性存储器(10)读取(308)数据,e)从非易失性存储器(10)读取(310)最新近的、例如有效存储的数据,f)执行(312)相对于非易失性存储器(10)的损耗均衡。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102021105183.5 | 2021-03-04 | ||
DE102021105183.5A DE102021105183A1 (de) | 2021-03-04 | 2021-03-04 | Verfahren und Vorrichtung zum Betreiben eines nichtflüchtigen Speichers |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115035940A true CN115035940A (zh) | 2022-09-09 |
Family
ID=82898215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210201505.9A Pending CN115035940A (zh) | 2021-03-04 | 2022-03-03 | 用于操作非易失性存储器的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115035940A (zh) |
DE (1) | DE102021105183A1 (zh) |
-
2021
- 2021-03-04 DE DE102021105183.5A patent/DE102021105183A1/de active Pending
-
2022
- 2022-03-03 CN CN202210201505.9A patent/CN115035940A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102021105183A1 (de) | 2022-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7543137B2 (en) | Information processing device and information processing method | |
US10783071B2 (en) | Data storage device and operating method thereof, wherein mapping table for valid data of source block that has not been copied to destination block has a higher priority than mapping information collected by reverse scanning from end of the destination block | |
US8046530B2 (en) | Process and method for erase strategy in solid state disks | |
US9431069B2 (en) | Management method for nonvolatile memory system following power-off | |
US7480760B2 (en) | Rotational use of memory to minimize write cycles | |
JP4560408B2 (ja) | 不揮発性記憶装置の制御方法 | |
US8161229B2 (en) | Flash memory architecture with separate storage of overhead and user data | |
US20020085433A1 (en) | Data management system and data management method | |
US20090327804A1 (en) | Wear leveling in flash storage devices | |
US20070083697A1 (en) | Flash memory management | |
US20030093610A1 (en) | Algorithm of flash memory capable of quickly building table and preventing improper operation and control system thereof | |
US7725646B2 (en) | Method of using a flash memory for a circular buffer | |
JP2008033788A (ja) | 不揮発性記憶装置、データ記憶システム、およびデータ記憶方法 | |
JP2000510634A (ja) | 複数のデバイスへ同時書き込み操作を行うことにより高まるフラッシュメモリデバイスにおけるメモリ性能 | |
JP2005182793A (ja) | 頻繁にアクセスされたセクタの動作による不揮発性メモリに対するより速い書込み動作 | |
TWI633428B (zh) | 資料儲存裝置與記憶體裝置之資料處理方法 | |
JP2010020586A (ja) | データ処理装置 | |
JP5929485B2 (ja) | 制御装置、記憶装置、データ書込方法 | |
US20070136510A1 (en) | Storage device, memory managing device, memory managing method, and program | |
CN112596668A (zh) | 一种存储器的坏块处理方法及系统 | |
US20130080690A1 (en) | Method to emulate eeprom using flash memory | |
US20240037024A1 (en) | Information processing device and test method | |
CN115035940A (zh) | 用于操作非易失性存储器的方法和装置 | |
JP2006504200A (ja) | 共通論理ブロックに関連付けられている物理ブロックを解決するための方法および装置 | |
JP2008084184A (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 |