本发明专利技术公开了一种提高闪存使用寿命的方法,将闪存页进行分组,并通过闪存逻辑转换层基于并行读写的方法将组内页面映射为一个总页面,分配该总页面的一个存储空间用于存放纠错码,用于对所属组的页面进行读写时的纠错。依据本发明专利技术在通过提高纠错码纠错位数以提高闪存使用寿命的同时,减少纠错码对存储空间的占用率。
【技术实现步骤摘要】
本专利技术涉及,具体是一种通过错误矫正增加错误纠正能力提高闪存使用寿命的方法。
技术介绍
随着嵌入式技术发展,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的一倍多。采用mu本文档来自技高网...
【技术保护点】
一种提高闪存使用寿命的方法,其特征在于,将闪存页进行分组,并通过闪存逻辑转换层基于并行读写的方法将组内页面映射为一个总页面,分配该总页面的一个存储空间用于存放纠错码,用于对所属组的页面进行读写时的纠错。
【技术特征摘要】
【专利技术属性】
技术研发人员:张洪柳,张青,李峰,王璞,高美洲,
申请(专利权)人:山东华芯半导体有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。