CN103229245B - 电子设备 - Google Patents
电子设备 Download PDFInfo
- Publication number
- CN103229245B CN103229245B CN201180046649.1A CN201180046649A CN103229245B CN 103229245 B CN103229245 B CN 103229245B CN 201180046649 A CN201180046649 A CN 201180046649A CN 103229245 B CN103229245 B CN 103229245B
- Authority
- CN
- China
- Prior art keywords
- sector
- page
- target
- erasing
- slot
- 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
- 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
-
- 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
- G11C16/105—Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
-
- 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
-
- 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
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
Abstract
一种电子设备,包括:非易失性存储器(4),其被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,每个所述扇区(10)包括多个所述部分,并且所述存储器具有至少三个所述扇区,所述扇区中的每个扇区适于与其他扇区无关地被擦除;以及控制装置,其能够操作以控制扇区的擦除,其中:所述控制装置被配置成将关于擦除过程的擦除信息存储在除了所述扇区中的目标扇区之外的多个扇区中,以使得能够检查扇区中的这样的信息以在中断事件之后建立适当的恢复过程,擦除过程包括擦除目标扇区。
Description
本发明涉及一种电子设备,例如涉及诸如微控制器的计算设备。这样的设备可能易受诸如断电事件的中断事件的影响。
微控制器通常嵌入在其他系统中以提供局部控制,所述系统例如为汽车、电话、器具、机器、机器人、以及计算机系统的外围设备。像这样,微控制器可以被认为是自含式系统(self-containedsystem),并且通常具有处理器、存储器及外围设备。当然,可以用硬件等效地实现程序化微控制器的功能,而不是使处理器执行代码。鉴于可编程微控制器的多功能性,通常可编程微控制器是优选的。
虽然一些嵌入式系统是非常复杂的,但是许多嵌入式系统对于存储器和程序长度有最低要求,没有操作系统,并且软件复杂性低。典型的输入和输出设备包括:开关、继电器、螺线管、LED、小型或者定制的LCD显示器、RF(射频)设备、以及传感器(例如,用于感测温度、湿度或者亮度级)。
嵌入式系统通常没有键盘、屏幕、磁盘、打印机或者个人计算机的其他可识别的I/O设备,并且可能缺乏任何类型的人机交互设备。可以在这样的嵌入式系统中以及在具有人机交互设备的系统中使用本发明。
将会理解的是,微控制器仅是在嵌入式应用中有利的计算设备中的一种类型。本发明可以延伸至如通常在个人计算机中使用的诸如微处理器的其他类型的电子设备,或者延伸至其他更加通用的电子设备。
众所周知,微控制器是一种通常设置在单个集成电路上的小型电子设备。可以设置易失性存储器和非易失性存储器两者。闪速存储器(例如,NOR闪速存储器)形式的程序存储器以及一些RAM(随机存取存储器)经常包括在芯片上。将会理解的是,易失性存储器和非易失性存储器都可以被设置成片外存储器以及片上存储器,或者可以被设置成片外存储器来替代片上存储器,并且将相应地解释本公开内容。
微控制器主要可以是数字装置,或者可以是例如混合信号装置,集成了控制非数字电子系统所需要的模拟部件。诸如微控制器的计算设备可以例如包括DAC(数字-模拟转换器)和/或ADC(模拟-数字转换器)部件。
在许多微控制器系统中,需要将运行时间数据存储在非易失性存储器中。该数据可以包括大量的不同尺寸的数据块,所述数据块在不同时间处以不同频率变化(创建、更新、删除)。随机存取的EEPROM(电可擦可编程只读存储器)可能很适合这一需要。
然而,微控制器通常包含闪速存储器,而不是随机存取的EEPROM,因为闪速存储器在同等(comparable)的存储容量上更便宜且更易于集成。
闪速存储器是一种非易失性计算机存储技术,其可以被电擦除和重新编程。闪速存储器经常用在存储卡、USB闪速驱动器和固态驱动器中,用于通用存储以及在计算机与其他数字产品之间传递数据。因为闪速存储器是非易失性的,所以不需要电力来维持所存储的信息。此外,闪速存储器提供了快速读出-存取时间和良好的耐动力冲击性。
闪速存储器是一种特定类型的EEPROM。虽然在技术上是一种类型的EEPROM,但是术语“EEPROM”通常用于具体表示能够以非常小的部分或者块(通常为字节)进行擦除的非闪速EEPROM。
类似于所有EEPROM,闪速存储器能够以数据的相对小的部分被写入,所述相对小的部分被称为页(这些页通常具有针对具体存储器的字长,并且不应该与本文中稍后描述的虚拟页混淆)。不同于可随机存取的EEPROM,所述页不能被独立地擦除,而是必须作为由大量页组成的扇区来擦除。为了直接映射到非易失性数据的块,这些扇区通常尺寸太大且计数不足。
已经努力通过将多个块多次存储到几个大扇区来在闪速存储器中仿真可随机存取的EEPROM的能力。所得到的闪速存储器系统可以被称为虚拟EEPROM存储器。
为了擦除闪存扇区(flashsector),已经认识到需要将对应于该闪存扇区的虚拟EEPROM的内容的副本存储在一些其他存储器中。如果在擦除期间虚拟EEPROM的内容要相对于突然断电(例如与电源轨暂时断连)是安全的,则该内容的至少一个副本需要被一直存储到闪速存储器。
因此,已经确定,需要至少两个闪存扇区,以使得在数据被存储到一个或更多个其他扇区的情况下,一个扇区可以被擦除。已经确定,使用两个相同的扇区、或者以交替顺序使用/擦除的两个相同的扇区组,可以进行EEPROM仿真。
因为虚拟EEPROM的内容被存储到若干扇区中的一个或更多个扇区,所以已经确定仿真系统需要知道特定数据的最新副本被存储在哪个扇区上。该信息不能被存储在虚拟存储器上,这是因为在到虚拟存储器的第一次读取尝试之前需要该信息。用于该目的的手段包括扇区上的标志或者魔语(magic-word),所述标志或魔语识别包含标志的扇区的状态。作为另一可选方案,可以通过增加的索引来识别扇区。
存在不同的分布数据方式。例如,可以将仿真的全部虚拟数据恰好一次存储到一个扇区,或者可以将仿真的全部虚拟数据分布在多于一个的扇区上。
已经确定,可以通过两种不同的方法来实现扇区上的物理存储器到虚拟存储器的分配。第一种方法是静态关系,即,将虚拟存储器的特定范围存储在物理存储器的专用范围中,或者将物理存储器的特定范围专用于虚拟存储器的特定子集。第二种方法是借助于关联表的动态关系。该方法在运行时间期间将物理存储器分配到虚拟存储器,并且将关系存储在表中。在这种情况下,物理存储器可以由任何虚拟存储器占用。表中的每个单独关联的物理位置也可以是动态的。
已经确定,可以通过将全部的虚拟数据存储在静态分配的存储器的块中并且然后将小变化添加在动态分配列表中,来将动态分配与静态分配结合。
为了在写入或者擦除期间保持相对于突然断电(例如由于与电压源断连而导致的突然断电)是安全的,已经确定,下列序列是有用的:(1)标记操作已启动;(2)执行操作;以及(3)然后标记操作已完成。如果在读出期间发现操作开始了但是没有完成,则可以认为由于突然断电或者一些其他中断事件而导致操作失败。然后可以忽略受影响的数据。
可以从关联表中查找存储到物理存储器的动态分配范围的虚拟数据块。因为可能事先不知道关联表中的每个关联的位置,所以会需要针对有效条目来扫描表。这可以从最近的条目开始向着最早的条目来完成,以找出适合该关联的最近的条目。
与易失性数据中的错误相比,非易失性存储器上的错误数据有严重得多的后果。这是因为通过例如借助于看门狗(例如,必须被周期性地触发以防止重置的硬件)进行控制器的重置不可能恢复数据。因此,通常通过冗余代码来保护非易失性数据免受较小的位错误。
不幸地,冗余代码不足以检测对闪速存储器的擦除或者写入是否被突然断电或其他类似的中断事件中断,因为受影响的位将会处于不可预测的状态。这可以通过存储到存储器单元的、指示一些其他存储器单元的状态的标志来完成。
擦除闪存扇区要花很长时间,并且在通过断电被中断的情况下会使存储器的大范围处于不可预测状态。因此,从不完全擦除的闪存扇区中读取毁坏的数据的风险很高。
期望解决上述问题并提供改进的电子设备。期望提供对由于中断事件造成的错误具有降低的敏感度的电子设备。期望保护非易失性数据不受这样的损坏。
期望提高相对于断电的安全性或者相对于由于断电造成的中断的安全性。在闪存写入或擦除操作通过断电被中断的情况下,存在可以影响虚拟数据的两种主要错误情形,即数据丢失和数据损坏。
通过将数据恢复到先前的合法值,即没有丢失或者损坏的值,可以缓和这些错误情形。因此,期望检测数据丢失或者数据损坏。还期望维持一个合法值,直到对应的新数据变为合法为止。
换句话说,期望确定性地检测由不完全执行的闪存写入或者闪存擦除操作所引起的数据丢失或者数据损坏,并且期望忽略不完全的或者损坏的数据。还期望在闪速存储器中保存任何数据的先前的合法值,直到新的值被完全写入为止,并且期望最新的且只有最新的合法值被认为是当前的“虚拟”数据。
(A1)根据本发明的第一方面,提供了一种电子设备,包括:非易失性存储器,其被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,每个所述扇区包括多个所述部分,并且所述存储器具有至少三个所述扇区,所述扇区中的每个扇区适于与其他扇区无关地被擦除;以及控制装置,其能够操作以控制所述扇区的擦除,其中:所述控制装置被配置成将关于擦除过程的擦除信息存储在除了所述扇区中的目标扇区之外的多个扇区中,以使得能够检查所述扇区中的这样的信息以在中断事件之后建立适当的恢复过程,所述擦除过程包括擦除所述目标扇区。
这样的中断事件(例如断电)可能发生在擦除过程期间。本电子设备有利地以鲁棒的方式使得这样的中断事件能够恢复。
存储器部分可以是小的存储器部分,例如位、字节、字、页。非易失性存储器可以被配置成使得其可能以一次一个扇区的方式被擦除,每个扇区擦除实际上是单个动作。
电子设备可以例如是具有处理器的计算设备,或者可以是不具有处理器的硬件。设备可以是微控制器的一部分,或者可以是微控制器。例如,控制装置可以是微控制器的一部分,而存储器可以是微控制器的外部存储器。设备可以包括微控制器的其他部分,例如,输入/输出端口和外围设备。
存储器可以一次写入到一个存储器部分。存储器可以例如是闪速存储器,例如NOR闪速存储器。
多个扇区可以构成扇区中的大多数,例如以使得能够进行多数决定法。多个扇区可以构成除了目标扇区之外的所有扇区。
存储器可以具有至少四个扇区。
针对擦除过程,控制装置可以操作以将擦除信息存储在所有扇区中。例如,当准备擦除目标扇区时,可以将这样的擦除信息存储在所有扇区中,并且在擦除目标扇区之后,可以将擦除信息存储在除了目标扇区之外的扇区中的所有扇区中,以指示目标扇区已经被擦除。
针对擦除过程,控制装置可以操作以按照给定的顺序将擦除信息存储到有关的扇区。针对每个擦除过程可以采用相同的顺序,例如使得在擦除过程的基础上不需要存储信息来识别所采用的顺序。
针对擦除过程,控制装置可以操作以在有关的扇区中存储相同的擦除信息。有利地,这可以使得不同的扇区中的擦除信息能够容易地被比较,并且用于检测不同(对推断需要不同的恢复过程有用)。
擦除信息本身可以识别目标扇区,或者一些其他信息可以识别目标扇区。擦除信息(还)可以指示擦除过程的状态。擦除信息可以识别目标扇区和/或擦除过程的状态。例如,每个有关的扇区中的擦除信息可以识别擦除过程是否已经开始以及擦除过程是否已经完成。因此不同的扇区中的擦除信息之间的差异可以使得能够推断扇区的状态(以及由此适当的恢复过程)。擦除信息可以存储在针对这样的擦除信息而保留的存储器的区域中。擦除信息可以是除了数据页中存储的数据之外的信息或者附加到数据页中存储的数据的信息。
控制装置可以操作以在进行擦除之前存储这样的擦除信息,所述擦除信息指示有待进行擦除。这样的信息可以有用地使得能够确定擦除过程已经开始(至少部分地)。
类似地,控制装置可以操作以在进行擦除之后存储这样的擦除信息,所述擦除信息指示已经进行了擦除。这样的信息可以有用地使得能够确定擦除过程已经完成(至少部分地)。
在擦除之后,控制装置可以操作以更新在进行所述擦除之前存储在除了目标扇区之外的扇区中的擦除信息进行,以指示已经进行了擦除。也就是说,可以改变擦除信息。
控制装置可以被配置成在进行擦除之前存储这样的擦除信息时,通过将信息的n位目标模式存储在有关的扇区中的每个扇区的特定区域中来识别目标扇区,这些区域与目标扇区相关联。
控制装置可以被配置成在进行擦除之前存储这样的擦除信息时,通过将信息的n位非目标模式存储在有关的扇区中的每个扇区的特定区域中来将具体扇区识别为是除了目标扇区之外的扇区,这些区域与具体扇区相关联。
控制装置可以被配置成在进行擦除之前存储这样的擦除信息时,通过将信息的n位未完成模式存储在有关的扇区中的每个扇区的特定区域中来指示目标扇区还没有被擦除,这些区域用于指示是否已经进行了擦除。
控制装置被配置成在进行了擦除之后存储这样的擦除信息时,通过将信息的n位已完成模式存储在有关的扇区中的每个扇区的特定区域中来指示目标扇区已经被擦除,这些区域用于指示是否已经进行了擦除。
n的值可以等于1,或者可以大于1。n的值可以大于或等于2m+1,其中m为正整数(自然数)。
在实现方式中为了简单起见,目标模式的位可以全部具有相同的逻辑值。同样在实现方式中为了简单起见,非目标模式的位也可以全部具有相同的逻辑值,例如与目标模式的值相反的值。类似的考虑可以应用于已完成模式和未完成模式。已完成模式和目标模式可以彼此相同。未完成模式和非目标模式可以彼此相同。当然,可以采用更加复杂的模式。
在n大于1并且可选地n大于或等于2m+1的情况下,其中m为正整数(自然数),控制装置可以被配置成:如果有关的位中的大多数位与所述目标模式匹配,则将从所述存储器读取的这样的n位模式视为是目标模式;或者如果这些位中的大多数位与所述非目标模式匹配,则将从所述存储器读取的这样的n位模式视为是非目标模式;或者如果这些位中的大多数位与所述未完成模式匹配,则将从所述存储器读取的这样的n位模式视为是未完成模式;或者如果这些位中的大多数位与所述已完成模式匹配,则将从所述存储器读取的这样的n位模式视为是已完成模式。这样的多数决定法可以有利地允许设备应对位值的损坏。例如,在n大于或等于2m+1的情况下,设备可能能够处理每个模式的m位的损坏。
在实现方式中为了简单起见,对于每种所述模式,值n可以是相同的值。值n可以在模式之间不同,或者一种模式可以具有与其他模式不同的的值n,导致更加复杂的实现方式。设想这样的复杂的实现方式。
上文所讨论的存储可以包括写入到存储器。这样的存储可以包括改变存储器中已经存在的值,或者使存储器中已经存储的值不改变(或许通过重写该值),如在要存储的模式下适当的。
控制装置可以操作以在擦除过程期间使目标扇区被完全擦除。
对于某些类型的存储器,擦除可以包括在将目标扇区的位中的所有位(所有位)擦除到已擦除状态之前,将目标扇区的位中的所有位写入为已写入状态。
擦除过程可以包括:将扇区作为用于擦除的目标;对识别所述目标扇区的这样的擦除信息进行存储;擦除所述目标扇区;以及(然后)(在除了目标扇区之外的扇区中)对指示已经进行了擦除的这样的擦除信息进行存储。可以在擦除过程之前清理目标扇区,清理目标扇区可以包括将所需的数据复制到另一扇区,例如具有足够的空间的最老的扇区。如果按页存储这样的数据,则可以逐页地进行复制。
控制装置可以操作以在中断事件之后访问存储在扇区中的擦除信息,以及根据所访问的信息在中断事件之后建立适当的恢复过程。
例如,控制装置可以被配置成:如果所访问的信息指示扇区中的两个或更多个扇区是目标扇区,则在中断事件之后中止擦除过程。
例如,根据所述访问,控制装置可以操作以:在没有扇区存储将具体扇区识别为用于擦除的目标扇区的擦除信息时,确定不需要恢复过程。这可以指示在完全的擦除过程之前或者之后发生中断。
作为另一个示例,根据所述访问,控制装置可以操作以:在扇区中的至少一个扇区的所访问的擦除信息将具体扇区识别为用于擦除的目标扇区并且扇区中的至少两个扇区没有存储将具体扇区识别为用于擦除的目标扇区的擦除信息时,确定擦除过程的部分过程或全部过程要作为恢复过程被重复。这可以指示在擦除前或擦除后完成写入所有期望的擦除信息之前发生中断。
关于这点,控制装置可以操作以:在对目标扇区的访问显示目标扇区没有处于完全擦除状态时,确定擦除过程的至少所述擦除要作为恢复过程被重复。这可以指示在写入所有期望的擦除信息之前,在实际擦除之前发生中断。
类似地,控制装置可以操作以:在对目标扇区的访问显示目标扇区处于完全擦除状态时,确定存储在扇区中的擦除信息要作为恢复过程被更新,以指示已经进行了擦除。这可以指示在写入所有期望的擦除信息之前,在实际擦除之后发生中断。
作为另一个示例,根据所述访问,控制装置可以操作以:在(除了目标扇区之外的)至少所述多个扇区的所访问的擦除信息将具体扇区识别为用于擦除的目标扇区时,确定擦除过程的至少所述擦除要作为恢复过程被重复。这可以指示所有期望的擦除信息(在实际擦除之前)的写入已经完成,但是实际擦除被中断。
当作为写入过程的一部分,将期望的数据写入到扇区中的一个扇区时,控制装置可以操作以:对该扇区进行标记,以指示写入过程开始;将期望的数据写入该扇区;以及然后对该扇区进行标记,以指示写入过程已经完成。这可以使得能够在中断事件之后确定写入过程的状态。
电子设备可以是微控制器的一部分或者甚至是微控制器。
根据本发明的第二方面,提供了一种汽车(或者工业机器人或者机器),汽车包括根据本发明的上述第一方面的电子设备,所述设备被配置成控制汽车的系统。
根据本发明的第三方面,提供了一种控制电子设备的方法,所述设备包括非易失性存储器,其被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,每个所述扇区包括多个所述部分,并且所述存储器具有至少三个所述扇区,所述扇区中的每个扇区适于与其他扇区无关地被擦除,所述方法包括:将关于擦除过程的擦除信息存储在除了所述扇区中的目标扇区之外的多个扇区中,以使得能够检查扇区中的这样的信息以在中断事件之后建立适当的恢复过程,所述擦除过程包括擦除所述目标扇区。
根据本发明的第四方面,提供了一种程序,该程序在电子设备的处理器上执行时根据控制方法来控制所述设备,所述设备包括非易失性存储器,其被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,每个所述扇区包括多个所述部分,并且所述存储器具有至少三个所述扇区,所述扇区中的每个扇区适于与其他扇区无关地被擦除,所述方法包括:将关于擦除过程的擦除信息存储在除了所述扇区中的目标扇区之外的多个扇区中,以使得能够检查扇区中的这样的信息以在中断事件之后建立适当的恢复过程,所述擦除过程包括擦除所述目标扇区。
(B1)根据本发明的第五方面,提供了一种电子设备,包括:存储器,其被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,该扇区或每个所述扇区包括多个所述部分,每个所述扇区具有由一个或更多个所述部分组成的多个页槽,并且每个页槽用于存储数据页;以及控制装置,其能够操作以监视该扇区或每个所述扇区,以及(动态即时地)根据这样的监视将用于存储的下一个数据页存储到下一个可用页槽。
这种动态写入的形式可以致使存储器灵活且高效。
可以认为短语“动态即时”意味着“动态地”或者“在操作期间”或者“一经请求”、或者“即时地”或者“在用于存储的下一个数据页变成可用时”或者“没有预先安排”。因此,“动态即时地根据这样的监视”可以是指“基于页槽的当前使用性/可用性”。
存储器部分可以是小的存储器部分,例如位、字节、字、页。存储器可以被配置成使得其可能仅以一次一个扇区的方式被擦除,每个扇区擦除实际上是单个动作。
电子设备可以例如是具有处理器的计算设备,或者可以是不具有处理器的硬件。设备可以是微控制器的一部分,或者可以是微控制器。例如,控制装置可以是微控制器的一部分,而存储器可以是微控制器的外部存储器。设备可以包括微控制器的其他部分,例如,输入/输出端口和外围设备。
存储器可以一次写入到一个存储器部分。存储器可以例如是非易失性存储器,例如闪速存储器(例如NOR闪速存储器)。
存储器可以被设置成具有多个所述扇区(两个、三个或更多个),尽管存储器也可能只有一个扇区。
控制装置可以操作以对存储在页槽中的数据页的状态进行监视。这样的状态可以包括存储在页槽中的数据页是有效的还是无效的。
在存储器包括多个扇区的情况下,控制装置可以操作以监视扇区的年龄,具体扇区的年龄等于自从该具体扇区被最后一次擦除起其他扇区或其他多个扇区被擦除的次数。
控制装置可以操作以将识别表(其可以更一般地称为数据结构)存储在扇区中的每个扇区中,每个识别表包括每个擦除另一个所述扇区的擦除过程的擦除信息条目,并且控制装置可以操作以基于其各自的识别表中的条目数来确定扇区的年龄。这可能是追踪扇区的年龄的简单且有效的方式,因为条目可能具有多于一个目的(例如,用于详细描述擦除过程的状态,以及用于确定扇区的年龄)。
控制装置可以操作以动态即时地将数据页写入扇区,以及当满足一个或更多个给定(例如,预定的)条件时,将扇区作为用于擦除过程的目标。
用于将具体扇区作为目标的一个给定条件可以为扇区的识别表空闲条目不足。当空闲条目的数目少于或者等于比具体扇区老的其他所述扇区的数目时,可能存在空闲条目的不足。
用于将具体扇区作为目标的另一个给定条件可以为存储器空闲页槽不足,并且具体扇区具有少于给定数目的其中存储的所需的数据页。例如,具体扇区可以具有比空闲页槽的数目少的所需的数据页。
用于将具体扇区作为目标的另一个给定条件可以为存储器空闲页槽不足,并且具体扇区具有最少数目的其中存储的所需的数据页。
如果多于一个所述扇区满足给定条件,控制装置可以操作以将这些扇区中的最老的扇区作为用于擦除过程的目标。
在每个擦除过程之前,控制装置可以操作以将任何所需的数据页从有关的目标扇区复制到另一扇区。这可以确保所有所需的页(其可以是有效的或者无效的)保持存储在存储器中。
控制装置可以操作以将新的数据页存储到具有足够的空闲容量的最老的所述扇区。控制装置可以操作以逐页地将新的数据页存储到该扇区内最老的页槽。
针对该扇区或每个所述扇区,所述控制装置可以操作以使得用于在有关的扇区中存储的连续的数据页以给定的顺序存储在其页槽中。顺序可以是从最老的页槽到最新的页槽,这可能实际上意味着按顺序从扇区的一端到另一端。
控制装置可以操作以将数据结构(例如,查找表)存储在所述存储器外部,所述数据结构详述存储在该扇区或每个扇区中的数据页,以及在确定要将用于存储的下一个数据页存储到哪个页槽时利用所述数据结构。例如,数据结构可以存储在易失性存储器,例如RAM中,该RAM可以是外部RAM。
查找表可以是合适的这样的数据结构。哈希(hash)表和哈希映射、以及跳跃表是也会适合的数据结构的示例。可选地,数据结构在其存储的信息中可以不具有或者具有低的冗余。可以根据页识别码(或者根据页特性)来组织(例如,排列)数据结构,这样的码识别数据页。
控制装置可以操作以将关联表(其也可以更一般地称为数据结构)存储在该扇区或每个扇区中,该关联表或每个关联表详述存储在其扇区中的页。
控制装置可以操作以在确定用于存储的下一个数据页存储到哪个页槽时利用该关联表或多个关联表。
该关联表或每个关联表可以详述哪个数据页存储在其扇区的哪个页槽中。
控制装置可以操作以在存储新的数据页时,更新有关的关联表。
该关联表或每个关联表可以包括每个占用的页槽的条目,该条目或每个条目对应于具体的页槽,并且识别存储在该页槽中的数据页。
控制装置可以操作以将用于每个新存储的数据页的新条目添加到有关的关联表,以形成条目列表或者以扩展现有的条目列表。因此,可以通过将新条目附加到现有的条目列表的末端来更新表(或其他数据结构),而不需要改变任何之前的信息。
可以通过页识别码来识别数据页,该页识别码可以是数字。
电子设备可以包括硬件单元,所述硬件单元可操作以对该关联表或每个关联表进行评估,以及针对一个或更多个页槽指示下述中的至少一种:
(a)页槽是否为空闲;
(b)页槽是否已经完全写入有对应的数据页;
(c)页槽是否包含无效的数据页并且应该被忽略;
(d)存储在页槽中的数据页的识别码;
(e)存储在页槽中的数据页的识别码是否在页识别码的给定的范围内;以及
(f)页槽是否包含有效的数据页。
这样的硬件支持可以加速对关联表的评估,并且允许支持软件更简单。例如,由于这样的硬件,支持软件可以具有更少的指令,例如包括更少的屏蔽、移位和/或比较操作。也可以需要更少的总线事务。这样的硬件可以导致表评估的显著加速。
控制装置可以操作以在确定将用于存储的下一个数据页存储到哪个页槽时,考虑该扇区或每个扇区中存储的所需的页的数目。
电子设备可以是微控制器的一部分,或者甚至是微控制器。
根据本发明的第六方面,提供了一种汽车(或者工业机器人或者机器),汽车包括根据本发明的上述第五方面的电子设备,所述设备被配置成控制汽车的系统。
根据本发明的第七方面,提供了一种控制电子设备的方法,所述电子设备包括存储器,所述存储器被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,该扇区或每个所述扇区包括多个所述部分,每个所述扇区具有由一个或更多个所述部分组成的多个页槽,并且每个页槽用于存储数据页,所述方法包括:监视该扇区或每个所述扇区;以及动态即时地根据这样的监视,将用于存储的下一个数据页存储到下一个可用页槽。
根据本发明的第八方面,提供了一种程序,该程序在电子设备的处理器上执行时根据控制方法来控制所述设备,所述电子设备包括存储器,所述存储器被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,该扇区或每个所述扇区包括多个所述部分,每个所述扇区具有由一个或更多个所述部分组成的多个页槽,并且每个页槽用于存储数据页,所述方法包括:监视该扇区或每个所述扇区;以及动态即时地根据这样的监视,将用于存储的下一个数据页存储到下一个可用页槽。
(C1)根据本发明的第九方面,提供了一种电子设备,包括:第一存储器;作为非易失性存储器的第二存储器,其被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,该扇区或每个所述扇区包括多个所述部分并且用于存储多个数据页;以及控制装置,其能够操作以将详述存储在该扇区或每个扇区中的数据页的数据结构(例如,查找表)存储在所述第一存储器中,所述数据结构基于所述数据页的特性而被组织。
这样的数据结构可以使得在运行时间期间通过使用第一存储器能够有效地访问第二存储器。例如,可以基于数据页的特性来索引数据结构,使得数据结构可容易地访问,然而,可以将对应的页以与数据页的特性无关的顺序存储在第二存储器中的任何地方。数据结构可以免除针对页来扫描第二存储器的需要,除了在初始化查找表时。
特性可以是页识别码。也就是说,可以通过对应的页识别码来识别每个数据页,并且可以通过页识别码来组织数据结构。对于单个页或者页的组,码可以是单个的。
特性可以是页类型码。也就是说,数据页可以各自具有由对应的页类型码所识别的类型,并且可以通过页类型码来组织数据结构。
可以一次基于一个特性来组织数据结构,而另一次基于不同的特性来组织数据结构。
电子设备可以例如是具有处理器的计算设备,或者可以是不具有处理器的硬件。设备可以是微控制器的一部分,或者可以是微控制器。例如,控制装置可以是微控制器的一部分,而存储器可以是微控制器的外部存储器。设备可以包括微控制器的其他部分,例如,输入/输出端口和外围设备。
第一存储器可以是随机存取存储器,使得查找表的每个条目是独立于其他表条目可访问的且可修改的。第一存储器可以是易失性存储器,并且可以是RAM。存储器部分可以是小的存储器部分,例如位、字节、字、页。第二存储器可以被配置成使得其可以仅以一次一个扇区的方式被擦除,每个扇区擦除实际上是单个动作。
第二存储器可以一次写入到一个存储器部分。第二存储器可以例如是闪速存储器(例如NOR闪速存储器)。第二存储器可以被设置成具有多个所述扇区(两个、三个或更多个),尽管第二存储器也可能只有一个扇区。
查找表可以详细说明或者包括存储在该扇区或每个扇区中的数据页的位置的信息,并且可以详细说明或者包括存储在该扇区或每个扇区中的数据页的状态的信息。
可以通过页识别码来识别数据页,并且可以通过页识别码来排序(例如,索引)对应于所述数据页的查找表中的条目。
控制装置可以操作以按照给定的顺序将用于存储的连续的数据页存储在该扇区或多个扇区的页槽中,使得页在该扇区或多个扇区中被排列的顺序取决于(对应于,遵循,只取决于)这些页被存储的顺序。这种排序可能与组织数据结构的方式非常不同,并且因此数据结构可能是比通过扫描该扇区或多个扇区更有效的用于访问期望的数据页的资源。
控制装置可以操作以关于具有在预定义范围内的页识别码的页来存储数据结构,所述范围小于覆盖所有可能的数据页的范围。当然,控制装置可以操作以关于所有可能的页来存储数据结构。
控制装置可以操作以关于当前存储在该扇区或多个扇区中的页以及关于之前存储在该扇区或多个扇区中的页来存储数据结构。
控制装置可以操作以基于所述数据结构来控制对该扇区或每个扇区的访问。
控制装置可以操作以在初始化阶段期间生成所述数据结构,并且在初始化阶段之后,可以操作以(动态即时地)更新所述数据结构的内容,以反映该扇区或每个扇区中的变化。这可以使得在启动时(即,在初始化阶段期间)只扫描一次该扇区或多个扇区,然后数据结构被保持最新,使得在运行时间期间不需要扫描第二存储器来定位期望的页。
控制装置可以操作以将关联表存储在该扇区或每个所述扇区中,该关联表或每个所述关联表详述存储在其扇区中的页,并且其中,控制装置可以操作以利用该关联表或每个关联表来在初始化阶段期间生成数据结构的内容。控制装置可以操作以动态即时地更新该关联表或每个关联表的内容,以反映该扇区或每个对应的扇区中的变化。
在中断事件之后,控制装置可以操作以在进一步的初始化阶段中利用该关联表或每个关联表来存储新的数据结构。
电子设备可以包括硬件单元,所述硬件单元可操作以对该关联表或每个关联表进行评估,以及针对一个或更多个页槽,指示下述中的至少一种:
(a)页槽是否为空闲;
(b)页槽是否已经完全写入有对应的数据页;
(c)页槽是否包含无效的数据页并且应该被忽略;
(d)存储在页槽中的数据页的识别码;
(e)存储在页槽中的数据页的识别码是否在页识别码的给定的范围内;以及
(f)页槽是否包含有效的数据页。
这样的硬件支持可以加速对关联表的评估,并且允许支持软件更简单。例如,由于这样的硬件,支持软件可以具有更少的指令,例如包括更少的屏蔽、移位和/或比较操作。也会需要更少的总线事务。这样的硬件可以导致表评估的显著加速。
该扇区或每个扇区可以具有多个页槽,每个页槽用于存储所述数据页。
数据结构可以是查找表。关联表和识别表也可以更一般地被称为数据结构。哈希表和哈希映射、以及跳跃表是也会合适的数据结构的示例。可选地,数据结构在其存储的信息中可以不具有或者具有低的冗余。可以根据页识别码来组织(例如,排序)数据结构,这样的码识别数据页。
页识别码可以是页识别号。
电子设备可以是微控制器的一部分,或者甚至是微控制器。
根据本发明的第十方面,提供了一种汽车(或者工业机器人或者机器),所述汽车包括根据本发明的上述第九方面所述的电子设备,所述设备被配置成控制所述汽车的系统。
根据本发明的第十一方面,提供了一种控制电子设备的方法,所述电子设备包括第一存储器,并且包括作为非易失性存储器的第二存储器,其被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,该扇区或每个所述扇区包括多个所述部分并且用于存储多个数据页,所述方法包括:将包括存储在该扇区或每个扇区中的数据页的信息的数据结构存储在所述第一存储器中,基于所述数据页的特性来组织所述数据结构。
根据本发明的第十二方面,提供了一种程序,该程序在电子设备的处理器上执行时根据控制方法来控制所述设备,所述电子设备包括第一存储器,并且包括作为非易失性存储器的第二存储器,所述非易失性存储器被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,该扇区或每个所述扇区包括多个所述部分并且用于存储多个数据页,所述方法包括:将包括存储在该扇区或每个扇区中的数据页的信息的数据结构存储在所述第一存储器中,基于所述数据页的特性来组织所述数据结构。
根据本发明的另外的方面,提供了将上述的方面中的一个或更多个方面结合的电子设备、方法和程序。电子设备方面的特征适用于方法和程序方面。
现在将仅通过示例的方式参考附图,在附图中:
图1是实施本发明的电子设备的示意图;
图2是图1的设备的闪速存储器的示意图;
图3是对理解图2的闪速存储器的识别表中的条目有用的示意图;
图4是与擦除图1的设备的扇区有关的示意图;
图5是表示擦除过程的流程图;
图6是表示页关联表中的条目与对应的页槽区域中的页槽之间的关系的示意图;
图7是对理解图2的闪速存储器的关联表中的条目有用的示意图;
图8是可以存储在图1的设备的RAM中的查找表的示意性表示;
图9是对理解查找表中的条目有用的示意图;
图10是描绘用于填充(populate)查找表的方法的流程图;
图11是描绘用于清理和擦除目标扇区的方法的流程图;
图12是表示将数据页写入三个扇区的示例序列的示意图;
图13是实施本发明的另一电子设备的示意图;
图14是图13的设备的闪速存储器的示意图;
图15是对理解图14的闪速存储器的识别表中的条目有用的示意图;
图16是与擦除图13的设备的扇区有关的示意图,并且还考虑了中止(abort)过程;
图17示出了可能在中断之后遇到的扇区的识别表中的条目的可能组合;
图18是对理解图14的闪速存储器的关联表(页关联表)中的条目有用的示意图;以及
图19是适于提供硬件支持以加速评估关联表的数据操作硬件的示意图。
现在将通过一般实施方式来说明本发明的各个方面。
如将会变得明显的,本设备使得虚拟存储器的块能够通过全动态分配被加载并存储到物理闪速存储器(一种EEPROM仿真的形式)。该方法是有效的、可扩展的且相对于突然断电是安全的。
图1是实施本发明的电子设备(例如,计算设备)1的示意图。电子设备1包括控制装置2、闪速存储器4和RAM6。
例如,电子设备1可以是微控制器。闪速存储器4是当前可用的一种特定类型的存储器,然而,在其他实施方式中,可以用下述非易失性存储器来代替闪速存储器4:该非易失性存储器被配置成以小的存储器部分写入或者读取,但必须以一次一个扇区的方式来擦除,每个扇区包括多个部分。RAM6是当前可用的一种类型的存储器,然而,在其他实施方式中,可以采用易失性存储器或者非易失性存储器,并且可以采用所存储的表的条目可与其他表的条目无关地存取和修改的任何存储器。
为了便于理解,图1被简化。例如,除了示出的这些部件之外,还可以设置其他部件。而且,为了简单起见,没有再次示出用于数据和控制信号的在控制装置2、闪速存储器4及RAM6之间的连接。此外,闪速存储器4和RAM6无需设置在与控制装置2相同的芯片上,因为它们可以是外部存储器。在这一方面,电子设备1可以表示微控制器与外部存储器的结合。
控制装置2可以被实现为处理器,且电子设备1可以被配置成在由控制装置2执行的软件的控制下进行操作。在此上下文中可以解释本文中提及的软件。本发明同样可以使用以硬件实现的控制装置2来实施,即不需要在处理器上执行的软件。
在本实施方式中,闪速存储器被布置成具有至少三个扇区,但是其他实施方式可以具有不同数目(例如,更大数目或者更小数目)的扇区。如将会变得明显的,设备1被配置成使用闪存扇区用于数据存储,并且在扇区擦除过程期间保护数据的完整性不受突然断电影响。
还在本实施方式中,数据被动态即时地(onthefly)存储到扇区。闪速存储器用于仿真EEPROM,以使得闪速存储器用作虚拟的EEPROM。因此,本文中引用了“虚拟”存储器和“虚拟”地址,并且将会理解的是,通过将数据的页存储到扇区来在物理上实现具有虚拟地址的虚拟存储器。
图2是闪速存储器4的示意图。闪速存储器4被配置成具有三个扇区10,为了方便起见标记为“扇区0”、“扇区1”和“扇区2”。闪速存储器4还可以被配置成具有多于三个的扇区,或者在本文中公开的某些方面中具有少于三个的扇区(例如,一个扇区或两个扇区)。
每个扇区10被组织成具有三个主要区域,即识别表12、页关联表14和页槽区16。区域12、14和16相对于彼此的尺寸将在实施方式之间变化,并且图2中没有表示出这种关系。例如,用于存储页槽的区域16可以比区域12和区域14的尺寸大许多倍。稍后,这些区域的用途将变得明显。
在本实施方式中,在每个扇区中设置了相同的存储量,以使得所有扇区具有相同的尺寸。在其他实施方式中,扇区可以具有不同的尺寸。优选地,在每个扇区中,每种类型的区域具有相同的尺寸。
还在本实施方式中,可以在擦除其它扇区的同时从扇区读取或者写入,例如,通过暂时地延缓擦除过程。然而,在其他实施方式中,可能不可以在擦除过程期间读取和写入。
在本实施方式中,扇区彼此等同,如此同等地处理扇区。例如,在本实施方式中,没有事先地专用于具体扇区的特殊功能。以下述顺序“清理”(稍后将更详细地讨论该处理)和擦除扇区:该顺序是取决于扇区中包含的合法(即,所需的)数据的量在运行时间期间(即,动态即时地)计算的;该顺序独立于事先已知的任何值和所存储的数据的虚拟地址。
每个扇区10中的识别表12保存关于当前的和先前的擦除过程的信息,例如指示这样的过程的状态。以这种方式,识别表12还保存关于所包含的或者所存储的数据的“年龄”的信息。例如,可以认为具体的扇区10的“年龄”等于自该具体的扇区被擦除起其他扇区被擦除的次数。在本实施方式中,将新数据写入具有足够的空闲存储器的最老的扇区,并且在该扇区内写入第一空闲页槽(其将是最老的空闲页槽)。也就是说,在本实施方式中,将新数据写入从老扇区开始朝向新扇区(例如,下一个较新的扇区)的具有足够的空闲存储器的下一个扇区,并且在该扇区内写入第一空闲页。
还在本实施方式中,当剩余的空闲闪速存储器减少到配置的或者给定的(例如,预定的)量以下(例如,在多于至少一个完整扇区的量以下)时,具有最少当前数据的扇区被选择用于清理。选择用于清理和擦除的扇区将被称为“目标”扇区。在清理期间,将所有的合法(即,所需的)数据从目标扇区复制到具有足够的空闲存储器的最老的扇区。在本实施方式中,逐页地将所需的页从目标扇区复制到另一个扇区(“清理”),以使得一些页可以在一个扇区上结束直到该扇区被填满为止,而其余的页在另一个(下一个较新的)扇区中。
优选地,应该将多于一个完整的扇区的存储量维持为空闲存储器。如果空闲存储器的量降低到小于一个完整扇区的量,则空闲存储器可能潜在地小于清理扇区所需的空闲存储器的量。如果空闲存储器的量降低到一个完整扇区的量,则空闲存储器可能潜在地与清理扇区所需的空闲存储器的量相同,没有留下空闲存储器并导致清理完一个扇区接着下一个扇区的无限循环。通过监视清理扇区所需的空间的量,可以具有在清理和擦除之前可以达到的变化的空闲存储器的最小量。
如前面所说明的,当闪存扇区的擦除通过突然断电而中断时,所包含的数据是不可预测的。在本实施方式中,在将位擦除成“已擦除状态”之前,所述位必须被写入成“已写入状态”,以避免过擦除。本实施方式被配置成是确定性安全的以不受突然断电影响,而不是被配置成仅是在下述程度上鲁棒的,该程度为不完全擦除的扇区被误识别为没有被擦除是非常不可能的。
例如,可以考虑:仅从可能在擦除时被中断的一个扇区中读取提供了其100%的位不可预测的数据。因此,仅通过评估扇区的内容,非常难以确定该扇区是否在擦除期间被中断,即使实现了经由标志或者魔语的复杂的保护。
此外,当从第一扇区或者第二扇区可能在擦除时被中断的两个扇区中读取时,展现的数据的50%的位不可预测。再次,仅通过评估两个扇区的内容,非常难以确定这两个扇区之一是否在擦除期间被中断,即使实现了经由标志或者魔语的复杂的保护。
当从仅一个扇区可能在擦除时被中断的三个或更多个扇区中读取时,展现的数据的<34%的位不可预测。因此,可以通过评估三个或更多个扇区的内容,来确定这三个或更多个扇区中的哪一个扇区在擦除期间被中断。
可以实现为算法(即,方法)的下列方法意图决不将不完全擦除的扇区识别为有效。
本实施方式利用识别表12以将关于目标扇区(擦除过程的对象)的信息存储在其他扇区中。然后,通过例如经由多数决定法查找各个扇区中的信息之间的一致(例如,相关),可以进行例如在中断事件之后的当前擦除状态的检测。
识别表12基本上由多个条目组成,多个条目中的每个条目与特定擦除过程有关。当扇区10被擦除时,其识别表12中的所有条目被清除,并且针对每个后续擦除过程,在该表中生成条目。也就是说,当开始新的擦除过程时,一个条目被附加到每个识别表12(除了目标扇区中的识别表)中的条目列表。因为在不擦除有关扇区的其他内容的情况下列表不能被擦除,所以只有生成的最后一个条目被认为是有效的。
图3是对理解根据本实施方式的识别表12中的条目有用的示意图。图3(a)、图3(b)、图3(c)和图3(d)中的每幅图代表单个这样的条目。
图3(a)对理解每个条目的组成部分有用。每个条目由擦除完成标志20(在本实施方式中为1位宽)以及识别作为有关擦除过程的对象的扇区(目标扇区)的每一可用扇区的1位的项22、24、26、28组成。在图3(a)中,针对“扇区0”、“扇区1”和“扇区2”设置项22、24和26,与图2一致,而项28仅被示出为使得清楚:如果设置有多于三个的扇区10,条目可以扩展到具有用于另外的扇区10的项。在图3(b)、图3(c)和图3(d)中,为了与图2一致,仅示出了项22、24和26。
如上所述,当扇区10被擦除时,其识别表12中的所有条目被清除。这可以通过使所有位为假(如与真相反)来表示。
当然,“真”和“假”表示逻辑状态,并且这些逻辑状态到物理值(高/低或者1/0)的映射取决于闪速存储器4的硬件实现。示例性闪速存储器可以在其已擦除状态具有物理逻辑高,而在其已写入状态具有物理逻辑低。在这样的闪速存储器中可以将位从“已擦除”写为“已写入”,从“已写入”写为“已写入”、或者从“已擦除”写为“已擦除”,但是不可以将位从“已写入”写为“已擦除”(只可以通过擦除来实现这样的转变)。为了一致,在图3(b)中以及在其他附图中,用已擦除值“0”表示假,而用已写入值“1”表示真,然而,这只是帮助理解本发明。
因此,图3(b)代表条目被清除且(自前次擦除起)还未使用时的状态。图3(c)代表已经将“扇区1”作为擦除目标时的状态,因此“扇区1”是目标扇区。注意,已完成标志为假,代表擦除过程还没有完成。图3(d)代表“扇区1”(目标扇区)已经被擦除的状态;注意,已完成标志为真。
在本实施方式中,当扇区10(目标扇区)要被擦除时,新条目被附加到所有其他扇区10的识别表12。在本示例中,表中的空(未使用)条目具有已擦除闪存值“0”。因此,通过单一的闪存擦除操作来擦除和重置表。
在将扇区10作为擦除目标时,通过写入对目标扇区进行识别的一位来生成这些新条目中的每个条目。这个动作既将表条目标记为使用中,又识别目标扇区。因为仅需要一位,所以目标扇区的编码是“原子的”。也就是说,如果写入一位通过断电被中断,则有关的闪存单元将进入写或者没写该位的状态。不存在中间状态。
图4是示出了用于擦除扇区10的示例的示意图,在本实例中擦除“扇区2”。在图4(a)和图4(b)中的每幅图中,示出了有关的三个扇区的识别表12。将会理解的是,示出的表可仅代表识别表12的最上(即,最后的)条目空间,实际上可具有更多的条目。
在图4(a)中,在表的左侧用箭头指示在“扇区0”和“扇区1”的表中生成的最后的(最上面的)条目。这些条目在这些表中是有效的条目且是最新的条目,这些条目不全部为假(即,未使用),且这些条目的已完成标志为假(即,要进行擦除)。写入这些条目中的索引2,指示“扇区2”是目标扇区。
可以看出,在“扇区2”(即目标扇区)的识别表12中所有条目是已完成的(完成位为真)。因此,比较图4(a)中的识别表12,“扇区2”是“最老的”扇区10。
图4(b)与图4(a)类似,以便于比较;在擦除过程完成之后示出了相同的条目空间。注意,在“扇区0”和“扇区1”的识别表12中用箭头(同上)指示的条目现在已完成标志为真。此外,注意,“扇区2”的识别表12已经在擦除过程期间被清除,因为它是“扇区2”的一部分。
图4(b)的一个特征是:它代表在下一次擦除尝试之前的有效状态,即,它有效地指示关于“扇区2”的擦除过程是成功的。
本发明的一个方面涉及检测由于中断事件而造成的不完全擦除过程、以及恢复过程。将关于本实施方式进一步考虑该方面。
图5是表示根据本实施方式的擦除过程的流程图。
在步骤S2处过程开始,并且在步骤S4处将擦除扇区作为目标。将会理解的是,在执行步骤S2和步骤S4之前,必要时可以清理目标扇区,在清理期间将所有合法数据(即,所需数据)从目标扇区复制到具有足够的空闲存储区的最老的扇区。当然,如果在目标扇区上没有存储所需数据,则不需要进行清理。
在本实施方式中,在步骤S2和步骤S4之前,即在其他扇区的识别表12中识别目标扇区之前进行任何所需要的清理。这是因为:如果序列被中断,则应该区别开清理步骤和擦除步骤。如果清理被中断,则应该另外清理扇区(读取需要)。如果擦除被中断,则应该将扇区的内容认为是不可预测的(读取禁止)。
可以在扇区被识别为是目标扇区(通过标记识别表)之前清理扇区。如果清理被中断且另一个扇区被选择用于下次清理,则没有丢失数据。这是因为清理是逐页地(类似于写入动作)将同一“所需”数据从一个扇区写入(复制)具有足够的空间的最老的扇区的序列。在中断的情况下,可能会浪费一些页槽。
步骤S4的部分包含写入到除了目标扇区之外的每个扇区中的识别表12中的下一条目空间,用于将目标扇区识别为作为目标。上述的图4(a)是步骤S4完结时识别表的状态的示例。
在步骤S6处,然后擦除目标扇区,随后,目标扇区的所有位将为假(即,具有已擦除值“0”)。
在步骤S8处,在除了目标扇区之外的扇区的识别表12中设置已完成标志,用于指示目标扇区已经被擦除。上述的图4(b)是步骤S8完结时识别表的状态的示例。
然后在步骤S9处结束过程,直到将来的这样的过程为止。
图5所表示的擦除过程可能在任何时间不幸被中断,例如通过突然断电事件被中断。这是由图5中的箭头30所指示的。具体地,如所指示的那样,可以将中断大体上分组为组A、组B、组C、组D和组E。
在图5的擦除过程被中断之后,从闪速存储器4的读出可以使得能够通过检查识别表12的最后的条目来识别以下状态及其原因。
组A和组E—没有扇区作为擦除目标
在组A的情况下,至第一识别表12的第一次写入尝试被中断,并且对于识别目标扇区的一位,写入失败。在组E的情况下,至最后一个表的最后一次写入尝试被中断,并且对于识别目标扇区的一位,写入成功。
可以将这两种情况视作没有擦除过程被中断,因为扇区处于与没有擦除过程正在进行相同的状态。也就是说,扇区将处于与擦除过程从未开始或者擦除过程已经没有中断地结束相同的状态。
组B和组D—一个或更多个扇区将同一扇区作为擦除目标且两个或更多个扇区没有将任何扇区作为目标
在组B的情况下,意图被设置成识别目标扇区(步骤S4)的识别表12中的一些但不是全部表条目被成功写入,并且在到表的所有想要的条目完成之前发生中断。在组D的情况下,意图被设置成指示擦除(步骤S6)已经完成的一些但不是全部表条目被成功写入,并且在到表的所有想要的条目完成之前发生中断。
在这两种情况下,识别表12的准备被中断。目标扇区10的擦除没有开始(组B)或者已经完成(组D)。在两种情况下都可以安全地读取目标扇区。读取由目标扇区的页关联表14识别的页槽区16的任何页槽都将显示空或者已使用状态。本文中稍后将更详细地讨论页关联表14与页槽区16中的页槽之间的关系。
如本文中稍后将讨论的那样,在本实施方式中,准备擦除(即,清理)的扇区将不包含空闲页槽,并且最近擦除的扇区将不包含已使用的页槽。因此,组B中断可以与组D中断区分开。
在本实施方式中,在组B中断的情况下,应该部分地重复擦除过程(从步骤S4起-将会理解,在中断之前将已经部分地执行了S4,因此将需要完成S4。因此,仅那些还没有将目标扇区作为目标的扇区需要重复S4)。在组D中断的情况下,识别目标扇区的识别表的所有条目的已完成标志应该被设置为真。同时应该没有其他扇区被擦除。
组C—目标扇区的擦除被中断
在这种情况下,扇区中的至少除了一个以外的所有的扇区将同一扇区作为擦除目标,并且作为目标的扇区没有将扇区作为擦除目标、将一些其他扇区或者它本身作为擦除目标。
在组C的情况下,通过例如经由多数决定法查找识别表12中的最后的条目之间的一致,可以识别目标扇区。在本实施方式中,在可以擦除另一个扇区之前,应该重复对该目标扇区的擦除过程的一部分(从S6起)。同时,应该禁止从目标扇区读取,因为目标扇区的内容可能被损坏。可以读取所有其他扇区。
如上所述,将会理解的是,上面关于组A至组E描述的任何对策的中断将是导致落入这些组中的一组的情况的中断。
还应注意,擦除过程的中断将决不会导致耗用任何识别表12中的多于一个条目的空间,即,每个擦除过程将耗用每个非目标扇区的识别表12中的恰好一个条目空间,而与中断次数无关。例如,如果S4被中断,则每个扇区的识别表12中的最后的条目将为“使用中”(把目标扇区作为目标)或者已完成(还没有定目标)。在S4的重复过程中将跳过已经作为目标的那些扇区的表。
本发明的另一个方面涉及扇区中的数据存储。现在将关于本实施方式进一步考虑该方面。
与在硬件EEPROM中不同,本实施方式的仿真存储器没有被组织为连续范围的固定尺寸数据字。而是,它被组织为不连续范围的虚拟页(每个虚拟页可以占用闪速存储器的多个物理页)。虚拟页(为简单起见,“页”)通过唯一索引(页ID)来寻址,并且在本实施方式中,虚拟页具有相同尺寸。例如通过支持软件的静态配置可以将页尺寸定标为任意值。可以在较高层中通过已知手段来完成任意尺寸的虚拟块到整数的页的映射。
在本实施方式中,每个扇区包含(即,被组织成)例如由支持软件定义的一组页槽,每个页槽可以存储一个虚拟页。本实施方式中的页槽包括有关扇区的页关联表14中的一个条目、以及足够大以存储该页的虚拟数据的存储器块。
图6是表示页关联表14中的条目42与对应的页槽区16中的页槽44之间的关系的示意图。在本实施方式中,该关系是静态的,使得页关联表14中的特定条目42与对应的页槽区16中的特定的预定页槽44对应。
页关联表14中的每个条目42表示对应的页槽44的状态。
状态可以是“空闲”,意味着页槽不包含数据,并且可以将页写入该页槽44。
状态可以是“已分配”,意味着页槽不包含数据,但是禁止向该页槽开始新的写入尝试。如果向页槽的写入通过例如断电的中断事件被中断,则会出现这种状态。
状态可以是“有效”,在这种情况下,条目将带有识别所存储的页的页ID。该状态可以意味着对应的页槽44包含由页ID所识别的页的数据。禁止在这种状态下向页槽写入。
状态可以是“无效”,另外在这种情况下,条目将带有页ID。该状态意味着具有页ID的页被删除或者被更新,并且禁止向该页槽写入。实际上,该状态意味着该页被删除,并且可以通过将该页写入“空闲”页槽或者通过更新“有效”页来达到该状态。
图7是对理解根据本实施方式的关联表14中的条目有用的示意图。图7(a)至图7(g)中的每幅图代表单个这样的条目。
图7(a)对理解每个条目的组成部分有用。每个条目由已使用标志52、已完成标志54、无效标志56和页ID58组成,在本实施方式中已使用标志52、已完成标志54和无效标志56中的每个为1位宽。
已使用标志52是指示页槽是否空闲的1位标志,其中在本实施方式中已擦除状态(假)指示页槽空闲。无效标志56是指示页槽(即,由页ID识别的页的数据)有效还是无效的1位标志,其中在本实施方式中已擦除状态(假)指示页槽有效。已完成标志54是指示页槽是否已分配的1位标志,其中在本实施方式中已擦除状态(假)指示页槽已分配。页ID58是作为唯一地识别存储在页槽44中的虚拟页的索引的整数。
在本实施方式中,修改的(或者新的)页总是被写入第一空闲页槽44,其中对应的条目进入有关的页关联表14的相关部分中。因此,页ID被存储到页关联表14中的相关条目42,而虚拟数据被存储到相应的页槽44中的页槽区域16。
对于每个页,只有页槽44中的(即,在该页的那些页槽中的最新的页槽44中)有效或无效的最后一次(最近)发生事件(occurrence)代表该页的当前状态和内容。页的较老版本(即,在较老的页槽44中)被隐含地忽略。因此,有利的是,如果相同的页在较新的槽中是有效的或者无效的,则不需要使老页槽无效。
没有在任何页槽中引用的页被认为在虚拟存储器中不存在。取决于所采用的错误通知范例(例如,通过支持软件),读取尝试会导致错误或者将返回默认值。
页槽的无效状态表示有关的页实际上被擦除,即,该页恢复到不存在状态。当需要擦除扇区时,可以从副本排除无效页,因此,将来可以降低存储器消耗。
可以在运行时间期间添加或者去除页而不需要重新配置软件的事实使得该方法可动态扩展。
因此,图7(b)表示条目被清除且还没有使用(自从扇区的前一次擦除起)时的状态,由于所有的值都为“0”。也就是说,条目为“空闲”。因为页ID58部分的宽度可能在实施方式之间变化,所以在图7(b)中通常指示“0”值。
图7(c)表示条目不再为空闲时的状态,由于已使用标志52的值为“1”。也就是说,该条目为“已分配”。
在图7(d)中,页ID58部分填入有页ID,该页ID指示打算在有关的页槽44中存储的页。
图7(e)表示条目为“有效”时的状态,由于已使用标志52的值为“1”、页ID58部分填入有页ID且已完成标志54的值为“1”。已完成标志54表示相应的页槽44已经成功地填入有在页ID58部分中识别的页的数据。因为无效标志56的值为“0”,所以条目仍然有效。
图7(f)表示条目变成“无效”时的状态,由于无效标志56的值现在为“1”而条目的其他部分没有变化。
图7(g)表示在擦除扇区之后条目已经被清除时的状态,由于所有值再一次都为“0”。因此图7(g)与图7(b)一样。
在本实施方式中,如同扇区10的其他部分一样,通过单次闪存擦除操作来完成擦除和重置页关联表14和页槽区16。
现在将考虑在本实施方式中数据被存储在扇区中所借助的过程。
当要将页写入扇区时,执行以下序列。通过将“1”写入相应的页关联表14的相应条目42中的已使用标志52,来分配第一空闲页槽44。然后,在第二写入存取中将页ID写入页关联表14中的同一条目42。然后,将虚拟页的内容写入页槽区16中的页槽44。最后,通过将“1”写入已完成标志44来将页槽44表示为“有效”。
当要在扇区上使页无效时,执行以下序列。通过将“1”写入页关联表14中的相应条目42中的无效标志56,来将已经包含页的页槽44表示为“无效”。在本实施方式中,这是通过重写来完成的,然而,将会理解的是,在其他实施方式中(例如,其中由于硬件限制而不能重写),可以通过写入到页关联表14中的新条目42来实现相同的效果。例如,新条目可以设置有要被无效的页的页ID,并且写入过程期间无效标志56被给予值“1”。在这种情况下,可以认为无效等同于关于执行序列的写入和不完全写入的检测(如上文所讨论的,利用已完成标志54。)
如同本文中所描述的其他过程一样,有可能数据存储过程会通过诸如断电的中断事件被中断。
这样的中断可能导致页槽44和相应的条目42留在许多不同状态中的一个状态下。
如果在已使用标志52可能被写入之前发生中断,则页槽44可能为“空闲”,即,没有东西写入页槽44。在这种情况下,在中断之后,页槽44可以被安全地认为是空闲的且重新使用,因为页槽44还没有被写入。
如果在写入已使用标志52之后,但是在写入已完成标志56之前,发生中断,则页槽44可能为“已分配”,即,已使用标志52被写入而已完成标志56没有被写入。在这种情况下,页槽44的一些位而不是全部位可能已经被写入。页槽可能既不是重新使用的,也不能读取。页槽44应该被忽略。
如果在写入已完成标志56之后发生中断,则页槽44可能是“已完成”(有效或者无效),即,已完成标志56被写入。在这种情况下,存储过程期望的所有位已被写入。页槽44可以被读取而没有数据损坏;即,可以安全地认为页槽44是“有效的”或者“无效的”。
因此,可以检测并处理这些状态中的每个状态。将会理解的是,本发明提供了一定程度的抗中断鲁棒性。页槽44的写入对于断电引起的中断是安全的。
例如,上文详细说明的过程(其可以被具体化为算法)决不会将不完全写入的页(被存储在页槽44中)识别为有效。此外,这样的算法决不会将页的过时版本识别为当前版本,因为在本实施方式中,由指示较新的数据的有效性的相同的位来指示所有较旧的版本的隐含失效。
应当理解的是,写入过程的连续中断可能会潜在地用已分配的页槽44填充页关联表14的所有条目42。因此,虚拟存储器可能进入不可以写入另外的数据的状态。本实施方式被配置成安全地检测该状态,以使得它对于断电保持安全。这可以通过对剩余的空闲页槽进行计数并且通过禁止该数目的显著变化来完成。这可使写入变得不可能,但是好处是使已经写入的数据安全。作为另一个示例,作为预防性的对策,可以调整擦除(下文将进一步讨论)之前空闲页槽的最小数目。
现在将考虑本实施方式中所采用的用于数据查找(即用于从包括全部扇区的虚拟存储器中读取数据)的过程或算法。
在初始化期间,检测扇区的状态,并且这只需要在初始化阶段完成。在初始化之后,已知哪个扇区包含有效数据以及扇区的年龄。按照他们的“年龄”对有效扇区排序,最老的在前。如上所述,可以通过检查识别表12来评估扇区的“年龄”,越老的扇区在它们的识别表12中具有越长的列表。
为了找到页的最近(即,最新)版本,对有效扇区10的页关联表14进行评估。在本实施方式中,这不是针对每一页逐一地重复,而是针对一定范围的页一次完成。该范围的大小通过软件配置可伸缩,并且可以例如包括所有可能的页。
软件采用RAM6中的缓冲区,该缓冲区足够大以包含将以下项与范围中的每个虚拟页相关联的表:(1)有效性(页是有效的还是无效的?);(2)可用性(页槽为该页而保留,即由该页使用吗?);(3)扇区索引(页存储在哪个扇区上?);以及(4)页槽索引(页存储在有关的扇区内的哪个页槽中?)。
可以将RAM6中的该表称为查找表。图8是可以存储在RAM6中的查找表60的示意性表示。
查找表60被配置成存储关于页范围62中的页的条目,在本实例中用于页1至100。在图8中,为简单起见仅示出了第一条目和最后一个条目;应当理解的是,所有的条目可以被填入。
查找表60具有表格形式,表中的每一行是对应于在第一列64中指出其页ID的页的条目。其他列用于指示页是有效的66还是无效的68,以及页存储在哪个扇区70上和哪个页槽72中。
可以由表60内的表偏移(第一项(即条目)的索引)和位置(索引)来给出对应于查找表60中的每个条目的页ID。以这种方式,列64实际上可以是冗余的,并且在实际的实施方式中未实现。也就是说,RAM6内的查找表60的位置和大小可以是已知的,例如预定义的,并且被存储在软件或其他硬件中,以使得可以经由索引/偏移来访问具体的页的条目,而不是像这样需要有页ID列64。
图9是对理解根据本实施方式的查找表60中的条目有用的示意图。图9(a)至图9(d)中的每幅图代表单个这样的条目。
图9(a)对理解每个条目的组成部分有用。每个条目由有效记录66、可用记录68、扇区记录70和页槽记录72组成。当然,像本实施方式中一样,每个条目还可以明确地具有页ID记录64或者隐含地具有依靠其在查找表60中的位置的这样的记录。因此,图9(a)中的页ID记录64被示出为在图9(a)中是可选的(虚线),而在图9(b)至图9(e)中省略。
可以是1位记录的有效记录66指示在用记录70和72所识别的页槽44(与关联表条目42相关联的)中页是否是有效的,其中在本实施方式中已写入状态(真)表示页是有效的。
可以是1位记录的可用记录68指示在用记录70和72所识别的页槽44(与关联表条目42相关联的)中页是否是可用的,其中在本实施方式中用已写入状态(真)表示页是可用的。
可以是整数的扇区记录70指示有关的页被存储在有效扇区10中的哪个扇区上。类似地,也可以是整数的页槽记录72指示有关的页被存储在所识别的扇区10的哪个页槽44中。
在本实施方式中,将查找表60中的每个条目有效地预先分配给具体的页。当页的状态改变时,在如以下将讨论的初始化阶段之后,该页在查找表60中的条目可以相应地改变。例如,由于写入、复制和擦除动作而发生改变。
因此,图9(b)表示条目被清除且还没有更新时的状态,因为所有的值都为“0”。也就是说,在由扇区10在物理上设置的虚拟存储器中有关的页不存在。由于扇区记录70和页槽记录72的宽度可以在实施方式之间变化,因此在图9(b)中通常指示“0”值。
图9(c)表示页在虚拟存储器中是有效的且可用时的状态,用该条目中的扇区记录70和页槽记录72指示页的物理位置。在图9(c)中,扇区记录70填入有扇区编号或索引,指示页被物理地存储在该扇区10中。类似地,页槽记录72填入有页槽编号或索引,指示页被物理地存储在有关的扇区10的该页槽44中。
图9(d)与图9(c)的相似之处在于,图9(d)表示页在虚拟存储器中可用时的状态,用该条目中的扇区记录70和页槽记录72指示页的物理位置。然而,在图9(d)中,页被指示为是无效的。
图9(e)表示查找表60的摘录,其中示出了与三个连续编号的页有关的三个连续的条目。
现在将结合图10来考虑在初始化阶段期间将信息写入查找表60所借助的过程。
一般地说,在初始化阶段期间有效扇区10的关联表14被评估/扫描以填充查找表60。首先,通过将所有条目标记为显示有关的页是无效的且不可用的来初始化表60本身。然后,将已排序列表中的第一个、“最老的”有效扇区10选择作为当前扇区。
然后,对当前扇区10的页关联表14从对应于最老的页槽44(即,首先写入的页槽)的条目42开始向对应于最新的页槽44的条目42进行遍历。在本实施方式中,针对当前扇区10可能在第一空闲页槽44处停止这种遍历,因为按顺序写入页槽,然而在其他实施方式中,可以遍历整个页关联表14。
如果当前页槽是有效的且页ID在范围内,则查找表60中的对应于该页的条目被更新以示出页是有效的,可用的,位于当前扇区上,并且位于当前页槽中。类似地,如果当前页槽是无效的且页ID在范围内,则查找表60中的对应于该页的条目被更新以示出页是无效的,可用的,位于当前扇区上,并且位于当前页槽中。
如果当前页槽被指示为是“已分配”,则跳过该页槽。如果当前页槽被指示为是“空闲”,则其位置被存储为是第一空闲页槽且对该关联表14的评估终止。在本实施方式中,因为按照从最老的扇区向最新的扇区的顺序将页写入页槽,所以当找到第一空闲页槽时可以终止对关联表14的扫描,因为所有其它页槽都将是空闲的。
如果还没有考虑全部的有效扇区,则将下一个有效扇区(已排序列表中的下一个)选择作为当前扇区10并且如上所述对该扇区的关联表14进行遍历。过程继续进行,直到已经考虑了全部的有效扇区10。
图10是描绘用于在初始化阶段期间填充查找表60的方法80的流程图。方法80包括步骤S20至步骤S35。
方法60在步骤S20处开始并且继续进行至步骤S21。在步骤S21中,通过将所有条目标记为显示有关的页是无效的且不可用的来将表60初始化为标准状态。然后,方法进行至步骤S22。
在步骤S22中,基于如上所述的已排序列表,将最老的有效扇区选择作为当前扇区10。然后,方法进行至步骤S23。
在步骤S23中,将当前扇区中的最老的页槽44选择作为当前页槽44,并且检查该页槽在对应的页关联表14中的条目42。然后,方法进行至步骤S24。
如果在步骤S24中确定当前页槽44不“空闲”(S24;否),则方法进行至步骤S25。如果在步骤S25中确定当前页槽44不是“已分配”(S25;否),则方法进行至步骤S26。如果在步骤S26中确定存储在当前页槽44中的页在范围内(S26;是),即如果该页的页ID在由查找表60处理的范围内,则方法进行至步骤S27。
在步骤S27中,根据与当前页槽44有关的条目42确定所存储的页是“有效的”还是“无效的”。如果确定页是“有效的”(S27;是),则方法进行至步骤S28,在步骤S28中,查找表60中的针对该页的条目被更新以显示页是有效的,可用的,位于当前扇区10上并且位于该扇区10的当前页槽44中。另一方面,如果确定页是“无效的”(S27;否),则方法进行至步骤S29,在步骤S29中,查找表60中的针对该页的条目被更新以显示页是无效的,可用的,位于当前扇区10上并且位于该扇区10的当前页槽44中。在步骤S28或S29之后,方法进行至步骤S30。
如果在步骤S24中确定当前页槽44是“空闲的”(S24;是),则方法进行至步骤S31,在步骤S31中,当前页槽被标注为当前扇区10中的第一“空闲”页槽,并且然后方法进行至步骤S30。如上所述,因为在本实施方式中按照从最老的扇区向最新的扇区的顺序将页写入页槽,所以当找到第一空闲页槽时可以终止对关联表14的扫描,因为所有其它页槽都将是空闲的。因此,方法可以从步骤S31直接进行至步骤S35(如图10中以虚线形式示出的),在步骤S35处方法结束。应当理解的是,图10中从步骤S31到步骤S30的行进可以确保扫描所有扇区。
如果在步骤S25中确定当前页槽44为“已分配”(S25;是),则方法进行至步骤S30。如果在步骤S26中确定存储在当前页槽44中的页不在范围内(S26;否),即,如果该页的页ID不在由查找表60处理的范围内,则方法进行至步骤S30。
在步骤S30中,确定当前页槽44是否是要在当前扇区10中考虑的最后一个页槽44。这可以涉及检查当前页槽44是否是该扇区中的第一空闲页槽,或者在该扇区中遍历是否已经到达最后一个页槽44。如果确定当前页槽44不是最后一个页槽44(S30;否),则方法进行至步骤S32,在步骤S32中将当前页槽设定为是下一个较新的页槽(比前一个当前页槽更新的页槽),并且然后返回到步骤S24以使得可以考虑新的当前页槽。另一方面,如果确定当前页槽44是最后一个页槽44(S30;是),则方法进行至步骤S33。
在步骤S33中,确定当前扇区10是否是要考虑的最后一个有效扇区10。这可以涉及检查在已排序列表中没有比当前扇区更新的扇区10,或者例如检查已经考虑了所有的有效扇区10。如果确定当前扇区10不是最后一个扇区(S33;否),则方法进行至步骤S34,在步骤S34中,将当前扇区设定为是下一个较新的有效扇区(比前一个当前扇区更新的有效扇区),并且然后返回到步骤S23以使得可以考虑新的当前扇区。另一方面,如果确定当前扇区10是最后一个扇区10(S33;是),则方法进行至步骤S35,在步骤S35处方法结束。
在初始化阶段之后,通过更新查找表60来跟踪将来对扇区的写入或复制尝试,使得查找表继续提供扇区的内容的最新记录以及因此虚拟存储器的最新记录。
例如,如果设置了多于一个的查找表60,则当然可以按查找表60来执行上述方法。
将会理解的是,上述的方法是有效的。一旦在查找表60中引用了页,则可以容易地从表60中查出该页在闪速存储器4中的状态和存储位置,即,不需要遍历页关联表14。优选地,RAM中查找表60的存储范围足以引用所有的页。在这种情况下,在初始化阶段期间只需要遍历一次页关联表14,这导致时间有效性并因此导致性能有效性。
现在将更详细地考虑扇区10的清理和擦除,用于获得新的空闲闪速存储器同时保存所有的虚拟数据。
该过程涉及以下阶段:(1)决定要清理和擦除哪个扇区10(即,选择目标扇区10);(2)清理目标扇区10,即,将所有需要的有效页和无效页复制到另一个扇区;以及(3)擦除目标扇区以使其可用于存储新数据。将结合图11来依次考虑这些阶段。
图11是描绘用于清理和擦除目标扇区的方法90的流程图。方法90包括步骤S40至步骤S50。步骤S40至步骤S46涉及阶段(1),步骤S47和步骤S48涉及阶段(2),步骤S49涉及阶段(3)。
将回想,当闪速存储器4中的空闲容量不足时,进行根据本发明的擦除过程。这样的不足可以是识别表12中的一个或更多个识别表中的空间的不足,或者例如是页关联表14中的一个或更多个页关联表以及页槽区域16中的一个或更多个页槽区域的空间的不足。
方法90在步骤S40处开始,在步骤S40中,存在空闲的闪速存储器4的不足。被认为是表示不足的空闲的闪速存储器4的水平能够例如以软件或者硬件来预定义,或者动态即时地调整(例如,以最大化性能)。然后方法进行至步骤S41。
步骤S41表示与选择目标扇区10有关的第一考虑(标准)。如果扇区10快用完其识别表12中的空闲条目(S41;是),则将该扇区10选择作为潜在的目标扇区10,并且方法进行至步骤S42。如果多个这样的扇区有这种情况,则在步骤S42中将它们全部选择。当空闲条目的数目等于或者小于比该扇区更老的扇区10的数目时,可以认为扇区10快用完这样的空闲条目。然后,方法进行至步骤S43。
如果没有有效扇区10快用完其识别表12中的空闲条目(S41;否),则方法进行至步骤S44,在步骤S44中,选择包含最少数目的需要被复制的合法(即,需要的)页的扇区10。再次,如果多个这样的扇区有这种情况,则在步骤S44中将它们全部选择。然后,方法进行至步骤S43。
可以认为需要被复制的合法页是:(a)在虚拟存储器内部是“有效的”(用于该页的最近的(即最新的)页槽是有效的)并且用于该页的最新的页槽位于有关的扇区上的所有页;以及(b)在虚拟存储器内部是“无效的”(用于该页的最近的(即最新的)页槽是无效的)、用于该页的最新的页槽位于有关的扇区上并且有关的扇区不是所有扇区中最老的扇区的所有页。
在这一点上,应当理解的是,如果较老的扇区包含同一页的有效的页槽,在新的无效版本被去除、导致数据损坏、以及由此导致检查有关的扇区不是所有扇区中最老的扇区的步骤的情况下,则该页的老状态将被再次认为是当前版本。
在步骤S43中,确定是否选择了多个扇区。如果选择了多个扇区(S43;是),则方法经由步骤S45进行至步骤S46,在步骤S45中,将它们中的最老的扇区认为是所选择的扇区,而其余的扇区被忽略。然而,如果只选择了一个扇区(S43;否),则方法直接进行至步骤S46。
在步骤S46中,将所选择的单个扇区10认为是目标扇区。然后,方法进行至步骤S47。
在步骤S47中,将存储在扇区中的并且需要保留的那些有效页(合法页)复制到虚拟存储器中的下一个空闲页槽,即,另一个扇区10中。将回想起,在本实施方式中,新数据被写入具有足够的空闲存储器的最老的扇区10。因此,在步骤S47中,在虚拟存储器内部是有效的(用于该页的最新的页槽是有效的)并且用于该页的最新的页槽位于目标扇区上的所有页被复制到下一个空闲页槽。然后,方法进行至步骤S48。
在步骤S48中,将存储在扇区中的并且需要保留的那些无效页(合法页)复制到虚拟存储器中的下一个空闲页槽,即,另一个扇区10中。因此,在步骤S48中,在虚拟存储器内部是无效的(用于该页的最新的页槽是无效的)并且用于该页的最新的页槽位于目标扇区上的所有页被复制到下一个空闲页槽,其中目标扇区不是所有扇区中最老的扇区。上文已经说明了检查有关的扇区不是所有扇区中最老的扇区的步骤的原因。
如以上详细说明的那样,可以使用页关联表14和/或查找表60来访问并且评估目标扇区和页槽。应当理解的是,在将页从目标扇区复制到其他扇区时,其中存储的所有页隐含地变成无效(因为然后在别处存储较新的版本)。在不寻常的情况下,步骤S47和S48还可以包括将任何空闲页槽44标记为无效,以达到目标扇区没有空闲页槽的情况。
在步骤S48之后,方法进行至步骤S49,在步骤S49中,将目标扇区擦除。实际上,在该步骤中,不包含以下项中的任何一个的最老的扇区被擦除:(1)空闲页槽(以防止空扇区被再次擦除);(2)在虚拟存储器内部是有效的(用于该页的最新的页槽是有效的)并且用于该页的最新的页槽位于目标扇区上的页;以及(3)在虚拟存储器内部是无效的(用于该页的最新的页槽是无效的)、用于该页的最新的页槽位于目标扇区上并且目标扇区不是所有扇区中最老的扇区的页。上文已经说明了检查有关的扇区不是所有扇区中的最老的扇区的步骤的原因。
作为上文关于图5详细说明的过程的一部分,通过擦除有关的整个扇区的闪存擦除操作来进行擦除。上一次擦除的扇区变成最新的扇区,因为该扇区的识别表12将被清空。已擦除的扇区的页关联表14也将被清空。
在本实施方式中,为了效率起见,尽可能快地开始步骤S49的擦除,即,一旦有不包含上文关于步骤S49所讨论的项(1)至(3)的扇区10(目标扇区),就开始步骤S49的擦除。
因为在闪速存储器4的擦除期间读和写访问是可能的,所以数据存取的最大等待时间(latency)会远小于擦除所需的时间。读访问的最大等待时间与擦除所需的时间无关,因为不存储额外的数据。
现在将考虑与组成虚拟存储器的存储量相比,关于在清理期间需要复制的存储量的本文中提出的方法的有效性。
在本实施方式中,物理存储器分配是动态的,使得事先不知道组成虚拟存储器的存储量。出于这种考虑,特定时间处的虚拟存储器的大小可以被定义为是已经被写入至少一次的所有虚拟页的和。也就是说,直到该时间已经访问的所有虚拟存储器。
一些页可能在此期间已经无效,但是可能仍然耗用物理页槽。针对这些页,可能存在标记为无效的合法的物理页,该合法的物理页隐藏了(通过是更新的)同一虚拟页(非法的物理页)的较老的版本。在这种情况下,在清理期间应该复制“合法的”无效页,以防止老的“非法”版本被再次认为是“合法的”。如果已知合法页没有隐藏同一页的非法版本(即,因为合法页位于最老的扇区上),则在清理时不需要复制无效页。
因此,有许多需要被一直存储的页,并且该数目等于或者大于物理存储的有效页的数目,且该数目等于或者小于组成虚拟存储器的物理存储页的数目。期望这些页在清理之后分布在n-1个扇区上(其中n为扇区的数目)(一个扇区预计为目标扇区,所以此时其缺少需要的页)。
如先前所讨论的那样,在本实施方式中,算法将要复制最少数据的扇区选择作为目标扇区,并且该数据不多于上述的所有存储器的1/(n-1)。
可能存在下述情况:与在运行时间期间相对小量的有效数据相比,在运行时间期间大量的虚拟存储器无效。在此情况下,虚拟存储器非常大(当随着时间考虑时可能甚至大于物理存储器),使得虚拟存储器对于考虑效率是无用的引用。可以表明:存在对于需要在特定时间存储的页(有效的和无效的)的数目的限制。
存在如下两种情况。在下文中,n为扇区的数目,m为每个扇区的最大的页槽数,v为有效页的数目。
情况1:v<=m
在最坏的情况下,所有的有效页被存储到最老的扇区,并且n-2个剩余扇区各自包含v-1个无效页。注意,在清理时没有复制最老的扇区上的无效页,使得它们可以被忽略。还应注意,只要剩余的n-2个扇区中的一个扇区达到最老的扇区上有效页的数目,将按照定义清理最老的扇区,并且所包含的页将移动到具有足够的空间的最老的扇区。因此,包含无效页的扇区中的一个扇区变成最老的扇区,并且下次将被清理,导致不复制无效页,然后下一个最老的扇区被清理,依此类推,直到去除以前无效的页中的全部。
在情况1中,最多有(n-2)*(v-1)个无效页。因此,合法页的和为(n-2)*(v-1)+v=(n-1)*(v-1)+1。
情况2:v>=m
在最坏的情况下,最老的扇区的所有页包含有效页(m个页),且剩余的n-2个扇区各自包含m-1个合法页,其包含剩余的有效页和无效页。
这意味着,在情况2中最多有(n-2)*(m-1)-(v-m)个无效页。合法页的和为(n-2)*(m-1)+m=(n-1)*(m-1)+1。
因此,在清理期间需要复制的页的整数小于或者等于min(v-1,m-1)。其不受虚拟存储器的大小的限制。与必须复制全部虚拟存储器的、只用两个扇区的静态的或者混合分配的方法相比,这在效率方面是有益的。
在存在比装在一个扇区上更多的有效虚拟存储器的情况下,所提出的方法比只使用两个扇区的系统更有效率,即使闪速存储器的总和是一样的。这是因为在本设备中,需要复制的页的数目受限于装在一个扇区中的页的数目。
如果数据速率被限制为个页且f被限制为则写访问的最大等待时间关于成线性,其中:tce为清理和擦除一个扇区所需的最大时间;f为在开始擦除的时刻可用的空闲页槽的数目;n为可用的扇区的数目;m为每个扇区的页槽的数目;以及t为虚拟存储器中的页的总数目,即,t<=min(v-1,m-1)。
应当理解的是,本实施方式在可扩展性方面具有优势。可以通过软件来配置触发清理(以及由此擦除)的空闲页槽的限制。优选地,该限制为至少每个扇区的页槽的数目。
图12是表示将数据页写入标记为“扇区0”、“扇区1”和“扇区2”的三个扇区10的示例性序列的示意图。
图12(a)至图12(e)中的每幅图示出了三个扇区10中的每个扇区10的页槽区16(具有页槽44)。为了简单起见,假定每个页槽区16只有四个页槽44,然而,应当理解的是,在实际的实施方式中,将有更多的页槽。所示出的页槽44中的每个页槽或者填充有标记“F”,指示其“空闲”,或者被给予数字标记,指示其正存储的页的数目。而且,在图12(a)至图12(e)中的每幅图中,在扇区的页槽区16下方指出了有关的扇区的年龄。例如,在图12(a)中,扇区0、扇区1和扇区2分别具有年龄2、年龄1和年龄0,指示扇区0是最老的扇区而扇区2是最年轻的扇区。
图12(a)表示初始状态,其中扇区上的所有页槽44都为“空闲”。扇区0、扇区1和扇区2分别具有年龄2、年龄1和年龄0。
然后,逐页地将虚拟页0、2、4、1、3和5依次写入闪速存储器4,因此可以在图12(b)中看出这些虚拟页占用了扇区0(在写入页0、2、4和1时具有足够的空间的最老的扇区)和扇区1的一部分(在写入页3和5时具有足够的空间的最老的扇区)。写入开始于最老的扇区中的最老的页槽(最上面的),并且向着最新的扇区中的最新的页槽(最下面的)逐个页槽地进行。
然后虚拟页0和1依次重写入闪速存储器4,因此可以在图12(c)中看出这些虚拟页占据了扇区1中的最后两个页槽44。也就是说,逐页地将它们写入到具有足够的空间的最老的扇区。
在这时,达到了空闲页槽的限制(至少一个完整扇区),并且清理扇区0(最老的扇区)。因为虚拟页0和1在扇区1中是有效的(并且因此在扇区0中是隐含地无效的),并且因为扇区0是最老的扇区,所以在清理期间只需要从扇区0复制虚拟页2和4(有效页)。可以在图12(d)中看出这两个页被写入到具有足够的空间的最老的扇区,在本实例中是扇区2。因此占用了扇区2中的前两个页槽44。
由于扇区0不包含合法(即,需要的)数据,因此扇区0可以被擦除。在图12(e)中示出了擦除之后的状态。扇区0中的页槽44现在再次为“空闲”。而且,因为扇区0刚被擦除,所以扇区0具有年龄0,而由于擦除操作,扇区1和扇区2的年龄增加1。
将来的写入将从扇区2(其为具有足够的空间的最老的扇区)中的第一空闲页槽开始,并且应当理解的是,将会以这种方式继续写入、清理和擦除。
现在将阐述对上述的实施方式的修改,以帮助更好地理解本发明。
为了理解本修改与上述实施方式之间的不同,返回参照识别表12,具体参照结合图3说明的“原子”写入,即,一次写入单个位。再次简略地考虑图3,在将扇区10作为用于擦除的目标时,通过写入识别目标扇区的一位来生成每个新的条目。这个动作既将表条目标记为使用中,又识别目标扇区。因为只需要一位,所以目标扇区的编码是“原子的”。也就是说,如果写入一位被断电所中断,则有关的闪存单元将进入该位被写入或者没有写入的状态。不存在中间状态。
本修改考虑了在闪速存储器中写入/存储值时发生损坏的可能性。尽管从短期来看闪速存储器一般是稳定的,但是闪速存储器随着相当长的时间(例如,几个月或者几年)通常在一定程度上是不稳定的,或者由于某些环境条件(例如,温度极限)而造成的性能退化。因而,暴露于不同的环境条件(温度、压力、湿度、振动等的极端条件)下或者老化的影响会使存储器损坏。
出于这种考虑,本修改考虑了下述情况,其中,将冗余代码与标志一起写入(如图3中所示出的,每个条目的项20、22、24、26和28中的每个项是这样的标志),以解决损坏的影响。因此,本修改考虑了使用多位这样的标志(即,具有内置冗余的标志)。
本修改考虑了通过冗余代码将相对于由断电造成的中断(或其他中断事件)的鲁棒性与保护不受较小的位错误影响相结合。本修改还描述了如何将若干冗余代码结合到一个数据字中,以使得该数据字可重新写入,用于保护该数据字和其他存储器不受突然断电造成的中断的影响,同时保护其不受例如1位错误或者2位错误的影响。
注意,预先考虑了错误纠正和检测代码(例如,具有附加的奇偶校验位的汉明码),用于根据具有附加的冗余位的数据字来纠正1位错误和/或检测2位错误。
如同较早的实施方式一样,本修改涉及通过全动态分配将虚拟存储器的块加载并且存储到物理闪速存储器(被称为EEPROM仿真)。该方法相对于突然断电是安全的并且该方法可以在写入序列期间可靠地检测位错误,并且可以在没有被突然断电中断时检测和/或纠正位错误。
出于简洁的原因,以下描述将主要集中在本修改与较早的实施方式之间的不同上,而不是重复较早的公开内容的大量部分。
可以认为以上结合图1和图2详细说明的设备和闪速存储器架构适用于本修改。然而,在本修改中,设置了至少四个扇区,并且本修改中的识别表中的条目与图3中描绘的条目不同。
图13是实施本修改的电子设备(例如,计算设备)100的示意图。电子设备100包括控制装置102、闪速存储器104和RAM106。这些元件可以与图1中的对应的元件对照,因此省略进一步的描述。
如上所述,在本实施方式中,闪速存储器被布置成具有至少四个扇区,但是其他实施方式可以具有不同数目(例如更大数目或更小数目)的扇区。数据被动态即时地(例如,动态地)存储到扇区。
图14是闪速存储器104的示意图。闪速存储器104被配置成具有四个扇区110,为了方便起见标记为“扇区0”、“扇区1”、“扇区2”和“扇区3”。闪速存储器4还可以被配置成具有多于四个扇区,或者在本文中公开的一些方面中,少于四个扇区(例如,一个或两个或三个扇区)。
每个扇区110被组织成具有三个主要的区域,即识别表112、页关联表114和页槽区116。元件的这种布置可以与图2中的布置对照,因此省略进一步的描述。已经关于图2提供的描述通过进行必要的修正而适用于图14。
可以实现为算法(即,方法)的以下方法旨在决不将不完全擦除的扇区识别为有效。
本实施方式利用识别表112来将关于目标扇区(擦除过程的对象)的信息存储在其他扇区中。然后如先前所描述的那样,可以通过例如经由多数决定法来查找各个扇区中的信息之间的一致(例如,相关),进行例如在中断事件之后的当前擦除状态的检测。
识别表12基本上由多个条目(其可以称为槽)组成,多个条目中的每个条目与具体的擦除过程有关。当扇区110被擦除时,其识别表112中的所有条目被清除,并且针对每个后续擦除过程,在该表中生成条目。也就是说,当开始新的擦除过程时,将一个条目附加到每个识别表112(包括目标扇区中的识别表)中的条目列表。因为在不擦除有关的扇区的其他内容的情况下列表不能被擦除,所以只有生成的最后一个条目被认为是有效的。
可以认为该方法是增强方法,其除了在扇区的擦除期间保护数据不受突然断电影响之外,还相对于已使用的表条目中的位错误是安全的。
在本实施方式中,如前所述,扇区识别表保存关于所包含的数据的“年龄”的信息。具体的扇区的“年龄”等于自从该具体的扇区被擦除起其他扇区被擦除的次数。
在本实施方式中,至少直到已经确定没有发生中断,或者直到在中断之后已经采取了恢复动作,才使用冗余代码处理。在可用的情况下,可以禁用错误纠正代码。换句话说,一旦确定使用本文中描述的方法已经成功地写入/擦除,或者一旦使用了如本文中所描述的中断之后的恢复技术,就可以使用冗余编码技术(例如,以下关于图18所讨论的硬件ECC)。
此外,重新写入是可能的,即,已经处于已写入状态的位可再次写入为已写入状态(没有中间的擦除),而不会产生错误。
此外,假定自然数m,并且假定扇区识别表中的标志各自具有n位,其中n=2m+1。还假定,在由于除了不完全写入之外的原因造成损坏的任何时候,扇区识别表中的所有标志具有m位或更少的位。
当然,n可以大于2m+1,并且例如为偶数;等式n=2m+1表示m相对于n的最大尺寸,其中可以使用本文中所考虑的多数决定法技术。因此将相应地解释本文中提供的等式。
还在本实施方式中,设置了至少4个扇区。此外,扇区被给定顺序,该顺序在所有擦除过程中是静态的(例如,硬连线的物理地址)。考虑到闪速存储器通常将信息存储在由浮栅晶体管制成的存储单元阵列中,得出这些标准。当中断时,可能这样的单元将处于例如没有完全写入的浮动状态,即,具有在真与假之间的划分电平附近的储存电荷电平。在此情况下,可以看到储存值以无用且不可预测的方式随着时间切换。
例如由于以下原因,具有至少四个扇区且以给定的顺序写入到这些扇区是有用的。在具体的擦除过程中,可能有第一扇区正确地将用于该过程的目标扇区以及另一扇区(由于在中断的前一个这样的过程之后的残余浮动状态)作为目标,第二扇区至第四扇区(目标扇区)中的一个扇区在擦除之后处于已擦除状态,其中至少两个其他扇区将目标扇区作为目标。在这种情况下,虽然不能信任第一扇区的值,但是由于两个扇区处于一致,可以在具体的擦除过程中断之后执行成功的恢复。
图15是对理解根据本修改的识别表112中的条目(槽)有用的示意图。图15(a)、图15(b)、图15(c)和图15(d)中的每幅图代表单个这样的条目。
如先前所描述的那样,扇区识别表中的每个条目识别擦除操作。当开始新的擦除操作时将一个条目附加到列表。因为在不擦除扇区的其他内容的情况下列表也不能被擦除,所以只有最后一个条目有效。
图15(a)对理解每个条目的组成部分有用。每个条目由擦除完成标志120(在本实施方式中为n位宽)和每个可用扇区的n位标志122、124、126、128(其识别作为有关的擦除过程的对象的扇区(目标扇区))组成。在图15(a)中,项122、124、126和128被设置用于“扇区0”、“扇区1”、“扇区2”和“扇区3”,与图14一致(而如果设置了多于四个的扇区10,可以设置另外的标志用于另外的扇区110)。
为了在实现方式中简单起见,图15(a)中的标志中的每个标志为n位宽,即,它们具有相同的大小。标志可以具有不同的大小(例如,每个标志的n可以不同),这将导致更加复杂的实现方式。标志还可以与具有一些其他目的的其他位邻接或者与其一起存储。
如上所述,当扇区被擦除时,其识别表中的所有条目被清除。这可以用所有位为假来表示,与真相反。当然,“真”和“假”表示逻辑状态,并且这些逻辑状态到与物理值(高/低或者1/0)的映射取决于闪速存储器4的硬件实现。尽管在图3(b)中和在其他较早的图中,用已擦除值“0”表示假且用已写入值“1”表示真,但是从这里开始使用字“真”和“假”本身。
因此,图15(b)代表条目被清除且还没有使用(自前一次擦除起)时的状态。图15(c)代表已经将“扇区1”作为用于擦除的目标时的状态,因此“扇区1”是目标扇区。注意,已完成标志为假,代表擦除过程还没有完成。图15(d)代表“扇区1”(目标扇区)已经被擦除时的状态;注意,已完成标志为真。
标志(n位)中的每个标志是多数编码的冗余。也就是说,当标志的位中的多于(即,一半)的位为真时,标志被解释为真,而当标志的位中的多于(即,一半)的位为假时,标志被解释为假。因此,每个标志可以容许高达个损坏位。下面的高斯括号表示地板函数。而且,如上所述,假定n=2m+1。
闪存已擦除状态表示表中的空的且还没有使用的元素(条目)(所有标志为假)。最后一个(有效的)条目为没有完成的第一可用表条目(按写入条目顺序的最老的条目)。当已完成标志为真时,认为表条目已完成,而当已完成标志为假时,认为表条目未完成。
如上所述,以固定的顺序来进行扇区识别表112的更新,例如,从具有最小的物理地址的扇区开始。为了简化进一步的描述,该顺序将被假定为“扇区0”、“扇区1”、“扇区2”,然后是“扇区3”。因为在更新标志之前,每个标志的位中的一些位可能处于已写入状态(真),或许由于损坏,所以可以通过重写来进行更新。
现在将描述本实施方式中所采用的擦除过程,并且应当理解的是,其与之前描述的擦除过程共享重要的相似性。
当扇区要被擦除时,新条目被附加到所有的扇区的表中。通过写入识别目标扇区的n位(即,为真)来形成这些新条目中的每个条目。表中的空(未使用)的项或条目具有已擦除的闪存值。因此,通过单次闪存擦除操作来进行擦除和重置表。
图16(a)示出了用于擦除扇区的示例。扇区2将要被擦除。所有的扇区的表中的最后一个(最上面)条目被设置为索引2,指示扇区2为目标扇区。为便于识别,这些最后的条目被示出为突出(emboldened),并且这些最后的条目是从底向顶读取时没有完成(已完成标志为假)的第一条目。所有更高的(更后的)条目的全部标志示出为假。
在擦除完成之后,具有把扇区作为目标的条目的这些扇区的已完成标志被设置(即,为真)。注意,在擦除期间目标扇区(在本实例中为扇区2)的识别表被隐含地清除,因此不需要被设置为已完成。
图16(b)示出了在擦除完成之后上述示例的表。图16(b)还示出了在下一次擦除尝试之前的有效状态。在图16(b)中,目标扇区(即扇区2)的表被突出示出,其所有标志为假。对于其他的扇区,在16(a)中突出的条目在图16(b)中被示出为已完成标志为真。扇区2已经被擦除。
本实施方式还采用中止(或者正在中止)过程,在本文中也称为无效过程。当擦除过程的准备阶段被中止时,存在多种情况(稍后将描述这样的情况的识别)。在本实施方式中,除了针对若干标志(即,指示多于一个的扇区为目标扇区)进行等同于标记目标扇区的标记、以及跳过(即,不进行)对物理闪存扇区的擦除之外,以与擦除过程的方式类似的方式来进行该中止过程。
在中止过程的情况下,由此通过在表条目的每个表条目中将多于一个的扇区标志写入为真来进行标记。选择了标志中的哪个标志是不相关的-优选地,在每个表条目中标记相同的标志。因为此处描述的中止过程依赖于对标志进行标记(将它们设置为真),所以其要在标记目标扇区的阶段期间进行,并且可能只在该阶段期间进行。
图16(c)示出了用于中止擦除准备的示例:所有扇区的表中的最后一个(最上面)条目被设置为索引2和索引3,有效地指示扇区2和扇区3为目标扇区并且因此不是指示需要中止。为了便于识别,这些最后的条目被突出示出,并且这些最后的条目是从底向顶读取时没有完成(已完成标志为假)的第一条目。所有更高的(更后的)条目的全部标志示出为假。
在将所有扇区标记用于中止之后,将已完成标志(已完成标志为真)写入到已经在前一步中标记的所有的条目。这是以与在上述的擦除过程中描述的方式相同的方式来进行的,但是不擦除扇区。
现在将详细地考虑本实施方式中的不完全擦除的检测。
顺便插一句,注意,最后一个(有效的)条目为既不是空的也不是已完成(已完成标志为假,指示没有完成)的第一个表条目(即,最老的条目或者当从图16的底部向上读取时到达的第一个条目)。
现在将考虑每个槽可以找到的各种值,从其中擦除过程没有被中断的情况开始。
当擦除过程没有被断电所中断(即,擦除过程被成功地执行)时,自被擦除起还没有被写入的识别表的所有槽处于空状态(这包括新擦除的扇区的所有槽、以及其他扇区的还没有使用的所有槽)。这是因为:
1.所有标志为假,因为每个标志的为真的位数
当擦除过程没有被断电所中断(即,擦除过程被成功地执行)时,识别表的所有完全写入的条目处于已完成状态。这是因为:
1.已完成标志为真,因为每个标志的为真的位数
2.指示目标扇区的标志为真,因为每个标志的为真的位数
3.指示除了目标扇区以外的扇区的标志为假,因为每个标志的为假的位数
现在将考虑其中擦除过程被中断的情况。识别出了以下16种情况,这16种情况被分成4组,并且标记为从1a至4c。
当上述擦除过程被断电中断时,从闪存读出可以针对要被写入的识别表的每个条目示出以下情形及其原因:
1.表条目呈现空。所有的标志为假。
a.向表槽的写入尝试完全没有开始,因为在开始向相应槽的写入之前出现中断(其他扇区上的其他槽可能之前已经被写入)。由于损坏,所有标志的所有位中的位为真。
b.在已中断的尝试中,目标扇区标志的一些位但不是所有位已经被写入,以标记目标扇区。已经被写入真的位数加上从假损坏为真的位数再减去从真损坏为假的位数由于损坏,所有其他标志的位为真。
c.表槽被擦除,因为扇区被完全地或者部分地擦除。由于损坏,为真的位数
d.槽没有改变,因为之前存在于相同列表的一些槽变成已完成。由于损坏,为真的位数
2.表条目将一个扇区作为目标,但是已完成标志呈现假。
a.在已中断的尝试中,目标扇区标志的一些位但不是所有位已经被写入,以标记目标扇区。已经被写入真的位数加上从假损坏为真的位数再减去从真损坏为假的位数由于损坏,所有其他标志的位为真。
b.表槽被部分地擦除,因为扇区的擦除被中断。一个扇区标志显示个位为真,所有其他标志显示个位为真。这可能包括损坏位。
c.目标扇区标志的所有位已经被写入,因为针对相应槽已完成对目标扇区的标记。已完成标志的写入还没有开始。即使最坏情况的损坏,目标扇区标志中的为真的位数也由于损坏,所有其他标志的位为真。
d.在已中断的尝试中,已完成标志的一些位但不是所有位已经被写入,以标记目标扇区。已经被写入真的位数加上从假损坏为真的位数再减去从真损坏为假的位数即使最坏情况的损坏,目标扇区标志中的为真的位数也由于损坏,所有其他标志的位为真。注意,可能在标志被写入之后发生损坏,使得在没有损坏的情况下已完成标志呈现真,但后来转而变为假。
3.表条目将多于一个扇区作为目标。
a.表槽被部分地擦除,因为扇区的擦除被中断。一些扇区标志显示个位为真,其他标志可能显示个位为真。这可能包括损坏位。
b.由于写入标志期间的中断,表条目被部分地写入成其扇区标志中的一个标志的个位被设置成已写入状态。然后另一个扇区被作为目标并且适当的扇区标志被写入。该写入尝试可能也被中断,留下其扇区标志中的一个标志的个位被设置成已写入状态等。标记表条目的最后一次尝试可能成功,导致适当的扇区标志的个位被写入真。在最后一次写入尝试期间或者之后,一些位按照部分已写入标志中的一个或更多个标志从假转变为真的方式转变为损坏状态,导致通过表条目将多于一个扇区作为目标。
c.由于写入标志期间的中断,表条目被部分地写入成其扇区标志中的一个标志的个位被设置成已写入状态。然后另一个扇区被作为目标并且适当的扇区标志被写入。该写入尝试可能也被中断,留下其扇区标志中的一个标志的个位被设置成已写入状态等。标记表条目的最后一次尝试成功,导致适当的扇区标志的个位被写入真。在最后一次写入尝试期间或者之后,一些位按照部分已写入标志中的一个或更多个标志从假转变为真的方式转变为损坏状态,导致通过表条目将多于一个扇区作为目标。最后写入已完成标志的尝试被中断,导致已完成标志中的一些位但不是全部位被写入。已经被写入真的位数加上从假损坏为真的位数再减去从真损坏为假的位数
d.通过写入若干标志使表条目强制无效。目标扇区标志的所有位已经被写入,因为针对相应槽已完成对无效状态的标记。还没有开始已完成标志的写入。即使最坏情况的损坏,目标扇区标志中的为真的位数也由于损坏,所有其他标志的位为真。
e.通过写入若干标志使表条目强制无效。目标扇区标志的所有位已经被写入,因为针对相应槽已完成对无效状态的标记。即使最坏情况的损坏,目标扇区标志中的为真的位数也由于损坏,所有其他标志的位为真。最后写入已完成标志的尝试被中断,导致已完成标志的一些位但不是全部位被写入。已经被写入真的位数加上从假损坏为真的位数再减去从真损坏为假的位数
4.已完成标志呈现真。
a.在已中断的尝试中,已完成标志的一些位但不是所有位已经被写入,以完成表条目。已经被写入真的位数加上从假损坏为真的位数再减去从真损坏为假的位数
b.已完成标志的所有位已经被写入。即使最坏情况的损坏,目标扇区标志中的为真的位数也即使最坏情况的损坏,已完成标志中的为真的位数也
c.表槽被部分地擦除,因为扇区的擦除被中断。已完成标志显示个位为真。这可能包括损坏位。
注意,情况1.d.与无中断情况没有区别。情况1.c.、2.b.、3.a.、4.c.可能有时只出现一次(一),因为条件是部分擦除且效果是分离性的。情况3.b.和3.c.可能只出现在以固定的顺序第一个要被更新的扇区上。
既然已经考虑了每个槽或者条目的可能值,也将考虑遍及所有有效条目的可能值。也就是说,将考虑跨越所有扇区的有效条目的可能值。
当上述擦除过程被断电中断时,从闪存读出可以在识别表的最后一个条目中示出以下状态及其原因。
图17中提供了针对以下详细说明的状态(标记为1A至9A)中的每个状态的上述情况(标记为1a至4c)的可能组合的图示,并且以下说明了单独称为每种的这样的状态。在每个组合中,提供了一排方框,代表对应的扇区的最后一个(有效的)条目,因此最左边的方框代表扇区0的最后一个条目,紧接着向右的方框代表扇区1的最后一个条目,紧接着向右的方框代表扇区2的最后一个条目,依此类推。关于其情况来标记每个这样的方框。
在图17(a)至图17(zg)中的一些图中,呈现出多于一行,每个这样的行代表不同的单独组合(出于这个原因,在每个行之间设置了字“或”)。这样的图中的列不意在指示在同一扇区中彼此上/下出现的槽。
状态如下。
1.没有扇区作为用于擦除的目标
A.向第一个表的第一次写入尝试被中断,且扇区标志中没有位或一些位但不是全部位被写入,该标志中为真的位数这可能包括损坏位。第一扇区包含情况1.a.或情况1.b.的最后一个条目,而所有其他扇区包含情况1.a.的最后一个条目。参见图17(a)。
B.向最后一个表的最后一次写入尝试被中断,已完成标志的一些或者全部位被写入,该标志中为真的位数这可能包括损坏位。存在以下情景:
i.最后一个扇区包含情况4.a.或情况4.b.的最后一个条目,有一个之前的包含情况1.c.的最后一个条目的扇区,而所有其他扇区包含情况4.b.的最后的条目。参见图17(b)。
ii.最后一个条目具有情况1.c.,倒数第二个条目具有情况4.a.或情况4.b.,而所有其他扇区包含情况4.b.的最后的条目。参见图17(c)。
2.一个或更多个扇区将同一扇区作为用于擦除的目标,两个或更多个扇区没有将任何扇区作为目标,没有扇区将多于一个扇区作为目标
A.意图被设置成目标扇区的一些但不是全部表条目被成功写入,在表的所有意图的条目完成之前发生中断。存在以下情景:
i.有一个包含情况1.b.的最后一个条目的扇区,所有之前的扇区(至少一个)包含情况2.c.的最后一个条目,所有随后的扇区(至少一个)包含情况1.a.的最后一个条目。参见图17(d)。
ii.有一个包含情况2.a.的最后一个条目的扇区,所有之前的扇区(如果有的话)包含情况2.c.的最后一个条目,所有随后的扇区(至少两个)包含情况1.a.的最后一个条目。参见图17(e)。
iii.一开始有一系列包含情况2.c.的最后一个条目的一个或更多个扇区,然后有一系列包含情况1.a.的最后一个条目的两个或更多个扇区。参见图17(f)。
B.意图被完成的一些但不是全部表条目被成功写入,在对表的所有意图的条目完成之前发生中断。存在以下情景:
i.有一个包含情况2.d.的最后一个条目的扇区,有一个之前的包含情况1.c.的最后一个条目的扇区,所有其他之前的扇区(如果有的话)包含情况4.b.的最后一个条目。随后的扇区(至少一个)包含情况2.c.的最后一个条目。参见图17(g)。
ii.有一个包含情况2.d.的最后一个条目的扇区,所有之前的扇区(如果有的话)包含情况4.b.的条目。有一个随后的包含情况1.c.的最后一个条目的扇区,所有其他随后的扇区(至少一个)包含情况2.c.的最后一个条目。参见图17(h)。
iii.有一个包含情况4.a.的最后一个条目的扇区,有一个之前的包含情况1.c.的最后一个条目的扇区,所有其他之前的扇区(如果有的话)包含情况4.b.的最后的条目。随后的扇区(如果有的话)包含情况2.c.的最后的条目。参见图17(i)。
iv.有一个包含情况4.a.的最后一个条目的扇区,所有之前的扇区(至少一个)包含情况4.b.的条目。有一个随后的包含情况1.c.的最后一个条目的扇区,所有其他随后的扇区(如果有的话)包含情况2.c.的最后一个条目。参见图17(j)。
v.有包含情况1.c.的最后一个条目的扇区,所有之前的扇区(如果有的话)包含情况4.b.的最后一个条目。随后的扇区是一系列包含情况4.b.的最后一个条目的零个或多个扇区,接着是一系列包含情况2.c.的最后一个条目的扇区(至少一个)。至少有一个包含情况4.b.的最后一个条目的扇区。参见图17(k)。
vi.有包含情况1.c.的最后一个条目的扇区,所有随后的扇区(至少一个)包含情况2.c.的最后一个条目。之前的扇区是一系列包含情况4.b.的最后一个条目的扇区(至少一个),接着是一系列包含情况2.c.的最后一个条目的扇区(至少一个)。参见图17(l)。
3.除了一个以外的所有扇区将同一扇区作为用于擦除的目标,作为目标的扇区没有将扇区作为目标
A.目标扇区的擦除被中断。作为目标的扇区包含情况1.c.的最后一个条目,所有其他扇区包含情况2.c.的最后一个条目。参见图17(m)。
B.作为目标的扇区是标记顺序中的最后一个扇区,并且扇区标志的标记被中断。作为目标的扇区包含情况1.a.或情况1.c.的最后一个条目,所有其他扇区包含情况2.c.的最后一个条目。参见图17(n)。
C.在写入第一个标志之前已完成标志的标记被中断。目标扇区包含情况1.c的所有条目,所有其他扇区包含情况2.c.的最后一个条目。参见图17(o)。
D.在写入第一个标志期间已完成标志的标记被中断。目标扇区包含情况1.c的所有条目,不是目标扇区的第一扇区包含情况2.d.的最后一个条目,所有其他扇区包含情况2.c.的最后一个条目。参见图17(p)。
4.除了一个以外的所有扇区将同一扇区作为用于擦除的目标,作为目标的扇区将一些其他扇区或多个扇区作为目标
A.目标扇区的擦除被中断。作为目标的扇区包含情况2.b.或情况3.a.的最后一个条目,所有其他扇区包含情况2.c.的最后一个条目。参见图17(q)。
B.目标扇区的标记被中断至少两次,并且在标记最后一个扇区期间或者之后发生损坏。最后一个扇区包含情况2.c.或情况2.d.的最后一个条目,第一个扇区包含情况3.b.的最后一个条目,并且所有中间的扇区包含情况2.c.的最后一个条目。参见图17(r)。
C.第一目标扇区的标记被中断至少一次,然后在擦除期间新的擦除过程被中断,并且在擦除期间或之后发生损坏。第一个扇区包含情况3.b.的最后一个条目,目标扇区包含情况2.b.的最后一个条目,与剩余扇区一样,该目标扇区将相同扇区作为目标,所有剩余扇区包含情况2.c.的最后一个条目。参见图17(s)。
5.所有扇区将同一扇区作为用于擦除的目标
A.在开始擦除之前作为目标的扇区的识别表没有满,并且扇区标志的标记被中断。最后一个扇区包含情况2.a.或情况2.c.的最后一个条目,所有其他扇区包含情况2.c.的最后一个条目。参见图17(t)。
B.目标扇区的擦除被中断。作为目标的扇区包含情况2.b.的最后一个条目,所有其他扇区包含情况2.c.的最后一个条目。参见图17(u)。
6.一个或更多个扇区将两个或更多个扇区作为目标,所有其他扇区没有将扇区作为目标
A.在写入第一个标志期间扇区标志的设置被中断若干次。第一扇区包含情况3.b.的最后一个条目,所有其他扇区包含情况1.a.的条目。参见图17(v)。
B.表条目的无效(即,中止过程)被中断。存在具有情况3.b.或情况3.d.的最后一个条目的扇区,所有之前的扇区具有情况3.d.的最后一个条目,所有随后的扇区(零个或更多个)具有情况1.a.的最后一个条目。参见图17(w)。
C.先前的无效过程(中止过程)的已完成标志的写入被中断。存在具有情况3.d.或情况3.e.的最后一个条目的扇区。所有之前的扇区(零个或更多个)具有情况4.b.的最后一个条目,所有随后的扇区(零个或更多个)具有情况3.d.的最后一个条目。参见图17(x)。
D.先前的无效过程(中止过程)的完成标志的写入被中断。存在具有情况4.a.或情况4.b.的最后一个条目的扇区。所有之前的扇区(零个或更多个)具有情况4.b.的最后一个条目,所有随后的扇区(零个或更多个)具有情况3.d.的最后一个条目。参见图17(y)。
7.一个扇区将两个或更多个扇区作为目标,一个或更多个扇区将同一扇区作为用于擦除的目标,两个或更多个扇区没有将任何扇区作为目标
A.第一个扇区被重新写入,并且之后发生损坏。意图被设置成目标扇区的一些但不是全部表条目被成功写入,在到表的所有意图的条目完成之前发生中断。存在以下情景:
i.第一个扇区包含情况3.b.的最后一个条目。有一个包含情况1.b.的最后一个条目的扇区,所有剩余的在前的扇区(至少一个)包含情况2.c.的最后一个条目,所有随后的扇区(至少一个)包含情况1.a.的最后一个条目。参见图17(z)。
ii.第一个扇区包含情况3.b.的最后一个条目。有一个包含情况2.a.的最后一个条目的扇区,所有剩余的在前的扇区(如果有的话)包含情况2.c.的最后一个条目,所有随后的扇区(至少两个)包含情况1.a.的最后一个条目。参见图17(za)。
iii.第一个扇区包含情况3.b.的最后一个条目。从第二个扇区开始有一系列包含情况2.c.的最后一个条目的一个或更多个扇区、以及之后是一系列包含情况1.a.的最后一个条目的两个或更多个扇区。参见图17(zb)。
B.第一个扇区被重新写入,并且之后发生损坏。一些其他扇区的擦除被成功完成,且第一个扇区的已完成标志的写入被中断。第一个扇区具有情况3.b.或情况3.c.,一个扇区具有情况1.c.,所有其他扇区具有情况2.c.。参见图17(zc)。
8.一个扇区将两个或更多个扇区作为目标,除了两个之外的所有扇区将同一扇区作为用于擦除的目标,作为目标的扇区没有将任何扇区作为目标
A.目标扇区的擦除被中断。第一个扇区包含情况3.b.的最后一个条目。作为目标的扇区包含情况1.c.的最后一个条目,所有其他扇区包含情况2.c.的最后一个条目。参见图17(zd)。
B.作为目标的扇区是标记顺序中的最后一个扇区,并且扇区标志的标记被中断。第一个扇区包含情况3.b.的最后一个条目。最后一个扇区包含情况1.c.的最后一个条目,倒数第二个扇区包含情况2.a.或情况2.c.的最后一个条目,所有其他扇区包含情况2.c.的最后一个条目。参见图17(ze)。
C.在写入第一个标志之前已完成标志的标记被中断。第一个扇区包含情况3.b.或情况3.c.的最后一个条目,目标扇区包含情况1.c.的所有条目,所有其他扇区包含情况2.c.的最后一个条目。参见图17(zf)。
9.两个或更多个扇区将两个或更多个扇区作为目标,一个扇区将一个扇区作为目标,所有其他扇区没有将任何扇区作为目标
A.表条目的无效被中断。存在具有情况2.a.或情况2.c.的最后一个条目的扇区。所有之前的扇区(至少两个)具有情况3.d.的最后一个条目。所有随后的扇区(零个或更多个)具有情况1.a.的最后一个条目。参见图17(zg)。
现在将考虑在上述的9个状态中采取的动作,即,为了对不完全擦除继续操作的动作(例如,恢复动作)。
第一,将考虑没有检测到擦除的中断的情形。该情形对应于关于图5所描述的组A和组E。可以将状态1当做没有擦除过程被中断,因为扇区处于与没有擦除过程正在进行相同的状态。如果在启动时检测到该情形,则要被写入的最后一个扇区(以写入扇区的顺序)的最后一个已完成标志应该被重新写入,以确保该标志不会由于损坏而返回到假(情况2.d.)。如果任何其他扇区刚被擦除,则要被写入的最后一个扇区将是按扇区顺序的最后一个扇区。然而,如果按扇区顺序的最后一个扇区本身刚被擦除,则要被写入的最后一个扇区将是按扇区顺序的倒数第二个扇区(即,最后一个扇区之前的扇区)。
第二,将考虑检测到物理闪存擦除的中断的情形。该情形对应于关于图5所描述的组C。在状态3、4、5和8中,可以通过多数决定法来识别在擦除期间中断的目标扇区。在可以擦除另一个扇区之前,必须重复针对该目标扇区的擦除过程。在此期间,从目标扇区读取(从读取目标扇区的页或者确定目标扇区的年龄的意义上说)是不可能的,因为内容或许已经损坏。当然,进行对目标扇区的识别表的读取,以检测状态。可以读取所有其他扇区。
第三,将考虑检测到准备阶段(设置扇区标志)的中断的情形。该情形对应于关于图5所描述的组B。如果设置扇区标志被中断,且可以清楚地识别目标扇区(状态2.A.),则应该重复擦除过程。可以通过查看忽略目标扇区时扇区顺序中的最后一个扇区来区分该情形(状态2.A.)与已完成标志的设置被中断的情形(状态2.B.)。如果任何其他扇区是目标扇区(在状态2.B.的情况下目标扇区可能刚被擦除),则忽略目标扇区时扇区顺序中的最后一个扇区实际上将是扇区顺序中的最后一个扇区。如果扇区顺序中的最后一个扇区是目标扇区,则忽略目标扇区时扇区顺序中的最后一个扇区将是扇区顺序中的倒数第二个扇区(即,最后一个扇区之前的扇区)。在本情形中(状态2.A.:扇区标志的设置被中断),忽略目标扇区时扇区顺序中的最后一个扇区包含没有设置为真的标志的最后一个条目。在本情形中(状态2.A.),可以通过查看扇区顺序中的第一个扇区或者通过多数查看将扇区作为目标的那些扇区或者通过查看正在将扇区作为目标的任何扇区,来识别目标扇区。顺便插一句,以下说明用于区分状态2.A.和状态2.B.的相对简单的方法。
有可能准备阶段被中断若干次,导致下述情形,其中有一个将多个扇区作为目标的扇区,并且没有针对目标扇区的多数、或者不确定在当前擦除过程期间发生中断的情况下是否会识别同样的多数(状态6.A.,7.A.)。在这种情形下,必须通过对那些已经在第一条目中标记的扇区标志进行标记,如上所述中止擦除过程,该第一条目呈现出具有若干个扇区标志为真。针对这些标志,需要重写。
第四,因此,将考虑检测到中止阶段(中止过程)的中断的情形。尽管该情形没有明确地出现在图5中,但是可以将其理解为是下述过程:其中,将至少两个扇区作为目标(参见步骤S4),跳过擦除(参见步骤S6)且设置已完成标志(参见步骤S8)。如果中止标志的设置被中断(状态6.B.和9),则应该通过对那些已经在第一条目中标记的扇区标志进行标记来重复中止过程,该第一条目呈现出具有若干个扇区标志为真。应该针对至少在中断前要被写入的最后一个扇区来执行重写。
第五,将考虑检测到后处理阶段(设置已完成标志)的中断的情形。该情形对应于关于图5所描述的组D。如果已完成标志的设置被中断(状态2.B.、6.C.、6.D.或者7.B.),则应该重复已完成标志的设置。在该情形下不应该允许擦除。可以通过查看扇区顺序中的第一扇区来区分该情形(例如,状态2.B.)与目标标志的设置被中断的情形(如上所述,状态2.A.)。在本情形中(状态2.B.:已完成标志的设置被中断),第一扇区没有将扇区作为目标(因为在一些其他扇区已经擦除的情况下其已完成标志为真,或者因为第一扇区本身被擦除且其条目中的所有条目被清空)。将扇区作为目标且具有为假的已完成标志的所有条目应该被写入成已完成标志为真。呈现出是在中断之前已完成标志已经被写入的最后一个的条目需要被重写,以确保其已完成标志不会由于损坏而返回到假(情况2.d.)。该条目被识别为是具有已完成标志为真的最后一个条目的扇区的顺序中的最后一个扇区的最后一个条目。
注意,在后续状态方面,上述五个情形中描述的完成或者恢复任务中的任何任务的中断将再次导致状态1至9中的一个状态。
由于损坏,中止过程的中断可能再次导致将一个扇区识别成用于擦除的目标的状态。在这种情况下,保证在已经中断的前一次擦除过程中目标扇区已经被选为目标扇区。这是因为中止过程将尝试对下述扇区标志进行写入,该扇区标志将在前一次中断的擦除过程中被选为目标扇区的扇区作为目标(情况3.b.)。
如果存在若干用于擦除不同的扇区的已中断的尝试,则(仅)触发中止过程。如果由于扇区将用尽扇区识别槽而触发擦除过程,则中止过程不会发生。在这种情形下,擦除的中断将始终尝试以针对同一扇区继续擦除过程,即每个擦除过程可以被中断和继续无限次数。
如同结合图1至图12所描述的较早的实施方式一样,结合图13至图17所描述的本实施方式以动态的方式将数据存储在每个扇区内。
与硬件EEPROM不同,与较早的实施方式一致,本实施方式的仿真存储器不是被组织为连续范围的固定尺寸数据字。而是,其被组织为不连续范围的虚拟页(每个虚拟页可以占用闪速存储器的多个物理页)。虚拟页(为简单起见,“页”)通过唯一索引(页ID)来寻址,并且在本实施方式中,虚拟页具有相同尺寸。例如通过支持软件的静态配置可以将页尺寸定标为任意值。可以在较高层中通过已知手段来进行任意尺寸的虚拟块到整数的页的映射。
在本实施方式中,每个扇区包含(即,被组织成)一组例如由支持软件定义的页槽,页槽可以各自存储一个虚拟页。本实施方式中的页槽包括有关的扇区的页关联表中的一个条目、以及足够大以存储该虚拟页数据的存储器块。
上文结合图6说明的动态分配方法也应用在本实施方式中,因此此处不再重复。也就是说,页关联表中的条目与对应的页槽区中的页槽之间的关系和之前一样。在本实施方式中,该关系是静态的,使得页关联表中的具体的条目对应于对应的页槽区中具体的预定页槽。
页关联表中的每个条目表示对应的页槽的状态。状态“空闲”、“已分配”、“有效”和“无效”也与之前一样。
图18是对理解根据本实施方式的页关联表中的条目有用的示意图。尽管与上文结合图7所讨论的条目类似,但注意存在不同之处。
图18代表单个这样的条目,并且对理解每个条目的组成部分有用。每个条目由ECC(错误纠正或校正码)部分150、已使用标志152、已完成标志154、无效标志156和页ID158组成。自然地,如同本文中指出的其他布局一样,图18中的项的顺序可以不同于对应的物理实现方式的顺序。物理实现方式可以具有附加(例如,保留)位。
ECC部分150为冗余位,该冗余位可以被用于增加所有完全写入且无损坏的条目的汉明距离。尺寸(c位)取决于用于错误检测和/或错误纠正的算法,因此可以在实现方式之间变化。当表条目被擦除时,可以给出利用该算法的保护。错误纠正/检测算法可以保护表条目的所有位,包括ECC位。
已使用标志152为尺寸u位的多位标志,指示页槽是否空闲,其中在本实施方式中已擦除状态(假)表示页槽空闲。在本实施方式中,一个或更多个位处于已写入状态(真)意味着已使用。在本实施方式中,已使用标志的重写是可能的。
无效标志156是1位标志,指示页槽(即页,即由页ID识别的页的数据)是有效的还是无效的,其中在本实施方式中已擦除状态(假)表示页槽是有效的。
已完成标志154是尺寸f位的多位标志,指示页槽是否已分配,其中在本实施方式中所有位处于已写入状态(真)意味着有效或者无效。在本实施方式中一个或更多个位处于已擦除状态(假)意味着已分配或空闲。已完成标志的重写是可能的。
页ID158是作为唯一地识别存储在页槽中的虚拟页的索引的整数。
如果硬件提供下述情况,则ECC的生成和评估可以是对软件透明的:(a)在不需要错误纠正的情况下已使用标志和已完成标志可以被读取;(b)在不需要写入ECC的情况下已使用标志和已完成标志可以被写入;以及(c)在不需要写入用于生成ECC的源的数据的情况下可以生成和写入ECC。
结合图6至图12所陈述的方法类似地适用于这里。在本实施方式中,修改的(或新的)页总是写入到第一空闲页槽,其中在有关的页关联表的相关部分中有对应的条目。因此,页的ID被存储到页关联表中的相关条目,且虚拟数据被存储到相应的页槽中的页槽区。
对于每个页,只有在页槽中(即,在用于该页的页槽中的最新的页槽中)有效或者无效的最后一次(最近的)出现事件代表该页的当前的状态和内容。页的较老的版本(即,在较老的页槽中)被隐含地忽略。因此,有利的是,如果相同的页在较新的槽中是有效的或者无效的,则不需要使老的页槽无效。
没有在任何页槽中引用的页被认为在虚拟存储器中是不存在的。取决于所采用的错误通知范例(例如,通过支持软件),读取尝试可能导致错误或者将返回默认值。
页槽的无效状态表示有关的页实际上被擦除,即,该页被恢复到不存在状态。当需要擦除扇区时,复制时可以将无效页排除在外,因此,将来可以降低存储器消耗。
可以在运行时间期间添加或者去除页而不需要重新配置软件的事实使得该方法可动态扩展。
现在将考虑在本实施方式中将数据存储在扇区中所借助的过程,并且应当理解的是,这与本文中早些考虑的相应的过程非常类似。
当要将页写入到扇区时,执行以下序列。
通过在相应的页关联表的相应的条目中写入已使用标志152的所有位(例如,写入真)来分配第一空闲页槽。不写入其他位。
然后,在中间的(即,既不是第一次也不是最后一次)写访问时,将页ID写入到页关联表中的同一条目(槽)。
可选地,然后,在中间的(即,既不是第一次也不是最后一次)写访问时写入无效标志。如果页要被无效,则(仅)需要该步骤。如果页要被覆写(overwrite),则可以跳过该步骤。
然后在中间的(即,既不是第一次也不是最后一次)写访问时写入ECC。尽管表条目的剩余项还没有被写入,但是在表条目的最终状态之上生成冗余位。也就是说,在本实施方式中,针对已写入的所有已使用位,已写入的所有已完成位,已写入的页ID以及可选地已写入的有效标志,来计算冗余位。
然后在中间的(即,既不是第一次也不是最后一次)写访问时将虚拟页的内容写入到页槽的内容区。应该通过例如也位于内容区中的附加ECC来保护该数据。写入顺序可以在实现方式之间变化。
然后,在最后的写访问中,通过对页关联表条目写入已完成标志的所有位来将页槽标记为有效/无效。
中间的写访问可以以任何顺序,并且如有可能,可以组合成较少的访问。
如同本文中描述的其他过程一样,有可能数据存储过程会被例如断电的中断事件所中断。
这样的中断可能导致页槽和对应的条目维持在许多不同状态中的一个状态中。
页槽可能为“空闲”(已完成标志为假,已使用标志为假)。可能在已使用标志的所有位被写入之前发生中断,但是已写入的位数加上损坏的位数可能少到足以被基于ECC的纠正所纠正。这可以通过用基于ECC的纠正读取已使用标志来检测。
页槽可能为“已分配”(已使用标志为真,已完成标志为假)。可能在写入已使用标志期间发生中断,并且包括损坏位的已写入的位数可能太大而不能被基于ECC的纠正所纠正。可能在写入已使用标志之后但是在写入已完成标志之前发生中断。可能在写入已完成标志期间发生中断,并且包括损坏位的已写入的位数可能未大到足以被基于ECC的纠正所纠正。
页槽可能为“已完成”(已写入已完成标志)。可能在已完成标志的所有位被写入之前发生中断,但是已写入的位数减去损坏的位数可能大到足以被基于ECC的纠正所纠正。这可以通过用基于ECC的纠正读取已完成标志来检测。
在第一种情况下(“空闲”),可能已经被写入的所有位可以在随后的写入尝试中被重写。因此,可以重新使用页槽,即,可以安全地认为页槽空闲。
在第二种情况下(“已分配”),页槽的一些但不是全部位已经被写入。页槽可能既不能重新使用也不能读取。页槽应该被忽略。
在第三种情况下(“已完成”),不确定写入是不完全的还是所有位已经被写入,但是一些位被损坏。因此,这种表条目的已完成标志应该被重新写入。之后,确定所有位已经被写入,并且可以信任基于ECC的纠正。应该只在启动时并且只针对最后一个条目进行该步骤,所有进一步的读取和写入尝试应该等待,直到重新写入完成为止。在这种情况下,确信所有之前的条目已经被完全写入。
存储过程和用于应对中断的方法(以及因此的一个或多个算法)将决不会将不完全写入的页识别为有效,因为可以识别第一种情况和第二种情况(“空闲”和“已分配”),并且确信第三种情况(“已完成”)被完全写入。
除了相同的位被再次重新写入(第一种情况)之外,算法将决不试图对完全地或者不完全地写入的存储器进行写入(第二种情况和第三种情况)。
此外,算法将决不会将页的过时版本识别为当前版本,因为用指示较新的数据的有效性的同一条件来指示所有较旧的版本的隐含失效。
一旦不完全写入被排除,通过所使用的错误纠正/检测算法来保护包括标志和ECC位的所有的数据以进行错误纠正和/或错误检测。
注意,写入过程的连续中断可能用已分配的页槽填充所有表。因此,虚拟存储器可能进入不可以写入另外的数据的状态。在本实施方式中,安全地检测该状态并且不违反相对于于断电的安全性的约束(如先前所讨论的那样)。
在适应本实施方式时,提供硬件支持以便加速对关联表的评估。
参照图19,图19是适于提供支持的数据操作硬件的示意图。设置了一种位于闪存硬件接口中的硬件单元。该硬件单元对给定的表条目进行评估,并且取得页槽的状态。这是通过从闪存读出数据的操作来进行的,然后该读出数据被呈现在附加的地址镜像(mirror)上。
这样的硬件扩展的图19中的示意性概况采用了32位表槽以及每32位字1位错误纠正+2位错误检测。
硬件单元设置了寄存器,用于选择由范围内的最小的ID和最大的ID给定的一系列的页ID。
硬件单元设置了以下接口,用于在数据操作镜像上读取:
1.已使用状态(1字节)
·0,如果表槽为空闲,
·1,如果表槽不为空闲。
在图19中的AHB(高级高性能总线)接口的位8上示出了已使用状态。该已使用状态是根据位于图19示例中的闪存宏位0至5上的已使用标志(如以上所解释的)来计算的。
2.相关状态(1字节):
·1,如果表槽的已完成标志被设置且ECC没有检测到错误且页ID在范围内。1指示页被完全写入,没有被损坏且处于所选择的范围内。具有相关状态为1的页槽是有效的或者无效的,并且处于指定的搜索范围内。
·否则,0。相关状态0指示在指定的搜索范围内页槽不包含有效页。这样的页槽可以被忽略。
在图19中的AHB接口的位0上示出了“相关状态”。该“相关状态”是根据位于同一图中的闪存宏位6至11上的已完成标志(如以上所解释的)来计算的,结果是整个页槽的ECC检查和范围检查。
3.页ID和有效标志(2字节):
·一份页ID和有效标志
在图19中的AHB接口的位16至31上示出了页ID和有效标志。页ID和有效标志是通过对位于同一图中的闪存宏位16至31上的页id和有效标志进行错误纠正来计算的。
通过数据操作镜像实现的评估逻辑允许支持更简单,并且由此减少了评估每个表槽所需的指令(屏蔽、移位、比较)数目。作为地址镜像的实现方式使触发计算所需的总线事务数最小化。这导致显著加速了表评估。
认为本公开内容扩展至以下点。
1.本发明扩展至用于动态分配扇区的机制,即,在运行时间期间根据存储在扇区上的合法数据的量来计算数据存储到不同的扇区的顺序。该顺序既不束缚于虚拟地址也不需要事先已知。这样做以减少为了能够擦除一个扇区而从一个扇区向另一个扇区复制所需的存储器的量。
2.本发明扩展至用于通过利用位于除了正被擦除的扇区之外的其他扇区上的表来在擦除过程期间相对于断电安全的机制。并且通过相同的机制,可以安全地擦除所有已使用的扇区。擦除过程可以被中断无限次数,而不阻止能够继续该机制。也就是说,不需要附加的非易失性存储器,也没有由于断电而丢失或者损坏虚拟数据的风险,该机制也不会由于断电造成的任意次数的中断而被锁死。
3.本发明扩展至如同以上点1中那样的扇区的动态分配与借助于关联表的扇区内的动态分配的组合。该组合导致全动态分配。
4.本发明扩展至如同以上点2中那样的机制与下述方法的组合:该方法用于在一个扇区内按照基于位于同一扇区上的标志和特殊的执行序列的安全的方式来写入数据。该组合产生相对于断电安全的存储器仿真,并且在已写入和重新写入的数据的和大于可用存储器的和的情况下准许写访问。也就是说,通过利用擦除,扇区可以被反复地重新写入,导致相比扇区的尺寸,更多的数据被写入和重新写入。
5.本发明扩展至用于通过根据闪存中的关联表针对预定义的虚拟地址范围构建查找表来进行数据查找的机制。针对该范围,闪存中的关联表只需要被评估一次,导致在范围内连续读访问虚拟存储器的等待时间减少。
6.本发明扩展至用于通过利用位于除了正被擦除的扇区之外的其他扇区上的表来在擦除过程期间相对于断电安全的机制。通过相同的机制,可以安全地擦除所有已使用的扇区。擦除过程可以被中断无限次数,而不阻止能够继续该机制。机制容许每个表条目有限的位数被损坏。也就是说,不需要附加的非易失性存储器,也没有由于断电而丢失或者损坏虚拟数据的风险,该机制也不会被由于断电造成的任意次数的中断锁死,该机制的功能性也不会受到很少的损坏位负面影响。
7.本发明扩展至上述点6的机制与用于在一个扇区内按照基于位于同一扇区上的标志和特殊的执行序列的安全的方式来写入数据的方法的组合、以及与错误检测/纠正代码的组合。该组合产生相对于断电安全的存储器仿真,并且在已写入和重新写入的数据的和大于可用存储器的和的情况下准许写访问,并且保护包括管理性数据和冗余数据的所有数据不受每个数据字的有限损坏位数的影响。
8.本发明扩展至数据操作镜像与减少对每个表条目进行评估所需的CPU指令数目的闪存硬件接口的集成。
具体的扇区的“年龄”等于自从该具体的扇区被擦除起其他扇区被擦除的次数。缩略词“EEPROM”指的是电可擦可编程ROM。缩略词“ECC”指的是错误纠正码,或错误校正码。缩略词“ROM”指的是只读存储器。术语“闪存”(存储器)指的是一种特殊类型的EEPROM,其将擦除限制到相对大的扇区。“扇区”指的是可以被单独擦除的闪速存储器页的最小逻辑组。短语“已擦除状态”指的是存储器被擦除之后存储器的状态或者值。短语“已写入状态”指的是已擦除状态的反转状态。“看门狗”可以被认为是必须被周期性地触发以防止重置的硬件。本公开内容的文中的“断电”可以是与电源(例如电压源)断连。“闪存写入”指的是通过将位中的一些位从已擦除状态变成已写入状态并且使其余位保持已擦除状态来将闪速存储器页的状态变成给定值。“闪存擦除”指的是通过将所有位变成已擦除状态来将存储器扇区的状态变成已擦除值。“虚拟存储器”指的是逻辑非易失性存储器;虚拟存储器的仿真是本公开内容中的焦点。“虚拟地址”可以被认为是对虚拟存储器中的页的引用。术语“有效”是将数据或页归属为是虚拟存储器的一部分的谓词(predicate)。术语“无效”是将数据或页归属为是排除在虚拟存储器之外的谓词,即,无效页从来不存在或者从虚拟存储器去除。“合法”是将数据归属为与虚拟存储器关联的谓词,即,由于某些原因(上文所讨论的)不能去除的有效数据或者无效数据。“过擦除”指的是以再也不能写入的方式擦除存储器单元。当擦除进行了太长的时间或者以太高的电压进行擦除时,可能发生过擦除。
在上述方面中的任何方面中,可以用硬件来实现各种特征,或者各种特征可以被实现为在一个或更多个处理器上运行的软件模块。一个方面的特征可以适用于其他方面中的任何方面。
本发明还提供了用于执行本文中描述的方法中的任何方法的计算机程序或计算机程序产品,以及其上存储有用于执行本文中描述的方法中的任何方法的程序的计算机可读介质。实施本发明的计算机程序可以存储在计算机可读介质上,或可以是信号形式(例如从因特网网站提供的可下载数据信号),或者其可以是任何其他形式。
本公开内容被认为扩展至以下陈述:
A1.一种电子设备,包括:
非易失性存储器,其被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,每个所述扇区包括多个所述部分,并且所述存储器具有至少三个所述扇区,所述扇区中的每个扇区适于与其他扇区无关地被擦除;以及
控制装置,其能够操作以控制所述扇区的擦除,
其中:
所述控制装置被配置成将关于擦除过程的擦除信息存储在除了所述扇区中的目标扇区之外的多个扇区中,以使得能够检查(可检查)所述扇区中的这样的信息以在中断事件(在擦除过程期间发生)之后建立适当的恢复过程,所述擦除过程包括擦除所述目标扇区。
A2.根据陈述A1所述的电子设备,其中,所述存储器为闪速存储器。
A3.根据陈述A1或A2所述的电子设备,其中,所述多个扇区构成扇区中的大多数扇区。
A4.根据上述陈述中任一项所述的电子设备,其中,所述多个扇区构成除了所述目标扇区之外的扇区中的所有扇区。
A5.根据上述陈述中任一项所述的电子设备,其中,所述存储器具有至少四个所述扇区。
A6.根据上述陈述中任一项所述的电子设备,其中,对于所述擦除过程,所述控制装置能够操作以将所述擦除信息存储在所述扇区中的所有扇区中。
A7.根据上述陈述中任一项所述的电子设备,其中,对于所述擦除过程,所述控制装置能够操作以按照给定的顺序将所述擦除信息存储到有关的扇区。
A8.根据陈述A7所述的电子设备,其中,所述控制装置被配置成针对每个擦除过程,按照相同的顺序将所述擦除信息存储到有关的扇区。
A9.根据上述陈述中任一项所述的电子设备,其中,对于所述擦除过程,所述控制装置能够操作以将相同的擦除信息存储在有关的扇区中。
A10.根据上述陈述中任一项所述的电子设备,其中,所述擦除信息识别所述目标扇区。
A11.根据上述陈述中任一项所述的电子设备,其中,所述擦除信息指示擦除过程的状态。
A12.根据上述陈述中任一项所述的电子设备,其中,所述控制装置能够操作以在进行所述擦除之前存储这样的擦除信息,该擦除信息指示有待进行所述擦除。
A13.根据上述陈述中任一项所述的电子设备,其中,所述控制装置能够操作以在进行所述擦除之后存储这样的擦除信息,所述擦除信息指示已经进行了所述擦除。
A14.根据陈述A12所述的电子设备,其中,在所述擦除之后,所述控制装置能够操作以更新在进行所述擦除之前存储在除了所述目标扇区之外的扇区中的擦除信息,以指示已经进行了所述擦除。
A15.根据上述陈述中任一项所述的电子设备,其中,所述控制装置被配置成在进行所述擦除之前存储这样的擦除信息时,通过将信息的n位目标模式存储在有关的扇区中的每个扇区的特定区域中来识别所述目标扇区,这些区域与所述目标扇区相关联。
A16.根据上述陈述中任一项所述的电子设备,其中,所述控制装置被配置成在进行所述擦除之前存储这样的擦除信息时,通过将信息的n位非目标模式存储在有关的扇区中的每个扇区的特定区域中来将具体扇区识别为是除了所述目标扇区之外的扇区,这些区域与所述具体扇区相关联。
A17.根据上述陈述中任一项所述的电子设备,其中,所述控制装置被配置成在进行所述擦除之前存储这样的擦除信息时,通过将信息的n位未完成模式存储在有关的扇区中的每个扇区的特定区域中来指示所述目标扇区尚未被擦除,这些区域用于指示是否已经进行了所述擦除。
A18.根据上述陈述中任一项所述的电子设备,其中,所述控制装置被配置成在进行所述擦除之后存储这样的擦除信息时,通过将信息的n位已完成模式存储在有关的扇区中的每个扇区的特定区域中来指示所述目标扇区已经被擦除,这些区域用于指示是否已经进行了所述擦除。
A19.根据陈述A15至A18中任一项所述的电子设备,其中,n等于1。
A20.根据陈述A15至A18中任一项所述的电子设备,其中,n大于1,并且可选地n大于或等于2m+1,其中m为正整数(自然数),并且其中,所述控制装置被配置成:如果有关的位中的大多数位与所述目标模式匹配,则将从所述存储器读取的所述n位模式视为是目标模式;或者如果这些位中的大多数位与所述非目标模式匹配,则将从所述存储器读取的所述n位模式视为是非目标模式;或者如果这些位中的大多数位与所述未完成模式匹配,则将从所述存储器读取的所述n位模式视为是未完成模式;或者如果这些位中的大多数位与所述已完成模式匹配,则将从所述存储器读取的所述n位模式视为是已完成模式。
A21.根据陈述A20所述的电子设备,其中,针对每种所述模式,n具有相同值。
A22.根据上述陈述中任一项所述的电子设备,其中,所述存储包括写入到存储器。
A23.根据上述陈述中任一项所述的电子设备,其中,所述控制装置能够操作以在所述擦除过程期间使所述目标扇区被完全擦除。
A24.根据上述陈述中任一项所述的电子设备,其中,所述擦除包括在将目标扇区的位中的所有位(所述位中的所有位)擦除到已擦除状态之前,将其写入为已写入状态。
A25.根据上述陈述中任一项所述的电子设备,其中,所述擦除过程包括:将扇区作为用于擦除的目标;对识别所述目标扇区的这样的擦除信息进行存储;擦除所述目标扇区;以及(然后)将指示已经进行了所述擦除的这样的擦除信息存储在除了所述目标扇区之外的扇区中。
A26.根据上述陈述中任一项所述的电子设备,其中,在所述擦除过程之前,所述控制装置能够操作以将任何所需的信息从所述目标扇区复制到另一所述扇区。
A27.根据上述陈述中任一项所述的电子设备,其中,所述控制装置能够操作以在所述中断事件之后访问存储在所述扇区中的擦除信息,以及根据该访问的信息在所述中断事件之后建立适当的恢复过程。
A28.根据陈述A27所述的电子设备,其中,所述控制装置被配置成:如果所访问的信息指示所述扇区中的两个或更多个扇区是所述目标扇区,则在所述中断事件之后中止所述擦除过程。
A29.根据陈述A27或A28所述的电子设备,其中,根据所述访问,所述控制装置能够操作以:在没有扇区存储将具体扇区识别为用于擦除的目标扇区的擦除信息时,确定不需要恢复过程(组A,E)。
A30.根据陈述A27至A29中任一项所述的电子设备,其中,根据所述访问,所述控制装置能够操作以:在所述扇区中的至少一个扇区的所访问的擦除信息将具体扇区识别为用于擦除的目标扇区并且所述扇区中的至少两个扇区没有存储将具体扇区识别为用于擦除的目标扇区的擦除信息时,确定擦除过程的部分或全部要作为恢复过程被重复(组B,D)。
A31.根据陈述A30所述的电子设备,其中,所述控制装置能够操作以:在对所述目标扇区的访问显示所述目标扇区没有处于完全擦除状态时,确定所述擦除过程的至少所述擦除要作为恢复过程被重复(组B)。
A32.根据陈述A30或A31所述的电子设备,其中,所述控制装置能够操作以:在对所述目标扇区的访问显示所述目标扇区处于完全擦除状态时,确定存储在所述扇区中的擦除信息要作为恢复过程被更新,以指示已经进行了所述擦除(组D)。
A33.根据陈述A27至A32中任一项所述的电子设备,其中,根据所述访问,所述控制装置能够操作以:在除了所述目标扇区之外的至少所述多个扇区的所访问的擦除信息将具体扇区识别为用于擦除的目标扇区时,确定擦除过程的至少所述擦除要作为恢复过程被重复(组C)。
A34.根据上述陈述中任一项所述的电子设备,其中,当作为写入过程的一部分将期望的数据写入扇区中的一个扇区时,所述控制装置能够操作以:对该扇区进行标记以指示写入过程开始,将期望的数据写入该扇区,并且然后对该扇区进行标记以指示写入过程已经完成。
A35.根据上述陈述中任一项所述的电子设备,是微控制器。
A36.一种汽车,所述汽车包括根据上述陈述中任一项所述的电子设备,所述设备被配置成控制所述汽车的系统。
A37.一种控制电子设备的方法,所述设备包括非易失性存储器,其被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,每个所述扇区包括多个所述部分,并且所述存储器具有至少三个所述扇区,所述扇区中的每个扇区适于与其他扇区无关地被擦除,所述方法包括:
将关于擦除过程的擦除信息存储在除了所述扇区中的目标扇区之外的多个扇区中,以使得(能够)检查所述扇区中的这样的信息以在中断事件之后建立适当的恢复过程,所述擦除过程包括擦除所述目标扇区。
A38.一种程序,所述程序在电子设备的处理器上执行时根据控制方法来控制所述设备,所述设备包括非易失性存储器,所述非易失性存储器被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,每个所述扇区包括多个所述部分,并且所述存储器具有至少三个所述扇区,所述扇区中的每个扇区适于与其他扇区无关地被擦除,所述方法包括:
将关于擦除过程的擦除信息存储在除了所述扇区中的目标扇区之外的多个扇区中,以使得能够检查所述扇区中的这样的信息以在中断事件之后建立适当的恢复过程,所述擦除过程包括擦除所述目标扇区。
B1.一种电子设备,包括:
存储器,其被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,该扇区或每个所述扇区包括多个所述部分,每个所述扇区具有由一个或更多个所述部分组成的多个页槽,并且每个页槽用于存储数据页;以及
控制装置,其能够操作以监视该扇区或每个所述扇区、以及动态即时地根据这样的监视将用于存储的下一个数据页存储到下一个可用页槽。
B2.根据陈述B1所述的电子设备,其中,所述存储器为非易失性存储器。
B3.根据陈述B2所述的电子设备,其中,所述存储器为闪速存储器。
B4.根据陈述B1至B3中任一项所述的电子设备,其中,所述存储器被设置成具有多个所述扇区。
B5.根据陈述B1至B4中任一项所述的电子设备,其中,所述控制装置能够操作以对存储在页槽中的数据页的状态进行监视。
B6.根据陈述B5所述的电子设备,其中,所述状态包括存储在页槽中的数据页是有效的还是无效的。
B7.根据陈述B5或B6所述的电子设备,其中,所述存储器包括多个所述扇区,并且其中,所述控制装置能够操作以监视扇区的年龄,具体所述扇区的年龄等于自从该具体所述扇区被最后一次擦除起其他扇区或其他所述扇区被擦除的次数。
B8.根据陈述B7所述的电子设备,其中,所述控制装置能够操作以将识别表存储在所述扇区中的每个扇区中,每个所述识别表包括每个擦除另一个所述扇区的擦除过程的擦除信息条目,并且其中,所述控制装置能够操作以基于在其各自的识别表中的条目数来确定扇区的年龄。
B9.根据陈述B7或B8所述的电子设备,其中,所述控制装置能够操作以动态即时地将数据页写入到扇区,以及在满足一个或更多个给定条件时将扇区作为用于擦除过程的目标。
B10.根据被理解为附加于陈述B8的陈述B9所述的电子设备,其中,用于将具体扇区作为目标的一个所述给定条件为具体扇区的识别表空闲条目不足。
B11.根据陈述B10所述的电子设备,其中,当空闲条目的数目少于或者等于比具体扇区老的其他所述扇区的数目时,具体扇区的识别表空闲条目不足。
B12.根据陈述B9至B11中任一项所述的电子设备,其中,用于将具体扇区作为目标的一个所述给定条件为存储器空闲页槽不足,并且具体扇区在其中存储有少于给定数目的的所需的数据页。
B13.根据陈述B9至B12中任一项所述的电子设备,其中,用于将具体扇区作为目标的一个所述给定条件为存储器空闲页槽不足,并且具体扇区在其中存储有最少数目的的所需的数据页。
B14.根据陈述B9至B13中任一项所述的电子设备,其中,如果多于一个所述扇区满足所述给定条件,则所述控制装置能够操作以将这些扇区中的最老的扇区作为用于擦除过程的目标。
B15.根据陈述B9至B14中任一项所述的电子设备,其中,在每个所述擦除过程之前,所述控制装置能够操作以将任何所需的数据页从有关的目标扇区复制到另一所述扇区。
B16.根据陈述B1至被理解为附加于陈述B7的陈述B15中任一项所述的电子设备,其中,所述控制装置能够操作以将新的数据页存储到具有足够的空闲容量的最老的所述扇区。
B17.根据陈述B1至B16中任一项所述的电子设备,其中,针对该扇区或每个所述扇区,所述控制装置能够操作以使得用于在有关的扇区中存储的连续的数据页以给定的顺序存储在其页槽中。
B18.根据陈述B1至B17中任一项所述的电子设备,其中,所述控制装置能够操作以将数据结构(例如,查找表)存储在所述存储器外部,所述数据结构详述存储在该扇区或每个扇区中的数据页,以及在确定要将用于存储的下一个数据页存储到哪个页槽时利用所述数据结构。
B19.根据陈述B1至B18中任一项所述的电子设备,其中,所述控制装置能够操作以将关联表存储在该扇区或每个所述扇区中,该关联表或每个所述关联表详述存储在其扇区中的页。
B20.根据陈述B19所述的电子设备,其中,所述控制装置能够操作以:在确定要将用于存储的下一个数据页存储到哪个页槽时,利用该一个或多个关联表。
B21.根据陈述B19或B20所述的电子设备,其中,该关联表或每个所述关联表详述哪个数据页被存储在其扇区的哪个页槽中。
B22.根据陈述B19至B21中任一项所述的电子设备,其中,所述控制装置能够操作以在存储新的数据页时,更新有关的关联表。
B23.根据陈述B19至B22中任一项所述的电子设备,其中,该关联表或每个关联表包括每个占用的页槽的条目,该条目或每个条目对应于具体的页槽,并且识别存储在该页槽中的数据页。
B24.根据陈述B23所述的电子设备,其中,所述控制装置能够操作以将用于每个新存储的数据页的新条目添加到有关的关联表,以形成条目列表或者扩展现有的条目列表。
B25.根据陈述B19至B24中任一项所述的电子设备,包括硬件单元,所述硬件单元能够操作以对该关联表或每个所述关联表进行评估、以及针对一个或更多个所述页槽指示下述中的至少一个:
(a)所述页槽是否为空闲;
(b)所述页槽是否已经完全写入有对应的数据页;
(c)所述页槽是否包含无效的数据页并且应该被忽略;
(d)存储在所述页槽中的所述数据页的识别码;
(e)存储在所述页槽中的所述数据页的所述识别码是否在页识别码的给定范围内;以及
(f)所述页槽是否包含有效的数据页。
B26.根据陈述B1至B25中任一项所述的电子设备,其中,所述控制装置能够操作以在确定要将用于存储的下一个数据页存储到哪个页槽时,考虑该扇区或每个扇区中存储的所需的页的数目。
B27.根据陈述B1至B26中任一项所述的电子设备,为微控制器。
B28.一种汽车,所述汽车包括根据陈述B1至B27中任一项所述的电子设备,所述设备被配置成控制所述汽车的系统。
B29.一种控制电子设备的方法,所述电子设备包括存储器,所述存储器被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,该扇区或每个所述扇区包括多个所述部分,每个所述扇区具有由一个或更多个所述部分组成的多个页槽,并且每个页槽用于存储数据页,所述方法包括:
监视该扇区或每个所述扇区;
动态即时地根据这样的监视,将用于存储的下一个数据页存储到下一个可用页槽。
B30.一种程序,所述程序在电子设备的处理器上执行时根据控制方法来控制所述设备,所述电子设备包括存储器,所述存储器被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,该扇区或每个所述扇区包括多个所述部分,每个所述扇区具有由一个或更多个所述部分组成的多个页槽,并且每个页槽用于存储数据页,所述方法包括:
监视该扇区或每个所述扇区;以及
动态即时地根据这样的监视,将用于存储的下一个数据页存储到下一个可用页槽。
C1.一种电子设备,包括:
第一存储器;
作为非易失性存储器的第二存储器,所述非易失性存储器被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,该扇区或每个所述扇区包括多个所述部分并且用于存储多个数据页,每个数据页被对应的页识别码所识别;以及
控制装置,其能够操作以将包括(详述)存储在该扇区或每个扇区中的数据页的信息的数据结构(例如,查找表)存储在所述第一存储器中,所述数据结构基于所述数据页的特性而被组织。
C2.根据陈述C1所述的电子设备,其中,所述数据页各自通过对应的页识别码来识别,并且其中,所述数据结构通过页识别码来组织。
C3.根据陈述C1或C2所述的电子设备,其中,所述第一存储器为随机存取存储器。
C4.根据陈述C1至C3中任一项所述的电子设备,其中,所述第一存储器为易失性存储器。
C5.根据陈述C1至C4中任一项所述的电子设备,其中,所述第二存储器为闪速存储器。
C6.根据陈述C1至C5中任一项所述的电子设备,其中,所述第二存储器被设置成具有多个所述扇区。
C7.根据陈述C1至C6中任一项所述的电子设备,其中,所述数据结构包括存储在该扇区或每个扇区中的所述数据页的位置的信息。
C8.根据陈述C1至C7中任一项所述的电子设备,其中,所述数据结构包括存储在该扇区或每个扇区中的数据页的状态的信息。
C9.根据陈述C1至C8中任一项所述的电子设备,其中,所述数据结构中的对应于所述数据页的条目通过页识别码来排序(order)。
C10.根据陈述C1至C9中任一项所述的电子设备,其中,所述控制装置能够操作以按照给定的顺序将用于存储的连续的数据页存储在该一个或多个扇区的页槽中,使得页在所述扇区或多个扇区中被排列的顺序取决于(对应于,遵循,只取决于)这些页被存储的顺序。
C11.根据陈述C1至C10中任一项所述的电子设备,其中,所述控制装置能够操作以关于具有在预定义范围内的页识别码的页来存储所述数据结构,所述范围小于覆盖所有可能的数据页的范围。
C12.根据陈述C1至C11中任一项所述的电子设备,其中,所述控制装置能够操作以基于所述数据结构来控制对该扇区或每个扇区的访问。
C13.根据陈述C1至C12中任一项所述的电子设备,其中,所述控制装置能够操作以在初始化阶段期间生成所述数据结构,并且在初始化阶段之后,动态即时地更新所述数据结构的内容以反映该扇区或每个扇区的变化。
C14.根据陈述C13所述的电子设备,其中,所述控制装置能够操作以将关联表存储在该扇区或每个所述扇区中,该关联表或每个所述关联表详述存储在其扇区中的页,并且其中,所述控制装置能够操作以利用该关联表或每个关联表来在初始化阶段期间生成所述数据结构的内容。
C15.根据陈述C14所述的电子设备,其中,所述控制装置能够操作以动态即时地更新该关联表或每个关联表的内容以反映该扇区或或每个对应的扇区的变化。
C16.根据陈述C14或C15所述的电子设备,其中,在中断事件之后,所述控制装置能够操作以在进一步的初始化阶段中利用该关联表或每个关联表来存储新的数据结构。
C17.根据陈述C14至C16中任一项所述的电子设备,包括硬件单元,所述硬件单元能够操作以对该关联表或每个所述关联表进行评估、以及针对一个或更多个所述页槽指示下述中的至少一个:
(a)所述页槽是否为空闲;
(b)所述页槽是否已经完全写入有对应的数据页;
(c)所述页槽是否包含无效的数据页并且应该被忽略;
(d)存储在所述页槽中的所述数据页的识别码;
(e)存储在所述页槽中的所述数据页的所述识别码是否在页识别码的给定范围内;以及
(f)所述页槽是否包含有效的数据页。
C18.根据陈述C1至C17中任一项所述的电子设备,其中,该扇区或每个所述扇区具有多个页槽,每个页槽用于存储所述数据页。
C19.根据陈述C1至C18中任一项所述的电子设备,其中,所述数据结构为查找表。
C20.根据陈述C1至被理解为附加于陈述C2的陈述C19中任一项所述的电子设备,其中,所述页识别码为页识别号。
C21.根据陈述C1至C20中任一项所述的电子设备,为微控制器。
C22.一种汽车,所述汽车包括根据陈述C1至C21中任一项所述的电子设备,所述设备被配置成控制所述汽车的系统。
C23.一种控制电子设备的方法,所述电子设备包括第一存储器,并且包括作为非易失性存储器的第二存储器,所述非易失性存储器被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,该扇区或每个所述扇区包括多个所述部分并且用于存储多个数据页,所述方法包括:
将包括存储在该扇区或每个扇区中的数据页的信息的数据结构存储在所述第一存储器中,所述数据结构基于所述数据页的特性而被组织。
C24.一种程序,所述程序在电子设备的处理器上执行时根据控制方法来控制所述设备,所述电子设备包括第一存储器,并且包括作为非易失性存储器的第二存储器,所述非易失性存储器被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,该扇区或每个所述扇区包括多个所述部分并且用于存储多个数据页,所述方法包括:
将包括存储在该扇区或每个扇区中的数据页的信息的数据结构存储在所述第一存储器中,所述数据结构基于所述数据页的特性而被组织。
还认为本公开内容扩展至下述陈述,该陈述将来自以上组(A、B、C)中任一组的陈述与来自其他组(A、B、C)中的一个或更多个组的陈述相结合,例如如在以下陈述D1中那样。
D1.一种电子设备,包括:
非易失性存储器,其被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,每个所述扇区包括多个所述部分,所述存储器具有至少三个所述扇区,所述扇区中的每个扇区适于与其他扇区无关地被擦除,并且每个所述扇区可选地具有由一个或更多个所述部分组成的多个页槽,每个页槽用于存储数据页;
可选的另一存储器;以及
控制装置,其能够操作以控制所述扇区的擦除,
其中:
将关于擦除过程的擦除信息存储在除了所述扇区中的目标扇区之外的多个扇区中,以使得能够检查所述扇区中的这样的信息以在中断事件之后建立适当的恢复过程,所述擦除过程包括擦除所述目标扇区;
所述控制装置可选地能够操作以监视该扇区或每个所述扇区,以及动态即时地根据这样的监视将用于存储的下一个数据页存储到下一个可用页槽;以及
所述控制装置可选地能够操作以将详述存储在该扇区或每个扇区中的数据页的数据结构(例如,查找表)存储在所述另一存储器中,所述数据结构基于所述数据页的特性来组织。
因此,将相应地理解以上组A、B和C中的陈述。
Claims (32)
1.一种电子设备,包括:
非易失性存储器,其被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,每个所述扇区包括多个所述部分,并且所述存储器具有至少三个所述扇区,所述扇区中的每个扇区适于与其他扇区无关地被擦除;以及
控制装置,其能够操作以控制所述扇区的擦除,
其中:
所述控制装置被配置成作为擦除过程的一部分,将关于所述擦除过程的擦除信息存储在除了所述扇区中的目标扇区之外的多个扇区中,以使得能够检查所述扇区中的这样的信息以在中断事件之后建立适当的恢复过程,所述擦除过程包括擦除所述目标扇区;并且
所述擦除信息识别所述目标扇区和/或指示所述擦除过程的状态。
2.根据权利要求1所述的电子设备,其中,所述多个扇区构成除了所述目标扇区之外的扇区中的所有扇区。
3.根据权利要求1或2所述的电子设备,其中,所述存储器具有至少四个所述扇区。
4.根据权利要求1或2所述的电子设备,其中,对于所述擦除过程,所述控制装置能够操作以将所述擦除信息存储在所述扇区中的所有扇区中。
5.根据权利要求1或2所述的电子设备,其中,对于所述擦除过程,所述控制装置能够操作以按照给定的顺序将所述擦除信息存储到有关的扇区。
6.根据权利要求5所述的电子设备,其中,所述控制装置被配置成针对每个擦除过程,按照相同的顺序将所述擦除信息存储到有关的扇区。
7.根据权利要求1或2所述的电子设备,其中,所述控制装置能够操作以在进行所述擦除之前存储这样的擦除信息,该擦除信息指示有待进行所述擦除。
8.根据权利要求1或2所述的电子设备,其中,所述控制装置能够操作以在进行所述擦除之后存储这样的擦除信息,所述擦除信息指示已经进行了所述擦除。
9.根据权利要求7所述的电子设备,其中,在所述擦除之后,所述控制装置能够操作以更新在进行所述擦除之前存储在除了所述目标扇区之外的扇区中的擦除信息,以指示已经进行了所述擦除。
10.根据权利要求7所述的电子设备,其中,所述控制装置被配置成在进行所述擦除之前存储这样的擦除信息时,通过将信息的n位目标模式存储在有关的扇区中的每个扇区的特定区域中来识别所述目标扇区,这些区域与所述目标扇区相关联。
11.根据权利要求7所述的电子设备,其中,所述控制装置被配置成在进行所述擦除之前存储这样的擦除信息时,通过将信息的n位非目标模式存储在有关的扇区中的每个扇区的特定区域中来将具体扇区识别为是除了所述目标扇区之外的扇区,这些区域与所述具体扇区相关联。
12.根据权利要求7所述的电子设备,其中,所述控制装置被配置成在进行所述擦除之前存储这样的擦除信息时,通过将信息的n位未完成模式存储在有关的扇区中的每个扇区的特定区域中来指示所述目标扇区尚未被擦除,这些区域用于指示是否已经进行了所述擦除。
13.根据权利要求8所述的电子设备,其中,所述控制装置被配置成在进行所述擦除之后存储这样的擦除信息时,通过将信息的n位已完成模式存储在有关的扇区中的每个扇区的特定区域中来指示所述目标扇区已经被擦除,这些区域用于指示是否已经进行了所述擦除。
14.根据权利要求10所述的电子设备,其中,n大于1,并且其中,所述控制装置被配置成:如果有关的位中的大多数位与所述目标模式匹配,则将从所述存储器读取的所述n位模式视为是目标模式。
15.根据权利要求14所述的电子设备,其中,n大于或等于2m+1,其中m为正整数。
16.根据权利要求11所述的电子设备,其中,n大于1,并且其中,所述控制装置被配置成:如果这些位中的大多数位与所述非目标模式匹配,则将从所述存储器读取的所述n位模式视为是非目标模式。
17.根据权利要求16所述的电子设备,其中,n大于或等于2m+1,其中m为正整数。
18.根据权利要求12所述的电子设备,其中,n大于1,并且其中,所述控制装置被配置成:如果这些位中的大多数位与所述未完成模式匹配,则将从所述存储器读取的所述n位模式视为是未完成模式。
19.根据权利要求18所述的电子设备,其中,n大于或等于2m+1,其中m为正整数。
20.根据权利要求13所述的电子设备,其中,n大于1,并且其中,所述控制装置被配置成:如果这些位中的大多数位与所述已完成模式匹配,则将从所述存储器读取的所述n位模式视为是已完成模式。
21.根据权利要求20所述的电子设备,其中,n大于或等于2m+1,其中m为正整数。
22.根据权利要求1或2所述的电子设备,其中,所述擦除过程包括:将扇区作为用于擦除的目标;对识别所述目标扇区的这样的擦除信息进行存储;擦除所述目标扇区;以及将指示已经进行了所述擦除的这样的擦除信息存储在除了所述目标扇区之外的扇区中。
23.根据权利要求1或2所述的电子设备,其中,在所述擦除过程之前,所述控制装置能够操作以将任何所需的信息从所述目标扇区复制到另一所述扇区。
24.根据权利要求1或2所述的电子设备,其中,所述控制装置能够操作以在所述中断事件之后访问存储在所述扇区中的擦除信息,以及根据该访问的信息在所述中断事件之后建立适当的恢复过程。
25.根据权利要求24所述的电子设备,其中,所述控制装置被配置成:如果所访问的信息指示所述扇区中的两个或更多个扇区是所述目标扇区,则在所述中断事件之后中止所述擦除过程。
26.根据权利要求24所述的电子设备,其中,根据所述访问,所述控制装置能够操作以:在没有扇区存储将具体扇区识别为用于擦除的目标扇区的擦除信息时,确定不需要恢复过程。
27.根据权利要求24所述的电子设备,其中,根据所述访问,所述控制装置能够操作以:在所述扇区中的至少一个扇区的所访问的擦除信息将具体扇区识别为用于擦除的目标扇区并且所述扇区中的至少两个扇区没有存储将具体扇区识别为用于擦除的目标扇区的擦除信息时,确定擦除过程的部分或全部要作为恢复过程被重复。
28.根据权利要求27所述的电子设备,其中,所述控制装置能够操作以:在对所述目标扇区的访问显示所述目标扇区没有处于完全擦除状态时,确定所述擦除过程的至少所述擦除要作为恢复过程被重复。
29.根据权利要求27所述的电子设备,其中,所述控制装置能够操作以:在对所述目标扇区的访问显示所述目标扇区处于完全擦除状态时,确定存储在所述扇区中的擦除信息要作为恢复过程被更新,以指示已经进行了所述擦除。
30.根据权利要求24所述的电子设备,其中,根据所述访问,所述控制装置能够操作以当除了所述目标扇区之外的至少所述多个扇区的所访问的擦除信息将具体扇区识别为用于擦除的目标扇区时,确定擦除过程的至少所述擦除要作为恢复过程被重复。
31.一种控制电子设备的方法,所述设备包括非易失性存储器,其被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,每个所述扇区包括多个所述部分,并且所述存储器具有至少三个所述扇区,所述扇区中的每个扇区适于与其他扇区无关地被擦除,所述方法包括:
作为擦除过程的一部分,将关于所述擦除过程的擦除信息存储在除了所述扇区中的目标扇区之外的多个扇区中,以使得能够检查所述扇区中的这样的信息以在中断事件之后建立适当的恢复过程,所述擦除过程包括擦除所述目标扇区,
其中,所述擦除信息识别所述目标扇区和/或指示所述擦除过程的状态。
32.一种用于控制电子设备的系统,所述系统根据控制方法来控制所述设备,所述设备包括非易失性存储器,所述非易失性存储器被配置成以存储器部分写入或者读取,所述存储器部分以一次一个扇区的方式被擦除,每个所述扇区包括多个所述部分,并且所述存储器具有至少三个所述扇区,所述扇区中的每个扇区适于与其他扇区无关地被擦除,所述系统包括:
用于作为所述擦除过程的一部分,将关于擦除过程的擦除信息存储在除了所述扇区中的目标扇区之外的多个扇区中的装置,使得能够检查所述扇区中的这样的信息以在中断事件之后建立适当的恢复过程,所述擦除过程包括擦除所述目标扇区,
其中,所述擦除信息识别所述目标扇区和/或指示所述擦除过程的状态。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP10171110.9A EP2413329B1 (en) | 2010-07-28 | 2010-07-28 | Electronic apparatuses |
EP10171110.9 | 2010-07-28 | ||
PCT/EP2011/062838 WO2012013683A1 (en) | 2010-07-28 | 2011-07-26 | Electronic apparatuses |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103229245A CN103229245A (zh) | 2013-07-31 |
CN103229245B true CN103229245B (zh) | 2016-06-29 |
Family
ID=43334465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180046649.1A Expired - Fee Related CN103229245B (zh) | 2010-07-28 | 2011-07-26 | 电子设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9471483B2 (zh) |
EP (2) | EP2413329B1 (zh) |
CN (1) | CN103229245B (zh) |
WO (1) | WO2012013683A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9400721B2 (en) * | 2013-03-11 | 2016-07-26 | Seagate Technology Llc | Error correction code seeding |
US9262264B2 (en) | 2013-03-11 | 2016-02-16 | Seagate Technology Llc | Error correction code seeding |
TWI520153B (zh) * | 2013-11-05 | 2016-02-01 | 威盛電子股份有限公司 | 非揮發性記憶體裝置及其操作方法 |
JP6194764B2 (ja) * | 2013-11-08 | 2017-09-13 | 富士通株式会社 | 情報処理装置、制御方法、および制御プログラム |
KR102272228B1 (ko) * | 2014-05-13 | 2021-07-06 | 삼성전자주식회사 | 불휘발성 메모리 장치, 그것을 포함하는 저장 장치 및 그것의 동작 방법 |
JP2017042962A (ja) * | 2015-08-25 | 2017-03-02 | キヤノン株式会社 | 着脱される記録媒体のデータを消去する情報処理装置およびその制御方法 |
FR3051590A1 (fr) * | 2016-05-20 | 2017-11-24 | Proton World Int Nv | Compteur en memoire flash |
FR3051574A1 (fr) * | 2016-05-20 | 2017-11-24 | Proton World Int Nv | Gestion du stockage dans une memoire flash |
FR3055992A1 (fr) | 2016-09-09 | 2018-03-16 | Proton World International N.V. | Gestion d'index dans une memoire flash |
FR3072476A1 (fr) | 2017-10-13 | 2019-04-19 | Proton World International N.V. | Unite logique de memoire pour memoire flash |
KR20200108650A (ko) * | 2019-03-11 | 2020-09-21 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
CN112347002B (zh) * | 2020-11-13 | 2023-07-28 | 杭州芯炬视人工智能科技有限公司 | flash数据的保存方法、系统、计算机设备及存储介质 |
CN113409853B (zh) * | 2021-05-21 | 2023-08-25 | 芯天下技术股份有限公司 | 减少掉电后读错误几率的方法、装置、存储介质和终端 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004001605A1 (en) * | 2002-06-19 | 2003-12-31 | Tokyo Electron Device Limited | Memory device, memory managing method and program |
CN1902712A (zh) * | 2003-12-31 | 2007-01-24 | 桑迪士克股份有限公司 | 具有写入/擦除中止检测机制的快闪存储系统 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5491806A (en) * | 1990-06-26 | 1996-02-13 | Lsi Logic Corporation | Optimized translation lookaside buffer slice having stored mask bits |
GB2251323B (en) | 1990-12-31 | 1994-10-12 | Intel Corp | Disk emulation for a non-volatile semiconductor memory |
US5928370A (en) * | 1997-02-05 | 1999-07-27 | Lexar Media, Inc. | Method and apparatus for verifying erasure of memory blocks within a non-volatile memory structure |
US6950336B2 (en) | 2000-05-03 | 2005-09-27 | Emosyn America, Inc. | Method and apparatus for emulating an electrically erasable programmable read only memory (EEPROM) using non-volatile floating gate memory cells |
JP2002175211A (ja) * | 2000-12-07 | 2002-06-21 | Sharp Corp | データ管理システムおよびデータ管理方法 |
JP4772214B2 (ja) * | 2001-06-08 | 2011-09-14 | ルネサスエレクトロニクス株式会社 | 不揮発性記憶装置及びその書き換え制御方法 |
DE10321104B4 (de) | 2003-05-09 | 2016-04-07 | Robert Bosch Gmbh | Verfahren zur Ablage von veränderlichen Daten |
US7058755B2 (en) | 2003-09-09 | 2006-06-06 | Ballard Power Systems Corporation | EEPROM emulation in flash memory |
US6940759B2 (en) * | 2003-10-14 | 2005-09-06 | Atmel Corporation | Group erasing system for flash array with multiple sectors |
PL363945A1 (en) | 2003-12-08 | 2005-06-13 | Advanced Digital Broadcast Polska Spółka z o.o. | Software method for eeprom memory emulation |
US20070016721A1 (en) * | 2005-07-18 | 2007-01-18 | Wyse Technology Inc. | Flash file system power-up by using sequential sector allocation |
US20090198952A1 (en) | 2008-02-04 | 2009-08-06 | Apple Inc | Memory Mapping Architecture |
CN101251788A (zh) * | 2008-03-07 | 2008-08-27 | 威盛电子股份有限公司 | 储存单元管理方法及系统 |
US7917803B2 (en) * | 2008-06-17 | 2011-03-29 | Seagate Technology Llc | Data conflict resolution for solid-state memory devices |
TWI484334B (zh) * | 2009-12-24 | 2015-05-11 | Univ Nat Taiwan | 非揮發記憶體的區域式管理方法 |
US20110161560A1 (en) * | 2009-12-31 | 2011-06-30 | Hutchison Neil D | Erase command caching to improve erase performance on flash memory |
US8819375B1 (en) * | 2011-11-30 | 2014-08-26 | Western Digital Technologies, Inc. | Method for selective defragmentation in a data storage device |
-
2010
- 2010-07-28 EP EP10171110.9A patent/EP2413329B1/en not_active Not-in-force
-
2011
- 2011-07-26 WO PCT/EP2011/062838 patent/WO2012013683A1/en active Application Filing
- 2011-07-26 US US13/812,461 patent/US9471483B2/en not_active Expired - Fee Related
- 2011-07-26 CN CN201180046649.1A patent/CN103229245B/zh not_active Expired - Fee Related
- 2011-07-26 EP EP11748605.0A patent/EP2599086A1/en not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004001605A1 (en) * | 2002-06-19 | 2003-12-31 | Tokyo Electron Device Limited | Memory device, memory managing method and program |
CN1902712A (zh) * | 2003-12-31 | 2007-01-24 | 桑迪士克股份有限公司 | 具有写入/擦除中止检测机制的快闪存储系统 |
Also Published As
Publication number | Publication date |
---|---|
US20130219110A1 (en) | 2013-08-22 |
WO2012013683A1 (en) | 2012-02-02 |
EP2413329A1 (en) | 2012-02-01 |
EP2413329B1 (en) | 2014-03-26 |
CN103229245A (zh) | 2013-07-31 |
US9471483B2 (en) | 2016-10-18 |
EP2599086A1 (en) | 2013-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103229245B (zh) | 电子设备 | |
US9612954B2 (en) | Recovery for non-volatile memory after power loss | |
CN102150142B (zh) | 存储器系统和控制存储器系统的方法 | |
CN109343790B (zh) | 一种基于nand flash的数据存储方法、终端设备及存储介质 | |
US8281064B2 (en) | Systems, methods and computer program products for encoding data to be written to a nonvolatile memory based on wear-leveling information | |
CN102163133B (zh) | 针对具有可擦除/可重写存储器使用带有主机装置的一次或数次可编程存储器的方法及装置 | |
US20100185804A1 (en) | Information processing device that accesses memory, processor and memory management method | |
US20140115232A1 (en) | Metadata Journaling with Error Correction Redundancy | |
US20190205247A1 (en) | Data storage device and method for operating non-volatile memory | |
CN101689140A (zh) | 存储器系统 | |
US20090013122A1 (en) | Transaction Method for Managing the Storing of Persistent Data in a Transaction Stack | |
WO2009140000A1 (en) | Flash recovery employing transaction log | |
CA2391826A1 (en) | Arrangements storing different versions of a set of data in separate memory areas and method for updating a set of data in a memory | |
KR20020009564A (ko) | 메모리 시스템 | |
US20070245070A1 (en) | Memory controller and flash memory system | |
JP2006120082A (ja) | メモリカード、半導体装置、及びメモリカードの制御方法 | |
CN101558385A (zh) | 高速缓存辅助的存储器检错和纠错的方法和装置 | |
US11556414B2 (en) | Memory device | |
KR20050026330A (ko) | 비휘발성 메모리 제어 장치 | |
CN108108261A (zh) | 数据存储装置及其操作方法 | |
KR100757128B1 (ko) | 플래시 메모리를 이용한 메모리 카드 및 그 제어 방법 | |
US20170336996A1 (en) | Storage in flash memory | |
US7685356B2 (en) | Chronological identification in flash memory using cyclic numbers | |
EP2267725A1 (en) | Memory device for managing the recovery of a non volatile memory | |
US11755307B2 (en) | Storage circuit and operation method |
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 |
Granted publication date: 20160629 Termination date: 20190726 |
|
CF01 | Termination of patent right due to non-payment of annual fee |