CN104252600A - 数据保护方法、存储器控制器与存储器储存装置 - Google Patents
数据保护方法、存储器控制器与存储器储存装置 Download PDFInfo
- Publication number
- CN104252600A CN104252600A CN201310261629.7A CN201310261629A CN104252600A CN 104252600 A CN104252600 A CN 104252600A CN 201310261629 A CN201310261629 A CN 201310261629A CN 104252600 A CN104252600 A CN 104252600A
- Authority
- CN
- China
- Prior art keywords
- data
- error
- physics
- correcting code
- programming unit
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
Abstract
本发明提出一种数据保护方法,存储器控制器与存储器储存装置。此方法包括:接收来自于主机***的第一刷新指令与指示写入第一数据的第一写入指令;根据第一数据产生第一错误校正码与第二错误校正码,此两者的保护能力不相同;接收指示写入第二数据的第二写入指令;在接收第一写入指令之后,接收来自主机***的第二刷新指令,并在之后将第一数据相对应的第二错误校正码写入至可复写式非易失性存储器模块中;不对该第二数据产生相对应的第二错误校正码,或产生但不写入至该可复写式非易失性存储器模块中。藉此,可以保护来自主机***的数据。
Description
技术领域
本发明是有关于一种数据保护方法,且特别是有关于一种用于可复写式非易失性存储器模块的数据保护方法、存储器控制器与存储器储存装置。
背景技术
数字相机、移动电话与MP3播放器在这几年来的成长十分迅速,使得消费者对储存媒体的需求也急速增加。由于可复写式非易失性存储器模块(例如,闪存)具有数据非易失性、省电、体积小,以及无机械结构等特性,所以非常适合内建于上述所举例的各种可携式多媒体装置中。
在多阶存储单元(Multi Level Cell,MLC)NAND型闪存模块中,每一个物理抹除单元会包括多个物理编程单元,并且这些物理编程单元会被分为下物理编程单元与上物理编程单元。当上物理编程单元被编程时若发生了***的错误,则属于同一个字线的下物理编程单元中的数据可能会发生错误。此外,当数据要被写入时,必须先编程下物理编程单元才能编程上物理编程单元。主机***可以通过写入指令把数据写入至可复写式非易失性存储器模块。主机***也可能下达一个刷新(Flush)指令,用以清空一个逻辑范围内的数据,使得这些数据不会储存在一个易失性的存储器中。一般来说,这些被清空的数据会被写入至可复写式非易失性存储器模块中,并且主机***会认为下达刷新指令之前的数据都已经完整且安全地被写入了。然而,若主机***下达了刷新指令之前数据先被写入至一个下物理编程单元,且在刷新指令之后属于同一个字线的上物理编程单元被编程且发生***错误,则该下物理编程单元的数据可能会发生错误。因此,如何保护这些数据为本领域技术人员所关心的议题。
发明内容
本发明提供一种数据保护方法、存储器控制器与存储器储存装置,可以 保护可复写式非易失性记体模块中的数据。
本发明一范例实施例提出一种数据保护方法,用于控制一可复写式非易失性存储器模块,其包括多个物理抹除单元。此数据保护方法包括:接收来自于主机***的一个第一刷新指令;在接收第一刷新指令之后,接收来自主机***的第一写入指令,其中第一写入指令指示写入第一数据;根据第一数据产生第一错误校正码与相对应的第二错误校正码,其中第二错误校正码的保护能力不同于第一错误校正码的保护能力;收指示写入第二数据的第二写入指令;在接收第一写入指令之后,接收来自主机***的一个第二刷新指令,其中第二刷新指令指示将在一缓冲存储器中的第一数据与第二数据写入至可复写式非易失性存储器模块中;将第一数据、第一错误校正码与第二数据写入至可复写式非易失性存储器模块中;以及在接收到第二刷新指令之后,将第一数据相对应的第二错误校正码写入至可复写式非易失性存储器模块中;不对第二数据产生相对应的第二错误校正码,或产生第二数据相对应的第二错误校正码但不把它写入至该可复写式非易失性存储器模块中。
在一范例实施例中,上述的每一个物理抹除单元包括多个物理编程单元,第一错误校正码是仅根据对应于单一个物理编程单元的第一数据所产生,第二错误校正码是根据对应于多个物理编程单元的第一数据所产生。
在一范例实施例中,上述产生第一数据相对应的第二错误校正码的步骤包括:根据对应于一预设数目的物理编程单元的第一数据来产生第二错误校正码,其中预设数目大于1。
在一范例实施例中,上述的物理编程单元被分组为多个上物理编程单元与多个下物理编程单元,并且产生第二错误校正码的步骤包括:根据第一数据中对应于至少一个下物理编程单元的部分来产生第二错误校正码。
在一范例实施例中,上述产生第二错误校正码的步骤包括:仅对缓冲存储器中该第一数据对应于至少一个下物理编程单元的部分来产生第二错误校正码。
在一范例实施例中,上述该至少一个下物理编程单元对应的上物理编程单元没有被编程。
在一范例实施例中,上述产生第一数据相对应的第二错误校正码的步骤包括:根据缓冲存储器中第一数据对应于至少一个下物理编程单元的部分与对应于一个第二物理编程单元的部分来产生第二错误校正码。其中该至少一 个下物理编程单元对应的上物理编程单元没有被编程,并且第二物理编程单元是相邻于该至少一个下物理编程单元。
在一范例实施例中,上述的每一个物理编程单元包括一数据位区与一冗余位区,并且第一错误校正码是储存在冗余位区。此数据保护方法还包括:在开机后,提取一个第一物理抹除单元,其中第一物理抹除单元中的物理编程单元尚未被全部编程;根据第一物理抹除单元中冗余位区所储存的数据来检查第一物理抹除单元中数据位区所储存的数据是否发生错误;若第一物理抹除单元中的一个第一物理编程单元的数据位区所储存的数据发生一个第一错误并且第一物理编程单元的冗余位区所储存的数据无法校正此第一错误,则判断第一物理编程单元是否在第一数据相对应的第二错误校正码的保护能力内;以及若第一物理编程单元是在此第二错误校正码的保护能力内,根据第二错误校正码来校正第一错误。
以另外一个角度来说,本发明一范例实施例提出一种存储器储存装置,包括连接器、上述的可复写式非易失性存储器模块与存储器控制器。连接器是用以电性连接至主机***。存储器控制器是电性连接至连接器与可复写式非易失性存储器模块,用以接收来自于主机***的第一刷新指令,并且在接收第一刷新指令之后,接收来自主机***的第一写入指令,其中第一写入指令指示写入第一数据。存储器控制器也用以根据第一数据产生第一错误校正码与相对应的第二错误校正码,其中第二错误校正码的保护能力不同于第一错误校正码的保护能力。存储器控制器也用以接收来自主机***并指示写入第二数据的第二写入指令。在接收第一写入指令与第二写入指令之后,存储器控制器也用以接收来自主机***的第二刷新指令,其中第二刷新指令指示将在一缓冲存储器中的第一数据与第二数据写入至可复写式非易失性存储器模块中。存储器控制器也用以将第一数据、第一错误校正码与第二数据写入至可复写式非易失性存储器模块中。在接收到第二刷新指令之后,存储器控制器用以将第一数据相对应的第二错误校正码写入至可复写式非易失性存储器模块中。存储器控制器还用以不对第二数据产生相对应的第二错误校正码,或产生第二数据相对应的第二错误校正码但不把它写入至可复写式非易失性存储器模块中。
在一范例实施例中,上述的存储器控制器产生第一数据相对应的第二错误校正码的操作包括:存储器控制器根据对应于预设数目的物理编程单元的 第一数据来产生第二错误校正码,其中预设数目大于1。
在一范例实施例中,上述的存储器控制器产生第一数据相对应的第二错误校正码的操作包括:存储器控制器根据第一数据中对应于至少一个下物理编程单元的部分来产生第二错误校正码。
在一范例实施例中,上述存储器控制器产生第一数据相对应的第二错误校正码的操作包括:存储器控制器仅对缓冲存储器中第一数据对应于至少一个下物理编程单元的部分来产生第二错误校正码。
在一范例实施例中,上述存储器控制器产生第一数据相对应的第二错误校正码的操作包括:存储器控制器根据缓冲存储器中第一数据对应于至少一个下物理编程单元的部分与对应于第二物理编程单元的部分来产生第二错误校正码。其中该至少一个下物理编程单元对应的上物理编程单元没有被编程,并且第二物理编程单元是相邻于该至少一个下物理编程单元。
在一范例实施例中,上述的存储器控制器还用以在开机后,提取一个第一物理抹除单元,其中第一物理抹除单元中的物理编程单元尚未被全部编程。存储器控制器还用以根据第一物理抹除单元中冗余位区所储存的数据来检查第一物理抹除单元中数据位区所储存的数据是否发生错误。若第一物理抹除单元中的第一物理编程单元的数据位区所储存的数据发生第一错误并且第一物理编程单元的冗余位区所储存的数据无法校正第一错误,则存储器控制器还用以判断第一物理编程单元是否在第一数据相对应的第二错误校正码的保护能力内。若第一物理编程单元是在第二错误校正码的保护能力内,存储器控制器还用以根据第二错误校正码来校正第一错误。
以另外一个角度来说,本发明一范例实施例提出一种存储器控制器,包括主机接口、存储器接口与存储器管理电路。主机接口是用以电性连接至主机***。存储器接口是用以电性连接至可复写式非易失性存储器模块。存储器管理电路是电性连接至主机接口与存储器面,用以接收来自于主机***的第一刷新指令,并且在接收第一刷新指令之后,接收来自主机***的第一写入指令,其中第一写入指令指示写入第一数据。存储器管理电路也用以根据第一数据产生第一错误校正码与相对应的第二错误校正码,其中第二错误校正码的保护能力不同于第一错误校正码的保护能力。存储器管理电路也用以接收来自主机***并指示写入第二数据的第二写入指令。在接收第一写入指令与第二写入指令之后,接收来自主机***的第二刷新指令,其中第二刷新 指令指示将在一缓冲存储器中的第一数据与第二数据写入至可复写式非易失性存储器模块中。存储器管理电路也用以将第一数据、第一错误校正码与第二数据写入至可复写式非易失性存储器模块中。在接收到第二刷新指令之后,存储器管理电路用以将第一数据相对应的第二错误校正码写入至可复写式非易失性存储器模块中。存储器管理电路还用以不对第二数据产生相对应的第二错误校正码,或产生第二数据相对应的第二错误校正码但不把它写入至可复写式非易失性存储器模块中。
在一范例实施例中,上述的存储器管理电路产生第二错误校正码的操作包括:存储器管理电路根据对应于预设数目的物理编程单元的第一数据来产生第二错误校正码,其中预设数目大于1。
在一范例实施例中,上述的存储器管理电路产生第一数据相对应的第二错误校正码的操作包括:存储器管理电路根据对应于至少一个下物理编程单元的第一数据来产生第二错误校正码。
在一范例实施例中,上述存储器管理电路产生第一数据相对应的第二错误校正码的操作包括:存储器管理电路仅对缓冲存储器中第一数据对应于至少一个下物理编程单元的部分来产生第二错误校正码。
在一范例实施例中,上述存储器管理电路产生第一数据相对应的第二错误校正码的操作包括:存储器管理电路根据缓冲存储器中第一数据对应于至少一个下物理编程单元的部分与对应于第二物理编程单元的部分来产生第二错误校正码。其中该至少一个下物理编程单元对应的上物理编程单元没有被编程,并且第二物理编程单元是相邻于该至少一个下物理编程单元。
在一范例实施例中,上述的存储器管理电路还用以在开机后,提取一个第一物理抹除单元,其中第一物理抹除单元中的物理编程单元尚未被全部编程。存储器管理电路还用以根据第一物理抹除单元中冗余位区所储存的数据来检查第一物理抹除单元中数据位区所储存的数据是否发生错误。若第一物理抹除单元中的第一物理编程单元的数据位区所储存的数据发生第一错误并且第一物理编程单元的冗余位区所储存的数据无法校正第一错误,则存储器管理电路还用以判断第一物理编程单元是否在第一数据相对应的第二错误校正码的保护能力内。若第一物理编程单元是在此第二错误校正码的保护能力内,存储器管理电路还用以根据第二错误校正码来校正第一错误。
如上所述,本发明范例实施例所提出的数据保护方法、存储器控制器与 存储器储存装置,可以在接收到第二刷新指令以后将第二错误更正码写入至可复写式非易失性存储器模块,藉此在第二刷新指令之前所接收的数据可以被保护。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下。
附图说明
图1A是根据一范例实施例所绘示的主机***与存储器储存装置。
图1B是根据一范例实施例所绘示的计算机、输入/输出装置与存储器储存装置的示意图。
图1C是根据一范例实施例所绘示的主机***与存储器储存装置的示意图。
图2A是绘示图1A所示的存储器储存装置的概要方块图。
图2B是根据一范例实施例绘示物理抹除单元的示意图。
图3是根据一范例实施例所绘示的存储器控制器的概要方块图。
图4是根据一范例实施例所绘示的管理可复写式非易失性存储器模块的范例示意图。
图5是根据一范例实施例绘示产生第一与第二错误校正码的示意图。
图6是根据一范例实施例绘示数据保护方法的流程图。
[标号说明]
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):物理抹除单元
210A、211A、212A、213A、214A、215A、217A、210B、211B、212B、213B、214B、215B、216B、217B:物理编程单元
202:存储器管理电路 204:主机接口
206:存储器接口 252:缓冲存储器
254:电源管理电路 256:错误检查与校正电路
402:储存区 406:***区
410(0)~410(C):逻辑地址 420:第一数据
S601~S608:步骤
具体实施方式
一般而言,存储器储存装置(亦称,存储器储存***)包括可复写式非易失性存储器模块与控制器(亦称,控制电路)。通常存储器储存装置是与主机***一起使用,以使主机***可将数据写入至存储器储存装置或从存储器储存装置中读取数据。
图1A是根据一范例实施例所绘示的主机***与存储器储存装置。
请参照图1A,主机***1000一般包括计算机1100与输入/输出(input/output,I/O)装置1106。计算机1100包括微处理器1102、随机存取存储器(random access memory,RAM)1104、***总线1108与数据传输接口1110。输入/输出装置1106包括如图1B的鼠标1202、键盘1204、显示器1206与打印机1208。必须了解的是,图1B所示的装置非限制输入/输出装置1106,输入/输出装置1106还可包括其它装置。
在本发明实施例中,存储器储存装置100是通过数据传输接口1110与主机***1000的其它元件电性连接。通过微处理器1102、随机存取存储器1104与输入/输出装置1106的运作可将数据写入至存储器储存装置100或从存储器储存装置100中读取数据。例如,存储器储存装置100可以是如图1B所示的随身盘1212、存储卡1214或固态硬盘(Solid State Drive,SSD)1216等的可复写式非易失性存储器储存装置。
一般而言,主机***1000为可实质地与存储器储存装置100配合以储存数据的任意***。虽然在本范例实施例中,主机***1000是以计算机***来 作说明,然而,在本发明另一范例实施例中主机***1000可以是数字相机、摄影机、通信装置、音频播放器或视频播放器等***。例如,在主机***为数字相机(摄影机)1310时,可复写式非易失性存储器储存装置则为其所使用的SD卡1312、MMC卡1314、存储棒(memory stick)1316、CF卡1318或嵌入式储存装置1320(如图1C所示)。嵌入式储存装置1320包括嵌入式多媒体卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒体卡是直接电性连接于主机***的基板上。
图2A是绘示图1A所示的存储器储存装置的概要方块图。
请参照图2A,存储器储存装置100包括连接器102、存储器控制器104与可复写式非易失性存储器模块106。
在本范例实施例中,连接器102是相容于序列先进附件(Serial Advanced Technology Attachment,SATA)标准。然而,必须了解的是,本发明不限于此,连接器102亦可以是符合并列先进附件(Parallel Advanced Technology Attachment,PATA)标准、电气和电子工程师协会(Institute of Electrical and Electronic Engineers,IEEE)1394标准、高速***零件连接接口(Peripheral Component Interconnect Express,PCI Express)标准、通用序列总线(Universal Serial Bus,USB)标准、安全数字(Secure Digital,SD)接口标准、超高速一代(Ultra High Speed-I,UHS-I)接口标准、超高速二代(Ultra High Speed-II,UHS-II)接口标准、存储棒(Memory Stick,MS)接口标准、多媒体储存卡(Multi Media Card,MMC)接口标准、嵌入式多媒体储存卡(Embedded Multimedia Card,eMMC)接口标准、通用闪存(Universal Flash Storage,UFS)接口标准、小型快闪(Compact Flash,CF)接口标准、集成式驱动电子接口(Integrated Device Electronics,IDE)标准或其它适合的标准。
存储器控制器104用以执行以硬件型式或固件型式实作的多个逻辑门或控制指令,并且根据主机***1000的指令在可复写式非易失性存储器模块106中进行数据的写入、读取与抹除等运作。
可复写式非易失性存储器模块106是电性连接至存储器控制器104,并且用以储存主机***1000所写入的数据。可复写式非易失性存储器模块106具有物理抹除单元304(0)~304(R)。例如,物理抹除单元304(0)~304(R)可属于同一个存储器晶粒(die)或者属于不同的存储器晶粒。每一物理抹除单元分别具有多个物理编程单元。属于同一个物理抹除单元的物理编程单元可被独 立地写入且被同时地抹除。例如,每一物理抹除单元是由128个物理编程单元所组成。然而,必须了解的是,本发明不限于此,每一物理抹除单元是可由64个物理编程单元、256个物理编程单元或其它任意个物理编程单元所组成。
更详细来说,物理抹除单元为抹除的最小单位。亦即,每一物理抹除单元含有最小数目的一并被抹除的存储单元。物理编程单元为编程的最小单元。即,物理编程单元为写入数据的最小单元。每一物理编程单元通常包括数据位区与冗余位区。数据位区包含多个物理存取地址用以储存使用者的数据,而冗余位区用以储存***的数据(例如,错误检查与校正码)。在本范例实施例中,每一个物理编程单元的数据位区中会包含4个物理存取地址,且一个物理存取地址的大小为512字节(byte,B)。然而,在其它范例实施例中,数据位区中也可包含8个、16个或数目更多或更少的物理存取地址,本发明并不限制物理存取地址的大小以及个数。例如,物理抹除单元为物理区块,并且物理编程单元为物理页面或物理扇。
在本范例实施例中,可复写式非易失性存储器模块106为多阶存储单元(Multi Level Cell,MLC)NAND型闪存模块。也就是说,一个存储单元中可储存2个位。更具体来说,同一个字线(word line)上的多个存储单元会组成一个上物理编程单元与一个下物理编程单元,并且每一个存储单元中的两个位分别属于不同的物理编程单元。换句话说,每一个物理抹除单元包括的多个物理编程单元会被分为多个下物理编程单元与多个上个慢物理编程单元。在此称一个下物理编程单元与同一个字线上的上物理编程单元是彼此对应,以下不再赘述。一般来说,下物理编程单元的写入速度会大于上物理编程单元的写入速度;并且,一个下物理编程单元必须先被编程以后所对应的上物理编程单元才能被编程。然而,可复写式非易失性存储器模块106也可以是多阶存储单元(Trinary Level Cell,TLC)NAND型闪存模块、其它闪存模块或其它具有相同特性的存储器模块,本发明不限于此。
图2B是根据一范例实施例绘示物理抹除单元的示意图。
请参照图2B,物理抹除单元304(0)至少包括了下物理编程单元210A~215A与上物理编程单元210B~213B。下物理编程单元210A是对应于上物理编程单元210B,下物理编程单元211A是对应于上物理编程单元211B,以此类推。在此范例实施例中,存储器控制器104是依照一个编程顺序交错地 将数据写入至一或多个下物理编程单元与一或多个上物理编程单元。例如,图2B中每一个物理编程单元中的数字便是表示此编程顺序。具体来说,下物理编程单元210A、211A、212A与213A会先被编程,接着上物理编程单元210B、211B、下物理编程单元214A、215A与上物理编程单元212B、213B会依序被编程,以此类推。然而,存储器控制器104也可以依照其它的编程顺序来写入数据。例如,数据可以是依序地被写入至下物理编程单元210A、上物理编程单元210B、下物理编程单元211A、上物理编程单元211B与下物理编程单元212A,以此类推,本发明并不在此限。
图3是根据一范例实施例所绘示的存储器控制器的概要方块图。
请参照图3,存储器控制器104包括存储器管理电路202、主机接口204与存储器接口206。
存储器管理电路202用以控制存储器控制器104的整体运作。具体来说,存储器管理电路202具有多个控制指令,并且在存储器储存装置100运作时,此些控制指令会被执行以进行数据的写入、读取与抹除等运作。以下说明存储器管理电路202的操作时,等同于说明存储器控制器104的操作,以下并不再赘述。
在本范例实施例中,存储器管理电路202的控制指令是以固件型式来实作。例如,存储器管理电路202具有微处理器单元(未绘示)与只读存储器(未绘示),并且此些控制指令是被烧录至此只读存储器中。当存储器储存装置100运作时,此些控制指令会由微处理器单元来执行以进行数据的写入、读取与抹除等运作。
在本发明另一范例实施例中,存储器管理电路202的控制指令亦可以程序码型式储存于可复写式非易失性存储器模块106的特定区域(例如,存储器模块中专用于存放***数据的***区)中。此外,存储器管理电路202具有微处理器单元(未绘示)、只读存储器(未绘示)及随机存取存储器(未绘示)。特别是,此只读存储器具有开机码(boot code),并且当存储器控制器104被致能时,微处理器单元会先执行此开机码来将储存于可复写式非易失性存储器模块106中的控制指令加载至存储器管理电路202的随机存取存储器中。之后,微处理器单元会运转此些控制指令以进行数据的写入、读取与抹除等运作。
此外,在本发明另一范例实施例中,存储器管理电路202的控制指令亦可以一硬件型式来实作。例如,存储器管理电路202包括微控制器、存储器 管理单元、存储器写入单元、存储器读取单元、存储器抹除单元与数据处理单元。存储器管理单元、存储器写入单元、存储器读取单元、存储器抹除单元与数据处理单元是电性连接至微控制器。其中,存储器管理单元用以管理可复写式非易失性存储器模块106的物理抹除单元;存储器写入单元用以对可复写式非易失性存储器模块106下达写入指令以将数据写入至可复写式非易失性存储器模块106中;存储器读取单元用以对可复写式非易失性存储器模块106下达读取指令以从可复写式非易失性存储器模块106中读取数据;存储器抹除单元用以对可复写式非易失性存储器模块106下达抹除指令以将数据从可复写式非易失性存储器模块106中抹除;而数据处理单元用以处理欲写入至可复写式非易失性存储器模块106的数据以及从可复写式非易失性存储器模块106中读取的数据。
主机接口204是电性连接至存储器管理电路202并且用以接收与识别主机***1000所传送的指令与数据。也就是说,主机***1000所传送的指令与数据会通过主机接口204来传送至存储器管理电路202。在本范例实施例中,主机接口204是兼容于SATA标准。然而,必须了解的是本发明不限于此,主机接口204亦可以是兼容于PATA标准、IEEE1394标准、PCI Express标准、USB标准、SD标准、UHS-I标准、UHS-II标准、MS标准、MMC标准、eMMC标准、UFS标准、CF标准、IDE标准或其它适合的数据传输标准。
存储器接口206是电性连接至存储器管理电路202并且用以存取可复写式非易失性存储器模块106。也就是说,欲写入至可复写式非易失性存储器模块106的数据会经由存储器接口206转换为可复写式非易失性存储器模块106所能接受的格式。
在本发明一范例实施例中,存储器控制器104还包括缓冲存储器252、电源管理电路254与错误检查与校正电路256。
缓冲存储器252是电性连接至存储器管理电路202并且用以暂存来自于主机***1000的数据与指令或来自于可复写式非易失性存储器模块106的数据。然而,在另一实施例当中,缓冲存储器252也可以配置在存储器控制器104之外并与存储器控制器104电性连接。
电源管理电路254是电性连接至存储器管理电路202并且用以控制存储器储存装置100的电源。
错误检查与校正电路256是电性连接至存储器管理电路202并且用以执 行错误检查与校正程序以确保数据的正确性。具体来说,当存储器管理电路202从主机***1000中接收到写入指令时,错误检查与校正电路256会为对应此写入指令的数据产生对应的错误检查与校正码(Error Checking and Correcting Code,ECC Code),并且存储器管理电路202会将对应此写入指令的数据与对应的错误检查与校正码写入至可复写式非易失性存储器模块106中。之后,当存储器管理电路202从可复写式非易失性存储器模块106中读取数据时会同时读取此数据对应的错误检查与校正码,并且错误检查与校正电路256会根据此错误检查与校正码对所读取的数据执行错误检查与校正程序。
图4是根据一范例实施例所绘示的管理可复写式非易失性存储器模块的范例示意图。
必须了解的是,在此描述可复写式非易失性存储器模块106的物理抹除单元的运作时,以“提取”、“划分”、“关联”等词来操作物理抹除单元是逻辑上的概念。也就是说,可复写式非易失性存储器模块106的物理抹除单元的实际位置并未更动,而是逻辑上对可复写式非易失性存储器模块106的物理抹除单元进行操作。
请参照图4,存储器控制器104可将物理抹除单元304(0)~304(R)逻辑地分组为多个区域,例如为储存区402与***区406。储存区402的物理抹除单元是用以储存来自于主机***1000的数据。储存区402也包括了多个闲置的物理抹除单元,而闲置的物理抹除单元中并没有储存有效数据。由于一个物理抹除单元在被抹除之前无法重复地被编程,因此当存储器控制器104要将数据写入至储存区时或是整并有效数据时,便会使用这些闲置的物理抹除单元。或者,当有物理抹除单元损坏时,闲置的物理抹除单元也可用来替换损坏的物理抹除单元。当储存区402中没有闲置的物理抹除单元且无法通过整并有效数据来产生闲置的物理抹除单元时,存储器控制器104会将整个存储器储存装置100宣告为写入保护(write protect)状态,而无法再写入数据。然而,在另一范例实施例中,存储器控制器104也可以再划分出一个取代区,其中的物理抹除单元是专门用来替换损坏的物理抹除单元,本发明并不在此限。另一方面,逻辑上属于***区406的物理抹除单元是用以记录***数据,其中此***数据包括关于存储器芯片的制造商与型号、存储器芯片的物理抹除单元数、每一物理抹除单元的物理编程单元数等。特别是,储存区402与 ***区406的物理抹除单元的数量会根据不同的存储器规格而有所不同。
在本范例实施例中,存储器控制器104会配置逻辑地址410(0)~410(C)以利于在储存区402的物理抹除单元中进行数据存取。例如,当存储器储存装置100***作***1110通过文件***(例如,FAT32)格式化时,逻辑地址410(0)~410(C)分别地映射至储存区402中部分的物理编程单元(即,逻辑地址410(0)~410(C)是映射至储存区402中部分的物理抹除单元)。在此,存储器管理电路202会建立逻辑地址-物理编程单元映射表(logical address-physical programming unit mapping table),以记录逻辑地址与物理编程单元之间的映射关系。在此范例实施例中,每一个逻辑地址410(0)~410(C)的大小是相同于一个物理编程单元的大小,即逻辑地址亦可被称为逻辑页面(logical page)。然而,在其它范例实施例中,逻辑地址410(0)~410(C)也可以是一个物理抹除单元的大小或是其它大小,本发明并不在此限。
主机***1000会下达一个写入指令给存储器管理电路202,用以指示将第一数据420写入至至少一个逻辑地址。例如,第一数据420是要写入至逻辑地址410(0)与410(1)。在接收到此写入指令以后,存储器管理电路202会从储存区402中提取一个物理抹除单元,此物理抹除单元中至少部分的物理编程单元尚未被编程。存储器管理电路202会将第一数据420写入至两个尚未被编程的物理编程单元,并且重新映射逻辑地址410(0)与410(1)至这两个物理编程单元。
主机***1000也可能下达一个刷新指令给存储器管理电路202,此刷新指令是用来指示将储存在缓冲存储器252的第一数据420写入至可复写式非易失性存储器模块106当中。若在主机***1000下达写入指令与刷新指令以后存储器储存装置100断电了,则主机***1000会认为第一数据420已正确地储存在可复写式非易失性存储器模块106当中。相反地,若主机***1000在下达写入指令以后没有下达刷新指令,并且存储器储存装置100在接收到写入指令以后断电了,则第一数据420有可能会遗失(例如,第一数据420是暂存在缓冲存储器252中而尚未被写入至可复写式非易失性存储器模块106)。在没有下达刷新指令的情况下,主机***1000本身便会处理第一数据420遗失的情形。
在本范例实施例中,存储器管理电路202会先接收来自于主机***1000的一个第一刷新指令。因此,在此第一刷新指令之前从主机***1000所接收 的数据会被写入至可复写式非易失性存储器模块106当中。在接收到第一刷新指令之后,存储器管理电路202会接收来自主机***1000并指示写入第一数据420的第一写入指令。存储器管理电路202会根据第一数据420产生一第一错误校正码,并且第一数据420会先被暂存在缓冲存储器252中。存储器管理电路202会依照自己的调度来将缓冲存储器252中的第一数据420写入至可复写式非易失性存储器模块106中,并不一定会在接收到第一数据420时就立即把第一数据420写入至可复写式非易失性存储器模块106中。同样地,存储器管理电路202会依照自己的调度来将第一错误校正码写入至可复写式非易失性存储器模块106中。存储器管理电路202也会根据第一数据420产生相对应的一第二错误校正码。此第二错误校正码的保护能力是不同于第一错误校正码的保护能力,例如第一错误校正码只可保护第一数据420,而第二错误校正码除了保护第一数据420外,亦可保护其它数据资料。或者,只有第一数据420是被第一错误校正码所保护,但第一数据420及其它数据资料各有一部分被第二错误校正码保护。又例如,第二错误校正码可纠错80个错误位,而第一错误校正码只可纠错40个错误位。其中,在本范例实施例中,“错误校正码的保护能力”是指错误校正码可保护的数据范围、数据长度,或可校正的错误位数量。存储器管理电路202也会接收来自主机***并指示写入第二数据的一个第二写入指令。相同地,存储器管理电路202会依照自己的调度来将第二数据写入至可复写式非易失性存储器模块106中。
在接收第一写入指令与第二写入指令之后,存储器管理电路202会接收来自主机***1000的一个第二刷新指令。此第二刷新指令是指示将在缓冲存储器252中的第一数据420与第二数据写入至可复写式非易失性存储器模块106中。在接收到第二刷新指令之后,存储器管理电路202会将第一数据420相对应的第二错误校正码写入至可复写式非易失性存储器模块106中。如此一来,在接收到第二刷新指令以后若存储器储存装置100断电了且已储存在可复写式非易失性存储器模块106的第一数据420发生了错误,则第一错误校正码或第二错误校正码便可以用来校正发生的错误。特别的是,存储器管理电路202会根据第二数据产生相对应的第一错误校正码,但可能不会对第二数据产生相对应的第二错误校正码。或者,存储器管理电路202会对第二数据产生相对应的第二错误校正码,但不会把此第二错误校正码写入至可复写式非易失性存储器模块106当中。换言之,在本范例实施例中,第二错误 校正码是用来保护特定写入指令所要写入的数据,存储器管理电路202并不会对所有要写入可复写式非易失性存储器模块106的数据都产生相对应的第二错误校正码。值得注意的是,存储器管理电路202可以在接收到第二刷新指令之前或之后产生第一数据相对应的第二错误校正码,本发明并不在此限。
上述第一错误校正码与第二错误校正码的类型可以是奇偶校正码(parity checking code)、信道编码(channel coding)或是其它类型。例如,第一错误校正码与第二错误校正码可以是汉明码(hamming code)、低密度奇偶检查码(low density parity check code,LDPC code)、涡旋码(turbo code)或里德-所罗门码(Reed-solomon code,RS code),本发明并不在此限。
在一范例实施例中,第一错误校正码是储存在物理编程单元的冗余位区中(即,第一错误校正码为上述的错误检查与校正码)。而冗余位区中的错误校正码是根据同一个物理编程单元的数据位区所储存的数据所产生。换句话说,在本范例实施例中,第一错误校正码可是仅对应于单一个物理编程的第一数据420所产生。例如,存储器管理电路202可以在把第一数据420写入至一个数据位区时产生对应的第一错误校正码,并且把第一错误校正码写入至冗余位区中。或者,存储器管理电路202可以在第一数据420储存在缓冲存储器252时先产生第一错误校正码,之后再将第一数据420及与第一数据420相对应的第一错误校正码分别写入至一个物理编程单元的数据位区与冗余位区。在此,“对应于一个物理编程单元的第一数据420”所指的是第一数据420中欲被写入或是已经储存在该物理编程单元的部分,以下便不再赘述。
相反地,第二错误校正码可是根据对应于多个物理编程单元的第一数据420所产生。具体来说,在本范例实施例中,存储器管理电路202是根据m:n的比例来产生第二错误校正码。若欲被保护的第一数据420与第二错误校正码之间的长度比例为m:n,则每m个物理编程单元中的第一数据420会对应至n个物理编程单元的第二错误校正码,其中m与n为正整数。一般来说,正整数m会大于正整数n,但本发明并不在此限。并且,本发明也不限制正整数m与正整数n的值。存储器管理电路202可以在接收到第一数据420时或是第一数据420储存在缓冲存储器252时产生相对应的第二错误校正码。或者,存储器管理电路202可以在第一数据420已被写入至多个物理编程单元以后才产生第二错误校正码,本发明并不在此限。以下再举一范例实施例说明产生第二错误校正码的不同态样。
在此,“根据”的代表的意思是“至少利用”。也就是说,“根据第一数据产生第二错误校正码”的描述包括了“利用第一数据与其它任意数据来产生第二错误校正码”的各种范例实施例,亦即第一数据420可是用以产生第二错误校正码的部分或全部的参考数据。以下不再赘述“根据”的定义。
图5是根据一范例实施例绘示产生第一与第二错误校正码的示意图。
请参照图5,在此以多阶存储单元(Multi Level Cell,MLC)NAND型闪存模块为例。在图5的范例实施例中,存储器管理电路202在接收到一刷新指令(亦称第一刷新指令)后,接收到一写入指令,用以写入第一数据420,其中此第一数据420的长度例如是7个物理编程单元。存储器管理电路202会提取一个物理抹除单元并依照上述的编程顺序来将第一数据420写入7个物理编程单元。举例来说,存储器管理电路202提取了物理抹除单元304(0),并且存储器管理电路202是依序将第一数据420写入至下物理编程单元210A、211A、212A与213A,上物理编程单元210B与211B、以及下物理编程单元214A。接下来,存储器管理电路202从主机***接收到另一个刷新指令(亦称第二刷新指令)。值得注意的是,此时上物理编程单元212B、213B与214B并未被编程。存储器管理电路202至少会根据下物理编程单元212A、213A、214A中储存的第一数据420来产生第二错误校正码,并且将第二错误校正码写入至一个物理抹除单元当中。或者,存储器管理电路202也可以根据下物理单元210A~214A中储存的第一数据420来产生第二错误校正码,本发明并不在此限。
在一范例实施例中,在存储器管理电路202接收到第一数据420以后,会先将第一数据420储存在缓冲存储器252中而不写入至物理抹除单元304(0)。然而,本发明并不限制何时产生第二错误校正码。例如,存储器管理电路202仅会根据缓冲存储器252中对应于下物理编程单元212A、213A、214A的第一数据420来产生相对应的第二错误校正码。接下来,在接收到第二刷新指令以后,存储器管理电路202才会将第二错误校正码写入至可复写式非易失性存储器模块106当中。
在另一范例实施例当中,存储器管理电路202也可以根据对应于一预设数目的物理编程单元的第一数据420来产生第二错误校正码,而此预设数目会大于1。具体来说,第一数据420是依照图5的编程顺序从物理编程单元210A被写入至物理编程单元214A。当接收到刷新指令以后,存储器管理电 路202会依照编程顺序从目前的物理编程单元214A开始往前找一预设数目的物理编程单元,并根据对应于这些物理编程单元的第一数据420来产生错误校正码。例如,此预设数目为3,则存储器管理电路202会根据对应于物理编程单元210B、211B与214A的第一数据420来产生第二错误校正码,但本发明并不限制此预设数目的大小。或者,在存储器管理电路202接收到第一数据420以后,会根据每3个物理编程单元的第一数据420来产生一份第二错误校正码,并且在接收到第二刷新指令以后,再决定要将哪些第二错误校正码写入至可复写式非易失性存储器模块106中。
在上述的范例实施例中,用来产生第二错误校正码的数据是对应至同一个写入指令。然而,在另一范例实施例中,用来产生第二错误校正码的数据也可以是对应至多个写入指令。举例来说,假设第一数据420的长度为3个物理编程单元,而第一数据420是被写入至物理编程单元210A、211A与212A。而下一个写入指令(亦称第二写入指令)指示将另一份数据写入至物理编程单元213A、210B、211B与214A。在收到这两个写入指令以后,存储器管理电路202才收到第二刷新指令。存储器管理电路202至少会根据对应于物理编程单元212A的第一数据以及对应于物理编程单元213A与214A中的数据来产生第二错误校正码。
在另一范例实施例中,对于一个写入指令所指示写入的数据,存储器管理电路202可以不产生相对应的第二错误校正码,或者是产生相对应的第二错误校正码但不将之写入至可复写式非易失性存储器模块106当中。举例来说,在图5中一个写入指令是指示写入一个物理编程单元的数据。即,物理编程单元210A、211A、212A、213A、210B、211B、214A所对应的数据是由7个不同的写入指令所指示的。存储器管理电路202会根据物理编程单元212A、213A、214A所对应的数据来产生第二错误校正码,却不会根据物理编程单元210A、210B、211A、212B所对应的数据来产生第二错误校正码。或者,存储器管理电路202会根据物理编程单元210A、210B、211A、212B所对应的数据来产生第二错误校正码,但却不会把所产生的第二错误校正码写入至可复写式非易失性存储器模块106当中。在一范例实施例中,在每接收到一个写入指令与所要写入的数据以后,存储器管理电路202都会产生相对应的第二错误校正码;但是在接收到第二刷新指令以后,仅有部分的第二错误校正码会被写入至可复写式非易失性存储器模块106当中。
在另一范例实施例中,用来产生第二错误校正码的数据也可以是分散在不同的物理抹除单元当中。举例来说,若存储器管理电路202是以物理抹除单元为单位来管理可复写式非易失性存储器模块106,则要写入第一数据420时会产生一个母物理抹除单元与一或多个子物理抹除单元。此时,母物理抹除单元与子物理抹除单元中都可能有需要被保护的数据,存储器管理电路202会根据母物理抹除单元与子物理抹除单元中需要被保护的数据来产生第二错误校正码。然而,本领域技术人员应可理解母物理抹除单元与子物理抹除单元的操作,在此便不再赘述。
在此范例实施例中,物理编程单元211A与211B是相邻于物理编程单元212A与212B。当物理编程单元212A与212B中的数据发生错误时,物理编程单元211A与211B中的数据也可能发生错误。因此,在一范例实施例中,存储器管理电路202也会根据对应于物理编程单元211A与211B的数据来产生第二错误校正码。
存储器管理电路202会将所产生的第二错误校正码写入至物理抹除单元304(0)当中。或者,存储器管理电路202也可以另外提取一个物理抹除单元,专门用来储存所产生的第二错误校正码,本发明并不在此限。存储器管理电路202可以继续将数据写入至物理编程单元215A、212B、213B、216A、217A、214B与215B等。若在写入物理编程单元213B时发生断电,则物理编程单元213A中储存的数据便可能会有错误,此时存储器管理电路202会根据第二错误校正码来校正此错误。
具体来说,当存储器储存装置100重开机以后,存储器管理电路202会先判断出物理抹除单元304(0)(亦称第一物理抹除单元)中的物理编程单元尚未被全部编程。接着,存储器管理电路202会读取物理抹除单元304(0)中每一个物理编程单元中冗余位区所储存的第一错误校正码,并根据这些第一错误校正码来判断对应的数据位区中的数据是否发生错误。例如,存储器管理电路202会根据物理编程单元213A(亦称第一物理编程单元)中冗余位区所储存的第一错误校正码来判断物理编程单元213A中数据位区所储存的数据是否发生错误。若其中的数据发生错误(亦称第一错误),则存储器管理电路202会先尝试用此第一错误校正码来校正此错误。若第一错误校正码无法校正此错误(即,物理编程单元213A中错误位的数目大于第一错误校正码所能校正的位个数),存储器管理电路202会判断物理编程单元213A是否在对应的第 二错误校正码的保护能力内。在此范例实施例中,对应的第二错误校正码所保护的范围至少会包括物理编程单元212A、213A与214A;并且,物理编程单元213A中错误位的数目小于等于第二错误校正码所能校正的位个数。因此,存储器管理电路202便可以根据此第二错误校正码来校正物理编程单元213A中数据位区所储存的数据。
在另一范例实施例中,可复写式非易失性存储器模块106是多阶存储单元(Trinary Level Cell,TLC)NAND型闪存模块。因此,同一个字线上的3个物理编程单元可被分类为下物理编程单元、中物理编程单元与上物理编程单元。类似的是,若有一个下物理编程单元储存了第一数据420,并且在接收到第二刷新指令以后同一个字线上的中物理编程单元、上物理编程单元、或两者尚未被编程,则存储器管理电路202至少会根据该下物理编程单元所储存的第一数据420(或者,下物理编程单元与中物理编程单元中所储存的第一数据)来产生第二错误校正码。
图6是根据一范例实施例绘示数据保护方法的流程图。
请参照图6,在步骤S601中,接收来自于主机***的一个第一刷新指令。在步骤S602中,接收来自主机***并指示写入第一数据的第一写入指令。在步骤S603中,根据第一数据产生第一错误校正码与相对应的第二错误校正码,其中第二错误校正码的保护能力不同于第一错误校正码的保护能力。在步骤S604中,接收来自主机***并指示写入第二数据的第二写入指令。在步骤S605中,接收来自主机***的第二刷新指令,其中第二刷新指令指示将在缓冲存储器中的第一数据与第二数据写入至可复写式非易失性存储器模块中。在步骤S606中,将第一数据、第一错误校正码与第二数据写入至该可复写式非易失性存储器模块中。在步骤S607中,在接收到第二刷新指令之后,将第一数据相对应的第二错误校正码写入至可复写式非易失性存储器模块中。在步骤S608中,不对第二数据产生相对应的第二错误校正码,或产生第二数据相对应的第二错误校正码但不写入此第二错误校正码至可复写式非易失性存储器模块中。然而,图6中各步骤已详细说明如上,在此便不再赘述。值得注意的是,本发明并不限制图6中各步骤的执行顺序。例如,步骤S604可以在步骤S603之前,或者,步骤S606可以在步骤S605之前,本发明并不在此限。此外,图6中各步骤可以实作为多个程序码或是电路;并且,图6的方法可以搭配以上实施例使用也可以单独使用,本发明并不在此限。
综上所述,在本发明范例实施例所提出的数据保护方法、存储器控制器与存储器储存装置,可以保护接收到第二刷新指令前所接收到的数据。并且,一范例实施例中只有对应于下物理编程单元的数据会被用来产生第二错误校正码,藉此减少保护数据时所需要的存储器空间。由于写入数据时只需要备份较少的数据(即,只备份第二错误校正码),因此可以增加写入速度。此外,减少存储器空间的使用也能减少执行垃圾收集(garbage collection)的次数,进一步减少写入放大倍数(write amplification)。
虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视所附的权利要求范围所界定者为准。
Claims (24)
1.一种数据保护方法,其特征在于,用于控制一可复写式非易失性存储器模块,其中该可复写式非易失性存储器模块包括多个物理抹除单元,该数据保护方法包括:
接收来自于一主机***的一第一刷新指令;
在接收该第一刷新指令之后,接收来自该主机***的一第一写入指令,其中该第一写入指令指示写入一第一数据;
根据该第一数据产生一第一错误校正码与相对应的一第二错误校正码,其中该第二错误校正码的一保护能力不同于该第一错误校正码的一保护能力;
接收一第二写入指令,其中该第二写入指令指示写入一第二数据;
在接收该第一写入指令与该第二写入指令之后,接收来自该主机***的一第二刷新指令,其中该第二刷新指令指示将在一缓冲存储器中的该第一数据与该第二数据写入至该可复写式非易失性存储器模块中;
将该第一数据、该第一错误校正码与该第二数据写入至该可复写式非易失性存储器模块中;
在接收到该第二刷新指令之后,将该第一数据相对应的该第二错误校正码写入至该可复写式非易失性存储器模块中;以及
不对该第二数据产生相对应的一第二错误校正码,或产生该第二数据相对应的该第二错误校正码但不写入该第二数据相对应的该第二错误校正码至该可复写式非易失性存储器模块中。
2.根据权利要求1所述的数据保护方法,其中每一该些物理抹除单元包括多个物理编程单元,该第一错误校正码是仅根据对应于单一个该物理编程单元的该第一数据所产生,并且该第一数据相对应的该第二错误校正码是根据对应于多个该些物理编程单元的该第一数据所产生。
3.根据权利要求2所述的数据保护方法,其中产生该第一数据相对应的该第二错误校正码的步骤包括:
根据对应于一预设数目的该些物理编程单元的该第一数据来产生该第二错误校正码,其中该预设数目大于1。
4.根据权利要求1所述的数据保护方法,其中每一该些物理抹除单元包括多个物理编程单元,该些物理编程单元被分组为多个上物理编程单元与多个下物理编程单元,并且产生该第一数据相对应的该第二错误校正码的步骤包括:
根据该第一数据中对应于至少一个该些下物理编程单元的部分来产生该第二错误校正码。
5.根据权利要求1所述的数据保护方法,其中每一该些物理抹除单元包括多个物理编程单元,该些物理编程单元被分组为多个上物理编程单元与多个下物理编程单元,并且产生该第一数据相对应的该第二错误校正码的步骤包括:
仅对该缓冲存储器中该第一数据对应于至少一个该些下物理编程单元的部分来产生该第二错误校正码。
6.根据权利要求5所述的数据保护方法,其中该至少一个该些下物理编程单元所对应的上物理编程单元没有被编程。
7.根据权利要求1所述的数据保护方法,其中每一该些物理抹除单元包括多个物理编程单元,该些物理编程单元被分组为多个上物理编程单元与多个下物理编程单元,并且产生该第一数据相对应的该第二错误校正码的步骤包括:
根据该缓冲存储器中该第一数据对应于至少一个该些下物理编程单元的部分与对应于一第二物理编程单元的部分来产生该第二错误校正码,其中该至少一个该些下物理编程单元所对应的上物理编程单元没有被编程,并且该第二物理编程单元是相邻于该至少一个该些下物理编程单元。
8.根据权利要求1所述的数据保护方法,其中每一该些物理抹除单元包括多个物理编程单元,每一该些物理编程单元包括一数据位区与一冗余位区,并且该第一错误校正码是储存在该些冗余位区的其中之一,该数据保护方法更包括:
在开机后,从该些物理抹除单元中提取一第一物理抹除单元,其中该第一物理抹除单元中的该些物理编程单元尚未被全部编程;
根据该第一物理抹除单元中该些冗余位区所储存的数据来检查该第一物理抹除单元中该些数据位区所储存的数据是否发生错误;
若该第一物理抹除单元的该些物理编程单元中的一第一物理编程单元的该数据位区所储存的数据发生一第一错误并且该第一物理编程单元的该冗余位区所储存的数据无法校正该第一错误,判断该第一物理编程单元是否在该第一数据相对应的该第二错误校正码的该保护能力内;以及
若该第一物理编程单元是在该第一数据相对应的该第二错误校正码的该保护能力内,根据该第一数据相对应的该第二错误校正码来校正该第一错误。
9.一种存储器储存装置,其特征在于,包括:
一连接器,用以电性连接至一主机***;
一可复写式非易失性存储器模块,包括多个物理抹除单元;以及
一存储器控制器,电性连接至该连接器与该可复写式非易失性存储器模块,用以接收来自于该主机***的一第一刷新指令,并且在接收该第一刷新指令之后,接收来自该主机***的一第一写入指令,其中该第一写入指令指示写入一第一数据,
其中,该存储器控制器用以根据该第一数据产生一第一错误校正码与相对应的一第二错误校正码,其中该第二错误校正码的一保护能力不同于该第一错误校正码的一保护能力,
其中,该存储器控制器用以接收一第二写入指令,其中该第二写入指令指示写入一第二数据,
其中,该存储器控制器用以在接收该第一写入指令与该第二写入指令之后,接收来自该主机***的一第二刷新指令,其中该第二刷新指令指示将在一缓冲存储器中的该第一数据与该第二数据写入至该可复写式非易失性存储器模块中,
其中,该存储器控制器用以将该第一数据、该第一错误校正码、与该第二数据写入至该可复写式非易失性存储器模块中,
其中,在接收到该第二刷新指令之后,该存储器控制器用以将该第一数据相对应的该第二错误校正码写入至该可复写式非易失性存储器模块中,
其中,该存储器控制器不对该第二数据产生相对应的一第二错误校正码,或产生该第二数据相对应的该第二错误校正码但不写入该第二数据相对应的该第二错误校正码至该可复写式非易失性存储器模块中。
10.根据权利要求9所述的存储器储存装置,其中每一该些物理抹除单元包括多个物理编程单元,该第一错误校正码是仅根据对应于单一个该物理编程单元的该第一数据所产生,该第一数据相对应的第二错误校正码是根据对应于多个该些物理编程单元的该第一数据所产生。
11.根据权利要求10所述的存储器储存装置,其中该存储器控制器产生该第一数据相对应的该第二错误校正码的操作包括:
该存储器控制器根据对应于一预设数目的该些物理编程单元的该第一数据来产生该第二错误校正码,其中该预设数目大于1。
12.根据权利要求9所述的存储器储存装置,其中每一该些物理抹除单元包括多个物理编程单元,该些物理编程单元被分组为多个上物理编程单元与多个下物理编程单元,并且该存储器控制器产生该第一数据相对应的该第二错误校正码的操作包括:
该存储器控制器根据该第一数据中对应于至少一个该些下物理编程单元的部分来产生该第二错误校正码。
13.根据权利要求9所述的存储器储存装置,其中每一该些物理抹除单元包括多个物理编程单元,该些物理编程单元被分组为多个上物理编程单元与多个下物理编程单元,并且该存储器控制器产生该第一数据相对应的该第二错误校正码的操作包括:
该存储器控制器仅对该缓冲存储器中该第一数据对应于至少一个该些下物理编程单元的部分来产生该第二错误校正码。
14.根据权利要求13所述的存储器储存装置,其中该至少一个该些下物理编程单元对应的上物理编程单元没有被编程。
15.根据权利要求9所述的存储器储存装置,其中每一该些物理抹除单元包括多个物理编程单元,该些物理编程单元被分组为多个上物理编程单元与多个下物理编程单元,并且该存储器控制器产生该第一数据相对应的该第二错误校正码的操作包括:
该存储器控制器根据该缓冲存储器中该第一数据对应于至少一个该些下物理编程单元的部分与对应于一第二物理编程单元的部分来产生该第二错误校正码,其中该至少一个该些下物理编程单元对应的上物理编程单元没有被编程,并且该第二物理编程单元是相邻于该至少一个该些下物理编程单元。
16.根据权利要求9所述的存储器储存装置,其中每一该些物理抹除单元包括多个物理编程单元,每一该些物理编程单元包括一数据位区与一冗余位区,并且该第一错误校正码是储存在该些冗余位区的其中之一,该存储器控制器还用以在开机后,从该些物理抹除单元中提取一第一物理抹除单元,其中该第一物理抹除单元中的该些物理编程单元尚未被全部编程,
其中,该存储器控制器还用以根据该第一物理抹除单元中该些冗余位区所储存的数据来检查该第一物理抹除单元中该些数据位区所储存的数据是否发生错误,
若该第一物理抹除单元的该些物理编程单元中的一第一物理编程单元的该数据位区所储存的数据发生一第一错误并且该第一物理编程单元的该冗余位区所储存的数据无法校正该第一错误,该存储器控制器还用以判断该第一物理编程单元是否在该第一数据相对应的该第二错误校正码的该保护能力内,
若该第一物理编程单元是在该第一数据相对应的该第二错误校正码的该保护能力内,该存储器控制器还用以根据该第二错误校正码来校正该第一错误。
17.一种存储器控制器,其特征在于,用于控制一可复写式非易失性存储器模块,该存储器控制器包括:
一主机接口,用以电性连接至一主机***;
一存储器接口,用以电性连接至该可复写式非易失性存储器模块,其中该可复写式非易失性存储器模块包括多个物理抹除单元;以及
一存储器管理电路,电性连接至该主机接口与该存储器接口,用以接收来自于该主机***的一第一刷新指令,并且在接收该第一刷新指令之后,接收来自该主机***的一第一写入指令,其中该第一写入指令指示写入一第一数据,
其中,该存储器管理电路用以根据该第一数据产生一第一错误校正码与相对应的一第二错误校正码,其中该第二错误校正码的一保护能力不同于该第一错误校正码的一保护能力,
其中,该存储器管理电路用以接收一第二写入指令,其中该第二写入指令指示写入一第二数据,
在接收该第一写入指令与该第二写入指令之后,该存储器管理电路用以接收来自该主机***的一第二刷新指令,其中该第二刷新指令指示将在一缓冲存储器中的该第一数据与第二数据写入至该可复写式非易失性存储器模块中,
其中,该存储器管理电路用以将该第一数据、该第一错误校正码与该第二数据写入至该可复写式非易失性存储器模块中,
其中,在接收到该第二刷新指令之后,该存储器管理电路用以将该第一数据相对应的该第二错误校正码写入至该可复写式非易失性存储器模块中,
其中,该存储器管理电路用以不对该第二数据产生相对应的一第二错误校正码,或产生该第二数据相对应的该第二错误校正码但不写入该第二数据相对应的该第二错误校正码至该可复写式非易失性存储器模块中。
18.根据权利要求17所述的存储器控制器,其中每一该些物理抹除单元包括多个物理编程单元,该第一错误校正码是仅根据对应于单一个该物理编程单元的该第一数据所产生,该第一数据相对应的第二错误校正码是根据对应于多个该些物理编程单元的该第一数据所产生。
19.根据权利要求18所述的存储器控制器,其中该存储器管理电路产生该第一数据相对应的该第二错误校正码的操作包括:
该存储器管理电路根据对应于一预设数目的该些物理编程单元的该第一数据来产生该第二错误校正码,其中该预设数目大于1。
20.根据权利要求17所述的存储器控制器,其中每一该些物理抹除单元包括多个物理编程单元,该些物理编程单元被分组为多个上物理编程单元与多个下物理编程单元,并且该存储器管理电路产生该第一数据相对应的该第二错误校正码的操作包括:
该存储器管理电路根据该第一数据中对应于至少一个该些下物理编程单元的部分来产生该第二错误校正码。
21.根据权利要求17所述的存储器控制器,其中每一该些物理抹除单元包括多个物理编程单元,该些物理编程单元被分组为多个上物理编程单元与多个下物理编程单元,并且该存储器管理电路产生该第一数据相对应的该第二错误校正码的操作包括:
该存储器管理电路仅对该缓冲存储器中该第一数据对应于至少一个该些下物理编程单元的部分来产生该第二错误校正码。
22.根据权利要求21所述的存储器控制器,其中该至少一个该些下物理编程单元对应的上物理编程单元没有被编程。
23.根据权利要求17所述的存储器控制器,其中每一该些物理抹除单元包括多个物理编程单元,该些物理编程单元被分组为多个上物理编程单元与多个下物理编程单元,并且该存储器管理电路产生该第一数据相对应的该第二错误校正码的操作包括:
该存储器管理电路根据该缓冲存储器中该第一数据对应于至少一个该些下物理编程单元的部分与对应于一第二物理编程单元的部分来产生该第二错误校正码,其中该至少一个该些下物理编程单元对应的上物理编程单元没有被编程,并且该第二物理编程单元是相邻于该至少一个该些下物理编程单元。
24.根据权利要求17所述的存储器控制器,其中每一该些物理抹除单元包括多个物理编程单元,每一该些物理编程单元包括一数据位区与一冗余位区,并且该第一错误校正码是储存在该些冗余位区的其中之一,该存储器管理电路还用以在开机后,从该些物理抹除单元中提取一第一物理抹除单元,其中该第一物理抹除单元中的该些物理编程单元尚未被全部编程,
其中,该存储器管理电路还用以根据该第一物理抹除单元中该些冗余位区所储存的数据来检查该第一物理抹除单元中该些数据位区所储存的数据是否发生错误,
若该第一物理抹除单元的该些物理编程单元中的一第一物理编程单元的该数据位区所储存的数据发生一第一错误并且该第一物理编程单元的该冗余位区所储存的数据无法校正该第一错误,该存储器管理电路还用以判断该第一物理编程单元是否在该第一数据相对应的该第二错误校正码的该保护能力内,
若该第一物理编程单元是在该第一数据相对应的该第二错误校正码的该保护能力内,该存储器管理电路还用以根据该第二错误校正码来校正该第一错误。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310261629.7A CN104252600B (zh) | 2013-06-27 | 2013-06-27 | 数据保护方法、存储器控制器与存储器储存装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310261629.7A CN104252600B (zh) | 2013-06-27 | 2013-06-27 | 数据保护方法、存储器控制器与存储器储存装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104252600A true CN104252600A (zh) | 2014-12-31 |
CN104252600B CN104252600B (zh) | 2017-08-11 |
Family
ID=52187485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310261629.7A Active CN104252600B (zh) | 2013-06-27 | 2013-06-27 | 数据保护方法、存储器控制器与存储器储存装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104252600B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107305476A (zh) * | 2016-04-25 | 2017-10-31 | 群联电子股份有限公司 | 数据校正方法、内存控制电路单元与内存储存装置 |
CN110399090A (zh) * | 2018-04-25 | 2019-11-01 | 点序科技股份有限公司 | 存储器管理装置及其操作方法 |
CN110874282A (zh) * | 2018-08-31 | 2020-03-10 | 群联电子股份有限公司 | 数据存取方法、存储器控制电路单元与存储器存储装置 |
CN108664350B (zh) * | 2017-03-31 | 2021-06-22 | 群联电子股份有限公司 | 数据保护方法、存储器存储装置及存储器控制电路单元 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102208212A (zh) * | 2010-03-30 | 2011-10-05 | 群联电子股份有限公司 | 错误校正方法、存储器控制器与存储器储存*** |
CN102890645A (zh) * | 2011-07-20 | 2013-01-23 | 群联电子股份有限公司 | 存储器储存装置、存储器控制器与数据写入方法 |
CN103019952A (zh) * | 2011-09-26 | 2013-04-03 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
CN103136111A (zh) * | 2011-11-29 | 2013-06-05 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
-
2013
- 2013-06-27 CN CN201310261629.7A patent/CN104252600B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102208212A (zh) * | 2010-03-30 | 2011-10-05 | 群联电子股份有限公司 | 错误校正方法、存储器控制器与存储器储存*** |
CN102890645A (zh) * | 2011-07-20 | 2013-01-23 | 群联电子股份有限公司 | 存储器储存装置、存储器控制器与数据写入方法 |
CN103019952A (zh) * | 2011-09-26 | 2013-04-03 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
CN103136111A (zh) * | 2011-11-29 | 2013-06-05 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107305476A (zh) * | 2016-04-25 | 2017-10-31 | 群联电子股份有限公司 | 数据校正方法、内存控制电路单元与内存储存装置 |
CN107305476B (zh) * | 2016-04-25 | 2020-03-31 | 群联电子股份有限公司 | 数据校正方法、存储器控制电路单元与存储器存储装置 |
CN108664350B (zh) * | 2017-03-31 | 2021-06-22 | 群联电子股份有限公司 | 数据保护方法、存储器存储装置及存储器控制电路单元 |
CN110399090A (zh) * | 2018-04-25 | 2019-11-01 | 点序科技股份有限公司 | 存储器管理装置及其操作方法 |
CN110874282A (zh) * | 2018-08-31 | 2020-03-10 | 群联电子股份有限公司 | 数据存取方法、存储器控制电路单元与存储器存储装置 |
CN110874282B (zh) * | 2018-08-31 | 2023-03-21 | 群联电子股份有限公司 | 数据存取方法、存储器控制电路单元与存储器存储装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104252600B (zh) | 2017-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI476590B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
TW201539455A (zh) | 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI527040B (zh) | 資料寫入方法、記憶體儲存裝置與記憶體控制器 | |
CN104699413A (zh) | 数据管理方法、存储器存储装置及存储器控制电路单元 | |
TWI545432B (zh) | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 | |
CN104636267A (zh) | 存储器控制方法、存储器存储装置与存储器控制电路单元 | |
CN105005450A (zh) | 数据写入方法、存储器存储装置及存储器控制电路单元 | |
CN104866429A (zh) | 存储器管理方法、存储器控制电路单元与存储器存储装置 | |
CN105653199A (zh) | 数据读取方法、存储器存储装置及存储器控制电路单元 | |
TW201409230A (zh) | 系統資料儲存方法、記憶體控制器與記憶體儲存裝置 | |
CN103514096A (zh) | 数据储存方法、存储器控制器与存储器储存装置 | |
CN103699491A (zh) | 数据储存方法、存储器控制器与存储器储存装置 | |
CN103631670A (zh) | 存储器储存装置、存储器控制器与数据处理方法 | |
US8966344B2 (en) | Data protecting method, memory controller and memory storage device | |
TWI486765B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
CN102890645B (zh) | 存储器储存装置、存储器控制器与数据写入方法 | |
CN103593296A (zh) | 数据储存方法、存储器控制器与存储器储存装置 | |
TWI509615B (zh) | 資料儲存方法、記憶體控制器與記憶體儲存裝置 | |
CN104182293A (zh) | 数据写入方法、存储器存储装置与存储器控制器 | |
CN103678162A (zh) | ***数据储存方法、存储器控制器与存储器储存装置 | |
CN104252600A (zh) | 数据保护方法、存储器控制器与存储器储存装置 | |
CN104252317A (zh) | 数据写入方法、存储器控制器与存储器存储装置 | |
CN103513930A (zh) | 存储器管理方法、存储器控制器与存储器储存装置 | |
CN104731710A (zh) | 存储器管理方法、存储器控制电路单元与存储器储存装置 | |
CN104657083A (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 |