数据编程方法、存储器存储装置及存储器控制电路单元与流程

文档序号:11834686阅读:164来源:国知局
本发明是有关于一种存储器管理方法,尤其是涉及一种数据编程方法、存储器存储装置及存储器控制电路单元。
背景技术
::数码相机、移动电话与MP3播放器在这几年来的成长十分迅速,使得消费者对存储媒体的需求也急速增加。由于可复写式非易失性存储器模块(例如,存储器)具有数据非易失性、省电、体积小,以及无机械结构等特性,所以非常适合内建于上述所举例的各种便携式多媒体装置中。一般来说,若存储器模块中的某一个存储胞可用以存储两个以上的位,则对于此存储胞的编程操作可能会分为多次执行。每次执行的编程结果都可能会影响到后续执行的编程操作的正确性。因此,如何提升最终编程至存储胞中的数据的正确性为本领域技术人员所关心的议题。技术实现要素:本发明提供一种数据编程方法、存储器存储装置及存储器控制电路单元,可降低因编程过程中误判存储胞的数据存储状态而导致最终编程结果发生错误的机率。本发明的一实施例提供一种数据编程方法,其用于可复写式非易失性存储器模块,所述可复写式非易失性存储器模块包括多个实体擦除单元,所述实体擦除单元中的第一实体擦除单元包括多个下实体编程单元与对应于所述下实体编程单元的多个上实体编程单元,所述数据编程方法包括:接收第一数据并且将所述第一数据编程至所述下实体编程单元中的第一下实体编程单元;接收第二数据;执行对应于所述第一下实体编程单元的第一数据获取操作以获得第三数据,其中所述第一数据获取操作包括使用第二读取电压来读 取所述第一下实体编程单元,其中所述第二读取电压的电压值不同于对应于所述第一下实体编程单元的预设读取电压的预设电压值;以及根据所述第三数据来将所述第二数据编程至所述上实体编程单元中的第一上实体编程单元。在本发明的一实施例中,所述数据编程方法还包括:获得所述第一下实体编程单元的磨损程度值;以及根据所述磨损程度值将对应于所述第一下实体编程单元的所述预设读取电压调整为所述第二读取电压。在本发明的一实施例中,所述执行对应于所述第一下实体编程单元的所述第一数据获取操作的步骤还包括:译码使用所述第二读取电压所读取到的第四数据;判断所述第四数据是否译码失败;以及若所述第四数据译码失败,将所述第二读取电压调整为第三读取电压并使用所述第三读取电压来读取所述第一下实体编程单元。本发明的一实施例中,所述第一上实体编程单元与所述第一下实体编程单元属于同一条字符线。本发明的另一实施例提供一种存储器存储装置,其包括连接接口单元、可复写式非易失性存储器模块及存储器控制电路单元。所述连接接口单元用以电性连接至主机系统。所述可复写式非易失性存储器模块包括多个实体擦除单元,所述实体擦除单元中的第一实体擦除单元包括多个下实体编程单元与对应于所述下实体编程单元的多个上实体编程单元。所述存储器控制电路单元电性连接至所述连接接口单元与所述可复写式非易失性存储器模块,其中所述存储器控制电路单元用以接收第一数据并且发送第一写入指令序列以将所述第一数据编程至所述下实体编程单元中的第一下实体编程单元,其中所述存储器控制电路单元还用以接收第二数据,其中所述存储器控制电路单元还用以指示执行对应于所述第一下实体编程单元的第一数据获取操作以获得第三数据,其中所述第一数据获取操作包括使用第二读取电压来读取所述第一下实体编程单元,其中所述第二读取电压的电压值不同于对应于所述第一下实体编程单元的预设读取电压的预设电压值,其中所述存储器控制电路单元还用以根据所述第三数据来发送第二写入指令序列以将所述第二数据编程至所述上实体编程单元中的第一上实体编程单元。在本发明的一实施例中,所述存储器控制电路单元还用以获得所述第一 下实体编程单元的磨损程度值,其中所述存储器控制电路单元还用以根据所述磨损程度值来指示将对应于所述第一下实体编程单元的所述预设读取电压调整为所述第二读取电压。在本发明的一实施例中,所述第一数据获取操作还包括:译码使用所述第二读取电压所读取到的一第四数据;判断所述第四数据是否译码失败;以及若所述第四数据译码失败,指示将所述第二读取电压调整为第三读取电压并使用所述第三读取电压来读取所述第一下实体编程单元。在本发明的一实施例中,所述第一上实体编程单元与所述第一下实体编程单元属于同一条字符线。本发明的另一实施例提供一种存储器控制电路单元,其用于控制可复写式非易失性存储器模块,其中所述可复写式非易失性存储器模块包括多个实体擦除单元,所述实体擦除单元中的第一实体擦除单元包括多个下实体编程单元与对应于所述下实体编程单元的多个上实体编程单元,所述存储器控制电路单元包括主机接口、存储器接口及存储器管理电路。所述主机接口用以电性连接至主机系统。所述存储器接口用以电性连接至所述可复写式非易失性存储器模块。所述存储器管理电路电性连接至所述主机接口与所述存储器接口,其中所述存储器管理电路用以接收第一数据并且发送第一写入指令序列以将所述第一数据编程至所述下实体编程单元中的第一下实体编程单元,其中所述存储器管理电路还用以接收第二数据,其中所述存储器管理电路还用以指示执行对应于所述第一下实体编程单元的第一数据获取操作以获得第三数据,其中所述第一数据获取操作包括使用第二读取电压来读取所述第一下实体编程单元,其中所述第二读取电压的电压值不同于对应于所述第一下实体编程单元的预设读取电压的预设电压值,其中所述存储器管理电路还用以根据所述第三数据来发送第二写入指令序列以将所述第二数据编程至所述上实体编程单元中的第一上实体编程单元。在本发明的一实施例中,所述存储器管理电路还用以获得所述第一下实体编程单元的磨损程度值,其中所述存储器管理电路还用以根据所述磨损程度值而指示将对应于所述第一下实体编程单元所述预设读取电压调整为所述第二读取电压。在本发明的一实施例中,所述存储器控制电路单元还包括错误检查与校 正电路。所述错误检查与校正电路电性连接至所述存储器管理电路。其中所述第一数据获取操作还包括:由所述错误检查与校正电路译码使用所述第二读取电压所读取到的第四数据;判断所述第四数据是否译码失败;以及若所述第四数据译码失败,指示将所述第二读取电压调整为第三读取电压并使用所述第三读取电压来读取所述第一下实体编程单元。在本发明的一实施例中,所述第一上实体编程单元与所述第一下实体编程单元属于同一条字符线。本发明的另一实施例提供一种数据编程方法,其用于可复写式非易失性存储器模块,所述可复写式非易失性存储器模块包括多个实体擦除单元,所述实体擦除单元中的第一实体擦除单元包括多个下实体编程单元与对应于所述下实体编程单元的多个上实体编程单元,所述数据编程方法包括:接收第一数据并且将所述第一数据编程至所述下实体编程单元中的第一下实体编程单元;将所述第一数据暂存于所述可复写式非易失性存储器模块的缓冲区;接收第二数据;执行对应于所述第一下实体编程单元的第一数据获取操作以获得第三数据,其中所述第一数据获取操作包括从所述缓冲区中读取所述第一数据;以及根据所述第三数据来将所述第二数据编程至所述上实体编程单元中的第一上实体编程单元。在本发明的一实施例中,所述数据编程方法还包括:若所述第一数据获取操作尚未完成或编程所述第二数据至所述第一上实体编程单元失败,持续维护暂存于所述缓冲区中的所述第一数据。在本发明的一实施例中,所述缓冲区的一大小不小于一预设大小,其中所述预设大小为所述可复写式非易失性存储器模块中的一个实体编程单元的大小的三倍。在本发明的一实施例中,所述数据编程方法还包括:在接收所述第二数据之前,接收第四数据;将所述第四数据暂存于所述缓冲区;将所述第四数据编程至所述下实体编程单元中的第二下实体编程单元;在接收所述第二数据之后,接收第五数据;将所述第五数据暂存于所述缓冲区;执行对应于所述第二下实体编程单元的第二数据获取操作,其中所述第二数据获取操作包括从所述缓冲区中读取所述第四数据;以及根据所述第二数据获取操作所获得的所述第四数据来将所述第五数据编程至所述上实体编程单元中的第二上 实体编程单元,所述第二上实体编程单元对应于所述第二下实体编程单元,其中将所述第四数据编程至所述第二下实体编程单元的步骤是在将所述第一数据编程至所述第一下实体编程单元的步骤与将所述第二数据编程至所述第一上实体编程单元的步骤之间执行。在本发明的一实施例中,所述第一上实体编程单元与所述第一下实体编程单元属于同一条字符线。本发明的另一实施例提供一种存储器存储装置,其包括连接接口单元、可复写式非易失性存储器模块及存储器控制电路单元。所述连接接口单元用以电性连接至主机系统。所述可复写式非易失性存储器模块包括多个实体擦除单元,所述实体擦除单元中的第一实体擦除单元包括多个下实体编程单元与对应于所述下实体编程单元的多个上实体编程单元。所述存储器控制电路单元电性连接至所述连接接口单元与所述可复写式非易失性存储器模块,其中所述存储器控制电路单元用以接收第一数据并且发送第一写入指令序列以将所述第一数据编程至所述下实体编程单元中的第一下实体编程单元,其中所述存储器控制电路单元还用以接收第二数据,其中所述存储器控制电路单元还用以指示将所述第一数据暂存于所述可复写式非易失性存储器模块的缓冲区,其中所述存储器控制电路单元还用以指示执行对应于所述第一下实体编程单元的第一数据获取操作以获得第三数据,其中所述第一数据获取操作包括从所述缓冲区中读取所述第一数据,其中所述存储器控制电路单元还用以根据所述第三数据来发送第二写入指令序列以将所述第二数据编程至所述上实体编程单元中的一第一上实体编程单元。在本发明的一实施例中,若所述第一数据获取操作尚未完成或编程所述第二数据至所述第一上实体编程单元失败,所述存储器控制电路单元还用以持续维护暂存于所述缓冲区中的所述第一数据。在本发明的一实施例中,所述缓冲区的一大小不小于一预设大小,其中所述预设大小为所述可复写式非易失性存储器模块中的一个实体编程单元的大小的三倍。在本发明的一实施例中,在接收所述第二数据之前,所述存储器控制电路单元还用以接收第四数据,其中所述存储器控制电路单元还用以指示将所述第四数据暂存于所述缓冲区,其中所述存储器控制电路单元还用以发送第 三写入指令序列以将所述第四数据编程至所述下实体编程单元中的第二下实体编程单元,其中在接收所述第二数据之后,所述存储器控制电路单元还用以接收第五数据,其中所述存储器控制电路单元还用以指示将所述第五数据暂存于所述缓冲区,其中所述存储器控制电路单元还用以指示执行对应于所述第二下实体编程单元的第二数据获取操作,其中所述第二数据获取操作包括从所述缓冲区中读取所述第四数据,其中所述存储器控制电路单元还用以根据所述第二数据获取操作所获得的所述第四数据来发送第四写入指令序列以将所述第五数据编程至所述上实体编程单元中的第二上实体编程单元,所述第二上实体编程单元对应于所述第二下实体编程单元,其中将所述第四数据编程至所述第二下实体编程单元的操作是在将所述第一数据编程至所述第一下实体编程单元的操作与将所述第二数据编程至所述第一上实体编程单元的操作之间执行。在本发明的一实施例中,所述第一上实体编程单元与所述第一下实体编程单元属于同一条字符线。本发明的另一实施例提供一种存储器控制电路单元,其用于控制可复写式非易失性存储器模块,其中所述可复写式非易失性存储器模块包括多个实体擦除单元,所述实体擦除单元中的第一实体擦除单元包括多个下实体编程单元与对应于所述下实体编程单元的多个上实体编程单元,所述存储器控制电路单元包括主机接口、存储器接口及存储器管理电路。所述主机接口用以电性连接至主机系统。所述存储器接口用以电性连接至所述可复写式非易失性存储器模块。所述存储器管理电路电性连接至所述主机接口与所述存储器接口,其中所述存储器管理电路用以接收第一数据并且发送第一写入指令序列以将所述第一数据编程至所述下实体编程单元中的第一下实体编程单元,其中所述存储器管理电路还用以将指示所述第一数据暂存于所述可复写式非易失性存储器模块的缓冲区,其中所述存储器管理电路还用以接收第二数据,其中所述存储器管理电路还用以指示执行对应于所述第一下实体编程单元的第一数据获取操作以获得第三数据,其中所述第一数据获取操作包括从所述缓冲区中读取所述第一数据,其中所述存储器管理电路还用以根据所述第三数据来发送第二写入指令序列以将所述第二数据编程至所述上实体编程单元中的第一上实体编程单元。在本发明的一实施例中,若所述第一数据获取操作尚未完成或所述第二数据没有被成功地编程至所述第一上实体编程单元,所述存储器管理电路还用以持续维护暂存于所述缓冲区中的所述第一数据。在本发明的一实施例中,所述缓冲区的大小不小于预设大小,其中所述预设大小为所述可复写式非易失性存储器模块中的一个实体编程单元的大小的三倍。在本发明的一实施例中,在接收所述第二数据之前,所述存储器管理电路还用以接收第四数据,其中所述存储器管理电路还用以指示将所述第四数据暂存于所述缓冲区,其中所述存储器管理电路还用以发送第三写入指令序列以将所述第四数据编程至所述下实体编程单元中的第二下实体编程单元,其中在接收所述第二数据之后,所述存储器管理电路还用以接收第五数据,其中所述存储器管理电路还用以指示将所述第五数据暂存于所述缓冲区,其中所述存储器管理电路还用以指示执行对应于所述第二下实体编程单元的第二数据获取操作,其中所述第二数据获取操作包括从所述缓冲区中读取所述第四数据,其中所述存储器管理电路还用以根据所述第二数据获取操作所获得的所述第四数据来发送第四写入指令序列以将所述第五数据编程至所述上实体编程单元中的第二上实体编程单元,且所述第二上实体编程单元对应于所述第二下实体编程单元,其中将所述第四数据编程至所述第二下实体编程单元的操作是在将所述第一数据编程至所述第一下实体编程单元的操作与将所述第二数据编程至所述第一上实体编程单元的操作之间执行。在本发明的一实施例中,所述第一上实体编程单元与所述第一下实体编程单元属于同一条字符线。基于上述,本发明实施例提供的数据编程方法、存储器存储装置及存储器控制电路单元,在编程对应于某一个下实体编程单元的上实体编程单元时,会通过不包含使用此下实体编程单元预设的读取电压来读取存储胞的数据获取操作来获得此下实体编程单元的数据存储状态。藉此,将可降低因使用预设读取电压来读取存储胞而误判存储胞的数据存储状态,从而导致最终编程结果发生错误的机率。为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。附图说明图1是本发明的一实施例所示的主机系统与存储器存储装置的示意图;图2是本发明的一实施例所示的计算机、输入/输出装置与存储器存储装置的示意图;图3是本发明的一实施例所示的主机系统与存储器存储装置的示意图;图4是图1所示的存储器存储装置的概要方块图;图5是本发明的一实施例所示的可复写式非易失性存储器模块的概要方块图;图6是本发明的一实施例所示的存储胞数组的示意图;图7是本发明的一实施例所示的存储器控制电路单元的概要方块图;图8是本发明的一实施例所示的管理可复写式非易失性存储器模块的示意图;图9是本发明的一实施例所示的管理实体擦除单元的示意图;图10是本发明的一实施例所示的编程多个实体编程单元的示意图;图11是本发明的一实施例所示的编程过程中存储胞的临界电压分布变化的示意图;图12a至12c是本发明的一实施例所示的编程数据的示意图;图13是本发明的一实施例所示的数据编程方法的流程图;图14是本发明的另一实施例所示的数据编程方法的流程图;图15是本发明的另一实施例所示的数据编程方法的流程图;图16是本发明的另一实施例所示的数据编程方法的流程图。附图标记说明:10:存储器存储装置;11:主机系统;12:计算机;122:微处理器;124:随机存取存储器;126:系统总线;128:数据传输接口;13:输入/输出装置;21:鼠标;22:键盘;23:显示器;24:打印机;25:随身盘;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:电源管理电路;800(0)~800(R):实体擦除单元;810(0)~810(D):逻辑单元;802:存储区;806:系统区;901A~904A:下实体编程单元;911B~914B:上实体编程单元;VREAD-0、VREAD-1、VREAD-2、VREAD-3、VREAD-4:读取电压;S1301~S1304、S1401~S1404、S1501~S1507、S1601~S1605:步骤。具体实施方式一般而言,存储器存储装置(也称,存储器存储系统)包括可复写式非易失性存储器模块(rewritablenon-volatilememorymodule)与控制器(也称,控制电路)。通常存储器存储装置是与主机系统一起使用,以使主机系统可将数据写入至存储器存储装置或从存储器存储装置中读取数据。图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所示的随身盘25、存储卡26或固态硬盘(SolidStateDrive,简称SSD)27等的可复写式非易失性存储器存储装置。图3是本发明的一实施例所示的主机系统与存储器存储装置的示意图。一般而言,主机系统11为可实质地与存储器存储装置10配合以存储数据的任意系统。虽然在本实施例中,主机系统11是以计算机系统来作说明,然而,另一实施例中,主机系统11可以是数码相机、摄影机、通讯装置、音频播放器或视频播放器等系统。例如,在主机系统为数码相机(摄影机)31时,可复写式非易失性存储器存储装置则为其所使用的SD卡32、MMC卡33、存储棒(memorystick)34、CF卡35或嵌入式存储装置36(如图3所示)。嵌入式存储装置36包括嵌入式多媒体卡(EmbeddedMMC,简称eMMC)。值得一提的是,嵌入式多媒体卡是直接电性连接在主机系统的基板上。图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型存储器模块(即,一个存储胞中可存储1个位数据的存储器模块)、多阶存储胞(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的电源。图8是本发明的一实施例所示的管理可复写式非易失性存储器模块的示意图。必须了解的是,在此描述可复写式非易失性存储器模块406的实体擦除单元的运作时,以“选择”、“分组”、“划分”、“关联”等词来操作实体擦除单元是逻辑上的概念。也就是说,可复写式非易失性存储器模块的实体擦除单元的实际位置并未更动,而是逻辑上对可复写式非易失性存储器模块的实体擦除单元进行操作。可复写式非易失性存储器模块406的存储胞会构成多个实体编程单元,并且此些实体编程单元会构成多个实体擦除单元。具体来说,同一条字符在线的存储胞会组成一或多个实体编程单元。若每一个存储胞可存储2个以上的位,则同一条字符在线的实体编程单元至少可被分类为下实体编程单元与上实体编程单元。例如,一存储胞的最低有效位(LeastSignificantBit,简称LSB)是属于下实体编程单元,并且一存储胞的最高有效位(MostSignificantBit,简称MSB)是属于上实体编程单元。一般来说,在MLCNAND型存储器中,下实体编程单元的写入速度会大于上实体编程单元的写入速度。此外,下实体编程单元的可靠度是高于上实体编程单元的可靠度。在本实施例中,实体编程单元为编程的最小单元。即,实体编程单元为写入数据的最小单元。例如,实体编程单元为实体页面或是实体扇(sector)。若实体编程单元为实体页面,则每一个实体编程单元通常包括数据位区与冗余位区。数据位区包含多个实体扇,用以存储使用者的数据,而冗余位区用以存储系统的数据(例如,错误更正码)。在本实施例中,数据位区包含32个实体扇,且一个实体扇的大小为512字节(byte,简称B)。然而,在其它实施例中,数据位区中也可包含8个、16个或数目更多或更少的实体扇,本发明并不限制实体扇的大小以及 个数。另一方面,实体擦除单元为擦除的最小单位。也即,每一实体擦除单元含有最小数目的一并被擦除的存储胞。例如,实体擦除单元为实体区块。请参照图8,存储器管理电路702可将可复写式非易失性存储器模块406的实体擦除单元800(0)~800(R)逻辑地划分为多个区域,例如为存储区802与系统区806。存储区802的实体擦除单元是用以存储来自主机系统11的数据。存储区802中会存储有效数据与无效数据。例如,当主机系统要删除一份有效数据时,被删除的数据可能还是存储在存储区802中,但会被标记为无效数据。没有存储有效数据的实体擦除单元也被称为闲置(spare)实体擦除单元。例如,被擦除以后的实体擦除单元便会成为闲置实体擦除单元。若存储区802或系统区806中有实体擦除单元损坏时,存储区802中的实体擦除单元也可以用来替换损坏的实体擦除单元。倘若存储区802中没有可用的实体擦除单元来替换损坏的实体擦除单元时,则存储器管理电路702会将整个存储器存储装置10宣告为写入保护(writeprotect)状态,而无法再写入数据。此外,有存储有效数据的实体擦除单元也被称为非闲置(non-spare)实体擦除单元。系统区806的实体擦除单元是用以记录系统数据,其中此系统数据包括关于存储器芯片的制造商与型号、存储器芯片的实体擦除单元数、每一实体擦除单元的实体编程单元数等。存储区802与系统区806的实体擦除单元的数量会依据不同的存储器规格而有所不同。此外,必须了解的是,在存储器存储装置10的运作中,实体擦除单元关联至存储区802与系统区806的分组关系会动态地变动。例如,当系统区806中的实体擦除单元损坏而被存储区802的实体擦除单元取代时,则原本在存储区802的实体擦除单元会被关联至系统区806。存储器管理电路702会配置逻辑单元810(0)~810(D)以映射至存储区802中的实体擦除单元800(0)~800(A)。例如,在本实施例中,主机系统11是通过逻辑地址来存取存储区802中的数据,因此,每一个逻辑单元810(0)~810(D)是指一个逻辑地址。在本实施例中,一个逻辑地址是指一个逻辑区块地址(logicalblockaddress,简称LBA)。然而,在另一实施例中,一个逻辑地址的大小也可以是大于或小于一个逻辑区块地址的大小。在一实施例中,每一个逻辑单元810(0)~810(D)也可以是指一个逻辑扇、一个逻辑编程单元、一个逻辑 擦除单元或者由多个连续或分散的逻辑地址组成。每一个逻辑单元810(0)~810(D)是映射至一或多个实体单元。在本实施例中,一个实体单元是指一个实体擦除单元。然而,在另一实施例中,一个实体单元也可以是一个实体地址、一个实体扇、一个实体编程单元或者是由多个连续或分散的实体地址组成,本发明不加以限制。存储器管理电路702会将逻辑单元与实体单元之间的映射关系记录在一或多个逻辑-实体映像表。当主机系统11欲从存储器存储装置10读取数据或写入数据至存储器存储装置10时,存储器管理电路702可根据此逻辑-实体映射表来执行对于存储器存储装置10的数据存取。在本实施例中,每一个实体擦除单元会包括多个下实体编程单元与对应于此些下实体编程单元的多个上实体编程单元。在此,相互对应的实体编程单元指的是属于同一条字符线的实体编程单元。图9是本发明的一实施例所示的管理实体擦除单元的示意图。请参照图9,以实体擦除单元800(0)为例,实体擦除单元800(0)至少包括下实体编程单元901A~904A与上实体编程单元911B~914B。下实体编程单元901A与上实体编程单元911B属于同一条字符线。下实体编程单元902A与上实体编程单元912B属于同一条字符线。下实体编程单元903A与上实体编程单元913B属于同一条字符线。下实体编程单元904A与上实体编程单元914B属于同一条字符线。一般来说,下实体编程单元会比位于同一条字符在线的上实体编程单元优先被使用(即,被编程)。存储器管理电路702是依照一个编程顺序交错地将数据写入下实体编程单元与上实体编程单元。例如,图9中每一个实体编程单元中的数字便是表示此些实体编程单元的编程顺序。在本实施例中,下实体编程单元901A与902A会先被编程,接着,上实体编程单元911B、下实体编程单元903A、上实体编程单元912B、下实体编程单元904A及上实体编程单元913B会依序被编程。以此类推,其它未示出的实体编程单元也会依照类似方式而依序地被编程。然而,在另一实施例中,存储器管理电路702也可以依照其它的编程顺序来写入数据。例如,数据可以是依序地被写入至下实体编程单元901A、上实体编程单元911B、下实体编程单元902A、上实体编程单元912B及下实体编程单元903A,或者是依照下实体编程单元901A、 902A、903A、904A、上实体编程单元911B、912B、913B的顺序来编程等等,本发明不加以限制。图10是本发明的一实施例所示的编程多个实体编程单元的示意图。请参照图10,同样以实体擦除单元800(0)为例,假设存储器管理电路702依序接收到DATA-a~DATA-e。DATA-a~DATA-e可以是连续数据或者不连续数据。连续数据指的是数据使用连续的多个逻辑单元并且占用一个连续的逻辑地址范围。不连续数据指的是数据使用不连续的多个逻辑单元并且占用多个彼此不连续的逻辑地址范围。此外,每一个数据DATA-a~DATA-e可以是从主机系统11接收的欲存储至存储器存储装置10的数据(例如,随着对应的写入指令而由主机系统11发送),或者也可以是因执行实体单元的合并(merging)程序或垃圾回收(garbagecollection)程序等而需要重新写回可复写式非易失性存储器模块406中的数据。存储器管理电路702可以依照图9的实施例所提及的任一种编程顺序来写入数据DATA-a~DATA-e。在此,以示出在图9的每一个实体编程单元中的数字作为编程顺序的范例。例如,在接收到数据DATA-a之后,存储器管理电路702会将数据DATA-a编程至下实体编程单元901A;在接收到数据DATA-b且数据DATA-a被编程至下实体编程单元901A之后,存储器管理电路702会将数据DATA-b编程至下实体编程单元902A;在接收到数据DATA-c且数据DATA-b被编程至下实体编程单元902A之后,存储器管理电路702会将数据DATA-c编程至上实体编程单元911B;在接收到数据DATA-d且数据DATA-c被编程至上实体编程单元911B之后,存储器管理电路702会将数据DATA-d编程至下实体编程单元903A;在接收到数据DATA-e且数据DATA-d被编程至下实体编程单元903A之后,存储器管理电路702会将数据DATA-e编程至上实体编程单元912B。值得一提的是,存储器管理电路702是通过发送写入指令序列的方式来指示可复写式非易失性存储器模块406存储数据(即,编程数据)。例如,此写入指令序列可由指令码及/或程序代码组成。此写入指令序列可包括欲存储的数据与欲使用的实体单元(例如,实体地址)等等。一般来说,对于上实体编程单元的编程操作会考虑到对应的下实体编程单元的数据存储状态。因此,在编程某一个上实体编程单元时,若对应的下 实体编程单元已被编程,则对于此上实体编程单元的编程可能会因为误判此下实体编程单元的数据存储状态而导致最终对于同一条字符在线的上、下实体编程单元至少其中之一的编程发生错误(即,存储错误的数据)。图11是本发明的一实施例所示的编程过程中存储胞的临界电压分布变化的示意图。请同时参照图10与图11,假设一开始下实体编程单元901A与上实体编程单元911B中的所有存储胞都没有存储有效数据(即,处于擦除状态“ERA”)。在将数据DATA-a编程至下实体编程单元901A之后,此些存储胞中的一部份会存储位“1”并且另一部份存储位“0”。在将数据DATA-c编程至上实体编程单元911B时,一个预设读取电压VREAD-0会被提供至下实体编程单元901A中的存储胞以判断此些存储胞的数据存储状态。根据所获得的存储胞的数据存储状态,此些存储胞会进一步地被编程为具有四种数据存储状态(即,存储位“11”、“10”、“00”及“01”)。然后,通过施加读取电压VREAD-1~VREAD-3至此些存储胞,每一个存储胞的数据存储状态可以被识别出来。然而,随着存储器存储装置10的使用时间增加(例如,读取次数增加、写入次数增加及/或擦除次数增加等等),可复写式非易失性存储器模块406中的存储胞会发生性能退化(degradation)。发生性能退化的存储胞的临界电压分布范围会变宽,如图11中的虚线所示。因此,若在编程上实体编程单元911B时仍然使用固定的预设读取电压VREAD-0来读取此些存储胞,则很容易误判下实体编程单元901A的数据存储状态,最终导致下实体编程单元901A与上实体编程单元911B都存储了错误的数据。例如,若因使用预设读取电压VREAD-0来读取此些存储胞而将图11中斜线区域内的存储胞误判为存储位“0”,则原先应该被编程为存储位“11”的存储胞可能会错误地被编程为存储位“01”。现阶段,在针对从存储器中读取出的错误数据进行更正的译码程序中,这样的错误并不容易被找出并更正。请再次参照图10,在本实施例中,存储器管理电路702会决定每一笔数据在可复写式非易失性存储器模块406中的存储地址。当存储器管理电路702欲将数据DATA-c编程至上实体编程单元911B时,存储器管理电路702会执行一数据获取操作以获得下实体编程单元901A的数据存储状态。此数据存储状态可以是存储胞的临界电压分布或数据DATA-a。此外,在另一实施例中, 此数据获取操作也可以是由存储器管理电路702发送一数据获取指令来指示可复写式非易失性存储器模块406或其它的电路执行。特别是,此数据获取操作并不会包含使用一个预设读取电压来读取下实体编程单元901A。在此,预设读取电压是指没有随着下实体编程单元901A的使用状态及/或数据存储状态而被适应性地调整过的读取电压(例如,图11中的预设读取电压VREAD-0)。在获得下实体编程单元901A的数据存储状态之后,存储器管理电路702会根据下实体编程单元901A的数据存储状态来发送一个写入指令序列至可复写式非易失性存储器模块406以指示基于下实体编程单元901A的数据存储状态来将数据DATA-c编程至上实体编程单元911B。在图10的一实施例中,存储器管理电路702会获得下实体编程单元901A的磨损程度值。此磨损程度值与下实体编程单元901A或者实体擦除单元800的读取次数、写入次数、擦除次数、错误位数、错误位率及存储胞的临界电压分布的至少其中之一有关。此磨损程度值可用以指示存储胞的磨损程度等可能会影响存储胞的临界电压分布的各种因素。根据下实体编程单元901A的磨损程度值,存储器管理电路702会指示将对应于下实体编程单元901A的读取电压从一第一读取电压调整为一第二读取电压。例如,此第二读取电压的电压值会大于或小于此第一读取电压的电压值。此第一读取电压可以是对应于下实体编程单元901A的预设读取电压或已经被调整过至少一次的读取电压。以图11为例,若将预设读取电压VREAD-0的预设电压值加上一个电压调整值ΔV,则使用调整后的读取电压(例如,读取电压VREAD-4)来读取存储胞,将可减少发生上述误判的机率。在本实施例中,电压调整值ΔV的值是预设的。例如,每一次将第一读取电压调整至第二读取电压的电压增加幅度都是一个预设幅度。然而,在另一实施例中,电压调整值ΔV的值不是预设的。例如,图11中电压调整值ΔV的值可以是根据当前下实体编程单元901A的磨损程度值所适应性决定的。在一实施利中,将第一读取电压至第二读取电压的电压增加幅度是与下实体编程单元901A的磨损程度成正相关。也即,若当前下实体编程单元901A的磨损程度值指示下实体编程单元901A中存储胞的磨损程度较高,则电压调整值ΔV的值可被对应增加;若当前下实体编程单元901A的磨损程度值指示下实体编程单元901A中存储胞的磨损程度不高,则电压调整值ΔV的值可被对应减少。此外,在另一实施例中,存储器管 理电路702也可以扫描下实体编程单元901A中的存储胞并且根据下实体编程单元901A中存储胞的临界电压分布来决定电压调整值ΔV。在另一实施例中,存储器管理电路702会动态地决定是否执行上述调整读取电压的操作。例如,存储器管理电路702会判断下实体编程单元901A的磨损程度值是否符合一磨损门槛值。此磨损程度值可以是以擦除次数、读取次数、写入次数、错误位数及错误位率的其中之一或其组合的对应数值来表示。例如,若此磨损程度值是以擦除次数来表示,则此磨损门坎值例如是3000~5000次。此磨损门槛值是作为存储胞所存储的数据的正确性是否仍然可以被有效维持的一个判断依据。不同类型的存储胞所对应的磨损门槛值可能不同。若下实体编程单元901A的磨损程度值符合此磨损门槛值,例如,下实体编程单元901A中存储胞的擦除次数达到3000次,表示下实体编程单元901A存储的数据的正确性已经无法有效维持,故存储器管理电路702会启用上述根据下实体编程单元901A的磨损程度值来调整对于下实体编程单元901A的读取电压的操作。反之,若下实体编程单元901A的磨损程度值不符合此磨损门槛值,例如,下实体编程单元901A的擦除次数尚未达到3000次,则存储器管理电路702不会启用上述根据下实体编程单元901A的磨损程度值来调整对于下实体编程单元901A的读取电压的操作。换言之,若下实体编程单元901A的磨损程度值不符合此磨损门槛值,则存储器管理电路702还是可以使用上述预设读取电压(例如,预设读取电压VREAD-0)来读取下实体编程单元901A中的存储胞,以获得下实体编程单元901A的数据存储状态。此外,在上述实施例中,存储器管理电路702会发送一个读取电压调整指令至可复写式非易失性存储器模块406。此读取电压调整指令会指示可复写式非易失性存储器模块406执行上述调整读取电压的操作。在一实施例中,存储器管理电路702还会指示错误检查与校正电路708对上述数据获取操作中获得的数据进行译码并且判断是否发生译码失败。此译码可以包括迭代(iterative)译码或非迭代译码。若对于上述数据获取操作中获得的某一笔数据译码失败,例如,执行迭代译码的次数超过一预设次数,则存储器管理电路702会再次调整前一次使用的读取电压并且利用此调整后的读取电压来再次读取同一个下实体编程单元。例如,存储器管理电路702可以指示将上述第二读取电压调整为电压值更大的第三读取电压并且指示利 用此第三读取电压来再次读取下实体编程单元901A。然后,错误检查与校正电路708会重新对利用此第三读取电压所读取到的数据进行译码。在一次的数据获取操作中,存储器管理电路702与错误检查与校正电路708可以重复执行上述调整读取电压与译码读取到的数据的操作,直到译码成功或译码失败的次数达到一解码次数门槛值为止。在图10的另一实施例中,上述数据获取操作也可以不提供任何读取电压至下实体编程单元901A中的存储胞。例如,在一实施例中,每接收到一笔欲写入至可复写式非易失性存储器模块406的数据,此数据就会被暂存在缓冲存储器710中并且至少被维护到不需要再被使用到为止。例如,在图10的一实施例中,暂存在缓冲存储器710中的数据DATA-a至少会被维护到DATA-c被编程至上实体编程单元911B为止。藉此,在执行对应于某一个下实体编程单元的上实体编程单元的编程操作时,存储在此下实体编程单元中的数据就可以被从缓冲存储器710读取出来,从而减少读取到错误的下实体编程单元的数据存储状态的机率。在上述实施例中,缓冲存储器710的大小或缓冲存储器710中用来暂存欲写入至可复写式非易失性存储器模块406中的数据的空间不会小于一个预设大小。例如,若以图9所示的编程顺序来存储数据,则此预设大小至少是可复写式非易失性存储器模块406中的一个实体编程单元的大小的三至四倍。也即,在对于数据DATA-c的编程操作被执行完毕之前,缓冲存储器710至少需要同时存储数据DATA-a、DATA-b及DATA-c;在对于数据DATA-e的编程操作被执行完毕之前,缓冲存储器710至少需要同时存储数据DATA-b、DATA-d及DATA-e或者数据DATA-b、DATA-c、DATA-d及DATA-e。此外,若所使用的编程顺序不同,则上述预设大小也可以适应性地调整,只要可以有效地维护缓冲存储器710中还会被使用到的数据即可。此外,在另一实施例中,也可以在可复写式非易失性存储器模块406中配置一个缓冲区。此缓冲区并不包含数据真正的存储位置。例如,此缓冲区可以提供相同或相似于缓冲存储器710的功能。此外,此缓冲区的大小同样至少会大于上述预设大小。在一实施例中,缓冲区中的实体单元的可靠度及/或数据写入速度会高于或等于可复写式非易失性存储器模块406中其它区域的实体单元的可靠度及/或数据写入速度。图12a至12c是本发明的一实施例所示的编程数据的示意图。请参照图12a,假设数据DATA-a与DATA-b已暂存于缓冲存储器710,且数据DATA-a与DATA-b已被依序编程至下实体编程单元901A与902A。存储器管理电路702会接收数据DATA-c并且将数据DATA-c暂存于缓冲存储器710。当存储器管理电路702欲将数据DATA-c编程至上实体编程单元911B时,存储器管理电路702会从缓冲存储器710中读取数据DATA-a。然后,存储器管理电路702会根据读取出的数据DATA-a来将数据DATA-c编程至上实体编程单元911B。关于如何编程已于上述实施例中说明,在此便不赘述。特别是,由于对于上实体编程单元911B的编程操作并不是根据下实体编程单元901A“真正的”数据存储状态来执行的,故可降低因存储在下实体编程单元901A中的数据不正确而导致对于上实体编程单元911B的编程发生错误的机率。值得一提的是,在图12a至12c的实施例中,缓冲存储器710中不需要再被使用到的数据就可以被设定为可被另一笔数据覆盖。例如,在将数据DATA-c编程至上实体编程单元911B之后,缓冲存储器710中的数据DATA-a与DATA-c就可以被设定为可被覆盖。请参照图12b,在接收到数据DATA-d之后,数据DATA-d会被暂存在缓冲存储器710。在此,受限于缓冲存储器710的大小,数据DATA-a可能会被数据DATA-d覆盖掉。在一实施例中,只有在确定对于数据DATA-a的数据获取操作完成或数据DATA-c已被成功地编程至上实体编程单元911B时,数据DATA-d才会被存储器管理电路702接收。换言之,在一实施例中,若对于数据DATA-a的数据获取操作尚未完成或数据DATA-c还没成功地编程至上实体编程单元911B,则存储器管理电路702会处于一忙碌状态(busystate)而不可接收数据DATA-d;而当对于数据DATA-a的数据获取操作完成或数据DATA-c已被成功地编程至上实体编程单元911B时,存储器管理电路702会切换为处于闲置状态(idlestate)而可接收数据DATA-d。然后,数据DATA-d会被编程至下实体编程单元903A。请参照图12c,在接收到数据DATA-d且存储器管理电路702处于闲置状态之后,数据DATA-e会被接收(例如,覆盖数据DATA-c)并且被暂存在缓冲存储器710。在将数据DATA-d编程至下实体编程单元903A之后,当存储器管理电路702欲将数据DATA-e编程至上实体编程单元912B时,存储器管理 电路702会从缓冲存储器710中读取数据DATA-b。然后,存储器管理电路702会根据从缓冲存储器710中读取出来的数据DATA-b来将数据DATA-e编程至上实体编程单元912B。在此,存储器管理电路702从缓冲存储器710中读取数据DATA-b的操作即为对应于下实体编程单元902A的数据获取操作。值得一提的是,在图12a至图12c的另一实施例中,缓冲存储器710也可以是以可复写式非易失性存储器模块406中的缓冲区来取代。或者,缓冲存储器710也可以是与可复写式非易失性存储器模块406中的缓冲区一起使用或者轮替使用。例如,数据DATA-a、DATA-b及DATA-c可暂存于缓冲存储器710,而数据DATA-d与DATA-e则可暂存于可复写式非易失性存储器模块406中的缓冲区等等。此外,在图12a与图12c的另一实施例中,对应于下实体编程单元901A与下实体编程单元902A的数据获取操作也可以是包含使用调整后的读取电压来读取对应的存储胞的操作。关于如何调整读取电压以及利用调整后的读取电压来读取存储胞等操作已于前述说明,在此便不赘述。在上述实施例中,数据DATA-a、DATA-b、DATA-c、DATA-d及DATA-e各别的数据大小都是符合一个实体编程单元的大小。然而,在另一实施例中,数据DATA-a、DATA-b、DATA-c、DATA-d及DATA-e各别的数据大小也可以是小于一个实体编程单元的大小,本发明不加以限制。此外,虽然上述实施例均是以编程同一个实体擦除单元中的多个实体编程单元作为范例,但是在另一实施例中,属于不同实体擦除单元的多个实体编程单元也可以被连续或不连续地编程。图13是本发明的一实施例所示的数据编程方法的流程图。请参照图13,在步骤S1301中,接收一数据(也称为第一数据)并且将第一数据编程至一个下实体编程单元(也称为第一下实体编程单元)。在步骤S1302中,接收另一数据(也称为第二数据)。在步骤S1303中,执行对应于第一下实体编程单元的一个数据获取操作(也称为第一数据获取操作),其中第一数据获取操作不包括使用对应于第一下实体编程单元的一个预设读取电压来读取第一下实体编程单元。例如,此第一数据获取操作可包括使用与预设读取电压不同的一或多个读取电压来读取第一下实体编程单元或者从某一缓冲存储器或可复写式非易失性存储器模块中的缓冲区读取存储于第一下实体编 程单元中的数据。在步骤S1304中,根据第一数据获取操作所获得的数据(也称为第三数据)将第二数据编程至对应于第一下实体编程单元的第一上实体编程单元。然而,在另一实施例中,步骤S1301与S1302也可以同时执行。图14是本发明的另一实施例所示的数据编程方法的流程图。请参照图14,在步骤S1401中,接收第一数据并且将第一数据编程至第一实体编程单元。在步骤S1402中,接收第二数据。在步骤S1403中,当欲将第二数据编程至第一下实体编程单元所对应的第一上实体编程单元,使用不同于对应于第一下实体编程单元的预设读取电压之一或多个读取电压读取第一下实体编程单元。例如,此一或多个读取电压是根据第一下实体编程单元的磨损程度值来决定。在步骤S1404中,根据步骤S1403中所读取到的数据将第二数据编程至第一上实体编程单元。然而,在另一实施例中,步骤S1401与S1402也可以同时执行。图15是本发明的另一实施例所示的数据编程方法的流程图。请参照图15,在步骤S1501中,接收第一数据并且将第一数据编程至第一实体编程单元。在步骤S1502中,接收第二数据。在步骤S1503中,当欲将第二数据编程至第一下实体编程单元所对应的第一上实体编程单元时,使用不同于对应于第一下实体编程单元的预设读取电压的读取电压(也称为第二读取电压)读取第一下实体编程单元。例如,此第二读取电压是根据第一下实体编程单元的磨损程度值来决定。在步骤S1504中,译码在步骤S1503中所读取到的数据(也称为第四数据)。在步骤S1505中,判断第四数据是否译码失败。若第四数据译码失败,在步骤S1506中,将第二读取电压调整为另一读取电压(也称为第三读取电压)并且使用第三读取电压读取第一实体编程单元。在步骤S1506之后,步骤S1504与S1505会被重复执行,直到第四数据译码成功或者译码失败的次数达到一译码次数门槛值为止。若第四数据译码成功,在步骤S1507中,根据步骤S1505中译码成功的数据,将第二数据编程至第一上实体编程单元。然而,在另一实施例中,步骤S1501与S1502也可以同时执行。图16是本发明的另一实施例所示的数据编程方法的流程图。请参照图16,在步骤S1601中,接收第一数据并且将第一数据编程至第一实体编程单元。在步骤S1602中,将第一数据暂存在缓冲存储器或可复写 式非易失性存储器模块中的一个缓冲区。在步骤S1603中,接收第二数据。在步骤S1604中,反应于欲将第二数据编程至第一下实体编程单元所对应的第一上实体编程单元,读取暂存在缓冲存储器或可复写式非易失性存储器模块中的缓冲区的第一数据。在步骤S1605中,根据步骤S1604中所读取出的第一数据将第二数据编程至第一上实体编程单元。然而,在另一实施例中,步骤S1601与S1602和/或步骤S1602与S1603也可以同时执行。然而,图13至图16中各步骤已详细说明如上,在此便不再赘述。值得注意的是,图13至图16中各步骤可以实作为多个程序代码或是电路,本发明不加以限制。此外,图13至图16的方法可以搭配以上实施例使用,也可以单独使用,本发明不加以限制。综上所述,在编程对应于某一个下实体编程单元的上实体编程单元时,本发明会通过使用调整后的读取电压来读取属于此下实体编程单元的存储胞或者读取暂存于缓冲存储器(或,可复写式非易失性存储器模块的缓冲区)中的数据等数据获取操作来获得此下实体编程单元的数据存储状态。藉此,将可降低因使用预设读取电压来读取存储胞而误判存储胞的数据存储状态,从而导致最终编程结果发生错误的机率。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1