CN110147295B - 存取闪存模块的方法、闪存控制器以及记忆装置 - Google Patents
存取闪存模块的方法、闪存控制器以及记忆装置 Download PDFInfo
- Publication number
- CN110147295B CN110147295B CN201910231128.1A CN201910231128A CN110147295B CN 110147295 B CN110147295 B CN 110147295B CN 201910231128 A CN201910231128 A CN 201910231128A CN 110147295 B CN110147295 B CN 110147295B
- Authority
- CN
- China
- Prior art keywords
- flash memory
- data
- error correction
- nth
- correction codes
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/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/1048—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 using arrangements adapted for a specific error detection or correction feature
-
- 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
-
- 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
- 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
- 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/5642—Sensing or reading circuits; Data output 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/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/109—Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or 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/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)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
Abstract
本发明公开了一种存取一闪存模块的方法,包括:依序将第N~(N+K)笔资料分别写入至所述闪存模块中的多个闪存芯片,并分别对所述第N~(N+K)笔数据进行编码以产生第N~(N+K)组错误更正码,其中所述第N~(N+K)组错误更正码是分别用来对写入至所述多个闪存芯片中的所述第N~(N+K)笔数据进行错误更正,其中N、K为一正整数;以及将第(N+K+1)笔数据写入至所述闪存模块中的所述多个闪存芯片,并使用所述第N~(N+K)组错误更正码中至少其一来与所述第(N+K+1)笔数据一并进行编码,以产生第(N+K+1)组错误更正码。通过实施本发明,可有效地节省闪存控制器中的存储器需求,还可更进一步确保数据的安全性。
Description
本申请是申请日为2016年07月27日、申请号为201610599287.3、发明名称为“存取闪存模块的方法、闪存控制器以及记忆装置”的发明专利申请的分案申请。
技术领域
本发明是涉及闪存,尤其涉及一种存取闪存模块的方法及相关的闪存控制器与记忆装置。
背景技术
为了让闪存能够有更高的密度以及更大的容量,闪存的制程也朝向立体化的发展,而产生了几种不同的立体NAND型闪存(3D NAND-type flash)。在立体NAND型闪存中,由于整体结构的不同以及浮闸形状位置的改变,因此在数据的写入以及读取上也较传统的平面NAND型闪存多出了些许的问题。举例来说,在某些立体NAND型闪存中,会将多条字线(word line)定义为一字线组,而所述字线组会共同具有部分的控制电路,进而导致当数据写入到所述字线组的一条字在线的浮闸晶体管发生失败时(写入失败),会连带导致所述字线组的其他字在线的浮闸晶体管的数据发生错误;此外,若是所述字线组中的一条字线发生断路或短路的状况时,也会连带影响到所述字线组的其他字在线的浮闸晶体管的数据发生错误,因此,如何就上述问题提出一种错误更正方式,以尽可能地维持数据的正确性,且又不会浪费存储器空间以节省成本,是一个重要的课题。
发明内容
因此,本发明的目的之一在于公开一种存取一闪存模块的方法及相关的闪存控制器与记忆装置,其使用类似容错式磁盘阵列(Redundant Array of Independent Disks,RAID)的错误更正方式,但是却不会大幅浪费存储器空间,以解决现有技术中的问题。
本发明的一实施例公开了一种存取一闪存模块的方法,所述方法包括:对第N笔数据进行编码以产生一第N组错误更正码,其中所述第N组错误更正码是用来对所述第N笔数据进行错误更正,其中N为一正整数;将所述第N笔资料写入至所述闪存模块中;将所述第N组错误更正码写入至所述闪存模块中;当所述第N笔数据成功写入至所述闪存模块后,删除所述闪存模块中的所述第N组错误更正码中至少一部分,但在所述闪存模块中保留所述第N笔数据。
本发明的另一实施例公开了一种存取一闪存模块的方法,所述方法包括:将第N笔数据写入至所述闪存模块中的多个闪存芯片,并对所述第N笔数据进行编码以产生一第N组错误更正码,其中所述第N组错误更正码是用来对写入至所述多个闪存芯片中的所述第N笔数据进行错误更正,其中N为一正整数;当判断所述第N笔数据已成功写入至所述多个闪存芯片中之后,保留所述第N组错误更正码;依序将第(N+1)~(N+M)笔资料分别写入至所述闪存模块中的所述多个闪存芯片,并分别对所述第(N+1)~(N+M)笔数据进行编码以产生第(N+1)~(N+M)组错误更正码,其中所述第(N+1)~(N+M)组错误更正码是分别用来对写入至所述多个闪存芯片中的所述第(N+1)~(N+M)笔数据进行错误更正,其中M为一正整数;以及当判断所述第(N+M)笔数据已成功写入至所述多个闪存芯片中时,才删除所述第N~(N+M)组错误更正码。
本发明的另一实施例公开了一种闪存控制器,其中所述闪存控制器是用来存取一闪存模块,且所述闪存控制器包括:一存储器,用来储存一程序代码;一微处理器,用来执行所述程序代码以控制对所述闪存模块的存取;以及一编码器;其中所述微处理器对第N笔数据进行编码以产生一第N组错误更正码,其中所述第N组错误更正码是用来对所述第N笔数据进行错误更正,其中N为一正整数;所述微处理器将所述第N笔资料写入至所述闪存模块中,并将所述第N组错误更正码写入至所述闪存模块中;当所述第N笔资料成功写入至所述闪存模块后,所述微处理器删除所述闪存模块中的所述第N组错误更正码中至少一部分,但在所述闪存模块中保留所述第N笔数据。
本发明的另一实施例公开了一种闪存控制器,其中所述闪存控制器是用来存取一闪存模块,且所述闪存控制器包括:一存储器,用来储存一程序代码;一微处理器,用来执行所述程序代码以控制对所述闪存模块的存取;以及一编码器;其中所述微处理器将第N笔数据写入至所述闪存模块中的多个闪存芯片,且所述编码器对所述第N笔数据进行编码以产生一第N组错误更正码,其中所述第N组错误更正码是用来对写入至所述多个闪存芯片中的所述第N笔数据进行错误更正,其中N为一正整数;当所述微处理器判断所述第N笔资料已成功写入至所述多个闪存芯片中之后,保留所述第N组错误更正码;所述微处理器依序将第(N+1)~(N+M)笔资料分别写入至所述闪存模块中的所述多个闪存芯片,且所述编码器分别对所述第(N+1)~(N+M)笔数据进行编码以产生第(N+1)~(N+M)组错误更正码,其中所述第(N+1)~(N+M)组错误更正码是分别用来对写入至所述多个闪存芯片中的所述第(N+1)~(N+M)笔数据进行错误更正,其中M为一正整数;以及当所述微处理器判断所述第(N+M)笔资料已成功写入至所述多个闪存芯片中时,才删除所述第N~(N+M)组错误更正码。
本发明的另一实施例公开了一种记忆装置,包括:一闪存模块;以及一闪存控制器,用来存取所述闪存;其中所述闪存控制器对第N笔数据进行编码以产生一第N组错误更正码,其中所述第N组错误更正码是用来对所述第N笔数据进行错误更正,其中N为一正整数;将所述第N笔资料写入至所述闪存模块中;将所述第N组错误更正码写入至所述闪存模块中;所述第N笔数据成功写入至所述闪存模块后,删除所述闪存模块中的所述第N组错误更正码中至少一部分,但在所述闪存模块中保留所述第N笔数据。
本发明的另一实施例公开了一种记忆装置,包括:一闪存模块;以及一闪存控制器,用来存取所述闪存;其中所述闪存控制器将第N笔数据写入至所述闪存模块中的多个闪存芯片,且对所述第N笔数据进行编码以产生一第N组错误更正码,其中所述第N组错误更正码是用来对写入至所述多个闪存芯片中的所述第N笔数据进行错误更正,其中N为一正整数;当所述闪存控制器判断所述第N笔数据已成功写入至所述多个闪存芯片中之后,保留所述第N组错误更正码;所述闪存控制器依序将第(N+1)~(N+M)笔资料分别写入至所述闪存模块中的所述多个闪存芯片,并分别对所述第(N+1)~(N+M)笔数据进行编码以产生第(N+1)~(N+M)组错误更正码,其中所述第(N+1)~(N+M)组错误更正码是分别用来对写入至所述多个闪存芯片中的所述第(N+1)~(N+M)笔数据进行错误更正,其中M为一正整数;以及当判断所述第(N+M)笔数据已成功写入至所述多个闪存芯片中时,所述闪存控制器才删除所述第N~(N+M)组错误更正码。
本发明的另一实施例公开了一种存取一闪存模块的方法,所述方法包括:依序将第N~(N+K)笔资料分别写入至所述闪存模块中的多个闪存芯片,并分别对所述第N~(N+K)笔数据进行编码以产生第N~(N+K)组错误更正码,其中所述第N~(N+K)组错误更正码是分别用来对写入至所述多个闪存芯片中的所述第N~(N+K)笔数据进行错误更正,其中N、K为一正整数;以及将第(N+K+1)笔数据写入至所述闪存模块中的所述多个闪存芯片,并使用所述第N~(N+K)组错误更正码中至少其一来与所述第(N+K+1)笔数据一并进行编码,以产生第(N+K+1)组错误更正码。
本发明的另一实施例公开了一种闪存控制器,其中所述闪存控制器是用来存取一闪存模块,且所述闪存控制器包括:一存储器,用来储存一程序代码;一微处理器,用来执行所述程序代码以控制对所述闪存模块的存取;以及一编码器;其中所述微处理器依序将第N~(N+K)笔资料分别写入至所述闪存模块中的多个闪存芯片,且所述编码器分别对所述第N~(N+K)笔数据进行编码以产生第N~(N+K)组错误更正码,其中所述第N~(N+K)组错误更正码是分别用来对写入至所述多个闪存芯片中的所述第N~(N+K)笔数据进行错误更正,且N、K为一正整数;以及所述微处理器将第(N+K+1)笔资料写入至所述闪存模块中的所述多个闪存芯片,且所述编码器使用所述第N~(N+K)组错误更正码中至少其一来与所述第(N+K+1)笔数据一并进行编码,以产生第(N+K+1)组错误更正码。
本发明的另一实施例公开了一种记忆装置,包括:一闪存模块;以及一闪存控制器,用来存取所述闪存;其中所述闪存控制器依序将第N~(N+K)笔数据分别写入至所述闪存模块中的多个闪存芯片,并分别对所述第N~(N+K)笔数据进行编码以产生第N~(N+K)组错误更正码,其中所述第N~(N+K)组错误更正码是分别用来对写入至所述多个闪存芯片中的所述第N~(N+K)笔数据进行错误更正,且N、K为一正整数;以及所述闪存控制器将第(N+K+1)笔数据写入至所述闪存模块中的所述多个闪存芯片,且使用所述第N~(N+K)组错误更正码中至少其一来与所述第(N+K+1)笔数据一并进行编码,以产生第(N+K+1)组错误更正码。
附图说明
图1为依据本发明一实施例的一种记忆装置的示意图。
图2为一立体NAND型闪存的范例示意图。
图3为浮闸晶体管结构的概念示意图。
图4为一区块中多个字线组的示意图。
图5为闪存控制器将数据写入到闪存模块的示意图。
图6为依据本发明一第一实施例的闪存控制器将数据写入到超级区块的示意图。
图7为依据本发明一实施例的存取闪存模块的方法的流程图。
图8为依据本发明一第二实施例的闪存控制器将数据写入到超级区块的示意图。
图9为依据本发明一实施例的存取闪存模块的方法的流程图。
图10为依据本发明一第三实施例的闪存控制器将数据写入到超级区块的示意图。
图11为依据本发明一实施例的存取闪存模块的方法的流程图。
其中,附图标记说明如下:
100 记忆装置
110 闪存控制器
112 微处理器
112C 程序代码
112M 只读存储器
114 控制逻辑
116 缓冲存储器
118 接口逻辑
120 闪存模块
132 第一编译码器
134 第二编译码器
202 浮闸晶体管
510、520 通道
512、514、516、518 闪存芯片
530 超级区块
700~708、900~904、1100~1104 步骤
B1~B3 位线
WL0~WL47 字线
WL_G0~WL_G47 字线组
具体实施方式
请参考图1,图1为依据本发明一实施例的一种记忆装置100的示意图,其中本实施例的记忆装置100尤其是可携式记忆装置(例如:符合SD/MMC、CF、MS、XD标准的记忆卡)。记忆装置100包括一闪存(Flash Memory)模块120以及一闪存控制器110,且闪存控制器110用来存取闪存模块120。依据本实施例,闪存控制器110包括一微处理器112、一只读存储器(Read Only Memory,ROM)112M、一控制逻辑114、一缓冲存储器116、与一接口逻辑118。只读存储器是用来储存一程序代码112C,而微处理器112则用来执行程序代码112C以控制对闪存模块120的存取(Access)。
于典型状况下,闪存模块120包括多个区块(Block),而所述控制器(例如:通过微处理器112执行程序代码112C的闪存控制器110)对闪存模块120进行复制、抹除、合并数据等运作是以区块为单位来进行复制、抹除、合并数据。另外,一区块可记录特定数量的数据页(Page),其中所述控制器(例如:通过微处理器112执行程序代码112C的存储器控制器110)对闪存模块120进行写入数据的运作是以数据页为单位来进行写入。
实作上,通过微处理器112执行程序代码112C的闪存控制器110可利用其本身内部的组件来进行诸多控制运作,例如:利用控制逻辑114来控制闪存模块120的存取运作(尤其是对至少一区块或至少一数据页的存取运作)、利用缓冲存储器116进行所需的缓冲处理、以及利用接口逻辑118来与一主装置(Host Device)沟通。
另一方面,在本实施例中,控制逻辑114包括了一第一编译码器(codec)132以及一第二编译码器134,其中第一编译码器132是用来对写入到闪存模块120的一区块中的数据进行编码,以产生对应的错误更正码(error correction code),其中第一编译码器132所产生的错误更正码仅是根据写入到一资料页中一区段(sector)的内容所产生的,且所产生的错误更正码会连同所述区段的数据内容一并写入到所述数据页中。另外,第二编译码器134为一容错式磁盘阵列(RAID)编译码器,其是用来对写入至多个闪存芯片中的数据进行编码,以产生对应的错误更正码,其操作将于以下内容中详述。
在本实施例中,闪存模块120是一立体NAND型闪存(3D NAND-type flash)模块,请参考图2,其为一立体NAND型闪存的范例示意图,如图2所示,立体NAND型闪存包括了多个浮闸晶体管202,其通过多条位线(图示仅绘示了BL1~BL3)及多条字线(例如图示的WL1~WL3)来构成立体NAND型闪存架构。在图2中,以最上面的一个平面为例,字线WL0上的所有浮闸晶体管构成了至少一数据页,字线WL1上的所有浮闸晶体管构成了另至少一数据页,而字线WL2的所有浮闸晶体管构成了再另至少一资料页…以此类堆。此外,根据闪存写入方式的不同,字线WL0与数据页(逻辑数据页)之间的定义也会有所不同,详细来说,当使用单层式储存(Single-Level Cell,SLC)的方式写入时,字线WL0上的所有浮闸晶体管仅对应到单一逻辑数据页;当使用多层式储存(Multiple-Level Cell,MLC)的方式写入时,字线WL0上的所有浮闸晶体管仅对应到两个逻辑数据页;当使用三层式储存(Triple-Level Cell,TLC)的方式写入时,字线WL0上的所有浮闸晶体管仅对应到三个逻辑数据页;以及当使用四层式储存(Quad-Level Cell,QLC)的方式写入时,字线WL0上的所有浮闸晶体管仅对应到四个逻辑数据页。由于本技术领域中具有通常知识者应能了解立体NAND型闪存的结构以及字线及数据页之间的关系,故相关的细节在此不予赘述。另外,在闪存控制器110的操作中,“数据页”为一最小写入单位,且“区块”为一最小抹除单位。
请参考图3,其为浮闸晶体管202结构的概念示意图,如图3所示,每一个浮闸晶体管的闸极及浮闸是围绕在源极与汲极周围(gate all around),以增强通道感应能力。
需注意的是,图2、3所示的仅为立体NAND型闪存与浮闸晶体管202的范例,而并非是作为本发明的限制,本技术领域中具有通常知识者应能了解立体NAND型闪存尚有其他种型式,例如部分的字线可彼此连接..等等,且浮闸晶体管202的设计也能有些许的改变。
如现有技术中所述,在某些立体NAND型闪存中,会将多条字线定义为一字线组,而所述字线组会共同具有部分的控制电路,进而导致当数据写入到所述字线组的一条字在线的浮闸晶体管发生失败时(写入失败),会连带导致所述字线组的其他字在线的浮闸晶体管的数据发生错误。举例来说,参考图4,其为一区块中多个字线组的示意图,在图4中是假设所述区块包括了192条字在线的所有浮闸晶体管,且一个字线组包括了4条字线,因此,在图4中的区块是包括了48个字线组WL_G0~WL_G47;另外,在图4中所述区块为三层式储存(TLC)区块,也就是说,每一条字在线的浮闸晶体管可用来储存三个数据页的数据,如图4所示,以字线组WL_G0为例,其包括的字线WL0上的浮闸晶体管可用来储存低数据页P0L、中间数据页P0M及高数据页P0U,字线WL1上的浮闸晶体管可用来储存低数据页P1L、中间数据页P1M及高数据页P1U,字线WL2上的浮闸晶体管可用来储存低数据页P2L、中间数据页P2M及高数据页P2U,以及字线WL3上的浮闸晶体管可用来储存低数据页P3L、中间数据页P3M及高数据页P3U。当控制器中将数据写入到字线组WL_G0的数据页中时,是循序将数据写入到字线WL0、WL1、WL2、WL3中的浮闸晶体管,而假设字线WL0、WL1上的数据都成功写入正确,但是当数据写入字线WL2时发生写入错误,则会连带使得字线WL0、WL1上原本写入成功的数据也发生错误,因此,在以下的实施例中将叙述如何修正此一错误的方法。
先参考图5,图5为闪存控制器110将数据写入到闪存模块120的示意图。如图5所示,闪存模块120包括了多个通道(在本实施例中,是以两个通道510、520为例),且每一个通道在闪存控制器110中有各自的串行传输器(sequencer)且均包括了多个闪存芯片,而在本实施例中通道510包括了闪存芯片512、514,且通道520包括了闪存芯片522、524。另外,每一个闪存芯片512、514、522、524中的一个区块会被组态为一个超级区块(super block)530,而闪存控制器110会将数据以超级区块530为单位来进行写入。
请同时参考图5、6,其中图6为依据本发明一第一实施例的闪存控制器110将数据写入到超级区块530的示意图,其中在以下的叙述中,每一笔数据是写入到闪存芯片512、514、522、524的一个数据页,也就是说,第1笔数据会被写入到每一个闪存芯片512、514、522、524中的第一个资料页P0,第2笔资料会被写入到每一个闪存芯片512、514、522、524中的第二个资料页P1,…,第N笔资料会被写入到每一个闪存芯片512、514、522、524中的第N个资料页P(N-1)。参考图6,当闪存控制器110需要将第1笔数据写入至超级区块530中时,首先,闪存控制器110中的第二编译码器134会先对第1笔数据进行编码以产生第1组错误更正码S0,其中第二编译码器134可以采用里德-所罗门(Reed Solomon,RS)编码方式或是互斥或(exclusive-OR,XOR)运算来对写入到每一个闪存芯片512、514、522、524中的第一个数据页P0的数据进行编码,以产生第1组错误更正码S0;接着,第一编译码器132分别对第1笔数据进行编码以产生对应的错误更正码,并将第一笔数据与第一编译码器132所产生的错误更正码一并写入到每一个闪存芯片512、514、522、524中的第一个资料页P0中,详细来说,第一编译码器132对第1笔数据中第一部分数据进行编码以产生错误更正码,并将第一部分数据与其错误更正码写入到闪存芯片512的第一个数据页P0;第一编译码器132对第1笔数据中第二部分数据进行编码以产生错误更正码,并将第二部分数据与其错误更正码写入到闪存芯片514的第一个数据页P0;第一编译码器132对第1笔数据中第三部分数据进行编码以产生错误更正码,并将第三部分数据与其错误更正码写入到闪存芯片522的第一个数据页P0;以及第一编译码器132对第1笔数据中第四部分数据(最后一部分数据)进行编码以产生错误更正码,并将第四部分数据与其错误更正码写入到闪存芯片524的第一个数据页P0。
第二编译码器134所产生的第1组错误更正码S0是用来当闪存芯片512、514、522或524中的第一个数据页P0发生数据错误时进行错误更正,举例来说,假设当闪存芯片512中的第一个数据页P0的数据发生无法利用本身的数据进行更正的错误时,第二编译码器134可以读取闪存芯片512、514、522、524中所有第一个数据页P0的数据,再加上第1组错误更正码S0,来进行错误更正。
另外,在第1笔数据写入的过程中,闪存控制器110会对写入的数据进行读取检查的操作,以确定数据是否成功写入,而在闪存控制器110判断第1笔数据已经成功写入到闪存芯片512、514、522、524中第一个数据页P0后,闪存控制器110保留第1组错误更正码S0。其中,闪存控制器110可以先暂时将第1组错误更正码S0储存在本身的存储器中,或是将第1组错误更正码S0通过第一编译码器132进行编码后存入到闪存芯片512、514、522、524中的一特定区块中,且所述特定区块不属于超级区块530中的资料页。
接着,当闪存控制器110需要将第2笔数据写入至超级区块530中时,首先,闪存控制器110中的第二编译码器134会先对第2笔数据进行编码以产生第2组错误更正码S1,其中第二编译码器134可以采用里德-所罗门编码方式或是互斥或运算来对写入到每一个闪存芯片512、514、522、524中的第二个数据页P1的数据进行编码,以产生第2组错误更正码S1;接着,第一编译码器132分别对第2笔数据进行编码以产生对应的错误更正码,并将第二笔数据与第一编译码器132所产生的错误更正码一并写入到每一个闪存芯片512、514、522、524中的第二个资料页P1中。另外,在第2笔数据写入的过程中,闪存控制器110会对写入的数据进行读取检查的操作,以确定数据是否成功写入,而在闪存控制器110判断第2笔数据已经成功写入到闪存芯片512、514、522、524中第二个数据页P1后,闪存控制器110保留第2组错误更正码S1。其中,闪存控制器110可以先暂时将第2组错误更正码S1储存在本身的存储器中,或是将第2组错误更正码S1存入到闪存芯片512、514、522、524中的所述特定区块中,且所述特定区块不属于超级区块530。
当第2笔数据写入的过程中也发生写入错误的情形,则由于P1、P0是属于同一个字线组WL_G0,因此,闪存芯片512、514、522、524中的数据页P0也有可能发生损坏。举例来说,假设闪存芯片514的数据页P1在数据写入的过程中发生错误,则现有以成功写入的闪存芯片514的数据页P0也会发生错误,因此,现有所保留下来的第1组错误更正码S0便可以在之后用来更正数据页P0的错误。
接着,当闪存控制器110需要将第3笔数据写入至超级区块530中时,首先,闪存控制器110中的第二编译码器134会先对第3笔数据进行编码以产生第3组错误更正码S2,其中第二编译码器134可以采用里德-所罗门编码方式或是互斥或运算来对写入到每一个闪存芯片512、514、522、524中的第三个数据页P2的数据进行编码,以产生第3组错误更正码S2;接着,第一编译码器132分别对第3笔数据进行编码以产生对应的错误更正码,并将第三笔数据与第一编译码器132所产生的错误更正码一并写入到每一个闪存芯片512、514、522、524中的第三个资料页P2中。另外,在第3笔数据写入的过程中,闪存控制器110会对写入的数据进行读取检查的操作,以确定数据是否成功写入,而在闪存控制器110判断第3笔数据已经成功写入到闪存芯片512、514、522、524中第三个数据页P2后,闪存控制器110保留第3组错误更正码S2。其中,闪存控制器110可以先暂时将第3组错误更正码S2储存在本身的存储器中,或是将第3组错误更正码S2存入到闪存芯片512、514、522、524中的所述特定区块中,且所述特定区块不属于超级区块530。
接着,当闪存控制器110需要将第4笔数据写入至超级区块530中时,首先,闪存控制器110中的第二编译码器134会先对第4笔数据进行编码以产生第4组错误更正码S3,其中第二编译码器134可以采用里德-所罗门编码方式或是互斥或运算来对写入到每一个闪存芯片512、514、522、524中的第四个数据页P3的数据进行编码,以产生第4组错误更正码S3;接着,第一编译码器132分别对第4笔数据进行编码以产生对应的错误更正码,并将第四笔数据与第一编译码器132所产生的错误更正码一并写入到每一个闪存芯片512、514、522、524中的第四个资料页P3中。另外,在第4笔数据写入的过程中,闪存控制器110会对写入的数据进行读取检查的操作,以确定数据是否成功写入,而在闪存控制器110判断第4笔数据已经成功写入到闪存芯片512、514、522、524中第四个数据页P2后,闪存控制器110保留第4组错误更正码S3。其中,闪存控制器110可以先暂时将第4组错误更正码S3储存在本身的存储器中,或是将第4组错误更正码S3存入到闪存芯片512、514、522、524中的所述特定区块中,且所述特定区块不属于超级区块530。
同样地,当第3、4笔数据写入的过程中也发生写入错误的情形,则由于P0、P1、P3、P4是属于同一个字线组WL_G0,因此,闪存芯片512、514、522、524中的数据页P0、P1也有可能发生损坏。举例来说,假设闪存芯片524的数据页P3在数据写入的过程中发生错误,则现有以成功写入的闪存芯片524的数据页P0、P1、P2也会发生错误,因此,现有所保留下来的第1、2、3组错误更正码S0、S1、S2便可以在之后分别用来更正数据页P0、P1、P2的错误。
在字线组WL_G0上的页面都已经写完数据之后,现有所保留的错误更正码S0、S1、S2、S3若是储存在闪存控制器110中的存储器时,则可以将的搬移到所述特定区块中,以减少闪存控制器110中存储器的容量需求。
接着,类似以上步骤,闪存控制器110将接下来的第5~192笔数据写入至闪存芯片512、514、522、524中,并对所述第5~192笔数据进行编码以分别产生第5~192组错误更正码S4~S191。
当超级区块530在数据写入的过程中发生错误时,由于闪存无法直接对已写入的数据做修正,故需要将已写入的数据读出之后再使用储存在所述特定区块中的错误更正码进行更正,并将更正后的数据连同其他不需更正的数据一并写入到另一个区块中。
由于错误更正码S0~S191需要很大的容量且也占据了所述特定区块的空间,因此,在确定超级区块530中的所有数据都已经成功写入之后,所述特定区块中所储存的错误更正码S0~S191便可以删除,也就是说,闪存控制器110会抹除所述特定区块以删除错误更正码S0~S191(在对应的数据第一次被读取之前)。需注意的是,上述“删除”错误更正码S0~S191并不代表要立刻将所述特定区块立刻抹除,而是可以将所述特定区块标示为“无效化”,等到后续适合的时间(例如,闪存控制器110空闲的时候)再将所述特定区块整个抹除。
需注意的是,图6所绘示的P0~P191所代表的可能不只是一个数据页,而可能是1~4个数据页。详细来说,当是单层式储存(SLC)的区块时,则一个字在线的浮闸晶体管则构成一个数据页(例如字线WL0仅包括一个数据页P0);当是多层式储存(MLC)的区块时,则一个字在线的浮闸晶体管则构成二个数据页(例如图标的P0包括两个数据页);当是三层式储存(TLC)的区块时,则一个字在线的浮闸晶体管则构成三个数据页(例如图标的P0包括图所示的三个数据页P0L、P0M、P0U);以及当是四层式储存(QLC)的区块时,则一个字在线的浮闸晶体管则构成四个数据页。
在本实施例中,超级区块530可以是多层式储存区块、三层式储存区块或是四层式储存区块,然而,由于用来储存错误更正码S0~S191的所述特定区块会频繁地被写入与抹除,因此,为了增加所述特定区块的寿命,所述特定区块会采用单层式储存的写入方式。另一方面,需注意的是,当超级区块530是采用三层式储存方式时,则由于每一个字线会对应到三个数据页,因此错误更正码S0~S191实际上会需要由三个特定区块(单层式储存区块)来储存。
需注意的是,在以上的实施例中,是假设超级区块530是一空白区块,且闪存控制器110是将数据由每一个闪存芯片的第一个数据页开始写起,然而,本发明并不以此为限,在其他实施例中,超级区块530可以已经存有其他资料,而闪存控制器110将数据循序存进超级区块530的剩下数据页中,并产生对应错误更正码(S0~SN),这些设计上的变化均应隶属于本发明的范畴。
另一方面,在以上的实施例中,数据会先经过第二编译码器134的编码之后,才会再进行第一编译码器132的编码以写入到闪存模块120之中,然而,在其他实施例中,第一编译码器132与第二编译码器134的执行顺序亦可相反,以达到相同的结果。
请参考图7,其为依据本发明一实施例的存取闪存模块120的方法的流程图,参考图1~7及以上所公开的内容,流程叙述如下:
步骤700:流程开始。
步骤702:将第N笔数据写入至所述闪存模块中的多个闪存芯片,并对所述第N笔数据进行编码以产生一第N组错误更正码,其中所述第N组错误更正码是用来对写入至所述多个闪存芯片中的所述第N笔数据进行错误更正;
步骤704:当判断所述第N笔数据已成功写入至所述多个闪存芯片中之后,保留所述第N组错误更正码;
步骤706:依序将第(N+1)~(N+M)笔资料分别写入至所述闪存模块中的所述多个闪存芯片,并分别对所述第(N+1)~(N+M)笔数据进行编码以产生第(N+1)~(N+M)组错误更正码,其中所述第(N+1)~(N+M)组错误更正码是分别用来对写入至所述多个闪存芯片中的所述第(N+1)~(N+M)笔数据进行错误更正;以及
步骤708:当判断所述第(N+M)笔资料已成功写入至所述多个闪存芯片中时,才删除所述第N~(N+M)组错误更正码。
通过以上所公开的实施例,可以确实地更正立体NAND型闪存在资料写入时发生的错误,且由于错误更正码S0~S191在确定超级区块530中的数据都完全成功写入之后便可以抹除,因此便也可以节省存储器的空间。
另外,在某些情况下,已经成功写入的数据可能在后续的读取中会发生无法读取或是读取错误的情形,例如闪存512、514、522、524中可能有部分的字线发生断路(open)的情形,因而造成无法读取数据的情形。此外,如现有所述,一个字线组中只要有一条字线发生断路,便会造成整个字线组的数据都会发生错误。因此,本发明另提出以下的实施例来避免后续因为字线断路而造成数据读取错误的情形。
为了方便叙述,以下实施例一样采用图4~5的例子,也就是说,闪存控制器110要将数据写入到超级区块530中。参考图8,其为依据本发明一第二实施例的闪存控制器110将数据写入到超级区块530的示意图,为了方便以下实施例的说明,在以下的叙述中,一笔资料指的是写入到一个字线组的数据,而非是图6的实施例所述的一个字在线的数据,然而,此定义并非是作为本发明的限制。当闪存控制器110需要将第1笔数据写入至超级区块530中时,类似图6的实施例所述,闪存控制器110中的第二编译码器134会对第1笔数据进行编码以产生第1组错误更正码S0~S3,且将第1笔数据分别写入到每一个闪存芯片512、514、522、524中的数据页P0~P3中,并将错误更正码S0~S3存入到闪存芯片512、514、522或524中的一特定区块中,且所述特定区块不属于超级区块530。
接着,当闪存控制器110需要将第2笔数据(包括4个数据页的数据)写入至超级区块530中时,首先,闪存控制器110中的第二编译码器134会先对要写入到闪存芯片512、514、522、524的数据页P4的数据以及错误更正码S0进行编码以产生错误更正码S4,其中第二编译码器134可以采用里德-所罗门编码方式或是互斥或运算来对写入到每一个闪存芯片512、514、522、524中的第五个数据页P4的数据以及错误更正码S0进行编码,以产生错误更正码S4;接着,第一编译码器132分别对要写入到闪存芯片512、514、522、524的数据页P4的数据进行编码以产生对应的错误更正码,并将此数据与第一编译码器132所产生的错误更正码一并写入到每一个闪存芯片512、514、522、524中的第五个资料页P4中。其中,闪存控制器110可以先暂时将错误更正码S4储存在本身的存储器中,或是将错误更正码S4存入到闪存芯片512、514、522、524中的所述特定区块中,且所述特定区块不属于超级区块530。如上所述,与错误更正码S0~S3比较不同的是,错误更正码S4的产生过程中有使用到错误更正码S0。
接着,存储器控制器110需要将第2笔数据中要写入到闪存芯片512、514、522、524的数据页P5~P7的资料写入至超级区块530中,并同时产生了错误更正码S5~S7,其中错误更正码S5~S7的产生过程中有分别使用到错误更正码S1~S3。
再接着,存储器控制器110需要将第3笔数据写入至超级区块530中,并同时产生了第3组错误更正码S8~S11,其中类似第2组错误更正码S4~S7,第3组错误更正码S8~S11的产生过程中有分别使用到第2组错误更正码S4~S7。
类似以上步骤,闪存控制器110将接下来的第4~48笔数据写入至闪存芯片512、514、522、524中,并对所述第4~48笔数据进行编码以分别产生第4~48组错误更正码S12~S191。
当超级区块530在数据写入的过程中发生错误时,由于闪存无法直接对已写入的数据做修正,故需要将已写入的数据读出之后再使用储存在所述特定区块中的错误更正码进行更正,并将更正后的数据连同其他不需更正的数据一并写入到另一个区块中。
需注意的是,由于上述每一组错误更正码都是参考前一组错误更正码的内容所产生的,因此,第48组错误更正码S188~S191便带有现有每一组错误更正码的信息,也就是说,每一组错误更正码的信息都可由第48组错误更正码所得到。举例来说,错误更正码S184可以由第二编译码器134根据闪存芯片512、514、522、524的数据页P188的内容以及错误更正码S188而得到,错误更正码S180可以由第二编译码器134根据闪存芯片512、514、522、524的数据页P184的内容以及错误更正码S184而得到,错误更正码S176可以由第二编译码器134根据闪存芯片512、514、522、524的数据页P180的内容以及错误更正码S180而得到…如此不断计算最后便可以得到错误更正码S0。因此,为了节省存储器空间,在确定超级区块530中的所有数据都已经成功写入之后,闪存控制器110仅需要将错误更正码S188~S191复制到另外一个区块中,并可以将所述特定区块整个抹除以节省存储器空间。
如上所述,由于闪存控制器110有保留错误更正码S188~S191,且错误更正码S188~S191可以用来获得错误更正码S0~S187,因此,即使后续闪存芯片512、514、522、524有一个闪存芯片发生字线发生断路(open)的情形,也可以通过相对应的错误更正码S0~S191来进行更正,而不会发生数据无法修复的情形。
在本实施例中,超级区块530可以是多层式储存(MLC)区块、三层式储存(TLC)区块或是四层式储存(QLC)区块,然而,由于用来储存错误更正码S0~S191的所述特定区块会频繁地被写入与抹除,因此,为了增加所述特定区块的寿命,所述特定区块会采用单层式储存(SLC)的写入方式。另一方面,需注意的是,当超级区块530是采用三层式储存方式时,则由于每一个字线会对应到三个数据页,因此错误更正码S0~S191实际上会需要由三个特定区块(单层式储存区块)来储存。此外,在闪存控制器110将错误更正码S188~191复制的过程中,可以错误更正码S188~S191复制到一个三层式储存区块,以进一步地节省存储器空间。
需注意的是,图8所绘示的P0~P191所代表的可能不只是一个数据页,而可能是1~4个数据页。详细来说,当是单层式储存的区块时,则一个字在线的浮闸晶体管则构成一个数据页(例如字线WL0仅包括一个数据页P0);当是多层式储存的区块时,则一个字在线的浮闸晶体管则构成二个数据页(例如图标的P0包括两个数据页);当是三层式储存的区块时,则一个字在线的浮闸晶体管则构成三个数据页(例如图标的P0包括图所示的三个数据页P0L、P0M、P0U);以及当是四层式储存的区块时,则一个字在线的浮闸晶体管则构成四个数据页。
请参考图9,其为依据本发明一实施例的存取闪存模块120的方法的流程图,参考图8、9及以上所公开的内容,流程叙述如下:
步骤900:流程开始。
步骤902:依序将第N~(N+K)笔资料分别写入至所述闪存模块中的多个闪存芯片,并分别对所述第N~(N+K)笔数据进行编码以产生第N~(N+K)组错误更正码,其中所述第N~(N+K)组错误更正码是分别用来对写入至所述多个闪存芯片中的所述第N~(N+K)笔数据进行错误更正;以及
步骤904:将第(N+K+1)笔资料写入至所述闪存模块中的所述多个闪存芯片,并使用所述第(N+K)组错误更正码来与所述第(N+K+1)笔数据一并进行编码,以产生第(N+K+1)组错误更正码,其中K是1。
以上图8~9的实施例可以避免闪存芯片512、514、522、524有一个闪存芯片发生字线发生断路而造成数据无法修复的情形,然而,若是两个字线组中的两条相邻的字线发生短路(short),例如图8中闪存芯片512的字线WL3与WL4发生短路,则会造成闪存芯片512中的两个字线组WL_G0与WL_G1上的数据均无法成功读取,因此,以下提出一实施例以克服两个字线组中的两条相邻的字线发生短路(short)的情形。
为了方便叙述,以下实施例一样采用图4~5的例子,也就是说,闪存控制器110要将数据写入到超级区块530中。参考图10,其为依据本发明一第三实施例的闪存控制器110将数据写入到超级区块530的示意图,为了方便以下实施例的说明,在以下的叙述中,一笔资料指的是写入到一个字线组的数据,而非是图6的实施例所述的一个字在线的数据,然而,此定义并非是作为本发明的限制。当闪存控制器110需要将第1笔数据写入至超级区块530中时,类似图6的实施例所述,闪存控制器110中的第二编译码器134会对第1笔数据进行编码以产生第1组错误更正码S0~S3,且将第1笔数据分别写入到每一个闪存芯片512、514、522、524中的数据页P0~P3中,并将错误更正码S0~S3存入到闪存芯片512、514、522或524中的一特定区块中,且所述特定区块不属于超级区块530。接着,第二编译码器134会对第2笔数据进行编码以产生第2组错误更正码S0~S3,且将第2笔数据分别写入到每一个闪存芯片512、514、522、524中的数据页P4~P7中,并将错误更正码S4~S7存入到所述特定区块中。
接着,当闪存控制器110需要将第3笔数据(包括4个数据页的数据)写入至超级区块530中时,首先,闪存控制器110中的第二编译码器134会先对要写入到闪存芯片512、514、522、524的数据页P8的数据以及错误更正码S0进行编码以产生错误更正码S8,其中第二编译码器134可以采用里德-所罗门编码方式或是互斥或运算来对写入到每一个闪存芯片512、514、522、524中的第九个数据页P8的数据以及错误更正码S0进行编码,以产生错误更正码S8;接着,第一编译码器132分别对要写入到闪存芯片512、514、522、524的数据页P8的数据进行编码以产生对应的错误更正码,并将此数据与第一编译码器132所产生的错误更正码一并写入到每一个闪存芯片512、514、522、524中的第九个资料页P8中。其中,闪存控制器110可以先暂时将错误更正码S8储存在本身的存储器中,或是将错误更正码S8存入到闪存芯片512、514、522、524中的所述特定区块中,且所述特定区块不属于超级区块530。如上所述,与错误更正码S0~S7比较不同的是,错误更正码S8的产生过程中有使用到错误更正码S0。
接着,存储器控制器110需要将第3笔数据中要写入到闪存芯片512、514、522、524的数据页P9~P11的资料写入至超级区块530中,并同时产生了错误更正码S9~S11,其中错误更正码S9~S11的产生过程中有分别使用到错误更正码S1~S3。
再接着,存储器控制器110需要将第4笔数据写入至超级区块530中,并同时产生了第4组错误更正码S12~S15,其中类似第3组错误更正码S8~S11,第4组错误更正码S12~S15的产生过程中有分别使用到第2组错误更正码S4~S7。
类似以上步骤,闪存控制器110将接下来的第5~48笔数据写入至闪存芯片512、514、522、524中,并对所述第5~48笔数据进行编码以分别产生第5~48组错误更正码S16~S191。
当超级区块530在数据写入的过程中发生错误时,由于闪存无法直接对已写入的数据做修正,故需要将已写入的数据读出之后再使用储存在所述特定区块中的错误更正码进行更正,并将更正后的数据连同其他不需更正的数据一并写入到另一个区块中。
需注意的是,由于上述每一组错误更正码都是参考前前组错误更正码的内容所产生的,因此,第47、48组错误更正码S188~S191便带有现有每一组错误更正码的信息,也就是说,每一组错误更正码的信息都可由第47组或第48组错误更正码所得到。举例来说,错误更正码S180可以由第二编译码器134根据闪存芯片512、514、522、524的数据页P188的内容以及错误更正码S188而得到,错误更正码S172可以由第二编译码器134根据闪存芯片512、514、522、524的数据页P180的内容以及错误更正码S180而得到,错误更正码S164可以由第二编译码器134根据闪存芯片512、514、522、524的数据页P172的内容以及错误更正码S172而得到…如此不断计算最后便可以得到错误更正码S0。因此,为了节省存储器空间,在确定超级区块530中的所有数据都已经成功写入之后,闪存控制器110仅需要将第47、48组错误更正码S184~S191复制到另外一个区块中,并可以将所述特定区块整个抹除以节省存储器空间。
如上所述,由于闪存控制器110有保留错误更正码S184~S191,且错误更正码S184~S191可以用来获得错误更正码S0~S183,因此,即使后续闪存芯片512、514、522、524有一个闪存芯片发生字线发生短路的情形,也可以通过相对应的错误更正码S0~191来进行更正,而不会发生数据无法修复的情形。
在本实施例中,超级区块530可以是多层式储存(MLC)区块、三层式储存(TLC)区块或是四层式储存(QLC)区块,然而,由于用来储存错误更正码S0~S191的所述特定区块会频繁地被写入与抹除,因此,为了增加所述特定区块的寿命,所述特定区块会采用单层式储存(SLC)的写入方式。另一方面,需注意的是,当超级区块530是采用三层式储存方式时,则由于每一个字线会对应到三个数据页,因此错误更正码S0~S191实际上会需要由三个特定区块(单层式储存区块)来储存。此外,在闪存控制器110将错误更正码S184~S191复制的过程中,可以错误更正码S184~S191复制到一个三层式储存区块,以进一步地节省存储器空间。
需注意的是,图10所绘示的P0~P191所代表的可能不只是一个数据页,而可能是1~4个数据页。详细来说,当是单层式储存的区块时,则一个字在线的浮闸晶体管则构成一个数据页(例如字线WL0仅包括一个数据页P0);当是多层式储存的区块时,则一个字在线的浮闸晶体管则构成二个数据页(例如图标的P0包括两个数据页);当是三层式储存的区块时,则一个字在线的浮闸晶体管则构成三个数据页(例如图标的P0包括图所示的三个数据页P0L、P0M、P0U);以及当是四层式储存的区块时,则一个字在线的浮闸晶体管则构成四个数据页。
请参考图11,其为依据本发明一实施例的存取闪存模块120的方法的流程图,参考图10、11及以上所公开的内容,流程叙述如下:
步骤1100:流程开始。
步骤1102:依序将第N~(N+K)笔资料分别写入至所述闪存模块中的多个闪存芯片,并分别对所述第N~(N+K)笔数据进行编码以产生第N~(N+K)组错误更正码,其中所述第N~(N+K)组错误更正码是分别用来对写入至所述多个闪存芯片中的所述第N~(N+K)笔数据进行错误更正;以及
步骤1104:将第(N+K+1)笔资料写入至所述闪存模块中的所述多个闪存芯片,并使用所述第N组错误更正码来与所述第(N+K+1)笔数据一并进行编码,以产生第(N+K+1)组错误更正码,其中K是1。
需注意的是,在以上的实施例说明中,闪存模块120为一立体NAND型闪存模块,然而,在其他实施例中,闪存模块120亦可为平面NAND型闪存模块,由于本领域技术人员应可轻易了解如何将上述实施例应用在平面NAND型闪存模块中,故相关细节不再赘述。
简要归纳本发明,在本发明的存取一闪存模块的方法中,是使用类似容错式磁盘阵列的错误更正方式来产生错误更正码,以解决立体NAND型闪存中写入错误的情形,且上述错误更正码可以暂时地储存在闪存中,并等到区块数据都成功写入之后再删除,因此可以有效地节省闪存控制器中的存储器需求,且也不会浪费闪存模块中的空间。此外,上述产生的错误更正码可以仅保留其中一部分来更正后续因为字线断路/短路时所发生的错误,因此除了可以更进一步确保资料的安全性之外,也不会太浪费闪存模块中的储存空间。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种存取闪存模块的方法,该闪存模块包含多个闪存芯片,其特征在于,包括:
对第N笔数据进行编码以产生一第N组错误更正码,其中该第N组错误更正码用来对该第N笔数据进行错误更正,其中N为一正整数;
将该第N笔数据写入至该闪存模块中;
将该第N组错误更正码写入至该闪存模块中;
当该第N笔数据成功写入至该闪存模块后,删除该闪存模块中的该第N组错误更正码中至少一部分,但在该闪存模块中保留该第N笔数据;
对第(N+1)~(N+M)笔数据进行编码以产生第(N+1)~(N+M)组错误更正码,其中该第(N+1)~(N+M)组错误更正码分别用来对该第(N+1)~(N+M)笔数据进行错误更正,其中M为一正整数;
将该第(N+1)~(N+M)笔数据写入至该闪存模块中;
将该第(N+1)~(N+M)组错误更正码写入至该闪存模块中;以及
当该第(N+M)笔数据已成功写入至该闪存模块后,删除该第N~(N+M)组错误更正码;
其中第N笔数据写入至该多个闪存芯片中每一个闪存芯片之一字符线(word line)上的浮闸晶体管,且第(N+1)~(N+M)笔数据系分别写入至该多个闪存芯片中每一个闪存芯片之其他不同字符线(word line)上的浮闸晶体管。
2.如权利要求1所述的方法,其中该第N笔数据写入到该多个闪存芯片的一超级区块(super block)中的第一个数据页,其中该超级区块包含了该多个闪存芯片中每一个闪存芯片的一个区块(block);以及该第(N+M)笔数据写入到该多个闪存芯片的该超级区块的最后一个数据页。
3.如权利要求1所述的方法,另包括:
将该第N~(N+M)组错误更正码写入到该闪存模块的至少一特定区块中。
4.如权利要求3所述的方法,其中删除该第N~(N+M)组错误更正码的步骤包括:
当判断该第(N+M)笔数据已成功写入至该多个闪存芯片中时,抹除该至少一特定区块以删除该第N~(N+M)组错误更正码。
5.如权利要求4所述的方法,另包括:
将第(N+M+1)笔数据写入至该多个闪存芯片,并对该第(N+M+1)笔数据进行编码以产生一第(N+M+1)组错误更正码,其中该第(N+M+1)笔数据与该第(N+M)笔数据为连续的数据,且该第(N+M+1)组错误更正码用来对写入至该多个闪存芯片中的该第(N+M+1)笔数据进行错误更正;以及
在该至少一特定区块以删除该第N~(N+M)组错误更正码被抹除之后,将该第(N+M+1)组错误更正码写入至该至少一特定区块。
6.如权利要求3所述的方法,其中该至少一特定区块中为一单层式储存(Single-LevelCell,SLC)的区块。
7.一种闪存控制器,该闪存控制器系用来存取一闪存模块,该闪存模块包含多个闪存芯片,且该闪存控制器包含有:
一内存,用来储存一程序代码;
一微处理器,用来执行该程序代码以控制对该闪存模块之存取;以及
一编码器;
其中该微处理器对第N笔数据进行编码以产生一第N组错误更正码,其中该第N组错误更正码用来对该第N笔数据进行错误更正,其中N为一正整数;该微处理器将该第N笔数据写入至该闪存模块中,并将该第N组错误更正码写入至该闪存模块中;当该第N笔数据成功写入至该闪存模块后,该微处理器删除该闪存模块中的该第N组错误更正码中至少一部分,但在该闪存模块中保留该第N笔数据;
其中该微处理器对第(N+1)~(N+M)笔数据进行编码以产生第(N+1)~(N+M)组错误更正码,其中该第(N+1)~(N+M)组错误更正码分别用来对该第(N+1)~(N+M)笔数据进行错误更正,其中M为一正整数;该微处理器将该第(N+1)~(N+M)笔数据写入至该闪存模块中;该微处理器将该第(N+1)~(N+M)组错误更正码写入至该闪存模块中;以及当该第(N+M)笔数据已成功写入至该闪存模块后,该微处理器删除该第N~(N+M)组错误更正码;
其中第N笔数据写入至该多个闪存芯片中每一个闪存芯片之一字符线(word line)上的浮闸晶体管,且第(N+1)~(N+M)笔数据系分别写入至该多个闪存芯片中每一个闪存芯片之其他不同字符线(word line)上的浮闸晶体管。
8.一种记忆装置,其包含有:
一闪存模块,其中该闪存模块包含多个闪存芯片;以及
一闪存控制器,用来存取该闪存;
其中该闪存控制器对第N笔数据进行编码以产生一第N组错误更正码,其中该第N组错误更正码用来对该第N笔数据进行错误更正,其中N为一正整数;将该第N笔数据写入至该闪存模块中;将该第N组错误更正码写入至该闪存模块中;该第N笔数据成功写入至该闪存模块后,删除该闪存模块中的该第N组错误更正码中至少一部分,但在该闪存模块中保留该第N笔数据;
其中该闪存控制器对第(N+1)~(N+M)笔数据进行编码以产生第(N+1)~(N+M)组错误更正码,其中该第(N+1)~(N+M)组错误更正码分别用来对该第(N+1)~(N+M)笔数据进行错误更正,其中M为一正整数;该闪存控制器将该第(N+1)~(N+M)笔数据写入至该闪存模块中;该闪存控制器将该第(N+1)~(N+M)组错误更正码写入至该闪存模块中;以及当该第(N+M)笔数据已成功写入至该闪存模块后,该闪存控制器删除该第N~(N+M)组错误更正码;
其中第N笔数据写入至该多个闪存芯片中每一个闪存芯片之一字符线(word line)上的浮闸晶体管,且第(N+1)~(N+M)笔数据系分别写入至该多个闪存芯片中每一个闪存芯片之其他不同字符线(word line)上的浮闸晶体管。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104125905 | 2015-08-10 | ||
TW104125905A TWI575531B (zh) | 2015-08-10 | 2015-08-10 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
CN201610599287.3A CN106445723B (zh) | 2015-08-10 | 2016-07-27 | 存取闪存模块的方法、闪存控制器以及记忆装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610599287.3A Division CN106445723B (zh) | 2015-08-10 | 2016-07-27 | 存取闪存模块的方法、闪存控制器以及记忆装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110147295A CN110147295A (zh) | 2019-08-20 |
CN110147295B true CN110147295B (zh) | 2022-10-21 |
Family
ID=57995508
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610599287.3A Active CN106445723B (zh) | 2015-08-10 | 2016-07-27 | 存取闪存模块的方法、闪存控制器以及记忆装置 |
CN201910231128.1A Active CN110147295B (zh) | 2015-08-10 | 2016-07-27 | 存取闪存模块的方法、闪存控制器以及记忆装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610599287.3A Active CN106445723B (zh) | 2015-08-10 | 2016-07-27 | 存取闪存模块的方法、闪存控制器以及记忆装置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10089174B2 (zh) |
KR (1) | KR101887557B1 (zh) |
CN (2) | CN106445723B (zh) |
TW (1) | TWI575531B (zh) |
Families Citing this family (110)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US9817576B2 (en) | 2015-05-27 | 2017-11-14 | Pure Storage, Inc. | Parallel update to NVRAM |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
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 |
US9910772B2 (en) | 2016-04-27 | 2018-03-06 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
CN107391026B (zh) | 2016-04-27 | 2020-06-02 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
US10019314B2 (en) | 2016-04-27 | 2018-07-10 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
CN111679787B (zh) | 2016-04-27 | 2023-07-18 | 慧荣科技股份有限公司 | 闪存装置、闪存控制器及闪存存储管理方法 |
US10110255B2 (en) | 2016-04-27 | 2018-10-23 | Silicon Motion Inc. | Method for accessing flash memory module and associated flash memory controller and memory device |
US10025662B2 (en) | 2016-04-27 | 2018-07-17 | 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 |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US10593398B2 (en) | 2016-09-13 | 2020-03-17 | Toshiba Memory Corporation | Semiconductor storage device including a controller configured to execute a first write and a second write |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10613974B2 (en) | 2016-10-04 | 2020-04-07 | Pure Storage, Inc. | Peer-to-peer non-volatile random-access memory |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
KR20180052154A (ko) * | 2016-11-09 | 2018-05-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
TWI605457B (zh) * | 2016-11-16 | 2017-11-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10831935B2 (en) | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
US11024390B1 (en) | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US12067274B2 (en) | 2018-09-06 | 2024-08-20 | Pure Storage, Inc. | Writing segments and erase blocks based on ordering |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
JP2019139824A (ja) * | 2018-02-09 | 2019-08-22 | 東芝メモリ株式会社 | メモリシステム |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US10938419B2 (en) | 2018-03-16 | 2021-03-02 | SK Hynix Inc. | Encoding method and system for memory device including QLC cells |
US12079494B2 (en) | 2018-04-27 | 2024-09-03 | Pure Storage, Inc. | Optimizing storage system upgrades to preserve resources |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US11367488B2 (en) * | 2018-12-11 | 2022-06-21 | SK Hynix Inc. | Memory system and method for read operation based on grouping of word lines |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11762569B2 (en) | 2019-10-29 | 2023-09-19 | International Business Machines Corporation | Workload based relief valve activation for hybrid controller architectures |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US11500719B1 (en) * | 2020-03-31 | 2022-11-15 | Amazon Technologies, Inc. | Reliability improvements for memory technologies |
US12056365B2 (en) | 2020-04-24 | 2024-08-06 | Pure Storage, Inc. | Resiliency for a storage system |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US12067282B2 (en) | 2020-12-31 | 2024-08-20 | Pure Storage, Inc. | Write path selection |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US12093545B2 (en) | 2020-12-31 | 2024-09-17 | Pure Storage, Inc. | Storage system with selectable write modes |
US12061814B2 (en) | 2021-01-25 | 2024-08-13 | Pure Storage, Inc. | Using data similarity to select segments for garbage collection |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
JP2023012706A (ja) * | 2021-07-14 | 2023-01-26 | キオクシア株式会社 | 半導体記憶装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033814A (zh) * | 2009-09-25 | 2011-04-27 | 慧荣科技股份有限公司 | 存取一闪存的方法以及相关的记忆装置 |
CN102929741A (zh) * | 2012-09-29 | 2013-02-13 | 邹粤林 | 一种提高闪存芯片纠错码使用效率的方法、系统及控制器 |
CN104681100A (zh) * | 2013-11-29 | 2015-06-03 | 慧荣科技股份有限公司 | 用于闪存装置的错误更正码单元、自我测试方法及控制器 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4271520A (en) * | 1979-06-25 | 1981-06-02 | Motorola, Inc. | Synchronizing technique for an error correcting digital transmission system |
US6957378B2 (en) * | 2001-06-04 | 2005-10-18 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
US7581103B2 (en) * | 2001-06-13 | 2009-08-25 | Intertrust Technologies Corporation | Software self-checking systems and methods |
US9116823B2 (en) * | 2006-12-06 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for adaptive error-correction coding |
US9495241B2 (en) * | 2006-12-06 | 2016-11-15 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive data storage |
TW200828328A (en) * | 2006-12-28 | 2008-07-01 | Genesys Logic Inc | Method of improving accessing reliability of flash memory |
US8145975B2 (en) * | 2008-02-28 | 2012-03-27 | Ip Video Communications Corporation | Universal packet loss recovery system for delivery of real-time streaming multimedia content over packet-switched networks |
US8810142B2 (en) * | 2008-03-31 | 2014-08-19 | Nxp B.V. | Waveform detection and combined step and linear dim control |
US8645749B2 (en) * | 2009-02-04 | 2014-02-04 | Micron Technology, Inc. | Systems and methods for storing and recovering controller data in non-volatile memory devices |
US8634240B2 (en) * | 2009-10-28 | 2014-01-21 | SanDisk Technologies, Inc. | Non-volatile memory and method with accelerated post-write read to manage errors |
US8437183B2 (en) * | 2009-12-16 | 2013-05-07 | Sandisk Il Ltd. | Auxiliary parity bits for data written in multi-level cells |
US9363047B2 (en) * | 2010-02-16 | 2016-06-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Technique of encoding HARQ feedback information with two separate codewords with unequal error protection for DTX and ACK/NACK |
US8732543B1 (en) * | 2010-08-05 | 2014-05-20 | Marvell International Ltd. | Tensor product codes for flash |
US8874958B2 (en) * | 2010-11-09 | 2014-10-28 | International Business Machines Corporation | Error detection in a mirrored data storage system |
KR101712619B1 (ko) * | 2011-01-19 | 2017-03-06 | 삼성전자주식회사 | 에러 정정 코드의 인코딩 및 디코딩 방법 |
US8484542B2 (en) * | 2011-02-08 | 2013-07-09 | Sandisk Technologies Inc. | Data recovery using additional error correction coding data |
US8954822B2 (en) * | 2011-11-18 | 2015-02-10 | Sandisk Enterprise Ip Llc | Data encoder and decoder using memory-specific parity-check matrix |
US8681569B2 (en) * | 2012-02-22 | 2014-03-25 | Silicon Motion, Inc. | Method for reading data stored in a flash memory according to a threshold voltage distribution and memory controller and system thereof |
US8996960B1 (en) * | 2012-06-26 | 2015-03-31 | Inphi Corporation | Vertical error correction code for DRAM memory |
US9141299B2 (en) * | 2013-03-14 | 2015-09-22 | Intel Corporation | Method for reducing power consumption in solid-state storage device |
KR102083547B1 (ko) * | 2013-04-12 | 2020-03-02 | 삼성전자주식회사 | 플래시 메모리와 메모리 컨트롤러를 포함하는 데이터 저장 장치 및 그것의 배드 페이지 관리 방법 |
CN104425019B (zh) * | 2013-08-23 | 2018-07-06 | 慧荣科技股份有限公司 | 存取快闪存储器中存储单元的方法以及使用该方法的装置 |
CN104424127A (zh) * | 2013-08-23 | 2015-03-18 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN104424040B (zh) * | 2013-08-23 | 2017-10-31 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
FR3013924A1 (fr) * | 2013-11-28 | 2015-05-29 | Orange | Procede et dispositif de codage de paquets de donnees numeriques, et procede et dispositif de correction d'effacements |
US9384093B1 (en) * | 2014-05-28 | 2016-07-05 | Microsemi Storage Solutions (U.S.), Inc. | Raid enabled NVME device |
US10228990B2 (en) * | 2015-11-12 | 2019-03-12 | Sandisk Technologies Llc | Variable-term error metrics adjustment |
-
2015
- 2015-08-10 TW TW104125905A patent/TWI575531B/zh active
-
2016
- 2016-07-27 CN CN201610599287.3A patent/CN106445723B/zh active Active
- 2016-07-27 CN CN201910231128.1A patent/CN110147295B/zh active Active
- 2016-08-10 US US15/232,814 patent/US10089174B2/en active Active
- 2016-08-10 KR KR1020160101939A patent/KR101887557B1/ko active IP Right Grant
-
2018
- 2018-08-29 US US16/115,570 patent/US10324789B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033814A (zh) * | 2009-09-25 | 2011-04-27 | 慧荣科技股份有限公司 | 存取一闪存的方法以及相关的记忆装置 |
CN102929741A (zh) * | 2012-09-29 | 2013-02-13 | 邹粤林 | 一种提高闪存芯片纠错码使用效率的方法、系统及控制器 |
CN104681100A (zh) * | 2013-11-29 | 2015-06-03 | 慧荣科技股份有限公司 | 用于闪存装置的错误更正码单元、自我测试方法及控制器 |
Also Published As
Publication number | Publication date |
---|---|
US20170046225A1 (en) | 2017-02-16 |
KR101887557B1 (ko) | 2018-08-10 |
US10089174B2 (en) | 2018-10-02 |
TW201707005A (zh) | 2017-02-16 |
US20180373593A1 (en) | 2018-12-27 |
CN106445723A (zh) | 2017-02-22 |
CN106445723B (zh) | 2019-04-26 |
CN110147295A (zh) | 2019-08-20 |
KR20170018796A (ko) | 2017-02-20 |
US10324789B2 (en) | 2019-06-18 |
TWI575531B (zh) | 2017-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110147295B (zh) | 存取闪存模块的方法、闪存控制器以及记忆装置 | |
CN107403640B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN107391296B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN107423158B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
US20190354478A1 (en) | On-Chip Copy with Data Folding in Three-Dimensional Non-Volatile Memory Array | |
TWI629690B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 | |
CN109390027B (zh) | 解码方法及相关的闪存控制器与电子装置 | |
CN112463433B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN111951855B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN112214348B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
TWI575530B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 | |
TWI691967B (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 |