用于追踪死扇区以自动搜索和誊写的鲁棒扇区id方案的制作方法

文档序号:6537663阅读:217来源:国知局
用于追踪死扇区以自动搜索和誊写的鲁棒扇区id方案的制作方法
【专利摘要】本发明公开了一种用于追踪死扇区以自动搜索和誊写的鲁棒扇区ID方案。一种耐限电的EEPROM的仿真器(18)使用存储在每个扇区的扇区识别记录(45)中的多个扇区状态位(451)和前向/反向跳过标志(452、453)管理在易失性存储器(20)和非易失性存储器(24)处的存储器操作,以定义多个顺序地排列的多个状态指示器来指定用于每个存储器扇区的多个扇区配置状态,以及在前向誊写和反向搜索操作期间自动地绕过非易失性存储器阵列中的一个或多个死扇区。
【专利说明】用于追踪死扇区以自动搜索和誊写的鲁棒扇区ID方案
【技术领域】
[0001]本发明通常涉及闪存存储器及其操作方法。一方面,本发明涉及使用闪存存储器来仿真电可擦可编程只读存储器(EEPROM)的系统及方法。
【背景技术】
[0002]电可擦可编程只读存储器(EEPROM)是与微控制器、微处理器、计算机和其它电子装置(例如,汽车嵌入式控制器)一起使用以存储数据的一种类型的非易失性存储器(NVM)。EEPROM的典型特征在于多次地擦除和写入存储器的单个字节的能力,同时当电源被断开的时候,被编程的位置在延长的时段保留其数据。然而,因为对EEPROM存储器的增加的成本和尺寸要求以及制作的困难,一些装置使用可擦除闪存存储器的扇区或块的一部分仿真EEPROM存储器来反映(miiror)存储在RAM中的信息,使得所存储的信息在装置未通电时被保持在闪存存储器中。然而,在克服闪存存储器周期以及会不利地影响存储在闪存阵列中的仿真的EEPROM数据完整性的可靠性方面还存在着挑战,例如在电源不稳定时(被称为“限电”)以及在装置处的异步复位会导致在闪存存储器处的镜像信息的损坏。此外,在大量编程和擦除周期防止解决编程或擦除错误之后,闪存存储器的潜在缺陷可能会导致用于扇区的闪存操作失败,在这种情况下,“死(DEAD)”扇区被宣告为无效并从操作流中被丢弃。虽然已提出EEPROM仿真的扇区识别方案以使用与扇区擦除操作交错的状态位使得能够确定开始、停止和系统内的扇区状态,但发现这些方案在更新步骤期间存在缺陷并且没有提供追踪闪存存储器中的死扇区的能力。
【专利附图】

【附图说明】
[0003]在结合附图考虑下面详细的描述时,本发明及其获得的多个目的、特征、以及优点可以被理解,其中:
[0004]图1是使用用于追踪死扇区的扇区状态识别方案实现仿真EEPROM的微控制器架构的示意框图;
[0005]图2是根据本公开所选择的实施例示出了可用于提供扇区状态信息以及标记一个或多个即将到来的死扇区的扇区状态分类和相关联的扇区头码的表。
[0006]图3是根据本公开所选择的实施例示出了使用扇区识别头码以在自动的搜索和誊写序列中跳过死扇区的EEPROM仿真方案中的多个闪存阵列扇区的框图;
[0007]图4是根据本公开所选择的实施例示出了用于编程扇区识别头码以在自动的搜索和誊写序列中跳过死扇区的示例序列的EEPROM仿真方案中的多个闪存阵列扇区的框图;
[0008]图5是根据本公开所选择的实施例可用于生成用于EEPROM仿真单元中的闪存阵列的受控的地址序列的地址生成单元的示意框图;
[0009]图6是根据本发明所选择的实施例示出了用于使用闪存存储器来执行EEPROM仿真的各种方法的简化示意流程图。【具体实施方式】
[0010]描述了用于执行EEPROM仿真的方法、系统及装置,通过在扇区识别头处存储用于每个编程操作的多个状态位连同一对偏移标志或标记以允许围绕死扇区的前向或反向通道,使用鲁棒扇区识别方案来追踪死扇区或块的记录以将信息存储在非易失性存储器中。通过交错扇区编程操作与在扇区识别头中定义了多个按顺序排列以指定用于扇区的多个扇区配置状态的多个状态指示器的编程,在编程操作期间的限电或其它损坏事件可以由不能存储状态位中的一个来指示。并且通过将每个状态指示器存储为逻辑地组合(例如,经由OR操作)的多个位,扇区状态检测方案不受编程干扰或单个位擦除缺陷的影响。也可以通过定义与多个状态位对齐的独特的扇区状态更新步骤以顺序地追踪仿真EEPROM系统中的扇区的生命周期来提升耐限电性。在所选择的实施例中,每个扇区的生命进程由两个不同的编程操作来标记,以使它们耐限电并且通过用两个偏移标志来编程每个扇区识别头在自动的搜索和誊写例程期间追踪死扇区以允许前向或反向通过扇区,以及发出即将遇到死扇区的警告。
[0011]在本公开中,描述了解决了现有技术中的各种问题的仿真EEPROM存储器装置的改进的系统、装置及其制造方法,其中,在参照这里提供的附图和详细说明书回顾本申请的剩余部分之后,传统的解决方案和技术的各种限制和缺点对本领域技术人员将会变得明显。现在将参照附图详细描述本发明的各种说明性的实施例。虽然在下面的描述中阐述了各种细节,但将理解,本发明可以在没有这些具体细节的情况下实施,并且可以对这里描述的本发明做出很多实现方式特定的决定以实现装置设计师的特定目标,例如与工艺技术的兼容性或设计相关的约束,这些从一个实现到另一个实现将是不同的。虽然这样的开发努力可能是复杂并费时的,然而它对受益于本公开的本领域中普通技术人员来说将是例行任务。例如,以框图形式而不是详细的示出了选定的方面,以避免限制或模糊本发明。这里提供的详细描述的一些部分根据算法和对计算机存储器中存储的数据进行操作的指令来呈现。这样的描述和表示被本领域技术人员用来描述并将他们工作的实质传达到本领域其他技术人员。通常,算法指导致期望结果的步骤的自相一致的序列,其中“步骤”指物理量的操纵,所述物理量可以但不必需采用能够被存储、传输、组合、比较以及以其它方式操纵的电或磁信号的形式。常见的用法将这些信号称为位、值、元素、符号、字符、术语、数字等。这些和类似的术语可以与适当的物理量相关联,并且仅仅是应用于这些量的方便的标签。除非从下面的讨论中明显另有特别声明,否则应理解,在整个说明书,使用诸如“处理”或“计算” “或运算”或“确定”或“显示”等术语的讨论,指计算机系统或类似的电子计算装置、状态机、电子电路、逻辑、固件、专用集成电路(ASIC)、或计算电路或模块,该计算电路或模块操纵并将在计算机系统的寄存器和存储器内表示为物理(电子)量的数据转换成在计算机系统的寄存器和存储器或者其它这样的信息存储器、传输和显示装置内类似地表示为物理量的其它数据。
[0012]图1是数据处理装置架构100的示意框图,所述数据处理装置架构100包括仿真EEPROM装置18,其用于在掩饰使用非易失性EEPROM存储器或闪存作为唯一的存储器存储装置的限制和缺点时提供EEPROM存储器的非易失性存储功能。如图所示,仿真EEPROM装置18包括易失性随机存取存储器(RAM)20、存储器控制器22、以及被存储器控制器22中的EEPROM仿真单元23连接和控制的闪存阵列存储器24。如将理解的,EEPROM仿真单元23在所选择的实施例中可以整体或部分地被实现为软件驱动,并且在其它实施例中可以整体或部分地被实现为硬件。在操作中,根据本公开所选择的实施例,EEPROM仿真单元23实现了用于追踪死扇区的扇区状态识别方案。被实现为软件、硬件、固件、或上述任何组合,EEPROM仿真单元结合仿真EEPROM的功能和闪存阵列24在RAM20处提供了随机存储器访问,例如组织数据记录、初始化和去初始化EEPR0M、报告EEPROM状态以及读、写、和删除数据记录。在任何软件实现中,软件可以由单独的处理器(例如,14)或由仿真EEPROM装置18中的处理器或控制器(未示出)来执行。
[0013]在图1所示的示例中,数据处理装置100可以被实现为微控制器(例如,嵌入式汽车控制器),其包括一个或多个CPU或处理器内核14和用于可编程地存储非易失性数据的仿真EEPROM装置18。CPU14和仿真EEPROM装置18经由一个或多个总线或系统互连12被连接在一起以存储在微控制器使用寿命期间频繁地被写入的数据(例如,诊断数据、自适应控制数据、和/或安全数据),这需要数千周期的高编程/擦除耐力。为了避免与使用传统的EEPROM存储器存储非易失性数据相关联的成本和缺点,提供仿真EEPROM装置18以使用随机存取存储器(RAM)20、存储器控制器22以及用于存储多个闪存存储器块或扇区的非易失性闪存存储器阵列24来可编程地存储非易失性数据,每个块或扇区包括一个或多个EEPROM数据记录。在所选择的实施例中,闪存阵列24可以被实现为NAND闪存、NOR闪存或其它类型的非易失性存储器。存储在闪存存储器阵列24中的数据记录指被排列用于处理犹如存储在EEPROM中的数据条目或字段的集合,并且可以包括数据记录状态字段、数据记录ID字段、数据大小字段和一个或多个数据字段。EEPROM数据记录的具体排列由处理它的应用程序规定,并且可以包括固定长度和可变长度记录。
[0014]在所描述的仿真EEPROM装置18中,存储器控制器22经由标记有地址(ADDRESS)、DATA_IN、READ_DATA、状态(STATUS)、以及控制(CONTROL)的信号线被连接到非易失性闪存阵列24。虽然未示出,但存储器控制器22可以经由类似的信号线被连接到随机存取存储器(RAM) 20。RAM20和存储器控制器22也被连接到系统互连12。此外,复位信号可以被提供给CPU14和存储器控制器22。该复位信号可以是,例如,用于数据处理装置100的全局复位信号。存储器控制器22包括具有用于实现用于追踪死扇区的扇区状态识别方案的程序代码和/或电路的EEPROM仿真驱动和/或硬件模块23。为了说明的目的,仿真EEPROM装置18被示出为离散装置,但仿真EEPROM装置18可以被实现为包括数据处理装置100的其它组件,例如处理器14的集成电路。如将理解的,仿真EEPROM装置18可以被实现为独立的闪存模块,所述闪存模块有其自身的处理功能或具有使用闪存存储器来仿真EEPROM存储器的微控制器、微处理器、计算机和其它电子装置。
[0015]为了支持到RAM20的数据存取请求,存储器控制器22被配置为在闪存阵列24处存储和取回信息。存储器控制器22可以通过经由节点ADDRESS提供地址、经由节点DATA_IN写入数据、经由节点STATUS更新用于扇区或记录的状态信息、以及在节点CONTROL处配置控制信息在闪存阵列24处存储信息。类似地,存储器控制器22可以通过在节点ADDRESS处提供地址以及在节点CONTROL处配置控制信息以在闪存阵列24处执行读取操作来取回存储在闪存阵列24的信息,从而存储在ADDRESS处的信息经由节点READ_DATA返回到控制模块22并且用于相应的扇区或记录的相关联的状态信息经由节点STATUS返回。存储器控制器22可以包括被配置用于管理与存储器控制器22相关联的程序的数据处理装置,例如微处理器、微控制器、逻辑装置或其组合。
[0016]在操作期间,处理器14 (或具有存储器访问权限的某些其它模块或装置)可以经由系统互连12与RAM20直接地通信以经由访问请求存储并取回在RAM20处的信息。在该设置中,在RAM20处存储信息的访问请求是“写入访问”,并且取回存储在RAM20处的信息的访问请求是“读取访问”。每个访问请求包括与在RAM20处的位置相对应的访问地址。在写入访问的情况下,访问请求还包括要被写入到所提供的地址的数据信息。响应于写入访问,RAM20将接收的写数据存储在与所接收的写地址相关联的存储器位置处。响应于读取访问,RAM20取回存储在由地址指示的存储器位置的数据并经由系统互连12提供数据。
[0017]在写入访问的情况下,存储器控制器22将与写入访问相关联的数据存储在闪存阵列24处。因此在功率波动(包括功率损耗)或复位事件的情况下该数据将被保存在数据处理装置100处。例如,如果存储器控制器22确定与写入请求相关联的数据不同于存储在由与写请求相关联的地址指示的RAM20的存储器位置处的数据,存储器控制器22可以将与写入请求相关联的地址和数据作为记录存储在闪存阵列24处。但是如果闪存阵列24不能擦除单个记录,存储器控制器22为导致存储在RAM20处的数据的修改的每个写入访问生成新记录。作为结果,可以有与RAM20的特定存储器位置相关联的多个记录,在这种情况下,与特定存储器地址相关联的最近创建的记录存储用于该地址的最新或有效的数据,并且与RAM20的地址相关联的已被较新数据替代的任何数据被称为是无效的。
[0018]在创建新记录的时候,存储器控制器22以顺序的方式操作,从而每个新记录被存储在逻辑上相邻的位置处,并紧随用于存储响应于先前的写入访问所创建的记录的位置。随着数据在RAM20处被存储以及与更新相对应的连续记录在闪存阵列24处被创建,将信息存储在闪存阵列24的可用空间减小。为了在闪存存储器中提供足够的存储空间用于新记录,存储器控制器22可以被配置用于确定在闪存阵列24处的可用空间的数量何时低于定义的或可编程的阈值。当达到阈值时,存储器控制器22在所选择的扇区或块中执行数据整合和数据擦除,以确保有顺从最近更新的位置并且可用于响应于在RAM20处的数据更新容纳新记录的空位置。通过连续地创建新记录、整合记录、以及擦除扇区来执行用于管理闪存扇区的处理以使得闪存阵列24中的新扇区可用于存储数据记录。
[0019]在图1中,参照多个闪存存储器块或扇区30、32、34、36和38 (扇区30-38)示出了用于管理仿真EEPROM装置18中的非易失性闪存存储器24中的闪存扇区的处理,其中扇区是用于存储一个或多个记录的闪存阵列24的逻辑上连续的部分。闪存阵列24还可以包括包括一个或多个空扇区的空区域40。空扇区指其中分配用于存储记录的所有位置都被擦除的扇区。所示出的扇区30-38包括最早的扇区30 (最近最少填充的扇区)、较早的扇区32(在填充最早的扇区30之后被填充的扇区)、一个或多个较新填充的扇区34 (比较早的扇区32更近被填充的扇区)、最新填充的扇区36 (最近填充的扇区)和当前填充的扇区38。每个填充的扇区30、32、34和36不包括在所有位置都包含记录或包含与扇区相关联的状态信息的意义上的空位置,尽管将理解,在填充的扇区中的记录可以包括可用于存储用于与记录相关联的地址的附加数据的空间。
[0020]当前填充的扇区38是将存储在闪存阵列24中创建的下一个或“新”记录的扇区。以说明的方式,当前填充的扇区38可以包括用于存储扇区识别头码的第一位置或记录45,其可以被用于提供扇区状态信息以及标记一个或多个即将到来的死扇区。第一位置45可以是第一扇区头或记录,其包括用于存储多个状态位的第一字段451、用于存储反向跳过(skip)或偏移标志以避免在反向中的一个或多个相邻的死扇区的第二字段452 (单独或与擦除计数组合)、以及用于存储前向跳过或偏移标志以避免在前向的方向中的一个或多个相邻的死扇区的第三字段453。字段451-453的组合可以被称为用于当前填充的扇区38的扇区头。如下所述,多个状态位被顺序地写入或编程到第一字段451以与单独的编程操作交错,使得任何限电或发生在状态位的写入或编程之间的其它损坏事件将可能造成不能存储后者的状态位并从而提供了失败的编程操作的指示。
[0021]当前填充的扇区38还可以包括在其中存储有一个或多个记录的一个或多个第二位置或记录46。此外,当前填充的扇区38可以包括包括状态信息字段481、地址信息字段482和数据信息字段483的当前填充的位置或记录48。最后,当前填充的扇区38可以包括一个或多个附加地阐述为包括“FFFF”的空位置50,FFFF对应于在包括在擦除的扇区处的位置处出现的数据值。
[0022]在当前填充的扇区38的示例编程操作中,在确定闪存阵列24处可用于存储新记录的擦除位置的数量低于阈值时,存储器控制器22可以使用当前填充的扇区38在阵列24的一个或多个扇区中执行数据整合和数据擦除。当满足该阈值时,存储器控制器22可以通过回顾最早的填充扇区30处的每个记录,然后将在其中发现的每个有效的记录压缩并复制到当前填充的扇区38中的当前填充的位置或记录48来执行整合操作。特别是,为了复制记录,存储器控制器22执行写入访问以在当前填充的扇区38处创建新记录并将被复制的记录的内容写入到新记录。一旦存储器控制器22确定所有有效的记录已从最早的填充扇区30被复制到当前填充的扇区38,存储器控制器22执行擦除操作以擦除最早的填充扇区30。因此,整合操作释放了空间用于在闪存阵列24处存储附加记录。
[0023]闪存存储器24中的每个扇区30-38可以包括扇区识别位置或记录(例如,45),其可以被用来通过存储扇区状态信息连同偏移标志以标记一个或多个即将到来的死扇区而促进扇区处理。以这种方式,存储器控制器22可以访问与扇区相关联的扇区状态信息以识别扇区当前正被如何使用。例如,扇区状态信息可以被用于识别特定扇区是空的、擦除的、当前填充的或满的、或者正被用于另外的目的,例如压缩或擦除另一个扇区。通过交错存储在扇区识别位置/记录中的状态位的编程,仿真EEPROM装置18提供了耐限电并且不受单一位磨损机制和干扰问题的影响的鲁棒状态系统。这是通过使用每个状态位所分配的多个物理位来定义多个全面的配置状态定义而实现的。仿真EEPROM装置18还可以处理扇区识别位置/记录中的偏移标志以管理闪存阵列24中的死扇区的存在,从而可以使用自动搜索算法。
[0024]现在转到图2,图2根据本公开所选择的实施例示出了可以被用于提供扇区状态信息以及用来标记一个或多个即将到来的死扇区的扇区状态分类和相关联的扇区头码的表200。表200包括包含扇区分类的第一列210、包含与每个扇区分类相关联的示例扇区状态位(以二进制的形式)的第二列212、以及包含来自第二列212的状态位的“或运算”组的第三列214。在所选择的实施例中,随着扇区分类进展通过编程操作的序列,存储器控制器22被配置用于更新与第二列212或第三列214对应的扇区头中的扇区状态位。在被用于在闪存阵列24处存储记录的状态位仅可以被编程为“逻辑零”电平的实施例中,被用于识别扇区的当前分类的扇区状态位不同之处在于多少状态位被编程为“逻辑零”电平。在表200的第二列212中所示的示例实施例中,被用于识别扇区状态的扇区状态位包括30个状态位,其可以各自被排列为三个状态位的10个状态指示器组(例如,第一扇区状态指示器(2:0)、第二扇区状态指示器(5:3),...第十扇区状态指示器(30:28)。如将理解的,状态位的附加的或更少组可以包括在扇区状态位中以识别附加的或更少的状态分类。以这种方式,三个编程的状态位的组中的每一个可以被用于区分每个扇区状态,单独或与来自扇区头码的其它信息组合。在示例实现中,扇区状态位被包含在扇区识别头/记录的位位置90:61中。替代地,或运算扇区状态位被包含在扇区识别头/记录的位位置70:61中。
[0025]虽然表200中所示的状态位组的排列和分配示出了用于被擦除(ERASED)和就绪(READY)(第一编程)状态的相同的逻辑值,将理解,状态位可以被排列和分配使得识别的11个配置状态的每一个具有其自身对应的扇区状态位。例如,ERASED状态可以被分配状态位配置 111_111_111_111_111_111_111_111_111_111,READY (第一编程)状态可以被分配状态位配置111_111_111_111_111_111_111_111_111_000, READY状态可以被分配状态位配置 111_111_111_111_111_111_111_111_000_000 等,使得压缩(COMPRESS )状态可以被分配状态位配置 000_000_000_000_000_000_000_000_000_000。
[0026]如表200的第三列214所示,扇区位的每个扇区状态指示器组可以通过对每个扇区位组应用逻辑“0R”操作用相应的逻辑扇区状态位来表示。通过用被或运算在一起的三个物理位表示每个逻辑扇区状态位,保持在仿真EEPROM装置18处的扇区状态信息实现了对编程干扰(例如,限电)提高的免疫,并且还避免了由具有擦除问题的组中的状态位中的一个引起的问题。
[0027]表200包括可以被包括在每个扇区识别头或记录中的附加扇区头码,所述附加扇区头码可以被用于标记一个或多个即将到来的死扇区。例如,表200包括包含用于绕过在反向搜索方向中的死扇区的示例反向跳过码或偏移标志值的第四列216。反向跳过码或偏移标志值可以被存储为二进制或十六进制值以指示在给定方向(例如,反向方向)要被跳过的相邻的死扇区的数量。在所选择的实施例中,每个反向跳过码可以与表示扇区已被擦除的次数的扇区的ECOUNT (擦除周期计数)值组合。无论是否与ECOUNT值组合,反向跳过码都可以受到纠错码(ECC)的保护以检测和纠正内部的数据损坏。
[0028]虽然反向跳过码可以指定任何期望数量的死扇区,在所选择的实施例中,反向跳过码被用于指定最大值2的死扇区,可以通过使用4个位在反向方向中跳过该死扇区,其中2个位被分配到每个跳过的扇区。在这些实施例中,反向跳过码可以有效地指定对应于“没有跳过”、“跳过I个扇区”和“跳过2个扇区”指令的0、1、2值。在三个或多个死扇区背靠背发生的不太可能的情况下,存储器控制器22可以被配置用于重新编程扇区识别头/记录以创建将迫使软件干预的ECC双重故障。在一个示例实现中,ECC保护的反向跳过码和ECOUNT值被包含在扇区识别头/记录的位位置60:22中。
[0029]表200还包括包含用于在前向誊写的方向中绕过死扇区的示例前向跳过码或偏移标志的第五列218。通过将前向跳过码或偏移标志值存储为二进制或十六进制值,指示在给定方向(例如,前向)要被跳过的相邻的死扇区的数量。在所选择的实施例中,前向跳过码可以受到纠错码(ECC)的保护以检测和纠正内部的数据损坏。在所选择的实施例中,前向跳过码被用于指定在反向方向中可以被跳过的最大值2的死扇区,虽然可以通过前向跳过码指定任何期望数量的死扇区。通过使用具有被分配到每个跳过的扇区的2个位的4个位,前向跳过码可以有效地指定对应于“没有跳过”、“跳过I个扇区”和“跳过2个扇区”指令的0、1、2值。在三个或多个死扇区背靠背发生的不太可能的情况下,存储器控制器22可以被配置用于重新编程扇区识别头/记录以创建将迫使软件干预的ECC双重故障。在一个示例实现中,ECC保护的前向跳过码被包含在扇区识别头/记录的位位置21:0中。
[0030]通过在表200的第二列212中所示的状态位的排列,存储器控制器22可以被配置用于交错不同的扇区编程操作与状态位的第一和第二组的连续编程。例如,在第一编程操作期间(例如,将扇区配置为READY),第一组状态位(例如,第一扇区状态指示器(2:0))可以被编程,以及在后续编程操作期间(例如,将扇区配置为填充(FILLING)(第一编程)),第二组状态位(例如,第二扇区状态指示器(5:3))可以被编程。这种交错编程可以参照表200中的行221-231来说明。
[0031]特别是,表200中的第一行221包括扇区分类ERASED,其可以被表示为在第二列212中所示具有未编程的扇区状态位值(例如,111_111_111_111_111_111_111_111_111_11I)以及反向跳过和ECOUNT值(例如,FFFF_FF)。如在第三列214中所示,来自扇区状态位值的三个位组的逻辑OR组合生成了对应于ERASED扇区状态的或运算的扇区状态位值(例如,11_1111_1111)。在所选择的实施例中,在第一组扇区状态位值以及第一反向跳过和ECOUNT值中的“逻辑I”值是扇区擦除操作的结果,因此存储器控制器22不需要执行单独的编程操作来存储这些值。
[0032]表200中的行222包括扇区分类READY (第一编程),其可以被表示为如第二列212中所示,具有一组扇区状态位值(有“逻辑I”值)和具有在ERASE操作之后已递增的ECOUNT值。以这种方式,READY (第一编程)扇区分类可以通过第四列216中的ECOUNT值区别于ERASE扇区分类。如在第三列214中所示,来自扇区状态位值的三个位组的逻辑OR组合生成与用于READY扇区状态的第一编程操作对应的或运算扇区状态位值(例如,11_1111_1111),并且第四和第五列216、218包含识别相邻的死扇区的反向和前向跳过值(例如,O、I或2)。
[0033]表200中的行223包括扇区分类READY(或空(EMPTY)),其可以被表示为在第二列212 中所示具有一组扇区状态位值(例如,111_111_111_111_111_111_111_111_111_000 ),其中,最低有效状态位或位组(例如,三位组状态位)被编程为“逻辑O”电平,从而区别READY扇区分类与READY (第一编程)扇区分类。如在第三列214中所示,来自扇区状态位值的三位组的逻辑OR组合生成与用于READY扇区状态的第二编程操作对应的或运算扇区状态位值(例如,11_1111_1110),并且第四和第五列216、218包含识别相邻的死扇区的反向和前向跳过值(例如,0、1或2)。READY扇区分类与例如在图1的空区域40处的扇区对应。
[0034]表200中的行224包括扇区分类FILLING (第一编程),其可以被表示为在第二列212 中所示,具有一组扇区状态位值(例如,111_111_111_111_111_111_111_111_000_000 ),其中下一个最低有效状态位或位组(例如,第四、第五和第六最低有效状态位)被编程到“逻辑O”电平,从而区别FILLING(第一编程)扇区分类与READY扇区分类。如在第三列214中所示,来自扇区状态位值的三位组的逻辑OR组合生成了与用于FILLING扇区状态的第一编程操作对应的或运算扇区状态位值(例如,11_1111_1100),并且第四和第五列216、218包含识别相邻的死扇区的反向和前向跳过值(例如,O、I或2)。[0035]表200中的行225包括扇区分类FILLING (或充满(FULL)),其可以被表示为在第二列212中所示,具有一组扇区状态位值(例如,111_111_111_111_111_111_111_000_000_
000),其中下一个最低有效状态位或位组(例如,第七、第八和第九最低有效状态位)被编程到“逻辑O”电平,从而区别FILLING扇区分类与FILLING(第一编程)扇区分类。如在第三列214中所示,来自扇区状态位值的三位组的逻辑OR组合生成与用于FILLING扇区状态的第二编程操作对应的或运算扇区状态位值(例如,11_1111_1000),并且第四和第五列216、218包含识别相邻的死扇区的反向和前向跳过值(例如,O、I或2)。FILLING(或FULL)扇区分类与例如图1的当前填充38处的扇区对应,并且FULL扇区分类与图1的填充的扇区30、32、34和36对应。在所选择的实施例中,附加的状态位可以被用于区别FILLING扇区和FULL扇区。在其它实施例中,FILLING扇区可以由存储器控制器22通过从第一空扇区后向搜索来识别以定位具有扇区状态位值=111_111_111_111_111_111_111_000_000_000的第一扇区。
[0036]表200中的行226包括扇区分类被擦除的先前扇区(PREVIOUS SECTOR BEINGERASED),其可以被表示为在第二列212中所示,具有一组扇区状态位值(例如,111_111_111_111_111_111_000_000_000_000),其中下一个最低有效状态位或位组(例如,第十、第十一和第十二最低有效状态位)被编程到“逻辑O”电平,从而区别PREVIOUS SECTOR BEINGERASED扇区分类与FILLING扇区分类。如在第三列214中所示,来自扇区状态位值的三位组的逻辑OR组合生成与先前扇区对应的或运算扇区状态位值(例如,11_1111_0000 ),并且第四和第五列216、218包含识别相邻的死扇区的反向和前向跳过值(例如,0、1或2)。
[0037]表200中的行227包括扇区分类合格擦除的先前扇区(PREVIOUS SECTORQUALIFIED FOR ERASE),其可以被表示为在第二列212中所示,具有一组扇区状态位值(例如,111_111_111_111_111_000_000_000_000_000 ),其中下一个最低有效状态位或位组(例如,第十三、第十四和第十五最低有效状态位)被编程到“逻辑O”电平,从而区别PREVIOUSSECTOR QUALIFIED FOR ERASE扇区分类与 PREVIOUS SECTOR BEING ERASED扇区分类。如在第三列214中所示,来自扇区状态位值的三位组的逻辑OR组合生成与用于擦除先前扇区的第二编程操作对应的或运算扇区状态位值(例如,11_1110_0000),并且第四和第五列216、218包含识别相邻的死扇区的反向和前向跳过值(例如,0、1或2)。
[0038]表200中的行228包括扇区分类先前扇区擦除完成(PREVIOUS SECTOR ERASECOMPLETE),其可以被表示为在第二列212中所示,具有一组扇区状态位值(例如,111_111_111_111_000_000_000_000_000_000 ),其中下一个最低有效状态位或位组(例如,第十六、第十七和第十八最低有效状态位)被编程到“逻辑O”电平,从而区别PREVIOUS SECTORERASE COMPLETE 扇区分类与 PREVIOUS SECTOR QUALIFIED FOR ERASE 扇区分类。如在第三列214中所示,来自扇区状态位值的三位组的逻辑OR组合生成与用于擦除先前扇区的第三编程操作对应的或运算扇区状态位值(例如,11_1100_0000),并且第四和第五列216、218包含识别相邻的死扇区的反向和前向跳过值(例如,O、I或2)。
[0039]表200中的行229包括扇区分类擦除完成(ERASE COMPLETED),其可以被表示为在第二列212中所示,具有一组扇区状态位值(例如,111_111_111_000_000_000_000_000_ooo_ooo),其中下一个最低有效状态位或位组(例如,第十九、第二十和第二 i 最低有效状态位)被编程到“逻辑O”电平,从而区别ERASEC0MPLETED扇区分类与PREVIOUS SECTORERASE COMPLETE扇区分类。如在第三列214中所示,来自扇区状态位值的三位组的逻辑OR组合生成与用于擦除先前扇区的第四编程操作对应的或运算扇区状态位值(例如,11_1000_0000),并且第四和第五列216、218包含识别相邻的死扇区的反向和前向跳过值(例如,0、1或2)。ERASE COMPLETED扇区分类被存储在在填充最早填充的扇区之后立即被填充的FULL扇区处。例如,当擦除图1中的最早填充的扇区30时,图1的较早填充的扇区32 被用于存储扇区状态位值=111_111_111_000_000_000_000_000_000_000。
[0040]表200中的行230包括扇区分类压缩(COMPRESS)(第一编程),其可以被表示为在第二列212中所示,具有一组扇区状态位值(例如,111_111_000_000_000_000_000_000_000_000),其中下一个最低有效状态位或位组(例如,第二十二、第二十三和第二十四最低有效状态位)被编程到“逻辑O”电平,从而区别COMPRESS (第一编程)扇区分类与ERASE COMPLETED扇区分类。如在第三列214中所示,来自扇区状态位值的三位组的逻辑OR组合生成与用于COMPRESS扇区状态的第一编程操作对应的或运算扇区状态位值(例如,11_0000_0000),并且第四和第五列216、218包含识别相邻的死扇区的反向和前向跳过值(例如,O、I或2)。
[0041]表200中的行231包括扇区分类COMPRESS,其可以被表示为在第二列212中所示,具有一组扇区状态位值(例如,111_000_000_000_000_000_000_000_000_000 ),其中下一个最低有效状态位或位组(例如,第二十五、第二十六和第二十七最低有效状态位)被编程到“逻辑O”电平,从而区别COMPRESS扇区分类与COMPRESS (第一编程)扇区分类。如在第三列214中所示,来自扇区状态位值的三位组的逻辑OR组合生成与用于COMPRESS扇区状态的第二编程操作对应的或运算扇区状态位值(例如,10_0000_0000),并且第四和第五列216、218包含识别相邻的死扇区的反向和前向跳过值(例如,0、1或2)。注意,在扇区变成最早填充的扇区和被压缩并随后被擦除的候选之前,在先前最早填充的扇区被擦除时将会已经有较早填充的扇区,并已接收扇区状态位值=111_111_111_000_000_000_000_000_000_000。
[0042]如上所述,扇区头码可以被顺序地编程以追踪随着多个不同的编程操作进展的每个扇区状态分类的生命周期进展,从而提供了检测并响应潜在的限电或其它损坏事件的能力。例如,可以单独或与ECOUNT值组合使用扇区状态位来检测随着ERASED扇区被配置为READY而发生的潜在的限电事件。在图2中所示的示例中,通过以顺序的方式编程ECOUNT值和第一组三个状态位(例如,第一扇区状态指示器(2:0),这些扇区头码指示READY (第一编程)和READY编程操作已发生以配置给定的扇区。但是如果存储器控制器22取回指示ECOUNT值被编程并且第一组状态位未被编程的扇区头码,那么这会向存储器控制器22发出限电事件可能在用于READY扇区状态编程操作的第二编程操作之前已经发生的信号。这可以在如果在第一扇区状态指示器(2:0)处编程状态位时发生限电时发生,在这种情况下,存储器控制器22将扇区分类为新擦除的扇区并且再一次在第一扇区状态指示器(2:0)处编程状态位以将新擦除的扇区识别为空或READY扇区。
[0043]此外或在替代方案中,扇区状态位或位组(从最低有效位到较高有效位)的顺序编程允许扇区状态分类的每个生命周期进程用两个不同的编程操作来实现,所述两个不同的编程操作可以被追踪以检测潜在的限电或其它损坏事件。例如,以顺序的方式编程第二和第三组三个状态位(例如,第二扇区状态指示器(5:3 )和第三扇区状态指示器(8:6 )),扇区状态位指示FILLING(第一编程)和FILLING编程操作已发生以配置给定的扇区。但是如果存储器控制器22从扇区识别头/记录取回了扇区状态位,其中第二组位被编程但第三组位(例如,111_111_111_111_111_111_111_111_000_000 )未被编程,那么这会向存储器控制器22发出限电事件可能已在用于FILLING扇区状态编程操作的第二编程操作之前发生的信号。这可能在如果在第三扇区状态指示器(8:6)处编程状态位时发生限电的情况下发生,在这种情况下,存储器控制器22得出扇区是空扇区的结论,并且再一次在第二扇区状态指示器(5:3)和第三扇区状态指示器(8:6)处编程状态位以将扇区分类为当前填充的扇区。
[0044]同样,如果第四和第五组三个状态位(例如,第四扇区状态指示器(11:9 )和第五扇区状态指示器(14:12))被顺序地编程以指示PREVIOUS SECTOR BEING ERASED和PREVIOUSSECTOR QUALIFIED ERASE编程操作已发生,则其中第四(而不是第五)位组被编程(例如,11ι_ιιι_ιιι_ιιι_ιιι_ιι 1_000_000_000_000)的扇区状态位的任何取回,这将发出限电事件可能在PREVIOUS SECTOR QUALIFIED ERASE编程操作之前已发生的信号。这可能在如果在第五扇区状态指示器(14:12)处编程状态位时发生限电的情况下发生,在这种情况下,存储器控制器22得出扇区是填充的扇区的结论,并且再一次在第四扇区状态指示器(11:9)和第五扇区状态指示器(14:12)处编程状态位以分类扇区以指示先前扇区合格被擦除。
[0045]以类似的方式,如果第六和第七组三个状态位(例如,第六扇区状态指示器(17:15)和第七扇区状态指示器(20:18))被顺序地编程以指示PREVIOUS SECTOR ERASEDCOMPLETE和ERASE COMPLETED编程操作已发生,则在其中第六(而不是第七)组位被编程的状态位的任何取回(例如,111_111_111_111_000_000_000_000_000_000),这发出限电事件可能在ERASE COMPLETED编程操作之前已发生的信号。这可能在如果在第七扇区状态指示器(20:18)处编程状态位时发生限电的情况下发生,在这种情况下,存储器控制器22得出扇区是PREVIOUS SECTOR QUALIFIED FOR ERASE的结论,并且再一次在第六扇区状态指示器(17:15)和第七扇区状态指示器(20:18)处编程状态位以分类扇区以指示擦除操作完成。
[0046]最后,如果第八和第九组三个状态位(例如,第八状态指示器(23:21)和第九状态指示器(26:24))被顺序地编程以表示COMPRESS (第一编程)和COMPRESS编程操作已发生,则在其中第八(而不是第九)组位被编程的状态位的任何取回(例如,111_111_000_000_000_000_000_000_000_000),这发出限电事件可能在压缩编程操作之前已发生的信号。这可能在如果在第九扇区状态指示器(26:24)处编程状态位时发生限电的情况下发生,在这种情况下,存储器控制器22得出扇区擦除操作已完成的结论,并且再一次在第八扇区状态指示器(23:21)和第九扇区状态指示器(26:24)处编程状态位以分类扇区以指示压缩操作完成。
[0047]如这里所述的,扇区识别状态位可以被存储器控制器22用来定义与仿真EEPROM系统中的扇区的生命周期相匹配(align with)的独特的扇区状态更新步骤。为了完成这个,每个扇区的分类进程(例如,从ERASED到READY)由两个不同的编程操作标记以使它们耐限电。如果第二编程操作可以成功的鉴定其合格,则可以允许在第一步骤上编程的失败。通过对每个新扇区分类进程使用两个编程步骤,可以检测并避免限电问题。
[0048]如将理解的,在仿真EEPROM操作期间记录的一个或多个扇区或块可能具有不能解决的编程或擦除错误。在这样的情况下,失败的扇区被宣布为无效并被从仿真EEPROM操作丢弃,使得后续通过闪存存储器阵列自动地跳过这个扇区。这被称为被丢弃的或死扇区。为了跳过死扇区,本公开所选择的实施例提供了能够自动追踪系统内的死扇区的扇区识别方案。为此,每个扇区识别头/记录存储一个或多个偏移标志,所述偏移标志允许前向或反向通过扇区并发出即将遇到死扇区的警告。
[0049]现在参照图3,根据本公开所选择的实施例示出了使用扇区识别头码(例如,312-314)以在自动搜索和誊写序列中跳过死扇区的EEPROM仿真方案中的多个闪存阵列扇区310、320、330、340的框图300。在第一扇区310 (扇区O)中,头码包括用于存储识别该扇区的状态(例如,ERASED、FILLED等)的扇区识别状态位的状态位字段312、用于指定在反向通过扇区期间要被跳过的任何即将来临的死扇区的存在的反向跳过字段313、用于指定在前向通过扇区期间要被跳过的任何即将来临的死扇区的存在的前向跳过字段314、以及用于存储第一扇区310的记录的附加位置311。除了在其中各种字段被指示有“不在乎”值X的某些死扇区(例如,320)外,其它闪存阵列扇区320、330、340类似地被组织有状态位字段(例如,332、342),反向跳过字段(例如,333、343),前向跳过字段(例如,334、344)、以及附加记录字段(例如,331、341)。
[0050]在所描述的示例中,在第二扇区320 (扇区I)处的擦除失败导致第二扇区被视为死扇区。为了避免死扇区320 (扇区1),用于第三扇区330 (扇区2)的扇区识别位置/记录332-334被编程以在反向偏移标志字段333处存储反向跳过码值RSKIP=I,从而指示任何反向搜索序列361在处理当前扇区330 (扇区2)之后跳过(335)单个扇区,从而避免死扇区320 (扇区I)并直接进入到下一个运作扇区310 (扇区O)。为了避免来自相反或誊写方向的死扇区320 (扇区I),用于第一扇区310 (扇区O)的扇区识别位置/记录312-314被编程以在前向偏移标志字段314处存储前向跳过码值FSKIP=I,从而指示任何前向誊写序列362在处理第一扇区310 (扇区O)之后跳过(315)单个扇区,从而避免死扇区320 (扇区
I)并直接进入到下一个运作扇区330 (扇区2)。以类似的方式,剩余的扇区识别头码被编程以提供反向跳过码值RSKIP=O和前向跳过码值FSKIP=O以指示没有相邻的死扇区,使得反向搜索和前向誊写序列可以直接进入到下一个相邻的扇区。
[0051]为了识别要被跳过的扇区数量,反向和前向跳过字段可以包括被分配到每个被跳过的扇区的多个位(例如,2)。例如,如果在反向方向可以有最大值为两个扇区被跳过并且两个位被分配到每个被跳过的扇区,那么rskip=iiii将指示不需要扇区跳过(或rskip=o)。同样,Rskip=Iioo将指示一个相邻的扇区应该被跳过(或RSKip=I),以及Rskip=OOOO将指示两个相邻的扇区应该被跳过(或rskip=2)。
[0052]为了避免来自存储用于取回和参考的死扇区位置信息和通过硬件处理的计算费用、复杂性和延迟,本公开所选择的实施例直接编程扇区头码中的反向和前向跳过码或偏移标志值以使得自动序列能够从最早到最新通过扇区以用于誊写的并反向用于记录搜索操作。为了说明用于编程扇区识别头码的示例序列,现在参照图4,其中示出了随着时间的推移(例如,从t=l到t=n+l)在EEPROM仿真方案中的多个闪存阵列扇区410、420、430、440的框图400。在示例闪存阵列中,每个扇区410、420、430、440被组织有状态字段、反向跳过(RSKP )字段、前向跳过(FSKP )字段,以及指示有编程状态(例如,READY,、COMPRESS、RECORDSFILLED等)的附加记录字段。
[0053]在第一时间间隔(t=l)处,闪存阵列包括为READY的第一扇区410 (扇区O)和为FILLED的第四扇区440 (扇区3)。此外如在401处指示,在第二扇区420 (扇区I)处的扇区记录421擦除失败,而第三扇区430 (扇区2)包括指示先前扇区(例如,扇区I)正被擦除的(先前编程的)状态字段码(例如,11_1111_0000 )。在这个时间点上,扇区410中的状态和FSKP字段以初始状态编程以指定相应的状态码,连同指示没有扇区被跳过的跳过或偏移标志值 RSKIP=O、FSKIP=O。
[0054]在第二时间间隔(t=2)处,如果下面的扇区未能擦除(如在401处指示的),前向跳过被添加到第一扇区410 (扇区O)的扇区识别位置/记录(扇区ID)。在这点上,第二和第四扇区420、440的状态保持不变。然而,第三扇区430(扇区2)包括指示第三扇区430中的记录431正被压缩的状态字段432(例如,10_0000_0000)。此外并如在402处所指示的,标记被放置在第一扇区410 (扇区O)的扇区识别位置/记录(扇区ID)中以标志在前向誊写方向中即将来临的DEAD扇区422。特别是,第一扇区410中的前向跳过字段411被编程以指示任何前向誊写序列412在处理第一扇区410 (扇区O)之后跳过一个扇区(FSKP=I),从而避免死扇区420 (扇区I)并直接进入到下一个运作扇区430 (扇区2)。否则,扇区410、420、430、440中的状态、RSKP和FSKP字段保持不变。
[0055]在第三、后续的时间间隔(t=n)处,死扇区之后的新扇区通过了 ERASE变化(如在403处所指示的)。在这点上,第一和第二扇区410、420的状态保持不变。然而,在第三扇区430 (扇区2)处的扇区记录433现在是擦除的,并且第四扇区440 (扇区3)包括指示先前扇区(扇区2)擦除完成的状态字段441 (例如,11_1100_0000)。否则,扇区410、420、430、440中的状态、RSKP和FSKP字段保持不变。
[0056]在第四时间间隔(t=n+l)处,反向跳过(并且可选的ECOUNT值)在成功的擦除操作(如在403所指示的)之后被添加到第三扇区420(扇区2)的扇区识别位置/记录(扇区ID)。在这点上,第二和第四扇区420、440的状态字段保持不变。然而,在第三扇区430 (扇区2)处的扇区记录435现在是READY,并且第三扇区430 (扇区2)包括指示第三扇区430中的记录435是READY的状态字段436(例如,11_1111_1110)。此外并如在404处所指示的,标记被放置在第三扇区430 (扇区2)的扇区识别位置/记录(扇区ID)中以标志在反向搜索方向中即将来临的DEAD扇区423。特别是,反向跳过字段437在第三扇区430中被编程以指示任何反向搜索序列438在处理第三扇区430 (扇区2)之后跳过一个扇区(RSKP=I),从而避免死扇区420 (扇区I)并直接进入到下一个运作扇区410 (扇区O)。否则,扇区410、420、430、440中的状态、RSKP和FSKP字段保持不变。
[0057]现在转到图5,示出了根据本公开所选择的实施例可以被用于生成用于EEPROM仿真单元中的闪存阵列508的受控地址序列的地址生成单元506和相关的控制模块502、504的示意框图500。在所选择的实施例中,地址生成单元和相关的控制模块可以在仿真EEPROM装置的存储器控制器中被实现为软件、硬件、固件或上述的任何组合以给闪存存储器508提供受控的地址序列507,用于用编程的前向和反向跳过指令完全地自动操作搜索和誊写操作以避免死扇区,而无需耗时的软件中断程序来处理死扇区。虽然没有明确示出,但闪存存储器508存储了被排列到扇区的多个记录,每个都包括其中扇区分类状态码以及反向和前向跳过值已被编程的扇区识别位置/记录(扇区ID)。随着记录509从闪存存储器508中被读出,扇区ID解码模块502使用从地址生成单元506接收的相关联的AGU地址来解码记录以识别任何扇区识别位置/记录(扇区ID),并从中提取被编程的反向和前向跳过值RSKP、FSKP。提取的RSKP和FSKP值作为后向跳过和前向跳过扇区计数值被提供到死扇区识别模块504,从而指示分别在反向或前向方向跳过的扇区数量。为了引导在死扇区识别模块504处的计算,地址生成单元506提供前向或反向指示(For/Rev)到死扇区识别模块504以指示地址生成单元506是否是在前向誊写或反向搜索模式中。通过这些输入,死扇区识别模块504通过将扇区跳过计数转换成馈送到地址生成单元506的地址调整值生成扇区大小调整信号(S+/-扇区大小)。使用扇区大小调整信号,地址生成单元506可以被配置来生成受控地址序列507,用于在闪存存储器508处的搜索和誊写操作期间自动地避免死扇区。
[0058]为了说明用于用所公开的扇区识别头码提供自动搜索和誊写操作的示例EEPROM仿真方法,现在参照图6,其示出了根据本公开所选择的实施例的用于编程反向和前向跳过值的各种方法的简化示意流程图600。在所述的方法中,随着擦除操作被应用于所选择的扇区,在闪存扇区的阵列的前向誊写处理期间处理开始于步骤601。如果扇区擦除操作失败(决定602的失败结果),则处理将具有跳跃值的先前合格的扇区中的FSKIP值编程到要被处理以进行压缩的下一个合格的扇区(例如,非死扇区)。随着下一个合格的扇区的压缩,下一个合格的扇区对其状态字段编程以指示压缩状态(在步骤606处),并且压缩操作对下一个合格的扇区中的记录上执行(在步骤608处)。
[0059]在某个后续点处,擦除操作在下一个合格的扇区上执行。这可以发生在反向搜索操作期间。直到这样的擦除操作发生,下一个合格的扇区的处理被搁置(决定610的否定结果)。然而,当着手下一个合格的扇区的擦除操作时(决定610的肯定结果),处理返回到步骤602以评估擦除操作的成功。如果下一个合格的扇区的擦除也失败,根据需要重复处理步骤604、606、608或直至指定的限制,从而更新被编程的FSKIP值以避免失败的或死扇区。然而,如果扇区擦除操作成功(决定602的通过结果),那么在步骤612处被擦除的扇区用READY状态对其状态字段编程。此外,在步骤612处的处理将具有跳跃值的擦除扇区中的RSKIP值编程到要被处理的下一个合格扇区(例如,非死扇区)。在所选择的实施例中,ECOUNT值可以被包括在被擦除扇区中的RSKIP值的编程中。一旦FSKIP和RSKIP值被编程在邻近于一个或多个死扇区的扇区中,则死扇区从EEPROM仿真处理中被除去。在步骤612之后,处理等待直到擦除操作被应用于下一个扇区(步骤610),在此时处理返回到步骤602。
[0060]目前应理解,本发明提供了一种用于仿真非易失性存储器或闪存存储器中的EEPROM存储器的方法和设备。在所公开的方法和系统中,在第一非易失性存储器扇区上执行第一编程操作时,通过在扇区识别记录中存储第一状态指示器来编程用于所述第一非易失性存储器扇区的所述扇区识别记录。随后,在所述第一非易失性存储器扇区上执行第二编程操作时,通过在所述扇区识别记录中存储第二状态指示器作为多个扇区状态位的一部分来编程用于所述第一非易失性存储器扇区的所述扇区识别记录。在所选择的实施例中,可以通过在执行所述第一编程操作时在所述多个扇区状态位中存储第一多个状态位,用所述第一状态指示器来编程所述扇区识别记录,并且可以通过在执行所述第二编程操作时在所述多个扇区状态位中存储第二多个状态位,用所述第二状态指示器来编程所述扇区识别记录,其中所述第二多个状态位被邻近于所述第一多个状态位存储并且在所述多个扇区状态位中处于较高有效位位置。在所述扇区识别记录中,所述多个扇区状态位定义多个状态指示器,所述顺序地排列以指定用于所述第一非易失性存储器扇区的多个扇区配置状态,其中需要所述第一和第二编程操作来改变用于所述第一非易失性存储器扇区的扇区配置状态。用这样的排列,在确定所述扇区识别记录包括所述第一状态指示器但不包括所述第二状态指示器时可以检测与所述第一和第二编程操纵相关联的可能的扇区损坏事件。在所述第一和第二编程操作分别是就绪第一编程操作和就绪完成编程操作的实施例中,所述第一和第二状态指示器分别是擦除计数值和存储在所述多个扇区状态位中的第一组最低有效状态位。在所述第一和第二编程操作分别是填充第一编程操作和填充完成编程操作的实施例中,所述第一和第二状态指示器分别是存储在所述多个扇区状态位中的第一组较低有效状态位和存储在所述多个扇区状态位中的第二相邻组较高有效状态位。在所述第一和第二编程操作分别是被擦除的先前扇区编程操作和合格擦除的先前扇区编程操作的实施例中,所述第一和第二状态指示器分别是存储在所述多个扇区状态位中的第一组较低有效状态位和存储在所述多个扇区状态位中的第二相邻组较高有效状态位。在所述第一和第二编程操作分别是先前扇区擦除完成编程操作和擦除完成编程操作的实施例中,所述第一和第二状态指示器分别是存储在所述多个扇区状态位中的第一组较低有效状态位和存储在所述多个扇区状态位中的第二相邻组较高有效状态位。在所述第一和第二编程操作分别是压缩第一编程操作和压缩完成编程操作的实施例中,所述第一和第二状态指示器分别是存储在所述多个扇区状态位中的第一组较低有效状态位和存储在所述多个扇区状态位中的第二相邻组较高有效状态位。在用所述第一和第二状态指示器来编程所述扇区识别记录时,可以确定所述第一非易失性存储器扇区已擦除失败,在这种情况下,可以通过在用于先前非易失性存储器扇区的扇区识别记录中存储前向跳过指示器来编程用于邻近于所述第一非易失性存储器扇区的所述先前非易失性存储器扇区的所述扇区识别记录,以在前向誊写序列期间自动地绕过所述第一非易失性存储器扇区。此外或在替代方案中,在确定邻近于所述第一非易失性存储器扇区的后续非易失性存储器扇区被成功地擦除时,可以通过在用于所述后续非易失性存储器扇区的所述扇区识别记录中存储反向跳过指示器来编程用于所述后续非易失性存储器扇区的扇区识别记录,以在反向搜索序列期间自动地绕过所述第一非易失性存储器扇区。
[0061]以另一种形式,提供了一种仿真EEPROM系统,包括易失性RAM、非易失性存储器、以及控制模块。所述易失性RAM用于经由一个或多个访问请求存储和访问数据。所述非易失性存储器包括用于在所述易失性随机存取存储器中存储所述数据的记录的多个扇区,其中每个扇区包括相应的扇区头,该扇区头用于存储定义了多个状态指示器的多个扇区状态位,所述多个状态指示器排列为顺序地指定用于所述扇区的扇区配置状态的生命周期序列。例如,所述多个状态位可以包括:第一多个状态位,用于在执行第一编程操作时编程第一状态指示器;以及第二多个状态位,用于在执行第二编程操作时编程第二状态指示器,其中所述第二多个状态位被邻近于所述第一多个状态位存储并且在所述多个扇区状态位中处于较高有效位位置。所述扇区头还可以存储用于所述非易失性存储器中的一个或多个相邻的死扇区的前向跳过指示器,所述前向跳过指示器可用于在前向誊写序列期间自动地绕过所述一个或多个相邻的死扇区,和/或存储用于所述非易失性存储器中的一个或多个相邻的死扇区的反向跳过指示器,所述反向跳过指示器可用于在反向搜索序列期间自动地绕过所述一个或多个相邻的死扇区。更通常地,所述扇区头可以存储用于所述非易失性存储器中的一个或多个相邻的死扇区的扇区跳过指示器,所述扇区跳过指示器可用于在自动的搜索或誊写操作期间自动地绕过所述一个或多个相邻的死扇区。在所选择的实施例中,所述非易失性存储器可以被实现为用于存储多个闪存存储器扇区的NAND或NOR闪存存储器阵列,每个所述闪存存储器扇区包括一个或多个EEPROM数据记录和相应的扇区头记录。所述控制模块被耦接到所述非易失性存储器和所述易失性RAM,并且可操作用于利用第一和第二编程操作来编程每个扇区的扇区头中的所述多个扇区状态位以改变用于所述扇区的扇区配置状态。在所选择的实施例中,所述控制模块包括地址生成单元,用于基于源自所述扇区头中的所述扇区跳过指示器的扇区大小调整信号生成受控的地址序列。
[0062]以又一种形式,提供了一种仿真电可擦除可编程只读存储器(EEEPR0M)装置和相关联的操作方法。如所公开的,所述EEPROM装置包括仿真存储器,其具有用于在多个记录中顺序地存储信息的多个扇区,其中每个扇区包括:(I)扇区识别记录,用于存储定义多个状态指示器的多个扇区状态位,所述状态指示器排列为顺序地指定用于所述扇区的扇区配置状态的生命周期序列;(2)前向跳过指示器,用于所述仿真存储器中的一个或多个相邻的死扇区,所述前向跳过指示器可用于在前向誊写序列期间自动地绕过所述一个或多个相邻的死扇区;以及(3)反向跳过指示器,用于所述仿真存储器中的一个或多个相邻的死扇区,所述反向跳过指示器可用于在反向搜索序列期间自动地绕过所述一个或多个相邻的死扇区。所述EEEPR0M装置还包括耦接到所述仿真存储器的存储器控制器,其中所述存储器控制器可操作用于利用第一和第二编程操作来编程每个扇区的所述扇区识别记录中的所述多个扇区状态位以改变用于所述扇区的扇区配置状态。在所选择的实施例中,所述仿真存储器可以被实现为用于存储多个闪存存储器扇区的NAND或NOR闪存存储器,每个所述闪存存储器扇区包括一个或多个EEPROM数据记录和相应的扇区识别记录。
[0063]虽然这里所公开的描述的示例性实施例针对用于检测限电事件并在搜索和誊写操作期间自动地消除死扇区处理的方法和装置,但本发明并不必限于说明本发明的适用于各种EEPROM仿真方案的发明方面的示例实施例。此外,所选择的实施例可以用其它存储器系统,例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、磁阻随机存取存储器(MRAM)、或相变随机存取存储器(PCRAM)、或硬件驱动存储系统来实现。由于本发明可以以对具有这里教导的利益的本领域技术人员明显的不同的但等价的方式来修改和实践,因此,上面公开的特定实施例仅仅是说明性的并且不应该被认为是对本发明的限制。因此,前面的描述不旨在将本发明限制到所阐述的特定形式,相反,旨在涵盖如可以包括在由所附权利要求定义的本发明的精神和范围内的这样的替代物、修改以及等价物,从而本领域技术人员应该理解,他们可以做出各种修改、替换和改变而不脱离以其最宽泛的形式的本发明的精神及范围。
[0064]上面已就特定实施例描述了益处、其它优点、以及问题的解决方案。然而,可以导致任何益处、优点或解决方案发生或变得更加显著的益处、优点、问题的解决方案、以及任何元素不被解释为任何或全部权利要求的关键的、必需的、或必要的特征或元件。如这里所使用的,术语“包括”或其任何其它变化形式旨在涵盖非排他性内容,例如其包括元素列表但不仅仅包括这些元素的处理、方法、物件、或装置,而可以包括没有明确列出的或是这样的处理、方法、物件、或装置固有的其它元素。
【权利要求】
1.一种仿真非易失性存储器中的EEPROM存储器的方法,包括: 在第一非易失性存储器扇区上执行第一编程操作时,通过在扇区识别记录中存储第一状态指示器来编程用于所述第一非易失性存储器扇区的所述扇区识别记录;以及 在所述第一非易失性存储器扇区上执行第二编程操作时,通过在所述扇区识别记录中存储第二状态指示器作为多个扇区状态位的一部分来编程用于所述第一非易失性存储器扇区的所述扇区识别记录, 其中所述多个扇区状态位由顺序地排列的多个状态指示器来定义以指定所述第一非易失性存储器扇区的多个扇区配置状态,并且其中需要所述第一和第二编程操作来改变所述第一非易失性存储器扇区的扇区配置状态。
2.根据权利要求1所述的方法,还包括在确定所述扇区识别记录包括所述第一状态指示器但不包括所述第二状态指示器时,检测与所述第一和第二编程操作相关联的可能的扇区损坏事件。
3.根据权利要求1所述的方法,其中存储所述第一状态指示器包括在执行所述第一编程操作时,在所述多个扇区状态位中存储第一多个状态位,并且其中存储所述第二状态指示器包括在执行所述第二编程操作时,在所述多个扇区状态位中存储第二多个状态位,其中所述第二多个状态位被邻近于所述第一多个状态位存储并且在所述多个扇区状态位中处于较高有效位位置。
4.根据权利要求1所述的方法,其中所述第一和第二编程操作分别包括就绪第一编程操作和就绪完成编程操作,并且其中所述第一和第二状态指示器分别包括擦除计数值和存储在所述多个扇区状态 位中的第一组最低有效状态位。
5.根据权利要求1所述的方法,其中所述第一和第二编程操作分别包括填充第一编程操作和填充完成编程操作,并且其中所述第一和第二状态指示器分别包括存储在所述多个扇区状态位中的第一组较低有效状态位和存储在所述多个扇区状态位中的第二相邻组较闻有效状态位。
6.根据权利要求1所述的方法,其中所述第一和第二编程操作分别包括被擦除的先前扇区编程操作和合格擦除的先前扇区编程操作,并且其中所述第一和第二状态指示器分别包括存储在所述多个扇区状态位中的第一组较低有效状态位和存储在所述多个扇区状态位中的第二相邻组较高有效状态位。
7.根据权利要求1所述的方法,其中所述第一和第二编程操作分别包括先前扇区擦除完成编程操作和擦除完成编程操作,并且其中所述第一和第二状态指示器分别包括存储在所述多个扇区状态位中的第一组较低有效状态位和存储在所述多个扇区状态位中的第二相邻组较闻有效状态位。
8.根据权利要求1所述的方法,其中所述第一和第二编程操作分别包括压缩第一编程操作和压缩完成编程操作,并且其中所述第一和第二状态指示器分别包括存储在所述多个扇区状态位中的第一组较低有效状态位和存储在所述多个扇区状态位中的第二相邻组较高有效状态位。
9.根据权利要求1所述的方法,还包括: 确定所述第一非易失性存储器扇区已擦除失败;以及 通过在用于邻近于所述第一非易失性存储器扇区的先前非易失性存储器扇区的扇区识别记录中存储前向跳过指示器来编程用于先前非易失性存储器扇区的所述扇区识别记录以在前向誊写序列期间自动地绕过所述第一非易失性存储器扇区。
10.根据权利要求9所述的方法,还包括: 确定邻近于所述第一非易失性存储器扇区的后续非易失性存储器扇区被成功地擦除;以及 通过在用于所述后续非易失性存储器扇区的所述扇区识别记录中存储反向跳过指示器来编程用于所述后续非易失性存储器扇区的扇区识别记录以在反向搜索序列期间自动地绕过所述第一非易失性存储器扇区。
11.一种仿真EEPROM系统,包括: 易失性随机存取存储器,用于经由一个或多个访问请求存储和访问数据; 非易失性存储器,包括用于在所述易失性随机存取存储器中存储所述数据的记录的多个扇区,所述多个扇区的每个扇区包括相应的扇区头,所述扇区头用于存储定义多个状态指示器的多个扇区状态位,所述多个状态指示器排列为顺序地指定用于所述扇区的扇区配置状态的生命周期序列;以及 控制模块,其耦接到所述非易失性存储器和所述易失性存储器,其中所述控制模块可操作用于利用第一和第二编程操作来编程每个扇区的扇区头中的所述多个扇区状态位以改变用于所述扇区的扇 区配置状态。
12.根据权利要求11所述的仿真EEPROM系统,其中所述非易失性存储器包括用于存储多个闪存存储器扇区的闪存存储器,每个所述闪存存储器扇区包括一个或多个EEPROM数据记录和相应的扇区头记录。
13.根据权利要求12所述的仿真EEPROM系统,其中闪存存储器包括NAND闪存阵列或NOR闪存阵列。
14.根据权利要求11所述的仿真EEPROM系统,其中所述多个状态位包括: 第一多个状态位,用于在执行第一编程操作时编程第一状态指示器;以及 第二多个状态位,用于在执行第二编程操作时编程第二状态指示器, 其中所述第二多个状态位被邻近于所述第一多个状态位存储并且在所述多个扇区状态位中处于较高有效位位置。
15.根据权利要求11所述的仿真EEPROM系统,其中每个扇区头还包括用于所述非易失性存储器中的一个或多个相邻的死扇区的用于存储前向跳过指示器的前向跳过指示器位置,所述前向跳过指示器能用于在前向誊写序列期间自动地绕过所述一个或多个相邻的死扇区。
16.根据权利要求11所述的仿真EEPROM系统,其中每个扇区头还包括用于所述非易失性存储器中的一个或多个相邻的死扇区的用于存储反向跳过指示器的反向跳过指示器位置,所述反向跳过指示器能用于在反向搜索序列期间自动地绕过所述一个或多个相邻的死扇区。
17.根据权利要求11所述的仿真EEPROM系统,其中每个扇区头还包括用于所述非易失性存储器中的一个或多个相邻的死扇区的用于存储扇区跳过指示器的扇区跳过指示器位置,所述扇区跳过指示器能用于在自动的搜索或誊写操作期间自动地绕过所述一个或多个相邻的死扇区。
18.根据权利要求17所述的仿真EEPROM系统,其中所述控制模块包括地址生成单元,用于基于源自所述扇区头中的所述扇区跳过指示器的扇区大小调整信号生成受控的地址序列。
19.一种仿真电可擦除可编程只读存储器EEEPR0M装置,包括: 仿真存储器,其具有用于在多个记录中顺序地存储信息的多个扇区,每个扇区包括: 扇区识别记录位置,用于存储定义多个状态指示器的多个扇区状态位,所述多个状态指示器排列为顺序地指定用于所述扇区的扇区配置状态的生命周期序列; 前向跳过指示器位置,用于所述仿真存储器中的一个或多个相邻的死扇区,所述前向跳过指示器位置能用于在前向誊写序列期间自动地绕过所述一个或多个相邻的死扇区;以及 反向跳过指示器位置,用于所述仿真存储器中的一个或多个相邻的死扇区,所述反向跳过指示器位置能用于在反向搜索序列期间自动地绕过所述一个或多个相邻的死扇区;以及 存储器控制器,其耦接到所述仿真存储器,其中所述存储器控制器可操作用于利用第一和第二编程操作来编程每个扇区的所述扇区识别记录中的所述多个扇区状态位以改变用于所述扇区的扇区配置状态。
20.根据权利要求19所述的EEEPR0M装置,其中所述仿真存储器包括用于存储多个闪存存储器扇区的闪存存储器,每个所述闪存存储器扇区包括一个或多个EEPROM数据记录和相应的扇区识别记录。
【文档编号】G06F11/00GK104008020SQ201410049600
【公开日】2014年8月27日 申请日期:2014年2月13日 优先权日:2013年2月25日
【发明者】R·S·斯考勒, J·C·坎宁汉姆, H·P·加斯奎特 申请人:飞思卡尔半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1