CN104252317B - 数据写入方法、存储器控制器与存储器存储装置 - Google Patents

数据写入方法、存储器控制器与存储器存储装置 Download PDF

Info

Publication number
CN104252317B
CN104252317B CN201310257907.1A CN201310257907A CN104252317B CN 104252317 B CN104252317 B CN 104252317B CN 201310257907 A CN201310257907 A CN 201310257907A CN 104252317 B CN104252317 B CN 104252317B
Authority
CN
China
Prior art keywords
data
subdata
physics
memory
position information
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
Application number
CN201310257907.1A
Other languages
English (en)
Other versions
CN104252317A (zh
Inventor
陈庆聪
梁鸣仁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Phison Electronics Corp
Original Assignee
Phison Electronics Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Phison Electronics Corp filed Critical Phison Electronics Corp
Priority to CN201310257907.1A priority Critical patent/CN104252317B/zh
Publication of CN104252317A publication Critical patent/CN104252317A/zh
Application granted granted Critical
Publication of CN104252317B publication Critical patent/CN104252317B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Read Only Memory (AREA)

Abstract

一种数据写入方法、存储器控制器与存储器存储装置。本方法用于可复写式非易失性存储器模块。本方法包括:从主机系统中接收写入指令与对应此写入指令的数据并且将此数据暂存至缓冲存储器中,其中此数据包括多个子数据串(sub‑data streams)。本方法还包括从缓冲存储器中将此些子数据串传送至可复写式非易失性存储器模块以写入此些子数据串至可复写式非易失性存储器模块的至少一物理抹除单元中;根据此些子数据串之中至少一部分子数据串来产生同位信息;以及将此同位信息存储在缓冲存储器中并且从缓冲存储器中移除此数据。基此,本方法可有效地使用缓冲存储器的空间。

Description

数据写入方法、存储器控制器与存储器存储装置
技术领域
本发明涉及一种用于可复写式非易失性存储器的数据写入方法及使用此方法的存储器控制器与存储器存储装置。
背景技术
数字相机、手机与MP3在这几年来的成长十分迅速,促使消费者对存储介质的需求也急遽增加。由于可复写式非易失性存储器(rewritable non-volatile memory)具有数据非易失性、低耗电、体积小、无机械结构且读写速度快等特性,最适合用在便携式电子产品,例如手机、个人数字助理与笔记型计算机等。因此,近年来,快闪存储器产业成为电子产业中相当热门的一环。
传统上,快闪存储器存储装置的快闪存储器控制器配置有缓冲存储器,并且从主机系统接收到写入指令与多笔数据时,快闪存储器控制器会先将此些数据暂存于缓冲存储器,然后再依据物理页面排列顺序依序将数据写入至对应的物理页面中。然而,在同一条字线上的物理页面彼此会有耦合关系,因此,如果一个物理页面发生编程错误,与此物理页面具耦合关系的另一个物理页面上的数据可能会遗失。例如,一个物理区块包括多个物理页面组,且每一物理页面组包括一个下物理页面与一个上物理页面。当一个物理页面组的上物理页面发生物理编程错误时,其下物理页面上的数据也可能会遗失。特别是,根据快闪存储器所规范的物理页面编程顺序,可能是连续对数个下物理页面进行编程后才对数个上物理页面进行程序。因此,在执行一个写入指令(以下称为第一写入指令)后,经常会发生某些物理页面组中仅下物理页面被写入数据的暂态,并且此些某些物理页面组中的上物理页面可能在执行下一个写入指令(以下称为第二写入指令)才会被写入数据。在此例子中,倘若执行第二写入指令已将数据写入上物理页面时发生编程错误,执行第一写入指令所写入至下物理页面的数据可能亦遗失。为了避免数据遗失,快闪存储器控制器会在缓冲存储器中保留此些数据,直到确保数据不会因其他物理页面的编程而遗失才会从缓冲存储器中移除。基此,现有快闪存储器存储系统需配置有大容量的缓冲存储器,造成快闪存储器存储系统的体积无法缩小,且制造成本增加。特别是,如果在配置多颗快闪存储器晶粒的存储器存储系统中,需要更多的缓冲存储器容量来暂存此些主机系统所写入的数据。
发明内容
本发明提供一种用于可复写式非易失性存储器模块的数据写入方法、存储器控制器与存储器存储装置,其能够减少在执行写入指令时所需的缓冲存储器空间,同时避免数据遗失。
本发明范例实施例提出一种用于可复写式非易失性存储器模块的数据写入方法,其中此可复写式非易失性存储器模块具有至少一存储器晶粒,此至少一存储器晶粒包括多个物理抹除单元,每一物理抹除单元包括多个物理编程单元。本数据写入方法包括:从主机系统中接收第一写入指令与对应此写入指令的第一数据并且将第一数据暂存至缓冲存储器中,其中此第一数据包括多个子数据串。本数据写入方法还包括从缓冲存储器中将此些子数据串传送至可复写式非易失性存储器模块以写入此些子数据串至至少一第一物理抹除单元中;根据此些子数据串之中至少一部分子数据串来产生同位信息;以及将此同位信息存储在缓冲存储器中并且从缓冲存储器中移除此第一数据。
在本发明的一范例实施例中,上述根据此些子数据串之中至少一部分子数据串来产生上述同位信息的步骤包括:依据所有的子数据串来产生上述同位信息。
在本发明的一范例实施例中,上述每一物理抹除单元的物理编程单元包括多个下物理编程单元与多个上物理编程单元,写入数据至下物理编程单元的速度快于写入数据至上物理编程单元。并且,上述根据此些子数据串之中至少一部分子数据串来产生上述同位信息的步骤包括:根据存储此些子数据串的物理编程单元识别此些子数据串之中的至少一第一子数据串以及根据此至少一第一子数据串产生该同位信息,其中此至少一第一子数据串被存储在此些下物理编程单元之中的至少一第一下物理编程单元并且对应此至少一第一下物理编程单元的至少一第一上物理编程单元未存储数据。
在本发明的一范例实施例中,上述数据写入方法,还包括:在将上述同位信息存储在缓冲存储器中并且从缓冲存储器中移除上述第一数据之后,从主机系统接收第二写入指令与对应第二写入指令的第二数据。
在本发明的一范例实施例中,上述数据写入方法还包括:判断从缓冲存储器中将第二数据写入至上述至少一第一物理抹除单元中时是否发生编程错误;以及倘若发生编程错误时,使用存储在缓冲存储器中的同位信息解码存储在上述至少一第一物理抹除单元中的至少一部分子数据串来校正上述至少一部分子数据串中的至少一错误子数据串。
在本发明的一范例实施例中,上述数据写入方法还包括:倘若从缓冲存储器中将第二数据写入至第一物理抹除单元中时未发生该编程错误时,从缓冲存储器中移除上述同位信息。
在本发明的一范例实施例中,上述数据写入方法还包括:根据至少一部分的第二数据产生另一同位信息;以及将此另一同位信息存储至缓冲存储器中并删除第二数据。
在本发明的一范例实施例中,其中从缓冲存储器中将此些子数据串传送至该可复写式非易失性存储器模块以写入此些子数据串至此些物理抹除单元之中的至少一第一物理抹除单元中的步骤包括:分别地为此些子数据串产生多个错误检查与校正码;以及将此些子数据串与分别地对应此些子数据串的错误检查与校正码传送至可复写式非易失性存储器模块以写入此些子数据串与分别地对应此些子数据串的错误检查与校正码至上述至少一第一物理抹除单元的物理编程单元中。
在本发明的一范例实施例中,上述根据此些子数据串之中至少一部分子数据串来产生同位信息的步骤包括:每当将此些子数据串之中的其中一个子数据串写入至第一物理抹除单元时,根据此其中一个子数据串与先前同位信息来产生此同位信息。
此外,本发明范例实施例提出一种存储器控制器,用于控制可复写式非易失性存储器模块。本存储器控制器包括主机接口、存储器接口、缓冲存储器、同位信息编码与解码电路以及存储器管理电路。主机接口用以电性连接至主机系统。存储器接口,用以电性连接至可复写式非易失性存储器模块,其中可复写式非易失性存储器模块具有至少一存储器晶粒,此存储器晶粒包括多个物理抹除单元,每一物理抹除单元包括多个物理编程单元。存储器管理电路电性连接至主机接口、存储器接口、缓冲存储器与同位信息编码与解码电路。存储器管理电路用以从主机系统中接收第一写入指令与对应此写入指令的第一数据并且将第一数据暂存至缓冲存储器中,其中第一数据包括多个子数据串。此外,存储器管理电路还用以从缓冲存储器中将此些子数据串传送至可复写式非易失性存储器模块以写入此些子数据串至此些物理抹除单元之中的至少一第一物理抹除单元中。另外,同位信息编码与解码电路用以根据此些子数据串之中至少一部分子数据串来产生同位信息,并且存储器管理电路还用以将此同位信息存储在缓冲存储器中并且该缓冲存储器中移除上述第一数据。
在本发明的一范例实施例中,在上述根据此些子数据串之中至少一部分子数据串来产生同位信息的运作中,上述同位信息编码与解码电路依据所有的子数据串来产生上述同位信息。
在本发明的一范例实施例中,上述每一物理抹除单元的物理编程单元包括多个下物理编程单元与多个上物理编程单元,写入数据至下物理编程单元的速度快于写入数据至上物理编程单元。并且,在根据此些子数据串之中至少一部分子数据串来产生上述同位信息的运作中,存储器管理电路根据存储此些子数据串的物理编程单元识别此些子数据串之中的至少一第一子数据串并且同位信息编码与解码电路根据此第一子数据串产生同位信息,其中第一子数据串被存储在下物理编程单元之中的至少一第一下物理编程单元并且对应此至少一第一下物理编程单元的至少一第一上物理编程单元未存储数据。
在本发明的一范例实施例中,上述存储器管理路还用以在将上述同位信息存储在缓冲存储器中并且从缓冲存储器中移除上述第一数据之后,从主机系统接收第二写入指令与对应第二写入指令的第二数据。
在本发明的一范例实施例中,上述存储器管理电路根据至少一部分的第二数据产生另一同位信息并将此另一同位信息存储至缓冲存储器中并删除第二数据。
在本发明的一范例实施例中,在上述根据此些子数据串之中至少一部分子数据串来产生同位信息的运作中,每当将此些子数据串之中的其中一个子数据串写入至第一物理抹除单元时,上述同位信息编码与解码电路根据此其中一个子数据串与先前同位信息来产生此同位信息。
再者,本发明范例实施例提出一种存储器存储装置,其包括连接器、可复写式非易失性存储器模块与存储器控制器。连接器用以电性连接至主机系统。可复写式非易失性存储器模块具有至少一存储器晶粒,此至少一存储器晶粒包括多个物理抹除单元,且每一物理抹除单元包括多个物理编程单元。存储器控制器,具有缓冲存储器且电性连接至上述连接器与可复写式非易失性存储器模块。存储器控制器用以从主机系统中接收第一写入指令与对应此写入指令的第一数据并且将第一数据暂存至缓冲存储器中,其中第一数据包括多个子数据串。此外,存储器控制器还用以从缓冲存储器中将此些子数据串传送至可复写式非易失性存储器模块以写入此些子数据串至此些物理抹除单元之中的至少一第一物理抹除单元中。另外,存储器控制器用以根据此些子数据串之中至少一部分子数据串来产生同位信息,将此同位信息存储在缓冲存储器中并且该缓冲存储器中移除上述第一数据。
在本发明的一范例实施例中,在上述根据此些子数据串之中至少一部分子数据串来产生同位信息的运作中,上述存储器控制器依据所有的子数据串来产生上述同位信息。
在本发明的一范例实施例中,上述每一物理抹除单元的物理编程单元包括多个下物理编程单元与多个上物理编程单元,写入数据至下物理编程单元的速度快于写入数据至上物理编程单元。并且,在根据此些子数据串之中至少一部分子数据串来产生上述同位信息的运作中,存储器控制器根据存储此些子数据串的物理编程单元识别此些子数据串之中的至少一第一子数据串并且根据此第一子数据串产生同位信息,其中第一子数据串被存储在下物理编程单元之中的至少一第一下物理编程单元并且对应此至少一第一下物理编程单元的至少一第一上物理编程单元未存储数据。
在本发明的一范例实施例中,上述存储器控制器还用以在将上述同位信息存储在缓冲存储器中并且从缓冲存储器中移除上述第一数据之后,从主机系统接收第二写入指令与对应第二写入指令的第二数据。
在本发明的一范例实施例中,上述存储器控制器还用以判断从缓冲存储器中将第二数据写入至上述第一物理抹除单元中时是否发生编程错误。倘若发生编程错误时,存储器控制器使用存储在缓冲存储器中的同位信息来解码存储在上述至少一第一物理抹除单元中的至少一部分子数据串以校正此至少一部分子数据串中的至少一错误子数据串。
在本发明的一范例实施例中,倘若从缓冲存储器中将第二数据写入至第一物理抹除单元中时未发生编程错误时,存储器控制器还用以从缓冲存储器中移除上述同位信息。
在本发明的一范例实施例中,上述存储器控制器根据至少一部分的第二数据产生另一同位信息并将此另一同位信息存储至缓冲存储器中并删除第二数据。
在本发明的一范例实施例中,上述存储器控制器还用以分别地为此些子数据串产生多个错误检查与校正码。并且,在从缓冲存储器中将此些子数据串传送至可复写式非易失性存储器模块以写入此些子数据串至此些物理抹除单元之中的至少一第一物理抹除单元中的运作中,上述存储器控制器将此些子数据串与分别地对应此些子数据串的错误检查与校正码传送至可复写式非易失性存储器模块以写入此些子数据串与分别地对应此些子数据串的错误检查与校正码至上述至少一第一物理抹除单元的物理编程单元中。
在本发明的一范例实施例中,在上述根据此些子数据串之中至少一部分子数据串来产生同位信息的运作中,每当将此些子数据串之中的其中一个子数据串写入至第一物理抹除单元时,上述存储器控制器根据此其中一个子数据串与先前同位信息来产生此同位信息。
基于上述,本范例实施例的数据写入方法、存储器控制器与存储器存储装置能够在使用较少的缓冲存储器空间下执行写入指令同时确保数据的正确性。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是根据一范例实施例所绘示的主机系统与存储器存储装置。
图2是根据一范例实施例所绘示的计算机、输入/输出装置与存储器存储装置的示意图。
图3是根据一范例实施例所绘示的主机系统与存储器存储装置的示意图。
图4是绘示根据本范例实施例所绘示的存储器存储装置的概要方块图。
图5是根据一范例实施例所绘示的存储器控制器的概要方块图。
图6是根据本发明一范例实施例所绘示的可复写式非易失性存储器模块的示意图。
图7是根据本发明一范例实施例所绘示的物理抹除单元中物理编程单元的布局示意图。
图8与图9是根据一范例实施例所绘示的管理可复写式非易失性存储器模块的范例示意图。
图10~12是根据本发明一范例实施例所绘示的写入数据至物理编程单元的范例。
图13~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:可复写式非易失性存储器模块
202:存储器管理电路
204:主机接口
206:存储器接口
208:缓冲存储器
210:错误检查与校正电路
212:同位信息编码与解码电路
252:记忆胞阵列
254:控制电路
256:数据输入/输出缓冲器
256a:第一缓冲区
256b:第二缓冲区
304(0)~304(R):物理抹除单元
701(0)~701(255):物理编程单元
400:存储器晶粒
402:数据区
404:备用区
406:系统区
408:取代区
LBA(0)~LBA(H):逻辑地址
DATA1、DATA2:数据
P1、P2:同位信息
SDATA1、SDATA2、SDATA3、SDATA4、SDATA5、SDATA6、SDAT7、SDATA8、SDATA9、SDATA10、SDATA11、SDATA12:子数据串
ECC1、ECC2、ECC3、ECC4、ECC5、ECC6、ECC7、ECC8、ECC9、ECC10、ECC11、ECC12:错误检查与校正码
S1601、S1603、S1605、S1607、S1609、S1611、S1613:数据写入方法的步骤
具体实施方式
一般而言,存储器存储装置(亦称,存储器存储系统)包括可复写式非易失性存储器模块与控制器(亦称,控制电路)。通常存储器存储装置是与主机系统一起使用,以使主机系统可将数据写入至存储器存储装置或从存储器存储装置中读取数据。
图1是根据一范例实施例所绘示的主机系统与存储器存储装置。
请参照图1,主机系统1000一般包括计算机1100与输入/输出(input/output,I/O)装置1106。计算机1100包括微处理器1102、随机存取存储器(random access memory,RAM)1104、系统总线1108与数据传输接口1110。输入/输出装置1106包括如图2的鼠标1202、键盘1204、显示器1206与打印机1252。必须了解的是,图2所示的装置非限制输入/输出装置1106,输入/输出装置1106可还包括其他装置。
在本发明实施例中,存储器存储装置100是通过数据传输接口1110与主机系统1000的其他元件电性连接。通过微处理器1102、随机存取存储器1104与输入/输出装置1106的运作可将数据写入至存储器存储装置100或从存储器存储装置100中读取数据。例如,存储器存储装置100可以是如图2所示的随身碟1212、存储卡1214或固态硬盘(Solid StateDrive,SSD)1216等的可复写式非易失性存储器存储装置。
一般而言,主机系统1000为可实质地与存储器存储装置100配合以存储数据的任意系统。虽然在本范例实施例中,主机系统1000是以计算机系统来作说明,然而,在本发明另一范例实施例中主机系统1000可以是数字相机、摄像机、通信装置、音讯播放器或视频播放器等系统。例如,在主机系统为数字相机(摄像机)1310时,可复写式非易失性存储器存储装置则为其所使用的SD卡1312、MMC卡1314、记忆棒(memory stick)1316、CF卡1318或嵌入式存储装置1320(如图3所示)。嵌入式存储装置1320包括嵌入式多媒体卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒体卡是直接电性连接于主机系统的基板上。
图4是绘示根据本范例实施例所绘示的存储器存储装置的概要方块图。
请参照图4,存储器存储装置100包括连接器102、存储器控制器104与可复写式非易失性存储器模块106。
在本范例实施例中,连接器102是相容于串行先进附件(Serial AdvancedTechnology Attachment,SATA)标准。然而,必须了解的是,本发明不限于此,连接器102也可以是符合并行先进附件(Parallel Advanced Technology Attachment,PATA)标准、电气和电子工程师协会(Institute of Electrical and Electronic Engineers,IEEE)1394标准、高速外围组件连接接口(Peripheral Component Interconnect Express,PCIExpress)标准、通用串行总线(Universal Serial Bus,USB)标准、安全数字(SecureDigital,SD)接口标准、超高速一代(Ultra High Speed-I,UHS-I)接口标准、超高速二代(Ultra High Speed-II,UHS-II)接口标准、记忆棒(Memory Stick,MS)接口标准、多媒体存储卡(Multi Media Card,MMC)接口标准、崁入式多媒体存储卡(Embedded MultimediaCard,eMMC)接口标准、通用快闪存储器(Universal Flash Storage,UFS)接口标准、小型快闪(Compact Flash,CF)接口标准、整合式驱动电子接口(Integrated DeviceElectronics,IDE)标准或其他适合的标准。
存储器控制器104用以执行以硬件型式或固件型式实作的多个逻辑门或控制指令,并且根据主机系统1000的指令在可复写式非易失性存储器模块106中进行数据的写入、读取与抹除等运作。
可复写式非易失性存储器模块106是电性连接至存储器控制器104,并且用以存储主机系统1000所写入的数据。
图5是根据一范例实施例所绘示的存储器控制器的概要方块图。必须了解的是,图5所示的存储器控制器的结构仅为一范例,本发明不以此为限。
请参照图5,存储器控制器104包括存储器管理电路202、主机接口204、存储器接口206、缓冲存储器208、错误检查与校正电路210与同位信息编码与解码电路212。
存储器管理电路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是相容于SATA标准。然而,必须了解的是本发明不限于此,主机接口204也可以是相容于PATA标准、IEEE1394标准、PCI Express标准、USB标准、SD标准、UHS-I接口标准、UHS-II接口标准、MS标准、MMC标准、eMMC接口标准、UFS接口标准、CF标准、IDE标准或其他适合的数据传输标准。
存储器接口206是电性连接至存储器管理电路202并且用以存取可复写式非易失性存储器模块106。也就是说,欲写入至可复写式非易失性存储器模块106的数据会经由存储器接口206转换为可复写式非易失性存储器模块106所能接受的格式。
缓冲存储器208是电性连接至存储器管理电路202并且用以暂存来自于主机系统1000的数据与指令或来自于可复写式非易失性存储器模块106的数据。
错误检查与校正电路210是电性连接至存储器管理电路202并且用以执行错误检查与校正程序以确保数据的正确性。在本范例实施例中,当存储器管理电路202从主机系统1000中接收到写入指令时,错误检查与校正电路210会为对应此写入指令的数据产生对应的错误检查与校正码(Error Checking and Correcting Code,ECC Code),并且存储器管理电路202会将对应此写入指令的数据与对应的错误检查与校正码写入至可复写式非易失性存储器模块106中。之后,当存储器管理电路202从可复写式非易失性存储器模块106中读取数据时会同时读取此数据对应的错误检查与校正码,并且错误检查与校正电路210会依据此错误检查与校正码对所读取的数据执行错误检查与校正程序。具体来说,错误检查与校正电路210会被设计能够校正一数目的错误位(以下称为最大可校正错误位数)。例如,最大可校正错误位数为24。倘若发生在所读取的数据的错误位的数目非大于24个时,错误检查与校正电路210就能够依据错误检查与校正码将错误位校正回正确的值。反之,错误检查与校正电路210就会回报错误校正失败且存储器管理电路202会将指示数据已遗失的讯息传送给主机系统1000。
同位信息编码与解码电路212是电性连接至存储器管理电路202并且用以根据存储器管理电路202的指示编码暂存于缓冲存储器208中欲写入至多个物理编程单元的多笔数据(即,主机系统1000欲写入的数据)以产生同位信息。此外,同位信息编码与解码电路212也可根据存储器管理电路202的指示以同位信息解码存储在多个物理编程单元的数据以修正数据内的错误数据。也就是说,倘若此些物理编程单元的其中一个物理编程单元上的数据出现错误数据时,同位信息编码与解码电路212能够依据所产生的同位信息来解码此些物理编程单元上的数据以修正错误数据。在此,同位信息编码与解码电路212所产生的同位信息可以是奇偶校正码(parity checking code)、通道编码(channel coding)或是其他类型。例如,汉明码(hamming code)、低密度奇偶检查码(low density parity checkcode,LDPC code)、涡旋码(turbo code)或里德-所罗门码(Reed-solomon code,RS code)。例如,如果数据与同位信息的长度比例为m:n,则表示m笔数据会对应至n笔同位信息,其中m与n为正整数并且在数据错误笔数小于n的情况下错误数据都可通过同位信息来修正。一般来说,正整数m会大于正整数n,但本发明并不在此限。并且,本发明也不限制正整数m与正整数n的值。
图6是根据本发明一范例实施例所绘示的可复写式非易失性存储器模块106的示意图。
可复写式非易失性存储器模块106包括存储器晶粒400。存储器晶粒400包括记忆胞阵列252、控制电路254与数据输入/输出缓冲器256。
记忆胞阵列252包括物理抹除单元304(0)~304(R)。每一物理抹除单元分别具有至少一个物理编程单元,并且属于同一个物理抹除单元的物理编程单元可被独立地写入且被同时地抹除。例如,每一物理抹除单元是由128个物理编程单元所组成。然而,必须了解的是,本发明不限于此,每一物理抹除单元也可由64个物理编程单元、256个物理编程单元或其他任意个物理编程单元所组成。
更详细来说,物理抹除单元为抹除的最小单位。亦即,每一物理抹除单元含有最小数目之一并被抹除的记忆胞。物理编程单元为编程的最小单元。即,物理编程单元为写入数据的最小单元。
具体来说,依据每个记忆胞可存储的位数,NAND型快闪存储器可区分为单阶存储单元(Single Level Cell,SLC)NAND型快闪存储器、多阶存储单元(Multi Level Cell,MLC)NAND型快闪存储器与多阶存储单元(Trinary Level Cell,TLC)NAND型快闪存储器,其中SLC NAND型快闪存储器的每个记忆胞可存储1个位的数据(即,“1”与“0”),MLC NAND型快闪存储器的每个记忆胞可存储2个位的数据并且TLC NAND型快闪存储器的每个记忆胞可存储3个位的数据。
在NAND型快闪存储器中,物理编程单元是由排列在同一条字线上的数个记忆胞所组成。由于SLC NAND型快闪存储器的每个记忆胞可存储1个位的数据,因此,在SLC NAND型快闪存储器中,排列在同一条字线上的数个记忆胞是对应一个物理编程单元。
相对于SLC NAND型快闪存储器来说,MLC NAND型快闪存储器的每个记忆胞的浮动门存储层可存储2个位的数据,其中每一个存储状态(即,“11”、“10”、“01”与“00”)包括最低有效位(Least Significant Bit,LSB)以及最高有效位(Most Significant Bit,MSB)。例如,存储状态中从左侧算起的第1个位的值为LSB,而从左侧算起的第2个位的值为MSB。因此,排列在同一条字线上的数个记忆胞可组成2个物理编程单元,其中由此些记忆胞的LSB所组成的物理编程单元称为下物理编程单元,并且由此些记忆胞的MSB所组成的物理编程单元称为上物理编程单元。特别是,下物理编程单元的写入速度会快于上物理编程单元的写入速度,并且当编程上物理编程单元发生错误时,下物理编程单元所存储的数据也可能因此遗失。
类似地,在TLC NAND型快闪存储器中,每个记忆胞可存储3个位的数据,其中每一个存储状态(即,“111”、”110”、“101”、“100”、“011”、“010”、“001”与“000”)包括左侧算起的第1个位的LSB、从左侧算起的第2个位的中间有效位(Center Significant Bit,CSB)以及从左侧算起的第3个位的MSB。因此,排列在同一条字线上的数个记忆胞可组成3个物理编程单元,其中由此些记忆胞的LSB所组成的物理编程单元称为下物理编程单元,由此些记忆胞的CSB所组成的物理编程单元称为中物理编程单元,并且由此些记忆胞的MSB所组成的物理编程单元称为上物理编程单元。同样地,相对于中物理编程单元与上物理编程单元来说,下物理编程单元具有较高的稳定度并且写入数据至下物理编程单元的速度快于写入数据至中物理编程单元与上物理编程单元的速度。
每一物理编程单元通常包括数据位区与冗余位区。数据位区包含多个物理存取地址用以存储使用者的数据,而冗余位区用以存储系统的数据(例如,控制信息与错误更正码)。在本范例实施例中,每一个物理编程单元的数据位区中会包含4个物理存取地址,且一个物理存取地址的大小为512字节(byte)。然而,在其他范例实施例中,数据位区中也可包含数目更多或更少的物理存取地址,本发明并不限制物理存取地址的大小以及个数。例如,在一范例实施例中,物理抹除单元为物理区块,并且物理编程单元为物理页面或物理扇区,但本发明不以此为限。
在本范例实施例中,可复写式非易失性存储器模块106为多阶存储单元(MultiLevel Cell,MLC)反及(NAND)型快闪存储器模块。然而,本发明不限于此,可复写式非易失性存储器模块106也可是单阶存储单元(Single Level Cell,SLC)NAND型快闪存储器模块、多阶存储单元(Trinary Level Cell,TLC)NAND型快闪存储器模块、其他快闪存储器模块或其他具有相同特性的存储器模块。
控制电路254用以根据来自于存储器控制器104的指令将数据编程至记忆胞阵列252或从记忆胞阵列252中读取数据。
数据输入/输出缓冲器256包括第一缓冲区256a与第二缓冲区256b。第一缓冲区256a与第二缓冲区256b彼此独立,且可分别具有相同的容量。例如,第一缓冲区256a与第二缓冲区256b的容量皆为一个物理编程单元的容量,用以暂存欲写入至记忆胞阵列202的数据或从记忆胞阵列202中所读取的数据。
在可复写式非易失性存储器模块106中写入数据的过程包括数据传输以及数据编程两个部分。在数据传输的部分,存储器控制器104(或存储器管理电路202)会将欲写入的页数据传输至第一缓冲区256a,并且之后,欲写入的页数据会被搬移至第二缓冲区256b。而在数据编程的部分,欲写入的页数据会从第二缓冲区256b中编程至记忆胞阵列252。特别是,当欲写入的页数据从第一缓冲区256a搬移至第二缓冲区256b之后,存储器控制器104(或存储器管理电路202)就会从可复写式非易失性存储器模块106中接收到完成写入指令的确认讯息,而可再对可复写式非易失性存储器模块106传输(或下达)下一个指令。在此,第一缓冲区256a也可称为数据快取(data cache)区,而第二缓冲区256b也可称为页面缓冲(page buffer)区,并且通过第二缓冲区256b的写入运作可称为快取编程(Cache Program)运作。
值得一提的是,在本发明范例实施例中,存储器控制器104(或存储器管理电路202)也可指示可复写式非易失性存储器模块106不使用第二缓冲区256b来写入数据。例如,在数据输入/输出缓冲器256未配置第二缓冲区256b或者基于某些因素而不使用第二缓冲区256b的例子中,可复写式非易失性存储器模块106也可根据存储器控制器104(或存储器管理电路202)的指令直接将欲写入的页数据从第一缓冲区256a中编程至记忆胞阵列252中。在此例子中,存储器管理电路202必须等到可复写式非易失性存储器模块106将页数据从第一缓冲区256a中编程至记忆胞阵列252之后才会接收到完成写入指令的确认讯息。
必须了解的是,本发明不限于图6的范例,并且在另一范例实施例中,数据输入/输出缓冲器256也可只具有一个缓冲区或大于2个缓冲区。
图7是根据本发明一范例实施例所绘示的物理抹除单元中物理编程单元的布局示意图。
请参照图7,在此以MLC NAND快闪存储器的物理抹除单元为例进行说明并且假设每个物理抹除单元包括256个物理编程单元。物理抹除单元304(0)包括物理编程单元701(0)~701(255)。物理编程单元701(0)与物理编程单元701(4)位于同一条字线上,物理编程单元701(1)与物理编程单元701(5)位于同一条字线上,物理编程单元701(2)与物理编程单元701(8)位于同一条字线上,物理编程单元701(3)与物理编程单元701(9)位于同一条字线上,物理编程单元701(6)与物理编程单元701(12)位于同一条字线上,物理编程单元701(7)与物理编程单元701(13)位于同一条字线上,物理编程单元701(10)与物理编程单元701(16)位于同一条字线上,物理编程单元701(11)与物理编程单元701(17)位于同一条字线上,并且以此类推。在此,物理编程单元701(0)、701(1)、701(2)、701(3)、701(6)、701(7)、710(10)、710(11)、701(14)、701(15)、...、701(250)与701(251)属于下物理程序单元,并且物理编程单元701(4)、701(5)、701(8)、701(9)、701(12)、701(13)、710(16)、710(17)、...、701(252)、701(253)、701(254)与701(255)属于上物理程序单元。必须了解的是,图7所示的配置方式仅为范例,本发明不限于此。
图8与图9是根据一范例实施例所绘示的管理可复写式非易失性存储器模块的范例示意图。
必须了解的是,在此描述可复写式非易失性存储器模块106的物理抹除单元的运作时,以“提取”、“交换”、“分组”、“轮替”等词来操作物理抹除单元是逻辑上的概念。也就是说,可复写式非易失性存储器模块的物理抹除单元的实际位置并未更动,而是逻辑上对可复写式非易失性存储器模块的物理抹除单元进行操作。
请参照图8,存储器控制器104(或存储器管理电路202)会将可复写式非易失性存储器模块106的物理抹除单元304(0)~304(R)逻辑地分组为(或指派至)数据区(dataarea)402、备用区(spare area)404、系统区(system area)406与取代区(replacementarea)408。
逻辑上属于数据区402与备用区404的物理抹除单元是用以存储来自于主机系统1000的数据。具体来说,数据区402的物理抹除单元(亦称为数据物理抹除单元)是被视为已存储数据的物理抹除单元,而备用区404的物理抹除单元(亦称为备用物理抹除单元)是用以写入新数据的物理抹除单元。例如,当从主机系统1000接收到写入指令与欲写入的数据时,存储器控制器104(或存储器管理电路202)会从备用区404中提取物理抹除单元,整理欲写入的数据并且将数据写入至所提取的物理抹除单元中。
逻辑上属于系统区406的物理抹除单元是用以记录系统数据,其中此系统数据包括关于存储器芯片的制造商与型号、存储器芯片的物理抹除单元数、每一物理抹除单元的物理编程单元数、映射表等。特别是,当物理抹除单元备用于写入系统数据时,存储器控制器104(或存储器管理电路202)会在此物理抹除单元的物理编程单元的冗余位区中记录一个系统物理抹除单元标记,以识别此物理抹除单元是被用于存储系统数据的系统物理抹除单元。值得一提的是,由于对于存储器存储装置100来说,系统数据是相当重要的数据,因此,在可复写式非易失性存储器模块106为MLC NAND型快闪存储器模块或TLC NAND型快闪存储器模块的范例实施例中,存储器控制器104(或存储器管理电路202)仅会使用系统物理抹除单元的下物理编程单元来存储系统数据,以确保数据的可靠度。
逻辑上属于取代区408中的物理抹除单元是替代物理抹除单元。例如,可复写式非易失性存储器模块106于出厂时会预留4%的物理抹除单元作为更换使用。也就是说,当数据区402、备用区404或系统区406中的物理抹除单元损毁时,预留于取代区408中的物理抹除单元是用以取代损坏的物理抹除单元(即,坏物理抹除单元(bad block))。因此,倘若取代区408中仍存有正常的物理抹除单元且发生物理抹除单元损毁时,存储器控制器104(或存储器管理电路202)会从取代区408中提取正常的物理抹除单元来更换损毁的物理抹除单元。倘若取代区408中无正常的物理抹除单元且发生物理抹除单元损毁时,则存储器控制器104会将整个存储器存储装置100宣告为写入保护(write protect)状态,而无法再写入数据。
特别是,数据区402、备用区404、系统区406与取代区408的物理抹除单元的数量会依据不同的存储器规格而有所不同。此外,必须了解的是,在存储器存储装置100的运作中,物理抹除单元关联至数据区402、备用区404、系统区406与取代区408的分组关系会动态地变动。例如,当备用区404中的物理抹除单元损坏而被取代区408的物理抹除单元取代时,则原本取代区408的物理抹除单元会被关联至备用区404。
请参照图9,如上所述,数据区402与备用区404的物理抹除单元是以轮替方式来存储主机系统1000所写入的数据。在本范例实施例中,存储器控制器104(或存储器管理电路202)会配置逻辑地址LBA(0)~LBA(H)给主机系统1000以进行数据的存取。每个逻辑地址是由数个扇区(sector)所组成。例如,在本范例实施例中,每一逻辑地址是由4个扇区所组成。但本发明不限于此,在本发明另一范例实施例中,逻辑地址也可是由8个扇区所组成或是由16个扇区所组成。在本范例实施例中,一个逻辑地址的大小是相同于一个物理编程单元的大小,并且数据区402与备用区404的物理抹除单元的物理编程单元的数目是大于逻辑地址的数目。
例如,当存储器控制器104(或存储器管理电路202)开始使用物理抹除单元304(0)来存储主机系统1000欲写入的数据时,不管主机系统1000是写入那个逻辑地址,存储器控制器104(或存储器管理电路202)会将数据写入至物理抹除单元304(0)的物理编程单元;而当存储器控制器104(或存储器管理电路202)开始使用物理抹除单元304(1)来存储主机系统1000欲写入的数据时,不管主机系统1000是写入那个逻辑地址,存储器控制器104(或存储器管理电路202)会将数据写入至物理抹除单元304(1)的物理编程单元中。也就是说,当写入主机系统1000欲写入的数据时,存储器控制器104(或存储器管理电路202)会使用一个物理抹除单元内的物理编程单元来写入数据,并且当此物理抹除单元内的物理编程单元被使用完后才会再选择另一个无存储数据的物理抹除单元,并且在新选择的物理抹除单元的物理编程单元中继续写入数据。
为了识别每个逻辑地址的数据被存储在那个物理编程单元,在本范例实施例中,存储器控制器104(或存储器管理电路202)会记录逻辑地址与物理编程单元之间的映射关系。并且,当主机系统1000欲在扇区中存取数据时,存储器控制器104(或存储器管理电路202)会确认此扇区所属的逻辑地址,并且在此逻辑地址所映射的物理编程单元中来存取数据。例如,在本范例实施例中,存储器控制器104(或存储器管理电路202)会在可复写式非易失性存储器模块106的系统区406中存储逻辑地址映射表来记录每一逻辑地址所映射的物理编程单元,并且当欲存取数据时,存储器控制器104(或存储器管理电路202)会将逻辑地址映射表载入至缓冲存储器208来维护。
图10~12是根据本发明一范例实施例所绘示的写入数据至物理编程单元的范例。
请参照图10~12,倘若从主机系统1000接收到一写入指令(以下称为第一写入指令)及欲写入至逻辑地址LBA(0)~LBA(3)的数据DATA1时,存储器控制器104(或存储器管理电路202)会将数据DATA1暂存至缓冲存储器208,并且将数据DATA1根据物理编程单元的大小整理成子数据串SDATA1、SDATA2、SDATA3与SDATA4。然后,存储器控制器104(或错误检查与校正电路210)会分别地为SDATA1、SDATA2、SDATA3与SDATA4产生错误检查与校正码ECC1、ECC2、ECC3、与ECC4。之后,存储器控制器104(或存储器管理电路202)会选取一个物理抹除单元(例如,物理编程单元304(0))并且将子数据串SDATA1、SDATA2、SDATA3与SDATA4及错误检查与校正码ECC1、ECC2、ECC3、与ECC4分别且依序地编程至物理编程单元304(0)的物理编程单元701(0)、701(1)、701(2)与701(3)。特别是,存储器控制器104(或同位信息编码与解码电路212)会根据子数据串SDATA1、SDATA2、SDATA3与SDATA4来产生同位信息P1。然后,存储器控制器104(或存储器管理电路202)会将同位信息P1暂存至缓冲存储器208并且删除暂存在缓冲存储器208中的子数据串SDATA1、SDATA2、SDATA3与SDATA4。具体来说,由于存储子数据串SDATA1、SDATA2、SDATA3与SDATA4的物理编程单元701(0)、701(1)、701(2)与701(3)皆为下物理编程单元,并且对应下物理编程单元701(0)、701(1)、701(2)与701(3)的上物理编程单元710(4)、710(5)、710(8)、710(9)尚未被写入数据。因此,如果之后对对应下物理编程单元701(0)、701(1)、701(2)与701(3)的上物理编程单元710(4)、710(5)、710(8)、710(9)执行编程并发生编程错误时,存储在下物理编程单元701(0)、701(1)、701(2)与701(3)的数据可能会遗失。基此,在缓冲存储器208中存储对应子数据串SDATA1、SDATA2、SDATA3与SDATA4的同位信息以取代完成地暂存子数据串SDATA1、SDATA2、SDATA3与SDATA4,可在减少所需的缓冲存储器208的空间下,达到保护数据的效果。
图13~15是根据本发明一范例实施例所绘示的写入数据至物理编程单元的另一范例。
请参照图13~15,接续图10~12,倘若再从主机系统1000接收到另一写入指令(以下称为第二写入指令)及欲写入至逻辑地址LBA(4)~LBA(11)的数据DATA2时,存储器控制器104(或存储器管理电路202)会将数据暂存至缓冲存储器208,并且将数据DATA2根据物理编程单元的大小整理成子数据串SDATA5、SDATA6、SDATA7、SDATA8、SDATA9、SDATA10、SDATA11与SDATA12。然后,存储器控制器104(或错误检查与校正电路210)会分别地为子数据串SDATA5、SDATA6、SDATA7、SDATA8、SDATA9、SDATA10、SDATA11与SDATA12产生错误检查与校正码ECC5、ECC6、ECC7、ECC8、ECC9、ECC10、ECC11与ECC12。之后,存储器控制器104(或存储器管理电路202)会将子数据串SDATA5、SDATA6、SDATA7、SDATA8、SDATA9、SDATA10、SDATA11与SDATA12以及错误检查与校正码ECC5、ECC6、ECC7、ECC8、ECC9、ECC10、ECC11与ECC12分别且依序地编程至物理编程单元304(0)的物理编程单元701(4)、701(5)、701(6)、701(7)、701(8)、701(9)、701(10)与701(11)。特别是,存储器控制器104(或同位信息编码与解码电路212)会根据子数据串SDATA7、SDATA8、SDATA11与SDATA12来产生同位信息P2。然后,存储器控制器104(或存储器管理电路202)会将同位信息P2暂存至缓冲存储器208并且删除暂存在缓冲存储器208中的子数据串SDATA5、SDATA6、SDATA7、SDATA8、SDATA9、SDATA10、SDATA11与SDATA12。具体来说,由于存储子数据串SDATA7、SDATA8、SDATA11与SDATA12的物理编程单元701(6)、701(7)、701(10)与701(11)皆为下物理编程单元,并且对应下物理编程单元701(6)、701(7)、701(10)与701(11)的上物理编程单元710(12)、710(13)、710(16)、710(17)尚未被写入数据。因此,如果之后对上物理编程单元710(12)、710(13)、710(16)、710(17)执行编程并发生编程错误时,存储在下物理编程单元701(6)、701(7)、701(10)与701(11)的数据可能会遗失。基此,在缓冲存储器208中存储对应子数据串SDATA7、SDATA8、SDATA11与SDATA12的同位信息以取代完成地暂存子数据串SDATA7、SDATA8、SDATA11与SDATA12,可在减少所需的缓冲存储器208的空间下,达到保护数据的效果。
在本发明另一范例实施例中,存储器控制器104(或存储器管理电路202)会确认先前所存储的子数据串SDATA1、SDATA2、SDATA3与SDATA4是否正确无误,并且在先前所存储的子数据串SDATA1、SDATA2、SDATA3与SDATA4正确无误时从缓冲存储器208中删除同位信息P1。另外,在另一范例实施例中,存储器控制器104(或存储器管理电路202)也可在缓冲存储器208的空间不足时才删除同位信息P1。
在图13~15的范例中,倘若在将子数据串SDATA5、SDATA6、SDATA9或SDATA10编程物理编程单元701(4)、701(5)、701(8)或701(9)时发生编程错误并且导致子数据串SDATA1、SDATA2、SDATA3或SDATA4出现错误数据时,存储器控制器104(或存储器管理电路202)会根据同位信息P1以及目前存储在物理编程单元701(0)、701(1)、701(2)与701(3)的子数据串来校正错误数据(子数据串SDATA1、SDATA2、SDATA3或SDATA4)。至于发生编程错误的子数据串SDATA5、SDATA6、SDATA9或SDATA10,因缓冲存储器208仍保留有此些子数据串,而不会遗失。
值得一提的是,尽管在本范例实施例中,存储器控制器104(或存储器管理电路202)会识别出哪些已被写入数据的下物理编程所对应的上物理编程单元未被编程,并且存储器控制器104(或同位信息编码与解码电路212)针对所识别之下物理编程单元上的子数据串来产生同位信息,但本发明不限于此。例如,在本发明另一范例实施例中,存储器控制器104(或同位信息编码与解码电路212)也可对此次写入指令所欲写入的所有子数据串来产生同位信息。又例如,在本发明另一范例实施例中,存储器控制器104(或同位信息编码与解码电路212)也可在每写一笔子数据至物理编程单元时,根据前一次写入子数据至物理编程单元所产生的先前同位信息与目前所写入的子数据来产生新的同位信息。
图16是根据一范例实施例所绘示的数据写入的流程图。
请参照图16,在步骤S1601中,存储器控制器104(或存储器管理电路202)从主机系统1000接收写入指令与对应的数据。
在步骤S1603中,存储器控制器104(或存储器管理电路202)会将数据暂存至缓冲存储器208并且将数据整理成多个子数据串。
在步骤S1605中,存储器控制器104(或存储器管理电路202)会选择至少一物理抹除单元(以下称为第一物理抹除单元)且将子数据串写入至第一物理抹除单元的物理编程单元中。具体来说,存储器控制器104(或错误检查与校正电路210)会为每个子数据串产生对应的错误检查与校正码,并且存储器控制器104(或存储器管理电路202)会将子数据串与对应的错误检查与校正码写入至对应的物理编程单元。
在步骤S1607中,存储器控制器104(或存储器管理电路202)会判断将子数据串写入至第一物理抹除单元的物理编程单元的过程中是否发生编程错误。
倘若未发生编程错误时,在步骤S1609中,存储器控制器104(或同位信息编码与解码电路212)会根据此些子数据串之中至少一部分子数据串来产生同位信息。例如,如上所述,存储器控制器104(或存储器管理电路202)会识别存储此些子数据串的下物理编程单元之中其对应之上物理编程单元(以下称为第一上物理编程单元)未存储数据的下物理编程单元(以下称为第一下物理编程单元)并且依据被写入至第一下物理编程单元的子数据串来产生同位信息。
在步骤S1611中,存储器控制器104(或存储器管理电路202)会将所产生的同位信息存储至缓冲存储器208,从缓冲存储器208中删除此些子数据串。特别是,倘若缓冲存储器208中存有执行前次写入指令所存储的同位信息时,在步骤S1611中存储器控制器104(或存储器管理电路202)会一并将旧的同位信息移除。
倘若发生编程错误时,在步骤S1613中,存储器控制器104(或同位信息编码与解码电路212)会根据缓冲存储器208中的同位信息来解码前次写入指令所写入的子数据串中的至少其中一部分来校正错误数据。之后,存储器控制器104(或存储器管理电路202)可将重新进行编程运作。
综上所述,本发明范例实施例的数据写入方法使用此数据写入方法的存储器控制器能够有效地使用缓冲存储器的存储空间来执行写入指令,同时避免数据遗失。此外,使用此数据写入方法存储器存储装置能够在配置较少容量的缓冲存储器下顺利地执行写入指令,同时避免数据遗失。

Claims (24)

1.一种数据写入方法,用于写入数据至一可复写式非易失性存储器模块,其中该可复写式非易失性存储器模块具有至少一存储器晶粒,该至少一存储器晶粒包括多个物理抹除单元,每一这些物理抹除单元包括多个物理编程单元,该数据写入方法包括:
从一主机系统中接收一第一写入指令与对应该写入指令的一第一数据并且将该第一数据暂存至一缓冲存储器中,其中该第一数据包括多个子数据串;
从该缓冲存储器中将这些子数据串传送至该可复写式非易失性存储器模块以写入这些子数据串至这些物理抹除单元之中的至少一第一物理抹除单元中;
根据这些子数据串之中至少一部分子数据串来产生一同位信息;以及
将该同位信息存储在该缓冲存储器中并且从该缓冲存储器中移除该第一数据。
2.如权利要求1所述的数据写入方法,其中所述根据这些子数据串之中至少一部分子数据串来产生一同位信息的步骤包括:
依据所有的这些子数据串来产生该同位信息。
3.如权利要求1所述的数据写入方法,其中每一这些物理抹除单元的物理编程单元包括多个下物理编程单元与多个上物理编程单元,写入数据至这些下物理编程单元的速度快于写入数据至这些上物理编程单元,
其中所述根据这些子数据串之中该至少一部分子数据串来产生该同位信息的步骤包括:
根据存储这些子数据串的物理编程单元识别这些子数据串之中的至少一第一子数据串,其中该至少一第一子数据串被存储在这些下物理编程单元之中的至少一第一下物理编程单元并且对应该至少一第一下物理编程单元的至少一第一上物理编程单元未存储数据;以及
根据该至少一第一子数据串产生该同位信息。
4.如权利要求1所述的数据写入方法,还包括:
在将该同位信息存储在该缓冲存储器中并且从该缓冲存储器中移除该第一数据之后,从该主机系统接收一第二写入指令与对应该第二写入指令的一第二数据。
5.如权利要求4所述的数据写入方法,还包括:
判断从该缓冲存储器中将该第二数据写入至该至少一第一物理抹除单元中时是否发生一编程错误;以及
倘若从该缓冲存储器中将该第二数据写入至该至少一第一物理抹除单元中时发生该编程错误时,使用存储在该缓冲存储器中的该同位信息解码存储在该至少一第一物理抹除单元中的该至少一部分子数据串来校正该至少一部分子数据串中的至少一错误子数据串。
6.如权利要求5所述的数据写入方法,还包括:
倘若从该缓冲存储器中将该第二数据写入至该至少一第一物理抹除单元中时未发生该编程错误时,从该缓冲存储器中移除该同位信息。
7.如权利要求4所述的数据写入方法,还包括:
根据至少一部分的该第二数据产生另一同位信息;以及
将该另一同位信息存储至该缓冲存储器中并删除该第二数据。
8.如权利要求1所述的数据写入方法,其中从该缓冲存储器中将这些子数据串传送至该可复写式非易失性存储器模块以写入这些子数据串至这些物理抹除单元之中的该至少一第一物理抹除单元中的步骤包括:
分别地为这些子数据串产生多个错误检查与校正码;以及
将这些子数据串与分别地对应这些子数据串的这些错误检查与校正码传送至该可复写式非易失性存储器模块以写入这些子数据串与分别地对应这些子数据串的这些错误检查与校正码至该至少一第一物理抹除单元的物理编程单元中。
9.如权利要求1所述的数据写入方法,其中所述根据这些子数据串之中该至少一部分子数据串来产生该同位信息的步骤包括:
每当将这些子数据串之中的其中一个子数据串写入至该至少一第一物理抹除单元时,根据该其中一个子数据串与一先前同位信息来产生该同位信息。
10.一种存储器控制器,用于控制一可复写式非易失性存储器模块,该存储器控制器包括:
一主机接口,用以电性连接至一主机系统;
一存储器接口,用以电性连接至该可复写式非易失性存储器模块,其中该可复写式非易失性存储器模块具有至少一存储器晶粒,该至少一存储器晶粒包括多个物理抹除单元,每一这些物理抹除单元包括多个物理编程单元;
一缓冲存储器;
一同位信息编码与解码电路;以及
一存储器管理电路,电性连接至该主机接口、该存储器接口、该缓冲存储器与该同位信息编码与解码电路,
其中该存储器管理电路用以从该主机系统中接收一第一写入指令与对应该写入指令的一第一数据并且将该第一数据暂存至一缓冲存储器中,其中该第一数据包括多个子数据串,
其中该存储器管理电路还用以从该缓冲存储器中将这些子数据串传送至该可复写式非易失性存储器模块以写入这些子数据串至这些物理抹除单元之中的至少一第一物理抹除单元中,
其中该同位信息编码与解码电路用以根据这些子数据串之中至少一部分子数据串来产生一同位信息,
其中该存储器管理电路还用以将该同位信息存储在该缓冲存储器中并且从该缓冲存储器中移除该第一数据。
11.如权利要求10所述的存储器控制器,其中在所述根据这些子数据串之中至少一部分子数据串来产生一同位信息的运作中,该同位信息编码与解码电路依据所有的这些子数据串来产生该同位信息。
12.如权利要求10所述的存储器控制器,其中每一这些物理抹除单元的物理编程单元包括多个下物理编程单元与多个上物理编程单元,写入数据至这些下物理编程单元的速度快于写入数据至这些上物理编程单元,
其中在根据这些子数据串之中该至少一部分子数据串来产生该同位信息的运作中,该存储器管理电路根据存储这些子数据串的物理编程单元识别这些子数据串之中的至少一第一子数据串并且该同位信息编码与解码电路根据该至少一第一子数据串产生该同位信息,
其中该至少一第一子数据串被存储在这些下物理编程单元之中的至少一第一下物理编程单元并且对应该至少一第一下物理编程单元的至少一第一上物理编程单元未存储数据。
13.如权利要求10所述的存储器控制器,其中该存储器管理路还用以在将该同位信息存储在该缓冲存储器中并且从该缓冲存储器中移除该第一数据之后,从该主机系统接收一第二写入指令与对应该第二写入指令的一第二数据。
14.如权利要求13所述的存储器控制器,其中该存储器管理电路根据至少一部分的该第二数据产生另一同位信息以及将该另一同位信息存储至该缓冲存储器中并删除该第二数据。
15.如权利要求10所述的存储器控制器,其中在根据这些子数据串之中该至少一部分子数据串来产生该同位信息的运作中,每当将这些子数据串之中的其中一个子数据串写入至该至少一第一物理抹除单元时,该同位信息编码与解码电路根据该其中一个子数据串与一先前同位信息来产生该同位信息。
16.一种存储器存储装置,包括:
一连接器,用以电性连接至一主机系统;
一可复写式非易失性存储器模块,具有至少一存储器晶粒,该至少一存储器晶粒包括多个物理抹除单元,每一这些物理抹除单元包括多个物理编程单元;以及
一存储器控制器,具有一缓冲存储器且电性连接至该连接器与该可复写式非易失性存储器模块,
其中该存储器控制器用以从该主机系统中接收一写入指令与对应该写入指令的一第一数据并且将该第一数据暂存至一缓冲存储器中,其中该第一数据包括多个子数据串,
其中该存储器控制器还用以从该缓冲存储器中将这些子数据串传送至该可复写式非易失性存储器模块以写入这些子数据串至这些物理抹除单元之中的至少一第一物理抹除单元中,
其中该存储器控制器用以根据这些子数据串之中至少一部分子数据串来产生一同位信息,
其中该存储器控制器还用以将该同位信息存储在该缓冲存储器中并且从该缓冲存储器中移除该第一数据。
17.如权利要求16所述的存储器存储装置,其中在所述根据这些子数据串之中至少一部分子数据串来产生一同位信息的运作中,该存储器控制器依据所有的这些子数据串来产生该同位信息。
18.如权利要求16所述的存储器存储装置,其中每一这些物理抹除单元的物理编程单元包括多个下物理编程单元与多个上物理编程单元,写入数据至这些下物理编程单元的速度快于写入数据至这些上物理编程单元,
其中在根据这些子数据串之中该至少一部分子数据串来产生该同位信息的运作中,该存储器控制器根据存储这些子数据串的物理编程单元识别这些子数据串之中的至少一第一子数据串并且该存储器控制器根据该至少一第一子数据串产生该同位信息,
其中该至少一第一子数据串被存储在这些下物理编程单元之中的至少一第一下物理编程单元并且对应该至少一第一下物理编程单元的至少一第一上物理编程单元未存储数据。
19.如权利要求16所述的存储器存储装置,其中该存储器控制器还用以在将该同位信息存储在该缓冲存储器中并且从该缓冲存储器中移除该第一数据之后,从该主机系统接收一第二写入指令与对应该第二写入指令的一第二数据。
20.如权利要求19所述的存储器存储装置,其中该存储器控制器还用以判断从该缓冲存储器中将该第二数据写入至该至少一第一物理抹除单元中时是否发生一编程错误,
其中倘若从该缓冲存储器中将该第二数据写入至该至少一第一物理抹除单元中时发生该编程错误时,该存储器控制器使用存储在该缓冲存储器中的该同位信息来解码存储在该至少一第一物理抹除单元中的该至少一部分子数据串以校正该至少一部分子数据串中的至少一错误子数据串。
21.如权利要求20所述的存储器存储装置,其中倘若从该缓冲存储器中将该第二数据写入至该至少一第一物理抹除单元中时未发生该编程错误时,该存储器控制器还用以从该缓冲存储器中移除该同位信息。
22.如权利要求19所述的存储器存储装置,其中该存储器控制器根据至少一部分的该第二数据产生另一同位信息以及将该另一同位信息存储至该缓冲存储器中并删除该第二数据。
23.如权利要求16所述的存储器存储装置,其中该存储器控制器还用以分别地为这些子数据串产生多个错误检查与校正码,
其中在从该缓冲存储器中将这些子数据串传送至该可复写式非易失性存储器模块以写入这些子数据串至这些物理抹除单元之中的该至少一第一物理抹除单元中的运作中,该存储器控制器将这些子数据串与分别地对应这些子数据串的这些错误检查与校正码传送至该可复写式非易失性存储器模块以写入这些子数据串与分别地对应这些子数据串的这些错误检查与校正码至该至少一第一物理抹除单元的物理编程单元中。
24.如权利要求16所述的存储器存储装置,其中在根据这些子数据串之中该至少一部分子数据串来产生该同位信息的运作中,每当将这些子数据串之中的其中一个子数据串写入至该至少一第一物理抹除单元时,该存储器控制器根据该其中一个子数据串与一先前同位信息来产生该同位信息。
CN201310257907.1A 2013-06-26 2013-06-26 数据写入方法、存储器控制器与存储器存储装置 Active CN104252317B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310257907.1A CN104252317B (zh) 2013-06-26 2013-06-26 数据写入方法、存储器控制器与存储器存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310257907.1A CN104252317B (zh) 2013-06-26 2013-06-26 数据写入方法、存储器控制器与存储器存储装置

Publications (2)

Publication Number Publication Date
CN104252317A CN104252317A (zh) 2014-12-31
CN104252317B true CN104252317B (zh) 2017-06-06

Family

ID=52187282

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310257907.1A Active CN104252317B (zh) 2013-06-26 2013-06-26 数据写入方法、存储器控制器与存储器存储装置

Country Status (1)

Country Link
CN (1) CN104252317B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107305476B (zh) * 2016-04-25 2020-03-31 群联电子股份有限公司 数据校正方法、存储器控制电路单元与存储器存储装置
TWI646554B (zh) * 2017-03-28 2019-01-01 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
CN109460372B (zh) * 2017-09-06 2022-11-22 群联电子股份有限公司 数据存储方法、存储器控制电路单元及存储器存储装置
CN111666174B (zh) * 2019-03-07 2023-03-14 群联电子股份有限公司 数据写入方法、存储器控制电路单元以及存储器存储装置
TWI755739B (zh) * 2020-05-26 2022-02-21 慧榮科技股份有限公司 記憶體控制器與資料處理方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7340672B2 (en) * 2004-09-20 2008-03-04 Intel Corporation Providing data integrity for data streams
US7102544B1 (en) * 2005-05-31 2006-09-05 Altera Corporation Method and system for improving memory interface data integrity in PLDs
ITMI20060746A1 (it) * 2006-04-13 2007-10-14 St Microelectronics Srl Metodo di accesso ottimizzato di memorie flash e relativo dispositivo
US7966547B2 (en) * 2007-07-02 2011-06-21 International Business Machines Corporation Multi-bit error correction scheme in multi-level memory storage system
US8286066B2 (en) * 2009-05-18 2012-10-09 Micron Technology, Inc. Non-volatile memory with bi-directional error correction protection

Also Published As

Publication number Publication date
CN104252317A (zh) 2014-12-31

Similar Documents

Publication Publication Date Title
TWI527037B (zh) 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置
TWI516927B (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
TWI435329B (zh) 快閃記憶體管理方法、快閃記憶體控制器與儲存系統
US9213629B2 (en) Block management method, memory controller and memory stoarge apparatus
TWI479314B (zh) 系統資料儲存方法、記憶體控制器與記憶體儲存裝置
TWI476590B (zh) 記憶體管理方法、記憶體控制器與記憶體儲存裝置
CN102760099B (zh) 数据写入方法、存储器控制器与存储器储存装置
CN104636267B (zh) 存储器控制方法、存储器存储装置与存储器控制电路单元
CN104765568A (zh) 数据存储方法、存储器控制电路单元与存储器存储装置
CN104252317B (zh) 数据写入方法、存储器控制器与存储器存储装置
CN104866429A (zh) 存储器管理方法、存储器控制电路单元与存储器存储装置
TWI545432B (zh) 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置
CN103678162B (zh) 系统数据储存方法、存储器控制器与存储器储存装置
TWI509615B (zh) 資料儲存方法、記憶體控制器與記憶體儲存裝置
US8943264B2 (en) Data storing method, and memory controller and memory storage apparatus using the same
CN102902626A (zh) 区块管理方法、存储器控制器与存储器储存装置
CN105022695A (zh) 数据存储方法、存储器控制电路单元与存储器存储装置
TWI548991B (zh) 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
TWI464585B (zh) 資料儲存方法、記憶體控制器與記憶體儲存裝置
CN112051963B (zh) 数据写入方法、存储器控制电路单元以及存储器存储装置
CN107103930B (zh) 数据写入方法、存储器控制电路单元与存储器存储装置
CN104166558B (zh) 固件码载入方法、存储器控制器与存储器存储装置
CN102841853B (zh) 存储器管理表处理方法、存储器控制器与存储器储存装置
CN105653391A (zh) 数据存取方法、存储器控制电路单元及存储器储存装置
TWI564901B (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