CN110147295B - 存取闪存模块的方法、闪存控制器以及记忆装置 - Google Patents

存取闪存模块的方法、闪存控制器以及记忆装置 Download PDF

Info

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
Application number
CN201910231128.1A
Other languages
English (en)
Other versions
CN110147295A (zh
Inventor
杨宗杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Silicon Motion Inc filed Critical Silicon Motion Inc
Publication of CN110147295A publication Critical patent/CN110147295A/zh
Application granted granted Critical
Publication of CN110147295B publication Critical patent/CN110147295B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1072Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/109Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel 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)上的浮闸晶体管。
CN201910231128.1A 2015-08-10 2016-07-27 存取闪存模块的方法、闪存控制器以及记忆装置 Active CN110147295B (zh)

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
CN201910231128.1A Active CN110147295B (zh) 2015-08-10 2016-07-27 存取闪存模块的方法、闪存控制器以及记忆装置
CN201610599287.3A Active CN106445723B (zh) 2015-08-10 2016-07-27 存取闪存模块的方法、闪存控制器以及记忆装置

Family Applications After (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) CN110147295B (zh)
TW (1) TWI575531B (zh)

Families Citing this family (97)

* Cited by examiner, † Cited by third party
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
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
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
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
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
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
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
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
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
US10019314B2 (en) 2016-04-27 2018-07-10 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
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
CN111679787B (zh) 2016-04-27 2023-07-18 慧荣科技股份有限公司 闪存装置、闪存控制器及闪存存储管理方法
CN107391026B (zh) 2016-04-27 2020-06-02 慧荣科技股份有限公司 闪存装置及闪存存储管理方法
US10025662B2 (en) 2016-04-27 2018-07-17 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
US9910772B2 (en) 2016-04-27 2018-03-06 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
CN107391296B (zh) 2016-04-27 2020-11-06 慧荣科技股份有限公司 存取闪存模块的方法及相关的闪存控制器与记忆装置
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
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
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
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
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
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
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
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
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10860475B1 (en) * 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
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
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
CN111540393B (zh) * 2018-12-11 2023-09-08 爱思开海力士有限公司 用于基于字线分组的读取操作的存储器***和方法
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
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
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
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
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
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
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
US9495241B2 (en) * 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US9116823B2 (en) * 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
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
KR20120093385A (ko) * 2009-12-16 2012-08-22 샌디스크 아이엘 엘티디 멀티레벨 셀들에 기록된 데이터를 위한 보조 패리티 비트
CN102754384B (zh) * 2010-02-16 2015-10-07 瑞典爱立信有限公司 具有用于dtx和ack/nack的不对等差错保护的用两个分开的码字将harq反馈信息编码的技术
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 삼성전자주식회사 플래시 메모리와 메모리 컨트롤러를 포함하는 데이터 저장 장치 및 그것의 배드 페이지 관리 방법
CN104424127A (zh) * 2013-08-23 2015-03-18 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
CN108447516B (zh) * 2013-08-23 2020-04-24 慧荣科技股份有限公司 存取快闪存储器中存储单元的方法以及使用该方法的装置
CN107632904B (zh) * 2013-08-23 2020-12-22 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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
CN110147295A (zh) 2019-08-20
KR20170018796A (ko) 2017-02-20
CN106445723B (zh) 2019-04-26
CN106445723A (zh) 2017-02-22
US20180373593A1 (en) 2018-12-27
US10089174B2 (en) 2018-10-02
TW201707005A (zh) 2017-02-16
TWI575531B (zh) 2017-03-21
US10324789B2 (en) 2019-06-18
KR101887557B1 (ko) 2018-08-10
US20170046225A1 (en) 2017-02-16

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) 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置
CN112463433B (zh) 存取闪存模块的方法及相关的闪存控制器与记忆装置
CN109390027B (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