CN107170482A - 存储器读取方法及存储器装置 - Google Patents
存储器读取方法及存储器装置 Download PDFInfo
- Publication number
- CN107170482A CN107170482A CN201610878727.9A CN201610878727A CN107170482A CN 107170482 A CN107170482 A CN 107170482A CN 201610878727 A CN201610878727 A CN 201610878727A CN 107170482 A CN107170482 A CN 107170482A
- Authority
- CN
- China
- Prior art keywords
- read
- data
- ecc
- memory
- read operation
- 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.)
- Granted
Links
Classifications
-
- 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
- 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
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
本发明提供一种存储器读取方法。该存储器读取方法包含以下步骤:使用一第一电压电平执行一第一读取操作以从存储器阵列读取数据;决定对应于从存储器阵列中读取的数据的位的数目的一瞬时位计数;取得对应于被写入的数据的位的数目的一记录位计数,被写入的数据于一时间被写入到存储器阵列;取得瞬时位计数与记录位计数之间的一差值;一旦决定差值为小于或等于一第一临界值,输出从存储器阵列使用第一读取操作读取的数据;一旦决定差值为大于第一临界值,执行一第二读取操作以从存储器阵列读取数据,第二读取操作使用不同于第一电压电平的一第二电压电平。
Description
技术领域
本发明是有关于存储器单元的读取。
背景技术
存储在存储器阵列的存储器单元中的数据可通过施加一电压到存储器单元而被读取,此电压被称为读取电压电平或读取电平。在一些存储器阵列中,读取电平可以是一固定电压电平。存储器单元的临界电压可随着时间改变,使得使用一固定读取电平会造成从存储器单元中读取数据的不精确。
发明内容
本发明描述改善在存储器阵列存储器单元上执行的读取操作的精确性的装置、系统及技术。在一实施例中,当写入数据到存储器阵列中的存储器单元时,例如一闪存芯片时,计算数据中的「高临界电压」或者「低临界电压」的位的数目,并存储为一纪录计数数目(recorded count number,rCN)。在一些实施例中,高临界电压位对应位‘0’,而低临界电压位对应位‘1’。然而,在其他实施例中,高临界电压位对应位‘1’,而低临界电压位对应位‘0’。当接收到一读取指令时,对从存储器单元中感应的数据使用一第一读取电平执行一第一读取操作,并再次基于感应数据计算高临界电压位或者低临界电压位的数目以产生一瞬时计数数目(instant counter number,iCN)。取得瞬时计数数目(iCN)与纪录计数数目(rCN)之间的差值。如果此差值大于一第一临界值,这表示存储器数据可能无法被一错误校正码(error correcting code,ECC)校正。在此情况下,使用不同的读取电平执行一或多个额外的读取操作。在一实施例中,如果此差值为负的,则在执行一第二读取操作时增加读取电平。如果此差值为正的,则在执行第二读取操作时减少读取电平。进一步地,在一些选择性的实施例中,如果此差值很大,例如大于一第二临界值,这表示存储在数据中有大量的位翻转(flipped),则以一大量增加(或视应用而减少)读取电平。第二读取操作是使用更新的读取电平来执行,且此流程可重复直到(1)此差值小于第一临界值,或者(2)读取操作的次数超过读取操作的上限。接着输出从存储器中读取的数据。通过此方法,响应于一读取指令,可通过使用不同的读取电平执行读取操作额外以从存储器阵列中的存储器单元读出数据,这些读取电平可在连续的读取操作中动态的改变。
在一实施例中,在决定纪录计数数目(rCN)之后,在纪录计数数目的位上计算一ECC值并存储此ECC值。当在之后的一读取操作期间中纪录计数数目(rCN)被读取时,使用此ECC值校正纪录计数数目(rCN)。如果此纪录计数数目(rCN)无法被校正,则中止额外的读取操作。
根据本发明的一个方面,提供了一种存储器读取方法。该存储器读取方法包括:使用一第一电压电平执行一第一读取操作以从一存储器阵列读取一数据;决定对应于从该存储器阵列中读取的该数据的位的数目的一瞬时位计数;取得对应于一被写入的数据的位的数目的一记录位计数,该被写入的数据于一时间被写入到该存储器阵列;取得该瞬时位计数与该记录位计数之间的一差值;一旦决定该差值为小于或等于一第一临界值,输出从该存储器阵列使用该第一读取操作读取的该数据;以及一旦决定该差值为大于该第一临界值,执行一第二读取操作以从该存储器阵列读取该数据,该第二读取操作使用不同于该第一电压电平的一第二电压电平。
根据本发明的另一方面,还提供了一种存储器装置。该存储器装置包括:一第一存储单元,用以存储使用一写入操作而被写入到一存储器阵列的一数据的位的数目对应的一记录位计数;一第二存储单元,用以存储从该存储器阵列中使用一第一电压电平执行一第一读取操作读取的一数据的位的数目的对应的一瞬时位计数;以及一控制器,耦接到该第一存储单元及该第二存储单元,并用以执行多个操作。其中,控制器执行的多个操作包含:从该第一存储单元取得该记录位计数及从该第二存储单元中取得该瞬时位计数;取得该瞬时位计数与该记录位计数之间的一差值;一旦决定该差值为小于或等于一第一临界值,输出从该存储器阵列使用该第一读取操作读取的该数据;以及一旦决定该差值为大于该第一临界值,执行一第二读取操作以从该存储器阵列读取该数据,该第二读取操作使用不同于该第一电压电平的一第二电压电平。
上述技术的实施更包含系统、方法、计算机程序产品及一计算机可读取媒体。这种计算机程序产品适合用在非瞬时的机器可读取媒体,此非瞬时的机器可读取媒体使用一或多个处理器存储多个指令。这些指令用以使一或多个处理器执行上述动作。此非瞬时的机器可读取媒体使用一或多个处理器存储多个指令,以在当一或多个处理器执行指令时使一或多个处理器执行上述动作。
通过此方法,通过使用动态读取电平执行额外的读取操作,可从存储器阵列中的存储器单元可靠地读出数据。通过重复地执行额外的读取操作,感应的存储器数据的错误位的数目可降低到小于ECC可被校正的最大位计数。据此,可精确地读取存储器资料而不需要增加ECC能力以处理大量的错误位。通过此方法,此文中所描述的装置、系统及技术可在其他存储器单元发生退化时延长存储器单元的使用生命周期,或者作为保存用。
此装置、系统及技术可被应用到多种非挥发存储器阵列,例如NAND闪存或NOR闪存,或者其他包含对存储在存储器单元中的数据具有ECC校正能力的非挥发存储器。这些存储器可包含单阶存储单元(single-level cells,SLCs),或者多阶存储单元(multi-levelcells,MLCs)如三阶存储单元(triple-level cells,TLCs)或四阶存储单元(quadruple-level cells,QLCs)等等。
以下参照所附的附图及实施例描述本发明的一或多个应用。其他特征、观点及优点可以从下列的实施例描述、附图及权利要求中得知。
附图说明
图1A及图1B绘示在存储器单元上使用一固定读取电平执行读取操作的一例。
图2A及图2B绘示依据一实施例在存储器单元上使用动态读取电平执行读取操作的一例。
图3绘示依据一实施例决定一动态读取电平的一例。
图4A及图4B绘示依据一实施例在存储器单元上使用动态读取电平执行读取操作的一装置的一例。
图5A及图5B绘示依据一实施例在存储器单元上使用动态读取电平执行一读取操作且具有对纪录计数数目进行错误校正的一装置的一例。
图6绘示依据一实施例在存储器单元上使用动态读取电平执行读取操作的一流程的一例。
图7绘示依据另一实施例在存储器单元上使用动态读取电平执行读取操作的一流程的一例。
图8绘示依据一实施例在存储器单元上使用动态读取电平执行一读取操作且具有对纪录计数数目进行错误校正的一流程的一例。
【符号说明】
110、210:读取窗
112、114、212、214:读取电平
120、130、130’、220、230、230’:临界电压分布
X1、X2、X2’、V1、V2、V2’:电压电平
M:动态读取电平临界值
410、510:处理器
420、520:存储器控制器
402、502:存储器阵列
404、504:数据ECC存储器
406、506:记录计数存储器
407:瞬时计数存储器
508:计数ECC存储器
ECC:错误校正码
CNT:记录计数值
CNTECC:记录计数值错误校正码
iCN:瞬时计数数目
rCN:纪录计数数目
600、700、800:流程
602~620、702~718、802~826:流程步骤
具体实施方式
存储器阵列中的存储器单元,例如一NAND闪存芯片,可通过施加一特定电压电平的电压到存储器单元的栅极而被读取而例如取得存储器单元中存储的一或多个位的值,此特定电压电平被称为存储器单元的读取电平。此读取电平可以是在容许电压的限定范围内的一固定值,此容许电压的限定范围被称为读取窗(读取窗)。
图1A及图1B绘示在存储器单元上使用一固定读取电平执行读取操作的一例。如图1A所示,一存储器阵列的读取窗,例如存储器的页(page)或块(chunk)的读取窗被标记为110,具有一下限的电压电平X1及一上限的电压电平X2。临界电压分布120和130用来编程存储器单元,例如写入数据到存储器单元,或从存储器单元抹除数据。
存储器阵列中的存储器单元为可ECC被校正的(ECC-correctable)。也就是说,在存储器数据中的位的数目并未超过施加ECC校正可校正的一最大位计数的情况下,当从存储器单元读取数据时,存储器数据中的位的数目被翻转(flipped)或改变(例如与写入数据的时候的值相比,值从‘0’改变到‘1’或者从‘1’改变到‘0’)可被校正。在存储器位被存储在存储器单元中的时候,有多种原因会造成存储器位的值可能会改变,例如物理条件如温度的改变,或者编程电压施加到邻近的存储器单元。另外,更可能因为存储器读取操作中的缺陷,例如施加的读取电平相比于存储器单元的临界电压太低或太高造成不精确的读取而导致存储器位的值改变。
为了启动ECC校正,当写入数据到存储器单元时,使用一合适的ECC算法计算数据上的一ECC值,并存储此ECC值到一存储器位置或其他合适的硬件,例如一缓存器或硬盘中。当从存储器阵列中读取数据时,结合存储的ECC值与感应数据(例如在存储器数据与ECC值之间执行一XOR操作)以校正位中的错误。使用的ECC算法限制了可被校正的错误位的最大数目,或者用来存储ECC值使用的位计数限制了可被校正的错误位的最大数目,或者两者皆限制了可被校正的错误位的最大数目。
在图1A中,如果读取电平位于读取窗110中,例如介于电压电平X1和电压电平X2之间,则执行对应的读取操作感应到的存储器数据可通过施加ECC校正而被校正。举例来说,如果读取电平位于112,介于电压电平X1和电压电平X2之间,则存储器数据读取是位于存储器阵列的ECC能力之内,存储器数据中的错误位的数目可通过ECC操作而被校正。然而,如果读取电平位于读取窗110之外,例如低于电压电平X1或高于电压电平X2,则在存储器数据中错误位的数目大于施加ECC校正可校正的最大位计数。举例来说,如果读取电平位于114,则存储器数据无法使用ECC操作校正。
因此,读取电平是固定在读取窗110内的一值,例如位于112。当耦接到存储器阵列的一处理器发布一读取指令时,一存储器控制器设定读取电平到一预选值,例如112,并对存储器单元使用一固定读取电平执行一感应操作以得到存储数据。之后,存储器控制器执行ECC操作以校正被读取的存储器数据中的错误位。如果错误位被ECC校正,则读取操作被视为成功。然而,如果错误位无法被ECC校正,则读取操作为失败。
在一些情况中,用于编程或抹除存储器单元的临界电压分布可能会改变,例如因为随着时间流逝的数据保存、数据损失、或者物理磨损(wear)或撕裂(tear)中存储器单元的退化及其他原因而改变。在此情况下,读取窗可能会偏移,例如变小。举例来说,图1B绘示了临界电压分布130因为数据保存而改变为130’,且读取窗也随之改变为110’,读取窗的上限降低为电压电平X2’。固定读取电平112现在大于X2’且位于读取窗110’之外。因此,当使用固定读取电平112执行一读取操作时,存储器数据的错误位的数目大于可被ECC校正地最大位计数。因此,使用固定读取电平112读取的存储器数据不能被精确地读取。
对更高密度的存储器,例如缩小工艺的存储器或者多阶存储单元(MLCs),使用固定读取电平读取存储器数据可能更加困难,因为数据保存或其他存储器单元的退化导致如上述的读取窗偏移,读取窗可能更小且固定读取电平可能更容易位于读取窗之外。同时,这种高密度的存储器单元使用较高的ECC能力以校正因为缩小工艺或者多阶存储单元(MLCs)的临界电压电平更精细的变化导致的更多数量的位错误。然而,由于读取窗偏移,当使用一固定读取电平时,存储器数据中的错误位的数目仍有可能超过更高的ECC能力。
在一些实施例中,更希望能在存储器数据中的错误位无法被ECC校正时,改善存储器读取操作的精确性,并减少读取失败的发生。如以下段落所述,可通过响应于一读取指令使用动态改变的一读取电平执行额外的读取操作达成上述效果。此读取电平可随着侦测大于存储器阵列的ECC校正能力的存储器数据中的错误位的数目而被调整。额外的读取操作使用设定为一值的读取电平,其中此值会造成从存储器读取的数据中的较低数目的位错误,且此较低数目的位错误可被ECC校正。通过此方法,可减少较高ECC能力的需求而可减轻数据保存或其他存储器单元退化的影响。
以下段落描述使用动态读取电平执行多个读取操作的存储器阵列及相关装置、系统及技术。在一实施例中,以下段落描述的系统、方法及技术被应用到包含ECC能力的一非挥发存储器阵列,例如闪存芯片。然而,在其他实施例中,以下段落描述的系统、方法及技术也可被应用到其他种类的存储器。
图2A及图2B说明依据一实施例在存储器单元上使用动态读取电平执行读取操作的一例。如图2A所示,一存储器阵列的读取窗,例如存储器单元的页(page)或块(chunk)的读取窗被标记为210,具有一下限的电压电平V1及一上限的电压电平V2。临界电压分布220和230用来编程存储器单元,或从存储器单元抹除数据。
存储器阵列中的存储器单元为可被ECC校正的。一读取电平位于读取窗210中,例如介于电压电平V1和电压电平V2之间,而位于存储器阵列的ECC校正能力中。举例来说,使用读取电平212执行一读取操作,则存储器数据中的错误位的数目并未超过可被ECC校正的最大位计数而可通过ECC操作而校正数据。
然而,如果读取电平位于读取窗210之外,例如低于电压电平V1或高于电压电平V2,则在读取操作感应的存储器数据中错误位的数目大于ECC校正可校正的最大位计数。举例来说,如果读取电平位于214,则无法使用ECC操作校正存储器数据。
为了判断读取电平是否位于满足存储器阵列的ECC校正能力的电压范围内,图2A和图2B中的读取操作执行一额外的检查。一动态读取电平临界值M被用于存储器阵列。在一实施例中,如图2A和图2B所示,M为一正整数,对应于小于可被ECC(ECC校正能力)校正的最大位计数的一位计数。在另一实施例中,M可对应为存储器阵列的ECC能力的相同位计数。在一实施例中,M为针对装置400设定的一系统参数。在另一实施例中,M为一组态参数,例如装置400的一用户可在使用此装置之前设定参数M。
如下文中更详细的描述,当响应于一读取指令执行一读取操作时,计算一位计数差值ΔBC,此位计数差值对应一位计数,此位计数为读取操作与写入到存储器阵列的时候相比存储器数据中值改变的位计数。ΔBC与M进行比较。如果绝对差值|ΔBC|小于或等于M(即|ΔBC|≤M),则此值改变的位计数被决定为位于存储器阵列的ECC能力之内,且读取操作中观察到的位错误可被ECC校正。举例来说,如果使用读取电平212执行一读取操作,则|ΔBC|≤M且存储器数据是可被ECC校正的。在此情况下,不需要额外的存储器读取操作。
另一方面,如果|ΔBC|大于M(即|ΔBC|>M),(i.e.,|ΔBC|>M),则此值改变的位计数可能位于存储器阵列的ECC能力之外,使得不能确定读取操作中观察到的位错误可被ECC校正。举例来说,如果使用读取电平214执行一读取操作,则|ΔBC|>M且存储器数据可能不是可被ECC校正的。在此情况下,使用不同的读取电平执行一或多个额外的读取操作。举例来说,读取电平214是低于读取窗210的下限V1。使用一较高读取电平,例如一位于读取窗210之内且大于V1的一读取电平执行一第二读取操作。
由于数据保存或者存储器单元的退化等原因,用于编程或抹除存储器单元的临界电压分布可能会随时间改变。在此情况下,读取窗可能会偏移,例如变小。举例来说,图2B绘示了临界电压分布230改变为230’,且读取窗也随之改变为210’,读取窗的上限降低为电压电平V2’。读取电平212大于V2’且位于读取窗210’之外。因此,如果现在使用读取电平212执行一读取操作,则存储器数据的错误不能被ECC校正。
在此情况下,使用动态读取电平执行额外的读取操作。举例来说,选择满足此条件:|ΔBC|≤M的一新的读取电平,且使用此读取电平以执行一新的读取操作。使用新的读取电平的存储器数据读取为可被ECC校正的。通过此方法,通过动态调整读取电平使其满足临界值M,读取操作中的错误位的数目保证为可被ECC校正的。如上所述的,在一实施例中,M对应为小于存储器阵列的ECC能力的一位计数。在此情况下,满足此条件:|ΔBC|≤M的一读取电平可产生小于可被ECC校正的最大位计数的位错误。因此,通过将M设定为小于可被ECC校正的最大位计数,就不需要存储器阵列的较高ECC能力。在一实施例中,从可被ECC校正的最大位计数的二分之一与可被ECC校正的最大位计数之间的范围选择M。也就是说,0.5*ECC能力≤M≤ECC能力。如果M小于0.5*ECC能力,则可能需要设定一另一读取电平执行一外加的读取操作,而可能降低读取操作的效率。
关于图2B如上所描述的例子描述了初始读取电平大于对应于临界值M的读取电平的一种情形,使得读取电平在随后的读取操作中往下调整。在一些情况下,初始读取电平可能会小于对应于临界值M的读取电平。在此情况下,读取电平在随后的读取操作中往上调整。在一实施例中,判断从存储器阵列读取的数据中的位计数是大于或者小于当数据被写入到存储器阵列时记述了数据中的位计数,来决定读取电平是要动态的往上移或往下移。
图3说明了依据一实施例决定一动态读取电平的一例。当数据被写入到一存储器阵列(例如存储器阵列的页(page)或块(chunk))时,计算数据中的「高临界电压」的位计数(在一实施例中,位‘0’)或者「低临界电压」的位计数(在一实施例中,位‘1’),并且此数目并存储为一纪录计数数目(rCN)。举例来说,图3绘示了当资料被写入到存储器阵列中的时存储器单元,包含K个高临界电压位的及L个低临界电压位的存储器数据(K和L为正整数)。图3使用一读取电平Vread执行一初始读取。
在一实施例中,计算低临界电压位的L个数目,且此计数被存储为纪录计数数目(rCN),例如存储在合适的存储单元,如一存储器位置、一缓存器、或一硬盘等等。当执行一存储器读取操作时,再次计算从存储器阵列中读取的数据中的低临界电压位的数目,并设定为一瞬时计数数目(iCN)。rCN是从存储单元中取得,并且计算iCN与rCN的差值作为位计数差值ΔBC,此位计数差值ΔBC之后会与临界值M做比较。如上所述的,如果|ΔBC|≤M,则读取操作感应的数据中已翻转(‘1’改变到‘0’或者从‘0’改变到‘1’)的位计数是位于可被ECC校正的最大位计数,因此不需要进一步的读取操作。举例来说,这种情况可能发生在如第3图所示的(a)情况所示,当读取电平Vread是位于读取窗之内时。然而,如果|ΔBC|>M,则已翻转的位计数超过了存储器阵列的ECC校正能力,而使用不同的读取电平执行一或多个额外的读取操作。
为了判断下一读取操作的读取电平与前一次的读取电平相比是要增加还是减少,检查ΔBC的极性。如果低临界电压位读取的位计数小于L,则iCN小于rCN且ΔBC的极性为负。这种情况可能发生在,当高临界电压分布和低临界电压分布因为如上所述的数据保存或数据损失或存储器单元的退化导致的改变而导致读取窗偏移到与如图3所示的(a)情况的读取窗的相比的一较高电压范围。因此,如图3的(b)情况所示,位于(a)情况的读取窗之内的读取电平Vread现在是小于一对应更新读取窗的较低电压极限。在此情况中,从更新的读取窗之内选择一新的读取电平,其中新的读取电平位于与Vread相比的一较高电压,且使用此较高的读取电平执行一新的读取操作。
另一方面,当从存储器阵列中读取数据时,如果低临界电压位观察的位计数大于L,则iCN大于rCN且ΔBC的极性为正。这可能代表之前的读取操作使用的读取电平产生大量的位被不正确的读取为低临界电压位(‘1’)。这种情况可能发生在,举例来说,当高临界电压分布和低临界电压分布因为如上所述的数据保存或数据损失或存储器单元的退化导致的改变而导致读取窗偏移到与如图3所示的(a)情况的读取窗的相比的一较低电压范围。因此,如图3的(c)情况所示,(a)情况使用的读取电平Vread现在是大于一对应更新读取窗的较高电压极限。在此情况中,从改变的读取窗之内选择一新的读取电平,其中新的读取电平与Vread相比为一较低电压电平,且使用此较低的读取电平执行一新的读取操作。
以一例子描述,假设数据写入到包含300个高临界电压位及500个低临界电压位的存储器阵列(即K=300且L=500)。此存储器阵列使用校正能力最多为12位的ECC校正。动态读取电平临界值M被设定为8。当数据被写入到存储器阵列时,基于500个低临界电压位计算rCN并存储rCN,例如rCN=500。
当执行一读取操作时,感应数据的低临界电压位的数目被判断为500,使得iCN=500。在此情况下,|ΔBC|=|iCN-rCN|=0<(M=8)。因此,读取操作感应到的数据可被ECC校正,且不需要使用不同的读取电平执行额外的读取操作。这种情况对应图3的(a)情况。
当执行一读取操作时,感应数据的低临界电压位的数目被判断为484,使得iCN=484。在此情况下,|ΔBC|=|iCN-rCN|=16>(M=8)。因此,读取操作感应到的数据不能被ECC校正,且需要执行额外的读取操作。由于ΔBC=iCN-rCN=-16,ΔBC的极性为负且读取电平是往上移。举例来说,选择下一次的读取操作的读取电平以大于前一次的读取电平。这种情况对应图3的(b)情况。
当执行一读取操作时,感应数据的低临界电压位的数目被判断为514,使得iCN=514。在此情况下,|ΔBC|=|iCN-rCN|=14>(M=8)。因此,读取操作感应到的数据不能被ECC校正,且需要执行额外的读取操作。由于ΔBC=iCN-rCN=14,ΔBC的极性为正且读取电平是往下移。举例来说,选择下一次的读取操作的读取电平以小于前一次的读取电平。这种情况对应图3的(c)情况。
前述段落描述了基于计算低临界电压位的数目而决定动态读取电平。然而,在另一实施例中,通过计算高临界电压位的数目而决定动态读取电平。在此实施例中,基于在写入存储器单元的时候以及从存储器单元读取数据的时候存储器数据中高临界电压位的数目分别计算rCN和iCN。
在上述描述的实施例中(例如计算低临界电压位),当ΔBC的极性为负时,读取电平是往上移的。而当ΔBC的极性为正时,读取电平是往下移的。另一实施例也是可行的,例如计算高临界电压位。举例来说,在一实施例中,当ΔBC的极性为负时(例如iCN小于rCN时),读取电平是往下移或减少的。而当ΔBC的极性为正时(例如iCN大于rCN时),读取电平是往上移或增加的。
通过上述这种方法,可基于计算存储器数据中的低临界电压位或高临界电压位的数目动态的决定额外读取操作的读取电平。另外,在一些实施例中,当一额外读取操作的读取电平被调整时,新的读取电平的电压改变量与之前的读取操作使用的读取电平相比,是基于iCN与rCN之间的差值有多大而决定的。举例来说,在一实施例中,除了动态读取电平临界值M之外,也设定一移动步长临界值N。iCN与rCN之间的位计数差值ΔBC,也被用来与N比较以决定新的读取电平是要被设定为与前次的读取电平相比的一大值(大的移动步长)或一小值(小的移动步长)。
在一实施例中,N为针对装置400设定的一系统参数,且N被设定为以代表iCN与rCN之间的大的发散度(divergence)的一位计数。在一实施例中,N为一组态参数,例如装置400的一用户可在使用此装置之前设定参数N。在一实施例中,N为一非负的整数且N>M。
如果|ΔBC|≥N,则新的读取电平对应于一大的移动步长。然而,如果|ΔBC|<N,则新的读取电平对应于一小的移动步长。在一实施例中,大的移动步长对应于新读取电平与之前的读取电平之间的约为100毫伏特(mV)的一电压差值,而小的移动步长对应于新读取电平与之前的读取电平之间的约为50毫伏特(mV)的电压差值。然而,其他合适的电压差值也是可行的。大的移动步长被设计为减少执行额外读取操作的次数,这会导致较快的读取时间以及借此改善存储器读取效率。小的移动步长设计为随着动态读取电平接近一理想读取电平,例如在读取窗之内,而可增进分辨率。
如前所述的例子,假设相似于之前讨论过的一情况,例如数据写入到包含300个高临界电压位及500个低临界电压位的存储器阵列(即K=300且L=500)。此存储器阵列使用校正能力最多为12位的ECC校正。动态读取电平临界值M被设定为8且移动步长临界值N被设定为24。当数据被写入到存储器阵列时,基于低临界电压位计算rCN并存储rCN,例如rCN=500。
当在如图3的(a)情况所示的一读取窗之内的读取电平Vread执行一读取操作时,感应数据中的低临界电压位的数目被判断为500,使得iCN=500。在此情况下,|ΔBC|=|iCN-rCN|=0<(M=8)。因此,读取的存储器数据可被ECC校正,且不需要使用不同的读取电平执行额外的读取操作。
当读取窗改变到一较高电压范围时,例如图3的(b)情况所示,但在低于更新的读取窗之下限的读取电平Vread执行一读取操作时,感应数据中的低临界电压位的数目被判断为484,使得iCN=484。在此情况下,|ΔBC|=|iCN-rCN|=16>(M=8)。因此,读取的存储器数据不能被ECC校正,且需要执行额外的读取操作。由于ΔBC(=iCN-rCN=-16)的极性为负的,所以读取电平是往上移。进一步的,|ΔBC|=16<(N=24)且因此使用一小的移动步长。因此,新的读取电平相比于前一次的读取电平是增加了一小的移动步长(例如50mV)。
当读取窗改变到一较低电压范围时,例如图3的(c)情况所示,但在高于更新的读取窗之上限的读取电平Vread执行一读取操作时,感应数据中的低临界电压位的数目被判断为528,使得iCN=528。在此情况下,|ΔBC|=|iCN-rCN|=28>(M=8)。因此,读取的存储器数据不能被ECC校正,且需要执行额外的读取操作。由于ΔBC(=iCN-rCN=28)的极性为正的,所以读取电平是往下移。进一步的,|ΔBC|=28>(N=24)且因此使用一大的移动步长。因此,新的读取电平相比于前一次的读取电平是减少了一大的移动步长(例如100mV)。
图4A及图4B说明了依据一实施例在存储器单元上使用动态读取电平执行读取操作的一装置400的一例。装置400包含一存储器阵列402、一数据ECC存储器404、一记录计数存储器406、一瞬时计数存储器407、一处理器410及一存储器控制器420。
存储器阵列402为一合适的存储器单位用以存储用户数据。举例来说,存储器阵列402可以是存储器的一块(chunk)或页(page),而包含多个存储器单元。存储器单元可以是单阶存储单元(SLCs),或者多阶存储单元(MLCs)。在一实施例中,存储器阵列402是一非挥发性存储器单位,例如闪存。然而,在其他实施例中,存储器阵列可以是一些其他种类的存储器。
数据ECC存储器404是一合适的存储单元用以存储ECC数据。举例来说,数据ECC存储器404可以是包含存储器阵列402的存储器装置的单独的一部分。或者,资料ECC存储器404可以是单独的一存储器单位、一缓存器、或者其他硬件存储装置如一硬盘。
记录计数存储器406是一合适的存储单元用以存储纪录计数数目(rCN)数据。举例来说,记录计数存储器406可以是包含存储器阵列402及/或数据ECC存储器404的存储器装置的单独的一部分。或者,记录计数存储器406可以是单独的一存储器单位、一缓存器、一闩锁器、或者其他硬件存储装置如一硬盘。
瞬时计数存储器407是一合适的存储单元用以存储瞬时计数数目(iCN)数据。举例来说,瞬时计数存储器407可以是包含存储器阵列402及/或数据ECC存储器404的存储器装置的单独的一部分。或者,瞬时计数存储器407可以是单独的一存储器单位、一缓存器、一闩锁器、或者其他硬件存储装置如一硬盘。
处理器410是一合适的计算单元用以执行多种指令以操作装置400,这些指令包括在存储器阵列402和装置400的其他模块或者外部装置之间交换用户数据的指令。处理器410可以是一通用微处理器、一微控制器、或者其他合适的处理单元。在一实施例中,处理器410控制用于写入数据到存储器阵列402或从存储器阵列402读取数据的存储器控制器420。
存储器控制器420包含硬件及软件逻辑,用于执行多种相关于耦接到包含数据阵列的装置400的存储器的操作。在一实施例中,存储器控制器420编程存储器阵列402、从存储器阵列402读取数据、或者抹除存储器阵列402中存储的数据等等。存储器控制器420可包含一微处理器,此微处理器执行编程、读取或抹除存储器阵列402的指令。在一实施例中,存储器控制器420从处理器410接收指令以执行相关于存储器阵列402的操作。
在一实施例中,存储器阵列402和存储器控制器420在同一集成电路芯片上实施。举例来说,当数据ECC存储器404、记录计数存储器406和存储器阵列402为同一存储器装置上的一部分时,数据ECC存储器404和记录计数存储器406也可在同一芯片上实施。然而,在其他实施例中,存储器控制器420在与存储器阵列402分离的一不同实体的单元。这可以发生在,例如当存储器控制器420为一外部计算机时、或者一外部测试装置等等。
处理器410及/或存储器控制器420执行的指令被存储在处理器410及/或存储器控制器420可存取的合适的存储单元,例如一闪存模块、或硬盘等等。举例来说,这些指令可被存储在包含存储器阵列402的存储器装置的其他部分。
图4A绘示了装置400执行一操作以写入数据到存储器的一例。用户资料被编程到存储器阵列402。在用户数据上计算一ECC值且此ECC值被编程到数据ECC存储器404。此ECC值可以在写入用户数据到存储器阵列402的时候被计算,或者此ECC值可以在一不同的时候被计算,例如在用户数据被写入到存储器阵列402之后的时候被计算。可视应用由一处理器410,或者由一存储器控制器420通过执行一合适的ECC算法计算ECC值。所使用的ECC算法的例子包含汉明算法(Hamming Algorithm)、里德-所罗门算法(Reed-Solomon Algorithm)以及BCH算法(Bose-Chaudhuri-Hocquenghem algorithm,BCH algorithm)等等。
除了在用户数据上计算ECC值之外,基于用户数据中的位及ECC值计算rCN。rCN可在用户数据及ECC值被编程时计算,或者rCN可在一不同的时候例如在用户数据及ECC值分别被写入到存储器阵列402及数据ECC存储器404之后的时候被计算。在一实施例中,通过用户数据中的低临界位的累积数目及ECC值计算rCN。在另一实施例中,通过计算用户数据中的高临界位的累积数目及ECC值计算rCN。在一实施例中,如上所述的,结合用户数据中的位及ECC值以决定rCN。在一实施例中,由处理器410、存储器控制器420、或者其他合适的处理单元如外部测试装置计算rCN。在一实施例中,在芯片上计算rCN,例如与存储器阵列402位于同一芯片上的一存储器控制器计算rCN。在一实施例中,计算的rCN值被存储在记录计数存储器406中。在另一实施例中,计算的rCN值被存储在存储器控制器420容易存取的一单独的存储单元,例如一缓存器、或一闩锁器。
图4B绘示了装置400执行一操作以从存储器读取数据的一例。在读取操作期间,从记录计数存储器406(或者视情况从另一合适的存储单元)读取rCN。用户数据是从存储器阵列402使用一第一读取电平被感应,而对应的ECC值是从数据ECC存储器404中被读取。基于感应的用户数据及从数据ECC存储器404中读取的ECC值计算一瞬时计数数目(iCN)。在一实施例中,通过用户数据中的低临界位的累积数目及ECC值计算iCN。在另一实施例中,通过计算用户数据中的高临界位的累积数目及ECC值计算iCN。在一实施例中,由处理器410、存储器控制器420、或者其他合适的处理单元如外部测试装置计算iCN。在一实施例中,在芯片上计算iCN,例如与存储器阵列402位于同一芯片上的一存储器控制器计算iCN。在一实施例中,计算的iCN值被存储在瞬时计数存储器407。iCN与rCN之间的位计数差值ΔBC被计算,且如此文中描述的,被用于动态地决定额外的读取操作的读取电平。
如果rCN被不正确的读取,动态地决定的读取电平可能是错误的(例如读取电平可能在应往下移的情况下被错误地往上移,或者在应往上移的情况下被错误地往下移),这可能会导致感应数据中有大量的错误位无法被ECC校正。因此,在一实施例中,计算针对rCN的一ECC值以改善一读取操作的时候取得的rCN的正确性。
图5A及图5B说明了依据一实施例在存储器单元上使用动态读取电平执行一读取操作且具有对纪录计数数目进行错误校正的一装置500的一例。装置500包含一存储器阵列502、一数据ECC存储器504、一记录计数存储器506、一计数ECC存储器508、一处理器510及一存储器控制器520。
存储器阵列502为一合适的存储器单位用以存储用户数据。举例来说,存储器阵列502可以是存储器的一块(chunk)或页(page),而包含多个存储器单元。存储器单元可以是单阶存储单元(SLCs),或者多阶存储单元(MLCs)。在一实施例中,存储器阵列502是一非挥发性存储器单位,例如闪存。然而,在其他实施例中,存储器阵列可以是一些其他种类的存储器。在一实施例中,存储器阵列502相似于存储器阵列402。
数据ECC存储器504是一合适的存储单元用以存储对应于存储在存储器阵列502的用户数据的ECC数据。数据ECC存储器504可以是包含存储器阵列502的存储器装置的单独的一部分。或者,资料ECC存储器504可以是单独的一存储器单位、一缓存器、或者其他硬件存储装置如一硬盘。在一实施例中,数据ECC存储器504相似于数据ECC存储器404。
记录计数存储器506是一合适的存储单元用以存储纪录计数数目(rCN)数据。举例来说,记录计数存储器506可以是包含存储器阵列502及/或数据ECC存储器504的存储器装置的单独的一部分。或者,记录计数存储器506可以是单独的一存储器单位、一缓存器、或者其他硬件存储装置如一硬盘。在一实施例中,记录计数存储器506相似于记录计数存储器406。
计数ECC存储器508是一合适的存储单元用以存储对应于存储在记录计数存储器506的rCN数据的计数ECC。举例来说,计数ECC存储器508可以是包含存储器阵列502、资料ECC存储器504及/或记录计数存储器506的存储器装置的单独的一部分。或者,计数ECC存储器508可以是单独的一存储器单位、一缓存器、一闩锁器、或者其他硬件存储装置如一硬盘。
处理器510是一合适的计算单元用以执行多种指令以操作装置500,这些指令包括在存储器阵列502和装置500的其他模块或者外部装置之间交换用户数据的指令。处理器510可以是一通用微处理器、一微控制器、或者其他合适的处理单元。在一实施例中,处理器510控制用于写入数据到存储器阵列502或从存储器阵列502读取数据的存储器控制器520。在一实施例中,处理器510相似于处理器410。
存储器控制器420包含硬件及软件逻辑,用于执行多种相关于耦接到包含数据阵列的装置500的存储器的操作。在一实施例中,存储器控制器520编程存储器阵列202、从存储器阵列202读取数据、或者抹除存储器阵列502中存储的数据等等。存储器控制器520可包含一微处理器,此微处理器执行编程、读取或抹除存储器阵列502的指令。在一实施例中,存储器控制器520从处理器510接收指令以执行相关于存储器阵列502的操作。在一实施例中,存储器控制器520相似于存储器控制器420。
在一实施例中,存储器阵列502和存储器控制器520在同一集成电路芯片上实施。举例来说,当数据ECC存储器504、记录计数存储器56和存储器阵列502为同一存储器装置上的一部分时,数据ECC存储器504和记录计数存储器506也可在同一芯片上实施。然而,在其他实施例中,存储器控制器520在与存储器阵列502分离的一不同实体的单元。这可以发生在,例如当存储器控制器520为一外部计算机时、或者一外部测试装置等等。
处理器510及/或存储器控制器520执行的指令被存储在处理器510及/或存储器控制器520可存取的合适的存储单元,例如一闪存模块、或硬盘等等。举例来说,这些指令可被存储在包含存储器阵列502的存储器装置的其他部分。
图5A绘示了装置500执行一操作以写入数据到存储器的一例。用户资料被编程到存储器阵列502。在用户数据上计算一ECC值且此ECC值被编程到数据ECC存储器504。此ECC值可以在写入用户数据到存储器阵列502的时候被计算,或者此ECC值可以在一不同的时候被计算,例如在用户数据被写入到存储器阵列502之后的时候被计算。可视应用由一处理器510,或者由一存储器控制器520通过执行一合适的ECC算法计算ECC值。所使用的ECC算法的例子包含汉明算法(Hamming Algorithm)、里德-所罗门算法(Reed-Solomon Algorithm)以及BCH算法(Bose-Chaudhuri-Hocquenghem algorithm,BCH algorithm)等等。
除了在用户数据上计算ECC值之外,基于用户数据中的位及ECC值计算rCN。rCN可在用户数据及ECC值被编程时计算,或者rCN可在一不同的时候例如在用户数据及ECC值分别被写入到存储器阵列502及数据ECC存储器504之后的时候被计算。在一实施例中,通过用户数据中的低临界位的累积数目及ECC值计算rCN。在另一实施例中,通过计算用户数据中的高临界位的累积数目及ECC值计算rCN。在一实施例中,如上所述的,结合用户数据中的位及ECC值以决定rCN。在一实施例中,由处理器510、存储器控制器520、或者其他合适的处理单元如外部测试装置计算rCN。在一实施例中,在芯片上计算rCN,例如与存储器阵列502位于同一芯片上的一存储器控制器计算rCN。在一实施例中,计算的rCN值被存储在记录计数存储器506中。在另一实施例中,计算的rCN值被存储在存储器控制器520容易存取的一单独的存储单元,例如一缓存器、或一闩锁器。
在计算rCN之后,也基于rCN位计算ECC值。此针对rCN的ECC值被编程到计数ECC存储器508。通过使用一合适的ECC算法计算针对rCN的ECC值。所使用的ECC算法,例如为汉明算法(Hamming Algorithm)、里德-所罗门算法(Reed-Solomon Algorithm)以及BCH算法(Bose-Chaudhuri-Hocquenghem algorithm,BCH algorithm)等等。在一实施例中,由一处理器510,或者由一存储器控制器520、或者其他合适的处理单元例如一外部测试装置计算针对rCN的ECC。在一实施例中,在芯片上计算针对rCN的ECC值,例如与存储器阵列502位于同一芯片上的一存储器控制器计算针对rCN的ECC值。
图5B绘示了装置500执行一操作以从存储器读取数据的一例。在读取操作期间,从记录计数存储器506(或者视情况从另一合适的存储单元)读取rCN,且从计数ECC存储器508读取针对rCN的ECC值。对rCN和对应的ECC值执行一ECC操作。举例来说,通过结合rCN值与对应的ECC值执行一XOR逻辑操作。在一实施例中,由一处理器510,或者由一存储器控制器520、或者其他合适的处理单元例如一外部测试装置执行ECC操作。在一实施例中,在芯片上执行ECC操作,例如与存储器阵列502位于同一芯片上的一存储器控制器计算执行ECC操作。
ECC操作的结果代表了rCN是否可被对应的ECC值校正,例如从记录计数存储器506读取的rCN中的错误位的数目是否位于从计数ECC存储器508读取的对应ECC值的最大位计数之内。如果ECC操作的结果代表了rCN为可校正的,则如下文描述的决定额外读取操作的动态读取电平。然而,如果ECC操作的结果代表了rCN为不可校正的(例如当从记录计数存储器506读取的rCN中的错误位的数目超过从计数ECC存储器508读取的对应ECC值的最大位计数),则不决定动态读取电平。用户数据是从存储器阵列502被读取,而对应的ECC值是从数据ECC存储器504中被读取。
基于从存储器阵列502读取的用户数据及从数据ECC存储器504中读取的ECC值计算一瞬时计数数目(iCN)。在一实施例中,通过用户数据中的低临界位的累积数目及ECC值计算iCN。在另一实施例中,通过计算用户数据中的高临界位的累积数目及ECC值计算iCN。在一实施例中,计算的iCN值被存储在合适的存储单元,如一存储器阵列、一缓存器、一闩锁器。在一实施例中,由处理器510、存储器控制器520、或者其他合适的处理单元如外部测试装置计算iCN。在一实施例中,在芯片上计算iCN,例如与存储器阵列502位于同一芯片上的一存储器控制器计算iCN。iCN与rCN之间的位计数差值ΔBC被计算,且如此文中描述的,被用于动态地决定额外的读取操作的读取电平。
图6说明了依据一实施例在存储器单元上使用动态读取电平执行读取操作的一流程600的一例。在一实施例中,装置400以执行流程600以从存储器阵列402中读取用户数据。因此,以下段落参照装置400描述流程600。然而,在其他实施例中,可使用其他装置或系统执行流程600。
在一实施例中,由处理器410、存储器控制器420、或者其他合适的处理单元如外部测试装置执行流程600。在步骤602,存储一纪录计数数目(rCN)。举例来说,当写入用户数据到存储器阵列402时,基于用户数据及对应的ECC值计算低临界位(或者根据应用为高临界位)的累积数目。计算的rCN值被存储在记录计数存储器406,或者其他合适的存储单元,如一缓存器、或一闩锁器。
在步骤604中,接收一读取指令。举例来说,接收一读取指令以读取存储在存储器阵列402的用户数据。
在步骤606中,设定读取电平及尝试限制次数。举例来说,设定初始读取电平的临界电压(例如212)。由于考虑使用动态读取电平的额外的读取操作,也要决定一读取指令执行的读取操作的次数的一上限。在一实施例中,设定此上限以使一读取指令不需要执行大量的额外的读取操作(例如当不能精确地决定动态读取电平时),这可能会对存储器读取效率有负面的影响。
在步骤608中,执行一读取操作并决定位计数差值。举例来说,通过在步骤606中设定的初始读取电平执行一感应操作而执行一第一读取操作。用户数据是从存储器阵列402中被读取,而对应的ECC值是从数据ECC存储器404中被读取,而rCN是从记录计数存储器406中被读取。基于从存储器阵列402中读取的用户数据及从数据ECC存储器404中读取的ECC值计算一瞬时计数数目(iCN)。计算的iCN值被存储在瞬时计数存储器407中。iCN与rCN之间的差值被决定为位计数差值ΔBC=iCN-rCN。
在步骤610中,判断位计数差值是否大于一临界值。举例来说,比较位计数差值的绝对值|ΔBC|与动态读取电平临界值M以判断是否|ΔBC|>M。
如果位计数差值被判断为大于动态读取电平临界值,则可使用动态调整的更新的读取电平执行额外的读取操作。在此情况下,在步骤612中,判断一读取尝试次数是否大于或等于一上限。举例来说,在执行一额外的读取操作之前,检查响应于读取指令已经执行的读取操作的次数是否已超过一读取指令可执行的读取操作的次数的上限。
如果已经执行的读取尝试的次数被判断为低于可执行的读取操作次数的上限,则在步骤614中,增加读取尝试并决定移动方向及移动步长。举例来说,检查ΔBC的极性。在一实施例中,如果ΔBC为正的(例如iCN大于rCN),则新的读取电平是往下移的。另一方面,如果ΔBC为负的(例如iCN小于rCN),则新的读取电平是往上移的。
也比较位计数差值的绝对值|ΔBC|与移动步长临界值N。如果|ΔBC|≥N,则使用一大的移动步长,例如选择与前次读取电平的相差一大的电压量(如100mV的)的新的读取电平。然而,如果|ΔBC|<N,则使用一小的移动步长,例如选择与前次读取电平的相差一小的电压量(如50mV的)的新的读取电平。
在步骤616中,设定一新的读取电平。举例来说,相比于前次读取操作的读取电平,基于步骤614中决定的移动方向及移动步长设定新的读取电平。之后在步骤606~618中执行一或多个额外的读取操作直到|ΔBC|≤M或者一读取尝试的次数已经大于或等于可执行的读取操作的次数的上限。
如果在步骤610中判断位计数差值小于或等于动态读取电平临界值(|ΔBC|≤M),或者在步骤612中判断读取尝试的次数已经大于或等于可执行的读取操作的次数的上限,则跳过额外的读取操作,而在步骤618中,执行一数据ECC校正。举例来说,在从存储器阵列402最近一次的读取操作中读取的用户数据上使用从数据ECC存储器404读取的EEC值执行一ECC操作。
在步骤620中,读出数据。举例来说,被ECC校正后的用户数据被提供到装置400的另一模块,或一外部实体以执行相关于用户数据的其他操作。
通过上述方法,流程600可通过使用动态读取电平执行重复的读取操作用来减少响应于一读取指令取得的用户数据中的位错误的数目。在每一次读取操作中,基于移动方向及移动步长调整读取电平,以使读取电平朝向低于动态读取电平临界值M的读取电平的方向移动,到用户数据中的位错误的数目可被ECC校正的时候。然而,为了限制额外读取操作的效率影响,额外读取操作的次数可被加上一上限。如果达到此上限,即使在用户数据中的错误位计数超过动态读取电平临界值M超过的情况下,仍然读出用户数据。
在一实施例中,决定rCN并在步骤602中存储一次,例如在存储器阵列402中存储用户数据的时候或之后存储rCN。接着,例如当执行一读取指令以从存储器阵列402读取用户数据时,执行多次步骤604~620。rCN可能会被再次计算,且在用户数据被更新时,例如新的用户数据被写入到存储器阵列402的时候或之后,存储一新的rCN值。
图7说明了依据另一实施例在存储器单元上使用动态读取电平执行读取操作的一流程700的一例。在一实施例中,装置400以执行流程700以从存储器阵列402中读取用户数据。因此,以下段落参照装置400描述流程700。然而,在其他实施例中,可使用其他装置或系统执行流程700。
在一实施例中,由处理器410、存储器控制器420、或者其他合适的处理单元如外部测试装置执行流程700。在步骤702,存储一纪录计数数目(rCN)。举例来说,当写入用户数据到存储器阵列402时,基于用户数据及对应的ECC值计算低临界位(或者根据应用为高临界位)的累积数目。计算的rCN值被存储在记录计数存储器406,或者其他合适的存储单元,如一缓存器、或一闩锁器。
在步骤704中,接收一读取指令。举例来说,接收一读取指令以读取存储在存储器阵列402的用户数据。
在步骤706中,设定读取电平。举例来说,设定初始读取电平的临界电压(例如212)。
在步骤708中,执行一读取操作并决定位计数差值。举例来说,通过在步骤706中设定的初始读取电平执行一感应操作而执行一第一读取操作。用户数据是从存储器阵列402中被读取,而对应的ECC值是从数据ECC存储器404中被读取,而rCN是从记录计数存储器406中被读取。基于从存储器阵列402中读取的用户数据及从数据ECC存储器404中读取的ECC值计算一瞬时计数数目(iCN)。计算的iCN值被存储在瞬时计数存储器407中。iCN与rCN之间的差值被决定为位计数差值ΔBC=iCN-rCN。
在步骤710中,判断位计数差值是否大于一临界值。举例来说,比较位计数差值的绝对值|ΔBC|与动态读取电平临界值M以判断是否|ΔBC|>M。
如果位计数差值被判断为大于动态读取电平临界值,则可使用动态调整的更新的读取电平执行额外的读取操作。在此情况下,在步骤712中,决定移动方向。举例来说,检查ΔBC的极性。在一实施例中,如果ΔBC为正的(例如iCN大于rCN),则新的读取电平是往下移的。另一方面,如果ΔBC为负的(例如iCN小于rCN),则新的读取电平是往上移的。
在步骤714中,设定一新的读取电平。举例来说,相比于前次读取操作的读取电平,基于步骤712中决定的移动方向设定新的读取电平。之后在步骤708~714中执行一或多个额外的读取操作直到|ΔBC|≤M。
如果在步骤710中判断位计数差值小于或等于动态读取电平临界值(|ΔBC|≤M),则跳过额外的读取操作,而在步骤716中,执行一数据ECC校正。举例来说,在从存储器阵列402最近一次的读取操作中读取的用户数据上使用从数据ECC存储器404读取的EEC值执行一ECC操作。
在步骤620中,读出数据。举例来说,被ECC校正后的用户数据被提供到装置400的另一模块,或一外部实体以执行相关于用户数据的其他操作。
通过上述方法,流程700可通过使用动态读取电平执行重复的读取操作用来减少响应于一读取指令取得的用户数据中的位错误的数目。在每一次读取操作中,基于移动方向调整读取电平,以使读取电平朝向低于动态读取电平临界值M的读取电平的方向移动,到用户数据中的位错误的数目可被ECC校正的时候。
在一实施例中,决定rCN并在步骤702中存储一次。接着,例如当执行一读取指令以从存储器阵列402读取用户数据时,执行多次步骤704~718。rCN可能会被再次计算,且在用户数据被更新时,例如新的用户数据被写入到存储器阵列402的时候或之后,存储一新的rCN值。
图8说明了依据一实施例在存储器单元上使用动态读取电平执行一读取操作且具有对纪录计数数目进行错误校正的一流程800的一例。在一实施例中,装置500以执行流程800以从存储器阵列502中读取用户数据。因此,以下段落参照装置500描述流程800。然而,在其他实施例中,可使用其他装置或系统执行流程800。
在一实施例中,由处理器510、存储器控制器520、或者其他合适的处理单元如外部测试装置执行流程800。在步骤802,存储一纪录计数数目(rCN)及对应的ECC值。举例来说,当写入用户资料到存储器阵列502时,基于用户数据及用户数据对应的ECC值计算低临界位(或者根据应用为高临界位)的累积数目。使用合适的ECC算法计算针对rCN的ECC值。计算的rCN值被存储在记录计数存储器506,或者其他合适的存储单元,如一缓存器、或一闩锁器,对应的ECC值被存储在计数ECC存储器508。
在步骤804中,接收一读取指令。举例来说,接收一读取指令以读取存储在存储器阵列502的用户数据。
在步骤806中,设定读取电平及尝试限制次数。举例来说,设定初始读取电平的临界电压(例如212)。由于考虑使用动态读取电平的额外的读取操作,也要决定一读取指令执行的读取操作的次数的一上限。在一实施例中,设定此上限以使一读取指令不需要执行大量的额外的读取操作(例如当不能精确地决定动态读取电平时),这可能会对存储器读取效率有负面的影响。尝试限制次数是选择性的。举例来说,在一实施例中,不使用尝试限制次数。在这样的实施一中,在步骤806终止设定读取电平。
在步骤808中,执行一读取操作并取得rCN。举例来说,通过在步骤806中设定的初始读取电平执行一感应操作而执行一第一读取操作。用户数据是从存储器阵列502中被读取,而对应的ECC值是从数据ECC存储器504中被读取。并且,rCN值是从记录计数存储器506或其他存储位置中被读取,而计数ECC是从计数ECC存储器508中被读取。
在步骤810,判断rCN是否可被校正。举例来说,对应于rCN数据的ECC值是从计数ECC存储器508中读取,且基于rCN值和ECC值执行一ECC检查以判断rCN是否可被ECC值校正。
如果判断rCN是可被ECC校正的,则在步骤812中,对rCN执行ECC校正。举例来说,基于从记录计数存储器506读取的rCN数据以及从计数ECC存储器508读取的对应ECC值执行一ECC操作。对rCN执行ECC校正的结果会在之后使用。
在步骤814中,决定一位计数差值。举例来说,基于从存储器阵列502中读取的用户数据及从数据ECC存储器504中读取的ECC值计算一瞬时计数数目(iCN)。计算的iCN值被存储在合适的存储单元中,例如一存储器位置、一缓存器或一闩锁器。iCN与rCN之间的差值被决定为位计数差值ΔBC=iCN-rCN。
在步骤816中,判断位计数差值是否大于一临界值。举例来说,比较位计数差值的绝对值|ΔBC|与动态读取电平临界值M以判断是否|ΔBC|>M。
如果位计数差值被判断为大于动态读取电平临界值,则可使用动态调整的更新的读取电平执行额外的读取操作。在此情况下,在步骤818中,判断一读取尝试次数是否大于或等于一上限。举例来说,在执行一额外的读取操作之前,检查响应于读取指令已经执行的读取操作的次数是否已超过一读取指令可执行的读取操作的次数的上限。此关于读取尝试次数的判断是选择性的。举例来说,在一实施例中,不使用尝试限制次数。在这样的实施例中,就不执行步骤818的操作。
如果已经执行的读取尝试的次数被判断为低于可执行的读取操作次数的上限,则在步骤820中,增加读取尝试并决定移动方向及移动步长。举例来说,检查ΔBC的极性。在一实施例中,如果ΔBC为正的(例如iCN大于rCN),则新的读取电平是往下移的。另一方面,如果ΔBC为负的(例如iCN小于rCN),则新的读取电平是往上移的。
也比较位计数差值的绝对值|ΔRC|与移动步长临界值N。如果|ΔRC|≥N,则使用一大的移动步长,例如选择与前次读取电平的相差一大的电压量(如100mV的)的新的读取电平。然而,如果|ΔBC|<N,则使用一小的移动步长,例如选择与前次读取电平的相差一小的电压量(如50mV的)的新的读取电平。比较位计数差值的绝对值|ΔBC|与移动步长临界值N是选择性的。举例来说,在一实施例中,不使用尝试限制次数。在这样的实施例中,就不比较位计数差值的绝对值|ΔBC|与移动步长临界值N,且因此不基于这样的比较结果产生新的读取电平。
在步骤822中,设定一新的读取电平。举例来说,相比于前次读取操作的读取电平,基于步骤820中决定的移动方向设定新的读取电平。之后在步骤808~822中执行一或多个额外的读取操作直到|ΔBC|≤M或者一读取尝试的次数已经大于或等于可执行的读取操作的次数的上限。在一实施例中,当执行额外的读取操作时,更跳过在步骤810中检查rCN的ECC校正的检查及步骤820。这样的情况可能发生在,举例来说,当在读取操作之间的rCN值并未被更新的时候,使得初始读取操作之后取得的ECC校正后的rCN可被用在额外的读取操作。
如果在步骤810中rCN被判断为不可被ECC校正的,或者在步骤816中位计数差值被判断为小于或等于动态读取电平临界值(|ΔBC|≤M),又或者在步骤818中读取尝试次数大于或等于读取指令可执行的读取操作次数的上限,则跳过额外的读取操作,而在步骤824中,执行数据ECC校正。举例来说,在从存储器阵列502最近一次的读取操作中读取的用户数据上使用从数据ECC存储器504读取的ECC值执行一ECC操作。
在步骤826中,读出数据。举例来说,被ECC校正后的用户数据被提供到装置500的另一模块,或一外部实体以执行相关于用户数据的其他操作。
通过上述方法,流程800可通过使用动态读取电平执行重复的读取操作用来减少响应于一读取指令取得的用户数据中的位错误的数目。在每一次读取操作中,基于移动方向,及选择性地基于移动步长,调整读取电平,以使读取电平朝向动态读取电平临界值M之内的读取电平的方向移动,到用户数据中的位错误的数目可被ECC校正的时候。为了确保额外读取操作的动态读取电平的精确性。计算rCN以使rCN可被ECC校正。进一步地,为了限制了额外的读取操作的效率影响,额外读取操作的次数可被加上一上限。在此情况下,如果达到此上限,即使在用户数据中的错误位计数超过动态读取电平临界值M超过的情况下,仍然读出用户数据。
在一实施例中,决定rCN和对应的ECC值并在步骤802中存储一次,例如在存储器阵列502中存储用户数据的时候或之后存储rCN。接着,例如当执行一读取指令以从存储器阵列502读取用户数据时,执行多次步骤804~826。rCN和对应的ECC值可能会被再次计算,且在用户数据被更新时,例如新的用户数据被写入到存储器阵列502的时候或之后,存储一新的rCN值和对应的ECC值。
上述揭露的或者其他例子可由一或多个计算机程序产品所执行,例如,编码在计算机可读取媒体内的计算机程序指令的一或多个模块,这些模块用来执行或控制数据处理装置地操作。这些实施例可包含算法的单独或分散的处理。计算机可读取媒体可以为一机器可读取的存储装置、一机器可读取的存储基板装置、一存储器装置、或上述的一或多个组合。「数据处理装置」这个用语包含了用于处理数据的所有设备、装置及机器,例如包含一可编程的处理器、一计算机、或多个处理器或多个计算机。除了硬件之外,设备可包含创造讨论中的计算机程序的一指令环境的程序代码,例如建立一处理器韧体、一协议栈(protocolstack)、一数据库管理系统、一操作系统、或上述的一或多个组合的程序代码。
一系统可包含了用于处理数据的所有设备、装置及机器,例如包含一可编程的处理器、一计算机、或多个处理器或多个计算机。除了硬件之外,一系统可包含创造讨论中的计算机程序的一指令环境的程序代码,例如建立一处理器韧体、一协议栈(protocolstack)、一数据库管理系统、一操作系统、或上述的一或多个组合的程序代码。
一计算机程序(也被称为程序、软件、软件应用、脚本、或程序代码)可以任何形式的程序语言,包含被编译或翻译的语言,写入。计算机程序可被以任何形式设置,例如一独立的计算机程序、或一模块、一组件、一子程序或其他使用在计算机环境中适合的单元。一计算机程序不需要对应一文件系统中的一档案。一程序可被存储在一档案中的一部分,此档案更拥有其他程序或数据,例如一或多个脚本被存储在标记语言文件中、或者被存储在专用于讨论中的程序的一单一档案、或多个互相搭配的档案(例如存储一或多个模块、子程序、或程序代码的多个部分的多个档案)。用于执行的一计算机程序可被设置在位于一个网站或者由一通讯网络连接的分布式的多个网站上的一或多个计算机上。
本文中描述的流程及逻辑流程可被一或多个可编程的处理器执行,这些处理器执行一或多个计算机程序以执行本文中描述的功能。本文中描述的流程及逻辑流程及设备也可被专用逻辑电路执行,例如一现场可程序逻辑门阵列(field programmable gatearray,FPGA)、或者一特殊应用集成电路(application specific integrated circuit,ASIC)。
适合用于执行一计算机程序的处理器例如包含通用微处理器、专用微处理器、或任何种类的数字电路的一或多个处理器。一般来说,处理器会从一只读存储器或一随机存取存储器接收指令和数据。一计算机的必要元件可包含一处理器以执行指令及一或多个存储器装置以存储指令和数据。一般来说,一计算机更可包含或耦接以从一或多个大量存储装置(例如磁盘、雌性光盘或光盘)接收数据,或传送数据到一或多个大量存储装置。然而,计算机也可以不需要这些装置。适合用于存储计算机计算机程序指令和数据的可读取媒体可包含任何形式的非挥发性存储器、媒体和存储器装置,例如半导体存储器装置,如EPROM、EEPROM及闪存装置。可读取媒体也可包含磁盘,例如外部硬盘或可移除式硬盘(removabledisks)、磁性光盘、CD ROM及DVD-ROM。处理器及存储器可以被补充及被包含在专用逻辑电路内。
虽然本文见描述了多种性,然而,这不用来限制本发明所要求的保护范围,而应如同特定实施例所描述的。本文件中不同的实施例所揭露的特定的技术特征也可被结合到单一个实施例中执行。相反地,单一个实施例的多个特征也可被分开到多个实施例或任何子组合中执行。并且,虽然以上描述的特征一开始被要求保护且以特定的组合执行,在一些情况下要求保护的组合的一或多个特征可以从组合中被切割,而所要求保护的组合可以为子组合或子组合的变型。同样的,虽然绘示在图中的操作是有一特定顺序,然而应当理解的是此特定顺序执行的操作并不限制顺序,只要执行所有说明的操作以达到预期的结果。
只有一些例子和实施例被揭露。可基于所揭露的例子而完成所揭露的例子和实施例的变形、修改和加强。
Claims (12)
1.一种存储器读取方法,其特征在于,包含:
使用一第一电压电平执行一第一读取操作以从一存储器阵列读取一数据;
决定对应于从该存储器阵列中读取的该数据的位的数目的一瞬时位计数;
取得对应于一被写入的数据的位的数目的一记录位计数,该被写入的数据于一时间被写入到该存储器阵列;
取得该瞬时位计数与该记录位计数之间的一差值;
一旦决定该差值为小于或等于一第一临界值,输出从该存储器阵列使用该第一读取操作读取的该数据;以及
一旦决定该差值为大于该第一临界值,执行一第二读取操作以从该存储器阵列读取该数据,该第二读取操作使用不同于该第一电压电平的一第二电压电平。
2.根据权利要求1所述的方法,其中执行该第二读取操作的步骤包含:
一旦决定该瞬时位计数小于该记录位计数,且该瞬时位与该记录位计数的一差距大于该第一临界值,使用大于该第一电压电平的该第二电压电平执行该第二读取操作;以及
一旦决定该瞬时位计数大于该记录位计数,且该差距大于该第一临界值,使用小于该第一电压电平的该第二电压电平执行该第二读取操作。
3.根据权利要求1所述的方法,其中执行该第二读取操作的步骤包含:
一旦决定该瞬时位计数小于该记录位计数,且该瞬时位与该记录位计数的一差距大于该第一临界值,使用小于该第一电压电平的该第二电压电平执行该第二读取操作;以及
一旦决定该瞬时位计数大于该记录位计数,且该差距大于该第一临界值,使用大于该第一电压电平的该第二电压电平执行该第二读取操作。
4.根据权利要求1所述的方法,其中执行该第二读取操作的步骤包含:
基于该差值大于该第一临界值,将该差值与一预选第二临界值比较;
一旦比较的结果为该差值小于该预选第二临界值,选择以一第一量偏移该第一电压电平的一第二电压电平;以及
一旦比较的结果为该差值大于该预选第二临界值,选择以一第二量偏移该第一电压电平的该第二电压电平,该第二量大于该第一量。
5.根据权利要求1所述的方法,其中执行该第二读取操作的步骤包含:
基于该差值大于该第一临界值,取得从该存储器阵列中读取的该数据执行的读取操作的一读取操作次数;
基于该读取操作次数小于一读取操作的预选临界数目执行该第二读取操作。
6.根据权利要求1所述的方法,其中决定瞬时位计数的步骤包含:
从该存储器阵列中读取该数据的位的数目;
取得对应于该数据的一错误校正码(ECC)值,其中该ECC值是基于该时间被写入到该存储器阵列的该被写入的资料;以及
通过结合从该存储器阵列中读取该数据的位的数目以及该ECC值决定该瞬时位计数。
7.根据权利要求1所述的方法,其中取得该记录位计数的步骤包含在该记录位计数上执行一ECC检查,该方法更包含:
在该被写入的数据被写入到该存储器阵列时计算该记录位计数的一ECC值;
在取得该记录位计数时,取得该ECC值;
通过结合该记录位计数以及该ECC值执行该ECC检查;
基于该ECC检查判断该记录位计数是否可被校正;以及
回应于基于该ECC检查而判断该记录位计数可被校正,而取得该瞬时位计数与该记录位计数之间的该差值。
8.一种存储器装置,其特征在于,包含:
一第一存储单元,用以存储使用一写入操作而被写入到一存储器阵列的一数据的位的数目对应的一记录位计数;
一第二存储单元,用以存储从该存储器阵列中使用一第一电压电平执行一第一读取操作读取的一数据的位的数目的对应的一瞬时位计数;以及
一控制器,耦接到该第一存储单元及该第二存储单元,并用以执行多个操作,该些操作包含:
从该第一存储单元取得该记录位计数及从该第二存储单元中取得该瞬时位计数;
取得该瞬时位计数与该记录位计数之间的一差值;
一旦决定该差值为小于或等于一第一临界值,输出从该存储器阵列使用该第一读取操作读取的该数据;以及
一旦决定该差值为大于该第一临界值,执行一第二读取操作以从该存储器阵列读取该数据,该第二读取操作使用不同于该第一电压电平的一第二电压电平。
9.根据权利要求8所述的存储器装置,其中执行该第二读取操作包含:
一旦决定该瞬时位计数小于该记录位计数,且该瞬时位与该记录位计数的一差距大于该第一临界值,使用大于该第一电压电平的该第二电压电平执行该第二读取操作;以及
一旦决定该瞬时位计数大于该记录位计数,且该差距大于该第一临界值,使用小于该第一电压电平的该第二电压电平执行该第二读取操作。
10.根据权利要求8所述的存储器装置,其中执行该第二读取操作包含:
一旦决定该瞬时位计数小于该记录位计数,且该瞬时位与该记录位计数的一差距大于该第一临界值,使用小于该第一电压电平的该第二电压电平执行该第二读取操作;以及
一旦决定该瞬时位计数大于该记录位计数,且该差距大于该第一临界值,使用大于该第一电压电平的该第二电压电平执行该第二读取操作。
11.根据权利要求8所述的存储器装置,其中该控制器更用以计算该瞬时位计数,决定该瞬时位计数包含:
从该存储器阵列中读取该数据的位的数目;
从该存储装置中取得对应于该数据的一ECC值,其中该ECC值是基于该时间被写入到该存储器阵列的该被写入的资料;以及
通过结合从该存储器阵列中读取该数据的位的数目以及该ECC值决定该瞬时位计数。
12.根据权利要求8所述的存储器装置,其中从该第一存储单元中取得该记录位计数包含在该记录位计数上执行一ECC检查,其中该控制器更执行操作,包含:
在该被写入的数据被写入到该存储器阵列时计算该记录位计数的一ECC值;
在取得该记录位计数时,取得该ECC值;
通过结合该记录位计数以及该ECC值执行该ECC检查;
基于该ECC检查判断该记录位计数是否可被校正;以及
回应于基于该ECC检查而判断该记录位计数可被校正,而取得该瞬时位计数与该记录位计数之间的该差值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/063,756 US9972383B2 (en) | 2016-03-08 | 2016-03-08 | Reading memory cells |
US15/063,756 | 2016-03-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107170482A true CN107170482A (zh) | 2017-09-15 |
CN107170482B CN107170482B (zh) | 2020-05-26 |
Family
ID=59786972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610878727.9A Active CN107170482B (zh) | 2016-03-08 | 2016-10-09 | 存储器读取方法及存储器装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9972383B2 (zh) |
CN (1) | CN107170482B (zh) |
TW (1) | TWI616886B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110010177A (zh) * | 2017-12-28 | 2019-07-12 | 美光科技公司 | 操作存储器的方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11139035B2 (en) * | 2018-12-28 | 2021-10-05 | Micron Technology, Inc. | Memory device error detection with improved scanning |
US11469909B2 (en) * | 2018-12-28 | 2022-10-11 | Micron Technology, Inc. | Physical unclonable function with NAND memory array |
US11599300B2 (en) * | 2021-04-19 | 2023-03-07 | Micron Technology, Inc. | Voltage threshold prediction-based memory management |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120110401A1 (en) * | 2010-10-29 | 2012-05-03 | Hynix Semiconductor Inc. | System and method of sensing data in a semiconductor device |
US20130016562A1 (en) * | 2011-07-12 | 2013-01-17 | Samsung Electronics Co., Ltd. | Method and system for adjusting read voltage in flash memory device |
CN103384902A (zh) * | 2011-01-14 | 2013-11-06 | 美光科技公司 | 用于调整装置内感测电压的方法、装置和系统 |
TW201443903A (zh) * | 2013-03-07 | 2014-11-16 | Sandisk Technologies Inc | 利用單位階單元分段之增強型動態讀取程序 |
CN104637538A (zh) * | 2013-11-08 | 2015-05-20 | 爱思开海力士有限公司 | 利用位反转计数和最低值的阈值估算 |
CN105074831A (zh) * | 2013-05-31 | 2015-11-18 | 桑迪士克科技股份有限公司 | 更新读取电压 |
CN105405464A (zh) * | 2014-09-04 | 2016-03-16 | 株式会社东芝 | 半导体存储装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6965737B1 (en) * | 2001-06-21 | 2005-11-15 | Lighthouse Capital Partners Iv, Lp | System and method for transporting data |
JP4113423B2 (ja) * | 2002-12-04 | 2008-07-09 | シャープ株式会社 | 半導体記憶装置及びリファレンスセルの補正方法 |
US8510636B2 (en) * | 2011-04-01 | 2013-08-13 | Intel Corporation | Dynamic read channel calibration for non-volatile memory devices |
KR101809202B1 (ko) * | 2012-01-31 | 2017-12-14 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 읽기 방법 |
JP2014010875A (ja) * | 2012-07-02 | 2014-01-20 | Toshiba Corp | 半導体記憶装置 |
US9086982B1 (en) * | 2012-08-15 | 2015-07-21 | Marvell International Ltd. | Adjusting bit reliability information input for decoding stored data |
US9081708B2 (en) * | 2012-11-16 | 2015-07-14 | Freescale Semiconductor, Inc. | Dynamic read scheme for high reliability high performance flash memory |
US20150293808A1 (en) * | 2014-04-10 | 2015-10-15 | Lsi Corporation | Soft read handling of read noise |
US9922707B2 (en) * | 2015-12-28 | 2018-03-20 | Toshiba Memory Corporation | Semiconductor storage apparatus and memory system comprising memory cell holding data value of multiple bits |
-
2016
- 2016-03-08 US US15/063,756 patent/US9972383B2/en active Active
- 2016-04-26 TW TW105112916A patent/TWI616886B/zh active
- 2016-10-09 CN CN201610878727.9A patent/CN107170482B/zh active Active
-
2018
- 2018-04-20 US US15/958,360 patent/US10650887B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120110401A1 (en) * | 2010-10-29 | 2012-05-03 | Hynix Semiconductor Inc. | System and method of sensing data in a semiconductor device |
CN103384902A (zh) * | 2011-01-14 | 2013-11-06 | 美光科技公司 | 用于调整装置内感测电压的方法、装置和系统 |
US20130016562A1 (en) * | 2011-07-12 | 2013-01-17 | Samsung Electronics Co., Ltd. | Method and system for adjusting read voltage in flash memory device |
TW201443903A (zh) * | 2013-03-07 | 2014-11-16 | Sandisk Technologies Inc | 利用單位階單元分段之增強型動態讀取程序 |
CN105074831A (zh) * | 2013-05-31 | 2015-11-18 | 桑迪士克科技股份有限公司 | 更新读取电压 |
CN104637538A (zh) * | 2013-11-08 | 2015-05-20 | 爱思开海力士有限公司 | 利用位反转计数和最低值的阈值估算 |
CN105405464A (zh) * | 2014-09-04 | 2016-03-16 | 株式会社东芝 | 半导体存储装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110010177A (zh) * | 2017-12-28 | 2019-07-12 | 美光科技公司 | 操作存储器的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107170482B (zh) | 2020-05-26 |
US9972383B2 (en) | 2018-05-15 |
US10650887B2 (en) | 2020-05-12 |
US20180240518A1 (en) | 2018-08-23 |
TW201732825A (zh) | 2017-09-16 |
TWI616886B (zh) | 2018-03-01 |
US20170263310A1 (en) | 2017-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103632730B (zh) | 使用参考块的固态驱动保持监控器 | |
US20180357535A1 (en) | Identifying memory block write endurance using machine learning | |
US8464137B2 (en) | Probabilistic multi-tier error correction in not-and (NAND) flash memory | |
KR101970450B1 (ko) | 솔리드 스테이트 드라이브에서 하위 페이지 데이터 복구를 위한 시스템 및 방법 | |
KR101248352B1 (ko) | 비휘발성 메모리 내의 데이터 에러 복구를 위한 장치, 방법 및 물품 | |
CN107170482A (zh) | 存储器读取方法及存储器装置 | |
KR20160013843A (ko) | 판독 전압들의 업데이트 | |
CN103839595B (zh) | 用于校正从存储器装置访问的数据中的错误的设备及方法 | |
US11557345B2 (en) | Dynamic memory programming voltage step for strenuous device conditions | |
US8737125B2 (en) | Aggregating data latches for program level determination | |
CN105164754A (zh) | 写入预补偿以延长固态存储器寿命的系统和方法 | |
CN107430491B (zh) | 数据存储设备和方法 | |
US8730724B2 (en) | Common line current for program level determination in flash memory | |
KR20140102739A (ko) | 위상 변화 메모리의 판독 에러를 감소시키기 위한 판독 바이어스 관리 | |
US9594615B2 (en) | Estimating flash quality using selective error emphasis | |
JP2012118979A5 (zh) | ||
KR102193946B1 (ko) | 적응성 마모 균등화 | |
KR101684037B1 (ko) | 조절가능한 충전 상태 레벨(들)을 사용하여 메모리 셀을 프로그래밍하는 장치 및 방법 | |
US10613927B1 (en) | System and method for improved memory error rate estimation | |
CN108647111A (zh) | 用于存储器的读取控制装置、读取控制方法和存储器控制器 | |
US11630722B2 (en) | Method and system for decoding data based on association of first memory location and second memory location | |
CN110349616A (zh) | 针对nand闪存中的位线故障的动态交织器变化 | |
CN104916330B (zh) | 存储装置、存储器控制器及存储器控制方法 | |
CN109545261A (zh) | 在读取操作后选择用于刷新的闪速存储块的方法 | |
US20110004795A1 (en) | Method for enhancing verification efficiency regarding an error handling mechanism of a controller of a flash memory, and associated memory device and controller thereof |
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 |