一种提高闪存使用寿命的方法

文档序号:6400453阅读:396来源:国知局
专利名称:一种提高闪存使用寿命的方法
技术领域
本发明涉及一种提高闪存使用寿命的方法,具体是一种通过错误矫正增加错误纠正能力提高闪存使用寿命的方法。
背景技术
随着嵌入式技术发展,NAND (与非)闪存的应用越来越广泛。闪存是一种常用的存储介质,具有体积小、容量大、成本低、掉电数据不丢失等一系列优点。通常,一个闪存是由若干个闪存组块组成,每个闪存块又分为若干物理页。闪存块是擦除操作的最小单位,而读写都是以页为单位进行,对于每个物理页进行重写之前,必须先对该页所在的块执行擦除操作。由于在NAND闪存的生产及使用过程中会产生坏块,为了检测数据的可靠性,在应用闪存的系统中都会采用一定的坏区管理策略。因此,在不影响正常使用情况下如何延长闪存使用寿命,成为目前的一个研究热点。在本领域,对于ECC (Error Correcting Code,错误检查和纠正,简称错误校正码或纠错码)的一般认识是,由于存储于闪存的数据的码元有可能产生错误,为保证读写的正确性,在闪存中写入数据时,会根据与写入的数据产生一个错误校正码,该错误校正码会被存放在闪存的相应页预先分配的存储空间中,该部分存储空间不能被数据所占用。依据错误码,当读取闪存中存放的数据时,即可根据所对应的页面的错误码对所读取的数据进行错误校正。然而,随着闪存的使用或者产品的某些区块本身的制造缺陷,使得其错误位数超出最大矫正位数,使得数据不能被正确读出时,相应块就会被标记为坏块,当坏块数到达预定阈值时,闪存便被报废。由此可知,纠错码的位数对闪存使用寿命有至关重要的影响,更具体地,以三星某款MLC (Mult1-level,多层单元)芯片为例,官方对该闪存芯片的要求是24bits/lKB,寿命是3000次EP (擦除),当我们配置为24bit/lKB的纠错时,擦写某块超过3000次后便会出现ECC无法纠错,该块达到寿命,如果将NFC配置改为30bit/lKB,擦写某块超过5000次后还可以正常工作,由此可知,ECC的纠错数对闪存的寿命影响重大。从而,提高纠错码必然能够提高闪存的使用寿命。然而,如前所述,纠错码必然要占据一定的存储空间。通常闪存芯片都会预留一定的存储空间(sqare)备用,比如这款三星的flash空闲区的大小为448bit,允许最多采用32bit/lKB的ECC纠错,加之还要用一些作为软件的预留区来存放数据,纠错码的位数通常被固定设置。如果将闪存中每个页牺牲IK容量作为增加的spare空间,可以增加ECC的纠错位数。但普通的闪存每页大小如为8K,如果牺牲IK即牺牲产品容量的1/8,这样很难让用户接受。中国CN102693760A号发明专利申请公开即涉及ECC位数对闪存使用寿命的讨论,其错误校正码是动态配置的,具体是当以NAND快闪存储器中的第一页被写入第一数据时,根据该第一页发生位错误的机率,决定该第一页所对应的错误校正码的类型,然后根据该第一页对应的错误校正码的类型与该第一数据,产生第一错误校正码。如此,针对发生位错误的机率较高的页可使用矫正能力较强的错误校正码,从而减少该NAND快闪存储器中不可使用的区块的数目,来延长其使用寿命。上述动态调整方式能够在整体上有效地降低纠错码所占用的空间。然而,该文献并没有提供针对纠错码如何分配存储空间的策略,如果是传统的分配方式,后期较大的纠错码仍然需要占据较大的存储空间。因此,有必要寻找新的途径,在提高纠错码大小的同时,使所被占用空间能够被接受。

发明内容
有鉴于此,本发明的目的在于提供一种新的提高闪存使用寿命的方法,在通过提闻纠错码纠错位数以提闻闪存使用寿命的同时,减少纠错码对存储空间的占用率。本发明采用以下技术方案:
一种提高闪存使用寿命的方法,将闪存页进行分组,并通过闪存逻辑转换层基于并行读写的方法将组内页面映射为一个总页面,分配该总页面的一个存储空间用于存放纠错码,用于对所属组的页面进行读写时的纠错。从以上方案可以看出,依据本发明,闪存的物理页被分组,组内的物理页被映射为一个逻辑页,所分配的用于存放纠错码的存储空间平均给每个物理页后,对该其存储空间的影响减少,使较大的纠错码存放的约束减少,使使用寿命与存储空间的性耗比得到较大幅度的提升,从而在提闻闪存使用寿命的同时,减少了纠错码对存储空间的占用率。上述提高闪存使用寿命的方法,所适用闪存的闪存控制器支持多片自动跳转功能,从而通过所述逻辑转换层将多片相同偏移地址页映射为一个总页面。


图1闪存中ECC纠错位数及存储改变的图例。
具体实施例方式为使本领域的技术人员更清楚的理解本发明,参照说明书附图1,以单页8K两两映射为一个16K页为例进行说明。当前,正常情况下ECC可以纠正的错误为24bits/lKB,需要的校验位数为14*24=336bits。如果我们将两个片(plane)相同地址映射为(以下简称合并)为16K的页,则整个页中所需要的纠错位数为336bits*16=5376bits。对于单页大小为16K,取出IK作为增加的ECC保护时,总的纠错位数可以扩充为5376+1024*8=13568 bits。对于每个IK的纠正的错误大概为13586bits/ (15*14)=64bits/lKB。如图1所示,使用两个8K的页,每个页为8* (lK+24bits),将两个8K页合并后可以视为16*(lK+24bits)。合并后的页取出IK作为增加的ECC保护,每页存储15K的数据,每页为15*(lK+64bits)。具体的实现方法如下:首先当上位机的写命令经过FTL (闪存转换层)后,每个mult1-plane 的 page 已经在物理上已经变为 15KB,当 NFC (NAND Flash Controller,闪存控制器)接到对闪存的写命令后,会将下发闪存的program (程序)命令,同时数据会经过ECC硬件模块,ECC纠错在这里以IKB为单位,这时采用64bits/lKB的ECC纠错,每次向闪存写IKB的数据,后面都会跟112Byte的ECC校验位,依此写入15KB的数据,总共的ECC校验位是1680Byte,而这时所拥有的空闲区是1024+448X2为1920Byte,满足需求。当上位机发送读命令的时候,同样先经过FTL层,然后通过NFC对闪存发送读命令,闪存在将IKB数据送给NFC和ECC纠错模块的同时,也将112Byte的校验数据传送给ECC纠错模块,ECC模块在解码后对数据进行纠错,当IKB的数据错误位小于64bit的时候能完全纠错恢复出之前的写入数据,从而保证了数据的正确性,而且64bit的纠错能力比起之前的24bit纠错能力,大大提高了闪存的寿命。该方法与之前的的纠错方式相比在大幅增加了闪存寿命的同时只损失了 1/16的容量。该方法采用硬件与软件相结合的方式来实现。硬件用来实现IKB数据对应的ECC纠错码在闪存页位置的定位,而软件则用来实现FTL层中关于mult1-plane物理页的容量从16Kbyte到15Kbyte的转换,主要是上位机传送的LBA (Logical Block Addressing,逻辑块寻址)与逻辑页的关系转换。通过以上实现可以看出,其是以牺牲合并页的一小部分空间来换取了闪存的使用寿命。以合并页大小为16K计算,每合并页只包含15K的数据区,但ECC却增加了 40bits,是24bits的一倍多。采用mult1-plane操作的另一个优点就是可以提高闪存的读写操作速度,这与闪存的内部结构有关系。以上内容只是表明两个页合并为一个页的操作,其实而每个闪存芯片由2 4个片(plane)或者更多个片组成,因而针对如单页8K的闪存可以扩展单页大小为16K或更高,方法跟之前一样,同样取出一部分闪存页的内部空间来用存放多出位数的ECC的纠错码。在一些应用中,最好使用NFC支持multi_plane自动跳转功能的闪存,以达到更容易将multiplane相同偏移地址页合并为单个page的目的,减少不同片上页进行逻辑转换的系统消耗。依据上述内容,针对提高闪存ECC位数来提高闪存的使用寿命。将两个或多个小的plane合并为一个大的page,在单个页中拿出IK来作为增加的ECC保护,只是牺牲了一小部分的容量,而每页中增加的校正位数却很明显,提高了数据的错误检测及纠错能力,增加了闪存的擦写次数,能明显增加闪存的使用寿命。术语:闪存转换层FTL (flashtranslation layer) , FTL是一种软件中间层,最初是由intel提出的,用于将闪存模拟成为虚拟块设备,从而能够在闪存上实现FAT (FileAllocation Table,文件分配表)等块设备类文件系统。主要是将闪存模拟成磁盘设备,为上层应用提供与磁盘一样的接口,而不需要修改应用软件和文件系统。并行调度是FTL的关键技术之一,这种技术可以有效地提高设备的I/O带宽。如闪存固态盘(FlashSSD)中有大量的闪存芯片(chip),而每个闪存芯片由2 4个片(plane)组成。并行调度可以实现各个Plane间的负载均衡和损耗均衡,这就保证了读操作的低延时。那么并行调度也更有利于本文中替提出方案的实现,不仅有效地减少对存储空间的占用,而且是的存取速度更快。
权利要求
1.一种提高闪存使用寿命的方法,其特征在于,将闪存页进行分组,并通过闪存逻辑转换层基于并行读写的方法将组内页面映射为一个总页面,分配该总页面的一个存储空间用于存放纠错码,用于对所属组的页面进行读写时的纠错。
2.根据权利要求1所述的提高闪存使用寿命的方法,其特征在于,所适用闪存的闪存控制器支持多片自动跳转功能,从而通过所述逻辑转换层将多片相同偏移地址页映射为一个总页面。
全文摘要
本发明公开了一种提高闪存使用寿命的方法,将闪存页进行分组,并通过闪存逻辑转换层基于并行读写的方法将组内页面映射为一个总页面,分配该总页面的一个存储空间用于存放纠错码,用于对所属组的页面进行读写时的纠错。依据本发明在通过提高纠错码纠错位数以提高闪存使用寿命的同时,减少纠错码对存储空间的占用率。
文档编号G06F12/02GK103198020SQ201310085719
公开日2013年7月10日 申请日期2013年3月18日 优先权日2013年3月18日
发明者张洪柳, 张青, 李峰, 王璞, 高美洲 申请人:山东华芯半导体有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1