提高闪存芯片内部数据拷贝速度的方法、闪存存储系统及其控制器的制作方法

文档序号:6378949阅读:272来源:国知局

专利名称::提高闪存芯片内部数据拷贝速度的方法、闪存存储系统及其控制器的制作方法
技术领域
:本发明涉及通信
技术领域
,尤其涉及一种提高闪存芯片内部数据拷贝速度的方法、闪存存储系统及其控制器。
背景技术
:作为唯一主流的固态非挥发数据储存技术,闪存已经成为了全球半导体产业体系中发展最为迅速的一环。2010年市场研究报告显示,闪存产品的市场已突破200亿美元。基于闪存芯片的固态数据存储系统主要包含一个固态存储系统控制器和一个以上闪存芯片。闪存芯片的基本信息存储单元是浮栅金属氧化物半导体晶体管(Floating-GateTransistor)。浮栅金属氧化物半导体晶体管的阈值电压可以通过注射一定数量的电子进入浮栅而改变。因此,通过对浮栅内电子数目的精确控制,每个存储单元,即浮栅金属氧化物半导体晶体管,可储存多个比特信息。精确控制浮栅内电子数目的过程通常被称为编程。在每一个存储单元可以被编程之前,其浮栅内的所有电子必须被移走,从而使得其阈值电压被置为最低,这个过程被称为擦除。在对信息存储单元编程的过程中,业界使用一种渐进式的“编程一校验一再编程”的方法以实现对浮栅内电子数目的精确控制。重复的“编程/擦除”操作直接导致闪存芯片数据存储单元的逐渐老化,使其噪音容限逐渐降低。当一存储单元经历过多的“编程/擦除”操作后,就会丧失其标称的数据存储功能。为了延长闪存芯片的使用寿命,固态存储系统控制器芯片必须进行老化均衡(Wear-leveling)的操作,其目的在于尽量使得所有闪存物理页面经历几乎相同的“编程/擦除”操作次数,这样可均衡所有页面的老化程度。但是在老化均衡的操作过程中,为了达到“编程/擦除”操作次数均衡的目的,会引入多余的数据拷贝操作。闪存芯片内的信息存储单元阵列被划分成为多个存储块,而每一个存储块包含多个存储页面。闪存芯片数据读写操作以页面(page)作为基本单位,每一页面内所包含的用户数据通常为4096字节(byte)、8192字节、或16384字节。一定数量(如256、512)的存储页面组成一个存储块,闪存芯片由大量同等大小的存储块以及必须的外围辅助电路构成。数据擦除操作必须以存储块为单位。每一个存储块内的所有存储单元必须被同时擦除,但存储单元的编程和读取则以页面为单位。在系统运行过程中,在擦除某一存储块之前,必须将其内的所有依然有效的数据拷贝至另一存储块内。所有这些数据拷贝操作均由固态数据存储系统转换层(FlashTranslationLayer)固件设计来完成。专利申请号为6,040,997号美国专利介绍了专利权所有人与其他人已知的一种技术,其中的闪存系统包括一个内部缓冲区,使得从闪存之内的第一位置读取的数据通过内部缓冲区直接重写到闪存中的第二位置,无需将该数据传递出闪存之外。这就改善了数据传递时间。不过,这种已知的技术不提供错误检验和纠正,而是简单地假设,从第一4个闪存位置读取的数据是准确的。然而,为了最大程度提高数据存储的可靠性,必须先将待拷贝页面的数据读入固态数据存储系统控制器内进行纠错码解码操作以得到完全正确的原始数据后,再将此数据写入另外一个页面内。虽然这种操作方式可最大程度提高数据存储的可靠性,但同时会占用宝贵的系统总线资源以及纠错码解码器资源,进而降低数据存储系统整体的运行速度。申请号为201110008910.O的中国申请专利公开了一种在页复制操作过程中具有错误检测和校正功能的闪存系统。该闪存系统可以防止从源页转录错误位到一个复制页。该发明闪存的实施例包括一个用于校下存储在页缓冲器中源数据的位错误的校正电路,一个配置得适于提供源数据到校正电路以及提供校正数据到页缓冲器的电路,和一个配置得适于复制源数据到页缓冲器、并将校正数据从页缓冲器存储到另一个页的复制电路。将存储单元阵列的第一位置的源数据存储到缓冲器中,然后检测存储在缓冲器中的源数据的位错误,当检测到位错误时校正该位错误,以及在所述校正之后,将校正后的源数据复制到存储单元阵列的第二位置上。虽然所公开的系统能够提高数据存储的可靠性的同时且在一定程度上降低FTL操作对于闪存存储系统性能的影响,但利用该系统实现的过程比较复杂,还是需要对源数据进行纠错判断,无论源数据是否有发生位错误的可能;而且还需要改变现有闪存存储系统的编程/擦除程序而实现,不利于普及使用。
发明内容本发明的实施例提供一种提高闪存芯片内部数据拷贝速度的方法、闪存存储系统及其控制器,能够有效地利用闪存芯片存储单元的工作特性来降低转换层固件运行时对固态存储系统运行速度的影响,且实现过程简单、易行。为达到上述目的,本发明的实施例采用如下技术方案一种提高闪存芯片内部数据拷贝速度的方法,其中每一闪存芯片具有多个存储块,每个存储块包括多个页面,该方法包括步骤检测待拷贝页面当前的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得所述待拷贝页面当前的最大比特错误率;检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;若是,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内。一种控制器,包括微处理单元;闪存接口,耦接至所述微处理单元以及多个闪存芯片,其中每一闪存芯片具有多个存储块,每个存储块包括多个页面;闪存管理模块,耦接至所述微处理单元以通过微处理单元对所述多个闪存芯片执行闪存处理程序,包括检测待拷贝页面当前的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得所述待拷贝页面当前的最大比特错误率;检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;若是,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内。一种闪存存储系统,包括多个闪存芯片,每一闪存芯片具有多个存储块,每个存储块包括多个存储单元;控制器,耦接至所述多个闪存芯片以检测待拷贝页面当前的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得所述待拷贝页面当前的最大比特错误率;检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;若存在至少一个所述拷贝目标页面,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内。本发明实施例提供的一种提高闪存芯片内部数据拷贝速度的方法、闪存存储系统及其控制器通过检测待拷贝页面当前的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得所述待拷贝页面当前的最大比特错误率;并检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;若存在至少一个所述拷贝目标页面,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内;若不存在所述拷贝目标页面,则先将待拷贝页面的数据读出以进行纠错码处理,再将经过纠错码处理后的正确的页面数据拷贝到另一可用的页面内。即是,使用本发明时,如果待拷贝页面的比特错误率足够低,使闪存中存在另一个可用页面,使得此两页面的比特错误率直接累加后也不会超出纠错码的纠错能力,则直接将待拷贝页面数据拷贝至此可用页面,显然,在不降低存储系统稳定性的前提下,可直接降低对系统资源的占用、进而降低转换层固件运行时对固态存储系统运行速度的影响。因此,有有效地利用闪存芯片存储单元的工作特性来降低转换层固件运行时对固态存储系统运行速度的影响,,达到提高闪存芯片内部数据拷贝速度的目的,并且本发明的设计与现有固态存储系统设计直接兼容,实现过程简单易行。为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I是本发明实施例I中一种闪存存储系统的组成框图;图2是本发明实施例I中闪存芯片的组成框图;图34是现有技术与利用本发明实施例I中的闪存存储系统实现的运行过程比较示意图;图5是本发明实施例2中一种控制器的组成框图;图6是本发明实施例3中一种提高闪存芯片内部数据拷贝速度的方法流程图。图7是本发明实施例4中另一种提高闪存芯片内部数据拷贝速度的方法流程图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例I本发明实施例提供一种闪存存储系统,如图I所示,闪存存储系统100包括控制器110和闪存120,通常闪存存储系统100会与主机140—起使用,并通过通信接口130连接,以使主机140可将数据写入至存储系统100或从存储系统100中读取数据。在本实施例中,主机140可以是计算机、数字相机、摄影机、通信装置、音频播放器或视频播放器等可存储数据的任意系统。通信接口130可以是USB接口、PCIExpress接口、SATA接口、MS接口、MMC接口、SD接口、CF接口、IDE接口或其他适合的数据传输接口。在本实施例中,所述闪存存储系统100为固态硬盘(SolidStateDrive,SDD),但可理解的,在其他实施例中该闪存存储系统100也可以是随身碟或存储卡。闪存120耦接控制器110并且用以存储数据。在本实施例中,闪存120包括多个闪存芯片122,如图2所示,每一闪存芯片122通常实质上分成多个存储块(physicalblock)124,一般而言,在闪存中存储块为擦除(erase)的最小单元。每一区块含有最小数码的一病被擦除的存储单元(memorycell)。每一存储块通常会分割成数个闪存页面(page)126,其中一个闪存页面通常为编程/读取(program/read)的最小单元,但是针对不同的闪存设计,最小的编程/读取(program/read)单元也可为一个扇区(sector)大小,即一页中有多个扇区并以一扇区为编程/读取(program/read)的最小单元。在本实施例中,每一闪存芯片122包括多个闪存页面(page)126,而每一个闪存页面(page)126以扇区作为最小的存储单元128。且每一闪存页面包括用户数据存放区和冗余区,而冗余区通常又包括系统管理区与错误更正区。其中,用户数据存放区用以存储用户的数据,系统管理区用以存储系统管理数据(例如每一区块的逻辑实体地址对应关系、区块的起始分页…等),而错误更正区则用以存储经纠错码编码模块(后面描述)计算后的ECC的纠错码(parity)。控制器110用于协调主机140与闪存120的整体运作,例如数据的写入、读取与擦除等。控制器110包括微处理单元110a、闪存接口110b、闪存管理模块IlOc以及纠错码编码模块IlOcL微处理单元IlOa用于协调控制闪存接口110b、闪存管理模块IlOc以及纠错码编码模块110d,以及进行对闪存120的写入、读取与抹除等运作。闪存接口IlOb电性连接至微处理单元IlOa并且用以存取闪存120,也就是,主机140欲写入至闪存120的用户数据会经由闪存接口IlOb转换为闪存120所能接受的格式。特别是,在本实施中,闪存管理模块IlOc对闪存120的信息获取以及发送控制命令等也是需要通过闪存接口110b。纠错码编码模块IlOd电性连接至微处理单元210a并且用于对欲写入的用户数据进行纠错码编码,从而产生相应的纠错码编码冗余并且与此数据一同储存至闪存芯片122的同一闪存页面124内,其中之后当从闪存页面124中读取此数据时,纠错码编码模块IlOd可依据纠错码编码冗余来检查数据是否正确,或者当数据不正确时尝试将错误的数据恢复7为正确的数据。纠错码编码冗余是由所选择的纠错码本身所决定的。纠错码编码冗余量的大小直接决定了纠错码编码模块的纠错强度。闪存管理模块IlOc电性连接至微处理单元IlOa以通过微处理单元对所述多个闪存芯片执行闪存管理程序。闪存管理模块IlOc用于管理闪存120,例如执行平均磨损(wearleveling)方法、坏区块管理、维护对映表(mappingtable)等。特别是,在本发明实施例中,闪存管理模块IlOc还用于检测闪存120的使用情况,以控制当前的闪存擦除操作时间。执行过程如下检测待拷贝页面当前的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得所述待拷贝页面当前的最大比特错误率;检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;若存在至少一个所述拷贝目标页面,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内;若不存在所述拷贝目标页面,则先将待拷贝页面的数据读出以进行纠错码处理,再将经过纠错码处理后的正确的页面数据拷贝到另一可用的页面内。在具体实施时,控制器110的闪存管理模块IlOc通过在对任一存储块124进行擦除操作前,实时检测记录每一闪存芯片的闪存页面126经历过的编程/擦除次数,并根据记录的编程/擦除次数而估算每一闪存芯片的闪存页面126的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得每一闪存芯片的闪存页126当前的最大比特错误率;另外,当需要对储块124进行擦除操作前,需要将该存储块124中的闪存页面126内仍然有效的数据(即待拷贝页面数据)拷贝到其他存储块的可用的页面内(拷贝目标页面,即将待拷贝页面数据所拷贝至的页面),在选择拷贝目标页面的时候,首先要获取待拷贝页面当前的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得所述待拷贝页面当前的最大比特错误率,同时检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍(即两个页面的比特错误率直接累加后也不会超出纠错码的纠错能力);这样,若果发现存在至少一个所述拷贝目标页面,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内,无需经过纠错码处理;若果不存在所述拷贝目标页面,则先将待拷贝页面的数据读出到闪存系统的控制器中利用纠错码编码模块IlOd进行纠错码处理,以纠正所有的错误比特,然后将正确的页面数据拷贝到另一存储块中可用的页面内。为了进一步阐述本发明实施例的效果,现在对比描述现有技术和本发明的本质区别。图34是现有技术与利用本发明实施例I中的闪存存储系统实现的运行过程比较示意图。如图3所示,在现有技术中,在现有固态存储系统设计中,在将某一页面(待拷贝页面)数据拷贝至另一存储页面(拷贝目标页面)时,首先是利用转换层固件先将此待拷贝页面数据读出(第一步),然后传输页面数据到固态数据存储系统控制器内(第二步),在控制器内利用纠错码模块对此数据进行纠错码解码操作以得到完全正确的原始数据(第三步),最后再将此完全正确的原始数据传输回闪存(第四步)并写入拷贝目标页面内(第五步)。虽然这种操作方式可最大程度提高数据存储的可靠性,但同时会占用宝贵的系统总线资源以及纠错码解码器资源,进而降低数据存储系统整体的运行速度。。而使用本发明时,如图4所示,在将某一页面(待拷贝页面)数据拷贝至另一存储页面(拷贝目标页面)时,如果待拷贝页面的比特错误率足够低,以致于存在另一个可用页面(拷贝目标页面),使得此两个页面的比特错误率直接累加后也不会超出纠错码的纠错能力,则可直接读出待拷贝页面数据(第一步),然后传输待拷贝页面数据(第二步)并写入拷贝目标页面内(第三步)。显然,在不降低存储系统稳定性的前提下,可直接降低对系统资源的占用、进而降低转换层固件运行时对固态存储系统运行速度的影响。固态存储系统控制器仅仅使用一固定的纠错码编码方式并在每一闪存物理页面内写入同样大小的用户数据,同时所有闪存页面数据写入速度被设为一固定值。在实际系统运行中,不同的用户数据会具有非常不同的无损数据压缩性,当使用本发明时,数据存储系统可实时利用此无损数据压缩性,尽可能地提高数据存储纠错码地纠错能力,进而利用更为强大地纠错能力以允许更高地闪存芯片数据写入速度,以达到提高固态存储系统运行速度的目的。此外,虽未绘示于本实施例,但控制器110可还包括一般闪存控制器常见的功能模块,例如电源管理模块等。本发明实施例中,在闪存存储系统100的控制器110中设置闪存管理模块110c,且该闪存管理模块IlOc增设了对任一存储块进行擦除操作前并需要将待拷贝页面的数据拷贝到拷贝目标页面内,首先检测待拷贝页面当前的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得所述待拷贝页面当前的最大比特错误率,并检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;若存在至少一个所述拷贝目标页面,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内;若不存在所述拷贝目标页面,则先将待拷贝页面的数据读出以进行纠错码处理,再将经过纠错码处理后的正确的页面数据拷贝到另一可用的页面内。即是,使用本发明时,如果待拷贝页面的比特错误率足够低,使闪存中存在另一个可用页面,使得此两页面的比特错误率直接累加后也不会超出纠错码的纠错能力,则直接将待拷贝页面数据拷贝至此可用页面,显然,在不降低存储系统稳定性的前提下,可直接降低对系统资源的占用、进而降低转换层固件运行时对固态存储系统运行速度的影响。因此,有有效地利用闪存芯片存储单元的工作特性来降低转换层固件运行时对固态存储系统运行速度的影响,,达到提高闪存芯片内部数据拷贝速度的目的,并且本发明的设计与现有固态存储系统设计直接兼容,实现过程简单易行。实施例2本发明实施例提供一种控制器,适用于具有闪存的闪存存储系统上,其中,该闪存包括多个闪存芯片,每一闪存芯片具有多个存储块,且每一存储块内设有多个页面,关于闪存芯片的具体结构请参考图2以及上述实施例的相关描述。如图5所示,本发明实施例的控制器300包括微处理单元310、闪存接口320、闪存管理模块330以及纠错码编码模块340。微处理单元310用于协调控制闪存接口320、闪存管理模块330以及纠错码编码模块340,以及进行对闪存的写入、读取与抹除等运作。闪存接口320电性连接至微处理单元310并且用以存取闪存,也就是,控制器欲将写入至闪存的用户数据会经由闪存接口320转换为闪存120所能接受的格式。特别是,在本实施中,闪存管理模块330对闪存的信息获取以及发送控制命令等也是需要通过闪存接口320发送。纠错码编码模块340电性连接至微处理单元310并且用于对欲写入的用户数据进行纠错码编码,从而产生相应的纠错码编码冗余并且与此数据一同储存至闪存芯片的同一闪存页面内,其中之后当从闪存页面中读取此数据时,纠错码编码模块340可依据纠错码编码冗余来检查数据是否正确,或者当数据不正确时尝试将错误的数据恢复为正确的数据。纠错码编码冗余是由所选择的纠错码本身所决定的。纠错码编码冗余量的大小直接决定了纠错码编码模块的纠错强度。闪存管理模块330电性连接至微处理单元310。闪存管理模块330用于管理闪存,特别是,在本发明实施例中,闪存管理模块330还用于检测闪存的使用情况,以控制当前的闪存擦除操作以及数据拷贝操作,具体包括编程/擦除次数记录单元332、噪音容限估算单元334、页面数据存储错误率估算单元336和拷贝目标页面选择单元338编程/擦除次数记录单元332,用于实时记录闪存内每一页面经历过的编程/擦除次数;噪音容限估算单元334,用于根据记录的编程/擦除次数而估算每一存页面的最差情况下的噪音容限;页面数据存储错误率估算单元336,用于根据所述噪音容限估算单元估算的最差情况下的噪音容限而估算每一页面当前的最大比特错误率;拷贝目标页面选择单元338,用于检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;若存在,则发出将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内的命令;否则命令先将待拷贝页面的数据读出以进行纠错码处理,再将经过纠错码处理后的正确的页面数据拷贝到另一可用的页面内。在具体实施时,控制器300的闪存管理模块330通过在对任一存储块124进行擦除操作前,通过编程/擦除次数记录单元332实时检测记录每一闪存芯片的闪存页面经历过的编程/擦除次数,并利用噪音容限估算单元334根据记录的编程/擦除次数而估算每一闪存芯片的闪存页面的最差情况下的噪音容限,且利用页面数据存储错误率估算单元336根据所述最差情况下的噪音容限获得每一闪存芯片的闪存页面当前的最大比特错误率;另外,当需要对储块进行擦除操作前,需要将该存储块中的闪存页面内仍然有效的数据(即待拷贝页面数据)拷贝到其他存储块的可用的页面内(拷贝目标页面,即将待拷贝页面数据所拷贝至的页面),在选择拷贝目标页面的时候,首先所述拷贝目标页面选择单元338通过页面数据存储错误率估算单元336获得所述待拷贝页面当前的最大比特错误率,并同时通过页面数据存储错误率估算单元336检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍(即两个页面的比特错误率直接累加后也不会超出纠错码的纠错能力);这样,若果发现存在至少一个所述拷贝目标页面,则发出将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内的命令,无需经过纠错码处理;若果不存在所述拷贝目标页面,则命令先将待拷贝页面的数据读出到闪存系统的控制器中利用纠错码编码模块进行纠错码处理,以纠正所有的错误比特,然后将正确的页面数据拷贝到另一存储块中可用的页面内。本发明实施例中,在控制器中设置闪存管理模块,且该闪存管理模块增设了对任一存储块进行擦除操作前并需要将待拷贝页面的数据拷贝到拷贝目标页面内,首先检测待拷贝页面当前的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得所述待拷贝页面当前的最大比特错误率,并检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;若存在至少一个所述拷贝目标页面,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内;若不存在所述拷贝目标页面,则先将待拷贝页面的数据读出以进行纠错码处理,再将经过纠错码处理后的正确的页面数据拷贝到另一可用的页面内。即是,使用本发明时,如果待拷贝页面的比特错误率足够低,使闪存中存在另一个可用页面,使得此两页面的比特错误率直接累加后也不会超出纠错码的纠错能力,则直接将待拷贝页面数据拷贝至此可用页面,显然,在不降低存储系统稳定性的前提下,可直接降低对系统资源的占用、进而降低转换层固件运行时对固态存储系统运行速度的影响。因此,有有效地利用闪存芯片存储单元的工作特性来降低转换层固件运行时对固态存储系统运行速度的影响,达到提高闪存芯片内部数据拷贝速度的目的,并且本发明的设计与现有固态存储系统设计直接兼容,实现过程简单易行。实施例3本发明实施例提供一种提高闪存芯片内部数据拷贝速度的方法,适用于闪存存储系统的控制器对闪存的控制上,其中,该闪存包括多个闪存芯片,每一闪存芯片具有多个存储块,且每一存储块内设有多个页面,关于闪存芯片的具体结构请参考图2以及上述实施例的相关描述。如图6所示,该方法包括步骤SlOl:检测待拷贝页面当前的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得所述待拷贝页面当前的最大比特错误率;具体的,在本实施例中,可以通过多种现有的方式检测闪存芯片存储单元的噪音容限,例如通过检测存储单元的数据读取误码率以检测噪音容限、通过记录闪存信息存储单元的编程/擦除操作次数以检测噪音容限。步骤S102:检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;若是,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内。具体的,在选择拷贝目标页面的时候,首先通过步骤101获取待拷贝页面当前的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得所述待拷贝页面当前的最大比特错误率,然后检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍(即两个页面的比特错误率直接累加后也不会超出纠错码的纠错能力);这样,若果发现存在至少一个所述拷贝目标页面,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内,无需经过纠错码处理。显然,在不降低存储系统稳定性的前提下,可直接降低对系统资源的占用、进而降低转换层固件运行时对固态存储系统运行速度的影响。图6是根据本发明实施例示出的提高闪存芯片内部数据拷贝速度的方法的流程11图,其中这些步骤是闪存存储系统的控制器的微处理器执行闪存管理模块的机械指令所完成的。必须了解的是,本发明所提出的提高闪存芯片内部数据拷贝速度的方法步骤并不限于图6所示的执行顺序,本领域技术人员可根据本发明的精神任意更动提高闪存芯片内部数据拷贝速度的方法步骤。实施例4本发明实施例提供另一种提高闪存芯片内部数据拷贝速度的方法,适用于闪存存储系统的控制器对闪存的控制上,其中,该闪存包括多个闪存芯片,每一闪存芯片具有多个存储块,且每一存储块内设有多个页面,关于闪存芯片的具体结构请参考图2以及上述实施例的相关描述。如图7所示,该方法包括步骤S201:实时检测记录每一闪存芯片的闪存页面经历过的编程/擦除次数,并根据记录的编程/擦除次数而估算每一闪存芯片的闪存页面的最差情况下的噪音容限;步骤S202:根据所述最差情况下的噪音容限估算每一闪存芯片的闪存页面当前的最大比特错误率;步骤S203:检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;具体的,在对任一存储块进行擦除操作前,需要将该存储块中的闪存页面内仍然有效的数据(即待拷贝页面数据)拷贝到其他存储块的可用的页面内(拷贝目标页面,即将待拷贝页面数据所拷贝至的页面),在选择拷贝目标页面的时候,首先获得所述待拷贝页面当前的最大比特错误率,并检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍(即两个页面的比特错误率直接累加后也不会超出纠错码的纠错能力)。另外,纠错码的纠错容限由控制器的错误校正模块设定,错误校正模块用于对欲写入的数据产生一组纠错码并且与此数据一同储存至闪存,其中之后当从闪存中读取此数据时可依据纠错码来检查数据是否正确,或者当数据不正确时尝试将错误的数据恢复为正确的数据,根据所使用的纠错码的纠错强度,判断待拷贝页面和拷贝目标页面两个页面的比特错误率直接累加后也不会超出纠错码的纠错能力。而且注意拷贝页面和拷贝目标页面是属于不同存储块的。步骤S204:若存在至少一个所述拷贝目标页面,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内;步骤S205:若不存在所述拷贝目标页面,则先将待拷贝页面的数据读出以进行纠错码处理,再将经过纠错码处理后的正确的页面数据拷贝到另一存储块的可用的页面内。图7是根据本发明实施例示出的提高闪存芯片内部数据拷贝速度的方法的流程图,其中这些步骤是闪存存储系统的控制器的微处理器执行闪存管理模块的机械指令所完成的。必须了解的是,本发明所提出的提高闪存芯片内部数据拷贝速度的方法步骤并不限于图7所示的执行顺序,本领域技术人员可根据本发明的精神任意更动提高闪存芯片内部数据拷贝速度的方法步骤。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以借助软件加必须的通用硬件的方式来实现,当然也可以通过硬件来完成,但很多情况下前1者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以使个人计算机,服务器,或者网络设备等)来执行本发明哥哥实施例所述的方法。以上所述是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。权利要求1.一种提高闪存芯片内部数据拷贝速度的方法,其中每一闪存芯片具有多个存储块,每个存储块包括多个页面,其特征在于,该方法包括步骤检测待拷贝页面当前的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得所述待拷贝页面当前的最大比特错误率;检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;若是,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内。2.如权利要求I所述的提高闪存芯片内部数据拷贝速度的方法,其特征在于,还包括步骤若不存在所述拷贝目标页面,则先将待拷贝页面的数据读出以进行纠错码处理,再将经过纠错码处理后的正确的页面数据拷贝到另一可用的页面内。3.如权利要求I所述的提高闪存芯片内部数据拷贝速度的方法,其特征在于,通过实时记录闪存内每一页面经历过的编程/擦除次数而估算每一页面的最差情况下的噪音容限。4.如权利要求Γ3中任一项所述的提高闪存芯片内部数据拷贝速度的方法,其特征在于,所述拷贝目标页面与待拷贝页面不属于同一个存储块。5.—种控制器,其特征在于,包括微处理单元;闪存接口,耦接至所述微处理单元以及多个闪存芯片,其中每一闪存芯片具有多个存储块,每个存储块包括多个页面;闪存管理模块,耦接至所述微处理单元以通过微处理单元对所述多个闪存芯片执行闪存处理程序,包括检测待拷贝页面当前的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得所述待拷贝页面当前的最大比特错误率;检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;若存在至少一个所述拷贝目标页面,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内。6.如权利要求5所述的控制器,其特征在于,所述闪存管理模块还包括执行若不存在所述拷贝目标页面,则先将待拷贝页面的数据读出以进行纠错码处理,再将经过纠错码处理后的正确的页面数据拷贝到另一可用的页面内。7.如权利要求5所述的控制器,其特征在于,所述闪存管理模块包括编程/擦除次数记录单元,用于实时记录闪存内每一页面经历过的编程/擦除次数;噪音容限估算单元,用于根据记录的编程/擦除次数而估算每一页面的最差情况下的噪音容限;页面数据存储错误率估算单元,用于根据所述噪音容限估算单元估算的最差情况下的噪音容限而估算每一页面当前的最大比特错误率;拷贝目标页面选择单元,用于检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;若存在,则发出将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内的命令;否则命令先将待拷贝页面的数据读出以进行纠错码处理,再将经过纠错码处理后的正确的页面数据拷贝到另一可用的页面内。8.如权利要求57任一项所述的控制器,其特征在于,所述拷贝目标页面与待拷贝页面不属于同一个存储块。9.一种闪存存储系统,其特征在于,包括多个闪存芯片,每一闪存芯片具有多个存储块,每个存储块包括多个存储单元;控制器,耦接至所述多个闪存芯片以检测待拷贝页面当前的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得所述待拷贝页面当前的最大比特错误率;检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;若是,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内。10.如权利要求9所述的闪存存储系统,其特征在于,所述控制器还包括执行若不存在所述拷贝目标页面,则先将待拷贝页面的数据读出以进行纠错码处理,再将经过纠错码处理后的正确的页面数据拷贝到另一可用的页面内。全文摘要本发明公开了一种提高闪存芯片内部数据拷贝速度的方法,其中每一闪存芯片具有多个存储块,每个存储块包括多个页面,该方法包括步骤检测待拷贝页面当前的最差情况下的噪音容限,并根据所述最差情况下的噪音容限获得所述待拷贝页面当前的最大比特错误率;检测所有闪存芯片内是否存在至少一个可用的拷贝目标页面,使所述拷贝目标页面当前的最大比特错误率和待拷贝页面当前的最大比特错误率累加后的比特错误率能够为所使用的纠错码容忍;若是,则将待拷贝页面的数据直接读出并拷贝到任一所述拷贝目标页面内。本发明还公开了一种闪存存储系统及其控制器。本发明能够有效地利用闪存芯片存储单元的工作特性来降低转换层固件运行时对固态存储系统运行速度的影响,且实现过程简单、易行。文档编号G06F11/08GK102915277SQ20121039444公开日2013年2月6日申请日期2012年10月17日优先权日2012年10月17日发明者张彤,邹粤林申请人:邹粤林
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1