存储器编程方法、存储器存储装置与存储器控制电路单元的制作方法

文档序号:10625503阅读:431来源:国知局
存储器编程方法、存储器存储装置与存储器控制电路单元的制作方法【专利摘要】本发明提供存储器编程方法、存储器存储装置与存储器控制电路单元。本发明的存储器编程方法,用于具有多个存储胞的可复写式非易失性存储器模块,所述存储器编程方法包括:根据写入数据对此些存储胞执行第一编程程序并且获得第一编程程序的第一编程结果;根据第一编程结果来将此些存储胞分组为多个编程群组;以及根据写入数据对此些存储胞执行第二编程程序;所述第二编程程序包括使用第一编程电压来编程此些编程群组中的第一编程群组;以及使用第二编程电压来编程此些编程群组中的第二编程群组,其中第一编程电压与第二编程电压不同。本发明可提升存储器存储装置的使用寿命。【专利说明】存储器编程方法、存储器存储装置与存储器控制电路单元
技术领域
[0001]本发明是有关于一种存储器编程方法,尤其是涉及一种存储器编程方法、存储器存储装置与存储器控制电路单元。【
背景技术
】[0002]数码相机、手机与MP3在这几年来的成长十分迅速,使得消费者对存储媒体的需求也急速增加。由于可复写式非易失性存储器(rewritablenon-volatilememory)具有数据非易失性、省电、体积小、无机械结构、读写速度快等特性,最适于便携式电子产品,例如笔记本计算机。固态硬盘就是一种以闪存作为存储媒体的存储装置。因此,近年闪存产业成为电子产业中相当热门的一环。[0003]—般来说,闪存需要经过编程操作来改变闪存中的存储胞的存储状态,以写入数据。但是,若依目前现有的闪存的编程的方式来编程闪存中的多个存储胞,会导致此些存储胞中的部分已经符合写入数据的存储状态的部分存储胞的临界电压(Thresholdvoltage)分布的范围被过度地增加,亦称,过度编程(over-progra_ed)。[0004]然而,被过度编程的存储胞的耐用度会被降低,进而导致闪存的整体的使用寿命减少。【
发明内容】[0005]本发明提供一种存储器编程方法、存储器存储装置与存储器控制电路单元,可以将多个存储胞进行分组为多个编程群组,再对应每一编程群组中的存储胞来分别施加适当的编程电压,进而有效地避免存储胞被过度编程,并且延长存储器存储装置的使用寿命。[0006]本发明的一实施例提供一种存储器编程方法,用于可复写式非易失性存储器模块;所述可复写式非易失性存储器模块具有多个存储胞,所述存储器编程方法包括:[0007]根据写入数据对此些存储胞执行第一编程程序并且获得第一编程程序的第一编程结果;根据所述第一编程结果来将该些存储胞分组为多个编程群组;以及根据所述写入数据对该些存储胞执行第二编程程序;[0008]其中所述第二编程程序包括:[0009]使用第一编程电压来编程该些编程群组中的第一编程群组;以及使用第二编程电压来编程该些编程群组中的第二编程群组,其中所述第一编程电压与所述第二编程电压不同。[0010]在本发明的一实施例中,其中所述第一编程群组的第一电压分布范围与所述第二编程群组的第二电压分布范围不同。[0011]在本发明的一实施例中,其中所述第一编程群组中的第一存储胞的第一电压小于第二编程群组中的第二存储胞的第二电压,其中所述第一编程电压大于所述第二编程电压。[0012]在本发明的一实施例中,其中根据所述第一编程结果来将该些存储胞分组为该些编程群组的步骤包括:[0013]提供至少一分组电压至该些存储胞以获得该些存储胞的存储状态信息,其中所述存储状态信息指示该些存储胞的电压分布状态;以及根据所述存储状态信息将该些存储胞分组为该些编程群组。[0014]在本发明的一实施例中,所述存储器编程方法还包括:判断第一编程结果是否符合对应于所述写入数据的预设编程结果,其中根据所述第一编程结果来将该些存储胞分组为该些第一编程群组的步骤是在判定所述第一编程结果不符合所述预设编程结果之后执行。[0015]在本发明的一实施例中,其中判断所述第一编程结果是否符合所述预设编程结果的步骤包括:提供验证电压至该些存储胞以判断该些存储胞的存储状态是否处于对应于所述写入数据的正确存储状态;若该些存储胞的存储状态是处于对应于所述写入数据的所述正确存储状态,判定所述第一编程结果符合所述预设编程结果;以及若该些存储胞的存储状态不是处于对应于所述写入数据的所述正确存储状态,判定所述第一编程结果不符合所述预设编程结果。[0016]在本发明的一实施例中,所述存储器编程方法还包括:在执行所述第一编程程序之前,将该些存储胞分组为第三编程群组与第四编程群组。[0017]在本发明的一实施例中,所述第三编程群组中的第三存储胞的第三电压小于所述第四编程群组中的第四存储胞的第四电压,所述第一编程程序包括:使用第三编程电压来编程所述第三编程群组;以及使用第四编程电压来编程所述第四编程群组,其中所述第三编程电压大于所述第四编程电压,所述第一编程电压大于所述第三编程电压,并且所述第二编程电压大于所述第四编程电压。[0018]本发明的一实施例提供一种存储器存储装置,包括连接接口单元、可复写式非易失性存储器模块与存储器控制电路单元;所述连接接口单元电性连接至主机系统;所述可复写式非易失性存储器模块包括多个存储胞;所述存储器控制电路单元电性连接至所述连接接口单元与所述可复写式非易失性存储器模块;所述存储器控制电路单元用以发送第一写入指令序列,其中所述第一写入指令序列用以指示根据写入数据对该些存储胞执行第一编程程序;所述存储器控制电路单元还用以获得所述第一编程程序的第一编程结果,并且根据所述第一编程结果来将该些存储胞分组为多个编程群组;所述存储器控制电路单元还用以发送第二写入指令序列,其中所述第二写入指令序列用以指示根据所述写入数据对该些存储胞执行第二编程程序;所述第二编程程序包括使用第一编程电压来编程该些编程群组中的第一编程群组;以及使用第二编程电压来编程该些编程群组中的第二编程群组,其中所述第一编程电压与所述第二编程电压不同。[0019]在本发明的一实施例中,所述第一编程群组的一第一电压分布范围与所述第二编程群组的一第二电压分布范围不同。[0020]在本发明的一实施例中,所述第一编程群组中的一第一存储胞的一第一电压小于所述第二编程群组中的一第二存储胞的一第二电压,[0021]其中所述第一编程电压大于所述第二编程电压。[0022]在本发明的一实施例中,其中在所述存储器控制电路单元根据所述第一编程结果来将该些存储胞分组为该些编程群组的运作中,所述存储器控制电路单元还用以发送分组指令,其中所述分组指令用以指示提供至少一分组电压至该些存储胞以获得该些存储胞的存储状态信息,其中所述存储状态信息指示该些存储胞的电压分布状态;所述存储器控制电路单元根据所述存储状态信息将该些存储胞分组为该些编程群组。[0023]在本发明的一实施例中,其中所述存储器控制电路单元还用以判断所述第一编程结果是否符合对应于所述写入数据的预设编程结果,并且所述存储器控制电路单元根据所述第一编程结果来将该些存储胞分组为该些第一编程群组的运作是在判定所述第一编程结果不符合所述预设编程结果之后执行。[0024]在本发明的一实施例中,其中在所述存储器控制电路单元判断所述第一编程结果是否符合对应于所述写入数据的所述预设编程结果的运作中,所述存储器控制电路单元还用以发送验证指令,其中所述验证指令用以指示提供验证电压至该些存储胞以判断该些存储胞的存储状态是否处于对应于所述写入数据的一正确存储状态;若该些存储胞的存储状态是处于对应于所述写入数据的所述正确存储状态,所述存储器控制电路单元判定所述第一编程结果符合所述预设编程结果;若该些存储胞的存储状态不是处于对应于所述写入数据的所述正确存储状态,所述存储器控制电路单元判定所述第一编程结果不符合所述预设编程结果。[0025]在本发明的一实施例中,在执行所述第一编程程序之前,所述存储器控制电路单元还用以将该些存储胞分组为第三编程群组与第四编程群组。[0026]在本发明的一实施例中,所述第三编程群组中的一第三存储胞的一第三电压小于所述第四编程群组中的一第四存储胞的一第四电压,[0027]其中所述第一编程程序包括:[0028]使用一第三编程电压来编程所述第三编程群组;以及[0029]使用一第四编程电压来编程所述第四编程群组,[0030]其中所述第三编程电压与大于所述第四编程电压,所述第一编程电压大于所述第三编程电压,并且所述第二编程电压大于所述第四编程电压。[0031]本发明的一实施例提供一种存储器控制电路单元,用于控制可复写式非易失性存储器模块;所述可复写式非易失性存储器模块包括多个存储胞;所述存储器控制电路单元包括主机接口、存储器接口与存储器管理电路;所述主机接口电性连接至主机系统;所述存储器接口电性连接至所述可复写式非易失性存储器模块;所述存储器管理电路电性连接至所述主机接口与所述存储器接口;所述存储器管理电路用以发送第一写入指令序列,其中所述第一写入指令序列指示根据写入数据对该些存储胞执行第一编程程序;所述存储器管理电路还用以获得所述第一编程程序的第一编程结果,并且根据所述第一编程结果来将该些存储胞分组为多个编程群组;所述存储器管理电路还用以发送第二写入指令序列,其中所述第二写入指令序列指示根据所述写入数据对该些存储胞执行第二编程程序,其中所述第二编程程序包括使用第一编程电压来编程该些编程群组中的第一编程群组;以及使用第二编程电压来编程该些编程群组中的第二编程群组,其中所述第一编程电压与所述第二编程电压不同。[0032]在本发明的一实施例中,所述第一编程群组的一第一电压分布范围与所述第二编程群组的一第二电压分布范围不同。[0033]在本发明的一实施例中,所述第一编程群组中的一第一存储胞的一第一电压小于所述第二编程群组中的一第二存储胞的一第二电压,[0034]其中所述第一编程电压大于所述第二编程电压。[0035]在本发明的一实施例中,其中在所述存储器管理电路还用以根据第一编程结果来将该些存储胞分组为该些编程群组的运作中,所述存储器管理电路还用以发送分组指令,其中苏松分组指令用以指示提供至少一分组电压至该些存储胞以获得该些存储胞的存储状态信息,其中所述存储状态信息指示该些存储胞的电压分布状态;所述存储器管理电路根据所述存储状态信息将该些存储胞分组为该些编程群组。[0036]在本发明的一实施例中,所述存储器管理电路还用以判断所述第一编程结果是否符合对应于所述写入数据的预设编程结果,并且所述存储器管理电路根据所述第一编程结果来将该些存储胞分组为该些第一编程群组的运作是在判定所述第一编程结果不符合所述预设编程结果之后执行。[0037]在本发明的一实施例中,其中在所述存储器管理电路判断所述第一编程结果是否符合对应于所述写入数据的所述预设编程结果的运作中,所述存储器管理电路还用以发送一验证指令,其中所述验证指令用以指示提供验证电压至该些存储胞以判断该些存储胞的存储状态是否处于对应于所述写入数据的正确存储状态;若该些存储胞的存储状态是处于对应于所述写入数据的所述正确存储状态,所述存储器管理电路判定所述第一编程结果符合所述预设编程结果;若该些存储胞的存储状态不是处于对应于所述写入数据的正确存储状态,所述存储器管理电路判定所述第一编程结果不符合所述预设编程结果。[0038]在本发明的一实施例中,在执行所述第一编程程序之前,所述存储器管理电路还用以将该些存储胞分组为第三编程群组与第四编程群组。[0039]在本发明的一实施例中,所述第三编程群组中的一第三存储胞的一第三电压小于所述第四编程群组中的一第四存储胞的一第四电压,[0040]其中所述第一编程程序包括:[0041]使用一第三编程电压来编程所述第三编程群组;以及[0042]使用一第四编程电压来编程所述第四编程群组,[0043]其中所述第三编程电压大于所述第四编程电压,所述第一编程电压大于所述第三编程电压,并且所述第二编程电压大于所述第四编程电压。[0044]本发明实施例所提供的存储器编程方法、存储器存储装置与存储器控制电路单元,可以有效地根据存储胞的电压分布(或写入速度)来对应调整施加至存储胞的编程电压,以避免过度的编程,进而提升存储器存储装置的使用寿命。此外,也可以使完成编程的存储胞的电压分布的范围变窄,进而减少数据中的错误位。[0045]为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。【附图说明】[0046]图1是本发明的一实施例的闪存组件的不意图;[0047]图2是本发明的一实施例的编程存储胞的示意图;[0048]图3是本发明的一实施例的编程操作中的多个存储胞的临界电压的分布示意图;[0049]图4是本发明的一实施例的主机系统与存储器存储装置的示意图;[0050]图5是本发明的一实施例的计算机、输入/输出装置与存储器存储装置的示意图;[0051]图6是本发明的一实施例的主机系统与存储器存储装置的示意图;[0052]图7是图4所示的存储器存储装置的概要方块图;[0053]图8是本发明的一实施例的可复写式非易失性存储器模块的概要方块图;[0054]图9是本发明的一实施例的存储胞阵列的示意图;[0055]图10是本发明的一实施例的存储于存储胞阵列中的写入数据所对应的临界电压的分布示意图;[0056]图11是本发明的一实施例的存储胞分组的示意图;[0057]图12是本发明的一实施例的编程群组的示意图;[0058]图13至图16是本发明的一实施例所绘示的存储器编程操作的示意图;[0059]图17A是本发明的另一实施例的存储胞分组的示意图;[0060]图17B是本发明的另一实施例的存储器编程操作的示意图;[0061]图18是本发明的另一实施例的存储器编程操作的示意图;[0062]图19是本发明的另一实施例的存储器控制电路单元的方块图;[0063]图20是本发明的一实施例的存储器编程方法的流程图;[0064]图21是本发明的一实施例的编程存储胞的临界电压的分布示意图。[0065]附图标记说明:[0066]1:闪存组件;[0067]2:电荷捕捉层;[0068]3:控制栅极;[0069]4:隧道氧化层;[0070]5:多晶硅间介电层;[0071]6:基底;[0072]V1:初始编程电压;[0073]ΔT:编程电压脉冲时间;[0074]Vverify:验证电压;[0075]ΔV:增量步进脉冲编程调整值;[0076]Dl、D2、D3、D4、D5、D6、D7、D8:临界电压分布;[0077]Vrl、Vr2、Vr3:编程电压;[0078]10:存储器存储装置;[0079]11:主机系统;[0080]12:计算机;[0081]122:微处理器;[0082]124:随机存取存储器;[0083]13:输入/输出装置;[0084]126:系统总线;[0085]128:数据传输接口;[0086]21:鼠标;[0087]22:键盘;[0088]23:显示器;[0089]24:打印机;[0090]25:随身盘;[0091]26:存储卡;[0092]27:固态硬盘;[0093]31:数码相机;[0094]32:SD卡;[0095]33:MMC卡;[0096]34:存储棒;[0097]35:CF卡;[0098]36:嵌入式存储装置;[0099]102:连接接口单元;[0100]104:存储器控制电路单元;[0101]106:可复写式非易失性存储器模块;[0102]2202:存储胞阵列;[0103]2204:字符线控制电路;[0104]2206:位线控制电路;[0105]2208:行译码器;[0106]2210:数据输入/输出缓冲器;[0107]2212:控制电路;[0108]902:存储胞;[0109]904:位线;[0110]906:字符线;[0111]908:源极线;[0112]912:选择栅漏极晶体管;[0113]914:选择栅源极晶体管;[0114]VA:第一预设读取电压;[0115]VB:第二预设读取电压;[0116]VC:第三预设读取电压;[0117]A1、B1、C1、D1、E1、A2、B2、C2、D2、E2、AN、BN、CN、DN、EN:编程群组;[0118]Vgl、V(;2、V(;3、Vfi4、V(;5、Vq6、V(;7、V(;8:分组电压;[0119]Vcl、Vc2、Vc3、Vc4、Vc5:临界电压;[0120]Celll、Cell2、Cell3、Cell4、Cell5:存储胞;[0121]VainVB1、VcinVdinVE1、VA2nVB2、VC2、VD2、VE2、Va3nVB3、VC3、VD3、VE3:编f王电压;[0122]T1、T2、T3:时间;[0123]202:存储器管理电路;[0124]204:主机接口;[0125]206:存储器接口;[0126]208:错误检查与校正电路;[0127]210:缓冲存储器;[0128]212:电源管理电路;[0129]S2001、S2003、S2005:步骤。【具体实施方式】[0130]图1是本发明的一实施例的闪存组件的示意图。[0131]请参照图1,在本实施例中,闪存组件I(亦称,存储胞)包含用于存储电子的电荷捕捉层(chargetrappinglayer)2、用于施加电压的控制栅极(ControlGate)3、隧道氧化层(Tunnel0xide)4、多晶娃间介电层(InterpolyDielectric)5与基底(Substrate)6。当欲写入数据至闪存组件I时,可通过施加写入电压(亦称为编程电压)将电子注入电荷补捉层2以改变闪存组件I的电压。在以下的范例实施例中,闪存组件I的电压亦称为闪存组件I的临界电压。此临界电压可用以反映出闪存组件I的数据存储状态。由此,可定义闪存组件I的数字高低态(亦称存储状态),而实现存储数据的功能。在此,藉由施加写入电压将电子注入至电荷捕捉层2的过程称为编程。反之,当欲将所存储的数据移除时,通过施加擦除电压将所注入的电子从电荷捕捉层2中移除,则可使闪存组件I恢复为未被编程前的状态。[0132]图2是本发明的一实施例的编程存储胞的示意图。[0133]请参照图2,在本实施例中,编程存储胞的方式是使用增量步进脉冲编程(Incremental-step-pulseprogramming,简称ISPP)模型,并且通过脉冲写入与施加验证临界电压来完成对存储胞的编程操作。具体来说,欲将数据编程至存储胞时,会设定初始编程电压1以及编程电压脉冲时间AT。在编程数据至存储胞时,可使用所设定的初始编程电压1以及编程电压脉冲时间AT来编程存储胞。验证电压VVCTlfy可用以对存储胞进行验证,以判断存储胞是否已处于正确的存储状态。倘若存储胞未被编程至正确的存储状态,目前施加的编程电压会被加上增量步进脉冲编程调整值AV作为新的编程电压(如图2中的Vrl^Vr2)并且根据新的编程电压与编程电压脉冲时间AT,存储胞会再次被编程。倘若存储胞已被编程至正确的存储状态时,则表示数据已被正确地写入至存储胞。[0134]图3是本发明的一实施例的编程操作中的多个存储胞的临界电压的分布示意图。[0135]请同时参照图2与图3,假设多个存储胞将被编程为存储位“O”的存储状态。此些存储胞在被编程之前的临界电压分布为图3中所示出的实线Dl(亦称,临界电压分布Dl),并且此些存储胞的起始存储状态为“I”。此外,假设此些存储胞是以图2所示出的增量步进脉冲编程模型来被编程。当此些存储胞被初始编程电压V1编程后,此些存储胞的临界电压分布会成为图3所示出的虚线D2(亦称,临界电压分布D2)。接着,验证电压VVCTlfy会被用来对此些存储胞进行验证,以判断此些存储胞是否皆已处于正确的存储状态(即,存储位“O”)。在此,由于此些存储胞并未处于存储位“O”的存储状态,故目前施加的初始编程电压V1会被加上增量步进脉冲编程调整值AV作为新的写入电压V…并且依据新的写入电压L与编程电压脉冲时间AT此些存储胞会再次被编程。被写入电压Vh再次编程的此些存储胞的临界电压分布为图3所示出的虚线D3(亦称,临界电压分布D3)。依此类推,当被写入电压Vrt编程的此些存储胞的临界电压分布为图3中的实线D4(亦称,临界电压分布D4)且此些存储胞皆处于正确的存储状态(即,存储位“O”)时,写入包含位“O”的数据至此些存储胞的编程操作被完成。[0136]但是,上述以增量步进脉冲编程模型来编程多个存储胞可能会导致此些存储胞的临界电压分布的范围被过度地增加。例如,请参照图2与图3,在此些存储胞未被编程之前,其临界电压分布Dl的宽度是小于完成编程之后的存储胞的临界电压分布D4的宽度。此现象主要是因为每一存储胞的特性不同,但是却被施加同样大小的写入电压,进而导致每一存储胞被编程后的临界电压的高低范围差异扩大。[0137]此外,如上所述,使用一般的增量步进脉冲编程模型来编程多个存储胞可能还会导致存储胞被过度编程。例如,在图3的实施例中,当此些存储胞通过编程操作而具有临界电压分布D3时,若对具有临界电压分布D3的此些存储胞施加相同大小的写入电压¥1^来进行编程,可能会导致此些存储胞中其临界电压已经超过验证电压VVCTlfy的存储胞继续被施加写入电压(此过程可称为过度编程)。此些被过度编程的存储胞,其临界电压虽然已经高于验证电压VVCTlfy,但是在被施加写入电压12后,会再具有更高电压值的临界电压。换言之,如上所述,此些被过度编程的存储胞会因为被继续施加写入电压而进行多余的编程操作,并且上述过度编程会对此些存储胞造成不必要的磨损,增加此些存储胞的老化程度,进而降低存储器存储装置的使用寿命。[0138]因此,下文实施例所提供的存储器编程方法,以及使用此方法的存储器控制电路单元与存储器存储装置,会辨识闪存中的多个存储胞被施加编程电压后的临界电压分布状态,并且根据此些存储胞的临界电压分布状态来将此些存储胞分组为多个编程群组,进而对每个编程群组施加对应的编程电压。如此一来,可有效地避免此些存储胞被过度编程,以延长存储器存储装置的使用寿命。[0139]—般而言,存储器存储装置(亦称,存储器存储系统)包括可复写式非易失性存储器模块与控制器(亦称,存储器控制电路单元)。通常存储器存储装置是与主机系统一起使用,以使主机系统可将数据写入至存储器存储装置或从存储器存储装置中读取数据。[0140]图4是本发明的一实施例的主机系统与存储器存储装置的示意图。图5是本发明的一实施例的计算机、输入/输出装置与存储器存储装置的示意图。[0141]请参照图4,主机系统11一般包括计算机12与输入/输出(input/output,简称I/O)装置13。计算机12包括微处理器122、随机存取存储器(randomaccessmemory,简称RAM)124、系统总线126与数据传输接口128。输入/输出装置13包括如图5的鼠标21、键盘22、显示器23与打印机24。必须了解的是,图5所示的装置非限制输入/输出装置13,输入/输出装置13还可包括其它装置。[0142]在一实施例中,存储器存储装置10是通过数据传输接口128与主机系统11的其它组件电性连接。通过微处理器122、随机存取存储器124与输入/输出装置13的运作可将数据写入至存储器存储装置10或从存储器存储装置10中读取数据。例如,存储器存储装置10可以是如图5所示的随身盘25、存储卡26或固态硬盘(SolidStateDrive,简称SSD)27等的可复写式非易失性存储器存储装置。[0143]图6是本发明的一实施例的主机系统与存储器存储装置的示意图。[0144]一般而言,主机系统11为与存储器存储装置10配合以存储数据的任意系统。虽然在本实施例中,主机系统11是以计算机系统来作说明,然而,另一实施例中,主机系统11可以是数码相机、摄影机、通信装置、音乐播放器或视频播放器等系统。例如,在主机系统为数码相机(摄影机)31时,可复写式非易失性存储器存储装置则为其所使用的SD卡32、MMC卡33、存储棒(memorystick)34、CF卡35或嵌入式存储装置36(如图6所示)。嵌入式存储装置36包括嵌入式多媒体卡(EmbeddedMMC,简称eMMC)。值得一提的是,嵌入式多媒体卡是直接电性连接于主机系统的基底上。[0145]图7是图4所示的存储器存储装置的概要方块图。[0146]请参照图7,存储器存储装置10包括连接接口单元102、存储器控制电路单元104与可复写式非易失性存储器模块106。[0147]在本实施例中,连接接口单元102是兼容于串行先进技术附件(SerialAdvancedTechnologyAttachment,简称SATA)标准。然而,必须了解的是,本发明不限于此,连接接口单元402也可以是符合并行先进技术附件(ParallelAdvancedTechnologyAttachment,简称PATA)标准、电气和电子工程师协会(InstituteofElectricalandElectronicEngineers,简称IEEE)1394标准、高速外设部件连接接口(PeripheralComponentInterconnectExpress,简称PCIExpress)标准、通用串行总线(UniversalSerialBus,简称USB)标准、安全数字(SecureDigital,简称SD)接口标准、超高速一代(UltraHighSpeed-Ι,简称UHS-1)接口标准、超高速二代(UltraHighSpeed-1I,简称UHS-1I)接口标准、存储棒(MemoryStick,MS)接口标准、多媒体存储卡(MultiMediaCard,简称MMC)接口标准、嵌入式多媒体存储卡(EmbeddedMultimediaCard,简称eMMC)接口标准、通用闪存(UniversalFlashStorage,简称UFS)接口标准、小型快闪(CompactFlash,简称CF)接口标准、整合式驱动电子接口(IntegratedDeviceElectronics,简称IDE)标准或其它适合的标准。连接接口单元102可与存储器控制电路单元104封装在一个芯片中,或者连接接口单元102是布设于一包含存储器控制电路单元104的芯片外。[0148]存储器控制电路单元104用以执行以硬件式或软件式实作的多个逻辑栅或控制指令,并且根据主机系统11的指令在可复写式非易失性存储器模块106中进行数据的写入、读取与擦除等运作。[0149]可复写式非易失性存储器模块106是电性连接至存储器控制电路单元404,并且用以存储主机系统11所写入的数据。可复写式非易失性存储器模块106可以是单阶存储胞(SingleLevelCell,简称SLC)NAND型闪存模块、多阶存储胞(MultiLevelCell,简称MLC)NAND型闪存模块(S卩,一个存储胞中可存储2个位数据的闪存模块)、复数阶存储胞(TripleLevelCell,简称TLC)NAND型闪存模块(即,一个存储胞中可存储3个位数据的闪存模块)、其它闪存模块或其它具有相同特性的存储器模块。[0150]图8是本发明的一实施例的可复写式非易失性存储器模块的概要方块图。[0151]请参照图8,可复写式非易失性存储器模块106包括存储胞阵列2202、字符线控制电路2204、位线控制电路2206、行译码器(columndecoder)2208、数据输入/输出缓冲器2210与控制电路2212。[0152]图9是本发明的一实施例的存储胞阵列的示意图。[0153]请参照图8与图9,存储胞阵列2202包括配置于多个基底上的多个选择栅漏极(selectgatedrain,简称SGD)晶体管912与多个选择棚.源极(selectgatesource,简称SGS)晶体管914、以及连接此些存储胞的多条位线904、多条字符线906、源极线908与用以存储数据的多个存储胞902(如图9所示)。存储胞902是以阵列方式配置在位线904与字符线906的交叉点上。当从存储器控制电路单元104接收到写入指令或读取指令时,控制电路2212会控制字符线控制电路2204、位线控制电路2206、行译码器2208、数据输入/输出缓冲器2210来写入数据至存储胞阵列2202或从存储胞阵列2202中读取数据,其中字符线控制电路2204用以控制施加至字符线906的电压,位线控制电路2206用以控制施加至位线904的电压,行译码器2208依据指令中的译码列地址以选择对应的位线,并且数据输入/输出缓冲器2210用以暂存数据。[0154]如上所述,可复写式非易失性存储器模块106中的存储胞是被多种编程电压来编程为多种存储状态以正确存储写入数据的位值。具体来说,存储胞阵列2202的每一存储胞具有多个存储状态,并且此些存储状态是以多个读取电压来区分。[0155]图10是本发明的一实施例的存储于存储胞阵列中的写入数据所对应的临界电压的分布示意图。[0156]请参照图10,以多阶存储胞型闪存为例,每一存储胞中的临界电压可依据预设读取电压VA、预设读取电压VB与预设读取电压VC而区分为4种存储状态,并且此些存储状态分别地代表存储位“11”、“10”、“00”与“01”。因此,在此实施例中,每一存储胞可存储2个位数据。必须了解的是,图10所示出的临界电压及其存储状态的对应仅为一个范例。在另一实施例中,临界电压与存储状态的对应也可是随着临界电压越大而以“11”、“10”、“OI”与“00”排列。或者,在另一实施例中,临界电压与存储状态的对应也可是根据实际使用状况而设定,而不限于上述。[0157]在每一存储胞可存储2个位数据的例子中,同一条字符在线的存储胞会构成2个实体编程单元(S卩,下实体编程单元与上实体编程单元)。此外,存储胞阵列2202中的数个实体编程单元会构成一个实体擦除单元,并且实体擦除单元为执行擦除运作的最小单位。亦即,每一实体擦除单元含有最小数目的一并被擦除的存储胞。[0158]存储胞阵列2202的存储胞的数据写入(或称为编程)程序包括利用施加一特定端点的电压,例如是控制编程电压(即,写入电压)来改变栅极中额一电荷捕捉层的电子量,因而改变了存储胞的通道的导通状态以呈现不同的存储状态。例如,当下实体编程单元的数据为“I”且上实体编程单元的数据为“I”时,控制电路2212会控制字符线控制电路2204不改变存储胞中的编程电压,而将存储胞的存储状态保持为“11”。当下实体编程单元的数据为“I”且上实体编程单元的数据为“O”时,字符线控制电路2204会在控制电路2212的控制下改变存储胞中的编程电压,而将存储胞的存储状态改变为“10”。当下实体编程单元的数据为“O”且上实体编程单元的数据为“O”时,字符线控制电路2204会在控制电路2212的控制下改变存储胞中的编程电压,而将存储胞的存储状态改变为“00”。当下实体编程单元的数据为“O”且上实体编程单元的数据为I时,字符线控制电路2204会在控制电路2212的控制下改变存储胞中的编程电压,而将存储胞的存储状态改变为“01”。[0159]相似地,在每一存储胞可存储I个位的数据的例子(例如,单阶存储胞型闪存模块)中,同一条字符在线的存储胞会构成I个实体编程单元。未被编程的存储胞的存储状态为“I”。若要写入数据“I”至存储胞中,控制电路2212会控制字符线控制电路2204来维持存储胞的存储状态为“I”。相对地,若要写入数据“0”,字符线控制电路2204会在控制电路2212的控制下改变存储胞中的编程电压,而将存储胞的存储状态改变为“O”。即,存储胞通过编程程序被编程为存储状态为存储位“O”的存储胞,以存储位“O”。[0160]为了便于说明本发明所使用的存储器编程方法,在以下的实施例中,会假设可复写式非易失性存储器模块106中每一存储胞可存储I个位,并且存储器控制电路单元104欲存储一写入数据(其位值皆为“O”)至可复写式非易失性存储器模块106中存储状态为“I”的多个未被编程的存储胞中。[0161]图11是本发明的一实施例的存储胞分组的示意图。[0162]请参照图11,本实施例中,存储器控制电路单元104会根据欲存储的写入数据(其位值皆为“O”)来指示可复写式非易失性存储器模块106使用一或多个编程电压来对多个存储胞(亦称目标存储胞)进行编程程序(亦称,第一编程程序)并获得编程结果(亦称,第一编程结果)。例如,目标存储胞在被编程之前的临界电压分布为图11中的虚线D5(亦称,临界电压分布D5),并且其存储状态为“I”。在执行第一编程程序之后,目标存储胞的临界电压分布变为图11中的实线D6(亦称,临界电压分布D6)。换言之,将目标存储胞的临界电压分布从一个分布改变为另一个分布的操作可称为一个编程程序。此外,在本实施例中,第一编程程序是指增量步进脉冲编程模型中的初始编程程序并且第一编程程序中所使用的编程电压为初始编程电压(例如,图2中的初始编程电压V、然而,在另一实施例中,第一编程程序也可以是指增量步进脉冲编程模型中的任一个编程程序,且每一个编程程序中所使用的编程电压的数目不限。[0163]在本实施例中,存储器控制电路单元104会发送一验证指令至可复写式非易失性存储器模块106。此验证指令用以指示可复写式非易失性存储器模块106施加验证电压VVCTlfy至目标存储胞来读取目标存储胞的存储状态是否皆为对应写入数据的存储状态(亦称正确存储状态)。若目标存储胞是处于对应于写入数据的正确存储状态,存储器控制电路单元104会判定前一次执行的编程程序的编程结果符合预设编程结果。若目标存储胞不是处于对应于写入数据的正确存储状态,存储器控制电路单元104会判定前一次执行的编程程序的编程结果不符合预设编程结果。此外,验证电压VVCTlfy的电压值可以是由存储器控制电路单元104决定或由可复写式非易失性存储器模块106(例如,控制电路2212)自行决定。[0164]如图11所示,由于经过第一编程程序后的目标存储胞的临界电压分布D6皆小于验证电压vVCTlfy,因此通过施加验证电压vVCTlfy所读取到的目标存储胞的存储状态会为“I”,不符合为“O”的写入数据。即,存储器控制电路单元104会判定目标存储胞的第一编程结果不符合预设编程结果。[0165]在本实施例中,若存储器控制电路单元104判定目标存储胞的第一编程结果不符合预设编程结果,存储器控制电路单元104会将目标存储胞分组为多个编程群组,并且在下一个编程程序(亦称为第二编程程序)中,对不同的编程群组施加不同的写入电压以尝试将目标存储胞编程至对应写入数据的正确存储状态。[0166]在本实施例中,存储器控制电路单元104会发送一指令(亦称,分组指令)至可复写式非易失性存储器模块106,其中此分组指令是用以指示可复写式非易失性存储器模块106提供N个不同的分组电压至目标存储胞以获得目标存储胞的存储状态信息。例如,在接收到分组指令之后,可复写式非易失性存储器模块106(例如,控制电路2212)会根据此分组指令来使用一或多个不同的分组电压至目标存储胞。其中,N可以是I?4或任意正整数。其中,目标存储胞的存储状态信息可指示此些目标存储胞的临界电压分布状态。例如,根据某一个目标存储胞的存储状态信息,存储器控制电路单元104可以获得此目标存储胞的临界电压分布状态。以图11的实施例为例,存储器控制电路单元104指示可使用4个分组电压Vtil?VΜ来将目标存储胞分组。其中,分组电压Vu?VΜ会落于被包含于目标存储胞的临界电压分布的范围内。分组电压Vtil?Vm可以是根据其电压值的相对大小而依序被施加至目标存储胞或者是根据任意的规则而被施加至目标存储胞。此外,分组电压Vtil?Ve4各别的电压值可以是由存储器控制电路单元104决定或由可复写式非易失性存储器模块106(例如,控制电路2212)自行决定。[0167]请参照图11,在存储器控制电路单元104指示可复写式非易失性存储器模块106施加分组电压Vtil至目标存储胞之后,存储器控制电路单元104可获得目标存储胞对应分组电压Vtil的存储状态。例如,存储器控制电路单元104会获得对应分组电压VM的存储状态为“O”的目标存储胞与对应分组电压Vtil的存储状态为“I”的目标存储胞。例如,存储器控制电路单元104可辨识存储状态为“O”的目标存储胞为临界电压大于分组电压Vtil的目标存储胞以及辨识存储状态为“I”的目标存储胞为临界电压小于分组电压Vtil的目标存储胞。以此类推,在施加分组电压Vti2?Ve4至目标存储胞之后,存储器控制电路单元104可进一步获得目标存储胞对应分组电压Vti2?VΜ的存储状态并且据以将目标存储胞分组为编程群组Al?El0[0168]在图11的实施例中,编程群组Al?El的临界电压分布范围各不相同。此外,编程群组Al中的存储胞的临界电压会小于编程群组BI中的存储胞的临界电压;编程群组BI中的存储胞的临界电压会小于编程群组Cl中的存储胞的临界电压;编程群组Cl中的存储胞的临界电压会小于编程群组Dl中的存储胞的临界电压;编程群组Dl中的存储胞的临界电压会小于编程群组El中的存储胞的临界电压。[0169]值得一提的是,上述实施例中,存储器控制电路单元104是指示使用4个分组电压来将目标存储胞分组,故可获得5个编程群组。然而,在另一实施例中,若使用的分组电压的数目不同,则划分出的编程群组的数目也会不同。例如,若仅使用I个分组电压来将目标存储胞分组,则目标存储胞只会被分为2个编程群组,以此类推。[0170]图12是本发明的一实施例的编程群组的示意图。[0171]请参照图11与图12,假设目标存储胞包括存储胞Celll?Cell5,其中存储胞Celll的电压(或临界电压)的电压值为Vei;存储胞Cel12的电压(或临界电压)的电压值为Ve2;存储胞Cel13的电压(或临界电压)的电压值为Ve3;存储胞Cel14的电压(或临界电压)的电压值为Ve4;存储胞Cell5的电压(或临界电压)的电压值为Ve5。在施加分组电压Vei?VΜ至目标存储胞之后,存储器控制电路单元104可例如获得存储胞Celll对应于分组电压Vtil?VΜ的存储状态依序为(“I”、“I”、“I”、“I”),获得存储胞Cel12对应于分组电压Vtil?VΜ的存储状态依序为(“0”、“I”、“I”、“I”),获得存储胞Cel13对应于分组电压Vsi?VΜ的存储状态依序为(“0”、“0”、“I”、“I”),获得存储胞Cel14对应于分组电压Vtil?Vm的存储状态依序为(“0”、“0”、“0”、“1”),并且获得存储胞Cell5对应于分组电压Vtil?Vm的存储状态依序为(“0”、“0”、“0”、“0”)。根据存储胞Celll对应于分组电压I1?VM的存储状态,存储胞Celll会被分组到编程群组Al;根据存储胞Cell2对应于分组电压Vtil?Vm的存储状态,存储胞Cel12会被分组到编程群组BI;根据存储胞Cel13对应于分组电压Vtil?VG4的存储状态,存储胞Cell3会被分组到编程群组Cl;根据存储胞Cel14对应于分组电压Vtil?Vm的存储状态,存储胞Cel14会被分组到编程群组Dl;根据存储胞Cell5对应于分组电压Vtil?Vm的存储状态,存储胞Cell5会被分组到编程群组El。[0172]存储器控制电路单元104可通过查表的方式来执行上述分组操作。例如,将存储胞Celll对应于分组电压Vtil?Vm的存储状态输入至一查找表以获得存储胞Celll属于编程群组Al。或者,存储器控制电路单元104也可计算某一个目标存储胞反应于分组电压Vtil?VΜ的存储状态中“O”或“I”的数目并且根据此数目来判断此目标存储胞所属的编程群组。例如,存储胞Celll反应于分组电压Vsi?Vm的存储状态(不具有任何为“O”的位数据,故存储器控制电路单元104可将存储胞Celll分组至编程群组Al0[0173]如图11所示,根据编程群组Al?El可知,反应于第一编程程序,编程群组El中的存储胞的编程速度最快,而编程群组Al中的存储胞的编程速度最慢。其中,编程群组El中的存储胞的编程速度高于编程群组Dl中的存储胞的编程速度,编程群组Dl中的存储胞的编程速度高于编程群组Cl中的存储胞的编程速度,以此类推。因此,在下一个编程程序(即,第二编程程序)中,若施加一个具有较低电压值的写入电压至具有较高写入速度的编程群组中的存储胞且施加一个具有较高电压值的另一写入电压至具有较低写入速度的编程群组中的存储胞,则经过第二编程程序后,目标存储胞的临界电压分布范围会较为集中。此外,在另一实施例中,也可利用调整编程电压脉冲时间或与增量步进脉冲编程模型有关的其它参数来窄化被编程的目标存储胞的临界电压分布范围。[0174]在一实施例中,存储器控制电路单元104可记录每一存储胞每一次或最后一次被分组的分组信息。因此,往后在编程此些存储胞时,此分组信息可直接被用来将存储胞分组,加快分组速度。[0175]如上所述,在将目标存储胞分组为多个编程群组后,存储器控制电路单元104可根据分组后的此些编程群组来指示对不同的编程群组施加不同的编程电压。以下配合图13?图18来详细说明本发明的存储器编程方法。应注意的是,图13?图18中的点状长条用来表示编程电压,斜线长条用来表示验证电压,并且空白长条用来表示分组电压。[0176]图13至图16是本发明的一实施例的存储器编程操作的示意图。[0177]请参照图13,假设在第一编程程序中,存储器控制电路单元104是指示可复写式非易失性存储器模块106使用初始编程电压V1来编程目标存储胞。然后,可复写式非易失性存储器模块106会施加验证电压VVCTlfy至目标存储胞并且存储器控制电路单元104会判断第一编程程序的第一编程结果是否符合预设编程结果。例如,存储器控制电路单元104可判断目标存储胞的存储状态是否皆为对应写入数据的正确存储状态。若目标存储胞的存储状态非皆为对应写入数据的正确存储状态,存储器控制电路单元104会指示可复写式非易失性存储器模块106使用分组电压Vtil?VΜ来对目标存储胞分组。应注意的是,分组电压vCl?VG4各自的电压值是不同的。例如,分组电压V(^会小于分组电压VΚ?;分组电压VG2会小于分组电压Vti3;分组电压Vω会小于分组电压VG4o[0178]请同时参考图11与图14,假设存储器控制电路单元104指示使用分组电压Vtil?Ve4将目标存储胞分组为编程群组Al?El,则存储器控制电路单元104会指示可复写式非易失性存储器模块106使用分别对应编程群组Al?El的多个写入电压(亦称编程电压)来对目标存储胞进行第二编程程序。例如,在第二编程程序中,可复写式非易失性存储器模块106可施加编程电压Vai至编程群组Al中的目标存储胞;可复写式非易失性存储器模块106可施加编程电压Vbi至编程群组BI中的目标存储胞;可复写式非易失性存储器模块106可施加编程电压Vei至编程群组Cl中的目标存储胞;可复写式非易失性存储器模块106可施加编程电压Vdi至编程群组Dl中的目标存储胞;可复写式非易失性存储器模块106可施加编程电压Vei至编程群组El中的目标存储胞。然而,在另一实施例中,第一编程程序与第二编程程序也可以是指任增量步进脉冲编程模型中任两个连续或不连续执行的编程程序,而不限于上述。[0179]应注意的是,在本实施例中,存储器控制电路单元104是根据编程群组Al?El各别的临界电压分布来查表以指示可复写式非易失性存储器模块106施加不同大小的编程电压Vai?VE1。根据查表的结果,存储器控制电路单元104会指示可复写式非易失性存储器模块106施加较高的写入电压至具有较低的临界电压分布的编程群组中的目标存储胞。例如,由于编程群组El中的目标存储胞的临界电压大于编程群组Dl中的目标存储胞的临界电压,故被施加至编程群组El的编程电压Vei会小于被施加至编程群组Dl的编程电压VD1o依此类推,被施加至编程群组Dl的编程电压Vdi会小于被施加至编程群组Cl的编程电压Vei;被施加至编程群组Cl的编程电压Va会小于被施加至编程群组BI的编程电压Vbi;被施加至编程群组BI的编程电压Vbi会小于被施加至编程群组Al的编程电压VA1。此外,第二编程程序中使用的编程电压会大于第一编程程序中的编程电压。例如,在图14中,编程电压Vei会大于初始编程电压V10此外,在另一实施例中,编程电压Vai?Vei也可以是根据编程群组Al?El各别的临界电压分布来修正前一次使用的编程电压而获得的。[0180]请参照图15,在对目标存储胞执行第二编程程序后,可复写式非易失性存储器模块106会施加验证电压VVCTlfy至目标存储胞并且存储器控制电路单元104会据以判断第二编程程序的编程结果(亦称第二编程结果)是否符合对应写入数据的预设编程结果。若第二编程结果不符合预设编程结果,存储器控制电路单元104会继续对目标存储胞进行另一次的分组操作。例如,存储器控制电路单元104可指示可复写式非挥发性存储器模块106施加分组电压Vts?Vtis至目标存储胞,以再次将目标存储胞分组。应注意的是,在目标存储胞经过第二编程程序之后,目标存储胞的临界电压会提高,因此分组电压Vffi?Vtis也会被对应地提高。举例来说,分组电压Vffi的电压值会大于分组电压Vtil的电压值;分组电压Vce的电压值会大于分组电压Vti2的电压值;分组电压Vti7的电压值会大于分组电压Vti3的电压值;分组电压Vtis的电压值会大于分组电压VΜ的电压值。关于如何将目标存储胞分组已于前述说明,故在此便不赘述。此外,分组电压Vffi?Vμ的数目也可以更多或更少,本发明不加以限制。[0181]请参照图16,假设根据分组电压Vts?Vw目标存储胞被分组为编程群组Α2?Ε2。其中,编程群组Ε2中的目标存储胞的临界电压大于编程群组D2中的目标存储胞的临界电压;编程群组D2中的目标存储胞的临界电压大于编程群组C2中的目标存储胞的临界电压;编程群组C2中的目标存储胞的临界电压大于编程群组Β2中的目标存储胞的临界电压;编程群组Β2中的目标存储胞的临界电压大于编程群组Α2中的目标存储胞的临界电压。存储器控制电路单元104会指示可复写式非易失性存储器模块106分别施加编程电压Va2?VΕ2至编程群组Α2?Ε2。其中,编程电压Va2是施加至编程群组Α2,编程电压VΒ2是施加至编程群组B2,以此类推。编程电压Va2?Ve2各别的电压值可以是根据编程群组A2?E2各别的临界电压分布而通过查表而获得。或者,编程电压Va2?VE2各别的电压值也可以是根据编程群组A2?E2各别的临界电压分布而修改编程电压Vai?Vei而获得,本发明不加以限制。此外,在本实施例中,编程电压Ve2会高于编程电压VE1;编程电压VD2会高于编程电压VD1;编程电压Ve2会高于编程电压V编程电压VB2#高于编程电压VB1;编程电压VA2会高于编程电压ViU。[0182]值得一提的是,在对于同一写入数据的多个编程程序中,本发明并不对执行分组操作的次数与时间点进行限制。例如,在一实施例中,在执行每一次的编程程序之前,分组操作都会先被执行。或者,存储器控制电路单元104也可以直接针对尚未被编程的目标存储胞(亦即,处于擦除状态的存储胞)来进行分组。然后,存储器控制电路单元104可根据此分组来执行后续的所有编程程序或者在某些编程程序之前也可再次执行分组操作。[0183]图17A是本发明的另一实施例的存储胞分组的示意图。图17B是本发明的另一实施例的存储器编程操作的示意图。[0184]请参照图17A与17B,假设处于擦除状态的目标存储胞的临界电压分布为临界电压分布D5’。在对目标存储胞进行编程程序之前,存储器控制电路单元104可根据目标存储胞的临界电压分布D5’来分别指示设定分组电压Vtil’?Vm’并且根据目标存储胞的临界电压分布D5’来施加分组电压Vtil’?Ve4’至目标存储胞以进行分组。或者,存储器控制电路单元104也可以是根据目标存储胞过去的分组信息来将目标存储胞分组。例如,存储器控制电路单元104可将目标存储胞分组为编程群组Al’?E1’。然后,存储器控制电路单元104可指示可复写式非易失性存储器模块106施加对应的编程电压Vai’?Vei’至编程群组Al’?E1’。例如,在施加编程电压Vai’?Vei’之后,目标存储胞的临界电压分布会成为临界电压分布D6’。接着,存储器控制电路单元104会根据验证电压VVCTlfy来判断目标存储胞的存储状态是否为对应写入数据的正确存储状态。由于临界电压分布D6’中的目标存储胞之电压值皆小于验证电压VVCTlfy,故存储器控制电路单元104会判定目标存储胞的存储状态非对应写入数据的正确存储状态并且继续对目标存储胞进行下一个编程程序。在本实施例中,在执行下一个编程程序之前,存储器控制电路单元104会再次将目标存储胞分组。例如,存储器控制电路单元104可指示施加分组电压Vts’?Vta’至目标存储胞来将目标存储胞分组为编程群组A2’?E2’。因此,在下一个编程程序中,存储器控制电路单元104可根据编程群组A2’?E2’来指示可复写式非易失性存储器模块106施加对应的编程电压Va2’?Ve2’来对目标存储胞进行编程。关于如何执行分组以及使用对应的编程电压来编程已分组的存储胞已于前述说明,在此便不再赘述。[0185]值得一提的是,虽然在图17B的范例实施例中,用以编程处于擦除状态的目标存储胞的初始编程程序是包含使用多个编程电压Vai’?VE1’。然而,在图17B的另一实施例中,即使目标存储胞已被分组,但用以编程处于擦除状态的目标存储胞的初始编程程序也可以是仅使用一个初始编程电压,例如,使用编程电压Vai’?Vei’的其中之一或任一个适当的编程电压。此外,在一实施例中,只有在执行初始编程程序之后,存储器控制电路单元104才会根据初始编程电压的编程结果来将目标存储胞分组,并且此分组结果可被使用到将目标存储胞编程至正确的数据存储状态为止。或者,也可以在初始编程程序之后的任一次编程程序之前再次执行分组操作。此外,在另一实施例中,也可以在对于目标存储胞的分组操作的次数到达一最大分组操作次数后,停止执行其它的分组操作并且根据最后一次分组所产生的编程群组来进行后续的编程程序。例如,假设最大分组次数为2次,则在存储器控制电路单元104对于目标存储胞进行2次的分组操作后,存储器控制电路单元104会直接根据经由第2次的分组操作所获得的编程群组来进行后续的编程程序。[0186]图18是本发明的另一实施例的存储器编程操作的示意图。[0187]请参照图18,假设在初始编程程序之后的两次编程程序之前,存储器控制电路单元104分别执行了两次分组操作。在存储器控制电路单元104指示对目标存储胞施加编程电压Va2?V£2后,若存储器控制电路单元104判定目标存储胞的存储状态非皆为正确存储状态且执行分组操作的次数已经达到了最大分组次数(例如,2次),则在后续的编程程序中,存储器控制电路单元104将不会再对目标存储胞进行分组。例如,在下一次的编程程序中,存储器控制电路单元104会直接根据经由第2次的分组操作所获得的编程群组A2?E2来分别施加编程电压Va3?VE3至编程群组A2?E2中的目标存储胞。[0188]图19是本发明另一实施例的存储器控制电路单元的方块图。[0189]请参照图19,存储器控制电路单元104包括存储器管理电路202、主机接口204、存储器接口206、缓冲存储器210、错误检查与校正电路208与电源管理电路212。[0190]存储器管理电路202用以控制存储器控制电路单元104的整体运作。具体来说,存储器管理电路202具有多个控制指令,并且在存储器存储装置10运作时,此些控制指令会被执行以进行数据的写入、读取与擦除等运作。[0191]在本实施例中,存储器管理电路202的控制指令是以软件形式来实现。例如,存储器管理电路202具有微处理器单元(未示出)与只读存储器(未示出),并且此些控制指令是被烧录至此只读存储器中。当存储器存储装置10运作时,此些控制指令会由微处理器单元来执行以进行数据的写入、读取与擦除等运作。上述对于存储器控制电路单元104的操作说明可套用至存储器管理电路202。[0192]在另一实施例中,存储器管理电路202的控制指令也可以程序代码式存储于可复写式非易失性存储器模块106的特定区域(例如,存储器模块中专用于存放系统数据的系统区)中。此外,存储器管理电路202具有微处理器单元(未示出)、只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有驱动码,并且当存储器控制电路单元104被致能时,微处理器单元会先执行此驱动码来将存储于可复写式非易失性存储器模块106中的控制指令加载至存储器管理电路202的随机存取存储器中。之后,微处理器单元会运转此些控制指令以进行数据的写入、读取与擦除等运作。[0193]在另一实施例中,存储器管理电路202的控制指令也可以一硬件来实现。例如,存储器管理电路202包括微控制器、存储胞管理电路、存储器写入电路、存储器读取电路、存储器擦除电路与数据处理电路。存储胞管理电路、存储器写入电路、存储器读取电路、存储器擦除电路与数据处理电路是电性连接至微控制器。其中,存储胞管理电路用以管理可复写式非易失性存储器模块106的实体擦除单元;存储器写入电路用以对可复写式非易失性存储器模块106下达写入指令(亦称,写入指令序列)以将数据写入至可复写式非易失性存储器模块106中;存储器读取电路用以对可复写式非易失性存储器模块106下达读取指令(亦称,读取指令序列)以从可复写式非挥发性存储器模块106中读取数据;存储器擦除电路用以对可复写式非易失性存储器模块106下达擦除指令以将数据从可复写式非易失性存储器模块106中擦除;而数据处理电路用以处理欲写入至可复写式非易失性存储器模块106的数据以及从可复写式非易失性存储器模块106中读取的数据。每一个写入指令序列、读取指令序列及擦除指令可包括一或多个程序代码或指令码。[0194]主机接口204是电性连接至存储器管理电路202并且用以接收与识别主机系统11所传送的指令与数据。也就是说,主机系统11所传送的指令与数据会通过主机接口204来传送至存储器管理电路202。在本实施例中,主机接口204是兼容于SATA标准。然而,必须了解的是本发明不限于此,主机接口204也可以是兼容于PATA标准、IEEE1394标准、PCIExpress标准、USB标准、UHS-1接口标准、UHS-1I接口标准、MS标准、MMC标准、CF标准、IDE标准或其它适合的数据传输标准。[0195]存储器接口206是电性连接至存储器管理电路202并且用以存取可复写式非易失性存储器模块106。也就是说,欲写入至可复写式非艺术系存储器模块106的数据会通过存储器接口206转换为可复写式非易失性存储器模块106所能接受的格式。具体来说,若存储器管理电路202要存取可复写式非易失性存储器模块106时,存储器接口206会传送对应的指令序列。这些指令序列可包括一或多个信号,或是在总线上的数据。例如,在读取指令序列中,会包括读取的辨识码、存储器地址等信息。[0196]错误检查与校正电路208是电性连接至存储器管理电路202并且用以执行错误检查与校正程序以确保数据的正确性。具体来说,当存储器管理电路202从主机系统11中接收到写入指令时,错误检查与校正电路208会为对应此写入指令的数据产生对应的错误更正码(errorcorrectingcode,简称ECCcode)及/或错误检查码(errordetectingcode,简称EDC),并且存储器管理电路202会将对应此写入指令的数据与对应的错误更正码或错误检查码写入至可复写式非易失性存储器模块106中。之后,当存储器管理电路202从可复写式非易失性存储器模块106中读取数据时会同时读取此数据对应的错误更正码及/或错误检查码,并且错误检查与校正电路208会依据此错误更正码及/或错误检查码对所读取的数据执行错误检查与校正程序。[0197]缓冲存储器210是电性连接至存储器管理电路202并且用以暂存来自于主机系统1000的数据与指令或来自于可复写式非易失性存储器模块106的数据。存储器控制电路单元404在缓冲存储器210中规划暂存来自于主机系统11的数据或来自于可复写式非易失性存储器模块106的数据,以使数据组织成预定单位大小或是成为传输单元大小,并写入到可复写式非易失性存储器模块106或是回传到主机系统。此外,缓冲存储器210还可暂存存储器控制电路单元104所使用的系统管理数据,例如,档案配置表或是逻辑-实体单元映像表等等。[0198]电源管理电路212是电性连接至存储器管理电路202并且用以控制存储器存储装置10的电源。[0199]值得一提的是,在一实施例中,可通过软件来控制将特定的编程电压施加至特定的编程群组。或者,在另一实施例中,也可以通过硬件开关来控制施加至不同编程群组的编程电压。例如,若欲以硬件开关来控制施加至不同编程群组的编程电压,则一或多个控制开关或缓存器会被配置在提供编程电压至存储胞的一电压供应路径上。每一个控制开关或缓存器是用以导通属于同一个编程群组的存储胞的电压供应路径。通过导通或切换电性连接至不同存储胞的电压供应路径,可选择性地对属于不同编程群组的存储胞进行编程。以图14的范例实施例为例,假设目前是欲使用编程电压Vai来编程编程群组Al,则电性连接至属于编程群组Al的目标存储胞的电压供应路径会被导通并且电性连接至不属于编程群组Al的目标存储胞的电压供应路径会被切断。藉此,编程电压Vai只会经由导通的电压供应路径提供至属于编程群组Al的目标存储胞来执行编程。当欲使用编程电压Vbi来编程编程群组BI时,则只有电性连接至属于编程群组BI的目标存储胞的电压供应路径会被导通以对编程群组BI进行编程,以此类推。[0200]图20是本发明的一实施例的存储器编程方法的流程图。[0201]请参照图20,在步骤S2001中,存储器控制电路单元104(或存储器管理电路202)根据写入数据对多个存储胞执行第一编程程序并且获得第一编程程序的第一编程结果。在步骤S2003中,存储器控制电路单元104(或存储器管理电路202)根据第一编程结果来指示将此些存储胞分组为多个编程群组。在步骤S2005中,存储器控制电路单元104(或存储器管理电路202)根据写入数据指示对此些存储胞执行第二编程程序,其中所述第二编程程序包括使用第一编程电压来编程此些编程群组中的第一编程群组,并且使用第二编程电压来编程此些编程群组中的第二编程群组,其中第一编程电压与第二编程电压不同。[0202]图21是本发明的一实施例的编程存储胞的临界电压的分布示意图。[0203]请参照图15与图21,假设存储器控制电路单元104根据数据位为“O”的写入数据来指示编程多个存储胞,则在使用初始编程电压V1进行第一次的编程程序后,此些存储胞的临界电压分布会从临界电压分布Dl成为临界电压分布D2。在第二次的编程程序前,存储器控制电路单元104会指示经由使用分组电压Vtil?VM来对此些存储胞进行分组,并且在分组之后,根据此些存储胞所属的编程群组Al?El来使用对应的编程电压Vai?VE1执行第二次的编程程序。在经过第二次的编程程序后,此些存储胞的临界电压分布会从临界电压分布D2成为临界电压分布D7。以此类推,在经过其它的编程程序之后,此些存储胞的临界电压分布会从临界电压分布D7成为临界电压分布D8。由于此些存储胞的临界电压皆高于验证电压VVCTlfy,表示此些存储胞的存储状态皆被编程为“O”。[0204]同时参照图3与图21可以发现,根据本发明所提供的存储器编程方法,在编程存储胞的过程中,存储胞的临界电压分布范围可被有效地窄化。亦即,存储胞的临界电压分布更加的集中。此外,图21中存储胞的临界电压分布D8中的最高临界电压也可能会小于图3中存储胞的临界电压分布D4中的最高临界电压。[0205]综上所述,本发明所提供的存储器编程方法、存储器控制电路单元与存储器存储装置,可以根据存储胞的临界电压分布(或写入速度)来将存储胞分组并且对应调整施加至不同群组的编程电压,以提升对于存储胞的编程的精确度并且延长存储器存储装置的使用寿命。此外,也可以使完成编程的存储胞的临界电压分布的范围减少,进而减少存储在存储器存储装置中的数据发生错误的机率。[0206]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。【主权项】1.一种存储器编程方法,用于一可复写式非易失性存储器模块,其特征在于,所述可复写式非易失性存储器模块具有多个存储胞,所述存储器编程方法包括:根据一写入数据对该些存储胞执行一第一编程程序并且获得所述第一编程程序的一第一编程结果;根据所述第一编程结果来将该些存储胞分组为多个编程群组;以及根据所述写入数据对该些存储胞执行一第二编程程序,其中所述第二编程程序包括:使用一第一编程电压来编程该些编程群组中的一第一编程群组;以及使用一第二编程电压来编程该些编程群组中的一第二编程群组,其中所述第一编程电压与所述第二编程电压不同。2.根据权利要求1所述的存储器编程方法,其特征在于,所述第一编程群组的一第一电压分布范围与所述第二编程群组的一第二电压分布范围不同。3.根据权利要求2所述的存储器编程方法,其特征在于,所述第一编程群组中的一第一存储胞的一第一电压小于所述第二编程群组中的一第二存储胞的一第二电压,其中,所述第一编程电压大于所述第二编程电压。4.根据权利要求1所述的存储器编程方法,其特征在于,根据所述第一编程结果来将该些存储胞分组为该些编程群组的步骤包括:提供至少一分组电压至该些存储胞以获得该些存储胞的一存储状态信息,其中所述存储状态信息指示该些存储胞的一电压分布状态;以及根据所述存储状态信息将该些存储胞分组为该些编程群组。5.根据权利要求1所述的存储器编程方法,其特征在于,所述方法还包括:判断所述第一编程结果是否符合对应于所述写入数据的一预设编程结果,其中根据所述第一编程结果来将该些存储胞分组为该些第一编程群组的步骤是在判定所述第一编程结果不符合所述预设编程结果之后执行。6.根据权利要求5所述的存储器编程方法,其特征在于,判断所述第一编程结果是否符合所述预设编程结果的步骤包括:提供一验证电压至该些存储胞以判断该些存储胞的存储状态是否处于对应于所述写入数据的一正确存储状态;若该些存储胞的存储状态是处于对应于所述写入数据的所述正确存储状态,判定所述第一编程结果符合所述预设编程结果;以及若该些存储胞的存储状态不是处于对应于所述写入数据的所述正确存储状态,判定所述第一编程结果不符合所述预设编程结果。7.根据权利要求1所述的存储器编程方法,其特征在于,所述方法还包括:在执行所述第一编程程序之前,将该些存储胞分组为一第三编程群组与一第四编程群组。8.根据权利要求7所述的存储器编程方法,其特征在于,所述第三编程群组中的一第三存储胞的一第三电压小于所述第四编程群组中的一第四存储胞的一第四电压,其中所述第一编程程序包括:使用一第三编程电压来编程所述第三编程群组;以及使用一第四编程电压来编程所述第四编程群组,其中所述第三编程电压大于所述第四编程电压,所述第一编程电压大于所述第三编程电压,并且所述第二编程电压大于所述第四编程电压。9.一种存储器存储装置,其特征在于,包括:一连接接口单元,用以电性连接至一主机系统;一可复写式非易失性存储器模块,包括多个存储胞;以及一存储器控制电路单元,电性连接至所述连接接口单元与所述可复写式非易失性存储器模块,其中所述存储器控制电路单元用以发送一第一写入指令序列,其中所述第一写入指令序列用以指示根据一写入数据对该些存储胞执行一第一编程程序,其中所述存储器控制电路单元还用以获得所述第一编程程序的一第一编程结果,其中所述存储器控制电路单元还用以根据所述第一编程结果来将该些存储胞分组为多个编程群组,其中所述存储器控制电路单元还用以发送一第二写入指令序列,其中所述第二写入指令序列用以指示根据所述写入数据对该些存储胞执行一第二编程程序,其中所述第二编程程序包括:使用一第一编程电压来编程该些编程群组中的一第一编程群组;以及使用一第二编程电压来编程该些编程群组中的一第二编程群组,其中所述第一编程电压与所述第二编程电压不同。10.根据权利要求9所述的存储器存储装置,其特征在于,所述第一编程群组的一第一电压分布范围与所述第二编程群组的一第二电压分布范围不同。11.根据权利要求10所述的存储器存储装置,其特征在于,所述第一编程群组中的一第一存储胞的一第一电压小于所述第二编程群组中的一第二存储胞的一第二电压,其中所述第一编程电压大于所述第二编程电压。12.根据权利要求9所述的存储器存储装置,其特征在于,在所述存储器控制电路单元根据所述第一编程结果来将该些存储胞分组为该些编程群组的运作中,所述存储器控制电路单元还用以发送一分组指令,其中所述分组指令用以指示提供至少一分组电压至该些存储胞以获得该些存储胞的一存储状态信息,其中所述存储状态信息指示该些存储胞的一电压分布状态,其中所述存储器控制电路单元根据所述存储状态信息将该些存储胞分组为该些编程群组。13.根据权利要求9所述的存储器存储装置,其特征在于,所述存储器控制电路单元还用以判断所述第一编程结果是否符合对应于所述写入数据的一预设编程结果,其中所述存储器控制电路单元根据所述第一编程结果来将该些存储胞分组为该些第一编程群组的运作是在判定所述第一编程结果不符合所述预设编程结果之后执行。14.根据权利要求13所述的存储器存储装置,其特征在于,在所述存储器控制电路单元判断所述第一编程结果是否符合对应于所述写入数据的所述预设编程结果的运作中,所述存储器控制电路单元还用以发送一验证指令,其中所述验证指令用以指示提供一验证电压至该些存储胞以判断该些存储胞的存储状态是否处于对应于所述写入数据的一正确存储状态,其中若该些存储胞的存储状态是处于对应于所述写入数据的所述正确存储状态,所述存储器控制电路单元判定所述第一编程结果符合所述预设编程结果,其中若该些存储胞的存储状态不是处于对应于所述写入数据的所述正确存储状态,所述存储器控制电路单元判定所述第一编程结果不符合所述预设编程结果。15.根据权利要求9所述的存储器存储装置,其特征在于,在执行所述第一编程程序之前,所述存储器控制电路单元还用以将该些存储胞分组为一第三编程群组与一第四编程群组。16.根据权利要求15所述的存储器存储装置,其特征在于,所述第三编程群组中的一第三存储胞的一第三电压小于所述第四编程群组中的一第四存储胞的一第四电压,其中所述第一编程程序包括:使用一第三编程电压来编程所述第三编程群组;以及使用一第四编程电压来编程所述第四编程群组,其中所述第三编程电压与大于所述第四编程电压,所述第一编程电压大于所述第三编程电压,并且所述第二编程电压大于所述第四编程电压。17.一种存储器控制电路单元,用于控制一可复写式非易失性存储器模块,其特征在于,所述可复写式非易失性存储器模块包括多个存储胞,所述存储器控制电路单元包括:一主机接口,用以电性连接至一主机系统;一存储器接口,用以电性连接至所述可复写式非易失性存储器模块;以及一存储器管理电路,电性连接至所述主机接口与所述存储器接口,其中所述存储器管理电路用以发送一第一写入指令序列,其中所述第一写入指令序列用以指示根据一写入数据对该些存储胞执行一第一编程程序,其中所述存储器管理电路还用以获得所述第一编程程序的一第一编程结果,其中所述存储器管理电路还用以根据所述第一编程结果来将该些存储胞分组为多个编程群组,其中所述存储器管理电路还用以发送一第二写入指令序列,其中所述第二写入指令序列用以指示根据所述写入数据对该些存储胞执行一第二编程程序,其中所述第二编程程序包括:使用一第一编程电压来编程该些编程群组中的一第一编程群组;以及使用一第二编程电压来编程该些编程群组中的一第二编程群组,其中所述第一编程电压与所述第二编程电压不同。18.根据权利要求17所述的存储器控制电路单元,其特征在于,所述第一编程群组的一第一电压分布范围与所述第二编程群组的一第二电压分布范围不同。19.根据权利要求18所述的存储器控制电路单元,其特征在于,所述第一编程群组中的一第一存储胞的一第一电压小于所述第二编程群组中的一第二存储胞的一第二电压,其中所述第一编程电压大于所述第二编程电压。20.根据权利要求17所述的存储器控制电路单元,其特征在于,在所述存储器管理电路还根据所述第一编程结果来将该些存储胞分组为该些编程群组的运作中,所述存储器管理电路还用以发送一分组指令,其中所述分组指令用以指示提供至少一分组电压至该些存储胞以获得该些存储胞的一存储状态信息,其中所述存储状态信息指示该些存储胞的一电压分布状态,其中所述存储器管理电路根据所述存储状态信息将该些存储胞分组为该些编程群组。21.根据权利要求17所述的存储器控制电路单元,其特征在于,所述存储器管理电路还用以判断所述第一编程结果是否符合对应于所述写入数据的一预设编程结果,其中所述存储器管理电路根据所述第一编程结果来将该些存储胞分组为该些第一编程群组的运作是在判定所述第一编程结果不符合所述预设编程结果之后执行。22.根据权利要求21所述的存储器控制电路单元,其特征在于,在所述存储器管理电路判断所述第一编程结果是否符合对应于所述写入数据的所述预设编程结果的运作中,所述存储器管理电路还用以发送一验证指令,其中所述验证指令用以指示提供一验证电压至该些存储胞以判断该些存储胞的存储状态是否处于对应于所述写入数据的一正确存储状态,其中若该些存储胞的存储状态是处于对应于所述写入数据的所述正确存储状态,所述存储器管理电路判定所述第一编程结果符合所述预设编程结果,其中若该些存储胞的存储状态不是处于对应于所述写入数据的所述正确存储状态,所述存储器管理电路判定所述第一编程结果不符合所述预设编程结果。23.根据权利要求17所述的存储器控制电路单元,其特征在于,在执行所述第一编程程序之前,所述存储器管理电路还用以将该些存储胞分组为一第三编程群组与一第四编程群组。24.根据权利要求23所述的存储器控制电路单元,其特征在于,所述第三编程群组中的一第三存储胞的一第三电压小于所述第四编程群组中的一第四存储胞的一第四电压,其中所述第一编程程序包括:使用一第三编程电压来编程所述第三编程群组;以及使用一第四编程电压来编程所述第四编程群组,其中所述第三编程电压大于所述第四编程电压,所述第一编程电压大于所述第三编程电压,并且所述第二编程电压大于所述第四编程电压。【文档编号】G11C16/10GK105989883SQ201510088207【公开日】2016年10月5日【申请日】2015年2月26日【发明人】林纬,许祐诚,刘安城,林小东【申请人】群联电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1