CN111666174A - 数据写入方法、存储器控制电路单元以及存储器存储装置 - Google Patents
数据写入方法、存储器控制电路单元以及存储器存储装置 Download PDFInfo
- Publication number
- CN111666174A CN111666174A CN201910171419.6A CN201910171419A CN111666174A CN 111666174 A CN111666174 A CN 111666174A CN 201910171419 A CN201910171419 A CN 201910171419A CN 111666174 A CN111666174 A CN 111666174A
- Authority
- CN
- China
- Prior art keywords
- physical
- data
- unit
- physical programming
- units
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
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播放器在这几年来的成长十分迅速,使得消费者对存储媒体的需求也急速增加。由于可复写式非易失性存储器模块(例如,快闪存储器)具有数据非易失性、省电、体积小,以及无机械结构等特性,所以非常适合内建于上述所举例的各种可携式多媒体装置中。
一般来说,在读取一实体程序化单元中的数据时,从该实体程序化单元中读取出的数据可以先使用单框架编码的编码数据来解码以进行错误检测与更正。然而,当使用单框架编码的编码数据来解码进行解码发生失败时,可以读取多框架编码的编码数据以及用于产生该多框架编码的编码数据的多笔数据,并根据多框架编码的编码数据以及用于产生该多框架编码的编码数据的多笔数据进行解码,以尝试更正目前所读取的实体程序化单元中所存储的数据中存在的错误。
然而,多框架编码的编码数据的错误检查与更正能力是正比于多框架编码的编码数据的比特数。当多框架编码的编码数据的比特数较少时,会造成多框架编码的编码数据的错误检查与更正能力较低的问题。此外,当用于存储主机系统所写入的数据的实体程序化单元的格式不同于用于存储多框架编码的编码数据的实体程序化单元的格式时,会造成算法设计时的复杂度以及硬件设计上的成本上升。此外,假设多框架编码的编码数据是存储在一实体抹除单元且此实体抹除单元不同于主机系统所写入的数据所位于的实体抹除单元,则在写入与读取多框架编码的编码数据时也会造成时间的增加。
发明内容
因此,本发明提供一种数据写入方法、存储器控制电路单元以及存储器存储装置,可以增加编码数据的比特数以提升编码数据的错误检查与更正能力、降低算法设计时的复杂度以及硬件设计上的成本以及降低在写入与读取编码数据时所需的时间。
本发明提出一种数据写入方法,用于一可复写式非易失性存储器模块,其中所述可复写式非易失性存储器模块具有多个实体抹除单元,所述多个实体抹除单元之中的每一个实体抹除单元具有多个实体程序化单元,所述数据写入方法包括:从一主机系统接收多个数据,并将所述多个数据分别写入至所述多个实体程序化单元之中的i个第一实体程序化单元中,其中i为大于零的正整数;根据所述多个数据执行一多框架编码以产生一编码数据,并将所述编码数据写入至所述多个实体程序化单元之中的一第二实体程序化单元中;以及将与所述编码数据相关的多个第一串接信息分别写入至所述i个第一实体程序化单元中,其中所述多个第一串接信息用以记录所述多个数据在所述i个第一实体程序化单元中的位置。
在本发明的一实施例中,所述i个第一实体程序化单元中的第k个第一实体程序化单元的第一串接信息用以记录所述i个第一实体程序化单元中所述第k个第一实体程序化单元以外的至少一其他实体程序化单元的位置,其中k为大于零且小于i+1的正整数。
在本发明的一实施例中,所述其他实体程序化单元的位置包括所述i个第一实体程序化单元中的第n个第一实体程序化单元的位置,其中n为大于零且小于k的正整数。
在本发明的一实施例中,所述第k个第一实体程序化单元的第一串接信息包括至少一第一比特与至少一第二比特,所述第一比特用以记录所述i个第一实体程序化单元中的第k-1个第一实体程序化单元的位置且所述第二比特用以记录所述i个第一实体程序化单元中的第k-2个第一实体程序化单元的位置。
在本发明的一实施例中,根据所述多个数据执行所述多框架编码以产生所述编码数据,并将所述编码数据写入至所述多个实体程序化单元之中的所述第二实体程序化单元中的步骤包括:将一第二串接信息写入至所述第二实体程序化单元中,其中所述第二串接信息用以记录所述i个第一实体程序化单元中的第j个第一实体程序化单元的位置,其中j为大于零且小于i+1的正整数。
在本发明的一实施例中,所述第二串接信息包括至少一第三比特与至少一第四比特,所述第三比特用以记录所述i个第一实体程序化单元中的第i个第一实体程序化单元的位置且所述第四比特用以记录所述i个第一实体程序化单元中的第i-1个第一实体程序化单元的位置。
在本发明的一实施例中,所述第二实体程序化单元中用以记录数据的格式相同于所述i个第一实体程序化单元中的每一个第一实体程序化单元中用以记录数据的格式。
在本发明的一实施例中,所述i个第一实体程序化单元与所述第二实体程序化单元属于所述多个实体抹除单元之中的一第一实体抹除单元。
本发明提出一种存储器控制电路单元,用于可复写式非易失性存储器模块,所述可复写式非易失性存储器模块具有多个实体抹除单元,所述多个实体抹除单元之中的每一个实体抹除单元具有多个实体程序化单元。所述存储器控制电路单元包括:主机接口、存储器接口以及存储器管理电路。主机接口用以耦接至主机系统。存储器接口用以耦接至所述可复写式非易失性存储器模块。存储器管理电路耦接至所述主机接口以及所述存储器接口。存储器管理电路用以执行下述运作:从主机系统接收多个数据,并将所述多个数据分别写入至所述多个实体程序化单元之中的i个第一实体程序化单元中,其中i为大于零的正整数;根据所述多个数据执行一多框架编码以产生一编码数据,并将所述编码数据写入至所述多个实体程序化单元之中的一第二实体程序化单元中;以及将与所述编码数据相关的多个第一串接信息分别写入至所述i个第一实体程序化单元中,其中所述多个第一串接信息用以记录所述多个数据在所述i个第一实体程序化单元中的位置。
在本发明的一实施例中,所述i个第一实体程序化单元中的第k个第一实体程序化单元的第一串接信息用以记录所述i个第一实体程序化单元中所述第k个第一实体程序化单元以外的至少一其他实体程序化单元的位置,其中k为大于零且小于i+1的正整数。
在本发明的一实施例中,所述其他实体程序化单元的位置包括所述i个第一实体程序化单元中的第n个第一实体程序化单元的位置,其中n为大于零且小于k的正整数。
在本发明的一实施例中,所述第k个第一实体程序化单元的第一串接信息包括至少一第一比特与至少一第二比特,所述第一比特用以记录所述i个第一实体程序化单元中的第k-1个第一实体程序化单元的位置且所述第二比特用以记录所述i个第一实体程序化单元中的第k-2个第一实体程序化单元的位置。
在本发明的一实施例中,在根据所述多个数据执行所述多框架编码以产生所述编码数据,并将所述编码数据写入至所述多个实体程序化单元之中的所述第二实体程序化单元中的运作中,所述存储器管理电路还用以将一第二串接信息写入至所述第二实体程序化单元中,其中所述第二串接信息用以记录所述i个第一实体程序化单元中的第j个第一实体程序化单元的位置,其中j为大于零且小于i+1的正整数。
在本发明的一实施例中,所述第二串接信息包括至少一第三比特与至少一第四比特,所述第三比特用以记录所述i个第一实体程序化单元中的第i个第一实体程序化单元的位置且所述第四比特用以记录所述i个第一实体程序化单元中的第i-1个第一实体程序化单元的位置。
在本发明的一实施例中,所述第二实体程序化单元中用以记录数据的格式相同于所述i个第一实体程序化单元中的每一个第一实体程序化单元中用以记录数据的格式。
在本发明的一实施例中,所述i个第一实体程序化单元与所述第二实体程序化单元属于所述多个实体抹除单元之中的一第一实体抹除单元。
本发明提出一种存储器存储装置,包括连接接口单元、可复写式非易失性存储器模块以及存储器控制电路单元。连接接口单元用以耦接至主机系统。可复写式非易失性存储器模块具有多个实体抹除单元,所述多个实体抹除单元之中的每一个实体抹除单元具有多个实体程序化单元。存储器控制电路单元耦接至所述连接接口单元与所述可复写式非易失性存储器模块。存储器控制电路单元用以执行下述运作:从主机系统接收多个数据,并将所述多个数据分别写入至所述多个实体程序化单元之中的i个第一实体程序化单元中,其中i为大于零的正整数;根据所述多个数据执行一多框架编码以产生一编码数据,并将所述编码数据写入至所述多个实体程序化单元之中的一第二实体程序化单元中;以及将与所述编码数据相关的多个第一串接信息分别写入至所述i个第一实体程序化单元中,其中所述多个第一串接信息用以记录所述多个数据在所述i个第一实体程序化单元中的位置。
在本发明的一实施例中,所述i个第一实体程序化单元中的第k个第一实体程序化单元的第一串接信息用以记录所述i个第一实体程序化单元中所述第k个第一实体程序化单元以外的至少一其他实体程序化单元的位置,其中k为大于零且小于i+1的正整数。
在本发明的一实施例中,所述其他实体程序化单元的位置包括所述i个第一实体程序化单元中的第n个第一实体程序化单元的位置,其中n为大于零且小于k的正整数。
在本发明的一实施例中,所述第k个第一实体程序化单元的第一串接信息包括至少一第一比特与至少一第二比特,所述第一比特用以记录所述i个第一实体程序化单元中的第k-1个第一实体程序化单元的位置且所述第二比特用以记录所述i个第一实体程序化单元中的第k-2个第一实体程序化单元的位置。
在本发明的一实施例中,在根据所述多个数据执行所述多框架编码以产生所述编码数据,并将所述编码数据写入至所述多个实体程序化单元之中的所述第二实体程序化单元中的运作中,所述存储器控制电路单元还用以将一第二串接信息写入至所述第二实体程序化单元中,其中所述第二串接信息用以记录所述i个第一实体程序化单元中的第j个第一实体程序化单元的位置,其中j为大于零且小于i+1的正整数。
在本发明的一实施例中,所述第二串接信息包括至少一第三比特与至少一第四比特,所述第三比特用以记录所述i个第一实体程序化单元中的第i个第一实体程序化单元的位置且所述第四比特用以记录所述i个第一实体程序化单元中的第i-1个第一实体程序化单元的位置。
在本发明的一实施例中,所述第二实体程序化单元中用以记录数据的格式相同于所述i个第一实体程序化单元中的每一个第一实体程序化单元中用以记录数据的格式。
在本发明的一实施例中,所述i个第一实体程序化单元与所述第二实体程序化单元属于所述多个实体抹除单元之中的一第一实体抹除单元。
基于上述,本发明的数据写入方法、存储器控制电路单元以及存储器存储装置可以增加编码数据的比特数以提升编码数据的错误检查与更正能力。此外,本发明的数据写入方法中,由于用于记录主机系统写入的数据的实体程序化单元的格式是相同于用于记录编码数据的实体程序化单元的格式,可以降低算法设计时的复杂度以及硬件设计上的成本。此外,本发明的数据写入方法中,由于编码数据是与用于产生该编码数据的数据被存储在相同的一实体抹除单元中,可以降低在写入与读取编码数据时所需的时间。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附附图作详细说明如下。
附图说明
图1是根据本发明的一范例实施例所示出的主机系统、存储器存储装置及输入/输出(I/O)装置的示意图。
图2是根据本发明的另一范例实施例所示出的主机系统、存储器存储装置及I/O装置的示意图。
图3是根据本发明的另一范例实施例所示出的主机系统与存储器存储装置的示意图。
图4是根据本发明的一范例实施例所示出的存储器存储装置的概要方块图。
图5是根据一范例实施例所示出的可复写式非易失性存储器模块的概要方块图。
图6是根据一范例实施例所示出的存储单元阵列的示意图。
图7是根据一范例实施例所示出存储于存储单元阵列中的写入数据所对应的栅极电压的统计分配图。
图8是根据一范例实施例所示出的从存储单元中读取数据的示意图。
图9是根据另一范例实施例所示出的从存储单元中读取数据的示意图。
图10是根据本范例实施例所示出的实体抹除单元的范例示意图。
图11是根据本发明的一范例实施例所示出的存储器控制电路单元的概要方块图。
图12是根据本发明的一范例实施例所示出的多框架编码的示意图。
图13A是现有用于产生多框架编码的编码数据的多个数据分别位于多个不连续的实体程序化单元中的示意图。
图13B是根据本发明的一范例实施例所示出的数据写入方法的示意图。
图14是根据本发明的一范例实施例所示出的数据写入方法的流程图。
【符号说明】
10:存储器存储装置
11:主机系统
110:系统总线
111:处理器
112:随机存取存储器
113:只读存储器
114:数据传输接口
12:输入/输出(I/O)装置
20:主机板
201:随身盘
202:存储卡
203:固态硬盘
204:无线存储器存储装置
205:全球定位系统模块
206:网络接口卡
207:无线传输装置
208:键盘
209:屏幕
210:喇叭
32:SD卡
33:CF卡
34:嵌入式存储装置
341:嵌入式多媒体卡
342:嵌入式多芯片封装存储装置
402:连接接口单元
404:存储器控制电路单元
406:可复写式非易失性存储器模块
2202:存储单元阵列
2204:字线控制电路
2206:位线控制电路
2208:行解码器
2210:数据输入/输出缓冲器
2212:控制电路
502:存储单元
504:位线
506:字线
508:共用源极线
512:选择栅漏极晶体管
514:选择栅源极晶体管
VA、VB、VC、VD、VE、VF、VG:读取电压
702:存储器管理电路
704:主机接口
706:存储器接口
708:错误检查与校正电路
710:缓冲存储器
712:电源管理电路
801(1)~801(r):位置
820:编码数据
810(0)~810(E)、825(1)~825(8)、830(1)~830(8):实体程序化单元
825、830:实体抹除单元
DATA1~DATA5:数据
ECC1、ECC2:编码数据
E_Info:编码信息
A1、A2:栏位
S1401:从主机系统接收多个数据,并将此些数据分别写入至i个第一实体程序化单元中,其中i为大于零的正整数的步骤
S1403:根据前述多个数据执行多框架编码以产生编码数据,并将编码数据写入至第二实体程序化单元中的步骤
S1405:将与编码数据相关的多个第一串接信息分别写入至前述i个第一实体程序化单元中,其中前述i个第一实体程序化单元中的第k个第一实体程序化单元的第一串接信息用以记录前述i个第一实体程序化单元中第k个第一实体程序化单元以外的至少一其他实体程序化单元的位置,其中k为大于零且小于i+1的正整数的步骤
S1407:将第二串接信息写入至第二实体程序化单元中,其中第二串接信息用以记录前述i个第一实体程序化单元中的第j个第一实体程序化单元的位置,其中j为大于零且小于i+1的正整数的步骤
具体实施方式
一般而言,存储器存储装置(亦称,存储器存储系统)包括可复写式非易失性存储器模块(rewritable non-volatile memory module)与控制器(亦称,控制电路)。通常存储器存储装置是与主机系统一起使用,以使主机系统可将数据写入至存储器存储装置或从存储器存储装置中读取数据。
图1是根据本发明的一范例实施例所示出的主机系统、存储器存储装置及输入/输出(I/O)装置的示意图。图2是根据本发明的另一范例实施例所示出的主机系统、存储器存储装置及I/O装置的示意图。
请参照图1与图2,主机系统11一般包括处理器111、随机存取存储器(randomaccess memory,RAM)112、只读存储器(read only memory,ROM)113及数据传输接口114。处理器111、随机存取存储器112、只读存储器113及数据传输接口114皆耦接至系统总线(system bus)110。
在本范例实施例中,主机系统11是通过数据传输接口114与存储器存储装置10耦接。例如,主机系统11可经由数据传输接口114将数据存储至存储器存储装置10或从存储器存储装置10中读取数据。此外,主机系统11是通过系统总线110与I/O装置12耦接。例如,主机系统11可经由系统总线110将输出信号传送至I/O装置12或从I/O装置12接收输入信号。
在本范例实施例中,处理器111、随机存取存储器112、只读存储器113及数据传输接口114可设置在主机系统11的主机板20上。数据传输接口114的数目可以是一或多个。通过数据传输接口114,主机板20可以经由有线或无线方式耦接至存储器存储装置10。存储器存储装置10可例如是随身盘201、存储卡202、固态硬盘(Solid State Drive,SSD)203或无线存储器存储装置204。无线存储器存储装置204可例如是近距离无线通讯(Near FieldCommunication,NFC)存储器存储装置、无线传真(WiFi)存储器存储装置、蓝牙(Bluetooth)存储器存储装置或低功耗蓝牙存储器存储装置(例如,iBeacon)等以各式无线通讯技术为基础的存储器存储装置。此外,主机板20也可以通过系统总线110耦接至全球定位系统(Global Positioning System,GPS)模块205、网络接口卡206、无线传输装置207、键盘208、屏幕209、喇叭210等各式I/O装置。例如,在一范例实施例中,主机板20可通过无线传输装置207存取无线存储器存储装置204。
在一范例实施例中,所提及的主机系统为可实质地与存储器存储装置配合以存储数据的任意系统。虽然在上述范例实施例中,主机系统是以电脑系统来作说明,然而,图3是根据本发明的另一范例实施例所示出的主机系统与存储器存储装置的示意图。请参照图3,在另一范例实施例中,主机系统31也可以是数字相机、摄影机、通讯装置、音频播放器、视频播放器或平板电脑等系统,而存储器存储装置30可为其所使用的SD卡32、CF卡33或嵌入式存储装置34等各式非易失性存储器存储装置。嵌入式存储装置34包括嵌入式多媒体卡(embedded MMC,eMMC)341和/或嵌入式多芯片封装存储装置(embedded Multi ChipPackage,eMCP)342等各类型将存储器模块直接耦接于主机系统的基板上的嵌入式存储装置。
图4是根据本发明的一范例实施例所示出的存储器存储装置的概要方块图。
请参照图4,存储器存储装置10包括连接接口单元402、存储器控制电路单元404与可复写式非易失性存储器模块406。
在本范例实施例中,连接接口单元402是相容于串行高级附件(Serial AdvancedTechnology Attachment,SATA)标准。然而,必须了解的是,本发明不限于此,连接接口单元402亦可以是符合并行高级附件(Parallel Advanced Technology Attachment,PATA)标准、电气和电子工程师协会(Institute of Electrical and Electronic Engineers,IEEE)1394标准、高速周边零件连接接口(Peripheral Component Interconnect Express,PCI Express)标准、通用串行总线(Universal Serial Bus,USB)标准、安全数字(SecureDigital,SD)接口标准、超高速一代(Ultra High Speed-I,UHS-I)接口标准、超高速二代(Ultra High Speed-II,UHS-II)接口标准、记忆棒(Memory Stick,MS)接口标准、多芯片封装(Multi-Chip Package)接口标准、多媒体存储卡(Multi Media Card,MMC)接口标准、崁入式多媒体存储卡(Embedded Multimedia Card,eMMC)接口标准、通用快闪存储器(Universal Flash Storage,UFS)接口标准、嵌入式多芯片封装(embedded Multi ChipPackage,eMCP)接口标准、小型快闪(Compact Flash,CF)接口标准、整合式驱动电子接口(Integrated Device Electronics,IDE)标准或其他适合的标准。连接接口单元402可与存储器控制电路单元404封装在一个芯片中,或者连接接口单元402是布设于一包含存储器控制电路单元404的芯片外。
存储器控制电路单元404用以执行以硬件型式或固件型式实作的多个逻辑闸或控制指令并且根据主机系统11的指令在可复写式非易失性存储器模块406中进行数据的写入、读取与抹除等运作。
可复写式非易失性存储器模块406是耦接至存储器控制电路单元404并且用以存储主机系统11所写入的数据。可复写式非易失性存储器模块406可以是单阶存储单元(Single Level Cell,SLC)NAND型快闪存储器模块(即,一个存储单元中可存储1个比特的快闪存储器模块)、多阶存储单元(Multi Level Cell,MLC)NAND型快闪存储器模块(即,一个存储单元中可存储2个比特的快闪存储器模块)、复数阶存储单元(Triple Level Cell,TLC)NAND型快闪存储器模块(即,一个存储单元中可存储3个比特的快闪存储器模块)、其他快闪存储器模块或其他具有相同特性的存储器模块。
可复写式非易失性存储器模块406中的存储单元是以阵列的方式设置。以下以二维阵列来对存储单元阵列进行说明。但是,在此须注意的是,以下范例实施例只是存储单元阵列的一种范例,在其他的范例实施例中,存储单元阵列的配置方式可以被调整以符合实务上的需求。
图5是根据一范例实施例所示出的可复写式非易失性存储器模块的概要方块图。图6是根据一范例实施例所示出的存储单元阵列的示意图。
请同时参照图5与图6,可复写式非易失性存储器模块406包括存储单元阵列2202、字线控制电路2204、位线控制电路2206、行解码器(column decoder)2208、数据输入/输出缓冲器2210与控制电路2212。
在本范例实施例中,存储单元阵列2202可包括用以存储数据的多个存储单元502、多个选择栅漏极(select gate drain,SGD)晶体管512与多个选择栅源极(select gatesource,SGS)晶体管514、以及连接此些存储单元的多条位线504、多条字线506、与共用源极线508(如图6所示)。存储单元502是以阵列方式(或立体堆叠的方式)配置在位线504与字线506的交叉点上。当从存储器控制电路单元404接收到写入指令或读取指令时,控制电路2212会控制字线控制电路2204、位线控制电路2206、行解码器2208、数据输入/输出缓冲器2210来写入数据至存储单元阵列2202或从存储单元阵列2202中读取数据,其中字线控制电路2204用以控制施予至字线506的电压,位线控制电路2206用以控制施予至位线504的电压,行解码器2208依据指令中的列地址以选择对应的位线,并且数据输入/输出缓冲器2210用以暂存数据。
可复写式非易失性存储器模块406中的存储单元是以临界电压的改变来存储多比特(bits)。具体来说,每一个存储单元的控制栅极(control gate)与通道之间有一个电荷捕捉层。通过施予一写入电压至控制栅极,可以改变电荷补捉层的电子量,因而改变了存储单元的临界电压。此改变临界电压的程序亦称为“把数据写入至存储单元”或“程序化存储单元”。随着临界电压的改变,存储单元阵列2202的每一存储单元具有多个存储状态。并且通过读取电压可以判断存储单元是属于哪一个存储状态,藉此取得存储单元所存储的比特。
图7是根据一范例实施例所示出存储于存储单元阵列中的写入数据所对应的栅极电压的统计分配图。
请参照图7,以MLC NAND型快闪存储器为例,随着不同的临界电压,每一存储单元具有4种存储状态,并且此些存储状态分别地代表"11"、"10"、"00"与"01"等比特。换言之,每一个存储状态包括最低有效位(Least Significant Bit,LSB)以及最高有效位(MostSignificant Bit,MSB)。在本范例实施例中,存储状态(即,"11"、"10"、"00"与"01")中从左侧算起的第1个比特为LSB,而从左侧算起的第2个比特为MSB。因此,在此范例实施例中,每一存储单元可存储2个比特。必须了解的是,图7所示出的临界电压及其存储状态的对应仅为一个范例。在本发明另一范例实施例中,临界电压与存储状态的对应亦可是随着临界电压越大而以"11"、"10"、"01"与"00"排列,或是其他排列。此外,在另一范例实施例中,亦可定义从左侧算起的第1个比特为MSB,而从左侧算起的第2个比特为LSB。
在一个存储单元可以存储多个比特(例如,MLC或TLC NAND快闪存储器模块)的范例实施例中,属于同一条字线的实体程序化单元至少可被分类为下实体程序化单元与上实体程序化单元。例如,在MLC NAND快闪存储器模块中,一存储单元的最低有效位(LeastSignificant Bit,LSB)是属于下实体程序化单元,并且此存储单元的最高有效位(MostSignificant Bit,MSB)是属于上实体程序化单元。在一范例实施例中,下实体程序化单元亦称为快页(fast page),而上实体程序化单元亦称为慢页(slow page)。此外,在TLC NAND快闪存储器模块中,一存储单元的最低有效位(Least Significant Bit,LSB)是属于下实体程序化单元,此存储单元的中间有效位(Center Significant Bit,CSB)是属于中实体程序化单元,并且此存储单元的最高有效位(Most Significant Bit,MSB)是属于上实体程序化单元。
图8是根据一范例实施例所示出的从存储单元中读取数据的示意图,其是以MLCNAND型快闪存储器为例。
请参照图8,存储单元阵列2202的存储单元的读取运作是通过施予读取电压VA~VC于控制栅极,通过存储单元通道的导通状态,来识别存储单元存储的数据。验证比特(VA)是用以指示施予读取电压VA时存储单元通道是否为导通;验证比特(VC)是用以指示施予读取电压VC时,存储单元通道是否为导通;验证比特(VB)是用以指示施予读取电压VB时,存储单元通道是否为导通。在此假设验证比特是“1”时表示对应的存储单元通道导通,而验证比特是“0”时表示对应的存储单元通道没有导通。如图8所示,通过验证比特(VA)~(VC)可以判断存储单元是处于哪一个存储状态,进而取得所存储的比特。
图9是根据另一范例实施例所示出的从存储单元中读取数据的示意图。
请参照图9,以一TLC NAND型快闪存储器为例,每一个存储状态包括左侧算起的第1个比特的最低有效位LSB、从左侧算起的第2个比特的中间有效位(Center SignificantBit,CSB)以及从左侧算起的第3个比特的最高有效位MSB。在此范例中,依照不同的临界电压,存储单元具有8种存储状态(即,"111"、"110"、"100"、"101"、"001"、"000"、"010"与"011")。通过施加读取电压VA~VG于控制栅极,可以识别存储单元所存储的比特。
其中,值得说明的是,图9的8种存储状态的排列顺序,可依制造商的设计而定,非以本范例的排列方式为限。
此外,可复写式非易失性存储器模块406的存储单元会构成多个实体程序化单元,并且此些实体程序化单元会构成多个实体抹除单元。具体而言,图6中同一条字线上的存储单元会组成一或多个实体程序化单元。例如,若可复写式非易失性存储器模块406为MLCNAND型快闪存储器模块,则同一条字线与多条位线的交错处上的存储单元会构成2个实体程序化单元,亦即上实体程序化单元与下实体程序化单元。而一个上实体程序化单元与一个下实体程序化单元可以统称为一实体程序化单元组。特别是,倘若欲读取的数据位于一实体程序化单元组的一下实体程序化单元时,可以采用如图8中的读取电压VA来识别此下实体程序化单元中每一比特的值。倘若欲读取的数据位于一实体程序化单元组的一上实体程序化单元时,可以采用如图8中读取电压VB与读取电压VC来识别此上实体程序化单元中每一比特的值。
或者,若可复写式非易失性存储器模块406为TLC NAND型快闪存储器模块,则同一条字线与多条位线的交错处上的存储单元会构成3个实体程序化单元,亦即上实体程序化单元、中实体程序化单元与下实体程序化单元。而一个上实体程序化单元、一个中实体程序化单元与一个下实体程序化单元可以统称为一实体程序化单元组。特别是,倘若欲读取的数据位于一实体程序化单元组的一下实体程序化单元时,可以采用如图9中的读取电压VA来识别此下实体程序化单元中每一比特的值。倘若欲读取的数据位于一实体程序化单元组的一中实体程序化单元时,可以采用如图9中的读取电压VB与读取电压VC来识别此中实体程序化单元中每一比特的值。倘若欲读取的数据位于一实体程序化单元组的一上实体程序化单元时,可以采用如图9中的读取电压VD、读取电压VE、读取电压VF与读取电压VG来识别此上实体程序化单元中每一比特的值。
在本范例实施例中,实体程序化单元为程序化的最小单元。即,实体程序化单元为写入数据的最小单元。例如,实体程序化单元为实体页面(page)或是实体扇(sector)。若实体程序化单元为实体页面,则此些实体程序化单元通常包括数据比特区与冗余(redundancy)比特区。数据比特区包含多个实体扇,用以存储使用者数据,而冗余比特区用以存储系统数据(例如,错误更正码)。在本范例实施例中,数据比特区包含32个实体扇,且一个实体扇的大小为512字节(byte,B)。然而,在其他范例实施例中,数据比特区中也可包含8个、16个或数目更多或更少的实体扇,并且每一个实体扇的大小也可以是更大或更小。另一方面,实体抹除单元为抹除的最小单位。亦即,每一实体抹除单元含有最小数目的一并被抹除的存储单元。例如,实体抹除单元为实体区块(block)。
图10是根据本范例实施例所示出的实体抹除单元的范例示意图。
请参照图10,在本范例实施例中,假设一个实体抹除单元是由多个实体程序化单元组所组成,其中每个实体程序化单元组包括由排列在同一条字线上的多个存储单元所组成的下实体程序化单元、中实体程序化单元与上实体程序化单元。例如,在实体抹除单元中,属于下实体程序化单元的第0个实体程序化单元、属于中实体程序化单元的第1个实体程序化单元和属于上实体程序化单元的第2个实体程序化单元会被视为一个实体程序化单元组。类似地,第3、4、5个实体程序化单元会被视为一个实体程序化单元组,并且以此类推其他实体程序化单元亦是依据此方式被区分为多个实体程序化单元组。
图11是根据本发明的一范例实施例所示出的存储器控制电路单元的概要方块图。
请参照图11,存储器控制电路单元404包括存储器管理电路702、主机接口704、存储器接口706及错误检查与校正电路708。
存储器管理电路702用以控制存储器控制电路单元404的整体运作。具体来说,存储器管理电路702具有多个控制指令,并且在存储器存储装置10运作时,此些控制指令会被执行以进行数据的写入、读取与抹除等运作。以下说明存储器管理电路702或任何包含于存储器控制电路单元404中的电路元件的操作时,等同于说明存储器控制电路单元404的操作。
在本范例实施例中,存储器管理电路702的控制指令是以固件型式来实作。例如,存储器管理电路702具有微处理器单元(未示出)与只读存储器(未示出),并且此些控制指令是被烧录至此只读存储器中。当存储器存储装置10运作时,此些控制指令会由微处理器单元来执行以进行数据的写入、读取与抹除等运作。
在另一范例实施例中,存储器管理电路702的控制指令亦可以程序码型式存储于可复写式非易失性存储器模块406的特定区域(例如,存储器模块中专用于存放系统数据的系统区)中。此外,存储器管理电路702具有微处理器单元(未示出)、只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有开机码(boot code),并且当存储器控制电路单元404被致能时,微处理器单元会先执行此开机码来将存储于可复写式非易失性存储器模块406中的控制指令载入至存储器管理电路702的随机存取存储器中。之后,微处理器单元会运转此些控制指令以进行数据的写入、读取与抹除等运作。
此外,在另一范例实施例中,存储器管理电路702的控制指令亦可以一硬件型式来实作。例如,存储器管理电路702包括微控制器、存储单元管理电路、存储器写入电路、存储器读取电路、存储器抹除电路与数据处理电路。存储单元管理电路、存储器写入电路、存储器读取电路、存储器抹除电路与数据处理电路是耦接至微控制器。存储单元管理电路用以管理可复写式非易失性存储器模块406的存储单元或其群组。存储器写入电路用以对可复写式非易失性存储器模块406下达写入指令序列以将数据写入至可复写式非易失性存储器模块406中。存储器读取电路用以对可复写式非易失性存储器模块406下达读取指令序列以从可复写式非易失性存储器模块406中读取数据。存储器抹除电路用以对可复写式非易失性存储器模块406下达抹除指令序列以将数据从可复写式非易失性存储器模块406中抹除。数据处理电路用以处理欲写入至可复写式非易失性存储器模块406的数据以及从可复写式非易失性存储器模块406中读取的数据。写入指令序列、读取指令序列及抹除指令序列可分别包括一或多个程序码或指令码并且用以指示可复写式非易失性存储器模块406执行相对应的写入、读取及抹除等操作。在一范例实施例中,存储器管理电路702还可以下达其他类型的指令序列给可复写式非易失性存储器模块406以指示执行相对应的操作。
主机接口704是耦接至存储器管理电路702并且用以接收与识别主机系统11所传送的指令与数据。也就是说,主机系统11所传送的指令与数据会通过主机接口704来传送至存储器管理电路702。在本范例实施例中,主机接口704是相容于SATA标准。然而,必须了解的是本发明不限于此,主机接口704亦可以是相容于PATA标准、IEEE 1394标准、PCIExpress标准、USB标准、SD标准、UHS-I标准、UHS-II标准、MS标准、MMC标准、eMMC标准、UFS标准、CF标准、IDE标准或其他适合的数据传输标准。
存储器接口706是耦接至存储器管理电路702并且用以存取可复写式非易失性存储器模块406。也就是说,欲写入至可复写式非易失性存储器模块406的数据会经由存储器接口706转换为可复写式非易失性存储器模块406所能接受的格式。具体来说,若存储器管理电路702要存取可复写式非易失性存储器模块406,存储器接口706会传送对应的指令序列。例如,这些指令序列可包括指示写入数据的写入指令序列、指示读取数据的读取指令序列、指示抹除数据的抹除指令序列、以及用以指示各种存储器操作(例如,改变读取电压电平或执行垃圾回收程序等等)的相对应的指令序列。这些指令序列例如是由存储器管理电路702产生并且通过存储器接口706传送至可复写式非易失性存储器模块406。这些指令序列可包括一或多个信号,或是在总线上的数据。这些信号或数据可包括指令码或程序码。例如,在读取指令序列中,会包括读取的识别码、存储器地址等信息。
错误检查与校正电路708是耦接至存储器管理电路702并且用以执行错误检查与校正程序以确保数据的正确性。具体来说,当存储器管理电路702从主机系统11中接收到写入指令时,错误检查与校正电路708会为对应此写入指令的数据产生对应的错误更正码(error correcting code,ECC)和/或错误检查码(error detecting code,EDC),并且存储器管理电路702会将对应此写入指令的数据与对应的错误更正码和/或错误检查码写入至可复写式非易失性存储器模块406中。之后,当存储器管理电路702从可复写式非易失性存储器模块406中读取数据时会同时读取此数据对应的错误更正码和/或错误检查码,并且错误检查与校正电路708会依据此错误更正码和/或错误检查码对所读取的数据执行错误检查与校正程序。
在一范例实施例中,存储器控制电路单元404还包括缓冲存储器710与电源管理电路712。
缓冲存储器710是耦接至存储器管理电路702并且用以暂存来自于主机系统11的数据与指令或来自于可复写式非易失性存储器模块406的数据。电源管理电路712是耦接至存储器管理电路702并且用以控制存储器存储装置10的电源。
在本范例实施例中,错误检查与校正电路708可以针对存储于同一个实体程序化单元中的数据进行单框架(single-frame)编码,也可以针对存储于多个实体程序化单元中的数据进行多框架(multi-frame)编码。单框架编码与多框架编码可以分别采用低密度奇偶检查校正码(low density parity code,LDPC)、BCH码、回旋码(convolutional code)或涡轮码(turbo code)等编码算法的至少其中之一。或者,在一范例实施例中,多框架编码还可以采用里德-所罗门码(Reed-solomon codes,RS codes)算法或互斥或(XOR)算法。此外,在另一范例实施例中,更多未列于上的编码算法也可以被采用,在此便不赘述。根据所采用的编码算法,错误检查与校正电路708可以编码欲保护的数据来产生相对应的错误更正码和/或错误检查码。为了说明方便,以下将经由编码产生的错误更正码和/或错误检查码统称为编码数据。
图12是根据本发明的一范例实施例所示出的多框架编码的示意图。
请参照图12,以编码实体程序化单元810(0)~810(E)所存储的数据来产生相对应的编码数据820为例,实体程序化单元810(0)~810(E)中的每一者所存储的至少部分数据可视为一个框架。在多框架编码中,是以每一个比特(或,字节)所在的位置为依据来对实体程序化单元810(0)~810(E)中的数据进行编码。例如,位于位置801(1)的比特b11、b21、…、bp1会被编码为编码数据820中的比特bo1,位于位置801(2)的比特b12、b22、…、bp2会被编码为编码数据820中的比特bo2;以此类推,位于位置801(r)的比特b1r、b2r、…、bpr会被编码为编码数据820中的比特bor。尔后,根据编码数据820即可对从实体程序化单元810(0)~810(E)中读取的数据进行解码,以尝试更正所读取的数据中可能存在的错误。
此外,在图12的另一范例实施例中,用于产生编码数据820的数据也可能包括实体程序化单元810(0)~810(E)所存储的数据中的数据比特(data bits)所对应的冗余比特(redundancy bits)。以实体程序化单元810(0)所存储的数据为例,其中的冗余比特例如是对存储于实体程序化单元810(0)中的数据比特进行单框架编码而产生的。在本范例实施例中,假设在读取实体程序化单元810(0)中的数据时,从实体程序化单元810(0)中读取出的数据可以先使用实体程序化单元810(0)中的冗余比特(例如,单框架编码的编码数据)来解码以进行错误检测与更正。然而,当使用实体程序化单元810(0)中的冗余比特进行解码发生失败(例如,解码后实体程序化单元810(0)中所存储的数据的错误比特数大于一门槛值)时,可以读取编码数据820以及实体程序化单元810(1)~810(E)的数据,并根据编码数据820以及实体程序化单元810(1)~810(E)的数据进行解码,以尝试更正实体程序化单元810(0)中所存储的数据中存在的错误。也就是说,在本范例实施例中,当使用单框架编码产生的编码数据进行解码发生失败时,会改用多框架编码产生的编码数据进行解码。
然而需注意的是,一般来说,用于产生多框架编码的编码数据的多个数据可能分别位于多个不连续的实体程序化单元中。举例来说,图13A是现有用于产生多框架编码的编码数据的多个数据分别位于多个不连续的实体程序化单元中的示意图。
请参照图13A,为了方便说明,在图13A的范例中,假设可复写式非易失性存储器模块406中具有实体抹除单元825。实体抹除单元825具有实体程序化单元825(1)~825(8)。当存储器管理电路702从主机系统11接收到数据DATA1~DATA5时,存储器管理电路702可以将数据DATA1~DATA5分别写入实体程序化单元825(1)~825(2)、825(4)~825(5)、825(7)。在此需说明的是,虽然图13A没有示出,但实体程序化单元825(1)~825(2)、825(4)~825(5)、825(7)中的每一个实体程序化单元中还包括冗余比特区,冗余比特区用于存储单框架编码的编码数据。此外,在本实施例中,冗余比特区还包括预先保留且未使用的多个比特。
在本实施例中,假设实体程序化单元825(3)与实体程序化单元825(6)因为程序化失败(program fail)的关系而没有存储数据。之后,存储器管理电路702可以根据数据DATA1~DATA5执行多框架编码以产生编码数据ECC1,并且将编码数据ECC1写入至实体程序化单元825(8)中。需注意的是,在现有技术中,用于存储多框架编码的编码数据ECC1的实体程序化单元825(8)还需记录一编码信息E_Info来记录用于产生编码数据ECC1的数据DATA1~DATA5所在的位置。更详细来说,在本实施例中,由于实体程序化单元825(1)~825(8)是位于同一个实体抹除单元825中,故存储器管理电路702可以使用比特图(bitmap)来表示前述的编码信息E_Info。在图13A的范例实施例中,编码信息E_Info的值为“1101101”。其中,从编码信息E_Info的值中最左边的比特算起,第一个比特是对应于实体程序化单元825(1),第二个比特是对应于实体程序化单元825(2),第三个比特是对应于实体程序化单元825(3),以此类推。在编码信息E_Info中,当一比特数值为“1”时,代表该比特所对应的实体程序化单元中存储有用于产生编码数据ECC1的数据,而当一比特数值为“0”时,代表该比特所对应的实体程序化单元中没有存储用于产生编码信息ECC1的数据。
举例来说,由于编码信息E_Info中由最左边算起的第一个比特的比特数值为“1”,因此代表实体程序化单元825(1)中存储有用于产生编码数据ECC1的数据。再例如,由于编码信息E_Info中由最左边算起的第三个比特的比特数值为“0”,因此代表实体程序化单元825(3)中没有存储有用于产生编码数据ECC1的数据。
基于上述,假设在读取实体程序化单元825(1)中的数据时,从实体程序化单元825(1)中读取出的数据可以先使用实体程序化单元825(1)中的冗余比特(未示出,例如为单框架编码的编码数据)来解码以进行错误检测与更正。然而,当使用实体程序化单元825(1)中的冗余比特进行解码发生失败时,存储器管理电路702可以读取编码数据ECC1,并根据编码信息E_Info得知实体程序化单元825(2)、825(4)~825(5)、825(7)中存储有用于产生编码数据ECC1的数据。因此,存储器管理电路702可以读取编码数据ECC1以及存储在实体程序化单元825(2)、825(4)~825(5)、825(7)中的数据DATA2~DATA5,并根据编码数据ECC1以及数据DATA2~DATA5进行解码,以尝试更正实体程序化单元825(1)中所存储的数据中存在的错误。
需注意的是,编码数据ECC1的错误检查与更正能力是正比于编码数据ECC1的比特数。在图13A的存储方式中,由于用于存储编码数据ECC1的实体程序化单元825(8)需使用较多的比特来存储编码信息E_Info,此情况会导致编码数据ECC1的比特数较少,进而造成编码数据ECC1的错误检查与更正能力较低的问题。此外,由图13A可以清楚得看出,用于记录主机系统11写入的数据DATA1~DATA5的实体程序化单元825(1)~825(2)、825(4)~825(5)、825(7)的格式是不同于用于记录编码数据ECC1的实体程序化单元825(8)的格式,因此会造成算法设计时的复杂度以及硬件设计上的成本上升。此外,假设编码数据ECC1是存储在一实体抹除单元且此实体抹除单元不同于数据DATA1~DATA5所位于的实体抹除单元,在写入与读取编码数据ECC1时也会造成时间的增加。
因此,本发明提出一种数据写入方法,可以增加编码数据的比特数以提升编码数据的错误检查与更正能力。此外,本发明的数据写入方法中,由于用于记录主机系统写入的数据的实体程序化单元的格式是相同于用于记录编码数据的实体程序化单元的格式,可以降低算法设计时的复杂度以及硬件设计上的成本。此外,本发明的数据写入方法中,由于编码数据是与用于产生该编码数据的数据被存储在相同的一实体抹除单元中,可以降低在写入与读取编码数据时所需的时间。
更详细来说,图13B是根据本发明的一范例实施例所示出的数据写入方法的示意图。
请参照图13B,为了方便说明,在图13B的范例中,假设可复写式非易失性存储器模块406中具有实体抹除单元830。实体抹除单元830具有实体程序化单元830(1)~830(8)。在本发明的数据写入方法中,当存储器管理电路702从主机系统11接收到多个数据时,存储器管理电路702会将此些数据分别写入至i个第一实体程序化单元中,其中i为大于零的正整数。
以图13B为例,当存储器管理电路702从主机系统11接收到数据DATA1~DATA5时,存储器管理电路702可以将数据DATA1~DATA5分别写入实体程序化单元830(1)~830(2)、830(4)~830(5)、830(7)(即,上述的“第一实体程序化单元”)。在图13B的实施例中,i的数值为5。然而本发明并不用于限定i的数值。此外,在图13B的实施例中,假设实体程序化单元830(3)与实体程序化单元830(6)因为程序化失败(program fail)的关系而没有存储数据。
之后,存储器管理电路702可以根据数据DATA1~DATA5执行多框架编码以产生编码数据ECC2,并且将编码数据ECC2写入至实体程序化单元830(8)(亦称为,第二实体程序化单元)中。
需说明的是,在本实施例中,实体程序化单元830(1)~830(2)、830(4)~830(5)、830(7)中的每一个实体程序化单元还需存储与编码数据ECC2相关的第一串接信息。存储器管理电路702会将多个第一串接信息分别写入至前述的i个第一实体程序化单元中。特别是,前述的i个第一实体程序化单元中的第k个第一实体程序化单元的第一串接信息是用以记录前述i个第一实体程序化单元中第k个第一实体程序化单元以外的至少一其他实体程序化单元的位置。在本范例实施例中,前述的其他实体程序化单元的位置包括i个第一实体程序化单元中的第n个第一实体程序化单元的位置,其中n为大于零且小于k的正整数。换句话说,在本实施例中,前述的第n个第一实体程序化单元的位置是位于第k个第一实体程序化单元的位置之前。然而本发明不限于此,在其他实施例中,前述的第n个第一实体程序化单元的位置也可以是位于第k个第一实体程序化单元的位置之后。
特别是,以第n个第一实体程序化单元的位置是位于第k个第一实体程序化单元的位置之前为例,请参考图13B的范例,假设图13B的实体程序化单元830(5)为前述的第k个第一实体程序化单元,实体程序化单元830(5)是在用于存储数据DATA1~DATA5的5个(即,i=5)实体程序化单元830(1)~830(2)、830(4)~830(5)、830(7)中的第4个实体程序化单元,故在此范例中k的值为4。此外,实体程序化单元830(1)~830(2)、830(4)~830(5)、830(7)中的每一个实体程序化单元包括栏位A1~A2。在此需说明的是,虽然图13B没有示出,但实体程序化单元825(1)~825(2)、825(4)~825(5)、825(7)中的每一个实体程序化单元中还包括冗余比特区,冗余比特区用于存储单框架编码的编码数据。特别是,在本实施例中,前述原先图13A的冗余比特区中预先保留且未使用的多个比特中的部分或全部的比特可以被配置为栏位A1~A2。
栏位A1中的比特(亦称为,第一比特)用于记录前述i个第一实体程序化单元中的第k-1个第一实体程序化单元的位置。因此,实体程序化单元830(5)的栏位A1用于记录实体程序化单元830(1)~830(2)、830(4)~830(5)、830(7)中的第3个实体程序化单元(即,实体程序化单元830(4))的位置。在本实施例中,由于实体程序化单元830(4)是位于从实体程序化单元830(5)算起前方第一个实体抹除单元,故存储器管理电路702会记录“1”至实体程序化单元830(5)的栏位A1。
此外,栏位A2中的比特(亦称为,第二比特)用于记录前述i个第一实体程序化单元中的第k-2个第一实体程序化单元的位置。因此,实体程序化单元830(5)的栏位A2用于记录实体程序化单元830(1)~830(2)、830(4)~830(5)、830(7)中的第2个实体程序化单元(即,实体程序化单元830(2))的位置。在本实施例中,由于实体程序化单元830(2)是位于从实体程序化单元830(5)算起前方第三个实体抹除单元,故存储器管理电路702会记录“3”至实体程序化单元830(5)的栏位A2。
再次以实体程序化单元830(7)举例说明。实体程序化单元830(7)是在用于存储数据DATA1~DATA5的5个实体程序化单元830(1)~830(2)、830(4)~830(5)、830(7)中的第5个实体程序化单元,实体程序化单元830(7)栏位A1中的比特会用于记录实体程序化单元830(1)~830(2)、830(4)~830(5)、830(7)中的第4个实体程序化单元(即,实体程序化单元830(5))的位置。由于实体程序化单元830(5)是位于从实体程序化单元830(7)算起前方第二个实体抹除单元,故存储器管理电路702会记录“2”至实体程序化单元830(7)的栏位A1。
此外,实体程序化单元830(7)的栏位A2用于记录实体程序化单元830(1)~830(2)、830(4)~830(5)、830(7)中的第3个实体程序化单元(即,实体程序化单元830(4))的位置。在本实施例中,由于实体程序化单元830(4)是位于从实体程序化单元830(7)算起前方第三个实体抹除单元,故存储器管理电路702会记录“3”至实体程序化单元830(7)的栏位A2。
基于上述方式,实体程序化单元830(1)~830(2)、830(4)的栏位A1~A2的记录方式可以是类似于实体程序化单元830(5)(或实体程序化单元830(7))的栏位A1~A2的记录方式,故在此不再赘述。特别是,由于不存在从实体程序化单元830(1)算起的位于实体程序化单元830(1)前方的第一个实体程序化单元与第二个实体程序化单元,故实体程序化单元830(1)的栏位A1与栏位A2会被分别填入“0”。此外,由于不存在从实体程序化单元830(2)算起位于实体程序化单元830(2)前方的第二个实体程序化单元,故实体程序化单元830(2)的栏位A2会被填入“0”。
在此需说明的是,在前述范例中,一个实体程序化单元的第一串接信息是用以记录从该实体程序化单元算起位于该实体程序化单元前方的第一个与第二个实体程序化单元的位置。然而本发明不限于此,在实作上,可以依据所使用的多框架编码的算法来决定第一串接信息中所需记录的从该实体程序化单元算起位于该实体程序化单元前方的实体程序化单元的位置的数量。
在图13B的范例中,存储器管理电路702还会将一串接信息(亦称为,第二串接信息)写入至编码数据ECC2的实体程序化单元830(8)中。特别是,第二串接信息是用以记录前述i个第一实体程序化单元中第j个第一实体程序化单元的位置。其中j为大于零且小于i+1的正整数。换句话说,在本实施例中,第二串接信息是用以记录i个第一实体程序化单元中的某个(或某些)第一实体程序化单元的位置。
请参考图13B的范例,图13B的实体程序化单元830(8)用于存储前述的编码数据ECC2。实体程序化单元830(8)包括栏位A1~A2。在本实施例中,用于存储编码数据的实体程序化单元的栏位A1中的比特(亦称为,第三比特)是用于记录前述i个第一实体程序化单元中的第i个第一实体程序化单元的位置。因此,实体程序化单元830(8)的栏位A1用于记录实体程序化单元830(1)~830(2)、830(4)~830(5)、830(7)中的第5个实体程序化单元(即,实体程序化单元830(7))的位置。在本实施例中,由于实体程序化单元830(7)是位于从实体程序化单元830(8)算起前方第一个实体抹除单元,故存储器管理电路702会记录“1”至实体程序化单元830(8)的栏位A1。
此外,用于存储编码数据的实体程序化单元的栏位A2中的比特(亦称为,第四比特)用于记录前述i个第一实体程序化单元中的第i-1个第一实体程序化单元的位置。因此,实体程序化单元830(8)的栏位A2用于记录实体程序化单元830(1)~830(2)、830(4)~830(5)、830(7)中的第4个实体程序化单元(即,实体程序化单元830(5))的位置。在本实施例中,由于实体程序化单元830(5)是位于从实体程序化单元830(8)算起前方第三个实体抹除单元,故存储器管理电路702会记录“3”至实体程序化单元830(8)的栏位A2。
基于上述,假设在读取实体程序化单元830(1)中的数据时,从实体程序化单元830(1)中读取出的数据可以先使用实体程序化单元830(1)中的冗余比特(未示出,例如为单框架编码的编码数据)来解码以进行错误检测与更正。然而,当使用实体程序化单元830(1)中的冗余比特进行解码发生失败时,存储器管理电路702可以读取实体程序化单元830(8)的栏位A1~A2以得知数据DATA5是存储于实体程序化单元830(7),读取实体程序化单元830(7)的栏位A1~A2以得知数据DATA4是存储于实体程序化单元830(5),读取实体程序化单元830(5)的栏位A1~A2以得知数据DATA3是存储于实体程序化单元830(4),读取实体程序化单元830(4)的栏位A1~A2以得知数据DATA2是存储于实体程序化单元830(2)。
之后,存储器管理电路702可以读取编码数据ECC2以及存储在实体程序化单元830(2)、830(4)~830(5)、830(7)中的数据DATA2~DATA5,并根据编码数据ECC2以及数据DATA2~DATA5进行解码,以尝试更正实体程序化单元830(1)中所存储的数据中存在的错误。
值得一提的是,前述实体程序化单元830(8)(即,第二实体程序化单元)中用以记录数据的格式是相同于实体程序化单元830(1)~830(2)、830(4)~830(5)、830(7)中的每一个实体程序化单元中用以记录数据的格式。通过此方式,可以降低算法设计时的复杂度以及硬件设计上的成本。
此外,由于实体程序化单元830(8)与实体程序化单元830(1)~830(2)、830(4)~830(5)、830(7)皆是属于同一个实体抹除单元830(亦称为,第一实体抹除单元),可以降低在写入与读取编码数据ECC2时所需的时间。
图14是根据本发明的一范例实施例所示出的数据写入方法的流程图。
请参照图14,在步骤S1401中,存储器管理电路702从主机系统11接收多个数据,并将此些数据分别写入至i个第一实体程序化单元中。其中i为大于零的正整数。在步骤S1403中,存储器管理电路702根据前述多个数据执行多框架编码以产生编码数据,并将编码数据写入至第二实体程序化单元中。在步骤S1405中,存储器管理电路702将与编码数据相关的多个第一串接信息分别写入至前述i个第一实体程序化单元中。其中前述i个第一实体程序化单元中的第k个第一实体程序化单元的第一串接信息用以记录前述i个第一实体程序化单元中第k个第一实体程序化单元以外的至少一其他实体程序化单元的位置,其中k为大于零且小于i+1的正整数。在步骤S1407中,存储器管理电路702将第二串接信息写入至第二实体程序化单元中,其中第二串接信息用以记录前述i个第一实体程序化单元中的第j个第一实体程序化单元的位置。其中j为大于零且小于i+1的正整数。
综上所述,本发明的数据写入方法、存储器控制电路单元以及存储器存储装置可以增加编码数据的比特数以提升编码数据的错误检查与更正能力。此外,本发明的数据写入方法中,由于用于记录主机系统写入的数据的实体程序化单元的格式是相同于用于记录编码数据的实体程序化单元的格式,可以降低算法设计时的复杂度以及硬件设计上的成本。此外,本发明的数据写入方法中,由于编码数据是与用于产生该编码数据的数据被存储在相同的一实体抹除单元中,可以降低在写入与读取编码数据时所需的时间。
虽然本发明已以实施例揭示如上,然其并非用以限定本发明,任何所属技术领域中的技术人员,在不脱离本发明的精神和范围内,当可作些许的更改与润饰,故本发明的保护范围当视权利要求所界定的为准。
Claims (24)
1.一种数据写入方法,用于可复写式非易失性存储器模块,其中所述可复写式非易失性存储器模块具有多个实体抹除单元,所述多个实体抹除单元中的每一个实体抹除单元具有多个实体程序化单元,所述数据写入方法包括:
从主机系统接收多个数据,并将所述多个数据分别写入至所述多个实体程序化单元中的i个第一实体程序化单元中,其中i为大于零的正整数;
根据所述多个数据执行多框架编码以产生编码数据,并将所述编码数据写入至所述多个实体程序化单元中的第二实体程序化单元中;以及
将与所述编码数据相关的多个第一串接信息分别写入至所述i个第一实体程序化单元中,其中所述多个第一串接信息用以记录所述多个数据在所述i个第一实体程序化单元中的位置。
2.根据权利要求1所述的数据写入方法,其中所述i个第一实体程序化单元中的第k个第一实体程序化单元的第一串接信息用以记录所述i个第一实体程序化单元中所述第k个第一实体程序化单元以外的至少一其他实体程序化单元的位置,其中k为大于零且小于i+1的正整数。
3.根据权利要求2所述的数据写入方法,其中所述其他实体程序化单元的位置包括所述i个第一实体程序化单元中的第n个第一实体程序化单元的位置,其中n为大于零且小于k的正整数。
4.根据权利要求2所述的数据写入方法,其中所述第k个第一实体程序化单元的第一串接信息包括至少一第一比特与至少一第二比特,所述第一比特用以记录所述i个第一实体程序化单元中的第k-1个第一实体程序化单元的位置且所述第二比特用以记录所述i个第一实体程序化单元中的第k-2个第一实体程序化单元的位置。
5.根据权利要求1所述的数据写入方法,其中根据所述多个数据执行所述多框架编码以产生所述编码数据,并将所述编码数据写入至所述多个实体程序化单元中的所述第二实体程序化单元中的步骤包括:
将第二串接信息写入至所述第二实体程序化单元中,其中所述第二串接信息用以记录所述i个第一实体程序化单元中的第j个第一实体程序化单元的位置,其中j为大于零且小于i+1的正整数。
6.根据权利要求5所述的数据写入方法,其中所述第二串接信息包括至少一第三比特与至少一第四比特,所述第三比特用以记录所述i个第一实体程序化单元中的第i个第一实体程序化单元的位置且所述第四比特用以记录所述i个第一实体程序化单元中的第i-1个第一实体程序化单元的位置。
7.根据权利要求1所述的数据写入方法,其中所述第二实体程序化单元中用以记录数据的格式相同于所述i个第一实体程序化单元中的每一个第一实体程序化单元中用以记录数据的格式。
8.根据权利要求1所述的数据写入方法,其中所述i个第一实体程序化单元与所述第二实体程序化单元属于所述多个实体抹除单元中的第一实体抹除单元。
9.一种存储器控制电路单元,用于可复写式非易失性存储器模块,所述可复写式非易失性存储器模块具有多个实体抹除单元,所述多个实体抹除单元中的每一个实体抹除单元具有多个实体程序化单元,所述存储器控制电路单元包括:
主机接口,用以耦接至主机系统;
存储器接口,用以耦接至所述可复写式非易失性存储器模块;以及
存储器管理电路,耦接至所述主机接口以及所述存储器接口,
其中所述存储器管理电路用以从主机系统接收多个数据,并将所述多个数据分别写入至所述多个实体程序化单元中的i个第一实体程序化单元中,其中i为大于零的正整数,
其中所述存储器管理电路还用以根据所述多个数据执行多框架编码以产生编码数据,并将所述编码数据写入至所述多个实体程序化单元中的第二实体程序化单元中,
其中所述存储器管理电路还用以将与所述编码数据相关的多个第一串接信息分别写入至所述i个第一实体程序化单元中,其中所述多个第一串接信息用以记录所述多个数据在所述i个第一实体程序化单元中的位置。
10.根据权利要求9所述的存储器控制电路单元,其中所述i个第一实体程序化单元中的第k个第一实体程序化单元的第一串接信息用以记录所述i个第一实体程序化单元中所述第k个第一实体程序化单元以外的至少一其他实体程序化单元的位置,其中k为大于零且小于i+1的正整数。
11.根据权利要求10所述的存储器控制电路单元,其中所述其他实体程序化单元的位置包括所述i个第一实体程序化单元中的第n个第一实体程序化单元的位置,其中n为大于零且小于k的正整数。
12.根据权利要求10所述的存储器控制电路单元,其中所述第k个第一实体程序化单元的第一串接信息包括至少一第一比特与至少一第二比特,所述第一比特用以记录所述i个第一实体程序化单元中的第k-1个第一实体程序化单元的位置且所述第二比特用以记录所述i个第一实体程序化单元中的第k-2个第一实体程序化单元的位置。
13.根据权利要求9所述的存储器控制电路单元,其中在根据所述多个数据执行所述多框架编码以产生所述编码数据,并将所述编码数据写入至所述多个实体程序化单元中的所述第二实体程序化单元中的运作中,
所述存储器管理电路还用以将第二串接信息写入至所述第二实体程序化单元中,其中所述第二串接信息用以记录所述i个第一实体程序化单元中的第j个第一实体程序化单元的位置,其中j为大于零且小于i+1的正整数。
14.根据权利要求13所述的存储器控制电路单元,其中所述第二串接信息包括至少一第三比特与至少一第四比特,所述第三比特用以记录所述i个第一实体程序化单元中的第i个第一实体程序化单元的位置且所述第四比特用以记录所述i个第一实体程序化单元中的第i-1个第一实体程序化单元的位置。
15.根据权利要求9所述的存储器控制电路单元,其中所述第二实体程序化单元中用以记录数据的格式相同于所述i个第一实体程序化单元中的每一个第一实体程序化单元中用以记录数据的格式。
16.根据权利要求9所述的存储器控制电路单元,其中所述i个第一实体程序化单元与所述第二实体程序化单元属于所述多个实体抹除单元中的第一实体抹除单元。
17.一种存储器存储装置,包括:
连接接口单元,用以耦接至主机系统;
可复写式非易失性存储器模块,所述可复写式非易失性存储器模块具有多个实体抹除单元,所述多个实体抹除单元中的每一个实体抹除单元具有多个实体程序化单元;以及
存储器控制电路单元,耦接至所述连接接口单元与所述可复写式非易失性存储器模块,
其中所述存储器控制电路单元用以从主机系统接收多个数据,并将所述多个数据分别写入至所述多个实体程序化单元中的i个第一实体程序化单元中,其中i为大于零的正整数,
其中所述存储器控制电路单元还用以根据所述多个数据执行多框架编码以产生编码数据,并将所述编码数据写入至所述多个实体程序化单元中的第二实体程序化单元中,
其中所述存储器控制电路单元还用以将与所述编码数据相关的多个第一串接信息分别写入至所述i个第一实体程序化单元中,其中所述多个第一串接信息用以记录所述多个数据在所述i个第一实体程序化单元中的位置。
18.根据权利要求17所述的存储器存储装置,其中所述i个第一实体程序化单元中的第k个第一实体程序化单元的第一串接信息用以记录所述i个第一实体程序化单元中所述第k个第一实体程序化单元以外的至少一其他实体程序化单元的位置,其中k为大于零且小于i+1的正整数。
19.根据权利要求18所述的存储器存储装置,其中所述其他实体程序化单元的位置包括所述i个第一实体程序化单元中的第n个第一实体程序化单元的位置,其中n为大于零且小于k的正整数。
20.根据权利要求18所述的存储器存储装置,其中所述第k个第一实体程序化单元的第一串接信息包括至少一第一比特与至少一第二比特,所述第一比特用以记录所述i个第一实体程序化单元中的第k-1个第一实体程序化单元的位置且所述第二比特用以记录所述i个第一实体程序化单元中的第k-2个第一实体程序化单元的位置。
21.根据权利要求17所述的存储器存储装置,其中在根据所述多个数据执行所述多框架编码以产生所述编码数据,并将所述编码数据写入至所述多个实体程序化单元中的所述第二实体程序化单元中的运作中,
所述存储器控制电路单元还用以将第二串接信息写入至所述第二实体程序化单元中,其中所述第二串接信息用以记录所述i个第一实体程序化单元中的第j个第一实体程序化单元的位置,其中j为大于零且小于i+1的正整数。
22.根据权利要求21所述的存储器存储装置,其中所述第二串接信息包括至少一第三比特与至少一第四比特,所述第三比特用以记录所述i个第一实体程序化单元中的第i个第一实体程序化单元的位置且所述第四比特用以记录所述i个第一实体程序化单元中的第i-1个第一实体程序化单元的位置。
23.根据权利要求17所述的存储器存储装置,其中所述第二实体程序化单元中用以记录数据的格式相同于所述i个第一实体程序化单元中的每一个第一实体程序化单元中用以记录数据的格式。
24.根据权利要求17所述的存储器存储装置,其中所述i个第一实体程序化单元与所述第二实体程序化单元属于所述多个实体抹除单元中的第一实体抹除单元。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910171419.6A CN111666174B (zh) | 2019-03-07 | 2019-03-07 | 数据写入方法、存储器控制电路单元以及存储器存储装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910171419.6A CN111666174B (zh) | 2019-03-07 | 2019-03-07 | 数据写入方法、存储器控制电路单元以及存储器存储装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN111666174A true CN111666174A (zh) | 2020-09-15 |
| CN111666174B CN111666174B (zh) | 2023-03-14 |
Family
ID=72382003
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201910171419.6A Active CN111666174B (zh) | 2019-03-07 | 2019-03-07 | 数据写入方法、存储器控制电路单元以及存储器存储装置 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN111666174B (zh) |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104252317A (zh) * | 2013-06-26 | 2014-12-31 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器存储装置 |
| CN106445404A (zh) * | 2015-08-13 | 2017-02-22 | 群联电子股份有限公司 | 存储器编程方法、存储器控制电路单元与存储器存储装置 |
| US20170351571A1 (en) * | 2016-06-07 | 2017-12-07 | Storart Technology Co.,Ltd. | Method and controller for recovering data in event of program failure and storage system using the same |
| CN108154903A (zh) * | 2017-12-22 | 2018-06-12 | 联芸科技(杭州)有限公司 | 快闪存储器的写入控制方法及装置、读取控制方法及装置以及存储器系统 |
-
2019
- 2019-03-07 CN CN201910171419.6A patent/CN111666174B/zh active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104252317A (zh) * | 2013-06-26 | 2014-12-31 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器存储装置 |
| CN106445404A (zh) * | 2015-08-13 | 2017-02-22 | 群联电子股份有限公司 | 存储器编程方法、存储器控制电路单元与存储器存储装置 |
| US20170351571A1 (en) * | 2016-06-07 | 2017-12-07 | Storart Technology Co.,Ltd. | Method and controller for recovering data in event of program failure and storage system using the same |
| CN108154903A (zh) * | 2017-12-22 | 2018-06-12 | 联芸科技(杭州)有限公司 | 快闪存储器的写入控制方法及装置、读取控制方法及装置以及存储器系统 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN111666174B (zh) | 2023-03-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI628660B (zh) | 解碼方法、記憶體控制電路單元以及記憶體儲存裝置 | |
| TWI648676B (zh) | 資料存取方法、記憶體控制電路單元以及記憶體儲存裝置 | |
| TWI725368B (zh) | 解碼方法、記憶體控制電路單元以及記憶體儲存裝置 | |
| TWI668695B (zh) | 電壓調整方法、記憶體控制電路單元以及記憶體儲存裝置 | |
| US10522234B2 (en) | Bit tagging method, memory control circuit unit and memory storage device | |
| CN109901784B (zh) | 数据存取方法、存储器控制电路单元以及存储器储存装置 | |
| TWI681396B (zh) | 解碼方法、記憶體控制電路單元以及記憶體儲存裝置 | |
| CN110875081B (zh) | 存储器测试方法与存储器测试系统 | |
| TW202029202A (zh) | 解碼方法、記憶體控制電路單元與記憶體儲存裝置 | |
| CN106843744A (zh) | 数据程序化方法与内存储存装置 | |
| CN111580741B (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
| CN109559774B (zh) | 解码方法、存储器控制电路单元以及存储器存储装置 | |
| TWI662553B (zh) | 記憶體測試方法與記憶體測試系統 | |
| TWI709850B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
| CN111666174B (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
| TWI657454B (zh) | 資料編碼方法、記憶體控制電路單元與記憶體儲存裝置 | |
| CN110797069B (zh) | 电压调整方法、存储器控制电路单元以及存储器存储装置 | |
| CN109508252B (zh) | 数据编码方法、存储器控制电路单元与存储器存储装置 | |
| TWI725386B (zh) | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 | |
| TWI742509B (zh) | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 | |
| TWI763310B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
| CN111324478B (zh) | 解码方法、存储器控制电路单元以及存储器存储装置 | |
| CN111508546A (zh) | 解码方法、存储器控制电路单元与存储器存储装置 | |
| US11145372B2 (en) | Decoding method, memory controlling circuit unit, and memory storage device | |
| CN111435604B (zh) | 解码方法、存储器控制电路单元以及存储器存储装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |