一种获取闪存对偶页错误相关性的方法和系统技术领域
本发明属于固态盘存储技术领域,更具体地,涉及一种获取闪存对偶页错误相关
性的方法和系统。
背景技术
闪存具有高性能、大容量、低能耗、快速的读写速度等优势而被广泛应用于计算机
存储系统中,随着闪存存储密度的增加,原始误码率逐渐提升,数据可靠性下降,致使传统
的纠错码算法不足以保证数据可靠性,为了设计针对性的算法,需要对闪存的错误模式进
行研究。
闪存对偶页存在于闪存块中,其结构如图1所示,当将比特数据写入闪存中时,每
个单元的两个比特被写到两个不同的页中,其中这两个比特被称为对偶比特,这两个比特
所属的页被称为对偶页,其中每个页是一个单独的纠错码单位,每个页中的错误数据通过
纠错码算法独立进行纠正。
然而,现有的对闪存块中的页错误特性进行研究存在以下几个明显的不足之处:
首先,现有的对闪存页的错误特性进行研究没有探索对偶页之间的比特错误相关性特征,
没有考虑到闪存块中的页发生比特错误时对其对偶页中的比特的影响;其次,现有的研究
方法没有充分发掘闪存页的内部错误特征;这两个问题的出现,会导致后续设计纠错码时
需要额外的存储空间,从而增加了开销。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种获取闪存对偶页错误相
关性的方法和系统,其目的在于,通过考虑到闪存块中的页发生比特错误时对其对偶页中
比特的影响,并通过充分发掘闪存页的内部错误特征,解决现有研究方法中存在的后续设
计纠错码时需要额外的存储空间,从而增加了开销的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种获取闪存对偶页错误相关
性的方法,包括以下步骤:
(1)接收来自上层服务器的顺序写入数据请求,根据该顺序写入数据请求为SSD控
制器生成的随机数据分配对应的缓存,所有的缓存组成数据池;
(2)接收来自用户端的顺序写入请求,并根据该顺序写入请求为步骤(1)中分配的
每个缓存中的所有数据分配页面地址,并根据分配的页面地址将数据池中的所有数据写入
到闪存的页面中;
(3)判断SSD的闪存中的所有页是否全部被写入,如果是,则转入步骤(4),否则转
入步骤(7);
(4)根据步骤(2)中分配的第一个页面地址将存储在闪存页面中的对应数据读出,
并将读出的数据与步骤(1)中分配的第一个缓存中的数据进行比较,以统计闪存页面中该
数据的错误数量和错误位置;
(5)针对步骤(2)中分配的剩余页面地址,重复执行上述步骤(4),直至闪存页面中
所有数据都被统计完毕为止,并将统计出的闪存页面中所有错误数据的数量、错误位置和
错误数据在闪存页面中的地址作为一个信息条目存储在预设的错误信息列表中;
(6)根据错误信息列表中错误数据在闪存页面中的地址确定对偶页,并统计所有
对偶页中的对偶比特错误数量和位置,并将统计出的对偶比特错误数量和位置存储在错误
信息列表中;
(7)继续根据分配的页面地址将数据池中的剩余数据写入到闪存的页面中,直到
闪存页面被完全写满为止,然后返回步骤(4)。
优选地,顺序写入数据请求中要求按页写入数据,该缓存的大小等于SSD的闪存的
页面大小。
优选地,每个数据被分配的页面地址为:SSD通道号+SSD芯片号+SSD芯片中的分组
号+SSD芯片中分组号的块号+SSD芯片中分组号的块中的页号;
优选地,该错误信息列表可以设置在SSD中,也可以设置在服务器或用户端。
优选地,还包括在所述步骤(6)之后,所述步骤(7)之前,将错误信息列表中错误数
据的数量、错误位置和错误数据在闪存页面中的地址、以及对偶比特错误数量和位置写入
日志文件中。
按照本发明的另一方面,提供了一种获取闪存对偶页错误相关性的系统,包括:
第一模块,用于接收来自上层服务器的顺序写入数据请求,根据该顺序写入数据
请求为SSD控制器生成的随机数据分配对应的缓存,所有的缓存组成数据池;
第二模块,用于接收来自用户端的顺序写入请求,并根据该顺序写入请求为第一
模块中分配的每个缓存中的所有数据分配页面地址,并根据分配的页面地址将数据池中的
所有数据写入到闪存的页面中;
第三模块,用于判断SSD的闪存中的所有页是否全部被写入,如果是,则转入第四
模块,否则转入第七模块;
第四模块,用于根据第二模块中分配的第一个页面地址将存储在闪存页面中的对
应数据读出,并将读出的数据与第一模块中分配的第一个缓存中的数据进行比较,以统计
闪存页面中该数据的错误数量和错误位置;
第五模块,用于针对第二模块中分配的剩余页面地址,重复执行上述第四模块,直
至闪存页面中所有数据都被统计完毕为止,并将统计出的闪存页面中所有错误数据的数
量、错误位置和错误数据在闪存页面中的地址作为一个信息条目存储在预设的错误信息列
表中;
第六模块,用于根据错误信息列表中错误数据在闪存页面中的地址确定对偶页,
并统计所有对偶页中的对偶比特错误数量和位置,并将统计出的对偶比特错误数量和位置
存储在错误信息列表中;
第七模块,用于继续根据分配的页面地址将数据池中的剩余数据写入到闪存的页
面中,直到闪存页面被完全写满为止,然后返回第四模块。
优选地,顺序写入数据请求中要求按页写入数据,该缓存的大小等于SSD的闪存的
页面大小。
优选地,每个数据被分配的页面地址为:SSD通道号+SSD芯片号+SSD芯片中的分组
号+SSD芯片中分组号的块号+SSD芯片中分组号的块中的页号;
优选地,该错误信息列表可以设置在SSD中,也可以设置在服务器或用户端。
优选地,还包括第八模块,用于将错误信息列表中错误数据的数量、错误位置和错
误数据在闪存页面中的地址、以及对偶比特错误数量和位置写入日志文件中。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有
益效果:
(1)本发明由于采用了步骤(2)到步骤(6),其考虑到闪存块中的页发生比特错误
时对其对偶页中比特的影响,并通过充分发掘闪存页的内部错误特征,从而解决了现有研
究方法中存在的后续设计纠错码时需要额外的存储空间,从而增加了开销的技术问题;
(2)本发明能够为设计有效的纠错码算法提供依据和参考。
附图说明
图1是现有闪存块的内部结构示意图。
图2是本发明获取闪存对偶页错误相关性的方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对
本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并
不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要
彼此之间未构成冲突就可以相互组合。
如图2所示,本发明获取闪存对偶页错误相关性的方法包括以下步骤:
(1)接收来自上层服务器的顺序写入数据请求,根据该顺序写入数据请求为固态
盘(Solid state disk,简称SSD)控制器生成的随机数据分配对应的缓存,所有的缓存组成
数据池;具体而言,顺序写入数据请求中要求按页写入数据,该缓存的大小等于SSD的闪存
(Flash Memory,简称FM)的页面大小;
本步骤的优点在于:能够对生成的随机数据进行有效的管理,当需要缓存中的数
据时能够快速高效地提取。
(2)接收来自用户端的顺序写入请求,并根据该顺序写入请求为步骤(1)中分配的
每个缓存中的所有数据分配页面地址,并根据分配的页面地址将数据池中的所有数据写入
到闪存的页面中;具体而言,每个数据被分配的页面地址为:SSD通道号+SSD芯片号+SSD芯
片中的分组号+SSD芯片中分组号的块号+SSD芯片中分组号的块中的页号;
本步骤的优点在于:能够清楚地将生成的随机数据写入到指定的SSD页面中,从而
在读取的时候能够快速地读取所需要的数据。
(3)判断SSD的闪存中的所有页是否全部被写入,如果是,则转入步骤(4),否则转
入步骤(8);
(4)根据步骤(2)中分配的第一个页面地址将存储在闪存页面中的对应数据读出,
并将读出的数据与步骤(1)中分配的第一个缓存中的数据进行比较,以统计闪存页面中该
数据的错误数量和错误位置;具体而言,本步骤就是将二者数据进行逐位(bit)比对,一旦
二者不相同,则说明闪存页面中的对应数据发生错误,此时记录下该错误数据在闪存页面
中的位置;
本步骤的优点在于:能够有效地统计出存储在SSD页面中的错误数据,为研究SSD
对偶页的错误相关性特征提供依据。
(5)针对步骤(2)中分配的剩余页面地址,重复执行上述步骤(4),直至闪存页面中
所有数据都被统计完毕为止,并将统计出的闪存页面中所有错误数据的数量、错误位置和
错误数据在闪存页面中的地址作为一个信息条目存储在预设的错误信息列表中;具体而
言,该错误信息列表可以设置在SSD中,也可以设置在服务器或用户端;
本步骤的优点在于:根据页面地址可以清楚的知道SSD页面中的对偶页,以及对偶
页出错的比特数量和位置。
(6)根据错误信息列表中错误数据在闪存页面中的地址确定对偶页,并统计所有
对偶页中的对偶比特错误数量和位置(例如图1中的字线1中的第2页和第8页是对偶页),并
将统计出的对偶比特错误数量和位置存储在错误信息列表中;
(7)将错误信息列表中错误数据的数量、错误位置和错误数据在闪存页面中的地
址、以及对偶比特错误数量和位置写入日志文件中;
本步骤的优点在于:为后续对SSD对偶页的错误相关性特征进行研究提供一种便
利,当研究需要时,可以直接调取所需要的数据。
(8)继续根据分配的页面地址将数据池中的剩余数据写入到闪存的页面中,直到
闪存页面被完全写满为止,然后返回步骤(4)。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以
限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含
在本发明的保护范围之内。