CN111679787B - 闪存装置、闪存控制器及闪存存储管理方法 - Google Patents
闪存装置、闪存控制器及闪存存储管理方法 Download PDFInfo
- Publication number
- CN111679787B CN111679787B CN202010373248.8A CN202010373248A CN111679787B CN 111679787 B CN111679787 B CN 111679787B CN 202010373248 A CN202010373248 A CN 202010373248A CN 111679787 B CN111679787 B CN 111679787B
- Authority
- CN
- China
- Prior art keywords
- data
- flash memory
- groups
- data block
- data blocks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/098—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit using single parity bit
-
- 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
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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
- 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- 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/0658—Controller construction 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
- 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/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3761—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/611—Specific encoding aspects, e.g. encoding by means of decoding
-
- 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/26—Sensing or reading circuits; Data output 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种闪存装置和闪存存储管理方法,所述闪存存储管理方法包括:提供闪存模块,所述闪存模块包括多个单层单元数据区块以及多层单元数据区块;将欲写入的数据分类为多个数据群;分别执行单层单元数据写入以及执行类似独立磁盘冗余阵列错误更正编码操作产生对应校验码,以将所述多个数据群以及所述对应的校验码写入至所述多个单层单元数据区块;当完成所述多个单层单元数据区块的写入时,执行内部复制,将所述多个单层单元数据区块所存储的所述多个数据群以及所述对应校验码,依所述多个单层单元数据区块存储顺序,依序写入所述多层单元数据区块。只需使用极低数据空间作为存储相对应错误更正校验码之用,闪存数据空间使用效率更高。
Description
原申请案的申请日是2017.04.24,申请号是201710271879.7,发明创造名称是”闪存装置及闪存存储管理方法”。
技术领域
本发明涉及一种闪存装置及闪存存储管理方法,尤其涉及一种执行类似独立磁盘冗余阵列的错误更正编码操作的闪存装置与存储管理方法。
背景技术
一般来说,对于闪存控制器执行数据写入以写入一笔数据至单层单元数据区块或是多层单元数据区块,传统的机制采用例如在一数据区块的一字符线的最后一页放置所述字符线的其他数据页所对应的校验码,使得当发生写入失败、字符线断路及字符线短路时可利用所述对应的校验码来进行一定程度的错误更正,然而,这样的数据存储率过低,例如一字符线如果包括8个数据页,则仅有7个数据页用来存数据,另一个数据页是用来存储校验码,这样一来,一个数据区块中将会有1/8的比例是用来存储校验码,而非用来存储数据,就用户的角度来说,无法被接受。
发明内容
因此,本发明的目的之一在于公开一种闪存装置及对应的闪存存储管理方法,采用一种类似独立磁盘冗余阵列的错误更正编码操作,降低错误发生率,降低传统机制所需要使用的校验码数目,同时适当地将所需要的校验码存储于对应的数据页位置,令发生写入失败、字符线断路及字符线短路时仍可利用所需的校验码来进行一定程度的错误更正,解决了上述的问题。
根据本发明的实施例,公开了一种闪存装置。闪存装置包含有一闪存模块与闪存控制器,闪存模块包括多个单层单元数据区块以及至少一多层单元数据区块,闪存控制器具有多条信道分别连接至闪存模块,闪存控制器将一笔欲写入的数据分类为多群的数据,闪存控制器分别执行单层单元数据写入以及执行一类似独立磁盘冗余阵列的错误更正编码操作产生一对应的校验码,以将多群的数据以及对应的校验码写入至多个单层单元数据区块;当完成多个单层单元数据区块的写入时,闪存模块执行内部复制,将多个单层单元数据区块所存储的多群的数据以及对应的校验码,依数据的先后顺序,依序搬移写入至至少一多层单元数据区块。
根据本发明的实施例,另公开了一种闪存存储管理方法。所述方法包含有:提供一闪存模块,所述闪存模块包括多个单层单元数据区块以及至少一多层单元数据区块;将一笔欲写入的数据分类为多群的数据;分别执行单层单元数据写入以及执行一类似独立磁盘冗余阵列的错误更正编码操作产生一对应的校验码,以将多群的数据以及所述对应的校验码写入至所述多个单层单元数据区块;当完成所述多个单层单元数据区块的写入时,执行一内部复制,将所述多个单层单元数据区块所存储的所述多群的数据以及所述对应的校验码,依数据的先后顺序,依序搬移写入至所述至少一多层单元数据区块。
附图说明
图1为本发明实施例的闪存装置的装置示意图。
图2为本发明第一实施例图1所示的闪存控制器执行SLC数据写入将某一群的数据写入至闪存模块内的一单层单元数据区块以执行一次单层单元数据区块写入操作的示意图。
图3为闪存模块内的一单层单元数据区块通过内部复制将数据写入至三层单元数据区块的示意图。
图4为本发明第一实施例图1所示的闪存控制器写入三个群的数据至闪存模块内的多个单层单元数据区块并通过内部复制将数据搬移写入至三层单元数据区块而形成一个超级区块的示意图。
图5为本发明第二实施例图1所示的闪存控制器执行SLC数据写入以写入一个群的数据至闪存模块内的单层单元数据区块以完成一次单层单元数据区块写入操作的示意图。
图6为本发明第二实施例图1所示的闪存控制器写入三个群的数据至闪存模块内的多个单层单元数据区块并通过内部复制将所述多个单层单元数据区块的数据搬移写入至三层单元数据区块而形成一个超级区块的示意图。
其中,附图标记说明如下:
100:闪存装置
105:闪存模块
110:闪存控制器
205,210,401A,401B,402A,402B,403A,403B,605A,605B,605C:校验码存储位置
404,405,406,610,615,620:三层单元数据区块的数据页
1051A,1051B,1051C:单层单元数据区块
1052:三层单元数据区块
1101:错误更正码编码电路
1102:校验码缓冲器
1102A,1102B:缓冲区
具体实施方式
请参照图1,图1为本发明实施例的闪存装置100的装置示意图。闪存装置100包含闪存模块105及闪存控制器110,闪存模块105为一个具有二维平面架构的闪存模块;然此并非本申请的限制。闪存模块105包含多个闪存芯片(并未绘示于图1),每一闪存芯片包括多个单层单元数据区块(single-level cell(SLC)block,简称为SLC数据区块)及多个多层单元数据区块(multiple-level-cell block),单层单元数据区块的每一单元可存储2位(bit)的数据,多层单元数据区块的每一单元可存储2N位的数据,N大于或等于2并为整数,多层单元数据区块例如包括有两层单元数据区块(multi-level cell(MLC)block,简称为MLC数据区块)的单元可存储22位的数据、三层单元数据区块(triple-level cell(TLC)block,简称为TLC数据区块)的单元可存储23元的数据、四层单元数据区块(quad-levelcell(QLC)block,简称为QLC数据区块)的单元可存储24位的数据,依此类推。
闪存控制器110可通过多条信道连接至闪存模块105,使可利用不同条信道同时写入数据至不同的闪存芯片,增加写入效率,闪存控制器110包括一错误更正码编码电路1101及一校验码(parity check code)缓冲器1102,错误更正码编码电路1101用以对数据进行一错误更正码编码操作,例如本申请的实施例中包括里德-所罗门码(Reed-Solomoncodes)的编码操作及/或异或(exclusive-OR,XOR)运算的编码操作,以产生相对应的校验码,校验码缓冲器1102用以暂存所产生的相对应的校验码,而闪存控制器110利用一个类似独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID)的数据管理机制,将一笔数据写入不同的闪存芯片,降低出错率,并在写入数据至单层单元数据区块时同时考虑不同编码操作的校验码在单层单元数据区块的储位位置以及在TLC数据区块的存储位置,令在写入数据至单层单元数据区块时可更正数据出错以及后续闪存模块105通过内部复制(internal copy)操作由单层单元区块将数据复制搬移至TLC数据区块时也可以更正数据出错。
实作上,为求数据写入的效率及降低出错率,闪存模块105包括多个信道(本申请的实施例为2个信道,但非限定),当一个信道执行某一个数据页(page)的写入时,可采用另一个信道来执行另一个数据页的写入,而不需要等候所述信道,每一个信道在闪存控制器110中有各自的串行传输器(sequencer)且均包含了多个闪存芯片(本申请的实施例为2个芯片,但非限定),使得一个信道可同时对多个闪存芯片执行不同数据页的写入,而不需要等候其中一个芯片,此外,每一个闪存芯片可具有折迭设计(folded)而具有不同的两个平面(plane),令一个闪存芯片在数据写入时可同时利用不同两平面上的两个数据区块来执行不同数据页的写入,而不需要等候其中某一个数据区块。因此,闪存模块105的一个超级数据区块(super block)是由多个信道的多个闪存芯片的多个数据页所组成。上述的闪存控制器110是将数据以超级数据区块为单位来进行写入,先将数据写入至闪存模块105内的单层单元数据区块,由单层单元数据区块缓冲,后续再从所述多个单层单元数据区块将数据复制搬移至TLC数据区块内。另外,应注意的是,其他实施例中,每一个闪存芯片可不具有折迭设计,也就是说,一个闪存芯片在数据写入时利用一个数据区块来执行一个数据页的写入,其他数据页的写入需要等候时间。
就数据写入的流程来说,一笔数据会先被闪存控制器110写入至多个单层单元数据区块1051A~1051C,之后再从所述多个单层单元数据区块1051A~1051C搬移至多层单元数据区块1052,例如,在本实施例,以TLC单元为架构的多层数据区块为例,TLC单元可存储23位的信息,也就是说,三个单层单元数据区块(以下简称为SLC数据区块)1051A~1051C的数据会被写入至一个TLC数据区块1052,据此,考虑到需要共同对SLC数据区块1051A~1051C的写入以及TLC数据区块1052的写入进行错误更正的保护,闪存控制器110将一笔数据分类为三个群(group)的数据,应注意的是,如果以MLC单元为架构的多层数据区块为例,由于MLC单元可存储22位的信息,所以闪存控制器110会将所述数据分类为两个群的数据,而如果以QLC单元为架构的多层数据区块为例,由于QLC单元可存储24位的信息,所以闪存控制器110会将所述数据分类为四个群的数据;依此类推。也就是说,当上述多层单元数据区块1052的单元可存储具有2N位的信息,N大于等于2并为整数,单层单元数据区块的数目会设计为N个SLC数据区块,闪存控制器110将所述欲写入的数据分类为N个群的数据,以分别写入至N个SLC数据区块。
在本实施例中,当闪存控制器110将所述数据分类为三个群的数据后,会接着执行第一次的数据写入(SLC program)将第一群的数据写入上述第一个SLC数据区块1051A以及利用错误更正码编码电路1101产生对应的校验码并写入至第一个SLC数据区块1051A中,如此便完成一次SLC数据区块的写入操作,之后闪存控制器110接着执行第二次的数据写入(SLC program)将第二群的数据写入上述第二个SLC数据区块1051B以及利用错误更正码编码电路1101产生对应的校验码并写入至第二个SLC数据区块1051B中,如此便完成第二次的SLC数据区块的写入操作,以及闪存控制器110接着执行第三次的数据写入(SLC program)将第三群的数据写入上述第三个SLC数据区块1051C以及利用错误更正码编码电路1101产生对应的校验码并写入至第三个SLC数据区块1051C中,如此便完成第三次的SLC数据区块的写入操作。
当闪存控制器110执行某一次的数据写入(SLC program)将某一群的数据写入某一个SLC数据区块时,或在所述数据写入之后,闪存控制器110会检测是否出错,如果数据有错,例如发生某一SLC数据区块写入的写入失败(program fail)、一字符线断路(one wordline open)及/或两字符线短路(two word line short)的情况,闪存控制器110会利用错误更正码编码电路1101在所述数据写入时所产生的对应校验码来更正上述的错误。
当前述三个群的数据均写入至三个SLC数据区块时1051A~1051C或者某一个SLC数据区块的数据写入已完成时,闪存模块105执行内部复制,从所述多个SLC数据区块1051A~1051C或某一个SLC数据区块中将三个群的数据或某一群的数据复制搬移并依三个群的数据顺序执行数据写入(TLC program)至一个TLC数据区块1052(也就是说前述的超级数据区块),TLC数据区块1052由不同信道的不同闪存芯片的字符线的数据页所组成,例如,TLC数据区块1052的一个字符线的一个数据页包括有上数据页(upper page)、中间数据页(middle page)以及下数据页(lower page),闪存模块105的内部复制依顺序例如将一个SLC数据区块的第N条字符在线的多个数据页写入至TLC数据区块1052的一个字符线的多个上数据页,将所述SLC数据区块的第N+1条字符在线的多个数据页写入至TLC数据区块1052的同一个字符线的多个中间数据页,以及将所述SLC数据区块的第N+2条字符在线的多个数据页写入至TLC数据区块1052的同一个字符线的多个下数据页。待所有三个群的数据均写入至TLC数据区块1052,如此便完成了所述超级数据区块的写入操作。
应注意的是,为了令内部复制易于实现、符合TLC数据区块1052的随机数种子数(randomizer seed)规则要求、以及同时考虑错误更正编码能力以降低出错率,所述内部复制操作只是依数据的顺序将数据搬移至TLC数据区块1052的多条字符线的上、中、下数据页的位置,而由闪存控制器110在写入不同群的数据以及对应产生的校验码至所述多个SLC数据区块1051A~1051C时,同时依据TLC数据区块的随机数种子数规则要求以及考虑错误更正编码的校验码的写入存储位置,令错误更正码编码电路1101的错误更正编码能力可以在执行一次SLC数据区块的写入操作时更正SLC数据区块的写入失败、一字符线断路及/或两字符线短路所造成的错误,以及可以在执行所述超级数据区块的写入操作时更正TLC数据区块1052的写入失败、一字符线断路及/或两字符线短路所造成的错误。
此外,如果闪存模块105进行内存垃圾回收(garbage collection),闪存控制器110通过外部读取,从所述多个SLC数据区块1051A~1051C中读取出数据并重新进行错误更正的编码来执行数据写入(SLC program),及/或从TLC数据区块1052中读取出数据并重新进行错误更正的编码来执行数据写入(SLC program)。此外,如果写入数据(SLC program)至一个SLC数据区块且突然发生关机时,闪存控制器110从所述SLC数据区块读回数据并重新进行错误更正的编码、写入数据(SLC program)至另一个新的SLC数据区块。此外,如果写入数据(TLC program)至TLC数据区块1052且突然发生关机时,闪存模块105放弃所述TLC数据区块1052中目前所存储的数据,并从所述多个SLC数据区块1051A~1051C,通过内部复制重新将对应的数据执行TLC数据写入(TLC program)至所述TLC数据区块1052。
请参照图2,图2为本发明第一实施例图1所示的闪存控制器110执行SLC数据写入(SLC program)将某一群的数据写入至闪存模块105内的一个SLC数据区块以执行一次SLC数据区块写入操作的示意图。闪存控制器110的错误更正码编码电路1101对数据执行一个类似独立磁盘冗余阵列的里德-所罗门(Reed Solomon,RS)编码操作,产生相对应的校验码,而校验码缓冲器1102用以暂存所产生的相对应的校验码。
闪存模块105内包括有两个信道,并包括两个闪存芯片及每一个芯片的两组区块有两不同平面,为求写入效率,闪存控制器110通过两个信道写入数据至闪存模块105内的两个闪存芯片的两个区块。如图2的实施方式所示,一个SLC数据区块包括有例如128条字符线(分别由WL0至WL127表示),所述SLC数据区块可以是由一个SLC数据区块或是一组SLC子数据区块所组成,视SLC数据区块的定义而变,为方便描述,在实施例是将包括128条字符线视为一个SLC数据区块的大小,其中每一条字符线包括有例如8个数据页,以所述SLC数据区块的第一条字符线WL0为例,闪存控制器110通过信道CH0及折迭平面PLN0、PLN1将数据页P1、P2写入至闪存芯片CE0,接着通过同一个信道CH0及折迭平面PLN0、PLN1将数据页P3、P4写入至另一个闪存芯片CE1,接着由另一个信道CH1及折迭平面PLN0、PLN1将数据页P5、P6写入至闪存芯片CE0,接着通过信道CH1及折迭平面PLN0、PLN1将数据页P7、P8写入至闪存芯片CE1。其他则依此类推。
闪存控制器110将一个SLC数据区块的多个字符线WL0至WL127依顺序将每M条字符线编类为一组,M为大于或等于2的正整数,M例如为3,例如字符线WL0~WL2为第一组,字符线WL3~WL5为第二组,字符线WL6~WL8为第三组,字符线WL9~WL11为第四组…,字符线WL120~WL122为倒数第三组,字符线WL123~WL125为倒数第二组,最后一组字符线为WL126、WL127,其中第一、第三、第五组…等等的字符线为奇数组字符线,而第二、第四、第六组…等等的字符线为偶数组字符线,闪存控制器110每次写入一组字符线的数据(包括三条字符线的数据),利用错误更正码编码电路1101对于所述多组字符线的数据执行错误更正编码,并将所产生的对应的部分的校验码(partial parity code)输出至校验码缓冲器1102,以暂存部分的校验码。
校验码缓冲器1102在暂存部分的校验码时将奇数组字符线数据所对应的部分的校验码存储在第一缓冲区1102A,将偶数组字符线数据所对应的部分的校验码存储在第二缓冲区1102B,举例来说,当写入字符线WL0~WL2的数据页P1~P24时,错误更正码编码电路1101对于数据页P1~P24执行错误更正编码,并将所产生的对应的部分的校验码输出至校验码缓冲器1102,暂存在第一缓冲区1102A;接着当写入字符线WL3~WL5的数据页P1~P24,错误更正码编码电路1101对于数据页P1~P24执行错误更正编码,并将所产生的对应的部分的校验码输出至校验码缓冲器1102,暂存在第二缓冲区1102B;接着当写入字符线WL6~WL8的数据页P25~P48,错误更正码编码电路1101对于数据页P25~P48执行错误更正编码,并将所产生的对应的部分的校验码输出至校验码缓冲器1102,暂存在第一缓冲区1102A;后续的数据页写入与编码操作依此类推…;之后,当写入字符线WL120~WL122的数据页,错误更正码编码电路1101对于字符线WL120~WL122的数据页执行编码,并将所产生的对应的部分的校验码输出至校验码缓冲器1102,暂存在第一缓冲区1102A。
接着,闪存控制器110在写入偶数组字符线的最后一组字符线(WL123~WL125)时,除了执行数据写入(SLC program)与对应的错误更正编码外,也将第二缓冲区1102B所暂存的所有偶数组字符线的数据的部分校验码读回,并将偶数组字符线的数据所对应的所有校验码写入至最后一组偶数组字符线的最后一条字符线WL125的数据页,例如最后3个数据页(标记为205),以存储偶数组字符线的数据所对应的里德-所罗门校验码。
另外,对于写入最后一组奇数组字符线的最后一条字符线WL127时,闪存控制器110除了执行数据写入(SLC program)与对应的错误更正编码外,会将第一缓冲区1102A所暂存的所有奇数组字符线的数据的部分校验码读回,并将奇数组字符线的数据所对应的所有校验码写入至最后一组奇数组字符线的最后一条字符线WL127的数据页,例如最后3个数据页(标记为210),以存储奇数组字符线的数据所对应的里德-所罗门校验码。如此便完成一次SLC数据区块的写入。因此,就里德-所罗门编码操作来说,奇数组字符线的数据所对应的校验码是存储于最后一组奇数组字符线的最后一条字符线WL127的最后多个数据页的位置,而偶数组字符线的数据所对应的校验码是存储在最后一组偶数组字符线的最后一条字符线WL125的最后多个数据页的位置。
此外,错误更正码编码电路1101在图2所示的实施例所执行的是里德-所罗门编码操作,可更正发生在SLC数据区块的任意三个位置的数据页的出错,举例来说,错误更正码编码电路1101对于字符线WL0~WL2的三条字符线的数据执行错误更正编码并产生相对应的部分校验码,如果同一个信道的相同芯片的同一个折迭平面的三个数据页出错,例如数据页P1、P9、P17出错,错误更正码编码电路1101可利用所产生的相对应的部分校验码,将所述三个数据页的错误更正。
如果在执行所述次SLC数据区块的写入时检测到发生写入失败(program fail)的情况,例如以发生机率来说,例如检测到数据页P9写入失败,错误更正码编码电路1101可利用所产生的相对应的部分校验码,将数据页P9的错误更正。
如果在执行所述次SLC数据区块的写入时检测到发生一字符线断路(one wordline open)而造成例如数据页P9错误,错误更正码编码电路1101可利用所产生的相对应的部分校验码,将数据页P9的错误更正。
如果在执行所述次SLC数据区块的写入时检测到发生两字符线短路(two wordline short)而造成例如数据页P9、P17均错误,错误更正码编码电路1101可利用所产生的相对应的部分校验码,将数据页P9、P17的错误更正。如果发生两字符线短路而造成例如字符线WL2的数据页P17与字符线WL3的数据页P1出错,错误更正码编码电路1101可利用一组字符线WL0~WL2的部分校验码以及另一组字符线WL3~WL5的部分校验码,分别将字符线WL2的数据页P17与字符线WL3的数据页P1的错误更正。如果发生两字符线短路而造成例如字符线WL0的数据页P1、P2错误,错误更正码编码电路1101可利用一组字符线WL0~WL2的部分校验码,分别将字符线WL0的数据页P1、P2的错误更正。
因此,无论是在执行SLC数据区块写入时发生写入失败、一字符线断路或两字符线短路所造成的数据页错误,错误更正码编码电路1101均可对应地更正所述多个错误的数据页。
请参照图3,图3为闪存模块105内的一个SLC数据区块通过内部复制将数据写入至TLC数据区块1052的示意图。如图3所示,一个SLC数据区块的一组三条字符线数据被写入至TLC数据区块1052的一个字符线,对应地形成所述字符线的一个数据页的最低有效位LSB、中间有效位CSB及最高有效位MSB的数据,例如SLC数据区块的字符线数据WL0~WL2写入至TLC数据区块1052,作为所述TLC数据区块1052的字符线WL0的最低有效位LSB、中间有效位CSB及最高有效位MSB的数据;SLC数据区块的字符线数据WL3~WL5写入至TLC数据区块1052,作为所述TLC数据区块1052的字符线WL1的最低有效位LSB、中间有效位CSB及最高有效位MSB的数据;SLC数据区块的字符线数据WL6~WL8写入至TLC数据区块1052,作为所述TLC数据区块1052的字符线WL2的最低有效位LSB、中间有效位CSB及最高有效位MSB的数据;也就是说,闪存模块105的内部复制将SLC数据区块的数据依字符线的顺序搬移并写入填入至TLC数据区块的字符线内。
请参照图4,图4为本发明第一实施例图1所示的闪存控制器110写入三个群组的数据至闪存模块105内的多个SLC数据区块1051A~1051C并通过内部复制将数据搬移写入至TLC数据区块而形成一个超级数据区块的示意图。由于错误更正码编码电路1101在每次执行SLC数据区块的写入时,均把数据分类为奇数组字符线及偶数组字符线两组,并将对应产生的校验码存储在奇数组字符线的最后一字符线的最后3个数据页及偶数组字符线的最后一字符线的最后3个数据页,因此,当执行TLC数据区块的写入时,如图4所示,第一个群组的数据的奇数组字符线的对应的校验码存储在超级区块的字符线WL42的中间有效位CSB的最后三个数据页(标记为401A),而第一个群组的数据的偶数组字符线的对应的校验码存储在超级区块的字符线WL41的最高有效位MSB的最后三个数据页(标记为401B);第二个群组的数据的奇数组字符线的对应的校验码存储在超级区块的字符线WL85的最低有效位LSB的最后三个数据页(标记为402A),而第二个群组的数据的偶数组字符线的对应的校验码存储在超级区块的字符线WL84的最高有效位MSB的最后三个数据页(标记为402B);第三个群组的数据的奇数组字符线的对应的校验码存储在超级区块的字符线WL127的最高有效位MSB的最后三个数据页(标记为403A),而第三个群组的数据的偶数组字符线的对应的校验码存储在超级区块的字符线WL127的最低有效位LSB的最后三个数据页(标记为403B)。
如果检测到两字符线短路而造成例如所述超级区块的字符线WL0、WL1的两个数据页(如框线404所标示)发生错误,闪存模块105可利用字符线WL42的中间有效位CSB的最后三个数据页上存储的校验码401A来更正字符线WL0的数据页的错误,以及利用字符线WL41的最高有效位MSB的最后三个数据页上存储的校验码401B来更正字符线WL1的数据页的错误。
相同地,如果检测到两字符线短路而造成例如所述超级区块的字符线WL43、WL44的两个数据页(如框线405所标示)发生错误,闪存模块105可利用字符线WL85的最后三个数据页的最低有效位LSB上存储的校验码402A来更正405所标示的字符线WL43的一个数据页的最低有效位LSB、中间有效位CSB的错误以及字符线WL44的一个数据页的最高有效位MSB的错误,以及利用字符线WL84的最后三个数据页的中间有效位CSB上存储的校验码402B,来更正405所标示的字符线WL43的一个数据页的最高有效位MSB的错误以及字符线WL44的一个数据页的最低有效位LSB、中间有效位CSB的错误。
相同地,如果是检测到两字符线短路而造成例如所述TLC数据区块的字符线WL125、WL126的两个数据页(如框线406所标示)发生错误,闪存模块105可利用字符线WL127的最后三个数据页的最高有效位MSB上存储的校验码403A来更正406所标示的字符线WL125的一个数据页的中间有效位CSB、最高有效位MSB的错误以及字符线WL126的一个数据页的最高有效位MSB的错误,以及利用字符线WL127的最后三个数据页的最低有效位LSB上存储的校验码403B,来更正406所标示的字符线WL125的一个数据页的最低有效位LSB的错误以及406所标示的字符线WL126的一个数据页的中间有效位CSB、最高有效位MSB的错误。
如果是检测到一字符线断路或写入失败而造成超级区块的任一字符线的任一个数据页发生错误(也就是说连续任意三个子数据页出错),则闪存模块105均可利用对应存储的校验码来更正连续任意三个子数据页的错误。
也就是说,通过闪存控制器110写入三个群组的数据至闪存模块105内的多个SLC数据区块1051A~1051C的校验码的存储位置管理设计,当闪存模块105通过内部复制将所述多个数据从多个SLC数据区块1051A~1051C复制写入至TLC数据区块而形成一个超级数据区块时,如果检测到一字符线断路、两字符线短路或写入失败的错误,均可由多个SLC数据区块1051A~1051C所存储的校验码来进行更正。
再者,请参照图5,图5为本发明第二实施例图1所示的闪存控制器110执行数据写入(SLC program)以写入一个群的数据至闪存模块105内的SLC数据区块以完成一次SLC数据区块写入操作的示意图。闪存控制器110的错误更正码编码电路1101对数据执行一个类似独立磁盘冗余阵列的异或运算的编码操作,产生相对应的校验码,而校验码缓冲器1102用以暂存所产生的相对应的校验码。此外,错误更正码编码电路1101的异或运算包括有三个不同的编码引擎以对SLC数据区块的不同字符线数据进行异或运算;详细操作内容如下所述。
闪存模块105内包括有两个信道,并包括两个闪存芯片,为求写入效率,闪存控制器110通过两个信道写入数据至闪存模块105内的两个闪存芯片,将一个SLC数据区块的数据页分别程序化至不同闪存芯片内,闪存控制器110的一次SLC数据区块写入操作所写入的数据报括128条字符线(分别由WL0至WL127表示的),每一条字符线包括8个数据页,例如以字符线WL0为例,错误更正码编码电路1101通过信道CH0及PLN0、PLN1将数据页P1、P2写入至闪存芯片CE0,接着通过同一个信道CH0及PLN0、PLN1将数据页P3、P4写入至另一个闪存芯片CE1,接着由另一个信道CH1及PLN0、PLN1将数据页P5、P6写入至闪存芯片CE0,接着通过信道CH1及PLN0、PLN1将数据页P7、P8写入至闪存芯片CE1。
错误更正码编码电路1101将一个SLC数据区块的多个字符线WL0至WL127依顺序将每M条字符线编类为一组,M为大于或等于2的正整数,M例如为3,例如字符线WL0~WL2为第一组,字符线WL3~WL5为第二组,字符线WL6~WL8为第三组,字符线WL9~WL11为第四组…,字符线WL120~WL122为倒数第三组,字符线WL123~WL125为倒数第二组,最后一组字符线为WL126、WL127,其中第一、第三、第五组…等等的字符线为奇数组字符线,而第二、第四、第六组…等等的字符线为偶数组字符线,闪存控制器110每次写入一组字符线的数据(包括三条字符线的数据),利用错误更正码编码电路1101对于所述多组字符线的数据执行异或运算的错误更正编码,并将所产生的对应的部分的校验码(partial parity code)输出至校验码缓冲器1102,以暂存部分的校验码。
错误更正码编码电路1101每次写入数据至一组三条不同字符线时,采用三个不同的编码引擎对于所写入的数据执行异或运算的编码,并将所产生的对应的部分的校验码输出至校验码缓冲器1102,以暂存部分的校验码,而校验码缓冲器1102在暂存部分的校验码时将奇数组的字符线数据所对应的部分的校验码存储在第一缓冲区,将偶数组的字符线数据所对应的部分的校验码存储在第二缓冲区。
举例来说,错误更正码编码电路1101包括有第一编码引擎、第二编码引擎及第三编码引擎,当写入字符线WL0~WL2的数据页P1~P24,依序利用第一编码引擎对于字符线WL0的数据页P1~P8执行异或运算以产生第一部分校验码、利用第二编码引擎对于字符线WL1的数据页P9~P16进行异或运算以产生第二部分校验码以及利用第三编码引擎对于字符线WL2的数据页P17~P24进行异或运算以产生第三部分校验码,并将所产生的所述多个部分校验码分别输出至校验码缓冲器1102,暂存在第一缓冲区;接着错误更正码编码电路1101写入字符线WL3~WL5的数据页P1~P24,依序利用第一编码引擎对于字符线WL3的数据页P1~P8执行异或运算以产生另一第一部分校验码、利用第二编码引擎对于字符线WL4的数据页P9~P16执行异或运算以产生另一第二部分校验码以及利用第三编码引擎对于字符线WL5的数据页P17~P24执行异或运算以产生另一第三部分校验码,并将所产生的所述多个部分校验码分别输出至校验码缓冲器1102,暂存在第二缓冲区。
后续的数据页写入与编码操作是依此类推…,也就是说,对于一组奇数组字符线的第一条字符线的数据、第二条字符线的数据、第三条字符线的数据以及对于一组偶数组字符线的第一条字符线的数据、第二条字符线的数据、第三条字符线的数据,均分别执行不同次的异或运算,产生相对应的校验码。之后为了写入所述多个对应的校验码于SLC数据区块的适当存储位置,错误更正码编码电路1101在写入最后6条字符线WL122~WL127的数据页时,将所述多个相对应的校验码写入在最后6条字符线WL122~WL127的最后一个数据页(如图5的长方形斜线框所示),例如,在写入字符线WL122的数据页时,字符线WL122为一组奇数组字符线的第三条字符线,错误更正码编码电路1101在字符线WL122的最后一个数据页中写入所有奇数组字符线中所有第三条字符线的数据所对应的校验码(也就是说奇数组字符线中由第三编码引擎所产生的所有第三部分校验码),而在写入字符线WL123的数据页时,字符线WL123为最后一组偶数组字符线的第一条字符线,错误更正码编码电路1101在字符线WL123的最后一个数据页中写入所有偶数组字符线中所有第一条字符线的数据所对应的校验码(也就是说偶数组字符线中由第一编码引擎所产生的所有第一部分校验码),而在写入字符线WL124的数据页时,字符线WL124为最后一组偶数组字符线的第二条字符线,错误更正码编码电路1101在字符线WL124的最后一个数据页中写入所有偶数组字符线中所有第二条字符线的数据所对应的校验码(也就是说偶数组字符线中由第二编码引擎所产生的所有第二部分校验码),而在写入字符线WL125的数据页时,字符线WL125为最后一组偶数组字符线的第三条字符线,错误更正码编码电路1101在字符线WL125的最后一个数据页中写入所有偶数组字符线中所有第三条字符线的数据所对应的校验码(也就是说偶数组字符线中由第三编码引擎所产生的所有第三部分校验码),而在写入字符线WL126的数据页时,字符线WL126为最后一组奇数组字符线的第一条字符线,错误更正码编码电路1101在字符线WL126的最后一个数据页中写入所有奇数组字符线中所有第一条字符线的数据所对应的校验码(也就是说奇数组字符线中由第一编码引擎所产生的所有第一部分校验码),而在写入字符线WL127的数据页时,字符线WL127为最后一组奇数组字符线的第二条字符线,错误更正码编码电路1101在字符线WL127的最后一个数据页中写入所有奇数组字符线中所有第二条字符线的数据所对应的校验码(也就是说奇数组字符线中由第二编码引擎所产生的所有第二部分校验码)。如此便完成一次SLC数据区块的写入。
也就是说,当闪存控制器110写入一群的数据至一个SLC数据区块时,闪存控制器110是将所述SLC数据区块的所有字符线依顺序每M条字符线编类为一组字符线,以产生多组奇数组的字符线及多组偶数组的字符线,以及对一组奇数组的每一条字符线及一组偶数组的每一条字符线,分别执行不同M次的异或运算的编码操作,产生所述多组奇数组的每一条字符线的M个部分校验码以及所述多组偶数组的每一条字符线的M个部分校验码,写入并存储所述多组奇数组的每一条字符线的M个部分校验码在所述多组奇数组字符线中最后M条字符线的最后一个数据页、写入并存储所述多组偶数组的每一条字符线的M个部分校验码在所述多组偶数组字符线中最后M条字符线的最后一个数据页。而以上述实施例,M为3,然此并非是本申请的限制。
错误更正码编码电路1101在图5所示的实施例所执行的是异或运算编码操作,可以更正发生在SLC数据区块的一条字符线的一个位置的数据页错误,举例来说,如果在执行所述次SLC数据区块的写入时检测到发生写入失败的情况,例如检测到字符线WL1的数据页P9写入失败,错误更正码编码电路1101可利用第二编码引擎在处理第一组字符线的字符线WL1时所产生的相对应的部分校验码及同一个字符线WL1的其他正确的数据页P10~P16,更正字符线WL1的数据页P9的错误。
如果在执行所述次SLC数据区块的写入时检测到发生一字符线断路而造成例如字符线WL1的数据页P9错误,错误更正码编码电路1101也可利用第二编码引擎在处理第一组字符线的字符线WL1时所产生的相对应的部分校验码及同一个字符线WL1的其他正确的数据页P10~P16,更正字符线WL1的数据页P9的错误。
如果在执行所述次SLC数据区块的写入时检测到发生两字符线短路而造成例如字符线WL1的数据页P9与字符线WL2的P17均错误,错误更正码编码电路1101可利用第二编码引擎在处理第一组字符线的字符线WL1时所产生的相对应的部分校验码及同一个字符线WL1的其他正确的数据页P10~P16,更正字符线WL1的数据页P9的错误,以及利用第三编码引擎在处理第一组字符线的字符线WL2时所产生的相对应的部分校验码及同一个字符线WL2的其他正确的数据页P18~P24,更正字符线WL2的数据页P17的错误。而如果是字符线WL2的数据页P17与字符线WL3的数据页P1出错,则错误更正码编码电路1101可利用第三编码引擎在处理第一组字符线的字符线WL2时所产生的相对应的部分校验码及同一个字符线WL2的其他正确的数据页P18~P24,更正字符线WL2的数据页P17的错误,以及利用第一编码引擎在处理第二组字符线的字符线WL3时所产生的相对应的部分校验码及同一个字符线WL3的其他正确的数据页P2~P8,更正字符线WL3的数据页P1的错误。因此,无论是在执行SLC数据区块写入时发生写入失败、一字符线断路或两字符线短路所造成的数据页错误,错误更正码编码电路1101均可对应地更正所述多个错误的数据页。闪存模块105通过内部复制将上述SLC数据区块将数据写入至TLC数据区块的操作如同前述图3的内容,不再赘述。
接着请参照图6,图6为本发明第二实施例图1所示的闪存控制器110写入三个群的数据至闪存模块105内的多个SLC数据区块1051A~1051C并通过内部复制将所述多个SLC数据区块1051A~1051C的数据搬移写入至TLC数据区块1052而形成一个超级区块的示意图。错误更正码编码电路1101在每次执行SLC数据区块的写入时,均把数据分类为奇数组字符线与偶数组字符线,并将对应产生的校验码存储在所有奇数组字符线中最后3条字符线的最后每一个数据页以及所有偶数组字符线的最后3条字符线的最后每一个数据页,如图6所示,执行TLC数据区块写入时,依数据写入的顺序,第一群中的字符线数据的对应校验码,如605A所标示,写入并存储在TLC数据区块1052的字符线WL40的最后一个数据页的最高有效位MSB、字符线WL41的最后一个数据页以及字符线WL42的最后一个数据页的最低有效位LSB与中间有效位CSB,其中第一个群中的SLC数据区块的奇数组字符线的校验码存储在字符线WL40的最后一个数据页的最高有效位MSB以及字符线WL42的最后一个数据页的最低有效位LSB与中间有效位CSB,而第一个群中的SLC数据区块的偶数组字符线的校验码存储在字符线WL41的最后一个数据页(包括最低有效位LSB、中间有效位CSB与最高有效位MSB)。
第二个群中的字符线数据的对应校验码,如605B所标示,写入并存储在TLC数据区块1052的字符线WL83的最后一个数据页的中间有效位CSB与最高有效位MSB、字符线WL84的最后一个数据页以及字符线WL85的最后一个数据页的最低有效位LSB,其中对于第二个群中在SLC数据区块的奇数组字符线数据,由第三编码引擎所产生的所有第三部分校验码存储在TLC数据区块1052的字符线WL83的最后一个数据页的中间有效位CSB,由第一编码引擎所产生的所有第一部分校验码存储在TLC数据区块1052的字符线WL84的最后一个数据页的最高有效位MSB,由第二编码引擎所产生的所有第二部分校验码存储在TLC数据区块1052的字符线WL85的最后一个数据页的最低有效位LSB,而对于第二个群中在SLC数据区块的偶数组字符线数据,由第一编码引擎所产生的所有第一部分校验码存储在TLC数据区块1052的字符线WL83的最后一个数据页的最高有效位MSB,由第二编码引擎所产生的所有第二部分校验码存储在TLC数据区块1052的字符线WL84的最后一个数据页的最低有效位LSB,由第三编码引擎所产生的所有第三部分校验码存储在TLC数据区块1052的字符线WL84的最后一个数据页的中间有效位CSB。
第三个群的字符线数据的对应校验码,如605C所标示,写入并存储在TLC数据区块1052的字符线WL126、127的最后一个数据页(包括最低有效位LSB、中间有效位CSB与最高有效位MSB),其中对于第三个群中在SLC数据区块的奇数组字符线数据,由第三编码引擎所产生的所有第三部分校验码存储在TLC数据区块1052的字符线WL126的最后一个数据页的最低有效位LSB,由第一编码引擎所产生的所有第一部分校验码存储在TLC数据区块1052的字符线WL127的最后一个数据页的中间有效位CSB,由第二编码引擎所产生的所有第二部分校验码存储在TLC数据区块1052的字符线WL127的最后一个数据页的最高有效位MSB,而对于第三个群中在SLC数据区块的偶数组字符线数据,由第一编码引擎所产生的所有第一部分校验码存储在TLC数据区块1052的字符线WL126的最后一个数据页的中间有效位CSB,由第二编码引擎所产生的所有第二部分校验码存储在TLC数据区块1052的字符线WL126的最后一个数据页的最高有效位MSB,由第三编码引擎所产生的所有第三部分校验码存储在TLC数据区块1052的字符线WL127的最后一个数据页的最低有效位LSB。
因此,当闪存模块105通过内部复制操作从所述多个SLC数据区块1051A~1051C搬移写入数据至TLC数据区块1052时,如果检测到两字符线短路而造成例如TLC数据区块1052的字符线WL0、WL1的两个数据页(如框线610所标示)发生错误,闪存模块105可利用存储在TLC数据区块1052的字符线WL42的最后一个数据页的中间有效位CSB的第一部分校验码以及字符线WL0的其他数据页的最低有效位LSB的数据,更正610所标记的字符线WL0的数据页的最低有效位LSB的数据,利用存储在TLC数据区块1052的字符线WL42的最后一个数据页的最高有效位MSB的第二部分校验码以及字符线WL0的其他数据页的中间有效位CSB的数据,来更正610所标记的字符线WL0的数据页的中间有效位CSB的数据,以及利用存储在TLC数据区块1052的字符线WL40的最后一个数据页的最高有效位MSB的第三部分校验码以及字符线WL0的其他数据页的最高有效位MSB的数据,来更正610所标记的字符线WL0的数据页的最高有效位MSB的数据。相同地,闪存模块105可利用存储在TLC数据区块1052的字符线WL41的最后一个数据页的最低有效位LSB的第一部分校验码以及字符线WL1的其他数据页的最低有效位LSB的数据,来更正610所标记的字符线WL1的数据页的最低有效位LSB的数据,利用存储在TLC数据区块1052的字符线WL41的最后一个数据页的中间有效位CSB的第二部分校验码以及字符线WL1的其他数据页的中间有效位CSB的数据,来更正610所标记的字符线WL1的数据页的中间有效位CSB的数据,以及利用存储在TLC数据区块1052的字符线WL41的最后一个数据页的最高有效位MSB的第三部分校验码以及字符线WL1的其他数据页的最高有效位MSB的数据,来更正610所标记的字符线WL1的数据页的最高有效位MSB的数据。
相似地,如果两字符线短路而造成的错误是发生在超级区块的任两个连续字符线的连续数据页(例如如615、620所标示的错误位置),闪存模块105均可利用每一群组中一个SLC数据区块的最后6条字符线的最后一个数据页所存储的相对应的校验码来更正错误。此外,如果是检测到一字符线断路或写入失败而造成TLC数据区块1052的任一个字符线的任一个数据页发生错误(也就是说同一个数据页的三个有效位均出错或是连续两个不同数据页的不同有效位出错),则闪存模块105均可利用对应存储的校验码来更正连续任意三个有效位的错误。
也就是说,通过闪存控制器110写入三个群的数据至闪存模块105内的多个SLC数据区块1051A~1051C的校验码存储位置管理设计,当闪存模块105通过内部复制将所述多个数据从多个SLC数据区块1051A~1051C复制搬移写入至TLC数据区块时,如果检测到一字符线断路、两字符线短路或写入失败的错误,均可由多个SLC数据区块1051A~1051C存储的校验码来进行更正。
再者,本申请上述的实施例也适用在MLC数据区块或QLC数据区块等架构,当使用在MLC数据区块时,上述三个群数据改为分类为两个群的数据,而对于如果是执行异或运算的编码操作,则改用两个编码引擎来实现,其他的条件则与前述使用在TLC数据区块时相同;因此,如果是使用在QLC数据区块时,上述三个群数据改为分类为四个群的数据,而对于如果是执行异或运算的编码操作,则改用四个编码引擎来实现,其他的条件则与前述使用在TLC数据区块时相同;其他数据区块的架构则依此类推。
以数据存储的成本(overhead)来看,如果是采用两个信道写入两个内存芯片,且每一个内存芯片具有折迭平面设计使可同时写入两个区块,则以一个SLC数据区块的数据写入来说,128条字符线共有8*128个数据页,而仅需要使用到6个数据页来存储对应的校验码,成本的百分比不到1%(6/(128*8)),也就是说对于SLC数据区块的写入以及TLC数据区块的写入,只需使用低于1%的数据空间作为存储相对应的错误更正校验码之用,数据空间的使用效率极高。而如果是采用4个信道写入4个内存芯片,且每一个内存芯片具有折迭平面设计使可同时写入2个区块,则以一个SLC数据区块的数据写入来说,128条字符线共有4*4*2*128个数据页,而仅需要使用到6个数据页来存储对应的校验码,成本的百分比将可更低,约为0.15%(6/(128*4*4*2)),也就是说对于SLC数据区块的写入以及TLC数据区块的写入,只需使用约为0.15%的数据空间作为存储相对应的错误更正校验码之用,数据空间的使用效率更高。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (19)
1.一种闪存装置,其特征在于,包含有:
一闪存模块,包括多个第一数据区块以及一个第二数据区块,所述多个第一数据区块是多个单层单元数据区块,所述第二数据区块是多层单元数据区块;以及
一闪存控制器,具有多条信道分别连接至所述闪存模块,所述闪存控制器是先将一笔欲写入的数据分类为多群的数据,所述多群的数据是多组数据,所述闪存控制器分别执行单层单元数据写入以及执行一个独立磁盘冗余阵列的里德-所罗门码的错误更正编码操作产生对应的校验码,以将所述多群的数据以及所述对应的校验码写入至所述多个第一数据区块;当完成所述多个第一数据区块的写入时,所述闪存模块是执行内部复制,将所述多个第一数据区块所存储的所述多群的数据以及所述对应的校验码,依数据的先后顺序,依序搬移写入至所述第二数据区块;一个第一数据区块的单元所储存的数据量小于一个第二数据区块的单元所储存的数据量。
2.如权利要求1所述的闪存装置,其特征在于,所述多个第一数据区块的单元是用来储存两位的信息,而所述第二数据区块的单元是用来储存具有2N位的信息,N大于等于2并为整数。
3.如权利要求2所述的闪存装置,其特征在于,N等于3,所述第二数据区块为一个三层单元数据区块,所述闪存控制器将所述一笔欲写入的数据分类为三个群的数据,以分别写入至三个单层单元数据区块。
4.如权利要求2所述的闪存装置,其特征在于,当所述闪存控制器写入一群的数据至一个单层单元数据区块时,所述闪存控制器将所述单层单元数据区块的所有字符线依顺序每M条字符线编类为一组字符线,以产生多组奇数组的字符线及多组偶数组的字符线,所述一群的数据是一组数据,M是正整数,以及对所述多组奇数组的字符线及所述多组偶数组的字符线,分别执行不同次的里德-所罗门码的编码操作,产生所述多组奇数组的字符线的一第一校验码与所述多组偶数组的字符线的一第二校验码,写入并储存所述第一校验码于所述多组奇数组字符线中最后一组字符线的最后一条字符线中的多个最后的数据页、写入并储存所述第二校验码于所述多组偶数组字符线中最后一组字符线的最后一条字符线中的多个最后的数据页。
5.如权利要求1所述的闪存装置,其特征在于,当进行内存垃圾回收时,所述闪存控制器从外部读取出所述多个第一数据区块的数据并进行重新编码与写入,或从外部读取出所述第二数据区块并进行重新编码与写入。
6.如权利要求1所述的闪存装置,其特征在于,当写入数据至一个第一数据区块且突然发生关机时,所述闪存控制器从所述第一数据区块读回数据并重新进行编码、写入数据至另一个第一数据区块。
7.如权利要求1所述的闪存装置,其特征在于,当写入数据至所述第二数据区块且突然发生关机时,所述闪存控制器放弃所述第二数据区块所存储的数据,并执行所述内部复制,从所述多个第一数据区块搬移写入数据至所述第二数据区块。
8.如权利要求1所述的闪存装置,其特征在于,当写入数据至所述多个第一数据区块时,所述闪存控制器依据所述第二数据区块的一随机数种子数规则,写入数据至所述多个第一数据区块。
9.如权利要求1所述的闪存装置,其特征在于,所述闪存模块是被控制用以执行所述内部复制,通过从所述多个第一数据区块依序读取出所述多群的数据以及所述对应的校验码,以及接着依照储存所述多群的数据以及所述对应的校验码于所述多个第一数据区块的先后顺序,将从所述多个第一数据区块依序读取出的所述多群的数据以及所述对应的校验码写入至所述第二数据区块。
10.一种闪存存储管理方法,其特征在于,包含有:
提供一闪存模块,所述闪存模块包括多个第一数据区块以及第二数据区块,所述多个第一数据区块是多个单层单元数据区块,所述第二数据区块是多层单元数据区块;
将一笔欲写入的数据分类为多群的数据,所述多群的数据是多组数据;分别执行单层单元数据写入以及执行一个独立磁盘冗余阵列的里德-所罗门码的错误更正编码操作产生对应的校验码,以将所述多群的数据以及所述对应的校验码写入至所述多个第一数据区块;
当完成所述多个第一数据区块的写入时,执行内部复制,将所述多个第一数据区块所存储的所述多群的数据以及所述对应的校验码,依数据的先后顺序,依序搬移写入至所述第二数据区块;一个第一数据区块的单元所储存的数据量小于一个第二数据区块的单元所储存的数据量。
11.如权利要求10所述的闪存存储管理方法,其特征在于,所述多个第一数据区块的单元是用来储存两位的信息,而所述第二数据区块的单元是用来储存具有2N位的信息,N大于等于2并为整数。
12.如权利要求11所述的闪存存储管理方法,其特征在于,N等于3,所述第二数据区块为三层单元数据区块,以及将所述一笔欲写入的数据分类为N个群的数据以分别写入至所述多个单层单元数据区块的步骤包括:将所述一笔欲写入的数据分类为三个群的数据,以分别写入至三个单层单元数据区块。
13.如权利要求11所述的闪存存储管理方法,其特征在于,执行单层单元数据写入的步骤包括:
当写入一群的数据至一个单层单元数据区块时,将所述单层单元数据区块的所有字符线依顺序每M条字符线编类为一组字符线,以产生多组奇数组的字符线及多组偶数组的字符线,所述一群的数据是一组数据;
对所述多组奇数组的字符线及所述多组偶数组的字符线,分别执行不同次的里德-所罗门码的编码操作,产生所述多组奇数组的字符线的一第一校验码与所述多组偶数组的字符线的一第二校验码;
写入并储存所述第一校验码于所述多组奇数组字符线中最后一组字符线的最后一条字符线中的多个最后的数据页;以及
写入并储存所述第二校验码于所述多组偶数组字符线中最后一组字符线的最后一条字符线中的多个最后的数据页。
14.如权利要求10所述的闪存存储管理方法,其特征在于,另包含有:
当进行内存垃圾回收时,从外部读取出所述多个第一数据区块的数据并进行重新编码与写入,或从外部读取出所述第二数据区块并进行重新编码与写入。
15.如权利要求10所述的闪存存储管理方法,其特征在于,另包含有:
当写入数据至一个第一数据区块且突然发生关机时,从所述第一数据区块读回数据并重新进行编码、写入数据至另一个第一数据区块。
16.如权利要求10所述的闪存存储管理方法,其特征在于,另包含有:
当写入数据至所述第二数据区块且突然发生关机时,放弃所述第二数据区块所存储的数据,并执行所述内部复制,从所述多个第一数据区块搬移写入数据至所述第二数据区块。
17.如权利要求10所述的闪存存储管理方法,其特征在于,另包含有:
当写入数据至所述多个第一数据区块时,依据所述第二数据区块的随机数种子数规则,写入数据至所述多个第一数据区块。
18.如权利要求10所述的闪存存储管理方法,其特征在于,执行所述内部复制的步骤包括:
控制所述闪存模块用以通过:
从所述多个第一数据区块依序读取出所述多群的数据以及所述对应的校验码;以及
依照储存所述多群的数据以及所述对应的校验码于所述多个第一数据区块的先后顺序,将从所述多个第一数据区块依序读取出的所述多群的数据以及所述对应的校验码写入至所述第二数据区块。
19.一种耦接于闪存模块的闪存控制器,所述闪存模块包含多个第一数据区块以及一个第二数据区块,所述多个第一数据区块是多个单层单元数据区块,所述第二数据区块是多层单元数据区块,以及所述闪存控制器包含:
多条信道分别连接至所述闪存模块;以及
所述闪存控制器用来:
先将一笔欲写入的数据分类为多群的数据,分别执行单层单元数据写入以及执行一个独立磁盘冗余阵列的里德-所罗门码的错误更正编码操作产生对应的校验码,以将所述多群的数据以及所述对应的校验码写入至所述多个第一数据区块,所述多群的数据是多组数据;以及
当完成所述多个第一数据区块的写入时,所述闪存模块是执行内部复制,将所述多个第一数据区块所存储的所述多群的数据以及所述对应的校验码,依数据的先后顺序,依序搬移写入至所述第二数据区块;一个第一数据区块的单元所储存的数据量小于所述第二数据区块的单元所储存的数据量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010373248.8A CN111679787B (zh) | 2016-04-27 | 2017-04-24 | 闪存装置、闪存控制器及闪存存储管理方法 |
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662328025P | 2016-04-27 | 2016-04-27 | |
US62/328,025 | 2016-04-27 | ||
TW106106328 | 2017-02-24 | ||
TW106106328A TWI643062B (zh) | 2016-04-27 | 2017-02-24 | 快閃記憶體裝置及快閃記憶體儲存管理方法 |
CN202010373248.8A CN111679787B (zh) | 2016-04-27 | 2017-04-24 | 闪存装置、闪存控制器及闪存存储管理方法 |
CN201710271879.7A CN107391026B (zh) | 2016-04-27 | 2017-04-24 | 闪存装置及闪存存储管理方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710271879.7A Division CN107391026B (zh) | 2016-04-27 | 2017-04-24 | 闪存装置及闪存存储管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111679787A CN111679787A (zh) | 2020-09-18 |
CN111679787B true CN111679787B (zh) | 2023-07-18 |
Family
ID=81324847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010373248.8A Active CN111679787B (zh) | 2016-04-27 | 2017-04-24 | 闪存装置、闪存控制器及闪存存储管理方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11323133B2 (zh) |
CN (1) | CN111679787B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240053900A1 (en) * | 2022-08-09 | 2024-02-15 | Micron Technology, Inc. | Sequential write operations using multiple memory dies |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103733175A (zh) * | 2013-08-09 | 2014-04-16 | 华为技术有限公司 | 一种文件处理方法、装置及存储设备 |
CN104835526A (zh) * | 2014-02-10 | 2015-08-12 | 慧荣科技股份有限公司 | 将数据写入至闪存的方法及相关的记忆装置与闪存 |
CN104850514A (zh) * | 2014-02-18 | 2015-08-19 | 慧荣科技股份有限公司 | 存取闪存的方法及相关的控制器与记忆装置 |
CN104991738A (zh) * | 2015-06-19 | 2015-10-21 | 华中科技大学 | 一种固态盘及其读写操作方法 |
Family Cites Families (130)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3534585B2 (ja) | 1997-10-21 | 2004-06-07 | 株式会社日立製作所 | フラッシュメモリを複数使用した外部記憶装置のデータ記憶制御方法及び装置 |
JP4165990B2 (ja) | 1999-12-20 | 2008-10-15 | Tdk株式会社 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリへのデータの書き込み方法 |
US8341332B2 (en) | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
JP4073799B2 (ja) | 2003-02-07 | 2008-04-09 | 株式会社ルネサステクノロジ | メモリシステム |
CN100377119C (zh) | 2003-06-20 | 2008-03-26 | 深圳市朗科科技有限公司 | 闪存介质中数据保护方法 |
US6906961B2 (en) | 2003-06-24 | 2005-06-14 | Micron Technology, Inc. | Erase block data splitting |
US6903972B2 (en) | 2003-07-30 | 2005-06-07 | M-Systems Flash Disk Pioneers Ltd. | Different methods applied for archiving data according to their desired lifetime |
US7328956B2 (en) * | 2004-05-27 | 2008-02-12 | Silverbrook Research Pty Ltd | Printer comprising a printhead and at least two printer controllers connected to a common input of the printhead |
US7266661B2 (en) * | 2004-05-27 | 2007-09-04 | Silverbrook Research Pty Ltd | Method of storing bit-pattern in plural devices |
US7243193B2 (en) * | 2004-05-27 | 2007-07-10 | Silverbrook Research Pty Ltd | Storage of program code in arbitrary locations in memory |
ITRM20040418A1 (it) | 2004-08-25 | 2004-11-25 | Micron Technology Inc | Modo di lettura a compressione di dati a piu' livelli per il collaudo di memorie. |
JP4504138B2 (ja) | 2004-09-03 | 2010-07-14 | 株式会社東芝 | 記憶システム及びそのデータコピー方法 |
US7849418B2 (en) | 2006-03-31 | 2010-12-07 | Broadcom Corporation | Segregation of redundant control bits in an ECC permuted, systematic modulation code |
US20080086676A1 (en) | 2006-03-31 | 2008-04-10 | Mead John P | Segregation of redundant control bits in an ecc permuted, systematic modulation code |
KR100771521B1 (ko) * | 2006-10-30 | 2007-10-30 | 삼성전자주식회사 | 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법 |
US7710777B1 (en) | 2006-12-20 | 2010-05-04 | Marvell International Ltd. | Semi-volatile NAND flash memory |
JP5014821B2 (ja) | 2007-02-06 | 2012-08-29 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
JP4498370B2 (ja) | 2007-02-14 | 2010-07-07 | 株式会社東芝 | データ書き込み方法 |
JP5032155B2 (ja) | 2007-03-02 | 2012-09-26 | 株式会社東芝 | 不揮発性半導体記憶装置、及び不揮発性半導体記憶システム |
US8024637B2 (en) | 2007-04-02 | 2011-09-20 | Broadcom Corporation | Super block error correction code (ECC) adaptable to communication systems including hard disk drives (HDDs) and other memory storage devices |
JP2008257773A (ja) | 2007-04-02 | 2008-10-23 | Toshiba Corp | 不揮発性半導体記憶装置、不揮発性半導体記憶装置の制御方法、不揮発性半導体記憶システム、及びメモリカード |
CN101281492B (zh) | 2007-04-04 | 2011-02-02 | 扬智科技股份有限公司 | 恢复闪存的对照表的方法 |
US8131920B2 (en) | 2007-12-06 | 2012-03-06 | Hitachi Global Storage Technologies, Netherlands B.V. | Method and system for dynamically allocating read and write sequence randomizer |
JP5166074B2 (ja) | 2008-02-29 | 2013-03-21 | 株式会社東芝 | 半導体記憶装置、その制御方法、および誤り訂正システム |
KR101398212B1 (ko) | 2008-03-18 | 2014-05-26 | 삼성전자주식회사 | 메모리 장치 및 인코딩/디코딩 방법 |
CN101593156B (zh) | 2008-05-28 | 2011-09-21 | 群联电子股份有限公司 | 多种存储器的管理方法、系统及控制器 |
US8843691B2 (en) | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US8130552B2 (en) | 2008-09-11 | 2012-03-06 | Sandisk Technologies Inc. | Multi-pass programming for memory with reduced data storage requirement |
TWI364661B (en) | 2008-09-25 | 2012-05-21 | Silicon Motion Inc | Access methods for a flash memory and memory devices |
US8327066B2 (en) | 2008-09-30 | 2012-12-04 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
CN101727976B (zh) | 2008-10-15 | 2012-09-19 | 晶天电子(深圳)有限公司 | 一种多层闪存装置、固态硬盘和分割非易失性存储器系统 |
KR101469771B1 (ko) * | 2008-12-03 | 2014-12-08 | 삼성전자주식회사 | 플래시 메모리를 포함하는 반도체 장치 및 이의 어드레스 사상 방법 |
KR101563647B1 (ko) * | 2009-02-24 | 2015-10-28 | 삼성전자주식회사 | 메모리 시스템 및 그것의 데이터 처리 방법 |
KR20100111990A (ko) | 2009-04-08 | 2010-10-18 | 삼성전자주식회사 | 플래시 메모리 장치 및 그것의 데이터 랜덤화 방법 |
KR20100124087A (ko) * | 2009-05-18 | 2010-11-26 | 삼성전자주식회사 | 메모리 컨트롤러, 그것을 포함하는 메모리 시스템 그리고 그것의 동작 방법 |
US20100332922A1 (en) | 2009-06-30 | 2010-12-30 | Mediatek Inc. | Method for managing device and solid state disk drive utilizing the same |
TWI433157B (zh) | 2009-09-04 | 2014-04-01 | Silicon Motion Inc | 存取快閃記憶體的方法以及相關之記憶裝置 |
CN102033814B (zh) | 2009-09-25 | 2013-04-10 | 慧荣科技股份有限公司 | 存取一闪存的方法以及相关的记忆装置 |
JP5349256B2 (ja) | 2009-11-06 | 2013-11-20 | 株式会社東芝 | メモリシステム |
KR20110073932A (ko) | 2009-12-24 | 2011-06-30 | 주식회사 하이닉스반도체 | Ecc 회로를 포함하는 반도체 스토리지 시스템 및 그 제어 방법 |
TWI409633B (zh) * | 2010-02-04 | 2013-09-21 | Phison Electronics Corp | 快閃記憶體儲存裝置、其控制器與資料寫入方法 |
US8726126B2 (en) | 2010-03-23 | 2014-05-13 | Apple Inc. | Non-regular parity distribution detection via metadata tag |
CN102236585B (zh) | 2010-04-20 | 2015-06-03 | 慧荣科技股份有限公司 | 提升错误更正能力的方法以及相关的记忆装置及其控制器 |
KR101650130B1 (ko) | 2010-05-14 | 2016-08-24 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법 |
TWI455136B (zh) * | 2010-07-01 | 2014-10-01 | Silicon Motion Inc | 用來進行資料整形之方法以及相關之記憶裝置及其控制器 |
US8898374B2 (en) | 2010-07-21 | 2014-11-25 | Silicon Motion, Inc. | Flash memory device and method for managing flash memory device |
US8892981B2 (en) | 2010-09-30 | 2014-11-18 | Apple Inc. | Data recovery using outer codewords stored in volatile memory |
KR101214285B1 (ko) | 2010-12-30 | 2012-12-20 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
KR20120096212A (ko) | 2011-02-22 | 2012-08-30 | 삼성전자주식회사 | 비휘발성 메모리 장치, 메모리 컨트롤러, 및 이들의 동작 방법 |
KR101826137B1 (ko) | 2011-03-24 | 2018-03-22 | 삼성전자주식회사 | 메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법 |
US9432298B1 (en) * | 2011-12-09 | 2016-08-30 | P4tents1, LLC | System, method, and computer program product for improving memory systems |
US8949568B2 (en) | 2011-05-24 | 2015-02-03 | Agency For Science, Technology And Research | Memory storage device, and a related zone-based block management and mapping method |
WO2013030866A1 (en) * | 2011-08-29 | 2013-03-07 | Hitachi, Ltd. | Semiconductor storage device comprising electrically rewritable nonvolatile semiconductor memory |
KR20130049332A (ko) | 2011-11-04 | 2013-05-14 | 삼성전자주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US8914705B1 (en) | 2011-11-10 | 2014-12-16 | Sk Hynix Memory Solutions Inc. | Probability maximum transition run codes |
KR101893145B1 (ko) | 2011-12-06 | 2018-10-05 | 삼성전자주식회사 | 메모리 시스템들 및 그것들의 블록 복사 방법들 |
US8984373B2 (en) | 2012-02-22 | 2015-03-17 | Silicon Motion, Inc. | Method for accessing flash memory and associated flash memory controller |
KR101962786B1 (ko) | 2012-03-23 | 2019-03-27 | 삼성전자주식회사 | 불휘발성 메모리 장치, 메모리 시스템 및 그것의 프로그램 방법 |
CN104205059B (zh) | 2012-04-27 | 2017-07-14 | 株式会社日立制作所 | 存储系统和存储控制装置 |
US8856611B2 (en) | 2012-08-04 | 2014-10-07 | Lsi Corporation | Soft-decision compensation for flash channel variation |
KR101996004B1 (ko) | 2012-05-29 | 2019-07-03 | 삼성전자주식회사 | 비휘발성 메모리 장치의 프로그램 방법 및 그것의 메모리 시스템 |
US9141533B2 (en) | 2012-05-31 | 2015-09-22 | Silicon Motion, Inc. | Data storage device and flash memory control method for performing garbage collection |
CN107133122B (zh) | 2012-06-06 | 2020-10-27 | 慧荣科技股份有限公司 | 存储器控制方法 |
US9110824B2 (en) | 2012-06-08 | 2015-08-18 | Silicon Motion Inc. | Method, controller, and memory device for correcting data bit(s) of at least one cell of flash memory |
US9384125B2 (en) | 2012-06-18 | 2016-07-05 | Silicon Motion Inc. | Method for accessing flash memory having pages used for data backup and associated memory device |
TWI594254B (zh) | 2012-07-17 | 2017-08-01 | 慧榮科技股份有限公司 | 讀取快閃記憶體中區塊之資料的方法及相關的記憶裝置 |
US8924820B2 (en) | 2012-07-27 | 2014-12-30 | Kabushiki Kaisha Toshiba | Memory controller, semiconductor memory system, and memory control method |
US20140063983A1 (en) | 2012-09-06 | 2014-03-06 | International Business Machines Corporation | Error Detection And Correction In A Memory System |
KR102025263B1 (ko) | 2012-10-05 | 2019-09-25 | 삼성전자주식회사 | 메모리 시스템 및 그것의 읽기 교정 방법 |
US8958244B2 (en) | 2012-10-16 | 2015-02-17 | Conversant Intellectual Property Management Inc. | Split block decoder for a nonvolatile memory device |
US8914670B2 (en) | 2012-11-07 | 2014-12-16 | Apple Inc. | Redundancy schemes for non-volatile memory using parity zones having new and old parity blocks |
CN103839594A (zh) | 2012-11-27 | 2014-06-04 | 建兴电子科技股份有限公司 | 固态储存装置及其联合编解码方法 |
US9671962B2 (en) | 2012-11-30 | 2017-06-06 | Sandisk Technologies Llc | Storage control system with data management mechanism of parity and method of operation thereof |
US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
US9286985B2 (en) | 2013-02-12 | 2016-03-15 | Kabushiki Kaisha Toshiba | Semiconductor device with power mode transitioning operation |
KR102143517B1 (ko) | 2013-02-26 | 2020-08-12 | 삼성전자 주식회사 | 에러 정정회로를 포함하는 반도체 메모리 장치 및 반도체 메모리 장치의 동작방법 |
US9007860B2 (en) | 2013-02-28 | 2015-04-14 | Micron Technology, Inc. | Sub-block disabling in 3D memory |
US8972776B2 (en) | 2013-03-06 | 2015-03-03 | Seagate Technology, Llc | Partial R-block recycling |
US8656255B1 (en) | 2013-03-15 | 2014-02-18 | Avalanche Technology, Inc. | Method for reducing effective raw bit error rate in multi-level cell NAND flash memory |
US9672910B2 (en) | 2013-04-30 | 2017-06-06 | International Business Machines Corporation | Memory architecture for storing data in a plurality of memory chips |
KR102252379B1 (ko) | 2013-06-24 | 2021-05-14 | 삼성전자주식회사 | 메모리 시스템 및 이의 독출 방법 |
WO2015013689A2 (en) | 2013-07-25 | 2015-01-29 | Aplus Flash Technology, Inc. | Nand array hiarchical bl structures for multiple-wl and all -bl simultaneous erase, erase-verify, program, program-verify, and read operations |
CN104424040B (zh) | 2013-08-23 | 2017-10-31 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN108447516B (zh) | 2013-08-23 | 2020-04-24 | 慧荣科技股份有限公司 | 存取快闪存储器中存储单元的方法以及使用该方法的装置 |
CN104424127A (zh) | 2013-08-23 | 2015-03-18 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
TWI646553B (zh) | 2013-08-23 | 2019-01-01 | 慧榮科技股份有限公司 | 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置 |
US9424126B2 (en) | 2013-09-03 | 2016-08-23 | Kabushiki Kaisha Toshiba | Memory controller |
US9246635B2 (en) | 2013-11-11 | 2016-01-26 | Lg Electronics Inc. | Apparatus for transmitting broadcast signals, apparatus for receiving broadcast signals, method for transmitting broadcast signals and method for receiving broadcast signals |
US9262316B2 (en) | 2013-12-09 | 2016-02-16 | International Business Machines Corporation | Recording dwell time in a non-volatile memory system |
US20150170747A1 (en) | 2013-12-17 | 2015-06-18 | Skymedi Corporation | Method and system for programming a multi-bit per cell non-volatile memory |
US9262268B2 (en) | 2013-12-20 | 2016-02-16 | Seagate Technology Llc | Method to distribute user data and error correction data over different page types by leveraging error rate variations |
US9542278B2 (en) | 2013-12-26 | 2017-01-10 | Silicon Motion, Inc. | Data storage device and flash memory control method |
TWI541819B (zh) | 2013-12-30 | 2016-07-11 | 慧榮科技股份有限公司 | 用來進行錯誤更正之方法、記憶裝置、與控制器 |
US9319073B2 (en) | 2014-02-11 | 2016-04-19 | Seagate Technology Llc | Mitigation of write errors in multi-level cell flash memory through adaptive error correction code decoding |
US9685242B2 (en) | 2014-03-11 | 2017-06-20 | Kabushiki Kaisha Toshiba | Memory system |
US10015152B2 (en) * | 2014-04-02 | 2018-07-03 | International Business Machines Corporation | Securing data in a dispersed storage network |
KR102289919B1 (ko) | 2014-04-15 | 2021-08-12 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 |
US9361182B2 (en) | 2014-05-20 | 2016-06-07 | Transcend Information, Inc. | Method for read disturbance management in non-volatile memory devices |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
TWI530959B (zh) | 2014-06-17 | 2016-04-21 | 慧榮科技股份有限公司 | 用來控制一記憶裝置之方法以及記憶裝置與控制器 |
TWI554944B (zh) | 2014-06-20 | 2016-10-21 | 慧榮科技股份有限公司 | 快閃記憶體控制裝置、快閃記憶體控制系統以及快閃記憶體控制方法 |
US9105333B1 (en) | 2014-07-03 | 2015-08-11 | Sandisk Technologies Inc. | On-chip copying of data between NAND flash memory and ReRAM of a memory die |
US20160041760A1 (en) | 2014-08-08 | 2016-02-11 | International Business Machines Corporation | Multi-Level Cell Flash Memory Control Mechanisms |
US10395753B2 (en) | 2014-08-28 | 2019-08-27 | Winbond Electronics Corp. | Semiconductor memory device and programming method thereof |
US20160062829A1 (en) | 2014-08-29 | 2016-03-03 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
JP6313245B2 (ja) | 2014-09-09 | 2018-04-18 | 東芝メモリ株式会社 | 半導体記憶装置 |
CN104282340B (zh) | 2014-09-30 | 2017-12-29 | 华中科技大学 | 一种固态盘闪存芯片阈值电压感知方法及系统 |
US9400713B2 (en) * | 2014-10-02 | 2016-07-26 | Sandisk Technologies Llc | System and method for pre-encoding of data for direct write to multi-level cell memory |
KR102233074B1 (ko) | 2014-10-08 | 2021-03-30 | 삼성전자주식회사 | 저장 장치 및 그것의 신뢰성 검증 방법 |
TWI556254B (zh) | 2014-10-14 | 2016-11-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料存取方法 |
KR20160046391A (ko) | 2014-10-20 | 2016-04-29 | 삼성전자주식회사 | 하이브리드 딤 스트럭쳐 및 하이브리드 딤 스트럭쳐의 구동 방법 |
US9984768B2 (en) | 2014-10-20 | 2018-05-29 | Sandisk Technologies Llc | Distributing storage of ECC code words |
US9959059B2 (en) | 2014-10-20 | 2018-05-01 | Sandisk Technologies Llc | Storage error management |
KR102355580B1 (ko) | 2015-03-02 | 2022-01-28 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 포함하는 저장 장치 및 그것의 동작 방법 |
US9753653B2 (en) | 2015-04-14 | 2017-09-05 | Sandisk Technologies Llc | High-priority NAND operations management |
KR20160127524A (ko) | 2015-04-27 | 2016-11-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20160127525A (ko) * | 2015-04-27 | 2016-11-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20170140225A (ko) * | 2015-04-30 | 2017-12-20 | 마이크로칩 테크놀로지 인코포레이티드 | 향상된 명령어 세트를 구비한 중앙 처리 유닛 |
US9639282B2 (en) | 2015-05-20 | 2017-05-02 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices |
US9489260B1 (en) | 2015-05-26 | 2016-11-08 | Seagate Technology Llc | Flexible super block sizing for failed sector recovery |
KR102372825B1 (ko) | 2015-07-31 | 2022-03-14 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
TWI575531B (zh) | 2015-08-10 | 2017-03-21 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
US20170060425A1 (en) | 2015-08-27 | 2017-03-02 | Kabushiki Kaisha Toshiba | Memory system and method of controlling nonvolatile memory |
US10725860B2 (en) | 2016-03-04 | 2020-07-28 | Sandisk Technologies Llc | Storage system and method for handling a burst of errors |
CN107391026B (zh) | 2016-04-27 | 2020-06-02 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
US9910772B2 (en) | 2016-04-27 | 2018-03-06 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
KR102653401B1 (ko) | 2016-07-18 | 2024-04-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
CN106504796A (zh) | 2016-10-28 | 2017-03-15 | 东南大学 | 一种应用于nand闪存上的极化码纠错方案 |
JP6709180B2 (ja) | 2017-02-28 | 2020-06-10 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10297324B2 (en) * | 2017-05-25 | 2019-05-21 | Western Digital Technologies, Inc. | Physical secure erase of solid state drives |
-
2017
- 2017-04-24 CN CN202010373248.8A patent/CN111679787B/zh active Active
-
2020
- 2020-06-09 US US16/896,210 patent/US11323133B2/en active Active
-
2022
- 2022-02-22 US US17/676,853 patent/US11916569B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103733175A (zh) * | 2013-08-09 | 2014-04-16 | 华为技术有限公司 | 一种文件处理方法、装置及存储设备 |
CN104835526A (zh) * | 2014-02-10 | 2015-08-12 | 慧荣科技股份有限公司 | 将数据写入至闪存的方法及相关的记忆装置与闪存 |
CN104850514A (zh) * | 2014-02-18 | 2015-08-19 | 慧荣科技股份有限公司 | 存取闪存的方法及相关的控制器与记忆装置 |
CN104991738A (zh) * | 2015-06-19 | 2015-10-21 | 华中科技大学 | 一种固态盘及其读写操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111679787A (zh) | 2020-09-18 |
US11323133B2 (en) | 2022-05-03 |
US11916569B2 (en) | 2024-02-27 |
US20200304148A1 (en) | 2020-09-24 |
US20220182074A1 (en) | 2022-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391026B (zh) | 闪存装置及闪存存储管理方法 | |
CN107403646B (zh) | 闪存装置及闪存存储管理方法 | |
CN111710358B (zh) | 闪存装置、闪存控制器及闪存存储管理方法 | |
CN107391296B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN112463433A (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN111679787B (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 |