CN112711501B - 采用NAND Flash作为存储器时坏块管理的方法 - Google Patents

采用NAND Flash作为存储器时坏块管理的方法 Download PDF

Info

Publication number
CN112711501B
CN112711501B CN202011609553.9A CN202011609553A CN112711501B CN 112711501 B CN112711501 B CN 112711501B CN 202011609553 A CN202011609553 A CN 202011609553A CN 112711501 B CN112711501 B CN 112711501B
Authority
CN
China
Prior art keywords
block
partition
bad
data
blocks
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.)
Active
Application number
CN202011609553.9A
Other languages
English (en)
Other versions
CN112711501A (zh
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.)
Hangzhou Nationalchip Science & Technology Co ltd
Original Assignee
Hangzhou Nationalchip Science & Technology Co ltd
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 Hangzhou Nationalchip Science & Technology Co ltd filed Critical Hangzhou Nationalchip Science & Technology Co ltd
Priority to CN202011609553.9A priority Critical patent/CN112711501B/zh
Publication of CN112711501A publication Critical patent/CN112711501A/zh
Application granted granted Critical
Publication of CN112711501B publication Critical patent/CN112711501B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

本发明公开了采用NAND Flash作为存储器时坏块管理的方法。本发明方法首先将将NAND Flash进行分区,每个分区具有一个物理地址区间及一个分区内偏移地址区间,将RAW数据分区划分为数据区和冗余区。通过实时遍历访问的分区来进行地址的转换,并在擦除、写过程中遇到坏块或产生了坏块时,将擦除、写区间后的有效数据整体往冗余区搬移。本发明方法无需额外的存储空间来存储BBT,用户的程序也无需关心坏块,简单易用,特别是RAW数据分区比较小时,对NAND Flash的利用率较高。

Description

采用NAND Flash作为存储器时坏块管理的方法
技术领域
本发明属于数字视频技术领域,尤其是电视机顶盒技术领域,具体涉及一种机顶盒上采用NAND Flash作为存储器时坏块管理的方法。
背景技术
机顶盒(Set Top Box,简称STB)包括硬件、软件,是一个将外部输入信号源进行处理后输出到电视机上显示出来的设备。机顶盒上的存储器用来存放系统和用户的程序及数据,包括EEPROM、SPI NOR Flash、SPI NAND Flash、CFI NAND Flash。随着机顶盒功能多样化,用户的程序及数据的镜像越来越大,对存储器容量的要求也越来越大。NAND Flash具有容量大、读写速度块的优点,在机顶盒上得到广泛使用。
由于NAND Flash容易产生坏块(Bad block),用户的程序需要对坏块进行管理,机顶盒上常用的闪存文件系统包括Cramfs、JFFS2、YAFFS2、UBIFS都支持坏块的管理,但是当用户的程序需要对一个小的数据分区操作的时候,采用闪存文件系统往往需要预先对分区进行格式化,并且闪存文件系统不支持按物理地址访问。因此机顶盒需要支持这种未经闪存文件系统格式化的分区(RAW数据分区)来按物理地址访问。
发明内容
本发明的目的是针对RAW数据分区进行操作,包括读、擦除、写,提供一种机顶盒上采用NAND Flash作为存储器时坏块管理的方法。
本发明方法包括:
(1)将NAND Flash进行分区,表示为P1,P2,…,PN,N为分区个数;其中Pi分区作为RAW数据分区,1<i≤N;所述的NAND Flash作为机顶盒存储介质;
每个分区具有一个物理地址区间,其中Pi分区的物理地址区间为Wi-1~Wi,起始物理地址Wi-1=SP1+SP2+…+SPi-1,结束物理地址Wi=SP1+SP2+…+SPi,SPi表示Pi分区的大小;
每个分区还具有一个分区内偏移地址区间,其中Pi分区的分区内偏移地址起始为0,结束为SPi,分区内偏移地址区间表示为0~SPi
将Pi分区划分为数据区和冗余区;其中,数据区用来存储数据;当用户的程序操作分区时,擦除、写遇到坏块或导致新的坏块产生时,通过冗余区搬移数据;按NAND Flash最大允许的坏块比例预留冗余区,其他为数据区;
NAND Flash的分区详细信息以分区表存储,分区表结构体中的信息包括:容量大小、块大小、页大小、分区数量,以及每个分区的信息;每个分区的信息包括:分区名、分区大小、冗余区大小、分区起始物理地址、分区结束物理地址。
(2)用户的程序对NAND Flash中物理地址为A1、长度为L1的区间进行读操作,如下:
(2-1)查找分区表,当物理地址A1≥Wi-1且A1+L1<Wi,表示A1落在Pi分区内,A1在Pi分区内偏移起始地址为A2=A1-Wi-1,长度为L1,对应的分区内偏移地址区间为A2~A2+L1
(2-2)初始化坏块数量k=0,遍历Pi分区0~A2之间所有的块,若块判断为好块,则跳到下一个块判断;若块判断为坏块,则坏块数量k累加1,并跳到下一个块判断;遍历完0~A2区间所有的块,得到物理地址A1在Pi分区的逻辑地址A3,A3=A2+k×B,B为每个块的大小;
(2-3)从A3开始读取L1长度的数据,如果块判断为坏块,则跳过至下一块,如果块判断为好块,则读取该好块的数据至用户指定内存中,直至读完L1,用户的程序读操作完成。
(3)用户的程序对NAND Flash中物理地址为A1、长度为L1的区间进行擦除操作,如下:
(3-1)查找分区表,当物理地址A1≥Wi-1且A1+L1<Wi,表示A1落在Pi分区内,A1在Pi分区内偏移起始地址为A2=A1-Wi-1,长度为L1,对应的分区内偏移地址区间为A2~A2+L1
(3-2)初始化坏块数量m=0,遍历Pi分区0~A2之间所有的块;如果块判断为好块,则跳到下一个块判断;如果块判断为坏块,则坏块数量m累加1,并跳到下一个块判断;遍历完0~A2区间所有的块,得到物理地址A1在Pi分区的逻辑地址A3,A3=A2+m×B,B为每个块的大小;
(3-3)初始化坏块数量m′为零,从A3开始擦除L1长度的数据,首先判断A3所处的块是否为坏块:如果块判断为坏块,则跳过至下一块;如果块判断为好块,则擦除该好块数据;如果因擦除导致好块成为坏块,则标记该块为坏块,并跳至下一块;直至擦除完区间A3~A3+L1
记录坏块数量m′,如果m′=0,则表明A3~A3+L1区间不包含坏块,用户的程序擦除操作完成;
如果m′≠0,,则表明A3~A3+L1区间包含有原始坏块或因擦除导致的坏块,则剩余未擦除的数据长度L2=m′×B,同时搬移有效数据,步骤如下:
(3-3-1)遍历Pi分区内所有的块,查找坏块,记录所有坏块数量为m″;
(3-3-2)执行(2),读A3+L1~SPi-Yi+m″×B区间的有效数据,并备份有效数据到内存;Yi为Pi分区中冗余区大小;
(3-3-3)初始化坏块数量m″′为零,从A3+L1开始,擦除的数据长度L2的数据;如果A3+L1所处的块为坏块,跳过至下一个块继续判断;如果A3+L1所处的块判断为好块,则擦除该块;如果因擦除导致好块成为坏块,则标记该块为坏块,并跳至下一块;直至擦除完长度为L2的区间;记录坏块数量m″′;
(3-3-4)将(3-3-2)内存中备份的数据从起始地址A3+L1+L2+m″′×B,按照擦除一个块然后在该块写一个块长度的数据的形式,边擦除边写回到NAND Flash;在擦除或写回过程中,如果遇到坏块,直接跳过;在擦除或写回过程中,如果导致好块成为坏块,则标记该块为坏块,并跳至下一块继续擦除和写回,直至写回完成,则用户的程序擦除操作完成。
(4)用户的程序对NAND Flash中物理地址为A1、长度为L1的区间进行写操作,如下:
(4-1)查找分区表,当物理地址A1≥Wi-1且A1+L1<Wi,则A1落在Pi分区内,A1在Pi分区内偏移起始地址为A2=A1-Wi-1,长度为L1,那么对应的分区内偏移地址区间为A2~A2+L1
(4-2)初始化坏块数量n=0,遍历Pi分区0~A2之间所有的块;若块判断为好块,则跳到下一个块判断;如果块判断为坏块,则坏块数量n累加1,并跳到下一个块判断;遍历完0~A2区间所有的块,得到物理地址A1在Pi分区的逻辑地址A3,A3=A2+n×B,B为每个块的大小;
(4-3)初始化坏块数量n′=0,从A3开始写L1长度的数据,首先判断地址A3所处的块是否为坏块:如果是坏块,则跳过至下一块;如果是好块,则在该好块写一个块长度的数据;如果因写导致好块成为坏块,则标记该块为坏块,并跳至下一块;直至写完A3~A3+L1区间;
记录坏块数量n′,如果n′=0,则表明A3~A3+L1区间不包含坏块,用户的程序写操作完成;
如果n′≠0,,则表明A3~A3+L1区间包含有原始坏块或因写导致的坏块,则剩余未写的数据长度L3=n′×B,同时搬移有效数据,步骤如下:
(4-3-1)遍历Pi分区内所有的块,查找坏块,记录所有坏块数量为n″;
(4-3-2)执行(2),读A3+L1~SPi-Yi+n″×B区间的有效数据,并备份有效数据到内存;Yi为Pi分区中冗余区大小;
(4-3-3)初始化坏块数量n″′为零,从A3+L1开始边擦除边写剩余未写完的长度为L3的数据;如果需要写的块为坏块,则跳过至下一块;如果是好块,则擦除该块;如果因擦除导致好块成为坏块,则标记该块为坏块,并跳至下一块,否则在该块写一个块长度的数据;如果因写导致好块成为坏块,则标记该块为坏块,并跳至下一块;直至写完长度为L3的数据;记录坏块数量n″′;
(4-3-4)将(4-3-2)内存中备份的数据从起始地址A3+L1+L3+n″′×B,按照擦除一个块然后在该块写一个块长度的数据的形式,边擦除边写回到NAND Flash;在擦除或写回过程中,如果遇到坏块,直接跳过;在擦除或写回过程中,如果因擦除或写操作导致好块成为坏块,则标记该块为坏块,并跳至下一块继续擦除和写回,直至写回完成,则用户的程序写除操作完成。
本发明的方法既不需要单独的坏块管理表(BBT),也不是简单的遇到坏块的跳过法(Skip Bad block),而是通过实时遍历访问的分区来进行地址的转换,并在擦除、写过程中遇到坏块或产生了坏块时,将擦除、写区间后的有效数据整体往冗余区搬移。本方法无需额外的存储空间来存储BBT,用户的程序也无需关心坏块,简单易用,特别是RAW数据分区比较小时,对NAND Flash的利用率高。
附图说明
图1为本发明方法中NAND Flash的分区示意图;
图2为NAND Flash的分区物理地址空间分布示意图;
图3为Pi分区的分区内偏移地址区间示意图;
图4为Pi分区的分区内偏移地址空间分布示意图。
具体实施方式
一种机顶盒上采用NAND Flash作为存储器时坏块管理的方法,具体包括:
(1)机顶盒上采用NAND Flash作为存储介质,包括SPI NAND Flash或ParallelNAND Flash。
(2)如图1,将NAND Flash进行分区(Partition),表示为P1,P2,…,PN,N为分区个数;其中Pi分区作为RAW数据分区,为该方法所涉及的分区,1<i≤N。
(3)如图2,每个分区具有一个物理地址(Physical Address)区间;P1分区的起始物理地址为0,结束物理地址为P1分区的大小SP1,即区间为0~SP1;P2分区至Pn分区的每个分区的起始物理地址为该分区之前的所有分区大小之和,结束物理地址为该分区之前分区大小之和加上该分区的大小;Pi分区的物理地址区间为Wi-1~Wi,起始物理地址Wi-1=SP1+SP2+…+SPi-1,结束物理地址Wi=SP1+SP2+…+SPi,SPi表示Pi分区的大小。
(4)如图3,每个分区还具有一个分区内偏移地址(Partition Offset Address)区间,每个分区的起始分区内偏移地址为0,结束为该分区大小,即Pi分区的分区内偏移地址起始为0,结束为SPi,分区内偏移地址区间表示为0~SPi
(5)如图4,将Pi分区划分为数据区和冗余区;其中,数据区用来存储数据;当用户的程序操作分区时,擦除、写遇到坏块或导致新的坏块产生时,通过冗余区搬移数据;按NAND Flash最大允许的坏块比例(每1024块,最大允许24个坏块)预留冗余区,其他为数据区。
(6)NAND Flash的分区详细信息以分区表(Partition table)存储,分区表结构体中的信息包括:容量大小(Capacity)、块大小(Block size)、页大小(Page size)、分区数量(Partition count),以及每个分区的信息;每个分区的信息包括:分区名(Partitionname)、分区大小(Partition size)、冗余区大小(Partition reserved size)、分区起始物理地址(Partition physical start address)、分区结束物理地址(Partition physicalend address)。
(7)用户的程序(Application)对RAW数据分区Pi的访问,包括:读、擦除、写;参数包括:物理地址(Physical Address)、数据长度(Data length),例如访问物理地址A1,数据长度L1之间的区间为A1~A1+L1
(8)用户的程序(Application)对NAND Flash中物理地址为A1,长度为L1的区间进行读操作,步骤如下:
(8-1)查找分区表(Partition table),当物理地址A1≥Wi-1且A1+L1<Wi,则A1落在Pi分区内,A1在Pi分区内偏移起始地址为A2=A1-Wi-1,长度为L1,那么对应的分区内偏移地址区间为A2~A2+L1
(8-2)初始化坏块数量k=0,遍历Pi分区0~A2之间所有的块(Block),若块判断为好块,则跳到下一个块判断;若块判断为坏块,则坏块数量k累加1,并跳到下一个块判断;遍历完0~A2区间所有的块,得到物理地址A1在Pi分区的逻辑地址(Partition LogicAddress)A3,A3=A2+k×B,B为每个块的大小;
(8-3)从A3开始读取L1长度的数据,如果块判断为坏块,则跳过至下一块,如果块判断为好块,则读取该好块的数据至用户指定内存中,直至读完L1,用户的程序读操作完成。
(9)用户的程序(Application)对NAND Flash中物理地址为A1,长度为L1的区间进行擦除操作,步骤如下:
(9-1)查找分区表(Partition table),当物理地址A1≥Wi-1且A1+L1<Wi,则A1落在Pi分区内,A1在Pi分区内偏移起始地址为A2=A1-Wi-1,长度为L1,那么对应的分区内偏移地址区间为A2~A2+L1
(9-2)初始化坏块数量m=0,遍历Pi分区0~A2之间所有的块(Block);如果块判断为好块,则跳到下一个块判断;如果块判断为坏块,则坏块数量m累加1,并跳到下一个块判断;遍历完0~A2区间所有的块,得到物理地址A1在Pi分区的逻辑地址(Partition LogicAddress)A3,A3=A2+m×B,B为每个块的大小;
(9-3)初始化坏块数量m′为零,从A3开始擦除L1长度的数据,首先判断A3所处的块是否为坏块:如果块判断为坏块,则跳过至下一块;如果块判断为好块,则擦除该好块数据;如果因擦除导致好块成为坏块,则标记该块为坏块,并跳至下一块;直至擦除完区间A3~A3+L1
记录坏块数量m′,如果m′=0,则表明A3~A3+L1区间不包含坏块,用户的程序擦除操作完成;
如果m′≠0,,则表明A3~A3+L1区间包含有原始坏块或因擦除导致的坏块,则剩余未擦除的数据长度L2=m′×B,同时搬移有效数据,步骤如下:
(9-3-1)遍历Pi分区内所有的块,查找坏块,记录所有坏块数量为m″;
(9-3-2)执行(8),读A3+L1~SPi-Yi+m″×B区间的有效数据,并备份有效数据到内存;Yi为Pi分区中冗余区大小;
(9-3-3)初始化坏块数量m″′为零,从A3+L1开始,擦除的数据长度L2的数据;如果A3+L1所处的块为坏块,跳过至下一个块继续判断;如果A3+L1所处的块判断为好块,则擦除该块;如果因擦除导致好块成为坏块,则标记该块为坏块,并跳至下一块;直至擦除完长度为L2的区间;记录坏块数量m″′;
(9-3-4)将(9-3-2)内存中备份的数据从起始地址A3+L1+L2+m″′×B,按照擦除一个块然后在该块写一个块长度的数据的形式,边擦除边写回到NAND Flash;在擦除或写回过程中,如果遇到坏块,直接跳过;在擦除或写回过程中,如果导致好块成为坏块,则标记该块为坏块,并跳至下一块继续擦除和写回,直至写回完成,则用户的程序擦除操作完成。
(10)用户的程序(Application)对NAND Flash中物理地址为A1,长度为L1的区间进行写操作,步骤如下:
(10-1)查找分区表(Partition table),当物理地址A1≥Wi-1且A1+L1<Wi,则A1落在Pi分区内,A1在Pi分区内偏移起始地址为A2=A1-Wi-1,长度为L1,那么对应的分区内偏移地址区间为A2~A2+L1
(10-2)初始化坏块数量n=0,遍历Pi分区0~A2之间所有的块(Block);若块判断为好块,则跳到下一个块判断;如果块判断为坏块,则坏块数量n累加1,并跳到下一个块判断;遍历完0~A2区间所有的块,得到物理地址A1在Pi分区的逻辑地址(Partition LogicAddress)A3,A3=A2+n×B,B为每个块的大小;
(10-3)初始化坏块数量n′=0,从A3开始写L1长度的数据,首先判断地址A3所处的块是否为坏块:如果是坏块,则跳过至下一块;如果是好块,则在该好块写一个块长度的数据;如果因写导致好块成为坏块,则标记该块为坏块,并跳至下一块;直至写完A3~A3+L1区间;
记录坏块数量n′,如果n′=0,则表明A3~A3+L1区间不包含坏块,用户的程序写操作完成;
如果n′≠0,,则表明A3~A3+L1区间包含有原始坏块或因写导致的坏块,则剩余未写的数据长度L3=n′×B,同时搬移有效数据,步骤如下:
(10-3-1)遍历Pi分区内所有的块,查找坏块,记录所有坏块数量为n″;
(10-3-2)执行(8),读A3+L1~SPi-Yi+n″×B区间的有效数据,并备份有效数据到内存;Yi为Pi分区中冗余区大小;
(10-3-3)初始化坏块数量n″′为零,从A3+L1开始边擦除边写剩余未写完的长度为L3的数据;如果需要写的块为坏块,则跳过至下一块;如果是好块,则擦除该块;如果因擦除导致好块成为坏块,则标记该块为坏块,并跳至下一块,否则在该块写一个块长度的数据;如果因写导致好块成为坏块,则标记该块为坏块,并跳至下一块;直至写完长度为L3的数据;记录坏块数量n″′;
(10-3-4)将(10-3-2)内存中备份的数据从起始地址A3+L1+L3+n″′×B,按照擦除一个块然后在该块写一个块长度的数据的形式,边擦除边写回到NAND Flash;在擦除或写回过程中,如果遇到坏块,直接跳过;在擦除或写回过程中,如果因擦除或写操作导致好块成为坏块,则标记该块为坏块,并跳至下一块继续擦除和写回,直至写回完成,则用户的程序写除操作完成。

Claims (1)

1.采用NAND Flash作为存储器时坏块管理的方法,其特征在于,该方法包括:
(1)将NAND Flash进行分区,表示为P1,P2,…,PN,N为分区个数;其中Pi分区作为RAW数据分区,1<i≤N;所述的NAND Flash作为机顶盒存储介质;
每个分区具有一个物理地址区间,其中Pi分区的物理地址区间为Wi-1~Wi,起始物理地址Wi-1=SP1+SP2+…+SPi-1,结束物理地址Wi=SP1+SP2+…+SPi,SPi表示Pi分区的大小;
每个分区还具有一个分区内偏移地址区间,其中Pi分区的分区内偏移地址起始为0,结束为SPi,分区内偏移地址区间表示为0~SPi
将Pi分区划分为数据区和冗余区;其中,数据区用来存储数据;当用户的程序操作分区时,擦除、写遇到坏块或导致新的坏块产生时,通过冗余区搬移数据;按NAND Flash最大允许的坏块比例预留冗余区,其他为数据区;
NAND Flash的分区详细信息以分区表存储,分区表结构体中的信息包括:容量大小、块大小、页大小、分区数量,以及每个分区的信息;每个分区的信息包括:分区名、分区大小、冗余区大小、分区起始物理地址、分区结束物理地址;
(2)用户的程序对NAND Flash中物理地址为A1、长度为L1的区间进行读操作,如下:
(2-1)查找分区表,当物理地址A1≥Wi-1且A1+L1<Wi,表示A1落在Pi分区内,A1在Pi分区内偏移起始地址为A2=A1-Wi-1,长度为L1,对应的分区内偏移地址区间为A2~A2+L1
(2-2)初始化坏块数量k=0,遍历Pi分区0~A2之间所有的块,若块判断为好块,则跳到下一个块判断;若块判断为坏块,则坏块数量k累加1,并跳到下一个块判断;遍历完0~A2区间所有的块,得到物理地址A1在Pi分区的逻辑地址A3,A3=A2+k×B,B为每个块的大小;
(2-3)从A3开始读取L1长度的数据,如果块判断为坏块,则跳过至下一块,如果块判断为好块,则读取该好块的数据至用户指定内存中,直至读完L1,用户的程序读操作完成;
(3)用户的程序对NAND Flash中物理地址为A1、长度为L1的区间进行擦除操作,如下:
(3-1)查找分区表,当物理地址A1≥Wi-1且A1+L1<Wi,表示A1落在Pi分区内,A1在Pi分区内偏移起始地址为A2=A1-Wi-1,长度为L1,对应的分区内偏移地址区间为A2~A2+L1
(3-2)初始化坏块数量m=0,遍历Pi分区0~A2之间所有的块;如果块判断为好块,则跳到下一个块判断;如果块判断为坏块,则坏块数量m累加1,并跳到下一个块判断;遍历完0~A2区间所有的块,得到物理地址A1在Pi分区的逻辑地址A3,A3=A2+m×B,B为每个块的大小;
(3-3)初始化坏块数量m′为零,从A3开始擦除L1长度的数据,首先判断A3所处的块是否为坏块:如果块判断为坏块,则跳过至下一块;如果块判断为好块,则擦除该好块数据;如果因擦除导致好块成为坏块,则标记该块为坏块,并跳至下一块;直至擦除完区间A3~A3+L1
记录坏块数量m′,如果m′=0,则表明A3~A3+L1区间不包含坏块,用户的程序擦除操作完成;
如果m′≠0,则表明A3~A3+L1区间包含有原始坏块或因擦除导致的坏块,则剩余未擦除的数据长度L2=m′×B,同时搬移有效数据,步骤如下:
(3-3-1)遍历Pi分区内所有的块,查找坏块,记录所有坏块数量为m″;
(3-3-2)执行(2),读A3+L1~SPi-Yi+m″×B区间的有效数据,并备份有效数据到内存;Yi为Pi分区中冗余区大小;
(3-3-3)初始化坏块数量m″′为零,从A3+L1开始,擦除的数据长度L2的数据;如果A3+L1所处的块为坏块,跳过至下一个块继续判断;如果A3+L1所处的块判断为好块,则擦除该块;如果因擦除导致好块成为坏块,则标记该块为坏块,并跳至下一块;直至擦除完长度为L2的区间;记录坏块数量m″′;
(3-3-4)将(3-3-2)内存中备份的数据从起始地址A3+L1+L2+m″′×B,按照擦除一个块然后在该块写一个块长度的数据的形式,边擦除边写回到NAND Flash;在擦除或写回过程中,如果遇到坏块,直接跳过;在擦除或写回过程中,如果导致好块成为坏块,则标记该块为坏块,并跳至下一块继续擦除和写回,直至写回完成,则用户的程序擦除操作完成;
(4)用户的程序对NAND Flash中物理地址为A1、长度为L1的区间进行写操作,如下:
(4-1)查找分区表,当物理地址A1≥Wi-1且A1+L1<Wi,则A1落在Pi分区内,A1在Pi分区内偏移起始地址为A2=A1-Wi-1,长度为L1,那么对应的分区内偏移地址区间为A2~A2+L1
(4-2)初始化坏块数量n=0,遍历Pi分区0~A2之间所有的块;若块判断为好块,则跳到下一个块判断;如果块判断为坏块,则坏块数量n累加1,并跳到下一个块判断;遍历完0~A2区间所有的块,得到物理地址A1在Pi分区的逻辑地址A3,A3=A2+n×B,B为每个块的大小;
(4-3)初始化坏块数量n′=0,从A3开始写L1长度的数据,首先判断地址A3所处的块是否为坏块:如果是坏块,则跳过至下一块;如果是好块,则在该好块写一个块长度的数据;如果因写导致好块成为坏块,则标记该块为坏块,并跳至下一块;直至写完A3~A3+L1区间;
记录坏块数量n′,如果n′=0,则表明A3~A3+L1区间不包含坏块,用户的程序写操作完成;
如果n′≠0,则表明A3~A3+L1区间包含有原始坏块或因写导致的坏块,则剩余未写的数据长度L3=n′×B,同时搬移有效数据,步骤如下:
(4-3-1)遍历Pi分区内所有的块,查找坏块,记录所有坏块数量为n″;
(4-3-2)执行(2),读A3+L1~SPi-Yi+n″×B区间的有效数据,并备份有效数据到内存;Yi为Pi分区中冗余区大小;
(4-3-3)初始化坏块数量n″′为零,从A3+L1开始边擦除边写剩余未写完的长度为L3的数据;如果需要写的块为坏块,则跳过至下一块;如果是好块,则擦除该块;如果因擦除导致好块成为坏块,则标记该块为坏块,并跳至下一块,否则在该块写一个块长度的数据;如果因写导致好块成为坏块,则标记该块为坏块,并跳至下一块;直至写完长度为L3的数据;记录坏块数量n″′;
(4-3-4)将(4-3-2)内存中备份的数据从起始地址A3+L1+L3+n″′×B,按照擦除一个块然后在该块写一个块长度的数据的形式,边擦除边写回到NAND Flash;在擦除或写回过程中,如果遇到坏块,直接跳过;在擦除或写回过程中,如果因擦除或写操作导致好块成为坏块,则标记该块为坏块,并跳至下一块继续擦除和写回,直至写回完成,则用户的程序写除操作完成。
CN202011609553.9A 2020-12-30 2020-12-30 采用NAND Flash作为存储器时坏块管理的方法 Active CN112711501B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011609553.9A CN112711501B (zh) 2020-12-30 2020-12-30 采用NAND Flash作为存储器时坏块管理的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011609553.9A CN112711501B (zh) 2020-12-30 2020-12-30 采用NAND Flash作为存储器时坏块管理的方法

Publications (2)

Publication Number Publication Date
CN112711501A CN112711501A (zh) 2021-04-27
CN112711501B true CN112711501B (zh) 2023-04-25

Family

ID=75547227

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011609553.9A Active CN112711501B (zh) 2020-12-30 2020-12-30 采用NAND Flash作为存储器时坏块管理的方法

Country Status (1)

Country Link
CN (1) CN112711501B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115495024B (zh) * 2022-11-16 2023-03-10 石家庄科林电气股份有限公司 基于NandFlash的录波文件存储方法、装置、终端及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461750A (zh) * 2013-09-25 2015-03-25 北京兆易创新科技股份有限公司 一种NAND flash的访问方法和装置
CN108614743A (zh) * 2016-12-09 2018-10-02 北京京存技术有限公司 基于NAND flash的超级数据块处理方法和装置
CN109725848A (zh) * 2017-10-30 2019-05-07 东芝存储器株式会社 计算机系统及储存装置的控制方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9128822B2 (en) * 2012-06-22 2015-09-08 Winbond Electronics Corporation On-chip bad block management for NAND flash memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461750A (zh) * 2013-09-25 2015-03-25 北京兆易创新科技股份有限公司 一种NAND flash的访问方法和装置
CN108614743A (zh) * 2016-12-09 2018-10-02 北京京存技术有限公司 基于NAND flash的超级数据块处理方法和装置
CN109725848A (zh) * 2017-10-30 2019-05-07 东芝存储器株式会社 计算机系统及储存装置的控制方法

Also Published As

Publication number Publication date
CN112711501A (zh) 2021-04-27

Similar Documents

Publication Publication Date Title
US8055873B2 (en) Data writing method for flash memory, and controller and system using the same
TWI494761B (zh) 分割實體區塊之方法及記憶體系統
US8654472B2 (en) Implementing enhanced fragmented stream handling in a shingled disk drive
US8706998B2 (en) Method for managing flash memories having mixed memory types
US8356136B2 (en) Block management method of a non-volatile memory
US20120303928A1 (en) Implementing enhanced deterministic memory allocation for indirection tables for persistent media
US8892812B2 (en) Flash memory device and data writing method for a flash memory
US10754549B2 (en) Append only streams for storing data on a solid state device
US20060047889A1 (en) Memory device and controlling method for nonvolatile memory
US9268705B2 (en) Data storage device and method of managing a cache in a data storage device
JP2005182793A5 (zh)
US20180129602A1 (en) Garbage collection method for data storage device
US20100070733A1 (en) System and method of allocating memory locations
US8862856B2 (en) Implementing remapping command with indirection update for indirected storage
US8879183B1 (en) Segmenting of read-modify-write operations
CN110674056B (zh) 一种垃圾回收方法及装置
CN103514249A (zh) 一种数据自精简方法和系统及存储装置
US8380920B2 (en) Flash storage device and data access method of flash memory
CN112711501B (zh) 采用NAND Flash作为存储器时坏块管理的方法
US9710504B2 (en) Data processing and writing method and related apparatus
CN104133640B (zh) 从休眠快速恢复
US20120036321A1 (en) System and method for providing implicit unmaps in thinly provisioned virtual tape library systems
CN106844229A (zh) 固态硬盘固件映射表的组织方法、系统及装置
US20200356295A1 (en) Logical address remapping for direct write
CN101339490A (zh) 闪存的驱动装置及方法

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
GR01 Patent grant
GR01 Patent grant