发明内容
本发明要解决的技术问题在于,针对现有技术的上述数据比对效率较低、导致SSD反应速度慢的缺陷,提供一种NAND FLASH的数据源区块回收方法及固态硬盘。
本发明解决其技术问题所采用的技术方案是:构造一种NAND FLASH的数据源区块回收方法,包括以下步骤:
将存储器的存储空间划分为多个储存区块集合;
获取每个所述储存区块集合的有效数据个数;
比较每个所述储存区块集合的有效数据个数的大小;
选取所述有效数据个数少的所述储存区块集合作为数据源区块。
优选地,本发明所述的NAND FLASH的数据源区块回收方法,所述将存储器的存储空间划分为多个储存区块集合,包括:
在支持多通道以及多颗NAND FLASH的控制器中,将并行执行的NAND FLASH组成一个所述储存区块集合。
优选地,本发明所述的NAND FLASH的数据源区块回收方法,所述储存区块集合包括至少两个储存区块,所述每个储存区块包含至少一个储存页面。
优选地,本发明所述的NAND FLASH的数据源区块回收方法,所述获取每个所述储存区块集合的有效数据个数,包括:
将物理对逻辑映像表与逻辑对物理映像表进行比对,若比对数据相等,则为所述有效数据;
比对得到所述储存区块集合内所有丛集的有效数据个数,所有所述丛集的有效数据个数之和为所述储存区块集合的有效数据个数,其中,
所述储存区块集合内所有所述储存区块的对应位置的至少一个储存页面构成一个所述丛集。
进一步,本发明所述的NAND FLASH的数据源区块回收方法,在选取所述数据源区块后,还包括:
用选取的所述数据源区块填充数据目标区块。
优选地,本发明所述的NAND FLASH的数据源区块回收方法,还包括:
若所述储存区块集合的有效数据个数相等,则取离散度小的所述储存区块集合作为所述数据源区块。
优选地,本发明所述的NAND FLASH的数据源区块回收方法,所述储存区块集合的离散度计算方法为:
将每一个所述储存区块集合内区分N个丛集,计算每一个所述丛集的加权值:X%*D+Y%*V,
其中,密度加权D=(C1VFC*(C1VFC)/TotalVFCinCluster+..+CNVFC*(CNVFC)/TotalVFCinCluster)/N;
V=(TotalFrameInCluster-CNVFC)/TotalFrameInCluster;
C1VFC为丛集C1里面的有效数据个数,CNVFC为丛集CN里面的有效数据个数,TotalVFCinCluster为一个所述丛集内数据总个数,TotalFrameInCluster为所有所述丛集内的有效数据个数;
X%+Y%=100%,X为密度比重,Y为个数比重。
优选地,本发明所述的NAND FLASH的数据源区块回收方法,在所述获取每个所述储存区块集合的有效数据个数过程中:
选取由所述丛集分布情况比对所述有效数据个数不为零的所述丛集来回收所述有效数据。
优选地,本发明所述的NAND FLASH的数据源区块回收方法,在所述获取每个所述储存区块集合的有效数据个数过程中:
若所述丛集的有效数据个数为零,则忽略该丛集的比对过程。
另,本发明还提供一种固态硬盘,所述固态硬盘使用上述的NAND FLASH的数据源区块回收方法进行数据回收。
实施本发明的一种NAND FLASH的数据源区块回收方法及固态硬盘,具有以下有益效果:在支持多通道以及多颗NAND FLASH的控制器中,将并行执行的NAND FLASH组成一个储存区块集合;获取每个储存区块集合的有效数据个数;比较每个储存区块集合的有效数据个数的大小;选取有效数据个数少的储存区块集合作为数据源区块,若储存区块集合的有效数据个数相等,则取离散度小的储存区块集合作为数据源区块,用选取的数据源区块填充数据目标区块。通过实施本发明,能提高数据比对效率,使SSD反应速度更快,还能选取回收效率最佳的数据源区块,进而充分发挥SSD速度。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
图1是本发明一种NAND FLASH的数据源区块回收方法的流程示意图。该NANDFLASH的数据源区块回收方法,包括以下步骤:
步骤101:将存储器的存储空间划分为多个储存区块集合。
具体的,将存储器的存储空间划分为多个储存区块集合,包括:在支持多通道以及多颗NAND FLASH的控制器中,将并行执行的NAND FLASH组成一个储存区块集合。
储存区块集合包括至少两个储存区块,每个储存区块包含至少一个储存页面。存储区块包括多个丛集,储存区块集合内所有储存区块的对应位置的至少一个储存页面构成一个丛集。可以理解,储存区块集合内包含储存区块的数量可根据具体的存储器内控制器的通道数和FLASH的CE个数进行适应性选择;储存区块包含的储存页面的数量可根据存储器内控制器的通道数和FLASH的CE个数进行适应性选择。
例如,如图2a和图2b所示,图2a是本发明实施例中储存区块集合1的结构示意图;图2b是本发明实施例中储存区块集合2的结构示意图。储存区块集合1和储存区块集合2都包含四个储存区块,分别为储存区块1(Block1)、储存区块2(Block2)、储存区块3(Block3)、储存区块4(Block4),存储区块4(Block4)的存储页面包含物理对逻辑映像表。
步骤102:获取每个储存区块集合的有效数据个数。
具体的,获取每个储存区块集合的有效数据个数,包括以下步骤:
通过将物理对逻辑映像表(P2L)与逻辑对物理映像表(L2P)进行比对,若比对数据相等,则为有效数据;若否,则为无效数据。
通过比对,得到储存区块集合内所有丛集的有效数据个数,进而,所有丛集的有效数据个数之和为储存区块集合的有效数据个数,其中,储存区块集合内所有储存区块的对应位置的至少一个储存页面构成一个丛集。
例如,如图2a和图2b所示,储存区块集合1和储存区块集合2分别包含四个丛集,分别是丛集1(Cluster1)、丛集2(Cluster2)、丛集3(Cluster3)、丛集4(Cluster4)。丛集1(Cluster1)由储存区块1(Block1)、储存区块2(Block2)、储存区块3(Block3)和储存区块4(Block4)的对应的储存页面构成。类似的,丛集2(Cluster2)、丛集3(Cluster3)、丛集4(Cluster4)以相同方式构成。
根据上述有效数据确定方法,得到每个丛集的有效数据个数,在图2a中:
储存区块集合1的丛集1(Cluster1)的有效数据个数1(VFC1)是4,
储存区块集合1的丛集2(Cluster2)的有效数据个数2(VFC2)是6,
储存区块集合1的丛集3(Cluster3)的有效数据个数3(VFC3)是0,
储存区块集合1的丛集4(Cluster4)的有效数据个数4(VFC4)是0,
则储存区块集合1的有效数据个数为:VFC1+VFC2+VFC3+VFC4=4+6+0+0=10。
根据上述有效数据确定方法,得到每个丛集的有效数据个数,在图2b中:
储存区块集合1的丛集1(Cluster1)的有效数据个数1(VFC1)是3,
储存区块集合1的丛集2(Cluster2)的有效数据个数2(VFC2)是4,
储存区块集合1的丛集3(Cluster3)的有效数据个数3(VFC3)是0,
储存区块集合1的丛集4(Cluster4)的有效数据个数4(VFC4)是0,
则储存区块集合2的有效数据个数为:VFC1+VFC2+VFC3+VFC4=3+4+0+0=7。
步骤103:比较每个储存区块集合的有效数据个数的大小。具体的,利用上述方法得到每个储存区块集合的有效数据个数后,比较储存区块集合之间有效数据个数的大小。例如,如图2a和图2b所示,储存区块集合1的有效数据个数为10,储存区块集合2的有效数据个数为7,则储存区块集合1的有效数据个数大于储存区块集合2的有效数据个数。可以理解,本实施例给出的储存区块集合1和储存区块集合2用于说明储存区块集合的丛集划分和有效数据计算方法,并不代表该存储空间只有两个储存区块集合,在运用本方法过程中,储存区块集合的数量可根据实际存储器大小和结构进行适应性选择。该方法可以比较多个储存区块集合的有效数据的大小,并选出有效数据小的储存区块集合。
步骤104:选取有效数据个数少的储存区块集合作为数据源区块。
优选地,本发明的NAND FLASH的数据源区块回收方法,在计算储存区块集合的有效数据个数后,会出现储存区块集合的有效数据个数相等的情况,此时,该方法还包括:
若储存区块集合的有效数据个数相等,则取离散度小的储存区块集合作为数据源区块。该离散度用于表征储存区块集合内有效数据的分布状态,即是离散还是集中,以及有效数据集中的程度大小。
具体的,储存区块集合的离散度计算方法为:
将每一个储存区块集合内区分N(N为正整数)个丛集,计算每一个丛集的加权值:X%*D+Y%*V,
其中,密度加权:D=(C1VFC*(C1VFC)/TotalVFCinCluster+..+CNVFC*(CNVFC)/TotalVFCinCluster)/N;
V=(TotalFrameInCluster-CNVFC)/TotalFrameInCluster;
C1VFC为丛集C1里面的有效数据个数,CNVFC为丛集CN里面的有效数据个数,TotalVFCinCluster为一个丛集内数据总个数(包括有效数据和无效数据),TotalFrameInCluster为所有丛集内的有效数据个数;X%+Y%=100%,X为密度比重,Y为个数比重。
可以理解,本实施例给出了一种储存区块集合的离散度计算方法,用于说明储存区块集合的离散度计算原则,采用其他类似的数学计算方法获得本发明的储存区块集合的离散度,都属于本发明的保护范围。
优选地,本发明的NAND FLASH的数据源区块回收方法,在获取每个储存区块集合的有效数据个数过程中:
选取由丛集分布情况比对有效数据个数不为零的丛集来回收有效数据。
优选地,本发明的NAND FLASH的数据源区块回收方法,在获取每个储存区块集合的有效数据个数过程中:
若丛集的有效数据个数为零,则忽略该丛集的比对过程,节省不必要的时间。
例如,如图3所示,储存区块集合包含丛集1(Cluster1)、丛集2(Cluster2)、丛集3(Cluster3)、丛集4(Cluster4),储存区块集合内丛集1(Cluster1)的有效数据个数不为零,而丛集2(Cluster2)、丛集3(Cluster3)、丛集4(Cluster4)的有效数据个数为零,则可省去对比丛集2(Cluster2)、丛集3(Cluster3)、以及丛集4(Cluster4)的比对时间,所需时间为现有技术的1/4。
另外,结合图4来说明本发明采用的储存区块设置可节省读取数据时间,图4是本发明实施例中一种储存区块集合的结构示意图。在存储技术领域,在读取数据过程中,完成一个读取动作需要的时间为:
CMD+TR+DATAOUT
其中,CMD为发送指令时间,TR为等待时间,DATAOUT为读出数据时间,正常情况下最耗时为TR,也大於其他的时间。在图4中,丛集1(Cluster1)的有效数据个数(VFC1)和丛集2(Cluster2)的有效数据个数(VFC2)相等,都为6,其中,
读取丛集1(Cluster1)内的有效数据的时间为:6CMD+2TR+6DATAOUT;
读取丛集2(Cluster2)内的有效数据的时间为:6CMD+3TR+6DATAOUT;
通过上述比对可知,读取丛集1(Cluster1)内的有效数据的时间比读取丛集2(Cluster2)内的有效数据的时间少一个等待时间TR,所以整体时间来看即便选到较少的数据,但总共花费的时间不一定会是最少的。
进一步,本发明的NAND FLASH的数据源区块回收方法,在选取数据源区块后,还包括:
步骤105:用选取的数据源区块填充数据目标区块。
另,本发明还提供一种固态硬盘,固态硬盘使用上述的NAND FLASH的数据源区块回收方法进行数据回收。
通过实施本发明,能提高数据比对效率,使SSD反应速度更快,还能选取回收效率最佳的数据源区块,进而充分发挥SSD速度。
以上实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据此实施,并不能限制本发明的保护范围。凡跟本发明权利要求范围所做的均等变化与修饰,均应属于本发明权利要求的涵盖范围。