具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的基于闪存的固态硬盘的减小固态硬盘写入放大的写入方法和数据写入系统进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一
本发明的基于闪存的固态硬盘的减小固态硬盘写入放大的写入方法,其中固态硬盘作为高速缓冲存储器;包括以下步骤:
一种减小固态硬盘写入放大的写入方法,其中,固态硬盘作为高速缓冲存储器;包括以下步骤:
步骤A:在向固态硬盘中写入新数据时,顺序确定固态硬盘的新存储页面;
步骤B:根据设定的处理条件,对符合处理条件的页面标志为第二页面标志的页面进行处理;将处理后页面的页面标志设置为第三页面标志;
根据设定的擦除范围,对符合擦除范围的页面标志为第三页面标志的页面所在的块进行擦除,将擦除后块的所有页面的页面标志设置为第一页面标志;
在页面标志为第一页面标志的新存储页面写入新数据,并将新存储页面的页面标志设置为第二页面标志;返回步骤A,直至停止写入新数据。
其中,在所述步骤B中,将页面的页面标志设置为第一页面标志,第二页面标志,第三页面标志,包括如下步骤:设置存储标志a和存储标志b;
将页面的页面标志设置为第一页面标志包括如下步骤:
将存储标志a的值设置为0,表示干净,干净表示该页面已经被执行过擦除操作,可以直接进行写操作;
将存储标志b的值设置为0,表示无效,无效表示该页面没有数据或该页面的数据已经写入主存储器,可以被擦除;完成第一页面标志设置;
将页面的页面标志设置为第二页面标志包括如下步骤:
将存储标志a的值设置为1,表示不干净,不干净表示该页面未被执行过擦除操作,在写入数据前,先执行擦除操作;
将存储标志b的值设置为1,表示有效,有效表示该页面的数据未写入主存储器;完成第二页面标志设置;
将页面的页面标志设置为第三页面标志包括如下步骤:
将存储标志a的值设置为1,表示不干净,不干净表示该页面未被执行过擦除操作,在写入数据前,先执行擦除操作;
将存储标志b的值设置为0,表示无效,无效表示该页面没有数据或该页面的数据已经写入主存储器,可以被擦除;完成第三页面标志设置。
优选的,所述步骤A之前还包括步骤A′:对固态硬盘进行初始化设置,将所有页面的页面标志设置为第一页面标志。
其中,所述固态硬盘包括M个块,分别用块1,块2,...,块M表示,其中M是自然数;所述每个块包括N个页面,分别用页面1,页面2,...,页面N表示,其中N是自然数;
所述步骤A′之后还包括步骤A′-1:如图2所示,初次写入数据时,新存储页面是块X的页面Y,其中,X是小于等于M的任意一个自然数,Y是小于等于N的任意一个自然数。
优选的,如图2所示,所述步骤A包括以下步骤:
步骤A-1:识别上一次写入数据时所占用的页面,块X′的页面Y′;
步骤A-2:本次写入新数据的新存储页面自块X′的页面Y′的下一页开始,块X′的页数逐级递增;块X′的页数递增至页面N后,块数递增;
块数递增后,页数逐级递增;块数逐级递增至块M后,块数返回块1;
其中,X′是小于等于M的自然数,Y′是小于等于N的自然数。
优选的,所述步骤A′中,对固态硬盘进行初始化设置通过软件实现或通过对所有的页面进行擦除实现。
实施例二
本发明的减小固态硬盘写入放大的写入方法的实施例二,如图3所示,
步骤S10′:对固态硬盘进行初始化设置,将所有页面的页面标志设置为第一页面标志;
步骤S20′:在向固态硬盘中写入新数据时,顺序确定固态硬盘的新存储页面;
步骤S 30′:判断相应的新存储页面的存储标志a的值是0还是1:
新存储页面的存储标志a的值是0时,表示干净,进入步骤S80′:
新存储页面的存储标志a的值是1时,表示不干净,进入步骤S40′:
步骤S40′:判断新存储页面的存储标志b是的值是0还是1:
新存储页面的存储标志b的值是0时,表示无效,进入步骤S70′;
新存储页面的存储标志b的值是1时,表示有效,进入步骤S50′;
步骤S50′:将新存储页面所在块及顺序推X″-1个块的所有存储标志b的值是1的页面的数据读出写入到主存储器,同时将新存储页面所在块及顺序推X″-1个块的所有页面的页面标志设置为第三页面标志;进入步骤S60′;其中,X″是自然数且1≤X″≤M;运行步骤60′;
步骤60′:擦除新存储页面所在块及顺序推X″-1个块,将擦除后的X″个块的所有页面的页面标志设置为第一页面标志;运行步骤S80′;
步骤S70′:擦除新存储页面所在块,将擦除后的新存储页面所在块所有页面的页面标志设置为第一页面标志;运行步骤S80′;
步骤S80′:将新数据写入新存储页面,同时将新存储页面的页面标志设置为第二页面标志;返回步骤S20′,直至停止写入新数据。
其中,在步骤S30′~步骤S80′中,将页面的页面标志设置为第一页面标志,第二页面标志,第三页面标志的步骤与实施例一中的步骤相同,不再详述。
其中,所述固态硬盘包括M个块,分别用块1,块2,...,块M表示,其中M是自然数;所述每个块包括N个页面,分别用页面1,页面2,...,页面N表示,其中N是自然数;步骤S10′之后包括步骤S10′-1与实施例一中步骤A′-1相同,不再详述。
优选的,步骤S20′包括步骤与实施例一中步骤A包含步骤相同,不再详述。
实施例三
本发明的减小固态硬盘写入放大的写入方法的实施例三,如图4所示,
步骤S10″:对固态硬盘进行初始化设置,将所有页面的页面标志设置为第一页面标志;设定存储标志b的值为1(表示有效)的固态硬盘区域容量所占固态硬盘总容量的阀值;
步骤S20″:在向固态硬盘中写入新数据时,顺序确定固态硬盘的新存储页面;
步骤S30″:统计存储标志b的值为1(表示有效)的固态硬盘区域容量所占固态硬盘总容量的比例是否低于设定的阀值:
低于设定的阀值时,运行步骤S60″;
不低于设定的阀值时,运行步骤S40″;
步骤S40″:将所有存储标志b的值为1(表示有效)的页面的数据写入主存储器,将页面标志设置为第三页面标志;运行步骤S50″;
步骤S50″:擦除页面标志为第三页面标志的页面,将擦除后页面的页面标志设置为第一页面标志;运行步骤S60″;
步骤S60″:将新数据写入新存储页面,同时将新存储页面的页面标志设置为第二页面标志;返回步骤S20″,直至停止写入新数据。
优选的,所述阀值是50%或60%或70%或80%。
其中,在步骤S30″~步骤S60″中,将页面的页面标志设置为第一页面标志,第二页面标志,第三页面标志的步骤与实施例一中的步骤相同,不再详述。
其中,所述固态硬盘包括M个块,分别用块1,块2,...,块M表示,其中M是自然数;所述每个块包括N个页面,分别用页面1,页面2,...,页面N表示,其中N是自然数;步骤S10″之后包括步骤S10″-1与实施例一中步骤A′-1相同,不再详述。
优选的,步骤S20″包括步骤与实施例一中步骤A包含步骤相同,不再详述。
实施例四
本发明的数据写入系统,如图5所示,包括客户端,高速缓冲存储器和主存储器;所述高速缓冲存储器采用基于闪存的固态硬盘;所述基于闪存的固态硬盘的写入方式采用实施例一或二或三中任意一种减小固态硬盘写入放大的写入方法;所述客户端首先将数据写入高速缓冲存储器,在将数据从高速缓冲存储器写入到主存储器;所述高速缓冲存储器包括写高速缓冲存储器或读写混合高速缓冲存储器。
优选的,所述固态硬盘包括M个块,分别用块1,块2,...,块M表示,其中M是自然数;所述每个块包括N个页面,分别用页面1,页面2,...,页面N表示,其中N是自然数;
页面的页面标志包括存储标志a和存储标志b;根据存储标志a和存储标志b将页面标志分为第一页面标志,第二页面标志,第三页面标志;
第一页面标志为存储标志a的值为0,存储标志b的值为0:
存储标志a的值为0,表示干净,干净表示该页面已经被执行过擦除操作,可以直接进行写操作;
存储标志b的值为0,表示无效,无效表示该页面没有数据或该页面的数据已经写入主存储器,可以被擦除;
第二页面标志为存储标志a的值为1,存储标志b的值为1:
存储标志a的值为1,表示不干净,不干净表示该页面未被执行过擦除操作,在写入数据前,先执行擦除操作;
存储标志b的值为1,表示有效,有效表示该页面的数据未写入主存储器;
第三页面标志为存储标志a的值为1,存储标志b的值为0:
存储标志a的值为1,表示不干净,不干净表示该页面未被执行过擦除操作,在写入数据前,先执行擦除操作;
存储标志b的值为0,表示无效,无效表示该页面没有数据或该页面的数据已经写入主存储器,可以被擦除。
本发明的基于闪存的固态硬盘的减小固态硬盘写入放大的写入方法和数据写入系统,该写入方法和数据写入系统有效减小固态硬盘的写入放大,提高基于闪存的固态硬盘的寿命和性能;特别适用于基于闪存的固态硬盘作为高速缓冲存储器时,数据量大,更新快特征,能够有效减小基于闪存的固态硬盘的写入放大,同时有助于均衡基于闪存的固态硬盘的存储介质的磨损,延长整个基于闪存的固态硬盘的使用寿命,提高基于闪存的固态硬盘的性能。
最后应当说明的是,很显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型。