一种用于NAND Flash不良区块的查找方法、固态硬盘
技术领域
本发明涉及固态硬盘领域,更具体地说,涉及一种用于NAND Flash不良区块的查找方法、固态硬盘。
背景技术
由于NAND Flash制程技术限制,使得必然存在无法使用的区块,一般称之为不良区块(Bad Block)。因此在实际使用时,控制器必须将预计要写入或读出于不良区块的资料,转为写入或读出在别的区块,所以必须有一套对应的方式来帮助控制器纪录每一个不良区块的地址对应到那一个好的区块地址。
现有的技术中,为控制器一开机时,由固件先建立一组查找表,纪录每一个不良区块的地址对应到那一个好的区块地址。此查找表可能纪录于随机存取内存(SRAM),由固件或硬件在每一次要写入或读取不良区块的时候,经过搜寻查找表,得到新的地址,才实际执行写入或读取。
查找表的大小根据NAND Flash内不良区块的数量决定,一般在几十组到几百组不等。而每一次搜寻,不管由固件或硬件执行,都要耗费非常多的频率次数,因此导致写入或读取的速度下降。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述查找过程中耗费频率次数多,导致写入或读取的速度下降缺陷,提供一种用于NAND Flash不良区块的查找方法、固态硬盘。
本发明解决其技术问题所采用的技术方案是:构造一种用于NAND Flash不良区块的查找方法,包括:
S1:将不良区块查找表建立在随机存取内存内;
S2:判断控制器待写入或读取的区块是否为不良区块,若是,则进行不良区块地址查找;
S3:通过哈希查找法进行所述不良区块地址查找,若查找到,则结束;若未查找到,则执行步骤S4;
S4:通过二分法进行所述不良区块地址查找,直至查找到所述不良区块的直接对应地址为止。
优选地,本发明所述的用于NAND Flash不良区块的查找方法,所述步骤S1包括:
S11:在编写所述不良区块查找表时,将所述不良区块的对应数据写在所述随机存取内存内,选定的所述随机存取内存的地址等于所述不良区块的直接对应地址。
优选地,本发明所述的用于NAND Flash不良区块的查找方法,所述步骤S1包括:
S12:每一次启动NAND Flash时,从系统引导文件下载所述不良区块查找表,固件将完整的所述不良区块查找表建立在所述随机存取内存内。
优选地,本发明所述的用于NAND Flash不良区块的查找方法,所述步骤S1包括:
S13:若有一个以上的所述不良区块对应同样的所述直接对应地址,则按照所述直接对应地址的地址大小进行排列。
优选地,本发明所述的用于NAND Flash不良区块的查找方法,所述步骤S13包括:
S131:若有一个以上的所述不良区块对应同样的直接对应地址,则按照所述直接对应地址的地址大小由小到大的顺序排列。
优选地,本发明所述的用于NAND Flash不良区块的查找方法,将完整的NANDFLASH地址分为哈希地址和截断地址,
所述哈希地址为所述不良区块的直接对应地址,并作为所述随机存取内存的地址,可由硬件直接进行查找;
所述截断地址为所述NAND FLASH地址中除去所述不良区块的直接对应地址的剩余部分。
优选地,本发明所述的用于NAND Flash不良区块的查找方法,所述步骤S3包括:
硬件通过所述哈希查找法在所述哈希地址中进行查找,若查找到,则结束;若未查找到,则执行所述步骤S4。
优选地,本发明所述的用于NAND Flash不良区块的查找方法,所述步骤S3包括:
若通过哈希查找法未查找到,则固件根据所述哈希地址的地址大小在所述随机存取内存选择对应的地址进行存储。
优选地,本发明所述的用于NAND Flash不良区块的查找方法,所述步骤S4包括:
S41:判断所述不良区块的地址与所述不良区块查找表的上限值和下限值是否相等;
S42:若否,则根据所述上限值和所述下限值确定中间值;
S43:判断所述不良区块与所述中间值是否相等,若否,则比较所述目标值与所述中间值的大小;
S44:根据比较结果,确定所述下限值和所述中间值为下一个查找区间,或所述中间值和所述上限值为下一个查找区间;
S45:重复执行所述步骤S41至步骤S44,直至找到所述不良区块的直接对应地址。
另,本发明还构造一种固态硬盘,所述固态硬盘使用上述的用于NAND Flash不良区块的查找方法。
实施本发明的用于NAND Flash不良区块的查找方法、固态硬盘,具有以下有益效果:该方法包括:将不良区块查找表建立在随机存取内存内;判断控制器待写入或读取的区块是否为不良区块,若是,则进行不良区块地址查找;通过哈希查找法进行不良区块地址查找,若查找到,则结束;若未查找到,则通过二分法进行不良区块地址查找,直至查找到不良区块的直接对应地址为止。本发明的查找表是用随机存取内存实现,同时使用硬件进行搜寻,也可以将查找表存放在不同的内存,使用韧体或硬件的方式来搜寻。可以大幅缩短不良区块查找表的搜寻时间,可减少不必要的地址搜寻时间,增加控制器的数据写入或读取速度。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明FLASH阵列中不良区块与正常区块的对应关系图;
图2是本发明一种用于NAND Flash不良区块的查找方法的流程示意图;
图3是本发明步骤S1的流程示意图;
图4是本发明步骤S4的流程示意图;
图5是本发明二分法查找的实施例示意图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
图2是本发明一种用于NAND Flash不良区块的查找方法的流程示意图。
具体的,该用于NAND Flash不良区块的查找方法包括:
S1:将不良区块查找表建立在随机存取内存内。
具体的,参考图1,图1是本发明FLASH阵列中不良区块与正常区块的对应关系图。在FLASH阵列中,将不良区块选择对应的正常区块进行对应,并将对应地址存储在不良区块查找表中,且不良区块查找表在FLASH中第一次使用时建立。
图3是本发明步骤S1的流程示意图,步骤S1包括:
S11:在编写不良区块查找表时,将不良区块的对应数据写在随机存取内存内,选定的随机存取内存的地址等于不良区块的直接对应地址。可以理解,一颗FLASH的不良区块在使用前都需要经过扫描才能得知不良区块的地址,这些不良区块的地址会另存为FLASH内,在每次开机时,这次不良区块的地址会被下载到随机存取内存中,供硬件查找。
S12:每一次启动NAND Flash时,即在开机时,从系统引导文件下载不良区块查找表,固件将完整的不良区块查找表建立在随机存取内存内。因断电后随机存取内存内的数据无法保存,因此在每次开机时都需要查找到不良区块查找表并存储在随机存取内存中。
S13:若有一个以上的不良区块对应同样的直接对应地址,则按照直接对应地址的地址大小进行排列。
优选地,本发明的用于NAND Flash不良区块的查找方法,步骤S13包括:
S131:若有一个以上的不良区块对应同样的直接对应地址,则按照直接对应地址的地址大小由小到大的顺序排列。
S2:判断控制器待写入或读取的区块是否为不良区块,若是,则进行不良区块地址查找;
S3:通过哈希查找法进行不良区块地址查找,若查找到,则结束;若未查找到,则执行步骤S4;
具体的,表1为随机存取内存的中不良区块地址与正常区块地址的对应表。
表1
0x0 |
不良区块地址0 |
正常区块地址0 |
0x1 |
不良区块地址1 |
正常区块地址1 |
0x2 |
不良区块地址2 |
正常区块地址2 |
······ |
······ |
······ |
0x200 |
不良区块地址512 |
正常区块地址512 |
S4:通过二分法进行不良区块地址查找,直至查找到不良区块的直接对应地址为止。
优选地,本发明的用于NAND Flash不良区块的查找方法,将完整的NAND FLASH地址分为哈希地址和截断地址,哈希地址为不良区块的直接对应地址,并作为随机存取内存的地址,可由硬件直接进行查找;截断地址为NAND FLASH地址中除去不良区块的直接对应地址的剩余部分。
例如,表2为一个完整的NAND FLASH地址分为哈希地址和截断地址。
表2
优选地,本发明的用于NAND Flash不良区块的查找方法,步骤S3包括:
硬件通过哈希查找法在哈希地址中进行查找,若查找到,则结束;若未查找到,则执行步骤S4。
优选地,固件应在随机存取内存中设置查找列表,该查找列表包括查找顺序,以及每步中包含的哈希查找和/或二分法查找。如表3所示。
表3
优选地,本发明的用于NAND Flash不良区块的查找方法,步骤S3包括:
若通过哈希查找法未查找到,则固件根据哈希地址的地址大小在随机存取内存选择对应的地址进行存储。
参考图4,图4是本发明步骤S4的流程示意图,步骤S4包括:
S41:判断不良区块的地址与不良区块查找表的上限值和下限值是否相等;
S42:若否,则根据上限值和下限值确定中间值,
S43:判断不良区块与中间值是否相等,若否,则比较目标值与中间值的大小;
S44:根据比较结果,确定下限值和中间值为下一个查找区间,或中间值和上限值为下一个查找区间;
S45:重复执行步骤S41至步骤S44,直至找到不良区块的直接对应地址。
现举例对二分法查找不良区块地址的过程。参考图5,是本发明二分法查找的实施例示意图。
具体的,本次查找的目标地址为20,地址最小值为4,地址最大值,98,采用二分法,中间值为35,选取35后,通过比较,20对应的地址小于35对应的地址,说明待查询地址应在4和35之间;
此时地址最小值为4,地址最大值为35,采用二分法,取中间值15,通过比较,20对应的地址大于15对应的地址,说明待查询地址应在15至335之间;
此时地址最小值为15,地址最大值为25,采用二分法,取中间值20,通过比较,20对应的地址与待查询地址相等,则查询到20对应的地址。
另,本发明还构造一种固态硬盘,固态硬盘使用上述的用于NAND Flash不良区块的查找方法。
本发明的查找表是用随机存取内存实现,同时使用硬件进行搜寻,也可以将查找表存放在不同的内存,使用韧体或硬件的方式来搜寻。可以大幅缩短不良区块查找表的搜寻时间,可减少不必要的地址搜寻时间,增加控制器的数据写入或读取速度。
以上实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据此实施,并不能限制本发明的保护范围。凡跟本发明权利要求范围所做的均等变化与修饰,均应属于本发明权利要求的涵盖范围。