CN103593296B - 数据储存方法、存储器控制器与存储器储存装置 - Google Patents
数据储存方法、存储器控制器与存储器储存装置 Download PDFInfo
- Publication number
- CN103593296B CN103593296B CN201210289628.9A CN201210289628A CN103593296B CN 103593296 B CN103593296 B CN 103593296B CN 201210289628 A CN201210289628 A CN 201210289628A CN 103593296 B CN103593296 B CN 103593296B
- Authority
- CN
- China
- Prior art keywords
- unit
- erasing
- instance
- entity
- byte
- 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.)
- Active
Links
Abstract
本发明提供一种数据储存方法、存储器控制器与存储器储存装置。本数据储存方法包括:将数据搬移或写入至可擦写式非易失性存储器模块的一实体抹除单元,并且判断此实体抹除单元是否存有跳动字节。本数据储存方法还包括,倘若此实体抹除单元存有跳动字节时,将可擦写式非易失性存储器模块回复成搬移数据前的状态或者再将数据搬移至另一个实体抹除单元。因此,本数据储存方法可有效地确保储存数据的可靠度。
Description
技术领域
本发明是有关于一种用于可擦写式非易失性存储器模块的数据储存方法、存储器控制器与存储器储存装置。
背景技术
数码相机、手机与MP3在这几年来的成长十分迅速,使得消费者对储存媒体的需求也急速增加。由于可擦写式非易失性存储器(rewritablenon-volatilememory)具有数据非易失性、省电、体积小、无机械结构、读写速度快等特性,最适于便携式电子产品,例如笔记本电脑。固态硬盘就是一种以闪存作为储存媒体的储存装置。因此,近年闪存存储器产业成为电子产业中相当热门的一环。
依据每个存储单位可储存的字节数,反及(NAND)型闪存存储器可区分为单阶储存单元(SingleLevelCell,简称SLC)NAND型闪存存储器、多阶储存单元(MultiLevelCell,简称MLC)NAND型闪存存储器与复数阶储存单元(TrinaryLevelCell,简称TLC)NAND型闪存存储器,其中SLCNAND型闪存存储器的每个存储单位可储存1个字节的数据(即,“1”与“0”),MLCNAND型闪存存储器的每个存储单位可储存2个字节的数据并且TLCNAND型闪存存储器的每个存储单位可储存3个字节的数据。
在NAND型闪存存储器中,实体页面是由排列在同一条字符线上的数个存储单位所组成。由于SLCNAND型闪存存储器的每个存储单位可储存1个字节的数据,因此,在SLCNAND型闪存存储器中,排列在同一条字符线上的数个存储单位是对应一个实体页面。
相对于SLCNAND型闪存存储器来说,MLCNAND型闪存存储器的每个存储单位的浮动栅储存层可储存2个字节的数据,其中每一个储存状态(即,“11”、“10”、“01”与“00”)包括最低有效字节(LeastSignificantBit,LSB)以及最高有效字节(MostSignificantBit,简称MSB)。例如,储存状态中从左侧算起的第1个字节的值为LSB,而从左侧算起的第2个字节的值为MSB。因此,排列在同一条字符线上的数个存储单位可组成2个实体页面,其中由此些存储单位的LSB所组成的实体页面称为下实体页面(lowphysicalpage),并且由此些存储单位的MSB所组成的实体页面称为上实体页面(upperphysicalpage)。特别是,下实体页面的写入速度会快于上实体页面的写入速度,并且当程序化上实体页面发生错误时,下实体页面所储存的数据也可能因此遗失。
类似地,在TLCNAND型闪存存储器中,每个存储单位可储存3个字节的数据,其中每一个储存状态(即,“111”、“110”、“101”、“100”、“011”、“010”、“001”与“000”)包括左侧算起的第1个字节的LSB、从左侧算起的第2个字节的中间有效字节(CenterSignificantBit,简称CSB)以及从左侧算起的第3个字节的MSB。因此,排列在同一条字元字符线上的数个存储单位可组成3个实体页面,其中由此些存储单位的LSB所组成的实体页面称为下实体页面,由此些存储单位的CSB所组成的实体页面称为中实体页面,并且由此些存储单位的MSB所组成的实体页面称为上实体页面。特别是,对排列在同一条字元字符线上的数个存储单位进行程序化时,仅能选择仅程序化下实体页面或者同时程序化下实体页面、中实体页面与上实体页面,否则所储存的数据可能会遗失。
基于上述,如何确保闪存存储器内所储存的数据的正确性,是此领域技术人员所致力的目标。
发明内容
本发明提供一种数据储存方法、存储器控制器与存储器储存装置,其能够有效地确保数据的可靠度与正确性。
本发明实施例提供一种数据储存方法,用于一存储器储存装置,此存储器储存装置具有可擦写式非易失性存储器模块,此可擦写式非易失性存储器模块具有多个实体抹除单元,每一实体抹除单元具有多个实体程序化单元,且多个逻辑地址被配置以映射部分的实体抹除单元。本数据储存方法包括:从上述逻辑地址之中选择一第一逻辑地址,其中第一逻辑地址映射上述实体抹除单元之中的多个实体抹除单元。本数据储存方法还包括从上述实体抹除单元中选择第一实体抹除单元,将属于第一逻辑地址的有效数据从映射第一逻辑地址的实体抹除单元中搬移到第一实体抹除单元;并判断第一实体抹除单元是否存有跳动字节(dancingbit)。本数据储存方法还包括,倘若第一实体抹除单元存有跳动字节时,对第一实体抹除单元执行抹除操作。
在本发明的一实施例中,上述的数据储存方法还包括:在对第一实体抹除单元执行抹除操作之后,从该些实体抹除单元中选择一第二实体抹除单元,并且将属于该第一逻辑地址的有效数据从对应该第一逻辑地址的实体抹除单元中搬移到该第二实体抹除单元。
在本发明的一实施例中,上述的判断第一实体抹除单元是否存有跳动字节的步骤包括:判断储存在第一实体抹除单元的实体程序化单元之中的第一实体程序化单元中的数据发生错误字节的数目是否大于错误字节数门限值且非大于最大可校正错误字节数;以及倘若储存在第一实体程序化单元中的数据发生错误字节的数目大于错误字节数门限值且非大于最大可校正错误字节数时,识别第一实体抹除单元存有跳动字节。
在本发明的一实施例中,上述的数据储存方法还包括:在判断第一实体抹除单元是否存有跳动字节之前,判断在将属于第一逻辑地址的有效数据从映射第一逻辑地址的实体抹除单元中搬移到第一实体抹除单元期间存储器储存装置是否发生异常断电。并且,上述判断第一实体抹除单元是否存有跳动字节的步骤是在存储器储存装置发生异常断电重新上电后被执行。
在本发明的一实施例中,上述的第一实体程序化单元为在存储器储存装置发生异常断电前最后一个被写入的实体程序化单元。
在本发明的一实施例中,上述的数据储存方法还包括:倘若第一实体抹除单元未存有该跳动字节时,对映射第一逻辑地址的实体抹除单元执行抹除操作。
本发明实施例提供一种存储器控制器,用于控制存储器储存装置中的可擦写式非易失性存储器模块,此可擦写式非易失性存储器模块具有多个实体抹除单元并且每一实体抹除单元具有多个实体程序化单元。本存储器控制器包括主机接口、存储器接口与存储器管理电路。主机接口用以耦接至主机系统。存储器接口用以耦接至可擦写式非易失性存储器模块。存储器管理电路耦接至主机接口与存储器接口。在此,存储器管理电路用以配置多个逻辑地址以映射部分的实体抹除单元。此外,存储器管理电路还用以从上述逻辑地址之中选择一第一逻辑地址,其中第一逻辑地址映射上述实体抹除单元之中的多个实体抹除单元。另外,存储器管理电路还用以从上述实体抹除单元中选择第一实体抹除单元,将属于第一逻辑地址的有效数据从映射第一逻辑地址的实体抹除单元中搬移到第一实体抹除单元,并且判断第一实体抹除单元是否存有跳动字节。倘若第一实体抹除单元存有跳动字节时,存储器管理电路还用以对第一实体抹除单元执行抹除操作。
在本发明的一实施例中,上述的存储器管理电路还用以在对第一实体抹除单元执行抹除操作之后,从该些实体抹除单元中选择一第二实体抹除单元,并且将属于该第一逻辑地址的有效数据从对应该第一逻辑地址的实体抹除单元中搬移到该第二实体抹除单元。
在本发明的一实施例中,存储器管理电路判断储存在第一实体抹除单元的实体程序化单元之中的第一实体程序化单元中的数据发生错误字节的数目是否大于错误字节数门限值且非大于最大可校正错误字节数。倘若储存在第一实体程序化单元中的数据发生错误字节的数目大于错误字节数门限值且非大于最大可校正错误字节数时,存储器管理电路识别此第一实体抹除单元存有跳动字节。
在本发明的一实施例中,在判断第一实体抹除单元是否存有跳动字节之前,存储器管理电路还用以判断在将属于第一逻辑地址的有效数据从映射第一逻辑地址的实体抹除单元中搬移到第一实体抹除单元期间存储器储存装置是否发生异常断电。倘若判断发生异常断电时,存储器管理电路才执行上述判断第一实体抹除单元是否存有跳动字节的操作。
在本发明的一实施例中,上述的第一实体程序化单元为在发生异常断电前最后一个被写入的实体程序化单元。
在本发明的一实施例中,倘若第一实体抹除单元未存有跳动字节时,存储器管理电路还用以对对映射第一逻辑地址的实体抹除单元执行抹除操作。
本发明实施例提供一种存储器储存装置,包括连接器、可擦写式非易失性存储器模块与存储器控制器。连接器用以耦接至主机系统。可擦写式非易失性存储器模块具有多个实体抹除单元并且每一实体抹除单元具有多个实体程序化单元。存储器控制器耦接至连接器与可擦写式非易失性存储器模块。在此,存储器控制器用以配置多个逻辑地址以映射部分的实体抹除单元。此外,存储器控制器还用以从上述逻辑地址之中选择一第一逻辑地址,其中第一逻辑地址映射上述实体抹除单元之中的多个实体抹除单元。另外,存储器控制器还用以从上述实体抹除单元中选择第一实体抹除单元,将属于第一逻辑地址的有效数据从映射第一逻辑地址的实体抹除单元中搬移到第一实体抹除单元,并且判断第一实体抹除单元是否存有跳动字节。倘若第一实体抹除单元存有跳动字节时,存储器控制器还用以对第一实体抹除单元执行抹除操作。
在本发明的一实施例中,上述的存储器控制器还用以在对第一实体抹除单元执行抹除操作之后,从该些实体抹除单元中选择一第二实体抹除单元,并且将属于该第一逻辑地址的有效数据从对应该第一逻辑地址的实体抹除单元中搬移到该第二实体抹除单元。
在本发明的一实施例中,存储器控制器判断储存在第一实体抹除单元的实体程序化单元之中的第一实体程序化单元中的数据发生错误字节的数目是否大于错误字节数门限值且非大于最大可校正错误字节数。倘若储存在第一实体程序化单元中的数据发生错误字节的数目大于错误字节数门限值且非大于最大可校正错误字节数时,存储器控制器识别此第一实体抹除单元存有跳动字节。
在本发明的一实施例中,在判断第一实体抹除单元是否存有跳动字节之前,存储器控制器还用以判断在将属于第一逻辑地址的有效数据从映射第一逻辑地址的实体抹除单元中搬移到第一实体抹除单元期间存储器储存装置是否发生异常断电。倘若判断发生异常断电时,存储器控制器才执行上述判断第一实体抹除单元是否存有跳动字节的操作。
在本发明的一实施例中,上述的第一实体程序化单元为在发生异常断电前最后一个被写入的实体程序化单元。
在本发明的一实施例中,倘若第一实体抹除单元未存有跳动字节时,存储器控制器还用以对对映射第一逻辑地址的实体抹除单元执行抹除操作。
本发明实施例提供一种数据储存方法,用于可擦写式非易失性存储器模块,此可擦写式非易失性存储器模块具有多个实体抹除单元,每一所述实体抹除单元具有多个实体程序化单元,此些实体抹除单元被至少分组为系统区。本数据储存方法包括:将系统数据写入至系统区的第一实体抹除单元;判断第一实体抹除单元是否存有跳动字节;以及倘若第一实体抹除单元存有跳动字节时,选择第二实体抹除单元,且将系统数据写入至第二实体抹除单元。
在本发明的一实施例中,上述的数据储存方法还包括将第一实体抹除单元的有效数据搬移至第二实体抹除单元。
在本发明的一实施例中,上述的判断第一实体抹除单元是否存有跳动字节的步骤包括:判断储存在第一实体抹除单元的实体程序化单元之中的第一实体程序化单元中的数据发生错误字节的数目是否大于错误字节数门限值且非大于最大可校正错误字节数;以及倘若储存在第一实体程序化单元中的数据发生错误字节的数目大于错误字节数门限值且非大于最大可校正错误字节数时,识别第一实体抹除单元存有跳动字节,其中系统数据被写入至第一实体程序化单元。
在本发明的一实施例中,上述的数据储存方法还包括:在将第一实体抹除单元中的有效数据搬移至第二实体抹除单元之后,对第一实体抹除单元执行抹除操作。
基于上述,本发明范例实施例的数据储存方法、存储器控制器与存储器储存装置能够有效地确保储存数据的可靠度,由此避免数据遗失。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所示附图作详细说明如下。
附图说明
图1是本发明一实施例所示出的主机系统与存储器储存装置的示意图;
图2是本发明一实施例所示出的电脑、输入/输出装置与存储器储存装置的示意图;
图3是本发明一实施例所示出的主机系统与存储器储存装置的示意图;
图4是本发明实施例所示出的存储器储存装置的概要方块图;
图5是本发明一实施例所示出的存储器控制器的概要方块图;
图6与图7是本发明一实施例所示出的管理可擦写式非易失性存储器模块的范例的示意图;
图8~图9是本发明一实施例所示出的使用替换实体抹除单元来写入更新数据的范例的示意图;
图10是本发明一实施例所示出的执行数据合并的范例的示意图;
图11~12是本发明一实施例所示出的使用替换实体抹除单元与随机实体抹除单元写入数据与执行数据合并的示意图;
图13是本发明实施例所示出的储存数据的流程图;
图14是本发明一实施例所示出的储存系统数据的示意图;
图15是本发明另一实施例所示出的储存系统数据的示意图;
图16是本发明另一实施例所示出的储存数据的流程图。
附图标记说明:
1000:主机系统;
1100:电脑;
1102:微处理器;
1104:随机存取存储器;
1106:输入/输出装置;
1108:系统总线;
1110:数据传输接口;
1202:鼠标;
1204:键盘;
1206:显示器;
1208:打印机;
1212:随身盘;
1214:存储卡;
1216:固态硬盘;
1310:数码相机;
1312:SD卡;
1314:MMC卡;
1316:记忆棒;
1318:CF卡;
1320:嵌入式储存装置;
100:存储器储存装置;
102:连接器;
104:存储器控制器;
106:可擦写式非易失性存储器模块;
304(0)~304(R):实体抹除单元;
202:存储器管理电路;
204:主机接口;
206:存储器接口;
252:缓冲存储器;
254:电源管理电路;
256:错误检查与校正电路;
402:数据区;
404:备用区;
406:系统区;
408:取代区;
LBA(0)~LBA(H):逻辑地址;
S1301、S1303、S1305、S1307、S1309、S1311:数据储存方法的步骤;
SD1、SD2:系统数据;
S1601、S1603、S1605、S1607:数据储存方法的步骤。
具体实施方式
一般而言,存储器储存装置(也称,存储器储存系统)包括可擦写式非易失性存储器模块与控制器(也称,控制电路)。通常存储器储存装置是与主机系统一起使用,以使主机系统可将数据写入至存储器储存装置或从存储器储存装置中读取数据。
图1是本发明一实施例所示出的主机系统与存储器储存装置的示意图。
请参照图1,主机系统1000一般包括电脑1100与输入/输出(input/output,简称I/O)装置1106。电脑1100包括微处理器1102、随机存取存储器(randomaccessmemory,简称RAM)1104、系统总线1108与数据传输接口1110。输入/输出装置1106包括如图2的鼠标1202、键盘1204、显示器1206与打印机1208。必须了解的是,图2所示的装置非限制输入/输出装置1106,输入/输出装置1106还可包括其他装置。
在本发明实施例中,存储器储存装置100是通过数据传输接口1110与主机系统1000的其他元件耦接。通过微处理器1102、随机存取存储器1104与输入/输出装置1106的操作可将数据写入至存储器储存装置100或从存储器储存装置100中读取数据。例如,存储器储存装置100可以是如图2所示的随身盘1212、记忆卡1214或固态硬盘(SolidStateDrive,简称SSD)1216等的可擦写式非易失性存储器储存装置。
一般而言,主机系统1000为可实质地与存储器储存装置100配合以储存数据的任意系统。虽然在本实施例中,主机系统1000是以电脑系统来作说明,然而,在本发明另一实施例中主机系统1000可以是数码相机、摄影机、通信装置、音频播放器或视频播放器等系统。例如,在主机系统为数码相机(摄影机)1310时,可擦写式非易失性存储器储存装置则为其所使用的SD卡1312、MMC卡1314、记忆棒(memorystick)1316、CF卡1318或嵌入式储存装置1320(如图3所示)。嵌入式储存装置1320包括嵌入式多媒体卡(EmbeddedMMC,简称eMMC)。值得一提的是,嵌入式多媒体卡是直接耦接在主机系统的基板上。
图4是本发明实施例所示出的存储器储存装置的概要方块图。
请参照图4,存储器储存装置100包括连接器102、存储器控制器104与可擦写式非易失性存储器模块106。
在本发明实施例中,连接器102是相容于安全数字(SecureDigital,简称SD)接口标准。然而,必须了解的是,本发明不限于此,连接器102也可以是符合并列先进附件(ParallelAdvancedTechnologyAttachment,简称PATA)标准、电气和电子工程师协会(InstituteofElectricalandElectronicEngineers,简称IEEE)1394标准、外设组件互联接口(PeripheralComponentInterconnectExpress,简称PCIExpress)标准、通用串行总线(UniversalSerialBus,简称USB)标准、串行高级技术附件(SerialAdvancedTechnologyAttachment,简称SATA)标准、超高速一代(UltraHighSpeed-I,简称UHS-I)接口标准、超高速二代(UltraHighSpeed-II,简称UHS-II)接口标准、记忆棒(MemoryStick,简称MS)接口标准、多媒体储存卡(MultiMediaCard,简称MMC)接口标准、嵌入式多媒体储存卡(EmbeddedMultimediaCard,简称eMMC)接口标准、通用闪存存储器(UniversalFlashStorage,简称UFS)接口标准、小型快闪(CompactFlash,简称CF)接口标准、整合式驱动电子接口(IntegratedDeviceElectronics,简称IDE)标准或其他适合的标准。
存储器控制器104用以执行以硬件形式或固件形式实现的多个逻辑门或控制指令,并且根据主机系统1000的指令在可擦写式非易失性存储器模块106中进行数据的写入、读取与抹除等操作。
可擦写式非易失性存储器模块106是耦接至存储器控制器104,并且用以储存主机系统1000所写入的数据。可擦写式非易失性存储器模块106具有实体抹除单元304(0)~304(R)。例如,实体抹除单元304(0)~304(R)可属于同一个存储器晶粒(die)或者属于不同的存储器晶粒。每一实体抹除单元分别具有复数个实体程序化单元,并且属于同一个实体抹除单元的实体程序化单元可被独立地写入且被同时地抹除。例如,每一实体抹除单元是由128个实体程序化单元所组成。然而,必须了解的是,本发明不限于此,每一实体抹除单元也可由64个实体程序化单元、256个实体程序化单元或其他任意个实体程序化单元所组成。
更详细来说,实体抹除单元为抹除的最小单位。也即,每一实体抹除单元含有最小数目的一并被抹除的存储单位。实体程序化单元为程序化的最小单元。即,实体程序化单元为写入数据的最小单元。每一实体程序化单元通常包括数据字节区与冗余字节区。数据字节区包含多个实体存取地址用以储存使用者的数据,而冗余字节区用以储存系统的数据(例如,控制信息与错误更正码)。在本范例实施例中,每一个实体程序化单元的数据字节区中会包含4个实体存取地址,且一个实体存取地址的大小为512字节组(byte)。然而,在其他范例实施例中,数据字节区中也可包含数目更多或更少的实体存取地址,本发明并不限制实体存取地址的大小以及个数。例如,在一范例实施例中,实体抹除单元为实体区块,并且实体程序化单元为实体页面或实体扇区,但本发明不以此为限。
在本实施例中,可擦写式非易失性存储器模块106为复数阶存储单位(TrinaryLevelCell,简称TLC)NAND型闪存存储器模块,即一个存储单位中可储存至少3个字节数据。然而,本发明不限于此,可擦写式非易失性存储器模块106也可是单阶存储单位(SingleLevelCell,简称SLC)NAND型闪存存储器模块、多阶存储单位(MultiLevelCell,简称MLC)NAND型闪存存储器模块、其他闪存存储器模块或其他具有相同特性的存储器模块。
图5是本发明一实施例所示出的存储器控制器的概要方块图。必须了解的是,图5所示的存储器控制器的结构仅为一范例,本发明不以此为限。
请参照图5,存储器控制器104包括存储器管理电路202、主机接口204与存储器接口206。
存储器管理电路202用以控制存储器控制器104的整体操作。具体来说,存储器管理电路202具有多个控制指令,并且在存储器储存装置100操作时,此些控制指令会被执行以进行数据的写入、读取与抹除等操作。
在本实施例中,存储器管理电路202的控制指令是以固件形式来实现。例如,存储器管理电路202具有微处理器单元(未示出)与只读存储器(未示出),并且此些控制指令是被烧录至此只读存储器中。当存储器储存装置100操作时,此些控制指令会由微处理器单元来执行以进行数据的写入、读取与抹除等操作。
在本发明另一实施例中,存储器管理电路202的控制指令也可以程序码形式储存于可擦写式非易失性存储器模块106的特定区域(例如,存储器模块中专用于存放系统数据的系统区)中。此外,存储器管理电路202具有微处理器单元(未示出)、只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有驱动码,并且当存储器控制器104被致能时,微处理器单元会先执行此驱动码段来将储存于可擦写式非易失性存储器模块106中的控制指令载入至存储器管理电路202的随机存取存储器中。之后,微处理器单元会运转此些控制指令以进行数据的写入、读取与抹除等操作。
此外,在本发明另一实施例中,存储器管理电路202的控制指令也可以一硬件形式来实现。例如,存储器管理电路202包括微控制器、存储单位管理电路、存储器写入电路、存储器读取电路、存储器抹除电路与数据处理电路。存储单位管理电路、存储器写入电路、存储器读取电路、存储器抹除电路与数据处理电路是耦接至微控制器。其中,存储单位管理电路用以管理可擦写式非易失性存储器模块106的实体抹除单元;存储器写入电路用以对可擦写式非易失性存储器模块106下达写入指令以将数据写入至可擦写式非易失性存储器模块106中;存储器读取电路用以对可擦写式非易失性存储器模块106下达读取指令以从可擦写式非易失性存储器模块106中读取数据;存储器抹除电路用以对可擦写式非易失性存储器模块106下达抹除指令以将数据从可擦写式非易失性存储器模块106中抹除;而数据处理电路用以处理欲写入至可擦写式非易失性存储器模块106的数据以及从可擦写式非易失性存储器模块106中读取的数据。
主机接口204是耦接至存储器管理电路202并且用以接收与识别主机系统1000所传送的指令与数据。也就是说,主机系统1000所传送的指令与数据会通过主机接口204来传送至存储器管理电路202。在本实施例中,主机接口204是相容于SD标准。然而,必须了解的是本发明不限于此,主机接口204也可以是相容于PATA标准、IEEE1394标准、PCIExpress标准、USB标准、SATA标准、UHS-I接口标准、UHS-II接口标准、MS标准、MMC标准、eMMC接口标准、UFS接口标准、CF标准、IDE标准或其他适合的数据传输标准。
存储器接口206是耦接至存储器管理电路202并且用以存取可擦写式非易失性存储器模块106。也就是说,欲写入至可擦写式非易失性存储器模块106的数据会经由存储器接口206转换为可擦写式非易失性存储器模块106所能接受的格式。
在本发明一实施例中,存储器控制器104还包括缓冲存储器252、电源管理电路254以及错误检查与校正电路256。
缓冲存储器252是耦接至存储器管理电路202并且用以暂存来自于主机系统1000的数据与指令或来自于可擦写式非易失性存储器模块106的数据。
电源管理电路254是耦接至存储器管理电路202并且用以控制存储器储存装置100的电源。
错误检查与校正电路256是耦接至存储器管理电路202并且用以执行错误检查与校正程序以确保数据的正确性。在本实施例中,当存储器管理电路202从主机系统1000中接收到写入指令时,错误检查与校正电路256会为对应此写入指令的数据产生对应的错误检查与校正码(ErrorCheckingandCorrectingCode,简称ECCCode),并且存储器管理电路202会将对应此写入指令的数据与对应的错误检查与校正码写入至可擦写式非易失性存储器模块106中。之后,当存储器管理电路202从可擦写式非易失性存储器模块106中读取数据时会同时读取此数据对应的错误检查与校正码,并且错误检查与校正电路256会依据此错误检查与校正码对所读取的数据执行错误检查与校正程序。具体来说,错误检查与校正电路256会被设计能够校正一数目的错误字节(以下称为最大可校正错误字节数)。例如,最大可校正错误字节数为24。倘若发生在所读取的数据的错误字节的数目非大于24个时,错误检查与校正电路256就能够依据错误校正码将错误字节校正回正确的值。反之,错误检查与校正电路256就会回报错误校正失败且存储器管理电路202会将指示数据已遗失的信息传送给主机系统1000。
图6与图7是本发明一实施例所示出的管理可擦写式非易失性存储器模块的范例的示意图。
必须了解的是,在此描述可擦写式非易失性存储器模块106的实体抹除单元的操作时,以“提取”、“交换”、“分组”、“轮替”等词来操作实体抹除单元是逻辑上的概念。也就是说,可擦写式非易失性存储器模块的实体抹除单元的实际位置并未变动,而是逻辑上对可擦写式非易失性存储器模块的实体抹除单元进行操作。
请参照图6,存储器控制器104(或存储器管理电路202)会将可擦写式非易失性存储器模块106的实体抹除单元304(0)~304(R)逻辑地分组为(或指派至)数据区(dataarea)402、备用区(sparearea)404、系统区(systemarea)406与取代区(replacementarea)408。
逻辑上属于数据区402与备用区404的实体抹除单元是用以储存来自于主机系统1000的数据。具体来说,数据区402的实体抹除单元(也称为数据实体抹除单元)是被视为已储存数据的实体抹除单元,而备用区404的实体抹除单元(也称为闲置实体抹除单元)是用以写入新数据的实体抹除单元。例如,当从主机系统1000接收到写入指令与欲写入的数据时,存储器控制器104(或存储器管理电路202)会从备用区404中提取实体抹除单元,整理欲写入的数据并且将数据写入至所提取的实体抹除单元中。
逻辑上属于系统区406的实体抹除单元是用以记录系统数据,其中此系统数据包括关于存储器晶片的制造商与型号、存储器晶片的实体抹除单元数、每一实体抹除单元的实体程序化单元数等。
逻辑上属于取代区408中的实体抹除单元是替代实体抹除单元。例如,可擦写式非易失性存储器模块106在出厂时会预留4%的实体抹除单元作为更换使用。也就是说,当数据区402、备用区404或系统区406中的实体抹除单元损毁时,预留在取代区408中的实体抹除单元是用以取代损坏的实体抹除单元(即,坏实体抹除单元(badblock))。因此,倘若取代区408中仍存有正常的实体抹除单元且发生实体抹除单元损毁时,存储器控制器104(或存储器管理电路202)会从取代区408中提取正常的实体抹除单元来更换损毁的实体抹除单元。倘若取代区408中无正常的实体抹除单元且发生实体抹除单元损毁时,则存储器控制器104会将整个存储器储存装置100宣告为写入保护(writeprotect)状态,而无法再写入数据。
特别是,数据区402、备用区404、系统区406与取代区408的实体抹除单元的数量会依据不同的存储器规格而有所不同。此外,必须了解的是,在存储器储存装置100的操作中,实体抹除单元关联至数据区402、备用区404、系统区406与取代区408的分组关系会动态地变动。例如,当备用区404中的实体抹除单元损坏而被取代区408的实体抹除单元取代时,则原本取代区408的实体抹除单元会被关联至备用区404。
请参照图7,为了使主机系统1000能够方便地对以轮替方式储存数据的实体区块进行存取,存储器控制器104会配置逻辑地址LBA(0)~LBA(H)来映射数据区402的实体抹除单元,由此主机系统1000能够直接地依据逻辑地址来进行数据的写入与读取。在本发明实施例中,存储器控制器104(或存储器管理电路202)会维护逻辑地址-实体抹除单元映射表(logicaladdress-physicalerasingunitmappingtable)以记录逻辑地址LBA(0)~LBA(H)与数据区402的实体抹除单元之间的映射关系(即,映射信息)。
图8~图9是本发明一实施例所示出的使用替换实体抹除单元来写入更新数据的范例的示意图。
请同时参照图8~图9,例如,在逻辑地址LBA(0)是映射至实体抹除单元304(0)的映射状态下,当存储器控制器104从主机系统1000中接收到写入指令而欲写入更新数据至属于逻辑地址LBA(0)的逻辑程序化单元时,存储器控制器104会依据逻辑地址-实体抹除单元映射表识别逻辑地址LBA(0)目前是映射至实体抹除单元304(0)并且从备用区404中提取实体抹除单元304(D+1)来写入更新数据。然而,在写入更新数据至实体抹除单元304(D+1)的过程中,存储器控制器104不会立刻将实体抹除单元304(0)中的所有有效数据搬移至实体抹除单元304(D+1)而抹除实体抹除单元304(0)。具体来说,存储器控制器104(或存储器管理电路202)会从实体抹除单元304(0)中读取欲写入实体程序化单元之前的有效数据(即,实体抹除单元304(0)的第0实体程序化单元与第1实体程序化单元中的数据)。之后,存储器控制器104(或存储器管理电路202)会将实体抹除单元304(0)中欲写入实体程序化单元之前的有效数据写入至实体抹除单元304(D+1)的第0实体程序化单元与第1实体程序化单元中(如图8所示),并且将新数据写入至实体抹除单元304(D+1)的第2~4个实体程序化单元中(如图9所示)。此时,存储器控制器104即完成写入的操作。因为实体抹除单元304(0)中的有效数据有可能在下一个操作(例如,写入指令)中变成无效,因此立刻将实体抹除单元304(0)中的有效数据搬移至实体抹除单元304(D+1)可能会造成无谓的搬移。此外,数据必须依照实体程序化单元的写入顺序写入至实体抹除单元内的实体程序化单元,因此,存储器控制器104(或存储器管理电路202)仅会先搬移欲写入实体程序化单元之前的有效数据(即,储存在实体抹除单元304(0)的第0实体程序化单元与第1实体程序化单元中数据),并且暂不搬移其余有效数据(即,储存在实体抹除单元304(0)的第5~K实体程序化单元中数据)。也就是说,实体抹除单元304(0)与实体抹除单元304(D+1)的实体程序化单元是映射至逻辑地址LBA(0)的逻辑程序化单元。
在本实施例中,暂时地维持此等暂态关系的操作称为开启(open)母子实体抹除单元,并且原实体抹除单元(例如,上述实体抹除单元304(0))称为母实体抹除单元或已更新实体抹除单元,而用以替换母实体抹除单元的实体抹除单元(例如,上述实体抹除单元304(D+1))称为子实体抹除单元或替换实体抹除单元。在此,用以储存属于同一个逻辑地址的数据的母实体抹除单元与子实体抹除单元称为母子实体抹除单元组。
值得一提的是,备用区404中实体抹除单元的数目是有限的,因此,在存储器储存装置100操作期间,已开启的母子实体抹除单元组的数目也会受到限制。也就是说,在存储器储存装置100操作期间,已开启的母子实体抹除单元组的数目不能大于一母子实体抹除单元数门限值。例如,在本实施例中,母子实体抹除单元数门限值被设定为3,但本发明不限于此。因此,当存储器储存装置100接收到来自于主机系统1000的写入指令时,倘若已开启母子实体抹除单元组的数目达到母子实体抹除单元数门限值时,存储器控制器104需执行数据合并(datamerge)操作以关闭至少一组目前已开启的母子实体抹除单元组后才可执行此写入指令。具体来说,在数据合并(datamerge)操作中,存储器控制器104会将母实体抹除单元与子实体抹除单元的数据整并至一个实体抹除单元。
图10是本发明一实施例所示出的执行数据合并的范例的示意图。
请参照图10,倘若需要将图9所示的实体抹除单元304(0)与实体抹除单元304(D+1)的有效数据合并时,存储器控制器104(或存储器管理电路202)会从实体抹除单元304(0)中读取剩余的有效数据(即,实体抹除单元304(0)的第5~K实体程序化单元中的数据),并且将实体抹除单元304(0)中剩余的有效数据写入至实体抹除单元304(D+1)的第5实体程序化单元~第K实体程序化单元中。之后,存储器控制器104(或存储器管理电路202)会将实体抹除单元304(D+1)关联至数据区502。也就是说,存储器控制器104(或存储器管理电路202)会在逻辑地址-实体抹除单元映射表中将逻辑地址LBA(0)重新映射至实体抹除单元304(D+1)。此外,存储器控制器104(或存储器管理电路202)会对实体抹除单元304(0)执行抹除操作,并且将抹除后的实体抹除单元304(0)关联至备用区404。例如,在本范例实施例中,存储器控制器104(或存储器管理电路202)会建立闲置区实体抹除单元表(未示出)来记录目前被关联至备用区404的实体抹除单元。
由于在开启母子实体抹除单元操作时,逻辑地址的逻辑程序化单元会映射至不同的实体抹除单元的实体程序化单元,因此,例如,存储器控制器104(或存储器管理电路202)使用变数表(VariableTable)来记录逻辑地址与母子实体抹除单元之间的暂态关系。
除了上述使用替换实体抹除单元来写入更新数据外,在本实施例中,存储器控制器104(或存储器管理电路202)还会从备用区404中提取至少一实体抹除单元作为随机(Random)实体抹除单元并且使用随机实体抹除单元来写入更新数据。例如,倘若主机系统1000欲更新的逻辑程序化单元的数据已被写入至替换实体抹除单元时,此更新数据会被暂时写入至随机实体抹除单元。
图11~12是本发明一实施例所示出的使用替换实体抹除单元与随机实体抹除单元写入数据与执行数据合并的示意图。
请参照图11,假设实体抹除单元304(D+2)被提取作为随机实体抹除单元并且在图9所示的储存状态下主机系统1000欲写入更新数据至逻辑地址LBA(0)的第1逻辑程序化单元时,存储器管理电路202会将此更新数据写入至随机实体抹除单元中第一个空的实体程序化单元(例如,实体抹除单元304(D+2)的第0实体程序化单元)中。
在本实施例中,当目前所使用的随机实体抹除单元已被写满时,存储器管理电路202会再从备用区404中提取另一个实体抹除单元作为新的随机实体抹除单元,直到备用区404中实体抹除单元的数目小于预先定义数目为止。具体来说,备用区404的实体抹除单元是有限的,因此,作为随机实体抹除单元的实体抹除单元的数目也会受到限制。当备用区404中实体抹除单元的数目小于预先定义数目时,存储器控制器104(或存储器管理电路202)会执行数据合并操作,对所储存的数据皆为无效数据的随机实体抹除单元执行抹除操作并且将已抹除的实体抹除单元关联至备用区404。由此,在执行下一个写入指令时,存储器管理电路202就可再从备用区404提取空的实体抹除单元作为随机实体抹除单元。
请参照图12,倘若在图11所示的状态下对逻辑地址LBA(0)执行数据合并操作时,存储器控制器104(或存储器管理电路202)会从备用区404中提取一个空的实体抹除单元304(D+3),将属于逻辑地址LBA(0)的有效数据从实体抹除单元304(0)、替换实体抹除单元304(D+1)与随机实体抹除单元304(D+2)中复制到实体抹除单元304(D+3),并且将逻辑地址LBA(0)重新映射至实体抹除单元304(D+3)。
具体来说,在有效数据复制过程中,实体抹除单元304(0)的第0实体程序化单元中的数据会被读取并被写入至实体抹除单元304(D+3)的第0实体程序化单元。然后,实体抹除单元304(D+2)的第1实体程序化单元中的数据会被读取并被写入至实体抹除单元304(D+3)的第1实体程序化单元。之后,实体抹除单元304(D+1)的第2~4个实体程序化单元中的数据会依序地被读取并被写入至实体抹除单元304(D+3)的第2~4个实体程序化单元。最后,实体抹除单元304(0)的第5~K实体程序化单元中的数据会被读取并被写入至实体抹除单元304(D+3)的第5~K个实体程序化单元。特别是,在完成有效数据的搬移后,存储器控制器104(或存储器管理电路202)会在逻辑地址-实体抹除单元映射表中记录逻辑地址LBA(0)被重新映射至实体抹除单元304(D+3)(即,将实体抹除单元304(D+3)关联至数据区402),对实体抹除单元304(0)、实体抹除单元304(D+1)与实体抹除单元304(D+2)执行抹除操作(即,将抹除实体抹除单元304(0)、实体抹除单元304(D+1)与实体抹除单元304(D+2)上的数据)并且将实体抹除单元304(0)、实体抹除单元304(D+1)与实体抹除单元304(D+2)关联至备用区404。
如上所述,本发明实施例中,在存储器储存装置100操作期间,存储器控制器104(或存储器管理电路202)会从备用区404中提取实体抹除单元作为已被写入数据的实体抹除单元(即,数据区402的数据实体抹除单元)的替换实体抹除单元或随机实体抹除单元来暂存数据,由此提升数据写入的效率。必须了解的是,替换实体抹除单元或随机实体抹除单元的数目不限于1个。例如,存储器控制器104(或存储器管理电路202)可为1个数据实体抹除单元配置多个替换实体抹除单元或多个随机实体抹除单元来写入更新数据。在此,替换实体抹除单元与随机实体抹除单元统称为暂态实体抹除单元。
在本实施例中,当将主机系统1000欲储存的数据写入至替换实体抹除单元或随机实体抹除单元后,存储器控制器104(或存储器管理电路202)就会将指示已完成写入指令的回应传送给主机系统1000,并且之后于适当时机(例如,闲置状态)进行上述数据合并程序。
然而,倘若进行上述数据合并期间存储器储存装置100发生异常断电,有可能造成数据未顺利搬移至新的实体抹除单元。在本实施例中,存储器控制器104(或存储器管理电路202)会通过错误校正程序(或错误检查与校正电路256)来判断搬移的数据是否已被正确地写入至新的实体抹除单元。
例如,如图12所示,倘若在将逻辑地址LBA(0)的有效数据从实体抹除单元304(0)、实体抹除单元304(D+1)与实体抹除单元304(D+2)合并至实体抹除单元304(D+3)期间发生异常断电时,在存储器储存装置100重新上电后,存储器控制器104(或存储器管理电路202)会扫瞄实体抹除单元的冗余字节区并据此识别出有实体抹除单元304(0)、实体抹除单元304(D+1)、实体抹除单元304(D+2)与实体抹除单元304(D+3)存有属于逻辑地址LBA(0)的数据并且实体抹除单元304(D+3)为最后写入的实体抹除单元。此外,存储器控制器104(或存储器管理电路202)会确认实体抹除单元304(D+3)中最后一个被写入数据的实体程序化单元(例如,第2实体程序化单元)并且判断储存在实体抹除单元304(D+3)的第2实体程序化单元上的数据是否存有错误字节。例如,错误检查与校正电路256)会根据从实体抹除单元304(D+3)的第2实体程序化单元的冗余字节区所读取的错误校正码来对储存在实体抹除单元304(D+3)的第2实体程序化单元上的数据执行错误检查与校正程序。
倘若储存在实体抹除单元304(D+3)的第2实体程序化单元上的数据未存有错误字节时,存储器控制器104(或存储器管理电路202)会继续使用实体抹除单元304(D+3)来完成数据合并程序。
倘若储存在实体抹除单元304(D+3)的第2实体程序化单元上的数据存有错误字节且无法被错误校正(即,发生在数据上的错误字节的数目大于最大可校正错误字节数)时,存储器控制器104(或存储器管理电路202)会对实体抹除单元304(D+3)执行抹除操作并保持以实体抹除单元304(0)、实体抹除单元304(D+1)与实体抹除单元304(D+2)来储存逻辑地址LBA(0)的有效数据(即,未完成数据合并程序)。
倘若储存在实体抹除单元304(D+3)的第2实体程序化单元上的数据存有错误字节且可被错误校正(即,发生在数据上的错误字节的数目非大于最大可校正错误字节数)时,存储器控制器104(或存储器管理电路202)会判断实体抹除单元304(D+3)是否存有跳动字节(dancingbit)。在此,实体抹除单元存有跳动字节是一种实体抹除单元所储存的电荷处于不稳定的现象。特别是,当一个实体抹除单元存有跳动字节时,此实体抹除单元上的数据也许可被正确读取,但在一段时间后,数据就会遗失。
例如,在本发明一实施例中,存储器控制器104(或存储器管理电路202)会判断发生在储存在实体抹除单元304(D+3)的第2实体程序化单元上的数据中的错误字节的数目是否大于错误字节数门限值。倘若发生在储存在实体抹除单元304(D+3)的第2实体程序化单元上的数据中的错误字节的数目大于错误字节数门限值时,存储器控制器104(或存储器管理电路202)会识别实体抹除单元304(D+3)存有跳动字节。例如,在本实施例中,错误字节数门限值被设定为20,但本发明不限于此。
倘若判断实体抹除单元304(D+3)非存有跳动字节时,存储器控制器104(或存储器管理电路202)会继续使用实体抹除单元304(D+3)来完成数据合并程序。反之,判断实体抹除单元304(D+3)存有跳动字节时,存储器控制器104(或存储器管理电路202)会对实体抹除单元304(D+3)执行抹除操作并保持以实体抹除单元304(0)、实体抹除单元304(D+1)与实体抹除单元304(D+2)来储存逻辑地址LBA(0)的有效数据(即,未完成数据合并程序)。
基于上述,在执行数据合并程序并发生异常断电时,存储器控制器104(或存储器管理电路202)会通过确认实体抹除单元是否存有跳动字节,由此确保数据储存的可靠性。
图13是本发明实施例所示出的储存数据的流程图。
请参照图13,当欲执行数据合并程序时,在步骤S1301中,存储器控制器104(或存储器管理电路202)会从数据区402的实体抹除单元中选择其中一个已处于母子实体抹除单元暂态的数据实体抹除单元,其中此数据实体抹除单元是映射第一逻辑地址且至少一个实体抹除单元从备用区404中被提取作为对应此数据实体抹除单元的暂态实体抹除单元。
在步骤S1303中,存储器控制器104(或存储器管理电路202)会从备用区404选择一个实体抹除单元(以下称为第一实体抹除单元),且将属于第一逻辑地址的有效数据从数据实体抹除单元与暂态实体抹除单元中搬移到第一实体抹除单元。
在步骤S1305中,存储器控制器104(或存储器管理电路202)会判断是否发生异常断电。
倘若未发生异常断电时,则图13的流程会被结束。具体来说,倘若在执行数据合并程序期间,未发生异常状态,存储器控制器104(或存储器管理电路202)会识别数据合并程序顺利完成。
倘若发生异常断电时,在步骤S1307中,存储器控制器104(或存储器管理电路202)会判断第一实体抹除单元是否存有跳动字节。
倘若第一实体抹除单元未存有该跳动字节时,在步骤S1309中,存储器控制器104(或存储器管理电路202)会继续将属于第一逻辑地址的有效数据从数据实体抹除单元与暂态实体抹除单元中搬移到第一实体抹除单元。
倘若第一实体抹除单元存有该跳动字节时,在步骤S1311中,存储器控制器104(或存储器管理电路202)会对第一实体抹除单元执行抹除操作且将第一实体抹除单元关联至备用区404。
在本发明另一实施例中,存储器控制器104(或存储器管理电路202)还会在步骤S1311后立即从备用区的实体抹除单元中选择第二实体抹除单元,并且将属于第一逻辑地址的有效数据从数据实体抹除单元与暂态实体抹除单元中搬移到第二实体抹除单元,以完成数据合并程序。然而,本发明不限于此,存储器控制器104(或存储器管理电路202)也可在其他适当时机,重新进行此数据合并程序。
值得一提的是,除了在执行数据合并程序时,通过判断实体抹除单元是否存有跳动字节来确保数据的可靠度之外,在本发明另一实施例中,存储器控制器104(或存储器管理电路202)还可在将系统数据写入至系统区406时,判断实体抹除单元是否存有跳动字节以确保系统数据的可靠度。
如前所述,系统区406会初始地配置有实体抹除单元304(N+1)~304(S),以储存系统数据。一般来说,系统数据的大小是小于一个实体抹除单元的容量,因此,存储器控制器104(或存储器管理电路202)接续的使用系统实体抹除单元的实体程序化单元来写入更新的系统数据。
图14是本发明一实施例所示出的储存系统数据的示意图。
请参照图14,在此,假设系统数据SD1需占用一个实体程序化单元容量。当将系统数据SD1写入至系统区406的实体抹除单元304(N+1)的第0实体程序化单元时,存储器控制器104(或存储器管理电路202)会判断实体抹除单元304(N+1)是否存有跳动字节。
例如,类似上述,存储器控制器104(或存储器管理电路202)会读取写入至实体抹除单元304(N+1)的第0实体程序化单元的系统数据SD1并且判断系统数据SD1中的错误字节的数目是否大于错误字节数门限值且非大于最大可校正错误字节数。倘若系统数据SD1中的错误字节的数目大于错误字节数门限值且非大于最大可校正错误字节数时,存储器控制器104(或存储器管理电路202)会判断实体抹除单元304(N+1)存有跳动字节。反之,存储器控制器104(或存储器管理电路202)会判断实体抹除单元304(N+1)未存有跳动字节
特别是,倘若实体抹除单元304(N+1)存有跳动字节时,存储器控制器104(或存储器管理电路202)会选择系统区406中的另一个实体抹除单元(例如,实体抹除单元304(N+2)),并且将系统数据SD1写入至实体抹除单元304(N+2)。同样地,存储器控制器104(或存储器管理电路202)会在写入系统数据SD1后,判断此实体抹除单元是否存有跳动字节。值得一提的是,倘若实体抹除单元304(N+1)储存所写入的系统数据SD1之外,已储存有其他有效数据时,在本发明另一实施例中,存储器控制器104(或存储器管理电路202)会先将有效数据从实体抹除单元304(N+1)搬移至实体抹除单元304(N+2),之后再将系统数据SD1写入至实体抹除单元304(N+2)。
倘若实体抹除单元304(N+1)未存有跳动字节时,则存储器控制器104(或存储器管理电路202)会识别系统数据SD1已被可靠地储存。接着,当欲以新的系统数据SD2替换系统数据SD1时,存储器控制器104(或存储器管理电路202)会将系统数据SD2写入至系统区406的实体抹除单元304(N+1)的第1实体程序化单元,并且再次判断实体抹除单元304(N+1)是否存有跳动字节(如图15所示)。因此,每当更新系统数据时,存储器控制器104(或存储器管理电路202)可确保系统数据的正确性。
值得一提的是,尽管在本实施例中,存储器存装置100于初始化时多个实体抹除单元会被配置至系统区406,但本发明不限于此。在本发明另一实施例中,系统区406也初始地被配置一个实体抹除单元,并且当需要空的实体抹除单元来储存系统数据时,存储器控制器104(或存储器管理电路202)会从备用区404中选择一个实体抹除单元作为系统区406的实体抹除单元。此外,系统区406中储存无效数据的实体抹除单元也可被抹除后关联至备用区404,以再重新利用。
图16是本发明另一实施例所示出的储存数据的流程图,示出写入系统数据至系统区的步骤。
请参照图16,在步骤S1601中,存储器控制器104(或存储器管理电路202)会将系统数据写入至系统区406的实体抹除单元(以下称为第一实体抹除单元)。
在步骤S1603中,存储器控制器104(或存储器管理电路202)会判断第一实体抹除单元是否存有跳动字节。
倘若第一实体抹除单元未存有该跳动字节时,则图16的流程会结束。
倘若第一实体抹除单元存有该跳动字节时,在步骤S1605中,存储器控制器104(或存储器管理电路202)会从系统区406中选择另一实体抹除单元(以下称为第二实体抹除单元)。并且,在步骤S1607中,存储器控制器104(或存储器管理电路202)会将系统数据写入至第二实体抹除单元。特别是,在另一实施例中,在执行步骤S1607时,存储器控制器104(或存储器管理电路202)会判断第一实体抹除单元是否存有其他有效数据。倘若第一实体抹除单元存有其他有效数据时,存储器控制器104(或存储器管理电路202)还会将有效数据从第一实体抹除单元搬移至第二实体抹除单元。
在本发明另一实施例中,存储器控制器104(或存储器管理电路202)还会在步骤S1607后对第一实体抹除单元执行抹除操作且将第一实体抹除单元关联至备用区404。
综上所述,本发明一实施例的数据储存方法、存储器控制器与存储器储存装置通过在异常断电后验证在数据合并过程中所程序化的实体程序化单元中是否发生跳动字节,并且在发生跳动字节时,回复数据合并前的状态,由此有效地确保数据的可靠度与正确性。此外,本发明一实施例的数据储存方法、存储器控制器与存储器储存装置在写入系统数据时会验证所程序化的实体程序化单元中是否发生跳动字节,并且在发生跳动字节时,将所写入的数据搬移至另一个地址,由此有效地确保系统数据的可靠度与正确性。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (18)
1.一种数据储存方法,用于一存储器储存装置,其特征在于,该存储器储存装置具有一可擦写式非易失性存储器模块,该可擦写式非易失性存储器模块具有多个实体抹除单元,每一所述实体抹除单元具有多个实体程序化单元,多个逻辑地址被配置以映射该些实体抹除单元的一部分,该数据储存方法包括:
从该些逻辑地址之中选择一第一逻辑地址,其中该第一逻辑地址映射该些实体抹除单元之中的多个实体抹除单元;
从该些实体抹除单元中选择一第一实体抹除单元;
将属于该第一逻辑地址的有效数据从对应该第一逻辑地址的该些实体抹除单元中搬移到该第一实体抹除单元;
判断该第一实体抹除单元是否存有一跳动字节(dancingbit);以及
倘若该第一实体抹除单元存有该跳动字节时,对该第一实体抹除单元执行一抹除操作,其中所述判断该第一实体抹除单元是否存有该跳动字节的步骤包括:
判断储存在该第一实体抹除单元的实体程序化单元之中的一第一实体程序化单元中的数据发生错误字节的数目是否大于一错误字节数门限值且非大于一最大可校正错误字节数;以及
倘若储存在该第一实体程序化单元中的数据发生错误字节的数目大于该错误字节数门限值且非大于该最大可校正错误字节数时,识别该第一实体抹除单元存有该跳动字节。
2.根据权利要求1所述的数据储存方法,其特征在于,还包括:
在对该第一实体抹除单元执行该抹除操作之后,从该些实体抹除单元中选择一第二实体抹除单元,并且将属于该第一逻辑地址的有效数据从对应该第一逻辑地址的该些实体抹除单元中搬移到该第二实体抹除单元。
3.根据权利要求1所述的数据储存方法,其特征在于,还包括:
在判断该第一实体抹除单元是否存有该跳动字节之前,判断在将属于该第一逻辑地址的有效数据从对应该第一逻辑地址的该些实体抹除单元中搬移到该第一实体抹除单元期间该存储器储存装置是否发生一异常断电,
其中所述判断该第一实体抹除单元是否存有该跳动字节的步骤是在该存储器储存装置发生该异常断电重新上电后被执行。
4.根据权利要求3所述的数据储存方法,其特征在于,该第一实体程序化单元为在该存储器储存装置发生该异常断电前最后一个被写入的实体程序化单元。
5.根据权利要求1所述的数据储存方法,其特征在于,还包括:
倘若该第一实体抹除单元未存有该跳动字节时,将对应该第一逻辑地址的该些实体抹除单元执行该抹除操作。
6.一种存储器控制器,用于控制一存储器储存装置中的一可擦写式非易失性存储器模块,其特征在于,该可擦写式非易失性存储器模块具有多个实体抹除单元并且每一实体抹除单元具有多个实体程序化单元,该存储器控制器包括:
一主机接口,用以耦接至一主机系统;
一存储器接口,用以耦接至该可擦写式非易失性存储器模块;以及
一存储器管理电路,耦接至该主机接口与该存储器接口,
其中该存储器管理电路用以配置多个逻辑地址以映射该些实体抹除单元的一部分,
其中该存储器管理电路还用以从该些逻辑地址之中选择一第一逻辑地址,其中该第一逻辑地址映射该些实体抹除单元之中的多个实体抹除单元,
其中该存储器管理电路还用以从该些实体抹除单元中选择一第一实体抹除单元,且将属于该第一逻辑地址的有效数据从对应该第一逻辑地址的该些实体抹除单元中搬移到该第一实体抹除单元,
其中该存储器管理电路还用以判断该第一实体抹除单元是否存有一跳动字节,
其中倘若该第一实体抹除单元存有该跳动字节时,该存储器管理电路还用以对该第一实体抹除单元执行一抹除操作,
其中该存储器管理电路判断储存在该第一实体抹除单元的实体程序化单元之中的一第一实体程序化单元中的数据发生错误字节的数目是否大于一错误字节数门限值且非大于一最大可校正错误字节数,
其中倘若储存在该第一实体程序化单元中的数据发生错误字节的数目大于该错误字节数门限值且非大于该最大可校正错误字节数时,该存储器管理电路识别该第一实体抹除单元存有该跳动字节。
7.根据权利要求6所述的存储器控制器,其特征在于,该存储器管理电路还用以在对该第一实体抹除单元执行该抹除操作之后,从该些实体抹除单元中选择一第二实体抹除单元,并且将属于该第一逻辑地址的有效数据从对应该第一逻辑地址的该些实体抹除单元中搬移到该第二实体抹除单元。
8.根据权利要求6所述的存储器控制器,其特征在于,在判断该第一实体抹除单元是否存有该跳动字节之前,该存储器管理电路还用以判断在将属于该第一逻辑地址的有效数据从对应该第一逻辑地址的该些实体抹除单元中搬移到该第一实体抹除单元期间该存储器储存装置是否发生一异常断电,
其中倘若判断发生该异常断电时,该存储器管理电路才执行上述判断该第一实体抹除单元是否存有该跳动字节的操作。
9.根据权利要求8所述的存储器控制器,其特征在于,该第一实体程序化单元为在发生该异常断电前最后一个被写入的实体程序化单元。
10.根据权利要求6所述的存储器控制器,其特征在于,倘若该第一实体抹除单元未存有该跳动字节时,该存储器管理电路还用以将对应该第一逻辑地址的该些实体抹除单元执行该抹除操作。
11.一种存储器储存装置,其特征在于,包括:
一连接器,用以耦接至一主机系统;
一可擦写式非易失性存储器模块,具有多个实体抹除单元并且每一实体抹除单元具有多个实体程序化单元;以及
一存储器控制器,耦接至该连接器与该可擦写式非易失性存储器模块,
其中该存储器控制器用以配置多个逻辑地址以映射该些实体抹除单元的一部分,
其中该存储器控制器还用以从该些逻辑地址之中选择一第一逻辑地址,其中该第一逻辑地址映射该些实体抹除单元之中的多个实体抹除单元,
其中该存储器控制器还用以从该些实体抹除单元中选择一第一实体抹除单元,且将属于该第一逻辑地址的有效数据从对应该第一逻辑地址的该些实体抹除单元中搬移到该第一实体抹除单元,
其中该存储器控制器还用以判断该第一实体抹除单元是否存有一跳动字节,
其中倘若该第一实体抹除单元存有该跳动字节时,该存储器控制器还用以对该第一实体抹除单元执行一抹除操作,
其中该存储器控制器判断储存在该第一实体抹除单元的实体程序化单元之中的一第一实体程序化单元中的数据发生错误字节的数目是否大于一错误字节数门限值且非大于一最大可校正错误字节数,
其中倘若储存在该第一实体程序化单元中的数据发生错误字节的数目大于该错误字节数门限值且非大于该最大可校正错误字节数时,该存储器控制器识别该第一实体抹除单元存有该跳动字节。
12.根据权利要求11所述的存储器储存装置,其特征在于,该存储器控制器还用以在对该第一实体抹除单元执行该抹除操作之后,从该些实体抹除单元中选择一第二实体抹除单元,并且将属于该第一逻辑地址的有效数据从对应该第一逻辑地址的该些实体抹除单元中搬移到该第二实体抹除单元。
13.根据权利要求11所述的存储器储存装置,其特征在于,在判断该第一实体抹除单元是否存有该跳动字节之前,该存储器控制器还用以判断在将属于该第一逻辑地址的有效数据从对应该第一逻辑地址的该些实体抹除单元中搬移到该第一实体抹除单元期间该存储器储存装置是否发生一异常断电,
其中倘若判断发生该异常断电时,该存储器控制器才执行上述判断该第一实体抹除单元是否存有该跳动字节的操作。
14.根据权利要求13所述的存储器储存装置,其特征在于,该第一实体程序化单元为在发生该异常断电前最后一个被写入的实体程序化单元。
15.根据权利要求11所述的存储器储存装置,其特征在于,倘若该第一实体抹除单元未存有该跳动字节时,该存储器控制器还用以将对应该第一逻辑地址的该些实体抹除单元执行该抹除操作。
16.一种数据储存方法,用于一可擦写式非易失性存储器模块,其特征在于,该可擦写式非易失性存储器模块具有多个实体抹除单元,每一所述实体抹除单元具有多个实体程序化单元,该些实体抹除单元被至少分组为一系统区,该数据储存方法包括:
将一系统数据写入至该系统区的一第一实体抹除单元;
判断该第一实体抹除单元是否存有一跳动字节;以及
倘若该第一实体抹除单元存有该跳动字节时,从该些实体抹除单元中选择一第二实体抹除单元,且将该系统数据写入至该第二实体抹除单元,
其中所述判断该第一实体抹除单元是否存有该跳动字节的步骤包括:
判断储存在该第一实体抹除单元的实体程序化单元之中的一第一实体程序化单元中的数据发生错误字节的数目是否大于一错误字节数门限值且非大于一最大可校正错误字节数,其中该系统数据被写入至该第一实体程序化单元;以及
倘若储存在该第一实体程序化单元中的数据发生错误字节的数目大于该错误字节数门限值且非大于该最大可校正错误字节数时,识别该第一实体抹除单元存有该跳动字节。
17.根据权利要求16所述的数据储存方法,其特征在于,还包括:
将该第一实体抹除单元中的有效数据搬移至该第二实体抹除单元。
18.根据权利要求17所述的数据储存方法,其特征在于,还包括:
在将该第一实体抹除单元中的有效数据搬移至该第二实体抹除单元之后,对该第一实体抹除单元执行一抹除操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210289628.9A CN103593296B (zh) | 2012-08-15 | 2012-08-15 | 数据储存方法、存储器控制器与存储器储存装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210289628.9A CN103593296B (zh) | 2012-08-15 | 2012-08-15 | 数据储存方法、存储器控制器与存储器储存装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103593296A CN103593296A (zh) | 2014-02-19 |
CN103593296B true CN103593296B (zh) | 2016-05-18 |
Family
ID=50083447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210289628.9A Active CN103593296B (zh) | 2012-08-15 | 2012-08-15 | 数据储存方法、存储器控制器与存储器储存装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103593296B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI537816B (zh) * | 2014-10-13 | 2016-06-11 | 慧榮科技股份有限公司 | 非揮發性儲存裝置與控制器進行的控制方法 |
CN105843746A (zh) * | 2015-01-12 | 2016-08-10 | 广明光电股份有限公司 | 固态硬盘的写入方法 |
CN106201932B (zh) * | 2015-05-07 | 2019-03-05 | 群联电子股份有限公司 | 数据写入方法、存储器控制电路单元与存储器存储装置 |
CN107045890B (zh) * | 2016-02-05 | 2020-02-07 | 群联电子股份有限公司 | 数据保护方法、存储器控制电路单元及存储器存储装置 |
US10158902B2 (en) * | 2016-09-26 | 2018-12-18 | Amazon Technologies, Inc. | Streaming and storing video for audio/video recording and communication devices |
CN108664350B (zh) * | 2017-03-31 | 2021-06-22 | 群联电子股份有限公司 | 数据保护方法、存储器存储装置及存储器控制电路单元 |
CN112306375B (zh) * | 2019-08-01 | 2023-03-14 | 兆易创新科技集团股份有限公司 | 用户数据搬移的恢复方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101399075A (zh) * | 2007-09-28 | 2009-04-01 | 智多星电子科技有限公司 | 具多样闪存单元坏块管理的电子数据闪存卡 |
CN102214145A (zh) * | 2011-07-14 | 2011-10-12 | 李佰战 | 一种闪存数据更新方法及系统 |
CN102473126A (zh) * | 2009-08-11 | 2012-05-23 | 桑迪士克科技股份有限公司 | 提供闪存系统中的读状态和空闲块管理信息的控制器和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2077559B1 (en) * | 2007-12-27 | 2012-11-07 | Hagiwara Solutions Co., Ltd. | Refresh method of a flash memory |
-
2012
- 2012-08-15 CN CN201210289628.9A patent/CN103593296B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101399075A (zh) * | 2007-09-28 | 2009-04-01 | 智多星电子科技有限公司 | 具多样闪存单元坏块管理的电子数据闪存卡 |
CN102473126A (zh) * | 2009-08-11 | 2012-05-23 | 桑迪士克科技股份有限公司 | 提供闪存系统中的读状态和空闲块管理信息的控制器和方法 |
CN102214145A (zh) * | 2011-07-14 | 2011-10-12 | 李佰战 | 一种闪存数据更新方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103593296A (zh) | 2014-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104679437B (zh) | 数据写入方法、存储器控制电路单元与存储器储存装置 | |
CN103593296B (zh) | 数据储存方法、存储器控制器与存储器储存装置 | |
CN107844431A (zh) | 映射表更新方法、存储器控制电路单元与存储器存储装置 | |
CN104699413B (zh) | 数据管理方法、存储器存储装置及存储器控制电路单元 | |
CN104732153B (zh) | 数据抹除方法、存储器控制电路单元及存储器存储装置 | |
CN106469122B (zh) | 有效数据合并方法、存储器控制器与存储器储存装置 | |
CN106708416B (zh) | 数据重建方法与系统及其存储器控制电路单元 | |
CN104765568A (zh) | 数据存储方法、存储器控制电路单元与存储器存储装置 | |
CN104765569A (zh) | 数据写入方法、存储器控制电路单元与存储器储存装置 | |
CN103377129A (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN103544115A (zh) | 数据写入方法、存储器控制器与存储器存储装置 | |
CN103136111B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN102902626B (zh) | 区块管理方法、存储器控制器与存储器储存装置 | |
CN105988950B (zh) | 存储器管理方法、存储器控制电路单元与存储器存储装置 | |
CN104978149A (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
CN102200946B (zh) | 资料存取方法、记忆体控制器与储存系统 | |
CN102446137B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN103678162A (zh) | 系统数据储存方法、存储器控制器与存储器储存装置 | |
CN103544118B (zh) | 存储器储存装置、其存储器控制器与数据写入方法 | |
CN105022695A (zh) | 数据存储方法、存储器控制电路单元与存储器存储装置 | |
CN106814968A (zh) | 存储器管理方法与系统及其存储器存储装置 | |
CN103513930A (zh) | 存储器管理方法、存储器控制器与存储器储存装置 | |
CN102890653A (zh) | 指令执行方法、存储器控制器与存储器储存装置 | |
CN106354651A (zh) | 平均磨损方法、存储器控制电路单元及存储器储存装置 | |
CN103019952B (zh) | 数据写入方法、存储器控制器与存储器储存装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |