本发明涉及固态存储技术领域,具体地,涉及一种NAND Flash坏块管理方法及系统。
背景技术:
随着半导体工艺和计算机技术的发展,NAND Flash以其优良的存储特性成为现在的存储器发展方向。目前NAND Flash设备已经逐步替代其它数据存储器,成为大容量高速数据采集设备中的主要数据载体。同时由于单片芯片存储容量相对较小,读写速度相对慢,通过构建存储阵列来提升存储容量和存储速度的方法得到广泛研究。
由于制造工艺的问题,NAND Flash在出厂时难免会产生坏块,同时芯片在使用过程中也会产生坏块。在研究如何提高存储速度的同时,研究高效的坏块管理策略也显得尤为重要。常用的坏块管理策略标记坏块位表和坏块保留替换法,标记坏块位表用简单的跳过方式避免数据的错误;由于该方法会破坏逻辑地址和物理地址间的映射关系,只适用于简单顺序读写的高速场合。坏块保留替换法通过设置好块保留区,通过物理地址映射实现坏块管理,该方法需要耗费大量的内存资源,并且随着存储芯片的增加,耗费的内存资源也越来越多。
技术实现要素:
针对现有技术中的缺陷,本发明的目的是提供一种NAND Flash坏块管理方法及系统。
根据本发明提供的一种NAND Flash坏块管理方法,包括:
步骤1,建立NAND Flash存储阵列中存储块与逻辑地址对应关系的映射表,且所述映射表中的逻辑地址都对应配置有块状态标识,所述映射表中逻辑地址分为工作区和备用区,所述块状态标识为坏块的工作区逻辑地址还配置有偏移地址;
步骤2,接收外部指令解析获得操作指令和目标逻辑地址;
步骤3,判断所述目标逻辑地址属于工作区还是备用区,若所述目标逻辑地址属于工作区,且根据所述块状态标识确定所述存储块为坏块,则目标物理地址等于所述备用区最高位地址减去所述偏移地址;
步骤4,根据所述操作指令对所述目标物理地址对应的目标存储块进行操作;
步骤5,检验所述目标存储块的状态,若所述目标存储块为坏块;
步骤6,判断目标逻辑地址属于工作区还是备用区,
若目标逻辑地址属于工作区,且对应映射表中块状态标识为好块,则将从备用区最高位向低位顺序第一个块状态标识为未用好块的存储块作为替换块,在映射表中修改该替换块的块状态标识为已用好块,将该替换块相对于备用区最高位地址的偏移地址和坏块标识写入映射表,返回步骤2,
若目标逻辑地址属于工作区,且对应映射表中块状态标识为坏块,则先在映射表中将当前替换块的块状态标识修改为坏块,再将从备用区最高位向低位顺序第一个块状态标识为未用好块的存储块作为新替换块,在映射表中修改该新替换块的块状态标识为已用好块,将该新替换块相对于备用区最高位地址的偏移地址写入映射表中,返回步骤2。
作为一种优选方案,步骤1中所述映射表中工作区的逻辑地址设置为小于所述备用区的逻辑地址。
作为一种优选方案,步骤3还包括:若所述目标逻辑地址属于工作区,且根据所述块状态标识确定所述存储块好块,则目标物理地址等于目标逻辑地址。
作为一种优选方案,步骤3还包括:若所述目标逻辑地址属于备用区,判断所述目标逻辑地址对应的块状态标识是否为未用好块;
若为已用块或坏块,则返回步骤2;
若为未用好块,则目标物理地址等于目标逻辑地址。
作为一种优选方案,步骤6还包括:若目标逻辑地址属于映射表的备用区,则在映射表中将该目标逻辑地址对应的块状态标识修改为坏块。
作为一种优选方案,步骤5中检验所述目标存储块的状态的过程包括:
在所述目标存储块检测纠错码错误的数量超过预设阈值时,或
在所述目标存储块檫除或编程结束后检测到NAND Flash状态寄存器中D0位为1时,
确定所述目标存储块为坏块。
基于同一发明构思,本发明还提供了一种NAND Flash坏块管理系统,包括:MRAM,指令解析模块,MRAM控制模块,坏块管理模块,NAND Flash控制模块,NAND Flash存储阵列;
所述MRAM用于:存储一NAND Flash存储阵列中存储块与逻辑地址对应关系的映射表,且所述映射表中的逻辑地址都对应配置有块状态标识,所述映射表中逻辑地址分为工作区和备用区,所述块状态标识为坏块的工作区逻辑地址还配置有偏移地址;
所述指令解析模块用于:接收外部指令解析获得操作指令和目标逻辑地址;
所述MRAM控制模块用于:判断所述目标逻辑地址属于工作区还是备用区,若所述目标逻辑地址属于工作区,且根据所述块状态标识确定所述存储块为坏块,则目标物理地址等于所述备用区最高位地址减去所述偏移地址;
所述NAND Flash控制模块用于:根据所述操作指令对NAND Flash存储阵列中所述目标物理地址对应的目标存储块进行操作;
所述坏块管理模块用于:检验所述目标存储块的状态,若所述目标存储块为坏块,
对目标存储块进行操作之后判断目标逻辑地址属于工作区还是备用区,
若目标逻辑地址属于工作区,且对应映射表中块状态标识为好块,则将从备用区最高位向低位顺序第一个块状态标识为未用好块的存储块作为替换块,在映射表中修改该替换块的块状态标识为已用好块,将该替换块相对于备用区最高位地址的偏移地址和坏块标识写入映射表,
若目标逻辑地址属于工作区,且对应映射表中块状态标识为坏块,则先在映射表中将当前替换块的块状态标识修改为坏块,再将从备用区最高位向低位顺序第一个块状态标识为未用好块的存储块作为新替换块,在映射表中修改该新替换块的块状态标识为已用好块,将该新替换块相对于备用区最高位地址的偏移地址写入映射表。
作为一种优选方案,所述MRAM控制模块还用于:若所述目标逻辑地址属于工作区,且根据所述块状态标识确定所述存储块好块,则目标物理地址等于目标逻辑地址;
若所述目标逻辑地址属于备用区,判断所述目标逻辑地址对应的块状态标识是否为未用好块;若为未用好块,则目标物理地址等于目标逻辑地址。
作为一种优选方案,所述指令解析模块,MRAM控制模块,坏块管理模块,NAND Flash控制模块为大规模可编程阵列。
作为一种优选方案,所述坏块管理模块还用于:若目标逻辑地址属于映射表的备用区,则在映射表中将该目标逻辑地址对应的块状态标识修改为坏块。
与现有技术相比,本发明具有如下的有益效果:
相对于现有技术中标记坏块位表法本发明明显具有响应速度快的优势,现有技术中标记坏块位表法需要查询坏块位表才能获知坏块的具体位置,降低了响应速度,而本发明通过映射表中块状态标识能在得到逻辑地址之后快速获知该逻辑地址指向的存储块的情况,无需进行额外的查询。相对于现有技术中坏块保留替换法中物理地址直接映射的方法,本发明仅仅需要在映射表中的工作区坏块存储偏移地址,减少了存储资源消耗,且通过坏块管理模块对映射表的实时更新保证了工作区存储块的可用性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图中:
图1是一种可选的NAND Flash坏块管理方法流程示意图;
图2是一种可选的NAND Flash坏块管理系统功能示意框图;
图3是另一种可选的NAND Flash坏块管理方法流程示意图。
具体实施方式
下文结合附图以具体实施例的方式对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,还可以使用其他的实施例,或者对本文列举的实施例进行结构和功能上的修改,而不会脱离本发明的范围和实质。
相对于现有技术中标记坏块位表法本发明明显具有响应速度快的优势,现有技术中标记坏块位表法需要查询坏块位表才能获知坏块的具体位置,降低了响应速度,而本发明通过映射表中块状态标识能在得到逻辑地址之后快速获知该逻辑地址指向的存储块的情况,无需进行额外的查询。相对于现有技术中坏块保留替换法中物理地址直接映射的方法,本发明仅仅需要在映射表中的工作区坏块存储偏移地址,减少了存储资源消耗,且通过坏块管理模块对映射表的实时更新保证了工作区存储块的可用性。本发明算法简单,能够避免存储器操作中因管理算法复杂而对存取速度产生的影响。由于判定存储器坏块管理方法优良的主要因素就在于数据的存取速度、系统的资源占用量以及管理算法的复杂程度,本发明相比较现有技术具有明显的优势。
在本发明提供的一种NAND Flash坏块管理方法的实施例中,如图1所示,包括:
步骤1,建立NAND Flash存储阵列中存储块与逻辑地址对应关系的映射表,且所述映射表中的逻辑地址都对应配置有块状态标识,所述映射表中逻辑地址分为工作区和备用区,所述块状态标识为坏块的工作区逻辑地址还配置有偏移地址;
步骤2,接收外部指令解析获得操作指令和目标逻辑地址;
步骤3,判断所述目标逻辑地址属于工作区还是备用区,若所述目标逻辑地址属于工作区,且根据所述块状态标识确定所述存储块为坏块,则目标物理地址等于所述备用区最高位地址减去所述偏移地址;
步骤4,根据所述操作指令对所述目标物理地址对应的目标存储块进行操作;
步骤5,检验所述目标存储块的状态,若所述目标存储块为坏块;
步骤6,判断目标逻辑地址属于工作区还是备用区,
若目标逻辑地址属于工作区,且对应映射表中块状态标识为好块,则将从备用区最高位向低位顺序第一个块状态标识为未用好块的存储块作为替换块,在映射表中修改该替换块的块状态标识为已用好块,将该替换块相对于备用区最高位地址的偏移地址和坏块标识写入映射表中所述目标逻辑地址对应的物理地址和块状态标识,返回步骤2,
若目标逻辑地址属于工作区,且对应映射表中块状态标识为坏块,则先在映射表中将当前替换块的块状态标识修改为坏块,再将从备用区最高位向低位顺序第一个块状态标识为未用好块的存储块作为新替换块,在映射表中修改该新替换块的块状态标识为已用好块,将该新替换块相对于备用区最高位地址的偏移地址写入映射表中所述目标逻辑地址对应的物理地址和块状态标识,返回步骤2。
步骤1中所述映射表中工作区的逻辑地址设置为小于所述备用区的逻辑地址。从备用区最高位向低位顺序第一个块状态标识为未用好块的存储块作为新替换块,即是从远离工作区的地址开始顺序取好块,避免和降低在接近工作区的地址取好块而由可能出现的操作失误带来的影响。
本发明主要保护对坏块的管理方法,和遇到坏块的数据存取方式。步骤3还包括:若所述目标逻辑地址属于工作区,且根据所述块状态标识确定所述存储块好块,则目标物理地址等于目标逻辑地址。若所述目标逻辑地址属于备用区,判断所述目标逻辑地址对应的块状态标识是否为未用好块;若为已用块或坏块,则返回步骤2;若为未用好块,则目标物理地址等于目标逻辑地址。目标逻辑地址属于备用区的情况可能为指令的输入有误,因此若为已用块或坏块,不对备用区块进行任何操作,也不对映射表进行操作。
步骤6还包括:若目标逻辑地址属于映射表的备用区,则在映射表中将该目标逻辑地址对应的块状态标识修改为坏块。由于备用区仅仅有块状态标识,而无偏移地址,因此仅需要对块该备用区块本身对应的块状态做修改,其不存在替换块的变更。
步骤5中检验所述目标存储块的状态的过程包括:
在所述目标存储块检测纠错码错误的数量超过预设阈值时,或
在所述目标存储块檫除或编程结束后检测到NAND Flash状态寄存器中D0位为1时,
确定所述目标存储块为坏块。
基于同一发明构思,本发明提出了一种NAND Flash坏块管理系统,如图2所示,包括:MRAM,指令解析模块,MRAM控制模块,坏块管理模块,NAND Flash控制模块,NAND Flash存储阵列;
所述MRAM用于:存储一NAND Flash存储阵列中存储块与逻辑地址对应关系的映射表,且所述映射表中的逻辑地址都对应配置有块状态标识,所述映射表中逻辑地址分为工作区和备用区,所述块状态标识为坏块的工作区逻辑地址还配置有偏移地址,工作区的块状态标识用1位表示,备用区的块状态标识用独特码表示;
所述指令解析模块用于:接收外部指令解析获得操作指令和目标逻辑地址;
所述MRAM控制模块用于:判断所述目标逻辑地址属于工作区还是备用区,若所述目标逻辑地址属于工作区,且根据所述块状态标识确定所述存储块为坏块,则目标物理地址等于所述备用区最高位地址减去所述偏移地址;
所述NAND Flash控制模块用于:根据所述操作指令对NAND Flash存储阵列中所述目标物理地址对应的目标存储块进行操作;
所述坏块管理模块用于:检验所述目标存储块的状态,若所述目标存储块为坏块,
对目标存储块进行操作之后判断目标逻辑地址属于工作区还是备用区,
若目标逻辑地址属于工作区,且对应映射表中块状态标识为好块,则将从备用区最高位向低位顺序第一个块状态标识为未用好块的存储块作为替换块,在映射表中修改该替换块的块状态标识为已用好块,将该替换块相对于备用区最高位地址的偏移地址和坏块标识写入映射表中所述目标逻辑地址对应的物理地址和块状态标识,
若目标逻辑地址属于工作区,且对应映射表中块状态标识为坏块,则先在映射表中将当前替换块的块状态标识修改为坏块,再将从备用区最高位向低位顺序第一个块状态标识为未用好块的存储块作为新替换块,在映射表中修改该新替换块的块状态标识为已用好块,将该新替换块相对于备用区最高位地址的偏移地址写入映射表中所述目标逻辑地址对应的物理地址和块状态标识。
所述MRAM控制模块还用于:若所述目标逻辑地址属于工作区,且根据所述块状态标识确定所述存储块好块,则目标物理地址等于目标逻辑地址;
若所述目标逻辑地址属于备用区,判断所述目标逻辑地址对应的块状态标识是否为未用好块;若为未用好块,则目标物理地址等于目标逻辑地址。
所述指令解析模块,MRAM控制模块,坏块管理模块,NAND Flash控制模块都是可编程阵列(FPGA)。本发明解决了NAND Flash存储阵列坏块扩散和快速映射,减少了有效块的检索时间,降低了内存资源需求。本实施例采用FPGA处理结构,提高了处理实时性和系统集成度,降低了硬件设计需求,适于航天、航空领域NAND Flash型大容量固态存储设备。
所述坏块管理模块还用于:若目标逻辑地址属于映射表的备用区,则在映射表中将该目标逻辑地址对应的块状态标识修改为坏块。
以下提供一种实施例,该实施例的目的在于提供一种基于FPGA的NAND Flash坏块管理系统,解决了NAND Flash存储阵列坏块扩散和需要快速映射的问题,减少了有效块的检索时间,降低了内存资源需求。
为了实现上述目的,本实施例提供了一种基于FPGA的NAND Flash坏块管理系统,该系统包括控制组件和用以数据存储的NAND Flash存储阵列及存储地址映射表的MRAM;所述控制组件包括指令解析模块、坏块管理模块、MRAM控制模块和NAND Flash控制模块;
其中,指令解析模块用以,接收控制指令并完成指令解析,根据逻辑地址读取地址映射表中的数据;
MRAM控制模块用以,根据指令解析模块指令和逻辑地址,读取或写入MRAM数据。MRAM(Magnetic Random Access Memory)是一种非挥发性的磁性随机存储器,本实施例中用于存储映射表。
坏块管理模块用以:根据目标逻辑地址和映射表中的块状态标识、偏移地址获得目标物理地址。当逻辑地址位于工作区内时,如果块标识为好块(数据最高位),则目标物理地址等于目标逻辑地址;如果块状态标识为坏块(用数据最高位标识,0为好块,1为坏块),则目标物理地址等于NNAD Flash总块数(最高位地址)减去偏移地址。当目标逻辑地址位于备用区内时,则物理地址等于逻辑地址,如果数据标识是坏块,则跳过本次操作。
坏块管理模块还用以:在完成指令操作后对已操作的块进行存储块检验,接收NANDFlash控制模块的块状态,如果是坏块,则从备用区尾部(最高位地址)检索一个未用的好块,判断当前目标逻辑地址中对应块标识是否是好块,
如果是好块,则将坏块标识和偏移地址写入目标逻辑地址对应的映射表中,并将备用区对应地址写入“已用好块”标识;
如果是坏块,首先将对应物理地址(即当前的替换块)的块状态标识修改为“坏块”,然后则将新替换块的偏移地址写入目标逻辑地址对应的映射表中,并将备用区新替换块对应地址的块状态写入“已用好块”标识。
MRAM控制模块用以,根据坏块管理模块的指令和目标逻辑地址,读取或写入MRAM存储的映射表;
NAND Flash控制模块用以,根据目标物理地址和指令执行相应的擦除、和/或记录、和/或回放操作。
以下结合图3所示的一种流程图对本发明进一步详细说明。
如附图3所示的本发明提出的一种基于FPGA的NAND Flash坏块管理方法的一较佳实施例的流程框图,包括以下几个步骤:
S1,状态初始化后或者操作结束后进入空闲状态,等待新的操作指令。
S2,接收总线指令及解析,获取指令和目标逻辑地址。
S3,读取映射表中的数据,如果目标逻辑地址大于工作区最大地址(工作区在前,备用区在后)时,映射表中数据为未用好块标识,则进入S4,否则进入S10状态;如果目标逻辑地址小于工作区最大地址(工作区在前,备用区在后)时,映射表中数据最高位为好块标识,则进入S4,否则进入S5状态。
S4,计算目标物理地址等于目标逻辑地址。
S5,计算目标物理地址等于块总数减去偏移地址
S6,存储阵列根据指令和计算所得的目标物理地址进行擦除、存储和回读,操作完毕进入S7状态。
S7,确定存储阵列块状态,如果发生坏块,且目标逻辑地址大于工作区最大地址,则进入S8状态;如果发生坏块且目标逻辑地址小于工作区最大地址,且映射数据最高位为好块标记,则进入S9状态;如果发生坏块且目标逻辑地址小于工作区最大地址,且映射数据最高位为坏块标记,则进入S8状态。
S8,将备用区地址数据重新标识为坏块,如果目标逻辑地址小于工作区最大地址,则进入S9状态,否则进入S10状态。
S9,重新检索备用区,获取未用好块,标记为“已用好块”;同时将新的偏移地址写入目标逻辑地址对应的数据中。
S10,流程结束,退出至S1状态,等待下一次操作。
以上所述仅为本发明的较佳实施例,本领域技术人员知悉,在不脱离本发明的精神和范围的情况下,可以对这些特征和实施例进行各种改变或等同替换。另外,在本发明的教导下,可以对这些特征和实施例进行修改以适应具体的情况及材料而不会脱离本发明的精神和范围。因此,本发明不受此处所公开的具体实施例的限制,所有落入本申请的权利要求范围内的实施例都属于本发明的保护范围。