CN105513635A - 编程方法、存储器存储装置及存储器控制电路单元 - Google Patents
编程方法、存储器存储装置及存储器控制电路单元 Download PDFInfo
- Publication number
- CN105513635A CN105513635A CN201410489706.9A CN201410489706A CN105513635A CN 105513635 A CN105513635 A CN 105513635A CN 201410489706 A CN201410489706 A CN 201410489706A CN 105513635 A CN105513635 A CN 105513635A
- Authority
- CN
- China
- Prior art keywords
- character line
- delete cells
- jump
- physics delete
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Read Only Memory (AREA)
Abstract
本发明提供一种编程方法、存储器存储装置及存储器控制电路单元。所述方法包括:接收第一写入指令;以及根据第一写入指令选择第一物理删除单元并且发送第一跳跃写入指令序列,其中第一跳跃写入指令序列指示执行第一跳跃编程程序,其中第一跳跃编程程序包括:将第一数据编程至第一物理删除单元的第一字符线;以及在第一字符线被编程之后,跳过与第一字符线相邻的第二字符线而将第一数据编程至不与第一字符线相邻的第三字符线。本发明可减少因编程相邻的字符线所产生的错误。
Description
技术领域
本发明是有关于一种存储器管理方法,且特别是有关于一种编程方法、存储器存储装置及存储器控制电路单元。
背景技术
数码相机、移动电话与MP3播放器在这几年来的成长十分迅速,使得消费者对存储媒体的需求也急速增加。由于可复写式非易失性存储器模块(例如,快闪存储器)具有数据非易失性、省电、体积小,以及无机械结构等特性,所以非常适合内设于上述所举例的各种便携式多媒体装置中。
一般来说,可复写式非易失性存储器模块中的多条字符线会被编程(programming)来存储数据。然而,若没有将编程字符线的方式加以管理,则可能会在所存储的数据中产生过多的错误比特。
发明内容
本发明提供一种编程方法、存储器存储装置及存储器控制电路单元,可减少因编程相邻的字符线所产生的错误。
本发明的一实施例提供一种编程方法,其用于可复写式非易失性存储器模块,可复写式非易失性存储器模块包括多个物理删除单元,所述编程方法包括:接收至少一第一写入指令;以及根据所述第一写入指令从所述物理删除单元中选择第一物理删除单元并且发送第一跳跃写入指令序列,其中第一跳跃写入指令序列指示执行第一跳跃编程程序,其中第一跳跃编程程序包括:根据对应于所述第一写入指令的第一数据来编程第一物理删除单元的多条字符线中的第一字符线;以及在第一字符线被编程之后,跳过第一物理删除单元的所述字符线中与第一字符线相邻的至少一第二字符线而根据第一数据来编程第一物理删除单元的所述字符线中不与第一字符线相邻的第三字符线。
在本发明的一实施例中,所述编程方法还包括:判断第一数据的数据大小是否超过第一物理删除单元的可用大小,其中第一物理删除单元的可用大小小于或等于第一物理删除单元的总存储空间的大小的1/P,且P是大于1的整数;以及若第一数据的数据大小超过第一物理删除单元的可用大小,从所述物理删除单元中选择第二物理删除单元,其中第一跳跃编程程序还包括:根据第一数据来编程第二物理删除单元的所述字符线中的一第四字符线;以及在第四字符线被编程之后,跳过第二物理删除单元的所述字符线中与第四字符线相邻的至少一第五字符线而根据第一数据来编程第二物理删除单元的所述字符线中不与第四字符线相邻的第六字符线。
在本发明的一实施例中,所述编程方法还包括:在接收到所述第一写入指令之后,接收至少一第二写入指令;根据所述第二写入指令从所述物理删除单元中选择第三物理删除单元并且发送第二跳跃写入指令序列,其中第二跳跃写入指令序列指示执行第二跳跃编程程序,其中第二跳跃编程程序包括:跳过第三物理删除单元的所述字符线中的第一字符线而根据对应于所述第二写入指令的第二数据来编程第三物理删除单元的所述字符线中的第二字符线;以及在第二字符线被编程之后,跳过第三物理删除单元的所述字符线中的第三字符线而根据第二数据来编程第三物理删除单元的所述字符线中不与被编程的第二字符线相邻的第七字符线。
在本发明的一实施例中,所述编程方法还包括:判断可复写式非易失性存储器模块的目前状态是否符合至少一第一条件,其中第一跳跃写入指令序列是在判定可复写式非易失性存储器模块的目前状态符合所述第一条件之后发送;以及若可复写式非易失性存储器模块的目前状态不符合第一条件,发送正常写入指令序列,其中正常写入指令序列指示执行正常编程程序,其中正常编程程序包括:根据第一数据来编程第一字符线;以及在第一字符线被编程之后,根据第一数据来编程所述第二字符线。
在本发明的一实施例中,所述判断可复写式非易失性存储器模块的目前状态是否符合所述第一条件的步骤包括:判断第一物理删除单元的使用程度是否达到预设程度。
在本发明的一实施例中,所述判断可复写式非易失性存储器模块的目前状态是否符合所述第一条件的步骤包括:判断可复写式非易失性存储器模块是否已经经过高温工序的处理。
在本发明的一实施例中,所述判断可复写式非易失性存储器模块的目前状态是否符合所述第一条件的步骤包括:判断可复写式非易失性存储器模块的第一存储区的总可用大小是否小于第一数据的数据大小,其中第一存储区的总可用空间的大小小于或等于第一存储区的总存储空间的大小的1/P,其中P为大于1的整数。
在本发明的一实施例中,所述编程方法还包括:在接收到所述第一写入指令之后,接收至少一第二写入指令;判断第一跳跃编程程序是使用第一跳跃规则或第二跳跃规则;若第一跳跃编程程序是使用第一跳跃规则,指示在对应于所述第二写入指令的第二跳跃编程程序中使用第二跳跃规则;以及若第一跳跃编程程序是使用第二跳跃规则,则指示在第二跳跃编程程序中使用第一跳跃规则。
在本发明的一实施例中,所述编程方法还包括:将存储于第一物理删除单元中的第一数据复制到所述物理删除单元中的一第四物理删除单元。
本发明的一实施例提供一种存储器存储装置,其包括连接接口单元、可复写式非易失性存储器模块及存储器控制电路单元。连接接口单元用以耦接至主机系统。可复写式非易失性存储器模块包括多个物理删除单元。存储器控制电路单元耦接至连接接口单元与可复写式非易失性存储器模块,其中存储器控制电路单元用以接收至少一第一写入指令。其中存储器控制电路单元还用以根据所述第一写入指令从所述物理删除单元中选择第一物理删除单元并且发送第一跳跃写入指令序列,其中第一跳跃写入指令序列指示执行第一跳跃编程程序,其中第一跳跃编程程序包括:根据对应于所述第一写入指令的第一数据来编程第一物理删除单元的多条字符线中的第一字符线;以及在第一字符线被编程之后,跳过第一物理删除单元的所述字符线中与第一字符线相邻的至少一第二字符线而根据第一数据来编程第一物理删除单元的所述字符线中不与第一字符线相邻的第三字符线。
在本发明的一实施例中,所述存储器控制电路单元还用以判断第一数据的数据大小是否超过第一物理删除单元的可用大小,其中第一物理删除单元的可用大小小于或等于第一物理删除单元的总存储空间的大小的1/P,且P是大于1的整数,其中若第一数据的数据大小超过第一物理删除单元的可用大小,存储器控制电路单元还用以从所述物理删除单元中选择一第二物理删除单元,其中第一跳跃编程程序还包括:根据第一数据来编程第二物理删除单元的所述字符线中的第四字符线;以及在第四字符线被编程之后,跳过第二物理删除单元的所述字符线中与第四字符线相邻的至少一第五字符线而根据第一数据来编程第二物理删除单元的所述字符线中不与第四字符线相邻的第六字符线。
在本发明的一实施例中,所述存储器控制电路单元还用以在接收到所述第一写入指令之后,接收至少一第二写入指令,其中存储器控制电路单元还用以根据所述第二写入指令从所述物理删除单元中选择第三物理删除单元并且发送第二跳跃写入指令序列,其中第二跳跃写入指令序列指示执行第二跳跃编程程序,其中第二跳跃编程程序包括:跳过第三物理删除单元的所述字符线中的第一字符线而根据对应于所述第二写入指令的第二数据来编程第三物理删除单元的所述字符线中的第二字符线;以及在第二字符线被编程之后,跳过第三物理删除单元的所述字符线中的第三字符线而根据第二数据来编程第三物理删除单元的所述字符线中不与被编程的第二字符线相邻的第七字符线。
在本发明的一实施例中,所述存储器控制电路单元还用以判断可复写式非易失性存储器模块的目前状态是否符合至少一第一条件,其中第一跳跃写入指令序列是在判定可复写式非易失性存储器模块的目前状态符合所述第一条件之后发送,其中若可复写式非易失性存储器模块的目前状态不符合第一条件,存储器控制电路单元还用以发送正常写入指令序列,其中正常写入指令序列指示执行正常编程程序,其中正常编程程序包括:根据第一数据来编程第一字符线;以及在第一字符线被编程之后,根据第一数据来编程所述第二字符线。
在本发明的一实施例中,所述存储器控制电路单元判断可复写式非易失性存储器模块的目前状态是否符合所述第一条件的操作包括:判断第一物理删除单元的使用程度是否达到预设程度。
在本发明的一实施例中,所述存储器控制电路单元判断可复写式非易失性存储器模块的目前状态是否符合所述第一条件的操作包括:判断可复写式非易失性存储器模块是否已经经过高温工序的处理。
在本发明的一实施例中,所述存储器控制电路单元判断可复写式非易失性存储器模块的目前状态是否符合所述第一条件的操作包括:判断可复写式非易失性存储器模块的第一存储区的总可用大小是否小于第一数据的数据大小,其中第一存储区的总可用空间的大小小于或等于第一存储区的总存储空间的大小的1/P,其中P为大于1的整数。
在本发明的一实施例中,所述存储器控制电路单元还用以在接收到所述第一写入指令之后,接收至少一第二写入指令,其中存储器控制电路单元还用以判断第一跳跃编程程序是使用第一跳跃规则或第二跳跃规则,其中若第一跳跃编程程序是使用第一跳跃规则,则存储器控制电路单元还用以指示在对应于所述第二写入指令的第二跳跃编程程序中使用第二跳跃规则,其中若第一跳跃编程程序是使用第二跳跃规则,则存储器控制电路单元还用以指示在第二跳跃编程程序中使用第一跳跃规则。
在本发明的一实施例中,所述存储器控制电路单元还用以将存储于第一物理删除单元中的第一数据复制到所述物理删除单元中的第四物理删除单元。
本发明的一实施例提供一种存储器控制电路单元,其用于控制可复写式非易失性存储器模块,其中可复写式非易失性存储器模块包括多个物理删除单元,所述存储器控制电路单元包括主机接口、存储器接口及存储器管理电路。主机接口用以耦接至主机系统。存储器接口用以耦接至可复写式非易失性存储器模块。存储器管理电路耦接至主机接口与存储器接口,其中存储器管理电路用以接收至少一第一写入指令。其中存储器管理电路还用以根据所述第一写入指令从所述物理删除单元中选择一第一物理删除单元并且发送一第一跳跃写入指令序列,其中第一跳跃写入指令序列指示执行一第一跳跃编程程序,其中第一跳跃编程程序包括:根据对应于所述第一写入指令的第一数据来编程第一物理删除单元的多条字符线中的第一字符线;以及在第一字符线被编程之后,跳过第一物理删除单元的所述字符线中与第一字符线相邻的至少一第二字符线而根据第一数据来编程第一物理删除单元的所述字符线中不与第一字符线相邻的第三字符线。
在本发明的一实施例中,所述第一物理删除单元包括M+1条字符线,第一字符线是M+1条字符线中的第N条字符线,所述第二字符线是M+1条字符线中的第N+1条字符线,并且第三字符线是M+1条字符线中的第N+2条字符线,其中M与N是正整数。
在本发明的一实施例中,所述存储器管理电路还用以判断第一数据的数据大小是否超过第一物理删除单元的可用大小,其中第一物理删除单元的可用大小小于或等于第一物理删除单元的总存储空间的大小的1/P,且P是大于1的整数,其中若第一数据的数据大小超过第一物理删除单元的可用大小,存储器管理电路还用以从所述物理删除单元中选择第二物理删除单元,其中第一跳跃编程程序还包括:根据第一数据来编程第二物理删除单元的所述字符线中的第四字符线;以及在第四字符线被编程之后,跳过第二物理删除单元的所述字符线中与第四字符线相邻的至少一第五字符线而根据第一数据来编程第二物理删除单元的所述字符线中不与第四字符线相邻的第六字符线。
在本发明的一实施例中,所述存储器管理电路还用以在接收到所述第一写入指令之后,接收至少一第二写入指令,其中存储器管理电路还用以根据所述第二写入指令从所述物理删除单元中选择第三物理删除单元并且发送第二跳跃写入指令序列,其中第二跳跃写入指令序列指示执行第二跳跃编程程序,其中第二跳跃编程程序包括:跳过第三物理删除单元的所述字符线中的第一字符线而根据对应于所述第二写入指令的第二数据来编程第三物理删除单元的所述字符线中的第二字符线;以及在第二字符线被编程之后,跳过第三物理删除单元的所述字符线中的第三字符线而根据第二数据来编程第三物理删除单元的所述字符线中不与被编程的第二字符线相邻的第七字符线。
在本发明的一实施例中,所述存储器管理电路还用以判断可复写式非易失性存储器模块的目前状态是否符合至少一第一条件,其中第一跳跃写入指令序列是在判定可复写式非易失性存储器模块的目前状态符合所述第一条件之后发送,其中若可复写式非易失性存储器模块的目前状态不符合第一条件,存储器管理电路还用以发送正常写入指令序列,其中正常写入指令序列指示执行正常编程程序,其中正常编程程序包括:根据第一数据来编程第一字符线;以及在第一字符线被编程之后,根据第一数据来编程所述第二字符线。
在本发明的一实施例中,所述存储器管理电路判断可复写式非易失性存储器模块的目前状态是否符合所述第一条件的操作包括:判断第一物理删除单元的使用程度是否达到预设程度。
在本发明的一实施例中,所述存储器管理电路判断可复写式非易失性存储器模块的目前状态是否符合所述第一条件的操作包括:判断可复写式非易失性存储器模块是否已经经过高温工序的处理。
在本发明的一实施例中,所述存储器管理电路判断可复写式非易失性存储器模块的目前状态是否符合所述第一条件的操作包括:判断可复写式非易失性存储器模块的第一存储区的总可用大小是否小于第一数据的数据大小,其中第一存储区的总可用空间的大小小于或等于第一存储区的总存储空间的大小的1/P,其中P为大于1的整数。
在本发明的一实施例中,所述存储器管理电路还用以在接收到所述第一写入指令之后,接收至少一第二写入指令,其中存储器管理电路还用以判断第一跳跃编程程序是使用第一跳跃规则或第二跳跃规则,其中若第一跳跃编程程序是使用第一跳跃规则,则存储器管理电路还用以指示在对应于所述第二写入指令的第二跳跃编程程序中使用第二跳跃规则,其中若第一跳跃编程程序是使用第二跳跃规则,则存储器管理电路还用以指示在第二跳跃编程程序中使用第一跳跃规则。
在本发明的一实施例中,所述可复写式非易失性存储器模块包括第一存储区与第二存储区,第一跳跃编程程序或第二跳跃编程程序仅使用于第一存储区。
在本发明的一实施例中,所述存储器管理电路还用以将存储于第一物理删除单元中的第一数据复制到所述物理删除单元中的第四物理删除单元。
在本发明的一实施例中,所述第一物理删除单元属于第一存储区,第四物理删除单元属于第二存储区,第一存储区使用第二编程模式,并且第二存储区使用第一编程模式。
在本发明的一实施例中,所述可复写式非易失性存储器模块包括第一存储区与第二存储区,第一跳跃编程程序或第二跳跃编程程序仅使用于第二存储区。
本发明的一实施例提供一种存储器存储装置,其包括连接接口单元、可复写式非易失性存储器模块及存储器控制电路单元。连接接口单元用以耦接至主机系统。可复写式非易失性存储器模块包括多个物理删除单元。存储器控制电路单元耦接至连接接口单元与可复写式非易失性存储器模块,其中存储器控制电路单元使用所述物理删除单元中的第一物理删除单元的多条字符线中的第一字符线来存储第一数据,其中在使用第一字符线之后,存储器控制电路单元接续使用第一物理删除单元的所述字符线中的第三字符线来存储第一数据,其中第一字符线与第三字符线不相邻。
在本发明的一实施例中,所述第一字符线与第三字符线之间包括被跳过的与第一字符线相邻的至少一第二字符线。
基于上述,跳跃写入指令序列是用以指示执行跳跃编程程序。在跳跃编程程序中,相邻的字符线不会被用来存储数据。因此,可减少因编程相邻的字符线所产生的错误。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是根据本发明的一实施例所示出的主机系统与存储器存储装置;
图2是根据本发明的一实施例所示出的电脑、输入/输出装置与存储器存储装置的示意图;
图3是根据本发明的一实施例所示出的主机系统与存储器存储装置的示意图;
图4是图1所示的存储器存储装置的概要方块图;
图5是根据本发明的一实施例所示出的可复写式非易失性存储器模块的概要方块图;
图6是根据本发明的一实施例所示出的存储单元阵列的示意图;
图7是根据本发明的一实施例所示出的存储器控制电路单元的概要方块图;
图8是根据本发明的一实施例所示出的可复写式非易失性存储器模块的示意图;
图9是根据本发明的一实施例所示出的使用不同的第二编程模式来编程物理编程单元的存储单元的临界电压分布示意图;
图10是根据本发明的一实施例所示出的管理可复写式非易失性存储器模块的示意图;
图11是根据本发明的一实施例所示出的编程的示意图;
图12是根据本发明的一实施例所示出的编程的示意图;
图13是根据本发明的一实施例所示出的编程的示意图;
图14是根据本发明的一实施例所示出的编程的示意图;
图15是根据本发明的一实施例所示出的编程的示意图;
图16是根据本发明的一实施例所示出的编程方法的流程图;
图17是根据本发明的一实施例所示出的编程方法的流程图;
图18是根据本发明的一实施例所示出的编程方法的流程图;
图19是根据本发明的一实施例所示出的编程方法的流程图;
图20是根据本发明的一实施例所示出的编程方法的流程图;
图21是根据本发明的一实施例所示出的编程方法的流程图。
附图标记说明:
10:存储器存储装置;
11:主机系统;
12:电脑;
122:微处理器;
124:随机存取存储器;
126:系统总线;
128:数据传输接口;
13:输入/输出装置;
21:鼠标;
22:键盘;
23:显示器;
24:打印机;
25:U盘;
26:存储卡;
27:固态硬盘;
31:数码相机;
32:SD卡;
33:MMC卡;
34:存储棒;
35:CF卡;
36:嵌入式存储装置;
402:连接接口单元;
404:存储器控制电路单元;
406:可复写式非易失性存储器模块;
502:存储单元阵列;
504:字符线控制电路;
506:比特线控制电路;
508:列解码器;
510:数据输入/输出缓冲器;
512:控制电路;
602:存储单元;
604:比特线;
606:字符线;
608:共用源极线;
612、614:晶体管;
702:存储器管理电路;
704:主机接口;
706:存储器接口;
708:错误检查与校正电路;
710:缓冲存储器;
712:电源管理电路;
801(0)~801(D):物理编程单元;
900(0)~900(C):物理删除单元;
810、820、830、840:分布;
901:第一存储区;
902:第二存储区;
903:系统区;
906(0)~906(M)、1006(0)~1006(M)、1106(0)~1106(M)、1206(0)~1206(M)、1306(0)~1306(M)、1406(0)~1406(M):字符线;
S1601~S1602、S1701~S1707、S1801~S1805、S1901~S1905、S2001~S2005、S2101~S2112:步骤。
具体实施方式
一般而言,存储器存储装置(也称,存储器存储系统)包括可复写式非易失性存储器模块与控制器(也称,控制电路)。通常存储器存储装置是与主机系统一起使用,以使主机系统可将数据写入至存储器存储装置或从存储器存储装置中读取数据。
图1是根据本发明的一实施例所示出的主机系统与存储器存储装置的示意图。图2是根据本发明的一实施例所示出的电脑、输入/输出装置与存储器存储装置的示意图。
请参照图1,主机系统11一般包括电脑12与输入/输出(input/output,简称I/O)装置13。电脑12包括微处理器122、随机存取存储器(randomaccessmemory,简称RAM)124、系统总线126与数据传输接口128。输入/输出装置13包括如图2的鼠标21、键盘22、显示器23与打印机24。必须了解的是,图2所示的装置非限制输入/输出装置13,输入/输出装置13可还包括其他装置。
在一实施例中,存储器存储装置10是通过数据传输接口128与主机系统11的其他元件耦接。通过微处理器122、随机存取存储器124与输入/输出装置13的运作可将数据写入至存储器存储装置10或从存储器存储装置10中读取数据。例如,存储器存储装置10可以是如图2所示的U盘25、存储卡26或固态硬盘(SolidStateDrive,简称SSD)27等的可复写式非易失性存储器存储装置。
图3是根据本发明的一实施例所示出的主机系统与存储器存储装置的示意图。
一般而言,主机系统11为可实质地与存储器存储装置10配合以存储数据的任意系统。虽然在本实施例中,主机系统11是以电脑系统来作说明,然而,另一实施例中,主机系统11可以是数码相机、摄像机、通信装置、音频播放器或视频播放器等系统。例如,在主机系统为数码相机(摄像机)31时,可复写式非易失性存储器存储装置则为其所使用的SD卡32、MMC卡33、存储棒(memorystick)34、CF卡35或嵌入式存储装置36(如图3所示)。嵌入式存储装置36包括嵌入式多媒体卡(EmbeddedMMC,简称eMMC)。值得一提的是,嵌入式多媒体卡是直接耦接于主机系统11的基板上。
图4是图1所示的存储器存储装置的概要方块图。
请参照图4,存储器存储装置10包括连接接口单元402、存储器控制电路单元404与可复写式非易失性存储器模块406。
在本实施例中,连接接口单元402是相容于串行先进技术附件(SerialAdvancedTechnologyAttachment,简称SATA)标准。然而,必须了解的是,本发明不限于此,连接接口单元402也可以是符合并行先进技术附件(ParallelAdvancedTechnologyAttachment,简称PATA)标准、电气和电子工程师协会(InstituteofElectricalandElectronicEngineers,简称IEEE)1394标准、外设互联接口(PeripheralComponentInterconnectExpress,简称PCIExpress)标准、通用串行总线(UniversalSerialBus,简称USB)标准、安全数字(SecureDigital,简称SD)接口标准、超高速一代(UltraHighSpeed-I,简称UHS-I)接口标准、超高速二代(UltraHighSpeed-II,简称UHS-II)接口标准、存储棒(MemoryStick,简称MS)接口标准、多媒体存储卡(MultiMediaCard,简称MMC)接口标准、嵌入式多媒体存储卡(EmbeddedMultimediaCard,简称eMMC)接口标准、通用快闪存储器(UniversalFlashStorage,简称UFS)接口标准、小型快闪(CompactFlash,简称CF)接口标准、整合式驱动电子接口(IntegratedDeviceElectronics,简称IDE)标准或其他适合的标准。连接接口单元402可与存储器控制电路单元404封装在一个芯片中,或者连接接口单元402是布设于一包含存储器控制电路单元404的芯片外。
存储器控制电路单元404用以执行以硬件形式或固件形式制作的多个逻辑门或控制指令,并且根据主机系统11的指令在可复写式非易失性存储器模块406中进行数据的写入、读取与删除等运作。
可复写式非易失性存储器模块406是耦接至存储器控制电路单元404,并且用以存储主机系统11所写入的数据。可复写式非易失性存储器模块406可以是单阶存储单元(SingleLevelCell,简称SLC)NAND型快闪存储器模块、多阶存储单元(MultiLevelCell,简称MLC)NAND型快闪存储器模块(即,一个存储单元中可存储2个比特数据的快闪存储器模块)、复数阶存储单元(TripleLevelCell,简称TLC)NAND型快闪存储器模块(即,一个存储单元中可存储3个比特数据的快闪存储器模块)、其他快闪存储器模块或其他具有相同特性的存储器模块。
图5是根据本发明的一实施例所示出的可复写式非易失性存储器模块的概要方块图。图6是根据本发明的一实施例所示出的存储单元阵列的示意图。
请参照图5,可复写式非易失性存储器模块406包括存储单元阵列502、字符线控制电路504、比特线控制电路506、列解码器(columndecoder)508、数据输入/输出缓冲器510与控制电路512。
在本实施例中,存储单元阵列502可包括用以存储数据的多个存储单元602、多个选择门漏极(selectgatedrain,简称SGD)晶体管612与多个选择门源极(selectgatesource,简称SGS)晶体管614、以及连接此些存储单元的多条比特线604、多条字符线606、与共用源极线608(如图6所示)。存储单元602是以阵列方式(或立体堆叠的方式)配置在比特线604与字符线606的交叉点上。当从存储器控制电路单元404接收到写入指令或读取指令时,控制电路512会控制字符线控制电路504、比特线控制电路506、列解码器508、数据输入/输出缓冲器510来写入数据至存储单元阵列502或从存储单元阵列502中读取数据,其中字符线控制电路504用以控制施予至字符线606的电压,比特线控制电路506用以控制施予至比特线604的电压,列解码器508依据指令中的列地址以选择对应的比特线,并且数据输入/输出缓冲器510用以暂存数据。
可复写式非易失性存储器模块406中的每一个存储单元是以临界电压的改变来存储一或多个比特。具体来说,每一个存储单元的控制门极(controlgate)与通道之间有一个电荷捕捉层。通过施予一写入电压至控制门极,可以改变电荷捕捉层的电子量,因而改变了存储单元的临界电压。此改变临界电压的程序也称为”把数据写入至存储单元”或”编程存储单元”。随着临界电压的改变,存储单元阵列502的每一个存储单元具有多个存储状态。并且通过读取电压可以判断存储单元是属于哪一个存储状态,由此取得存储单元所存储的一或多个比特。
图7是根据本发明的一实施例所示出的存储器控制电路单元的概要方块图。
请参照图7,存储器控制电路单元404包括存储器管理电路702、主机接口704、存储器接口706及错误检查与校正电路708。
存储器管理电路702用以控制存储器控制电路单元404的整体运作。具体来说,存储器管理电路702具有多个控制指令,并且在存储器存储装置10运作时,此些控制指令会被执行以进行数据的写入、读取与删除等运作。以下说明存储器管理电路702的操作时,等同于说明存储器控制电路单元404的操作,以下并不再赘述。
在本实施例中,存储器管理电路702的控制指令是以固件形式来制作。例如,存储器管理电路702具有微处理器单元(未示出)与只读存储器(未示出),并且此些控制指令是被烧录至此只读存储器中。当存储器存储装置10运作时,此些控制指令会由微处理器单元来执行以进行数据的写入、读取与删除等运作。
在另一实施例中,存储器管理电路702的控制指令也可以程序代码形式存储于可复写式非易失性存储器模块406的特定区域(例如,存储器模块中专用于存放系统数据的系统区)中。此外,存储器管理电路702具有微处理器单元(未示出)、只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有开机码(bootcode),并且当存储器控制电路单元404被使能时,微处理器单元会先执行此开机码来将存储于可复写式非易失性存储器模块406中的控制指令载入至存储器管理电路702的随机存取存储器中。之后,微处理器单元会运行此些控制指令以进行数据的写入、读取与删除等运作。
此外,在另一实施例中,存储器管理电路702的控制指令也可以一硬件形式来制作。例如,存储器管理电路702包括微控制器、存储器管理单元、存储器写入单元、存储器读取单元、存储器删除单元与数据处理单元。存储器管理单元、存储器写入单元、存储器读取单元、存储器删除单元与数据处理单元是耦接至微控制器。其中,存储器管理单元用以管理可复写式非易失性存储器模块406的物理删除单元;存储器写入单元用以对可复写式非易失性存储器模块406下达写入指令以将数据写入至可复写式非易失性存储器模块406中;存储器读取单元用以对可复写式非易失性存储器模块406下达读取指令以从可复写式非易失性存储器模块406中读取数据;存储器删除单元用以对可复写式非易失性存储器模块406下达删除指令以将数据从可复写式非易失性存储器模块406中删除;而数据处理单元用以处理欲写入至可复写式非易失性存储器模块406的数据以及从可复写式非易失性存储器模块406中读取的数据。
主机接口704是耦接至存储器管理电路702并且用以接收与识别主机系统11所传送的指令与数据。也就是说,主机系统11所传送的指令与数据会通过主机接口704来传送至存储器管理电路702。在本实施例中,主机接口704是相容于SATA标准。然而,必须了解的是本发明不限于此,主机接口704也可以是相容于PATA标准、IEEE1394标准、PCIExpress标准、USB标准、SD标准、UHS-I标准、UHS-II标准、MS标准、MMC标准、eMMC标准、UFS标准、CF标准、IDE标准或其他适合的数据传输标准。
存储器接口706是耦接至存储器管理电路702并且用以存取可复写式非易失性存储器模块406。也就是说,欲写入至可复写式非易失性存储器模块406的数据会经由存储器接口706转换为可复写式非易失性存储器模块406所能接受的格式。具体来说,若存储器管理电路702要存取可复写式非易失性存储器模块406,存储器接口706会传送对应的指令序列。这些指令序列可包括一或多个信号,或是在总线上的数据。例如,在读取指令序列中,会包括读取的识别码、存储器地址等数据。
错误检查与校正电路708是耦接至存储器管理电路702并且用以执行错误检查与校正程序以确保数据的正确性。具体来说,当存储器管理电路702从主机系统11中接收到写入指令时,错误检查与校正电路708会为对应此写入指令的数据产生对应的错误更正码(errorcorrectingcode,简称ECC)及/或错误检查码(errordetectingcode,简称EDC),并且存储器管理电路702会将对应此写入指令的数据与对应的错误更正码或错误检查码写入至可复写式非易失性存储器模块406中。之后,当存储器管理电路702从可复写式非易失性存储器模块406中读取数据时会同时读取此数据对应的错误更正码或错误检查码,并且错误检查与校正电路708会依据此错误更正码或错误检查码对所读取的数据执行错误检查与校正程序。
在一实施例中,存储器控制电路单元404还包括缓冲存储器710与电源管理电路712。缓冲存储器710是耦接至存储器管理电路702并且用以暂存来自于主机系统11的数据与指令或来自于可复写式非易失性存储器模块406的数据。电源管理电路712是耦接至存储器管理电路702并且用以控制存储器存储装置10的电源。
可复写式非易失性存储器模块406的存储单元会构成多个物理编程单元,并且此些物理编程单元会构成多个物理删除单元。具体来说,同一条字符线上的存储单元会组成一或多个物理编程单元。若每一个存储单元可存储2个以上的比特,则同一条字符线上的物理编程单元至少可被分类为下物理编程单元与上物理编程单元。例如,一存储单元的最低有效比特(LeastSignificantBit,简称LSB)是属于下物理编程单元,并且一存储单元的最高有效比特(MostSignificantBit,简称MSB)是属于上物理编程单元。一般来说,在MLCNAND型快闪存储器中,下物理编程单元的写入速度会大于上物理编程单元的写入速度,或下物理编程单元的可靠度是高于上物理编程单元的可靠度。在此实施例中,物理编程单元为编程的最小单元。即,物理编程单元为写入数据的最小单元。例如,物理编程单元为物理页面或是物理扇区(sector)。若物理编程单元为物理页面,则每一个物理编程单元通常包括数据比特区与冗余比特区。数据比特区包含多个物理扇区,用以存储使用者的数据,而冗余比特区用以存储系统的数据(例如,错误更正码)。在本实施例中,数据比特区包含32个物理扇区,且一个物理扇区的大小为512比特组(byte,B)。然而,在其他实施例中,数据比特区中也可包含8个、16个或数目更多或更少的物理扇区,本发明并不限制物理扇区的大小以及个数。另一方面,物理删除单元为删除的最小单位。也即,每一物理删除单元含有最小数目之一并被删除的存储单元。例如,物理删除单元为物理区块。
图8是根据本发明的一实施例所示出的可复写式非易失性存储器模块的示意图。
请参照图8,可复写式非易失性存储器模块406包括物理编程单元801(0)~801(D)。在一实施例中,一条字符线上的存储单元可以组成一或多个物理编程单元。例如,物理编程单元801(0)、物理编程单元801(0)~801(1)或者物理编程单元801(0)~801(2)可以是由可复写式非易失性存储器模块406中同一条字符线上的存储单元所组成。
可复写式非易失性存储器模块406中的每一个物理编程单元可以是以第一编程模式或第二编程模式来使用。例如,以第一编程模式或第二编程模式来使用一个物理编程单元是指以第一编程模式或第二编程模式来编程此物理编程单元。此外,以第一编程模式或第二编程模式来使用一个物理删除单元或者可复写式非易失性存储器模块406则是指以第一编程模式或第二编程模式来编程此物理删除单元或者可复写式非易失性存储器模块406中的一或多个物理编程单元。
第一编程模式也称为多层存储单元模式。若是以第一编程模式来使用可复写式非易失性存储器模块406,则每一个存储单元存储有一第一数量的比特数据,其中此第一数量不小于2。例如,此第一数量为2或3。第二编程模式包括单层存储单元模式(SLCmode)、下物理编程模式(lowerphysicalprogrammingunitprogrammingmode)、混合编程模式(mixtureprogrammingmode)及少层存储单元模式的至少其中之一。若是以单层存储单元模式来使用可复写式非易失性存储器模块406,则每一个存储单元只存储一个比特数据。若是以下物理编程模式来使用可复写式非易失性存储器模块406,则可复写式非易失性存储器模块406中只有属于下物理编程单元的物理编程单元会被编程,而下物理编程单元所对应的上物理编程单元可以不被编程。若是以混合编程模式来使用可复写式非易失性存储器模块406,则有效数据(或真实数据)会被编程至属于下物理编程单元的物理编程单元中,而不会被编程至属于上物理编程单元的物理编程单元中,但对应于有效数据(或真实数据)的无效数据(或虚拟数据)则会被编程至属于上物理编程单元的物理编程单元中。若是以少层存储单元模式来使用可复写式非易失性存储器模块406,则每一个存储单元存储有一第二数量的比特数据,其中此第二数量小于第一数量。例如,此第二数量为1或2。特别是,对于使用第二编程模式中的不同模式的多个物理编程单元来说,被编程的存储单元的临界电压分布可能会不相同。
图9是根据本发明的一实施例所示出的使用不同的第二编程模式来编程物理编程单元的存储单元的临界电压分布示意图。
请参照图9,若以第二编程模式中的下物理编程模式来编程一条字符线的多个存储单元,则此些存储单元的临界电压分布类似于分布810与820。其中,分布810例如是表示此字符线存储比特“0”的存储单元的个数,并且分布820例如是表示此字符线存储比特“1”的存储单元的个数。另一方面,若以第二编程模式中的单层存储单元模式来编程另一条字符线的多个存储单元,则此些存储单元的临界电压分布类似于分布830与840。其中,分布830例如是表示此字符线存储比特“0”的存储单元的个数,并且分布840例如是表示此字符线存储比特“1”的存储单元的个数。相对于使用下物理编程模式,在使用单层存储单元模式的存储单元的临界电压分布中,对应于不同比特值的分布较为分开。例如,如图8所示,分布810与820较为靠近,分布830与840较为分开。
图10是根据本发明的一实施例所示出的管理可复写式非易失性存储器模块的示意图。必须了解的是,在此描述可复写式非易失性存储器模块406的物理删除单元的运作时,以“选择”、“分组”、“划分”、“关联”等词来操作物理删除单元是逻辑上的概念。也就是说,可复写式非易失性存储器模块的物理删除单元的实际位置并未变更,而是逻辑上对可复写式非易失性存储器模块的物理删除单元进行操作。
请参照图10,在本实施例中,存储器管理电路702会将可复写式非易失性存储器模块406的物理删除单元900(0)~900(C)逻辑地划分为多个区域,例如为第一存储区901、第二存储区902及系统区903。其中,每一个物理删除单元900(0)~900(C)包括多个物理编程单元。
第一存储区901与第二存储区902的物理删除单元是用以存储来自主机系统11的数据。第一存储区901与第二存储区902中会存储有效数据与无效数据。例如,当主机系统要删除一份有效数据时,被删除的数据可能还是存储在第二存储区902中,但会被标记为无效数据。没有存储有效数据的物理删除单元也被称为闲置(spare)物理删除单元。例如,被删除以后的物理删除单元便会成为闲置物理删除单元。若第一存储区901、第二存储区902或系统区903中有物理删除单元损坏时,第一存储区901或第二存储区902中的物理删除单元也可以用来替换损坏的物理删除单元。倘若第一存储区901及/或第二存储区902中没有可用的物理删除单元来替换损坏的物理删除单元时,则存储器管理电路702会将整个存储器存储装置10宣告为写入保护(writeprotect)状态,而无法再写入数据。此外,有存储有效数据的物理删除单元也被称为非闲置(non-spare)物理删除单元。
系统区903的物理删除单元是用以记录系统数据,其中此系统数据包括关于存储器芯片的制造商与型号、存储器芯片的物理删除单元数、每一物理删除单元的物理编程单元数等。
第一存储区901、第二存储区902及系统区903的物理删除单元的数量会依据不同的存储器规格而有所不同。此外,必须了解的是,在存储器存储装置10的运作中,物理删除单元关联至第一存储区901、第二存储区902与系统区903的分组关系会动态地变动。例如,当系统区903中的物理删除单元损坏而被第二存储区902的物理删除单元取代时,则原本在第二存储区902的物理删除单元会被关联至系统区903。
在本实施例中,第一存储区901用以暂存来自主机系统11的数据。例如,第一存储区901也可称为暂存区或缓冲区。当可复写式非易失性存储器模块406接收到来自存储器控制电路单元404的一笔数据时,此数据会先被暂存在第一存储区901的一或多个物理删除单元中。然后,暂存在第一存储区901中的数据会被复制到第二存储区902的一或多个物理删除单元中。在第一存储区901中的某一个物理删除单元中的数据都被复制到第二存储区902的物理删除单元之后,此第一存储区901中的物理删除单元会被删除。然而,在另一实施例中,存储器管理电路702可能不会配置第一存储区901,或者第一存储区901可能会被配置于缓冲存储器710中。
在本实施例中,第二编程模式仅使用于第一存储区901。例如,第一存储区901中的物理删除单元900(0)~900(A)皆是以第二编程模式来使用(例如,写入数据),而第二存储区902中的物理删除单元900(A+1)~900(B)则是以第一编程模式来使用(例如,写入数据)。由此,即使第二存储区902的数据写入速度较慢,数据也可以快速地先被暂存到第一存储区901中,从而提升整体的数据写入速度。在另一实施例中,第二编程模式仅使用于第二存储区902。例如,第一存储区901中的物理删除单元900(0)~900(A)皆是以第一编程模式来使用(例如,写入数据),而第二存储区902中的物理删除单元900(A+1)~900(B)则是以第二编程模式来使用(例如,写入数据)。此外,在另一实施例中,第二编程模式也可同时使用于第一存储区901与第二存储区902。或者,在另一实施例中,第一编程模式也可同时使用于第一存储区901与第二存储区902。第一编程模式与第二编程模式的其中之一也会使用于系统区903。此外,存储器管理电路702例如是根据一或多个逻辑-物理映射表(logicaltophysicalmappingtable)来执行对于存储器存储装置10的数据存取。
一般来说,第一存储区901中的物理删除单元900(0)~900(A)的使用程度(或称为损耗程度)相对于第二存储区902中的物理删除单元900(A+1)~900(B)的使用程度是较高的。例如,假设第一存储区901中的物理删除单元900(0)~900(A)都是以第二编程模式来使用(例如,1个存储单元存储1个比特)且第二存储区902中的物理删除单元900(A+1)~900(B)都是以第一编程模式来使用(例如,1个存储单元存储3个比特),则对于可写满第二存储区902中的一个物理删除单元(例如,物理删除单元900(0))的一笔数据来说,为了暂存此数据可能会使用到第一存储区901中的多个物理删除单元(例如,物理删除单元900(A+1)、900(A+2)及900(A+3))。
一个物理删除单元的使用程度与此物理删除单元的删除次数(erasingcount)、写入次数(writingcount)、读取次数(readcount)及数据存储时间(datastoringduration)的至少其中之一有关,且不限于此。例如,一个物理删除单元的使用程度也可能与物理删除单元所存储的数据类型、材质、环境温度等因素有关。在本实施例中,例如是以一个物理删除单元的删除次数来表示此物理删除单元的使用程度。然而,在另一实施例中,一个物理删除单元的使用程度也可以是以上述任一个与此物理删除单元的使用程度有关的参数来表示或者是对这些参数的至少其中之一进行逻辑运算来取得。此外,在一实施例中,第一存储区901中的每一个物理删除单元900(0)~900(A)的使用程度也可以是以物理删除单元900(0)~900(A)的使用程度的平均值、加权平均值或者中位数(median)等来表示。
若一个物理删除单元的使用程度越高,则此物理删除单元的可靠度(reliability)可能会下降并且此物理删除单元的比特错误率(biterrorrate,简称BER)可能会上升。特别是,在编程存储单元时,若是依序编程物理删除单元上的每一条字符线,则对于此物理删除单元中相邻的字符线的编程可能会彼此干扰。例如,可将此干扰称为单元对单元干扰(celltocellinterference)。特别是,对于一个使用程度很高的物理删除单元来说,编程时所产生的单元对单元干扰的严重程度可能会成为影响存储在此物理删除单元中的数据是否可以被成功的解码的关键。例如,假设存储在一个物理删除单元的一条字符线上的数据至少包括8个错误比特,则在加上单元对单元干扰之后,此数据所包括的错误比特可能会增加为至少13个。此时,若错误检查与校正电路708可更正的错误比特的数目是最多12个,则此数据中的错误比特可能无法被更正。反之,若可有效降低此单元对单元干扰,则即使此数据中还具有另外的4个错误比特(8+4=12),此数据仍然可以被错误检查与校正电路708成功地解码。或者,即使单元对单元干扰与某一笔数据可否被正确地解码无关,降低一个物理删除单元中的单元对单元干扰也可降低此物理删除单元的比特错误率。
在本实施例中,存储器管理电路702会接收来自主机系统11的一或多个写入指令(也称为第一写入指令)。其中,此一或多个写入指令指示将一或多笔数据(统称为第一数据)写入至可复写式非易失性存储器模块406。第一数据可以包括连续数据及/或不连续数据。连续数据可以是属于来自主机系统11的同一个写入指令,而不连续数据可以是属于来自主机系统11的多个写入指令,本发明不加以限制。根据此第一写入指令,存储器管理电路702会从第一存储区901中选择一个物理删除单元(也称为第一物理删除单元)并且发送一跳跃写入指令序列(也称为第一跳跃写入指令序列)至可复写式非易失性存储器模块406。此第一跳跃写入指令序列包括一或多个指令码或程序代码。此第一跳跃写入指令序列会指示可复写式非易失性存储器模块406执行一跳跃编程程序(也称为第一跳跃编程程序)。在第一跳跃编程程序中,根据第一数据,第一物理删除单元的多条字符线的其中之一(也称为第一字符线)会先被编程;然后,第一物理删除单元中与第一字符线相邻的字符线(也称为第二字符线)会被跳过,并且根据第一数据,第一物理删除单元中与第一字符线不相邻的另一字符线(也称为第三字符线)会被编程,以此类推。也就是说,在第一跳跃编程程序中,可复写式非易失性存储器模块406会以跳过彼此相邻的字符线的方式来编程所选择的第一物理删除单元。由此,可有效降低第一物理删除单元中的单元对单元干扰。
图11是根据本发明的一实施例所示出的编程的示意图。在以下的实施例中,已经被编程的字符线会以斜线来表示。
请参照图11,假设物理删除单元900(0)被选择且物理删除单元900(0)包括字符线906(0)~906(M)。字符线906(0)~906(M)依序排列并且编号相差“1”的字符线彼此相邻。例如,字符线906(0)与字符线906(1)相邻,字符线906(1)与字符线906(2)相邻,字符线906(3)与字符线906(2)相邻,以此类推。在第一跳跃编程程序中,字符线906(0)~906(M)中彼此不相邻的多条字符线会被编程以存储第一数据。被编程的字符线的数目视第一数据的数据大小而定。例如,在本实施例中,若暂存第一数据需要使用到(M+1)/2条字符线且物理删除单元900(0)已先被删除,则字符线906(0)会先被编程;然后,跳过与字符线906(0)相邻的字符线906(1),与字符线906(0)不相邻的字符线906(2)会接续被编程;然后,字符线906(3)、906(5)…906(M-2)及906(M)会依序地被跳过,并且字符线906(4)、906(6)…906(M-3)及906(M-1)会依序地被编程。也就是说,在本实施例中,第一数据的一部分(或第一数据中的一笔数据)会被编程至字符线906(0)上的存储单元,并且在跳过与字符线906(0)相邻的字符线906(1)之后,第一数据的另一部分(或第一数据中的另一笔数据)会被编程至字符线906(2)上的存储单元;然后,跳过字符线906(3),第一数据的其他部分(或第一数据中尚未被存储的数据)会被依序地编程至物理删除单元900(0)中彼此不相邻的字符线。
值得一提的是,在第一跳跃编程程序中,被编程的一或多条字符线可以是用以存储来自主机系统11的同一个或不同的写入指令所对应的数据。例如,在一实施例中,若主机系统11只发送一个写入指令,则在对应的第一跳跃编程程序中,可能只有第一字符线被编程即足以存储对应此写入指令的数据;或者,多条字符线也可能被编程以完整地存储对应此写入指令的数据。然而,在另一实施例中,若主机系统11接续发送了一或多个写入指令,则在对应的第一跳跃编程程序中,此一或多个写入指令所对应的数据会被尝试编程至第一字符线,并且在第一字符线上的存储单元被写满之后,其他彼此不相邻的字符线也会被编程以存储尚未被写入的数据。;
从另一角度来看,在图11的实施例中,假设先被编程的是字符线906(0)~906(M)中的第N条字符线,则在此第N条字符线被编程之后,字符线906(0)~906(M)中的第N+1条字符线会被跳过并且字符线906(0)~906(M)中的第N+2条字符线会被编程;在字符线906(0)~906(M)中的第N+2条字符线被编程之后,字符线906(0)~906(M)中的第N+3条字符线会被跳过并且字符线906(0)~906(M)中的第N+4条字符线会被编程,以此类推。
值得一提的是,图11的实施例是假设第一数据的数据大小等于或小于(M+1)/2条字符线上的存储单元的总存储空间的大小,然而,在另一实施例中,第一数据的数据大小也可以是更大或更小。例如,在图11的另一实施例中,若第一数据只需要3条字符线上的存储单元就足以存储,则在第一跳跃编程程序中可能只有3条彼此不相邻的字符线会被编程。其中,此3条彼此不相邻的字符线可以是依照预设规则来选择的(例如,字符线906(0)、906(2)及906(4))或者是随机选择的(例如,字符线906(0)、906(4)及906(32))。此外,第一跳跃编程程序也可能不是从字符线906(0)开始编程。例如,在图11的另一实施例中,也可以是从字符线906(2)开始编程,并且依序编程字符线906(4)与字符线906(6)。或者,在图11的另一实施例中,也可以是跳过字符线906(0)而从字符线906(1)开始编程,依序跳过字符线906(2)与字符线906(4),并且依序编程字符线906(3)与字符线906(5)等等。
在本实施例中,存储器管理电路702还会判断第一数据的数据大小是否超过第一物理删除单元的可用大小。在一实施例中,第一物理删除单元的可用大小是等于第一物理删除单元的一总存储空间的大小的1/P,其中P是大于1的整数。例如,若在写入第一数据之前第一物理删除单元已先被删除且预设是以相同或相似于图11的实施例的跳跃规则来编程第一物理删除单元,则此第一物理删除单元的可用大小等于第一物理删除单元的总存储空间的大小的1/2(即,P=2)。此外,在图11的另一实施例中,若在写入第一数据之前字符线906(0)、906(2)及906(4)已被编程且物理删除单元900(0)没有被删除,则在此情况下,对于第一数据的编程可以从字符线906(6)开始并且此第一物理删除单元的可用大小是字符线906(0)~906(M)中除了字符线906(0)、906(2)及906(4)以外预设可用的字符线(即,字符线906(6)、906(8)…906(M-3)及906(M-1)等)上的存储单元的总存储空间。也就是说,此时第一物理删除单元的可用大小是小于第一物理删除单元的总存储空间的大小的1/P。
若第一数据的数据大小不超过第一物理删除单元的可用大小,存储器管理电路702不需要选择额外的物理删除单元来协助存储第一数据。若第一数据的数据大小超过第一物理删除单元的可用大小,则存储器管理电路702会从第一存储区901中选择额外的一或多个物理删除单元(也称为第二物理删除单元)。第二物理删除单元的数目视欲存储的数据的大小而定。由此,在第一跳跃编程程序中,可复写式非易失性存储器模块406会以跳过彼此相邻的字符线的方式来编程所选择的第一物理删除单元与第二物理删除单元。例如,在第一跳跃编程程序中,第一数据的另一部分(或第一数据中的另一笔数据)会被编程至第二物理删除单元的多条字符线的其中之一(也称为第四字符线);在第四字符线被编程之后,第二物理删除单元中与第四字符线相邻的字符线(也称为第五字符线)会被跳过,并且第一数据的另一部分(或第一数据中的另一笔数据)会被编程至第二物理删除单元中不与第四字符线相邻的另一字符线(也称为第六字符线),以此类推。
图12是根据本发明的一实施例所示出的编程的示意图。
请参照图12,假设物理删除单元900(0)~900(5)已被删除、第一数据的数据大小大于物理删除单元900(0)的可用大小且第一数据的数据大小等于或小于6个物理删除单元的可用大小的总和,则存储器管理电路702可从第一存储区901中选择物理删除单元900(0)~900(5)。由此,在第一跳跃编程程序中,物理删除单元900(0)~900(5)会被编程以完整地存储第一数据。例如,假设每一个物理删除单元900(0)~900(5)被编程的方式皆相同或相似于图11的实施例,在此以物理删除单元900(1)作为示例。例如,在字符线906(M-1)被编程之后,第一数据中尚未被存储的部分会被编程至字符线1006(0);然后,与字符线1006(0)相邻的字符线1006(1)会被跳过,并且第一数据中尚未被存储的部分会被编程至不与字符线1006(0)相邻的字符线1006(2),以此类推;物理删除单元900(0)~900(5)中彼此不相邻的字符线会依序地被编程,直到第一数据被完整地存储为止。
此外,在一实施例中,不同的物理删除单元及/或不同的存储器平面(plane)中的字符线也可以被同时地编程。例如,假设物理删除单元900(0)~900(5)是从不同的存储器平面选出,第一数据会同时被编程至字符线906(0)、字符线1006(0)、字符线1106(0)、字符线1206(0)、字符线1306(0)及字符线1406(0);然后,与字符线906(0)、字符线1006(0)、字符线1106(0)、字符线1206(0)、字符线1306(0)及字符线1406(0)相邻的字符线906(1)、字符线1006(1)、字符线1106(1)、字符线1206(1)、字符线1306(1)及字符线1406(1)会被跳过,并且第一数据中尚未被存储的部分会被编程至不与字符线906(0)、字符线1006(0)、字符线1106(0)、字符线1206(0)、字符线1306(0)及字符线1406(0)相邻的字符线906(2)、字符线1006(2)、字符线1106(2)、字符线1206(2)、字符线1306(2)及字符线1406(2),以此类推。此外,若第一数据的数据大小是更大或更小,则更多或更少的物理删除单元可以被选择来存储第一数据。此外,在图12的另一范例实施例中,对应于不同的物理删除单元的跳跃规则也可能不同。例如,根据第一数据,物理删除单元900(0)的奇数条字符线会被编程,而物理删除单元900(1)的偶数条字符线会被编程等等。
在将第一数据存储至从第一存储区901中选择的一或多个物理删除单元之后,存储在第一存储区901的第一数据会被复制到第二存储区902中的一或多个物理删除单元。例如,在图12的实施例中,假设物理删除单元900(0)~900(5)都是以第二编程模式来使用(例如,1个存储单元存储1个比特)且物理删除单元900(A+1)是以第一编程模式来使用(例如,1个存储单元存储3个比特),则存储在物理删除单元900(0)~900(5)中的第一数据可被复制到物理删除单元900(A+1)中。其中,物理删除单元900(A+1)也称为第四物理删除单元。由此,相对于传统的作法,复制到物理删除单元900(A+1)的第一数据中因单元对单元干扰所产生的错误可被减少。在将第一数据完整地从第一存储区901复制到第二存储区902之后,第一存储区901中用来暂存第一数据的物理删除单元会被删除。
在一实施例中,在接收到上述第一写入指令之后,存储器管理电路702还可接收来自主机系统11的另一或多个写入指令(也称为第二写入指令)。其中,此第二写入指令指示将一第二数据写入至可复写式非易失性存储器模块406。类似于第一数据,第二数据也可以包括连续数据及/或不连续数据,在此便不赘述。根据此第二写入指令,存储器管理电路702会从第一存储区901中选择一或多个物理删除单元并且发送另一跳跃写入指令序列(也称为第二跳跃写入指令序列)至可复写式非易失性存储器模块406。此第二跳跃写入指令序列包括一或多个指令码或程序代码。此第二跳跃写入指令序列会指示可复写式非易失性存储器模块406执行另一跳跃编程程序(也称为第二跳跃编程程序)。
在本实施例中,根据此第二写入指令,存储器管理电路702可以从第一存储区901中任意选择可用的物理删除单元(也称为第三物理删除单元)来存储第二数据。第二数据的存储方式可参考上述关于第一数据的存储方式。其中,第三物理删除单元可以包括上述第一物理删除单元或者第一存储区901中其他的物理删除单元。例如,在将第一物理删除单元删除之后,根据此第二写入指令,存储器管理电路702可再次从第一存储区901中选择上述第一物理删除单元来暂存第二数据。若存储器管理电路702选择第一物理删除单元来暂存第二数据,则在第二跳跃编程程序中,可复写式非易失性存储器模块406会选择编程第一物理删除单元中在前一次的跳跃编程程序中没有被编程的字符线。例如,在一范例实施例中,在接收到此第二写入指令之后,存储器管理电路702会判断第一跳跃编程程序是使用第一跳跃规则或第二跳跃规则并且根据第一跳跃编程程序是使用第一跳跃规则或第二跳跃规则来发送第二跳跃编程指令序列。第一跳跃规则与第二跳跃规则例如是以被编程的字符线属于偶数条的字符线或奇数条的字符线来区别。例如,在图11与图12的范例实施例中,由于被编程的字符线都是属于偶数条的字符线(例如,字符线906(0)、906(2)、906(4)…906(M-3)、906(M-1)),因此表示图11与图12的范例实施例中第一跳跃编程程序是使用第一跳跃规则,并且此时存储器管理电路702会指示根据第二跳跃规则来将第二数据编程至第一物理删除单元中属于奇数条的字符线(例如,字符线906(1)、906(3)、906(5)…906(M-2)、906(M))。或者,在另一实施例中,若前一次对于第一物理删除单元的跳跃编程程序是编程属于奇数条的字符线,则表示前一次对于第一物理删除单元的跳跃编程程序是使用第二跳跃规则,因此在下一次对于第一物理删除单元的跳跃编程程序中,存储器管理电路702会指示根据第一跳跃规则来将第二数据编程至第一物理删除单元中属于偶数条的字符线。此外,在另一实施例中,存储器管理电路702也可以任意地使用第一跳跃规则或第二跳跃规则来编程第一物理删除单元并且可以不执行上述判断第一跳跃编程程序是使用第一跳跃规则或第二跳跃规则的操作。例如,对于同一个物理删除单元的连续两次跳跃编程程序都是使用相同的跳跃规则(例如,第一跳跃规则)。或者,在另一实施例中,第一跳跃规则与第二跳跃规则也可以是依据任意的字符线选择规则来进行设定。
图13是根据本发明的一实施例所示出的编程的示意图。
请参照图13,接续于图11或图12的实施例,在物理删除单元900(0)被删除之后,若物理删除单元900(0)被选择来暂存第二数据且暂存第二数据需要使用到(M+1)/2条字符线,则在第二跳跃编程程序中,字符线906(0)~906(M)中彼此不相邻的多条字符线会被编程以存储第二数据。例如,根据第二跳跃规则,字符线906(0)会被跳过,并且字符线906(1)会被编程;然后,字符线906(2)会被跳过,并且字符线906(3)会被编程;然后,字符线906(4)、906(6)…906(M-3)及906(M-1)会依序地被跳过,并且字符线906(5)、906(7)…906(M-2)及906(M)会依序地被编程。在另一实施例中,因第二数据的数据大小太大而需要以第一存储区901中的多个物理删除单元来存储第二数据的操作可参照图12的实施例类推即可得知。例如,在图12的另一实施例中,在将物理删除单元900(0)~900(5)删除之后,可根据第二数据来编程物理删除单元900(0)~900(5)中在第一跳跃编程程序中没有被编程且彼此不相邻的字符线(即,图12中没有斜线的区域)。然后,暂存于第一存储区901中的第二数据会被复制到第二存储区902中的一或多个物理删除单元。此外,在本实施例中,字符线906(3)可称为第七字符线。
值得一提的是,虽然上述实施例是以第一物理删除单元作为第三物理删除单元的示例,然而,在另一实施例中,也可以选择其他的物理删除单元作为第三物理删除单元,并且可依照图13的实施例所介绍的方式来将第二数据写入至第三物理删除单元。也就是说,在图13的另一实施例中,假设字符线906(0)~906(M)是任意的第三物理删除单元的多条字符线,则在第二跳跃编程程序中,可根据第二数据来编程彼此不相邻的字符线(例如,字符线906(1)、906(3)、906(5)…906(M-3)及906(M-1)),并且与已被编程的字符线相邻的字符线(例如,字符线906(0)、906(2)、906(4)…906(M-2)及906(M))会被跳过。
在图11至图13的实施例中,在一个物理删除单元中,连续被编程且彼此不相邻的两条字符线中间是存在一条被跳过的字符线。然而,在另一实施例中,更多被跳过的字符线也可以存在连续被编程的两条彼此不相邻的字符线中间。也即,上述第二字符线及/或第五字符线的数目可以是大于1。
图14是根据本发明的一实施例所示出的编程的示意图,图15是根据本发明的一实施例所示出的编程的示意图。
请参照图14,在执行第一跳跃编程程序时,字符线906(0)会被编程;然后,字符线906(1)~906(3)会被跳过且字符线906(4)会被编程;然后,字符线906(5)~906(7)会被跳过且字符线906(8)会被编程,以此类推。请参照图15,在将物理删除单元900(0)删除之后,在执行第二跳跃编程程序时,字符线906(0)会被跳过且字符线906(1)会被编程;然后,字符线906(2)~906(4)会被跳过且字符线906(5)会被编程;然后,字符线906(6)~906(8)会被跳过且字符线906(9)会被编程,以此类推。然而,本发明并不以此为限,在另一实施例中,连续被编程的两条彼此不相邻的字符线之间,也可以存在2条、4条或者更多的字符线。
在上述实施例中,预设都是以跳跃编程程序来编程第一存储区901中的每一个物理删除单元900(0)~900(A)的字符线。然而,在另一实施例中,也可以是在特定的条件被达成时,才会改为使用跳跃编程程序来编程某一个或多个物理删除单元的字符线。例如,存储器管理电路702会判断可复写式非易失性存储器模块406的状态(也称为目前状态)是否符合一或多个条件(也称为第一条件)。若可复写式非易失性存储器模块406的目前状态符合此第一条件,存储器管理电路702会发送上述第一跳跃写入指令序列或第二跳跃写入指令序列。若可复写式非易失性存储器模块406的目前状态不符合第一条件,存储器管理电路702则是会发送一正常写入指令序列。其中此正常写入指令序列指示可复写式非易失性存储器模块406执行正常编程程序。在正常编程程序中,相邻的字符线可被编程来存储数据。例如,在图11的另一实施例中,若可复写式非易失性存储器模块406是执行正常编程程序,则根据第一数据,字符线906(0)会先被编程;在字符线906(0)被编程之后,字符线906(1)会被编程;在字符线906(1)被编程之后,字符线906(2)也可被编程,以此类推。也就是说,在正常编程程序中,若一个物理删除单元的所有或部分彼此相邻的字符线都是可用的,则此些字符线的任一都不会被跳过。此外,上述判断可复写式非易失性存储器模块406的目前状态是否符合第一条件的操作可以是在接收到写入指令(例如,第一写入指令或第二写入指令)之后即时地执行。或者,上述判断可复写式非易失性存储器模块406的目前状态是否符合第一条件的操作也可以是指查询一查找表。例如,在一实施例中,判断可复写式非易失性存储器模块406的目前状态是否符合第一条件的操作可以是预先执行并且将判断结果记录于一查找表中。由此,在接收到写入指令(例如,第一写入指令或第二写入指令)之后,可即时根据此查找表得知此判断结果。
在一实施例中,存储器管理电路702可判断第一物理删除单元的使用程度是否达到预设程度。关于如何评估一个物理删除单元的使用程度已详述于上,在此不重复赘述。若第一物理删除单元的使用程度已达到预设程度,例如,第一物理删除单元的删除次数达到2万次,则存储器管理电路702可判定可复写式非易失性存储器模块406的目前状态符合第一条件。若该第一物理删除单元的使用程度没有达到此预设程度,例如,第一物理删除单元的删除次数没有达到2万次,则存储器管理电路702可判定可复写式非易失性存储器模块406的目前状态不符合此第一条件。此外,在一实施例中,存储器管理电路702可统计第一物理删除单元中属于特定类型的错误的数目。若第一物理删除单元中属于特定类型的错误超过一预设数目,也可判定为第一物理删除单元的使用程度已达到预设程度。例如,此属于特定类型的错误包括一高信任度错误(highreliabilityerror)。此高信任度错误的特征在于其对应的对数可能性比值(LogLikelihoodRatio,简称LLR)的值(或绝对值)通常超过一预设值。此外,存储器管理电路702也可以在第一物理删除单元中的错误超过另一预设数目之后判定第一物理删除单元的使用程度已达到预设程度。
在一实施例中,存储器管理电路702可以判断存储器存储装置10或可复写式非易失性存储器模块406是否已经经过一高温工序。在高温工序中,存储单元的存储状态可能会改变。例如,此高温工序可以是指过锡炉。特别是,对于嵌入式多媒体卡的制程来说,此高温工序更为重要。若存储器存储装置10或可复写式非易失性存储器模块406已经经过此高温工序,存储器管理电路702可判定可复写式非易失性存储器模块406的目前状态符合第一条件。若存储器存储装置10或可复写式非易失性存储器模块406尚未经过此高温工序,存储器管理电路702可判定可复写式非易失性存储器模块406的目前状态不符合此第一条件。此外,在另一实施例中,上述高温工序也可以包括存储器存储装置10或可复写式非易失性存储器模块406的其他制程阶段或以存储器存储装置10或可复写式非易失性存储器模块406的任一制程阶段取代。
在一实施例中,存储器管理电路702可以判断第一存储区901的总可用大小是否小于一或多个写入指令所指示需要写入至可复写式非易失性存储器模块406的数据的数据大小。在本实施例中,第一存储区901的总可用大小等于第一存储区901的一总存储空间的大小的1/P。其中,P是大于1的正整数,并且P的值与所使用的跳跃规则有关。例如,在图11至图13的实施例中,每一次被跳过的字符线的数目是“1”,因此P的值是2。也就是说,在图11至图13的实施例中,以物理删除单元900(0)为例,由于物理删除单元900(0)中可以被编程的存储单元只剩下物理删除单元900(0)中所有的存储单元的一半。因此,若是依照图11或图12的范实施例所使用的跳跃规则来编程第一存储区901中的每一个物理删除单元900(0)~900(A),则每一次暂存在第一存储区901中的数据的数据大小不能超过第一存储区901的总存储空间的大小的1/2。此外,在图14与图15的实施例中,每一次被跳过的字符线的数目是“3”,因此P的值是4。也就是说,若是以图14与图15的实施例所使用的跳跃规则来编程第一存储区901中的每一个物理删除单元900(0)~900(A),则每一次暂存在第一存储区901中的数据的数据大小不能超过第一存储区901的总存储空间的大小的1/4。若第一存储区901的总可用大小小于此一或多个写入指令所指示需要写入至可复写式非易失性存储器模块406的数据的数据大小,存储器管理电路702可判定可复写式非易失性存储器模块406的目前状态不符合第一条件。若第一存储区901的总可用大小不小于此一或多个写入指令所指示需要写入至可复写式非易失性存储器模块406的数据的数据大小,则存储器管理电路702可判定可复写式非易失性存储器模块406的目前状态符合此第一条件。此外,在另一实施例中,在写入目前的数据之前若第一存储区901中已经有存储其他数据,则第一存储区901的总可用大小会小于第一存储区901的总存储空间的大小的1/P。
此外,上述各种用以判断可复写式非易失性存储器模块406的目前状态是否符合各种第一条件的判断操作可以选择两个合并使用、全部合并使用或者单独使用。例如,在一实施例中,只有在判定第一物理删除单元的使用程度已达到预设程度、存储器存储装置10或可复写式非易失性存储器模块406已经经过高温工序且第一存储区901的总可用大小不小于写入指令所指示需要写入至可复写式非易失性存储器模块406的数据的数据大小之后,存储器管理电路702才会判定可复写式非易失性存储器模块406的目前状态符合第一条件并且发送跳跃写入指令序列。
值得一提的是,虽然上述各实施例都是以第一存储区901中的物理删除单元作为执行跳跃编程程序的示例,然而,在另一实施例中,第二存储区902及/或系统区903中的一或多个物理删除单元也可以被执行上述跳跃编程程序。或者,上述各实施例中提及的操作也可以被应用于对于第二存储区902及/或系统区903的编程操作。此外,在一实施例中,所执行的跳跃编程程序中所跳过的字符线的选择与来自主机系统11的写入指令无关。例如,对于需要跳过或需要被编程的字符线的选择可能只与前一次执行的跳跃编程程序有关。此外,在一实施例中,上述跳跃编程程序与正常编程程序是由可复写式非易失性存储器模块406中的控制电路(例如,图5中的控制电路512)执行。
图16是根据本发明的一实施例所示出的编程方法的流程图。
请参照图16,在步骤S1601中,接收第一写入指令。在步骤S1602中,根据第一写入指令从多个物理删除单元中选择第一物理删除单元并且发送第一跳跃写入指令序列,其中,第一跳跃写入指令序列指示执行第一跳跃编程程序。
图17是根据本发明的一实施例所示出的编程方法的流程图。
请参照图17,在步骤S1701中,接收第一写入指令。在步骤S1702中,根据第一写入指令从多个物理删除单元中选择第一物理删除单元并且发送第一跳跃写入指令序列,其中,第一跳跃写入指令序列指示执行第一跳跃编程程序。在步骤S1703中,接收第二写入指令。在步骤S1704中,根据第二写入指令选择第三物理删除单元。此第三物理删除单元可以是与第一物理删除单元相同的物理删除单元也可以是与第一物理删除单元不相同的物理删除单元。在步骤S1705中,判断对于第三物理删除单元的第一跳跃写入指令序列是使用第一跳跃规则或第二跳跃规则。若对于第三物理删除单元的第一跳跃写入指令序列是使用第一跳跃规则,则在步骤S1706中,发送第二跳跃写入指令序列,其中第二跳跃写入指令序列指示根据第二跳跃规则执行第二跳跃编程程序。若对于第三物理删除单元的第一跳跃写入指令序列是使用第二跳跃规则,则在步骤S1707中,发送第二跳跃写入指令序列,其中第二跳跃写入指令序列指示根据第一跳跃规则执行第二跳跃编程程序。
图18是根据本发明的一实施例所示出的编程方法的流程图。
请参照图18,在步骤S1801中,接收第一写入指令。在步骤S1802中,根据第一写入指令从多个物理删除单元中选择第一物理删除单元。在步骤S1803中,判断第一物理删除单元的使用程度是否达到预设程度。若第一物理删除单元的使用程度已达到预设程度,在步骤S1804中,根据第一写入指令发送第一跳跃写入指令序列,其中,第一跳跃写入指令序列指示执行第一跳跃编程程序。若第一物理删除单元的使用程度尚未达到预设程度,在步骤S1805中,根据第一写入指令发送正常写入指令序列,其中,正常写入指令序列指示执行正常编程程序。
图19是根据本发明的一实施例所示出的编程方法的流程图。
请参照图19,在步骤S1901中,接收第一写入指令。在步骤S1902中,根据第一写入指令从多个物理删除单元中选择第一物理删除单元。在步骤S1903中,判断存储器存储装置或可复写式非易失性存储器模块是否已经经过高温工序。若存储器存储装置或可复写式非易失性存储器模块已经经过高温工序,在步骤S1904中,根据第一写入指令发送第一跳跃写入指令序列,其中,第一跳跃写入指令序列指示执行第一跳跃编程程序。若存储器存储装置或可复写式非易失性存储器模块尚未经过高温工序,在步骤S1905中,根据第一写入指令发送正常写入指令序列,其中,正常写入指令序列指示执行正常编程程序。
图20是根据本发明的一实施例所示出的编程方法的流程图。
请参照图20,在步骤S2001中,接收第一写入指令。在步骤S2002中,根据第一写入指令从多个物理删除单元中选择第一物理删除单元。在步骤S2003中,判断可复写式非易失性存储器模块的第一存储区的总可用大小是否小于第一写入指令所指示需要写入至可复写式非易失性存储器模块的数据的数据大小。若可复写式非易失性存储器模块的第一存储区的总可用大小不是小于第一写入指令所指示需要写入至可复写式非易失性存储器模块的数据的数据大小,在步骤S2004中,根据第一写入指令发送第一跳跃写入指令序列,其中,第一跳跃写入指令序列指示执行第一跳跃编程程序。若可复写式非易失性存储器模块的第一存储区的总可用大小是小于第一写入指令所指示需要写入至可复写式非易失性存储器模块的数据的数据大小,在步骤S2005中,根据第一写入指令发送正常写入指令序列,其中,正常写入指令序列指示执行正常编程程序。
图21是根据本发明的一实施例所示出的编程方法的流程图。
请参照图21,在步骤S2101中,接收第一写入指令。在步骤S2102中,根据第一写入指令从多个物理删除单元中选择第一物理删除单元。在步骤S2103中,判断可复写式非易失性存储器模块的目前状态是否符合第一条件。若可复写式非易失性存储器模块的目前状态符合第一条件,在步骤S2104中,根据第一写入指令发送第一跳跃写入指令序列,其中,第一跳跃写入指令序列指示执行第一跳跃编程程序。若可复写式非易失性存储器模块的目前状态不符合第一条件,在步骤S2105中,根据第一写入指令发送正常写入指令序列,其中,正常写入指令序列指示执行正常编程程序。在步骤S2106中,接收第二写入指令。在步骤S2107中,根据第二写入指令选择第三物理删除单元。此第三物理删除单元可以是与第一物理删除单元相同的物理删除单元也可以是与第一物理删除单元不相同的物理删除单元。在步骤S2108中,判断可复写式非易失性存储器模块的目前状态是否符合第一条件。若在步骤S2108中判定可复写式非易失性存储器模块的目前状态符合第一条件,则在步骤S2109中,判断对于第三物理删除单元的第一跳跃写入指令序列是使用第一跳跃规则或第二跳跃规则。若对于第三物理删除单元的第一跳跃写入指令序列是使用第一跳跃规则,则在步骤S2110中,发送第二跳跃写入指令序列,其中第二跳跃写入指令序列指示根据第二跳跃规则执行第二跳跃编程程序。若对于第三物理删除单元的第一跳跃写入指令序列是使用第二跳跃规则,则在步骤S2111中,发送第二跳跃写入指令序列,其中第二跳跃写入指令序列指示根据第一跳跃规则执行第二跳跃编程程序。若在步骤S2108中判定可复写式非易失性存储器模块的目前状态不符合第一条件,则在步骤S2112中,根据第二写入指令发送正常写入指令序列,其中,正常写入指令序列指示执行正常编程程序。
然而,图16至与图21中各步骤已详细说明如上,在此便不再赘述。值得注意的是,图16至与图21中各步骤可以制作为多个程序代码或是电路,本发明不加以限制。此外,图16至与图21的方法可以搭配以上实施例使用,也可以单独使用,本发明不加以限制。
综上所述,本发明一实施例提出的跳跃写入指令序列是用以指示执行跳跃编程程序。在跳跃编程程序中,相邻的字符线不会被用来存储数据。由此,可减少因编程相邻的字符线所产生的错误。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (32)
1.一种编程方法,其特征在于,用于一可复写式非易失性存储器模块,该可复写式非易失性存储器模块包括多个物理删除单元,该编程方法包括:
接收至少一第一写入指令;以及
根据该至少一第一写入指令从该些物理删除单元中选择一第一物理删除单元并且发送一第一跳跃写入指令序列,其中该第一跳跃写入指令序列指示执行一第一跳跃编程程序,
其中该第一跳跃编程程序包括:
根据对应于该至少一第一写入指令的一第一数据来编程该第一物理删除单元的多条字符线中的一第一字符线;以及
在该第一字符线被编程之后,跳过该第一物理删除单元的该些字符线中与该第一字符线相邻的至少一第二字符线而根据该第一数据来编程该第一物理删除单元的该些字符线中不与该第一字符线相邻的一第三字符线。
2.根据权利要求1所述的编程方法,其特征在于,该第一物理删除单元包括M+1条字符线,该第一字符线是该M+1条字符线中的第N条字符线,该至少一第二字符线是该M+1条字符线中的第N+1条字符线,并且该第三字符线是该M+1条字符线中的第N+2条字符线,其中M与N是正整数。
3.根据权利要求1所述的编程方法,其特征在于,还包括:
判断该第一数据的一数据大小是否超过该第一物理删除单元的一可用大小,其中该第一物理删除单元的该可用大小小于或等于该第一物理删除单元的一总存储空间的大小的1/P,且P是大于1的整数;以及
若该第一数据的该数据大小超过该第一物理删除单元的该可用大小,从该些物理删除单元中选择一第二物理删除单元,
其中该第一跳跃编程程序还包括:
根据该第一数据来编程该第二物理删除单元的该些字符线中的一第四字符线;以及
在该第四字符线被编程之后,跳过该第二物理删除单元的该些字符线中与该第四字符线相邻的至少一第五字符线而根据该第一数据来编程该第二物理删除单元的该些字符线中不与该第四字符线相邻的一第六字符线。
4.根据权利要求1所述的编程方法,其特征在于,还包括:
在接收到该至少一第一写入指令之后,接收至少一第二写入指令;
根据该至少一第二写入指令从该些物理删除单元中选择一第三物理删除单元并且发送一第二跳跃写入指令序列,其中该第二跳跃写入指令序列指示执行一第二跳跃编程程序,
其中该第二跳跃编程程序包括:
跳过该第三物理删除单元的该些字符线中的第一字符线而根据对应于该至少一第二写入指令的一第二数据来编程该第三物理删除单元的该些字符线中的第二字符线;以及
在该第二字符线被编程之后,跳过该第三物理删除单元的该些字符线中的第三字符线而根据该第二数据来编程该第三物理删除单元的该些字符线中不与被编程的该第二字符线相邻的一第七字符线。
5.根据权利要求1所述的编程方法,其特征在于,还包括:
判断该可复写式非易失性存储器模块的一目前状态是否符合至少一第一条件,其中该第一跳跃写入指令序列是在判定该可复写式非易失性存储器模块的该目前状态符合该至少一第一条件之后发送;以及
若该可复写式非易失性存储器模块的该目前状态不符合该第一条件,发送一正常写入指令序列,其中该正常写入指令序列指示执行一正常编程程序,
其中该正常编程程序包括:
根据该第一数据来编程该第一字符线;以及
在该第一字符线被编程之后,根据该第一数据来编程该至少一第二字符线。
6.根据权利要求5所述的编程方法,其特征在于,判断该可复写式非易失性存储器模块的该目前状态是否符合该至少一第一条件的步骤包括:
判断该第一物理删除单元的一使用程度是否达到一预设程度。
7.根据权利要求5所述的编程方法,其特征在于,判断该可复写式非易失性存储器模块的该目前状态是否符合该至少一第一条件的步骤包括:
判断该可复写式非易失性存储器模块是否已经经过一高温工序的处理。
8.根据权利要求5所述的编程方法,其特征在于,判断该可复写式非易失性存储器模块的该目前状态是否符合该至少一第一条件的步骤包括:
判断该可复写式非易失性存储器模块的一第一存储区的一总可用大小是否小于该第一数据的一数据大小,其中该第一存储区的该总可用空间的一大小小于或等于该第一存储区的一第一存储区的一总存储空间的大小的1/P,其中P为大于1的整数。
9.根据权利要求1或5所述的编程方法,其特征在于,还包括:
在接收到该至少一第一写入指令之后,接收至少一第二写入指令;
判断该第一跳跃编程程序是使用一第一跳跃规则或一第二跳跃规则;
若该第一跳跃编程程序是使用该第一跳跃规则,则指示在对应于该至少一第二写入指令的一第二跳跃编程程序中使用该第二跳跃规则;以及
若该第一跳跃编程程序是使用该第二跳跃规则,则指示在该第二跳跃编程程序中使用该第一跳跃规则。
10.根据权利要求9所述的编程方法,其特征在于,该可复写式非易失性存储器模块包括一第一存储区与一第二存储区,该第一跳跃编程程序或该第二跳跃编程程序仅使用于该第一存储区。
11.根据权利要求10所述的编程方法,其特征在于,还包括:
将存储于该第一物理删除单元中的该第一数据复制到该些物理删除单元中的一第四物理删除单元。
12.根据权利要求11所述的编程方法,其特征在于,该第一物理删除单元属于该第一存储区,该第四物理删除单元属于该第二存储区,该第一存储区使用一第二编程模式,并且该第二存储区使用一第一编程模式。
13.根据权利要求9所述的编程方法,其特征在于,该可复写式非易失性存储器模块包括一第一存储区与一第二存储区,该第一跳跃编程程序或该第二跳跃编程程序仅使用于该第二存储区。
14.一种存储器存储装置,其特征在于,包括:
一连接接口单元,用以耦接至一主机系统;
一可复写式非易失性存储器模块,包括多个物理删除单元;以及
一存储器控制电路单元,耦接至该连接接口单元与该可复写式非易失性存储器模块,
其中该存储器控制电路单元用以接收至少一第一写入指令;以及
其中该存储器控制电路单元还用以根据该至少一第一写入指令从该些物理删除单元中选择一第一物理删除单元并且发送一第一跳跃写入指令序列,其中该第一跳跃写入指令序列指示执行一第一跳跃编程程序,
其中该第一跳跃编程程序包括:
根据对应于该至少一第一写入指令的一第一数据来编程该第一物理删除单元的多条字符线中的一第一字符线;以及
在该第一字符线被编程之后,跳过该第一物理删除单元的该些字符线中与该第一字符线相邻的至少一第二字符线而根据该第一数据来编程该第一物理删除单元的该些字符线中不与该第一字符线相邻的一第三字符线。
15.根据权利要求14所述的存储器存储装置,其特征在于,该第一物理删除单元包括M+1条字符线,该第一字符线是该M+1条字符线中的第N条字符线,该至少一第二字符线是该M+1条字符线中的第N+1条字符线,并且该第三字符线是该M+1条字符线中的第N+2条字符线,其中M与N是正整数。
16.根据权利要求14所述的存储器存储装置,其特征在于,该存储器控制电路单元还用以判断该第一数据的一数据大小是否超过该第一物理删除单元的一可用大小,其中该第一物理删除单元的该可用大小小于或等于该第一物理删除单元的一总存储空间的大小的1/P,且P是大于1的整数,
其中若该第一数据的该数据大小超过该第一物理删除单元的该可用大小,该存储器控制电路单元还用以从该些物理删除单元中选择一第二物理删除单元,
其中该第一跳跃编程程序还包括:
根据该第一数据来编程该第二物理删除单元的该些字符线中的一第四字符线;以及
在该第四字符线被编程之后,跳过该第二物理删除单元的该些字符线中与该第四字符线相邻的至少一第五字符线而根据该第一数据来编程该第二物理删除单元的该些字符线中不与该第四字符线相邻的一第六字符线。
17.根据权利要求14所述的存储器存储装置,其特征在于,该存储器控制电路单元还用以在接收到该至少一第一写入指令之后,接收至少一第二写入指令,
其中该存储器控制电路单元还用以根据该至少一第二写入指令从该些物理删除单元中选择一第三物理删除单元并且发送一第二跳跃写入指令序列,其中该第二跳跃写入指令序列指示执行一第二跳跃编程程序,
其中该第二跳跃编程程序包括:
跳过该第三物理删除单元的该些字符线中的第一字符线而根据对应于该至少一第二写入指令的一第二数据来编程该第三物理删除单元的该些字符线中的第二字符线;以及
在该第二字符线被编程之后,跳过该第三物理删除单元的该些字符线中的第三字符线而根据该第二数据来编程该第三物理删除单元的该些字符线中不与被编程的该第二字符线相邻的一第七字符线。
18.根据权利要求14所述的存储器存储装置,其特征在于,该存储器控制电路单元还用以判断该可复写式非易失性存储器模块的一目前状态是否符合至少一第一条件,其中该第一跳跃写入指令序列是在判定该可复写式非易失性存储器模块的该目前状态符合该至少一第一条件之后发送,
其中若该可复写式非易失性存储器模块的该目前状态不符合该第一条件,该存储器控制电路单元还用以发送一正常写入指令序列,其中该正常写入指令序列指示执行一正常编程程序,
其中该正常编程程序包括:
根据该第一数据来编程该第一字符线;以及
在该第一字符线被编程之后,根据该第一数据来编程该至少一第二字符线。
19.根据权利要求18所述的存储器存储装置,其特征在于,该存储器控制电路单元判断该可复写式非易失性存储器模块的该目前状态是否符合该至少一第一条件的操作包括:
判断该第一物理删除单元的一使用程度是否达到一预设程度。
20.根据权利要求18所述的存储器存储装置,其特征在于,该存储器控制电路单元判断该可复写式非易失性存储器模块的该目前状态是否符合该至少一第一条件的操作包括:
判断该可复写式非易失性存储器模块是否已经经过一高温工序的处理。
21.根据权利要求18所述的存储器存储装置,其特征在于,该存储器控制电路单元判断该可复写式非易失性存储器模块的该目前状态是否符合该至少一第一条件的操作包括:
判断该可复写式非易失性存储器模块的一第一存储区的一总可用大小是否小于该第一数据的一数据大小,其中该第一存储区的该总可用空间的一大小小于或等于该第一存储区的一总存储空间的大小的1/P,其中P为大于1的整数。
22.根据权利要求14或18所述的存储器存储装置,其特征在于,该存储器控制电路单元还用以在接收到该至少一第一写入指令之后,接收至少一第二写入指令,
其中该存储器控制电路单元还用以判断该第一跳跃编程程序是使用一第一跳跃规则或一第二跳跃规则,
其中若该第一跳跃编程程序是使用该第一跳跃规则,则该存储器控制电路单元还用以指示在对应于该至少一第二写入指令的一第二跳跃编程程序中使用该第二跳跃规则,
其中若该第一跳跃编程程序是使用该第二跳跃规则,则该存储器控制电路单元还用以指示在该第二跳跃编程程序中使用该第一跳跃规则。
23.根据权利要求22所述的存储器存储装置,其特征在于,该可复写式非易失性存储器模块包括一第一存储区与一第二存储区,该第一跳跃编程程序或该第二跳跃编程程序仅使用于该第一存储区。
24.根据权利要求23所述的存储器存储装置,其特征在于,该存储器控制电路单元还用以将存储于该第一物理删除单元中的该第一数据复制到该些物理删除单元中的一第四物理删除单元。
25.根据权利要求24所述的存储器存储装置,其特征在于,该第一物理删除单元属于该第一存储区,该第四物理删除单元属于该第二存储区,该第一存储区使用一第二编程模式,并且该第二存储区使用一第一编程模式。
26.根据权利要求22所述的存储器存储装置,其特征在于,该可复写式非易失性存储器模块包括一第一存储区与一第二存储区,该第一跳跃编程程序或该第二跳跃编程程序仅使用于该第二存储区。
27.一种存储器控制电路单元,其特征在于,用于控制一可复写式非易失性存储器模块,其中该可复写式非易失性存储器模块包括多个物理删除单元,该存储器控制电路单元包括:
一主机接口,用以耦接至一主机系统;
一存储器接口,用以耦接至该可复写式非易失性存储器模块;以及
一存储器管理电路,耦接至该主机接口与该存储器接口,
其中该存储器管理电路用以接收至少一第一写入指令,
其中该存储器管理电路还用以根据该至少一第一写入指令从该些物理删除单元中选择一第一物理删除单元并且发送一第一跳跃写入指令序列,其中该第一跳跃写入指令序列指示执行一第一跳跃编程程序,
其中该第一跳跃编程程序包括:
根据对应于该至少一第一写入指令的一第一数据来编程该第一物理删除单元的多条字符线中的一第一字符线;以及
在该第一字符线被编程之后,跳过该第一物理删除单元的该些字符线中与该第一字符线相邻的至少一第二字符线而根据该第一数据来编程该第一物理删除单元的该些字符线中不与该第一字符线相邻的一第三字符线。
28.根据权利要求27所述的存储器控制电路单元,其特征在于,该存储器管理电路还用以在接收到该至少一第一写入指令之后,接收至少一第二写入指令,
其中该存储器管理电路还用以根据该至少一第二写入指令从该些物理删除单元中选择一第三物理删除单元并且发送一第二跳跃写入指令序列,其中该第二跳跃写入指令序列指示执行一第二跳跃编程程序,
其中该第二跳跃编程程序包括:
跳过该第三物理删除单元的该些字符线中的第一字符线而根据对应于该至少一第二写入指令的一第二数据来编程该第三物理删除单元的该些字符线中的第二字符线;以及
在该第二字符线被编程之后,跳过该第三物理删除单元的该些字符线中的第三字符线而根据该第二数据来编程该第三物理删除单元的该些字符线中不与被编程的该第二字符线相邻的一第七字符线。
29.根据权利要求27所述的存储器控制电路单元,其特征在于,该存储器管理电路还用以判断该可复写式非易失性存储器模块的一目前状态是否符合至少一第一条件,其中该第一跳跃写入指令序列是在判定该可复写式非易失性存储器模块的该目前状态符合该至少一第一条件之后发送,
其中若该可复写式非易失性存储器模块的该目前状态不符合该第一条件,该存储器管理电路还用以发送一正常写入指令序列,其中该正常写入指令序列指示执行一正常编程程序,
其中该正常编程程序包括:
根据该第一数据来编程该第一字符线;以及
在该第一字符线被编程之后,根据该第一数据来编程该至少一第二字符线。
30.根据权利要求27或29所述的存储器控制电路单元,其特征在于,该存储器管理电路还用以在接收到该至少一第一写入指令之后,接收至少一第二写入指令,
其中该存储器管理电路还用以判断该第一跳跃编程程序是使用一第一跳跃规则或一第二跳跃规则,
其中若该第一跳跃编程程序是使用该第一跳跃规则,则该存储器管理电路还用以指示在对应于该至少一第二写入指令的一第二跳跃编程程序中使用该第二跳跃规则,
其中若该第一跳跃编程程序是使用该第二跳跃规则,则该存储器管理电路还用以指示在该第二跳跃编程程序中使用该第一跳跃规则。
31.一种存储器存储装置,其特征在于,包括:
一连接接口单元,用以耦接至一主机系统;
一可复写式非易失性存储器模块,包括多个物理删除单元;以及
一存储器控制电路单元,耦接至该连接接口单元与该可复写式非易失性存储器模块,
其中该存储器控制电路单元使用该些物理删除单元中的一第一物理删除单元的多条字符线中的一第一字符线来存储一第一数据,
其中在使用该第一字符线之后,该存储器控制电路单元接续使用该第一物理删除单元的该些字符线中的一第三字符线来存储该第一数据,
其中该第一字符线与该第三字符线不相邻。
32.根据权利要求31所述的存储器存储装置,其特征在于,该第一字符线与该第三字符线之间包括被跳过的与该第一字符线相邻的至少一第二字符线。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410489706.9A CN105513635B (zh) | 2014-09-23 | 2014-09-23 | 编程方法、存储器存储装置及存储器控制电路单元 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410489706.9A CN105513635B (zh) | 2014-09-23 | 2014-09-23 | 编程方法、存储器存储装置及存储器控制电路单元 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105513635A true CN105513635A (zh) | 2016-04-20 |
CN105513635B CN105513635B (zh) | 2019-08-06 |
Family
ID=55721556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410489706.9A Active CN105513635B (zh) | 2014-09-23 | 2014-09-23 | 编程方法、存储器存储装置及存储器控制电路单元 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105513635B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766055A (zh) * | 2017-11-09 | 2019-05-17 | 深圳大心电子科技有限公司 | 存储器管理方法以及存储控制器 |
CN111724851A (zh) * | 2020-06-28 | 2020-09-29 | 群联电子股份有限公司 | 数据保护方法、存储器存储装置及存储器控制电路单元 |
CN113808645A (zh) * | 2020-05-29 | 2021-12-17 | 西部数据技术公司 | 减少邻近字线干扰的模糊精细程序序列的数据存储设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1674157A (zh) * | 2004-03-22 | 2005-09-28 | 松下电器产业株式会社 | 非易失性半导体存储器器件及其写方法 |
CN101206922A (zh) * | 2006-12-22 | 2008-06-25 | 三星电子株式会社 | 非易失性存储器及在非易失性存储器中编程的方法 |
CN101385089A (zh) * | 2005-12-29 | 2009-03-11 | 桑迪士克股份有限公司 | 用于非易失性存储器的基于行的交替读写 |
CN103035292A (zh) * | 2011-09-29 | 2013-04-10 | 爱思开海力士有限公司 | 半导体器件及其操作方法 |
TW201419284A (zh) * | 2012-11-09 | 2014-05-16 | Asolid Technology Co Ltd | 快閃記憶體及其存取方法 |
TW201430852A (zh) * | 2010-10-08 | 2014-08-01 | Phison Electronics Corp | 非揮發性記憶體儲存裝置、記憶體控制器與資料儲存方法 |
US20140241076A1 (en) * | 2013-02-25 | 2014-08-28 | Hyung-Shin Kwon | Semiconductor memory device, method of testing the same and method of operating the same |
-
2014
- 2014-09-23 CN CN201410489706.9A patent/CN105513635B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1674157A (zh) * | 2004-03-22 | 2005-09-28 | 松下电器产业株式会社 | 非易失性半导体存储器器件及其写方法 |
CN101385089A (zh) * | 2005-12-29 | 2009-03-11 | 桑迪士克股份有限公司 | 用于非易失性存储器的基于行的交替读写 |
CN101206922A (zh) * | 2006-12-22 | 2008-06-25 | 三星电子株式会社 | 非易失性存储器及在非易失性存储器中编程的方法 |
TW201430852A (zh) * | 2010-10-08 | 2014-08-01 | Phison Electronics Corp | 非揮發性記憶體儲存裝置、記憶體控制器與資料儲存方法 |
CN103035292A (zh) * | 2011-09-29 | 2013-04-10 | 爱思开海力士有限公司 | 半导体器件及其操作方法 |
TW201419284A (zh) * | 2012-11-09 | 2014-05-16 | Asolid Technology Co Ltd | 快閃記憶體及其存取方法 |
US20140241076A1 (en) * | 2013-02-25 | 2014-08-28 | Hyung-Shin Kwon | Semiconductor memory device, method of testing the same and method of operating the same |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766055A (zh) * | 2017-11-09 | 2019-05-17 | 深圳大心电子科技有限公司 | 存储器管理方法以及存储控制器 |
CN113808645A (zh) * | 2020-05-29 | 2021-12-17 | 西部数据技术公司 | 减少邻近字线干扰的模糊精细程序序列的数据存储设备 |
CN111724851A (zh) * | 2020-06-28 | 2020-09-29 | 群联电子股份有限公司 | 数据保护方法、存储器存储装置及存储器控制电路单元 |
CN111724851B (zh) * | 2020-06-28 | 2022-05-10 | 群联电子股份有限公司 | 数据保护方法、存储器存储装置及存储器控制电路单元 |
Also Published As
Publication number | Publication date |
---|---|
CN105513635B (zh) | 2019-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9442662B2 (en) | Device and method for managing die groups | |
US9514819B2 (en) | Programming method, memory storage device and memory controlling circuit unit | |
US9280460B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
TWI545572B (zh) | 記憶胞程式化方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN105005450A (zh) | 数据写入方法、存储器存储装置及存储器控制电路单元 | |
CN113168875A (zh) | 读取干扰扫描合并 | |
US9141530B2 (en) | Data writing method, memory controller and memory storage device | |
TWI451249B (zh) | 用於非揮發性記憶體的資料合併方法、控制器與儲存裝置 | |
CN104765569A (zh) | 数据写入方法、存储器控制电路单元与存储器储存装置 | |
US9383929B2 (en) | Data storing method and memory controller and memory storage device using the same | |
CN103871480A (zh) | 存储器修复方法、存储器控制器与存储器储存装置 | |
CN103699491A (zh) | 数据储存方法、存储器控制器与存储器储存装置 | |
US9430325B2 (en) | Method for programming data, memory storage device and memory control circuit unit | |
US8966344B2 (en) | Data protecting method, memory controller and memory storage device | |
CN103514103A (zh) | 数据保护方法、存储器控制器与存储器储存装置 | |
CN103593296A (zh) | 数据储存方法、存储器控制器与存储器储存装置 | |
CN103678162A (zh) | 系统数据储存方法、存储器控制器与存储器储存装置 | |
CN105513635A (zh) | 编程方法、存储器存储装置及存储器控制电路单元 | |
CN105224238A (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
CN104252317A (zh) | 数据写入方法、存储器控制器与存储器存储装置 | |
CN103513930A (zh) | 存储器管理方法、存储器控制器与存储器储存装置 | |
US9830077B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
CN104238956A (zh) | 数据写入方法、存储器控制器与存储器存储装置 | |
CN105573662B (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
CN103176910B (zh) | 用于非易失性存储器的数据合并方法、控制器与储存装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |