CN107403646B - 闪存装置及闪存存储管理方法 - Google Patents
闪存装置及闪存存储管理方法 Download PDFInfo
- Publication number
- CN107403646B CN107403646B CN201710283438.9A CN201710283438A CN107403646B CN 107403646 B CN107403646 B CN 107403646B CN 201710283438 A CN201710283438 A CN 201710283438A CN 107403646 B CN107403646 B CN 107403646B
- Authority
- CN
- China
- Prior art keywords
- data
- flash memory
- groups
- layer unit
- writing
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 10
- 239000002356 single layer Substances 0.000 claims abstract description 52
- 238000012937 correction Methods 0.000 claims abstract description 39
- 239000010410 layer Substances 0.000 claims abstract description 20
- 230000005055 memory storage Effects 0.000 claims abstract description 5
- 238000000034 method Methods 0.000 claims description 8
- 239000000872 buffer Substances 0.000 description 30
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000013523 data management Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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
- 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
- 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
- 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/0608—Saving storage space on storage systems
-
- 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
-
- 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/44—Indication or identification of errors, e.g. for repair
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- 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/061—Improving I/O performance
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种闪存装置和闪存存储管理方法,所述闪存存储管理方法包括:提供闪存模块,所述闪存模块包括多个单层单元数据区块以及多层单元数据区块;将欲写入的数据分类为多个数据群;分别执行单层单元数据写入以及执行类似容错式磁盘阵列错误更正编码操作产生对应的校验码,以将所述多个数据群以及所述对应的校验码写入至所述多个单层单元数据区块;当完成所述多个单层单元数据区块的写入时,执行内部复制,将所述多个单层单元数据区块所存储的所述多个数据群以及所述对应校验码,依所述多个单层单元数据区块存储顺序,依序写入至所述多层单元数据区块。只需使用极低数据空间作为存储相对应错误更正校验码之用,闪存数据空间使用效率更高。
Description
技术领域
本发明涉及一种闪存装置,尤其涉及一种执行类似容错式磁盘阵列的错误更正编码操作的闪存装置与存储管理方法。
背景技术
一般来说,对于闪存控制器执行数据写入以写入一笔数据至单层单元数据区块或是多层单元数据区块,传统的机制采用例如在一数据区块的一字符线的最后一页放置所述字符线的其他数据页所对应的校验码,使得当发生写入失败、字符线断路及字符线短路时可利用所述对应的校验码来进行一定程度的错误更正,然而,这样的数据存储率过低,例如一字符线如果包括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-lelve-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 (16)
1.一种闪存装置,其特征在于,包含有:
一闪存模块,包括多个单层单元数据区块以及一个多层单元数据区块;以及
一闪存控制器,具有多条信道分别连接至所述闪存模块,所述闪存控制器是先将一笔欲写入的数据分类为多群的数据,所述闪存控制器分别执行单层单元数据写入以及执行一个类似容错式磁盘阵列的异或运算的错误更正编码操作产生对应的校验码,以将所述多群的数据以及所述对应的校验码写入至所述多个单层单元数据区块;当完成所述多个单层单元数据区块的写入时,所述闪存模块是执行内部复制,将所述多个单层单元数据区块所存储的所述多群的数据以及所述对应的校验码,依数据的先后顺序,依序搬移写入至所述多层单元数据区块。
2.如权利要求1所述的闪存装置,其特征在于,所述多层单元数据区块的单元可存储具有2N位的信息,N大于等于2并为整数,所述多个单层单元数据区块为N个单层单元数据区块,所述闪存控制器是将所述一笔欲写入的数据分类为N个群的数据,以分别写入至所述N个单层单元数据区块。
3.如权利要求2所述的闪存装置,其特征在于,N等于3,所述多层单元数据区块为一个三层单元数据区块,所述闪存控制器将所述一笔欲写入的数据分类为三个群的数据,以分别写入至三个单层单元数据区块。
4.如权利要求2所述的闪存装置,其特征在于,当所述闪存控制器写入一群的数据至一个单层单元数据区块时,所述闪存控制器将所述单层单元数据区块的所有字符线依顺序每M条字符线编类为一组字符线,以产生多组奇数组的字符线及多组偶数组的字符线,以及对一组奇数组的每一条字符线及一组偶数组的每一条字符线,分别执行不同M次的异或运算的编码操作,产生所述多组奇数组的每一条字符线的M个部分校验码以及所述多组偶数组的每一条字符线的M个部分校验码,写入并存储所述多组奇数组的每一条字符线的M个部分校验码于所述多组奇数组字符线中最后M条字符线的最后一个数据页、写入并存储所述多组偶数组的每一条字符线的M个部分校验码于所述多组偶数组字符线中最后M条字符线的最后一个数据页。
5.如权利要求1所述的闪存装置,其特征在于,当进行内存垃圾回收时,所述闪存控制器从外部读取出所述多个单层单元数据区块的数据并进行重新编码与写入,或从外部读取出所述多层单元数据区块并进行重新编码与写入。
6.如权利要求1所述的闪存装置,其特征在于,当写入数据至一个单层单元数据区块且突然发生关机时,所述闪存控制器从所述单层单元数据区块读回数据并重新进行编码、写入数据至另一个单层单元数据区块。
7.如权利要求1所述的闪存装置,其特征在于,当写入数据至所述多层单元数据区块且突然发生关机时,所述闪存控制器放弃所述多层单元数据区块所存储的数据,并执行所述内部复制,从所述多个单层单元数据区块搬移写入数据至所述多层单元数据区块。
8.如权利要求1所述的闪存装置,其特征在于,当写入数据至所述多个单层单元数据区块时,所述闪存控制器依据所述多层单元数据区块的一随机数种子数规则,写入数据至所述多个单层单元数据区块。
9.一种闪存存储管理方法,其特征在于,包含有:
提供一闪存模块,所述闪存模块包括多个单层单元数据区块以及多层单元数据区块;
将一笔欲写入的数据分类为多群的数据;
分别执行单层单元数据写入以及执行一个类似容错式磁盘阵列的异或运算的错误更正编码操作产生对应的校验码,以将所述多群的数据以及所述对应的校验码写入至所述多个单层单元数据区块;
当完成所述多个单层单元数据区块的写入时,执行内部复制,将所述多个单层单元数据区块所存储的所述多群的数据以及所述对应的校验码,依数据的先后顺序,依序搬移写入至所述多层单元数据区块。
10.如权利要求9所述的闪存存储管理方法,其特征在于,所述多层单元数据区块的单元可存储具有2N位的信息,N大于等于2并为整数,所述多个单层单元数据区块为N个单层单元数据区块,以及将所述一笔欲写入的数据分类为所述多群的数据的步骤包括:将所述一笔欲写入的数据分类为N个群的数据,以分别写入至所述N个单层单元数据区块。
11.如权利要求10所述的闪存存储管理方法,其特征在于,N等于3,所述多层单元数据区块为三层单元数据区块,以及将所述一笔欲写入的数据分类为N个群的数据以分别写入至所述N个单层单元数据区块的步骤包括:将所述一笔欲写入的数据分类为三个群的数据,以分别写入至三个单层单元数据区块。
12.如权利要求10所述的闪存存储管理方法,其特征在于,执行单层单元数据写入的步骤包括:
当写入一群的数据至一个单层单元数据区块时,将所述单层单元数据区块的所有字符线依顺序每M条字符线编类为一组字符线,以产生多组奇数组的字符线及多组偶数组的字符线;
对一组奇数组的每一条字符线及一组偶数组的每一条字符线,分别执行不同M次的异或运算的编码操作,产生所述多组奇数组的每一条字符线的M个部分校验码以及所述多组偶数组的每一条字符线的M个部分校验码;以及
写入并存储所述多组奇数组的每一条字符线的M个部分校验码于所述多组奇数组字符线中最后M条字符线的最后一个数据页、写入并存储所述多组偶数组的每一条字符线的M个部分校验码于所述多组偶数组字符线中最后M条字符线的最后一个数据页。
13.如权利要求9所述的闪存存储管理方法,其特征在于,另包含有:
当进行内存垃圾回收时,从外部读取出所述多个单层单元数据区块的数据并进行重新编码与写入,或从外部读取出所述多层单元数据区块并进行重新编码与写入。
14.如权利要求9所述的闪存存储管理方法,其特征在于,另包含有:
当写入数据至一个单层单元数据区块且突然发生关机时,从所述单层单元数据区块读回数据并重新进行编码、写入数据至另一个单层单元数据区块。
15.如权利要求9所述的闪存存储管理方法,其特征在于,另包含有:
当写入数据至所述多层单元数据区块且突然发生关机时,放弃所述多层单元数据区块所存储的数据,并执行所述内部复制,从所述多个单层单元数据区块搬移写入数据至所述多层单元数据区块。
16.如权利要求9所述的闪存存储管理方法,其特征在于,另包含有:
当写入数据至所述多个单层单元数据区块时,依据所述多层单元数据区块的随机数种子数规则,写入数据至所述多个单层单元数据区块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010384012.4A CN111710358B (zh) | 2016-04-27 | 2017-04-26 | 闪存装置、闪存控制器及闪存存储管理方法 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662328025P | 2016-04-27 | 2016-04-27 | |
US62/328,025 | 2016-04-27 | ||
TW106105508 | 2017-02-20 | ||
TW106105508A TWI618070B (zh) | 2016-04-27 | 2017-02-20 | 快閃記憶體裝置及快閃記憶體儲存管理方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010384012.4A Division CN111710358B (zh) | 2016-04-27 | 2017-04-26 | 闪存装置、闪存控制器及闪存存储管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107403646A CN107403646A (zh) | 2017-11-28 |
CN107403646B true CN107403646B (zh) | 2020-06-09 |
Family
ID=60158357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710283438.9A Active CN107403646B (zh) | 2016-04-27 | 2017-04-26 | 闪存装置及闪存存储管理方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9910772B2 (zh) |
CN (1) | CN107403646B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10019314B2 (en) | 2016-04-27 | 2018-07-10 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
US10289487B2 (en) | 2016-04-27 | 2019-05-14 | Silicon Motion Inc. | Method for accessing flash memory module and associated flash memory controller and memory device |
US10133664B2 (en) | 2016-04-27 | 2018-11-20 | Silicon Motion Inc. | Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips |
CN111679787B (zh) | 2016-04-27 | 2023-07-18 | 慧荣科技股份有限公司 | 闪存装置、闪存控制器及闪存存储管理方法 |
CN107391026B (zh) * | 2016-04-27 | 2020-06-02 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
JP6677627B2 (ja) * | 2016-12-20 | 2020-04-08 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置およびメモリアクセス方法 |
JP2018163434A (ja) * | 2017-03-24 | 2018-10-18 | 東芝メモリ株式会社 | メモリシステム |
US10732838B2 (en) * | 2017-11-29 | 2020-08-04 | Western Digital Technologies, Inc. | Logical grouping for hybrid dual write |
CN108089892B (zh) * | 2017-12-13 | 2021-06-29 | 深圳市创维软件有限公司 | 一种系统安全启动的方法、装置、机顶盒及存储介质 |
TWI658364B (zh) * | 2018-03-20 | 2019-05-01 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
CN109032532B (zh) * | 2018-08-28 | 2021-07-13 | 深圳忆联信息系统有限公司 | 闪存存储管理方法及闪存装置 |
CN109542671B (zh) * | 2018-11-30 | 2022-06-07 | 湖南国科微电子股份有限公司 | 校验数据生成方法及固态硬盘 |
KR20200095684A (ko) * | 2019-02-01 | 2020-08-11 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 |
US11288181B2 (en) * | 2019-03-07 | 2022-03-29 | Silicon Motion, Inc. | Flash memory initialization scheme for writing boot up information into selected pages averagely and randomly distributed over more pages and correspondingly method for reading boot up information from selected pages |
CN110457233A (zh) * | 2019-08-10 | 2019-11-15 | 深圳市德名利电子有限公司 | 一种基于混合大小单元的闪存管理方法和装置以及设备 |
CN111221747B (zh) * | 2020-01-10 | 2022-02-18 | 深圳市德明利光电有限公司 | 一种随机种子保存的方法、装置、存储介质及计算机设备 |
CN111796774B (zh) * | 2020-07-07 | 2024-03-08 | 深圳宏芯宇电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制器 |
US20220222008A1 (en) * | 2021-01-14 | 2022-07-14 | Silicon Motion, Inc. | Method for managing flash memory module and associated flash memory controller and memory device |
CN114115745B (zh) * | 2021-11-30 | 2023-07-04 | 深圳忆联信息系统有限公司 | 多Pass编程NAND的RAID优化方法、装置及计算机设备 |
CN114610542B (zh) * | 2022-05-10 | 2023-03-14 | 深圳佰维存储科技股份有限公司 | 数据恢复方法、装置、可读存储介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110481A (zh) * | 2009-12-24 | 2011-06-29 | 海力士半导体有限公司 | 具有ecc电路的半导体存储系统及其控制方法 |
CN103038830A (zh) * | 2010-03-23 | 2013-04-10 | 苹果公司 | 借助元数据标签的非规则奇偶校验分布检测 |
CN104750615A (zh) * | 2013-12-26 | 2015-07-01 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN105280238A (zh) * | 2014-06-17 | 2016-01-27 | 慧荣科技股份有限公司 | 用来控制一记忆装置的方法以及记忆装置与控制器 |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
JP4504138B2 (ja) * | 2004-09-03 | 2010-07-14 | 株式会社東芝 | 記憶システム及びそのデータコピー方法 |
US7710777B1 (en) * | 2006-12-20 | 2010-05-04 | Marvell International Ltd. | Semi-volatile NAND flash memory |
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 |
JP5166074B2 (ja) | 2008-02-29 | 2013-03-21 | 株式会社東芝 | 半導体記憶装置、その制御方法、および誤り訂正システム |
KR101398212B1 (ko) * | 2008-03-18 | 2014-05-26 | 삼성전자주식회사 | 메모리 장치 및 인코딩/디코딩 방법 |
US8327066B2 (en) | 2008-09-30 | 2012-12-04 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
US20100332922A1 (en) | 2009-06-30 | 2010-12-30 | Mediatek Inc. | Method for managing device and solid state disk drive utilizing the same |
JP5349256B2 (ja) * | 2009-11-06 | 2013-11-20 | 株式会社東芝 | メモリシステム |
KR101650130B1 (ko) | 2010-05-14 | 2016-08-24 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법 |
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 | 삼성전자주식회사 | 메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법 |
KR20130049332A (ko) | 2011-11-04 | 2013-05-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 | 삼성전자주식회사 | 비휘발성 메모리 장치의 프로그램 방법 및 그것의 메모리 시스템 |
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 | 삼성전자주식회사 | 메모리 시스템 및 그것의 읽기 교정 방법 |
CN103839594A (zh) | 2012-11-27 | 2014-06-04 | 建兴电子科技股份有限公司 | 固态储存装置及其联合编解码方法 |
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 | 삼성전자 주식회사 | 에러 정정회로를 포함하는 반도체 메모리 장치 및 반도체 메모리 장치의 동작방법 |
US8972776B2 (en) | 2013-03-06 | 2015-03-03 | Seagate Technology, Llc | Partial R-block recycling |
US9672910B2 (en) | 2013-04-30 | 2017-06-06 | International Business Machines Corporation | Memory architecture for storing data in a plurality of memory chips |
CN104425019B (zh) | 2013-08-23 | 2018-07-06 | 慧荣科技股份有限公司 | 存取快闪存储器中存储单元的方法以及使用该方法的装置 |
CN104424040B (zh) | 2013-08-23 | 2017-10-31 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN104424127A (zh) | 2013-08-23 | 2015-03-18 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
US9424126B2 (en) | 2013-09-03 | 2016-08-23 | Kabushiki Kaisha Toshiba | Memory controller |
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 |
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 |
KR102289919B1 (ko) * | 2014-04-15 | 2021-08-12 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 |
US20160062829A1 (en) * | 2014-08-29 | 2016-03-03 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
KR102233074B1 (ko) | 2014-10-08 | 2021-03-30 | 삼성전자주식회사 | 저장 장치 및 그것의 신뢰성 검증 방법 |
KR20160046391A (ko) * | 2014-10-20 | 2016-04-29 | 삼성전자주식회사 | 하이브리드 딤 스트럭쳐 및 하이브리드 딤 스트럭쳐의 구동 방법 |
US9959059B2 (en) * | 2014-10-20 | 2018-05-01 | Sandisk Technologies Llc | Storage error management |
KR102355580B1 (ko) * | 2015-03-02 | 2022-01-28 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 포함하는 저장 장치 및 그것의 동작 방법 |
KR102372825B1 (ko) | 2015-07-31 | 2022-03-14 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
TWI575531B (zh) | 2015-08-10 | 2017-03-21 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
CN107391026B (zh) | 2016-04-27 | 2020-06-02 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
KR102653401B1 (ko) * | 2016-07-18 | 2024-04-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
-
2017
- 2017-04-25 US US15/497,185 patent/US9910772B2/en active Active
- 2017-04-26 CN CN201710283438.9A patent/CN107403646B/zh active Active
-
2018
- 2018-01-01 US US15/859,724 patent/US10019355B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110481A (zh) * | 2009-12-24 | 2011-06-29 | 海力士半导体有限公司 | 具有ecc电路的半导体存储系统及其控制方法 |
CN103038830A (zh) * | 2010-03-23 | 2013-04-10 | 苹果公司 | 借助元数据标签的非规则奇偶校验分布检测 |
CN104750615A (zh) * | 2013-12-26 | 2015-07-01 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN105280238A (zh) * | 2014-06-17 | 2016-01-27 | 慧荣科技股份有限公司 | 用来控制一记忆装置的方法以及记忆装置与控制器 |
Also Published As
Publication number | Publication date |
---|---|
US10019355B2 (en) | 2018-07-10 |
CN107403646A (zh) | 2017-11-28 |
US20170315908A1 (en) | 2017-11-02 |
US20180121347A1 (en) | 2018-05-03 |
US9910772B2 (en) | 2018-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391026B (zh) | 闪存装置及闪存存储管理方法 | |
CN107403646B (zh) | 闪存装置及闪存存储管理方法 | |
CN111710358B (zh) | 闪存装置、闪存控制器及闪存存储管理方法 | |
US20240154624A1 (en) | Flash memory apparatus and storage management method for flash memory | |
TWI855978B (zh) | 快閃記憶體裝置及快閃記憶體儲存管理方法 | |
TW202431265A (zh) | 快閃記憶體裝置及快閃記憶體儲存管理方法 | |
TW202433301A (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 |