CN112463433A - 存取闪存模块的方法及相关的闪存控制器与记忆装置 - Google Patents
存取闪存模块的方法及相关的闪存控制器与记忆装置 Download PDFInfo
- Publication number
- CN112463433A CN112463433A CN202011105336.6A CN202011105336A CN112463433A CN 112463433 A CN112463433 A CN 112463433A CN 202011105336 A CN202011105336 A CN 202011105336A CN 112463433 A CN112463433 A CN 112463433A
- Authority
- CN
- China
- Prior art keywords
- flash memory
- data
- memory module
- check codes
- codec
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 277
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000012937 correction Methods 0.000 claims description 32
- 230000008569 process Effects 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 21
- 230000007246 mechanism Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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
-
- 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/1072—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 multilevel memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
-
- 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/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种存取闪存模块的方法及相关的闪存控制器与记忆装置。所述闪存模块是包含了多个闪存芯片的立体闪存模块,每一个闪存芯片包含了多个区块,每一个区块包含了多个数据页;以及所述方法包含有:规划所述多个闪存芯片以使得所述多个闪存芯片具有至少一个超级区块;以及指派一缓冲存储器空间以用来储存在一数据写入至所述至少一个超级区块的过程中所编码产生的多组暂时性的校验码。据此可以对数据写入错误、字符线断路以及字符线短路的数据读取错误进行更正,也可以大幅降低缓冲存储器的容量需求,且不需要浪费太多个空间储存校验码,降低的成本以及使用效率。
Description
原申请案的申请日是2017.04.26,申请号是201710284344.3,发明创造名称是”存取闪存模块的方法及相关的闪存控制器与记忆装置”。
技术领域
本发明涉及闪存,尤其涉及一种存取闪存模块的方法及相关的闪存控制器与记忆装置。
背景技术
为了让闪存能够有更高的密度以及更大的容量,闪存的制程也朝向立体化的发展,而产生了几种不同的立体NAND型闪存(3D NAND-type flash)。在立体NAND型闪存中,由于整体结构的不同以及浮闸形状位置的改变,因此在数据的写入以及读取上也比传统的平面NAND型闪存多出了些许的问题。举例来说,在某些立体NAND型闪存中,会将多条字符线(word line)定义为一字符线组,而所述字符线组会共同具有部分的控制电路,进而导致当数据写入到所述字符线组的一条字符线的浮闸晶体管发生失败时(写入失败),会连带导致所述字符线组的其他字符线的浮闸晶体管的数据发生错误;此外,如果所述字符线组中的一条字符线发生断路或短路的状况时,也会连带影响到所述字符线组的其他字符线的浮闸晶体管的数据发生错误,因此,如何就上述问题提出一种错误更正方式,以尽可能地维持数据的正确性,且又不会浪费内存空间以节省成本,是一个重要的课题。
发明内容
因此,本发明的目的的一在于提出一种存取一闪存模块的方法及相关的闪存控制器与记忆装置,其使用类似容错式磁盘阵列(Redundant Array of Independent Disks,RAID)的错误更正方式,但是却不会大幅浪费闪存空间,且在闪存控制器的处理过程中也仅需要很少量的缓冲存储器空间,以解决背景技术中的问题。
根据本发明的实施例,公开了一种存取一闪存模块的方法,其中所述闪存模块是立体闪存(3D NAND-type flash)模块,所述闪存模块包含了多个闪存芯片,每一个闪存芯片包含了多个区块,所述多个区块包含了多个多层式储存(Multiple-Level Cell,MLC)区块,每一个区块包含了多个数据页,每一个区块包含了分别位于多个不同平面的多条字符线以及位线来控制的多个浮闸晶体管,且每一条字符线的浮闸晶体管构成了所述多个数据页中的至少一数据页。以及所述方法包含有:对一数据进行编码以产生至少一组校验码,其中所述数据准备写入到所述多个闪存芯片的一超级区块(super block)中,其中所述超级区块包含了所述多个闪存芯片中每一个闪存芯片的一个多级单元区块;将所述数据写入至所述超级区块;将所述至少一组校验码写入暂存至一缓冲存储器中;以及从所述缓冲存储器读取出所述至少一组校验码,对所述至少一组校验码进行编码以产生至少一组最终校验码,将所述至少一组最终校验码写入至所述超级区块的一闪存芯片的多个数据页。
根据本发明的实施例,另公开了一种闪存控制器,所述闪存控制器用来存取闪存模块,其中所述闪存模块是立体闪存模块,所述闪存模块包含了多个闪存芯片,每一个闪存芯片包含了多个区块,所述多个区块包含了多个多级单元区块,每一个区块包含了多个数据页,每一个区块包含了分别位于多个不同平面的多条字符线以及位线来控制的多个浮闸晶体管,且每一条字符线的浮闸晶体管构成了所述多个数据页中的至少一数据页。所述闪存控制器包含有一内存、一微处理器及一编译码器,所述内存用来储存一程序代码,微处理器用来执行所述程序代码以控制对所述闪存模块的存取,所述编译码器对一数据进行编码以产生至少一组校验码,其中所述数据准备写入到所述多个闪存芯片的一超级区块中,其中所述超级区块包含了所述多个闪存芯片中每一个闪存芯片的一个多级单元区块,以及所述微处理器将所述数据写入至所述超级区块,将所述至少一组校验码写入暂存至一缓冲存储器中,以及从所述缓冲存储器读取出所述至少一组校验码,对所述至少一组校验码进行编码以产生至少一组最终校验码,将所述至少一组最终校验码写入至所述超级区块的一闪存芯片的多个数据页。
根据本发明的实施例,另公开了一种记忆装置,记忆装置包含有一闪存模块及一闪存控制器,闪存模块是立体闪存模块并包含了多个闪存芯片,每一个闪存芯片包含了多个区块,所述多个区块包含了多个多级单元区块,每一个区块包含了多个数据页,每一个区块包含了分别位于多个不同平面的多条字符线以及位线来控制的多个浮闸晶体管,且每一条字符线的浮闸晶体管构成了所述多个数据页中的至少一数据页。闪存控制器用来存取闪存模块,当接收到来自一主机的写入指令以要求将一数据写入至闪存模块中时,闪存控制器对所述数据进行编码以产生至少一组校验码,并将所述数据写入到多个闪存芯片的一超级区块中,其中所述超级区块包含了所述多个闪存芯片中每一个闪存芯片的一个多级单元区块,闪存控制器将所述至少一组校验码写入暂存至一缓冲存储器中,以及从缓冲存储器读取出所述至少一组校验码,对所述至少一组校验码进行编码以产生至少一组最终校验码,将所述至少一组最终校验码写入至所述超级区块的一闪存芯片的多个数据页。
根据本发明的实施例,另公开了一种存取一闪存模块的方法,闪存模块是立体闪存模块并包含了多个闪存芯片,每一个闪存芯片包含了多个区块,每一个区块包含了多个数据页,每一个区块包含了分别位于多个不同平面的多条字符线以及位线来控制的多个浮闸晶体管,且每一条字符线的浮闸晶体管构成了所述多个数据页中的至少一个数据页。所述方法包含有:规划所述多个闪存芯片以使得所述多个闪存芯片具有至少一个超级区块;以及配置一缓冲存储器空间以用来储存在一数据写入至所述至少一个超级区块的过程中所编码产生的多组暂时性的校验码。
根据本发明的实施例,另公开了一种闪存控制器,闪存控制器用来存取一闪存模块,其中闪存模块是立体闪存模块并包含了多个闪存芯片,每一个闪存芯片包含了多个区块,每一个区块包含了多个数据页,每一个区块包含了分别位于多个不同平面的多条字符线以及位线来控制的多个浮闸晶体管,且每一条字符线的浮闸晶体管构成了所述多个数据页中的至少一个数据页。闪存控制器包含有一内存、一微处理器及一编译码器,内存用来储存一程序代码,微处理器用来执行所述程序代码以控制对闪存模块的存取,微处理器规划多个闪存芯片以使得所述多个闪存芯片具有至少一个超级区块,以及配置一缓冲存储器空间以用来储存在一数据写入至所述至少一个超级区块的过程中所编码产生的多组暂时性的校验码。
根据本发明的实施例,另公开了一种记忆装置,内存装置包含有一闪存模块及一闪存控制器,闪存模块是立体闪存模块并包含了多个闪存芯片,每一个闪存芯片包含了多个区块,每一个区块包含了多个数据页,每一个区块包含了分别位于多个不同平面的多条字符线以及位线来控制的多个浮闸晶体管,且每一条字符线的浮闸晶体管构成了所述多个数据页中的至少一个数据页。闪存控制器用来存取闪存模块,闪存控制器规划多个闪存芯片以使得多个闪存芯片具有至少一个超级区块,以及指派一缓冲存储器空间以用来储存在一数据写入至所述至少一个超级区块的过程中所编码产生的多组暂时性的校验码。
附图说明
图1是依据本发明一实施例的一种记忆装置的示意图。
图2是立体NAND型闪存的范例示意图。
图3是浮闸晶体管结构的概念示意图。
图4是区块中多个字符线组的示意图。
图5是闪存控制器将数据写入到闪存模块、以及超级区块的示意图。
图6是依据本发明第一实施例的闪存控制器将数据写入到超级区块的示意图。
图7是根据图6所示的第1~192组校验码S0~S191采用里德-所罗门编码来产生8组最终校验码SF0~SF7的示意图。
图8是根据图6所示的第1~192组校验码S0~S191采用互斥或运算来产生8组最终校验码SF0~SF7的示意图。
图9是依据本发明第二实施例的闪存控制器将数据写入到超级区块的示意图。
图10是根据图9所示的第1~192组校验码S0~S191采用里德-所罗门码来产生8组最终校验码SF0~SF7的示意图。
图11是根据图9所示的第1~192组校验码S0~S191采用互斥或运算来产生8组最终校验码SF0~SF7的示意图。
其中,附图标记说明如下:
100 记忆装置
110 闪存控制器
112 微处理器
112C 程序代码
112M 只读存储器
114 控制逻辑
116 缓冲存储器
118 接口逻辑
120 闪存模块
132 第一编译码器
134 第二编译码器
202 浮闸晶体管
510、520 通道
512、514、516、518 闪存芯片
530 超级区块
B1~B3 位线
WL0~WL47 字符线
WL_G0~WL_G47 字符线组
具体实施方式
请参考图1,图1是依据本发明一实施例的一种记忆装置100的示意图,其中本实施例的记忆装置100特别是可携式记忆装置(例如:符合SD/MMC、CF、MS、XD标准的记忆卡)。记忆装置100包含有一闪存(Flash Memory)模块120以及一闪存控制器110,且闪存控制器110用来存取闪存模块120。依据本实施例,闪存控制器110包含一微处理器112、一只读存储器(Read Only Memory,ROM)112M、一控制逻辑114、一缓冲存储器116、与一接口逻辑118。只读存储器用来储存一程序代码112C,而微处理器112则用来执行程序代码112C以控制对闪存模块120的存取(Access)。其他实施例中,缓冲存储器116可设置于控制器110的外部,并利用一动态随机存取内存所配置的一块储存空间来实现。
于典型状况下,闪存模块120包含了多个闪存芯片,而每一个闪存芯片包含多个区块(Block),而所述控制器(例如:通过微处理器112执行程序代码112C的闪存控制器110)对闪存模块120进行复制、抹除、合并数据等运作以区块为单位来进行复制、抹除、合并数据。另外,一区块可记录特定数量的数据页(Page),其中所述控制器(例如:通过微处理器112执行程序代码112C的内存控制器110)对闪存模块120进行写入数据(Program)的运作以数据页为单位来进行写入。
实作上,通过微处理器112执行程序代码112C的闪存控制器110可利用其本身内部的元件来进行诸多控制运作,例如:利用控制逻辑114来控制闪存模块120的存取运作(尤其是对至少一个区块或至少一个数据页的存取运作)、利用缓冲存储器116进行所需的缓冲处理、以及利用接口逻辑118来与一主装置(Host Device)沟通。
另一方面,在本实施例中,控制逻辑114包含了一第一编译码器(codec)132以及一第二编译码器134,其中第一编译码器132用来对写入到闪存模块120的一区块中的数据进行编码,以产生对应的错误更正码(error correction code),其中第一编译码器132所产生的错误更正码仅是根据写入到一数据页中一区段(sector)的内容所产生的,且所产生的错误更正码会连同所述区段的数据内容一并写入到所述数据页中。另外,第二编译码器134是容错式磁盘阵列(RAID)编译码器,用来对写入至多个闪存芯片中的数据进行编码,以产生对应的校验码,其操作将于以下内容中详述。
在本实施例中,闪存模块120是立体NAND型闪存(3D NAND-type flash)模块,请参考图2,其是立体NAND型闪存的范例示意图,如图2所示,立体NAND型闪存包含了多个浮闸晶体管202,其通过多条位线(图示仅绘示了BL1~BL3)及多条字符线(例如图示的WL0~WL2、WL4~WL6)来构成立体NAND型闪存架构,本实施例中的一字符线又可被称作是字符串(String)。在图2中,以最上面的一个平面为例,字符线WL0上的所有浮闸晶体管构成了至少一个数据页,字符线WL1上的所有浮闸晶体管构成了另至少一个数据页,而字符线WL2的所有浮闸晶体管构成了再另至少一个数据页…以此类堆。此外,根据闪存写入方式的不同,字符线WL0与数据页(逻辑数据页)之间的定义也会有所不同,详细来说,当使用单级单元(Single-Level Cell,SLC)的方式写入时,字符线WL0上的所有浮闸晶体管仅对应到单一逻辑数据页;当使用多级单元(Multi-Level Cell,MLC)的方式写入时,字符线WL0上的所有浮闸晶体管对应到两个、三个或是四个逻辑数据页,其中字符线WL0上的所有浮闸晶体管对应到三个逻辑数据页的情形可以称为三级单元(Triple-Level Cell,TLC)架构,而字符线WL0上的所有浮闸晶体管对应到四个逻辑数据页的情形可以称为四级单元(Quad-Level Cell,QLC)架构。由于本技术领域中具有通常知识者应能了解立体NAND型闪存的结构以及字符线及数据页之间的关系,故相关的细节在此不予赘述。另外,在闪存控制器110的操作中,“数据页”是最小写入单位,且“区块”是最小抹除单位。
请参考图3,其是浮闸晶体管202结构的概念示意图,如图3所示,每一个浮闸晶体管的闸极及浮闸是围绕在源极与汲极周围(gate all around),以增强通道感应能力。
需注意的是,图2、图3所示的仅是立体NAND型闪存与浮闸晶体管202的范例,而并非是作为本发明的限制,本技术领域中具有通常知识者应能了解立体NAND型闪存尚有其他种型式,例如部分的字符线可彼此连接..等等,且浮闸晶体管202的设计也能有些许的改变。
如现有技术中所述,在某些立体NAND型闪存中,会将多条字符线定义是字符线组,而所述字符线组会共同具有部分的控制电路,进而导致当数据写入到所述字符线组的一条字符线的浮闸晶体管发生失败时(写入失败),会连带导致所述字符线组的其他字符线的浮闸晶体管的数据发生错误。在一实施例中,位于同一个平面上的字符线会被设定是字符线组,参考图2,字符线WL0~WL3会被归于第一字符线组,而字符线WL4~WL7会被归于第二字符线组…以此类推。请参考图4,图4是区块中多个字符线组的示意图,在图4中假设所述区块包含了48个立体堆栈平面(也就是48个字符线组),每一字符线组包括4条字符线,因此所述区块共包括了192条字符线的所有浮闸晶体管,因此,在图4中的区块包含了48个字符线组(以WL_G0~WL_G47表示之);另外,在图4中所述区块是三级单元(TLC)区块,也就是每一条字符线的浮闸晶体管可用来储存三个数据页的数据,如图4所示,以字符线组WL_G0为例,其包含的字符线WL0上的浮闸晶体管可用来储存较低页P0L、中间页P0M及较高页P0U,字符线WL1上的浮闸晶体管可用来储存较低页P1L、中间页P1M及较高页P1U,字符线WL2上的浮闸晶体管可用来储存较低页P2L、中间页P2M及较高页P2U,以及字符线WL3上的浮闸晶体管可用来储存较低页P3L、中间页P3M及较高页P3U。当控制器将数据写入到字符线组WL_G0的数据页时,循序将数据写入到字符线WL0、WL1、WL2、WL3中的浮闸晶体管,如果字符线WL0、WL1上的数据都成功写入,但是当数据写入字符线WL2时发生写入失败(Program fail),则会连带使得字符线WL0、WL1上原本写入成功的数据也发生错误,也就是,字符线组WL_G0发生写入失败。
另外,在某些情况下,即使数据已经成功写入,但在后续的读取中仍然可能会发生无法读取或是读取错误的情形,例如字符线发生断路(open)的情形而造成无法读取数据的情形,此外,如先前所述,一个字符线组中只要有一条字符线发生断路,便会造成整个字符线组的数据都会发生错误。另一方面,若是在不同字符线组中的两个字符线发生短路,例如第4图中的字符线WL3和字符线WL4发生短路的现象,则会造成两个字符线组WL_G0与WL_G1上的数据均无法成功读取,视为是两个字符线组WL_G0与WL_G1发生短路的现象。
如上所述,由于闪存在写入数据及后续的读取中会碰到上述写入失败、字符线断路以及字符线短路的情形而造成一个或两个相邻字符线组的数据均发生错误,因此,本发明在以下的实施例中提出了一种可以确实解决上述问题的存取闪存模块120的方法,且仅需要很少的资源(也就是很少的内存空间)便可以完成。具体内容如下所述。
请搭配参考图1与图5,图5是闪存控制器110将数据写入到闪存模块120的示意图。如图5所示,闪存模块120包含了多个通道(在本实施例中,以两个通道510、520为例),且每一个通道在闪存控制器110中有各自的串行传输器(sequencer)且均包含了多个闪存芯片,而在本实施例中通道510包含了闪存芯片512、514,且通道520包含了闪存芯片522、524。另外,每一个闪存芯片512、514、522、524中的一个区块会被组态是个超级区块(superblock),而闪存控制器110会将数据通过超级区块为单位来进行写入,并且在数据写入的过程中,闪存控制器110的控制逻辑114通过存取缓冲存储器116来暂存第二编译码器134所产生的暂时的部分校验码于缓冲存储器116以及从缓冲存储器116读取所暂存的部分校验码,由于缓冲存储器116可由动态随机存取内存来实现,因此可降低电路成本,举例来说,可采用一动态随机存取内存,所述动态随机存取内存可储存有一般数据区、对照表数据区以及另指派配置一块内存储存空间来暂存校验码或部分校验码,所述配置的内存储存空间可以是具有固定的实体地址或是逻辑地址。在本实施例中,超级区块530包含了每一个闪存芯片512、514、522、524中的一个三级单元区块;需注意的是,在本发明的其他实施例中,超级区块530所包含的也可以是每一个闪存芯片512、514、522、524中的一个四级单元(Quad-LevelCell,QLC)区块。
请参考图6,其中图6是依据本发明一第一实施例的闪存控制器110将数据写入到超级区块530的示意图,其中在以下的叙述中,每一笔数据写入到闪存芯片512、514、522、524的一个数据页,例如,第1笔数据会被写入到每一个闪存芯片512、514、522、524中的第一个数据页P0的较低页P0L、中间页P0M、较高页P0U,第2笔数据会被写入到每一个闪存芯片512、514、522、524中的第二个数据页P1的较低页P1L、中间页P1M、较高页P1U,…,第N笔数据会被写入到每一个闪存芯片512、514、522、524中的第N个数据页P(N-1)的较低页P(N-1)L、中间页P(N-1)M、较高页P(N-1)U,N例如是192。
当闪存控制器110需要将第1笔数据写入至超级区块530中时,首先,第一编译码器132分别对第1笔数据进行编码以产生对应的错误更正码,并将第1笔数据与第一编译码器132所产生的错误更正码一并写入到每一个闪存芯片512、514、522、524中的第一个数据页P0中,详细来说,第一编译码器132对第1笔数据中第一部分数据进行编码以产生错误更正码,并将第一部分数据与其错误更正码写入到闪存芯片512的第一个数据页P0的较低页P0L、中间页P0M、较高页P0U;第一编译码器132对第1笔数据中第二部分数据进行编码以产生错误更正码,并将第二部分数据与其错误更正码写入到闪存芯片514的第一个数据页P0的较低页P0L、中间页P0M、较高页P0U;第一编译码器132对第1笔数据中第三部分数据进行编码以产生错误更正码,并将第三部分数据与其错误更正码写入到闪存芯片522的第一个数据页P0的较低页P0L、中间页P0M、较高页P0U;以及第一编译码器132对第1笔数据中第四部分数据(最后一部分数据)进行编码以产生错误更正码,并将第四部分数据与其错误更正码写入到闪存芯片524的第一个数据页P0的较低页P0L、中间页P0M、较高页P0U。需注意的是,第一编译码器132要的操作可以是以一个区段(sector)为单位来进行,其中每一个数据页由多个区段所组成。
在第1笔数据及第一编译码器132所产生的错误更正码写入至超级区块530之前,闪存控制器110中的第二编译码器134会针对第1笔数据及其错误更正码进行RAID编码以产生第1组校验码S0。在一实施例中,第二编译码器134可以采用里德-所罗门(Reed Solomon,RS)编码方式或是互斥或(exclusive-OR,XOR)运算来对写入到每一个闪存芯片512、514、522、524中的第一个数据页P0的数据进行编码,以产生第1组校验码S0。举例来说,但并非作为本发明的限制,第二编译码器134可以对闪存芯片512、514、522、524中的第一个数据页P0的较低页P0L的数据彼此一起作互斥或运算来得到第1组校验码S0的第一部分校验码S0L,对闪存芯片512、514、522、524中的第一个数据页P0的中间页P0M的数据彼此一起作互斥或运算来得到第1组校验码S0的第二部分校验码S0M,以及对闪存芯片512、514、522、524中的第一个数据页P0的较高页P0U的数据彼此一起作互斥或运算来得到第1组校验码S0的第三部分校验码S0U;也就是说,第1组校验码S0包括有第一部分校验码S0L、第二部分校验码S0M、第三部分校验码S0U,而这三个部分校验码是通过不同次的互斥或运算而产生的,实作上,第二编译码器134可包括有3个编译码引擎来产生这3个不同的部分校验码;相似地,对于其他组的校验码,也可利用第二编译码器134所包括的3个编译码引擎来分别产生相对应的3个不同的部分校验码。另外,如果采用里德-所罗门的编码,则第二编译码器134直接对闪存芯片512、514、522、524中的第一个数据页P0的数据彼此一起作互斥或运算来得到第1组校验码S0,而不需采用3组编译码引擎来分别产生这3个不同的部分校验码。
第二编译码器134所产生的第1组校验码S0用来当闪存芯片512、514、522或524中的其中一个闪存芯片的第一个数据页P0发生数据错误时进行错误更正,举例来说,以互斥或运算编码为例,若闪存芯片512中的第一个数据页P0的较低页P0L的数据发生无法利用本身的数据进行更正的错误时(也就是,无法利用第一编译码器132所产生的错误更正码来进行更正时),第二编译码器134可以读取闪存芯片514、522、524中所有第一个数据页P0的较低页P0L的数据,再加上第1组校验码S0的第一部分校验码S0L,来进行错误更正以决定出闪存芯片512中的第一个数据页P0的较低页P0L的数据,相同地,对于数据页P0的中间页P0M或较高页P0U的数据发生无法利用本身的数据进行更正的错误时,第二编译码器134可以读取闪存芯片514、522、524中所有第一个数据页P0的中间页P0M的数据,再加上第1组校验码S0的第二部分校验码S0M,来进行错误更正以决定出闪存芯片512中的第一个数据页P0的中间页P0M的数据,以及可以读取闪存芯片514、522、524中所有第一个数据页P0的较高页P0U的数据,再加上第1组校验码S0的第三部分校验码S0U,来进行错误更正以决定出闪存芯片512中的第一个数据页P0的较高页P0U的数据。另外,以里德-所罗门编码为例,若闪存芯片512中的第一个数据页P0的数据发生无法利用本身的数据进行更正的错误时,第二编译码器134可以读取闪存芯片514、522、524中所有第一个数据页P0的数据,再加上第1组校验码S0,来进行错误更正以决定出闪存芯片512中的第一个数据页P0的数据。
此外,第二编译码器134所产生的第1组校验码S0会先暂时储存在闪存控制器110的缓冲存储器116中。
另外,在第1笔数据写入的过程中,闪存控制器110会对写入的数据进行读取检查的操作,以确定数据是否成功写入。当数据写入错误或失败时,第二编译码器134可以直接使用储存在缓冲存储器116中的第1组校验码S0来对所读出的数据进行更正,而由于闪存模块120无法直接对已写入的数据做修正,更正后的数据(更正后的第1笔数据)可以等待后续适合的时间连同超级区块530中的其他数据一并写入到另外一个超级区块中。
接着,当闪存控制器110需要将第2笔数据写入至超级区块530中时,首先,第一编译码器132分别对第2笔数据进行编码以产生对应的错误更正码,并将第2笔数据与第一编译码器132所产生的错误更正码一并写入到每一个闪存芯片512、514、522、524中的第二个数据页P1中。在第2笔数据及第一编译码器132所产生的错误更正码写入至超级区块530之前,闪存控制器110中的第二编译码器134会针对第2笔数据及其错误更正码进行RAID编码以产生第2组校验码S1。在一实施例中,第二编译码器134可以采用里德-所罗门编码方式或是互斥或运算来对写入到每一个闪存芯片512、514、522、524中的第二个数据页P1的数据进行编码,以产生第2组错误更正码S1。以互斥或运算为例,第二编译码器134对闪存芯片512、514、522、524中的第二个数据页P1的较低页P1L的数据彼此一起作互斥或运算来得到第2组校验码S1的第一部分校验码S1L,对所述些第二个数据页P1的中间页P1M的数据彼此一起作互斥或运算来得到第2组校验码S1的第二部分校验码S1M,以及对所述些第二个数据页P1的较高页P1U的数据彼此一起作互斥或运算来得到第2组校验码S1的第三部分校验码S1U;也就是说,第2组校验码S1包括有第一部分校验码S1L、第二部分校验码S1M、第三部分校验码S1U,而这三个部分校验码是通过不同次的互斥或运算而产生的,第二编译码器134可通过前述3个编译码引擎来产生这3个不同的部分校验码;相似地,对于其他组的校验码,也可利用第二编译码器134所包括的3个编译码引擎来分别产生相对应的3个不同的部分校验码。另外,如果采用里德-所罗门的编码,则第二编译码器134直接对所述些第二个数据页P1的数据彼此一起作互斥或运算来得到第2组校验码S1,而不需采用3组编译码引擎来分别产生这3个不同的部分校验码。
此外,第二编译码器134所产生的第2组校验码S1会先暂时储存在闪存控制器110的缓冲存储器116中。类似地,在第2笔数据写入的过程中,闪存控制器110也会对写入的数据进行读取检查的操作,以确定数据是否成功写入。当数据写入错误时,第二编译码器134可以直接使用储存在缓冲存储器116中的第2组校验码S1来对所读出的数据进行更正,而更正后的数据(更正后的第2笔数据)可以等待后续适合的时间连同超级区块530中的其他数据一并写入到另外一个超级区块中。
需注意的是,当第2笔数据写入的过程中也发生写入错误的情形时,则由于数据页P1、P0是属于同一个字符线组WL_G0,因此,闪存芯片512、514、522、524中的数据页P0也有可能发生损坏。举例来说,假设闪存芯片514的数据页P1在数据写入的过程中发生错误,则先前已成功写入的闪存芯片514的数据页P0也会发生错误。此时,由于缓冲存储器116本身并没有储存第1组校验码S0,因此,闪存控制器110会自缓冲存储器116中读取第1组校验码S0,来对自超级区块530所读取的第1笔数据来进行更正。
基于同样的操作,闪存控制器110继续将第3笔数据写入至闪存芯片512、514、522、524中的第三个数据页P2中,并产生相对应的第3组校验码S2;以及将第4笔数据写入至闪存芯片512、514、522、524中的第四个数据页P3中,并产生相对应的第4组校验码S3,以完成字符线组WL_G0的数据写入。相同地,闪存控制器110继续将接下来的第5~8笔数据分别写入至闪存芯片512、514、522、524中的数据页P4~P7中,并产生相对应的字符线组WL_G1的第1~4组校验码S4~S7,完成字符线组WL_G1的数据写入。为了电路成本考虑,缓冲存储器116以动态随机存取内存实现并配置有一块储存空间,可用来暂存闪存控制器110所产生的RAID编码的校验码。控制器110可于产生每一组校验码时将所述组校验码暂存于缓冲存储器116,或是于产生8组校验码时将所述8组校验码一同暂存于缓冲存储器116。
接着,类似以上步骤,闪存控制器110将接下来的第5~184笔数据写入至闪存芯片512、514、522、524中,且第二编译码器134对第5~184笔数据进行RAID编码以分别产生字符线组WL_G2~WL_G45各自的第1~4组校验码S8~S183,并将所述些组校验码S8~S183暂存于缓冲存储器116。
对于超级区块530的最后两个字符线组WL_G46、WL_G47,控制器110被安排将相关的校验码进行处理并写入至最后一个芯片(也就是芯片524)的数据页P184~P191,而为了解决字符线组写入失败、断号及短路的情况,控制器110于处理相关的校验码时将所有字符线组依写入顺序区分为奇数组的多个字符线组(也就是WL_G0、WL_G2、WL_G4、WL_G6、…、WL_G44、WL_G46)以及偶数组的多个字符线组(也就是WL_G1、WL_G3、WL_G5、WL_G7、…、WL_G45、WL_G47)。针对第185笔数据,闪存控制器110将第185笔数据连同第一编译码器132所产生的错误更正码来写入至闪存芯片512、514、522中的数据页P184(奇数组字符线组的最后一个字符线组WL_G46),而并不会将数据写入到闪存芯片524中的数据页P184。在第185笔数据写入至超级区块530之前,第二编译码器134对第185笔数据及其错误更正码来进行编码以产生第185组校验码S184,以里德-所罗门编码为例,闪存控制器110自缓冲存储器116中读取先前奇数组字符线组中每一个字符线组WL_G0、WL_G2、WL_G4、WL_G6、…、WL_G44的第一组校验码S0、S8、S16、…、S176,且第二编译码器对校验码S0、S8、S16、…、S176以及校验码S184彼此一起作里德-所罗门编码来得到最终校验码SF0,闪存控制器110将最终校验码SF0写入到闪存芯片524中的数据页P184。若以互斥或运算作为RAID编码机制,在一实施例中,第二编译码器134通过第一编码引擎对校验码S0、S8、S16、…、S176、S184中的第一部分校验码(S0L、S8L、S16L、…、S176L、S184L)一起作互斥或运算来产生最终校验码SF0的第一部分校验码,通过第二编码引擎对校验码S0、S8、S16、…、S176、S184中的第二部分校验码(S0M、S8M、S16M、…、S176M、S184M)一起作互斥或运算来产生最终校验码SF0的第二部分校验码,以及通过第三编码引擎对校验码S0、S8、S16、…、S176、S184中的第三部分校验码(S0U、S8U、S16U、…、S176U、S184U)一起作互斥或运算来产生最终校验码SF0的第三部分校验码,最终校验码SF0的第一、第二、第三部分校验码分别被控制器110写入至芯片524的数据页P184的较低页、中间页及较高页中。
同样地,例如针对第186~188笔数据,闪存控制器110将第186~188笔数据连同第一编译码器132所产生的错误更正码分别写入至闪存芯片512、514、522中的数据页P185~P187(奇数组字符线组的最后一个字符线组WL_G46),而并不会将数据写入到闪存芯片524中的数据页P185~P187。以第186笔数据来说,在第186笔数据写入至超级区块530之前,第二编译码器134对第186笔数据及其错误更正码来进行编码以产生第186组校验码S185,以里德-所罗门编码为例,闪存控制器110自缓冲存储器116中读取先前奇数组字符线组中每一个字符线组WL_G0、WL_G2、WL_G4、WL_G6、…、WL_G44的第二组校验码S1、S9、S17、…、S177,且第二编译码器对校验码S1、S9、S17、…、S177以及校验码S185彼此一起作里德-所罗门编码来得到最终校验码SF1,闪存控制器110将最终校验码SF1写入到闪存芯片524中的数据页P185。若以互斥或运算作为RAID编码机制,在一实施例中,第二编译码器134通过第一编码引擎对校验码S1、S9、S17、…、S177、S185中的第一部分校验码(S1L、S9L、S17L、…、S177L、S185L)一起作互斥或运算来产生最终校验码SF1的第一部分校验码,通过第二编码引擎对校验码S1、S9、S17、…、S177、S185中的第二部分校验码(S1M、S9M、S17M、…、S177M、S185M)一起作互斥或运算来产生最终校验码SF1的第二部分校验码,以及通过第三编码引擎对校验码S1、S9、S17、…、S177、S185中的第三部分校验码(S1U、S9U、S17U、…、S177U、S185U)一起作互斥或运算来产生最终校验码SF1的第三部分校验码,最终校验码SF1的第一、第二、第三部分校验码分别被控制器110写入至芯片524的数据页P185的较低页、中间页及较高页中。
基于类似的操作,针对第189~192笔数据,闪存控制器110将第189~192笔数据连同第一编译码器132所产生的错误更正码来写入至闪存芯片512、514、522中的数据页P188~P191;且第二编译码器134也根据上述类似的操作来产生偶数组字符线组的第一至第四组最终校验码SF4~SF7,并将最终校验码SF4~SF7分别写入到闪存芯片524中的数据页P188~P191。
上述根据第1~192组校验码S0~S191来产生奇数组字符线组与偶数组字符线组的最终校验码SF0~SF7的概念可以参考图7、图8所示的内容,其中图7是采用里德-所罗门编码作为RAID编码运算的示意图,图8是采用互斥或运算作为RAID编码运算的示意图。
需注意的是,上述的最终校验码SF0~SF7是由校验码S0~S191所分别对应产生的,最终校验码SF0~SF7便带有先前每一组校验码S0~S191的信息。也就是,在后续的读取操作中,每一组校验码S0~S191除了可以再次根据相对应的数据页内容来得到之外(例如读取闪存芯片512、514、522、524的数据页P1来得到校验码S1),若是发生错误时也可以通过相对应的最终校验码SF0~SF7来进行更正。举例来说,假设字符线组WL_G0中有一条字符线发生断路,例如闪存芯片514的数据页P0所对应到的字符线断路,则闪存控制器110可以读取其他字符线组中的数据来重新产生校验码S8、S16、...、S184以及最终校验码SF0,以重新产生校验码S0,之后再使用校验码S0以及自闪存芯片512、522、524的数据页P0所读取的内容来重新产生闪存芯片514的数据页P0的数据;闪存控制器110读取其他字符线组中的数据来重新产生校验码S9、S17、...、S185以及最终校验码SF1,以重新产生校验码S1,之后再使用校验码S1以及自闪存芯片512、522、524的数据页P1所读取的内容来重新产生闪存芯片514的数据页P1的数据;以及根据上述类似操作来重新产生闪存芯片514的数据页P2、P3的数据。如上所述,通过上述操作,只要超级区块530没有出现多个数据线断路的情形,均可以顺利地将数据更正还原,而不会发生数据无法修复的情形。
此外,若是字符线组WL_G0和WL_G1之间发生两条数据线短路,例如闪存芯片514的数据页P3、P4所对应到的字符线短路的情形,也可以通过上一个段落所提及的方法来将字符线组WL_G0和WL_G1内的数据更正还原,而不会发生数据无法修复的情形。
需注意的是,图6所绘示的P0~P191的每一者所代表的并非限定是三个数据页,而可能是2个或是4个数据页,例如在两级单元MLC架构中,P0~P191的每一者包括有2个数据页,而在四级单元QLC架构中,P0~P191的每一者包括有4个数据页。
另外,在图5中,超级区块530仅包含了每一个闪存芯片512、514、522、524中的一个三级单元区块,然而,在其他实施例中,例如一实施例中闪存模块120是被组态为两个区块平面(Block Plane)的情形之下,超级区块530可以包含了每一个闪存芯片512、514、522、524中的两个三级单元区块,闪存控制器110将数据写入到超级区块530的示意图可以参考图9,图10与图11则分别绘示了根据图9的第1~192组校验码S0~S191通过里德-所罗门编码及互斥或运算来产生8组最终校验码SF0~SF7的示意图;其对应的运作与图6至图8所示的实施例的操作类似,为避免篇幅过于冗长,不再赘述。
简要归纳本发明,在本发明的存取闪存模块的方法的实施例中,第二编译码器会循序对写入至多级单元的超级区块的多笔数据来进行编码,并将所产生的暂时性的校验码储存至一缓冲存储器中,所述缓冲存储器例如一动态随机存取内存内所配置出的一块储存空间(取代使用静态随机存取内存来节省电路成本),之后再读取所述缓冲存储器中所储存的暂时性的校验码来产生数据量很低的最终校验码,并将最终校验码储存至多级单元的超级区块中最后一组奇数组字符线组的最后一数据页以及最后一组偶数组字符线组的最后一数据页。通过上述存取方式,除了可以对数据写入错误、字符线断路以及字符线短路所造成的数据读取错误进行更正之外,也可以大幅降低闪存控制器中缓冲存储器的容量需求,且闪存模块中也不需要浪费太多个空间来储存校验码,故可以大幅降低闪存控制器的成本以及闪存模块的使用效率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (30)
1.一种存取闪存模块的方法,其特征在于,所述闪存模块是立体闪存模块,所述闪存模块包含了多个闪存芯片,每一个闪存芯片包含了多个区块,所述多个区块包含了多个多级单元区块,每一个区块包含了多个数据页;每一个区块包含了分别位于多个不同平面的多条字符线以及位线来控制的多个浮闸晶体管,且每一条字符线的浮闸晶体管构成了所述多个数据页中的至少一个数据页;以及所述方法包含:
使用第一编译码器来对数据进行编码以产生至少一组校验码以及使用第二编译码器来对所述至少一组校验码进行编码以产生至少一组最终校验码,其中所述数据是准备被写入到所述多个闪存芯片的超级区块中,其中所述超级区块包含了所述多个闪存芯片中每一个闪存芯片的一个多级单元区块;以及
将所述数据及所述至少一组最终校验码写入至所述超级区块;
其中所述立体闪存模块的每一个闪存芯片具有多个立体堆栈平面;设置于一个相同的立体堆栈平面上的所有字符线被归类于一个相同的字符线组;所有的字符线组被分类为奇数组的多个字符线组以及偶数组的多个字符线组;所述至少一组校验码被产生并相应于设置在与一个相同次序有关的多个特定字符线的资料,所述多个特定字符线被分别包含于不同的非相邻的多个字符线组内,且所述不同的非相邻的多个字符线组是所述奇数组的多个字符线组或是所述偶数组的多个字符线组。
2.如权利要求1所述的方法,其特征在于,当所述数据发生写入错误或写入失败的情形时,所述的方法另包含:直接使用暂存在所述缓冲存储器中的所述至少一组校验码来对所述数据进行更正。
3.如权利要求1所述的方法,其特征在于,在所述数据写入至所述超级区块的过程中:自所述超级区块读取所述数据的已经写入至所述超级区块的部分内容;以及当读取所述数据的部分内容的过程中发生无法更正的错误时,自所述缓冲存储器读取出至少一部份的校验码,且使用所述至少一部份的校验码来对所读取的数据进行错误更正。
4.如权利要求1所述的方法,其特征在于,依序对第1~N笔数据进行编码以产生第1~N组校验码,并将所述第1~N笔数据分别写入至所述超级区块的对应于所述多个闪存芯片的第1~N个数据页中,以及将所述第1~N组校验码写入至所述缓冲存储器。
5.如权利要求1所述的方法,其特征在于,所述至少一组校验码是暂时性的校验码,且自第二超级区块读取第1~N组校验码,并根据所述第1~N组校验码来产生多组最终校验码,之后再将所述多组最终校验码写入至所述超级区块中。
6.如权利要求5所述的方法,其特征在于,其中每一个区块中位于同一个平面上的多条字符线构成一个字符线组,且将所述多组最终校验码写入至所述超级区块的最后两个字符线组中对应于闪存芯片的数据页中。
7.如权利要求1所述的方法,其特征在于,所述多级单元区块是三级单元区块或四级单元区块。
8.一种闪存控制器,所述闪存控制器用来存取闪存模块,其特征在于,所述闪存模块是立体闪存模块,所述闪存模块包含了多个闪存芯片,每一个闪存芯片包含了多个区块,所述多个区块包含了多个多级单元区块,每一个区块包含了多个数据页;每一个区块包含了分别位于多个不同平面的多条字符线以及位线来控制的多个浮闸晶体管,且每一条字符线的浮闸晶体管构成了所述多个数据页中的至少一个数据页;以及所述闪存控制器包含:
一存储器,用来储存一程序代码;
一微处理器,用来执行所述程序代码以控制对所述闪存模块的存取;
一第一编译码器;以及
一第二编译码器;
所述微处理器使用所述第一编译码器对一数据进行编码以产生至少一组校验码,使用所述第二编译码器对所述至少一组校验码进行编码以产生至少一组最终校验码,写入所述数据及所述至少一组最终校验码至所述多个闪存芯片的一个超级区块中;
其中所述立体闪存模块的每一个闪存芯片具有多个立体堆栈平面;设置于一个相同的立体堆栈平面上的所有字符线被归类于一个相同的字符线组;所有的字符线组被分类为奇数组的多个字符线组以及偶数组的多个字符线组;所述至少一组校验码被产生并相应于设置在与一个相同次序有关的多个特定字符线的资料,所述多个特定字符线被分别包含于不同的非相邻的多个字符线组内,且所述不同的非相邻的多个字符线组是所述奇数组的多个字符线组或是所述偶数组的多个字符线组。
9.如权利要求8所述的闪存控制器,其特征在于,当所述数据发生写入错误或写入失败的情形时,所述第一编译码器直接使用暂存在所述缓冲存储器中的所述至少一组校验码来对所述数据进行更正。
10.如权利要求8所述的闪存控制器,其特征在于,在所述数据写入至所述超级区块的过程中:所述微处理器自所述超级区块读取所述数据的已经写入至所述超级区块的部分内容;以及当读取所述数据的部分内容的过程中发生无法更正的错误时,所述微处理器自所述缓冲存储器读取出至少一部份的校验码,且使用所述至少一部份的校验码来对所读取的数据进行错误更正。
11.如权利要求8所述的闪存控制器,其特征在于,所述第一编译码器依序对第1~N笔数据进行编码以产生第1~N组校验码,并将所述第1~N笔数据分别写入至所述超级区块的对应于所述多个闪存芯片的第1~N个数据页中,以及所述微处理器将所述第1~N组校验码写入至所述缓冲存储器。
12.如权利要求8所述的闪存控制器,其特征在于,所述至少一组校验码是暂时性的校验码,且所述微处理器自第二超级区块读取第1~N组校验码,并根据所述第1~N组校验码来产生多组最终校验码,之后再将所述多组最终校验码写入至所述超级区块中。
13.如权利要求12所述的闪存控制器,其特征在于,其中每一个区块中位于同一个平面上的多条字符线构成一个字符线组,且所述微处理器将所述多组最终校验码写入至所述超级区块的最后两个字符线组中对应于闪存芯片的数据页中。
14.如权利要求8所述的闪存控制器,其特征在于,所述多级单元区块是三级单元区块或四级单元区块。
15.一种记忆装置,其特征在于,包含:
一闪存模块,其中所述闪存模块是立体闪存模块,所述闪存模块包含了多个闪存芯片,每一个闪存芯片包含了多个区块,所述多个区块包含了多个多级单元区块,每一个区块包含了多个数据页;每一个区块包含了分别位于多个不同平面的多条字符线以及位线来控制的多个浮闸晶体管,且每一条字符线的浮闸晶体管构成了所述多个数据页中的至少一数据页;以及
一闪存控制器,用来存取所述闪存模块;
其中当接收到来自主机的写入指令以要求将一数据写入至所述闪存模块中时,所述闪存控制器使用第一编译码器对所述数据进行编码以产生至少一组校验码,使用第二编译码器对所述至少一组校验码进行编码以产生至少一组最终校验码,将所述数据及所述至少一组最终校验码写入到所述多个闪存芯片的一超级区块中,所述超级区块包含了所述多个闪存芯片中每一个闪存芯片的一个多级单元区块;所述立体闪存模块的每一个闪存芯片具有多个立体堆栈平面;设置于一个相同的立体堆栈平面上的所有字符线被归类于一个相同的字符线组;所有的字符线组被分类为奇数组的多个字符线组以及偶数组的多个字符线组;所述至少一组校验码被产生并相应于设置在与一个相同次序有关的多个特定字符线的资料,所述多个特定字符线被分别包含于不同的非相邻的多个字符线组内,且所述不同的非相邻的多个字符线组是所述奇数组的多个字符线组或是所述偶数组的多个字符线组。
16.一种存取闪存模块的方法,其特征在于,所述闪存模块是立体闪存模块,
所述闪存模块包含了多个闪存芯片,每一个闪存芯片包含了多个区块,每一个区块包含了多个数据页;每一个区块包含了分别位于多个不同平面的多条字符线以及位线来控制的多个浮闸晶体管,且每一条字符线的浮闸晶体管构成了所述多个数据页中的至少一数据页;以及所述方法包含有:
规划所述多个闪存芯片以使得所述多个闪存芯片具有至少一超级区块;以及
配置缓冲存储器空间以用来储存在数据写入至所述至少一超级区块的过程中所编码产生的多组暂时性的校验码,所述多组暂时性的校验码由第一编译码器所编码产生;
其中所述立体闪存模块的每一个闪存芯片具有多个立体堆栈平面;设置于一个相同的立体堆栈平面上的所有字符线被归类于一个相同的字符线组;所有的字符线组被分类为奇数组的多个字符线组以及偶数组的多个字符线组;一组校验码系根据所述多组暂时性的校验码并由第二编译码器所编码产生并相应于设置在与一个相同次序有关的多个特定字符线的资料,所述多个特定字符线被分别包含于不同的非相邻的多个字符线组内,且所述不同的非相邻的多个字符线组是所述奇数组的多个字符线组或是所述偶数组的多个字符线组。
17.如权利要求16所述的方法,其特征在于,所述缓冲存储器空间专用来储存任意数据写入至所述至少一超级区块的编码过程中所产生的暂时性的校验码。
18.如权利要求16所述的方法,其特征在于,所述至少一超级区块包含了所述多个闪存芯片中每一个闪存芯片的一个多级单元区块。
19.如权利要求18所述的方法,其特征在于,所述多级单元区块是三级单元区块或四级单元区块。
20.如权利要求16所述的方法,其特征在于,在所述数据写入至所述至少一超级区块的过程中:自所述至少一超级区块中读取所述数据的已经写入至所述至少一超级区块的部分内容;以及当读取所述数据的部分内容的过程中发生无法更正的错误时,自所述缓冲存储器空间读取至少一部份的暂时性的校验码,且使用所读取的暂时性的校验码来对所读取的数据进行错误更正。
21.如权利要求16所述的方法,其特征在于,自所述缓冲存储器空间中读取所述多组暂时性的校验码,对所述多组暂时性的校验码进行编码以产生所述一组最终校验码,以及将所述一组最终校验码写入至所述至少一超级区块中。
22.如权利要求21所述的方法,其特征在于,在所述一组最终校验码写入至所述至少一超级区块中之后:自所述至少一超级区块中读取所述数据的部分内容;以及当读取所述数据的部分内容的过程中发生无法更正的错误时,自所述至少一超级区块中读取所述一组最终校验码,且使用所读取的所述一组最终校验码来对所读取的数据进行错误更正。
23.一种闪存控制器,所述闪存控制器用来存取一闪存模块,其特征在于,所述闪存模块是立体闪存模块,所述闪存模块包含了多个闪存芯片,每一个闪存芯片包含了多个区块,每一个区块包含了多个数据页;每一个区块包含了分别位于多个不同平面的多条字符线以及位线来控制的多个浮闸晶体管,且每一条字符线的浮闸晶体管构成了所述多个数据页中的至少一数据页;以及所述闪存控制器包含有:
一存储器,用来储存一程序代码;
一微处理器,用来执行所述程序代码以控制对所述闪存模块的存取;
一第一编译码器;以及
一第二编译码器;
其中所述微处理器规划所述多个闪存芯片以使得所述多个闪存芯片具有至少一超级区块,以及配置缓冲存储器空间以用来储存在数据写入至所述至少一超级区块的过程中所编码产生的多组暂时性的校验码,所述多组暂时性的校验码由所述第一编译码器所编码产生;所述立体闪存模块的每一个闪存芯片具有多个立体堆栈平面;设置于一个相同的立体堆栈平面上的所有字符线被归类于一个相同的字符线组;所有的字符线组被分类为奇数组的多个字符线组以及偶数组的多个字符线组;一组校验码系根据所述多组暂时性的校验码并由所述第二编译码器所编码产生并相应于设置在与一个相同次序有关的多个特定字符线的资料,所述多个特定字符线被分别包含于不同的非相邻的多个字符线组内,且所述不同的非相邻的多个字符线组是所述奇数组的多个字符线组或是所述偶数组的多个字符线组。
24.如权利要求23所述的闪存控制器,其特征在于,所述缓冲存储器空间专用来储存任意数据写入至所述至少一超级区块的编码过程中所产生的暂时性的校验码。
25.如权利要求23所述的闪存控制器,其特征在于,所述至少一超级区块包含了所述多个闪存芯片中每一个闪存芯片的一个多级单元区块。
26.如权利要求25所述闪存控制器,其特征在于,所述多级单元区块是三级单元区块或四级单元区块。
27.如权利要求23所述的闪存控制器,其特征在于,在所述数据写入至所述至少一超级区块的过程中:所述微处理器自所述至少一超级区块中读取所述数据的已经写入至所述至少一超级区块的部分内容;以及当读取所述数据的部分内容的过程中发生无法更正的错误时,自所述缓冲存储器空间读取至少一部份的暂时性的校验码,且所述编第一译码器使用所读取的暂时性的校验码来对所读取的数据进行错误更正。
28.如权利要求23所述的闪存控制器,其特征在于,所述微处理器自所述缓冲存储器空间中读取所述多组暂时性的校验码,对所述多组暂时性的校验码进行编码以产生所述一组最终校验码,以及所述微处理器将所述一组最终校验码写入至所述至少一超级区块中。
29.如权利要求28所述的闪存控制器,其特征在于,在所述一组最终校验码写入至所述至少一超级区块中之后:所述微处理器自所述至少一超级区块中读取所述数据的部分内容;以及当读取所述数据的部分内容的过程中发生无法更正的错误时,所述微处理器自所述至少一超级区块中读取所述一组最终校验码,且所述编译码器使用所读取的所述一组最终校验码来对所读取的数据进行错误更正。
30.一种记忆装置,其特征在于,包含:
一闪存模块,其中所述闪存模块是立体闪存模块,所述闪存模块包含了多个闪存芯片,每一个闪存芯片包含了多个区块,每一个区块包含了多个数据页;每一个区块包含了分别位于多个不同平面的多条字符线以及位线来控制的多个浮闸晶体管,且每一条字符线的浮闸晶体管构成了所述多个数据页中的至少一数据页;以及
一闪存控制器,用来存取所述闪存模块;
其中所述闪存控制器规划所述多个闪存芯片以使得所述多个闪存芯片具有至少一超级区块,以及指派缓冲存储器空间以用来储存在数据写入至所述至少一超级区块的过程中所编码产生的多组暂时性的校验码,所述多组暂时性的校验码由第一编译码器所编码产生;所述立体闪存模块的每一个闪存芯片具有多个立体堆栈平面;设置于一个相同的立体堆栈平面上的所有字符线被归类于一个相同的字符线组;所有的字符线组被分类为奇数组的多个字符线组以及偶数组的多个字符线组;一组校验码系根据所述多组暂时性的校验码并由第二编译码器所编码产生并相应于设置在与一个相同次序有关的多个特定字符线的资料,所述多个特定字符线被分别包含于不同的非相邻的多个字符线组内,且所述不同的非相邻的多个字符线组是所述奇数组的多个字符线组或是所述偶数组的多个字符线组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011105336.6A CN112463433B (zh) | 2016-04-27 | 2017-04-26 | 存取闪存模块的方法及相关的闪存控制器与记忆装置 |
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662328025P | 2016-04-27 | 2016-04-27 | |
US201662328027P | 2016-04-27 | 2016-04-27 | |
US62/328,027 | 2016-04-27 | ||
US62/328,025 | 2016-04-27 | ||
TW106100010 | 2017-01-03 | ||
TW106100010A TWI614759B (zh) | 2016-04-27 | 2017-01-03 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
CN202011105336.6A CN112463433B (zh) | 2016-04-27 | 2017-04-26 | 存取闪存模块的方法及相关的闪存控制器与记忆装置 |
CN201710284344.3A CN107391296B (zh) | 2016-04-27 | 2017-04-26 | 存取闪存模块的方法及相关的闪存控制器与记忆装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710284344.3A Division CN107391296B (zh) | 2016-04-27 | 2017-04-26 | 存取闪存模块的方法及相关的闪存控制器与记忆装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112463433A true CN112463433A (zh) | 2021-03-09 |
CN112463433B CN112463433B (zh) | 2024-03-29 |
Family
ID=90416879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011105336.6A Active CN112463433B (zh) | 2016-04-27 | 2017-04-26 | 存取闪存模块的方法及相关的闪存控制器与记忆装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463433B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988236A (zh) * | 2021-04-20 | 2021-06-18 | 浙江大华存储科技有限公司 | 数据存储方法及装置、存储介质、电子装置 |
CN114110964A (zh) * | 2021-11-26 | 2022-03-01 | 珠海格力电器股份有限公司 | 基于flash闪存的切换控制方法、装置及空调 |
CN115329399A (zh) * | 2022-10-13 | 2022-11-11 | 江苏华存电子科技有限公司 | 基于nand的垂直水平raid4数据保护管理方法及系统 |
TWI821965B (zh) * | 2021-09-29 | 2023-11-11 | 慧榮科技股份有限公司 | 編碼歷程資訊的存取方法及電腦程式產品及裝置 |
US11966607B2 (en) | 2021-09-29 | 2024-04-23 | Silicon Motion, Inc. | Method and non-transitory computer-readable storage medium and apparatus for accessing to encoding-history information |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102150216A (zh) * | 2008-09-11 | 2011-08-10 | 桑迪士克公司 | 具有降低的数据存储要求的存储器的多遍编程 |
US20130297984A1 (en) * | 2008-02-29 | 2013-11-07 | Kabushiki Kaisha Toshiba | Semiconductor storage device, method of controlling the same, and error correction system |
US20140026018A1 (en) * | 2012-07-17 | 2014-01-23 | Silicon Motion Inc. | Method for reading data from block of flash memory and associated memory device |
US20140258769A1 (en) * | 2013-03-06 | 2014-09-11 | Lsi Corporation | Partial r-block recycling |
-
2017
- 2017-04-26 CN CN202011105336.6A patent/CN112463433B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130297984A1 (en) * | 2008-02-29 | 2013-11-07 | Kabushiki Kaisha Toshiba | Semiconductor storage device, method of controlling the same, and error correction system |
CN102150216A (zh) * | 2008-09-11 | 2011-08-10 | 桑迪士克公司 | 具有降低的数据存储要求的存储器的多遍编程 |
US20140026018A1 (en) * | 2012-07-17 | 2014-01-23 | Silicon Motion Inc. | Method for reading data from block of flash memory and associated memory device |
CN103544073A (zh) * | 2012-07-17 | 2014-01-29 | 慧荣科技股份有限公司 | 读取闪存中区块的数据的方法及相关的记忆装置 |
US20140258769A1 (en) * | 2013-03-06 | 2014-09-11 | Lsi Corporation | Partial r-block recycling |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988236A (zh) * | 2021-04-20 | 2021-06-18 | 浙江大华存储科技有限公司 | 数据存储方法及装置、存储介质、电子装置 |
TWI821965B (zh) * | 2021-09-29 | 2023-11-11 | 慧榮科技股份有限公司 | 編碼歷程資訊的存取方法及電腦程式產品及裝置 |
US11966607B2 (en) | 2021-09-29 | 2024-04-23 | Silicon Motion, Inc. | Method and non-transitory computer-readable storage medium and apparatus for accessing to encoding-history information |
CN114110964A (zh) * | 2021-11-26 | 2022-03-01 | 珠海格力电器股份有限公司 | 基于flash闪存的切换控制方法、装置及空调 |
CN115329399A (zh) * | 2022-10-13 | 2022-11-11 | 江苏华存电子科技有限公司 | 基于nand的垂直水平raid4数据保护管理方法及系统 |
CN115329399B (zh) * | 2022-10-13 | 2023-01-31 | 江苏华存电子科技有限公司 | 基于nand的垂直水平raid4数据保护管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112463433B (zh) | 2024-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391296B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN107403640B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN110147295B (zh) | 存取闪存模块的方法、闪存控制器以及记忆装置 | |
CN107423158B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
TWI650764B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 | |
CN112463433B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN111951855B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN112214348B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
TWI575530B (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 |