CN112711501A - 采用NAND Flash作为存储器时坏块管理的方法 - Google Patents
采用NAND Flash作为存储器时坏块管理的方法 Download PDFInfo
- Publication number
- CN112711501A CN112711501A CN202011609553.9A CN202011609553A CN112711501A CN 112711501 A CN112711501 A CN 112711501A CN 202011609553 A CN202011609553 A CN 202011609553A CN 112711501 A CN112711501 A CN 112711501A
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000005192 partition Methods 0.000 claims abstract description 177
- 238000000638 solvent extraction Methods 0.000 claims abstract description 6
- 230000009191 jumping Effects 0.000 claims description 30
- 238000006243 chemical reaction Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2053—Error 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/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/202—Error 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
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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作为存储器时坏块管理的方法。
背景技术
机顶盒(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;在擦除或写回过程中,如果遇到坏块,直接跳过;在擦除或写回过程中,如果因擦除或写操作导致好块成为坏块,则标记该块为坏块,并跳至下一块继续擦除和写回,直至写回完成,则用户的程序写除操作完成。
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 true CN112711501A (zh) | 2021-04-27 |
CN112711501B 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115495024A (zh) * | 2022-11-16 | 2022-12-20 | 石家庄科林电气股份有限公司 | 基于NandFlash的录波文件存储方法、装置、终端及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130346671A1 (en) * | 2012-06-22 | 2013-12-26 | Winbond Electronics Corporation | On-Chip Bad Block Management for NAND Flash Memory |
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 | 东芝存储器株式会社 | 计算机系统及储存装置的控制方法 |
-
2020
- 2020-12-30 CN CN202011609553.9A patent/CN112711501B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130346671A1 (en) * | 2012-06-22 | 2013-12-26 | Winbond Electronics Corporation | On-Chip Bad Block Management for NAND Flash Memory |
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 | 东芝存储器株式会社 | 计算机系统及储存装置的控制方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115495024A (zh) * | 2022-11-16 | 2022-12-20 | 石家庄科林电气股份有限公司 | 基于NandFlash的录波文件存储方法、装置、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112711501B (zh) | 2023-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8892812B2 (en) | Flash memory device and data writing method for a flash memory | |
CN101354681B (zh) | 存储器系统、非易失性存储器的磨损均衡方法及装置 | |
US7908423B2 (en) | Memory apparatus, and method of averagely using blocks of a flash memory | |
US7647470B2 (en) | Memory device and controlling method for elongating the life of nonvolatile memory | |
US20110302359A1 (en) | Method for managing flash memories having mixed memory types | |
US20120191936A1 (en) | Just in time garbage collection | |
US20090198875A1 (en) | Data writing method for flash memory, and controller and system using the same | |
US10089225B2 (en) | Improving garbage collection efficiency by reducing page table lookups | |
US20110167208A1 (en) | Nonvolatile memory device, access device, nonvolatile memory system, and memory controller | |
US10754549B2 (en) | Append only streams for storing data on a solid state device | |
US20190339895A1 (en) | Non-volatile memory device, non-volatile memory control device, and non-volatile memory control method | |
CN111007985B (zh) | 一种存储系统空间回收的兼容处理方法、系统及设备 | |
US8380920B2 (en) | Flash storage device and data access method of flash memory | |
CN112711501A (zh) | 采用NAND Flash作为存储器时坏块管理的方法 | |
CN104133640B (zh) | 从休眠快速恢复 | |
US11580018B2 (en) | Method and apparatus for page validity management and related storage system | |
CN104391804B (zh) | 一种nand flash数据存储方法 | |
US20120036321A1 (en) | System and method for providing implicit unmaps in thinly provisioned virtual tape library systems | |
JP2010237907A (ja) | ストレージ装置および記録方法 | |
US9146861B2 (en) | Memory address management method, memory controller and memory storage device | |
US8176231B2 (en) | Methods for handling data updating of flash memory and related memory cards | |
US20120297248A1 (en) | Block write handling after corruption | |
US10896002B2 (en) | Reverse directory structure in a garbage collection unit (GCU) | |
CN108170380B (zh) | 一种固态硬盘提升顺序读性能的方法及固态硬盘 | |
CN115934579A (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 310012 5-6 / F, block a, East Software Park Innovation Building, 90 Wensan Road, Hangzhou City, Zhejiang Province Patentee after: Hangzhou Guoxin Microelectronics Co.,Ltd. Country or region after: China Address before: 310012 5-6 / F, block a, East Software Park Innovation Building, 90 Wensan Road, Hangzhou City, Zhejiang Province Patentee before: HANGZHOU NATIONALCHIP SCIENCE & TECHNOLOGY Co.,Ltd. Country or region before: China |