CN106970853A - 闪存存取方法与应用此方法的闪存 - Google Patents
闪存存取方法与应用此方法的闪存 Download PDFInfo
- Publication number
- CN106970853A CN106970853A CN201610919788.5A CN201610919788A CN106970853A CN 106970853 A CN106970853 A CN 106970853A CN 201610919788 A CN201610919788 A CN 201610919788A CN 106970853 A CN106970853 A CN 106970853A
- Authority
- CN
- China
- Prior art keywords
- data
- error correction
- flash memory
- algorithm
- length
- 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.)
- Withdrawn
Links
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/1012—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 codes or arrangements adapted for a specific type of error
-
- 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
- G06F11/1056—Updating check bits on partial write, i.e. read/modify/write
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1545—Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种闪存存取方法与应用此方法的闪存,此方法包括下列步骤:从闪存读取第一数据,第一数据具有第一储存数据与第一错误更正数据,第一储存数据具有第一数据长度,第一错误更正数据具有第二数据长度;得到关于第一储存数据的第一错误参数;当第一错误参数大于第一门坎值时,选择性地将第一储存数据写入闪存为第二数据,第二数据具有第一储存数据与第二错误更正数据,第二错误更正数据具有第三数据长度,第三数据长度大于第二数据长度,第一错误更正数据与第二错误更正数据以第一算法,依据第一储存数据所产生。
Description
技术领域
本发明涉及一种闪存的存取方法,尤其涉及一种用以延长闪存寿命的闪存存取方法。
背景技术
闪存(Flash Memory)具有访问速度快的优点,从而在近年来被普遍的使用于做为各种电子装置的储存媒介。且大容量的闪存被制作为固态硬盘(solid-state disk,SSD)或U盘(pen drive)。然而,闪存随着存取次数的增加,所储存的数据的位错误率也会上升。因此闪存通常会对每一笔数据配对一个错误更正码(error-correction code,ECC)。
现有的作法中,闪存的单元格式是固定的。图1现有的闪存储存区块配置示意图。如图1所示,闪存1000具有多组成对的数据区块D1至D8与错误检查区块P1至P8。数据区块D1对应错误检查区块P1。且每个数据区块的逻辑大小相等,每个错误检查区块的逻辑大小也相等。举例来说,每个数据区块的逻辑大小为1024字节(1kilo byte,1kB),而每个错误检查区块的逻辑大小为80字节。换句话说,每一笔数据的长度与对应的错误更正码的长度是固定的。这是为了方便使用硬件电路进行数据的存取与错误更正。然而,当一笔数据的位错误率随着快闪记体的存取次数而增加,错误更正码因为长度固定,所以将会发生无法进行错误更正的状况。当闪存有部分的储存区块无法进行错误更正,则储存在闪存的数据就无法更正为正确的数据。最终,闪存将无法继续使用,因为所有的储存区块的位错误率都上升到无法使用错误更正的技术来修正错误。
又NAND闪存芯片的储存架构大致上为数个区块,每个区块包含数个页面,每个页面包含数个字节。而数据的存取大致上有读取(Read)、写入(Program)与抹除(Erase)这三种操作指令。读取指令以最少1个Byte,最多1个Page为单位来完成一次操作。写入与抹除指令分别以1个页面与1个区块为单位来完成一次操作。倘若用户预写入一笔少量数据,则必需要将所对应区块所有页面的数据一并读出。等待更新完数据后,抹除此区块的数据,再将所有数据写入此区块。但每个区块都有其写入/抹除的次数限制,若超过此限制次数,则此区块可能会失效,进而导致数据错误率的提升。而闪存转换层(NAND Flash TranslationLayer,NFTL)就扮演了一个很重要的角色。闪存转换层主要是在有限的暂存内存下完成下列功能:逻辑地址(Logical address)与物理地址(Physical address)转换、坏块管理(BadBlock management)、垃圾回收功能(Garbage-Collection function)、均衡写入功能(Wear-leveling function)、断电恢复功能(Power-cycling function)与数据扰乱功能(Scrambling function)。
传统基于闪存的储存装置都是经由闪存转换层固件(Firmware)搭配错误更正硬件来实现整个储存装置的读取、写入与闪存芯片的管理,其中闪存转换层固件运行于闪存装置内(如U盘)。而一个完整的闪存转换层通常有许多系统表(System table)。而由于系统表的数据记录着所有逻辑地址(Logical address)与物理地址(Physical address)的对映关系以及闪存的使用情况。若其中某一个位发生错误,严重者可能会让整个系统毁损而导致用户数据完全无法读取。
发明内容
本发明所要解决的技术问题在于,针对现有技术的不足提供一种闪存的存取方法,以提高闪存的使用寿命。
本发明所要解决的技术问题是通过如下技术方案实现的:
一种闪存存取方法,包括下列步骤:从一闪存读取一第一数据,该第一数据具有一第一储存数据与一第一错误更正数据,该第一储存数据具有第一数据长度,该第一错误更正数据具有一第二数据长度;得到关于该第一储存数据的一第一错误参数;当该第一错误参数大于一第一门坎值时,选择性地将该第一储存数据写入该闪存为一第二数据,该第二数据具有该第一储存数据与一第二错误更正数据,该第二错误更正数据具有一第三数据长度,该第三数据长度大于该第二数据长度,该第一错误更正数据与该第二错误更正数据以一第一算法,依据该第一储存数据所产生。
更好地,选择性地将该第一储存数据写入该闪存为该第二数据的步骤中,包括下列步骤:当该第二数据长度小于一第二门坎值时,将该第一储存数据写入该闪存,并以该第一算法依据该第一储存数据产生该第二错误更正数据。当该第二数据长度等于该第二门坎值时,将该第一储存数据写入该闪存,并以一第二算法依据该第一储存数据产生一第三错误更正数据,该第三错误更正数据具有该第二数据长度。
更好地,该第一算法依据BCH码所实现的错误更正算法,而该第二算法依据低密度奇偶检查码所实现的错误更正算法,然而不以此为限。
更好地,该第一错误参数包含该闪存的一存取次数。
更好地,该第一错误参数更包含一位错误率,该位错误率以该第一算法依据该第一错误更正数据与该第一储存数据所得到。
更好地,该第一门坎值依据该第一错误更正数据的一错误更正上限而设定。
更好地,该第一门坎值依据该存取次数而设定。
更好地,该第一错误参数包含一位错误率,该位错误率以该第一算法依据该第一错误更正数据与该第一储存数据所得到。
更好地,该第一门坎值依据该第一错误更正数据的一错误更正上限而设定。
更好地,该第三数据长度为该第二数据长度的两倍。
依据本发明一实施例的闪存,包含至少一第一储存模块。该第一储存模块包含:多个第一储存区块,每一该第一储存区块具有一第一数据区块与一第一错误检查区块,其中该第一数据区块具有第一位长度,该第一错误检查区块具有第二位长度;该第一储存模块还包含一第一系统区块,该第一系统区块具有一第二数据区块与一第二错误检查区块,其中该第二数据区块具有第三位长度,该第二错误检查区块具有第四位长度,该第三位长度不同于该第一位长度,该第四位长度大于该第二位长度。
更好地,更包含至少一第二储存模块。该第二储存模块包含多个第二储存区块,每一该第二储存区块具有一第三数据区块与一第三错误检查区块,其中该第三数据区块具有第五位长度,该第三错误检查区块具有第六位长度,该第五位长度不同于该第一位长度,且该第六位长度不同于该第二位长度。
更好地,该第一储存模块更包含至少一第三储存区块,每一该第三储存区块具有一第四数据区块与一第四错误检查区块,其中该第四错误检查区块具有第七位长度,该第七位长度不同于该第一位长度。
更好地,该第一储存模块的部份多个所述第一错误检查区块所储存的错误更正数据对应于第一算法,而另一部份多个所述第一错误检查区块所储存的错误更正数据对应于第二算法。
本发明还提供一种闪存存取方法,包括:
执行软件,以一第一闪存转换格式从一闪存中读取一第一数据;以及
依据一指令,将该第一数据以该第一闪存转换格式或一第二闪存转换格式写入该闪存。
更好地,该第一数据具有一第一储存数据与一第一错误更正数据,该第一储存数据具有第一数据长度,该第一错误更正数据具有一第二数据长度,且该方法更包含:得到关于该第一储存数据的一第一错误参数;以及当该第一错误参数大于一第一门坎值时,选择性地将该第一储存数据写入该闪存为一第二数据,该第二数据具有该第一储存数据与一第二错误更正数据,该第二错误更正数据具有一第三数据长度,该第三数据长度大于该第二数据长度,该第一错误更正数据与该第二错误更正数据以一第一算法,依据该第一储存数据所产生。
本发明还提供闪存存取方法,包括:判断一待储存数据的一类别;当该待储存数据属于一第一类别时,以一第一算法产生关于该待储存数据的一第一错误更正数据,并将该待储存数据与该第一错误更正数据写入一闪存为一第一数据;当该待储存数据属于一第二类别时,以一第二算法产生关于该待储存数据的一第二错误更正数据,并将该待储存数据与该第二错误更正数据写入该闪存为一第二数据。
更好地,该第一算法与该第二算法不同。
更好地,该第一错误更正数据的长度与该第二错误更正数据的长度相同。
更好地,该第一算法与该第二算法相同,且该第一错误更正数据的长度与该第二错误更正数据的长度不同。
依据本发明一实施例,在主控端(Host)建构一闪存转换层算法软件(Software)以及一监控模块。监控模块会在闪存装置(其连接于主控端)闲置时读取其使用状况,并适时的使用Host端闪存转换层算法软件来取代内建于闪存装置的闪存转换层固件。监控模块依据该闪存中一第一储存数据的一覆写次数或一位错误率,选择性地以该闪存转换层算法软件取代该闪存转换层算法固件。
依据本发明一实施例,是以软件化来实现错误更正码及闪存转换层算法,可同时提供各种不同的闪存转换层类型与对偶长度以支持不同厂牌不同型别闪存芯片;更可以只通过一个闪存转换层来管理不同厂牌不同型别的闪存芯片。在这样的架构下,使得闪存储存装置可以以最简易的方式进行容量扩充而完全不受闪存芯片型别的限制。即闪存可包含第一闪存芯片(如厂牌A)与第二闪存芯片(如厂牌B),而第一闪存芯片不同于第二闪存芯片,而于执行一软件对闪存进行存取过程,该软件以一第一算法产生关于一第一待储存数据的一第一错误更正数据,并将该第一待储存数据与该第一错误更正数据写入第一闪存芯片为一第一数据,该软件以一第二算法产生关于一第二待储存数据的一第二错误更正数据,并将该第二待储存数据与该第二错误更正数据写入第二闪存芯片为一第二数据;其中,该第一算法与该第一算法不同,与/或该第一错误更正数据的长度与该第二错误更正数据的长度不同。
更好地,该软件更包含一闪存转换层算法软件管理该第一闪存芯片与该第二闪存芯片。
本发明还提供一种内存数据存取方法,储存第一待储存数据与第二待储存数据时,先以一第一算法产生关于第一待储存数据的一第一错误更正数据,并将第一待储存数据与该第一错误更正数据写入一闪存为一第一数据;再以一第二算法产生关于第二待储存数据的一第二错误更正数据,并将该第二待储存数据与该第二错误更正数据写入该闪存为一第二数据,由此第一与第二算法编码后的型态与/或Parity长度的不同而不易被分析,进而提高数据存储的安全性。
本发明还提供一种闪存的存取方法,该闪存具有一闪存转换层算法固件管理该闪存,该存取方法包含:该闪存转换层算法固件选择性地被储存于远程的一闪存转换层算法软件取代,并以该闪存转换层算法软件管理该闪存。
更好地,该存取方法依据该闪存中一第一储存数据的一覆写次数或一位错误率,选择性地以该闪存转换层算法软件取代该闪存转换层算法固件。
综上所述,依据本发明所实现的闪存存取方法,借助于有弹性地更改错误更正数据(错误更正码)的位长度,来提高所储存数据的位错误率容许上限,藉以提高闪存的使用寿命。本发明会依预被写入的存储器状况(覆写次数或位错误率)以选择适当的储存区块长度。
以上的关于本发明内容的说明及以下的实施方式的说明用以示范与解释本发明的精神与原理,并且提供本发明的权利要求保护范围更进一步的解释。
附图说明
图1为现有的闪存储存区块配置示意图;
图2为本发明一实施例的闪存存取方法流程图;
图3为本发明一实施例的闪存储存区块配置示意图;
图4为本发明另一实施例的闪存储存区块配置示意图;
图5为图2的步骤S240的流程图;
图6为本发明一实施例所实现的闪存。
【附图标记说明】
1000、6000 闪存
6100、6200 储存模块
6110~6190、6210~6290 储存区块
6111、6191、6211 数据区块
6113、6193、6213 错误检查区块
D1~D8、DX、DY、DS 数据区块
P1~P8、PX、PY、PS 错误检查区块
S210~S240、S241~S245 步骤
具体实施方式
以下在实施方式中详细叙述本发明的详细特征以及优点,其内容足以使本领域普通技术人员了解本发明的技术内容并据以实施,且根据本说明书所记载的内容、权利要求及附图,本领域普通技术人员可轻易地理解本发明相关的目的及优点。以下的实施例进一步详细说明本发明的观点,但非以任何观点限制本发明的范畴。
鉴于硬件实现的闪存存取方法的缺陷,本发明提出以软件来实现闪存的存取。由于错误检查的算法不再以硬件完成,因此对于闪存而言,其储存数据的配置得以任意的调整,以符合所需要的数据正确性、错误更正能力,并能延长闪存的使用寿命。
于本发明各实施例中,各步骤以计算器装置运行软件而执行。运行软件的计算器装置具有处理器与内存。
图2为本发明一实施例的闪存存取方法流程图。如图2所示,依据本发明一实施例的闪存存取方法包括下列步骤:步骤S210,从闪存读取第一数据,第一数据具有第一储存数据与第一错误更正数据,第一储存数据具有第一数据长度,第一错误更正数据具有第二数据长度。具体来说,第一储存数据就等同于图1中的数据区块D1中所储存的数据,而第一错误更正数据就等同于图1中的错误检查区块P1中所储存的数据。第一数据长度例如为1024字节(1kB),而第二数据长度例如为80字节。
接着执行步骤S220,得到关于第一储存数据的第一错误参数。所述的第一错误参数,于一实施例中例如为第一储存数据所储存的区块(数据区块D1)的存取(program/erase)次数。于另一实施例中,第一错误参数是第一储存数据的位错误率。具体来说,第一错误更正数据例如是用BCH码(BCH code)呈现的关于第一储存数据的错误更正码。因此可以利用对应BCH码的算法(下称第一算法)来依照第一错误更正数据确认第一储存数据中有多少位的位值有错误,这可称之为位错误率。
再来执行步骤S230,确认第一错误参数是否达到第一门坎值。当第一错误参数未达到第一门坎值时,结束。当第一错误参数达到第一门坎值时,执行步骤S240。举例来说,如果是以存取次数来评估的实施例中,假设第一储存数据所储存的区块(数据区块D1)的存取次数达到100次,则执行步骤S240。又举例来说,如果是以位错误率来评估的实施例来说,例如以80字节的BCH码,可以恢复最多45位的位值错误,则将第一门坎值设定为40。当检查第一储存数据的位错误率达到或超过40位时,将执行步骤S240,否则步骤流程结束。于再一实施例中,结合存取次数与位错误率来评估。具体来说,随着存取次数的增加,用来判断位错误率是否过高的第一门坎值也随的改变。而于步骤S240中,选择性地将第一储存数据写入闪存为第二数据。第二数据具有第一储存数据与第二错误更正数据,第二错误更正数据具有第三数据长度,第三数据长度大于第二数据长度。第一错误更正数据与第二错误更正数据以第一算法,依据第一储存数据所产生。于一实施例中,当决定要将第一储存数据写入闪存为第二数据时,首先以第一算法(BCH码)产生具有第三数据长度的第二错误更正数据。于本实施例中,第一错误更正数据的第二数据长度为80字节,则第二错误更正数据的第三数据长度为160字节。
于一实施例中,请参照图1以便于说明,当计算器装置读取数据区块D1的数据(第一储存数据)与数据区块D2的数据(第二储存数据),并用上述方法,依据错误检查区块P1的错误更正数据与错误检查区块P2的错误更正数据确认,发现第一储存数据与第二储存数据其中之一的位错误率高于40位时,计算器装置将第一储存数据与第二储存数据整合,并将数据区块D1、数据区块D2、错误检查区块P1与错误检查区块P2复写为数据区块DX与错误检查区块PX,因此形成如图3所示的闪存储存区块配置示意图,图3为本发明一实施例的闪存储存区块配置示意图。如图3所示,其中,数据区块DX储存有第一储存数据与第二储存数据,而错误检查区块PX储存有对应于数据区块DX的错误更正数据(BCH码)。因此,数据区块DX所能储存的数据长度为2048字节,而错误检查区块PX所能储存的数据长度为160字节。如此,错误检查区块PX中的错误更正数据可以提供最多85位的错误更正能力。
于另一实施例中,当计算器装置读取数据区块D1的第一储存数据,与错误检查区块P1的第一错误更正数据后,发现第一储存数据与第一错误更正数据的位错误率达到40位时,代表数据区块D1与错误检查区块P1已经快要不能用80字节的BCH码来进行错误更正。则计算器装置将数据区块D2与错误检查区块P2的数据写到数据区块D9与错误检查区块P9。并且计算器装置将数据区块D1、数据区块D2、错误检查区块P1与错误检查区块P2重新覆写为如图4所示的数据区块DY与错误检查区块PY,图4为本发明另一实施例的闪存储存区块配置示意图。如图4所示,其中数据区块DY最多可以被写入2048字节的数据,而错误检查区块PY可以写入160位组长度的BCH码。然而数据区块DY中仅仅储存第一储存数据(1024字节)。
此外由于依据本发明的闪存存取方法并非以固定的硬件装置来进行数据的存取与错误更正,数据区块与错误检查区块的配置可以不限制。因此,对于需要较高数据正确性的文件分配表或其他系统数据,依据本发明的精神,请回到图3,可以在闪存的一个分页中任意的划分出系统数据区块DS与错误检查区块PS。于此实施例中,系统数据区块DS可以储存有5120字节的数据,而错误检查区块PS可以储存3712字节的BCH码或其他错误更正码。因此错误检查区块PS中的错误更正码,以BCH码为例,可以提供最多1746位的错误更正能力,对于最多5120字节的系统数据来说,这样配置的数据正确性会远远高于一般的1024字节数据配置80字节错误更正码(错误更正数据)所能提供的数据正确性。
接着关于步骤S240中如何选择性地将第一储存数据写入闪存的流程,请参照图5,图5为图2的步骤S240的流程图。如图5所示,步骤S240包含:步骤S241,判断第一错误更正数据的第二数据长度是小于第二门坎值还是等于第二门坎值。当判断第二数据长度小于第二门坎值时,执行步骤S243,将第一储存数据写入闪存,并以第一算法依据第一储存数据产生前述具有第三数据长度的第二错误更正数据。当判断第二数据长度等于第二门坎值时,执行步骤S245,将第一储存数据写入闪存,并以第二算法依据第一储存数据产生第三错误更正数据,第三错误更正数据具有第二数据长度。具体来说,闪存的一个页面例如最多提供8192字节外加640字节的数据长度。因此最多提供长达8192字节的数据区块与长达640字节的错误检查区块。在这样的实施例中,当第二数据长度(现有的错误更正数据的长度)等于640字节时,表示已经使用到最长的错误更正数据(BCH码)。因此计算器装置于此时将错误更正数据的格式从BCH码更换为低密度奇偶检查码(low-density parity-check code,LDPC code)。如此,在长度为640字节的状况下,BCH码仅能提供最多301位的错误更正能力,而低密度奇偶检查码将能提供多于301位的错误更正能力。
上述的方法流程,执行于用来对闪存进行存取的计算器装置。实作上是直接将第一储存数据与第一错误更正数据都从闪存中的储存区块中取得。然后以计算器装置的中央处理器来进行位错误率的检查以及存取次数的取得。
此外,于一实施例中,前述闪存存取方法,更包括:执行软件,以第一闪存转换格式从闪存中读取第一数据。依据指令,将第一数据以第一闪存转换格式或第二闪存转换格式写入闪存。具体来说,闪存转换格式是用来描述闪存的数据配置,使得对于计算器装置而言,闪存如同一般的硬盘操作方式一样简单。
举例来说,第二闪存转换格式使得闪存对于计算器来说如同32位文件分配表(file allocation table-32bit,FAT32)格式的硬盘。而第一闪存转换格式使得闪存对于计算器来说如同新技术文件系统(new technology file system,NTFS)格式的硬盘。而前述流程具体来说,例如将闪存中以第一闪存转换格式储存的数据读出,转以第二闪存转换格式写入闪存。因此闪存中的数据就能被较旧型的计算器(例如x86计算器)辨识与读取。
另一实施例,第一闪存转换格式使得闪存对于计算器来说如同32位文件分配表(file allocation table-32bit,FAT32)格式的硬盘。而第二闪存转换格式使得闪存对于计算器来说如同新技术文件系统(new technology file system,NTFS)格式的硬盘。而前述流程具体来说,例如将闪存中以第二闪存转换格式储存的数据读出,转以第一闪存转换格式写入闪存。
因此,依照上述记载的闪存存取方法,可以对下述提出的闪存进行存取。请参照图6,为本发明一实施例所实现的闪存。如图6所示,闪存6000具有一个第一储存模块6100与一个第二储存模块6200。第一储存模块6100的配置不同于第二储存模块6200。具体来说,第一储存模块6100例如具有多个第一储存区块6110、6120乃至于6180与一个系统区块6190。其中各个第一储存区块中的配置相同,以第一储存区块6110举例,第一储存区块6110具有第一数据区块6111与第一错误检查区块6113。第一数据区块6111的位长度(最大数据容量)例如为1024字节,而第一错误检查区块6113的位长度(最大数据容量)例如为80字节。而系统区块6190有第二数据区块6191与第二错误检查区块6193,其中第二数据区块6191的位长度例如为5120字节,第二错误检查区块6193的位长度例如为3712字节。
第二储存模块6200例如具有多个第二储存区块6210、6220乃至6280。其中各个第二储存区块中的配置相同,以第二储存区块6210举例,第二储存区块6210具有第三数据区块6211与第三错误检查区块6213。第三数据区块6211的位长度(最大数据容量)例如为2048字节,而第三错误检查区块6213的位长度(最大数据容量)例如为160字节。
当计算器装置对闪存6000中的第一储存模块6100取得数据时,例如从第一储存区块6120中取得数据,则计算器装置辨识出此数据由数据长度为1024字节的储存数据与数据长度为80字节的错误更正数据组成,并且计算器装置得以确认其中的错误更正数据(错误更正码)是哪一种格式、应使用哪一种算法来进行错误检查与更正。因此计算器装置得以对取得的数据进行错误检查与更正。而当计算器装置对闪存6000中的第二储存模块6200取得数据时,例如从第二储存区块6230中取得数据,则计算器装置辨识出此数据由数据长度为2048字节的储存数据与数据长度为160字节的错误更正数据组成。同样地,计算器装置得以对应地对取得的数据进行错误检查与更正。并且,利用软件来进行闪存的存取与错误检查,则在同一个实体闪存中,得以用多种不同地错误更正码或错误更正算法,例如在同一个实体闪存中,部分的数据使用BCH码,另一部分的数据使用低密度奇偶检查码。
此外,于另一实施例中,前述第一储存模块6100与前述第二储存模块6200并非配置不同,而是使用的算法不同。举例来说,第一储存模块6100应用BCH码,而第二储存模块6200应用LDPC码。当计算器装置从第一储存模块6100取得储存数据与错误更正码时,计算器装置由于运行软件来进行错误更正,因此得以辨认出要用BCH码来进行错误更正。此外,如同前述,当计算器装置判断从第一储存模块6100取得的数据位错误率高于门坎值,则计算器装置也可以将取得的储存数据写入第二储存模块6200。由于在相同的配置下,第二储存模块6200使用的LDPC码的错误更正能力优于第一储存模块6100使用的BCH码,因此这样的运作得以提供更好的错误更正能力。
举例来说,当判断一笔待储存数据的安全性需求为第一类别(较低),则将待储存数据以BCH码产生错误更正数据。并将待储存数据与其对应的错误更正数据写入第一储存模块6100。当判断一笔待储存数据的安全性需求为第二类别(较高,如闪存转换层中的系统表),则将待储存数据以LDPC码产生错误更正数据。并将待储存数据与其对应的错误更正数据写入第二储存模块6200。在此仅以不同的编码方式来提高安全性,使其更能扩充其意义。当然也可用相同编码但不同长度对不同安全性数据分别进行处理。
于另一实施例中,安全性需求可以不只两个类别,而是依据软件所能提供的错误更正算法数量来决定安全性需求分类的数量。于再一实施例中,第一储存模块6100中的数据长度为1024字节而错误更正码长度都为80字节。而第二储存模块6200中的数据长度为2048字节而错误更正码长度都为160字节。当计算器执行软件判断待储存数据的类别时,计算器进一步判断待储存数据的数据长度,以决定要储存在第一储存模块6100还是第二储存模块6200。举例来说当待储存数据是第一类别,且其数据长度为1024字节时,待储存数据被计算器以BCH码产生其错误更正数据,并且被写入第一储存模块6100。当待储存数据是第一类别,且其数据长度为2048字节时,待储存数据被计算器以BCH码产生其错误更正数据,并且被写入第二储存模块6200。当待储存数据是第二类别,且其数据长度为1024字节时,待储存数据被计算器以LDPC码产生其错误更正数据,并且被写入第一储存模块6100。当待储存数据是第二类别,且其数据长度为2048字节时,待储存数据被计算器以LDPC码产生其错误更正数据,并且被写入第二储存模块6200。
于在一实施例中,计算器装置得以配备硬件电路直接对所取得的储存数据与错误更正码进行译码与错误更正。如果译码(错误更正)成功,则输出译码结果。如果译码失败,则表示储存数据与错误更正码的位错误率过高,或是硬件电路所使用的算法不适用于当前的错误更正码。如此,计算器装置再执行软件以前述各实施例的流程来进行译码。具体来说,直接用硬件电路进行译码所花费的时间少,而以软件来译码可以提供较高的错误更正能力。
Claims (25)
1.一种闪存存取方法,其特征在于,包括:
从一闪存读取一第一数据,该第一数据具有一第一储存数据与一第一错误更正数据,该第一储存数据具有第一数据长度,该第一错误更正数据具有一第二数据长度;
得到关于该第一储存数据的一第一错误参数;以及
当该第一错误参数大于一第一门坎值时,选择性地将该第一储存数据写入该闪存为一第二数据,该第二数据具有该第一储存数据与一第二错误更正数据,该第二错误更正数据具有一第三数据长度,该第三数据长度大于该第二数据长度,该第一错误更正数据与该第二错误更正数据以一第一算法,依据该第一储存数据所产生。
2.如权利要求1所述的方法,其特征在于,选择性地将该第一储存数据写入该闪存为该第二数据的步骤中,包括:
当该第二数据长度小于一第二门坎值时,将该第一储存数据写入该闪存,并以该第一算法依据该第一储存数据产生该第二错误更正数据;以及
当该第二数据长度等于该第二门坎值时,将该第一储存数据写入该闪存,并以一第二算法依据该第一储存数据产生一第三错误更正数据,该第三错误更正数据具有该第二数据长度。
3.如权利要求2所述的方法,其特征在于,该第一算法依据BCH码()所实现的错误检查算法,而该第二算法依据低密度奇偶检查码(,)所实现的错误检查算法。
4.如权利要求1所述的方法,其特征在于,该第一错误参数包含该闪存的一覆写次数。
5.如权利要求4所述的方法,其特征在于,该第一错误参数更包含一位错误率,该位错误率以该第一算法依据该第一错误更正数据与该第一储存数据所得到。
6.如权利要求5所述的方法,其特征在于,该第一门坎值依据该第一错误更正数据的一错误更正上限而设定。
7.如权利要求5所述的方法,其特征在于,该第一门坎值依据该覆写次数而设定。
8.如权利要求1所述的方法,其特征在于,该第一错误参数包含一位错误率,该位错误率以该第一算法依据该第一错误更正数据与该第一储存数据所得到。
9.如权利要求8所述的方法,其特征在于,该第一门坎值依据该第一错误更正数据的一错误更正上限而设定。
10.如权利要求1所述的方法,其特征在于,该第三数据长度为该第二数据长度的两倍。
11.一种闪存,其特征在于,包含:
至少一第一储存模块,包含:
多个第一储存区块,每一该第一储存区块具有一第一数据区块与一第一错误检查区块,其中该第一数据区块具有第一位长度,该第一错误检查区块具有第二位长度;以及
一第一系统区块,该第一系统区块具有一第二数据区块与一第二错误检查区块,其中该第二数据区块具有第三位长度,该第二错误检查区块具有第四位长度,该第三位长度不同于该第一位长度,该第四位长度大于该第二位长度。
12.如权利要求11所述的闪存,其特征在于,更包含:
至少一第二储存模块,包含:
多个第二储存区块,每一该第二储存区块具有一第三数据区块与一第三错误检查区块,其中该第三数据区块具有第五位长度,该第三错误检查区块具有第六位长度,该第五位长度不同于该第一位长度,且该第六位长度不同于该第二位长度。
13.如权利要求11所述的闪存,其特征在于,该第一储存模块更包含至少一第三储存区块,每一该第三储存区块具有一第四数据区块与一第四错误检查区块,其中该第四错误检查区块具有第七位长度,该第七位长度不同于该第一位长度。
14.如权利要求11所述的闪存,其特征在于,该第一储存模块的部份多个所述第一错误检查区块所储存的错误更正数据对应于第一算法,而另一部份多个所述第一错误检查区块所储存的错误更正数据对应于第二算法。
15.一种闪存存取方法,其特征在于,包括:
执行软件,以一第一闪存转换格式从一闪存中读取一第一数据;以及
依据一指令,将该第一数据以该第一闪存转换格式或一第二闪存转换格式写入该闪存。
16.如权利要求15所述的方法,其特征在于,该第一数据具有一第一储存数据与一第一错误更正数据,该第一储存数据具有第一数据长度,该第一错误更正数据具有一第二数据长度,且该方法更包含:
得到关于该第一储存数据的一第一错误参数;以及
当该第一错误参数大于一第一门坎值时,选择性地将该第一储存数据写入该闪存为一第二数据,该第二数据具有该第一储存数据与一第二错误更正数据,该第二错误更正数据具有一第三数据长度,该第三数据长度大于该第二数据长度,该第一错误更正数据与该第二错误更正数据以一第一算法,依据该第一储存数据所产生。
17.一种闪存存取方法,其特征在于,包括:
判断一待储存数据的一类别;
当该待储存数据属于一第一类别时,以一第一算法产生关于该待储存数据的一第一错误更正数据,并将该待储存数据与该第一错误更正数据写入一闪存为一第一数据;以及
当该待储存数据属于一第二类别时,以一第二算法产生关于该待储存数据的一第二错误更正数据,并将该待储存数据与该第二错误更正数据写入该闪存为一第二数据。
18.如权利要求17所述的方法,其特征在于,该第一算法与该第二算法不同。
19.如权利要求18所述的方法,其特征在于,该第一错误更正数据的长度与该第二错误更正数据的长度相同。
20.如权利要求17所述的方法,其特征在于,该第一算法与该第二算法相同,且该第一错误更正数据的长度与该第二错误更正数据的长度不同。
21.一种闪存的存取方法,其特征在于,该闪存一第一闪存芯片与一第二闪存芯片,其中该第一闪存芯片与该第二闪存芯片不同,该存取方法包含:
执行一软件对该闪存进行存取时,该软件以一第一算法产生关于一第一待储存数据的一第一错误更正数据,并将该第一待储存数据与该第一错误更正数据写入该第一闪存芯片为一第一数据,该软件以一第二算法产生关于一第二待储存数据的一第二错误更正数据,并将该第二待储存数据与该第二错误更正数据写入该第二闪存芯片为一第二数据;
其中,该第一算法与该第一算法不同,与/或该第一错误更正数据的长度与该第二错误更正数据的长度不同。
22.如权利要求21所述的方法,其特征在于,该软件更包含一闪存转换层算法软件管理该第一闪存芯片与该第二闪存芯片。
23.一种闪存数据存取方法,其特征在于,包含:
准备一第一待储存数据与一第二待储存数据;以及
执行一软件,先以一第一算法产生关于该第一待储存数据的一第一错误更正数据,并将该第一待储存数据与该第一错误更正数据写入一闪存为一第一数据,再以一第二算法产生关于该第二待储存数据的一第二错误更正数据,并将该第二待储存数据与该第二错误更正数据写入该闪存为一第二数据;
其中,该第一算法与该第一算法不同,与/或该第一错误更正数据的长度与该第二错误更正数据的长度不同,由此提高数据存储的安全性。
24.一种闪存的存取方法,其特征在于,该闪存具有一闪存转换层算法固件管理该闪存,该存取方法包含:
该闪存转换层算法固件选择性地被储存于远程的一闪存转换层算法软件取代,并以该闪存转换层算法软件管理该闪存。
25.如权利要求24所述的方法,其特征在于,该存取方法依据该闪存中一第一储存数据的一覆写次数或一位错误率,选择性地以该闪存转换层算法软件取代该闪存转换层算法固件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662278462P | 2016-01-14 | 2016-01-14 | |
US62/278,462 | 2016-01-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106970853A true CN106970853A (zh) | 2017-07-21 |
Family
ID=59334185
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610886817.2A Withdrawn CN106970852A (zh) | 2016-01-14 | 2016-10-11 | 闪存错误控制电路及其方法 |
CN201610919788.5A Withdrawn CN106970853A (zh) | 2016-01-14 | 2016-10-21 | 闪存存取方法与应用此方法的闪存 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610886817.2A Withdrawn CN106970852A (zh) | 2016-01-14 | 2016-10-11 | 闪存错误控制电路及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN106970852A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656831A (zh) * | 2017-08-21 | 2018-02-02 | 深圳市致存微电子企业(有限合伙) | 闪存纠错方法以及纠错装置 |
CN111966524A (zh) * | 2020-08-24 | 2020-11-20 | 深圳三地一芯电子有限责任公司 | 一种Flash数据写入方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070271494A1 (en) * | 2006-05-17 | 2007-11-22 | Sandisk Corporation | Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices |
CN101645026A (zh) * | 2008-08-07 | 2010-02-10 | 创惟科技股份有限公司 | 根据错误更正码更新闪存页面的储存装置与方法 |
CN101996688A (zh) * | 2009-08-31 | 2011-03-30 | 银灿科技股份有限公司 | 应用可变动错误更正码容量的快闪存储器控制方法 |
CN102969028A (zh) * | 2012-10-18 | 2013-03-13 | 记忆科技(深圳)有限公司 | 一种ecc动态调整方法、系统及闪存 |
CN103329103A (zh) * | 2010-10-27 | 2013-09-25 | Lsi公司 | 用于基于闪存的数据存储的自适应ecc技术 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5166074B2 (ja) * | 2008-02-29 | 2013-03-21 | 株式会社東芝 | 半導体記憶装置、その制御方法、および誤り訂正システム |
KR101968746B1 (ko) * | 2011-12-30 | 2019-04-15 | 삼성전자주식회사 | 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템 |
-
2016
- 2016-10-11 CN CN201610886817.2A patent/CN106970852A/zh not_active Withdrawn
- 2016-10-21 CN CN201610919788.5A patent/CN106970853A/zh not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070271494A1 (en) * | 2006-05-17 | 2007-11-22 | Sandisk Corporation | Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices |
CN101645026A (zh) * | 2008-08-07 | 2010-02-10 | 创惟科技股份有限公司 | 根据错误更正码更新闪存页面的储存装置与方法 |
CN101996688A (zh) * | 2009-08-31 | 2011-03-30 | 银灿科技股份有限公司 | 应用可变动错误更正码容量的快闪存储器控制方法 |
CN103329103A (zh) * | 2010-10-27 | 2013-09-25 | Lsi公司 | 用于基于闪存的数据存储的自适应ecc技术 |
CN102969028A (zh) * | 2012-10-18 | 2013-03-13 | 记忆科技(深圳)有限公司 | 一种ecc动态调整方法、系统及闪存 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656831A (zh) * | 2017-08-21 | 2018-02-02 | 深圳市致存微电子企业(有限合伙) | 闪存纠错方法以及纠错装置 |
CN111966524A (zh) * | 2020-08-24 | 2020-11-20 | 深圳三地一芯电子有限责任公司 | 一种Flash数据写入方法及装置 |
CN111966524B (zh) * | 2020-08-24 | 2021-07-13 | 深圳三地一芯电子有限责任公司 | 一种Flash数据写入方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106970852A (zh) | 2017-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8560926B2 (en) | Data writing method, memory controller and memory storage apparatus | |
US8806301B2 (en) | Data writing method for a flash memory, and controller and storage system using the same | |
US20140372667A1 (en) | Data writing method, memory controller and memory storage apparatus | |
CN104866429B (zh) | 存储器管理方法、存储器控制电路单元与存储器存储装置 | |
US8902671B2 (en) | Memory storage device, memory controller thereof, and method for programming data thereof | |
US8516184B2 (en) | Data updating using mark count threshold in non-volatile memory | |
TWI479314B (zh) | 系統資料儲存方法、記憶體控制器與記憶體儲存裝置 | |
CN102760099B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
TWI476590B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
CN103631670B (zh) | 存储器储存装置、存储器控制器与数据处理方法 | |
TWI459393B (zh) | 用於非揮發性記憶體的資料寫入方法、控制器與儲存裝置 | |
TWI540582B (zh) | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 | |
US9063888B2 (en) | Program code loading and accessing method, memory controller, and memory storage apparatus | |
CN105988722A (zh) | 数据储存方法及嵌入式系统 | |
CN104182293B (zh) | 数据写入方法、存储器存储装置与存储器控制器 | |
US20140372833A1 (en) | Data protecting method, memory controller and memory storage device | |
TWI548991B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
TW201606503A (zh) | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 | |
US20140040534A1 (en) | Data storing method and memory controller and memory storage device using the same | |
CN104252317B (zh) | 数据写入方法、存储器控制器与存储器存储装置 | |
CN106970853A (zh) | 闪存存取方法与应用此方法的闪存 | |
CN104252600B (zh) | 数据保护方法、存储器控制器与存储器储存装置 | |
TWI446170B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
CN110277999A (zh) | Ldpc解码装置、包括其的存储器系统及其方法 | |
TWI541809B (zh) | 資料存取方法、記憶體控制電路單元與記憶體儲存裝置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20170721 |