固态硬盘中NAND闪存数据的控制方法及控制系统与流程

文档序号:12271127阅读:233来源:国知局
固态硬盘中NAND闪存数据的控制方法及控制系统与流程

本发明涉及存储技术领域,尤其涉及一种固态硬盘中NAND闪存数据的控制方法及控制系统。



背景技术:

SSD(Solid State Disk)泛指使用NAND闪存(Flash)组成的固态硬盘,其特别之处在于没有机械结构,利用传统的NAND Flash特性,以区块写入和擦除的方式作读写的功能,因此在读写的效率上非常依赖读写技术上的设计。SSD与目前的传统硬盘相比较,具有低耗电、耐震、稳定性高、耐低温等优点。SSD上由于数据是存放在半导体内存上,能够在低于一毫秒的时间内对任意位置的存储单元完成I/O(输入/输出)操作,因此在对许多应用程序来说最为关键的I/O性能指标IOps(即每秒多少次IO动作)上,SSD可以达到普通机械硬盘的50~800倍。

SSD的优势主要体现在两个方面:响应时间短和读写效率高;同时SSD以固态芯片作为存储介质,其工作抗震能力达到15G(10~1000Hz),是传统硬盘的15倍,抗冲击能力达到1500G(0.5ms),是传统硬盘的27倍,高效地提升了SSD的稳定性。

近年来,3D NAND闪存的生产工艺得到了显著提高,NAND闪存的存储容量在过去十年里增长了超过一千倍,存储容量的增长得益于持续降低闪存的制程和不断增加单个存储单元的存储容量。但是伴随着存储容量的增长,NAND闪存的可靠性和性能却越来越低,NAND闪存发生比特位翻转的概率很高,其误码率可以达到10-5或以上。3D NAND闪存的读写错误并不是孤立的,一个读写操作可能会引起临近物理页的干扰。如图1所示,在NAND闪存中,对于一个物理页的编程(编程单元A和B),不仅会干扰到相同物理块的临近物理页(编程单元E),而且会干扰到Z轴方向的临近物理单元(编程单元C和D)。



技术实现要素:

本发明旨在解决现有技术中固态硬盘中3D NAND闪存误码率高导致可靠性和性能越来越低的技术问题,提供一种固态硬盘中NAND闪存数据的控制方法及控制系统。

本发明的实施例提供一种固态硬盘中NAND闪存数据的控制方法,所述固态硬盘的存储空间包括多个闪存,其中一闪存作为第一存储空间,剩余的闪存作为第二存储空间,其特征在于:所述控制方法包括以下步骤:

判断待写入的数据是否为重要数据,若否,则在所述第二存储空间的相应位置写入所述待写入的数据;

若是,在所述第一存储空间的相应位置写入所述待写入的数据,以及在所述第二存储空间的相应位置写入所述待写入的数据;

判断是否存在新的待写入数据,若是,进入所述判断待写入的数据是否为重要数据的步骤;若否,结束步骤。

本发明的实施例还提供了一种固态硬盘中NAND闪存数据的控制系统,所述固态硬盘的存储空间包括多个闪存,其中一闪存作为第一存储空间,剩余的闪存作为第二存储空间,所述控制系统包括:数据判断模块,备份数据写入模块,普通数据写入模块及结束操作模块;

数据判断模块,用于判断待写入的数据是否为重要数据;

备份数据写入模块,用于当待写入的数据为重要数据时,在所述第一存储空间的相应位置写入所述待写入的数据;

普通数据写入模块,用于所述第二存储空间的相应位置写入所述待写入的数据;

结束操作模块,用于结束操作。

本发明的技术方案与现有技术相比,有益效果在于:通过将固态硬盘中的存储空间划分为第一存储空间及第二存储空间,将重要闪存数据存储在第二存储空间时,同时将重要的闪存数据在第一存储空间进行备份,可以有效地降低NAND闪存的误码率,同时有效增强存储系统的数据可靠性。

附图说明

图1是现有技术中NAND FLASH的编程干扰示意图;

图2是本发明3D NAND FLASH中重要数据与普通数据写操作顺序的示意图;

图3是本发明3D NAND FLASH中重要数据与普通数据写操作的流程示意图;

图4是本发明3D NAND FLASH中触发垃圾回收机制的流程示意图;

图5是本发明3D NAND FLASH中重要数据与普通数据的垃圾回收的流程示意图;

图6是本发明3D NAND FLASH中误码率的比对示意图;

图7是本发明3D NAND闪存数据的控制系统组成结构示意图;

图8是本发明3D NAND闪存数据控制系统中垃圾回收机制的结构组成示意图;

图9是本发明3D NAND闪存数据控制系统中数据写操作机制的结构组成示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

现在大多数SSD采用同样的方法存储重要数据和非重要数据,同时在存储数据的FLASH的分配是顺序选择FLASH,顺序选择空白物理块。但是随着SSD存储容量的增长以及图1所示的NAND FLASH的编程干扰,NAND闪存发生比特位翻转的概率很高,其误码率可以达到10-5或以上。而本发明的SSD中3D NAND闪存数据的控制方法主要针对重要数据采取了备份存储的方法,可以有效增强存储系统的数据可靠性。

具体的,本发明一个实施例固态硬盘中NAND闪存数据的控制方法,其中所述固态硬盘的存储空间包括多个闪存,其中一闪存作为第一存储空间即Store_Import存储空间,剩余的闪存作为第二存储空间即Store_Common存储空间,所述控制方法包括以下步骤:

判断待写入的数据是否为重要数据,若否,则在所述第二存储空间的相应位置写入所述待写入的数据;

若是,在所述第一存储空间的相应位置写入所述待写入的数据,以及在所述第二存储空间的相应位置写入所述待写入的数据;

判断是否存在新的待写入数据,若是,进入所述判断待写入的数据是否为重要数据的步骤;若否,结束步骤。

在具体实施中,图2是本发明一个实施例3D NAND闪存数据的控制方法的流程示意图,所述控制方法包括以下步骤:

步骤S100,在进行数据的写操作时,首先判断所要写入的数据是否为重要数据,若是,则进入步骤S200,若否,则进入步骤S300;

步骤S200,控制在Store_Import存储空间里进行数据的写操作,然后进入步骤S300;

步骤S300,控制在Store_Common存储空间里进行数据的写操作;并判断是否有新的数据写入,若是,则重复上述步骤;若否,结束步骤。

由于目前Nand Flash的数据总线为8bit,最大能提供25MB/s的读速度和3MB/s的写速度,显然SSD如果提供此速度是用户无法接受的,目前SSD控制器普遍采用多个通道同时并行操作多片Flash,类似RAID0,这样读写速度可以得到极大地提高。以上实施例中,优选地,SSD控制器控制m*n个FLASH,其中m表示Flash通道个数,n表示Flash通道所对应的FLASH个数。首先,SSD控制器会选择一条FlASH通道所对应的FLASH作为重要数据备份的物理空间Store_Import存储空间,其他的FLASH通道作为存储数据的存储空间Store_Common存储空间。也即,当系统判定为重要数据,就会在Store_Import存储空间进行数据的备份。

结合图3所示,在对应的Store_Common存储空间进行数据的写操作的具体步骤为:

步骤S310,在进行数据的写操作时,根据所要写入的数据的逻辑页号得到逻辑块号和块内页偏移号;

步骤S320,根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号,其中所述物理块链包括一个作为入口物理块的基本块和多个用于更新数据的替换块及缓冲块;

步骤S330,判断所述入口物理块号对应基本块中所述块内页偏移号对应物理页是否空闲,如果是,进入步骤S370,如果否,进入步骤S340;

步骤S340,查找所述当前物理块链中各个替换块是否有空闲物理页,如果是进入步骤S370,如果否进入步骤S350;

步骤S350,查找所述当前物理块链中缓冲块是否有空闲物理页,如果是进入步骤S370,如果否进入步骤S360;

步骤S360,重新分配数据块,复制有效数据页,以缓冲块作为新的基本块,并对原基本块和替换块进行物理块的擦除回收操作;

步骤S370,在所述空闲物理页中进行数据的写入。

同样,优选地,在对应的Store_Import存储空间进行数据的写操作的具体步骤与在对应的Store_Common存储空间进行数据的写操作的具体步骤基本相同,具体为:

步骤S210,在进行数据的写操作时,根据所要写入的数据的逻辑页号得到逻辑块号和块内页偏移号;

步骤S220,根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号,其中所述物理块链包括一个作为入口物理块的基本块和多个用于更新数据的替换块及缓冲块;

步骤S230,判断所述入口物理块号对应基本块中所述块内页偏移号对应物理页是否空闲,如果是,进入步骤S270,如果否,进入步骤S240;

步骤S240,查找所述当前物理块链中各个替换块是否有空闲物理页,如果是进入步骤S270,如果否进入步骤S250;

步骤S250,查找所述当前物理块链中缓冲块是否有空闲物理页,如果是进入步骤S270,如果否进入步骤S260;

步骤S260,重新分配数据块,复制有效数据页,以缓冲块作为新的基本块,并对原基本块和替换块进行物理块的擦除回收操作;

步骤S270,在所述空闲物理页中进行数据的写入。

在具体实施中,对于SSD闪存芯片,所述SSD闪存芯片可分为若干层,每层可分为若干行,而每行中有若干物理块,每个物理块有若干个物理页。

在步骤S210,S310中,操作系统首先发出写操作请求,存储管理系统计算相应的逻辑块号log_block和块内页偏移号offset,比如每个物理块中有page_per_block=32个物理页,而写数据的逻辑页号log_page=38,其对应的逻辑块号log_block为log_page/page_per_block=38/36=1,其对应的块内页偏移号offset为log_page%page_per_block=38%36=2,接着在步骤S220,S320中存储管理系统查看逻辑块号到物理块号的映射表,获得对应物理块链的入口物理块,即基本块的物理块号phy_block。

在步骤S230,S330中,每个物理块链只有一个基本块,该基本块作为块链的入口物理块。比如逻辑页号为log_page,每个物理块中共有page_per_block个物理页,则在基本块中,逻辑页仅在log_page%page_per_block物理页上存入数据。

在步骤S240,S340及步骤S250,S350中,每个物理块链有多个替换块和一个缓冲块,当数据进行更新,且基本块对应的物理页存有数据时,则更新数据按照物理页号大小,顺次写入替换块中。也就是说对基本块中的物理页进行数据更新时,则更新数据按照物理页号大小,顺次写入替换块中。另外在物理块链的组织形式上,通过将物理块链中的物理块分为基本块、替换块及缓冲块,针对频繁进行数据更新的逻辑页,用于更新数据的替换块可以保证了空间的有效利用,减少了擦除次数以及对因为擦除期间复制有效数据的时间,提高了芯片的性能。

基于NAND FLASH有一些限制,一是其不支持本地更新,在数据写入前必须进行擦除操作。二是操作粒度不对称:读写操作均以页为单位,而擦除操作必须以块为单位。因此,进一步地,如图4所示,在进行数据的写操作之前,即步骤S100之前,还包括以下步骤:

步骤S010,查看并记录FLASH中空白物理块的个数;

步骤S020,判断FLASH中空白物理块的个数是否小于预设空闲块阀值,如果是,则进入步骤S030,如果否,则进入步骤S100;

步骤S030,对所述多个闪存进行垃圾回收。

更进一步地,如图5所示,所述垃圾回收机制的步骤,具体为:

步骤S031,查找物理块对应的个数最多的逻辑块,并进入步骤S032;

步骤S032,判断该逻辑块中所写入的数据是否为重要数据,如果是,进入步骤S033,如果否,则进入步骤S035;

步骤S033,在在Store_Import存储空间里查找新的空白物理块,顺序读取所述逻辑块对应的物理块,并将每个物理块的相对物理页中最新更新的数据写入空白物理块的相对物理页中,并进入步骤S034;

步骤S034,将逻辑块对应的物理块进行擦除,同时逻辑块对应擦除后的新空白物理块;

步骤S035,在Store_Common存储空间里查找新的空白物理块,顺序读取所述逻辑块对应的物理块,并将每个物理块的相对物理页中最新更新的数据写入空白物理块的相对物理页中,并进入步骤S036;

步骤S036,将逻辑块对应的物理块进行擦除,同时逻辑块对应擦除后的新空白物流块。

结合图6所示,假设每个物理页(Physical Page)的存储容量是2Kbytes(即16384比特),NAND闪存的误码率为10-5,而且采用SECDED(一位误码纠错、两位误码检错)的ECC来检测和纠正误码。

那么,图6(a)表示了一个物理页上发生超过一位误码的情况,在这种情况下,物理页P0不能提供正确的数据,它发生的概率为1.20*10-2。如果该物理页保存了重要数据,发生误码将会直接影响到NAND闪存存储系统的正常工作。

图6(b)表示了物理页P0发生超过一位误码,而其冗余备份物理页P1有少于两位误码的情况。根据本发明上述的实施例可以理解,这里的物理页P0位于Store_Common存储空间的物理块中,物理页P1位于Store_Import存储空间的物理块中,存储空间利用物理页P1这一冗余备份,即使无法从物理页P0读取数据,物理页P1仍然可以提供正确数据。这种情况发生的概率为1.19*10-2,已经近似等于情况(a)的概率值。

我们还注意到,即使物理页和它的冗余备份物理页都有两位的误码,我们仍然有机会进行纠错。图6(c)表示了物理页P2的误码发生位置与其冗余备份P3的误码发生位置不同的情况,利用简单的异或操作就可以对两个物理页都进行纠错。对于情况图6(d),我们可以至少检测出两位的误码。而图6(e)中发生的概率为9.6714*10-13

以上实例说明,利用冗余备份可以有效增强存储系统的数据可靠性,可以有效地降低NAND FLASH的误码率。

在具体实施中,如图7所示,本发明还提供一种SSD中3D NAND闪存数据的控制系统,所述控制系统包括:数据判断模块10,备份数据写入模块20,普通数据写入模块30及结束操作模块40;

数据判断模块10,用于判断要写入的数据是否为重要数据;

备份数据写入模块20,用于数据判断模块判断为重要数据时,将重要数据写入对应的Store_Import存储空间相应的位置;

普通数据写入模块30,用于将数据写入对应的Store_Common存储空间相应的位置;

结束操作模块40,用于结束操作步骤。

进一步地,结合图9所示,所述备份数据写入模块20及普通数据写入模块30分别都包括生成单元21、31,映射关系建立单元22、32,确定单元23、33,30,写入操作单元24、34,写入查找分配单元25、35,数据分配单元26、36和擦除回收操作单元27、37。

生成单元21、31,用于在进行数据的写操作时,根据所要写入数据的逻辑页号得到逻辑块号和块内页偏移号;

映射关系建立单元22,32,用于根据预设的映射表得到所述逻辑块号对应物理块链的入口物理块号,其中所述物理块链包括一个作为入口物理块的基本块和多个用于更新数据的替换块;

确定单元23、33,用于判断所述入口物理块号对应基本块中所述块内页偏移号对应物理页是否空闲或是否存在有效数据,如果是,进入写入操作单元24、34,如果否,进入写入查找分配单元25,35;

写入操作单元24、34,用于在所述空闲物理页中进行数据的写入;

写入查找分配单元25、35,用于查找所述当前物理块链中各个替换块是否有空闲物理页,如果是,进入写入操作单元24、34,如果否,则进入数据分配单元26、36;

数据分配单元26、36,用于查找所述当前物理块链中的缓冲块是否存在空闲物理页,如果是,进入写入操作单元24、34,如果否,重新分配数据块,复制有效数据页,以缓冲块作为新的基本块,并进入所述擦除回收操作单元27、37;

擦除回收操作单元27、37,用于对原基本块和替换块进行物理块的擦除回收操作。

在具体实施中,对于3D闪存芯片,所述3D闪存芯片可分为若干层,每层可分为若干行,而每行中有若干物理块,每个物理块有若干个物理页。

在生成单元中,操作系统首先发出写操作请求,生成单元计算相应的逻辑块号log_block和块内页偏移号offset,比如每个物理块中有page_per_block=32个物理页,而写数据的逻辑页号log_page=38,其对应的逻辑块号log_block为log_page/page_per_block=38/36=1,其对应的块内页偏移号offset为log_page%page_per_block=38%36=2,接着映射关系建立模块20查看逻辑块号到物理块号的映射表,获得对应物理块链的入口物理块,即基本块的物理块号phy_block。

在映射关系建立单元中,每个物理块链只有一个基本块,该基本块作为块链的入口物理块。比如逻辑页号为log_page,每个物理块中共有page_per_block个物理页,则在基本块中,逻辑页仅在log_page%page_per_block物理页上存入数据。每个物理块链有多个替换块,当数据进行更新,且基本块对应的物理页存有数据时,则更新数据按照物理页号大小,顺次写入替换块中。也就是说对基本块中的物理页进行数据更新时,则更新数据按照物理页号大小,顺次写入替换块中。另外在物理块链的组织形式上,通过将物理块链中的物理块分为基本块和替换块,针对频繁进行数据更新的逻辑页,用于更新数据的替换块可以保证了空间的有效利用,减少了擦除次数以及对因为擦除期间复制有效数据的时间,提高了芯片的性能。

在确定单元中,若phy_block中的第offset物理页空闲,则向该物理页中写入数据;否则,顺次查找当前的物理块链中的替换块是否有空闲的物理页。若块链中无空闲的物理页,则分配空闲物理块给当前的物理块链。将新分配的空闲物理块放于当前的物理块链的尾端,并在所述空闲物理块的第一个物理页上写入数据。

优选地,所述控制系统还包括一个控制模块,用于选择其中一条FlASH通道所对应的FLASH标记为Store_Import存储空间,其他的FLASH通道对应的FLASH标记为Store_Common存储空间。在写入数据时,数据分为重要数据和普通数据,普通数据存储在Store_Common存储空间中,重要数据既要存储在Store_Common存储空间中,也要存储在Store_Import存储空间中。当重要数据更新时,更新的数据存储方式也是如此。

更进一步地,所述控制系统还包括采集模块101,比较模块102,返回模块104和垃圾回收模块103;

采集模块101,用于采集记录flash中空白物理块的个数;

比较模块102,用于比较FLASH中空白物理块的个数是否小于预设空闲块阀值;

垃圾回收模块103,用于当比较模块输出结果为是时,对所述多个闪存进行垃圾回收;

返回模块104,用于当比较模块输出结果为是时,进入数据判断模块10。

具体的,所述垃圾回收模块103包括查找判断单元,备份数据读取执行单元,备份数据擦除单元,普通数据读取执行单元和普通数据擦除单元;

查找判断单元,用于当比较模块输出结果为是时,查找物理块对应的个数最多的逻辑块,并判断该逻辑块中所写入的数据是否为重要数据;

备份数据读取执行单元,用于在所述第一存储空间里查找新的空白物理块,顺序读取所述逻辑块对应的物理块,并将每个物理块的相对物理页中最新更新的数据写入空白物理块的相对物理页中;

备份数据擦除单元,用于擦除所述第一存储空间中逻辑块对应的物理块;

普通数据读取执行单元,用于在所述第二存储空间里查找新的空白物理块,顺序读取所述逻辑块对应的物理块,并将每个物理块的相对物理页中最新更新的数据写入空白物理块的相对物理页中;

普通数据擦除单元,用于擦除所述第二存储空间中逻辑块对应的物理块。

在上述的垃圾回收机制中,首先查看该逻辑块对应的数据是否是重要数据,如果是重要数据,首先在Store_Import存储空间里,读取逻辑块所对应的所有物理块中的物理页的最新数据,将读取的数据写入新的空白块中,擦除逻辑块所对应的所有物理块上的数据,同时逻辑块对应空白物理块。然后在Store_Common存储空间里,读取逻辑块所对应的所有物理块中的物理页的最新数据,将读取的数据写入新的空白块中,擦除逻辑块所对应的所有物理块上的数据,同时逻辑块对应空白物理块。如果不是重要数据,只需在Store_Common存储空间里,读取逻辑块所对应的所有物理块中的物理页的最新数据,将读取的数据写入新的空白块中,擦除逻辑块所对应的所有物理块上的数据,同时逻辑块对应空白物理块。

本发明的3SSD中3D NAND闪存数据的控制方法和控制系统,通过将NAND FLASH划分为Store_Import存储空间及Store_Common存储空间,将重要闪存数据的存储在Store_Import存储空间进行备份,可以有效地降低NAND FLASH的误码率,同时有效增强存储系统的数据可靠性。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1