CN1470058A - 压缩事件计数技术及其在闪存系统中的应用 - Google Patents

压缩事件计数技术及其在闪存系统中的应用 Download PDF

Info

Publication number
CN1470058A
CN1470058A CNA018174116A CN01817411A CN1470058A CN 1470058 A CN1470058 A CN 1470058A CN A018174116 A CNA018174116 A CN A018174116A CN 01817411 A CN01817411 A CN 01817411A CN 1470058 A CN1470058 A CN 1470058A
Authority
CN
China
Prior art keywords
counting
random number
incident
compression
value
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
Application number
CNA018174116A
Other languages
English (en)
Other versions
CN100580800C (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.)
Delphi International Operations Luxembourg SARL
Original Assignee
SanDisk Corp
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 SanDisk Corp filed Critical SanDisk Corp
Publication of CN1470058A publication Critical patent/CN1470058A/zh
Application granted granted Critical
Publication of CN100580800C publication Critical patent/CN100580800C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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

Abstract

一个非挥发性闪速系统通过在发生多次事件时只更新一个压缩计数一次,来对该事件的发生,例如单个块被擦除和重写的次数,进行计数。一个随机或伪随机数生成器响应单个事件发生输出一个新的数字,当随机数生成器的输出与预定数字匹配时,更新压缩计数。随机数生成器响应单个事件生成预定数字的概率可作为某些其他因素的函数变化,其他因素可以是压缩计数的值,当其提供对于事件数的更有用的跟踪时。这些技术也可用于监控闪存系统或其他类型的电子系统中的其他类型的重现事件。

Description

压缩事件计数技术及其在闪存系统中的应用
技术领域
本发明大体上涉及事件计数技术,特别涉及这种技术在半导体存储系统中的应用,尤其是在非挥发性闪速电可擦除和可编程只读存储器(EEPROM)中的应用。
背景技术
闪速EEPROM系统具有广泛的应用,尤其是当它被封装在可移除地连接到主机系统的封闭卡中时。当前的商业存储卡格式包括个人计算机存储卡国际联合会(PCMCIA),高密度闪存(CF),多媒体卡(MMC)和安全数字(SD)。这些卡的一个供应商是SanDisk公司,即本申请的受让人。使用这些卡的主机系统包括个人计算机、笔记本计算机、手提计算设备、照相机、音频再现设备及类似的系统。闪速EEPROM系统还用作嵌入到主机系统中的大体积存储。
这种非挥发性存储系统包括一个存储单元阵列、外围操作电路和一个系统控制器。控制器管理与主机系统的通信和存储单元阵列的操作,以存储和取出用户数据。存储单元分组成单元块,其中一个单元块就是可同时擦除的单元的最小的群组。在向一个或多个单元块写入数据前,这些单元块被擦除。用户数据通常分成段在主机和存储阵列间传输。一段用户数据可以是任何方便处理的量,最好小于或等于一个存储块的容量,通常等于标准磁盘驱动器扇区的大小,即512字节。
在某种商业结构中,存储系统块的大小为存储一段用户数据以及附加数据,附加数据包括诸如下列信息:存储在块中的用户数据的纠错码(ECC),对块擦除和重新编程的次数计数,该存储单元块的缺陷以及其他物理信息,以及要加到块上的编程和/或擦除电压。这种类型的非挥发性存储系统的不同应用在下列美国专利和审理中的申请中说明,它们中的每一个在这里都被整个包括进来,作为参考,它们是:专利号5172338、5602987、5315541、5200959、5270979、5428621、5663901、5532962、5430859和5712180,以及1997年8月7日提出申请的专利申请序列号08/910947和1999年6月30日提出申请的专利申请序列号09/343328。在另一种商业结构中,许多个存储用户数据的块的附加数据存储在其他块的表内。此附加数据包括对单个用户数据块被擦除和重新编程的次数的计数。这种系统的一个例子在2000年2月17日提出申请的美国专利申请序列号09/505555中有说明。还有另一种类型的非挥发性存储系统,其存储单元块大小更大,存储了多段用户数据。
单个存储块经历的擦除/重编周期的次数(其“经历计数”)常常保持在闪存系统中,这是因为一个或多个原因。一个原因是为了判定块何时到达其寿命终点,以便在其因使用过度而失效前通过将其映射出系统用另一个块替换它。这在美国专利号5043940中有说明,该专利在这里被结合进来作为参考。当前的商业浮栅存储单元的寿命为几十万到一百万个擦除/重编周期,这通常比大多数应用中任何块在存储器的有用寿命期间循环的周期都要多。但是,其他更多重编的应用可达到这样的数字。跟踪块经历计数的另一个原因是为了改变不同块中的数据映射,以便在它们达到寿命终点前平衡其磨损,以作为延伸存储系统的寿命的一种方法。这种磨损均衡技术的例子在美国专利号6081447中说明,该专利这里被整个结合进来作为参考。保持块经历计数还有一个原因是能够调整编程和其他操作的电压,以考虑到随着擦除/重编周期的增加存储单元特征发生的变化。
发明内容
不是跟踪每个事件的发生,而只关注每次已经发生大量事件时。一个优点是表示已发生的事件数A的压缩的计数R比起每个事件都被计数时需要的更新频率更低。另一个优点是,在二进制计数系统中,保持表示大量事件数目A的计数R所需的比特数更少。保持压缩计数R的首选技术包括建立每次被监控的事件发生时压缩计数R会被更新的概率P。其结果是平均起来每发生1/P个实际事件更新压缩计数R一次。此概率最好选择为在实际允许的情况下尽可能与发生事件的系统的操作独立,以便使系统操作对压缩计数R的更新频率的影响最小。
在这里所说明的特定例子中,此技术被用于监控某些作为操作电子系统的一部分发生的重复事件的次数。宜采用一个随机数生成器来判定何时更新事件数目的压缩计数R,实际中通常采用一个伪随机数生成器。事件发生时,最好是每次事件发生时,生成一个随机数。随机数之一宜被指定为引起压缩计数R更新的触发,其中更新可以通过顺次增加到下一个数字实现。平均起来,每N个事件发生一次更新,其中N是随机数生成器随着时间流逝可能生成的不同随机数的总数目。因此,不是对每次事件的发生计数,而是平均每N个事件更新压缩计数R一次,平均起来,该计数表示已发生的事件数的1/N。或者,换种方式来讲,任何一个事件发生会令压缩计数R更新的概率P为1/N。如果需要,R和N的积可给出已发生的实际事件A的数目,可能的误差容限与1/P成正比,即可能的误差随着N的增加而增加,因为P=1/N。
这些技术尤其应用在数字存储系统中。在上述发明背景中说明的非挥发性闪存系统的例子中,需要更新事件(如擦除/重编事件)的压缩计数R的频率减少,以便占用的存储器的其他操作的时间更少。这使得其他操作,如用户数据编程,发生得更快。存储每个块的计数所需的比特数也显著减少。另外,当不需要对每次事件发生计数时,存储器系统的操作复杂度也减少了。
在此技术用于保持发生在闪存中的擦除和重编周期数的经历计数(有时称为“热”计数)的应用中,选择数字N为M的一小部分,其中M是存储器的预期寿命,这里存储器的预期寿命是根据存储单元面临进行效率非常低的操作或彻底失效的危险前可安全经历的擦除/重编周期的最大数目。虽然从产生的压缩计数R不能确切知道已发生的事件数目A,但其相对精确度却随着事件数目A的增长而增长,尤其是当接近存储块寿命M的末期时。经历计数所需要的存储空间的字节数可显著减少,因为存储器的寿命期间的最大压缩计数R为M除以N,而不像在每个擦除事件都被计数的情况中那样是M。由于对于多次擦除事件只发生一次压缩计数的更新,存储器的整体性能提高了。另外,闪存系统更易维护和调试。
任何这样的事件中的某一个会引起压缩计数更新的概率P不需要在对存储器或其他电子系统的事件计数的整个期间保持相同,而是可以作为被监控的事件数目A的函数而变化。特别地,如果需要在实际计数A的值较小时,保持对闪存的擦除/重编事件的更精确的压缩计数R,则在操作开始时,概率P保持较高,并且在存储器的寿命期间随着实际计数A变大而降低。作为一个特殊例子,当压缩计数R被系统用于控制在特定块的编程和/或擦除时期加到其存储单元上的电压时,这一点是尤其有用的,因为这些电压在实际经历计数A较低时常常是变化的。此能力是在不必投入更多比特来存储单个块的压缩计数R的情况下提供的。
本发明的其他方面、功能和优点包含在下列对特定代表性实施方式的说明中,这些说明应结合附图理解。
附图说明
图1是一个结合了本发明的事件监控的存储系统的示意性框图;
图2是从概念上说明图1的存储系统对发生在其内的事件进行压缩计数的操作的框图;
图3说明了图1的存储系统内的根据图2所示的技术的事件压缩计数的非挥发性存储的一种形式;
图4说明了图1的存储系统内的根据图2所示的技术的事件压缩计数的非挥发性存储的另一种形式;
图5是根据图2的图1的存储系统的操作的一个具体例子的流程图;
图6是图5的示例操作使用的一个表;
图7显示了图5的例子中使用的两个二进制数的比较;以及
图8是图5的例子中使用的另一个表。
具体实施方式
图1是一个典型非挥发性存储系统的某些主要部件的图。一个控制器11通过线13与主机系统通信。控制器11可能占有自己的集成电路芯片,它通过线15与一个或多个并行的非挥发性存储器通信,图示说明了其中一个存储器17。存储器17包括一个存储单元阵列以及相关外围电路37,它可能与控制器接口39一起形成在单独的集成电路芯片上。
在此例中,用户数据通过线15在控制器11和存储器17之间传输。存储器17由控制器寻址。特别地,线15内的数据总线的宽度可以为一个字节。图1所示的存储系统可被嵌入主机系统作为其一部分,或者封装成一张卡,如一张遵循前面提到的卡标准之一的卡。在卡的情况中,线13终止于卡上的一个外部终端,以便与主机系统中的互补的插口匹配。虽然典型情况下使用一个控制器芯片和多个存储器芯片,但现在趋势当然是通过把芯片的电路结合起来以将更少的分离芯片用于这样的系统。所说明的存储器17的示例容量为256M比特,从而只需要两个这样的芯片,以及一个控制器芯片,以形成一个具有64兆字节数据容量的非挥发性存储系统。使用单个更小容量的存储芯片将产生一个容量更小存储系统,比如在现有市场上销售的一个例子中是8兆字节。相反地,在系统中使用具有更高比特存储密度的存储芯片和/或使用更多存储阵列芯片将产生更高容量的存储器。达1.3千兆字节或更高容量的存储系统是可能实现的。
控制器11包括一个微处理器或微控制器23,它通过控制接口逻辑25连接到内部存储器,并与外部元件接口。一个程序存储器27存储由微控制器23访问的固件和软件,以控制存储系统的操作,以便其从连接的存储阵列读取数据,并将该数据发送到主机,将来自主机的数据写入存储阵列,以及执行许多其他的监控和控制功能。存储器27可以是一个挥发性的可重编程存机存取存储器(RAM),它由来自某种形式的非挥发性存储器(如一个不可重编的非挥发性存储器(ROM),一个一次可编程存储器(OTP)或一个可重编程闪速EEPROM系统)的数据初始化。如果存储器27可重编程,则控制器可被配置为允许主机系统对其进行编程。一个随机存取存储器(RAM)29除被用于存储其他数据外,还存储从在读写操作期间被访问的非发挥存储器中读出的表的数据。
一个逻辑电路31与主机通信线13接口,而另一个逻辑电路33通过线15与存储阵列接口。另一个存储器35被用作缓冲区,以暂时存储在主机系统和存储器17间传输的用户数据。除了用于存储操作固件的存储器外,控制器中的存储器通常是挥发性的,因为具有快速存取和高效控制器操作所需的其他特征的存储器具有该特征。几个挥发性存储器可以很方便地在物理上结合成一个存储器。
存储器17的逻辑电路39通过线15与控制器接口。逻辑电路39的用途是为存储单元阵列37生成在分离的总线和控制线上发送的信号。各个控制信号在线41中提供。一条数据总线45传送将要编程到非挥发性内存中或从中读取的用户数据,一条地址总线47传送存储器中被访问以读取用户数据、写入用户数据或擦除存储单元块的那部分的地址。一个功率控制电路43响应电路41中的控制信号,通过线49提供操作存储单元阵37所需要的不同电压和电流。其中包括了到存储单元阵列37的位线和门的适于编程、读取或擦除由线47中的地址指定的特定单元的电压。
在一个典型的闪存实施方式中,阵列的存储单元被分成块,其中每个块是可擦除的存储单元的最小单位,一个块内的所有单元可同时擦除。通常,多个块同时擦除,到存储阵列的编程数据出现在首先被擦除的块中。在一个常见例子中,每个块容纳了512字节的用户数据以及n个字节的附加数据,这些附加数据与用户数据有关和/或与存储该附加数据的存储单元块有关。在当前一个特定实施方式中,这样一个块由两行存储单元组成。在另一个例子中,每个块容纳32768(=64*512)字节用户数据以及附加数据。作为替换,可不将附加数据和用户数据存储在同一个块中,而是某些或所有附加数据可存储在专门用于所述用途的其他块中。
与当前许多闪速EEPROM系统中,闪存的每个块的有关附加信息中的一项是该块已经历的擦除/重编周期数。这个块经历计数有许多用途,其中主要的用途在前文已作了说明。当块经历计数被更新以记录块擦除或重编事件时,存储在非挥发性存储器中的块的当前经历计数首先被读出,并存储一个临时存储器中,此临时存储器通常是控制器中挥发性存储器。然后这个读出的计数被更新,以表示后续事件的发生,如可以通过把计数值加1来更新,然后更新后的计数被重新写回非挥发性存储块中。这涉及相当多的耗时的操作,从而对于存储系统的性能有负面影响。
根据本发明的一个主要实施方式,经历计数不在每次其相关块被擦除和重编时更新。而是以更低的频率更新一个压缩计数,其平均频率通过一个比例常数与被计数的擦除/重编事件的频率相关联。例如,如果一个闪存的寿命为约1000000个擦除/重编周期,而压缩计数只在约4000个周期中更新一次,这样,更新过程的频率在发生大量周期时仅为1/4000。在操作存储器期间用于更新压缩的经历计数的时间量比每一个事件就更新一次经历计数时少得多。另外,存储保持的计数所需的比特数与保持实际计数所需的比特数相比显著减少,因此非挥发性存储器中保持计数占用的空间显著减少。例如,如果保持1000000周期的实际计数,则每个块需要约3字节来对1至1000000的数字计数。另一方面,如果平均每4000个事件才计数一次,则最大计数值为约250,这可在1个字节中保持。从而在此例中,每块的附加存储空间节省2字节。
在此例中,块所经历的事件的实际数目的表示总可以通过将保持的计数乘以4000来获得,但是控制器存储器27中存储的存储系统操作固件宜直接将压缩计数当作单个块的使用指示。通过减少非挥发性存储器或其他某些电子系统中更新监控其他任何事件的发生的计数的频率,同样可得到性能提高和存储空间需求减少的优点。
保持压缩计数的一个首选技术包括生成一系列随机数,其中响应每个新事件生成一个新数字,每当生成的随机数等于预定的从这些数字中选定的一个数字时,就更新压缩计数。例如,如果采用生成1-4000的随机数的生成器,其中每当发生事件时生成一个新的数字,并选择当一个特定数字,比方说2750,在它出现时更新保持的计数,则压缩计数会在每次随机数生成器的输出等于2750时更新。平均起来,更新将每4000个事件发生一次。虽然在已发生的事件数目和压缩计数间没有精确的关系,但是却有很接近的相关性,尤其是已发生大量事件后。已发现压缩计数的精确度对于所说明的例子的目的是足够的,尤其是当已发生几十万个事件后。在所说明的应用例中,这时候经历计数信息变得相当有用,用于判定何时需要替换存储器的个别块。
图2从概念上说明了图1的非挥发性存储系统中实施的此过程,以作为一个例子。每当一个增加脉冲加到线53中时,一个随机数生成器51在线52上输出一个新的随机数。在线41上的命令指定擦除操作时,增加脉冲出现在线49中的电压脉冲刚开始的时候。此信号组合在图示说明中被标识为AND门54。在这样的擦除电压脉冲期间,由线47中的地址指定的存储器37的一个或多个存储单元块38被同时擦除。在一个特定实施方式中,同时擦除16个块。通常,施加一个擦除电压脉冲。
与随机数生成器相关的数字集合中包含的一个数字以非挥发性方式存储在系统中的预定位置,如55所示。线52上由随机数生成器51生成的每个新数字通过一个比较器57与存储在存储器55中数字相比较。当两个数字匹配时,线59中的一个信号引起当前擦除的每个块的压缩计数R更新。当比较值为否定(即,两个数字不匹配时),这是大多数时候的情况,则不发生这样的更新。这种比较可实现在使用逻辑门的硬件中,实现在软件中或实现在固件中,这取决于速度要求,灵活性要求和成本考虑。
在一个实施方式中,多个用户数据块的计数保持在多个保留块中的一个块中,如保留块61。这样的保留块的数据结构的略图在图3中给出。该保留块为存储用户数据的多个块中的每一个块存储了几字节附加数据,用户数据块的数目取决于不同块的容量。例如,存储单元块2的附加(“OH”)数据,包括1字节的压缩计数63,该计数当随机数生成器输出52与存储的数字55匹配时更新。
在另一个实施方式中,不是将计数保持单独的保留块61中,而是将它们存储在它们所计数的块中。例如,参见图4,压缩计数字节65作为存储单元块1的附加数据67的一部分存储,而块中的大多数单元存储用户数据。从而,当多个块一起擦除时,当随机数52与存储在55的数字匹配时,在擦除操作时将更新每个块的压缩计数。此时不对其他未被擦除的块的压缩计数进行操作。
在又一个实施方式中,计数存储在一个专门用于存储计数而不存储其他种类的附加数据的块中。
随机数生成器51可根据许多已知硬件和/或软件技术中的任何一个实现。但是,在一个特定的实施方式中,随机数生成器51的功能由存储器控制器11的微控制器23执行(图1)。微控制器23在擦除脉冲持续期间一般是空闲的,因此在这些脉冲期间它可以被用来执行生成新的随机数52并将该数字与预定的数字55比较以判定是否存在匹配的功能。采用了一种标准的移位和异或算法,其中一个32位的值被存储在控制器RAM 29中,一个12位的随机(实际上在此技术中是伪随机的)数响应每次擦除命令在线52上生成。一个12位的数字提供4096种不同的可能的组合。如果存储器的寿命约为一百万个周期,则1字节将存储表示实际事件数的压缩计数。当每个擦除事件发生时,生成的随机数52与存储在55中的数字匹配的概率P为1/4096。
更详细地来说,随机数生成器使用一个形成于控制器RAM 29中的32位移位寄存器(图1)。通过重复性地在移位寄存器的第二低和第三低位执行异或算法,并在对移位寄存器的所有32位进行移位操作时将以上产生的比特送到移位寄存器的最高位,生成每个新的随机数。为生成一个新的16位随机数,此操作将重复16次。然后通过在移位寄存器的16个低位和十六进制数0FFFh(二进制形式为0000 11111111 1111)间执行AND操作屏蔽移位寄存器的16个低位中4个最高位。因此每当移位寄存器的12个低位变成000h(二进制形式为00000000 0000)时,逻辑AND操作的输出变成1,从而形成一个命中(匹配),称其为命中是因为在这种情况下将增加压缩计数R。如果移位寄存器的所有32位均变成等于0,则从那一刻起以后所有生成的随机数也将为0。因此,如果发生这种情况,随机数生成器将被重新播种。
将注意到概率P可以由不同于上文具体说明的随机数生成器51的其他方式生成。这些例子包括使用系统噪声、单个电子器件中的隧道事件、某个时间间隔内的放射活动衰减,以及其他在某些硬件、固件或软件设备中随机发生的事件。其他适宜的随机数生成技术将在下面附加说明,用于产生初始化随机数生成器51的种子。
当存储系统由于从未加电状态被加电而被初始化时,随机数生成器51需要被设成一个初始值以便开始过程。这由一个种子源71完成,该种子源被线75上的初始信号触发,将初始值种子73提供给随机数生成器51。
有多种替换种子源可采用。其一是以非挥发性方式存储初始化前存储系统操作期间随机数生成器51的最后的值52。然后随机数生成器51被强制以被存储的该数字开始。但采用随机数或非相关的数字源作为种子同样能令人满意地完成任务。在包含时钟的系统中,生成的时间是数字的伪随机系列,初始化时存在的数字被用作随机数生成器51的种子。也可以采用与随机数生成器具有相同或不同设计的一个第二随机数生成器来选择种子。对于上文具体说明的随机数生成器,重新播种包括初始化移位寄存器的所有32位。
生成种子的另一种替换技术涉及读取存储器的块中的用户数据,该数据可以正常方式读取。但在每次初始化时数据不变化的情况下,为了确保更高程度的随机性,在一个特定实施方式中,该读出以边缘阈值级别执行,其中边缘阈值级别间的间隔量远超过正常情况下用于读取数据的间隔量。由于读取的边缘性,此方法旨在确保读取数据时会发生许多错误,最好至少能使某些相同的数据在不同时间不同地读出。为进一步增加种子的随机性,可从这个故意错误的读出数据中生成第二块的地址,且第二块中的数据同样以可能错误读取数据的方式读取。如果需要进一步确保随机性,此操作可继续循环一定次数。
在上文给出的说明中,假定了在存储系统的寿命期间发生匹配的概率P保持相同。但是,可能有些应用需要以某种方式改变概率P,例如响应某些变化的相关情况或发生的相关事件。如果需要,该概率可通过更改每个来自生成器51的随机数52均要与之比较的存储在存储器55中的预定数字的个数来更改。每当生成的随机数与存储器55中的一个、两个或甚至多个预定数字匹配时更新压缩数据。随着可用于与生成器51的随机数输出相比较的存储器55中的预定数字的数目的变化,对于任意给定随机数发生匹配的概率P也变化了。
作为对更改被比较的存储的预定数字的数目以更改概率的替换,在数字系统中,可更改被比较的存储器55中的单个数字和单个随机数的位数。例如,如果随机数生成器51的随机数输出52为12位,存储在55中的预定数字也是12位,当需要所有12位都进行肯定比较时,匹配概率最低(1/4096)。但是如果像另一个例子中那样,只比较每个数字的相同位置中的两位,每次比较的结果发生匹配的概率就高得多了(1/4)。这从效果上更改了可能由随机数生成器生成的不同随机数的总数目,并且以该方式更改了任意一个随机数与预定数字匹配的概率。两个数字中被比较的位的数目以及从而可能产生的随机数的总数目,可以根据用户的选择在固件或软件控制下很容易地改变,或者根据在存储系统的其他情况或事件中检测到的变化而自动变化。
闪存系统中更改匹配发生的概率的其他特定应用参考图5的流程图说明。此操作方法在数字R较小时增加压缩计数R的频率比数字R较大时高,其中数字R较小通常对应实际计数A较小,从而使得压缩计数R更精确地表示较低数值的实际计数A。从而提高了较低数值时压缩计数R的分辨率。通过最初在R值较小时采用较大的P值,在R值较大时采用较小的P值(可能小于1/4096,实际中可能小到1/32768),不必增加存储压缩计数R所需的比特数,就能实现这一点。通过使用这种方法,从0至255范围内的整数R就能表示高计数范围内高达1百万的计数,以及低计数范围内的一位数。在这里说明的特定闪速EEPROM系统的例子中,二进制随机数的总位数可被指定为每个被擦除的块的压缩计数R的值的函数,其中二进制随机数的总位数和与其相比较的预定数字的位数相同。
在参考图5-8为说明此功能而说明的特定例子中,生成器51生成的随机数52(图2)和存储的预定数字55的长度均为16位。根据压缩计数R的值,比较器57对每个数字的不同位数进行比较。当压缩计数R的值较低时比较的位数较少(从而发生匹配的概论较高),压缩计数R的值较高时比较的位数较多(发生匹配的概率较低)。压缩计数存储在1字节中,其范围为0-255。
参见图5,过程的摘要的第一步71是判定擦除操作何时执行。当擦除操作发生时,在步骤73中,随机数生成器51被引发生成一个随机数52(另参见图7)。在下一步75中,当前寻址为擦除的块的压缩计数R从其非挥发性记录61中读出。这在图2中没有显示出来,但应理解它是由微控制器23(图1)实现,微控制器23最好也执行图2中说明的处理,正如前面已提到的。如图6中说明的表存储在控制器的非挥发性存储器中,用于下一步77中。此表表示的逻辑可在硬件、固件或软件中实现。
将要比较的数字52和55的位数(图7)是通过在图6的表的左边那一列中查找每个被擦除的块的读出的压缩计数R,并在其中间那一列读出要比较的位数来确定的。作为此说明的信息,图6的右边那一列给出了被比较数字52和55的位之间将发生匹配的概率P。注意对于R的最低值0-15,不比较任何位,因为R的最低值等于A的实际计数值0-15的表示值。对于其R为15或更小值的块,当它每次发生擦除事件时,该R值增加1。但是在下一个区间,R在16-31之间时,每个数字的一位,例如数字52和55的相同比特位置的比特79和81被比较。因此每次实例中发生匹配的概率是0.5。在R的下一个32-47之间的区间,两个比特,例如数字52的比特79和83以及数字55的比特81和85被比较,其结果是任意一次实例中发生匹配的概率为0.25。当压缩计数R增长到其最高区间240-255时,将比较16比特中的15比特,其结果是任意一次比较结果产生16比特中的15比特匹配的概率将非常低(1/32768)。
数字52和55的比特数在图6的表中查询,然后在步骤87中发生比较(图5)。下一步骤89判定在单个块的上是否有匹配。如果有匹配,则在步骤91中,在步骤75中读取的被寻址的多个块中满足匹配的个别块的压缩计数R增加1。如果被擦除的块群组中没有块产生匹配,则关于被擦除的多个块的处理结束,步骤71等待接收另一个擦除命令。
虽然所说明的例子包括增加不同的数字,但可以从一个高的值减少到低的值作为替换,每次减少1或更多。如何更新压缩计数以记录数字52和55之间的肯定比较,比如是通过每次增加1或更多,通过每次减少1或更多,或者通过某些其他技术,都是不重要的,只要R能以某种方式被更新,使得必要时可以读取一个有意义的值就行。
图8中所说明的表同样可以可选地包括在失效分析工程师所使用的一个软件包中,作为其一部分,以便在需要估计A值的情况下将压缩计数R与实际计数A关联以来。(在大多数情况中,存储系统固件可从计数R本身操作,因为它与计数A的关系是已知的)。对于左列中压缩计数R值的第一群组93,中间那一列中显示的实际计数A与R值是相同的。右列中给出R和A之间的误差的统计标准差,对于此群组为0。在对应于图6的表的第二条线的图8的表中的下一个群组95中,R的值不等于A的值。由于大约每发生两次A此群组中的R计数增加一次,A的值约为15(第一群组93的最大值)加上左列中R计数值超过15的部分的两倍。同样的,对应于图6的表中的第三条线的在下一群组97中的任何给定R值的A值,是上一群组95中R的最大值31对应的A值加上R计数超出上一群组95中的最大计数31的部分的约四倍。此关系在所有可能的计数R的值范围内继续。
计数R和A之间的关系通常不是像上面粗略判定的那样,尤其是当R的值变高时,这是因为前面的群组93、95、97等所表示的R的不同范围中的不同的概率值的影响的组合产生一个增加贡献。因此,图8的表的中间列包括额外的未知项x。虽然R和A之间的关系可以由一个包括x项的数学模型近似,但通常宁愿根据经验对每个R生成图8的表中的中间列中的A的期望值(即,平均值)。实现此过程的存储系统要获得最佳操作,可通过使至少一组块受到多个实际的或仿真的擦除事件,事件数目的范围从0延伸到预期的该类型的存储器会经历的最大数目。在测试过程中,既监控系统保持的压缩计数R,也监控擦除周期的数目的实际计数A。后者给出图8的中间列的值。通过使用实际存储系统生成对应于压缩计数R的实际计数A,随机数生成器51以及系统和处理的其他部分的缺陷被考虑到了。对所有这些因子精确地建立数学模型是很困难的。
当需要包含误差数时,图8的右列中的误差数同样可通过这样一种经验技术获得最佳判定。在多个存储块的多个周期期间保持计数R和A,不同块的差异以某种方式统计地表达,例如通过这些差异的总体标准差。这些列对于估计所需的精度和存储计数所需的必要存储空间之间的折衷以及用户诊断存储系统是很有用的,但在系统操作期间通常不会被控制器11所使用。
虽然这里说明的例子是用于保持对闪速EEPROM系统的块所经历的擦除/重写周期的数目进行计数,这些技术也可以以相同的优点用于这种系统内的其他事件计数,尤其当存储单元的每个块或块的群组保持单独的事件计数时。一个例子是对于单个块遭受的边缘扫描数据恢复技术的次数进行计数,作为这些块的某些问题的指示。另一个例子是对实际使用纠错码(ECC)以恢复一个否则就不可读的扇区中的用户数据的次数进行计数。另一个例子是跟踪块需要通过刷洗来刷新其中的数据以达到其适当的边缘级别以补偿随着时间而产生的干扰的次数。在这些和其他情况中,块、子块(扇区)或块的群组经历大量的这样的事件表示他们有某些问题。这些信息可被存储器控制器用于替换块、子块或问题块群组,或采取其他补救行为。
另外,上文说明的计数技术不限于在闪速EEPROM或其他非挥发性存储系统中使用。这些计数可以应用在任何必须或需要对操作过程中发生的或系统使用的一个或多个事件进行计数的电子系统。
虽然本发明的多个方面已经联系具体的示例性实施方式进行了说明,应理解本发明在附录的权利要求书的完整范围内被授权保护。
                         附录
一种新的压缩随机整数事件计数器方案
此构思可以用在任何必须保持记录特定事件发生的次数的情况中。跟踪事件发生的次数的通常的方法是设计一个计数器,它在每次事件发生时增加。如果事件可能发生的最大次数为M次,那么为存储此信息计数器需要N=log2M比特。因此,例如,如果希望跟踪100次事件,则必须将20比特约3字节用于存储此计数。注意20比特=2.5字节=20比特,而220=1048576。现在,如果需要多个这样的计数器,则存储所有计数所需的总存储空间将是巨大的。这恰恰是在每个扇区一个计数器的基础上在闪存中实现热计数时的情况。同样,每当一个扇区被编程或擦除时,对该扇区的热计数进行更新,无论从存储器的性能速度还是从频繁更新每个扇区的热计数产生的磨损来说,都是一个负担。每个包括热计数的512字节的扇区通常需要额外的3字节来存储扇区循环的周期(编程和擦除)数。
使用固定的增长概率的简单方法
新的构思允许将每扇区的3个热计数字节压缩到每扇区1个热计数字节。如果愿意放弃精度,则新的热计数方案的最简单形式如下:采用一个12位伪随机数生成器,它能产生一个概率p(在这里p=1/4096=0.0002441)。产生此概率的一个方法是通过在每次一个扇区被编程或擦除时生成一个随机的12位二进制整数。当且仅当此12位整数与某个特定的12位整数(比如说101111010001)匹配时,对应于要被写入的扇区的计数器将被增加。注意212=4096。每次一个扇区被编程时,此扇区的计数器增加整数值1的概率为p。平均起来,每4096次编程事件将使计数器增加一次。
现在,我们必须区分实际计数A和此计数的表示R,其中实际计数A是给定扇区被编程的次数,计数表示R约为A的1/4096。我们记录和跟踪的是R=r。任何给定时刻的R值不能准切确定A值=a,而是将给出A值的一个大概的估计。当R较小时,R不能较好地反映A,但随着R变大时,在相对意义上R变成A的更精确的指示。这里“R”和“A”表示随机变量,而“r”和“a”表示这些随机变量可取的特定的整数值。
我们可以定义E为R增加事件。则:概率(E)=Pr(E)=p,且概率(非E)=Pr( E)=1-p。“r”=“a”次试验中E发生的次数=具有由二项式分布给出的概率密度函数数f(r|a)的随机变量:
Pr(R=r|A=a)=f(r|a)=(a!/(r!(a-r)!))pr(1-p)(a-r)
{R的平均值}=Exp(R)=a·p,以及
{R的标准差}=SD=√[a·p(1-p)]
以上公式对于二项式分布是已知的。
为了此热计数方案,我们需要知道在给定R的某个已知值时A的期望值,以及在给定R的某个已知值时A的标准差。这是因为在任何给定时刻只有R值被存储并能被取出,没有保留确切的A值的知识。
有人试着写出Exp(A|R=r)=r/p。虽然这可能是正确的,但为了确定,必须调用贝斯定理来得到一个表达式Pr(R=r|A=a)=f(a|r),然后此概率密度函数可用于计算Exp(A|R=r)和SD(A|R)。贝斯定理如下: [ Pr ( A = a | R = r ) ] ≡ Pr ( R = r | A = a ) · Pr ( A = a ) Pr ( R = r )
上述等式的右侧的分母可通过采用下列恒等式改写:
Figure A0181741100202
其中我们知道实际计数A永远不会小于表示值R(因此求和从r开始),并且我们假定实际计数A永远不会超过某个大数字M(比方说:M=1000000或M=1000000)。因此{A=r,A=r+1,A=r+2,…,A=M}形成一个分割。同样,根据条件概率的定义:
Figure A0181741100203
统计学中有一个定理,称为“贝叶斯估计的均匀分布的宜取性”,它规定在我们这里的情况下,假设随机变量A是均匀分布的是安全的。换句话说,如果我们假定实际计数永远不会超过M,并且我们不知道表示值R,则A值在随机时刻可以是0至M的任意整数,为每个整数的概率与其他整数相同。因此,Pr(A=s)=常数=(1/(M+1)),我们可以将此常数提到求和的外部: [ Σ s = r M Pr ( R = r | A = s ) · Pr ( A = s ) ] = [ Pr ( A = s ) · Σ s = r M Pr ( R = r | A = s ) ]
因为A是均匀分布的,因此对于任何s值和任何a值,我们知道Pr(A=s)=Pr(A=a): [ Pr ( R = r | A = a ) · Pr ( A = a ) [ Pr ( A = s ) ] Σ s = r M [ Pr ( R = r | A = s ) ] ] = [ Pr ( R = r | A = a ) Σ s = r M [ Pr ( R = r | A = s ) ] ] = a r p r ( 1 - p ) ( a - r ) Σ s = r M s r p r ( 1 - p ) ( a - r )
其中: a r = a ! r ! ( a - r ) !
因此: [ Pr ( A = a | R = r ) ] = a r p r ( 1 - p ) ( a - r ) Σ s = r M s r p r ( 1 - p ) ( s - r ) = a ! r ! ( a - r ) ! p r ( 1 - p ) ( a - r ) Σ s = r M s ! r ! ( s - r ) ! p r ( 1 - p ) ( s - r ) = a ! r ! ( a - r ) ! p r ( 1 - p ) ( a - r ) 1 r ! Σ s = r M s ! ( s - r ) ! p r ( 1 - p ) ( s - r ) = a ! ( a - r ) ! p r ( 1 - p ) ( a - r ) Σ s = r M s ! ( s - r ) ! p r ( 1 - p ) ( s - r ) = [ Π i = 0 ( a - r + 1 ) ( a - i ) ] p r ( 1 - p ) ( a - r ) Σ a = r M [ Π i = 0 ( a - s + 1 ) ( a - i ) ] p r ( 1 - p ) ( s - r ) = p r ( 1 - p ) ( a - r ) [ Π i = 0 ( a - r + 1 ) ( a - i ) ] p r Σ s = r M [ Π i = 0 ( a - s + 1 ) ( a - i ) ] ( 1 - p ) ( s - r ) = ( 1 - p ) ( a - r ) [ Π i = 0 ( a - r + 1 ) ( a - i ) ] Σ s = r M [ Π i = 0 ( a - s + 1 ) ( a - i ) ] ( 1 - p ) ( s - r ) = f ( a | r ) = 给定(R=r)时,(A=a)的概率
给定R=r时A的平均值由下列等式给出: Exp ( A | R = r ) = Σ a = 0 M a · f ( a | r )
(A|R=r)的方差为: Var ( A | R = r ) = Exp ( A 2 | R = r ) - [ Exp ( A | R = r ) ] 2 = [ Σ a = 0 M a 2 · f ( a | r ) ] - [ Σ a = 0 M a · f ( a | r ) ] 2
给定R=r时A的标准差为: SD ( A | R = r ) = Exp ( A 2 | R = r ) · [ Exp ( A | R = r ) ] 2 = [ Σ a = 0 M a 2 · f ( a | r ) ] - [ Σ a = 0 M a · f ( a | r ) ] 2
从上述公式中明显可看出,甚至在这样p=常数的简单情况下,计算都需要计算机程序。但是Wald方程(参见来自John Wiley & Sons(1983)PP59的Sheld M.Ross所著的《随机过程》一书)可用于容易地得到下列表达式:Exp(A|R=r)=Exp(R|A=a)/p=r/p。因此,在p=1/4096的情况中,则:Exp(A|R=r)=4095*r。
在给定R=r的某些值的情况下计算A的期望值和标准差的另一个方法是执行蒙特卡洛仿真。当采用更为复杂的算法,例如以下部分中讨论“取决于r的p值算法”时,这种仿真尤其有用。同样,由于任何随机数生成方案真正生成的是分布不完全均匀的伪随机数,执行蒙特卡洛仿真的最佳平台由将投入生产的同样的处理器和固件组成。在这种方式中,随机数生成方案的缺陷同样包括到了仿真中。
此简单情况中的蒙特卡洛仿真包括2个阶段。第一阶段包括两个循环,其中一个循环嵌套在另一个循环中。内层循环在每次经过时将实际计数“a”增加1.同样,每当整数“a”增加时,生成一个12位的随机二进制整数b,当且仅当此整数等于“101111010001”时,表示值“r”增加。正如前面所讨论的,这样的匹配的概率为1/4096。注意在外层循环内,内层循环外,“a”和“r”均被设为0。这使每次试验可以从a=0和r=0开始。只要r<256就重复内层循环。平均起来内层循环将运行1百万次。内层循环模拟扇区循环约1百万次时单个扇区的热计数所发生的情况(直至r在25510=111111112时饱和)。这可以被称为一次试验。另一方面,外层循环模拟多次试验。外层循环可运行10000次,以产生具有统计意义的多次试验的样本。为了使第一阶段中必须存储的数据最小,我们只需要记录对应于增加“r”的“a”值。每个固定的“r”值可专用一个文件。因此,例如,名为r123.out的文件将包含10000个整数,它们是在10000试验中每当“r”变为123时“a”的值。我们将产生255个输出文件。在阶段2中,处理255个输出文件中的每一个以获取255个非零“r”值中每一个的平均值和标准差。
使用可变的增长概率值的更复杂的方法
可采用更复杂的算法,以保持(给定R=r时A的标准差)与(给定R=r时A的期望值)的比率对于不同的“r”值来说或多或少是恒定的。这是很有用的,因为它根据对“r”值的知识限制了“a”值的相对不确定性。在这个新的方案中,“r”增加的概率“p”与当前的“r”值相关。
如果  0≤r<16,     则p=1/20=1.0
如果  16≤r<32,    则p=1/21=1/2=0.5
如果  32≤r<48,    则p=1/22=1/4=0.25
如果  48≤r<64,    则p=1/23=1/8=0.125
如果  240≤r<256,  则p=1/215=1/32768=0.0000305
“r”可表示为从00000000至11111111间的二进制形式的简单计数,等价于十进制的0至255。在十六进制中,“r”值的范围可以为00h至FFh。可以向每个热计数“r”的用户提供一个表,该表给出对于256个不同的“r”值中的每一个的A的平均值和A的标准差。如后面将要讨论的,“r”也可以表示为4比特尾数和4比特指数的形式。但后一种表示方式是比较麻烦的。
此方案的蒙特卡洛仿真与前面讨论的简单方案非常相似,不同之处在于现在“p”值将取决于当前的“r”值,如上文所说明。
特定存储器的新的热计数和计数器方案
每一页(64个扇区)将具有一个一字节长的热计数,它将存储在该页之外的另一页的表中。每当确定计数需要增加时,热计数将在控制器RAM中被更新。每当一页被擦除时,将判定是否增加相应的热计数或者不增加。在此方案中,增加热计数的机率将大致与计数的当前值成反比。
包含热计数的表必须为约5000字节,以便包含约5000页的热计数。假定230=1G比特,则要拥有1G比特的用户容量需要4096页。一个仅包含10个扇区的表将能够包含整个芯片的热计数。此表的每个后续字节对应于下一物理页的热计数。当几页被写入时,热计数可在RAM中更新,直至遇到分区边界,此时包含对应于该分区的热计数表的扇区被一次更新。我们可以定义一个热计数表包括64字节,每个字节是属于相同分区的一页的热计数。一个热计数表不分割在两个扇区中(即,每个“热计数表扇区”包含8个完整的“热计数表”)。
每当读或写操作跨越分区边界时,一个热计数表扇区被更新,所有的热计数表扇区被读取和处理,以便可执行磨损均衡、刷洗和报废活动。热计数字节的逻辑顺序表示相应页的物理顺序。同样,热计数表的逻辑顺序表示相应分区的物理顺序。
正常情况下更新热计数扇区甚至不需要擦除,因为对于任何其他扇区,更新一个扇区只需要将扇区数据写到新的擦除之前的扇区中,并更新映射以反映数据的最新版本的位置。由于一个分区包括64页,对应于该分区的热计数将只是64个字节。在此方案中,每页的一个字节热计数在一百万次循环中只增加256次。因此,即使只要每页的热计数增加时就更新它,包含512页的热计数扇区永不移动,则热计数表扇区将更新512*256=131072次。这假定了512页中的每一页均循环了1百万次。如果用户扇区可容忍1百万次循环,则热计数扇区同样可以容忍131000次循环。
热计数方案:
对应于每页的8比特计数将包含4比特尾数M和4比特指数E。因此如果热计数为:01010010,则M=01012=510,而E=00102=210。因为在此例中指数为210,因此我们必须将一个纠正项A=11002加到尾数上以生成有效尾数N,其中N=N(E),A=A(E)为E的函数。
现在以10为基的实际热计数为:N(E)10*210**E10=[M+A(E)]*(2**E),作为替换,以2为基的热计数为:N(E)*(10)**E。
对于0至15间的计数,每次对页的擦除将100%确定地增加热计数。对于16至46的计数,每次擦除增加热计数的机率为50%。
一般来说,增加的概率p是E的函数,由下列等式给:p=1/(2**E)
以下是A(E)的值:
A(0000)=0000,
A(0001)=1000,
A(0010)=1100,
A(0011)=1110,
A(0100)=1111,
A(0101)=1111,
A(0110)=1111,
A(0111)=1111,
A(1111)=1111,
最大的可能的数L由M=1111和E=1111给出:
L=(1111+1111)*(10)**(1111)=101579210
最小的p为1/32768。
同样的方法也可以用于对计数器活动进行计数。请参阅所附的Excel工作表获取此方案的详细信息。由于循环的单元在已经循环了多次时的老化速度与其寿命开始时相比有所减慢,这个按比例的热计数对于磨损均衡和报废用途均具有足够分辨率。

Claims (9)

1.一个保持对在一个电子系统的操作期间反覆出现的事件的发生次数的压缩计数的方法,包括:
响应所述系统事件的各次发生,判定另一个具有随机或伪随机发生概率P的事件是否发生,以及
当该随机或伪随机发生的事件发生时,更新所述系统事件的发生次数的压缩计数。
2.一个保持对在一个电子系统的操作期间反覆出现的事件的发生次数的压缩计数的方法,包括:
在每次发生事件时生成一个随机数,
判定生成的伪随机数何时与至少一个预定的值匹配,以及
响应生成的随机数与所述至少一个预定值之间的匹配,更新电子系统内的所述事件发生次数的压缩计数。
3.权利要求2的方法,其中所述至少一个预定值是可能生成的N个不同的随机数值中的一个,电子系统中允许事件发生的最大期望次数为M,以及压缩计数至少可保持至达到等于M除以N的数值。
4.权利要求2的方法,进一步包括在电子系统初始化时用一个第二随机数生成器生成的数字作为随机数生成器的种子。
5.权利要求2的方法,其中判定生成的随机数何时与所述的至少一个预定值匹配考虑到了已经发生的所述事件的累积次数,以便随着所述事件的累积次数增加,降低所生成的单个随机数发生匹配的概率。
6.权利要求2-5中任意一个的方法,其中该方法在一个包括非挥发性闪存的电子系统中执行,并且反覆出现的事件包括擦除闪存的被寻址的部分。
7.权利要求6的方法,其中生成随机数和判定生成的随机数何时与至少一个预定值相等都发生在单个擦除电压脉冲施加到所述闪存系统的被寻址的部分期间。
8.一个闪速EEPROM系统,包括:
多个非挥发性存储单元块,其中各个块中的多个单元可同时擦除,
一个控制器,它包括一个微处理器以控制进入被寻址的存储单元块的数据的编程、从被寻址的存储单元块中读取数据以及从一块或多块被寻址的存储单元块中同时擦除数据,
在多个存储单元块中提供的存储器,它保持与各个存储单元块有关的计数,
一个数字生成器,它响应一个或多个被寻址块被擦除而随机生成一个数字,以及
一个比较器,它在生成的随机数与由随机数生成器生成的可能数字中至少一个预定数字匹配时,引起与被擦除的一个或多个被寻址块相关的计数被更新。
9.权利要求8的系统,其中数字生成器的特征是产生总数可控的可能的不同随机数之一,其中所述可能的不同随机数的总数由所述至少一个与被擦除的一个或多个被寻址块相关的计数所控制。
CN01817411A 2000-09-14 2001-09-06 压缩事件计数技术方法及系统 Expired - Fee Related CN100580800C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/662,032 US6345001B1 (en) 2000-09-14 2000-09-14 Compressed event counting technique and application to a flash memory system
US09/662,032 2000-09-14

Publications (2)

Publication Number Publication Date
CN1470058A true CN1470058A (zh) 2004-01-21
CN100580800C CN100580800C (zh) 2010-01-13

Family

ID=24656097

Family Applications (1)

Application Number Title Priority Date Filing Date
CN01817411A Expired - Fee Related CN100580800C (zh) 2000-09-14 2001-09-06 压缩事件计数技术方法及系统

Country Status (9)

Country Link
US (3) US6345001B1 (zh)
EP (1) EP1317756B1 (zh)
JP (1) JP2004509404A (zh)
KR (1) KR100782297B1 (zh)
CN (1) CN100580800C (zh)
AU (1) AU2001288844A1 (zh)
DE (1) DE60131549T2 (zh)
TW (1) TW525177B (zh)
WO (1) WO2002023552A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101377958B (zh) * 2007-08-31 2010-12-15 上海华虹Nec电子有限公司 监控闪存擦写性能的方法
CN101645309B (zh) * 2008-08-05 2013-05-22 威刚科技(苏州)有限公司 非挥发性存储装置及其控制方法
CN108885609A (zh) * 2016-04-05 2018-11-23 慧与发展有限责任合伙企业 基于预先计算的模拟结果的模拟

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5657332A (en) * 1992-05-20 1997-08-12 Sandisk Corporation Soft errors handling in EEPROM devices
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US7113432B2 (en) * 2000-09-14 2006-09-26 Sandisk Corporation Compressed event counting technique and application to a flash memory system
US6851000B2 (en) * 2000-10-03 2005-02-01 Broadcom Corporation Switch having flow control management
US6957202B2 (en) * 2001-05-26 2005-10-18 Hewlett-Packard Development Company L.P. Model selection for decision support systems
US6732221B2 (en) * 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
US6717847B2 (en) * 2001-09-17 2004-04-06 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US7554842B2 (en) * 2001-09-17 2009-06-30 Sandisk Corporation Multi-purpose non-volatile memory card
US7246268B2 (en) * 2002-01-16 2007-07-17 Sandisk Corporation Method and apparatus for dynamic degradation detection
JP3833970B2 (ja) 2002-06-07 2006-10-18 株式会社東芝 不揮発性半導体メモリ
US6944063B2 (en) * 2003-01-28 2005-09-13 Sandisk Corporation Non-volatile semiconductor memory with large erase blocks storing cycle counts
FR2851074B1 (fr) * 2003-02-10 2005-04-22 St Microelectronics Sa Memoire flash sectorisee comprenant des moyens de controle et de rafraichissement de cellules memoire
JP4289026B2 (ja) * 2003-05-28 2009-07-01 日本電気株式会社 半導体記憶装置
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7012835B2 (en) * 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
TWM264642U (en) * 2004-08-27 2005-05-11 Incomm Technologies Co Ltd Flash memory device having plural communication protocols
JP4261462B2 (ja) * 2004-11-05 2009-04-30 株式会社東芝 不揮発性メモリシステム
US7441067B2 (en) 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
US7395404B2 (en) 2004-12-16 2008-07-01 Sandisk Corporation Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
US7366826B2 (en) * 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
US7315916B2 (en) * 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
US7386655B2 (en) * 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US20060161724A1 (en) * 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems
US7283395B2 (en) * 2005-06-24 2007-10-16 Infineon Technologies Flash Gmbh & Co. Kg Memory device and method for operating the memory device
US7467253B2 (en) * 2006-04-13 2008-12-16 Sandisk Corporation Cycle count storage systems
US7451264B2 (en) * 2006-04-13 2008-11-11 Sandisk Corporation Cycle count storage methods
US7495966B2 (en) * 2006-05-01 2009-02-24 Micron Technology, Inc. Memory voltage cycle adjustment
US7778077B2 (en) * 2006-05-15 2010-08-17 Sandisk Corporation Non-volatile memory system with end of life calculation
US7474560B2 (en) * 2006-08-21 2009-01-06 Micron Technology, Inc. Non-volatile memory with both single and multiple level cells
WO2008038260A1 (en) * 2006-09-27 2008-04-03 Nds Limited Counter in memory
US7886204B2 (en) * 2006-09-27 2011-02-08 Sandisk Corporation Methods of cell population distribution assisted read margining
US7716538B2 (en) 2006-09-27 2010-05-11 Sandisk Corporation Memory with cell population distribution assisted read margining
US20080091871A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Non-volatile memory with worst-case control data management
US20080091901A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Method for non-volatile memory with worst-case control data management
KR100817204B1 (ko) * 2006-12-22 2008-03-27 재단법인서울대학교산학협력재단 플래시 메모리의 매핑 방법 및 장치
US7929372B2 (en) * 2007-01-25 2011-04-19 Samsung Electronics Co., Ltd. Decoder, memory system, and physical position converting method thereof
KR100929155B1 (ko) * 2007-01-25 2009-12-01 삼성전자주식회사 반도체 메모리 장치 및 그것의 메모리 셀 억세스 방법
US7477547B2 (en) * 2007-03-28 2009-01-13 Sandisk Corporation Flash memory refresh techniques triggered by controlled scrub data reads
US7573773B2 (en) * 2007-03-28 2009-08-11 Sandisk Corporation Flash memory with data refresh triggered by controlled scrub data reads
US20080294814A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Flash Memory System with Management of Housekeeping Operations
US20080294813A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Managing Housekeeping Operations in Flash Memory
US7916543B2 (en) 2007-10-22 2011-03-29 Micron Technology, Inc. Memory cell operation
US8296498B2 (en) * 2007-11-13 2012-10-23 Sandisk Technologies Inc. Method and system for virtual fast access non-volatile RAM
KR101517185B1 (ko) * 2008-04-15 2015-05-04 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US7924623B2 (en) 2008-05-27 2011-04-12 Micron Technology, Inc. Method for memory cell erasure with a programming monitor of reference cells
KR101033465B1 (ko) * 2008-12-30 2011-05-09 주식회사 하이닉스반도체 플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법
US8395923B2 (en) * 2008-12-30 2013-03-12 Intel Corporation Antifuse programmable memory array
US8244960B2 (en) 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8040744B2 (en) * 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
KR20100091544A (ko) * 2009-02-10 2010-08-19 삼성전자주식회사 메모리 시스템 및 그 마모도 관리 방법
US8806144B2 (en) * 2009-05-12 2014-08-12 Stec, Inc. Flash storage device with read cache
JP5813380B2 (ja) * 2011-06-03 2015-11-17 株式会社東芝 半導体記憶装置
CN102253894B (zh) * 2011-06-14 2013-09-04 沈阳建筑大学 一种闪存存储器等概率连续空间存储文件的方法
US8750042B2 (en) 2011-07-28 2014-06-10 Sandisk Technologies Inc. Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures
US20130031431A1 (en) * 2011-07-28 2013-01-31 Eran Sharon Post-Write Read in Non-Volatile Memories Using Comparison of Data as Written in Binary and Multi-State Formats
US8726104B2 (en) 2011-07-28 2014-05-13 Sandisk Technologies Inc. Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages
US8694754B2 (en) * 2011-09-09 2014-04-08 Ocz Technology Group, Inc. Non-volatile memory-based mass storage devices and methods for writing data thereto
US9026592B1 (en) 2011-10-07 2015-05-05 Google Inc. Promoting user interaction based on user activity in social networking services
US9183259B1 (en) 2012-01-13 2015-11-10 Google Inc. Selecting content based on social significance
US8843491B1 (en) 2012-01-24 2014-09-23 Google Inc. Ranking and ordering items in stream
US9177065B1 (en) * 2012-02-09 2015-11-03 Google Inc. Quality score for posts in social networking services
TWI454916B (zh) * 2012-05-08 2014-10-01 Phison Electronics Corp 儲存單元管理方法、記憶體控制器與記憶體儲存裝置
US8750045B2 (en) 2012-07-27 2014-06-10 Sandisk Technologies Inc. Experience count dependent program algorithm for flash memory
US9454519B1 (en) 2012-08-15 2016-09-27 Google Inc. Promotion and demotion of posts in social networking services
US9213601B2 (en) 2013-12-03 2015-12-15 Sandisk Technologies Inc. Adaptive data re-compaction after post-write read verification operations
US9230689B2 (en) 2014-03-17 2016-01-05 Sandisk Technologies Inc. Finding read disturbs on non-volatile memories
US9529570B2 (en) 2014-03-19 2016-12-27 Seagate Technology Llc Random number generation using pulsed programming parameters
WO2015172352A1 (en) 2014-05-15 2015-11-19 Seagate Technology Llc Storage device tampering detection
US9728278B2 (en) 2014-10-24 2017-08-08 Micron Technology, Inc. Threshold voltage margin analysis
US9552171B2 (en) 2014-10-29 2017-01-24 Sandisk Technologies Llc Read scrub with adaptive counter management
US9978456B2 (en) 2014-11-17 2018-05-22 Sandisk Technologies Llc Techniques for reducing read disturb in partially written blocks of non-volatile memory
US9349479B1 (en) 2014-11-18 2016-05-24 Sandisk Technologies Inc. Boundary word line operation in nonvolatile memory
US9449700B2 (en) 2015-02-13 2016-09-20 Sandisk Technologies Llc Boundary word line search and open block read methods with reduced read disturb
US10452533B2 (en) 2015-07-14 2019-10-22 Western Digital Technologies, Inc. Access network for address mapping in non-volatile memories
US9921969B2 (en) 2015-07-14 2018-03-20 Western Digital Technologies, Inc. Generation of random address mapping in non-volatile memories using local and global interleaving
US10445251B2 (en) 2015-07-14 2019-10-15 Western Digital Technologies, Inc. Wear leveling in non-volatile memories
US10452560B2 (en) 2015-07-14 2019-10-22 Western Digital Technologies, Inc. Wear leveling in non-volatile memories
US10445232B2 (en) 2015-07-14 2019-10-15 Western Digital Technologies, Inc. Determining control states for address mapping in non-volatile memories
US9653154B2 (en) 2015-09-21 2017-05-16 Sandisk Technologies Llc Write abort detection for multi-state memories
US10536266B2 (en) 2017-05-02 2020-01-14 Seagate Technology Llc Cryptographically securing entropy for later use
US11545221B2 (en) 2018-06-29 2023-01-03 Sandisk Technologies Llc Concurrent programming of multiple cells for non-volatile memory devices
US10978156B2 (en) 2018-06-29 2021-04-13 Sandisk Technologies Llc Concurrent programming of multiple cells for non-volatile memory devices

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61100565A (ja) 1984-10-22 1986-05-19 Green Cross Corp:The インド−ル酢酸誘導体
US5043940A (en) 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
EP1031992B1 (en) 1989-04-13 2006-06-21 SanDisk Corporation Flash EEPROM system
US5200959A (en) 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
US5270979A (en) 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
US5663901A (en) 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
US5430859A (en) 1991-07-26 1995-07-04 Sundisk Corporation Solid state memory system including plural memory chips and a serialized bus
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5712180A (en) 1992-01-14 1998-01-27 Sundisk Corporation EEPROM with split gate source side injection
US5532962A (en) 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
US5428621A (en) 1992-09-21 1995-06-27 Sundisk Corporation Latent defect handling in EEPROM devices
JP3641280B2 (ja) 1992-10-30 2005-04-20 インテル・コーポレーション フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法
FR2700040B1 (fr) 1992-12-31 1995-02-17 Gemplus Card Int Carte à puce avec données et programmes protégés contre le vieillissement.
US5353256A (en) 1993-06-30 1994-10-04 Intel Corporation Block specific status information in a memory device
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
ATE310273T1 (de) * 1998-09-14 2005-12-15 Igt Reno Nev Verfahren und vorrichtung zur startwerterzeugung für einen zufallszahlengenerator
US6388259B1 (en) 2000-06-08 2002-05-14 The Boeing Company Radiation detection method and apparatus
US6307779B1 (en) * 2000-07-28 2001-10-23 Micron Technology, Inc. Method and circuitry for bank tracking in write command sequence

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101377958B (zh) * 2007-08-31 2010-12-15 上海华虹Nec电子有限公司 监控闪存擦写性能的方法
CN101645309B (zh) * 2008-08-05 2013-05-22 威刚科技(苏州)有限公司 非挥发性存储装置及其控制方法
CN108885609A (zh) * 2016-04-05 2018-11-23 慧与发展有限责任合伙企业 基于预先计算的模拟结果的模拟

Also Published As

Publication number Publication date
US6345001B1 (en) 2002-02-05
EP1317756B1 (en) 2007-11-21
US20040080995A1 (en) 2004-04-29
EP1317756A2 (en) 2003-06-11
AU2001288844A1 (en) 2002-03-26
KR100782297B1 (ko) 2007-12-06
WO2002023552A2 (en) 2002-03-21
US20020075728A1 (en) 2002-06-20
DE60131549D1 (de) 2008-01-03
KR20030051650A (ko) 2003-06-25
WO2002023552A3 (en) 2003-01-30
US6643187B2 (en) 2003-11-04
TW525177B (en) 2003-03-21
DE60131549T2 (de) 2008-10-23
JP2004509404A (ja) 2004-03-25
CN100580800C (zh) 2010-01-13

Similar Documents

Publication Publication Date Title
CN1470058A (zh) 压缩事件计数技术及其在闪存系统中的应用
US7397707B2 (en) Compressed event counting technique and application to a flash memory system
JP5528782B2 (ja) 停電後の不揮発性メモリの回復
KR100975164B1 (ko) 비휘발성 메모리 시스템에 대한 내부 보수 스케줄 요청
US8799747B2 (en) Data hardening to compensate for loss of data retention characteristics in a non-volatile memory
US8341335B2 (en) Flash memory apparatus with a heating system for temporarily retired memory portions
US7966462B2 (en) Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips
US9431125B2 (en) Method and system for adaptive setting of verify levels in flash memory
JP5016027B2 (ja) 最終期を計算する不揮発性メモリシステム
US20110302474A1 (en) Ensuring a Most Recent Version of Data is Recovered From a Memory
CN108269604A (zh) 用于读取干扰检测以及处理的方法和装置
WO2010144587A2 (en) Memory system having persistent garbage collection
KR20040090418A (ko) 메모리장치
US8489942B1 (en) Memory management method, and memory controller and memory storage device using the same
US10204693B2 (en) Retiring computer memory blocks
KR20110060493A (ko) 메모리 장치의 소거 카운트 관리 방법 및 장치
Luojie et al. An improved analytic expression for write amplification in NAND flash
CN108984131B (zh) 数据操作的处理方法以及相关装置
Peleato et al. On the distribution of valid pages with greedy garbage collection for NAND flash
CN115080304A (zh) 一种工作数据备份系统及其工作数据备份方法
Xiang et al. An improved analytical expression for write amplification in nand flash
CN117453124A (zh) 数据读写方法、装置和嵌入式设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: SANDISK TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: SANDISK CORP.

Effective date: 20120322

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20120322

Address after: American Texas

Patentee after: Sandisk Corp.

Address before: American California

Patentee before: Sandisk Corp.

C56 Change in the name or address of the patentee
CP03 Change of name, title or address

Address after: texas

Patentee after: DELPHI INT OPERATIONS LUX SRL

Address before: American Texas

Patentee before: Sandisk Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100113

Termination date: 20170906

CF01 Termination of patent right due to non-payment of annual fee