CN112596668A - 一种存储器的坏块处理方法及系统 - Google Patents

一种存储器的坏块处理方法及系统 Download PDF

Info

Publication number
CN112596668A
CN112596668A CN202011337815.0A CN202011337815A CN112596668A CN 112596668 A CN112596668 A CN 112596668A CN 202011337815 A CN202011337815 A CN 202011337815A CN 112596668 A CN112596668 A CN 112596668A
Authority
CN
China
Prior art keywords
block
address
replacement
bad
bad block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011337815.0A
Other languages
English (en)
Inventor
李伟
刘锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Aisino Corp
Original Assignee
Aisino Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Aisino Corp filed Critical Aisino Corp
Priority to CN202011337815.0A priority Critical patent/CN112596668A/zh
Publication of CN112596668A publication Critical patent/CN112596668A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

本发明公开了一种存储器的坏块处理方法及系统,包括:步骤1,上电检查存储器的有效区域中的存储块是否完成初始化标识置位;步骤2,当完成所述初始化标识置位时,选取坏块替换区域中起始的地址对应的替换块为当前的替换块,并判断当前的替换块是否为坏块;步骤3,若当前的替换块为好块,则读取所述当前的替换块的spare区中存储的替换块的地址,并当确定替换块的地址为有效时,申请动态内存并创建数据节点,填充该新创建的数据节点的结点信息并修改上个节点的地址指针;步骤4,从所述坏块替换区域中选取下一个替换块作为当前的替换块,并返回步骤3;步骤5,当遍历完成所述坏块替换区域中的所有替换块时,将多个数据节点连接,以建立坏块映射表。

Description

一种存储器的坏块处理方法及系统
技术领域
本发明涉及存储设备技术领域,并且更具体地,涉及一种存储器的坏块处理方法及系统。
背景技术
NandFlash存储器是非易失性存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。NandFlash存储器具有容量较大,改写速度快、价格低廉等优点,适用于大量数据的存储,因而在业界得到了越来越广泛的应用,如嵌入式产品中包括数码相机、手机、录音笔等。
由于NandFlash的工艺的限制,不能保证在其生命周期中保持性能的可靠。因此,在NAND的生产中及使用过程中会产生坏块。坏块的特性是:当编程/擦除这个块时,不能将某些位拉高,最终表现为存储数据错误。按照坏块产生的原因,坏块可以分为两大类固有坏块和使用坏块。固有坏块是生产过程中产生的坏块,一般芯片原厂会在出厂时将坏块标记;使用坏块是对某块进行多次写入和擦除,造成的数据块损坏。
通常,对NandFlash坏块的处理策略是采用坏块替换法。这种方法就是将NandFlash分为有效区和替换区,当遇到坏块时,从替换区查找一个好块,建立坏块地址和替换区的好块地址的映射关系,并将映射关系表存储在替换区的坏块管理信息中。坏块替换法将映射信息保存在NandFlash中,如果映射信息所在的块变成坏块,映射信息就会全部丢失,将造成数据严重紊乱。如果更新映射信息比较频繁,就会反复擦写修改替换区,也会极大缩短Flash的使用寿命。而且,为了提高效率,一般会创建一个数组缓存映射信息,这种管理方式对于大容量的NandFlash,需要占用大量RAM资源。
发明内容
本发明提出一种存储器的坏块处理方法及系统,以解决如何对NandFlash存储器的坏块进行处理的问题。
为了解决上述问题,根据本发明的一个方面,提供了一种存储器的坏块处理方法,所述方法包括:
步骤1,上电检查存储器的有效区域中的存储块是否完成初始化标识置位;
步骤2,当完成所述初始化标识置位时,选取坏块替换区域中起始的地址对应的替换块为当前的替换块,并根据当前的替换块的spare区的数据判断当前的替换块是否为坏块;
步骤3,若当前的替换块为好块,则读取所述当前的替换块的spare区中存储的替换块的地址,并当确定替换块的地址为有效时,申请动态内存并创建数据节点,填充该新创建的数据节点的结点信息并修改上个节点的地址指针;
步骤4,从所述坏块替换区域中选取下一个替换块作为当前的替换块,并返回步骤3,直至遍历完成所述坏块替换区域中的所有替换块;
步骤5,当遍历完成所述坏块替换区域中的所有替换块时,将多个数据节点连接,以建立坏块映射表。
优选地,其中所述方法还包括:
若所述初始化标识未置位,则依次读取数据有效区域中的每个存储块的spare区的数据,并根据每个存储块的所述spare区的数据确定该存储块是否为出厂坏块,直至遍历完所述数据有效区域中的所有存储块,将存储器初始化标识置位,并进入步骤2;
其中,当确定某个存储块为出厂坏块时,从坏块替换区的起始存储块开始递增以确定为好块的替换块,并将该出厂坏块的地址写入到所述为好块的替换块的spare区中,形成映射关系。
优选地,其中使用全局变量BBTHead记录链表的起始的地址,初始化为空,每检测到一个替换坏块,就申请一个结点,将结点地址更新到上个结点的地址指针域,同时完成坏地址和替换块的地址的填充,将地址指针域置为空。
优选地,其中所述节点信息,包括:为坏块的存储块的地址、替换块的地址和下个结点的地址指针。
优选地,其中所述方法还包括:
对读写操作请求涉及的存储块的地址进行合法性判断,当所述地址合法时,从所述坏块映射表中查找所述地址;
若查找到所述地址,则根据映射关系读取对应的替换块的地址,并确定所述替换地址为操作地址;若未查找到所述地址,则确定所述地址为操作地址;
在与所述操作地址对应的操作块上进行读写操作。
优选地,其中所述方法还包括:
当擦除或者页写入对应的操作块为坏块时,确定该坏块为请求块,将坏块标记写入到该操作块的Spare区;
在替换区查找为好块的替换块作为新的操作块,将所述请求块的地址写入到所述新的操作块的spare区;
在所述坏块映射表中查找所述坏块的地址,若所述坏块映射表中不包含请求块的地址,则在所述坏块映射表中申请新的结点信息,并将所述请求块的地址添加到映射表的链表当中;若所述坏块映射表包含请求块的地址,在所述坏块映射表的链表当中查找所述请求块所在的数据结点,并更新结点的替换块的地址为所述新的操作块的地址。
根据本发明的另一个方面,提供了一种存储器的坏块处理系统,所述系统包括:
检查单元,用于上电检查存储器的有效区域中的存储块是否完成初始化标识置位;
坏块判断单元,用于当完成所述初始化标识置位时,选取坏块替换区域中起始的地址对应的替换块为当前的替换块,并根据当前的替换块的spare区的数据判断当前的替换块是否为坏块;
数据节点创建单元,用于若当前的替换块为好块,则读取所述当前的替换块的spare区中存储的替换块的地址,并当确定替换块的地址为有效时,申请动态内存并创建数据节点,填充该新创建的数据节点的结点信息并修改上个节点的地址指针;
当前的替换块更新单元,用于从所述坏块替换区域中选取下一个替换块作为当前的替换块,并在当前的替换块为好块时进入数据节点创建单元,直至遍历完成所述坏块替换区域中的所有替换块;
坏块映射表建立单元,用于当遍历完成所述坏块替换区域中的所有替换块时,将多个数据节点连接,以建立坏块映射表。
优选地,其中所述系统还包括:
初始化标识置位单元,用于若所述初始化标识未置位,则依次读取数据有效区域中的每个存储块的spare区的数据,并根据每个存储块的所述spare区的数据确定该存储块是否为出厂坏块,直至遍历完所述数据有效区域中的所有存储块,将存储器初始化标识置位;
其中,当确定某个存储块为出厂坏块时,从坏块替换区的起始存储块开始递增以确定为好块的替换块,并将该出厂坏块的地址写入到所述为好块的替换块的spare区中,形成映射关系。
优选地,其中使用全局变量BBTHead记录链表的起始的地址,初始化为空,每检测到一个替换坏块,就申请一个结点,将结点地址更新到上个结点的地址指针域,同时完成坏地址和替换块的地址的填充,将地址指针域置为空。
优选地,其中所述节点信息,包括:为坏块的存储块的地址、替换块的地址和下个结点的地址指针。
优选地,其中所述系统还包括:第一处理单元,用于:
对读写操作请求涉及的存储块的地址进行合法性判断,当所述地址合法时,从所述坏块映射表中查找所述地址;
若查找到所述地址,则根据映射关系读取对应的替换块的地址,并确定所述替换地址为操作地址;若未查找到所述地址,则确定所述地址为操作地址;
在与所述操作地址对应的操作块上进行读写操作。
优选地,其中所述系统还包括:第二处理单元,用于:
当擦除或者页写入对应的操作块为坏块时,确定该坏块为请求块,将坏块标记写入到该操作块的Spare区;
在替换区查找为好块的替换块作为新的操作块,将所述请求块的地址写入到所述新的操作块的spare区;
在所述坏块映射表中查找所述坏块的地址,若所述坏块映射表中不包含请求块的地址,则在所述坏块映射表中申请新的结点信息,并将所述请求块的地址添加到映射表的链表当中;若所述坏块映射表包含请求块的地址,在所述坏块映射表的链表当中查找所述请求块所在的数据结点,并更新结点的替换块的地址为所述新的操作块的地址。
本发明提供了一种存储器的坏块处理方法及系统,充分利用了NandFlash的Spare区,将映射信息保存到对应替换块的Spare区,这样即使替换块出现坏块,查找新的好块重新映射到有效区的坏块,避免了由于替换块变为坏块,映射信息丢失的问题。同时,坏块映射表没有整体保存在NandFlash中,而是和数据内容保存在同一个存储块,更新映射信息时只是在新的替换块中增加数据和当前块的映射记录,不会对NandFlash多次擦写修改,使得映射表不易丢失,稳定性大大提高,有效延长了NandFlash的使用寿命。另外,使用了动态内存对坏块映射表进行缓存,提高了坏块管理效率,由于检测到坏块才申请一个结点的RAM资源,减少了对硬件资源的占用,对于RAM资源有限的设备实现坏块管理十分方便。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
图1为根据本发明实施方式的存储器的坏块处理方法100的流程图;
图2为根据本发明实施方式的NandFlash存储器的分区和Spare区数据格式的示意图;
图3为根据本发明实施方式的电初始化NandFlash的流程图;
图4为根据本发明实施方式的进行坏块映射的流程图;
图5为根据本发明实施方式的操作指定块数据的流程图;
图6为根据本发明实施方式的坏块映射表更新的流程图;
图7为根据本发明实施方式的存储器的坏块处理系统700的结构示意图。
具体实施方式
现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
图1为根据本发明实施方式的存储器的坏块处理方法100的流程图。如1所示,本发明实施方式提供的存储器的坏块处理方法,充分利用了NandFlash的Spare区,将映射信息保存到对应替换块的Spare区,这样即使替换块出现坏块,查找新的好块重新映射到有效区的坏块,避免了由于替换块变为坏块,映射信息丢失的问题。同时,坏块映射表没有整体保存在NandFlash中,而是和数据内容保存在同一个存储块,更新映射信息时只是在新的替换块中增加数据和当前块的映射记录,不会对NandFlash多次擦写修改,使得映射表不易丢失,稳定性大大提高,有效延长了NandFlash的使用寿命。另外,使用了动态内存对坏块映射表进行缓存,提高了坏块管理效率,由于检测到坏块才申请一个结点的RAM资源,减少了对硬件资源的占用,对于RAM资源有限的设备实现坏块管理十分方便。本发明实施方式提供的存储器的坏块处理方法100,从步骤101处开始,在步骤101,上电检查存储器的有效区域中的存储块是否完成初始化标识置位。
优选地,其中所述方法还包括:
若所述初始化标识未置位,则依次读取数据有效区域中的每个存储块的spare区的数据,并根据每个存储块的所述spare区的数据确定该存储块是否为出厂坏块,直至遍历完所述数据有效区域中的所有存储块,将存储器初始化标识置位,并进入步骤102;
其中,当确定某个存储块为出厂坏块时,从坏块替换区的起始存储块开始递增以确定为好块的替换块,并将该出厂坏块的地址写入到所述为好块的替换块的spare区中,形成映射关系。
在本发明的实施方式中,在RAM较小的MCU上实现NandFlash的坏块管理。如图2所示,将NandFlash分为两个区域:数据有效区和坏块替换区。数据有效区是实际可用的存储区域,坏块替换区是数据有效区坏块的重定向区域。数据有效区和坏块替换区的大小根据实际需求划分,一般是按照固定比例进行划分。
上电后,MCU自动检查NandFlash,建立坏块地址映射表。其基本实现步骤如下:
步骤1,检查NandFlash初始化标识是否置位,如果已经置位,则创建坏块映射表。否则,执行步骤2。
步骤2,检测NandFlash存储设备的出厂坏块标志位是否置位,若是,则判定为坏块,并在坏块替换区查找一个好块做为坏块的映射块,将该坏块的块号信息存储至该好块的Spare区。
步骤3,重复执行步骤2,直到数据有效区的所有存储块都检测完毕;出厂坏块都检测完毕后,将NandFlash初始化标识置位。
本发明实施例一的设备首次上电对NandFlash进行初始化操作如图3所示。其中,将NandFlash划分为两个区域:数据有效区A和坏块替换区B,数有效区A是实际可寻址的数据存储块,坏块替换区是是数据有效区A中坏块的替换块。数据有效区A和坏块替换区B的大小一般按固定比例分配,如对于一个块总数为4096的NandFlash,按照7:1分配,从第0块到第3583块是数据有效区A,第3584块到第4095块是坏块替换区B。
具体的初始化流程如下:
S101:上电检查NandFlash初始化标识是否置位,是则执行实施例二的创建坏块映射表过程,否则执行S102。
其中,所述NandFlash初始化标识用于表明固有的出厂坏块扫描是否完成并记录下来,NandFlash初始化完成后标识置位。
S102:依次读取数据有效区A中每个存储块第0页或1页的Spare区数据,确定当前块是否是出厂坏块。如果不是坏块,重复执行S102;是坏块,执行S103。
一般的,NandFlash出厂时,会将第0页或第1页Spare区的第1个字节(有的是第6个字节)作为坏块标记,如果不是0xFF,就说明是坏块。
S103:从坏块替换区B的起始存储块开始递增确定替换块是否是出厂坏块,方法和S102类似。
S104:如果不是坏块,执行S105;如果是坏块,重复执行S103和S104,直到检索到好块或到达坏块替换区B的地址上限。
S105:在坏块替换区B找到了好块,将数据有效区A的坏块地址写入到替换好块,形成映射关系,保存位置在替换好块第0页的Spare区,具体格式参见图1。继续执行S102,直到将数据有效区A的所有存储块都遍历完成。
S106:遍历完成,NandFlash初始化标识置位。
在坏块替换区B查找好块的过程中,如果替换块的地址到达了坏块替换区B的地址上限,提示达到最大坏块处理能力,无法继续使用。
步骤102,当完成所述初始化标识置位时,选取坏块替换区域中起始的地址对应的替换块为当前的替换块,并根据当前的替换块的spare区的数据判断当前的替换块是否为坏块。
步骤103,若当前的替换块为好块,则读取所述当前的替换块的spare区中存储的替换块的地址,并当确定替换块的地址为有效时,申请动态内存并创建数据节点,填充该新创建的数据节点的结点信息并修改上个节点的地址指针。
优选地,其中使用全局变量BBTHead记录链表的起始的地址,初始化为空,每检测到一个替换坏块,就申请一个结点,将结点地址更新到上个结点的地址指针域,同时完成坏地址和替换块的地址的填充,将地址指针域置为空。
优选地,其中所述节点信息,包括:为坏块的存储块的地址、替换块的地址和下个结点的地址指针。
步骤104,从所述坏块替换区域中选取下一个替换块作为当前的替换块,并返回步骤103,直至遍历完成所述坏块替换区域中的所有替换块。
步骤105,当遍历完成所述坏块替换区域中的所有替换块时,将多个数据节点连接,以建立坏块映射表。
在本发明的实施方式中,当坏块映射表建立完成后,检测坏块替换区的Spare区,如果是坏块,跳过;否则,检查是否有坏块地址映射信息,有坏块地址映射,执行下一步。下一步包括:为地址映射结点申请动态RAM资源,将坏块和替换块的地址映射信息写入结点数据中,并记录当前替换块地址;重复上一步,直到检测到没有坏块地址映射信息或到达坏块替换区的地址上限。
本实施例二的坏块映射表的创建方法如图4所示。为了提高运行效率,快速找到坏块,本发明在设备上电完成初始化工作后,还在RAM中缓存了坏块映射表,将坏块和实际替换块一一映射,映射表以动态内存的方式进行管理,具体的创建流程如下。
S201:从坏块替换区B的起始地址开始,遍历替换区B各存储块的Spare区,根据坏块标识判断当前块是否坏块。
对块总数为4096的NandFlash,配置第0块到第3583块是数据有效区A,第3584块到第4095块是坏块替换区B,创建坏块映射表就是从NandFlash的第3584块开始遍历。
S202:如果是坏块,跳到替换区B的下个块,执行S201,直到替换区遍历完毕;
S203:如果是好块,检查替换块保存的坏块映射地址;
S204:替换地址为非全FF,表示是实际替换块。为数据结点申请动态内存,结点的信息包括坏块地址、替换块地址、下个结点的地址指针,填充本结点信息,并修改上个结点的地址指针。
本实例以链表方式将多个数据结点连接,建立坏块管理表,使用全局变量BBTHead记录链表的起始地址,初始化为空。每检测到一个替换坏块,就申请一个结点,将结点地址更新到上个结点的地址指针域,同时完成坏块地址和替换块地址的填充,将地址指针域置为空。
S205:更新当前替换块的地址,跳到替换区B的下个块,执行S201;
S206:替换地址为全FF,表明非实际替换块,且后续没有实际替换块,结束坏块替换区B的遍历,完成坏块映射表的创建。
优选地,其中所述方法还包括:
对读写操作请求涉及的存储块的地址进行合法性判断,当所述地址合法时,从所述坏块映射表中查找所述地址;
若查找到所述地址,则根据映射关系读取对应的替换块的地址,并确定所述替换地址为操作地址;若未查找到所述地址,则确定所述地址为操作地址;
在与所述操作地址对应的操作块上进行读写操作。
优选地,其中所述方法还包括:
当擦除或者页写入对应的操作块为坏块时,确定该坏块为请求块,将坏块标记写入到该操作块的Spare区;
在替换区查找为好块的替换块作为新的操作块,将所述请求块的地址写入到所述新的操作块的spare区;
在所述坏块映射表中查找所述坏块的地址,若所述坏块映射表中不包含请求块的地址,则在所述坏块映射表中申请新的结点信息,并将所述请求块的地址添加到映射表的链表当中;若所述坏块映射表包含请求块的地址,在所述坏块映射表的链表当中查找所述请求块所在的数据结点,并更新结点的替换块的地址为所述新的操作块的地址。
在本发明的实施方式中,坏块地址映射表建立后,等待对NandFlash的读写操作,实现的流程如下:
步骤1,根据请求的块号,检查地址映射表的坏块中是否包含此块号,没有则对此当前块进行操作,有则执行步骤2。
步骤2,读出当前坏块的映射结点数据,确定当前坏块对应的替换块,对替换块进行操作。
步骤3,如果擦除或写操作出错,表明出现新坏块,在Spare区设置该坏块的坏块标识。
步骤4,从当前替换块的下一块起,在坏块替换区查找一个好块做为新坏块的映射块,将新坏块的块号信息存储至好块的Spare区。
步骤5,申请RAM资源创建一个坏块地址映射结点,记录新坏块和对应替换块的地址信息,更新当前替换块地址。
上述过程需要对请求的块号进行合法性检查,保证块号的范围在数据有效区的范围内。
上述替换块的查找,是从坏块替换区的低地址到高地址逐渐递增的。
如果找到的替换块是坏块,则在Spare区设置该坏块的坏块标识,更新当前替换块地址,跳过此替换块继续在坏块替换区查找下个好块。
如果当前替换块的地址到达了坏块替换区的地址上限,提示达到最大坏块处理能力,无法继续使用。
本实施例三是依据发明对指定数据块进行操作的方法,包括读出、写入和擦除三种操作,三种操作都涉及了坏块映射表的查找,后两种操作可能还会涉及坏块映射表的更新。
具体地,读写操作过程如图5所示,包括:
S301:判断请求块是否合法;
具体地,若所述操作请求涉及的块号是否在数据有效区A的范围内则所述块号合法,否则请求块块号不合法。
S302:在缓存的坏块映射表中查找是否包含此请求块的坏块替换信息;
本实施例是采用链表方式管理坏块映射表,从链表头BBTHead开始,依次获取各个数据结点的信息,如果有坏块地址和请求块地址一致,表示请求块为坏块,否则,请求块为好块。
S303:请求块是坏块,确定映射的替换块信息,替换块地址赋值给操作块M,对操作块进行读写操作;
在本实施例中,如果是写入操作,为了将数据和映射信息一起进行校验保护,需要将操作块的映射信息读出,然后对数据和映射信息进行ECC校验,将数据、映射信息和ECC校验值写入到NandFlash硬件。
S304:请求块是好块,请求块地址赋值给操作块地址M,对操作块进行读写操作。
S305:操作块是好块,完成读写操作。
进一步的,NandFlash在使用过程中,如果块擦除或者页写入出错,就表示此操作块为坏块,需要进行坏块替换信息的更新。如图6所示,具体过程包括:
S306:操作块是坏块,将坏块标记写入到此操作块的Spare区。
S307:从当前替换块的地址开始,在坏块替换区B范围内查找可以替换的好块,查找过程和实例一类似,此处不再赘述。
S308:更新操作块地址为N,执行数据写入操作,同时将坏块信息(请求块地址)写入到操作块N第0页的Spare区。
如果执行的是页写入操作,除了写入新的数据,还需要对原操作块的其它数据进行搬移。以请求块地址为X,页地址为Y的位置写入数据为例,请求块X的对应的操作块地址是M,更新后的操作块地址是N,将原操作块M的第0~Y-1页复制到新操作块N的对应位置,将新数据写入到新操作块N的第Y页,将原操作块M的Y页以后的数据复制到新操作块N的对应位置。
S309:在坏块映射表的坏块地址中查找请求块地址。
S310:映射表不包含请求块地址,为坏块映射表申请新的结点信息,将坏块映射信息添加到映射表的链表当中。
S311:映射表包含请求块地址,在坏块映射表的链表当中查找请求块所在的数据结点,更新结点的替换块地址为N。
更进一步的,为了保护映射信息的完整性和正确性,还加入了掉电保护机制。
在写入数据的过程中,将数据、替换映射信息进行了数据ECC校验,且写入校验值,如果写入过程掉电,再次读出ECC,校验会失败。
上电后,主控会依次读出NandFlash替换区的第0页数据,进行ECC检查,ECC不对的数据块,主控对此数据块的第0页进行初始化擦除工作,保证替换信息中不会出现脏数据。
本发明的关键点在于:将NandFlash分成两个区域,有效区的坏块和替换区的好块一一映射,使用替换区的Spare区保存坏块地址,不占用额外空间存储映射关系;Flash不保存坏块管理表,缓存在RAM中,上电后遍历替换区,读取Spare保存的坏块信息,建立坏块管理表;坏块管理表以动态内存方式管理,一条坏块映射信息申请一个数据结点,极大节省对RAM资源的占用。
图7为根据本发明实施方式的存储器的坏块处理系统700的结构示意图。如图7所示,本发明实施方式提供的存储器的坏块处理系统700,包括:检查单元701、坏块判断单元702、数据节点创建单元703、当前的替换块更新单元704和坏块映射表建立单元705。
优选地,所述检查单元701,用于上电检查存储器的有效区域中的存储块是否完成初始化标识置位。
优选地,其中所述系统还包括:
初始化标识置位单元,用于若所述初始化标识未置位,则依次读取数据有效区域中的每个存储块的spare区的数据,并根据每个存储块的所述spare区的数据确定该存储块是否为出厂坏块,直至遍历完所述数据有效区域中的所有存储块,将存储器初始化标识置位;
其中,当确定某个存储块为出厂坏块时,从坏块替换区的起始存储块开始递增以确定为好块的替换块,并将该出厂坏块的地址写入到所述为好块的替换块的spare区中,形成映射关系。
优选地,所述坏块判断单元702,用于当完成所述初始化标识置位时,选取坏块替换区域中起始的地址对应的替换块为当前的替换块,并根据当前的替换块的spare区的数据判断当前的替换块是否为坏块。
优选地,所述数据节点创建单元703,用于若当前的替换块为好块,则读取所述当前的替换块的spare区中存储的替换块的地址,并当确定替换块的地址为有效时,申请动态内存并创建数据节点,填充该新创建的数据节点的结点信息并修改上个节点的地址指针。
优选地,其中使用全局变量BBTHead记录链表的起始的地址,初始化为空,每检测到一个替换坏块,就申请一个结点,将结点地址更新到上个结点的地址指针域,同时完成坏地址和替换块的地址的填充,将地址指针域置为空。
优选地,其中所述节点信息,包括:为坏块的存储块的地址、替换块的地址和下个结点的地址指针。
优选地,所述当前的替换块更新单元704,用于从所述坏块替换区域中选取下一个替换块作为当前的替换块,并在当前的替换块为好块时进入数据节点创建单元,直至遍历完成所述坏块替换区域中的所有替换块。
优选地,所述坏块映射表建立单元705,用于当遍历完成所述坏块替换区域中的所有替换块时,将多个数据节点连接,以建立坏块映射表。
优选地,其中所述系统还包括:第一处理单元,用于:
对读写操作请求涉及的存储块的地址进行合法性判断,当所述地址合法时,从所述坏块映射表中查找所述地址;
若查找到所述地址,则根据映射关系读取对应的替换块的地址,并确定所述替换地址为操作地址;若未查找到所述地址,则确定所述地址为操作地址;
在与所述操作地址对应的操作块上进行读写操作。
优选地,其中所述系统还包括:第二处理单元,用于:
当擦除或者页写入对应的操作块为坏块时,确定该坏块为请求块,将坏块标记写入到该操作块的Spare区;
在替换区查找为好块的替换块作为新的操作块,将所述请求块的地址写入到所述新的操作块的spare区;
在所述坏块映射表中查找所述坏块的地址,若所述坏块映射表中不包含请求块的地址,则在所述坏块映射表中申请新的结点信息,并将所述请求块的地址添加到映射表的链表当中;若所述坏块映射表包含请求块的地址,在所述坏块映射表的链表当中查找所述请求块所在的数据结点,并更新结点的替换块的地址为所述新的操作块的地址。
本发明的实施例的存储器的坏块处理系统700与本发明的另一个实施例的存储器的坏块处理方法100相对应,在此不再赘述。
已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。
通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

Claims (12)

1.一种存储器的坏块处理方法,其特征在于,所述方法包括:
步骤1,上电检查存储器的有效区域中的存储块是否完成初始化标识置位;
步骤2,当完成所述初始化标识置位时,选取坏块替换区域中起始的地址对应的替换块为当前的替换块,并根据当前的替换块的spare区的数据判断当前的替换块是否为坏块;
步骤3,若当前的替换块为好块,则读取所述当前的替换块的spare区中存储的替换块的地址,并当确定替换块的地址为有效时,申请动态内存并创建数据节点,填充该新创建的数据节点的结点信息并修改上个节点的地址指针;
步骤4,从所述坏块替换区域中选取下一个替换块作为当前的替换块,并返回步骤3,直至遍历完成所述坏块替换区域中的所有替换块;
步骤5,当遍历完成所述坏块替换区域中的所有替换块时,将多个数据节点连接,以建立坏块映射表。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述初始化标识未置位,则依次读取数据有效区域中的每个存储块的spare区的数据,并根据每个存储块的所述spare区的数据确定该存储块是否为出厂坏块,直至遍历完所述数据有效区域中的所有存储块,将存储器初始化标识置位,并进入步骤2;
其中,当确定某个存储块为出厂坏块时,从坏块替换区的起始存储块开始递增以确定为好块的替换块,并将该出厂坏块的地址写入到所述为好块的替换块的spare区中,形成映射关系。
3.根据权利要求1所述的方法,其特征在于,使用全局变量BBTHead记录链表的起始的地址,初始化为空,每检测到一个替换坏块,就申请一个结点,将结点地址更新到上个结点的地址指针域,同时完成坏地址和替换块的地址的填充,将地址指针域置为空。
4.根据权利要求1所述的方法,其特征在于,所述节点信息,包括:为坏块的存储块的地址、替换块的地址和下个结点的地址指针。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对读写操作请求涉及的存储块的地址进行合法性判断,当所述地址合法时,从所述坏块映射表中查找所述地址;
若查找到所述地址,则根据映射关系读取对应的替换块的地址,并确定所述替换地址为操作地址;若未查找到所述地址,则确定所述地址为操作地址;
在与所述操作地址对应的操作块上进行读写操作。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当擦除或者页写入对应的操作块为坏块时,确定该坏块为请求块,将坏块标记写入到该操作块的Spare区;
在替换区查找为好块的替换块作为新的操作块,将所述请求块的地址写入到所述新的操作块的spare区;
在所述坏块映射表中查找所述坏块的地址,若所述坏块映射表中不包含请求块的地址,则在所述坏块映射表中申请新的结点信息,并将所述请求块的地址添加到映射表的链表当中;若所述坏块映射表包含请求块的地址,在所述坏块映射表的链表当中查找所述请求块所在的数据结点,并更新结点的替换块的地址为所述新的操作块的地址。
7.一种存储器的坏块处理系统,其特征在于,所述系统包括:
检查单元,用于上电检查存储器的有效区域中的存储块是否完成初始化标识置位;
坏块判断单元,用于当完成所述初始化标识置位时,选取坏块替换区域中起始的地址对应的替换块为当前的替换块,并根据当前的替换块的spare区的数据判断当前的替换块是否为坏块;
数据节点创建单元,用于若当前的替换块为好块,则读取所述当前的替换块的spare区中存储的替换块的地址,并当确定替换块的地址为有效时,申请动态内存并创建数据节点,填充该新创建的数据节点的结点信息并修改上个节点的地址指针;
当前的替换块更新单元,用于从所述坏块替换区域中选取下一个替换块作为当前的替换块,并在当前的替换块为好块时进入数据节点创建单元,直至遍历完成所述坏块替换区域中的所有替换块;
坏块映射表建立单元,用于当遍历完成所述坏块替换区域中的所有替换块时,将多个数据节点连接,以建立坏块映射表。
8.根据权利要求7所述的系统,其特征在于,所述系统还包括:
初始化标识置位单元,用于若所述初始化标识未置位,则依次读取数据有效区域中的每个存储块的spare区的数据,并根据每个存储块的所述spare区的数据确定该存储块是否为出厂坏块,直至遍历完所述数据有效区域中的所有存储块,将存储器初始化标识置位;
其中,当确定某个存储块为出厂坏块时,从坏块替换区的起始存储块开始递增以确定为好块的替换块,并将该出厂坏块的地址写入到所述为好块的替换块的spare区中,形成映射关系。
9.根据权利要求7所述的系统,其特征在于,使用全局变量BBTHead记录链表的起始的地址,初始化为空,每检测到一个替换坏块,就申请一个结点,将结点地址更新到上个结点的地址指针域,同时完成坏地址和替换块的地址的填充,将地址指针域置为空。
10.根据权利要求7所述的系统,其特征在于,所述节点信息,包括:为坏块的存储块的地址、替换块的地址和下个结点的地址指针。
11.根据权利要求7所述的系统,其特征在于,所述系统还包括:第一处理单元,用于:
对读写操作请求涉及的存储块的地址进行合法性判断,当所述地址合法时,从所述坏块映射表中查找所述地址;
若查找到所述地址,则根据映射关系读取对应的替换块的地址,并确定所述替换地址为操作地址;若未查找到所述地址,则确定所述地址为操作地址;
在与所述操作地址对应的操作块上进行读写操作。
12.根据权利要求7所述的系统,其特征在于,所述系统还包括:第二处理单元,用于:
当擦除或者页写入对应的操作块为坏块时,确定该坏块为请求块,将坏块标记写入到该操作块的Spare区;
在替换区查找为好块的替换块作为新的操作块,将所述请求块的地址写入到所述新的操作块的spare区;
在所述坏块映射表中查找所述坏块的地址,若所述坏块映射表中不包含请求块的地址,则在所述坏块映射表中申请新的结点信息,并将所述请求块的地址添加到映射表的链表当中;若所述坏块映射表包含请求块的地址,在所述坏块映射表的链表当中查找所述请求块所在的数据结点,并更新结点的替换块的地址为所述新的操作块的地址。
CN202011337815.0A 2020-11-25 2020-11-25 一种存储器的坏块处理方法及系统 Pending CN112596668A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011337815.0A CN112596668A (zh) 2020-11-25 2020-11-25 一种存储器的坏块处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011337815.0A CN112596668A (zh) 2020-11-25 2020-11-25 一种存储器的坏块处理方法及系统

Publications (1)

Publication Number Publication Date
CN112596668A true CN112596668A (zh) 2021-04-02

Family

ID=75183892

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011337815.0A Pending CN112596668A (zh) 2020-11-25 2020-11-25 一种存储器的坏块处理方法及系统

Country Status (1)

Country Link
CN (1) CN112596668A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113253934A (zh) * 2021-05-28 2021-08-13 深圳市汇春科技股份有限公司 Flash坏块处理方法、装置、计算机设备和可读存储介质
CN113779301A (zh) * 2021-08-18 2021-12-10 北京艺旗网络科技有限公司 一种音乐教学方法及装置
WO2021249046A1 (zh) * 2020-06-10 2021-12-16 中兴通讯股份有限公司 数据访问方法、控制器、存储器和存储介质
CN114385087A (zh) * 2022-01-18 2022-04-22 中国科学院长春光学精密机械与物理研究所 一种基于NandFlash的非均匀校正系数存储方法及其系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929795A (zh) * 2012-10-31 2013-02-13 飞天诚信科技股份有限公司 一种NandFlash坏块管理方法
CN104360958A (zh) * 2014-12-09 2015-02-18 哈尔滨工业大学 基于块保留区替换的坏块管理系统及管理方法
CN105740163A (zh) * 2016-01-29 2016-07-06 山东鲁能智能技术有限公司 一种Nand Flash坏块管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929795A (zh) * 2012-10-31 2013-02-13 飞天诚信科技股份有限公司 一种NandFlash坏块管理方法
CN104360958A (zh) * 2014-12-09 2015-02-18 哈尔滨工业大学 基于块保留区替换的坏块管理系统及管理方法
CN105740163A (zh) * 2016-01-29 2016-07-06 山东鲁能智能技术有限公司 一种Nand Flash坏块管理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021249046A1 (zh) * 2020-06-10 2021-12-16 中兴通讯股份有限公司 数据访问方法、控制器、存储器和存储介质
CN113253934A (zh) * 2021-05-28 2021-08-13 深圳市汇春科技股份有限公司 Flash坏块处理方法、装置、计算机设备和可读存储介质
CN113253934B (zh) * 2021-05-28 2024-07-19 深圳市汇春科技股份有限公司 Flash坏块处理方法、装置、计算机设备和可读存储介质
CN113779301A (zh) * 2021-08-18 2021-12-10 北京艺旗网络科技有限公司 一种音乐教学方法及装置
CN114385087A (zh) * 2022-01-18 2022-04-22 中国科学院长春光学精密机械与物理研究所 一种基于NandFlash的非均匀校正系数存储方法及其系统

Similar Documents

Publication Publication Date Title
US10657047B2 (en) Data storage device and method of performing partial garbage collection
US6381176B1 (en) Method of driving remapping in flash memory and flash memory architecture suitable therefor
CN100487672C (zh) 用于分割一逻辑块的方法及设备
JP3708047B2 (ja) フラッシュメモリの管理方法
US8332576B2 (en) Data reading method for flash memory and controller and storage system using the same
US7191306B2 (en) Flash memory, and flash memory access method and apparatus
US7702844B2 (en) Address mapping method and mapping information managing method for flash memory, and flash memory using the same
CN112596668A (zh) 一种存储器的坏块处理方法及系统
US6034897A (en) Space management for managing high capacity nonvolatile memory
US8180955B2 (en) Computing systems and methods for managing flash memory device
US8407397B2 (en) Block management method for flash memory and controller and storage system using the same
US6262918B1 (en) Space management for managing high capacity nonvolatile memory
US8386698B2 (en) Data accessing method for flash memory and storage system and controller using the same
US20070083697A1 (en) Flash memory management
US20130227362A1 (en) Systems and methods of using dynamic data for wear leveling in solid-state devices
JP2004342126A (ja) 複数のデバイスへ同時書き込み操作を行うことにより高まるフラッシュメモリデバイスにおけるメモリ性能
US6839798B1 (en) Flash memory capable of storing frequently rewritten data
US7287117B2 (en) Flash memory and mapping control apparatus and method for flash memory
JP2007018499A (ja) 記憶装置
CN107045423B (zh) 存储器装置及其数据存取方法
CN114968096A (zh) 一种存储器的控制方法、存储器与存储系统
US20070005929A1 (en) Method, system, and article of manufacture for sector mapping in a flash device
US20120297248A1 (en) Block write handling after corruption
CN113885808A (zh) 映射信息记录方法以及存储器控制电路单元与存储装置
CN117555478A (zh) 一种基于闪存的模拟eeprom读写方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination